/ Rikka \

This commit is contained in:
NekoInverter 2020-02-05 15:18:55 +08:00
parent 03f6ecac0e
commit 014d548898
5 changed files with 45 additions and 34 deletions

View File

@ -7,7 +7,7 @@ android {
applicationId "org.meowcat.edxposed.manager"
minSdkVersion 21
targetSdkVersion 27
versionCode 45402
versionCode 45403
versionName "4.5.4"
}
buildTypes {
@ -32,8 +32,8 @@ dependencies {
implementation "com.github.topjohnwu.libsu:core:2.5.0"
implementation 'androidx.browser:browser:1.2.0'
implementation 'com.timehop.stickyheadersrecyclerview:library:0.4.3@aar'
implementation 'moe.shizuku.preference:preference-appcompat:4.1.0-alpha02'
implementation 'moe.shizuku.preference:preference-simplemenu-appcompat:4.1.0-alpha02'
implementation 'com.takisoft.preferencex:preferencex:1.1.0'
implementation 'com.takisoft.preferencex:preferencex-simplemenu:1.1.0'
implementation "androidx.recyclerview:recyclerview:1.2.0-alpha01"
implementation 'com.annimon:stream:1.2.0'
implementation 'com.google.code.gson:gson:2.8.6'

View File

@ -4,20 +4,21 @@ import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import androidx.preference.PreferenceManager;
import com.takisoft.preferencex.PreferenceFragmentCompat;
import org.meowcat.edxposed.manager.repo.Module;
import org.meowcat.edxposed.manager.util.PrefixedSharedPreferences;
import org.meowcat.edxposed.manager.util.RepoLoader;
import java.util.Map;
import moe.shizuku.preference.PreferenceFragment;
import moe.shizuku.preference.PreferenceManager;
public class DownloadDetailsSettingsFragment extends PreferenceFragment {
public class DownloadDetailsSettingsFragment extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
public void onCreatePreferencesFix(Bundle savedInstanceState, String rootKey) {
DownloadDetailsActivity mActivity = (DownloadDetailsActivity) getActivity();
if (mActivity == null) {
return;

View File

@ -8,6 +8,7 @@ import android.os.Bundle;
import android.os.FileUtils;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.Toast;
import androidx.annotation.NonNull;
@ -15,8 +16,11 @@ import androidx.annotation.Nullable;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatDelegate;
import androidx.appcompat.widget.Toolbar;
import androidx.preference.Preference;
import androidx.preference.SwitchPreference;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.takisoft.preferencex.PreferenceFragmentCompat;
import com.topjohnwu.superuser.Shell;
import org.meowcat.edxposed.manager.util.RepoLoader;
@ -27,10 +31,6 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Objects;
import moe.shizuku.preference.Preference;
import moe.shizuku.preference.PreferenceFragment;
import moe.shizuku.preference.SwitchPreference;
public class SettingsActivity extends BaseActivity {
@Override
@ -47,13 +47,13 @@ public class SettingsActivity extends BaseActivity {
setupWindowInsets();
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new SettingsFragment()).commit();
.add(R.id.container, SettingsFragment.newInstance(findViewById(R.id.snackbar))).commit();
}
}
@SuppressWarnings({"ResultOfMethodCallIgnored", "deprecation"})
public static class SettingsFragment extends PreferenceFragment implements Preference.OnPreferenceClickListener, SharedPreferences.OnSharedPreferenceChangeListener {
public static class SettingsFragment extends PreferenceFragmentCompat implements Preference.OnPreferenceClickListener, SharedPreferences.OnSharedPreferenceChangeListener {
static final File mDisableResourcesFlag = new File(XposedApp.BASE_DIR + "conf/disable_resources");
static final File mDynamicModulesFlag = new File(XposedApp.BASE_DIR + "conf/dynamicmodules");
static final File mDeoptBootFlag = new File(XposedApp.BASE_DIR + "conf/deoptbootimage");
@ -63,10 +63,16 @@ public class SettingsActivity extends BaseActivity {
static final File mDisableModulesLogsFlag = new File(XposedApp.BASE_DIR + "conf/disable_modules_log");
static final File mVerboseLogProcessID = new File(XposedApp.BASE_DIR + "log/all.pid");
static final File mModulesLogProcessID = new File(XposedApp.BASE_DIR + "log/error.pid");
View rootView;
private Preference stopVerboseLog;
private Preference stopLog;
static SettingsFragment newInstance(View rootView) {
SettingsFragment fragment = new SettingsFragment();
fragment.setRootView(rootView);
return fragment;
}
@SuppressWarnings("SameParameterValue")
@SuppressLint({"WorldReadableFiles", "WorldWriteableFiles"})
static void setFilePermissionsFromMode(String name, int mode) {
@ -81,9 +87,13 @@ public class SettingsActivity extends BaseActivity {
FileUtils.setPermissions(name, perms, -1, -1);
}
void setRootView(View rootView) {
this.rootView = rootView;
}
@SuppressLint({"ObsoleteSdkInt", "WorldReadableFiles"})
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
public void onCreatePreferencesFix(Bundle savedInstanceState, String rootKey) {
addPreferencesFromResource(R.xml.prefs);
stopVerboseLog = findPreference("stop_verbose_log");
@ -94,7 +104,7 @@ public class SettingsActivity extends BaseActivity {
return true;
});
SwitchPreference prefWhiteListMode = (SwitchPreference) findPreference("white_list_switch");
SwitchPreference prefWhiteListMode = findPreference("white_list_switch");
Objects.requireNonNull(prefWhiteListMode).setChecked(mWhiteListModeFlag.exists());
prefWhiteListMode.setOnPreferenceChangeListener((preference, newValue) -> {
boolean enabled = (Boolean) newValue;
@ -125,7 +135,7 @@ public class SettingsActivity extends BaseActivity {
return (enabled == mWhiteListModeFlag.exists());
});
SwitchPreference prefVerboseLogs = (SwitchPreference) findPreference("disable_verbose_log");
SwitchPreference prefVerboseLogs = findPreference("disable_verbose_log");
Objects.requireNonNull(prefVerboseLogs).setChecked(mDisableVerboseLogsFlag.exists());
prefVerboseLogs.setOnPreferenceChangeListener((preference, newValue) -> {
boolean enabled = (Boolean) newValue;
@ -156,7 +166,7 @@ public class SettingsActivity extends BaseActivity {
return (enabled == mDisableVerboseLogsFlag.exists());
});
SwitchPreference prefModulesLogs = (SwitchPreference) findPreference("disable_modules_log");
SwitchPreference prefModulesLogs = findPreference("disable_modules_log");
Objects.requireNonNull(prefModulesLogs).setChecked(mDisableModulesLogsFlag.exists());
prefModulesLogs.setOnPreferenceChangeListener((preference, newValue) -> {
boolean enabled = (Boolean) newValue;
@ -187,7 +197,7 @@ public class SettingsActivity extends BaseActivity {
return (enabled == mDisableModulesLogsFlag.exists());
});
SwitchPreference prefBlackWhiteListMode = (SwitchPreference) findPreference("black_white_list_switch");
SwitchPreference prefBlackWhiteListMode = findPreference("black_white_list_switch");
Objects.requireNonNull(prefBlackWhiteListMode).setChecked(mBlackWhiteListModeFlag.exists());
prefBlackWhiteListMode.setOnPreferenceChangeListener((preference, newValue) -> {
boolean enabled = (Boolean) newValue;
@ -218,7 +228,7 @@ public class SettingsActivity extends BaseActivity {
return (enabled == mBlackWhiteListModeFlag.exists());
});
SwitchPreference prefEnableDeopt = (SwitchPreference) findPreference("enable_boot_image_deopt");
SwitchPreference prefEnableDeopt = findPreference("enable_boot_image_deopt");
Objects.requireNonNull(prefEnableDeopt).setChecked(mDeoptBootFlag.exists());
prefEnableDeopt.setOnPreferenceChangeListener((preference, newValue) -> {
boolean enabled = (Boolean) newValue;
@ -249,7 +259,7 @@ public class SettingsActivity extends BaseActivity {
return (enabled == mDeoptBootFlag.exists());
});
SwitchPreference prefDynamicResources = (SwitchPreference) findPreference("is_dynamic_modules");
SwitchPreference prefDynamicResources = findPreference("is_dynamic_modules");
Objects.requireNonNull(prefDynamicResources).setChecked(mDynamicModulesFlag.exists());
prefDynamicResources.setOnPreferenceChangeListener((preference, newValue) -> {
boolean enabled = (Boolean) newValue;
@ -280,7 +290,7 @@ public class SettingsActivity extends BaseActivity {
return (enabled == mDynamicModulesFlag.exists());
});
SwitchPreference prefDisableResources = (SwitchPreference) findPreference("disable_resources");
SwitchPreference prefDisableResources = findPreference("disable_resources");
Objects.requireNonNull(prefDisableResources).setChecked(mDisableResourcesFlag.exists());
prefDisableResources.setOnPreferenceChangeListener((preference, newValue) -> {
boolean enabled = (Boolean) newValue;
@ -337,12 +347,6 @@ public class SettingsActivity extends BaseActivity {
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
}
@Override
public DividerDecoration onCreateItemDecoration() {
return new CategoryDivideDividerDecoration();
//return new DefaultDividerDecoration();
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if (key.contains("theme") || key.equals("ignore_chinese")) {
@ -386,8 +390,14 @@ public class SettingsActivity extends BaseActivity {
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
((FrameLayout) view).setClipChildren(false);
((FrameLayout) view).setClipToPadding(false);
if (rootView == null) {
return;
}
//ActionBarShadowController.attachToRecyclerView((AppCompatActivity) getActivity(), getListView());
((LinearLayout) ((FrameLayout) rootView.findViewById(R.id.container)).getChildAt(0)).setClipToPadding(false);
((LinearLayout) ((FrameLayout) rootView.findViewById(R.id.container)).getChildAt(0)).setClipChildren(false);
((FrameLayout) ((LinearLayout) view).getChildAt(0)).setClipChildren(false);
((FrameLayout) ((LinearLayout) view).getChildAt(0)).setClipToPadding(false);
}
}
}

View File

@ -3,14 +3,14 @@ package org.meowcat.edxposed.manager.util;
import android.annotation.SuppressLint;
import android.content.SharedPreferences;
import androidx.preference.PreferenceManager;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import moe.shizuku.preference.PreferenceManager;
public class PrefixedSharedPreferences implements SharedPreferences {
private final SharedPreferences mBase;
private final String mPrefix;

View File

@ -4,7 +4,7 @@ import android.content.Context;
import android.content.SharedPreferences;
import android.util.AttributeSet;
import moe.shizuku.preference.SimpleMenuPreference;
import com.takisoft.preferencex.SimpleMenuPreference;
public class IntegerListPreference extends SimpleMenuPreference {
public IntegerListPreference(Context context) {