11package com .fox2code .mmm .settings ;
22
33import android .os .Bundle ;
4- import android .text .method .Touch ;
54import android .widget .Toast ;
65
7- import androidx .annotation .StyleRes ;
6+ import androidx .annotation .StringRes ;
7+ import androidx .fragment .app .Fragment ;
88import androidx .fragment .app .FragmentTransaction ;
99import androidx .preference .ListPreference ;
1010import androidx .preference .Preference ;
1111import androidx .preference .PreferenceFragmentCompat ;
12- import androidx .preference .SwitchPreference ;
1312
1413import com .fox2code .mmm .AppUpdateManager ;
1514import 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}
0 commit comments