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 @@
+
+
-
-
-
-