From 6a90340b149217b317bdb388f6881c5a331ca289 Mon Sep 17 00:00:00 2001 From: d8ahazard Date: Wed, 14 Sep 2016 17:12:47 -0500 Subject: [PATCH] Work on file picker - WIP --- app/build.gradle | 6 +- app/src/main/AndroidManifest.xml | 4 + .../topjohnwu/magisk/BaseModuleFragment.java | 3 - .../com/topjohnwu/magisk/ModulesFragment.java | 106 ++++++++++-------- .../topjohnwu/magisk/module/RepoHelper.java | 4 + 5 files changed, 69 insertions(+), 54 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 5427eb416..d3eebbbba 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -26,9 +26,7 @@ android { } } repositories { - maven { - url "http://dl.bintray.com/lukaville/maven" - } + } dependencies { @@ -36,7 +34,7 @@ dependencies { compile 'com.android.support:recyclerview-v7:24.2.0' compile 'com.android.support:cardview-v7:24.2.0' compile 'com.android.support:design:24.2.0' - compile 'com.nbsp:library:1.1' compile 'com.jakewharton:butterknife:8.4.0' + compile 'com.github.angads25:filepicker:1.0.6' annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b4e518ad8..7dd7816f3 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,6 +16,7 @@ tools:ignore="AllowBackup,GoogleAppIndexingWarning"> @@ -23,9 +24,11 @@ + + + \ No newline at end of file diff --git a/app/src/main/java/com/topjohnwu/magisk/BaseModuleFragment.java b/app/src/main/java/com/topjohnwu/magisk/BaseModuleFragment.java index ef1584aa9..e5fe56942 100644 --- a/app/src/main/java/com/topjohnwu/magisk/BaseModuleFragment.java +++ b/app/src/main/java/com/topjohnwu/magisk/BaseModuleFragment.java @@ -167,9 +167,6 @@ public abstract class BaseModuleFragment extends Fragment { String logUrl = module.getmLogUrl(); String supportUrl = module.getmSupportUrl(); String donateUrl = module.getmDonateUrl(); - if (supportUrl != null && !supportUrl.isEmpty()) holder.supportLink.setBackgroundColor(Color.GRAY); - if (logUrl != null && !logUrl.isEmpty()) holder.changeLog.setBackgroundColor(Color.GRAY); - if (donateUrl != null && !donateUrl.isEmpty()) holder.authorLink.setBackgroundColor(Color.GRAY); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); if (prefs.contains("ignoreUpdateAlerts")) { ignoreAlertUpdate = prefs.getBoolean("ignoreUpdateAlerts", false); diff --git a/app/src/main/java/com/topjohnwu/magisk/ModulesFragment.java b/app/src/main/java/com/topjohnwu/magisk/ModulesFragment.java index 3829c4dc8..1ecf536e2 100644 --- a/app/src/main/java/com/topjohnwu/magisk/ModulesFragment.java +++ b/app/src/main/java/com/topjohnwu/magisk/ModulesFragment.java @@ -2,40 +2,46 @@ package com.topjohnwu.magisk; import android.app.Activity; import android.content.Intent; -import android.content.SharedPreferences; import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; -import android.preference.PreferenceManager; +import android.os.Environment; +import android.provider.DocumentsContract; import android.support.annotation.Nullable; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; +import android.support.v4.provider.DocumentFile; import android.support.v4.view.ViewPager; import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; -import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.ProgressBar; -import android.widget.Toast; -import com.nbsp.materialfilepicker.MaterialFilePicker; -import com.nbsp.materialfilepicker.ui.FilePickerActivity; + +import com.github.angads25.filepicker.controller.DialogSelectionListener; +import com.github.angads25.filepicker.model.DialogConfigs; +import com.github.angads25.filepicker.model.DialogProperties; +import com.github.angads25.filepicker.view.FilePickerDialog; import com.topjohnwu.magisk.module.Module; -import com.topjohnwu.magisk.module.Repo; import com.topjohnwu.magisk.module.RepoHelper; import com.topjohnwu.magisk.utils.Utils; +import com.topjohnwu.magisk.utils.lib; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; -import java.util.regex.Pattern; import butterknife.BindView; import butterknife.ButterKnife; @@ -44,9 +50,7 @@ public class ModulesFragment extends Fragment { public static List listModules = new ArrayList<>(); public static List listModulesCache = new ArrayList<>(); - private static final int FILE_SELECT_CODE = 0; private int viewPagePosition; - private static final int RESULT_OK = 1; @BindView(R.id.progressBar) ProgressBar progressBar; @@ -57,6 +61,7 @@ public class ModulesFragment extends Fragment { @BindView(R.id.tab_layout) TabLayout tabLayout; private RepoHelper.TaskDelegate mTaskDelegate; + private static final int RQS_OPEN_DOCUMENT_TREE = 2; @Nullable @Override @@ -64,61 +69,67 @@ public class ModulesFragment extends Fragment { View view = inflater.inflate(R.layout.modules_fragment, container, false); ButterKnife.bind(this, view); + String[] extensions = new String[1]; + extensions[0] = "zip"; + fabio.setOnClickListener(v -> { + Intent fileintent = new Intent(Intent.ACTION_GET_CONTENT); + fileintent.setType("application/zip"); + startActivityForResult(fileintent, RQS_OPEN_DOCUMENT_TREE); + + + }); + new Utils.LoadModules(getActivity(), false).execute(); - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity()); mTaskDelegate = result -> { if (result.equals("OK")) { - Log.d("Magisk","ModulesFragment: We dun got the result, hur hur."); + Log.d("Magisk", "ModulesFragment: We dun got the result, hur hur."); RefreshUI(); } }; + new updateUI().execute(); return view; } + + public static boolean isExternalStorageDocument(Uri uri) { + return "com.android.externalstorage.documents".equals(uri.getAuthority()); + } + + + @Override + public void onActivityResult(int requestCode, int resultCode, Intent data) { + String file = ""; + if(resultCode == Activity.RESULT_OK && requestCode == RQS_OPEN_DOCUMENT_TREE){ + if (isExternalStorageDocument(data.getData())) { + final String docId = DocumentsContract.getDocumentId(data.getData()); + final String[] split = docId.split(":"); + final String type = split[0]; + + if ("primary".equalsIgnoreCase(type)) { + file = Environment.getExternalStorageDirectory() + "/" + split[1]; + } + + // TODO handle non-primary volumes + } + String shit = data.getDataString(); + + Log.d("Magisk","ModulesFragment: Got a result, " + shit + " and " + data.getData().getAuthority() + " and " + file); + + } + } + @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); inflater.inflate(R.menu.menu_module, menu); - fabio.setOnClickListener(view -> { - openFilePicker(); - }); + } - private void openFilePicker() { - new MaterialFilePicker() - .withSupportFragment(this) - .withFilter(Pattern.compile(".*\\.zip$")) - .withRequestCode(FILE_SELECT_CODE) - .withHiddenFiles(true) - .start(); - } - @Override - public void onActivityResult(int requestCode, int resultCode, Intent data) { - super.onActivityResult(requestCode, resultCode, data); - Log.d("Magisk","WelcomeActivity: Got an OK result" + resultCode); - if (resultCode == Activity.RESULT_OK) { - String path = data.getStringExtra(FilePickerActivity.RESULT_FILE_PATH); - Log.d("Magisk","ModuleFragment: Got an OK result " + path); - if (path != null) { - Log.d("Path: ", path); - Toast.makeText(getActivity(), "Picked file: " + path, Toast.LENGTH_LONG).show(); - // Get the Uri of the selected file - String filePath = data.getStringExtra(FilePickerActivity.RESULT_FILE_PATH); - Uri uri = Uri.parse(filePath); - - path = uri.getPath(); - Log.d("Magisk","ModuleFragment: Got an OK result " + filePath + " and " + uri.toString() + " and " + path); - - String fileName = uri.getLastPathSegment(); - new Utils.FlashZIP(getActivity(), fileName, path).execute(); - } - } - } private void RefreshUI() { viewPagePosition = tabLayout.getSelectedTabPosition(); @@ -129,8 +140,8 @@ public class ModulesFragment extends Fragment { tabLayout.setupWithViewPager(viewPager); viewPager.setCurrentItem(viewPagePosition); new Utils.LoadModules(getActivity(), true).execute(); - Collections.sort(listModules,new CustomComparator()); - Collections.sort(listModulesCache,new CustomComparator()); + Collections.sort(listModules, new CustomComparator()); + Collections.sort(listModulesCache, new CustomComparator()); new updateUI().execute(); } @@ -210,6 +221,7 @@ public class ModulesFragment extends Fragment { } } } + public class CustomComparator implements Comparator { @Override public int compare(Module o1, Module o2) { diff --git a/app/src/main/java/com/topjohnwu/magisk/module/RepoHelper.java b/app/src/main/java/com/topjohnwu/magisk/module/RepoHelper.java index 3960a59f2..f360be9cd 100644 --- a/app/src/main/java/com/topjohnwu/magisk/module/RepoHelper.java +++ b/app/src/main/java/com/topjohnwu/magisk/module/RepoHelper.java @@ -18,6 +18,7 @@ import org.json.JSONObject; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Calendar; import java.util.Collections; import java.util.Comparator; import java.util.Date; @@ -43,6 +44,9 @@ public class RepoHelper { if (!prefs.contains("hasCachedRepos") | refresh) { Log.d(TAG, "RepoHelper: Building from web"); new BuildFromWeb(delegate).execute(); + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.US); + String date = format.format(Calendar.getInstance().getTime()); + prefs.edit().putString("last_update",date).apply(); } else { Log.d(TAG, "RepoHelper: Building from cache"); BuildFromCache();