diff --git a/app/src/main/java/com/fox2code/mmm/MainActivity.java b/app/src/main/java/com/fox2code/mmm/MainActivity.java index 3c54304..2836d54 100644 --- a/app/src/main/java/com/fox2code/mmm/MainActivity.java +++ b/app/src/main/java/com/fox2code/mmm/MainActivity.java @@ -106,6 +106,7 @@ public class MainActivity extends CompatActivity implements SwipeRefreshLayout.O } public void commonNext() { + moduleViewListBuilder.setFooterPx(searchCard.getHeight()); // Fix an edge case if (MainApplication.isShowcaseMode()) moduleViewListBuilder.addNotification(NotificationType.SHOWCASE_MODE); moduleViewListBuilder.applyTo(moduleList, moduleViewAdapter); diff --git a/app/src/main/java/com/fox2code/mmm/repo/RepoManager.java b/app/src/main/java/com/fox2code/mmm/repo/RepoManager.java index 334e829..fedc153 100644 --- a/app/src/main/java/com/fox2code/mmm/repo/RepoManager.java +++ b/app/src/main/java/com/fox2code/mmm/repo/RepoManager.java @@ -34,6 +34,8 @@ public final class RepoManager { "https://github.com/Magisk-Modules-Repo"; public static final String MAGISK_ALT_REPO_HOMEPAGE = "https://github.com/Magisk-Modules-Alt-Repo"; + public static final String ANDROIDACY_MAGISK_REPO_HOMEPAGE = + "https://www.androidacy.com/modules-repo"; private static final Object lock = new Object(); private static RepoManager INSTANCE; @@ -84,6 +86,7 @@ public final class RepoManager { } public RepoData get(String url) { + if (url == null) return null; switch (url) { case MAGISK_REPO_MANAGER: case MAGISK_REPO: diff --git a/app/src/main/java/com/fox2code/mmm/settings/SettingsActivity.java b/app/src/main/java/com/fox2code/mmm/settings/SettingsActivity.java index 64f72a2..1c14188 100644 --- a/app/src/main/java/com/fox2code/mmm/settings/SettingsActivity.java +++ b/app/src/main/java/com/fox2code/mmm/settings/SettingsActivity.java @@ -1,15 +1,14 @@ package com.fox2code.mmm.settings; import android.os.Bundle; -import android.text.method.Touch; import android.widget.Toast; -import androidx.annotation.StyleRes; +import androidx.annotation.StringRes; +import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentTransaction; import androidx.preference.ListPreference; import androidx.preference.Preference; import androidx.preference.PreferenceFragmentCompat; -import androidx.preference.SwitchPreference; import com.fox2code.mmm.AppUpdateManager; import com.fox2code.mmm.BuildConfig; @@ -50,6 +49,11 @@ public class SettingsActivity extends CompatActivity { public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { getPreferenceManager().setSharedPreferencesName("mmm"); setPreferencesFromResource(R.xml.root_preferences, rootKey); + findPreference("pref_manage_repos").setOnPreferenceClickListener(p -> { + devModeStep = 0; + openFragment(new RepoFragment(), R.string.manage_repos_pref); + return true; + }); ListPreference themePreference = findPreference("pref_theme"); themePreference.setSummaryProvider(p -> themePreference.getEntry()); themePreference.setOnPreferenceClickListener(p -> { @@ -87,10 +91,6 @@ public class SettingsActivity extends CompatActivity { findPreference("pref_use_magisk_install_command").setVisible(false); } - setRepoNameResolution("pref_repo_main", RepoManager.MAGISK_REPO, - "Magisk Modules Repo (Official)", RepoManager.MAGISK_REPO_HOMEPAGE); - setRepoNameResolution("pref_repo_alt", RepoManager.MAGISK_ALT_REPO, - "Magisk Modules Alt Repo", RepoManager.MAGISK_ALT_REPO_HOMEPAGE); final LibsBuilder libsBuilder = new LibsBuilder().withShowLoadingProgress(false) .withLicenseShown(true).withAboutMinimalDesign(false); Preference update = findPreference("pref_update"); @@ -116,14 +116,7 @@ public class SettingsActivity extends CompatActivity { }); findPreference("pref_show_licenses").setOnPreferenceClickListener(p -> { devModeStep = devModeStep == 1 ? 2 : 0; - CompatActivity compatActivity = getCompatActivity(this); - compatActivity.setOnBackPressedCallback(this); - compatActivity.setTitle(R.string.licenses); - compatActivity.getSupportFragmentManager() - .beginTransaction() - .replace(R.id.settings, libsBuilder.supportFragment()) - .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE) - .commit(); + openFragment(libsBuilder.supportFragment(), R.string.licenses); return true; }); if (BuildConfig.DEBUG) { @@ -137,17 +130,15 @@ public class SettingsActivity extends CompatActivity { } } - private void setRepoNameResolution(String preferenceName,String url, - String fallbackTitle,String homepage) { - Preference preference = findPreference(preferenceName); - if (preference == null) return; - RepoData repoData = RepoManager.getINSTANCE().get(url); - preference.setTitle(repoData == null ? fallbackTitle : - repoData.getNameOrFallback(fallbackTitle)); - preference.setOnPreferenceClickListener(p -> { - IntentHelper.openUrl(getCompatActivity(this), homepage); - return true; - }); + private void openFragment(Fragment fragment, @StringRes int title) { + CompatActivity compatActivity = getCompatActivity(this); + compatActivity.setOnBackPressedCallback(this); + compatActivity.setTitle(title); + compatActivity.getSupportFragmentManager() + .beginTransaction() + .replace(R.id.settings, fragment) + .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE) + .commit(); } @Override @@ -160,4 +151,57 @@ public class SettingsActivity extends CompatActivity { return true; } } + + public static class RepoFragment extends PreferenceFragmentCompat { + + @Override + public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { + getPreferenceManager().setSharedPreferencesName("mmm"); + setPreferencesFromResource(R.xml.repo_preferences, rootKey); + setRepoData("pref_repo_main", RepoManager.MAGISK_REPO, + "Magisk Modules Repo (Official)", RepoManager.MAGISK_REPO_HOMEPAGE, + null, null); + setRepoData("pref_repo_alt", RepoManager.MAGISK_ALT_REPO, + "Magisk Modules Alt Repo", RepoManager.MAGISK_ALT_REPO_HOMEPAGE, + null, + "https://github.com/Magisk-Modules-Alt-Repo/submission/issues"); + // Androidacy backend not yet implemented! + setRepoData("pref_repo_androidacy", null, + "Androidacy Magisk Modules Repo", + RepoManager.ANDROIDACY_MAGISK_REPO_HOMEPAGE, + "https://t.me/androidacy_discussions", + "https://www.androidacy.com/module-repository-applications/"); + } + + private void setRepoData(String preferenceName, String url, + String fallbackTitle, String homepage, + String supportUrl, String submissionUrl) { + Preference preference = findPreference(preferenceName); + if (preference == null) return; + RepoData repoData = RepoManager.getINSTANCE().get(url); + preference.setTitle(repoData == null ? fallbackTitle : + repoData.getNameOrFallback(fallbackTitle)); + preference = findPreference(preferenceName + "_website"); + if (preference != null && homepage != null) { + preference.setOnPreferenceClickListener(p -> { + IntentHelper.openUrl(getCompatActivity(this), homepage); + return true; + }); + } + preference = findPreference(preferenceName + "_support"); + if (preference != null && supportUrl != null) { + preference.setOnPreferenceClickListener(p -> { + IntentHelper.openUrl(getCompatActivity(this), supportUrl); + return true; + }); + } + preference = findPreference(preferenceName + "_submit"); + if (preference != null && submissionUrl != null) { + preference.setOnPreferenceClickListener(p -> { + IntentHelper.openUrl(getCompatActivity(this), submissionUrl); + return true; + }); + } + } + } } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_baseline_upload_file_24.xml b/app/src/main/res/drawable/ic_baseline_upload_file_24.xml new file mode 100644 index 0000000..f819e4d --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_upload_file_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/xml/repo_preferences.xml b/app/src/main/res/xml/repo_preferences.xml new file mode 100644 index 0000000..afc25d6 --- /dev/null +++ b/app/src/main/res/xml/repo_preferences.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + diff --git a/app/src/main/res/xml/root_preferences.xml b/app/src/main/res/xml/root_preferences.xml index da8a927..c1f177c 100644 --- a/app/src/main/res/xml/root_preferences.xml +++ b/app/src/main/res/xml/root_preferences.xml @@ -2,6 +2,12 @@ + + - - - -