some theme upgrades

monet theme disabled
amoled theme switch
some fixes with vkui inj
This commit is contained in:
gdlbo
2022-12-12 16:34:52 +03:00
parent f1436ebbde
commit 1ec78a8fbd
8 changed files with 259 additions and 133 deletions
@@ -18,6 +18,8 @@ import android.webkit.WebView;
import com.vk.articles.preload.WebCachePreloader;
import com.vtosters.lite.R;
import com.vtosters.lite.data.ThemeTracker;
import ru.vtosters.lite.themes.ThemesCore;
import ru.vtosters.lite.utils.ThemesUtils;
import java.io.BufferedReader;
import java.io.IOException;
@@ -77,22 +79,19 @@ public class VKUIHook {
}
public static void inject(WebView webView) {
String string = getPrefsValue("darktheme");
if (getBoolValue("VKUI_INJ", true)) {
if (!isLoaded) {
load();
}
StringBuilder sb = new StringBuilder();
if (true/*Themes.isAccentedCache()*/) {
if (ThemesCore.isCachedAccents()) {
sb.append("\n\n");
sb.append(loadedCSS);
}
if (string.equals("amoled")) {
if (ThemesUtils.isAmoledTheme()) {
sb.append("\n\n");
sb.append(loadedCSSAmoled);
}
@@ -1,19 +1,14 @@
package ru.vtosters.lite.ui.fragments;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import androidx.preference.PreferenceCategory;
import com.vk.core.dialogs.alert.VkAlertDialog;
import com.vk.core.fragments.FragmentImpl;
import com.vk.navigation.Navigator;
import com.vtosters.lite.R;
import com.vtosters.lite.general.fragments.MaterialPreferenceToolbarFragment;
import ru.vtosters.lite.themes.ColorReferences;
import ru.vtosters.lite.themes.ThemesCore;
import ru.vtosters.lite.themes.palettes.PalettesManager;
import ru.vtosters.lite.ui.dialogs.PalettesBottomSheetDialog;
@@ -37,62 +32,64 @@ public class ThemesFragment extends MaterialPreferenceToolbarFragment {
accentColorPreference.setIcon(ThemesUtils.recolorDrawable(requireContext().getDrawable(R.drawable.bg_accent_circle)));
accentColorPreference.setOnPreferenceClickListener(preference -> {
changeAccent();
return false;
return true;
});
var navBarPreference = findPreference("navbar");
navBarPreference.setOnPreferenceClickListener(preference -> {
restart();
return false;
return true;
});
var milkshakePreference = findPreference("milkshake");
milkshakePreference.setOnPreferenceClickListener(preference -> {
restart();
return false;
return true;
});
var darkThemePreference = findPreference("darktheme");
darkThemePreference.setOnPreferenceChangeListener((preference, o) -> {
restartDark(o.toString());
return false;
var amoledThemePreference = findPreference("amoledtheme");
amoledThemePreference.setOnPreferenceClickListener(preference -> {
restart();
return true;
});
var lightThemePreference = findPreference("lighttheme");
lightThemePreference.setOnPreferenceChangeListener(((preference, o) -> {
restartLight(o.toString());
return false;
}));
var monetThemePreference = findPreference("monettheme");
monetThemePreference.setOnPreferenceClickListener(preference -> {
restart();
return true;
});
monetThemePreference.setVisible(Build.VERSION.SDK_INT >= Build.VERSION_CODES.S);
var iconManagerPreference = findPreference("iconmanager");
iconManagerPreference.setOnPreferenceClickListener(preference -> {
switchFragment(IconsFragment.class);
return false;
return true;
});
var dockbarTabTitlesPreference = findPreference("dockbar_tab_titles");
dockbarTabTitlesPreference.setOnPreferenceClickListener(preference -> {
restart();
return false;
return true;
});
var dockbarAccentPreference = findPreference("dockbar_accent");
dockbarAccentPreference.setOnPreferenceClickListener(preference -> {
restart();
return false;
return true;
});
var dockCounterPreference = findPreference("dockcounter");
dockCounterPreference.setOnPreferenceClickListener(preference -> {
restart();
return false;
return true;
});
var newsfeedNotificationsPreference = findPreference("newsfeed_notif");
newsfeedNotificationsPreference.setOnPreferenceClickListener(preference -> {
restart();
return false;
return true;
});
newsfeedNotificationsPreference.setVisible(Preferences.milkshake());
if (AndroidUtils.isTablet()) {
@@ -157,23 +154,13 @@ public class ThemesFragment extends MaterialPreferenceToolbarFragment {
void setAccentColor(int color) {
ThemesUtils.setCustomAccentColor(color, false);
ThemesCore.setThemedColors(color);
LifecycleUtils.restartApplicationWithTimer();
restart();
}
void restart() {
LifecycleUtils.restartApplicationWithTimer();
}
void restartLight(String value) {
AndroidUtils.edit().putString("lighttheme", value).commit();
LifecycleUtils.restartApplicationWithTimer();
}
void restartDark(String value) {
AndroidUtils.edit().putString("darktheme", value).commit();
LifecycleUtils.restartApplicationWithTimer();
}
private void switchFragment(Class<? extends FragmentImpl> fragmentClz) {
var intent = new Navigator(fragmentClz)
.b(requireContext())
@@ -280,10 +280,6 @@ public class Preferences {
return getBoolValue("systememoji", false);
}
public static boolean vksans() {
return getBoolValue("vksans", false);
}
public static boolean voice() {
return getBoolValue("voice", true);
}
@@ -293,10 +289,6 @@ public class Preferences {
return customvalue.isEmpty() ? orig : Integer.parseInt(customvalue);
}
public static boolean color_grishka() {
return getBoolValue("color_grishka", true);
}
public static boolean vkme_notifs() {
return getBoolValue("vkme_notifs", false);
}
@@ -4,10 +4,8 @@ import com.vk.core.network.Network;
import static ru.vtosters.lite.hooks.DateHook.getLocale;
import static ru.vtosters.lite.proxy.ProxyUtils.isAnyProxyEnabled;
import static ru.vtosters.lite.utils.About.getBuildNumber;
import static ru.vtosters.lite.utils.AndroidUtils.getPrefsValue;
import static ru.vtosters.lite.utils.Preferences.dev;
import static ru.vtosters.lite.utils.Preferences.vksans;
import static ru.vtosters.lite.utils.ThemesUtils.isDarkTheme;
public class SSFSUtils {
@@ -37,17 +35,13 @@ public class SSFSUtils {
}
public static String getAmoledVKUI() {
return getPrefsValue("darktheme").equals("amoled") && isDarkTheme() ? "1" : "0";
return ThemesUtils.isAmoledTheme() && isDarkTheme() ? "1" : "0";
}
public static String getUserProxy() {
return isAnyProxyEnabled() ? "1" : "0";
}
public static String isVKSansEnabled() {
return vksans() ? "1" : "0";
}
public static String isDEVModEnabled() {
return dev() ? "1" : "0";
}
@@ -95,6 +95,14 @@ public class ThemesUtils {
public static boolean isDarkTheme() {
return VKThemeHelper.r();
}
public static boolean isMonetTheme() {
return getBoolValue("monettheme", false) && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S;
}
public static boolean isAmoledTheme() {
return getBoolValue("amoledtheme", false);
}
public static int getAccentColor() {
var accent = AndroidUtils.getPreferences().getInt("accent_color", getColorFromAttr(R.attr.accent));
@@ -236,10 +244,19 @@ public class ThemesUtils {
}
public static int getDarkThemeRes() {
if (getPrefsValue("darktheme").equals("amoled")) {
return isMilkshake() ? R.style.VkMilkAmoledStyle : R.style.VkAmoledStyle;
if (isMonetTheme()) {
if (isAmoledTheme()) {
return isMilkshake() ? getIdentifier("VkMilkAmoledMonetStyle", "style"): getIdentifier("VkAmoledMonetStyle", "style");
} else {
return isMilkshake() ? getIdentifier("VkMilkDarkMonetStyle", "style"): getIdentifier("VkDarkMonetStyle", "style");
}
} else {
if (isAmoledTheme()) {
return isMilkshake() ? R.style.VkMilkAmoledStyle : R.style.VkAmoledStyle;
} else {
return isMilkshake() ? R.style.VkMilkDarkStyle : R.style.VkDarkStyle;
}
}
return isMilkshake() ? R.style.VkMilkDarkStyle : R.style.VkDarkStyle;
} // Return needed res theme
public static VKTheme getDarkTheme() {
@@ -254,10 +271,6 @@ public class ThemesUtils {
return VKThemeHelper.d(attr);
} // Get needed attr color
public static boolean isAndroidMonet() {
return color_grishka() && Build.VERSION.SDK_INT >= 31;
}
public static void colorWriteBar(View view) {
if (!navbar()) return;
view.setBackgroundColor(getTabbarBackground());