themes imp
This commit is contained in:
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user