Rework repository section.

pull/55/head
Fox2Code 2 years ago
parent d5b46d6c4f
commit bc84ad235e

@ -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);

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

@ -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;
});
}
}
}
}

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
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"/>
</vector>

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto">
<PreferenceCategory
app:key="pref_repo_main"
app:title="@string/loading">
<Preference
app:key="pref_repo_main_website"
app:icon="@drawable/ic_baseline_language_24"
app:title="@string/website"
app:singleLineTitle="false" />
</PreferenceCategory>
<PreferenceCategory
app:key="pref_repo_alt"
app:title="@string/loading">
<Preference
app:key="pref_repo_alt_website"
app:icon="@drawable/ic_baseline_language_24"
app:title="@string/website"
app:singleLineTitle="false" />
<Preference
app:key="pref_repo_alt_submit"
app:icon="@drawable/ic_baseline_upload_file_24"
app:title="@string/submit_modules"
app:singleLineTitle="false" />
</PreferenceCategory>
<PreferenceCategory
app:key="pref_repo_androidacy"
app:title="@string/loading">
<Preference
app:key="pref_repo_androidacy_website"
app:icon="@drawable/ic_baseline_language_24"
app:title="@string/website"
app:singleLineTitle="false" />
<Preference
app:key="pref_repo_androidacy_support"
app:icon="@drawable/ic_baseline_telegram_24"
app:title="@string/support"
app:singleLineTitle="false" />
<Preference
app:key="pref_repo_androidacy_submit"
app:icon="@drawable/ic_baseline_upload_file_24"
app:title="@string/submit_modules"
app:singleLineTitle="false" />
</PreferenceCategory>
</PreferenceScreen>

@ -2,6 +2,12 @@
<PreferenceCategory
app:title="@string/pref_category_settings">
<Preference
app:key="pref_manage_repos"
app:icon="@drawable/ic_baseline_extension_24"
app:title="@string/manage_repos_pref"
app:singleLineTitle="false" />
<ListPreference
app:key="pref_theme"
app:icon="@drawable/ic_baseline_palette_24"
@ -67,21 +73,6 @@
app:singleLineTitle="false" />
</PreferenceCategory>
<PreferenceCategory
app:title="@string/pref_category_repos">
<Preference
app:key="pref_repo_main"
app:icon="@drawable/ic_baseline_extension_24"
app:summary="@string/repo_main_desc"
app:title="@string/loading"
app:singleLineTitle="false" />
<Preference
app:key="pref_repo_alt"
app:icon="@drawable/ic_baseline_extension_24"
app:summary="@string/repo_main_alt"
app:title="@string/loading"
app:singleLineTitle="false" />
</PreferenceCategory>
<PreferenceCategory
app:title="@string/pref_category_info">
<Preference

Loading…
Cancel
Save