From 2838dc5e7ebb7822ff5b069d00ce4aa8be0bcee2 Mon Sep 17 00:00:00 2001 From: gdlbo <41114720+gdlbo@users.noreply.github.com> Date: Thu, 2 Jun 2022 16:42:45 +0300 Subject: [PATCH] Fixes --- .../ui/fragments/dockbar/DockBarManager.java | 11 ++-- .../java/ru/vtosters/lite/utils/Newsfeed.java | 3 +- .../java/ru/vtosters/lite/utils/Themes.java | 63 +++++++++++++++++++ .../support/v4/content/ContextCompat.smali | 10 +++ .../support/v7/c/a/AppCompatResources.smali | 10 +++ 5 files changed, 89 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarManager.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarManager.java index 7ec390268..ba037ee20 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarManager.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarManager.java @@ -6,7 +6,6 @@ import static ru.vtosters.lite.utils.Preferences.olddock; import com.vk.apps.AppsFragment; import com.vk.discover.DiscoverFragment; -import com.vk.discover.GatewaysFragment; import com.vk.fave.fragments.FaveTabFragment; import com.vk.feedlikes.fragments.FeedLikesFragment; import com.vk.menu.MenuFragment; @@ -80,7 +79,7 @@ public class DockBarManager { if (!dockbar.exists()) { mSelectedTabs.add(new DockBarTab("tab_news", olddock() ? R.drawable.ic_newsfeed_28 : R.drawable.ic_menu_newsfeed_outline_28, R.string.newsfeed, R.id.tab_news, newfeed() ? HomeFragment.class : NewsfeedFragment.class)); - mSelectedTabs.add(new DockBarTab("tab_discover", olddock() ? R.drawable.ic_search_28 : R.drawable.ic_menu_search_outline_28, R.string.search, R.id.tab_discover, newfeed() ? GatewaysFragment.class : DiscoverFragment.class )); + mSelectedTabs.add(new DockBarTab("tab_discover", olddock() ? R.drawable.ic_search_28 : R.drawable.ic_menu_search_outline_28, R.string.search, R.id.tab_discover, DiscoverFragment.class )); mSelectedTabs.add(new DockBarTab("tab_messages", olddock() ? R.drawable.ic_menu_messages_28 : R.drawable.ic_message_28_outline, R.string.messages, R.id.tab_messages, DialogsFragment.class)); mSelectedTabs.add(new DockBarTab("tab_feedback", olddock() ? R.drawable.ic_menu_notifications_28 : R.drawable.ic_menu_notification_outline_28, R.string.feedback, R.id.tab_feedback, NotificationsContainerFragment.class)); mSelectedTabs.add(new DockBarTab("tab_menu", olddock() ? R.drawable.ic_menu_more_28 : R.drawable.ic_menu_more_outline_28, R.string.menu, R.id.tab_menu, MenuFragment.class)); @@ -124,8 +123,8 @@ public class DockBarManager { } else { if (tab.fragmentClass == HomeFragment.class) { tab.fragmentClass = NewsfeedFragment.class; - } else if (tab.fragmentClass == GatewaysFragment.class) { - tab.fragmentClass = GatewaysFragment.class; + } else if (tab.fragmentClass == DiscoverFragment.class) { + tab.fragmentClass = DiscoverFragment.class; } } mSelectedTabs.add(tab); @@ -145,12 +144,12 @@ public class DockBarManager { if (tab.fragmentClass == NewsfeedFragment.class) { tab.fragmentClass = HomeFragment.class; } else if (tab.fragmentClass == DiscoverFragment.class) { - tab.fragmentClass = GatewaysFragment.class; + tab.fragmentClass = DiscoverFragment.class; } } else { if (tab.fragmentClass == HomeFragment.class) { tab.fragmentClass = NewsfeedFragment.class; - } else if (tab.fragmentClass == GatewaysFragment.class) { + } else if (tab.fragmentClass == DiscoverFragment.class) { tab.fragmentClass = DiscoverFragment.class; } } diff --git a/app/src/main/java/ru/vtosters/lite/utils/Newsfeed.java b/app/src/main/java/ru/vtosters/lite/utils/Newsfeed.java index e4e0d5354..51df31640 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/Newsfeed.java +++ b/app/src/main/java/ru/vtosters/lite/utils/Newsfeed.java @@ -17,7 +17,6 @@ import static ru.vtosters.lite.utils.Preferences.postsrecomm; import com.vk.apps.AppsFragment; import com.vk.core.preference.Preference; import com.vk.discover.DiscoverFragment; -import com.vk.discover.GatewaysFragment; import com.vk.fave.fragments.FaveTabFragment; import com.vk.menu.MenuFragment; import com.vk.music.fragment.MusicFragment; @@ -207,7 +206,7 @@ public class Newsfeed { case "apps": return AppsFragment.class; case "discover": - return newfeed() ? GatewaysFragment.class : DiscoverFragment.class; + return DiscoverFragment.class; case "notifications": return NotificationsContainerFragment.class; case "money": diff --git a/app/src/main/java/ru/vtosters/lite/utils/Themes.java b/app/src/main/java/ru/vtosters/lite/utils/Themes.java index 1c95ee535..2e838309b 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/Themes.java +++ b/app/src/main/java/ru/vtosters/lite/utils/Themes.java @@ -12,6 +12,7 @@ import static ru.vtosters.lite.utils.Preferences.vksans; import android.content.Context; import android.content.res.ColorStateList; import android.content.res.Configuration; +import android.graphics.Color; import android.graphics.drawable.Drawable; import android.os.Build; import android.support.v7.widget.Toolbar; @@ -19,6 +20,8 @@ import android.view.View; import android.view.Window; import android.widget.ImageButton; +import androidx.core.graphics.ColorUtils; + import com.vk.core.d.RecoloredDrawable; import com.vk.core.ui.themes.VKTheme; import com.vk.core.ui.themes.VKThemeHelper; @@ -26,7 +29,14 @@ import com.vk.im.ui.themes.ImTheme; import com.vk.im.ui.themes.ImThemeHelper; import com.vtosters.lite.R; +import java.util.Arrays; +import java.util.List; + public class Themes { + public static List accentColors = Arrays.asList( + "71AAEB", "3F8AE0", "528BCC", "4986CC", "5181B8", "74A2D6", "518BCC" + ); + public static void applyTheme(VKTheme theme, ImTheme imtheme) { VKThemeHelper.b.a(theme); // VKThemeHelper.b.a(VKTheme value) VK Theme apply ImThemeHelper.b.a(imtheme); // ImThemeHelper.b.a(ImTheme value) VK Theme Msg apply @@ -72,6 +82,10 @@ public class Themes { return getContext().getResources().getIdentifier("VkIm.Theme.VkApp.Amoled", "style", getContext().getPackageName()); } // Get Amoled theme id for messages + public static int getAttrId(String attr) { + return getContext().getResources().getIdentifier(attr, "attr", getContext().getPackageName()); + } + public static void setBarTheme(View getview) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { getview.setSystemUiVisibility(getNeededColorNavbar() | getNeededColorStatusbar()); @@ -162,6 +176,55 @@ public class Themes { return ColorStateList.valueOf(getAccentColor()); } // Recolor ColorStateList to accent color + public static ColorStateList themeCSL(ColorStateList csl) { + int color = csl.getDefaultColor(); + 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); + + boolean isUnselAccent = isAccentedColor(unsel); + boolean isSelAccent = isAccentedColor(sel); + + if (isUnselAccent || isSelAccent) { + + return new ColorStateList(new int[][] { + new int[]{android.R.attr.state_selected}, new int[]{-android.R.attr.state_selected} + }, new int[] {isSelAccent ? getAccentColor() : sel, isUnselAccent ? getAccentColor() : unsel}); + } + return csl; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } // Recolor ColorStateList + + public static int darken(int color, float by) { + float[] hsl = new float[3]; + ColorUtils.colorToHSL(color, hsl); + hsl[2] -= by; + hsl[2] = Math.max(0f, Math.min(hsl[2], 1f)); + return ColorUtils.HSLToColor(hsl); + } + + public static int lighten(int color, float factor) { + int red = (int) ((Color.red(color) * (1 - factor) / 255 + factor) * 255); + int green = (int) ((Color.green(color) * (1 - factor) / 255 + factor) * 255); + int blue = (int) ((Color.blue(color) * (1 - factor) / 255 + factor) * 255); + return Color.argb(Color.alpha(color), red, green, blue); + } + + public static int halfAlpha(int src) { + return ColorUtils.setAlphaComponent(src, 169); + } + + public static boolean isAccentedColor(ColorStateList target) { + return target != null && isAccentedColor(target.getDefaultColor()); + } + + public static boolean isAccentedColor(int target) { + return accentColors.contains(hex(target).toUpperCase()); + } + public static int getColor(Context context, int i) { if (isColorRefAccented(i) && isAndroidMonet()) { return getAccentColor(); diff --git a/smali/smali_classes2/android/support/v4/content/ContextCompat.smali b/smali/smali_classes2/android/support/v4/content/ContextCompat.smali index fefaacf52..6ee76cae9 100644 --- a/smali/smali_classes2/android/support/v4/content/ContextCompat.smali +++ b/smali/smali_classes2/android/support/v4/content/ContextCompat.smali @@ -358,6 +358,16 @@ .method public static b(Landroid/content/Context;I)Landroid/content/res/ColorStateList; .locals 2 + invoke-virtual {p0, p1}, Landroid/content/Context;->getColorStateList(I)Landroid/content/res/ColorStateList; + + move-result-object p0 + + invoke-static {p0}, Lru/vtosters/lite/utils/Themes;->themeCSL(Landroid/content/res/ColorStateList;)Landroid/content/res/ColorStateList; + + move-result-object p0 + + return-object p0 + .line 395 sget v0, Landroid/os/Build$VERSION;->SDK_INT:I diff --git a/smali/smali_classes5/android/support/v7/c/a/AppCompatResources.smali b/smali/smali_classes5/android/support/v7/c/a/AppCompatResources.smali index 07d1e69c1..2ba680117 100644 --- a/smali/smali_classes5/android/support/v7/c/a/AppCompatResources.smali +++ b/smali/smali_classes5/android/support/v7/c/a/AppCompatResources.smali @@ -70,6 +70,16 @@ .method public static a(Landroid/content/Context;I)Landroid/content/res/ColorStateList; .locals 2 + invoke-virtual {p0, p1}, Landroid/content/Context;->getColorStateList(I)Landroid/content/res/ColorStateList; + + move-result-object p0 + + invoke-static {p0}, Lru/vtosters/lite/utils/Themes;->themeCSL(Landroid/content/res/ColorStateList;)Landroid/content/res/ColorStateList; + + move-result-object p0 + + return-object p0 + .line 63 sget v0, Landroid/os/Build$VERSION;->SDK_INT:I