Skip to content
This repository was archived by the owner on May 4, 2023. It is now read-only.

Commit bc84ad2

Browse files
committed
Rework repository section.
1 parent d5b46d6 commit bc84ad2

File tree

6 files changed

+135
-41
lines changed

6 files changed

+135
-41
lines changed

app/src/main/java/com/fox2code/mmm/MainActivity.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ public void onFailure(int error) {
106106
}
107107

108108
public void commonNext() {
109+
moduleViewListBuilder.setFooterPx(searchCard.getHeight()); // Fix an edge case
109110
if (MainApplication.isShowcaseMode())
110111
moduleViewListBuilder.addNotification(NotificationType.SHOWCASE_MODE);
111112
moduleViewListBuilder.applyTo(moduleList, moduleViewAdapter);

app/src/main/java/com/fox2code/mmm/repo/RepoManager.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ public final class RepoManager {
3434
"https://github.com/Magisk-Modules-Repo";
3535
public static final String MAGISK_ALT_REPO_HOMEPAGE =
3636
"https://github.com/Magisk-Modules-Alt-Repo";
37+
public static final String ANDROIDACY_MAGISK_REPO_HOMEPAGE =
38+
"https://www.androidacy.com/modules-repo";
3739

3840
private static final Object lock = new Object();
3941
private static RepoManager INSTANCE;
@@ -84,6 +86,7 @@ private RepoManager(MainApplication mainApplication) {
8486
}
8587

8688
public RepoData get(String url) {
89+
if (url == null) return null;
8790
switch (url) {
8891
case MAGISK_REPO_MANAGER:
8992
case MAGISK_REPO:

app/src/main/java/com/fox2code/mmm/settings/SettingsActivity.java

Lines changed: 70 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
package com.fox2code.mmm.settings;
22

33
import android.os.Bundle;
4-
import android.text.method.Touch;
54
import android.widget.Toast;
65

7-
import androidx.annotation.StyleRes;
6+
import androidx.annotation.StringRes;
7+
import androidx.fragment.app.Fragment;
88
import androidx.fragment.app.FragmentTransaction;
99
import androidx.preference.ListPreference;
1010
import androidx.preference.Preference;
1111
import androidx.preference.PreferenceFragmentCompat;
12-
import androidx.preference.SwitchPreference;
1312

1413
import com.fox2code.mmm.AppUpdateManager;
1514
import com.fox2code.mmm.BuildConfig;
@@ -50,6 +49,11 @@ public static class SettingsFragment extends PreferenceFragmentCompat
5049
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
5150
getPreferenceManager().setSharedPreferencesName("mmm");
5251
setPreferencesFromResource(R.xml.root_preferences, rootKey);
52+
findPreference("pref_manage_repos").setOnPreferenceClickListener(p -> {
53+
devModeStep = 0;
54+
openFragment(new RepoFragment(), R.string.manage_repos_pref);
55+
return true;
56+
});
5357
ListPreference themePreference = findPreference("pref_theme");
5458
themePreference.setSummaryProvider(p -> themePreference.getEntry());
5559
themePreference.setOnPreferenceClickListener(p -> {
@@ -87,10 +91,6 @@ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
8791
findPreference("pref_use_magisk_install_command").setVisible(false);
8892
}
8993

90-
setRepoNameResolution("pref_repo_main", RepoManager.MAGISK_REPO,
91-
"Magisk Modules Repo (Official)", RepoManager.MAGISK_REPO_HOMEPAGE);
92-
setRepoNameResolution("pref_repo_alt", RepoManager.MAGISK_ALT_REPO,
93-
"Magisk Modules Alt Repo", RepoManager.MAGISK_ALT_REPO_HOMEPAGE);
9494
final LibsBuilder libsBuilder = new LibsBuilder().withShowLoadingProgress(false)
9595
.withLicenseShown(true).withAboutMinimalDesign(false);
9696
Preference update = findPreference("pref_update");
@@ -116,14 +116,7 @@ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
116116
});
117117
findPreference("pref_show_licenses").setOnPreferenceClickListener(p -> {
118118
devModeStep = devModeStep == 1 ? 2 : 0;
119-
CompatActivity compatActivity = getCompatActivity(this);
120-
compatActivity.setOnBackPressedCallback(this);
121-
compatActivity.setTitle(R.string.licenses);
122-
compatActivity.getSupportFragmentManager()
123-
.beginTransaction()
124-
.replace(R.id.settings, libsBuilder.supportFragment())
125-
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
126-
.commit();
119+
openFragment(libsBuilder.supportFragment(), R.string.licenses);
127120
return true;
128121
});
129122
if (BuildConfig.DEBUG) {
@@ -137,17 +130,15 @@ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
137130
}
138131
}
139132

140-
private void setRepoNameResolution(String preferenceName,String url,
141-
String fallbackTitle,String homepage) {
142-
Preference preference = findPreference(preferenceName);
143-
if (preference == null) return;
144-
RepoData repoData = RepoManager.getINSTANCE().get(url);
145-
preference.setTitle(repoData == null ? fallbackTitle :
146-
repoData.getNameOrFallback(fallbackTitle));
147-
preference.setOnPreferenceClickListener(p -> {
148-
IntentHelper.openUrl(getCompatActivity(this), homepage);
149-
return true;
150-
});
133+
private void openFragment(Fragment fragment, @StringRes int title) {
134+
CompatActivity compatActivity = getCompatActivity(this);
135+
compatActivity.setOnBackPressedCallback(this);
136+
compatActivity.setTitle(title);
137+
compatActivity.getSupportFragmentManager()
138+
.beginTransaction()
139+
.replace(R.id.settings, fragment)
140+
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
141+
.commit();
151142
}
152143

153144
@Override
@@ -160,4 +151,57 @@ public boolean onBackPressed(CompatActivity compatActivity) {
160151
return true;
161152
}
162153
}
154+
155+
public static class RepoFragment extends PreferenceFragmentCompat {
156+
157+
@Override
158+
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
159+
getPreferenceManager().setSharedPreferencesName("mmm");
160+
setPreferencesFromResource(R.xml.repo_preferences, rootKey);
161+
setRepoData("pref_repo_main", RepoManager.MAGISK_REPO,
162+
"Magisk Modules Repo (Official)", RepoManager.MAGISK_REPO_HOMEPAGE,
163+
null, null);
164+
setRepoData("pref_repo_alt", RepoManager.MAGISK_ALT_REPO,
165+
"Magisk Modules Alt Repo", RepoManager.MAGISK_ALT_REPO_HOMEPAGE,
166+
null,
167+
"https://github.com/Magisk-Modules-Alt-Repo/submission/issues");
168+
// Androidacy backend not yet implemented!
169+
setRepoData("pref_repo_androidacy", null,
170+
"Androidacy Magisk Modules Repo",
171+
RepoManager.ANDROIDACY_MAGISK_REPO_HOMEPAGE,
172+
"https://t.me/androidacy_discussions",
173+
"https://www.androidacy.com/module-repository-applications/");
174+
}
175+
176+
private void setRepoData(String preferenceName, String url,
177+
String fallbackTitle, String homepage,
178+
String supportUrl, String submissionUrl) {
179+
Preference preference = findPreference(preferenceName);
180+
if (preference == null) return;
181+
RepoData repoData = RepoManager.getINSTANCE().get(url);
182+
preference.setTitle(repoData == null ? fallbackTitle :
183+
repoData.getNameOrFallback(fallbackTitle));
184+
preference = findPreference(preferenceName + "_website");
185+
if (preference != null && homepage != null) {
186+
preference.setOnPreferenceClickListener(p -> {
187+
IntentHelper.openUrl(getCompatActivity(this), homepage);
188+
return true;
189+
});
190+
}
191+
preference = findPreference(preferenceName + "_support");
192+
if (preference != null && supportUrl != null) {
193+
preference.setOnPreferenceClickListener(p -> {
194+
IntentHelper.openUrl(getCompatActivity(this), supportUrl);
195+
return true;
196+
});
197+
}
198+
preference = findPreference(preferenceName + "_submit");
199+
if (preference != null && submissionUrl != null) {
200+
preference.setOnPreferenceClickListener(p -> {
201+
IntentHelper.openUrl(getCompatActivity(this), submissionUrl);
202+
return true;
203+
});
204+
}
205+
}
206+
}
163207
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="24dp"
3+
android:height="24dp"
4+
android:viewportWidth="24"
5+
android:viewportHeight="24"
6+
android:tint="?attr/colorControlNormal">
7+
<path
8+
android:fillColor="@android:color/white"
9+
android:pathData="M14,2L6,2c-1.1,0 -1.99,0.9 -1.99,2L4,20c0,1.1 0.89,2 1.99,2L18,22c1.1,0 2,-0.9 2,-2L20,8l-6,-6zM18,20L6,20L6,4h7v5h5v11zM8,15.01l1.41,1.41L11,14.84L11,19h2v-4.16l1.59,1.59L16,15.01 12.01,11z"/>
10+
</vector>
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto">
3+
<PreferenceCategory
4+
app:key="pref_repo_main"
5+
app:title="@string/loading">
6+
<Preference
7+
app:key="pref_repo_main_website"
8+
app:icon="@drawable/ic_baseline_language_24"
9+
app:title="@string/website"
10+
app:singleLineTitle="false" />
11+
</PreferenceCategory>
12+
<PreferenceCategory
13+
app:key="pref_repo_alt"
14+
app:title="@string/loading">
15+
<Preference
16+
app:key="pref_repo_alt_website"
17+
app:icon="@drawable/ic_baseline_language_24"
18+
app:title="@string/website"
19+
app:singleLineTitle="false" />
20+
<Preference
21+
app:key="pref_repo_alt_submit"
22+
app:icon="@drawable/ic_baseline_upload_file_24"
23+
app:title="@string/submit_modules"
24+
app:singleLineTitle="false" />
25+
</PreferenceCategory>
26+
<PreferenceCategory
27+
app:key="pref_repo_androidacy"
28+
app:title="@string/loading">
29+
<Preference
30+
app:key="pref_repo_androidacy_website"
31+
app:icon="@drawable/ic_baseline_language_24"
32+
app:title="@string/website"
33+
app:singleLineTitle="false" />
34+
<Preference
35+
app:key="pref_repo_androidacy_support"
36+
app:icon="@drawable/ic_baseline_telegram_24"
37+
app:title="@string/support"
38+
app:singleLineTitle="false" />
39+
<Preference
40+
app:key="pref_repo_androidacy_submit"
41+
app:icon="@drawable/ic_baseline_upload_file_24"
42+
app:title="@string/submit_modules"
43+
app:singleLineTitle="false" />
44+
</PreferenceCategory>
45+
</PreferenceScreen>

app/src/main/res/xml/root_preferences.xml

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22

33
<PreferenceCategory
44
app:title="@string/pref_category_settings">
5+
<Preference
6+
app:key="pref_manage_repos"
7+
app:icon="@drawable/ic_baseline_extension_24"
8+
app:title="@string/manage_repos_pref"
9+
app:singleLineTitle="false" />
10+
511
<ListPreference
612
app:key="pref_theme"
713
app:icon="@drawable/ic_baseline_palette_24"
@@ -67,21 +73,6 @@
6773
app:singleLineTitle="false" />
6874
</PreferenceCategory>
6975

70-
<PreferenceCategory
71-
app:title="@string/pref_category_repos">
72-
<Preference
73-
app:key="pref_repo_main"
74-
app:icon="@drawable/ic_baseline_extension_24"
75-
app:summary="@string/repo_main_desc"
76-
app:title="@string/loading"
77-
app:singleLineTitle="false" />
78-
<Preference
79-
app:key="pref_repo_alt"
80-
app:icon="@drawable/ic_baseline_extension_24"
81-
app:summary="@string/repo_main_alt"
82-
app:title="@string/loading"
83-
app:singleLineTitle="false" />
84-
</PreferenceCategory>
8576
<PreferenceCategory
8677
app:title="@string/pref_category_info">
8778
<Preference

0 commit comments

Comments
 (0)