diff --git a/app/src/main/java/ru/vtosters/lite/themes/ThemesCore.java b/app/src/main/java/ru/vtosters/lite/themes/ThemesCore.java index 9ddbfa2f7..0a3f4bb27 100644 --- a/app/src/main/java/ru/vtosters/lite/themes/ThemesCore.java +++ b/app/src/main/java/ru/vtosters/lite/themes/ThemesCore.java @@ -166,23 +166,28 @@ public class ThemesCore { // } catch (Exception e) { // } - if (isCachedAccents()) { - if (ThemesUtils.isDarkTheme()) { - return (themedColors.get(attrID) != 0 && ACCENT_THEME_ONLY_DARK.get(attrID, true) && ( - ThemesUtils.isMilkshake() ? - ACCENT_THEME_ONLY_MILK_DARK.get(attrID, true) : - ACCENT_THEME_ONLY_NOMILK_DARK.get(attrID, true))); + if (ThemesUtils.isCustomAccentEnabled()) { + if (isCachedAccents()) { + if (ThemesUtils.isDarkTheme()) { + return (themedColors.get(attrID) != 0 && ACCENT_THEME_ONLY_DARK.get(attrID, true) && ( + ThemesUtils.isMilkshake() ? + ACCENT_THEME_ONLY_MILK_DARK.get(attrID, true) : + ACCENT_THEME_ONLY_NOMILK_DARK.get(attrID, true))); + } else { + return (themedColors.get(attrID) != 0 && ACCENT_THEME_ONLY_LIGHT.get(attrID, true) && ( + ThemesUtils.isMilkshake() ? + ACCENT_THEME_ONLY_MILK_LIGHT.get(attrID, true) : + ACCENT_THEME_ONLY_NOMILK_LIGHT.get(attrID, true))); + } } else { - return (themedColors.get(attrID) != 0 && ACCENT_THEME_ONLY_LIGHT.get(attrID, true) && ( - ThemesUtils.isMilkshake() ? - ACCENT_THEME_ONLY_MILK_LIGHT.get(attrID, true) : - ACCENT_THEME_ONLY_NOMILK_LIGHT.get(attrID, true))); + return themedColors.get(attrID) != 0; } } else { - return themedColors.get(attrID) != 0; + return false; } } + public static void clear() { cachedAccents = false; themedColors.clear(); diff --git a/app/src/main/java/ru/vtosters/lite/themes/ThemesHacks.java b/app/src/main/java/ru/vtosters/lite/themes/ThemesHacks.java index ed60ec21a..10b6e3b51 100644 --- a/app/src/main/java/ru/vtosters/lite/themes/ThemesHacks.java +++ b/app/src/main/java/ru/vtosters/lite/themes/ThemesHacks.java @@ -12,26 +12,6 @@ import ru.vtosters.lite.themes.utils.RecolorUtils; import ru.vtosters.lite.utils.ThemesUtils; public class ThemesHacks { - // Фиксит селектор (все/свои/архив) в профиле - public static void fixProfileSelector(View view) { - if (!ThemesUtils.isMilkshake()) return; - var id = view.getId(); - - if (id == R.id.profile_wall_owner_posts || id == R.id.profile_wall_all_posts || id == R.id.profile_wall_archived_posts) { - StateListDrawable states = (StateListDrawable) ((LayerDrawable) view.getBackground()).getDrawable(0); - LayerDrawable selected = (LayerDrawable) ((DrawableContainer.DrawableContainerState) states.getConstantState()).getChildren()[0]; - ((ColorDrawable) selected.getDrawable(0)).setColor(ThemesUtils.getAccentColor()); - } - } - - public static void fixThemedFeed(TextView textView, int i) { - if (i != R.layout.themed_feed_tab_2) { - return; - } - textView.setTextColor(RecolorUtils.recolorCSL(textView.getTextColors())); - ((InsetDrawable) ((DrawableContainer.DrawableContainerState) textView.getBackground().getConstantState()).getChildren()[0]).getDrawable().setTint(ThemesUtils.lighten(ThemesUtils.getAccentColor(), 0.15f)); - } - public static void fixDropdown(Drawable drawable) { if (!ThemesUtils.isDarkTheme() && ThemesUtils.isMilkshake() && ThemesCore.isCachedAccents()) { StateListDrawable stateListDrawable = (StateListDrawable) drawable; @@ -41,12 +21,15 @@ public class ThemesHacks { } public static int getHackedColor(@NonNull Context context, @ColorRes int color) { - if (ThemesCore.isCachedAccents() && ColorReferences.isAccentedColor(context.getResources().getColor(color))) { - return ThemesUtils.getAccentColor(); - } - if (ThemesCore.isCachedAccents() && ColorReferences.isMutedAccentedColor(context.getResources().getColor(color))) { - return ThemesUtils.getMutedAccentColor(); + if (ThemesUtils.isCustomAccentEnabled()) { + if (ThemesCore.isCachedAccents() && ColorReferences.isAccentedColor(context.getResources().getColor(color))) { + return ThemesUtils.getAccentColor(); + } + + if (ThemesCore.isCachedAccents() && ColorReferences.isMutedAccentedColor(context.getResources().getColor(color))) { + return ThemesUtils.getMutedAccentColor(); + } } return Build.VERSION.SDK_INT > 23 ? context.getColor(color) : context.getResources().getColor(color); diff --git a/app/src/main/java/ru/vtosters/lite/themes/utils/RecolorUtils.java b/app/src/main/java/ru/vtosters/lite/themes/utils/RecolorUtils.java index d613c7d9a..de1432f59 100644 --- a/app/src/main/java/ru/vtosters/lite/themes/utils/RecolorUtils.java +++ b/app/src/main/java/ru/vtosters/lite/themes/utils/RecolorUtils.java @@ -26,6 +26,7 @@ public class RecolorUtils { } // Get res drawable via id and coloring to accent public static int recolorHexColor(int i) { + if (!ThemesUtils.isCustomAccentEnabled()) return i; var accented = ColorReferences.isAccentedColor(i); var mutedaccented = ColorReferences.isMutedAccentedColor(i); return (accented || mutedaccented) ? (accented ? ThemesUtils.getAccentColor() : ThemesUtils.getMutedAccentColor()) : i; @@ -39,6 +40,14 @@ public class RecolorUtils { @SuppressLint("UseCompatLoadingForColorStateLists") public static ColorStateList themeCSL(Context context, int color) { + if (!ThemesUtils.isCustomAccentEnabled()) { + if (Build.VERSION.SDK_INT >= 23) { + return context.getColorStateList(color); + } else { + return context.getResources().getColorStateList(color); + } + } + if (ColorReferences.isColorRefAccented(color)) { return ColorStateList.valueOf(ThemesUtils.getAccentColor()); } else if (ColorReferences.isColorRefMutedAccented(color)) { @@ -57,6 +66,8 @@ public class RecolorUtils { } // Recolor ColorStateList public static ColorStateList themeCSL(ColorStateList csl) { + if (!ThemesUtils.isCustomAccentEnabled()) return csl; + try { int unsel = csl.getColorForState(new int[]{-android.R.attr.state_selected}, Color.BLACK); int sel = csl.getColorForState(new int[]{android.R.attr.state_selected}, Color.BLACK); diff --git a/app/src/main/java/ru/vtosters/lite/utils/ThemesUtils.java b/app/src/main/java/ru/vtosters/lite/utils/ThemesUtils.java index d86e03c46..9070bf3fe 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/ThemesUtils.java +++ b/app/src/main/java/ru/vtosters/lite/utils/ThemesUtils.java @@ -30,6 +30,7 @@ import com.vtosters.lite.data.ThemeTracker; import ru.vtosters.lite.deviceinfo.OEMDetector; import ru.vtosters.lite.hooks.VKUIHook; import ru.vtosters.lite.themes.ThemesHacks; +import ru.vtosters.lite.themes.ThemesManager; import ru.vtosters.lite.ui.wallpapers.WallpapersHooks; import java.lang.reflect.Field; @@ -46,6 +47,10 @@ public class ThemesUtils { } } // Apply VKTheme and ImTheme (hard applying without dynamic theme changing) + public static boolean isCustomAccentEnabled() { + return ThemesUtils.isMonetTheme() || ThemesManager.hasTmpArchive(); + } + public static ColorStateList getAccenedColorStateList() { return ColorStateList.valueOf(getAccentColor()); } @@ -93,8 +98,7 @@ public class ThemesUtils { } public static int getAccentColor() { - var accent = AndroidUtils.getPreferences().getInt("accent_color", getColorFromAttr(R.attr.accent)); - return (accent == 0 || !isMilkshake()) || isMonetTheme() ? getColorFromAttr(R.attr.accent) : accent; + return getColorFromAttr(R.attr.accent); } // Color accent public static int getMutedAccentColor() { @@ -296,6 +300,7 @@ public class ThemesUtils { } // Recolor drawable to accent color public static Drawable recolorToolbarDrawable(Drawable drawable) { + if (!ThemesUtils.isCustomAccentEnabled()) return drawable; if (drawable == null) return null; return new RecoloredDrawable(drawable, (ThemesUtils.isMilkshake() && !ThemesUtils.isDarkTheme()) ? ThemesUtils.getAccentColor() : ThemesUtils.getHeaderText()); } diff --git a/smali/smali_classes2/com/vk/core/ui/themes/VKThemeHelper$b.smali b/smali/smali_classes2/com/vk/core/ui/themes/VKThemeHelper$b.smali index 1d4b829fe..ba71eb569 100644 --- a/smali/smali_classes2/com/vk/core/ui/themes/VKThemeHelper$b.smali +++ b/smali/smali_classes2/com/vk/core/ui/themes/VKThemeHelper$b.smali @@ -167,14 +167,25 @@ return-object v0 :cond_7 + invoke-static {}, Lru/vtosters/lite/utils/AndroidUtils;->getResources()Landroid/content/res/Resources; + + move-result-object v0 + + invoke-static {}, Lru/vtosters/lite/utils/ThemesUtils;->isCustomAccentEnabled()Z + + move-result v1 + + if-eqz v1, :cond_0 + new-instance v0, Lru/vtosters/lite/themes/VTLResources; invoke-static {}, Lru/vtosters/lite/utils/AndroidUtils;->getResources()Landroid/content/res/Resources; - move-result-object v1 + move-result-object v2 - invoke-direct {v0, p0, v1}, Lru/vtosters/lite/themes/VTLResources;->(Landroid/content/Context;Landroid/content/res/Resources;)V + invoke-direct {v0, p0, v2}, Lru/vtosters/lite/themes/VTLResources;->(Landroid/content/Context;Landroid/content/res/Resources;)V + :cond_0 iput-object v0, p0, Lcom/vk/core/ui/themes/VKThemeHelper$b;->resources:Landroid/content/res/Resources; goto :goto_6