themes imp

This commit is contained in:
gdlbo
2022-09-27 11:41:21 +03:00
parent ecce32bfe7
commit 665516944e
4 changed files with 35 additions and 30 deletions
@@ -50,6 +50,7 @@ public class PreferencesUtil {
preference.setDialogTitle(title); // setDialogTitle
preference.setKey(key); // setKey
preference.setDefaultValue(def); // setDefaultValue
preference.setValue(def);
preference.setOnPreferenceChangeListener(listener);
if (icon != null)
@@ -3,6 +3,7 @@ package ru.vtosters.lite.ui.dialogs;
import static ru.vtosters.lite.utils.AndroidUtils.edit;
import static ru.vtosters.lite.utils.AndroidUtils.getString;
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
import static ru.vtosters.lite.utils.ThemesUtils.*;
import android.app.Activity;
@@ -10,16 +11,18 @@ import com.vk.core.dialogs.alert.VkAlertDialog;
import com.vk.core.ui.themes.VKThemeHelper;
import ru.vtosters.lite.hooks.VKUIHook;
import ru.vtosters.lite.utils.Preferences;
import ru.vtosters.lite.utils.ThemesUtils;
public class ThemeChanging {
public static void changeTheme(Activity activity, float[] f) {
if (getBoolValue("systemtheme", true)) {
if (Preferences.systemtheme()) {
new VkAlertDialog.Builder(activity)
.setTitle(getString("warning"))
.setMessage(getString("system_theme_warning"))
.setCancelable(false)
.setPositiveButton(getString("proxy_disable"), (dialogInterface, i) -> { // Отключить
edit().putBoolean("systemtheme", false).commit();
edit().putString("currsystemtheme", !isDarkTheme() ? "dark" : "light").commit();
VKThemeHelper.b(activity, f);
VKUIHook.clearWebCache();
})
@@ -27,6 +30,7 @@ public class ThemeChanging {
.show();
} else {
VKThemeHelper.b(activity, f);
edit().putString("currsystemtheme", !isDarkTheme() ? "dark" : "light").commit();
VKUIHook.clearWebCache();
}
}
@@ -1,5 +1,6 @@
package ru.vtosters.lite.ui.fragments;
import static ru.vtosters.lite.ui.PreferencesUtil.addListPreferenceIcon;
import static ru.vtosters.lite.ui.PreferencesUtil.addMaterialSwitchPreference;
import static ru.vtosters.lite.ui.PreferencesUtil.addPreference;
import static ru.vtosters.lite.ui.PreferencesUtil.addPreferenceCategory;
@@ -70,6 +71,7 @@ import ru.vtosters.lite.utils.AndroidUtils;
import ru.vtosters.lite.utils.CacheUtils;
import ru.vtosters.lite.utils.Preferences;
import ru.vtosters.lite.utils.SSFSUtils;
import ru.vtosters.lite.utils.ThemesUtils;
public class VTSettings extends MaterialPreferenceToolbarFragment {
public static String getValAsString(String stringid, Boolean value) {
@@ -173,39 +175,37 @@ public class VTSettings extends MaterialPreferenceToolbarFragment {
addPreferenceCategory(this, AndroidUtils.getString("vtsettdarktheme"));
addMaterialSwitchPreference(this, "", AndroidUtils.getString("vtsettdarktheme"), "", "ic_palette_outline_28", isDarkTheme(), (preference, o) -> {
final var switchPreference = (MaterialSwitchPreference) preference;
final var isDarkTheme = !switchPreference.isChecked();
if (Preferences.systemtheme()) {
new VkAlertDialog.Builder(requireActivity())
.setTitle(AndroidUtils.getString("warning"))
.setMessage(AndroidUtils.getString("system_theme_warning"))
.setCancelable(false)
.setPositiveButton(AndroidUtils.getString("proxy_disable"), (dialogInterface, i) -> { // Отключить
switchPreference.setChecked(isDarkTheme);
((MaterialSwitchPreference) findPreference("systemtheme")).setChecked(false);
requireActivity().runOnUiThread(() -> {
switchTheme(isDarkTheme);
});
})
.setNeutralButton(AndroidUtils.getString("cancel"), null)
.show();
return false;
}
switchTheme(isDarkTheme);
return true;
});
if (Build.VERSION.SDK_INT >= 28) {
addMaterialSwitchPreference(this, "systemtheme", AndroidUtils.getString("appearance_theme_use_system"), "", "ic_recent_outline_28", true, (preference, o) -> {
boolean value = (boolean) o;
addListPreferenceIcon(this, "currsystemtheme", "system", AndroidUtils.getString("appearance_theme_use_system"), "ic_palette_outline_28", "", new CharSequence[]{
"Системная тема", "Тёмная тема", "Светлая тема"
}, new String[]{
"system", "dark", "light"
}, (preference, o) -> {
String value = (String) o;
edit().putBoolean("systemtheme", value).commit();
switch (value) {
case "dark":
// Night mode is active, we're using dark theme
ThemesUtils.applyTheme(ThemesUtils.getDarkTheme());
break;
case "light":
// Night mode is not active, we're using light theme
ThemesUtils.applyTheme(ThemesUtils.getLightTheme());
break;
}
edit().putString("currsystemtheme", value).commit();
SystemThemeChangerHook.onThemeChanged(getResources().getConfiguration());
return true;
});
} else {
addMaterialSwitchPreference(this, "", AndroidUtils.getString("vtsettdarktheme"), "", "ic_palette_outline_28", isDarkTheme(), (preference, o) -> {
final var switchPreference = (MaterialSwitchPreference) preference;
final var isDarkTheme = !switchPreference.isChecked();
switchTheme(isDarkTheme);
return true;
});
}
if (!isGmsInstalled()) {
@@ -61,7 +61,7 @@ public class Preferences {
}
public static boolean systemtheme() {
return Build.VERSION.SDK_INT >= 28 && getBoolValue("systemtheme", true);
return Build.VERSION.SDK_INT >= 28 && AndroidUtils.getPrefsValue("currsystemtheme").equals("system");
}
public static boolean authorsrecomm() {