From de511d15a6d4451a4dde0a616a8d3d2cb8bfda79 Mon Sep 17 00:00:00 2001 From: gdlbo <41114720+gdlbo@users.noreply.github.com> Date: Tue, 6 Dec 2022 18:45:33 +0300 Subject: [PATCH] some code upgrades --- .../vk/core/drawable/RecoloredDrawable.java | 132 ++++++ .../lite/themes/hooks/ToolbarHook.java | 14 +- .../ru/vtosters/lite/utils/SSFSUtils.java | 5 +- .../vk/core/drawable/RecoloredDrawable.smali | 389 ------------------ 4 files changed, 142 insertions(+), 398 deletions(-) create mode 100644 app/src/main/java/com/vk/core/drawable/RecoloredDrawable.java delete mode 100644 smali/smali_classes2/com/vk/core/drawable/RecoloredDrawable.smali diff --git a/app/src/main/java/com/vk/core/drawable/RecoloredDrawable.java b/app/src/main/java/com/vk/core/drawable/RecoloredDrawable.java new file mode 100644 index 000000000..bd60ee6b6 --- /dev/null +++ b/app/src/main/java/com/vk/core/drawable/RecoloredDrawable.java @@ -0,0 +1,132 @@ +package com.vk.core.drawable; + +import android.content.res.ColorStateList; +import android.graphics.Canvas; +import android.graphics.ColorFilter; +import android.graphics.PorterDuff; +import android.graphics.drawable.Drawable; +import androidx.annotation.NonNull; +import ru.vtosters.lite.themes.utils.RecolorUtils; + +public class RecoloredDrawable extends Drawable implements Drawable.Callback { + private Drawable drawable; + private ColorStateList colorStateList; + private int c; + private int d; + + public RecoloredDrawable(Drawable drawable, ColorStateList colorStateList) { + this.c = 255; + this.d = 255; + try { + this.drawable = drawable.mutate(); + } catch (Exception e) { + e.printStackTrace(); + } + this.drawable.setCallback(this); + this.colorStateList = RecolorUtils.themeCSL(colorStateList); + onStateChange(new int[0]); + } + + public void a(int i) { + a(new ColorStateList(new int[][]{new int[0]}, new int[]{i})); + } + + @Override + public void draw(@NonNull Canvas canvas) { + this.drawable.draw(canvas); + } + + @Override + public int getIntrinsicHeight() { + return this.drawable.getIntrinsicHeight(); + } + + @Override + public int getIntrinsicWidth() { + return this.drawable.getIntrinsicWidth(); + } + + @Override + public int getOpacity() { + return this.drawable.getOpacity(); + } + + @Override + public void invalidateDrawable(@NonNull Drawable drawable) { + invalidateSelf(); + } + + @Override + public boolean isStateful() { + return this.colorStateList.isStateful(); + } + + @Override + protected boolean onStateChange(int[] iArr) { + super.onStateChange(iArr); + ColorStateList colorStateList = this.colorStateList; + this.drawable.setColorFilter(colorStateList.getColorForState(iArr, colorStateList.getDefaultColor()), PorterDuff.Mode.SRC_IN); + int length = iArr.length; + boolean z = false; + int i = 0; + while (true) { + if (i >= length) { + break; + } else if (iArr[i] == 0x010100a1) { + z = true; + break; + } else { + i++; + } + } + this.drawable.setState(iArr); + this.drawable.setAlpha(z ? this.c : this.d); + return true; + } + + @Override + public void scheduleDrawable(@NonNull Drawable drawable, @NonNull Runnable runnable, long j) { + scheduleSelf(runnable, j); + } + + @Override + public void setAlpha(int i) { + this.c = i; + this.d = i; + this.drawable.setAlpha(i); + } + + @Override + public void setBounds(int i, int i2, int i3, int i4) { + super.setBounds(i, i2, i3, i4); + this.drawable.setBounds(i, i2, i3, i4); + } + + @Override + public void setColorFilter(ColorFilter colorFilter) { + } + + @Override + public void unscheduleDrawable(@NonNull Drawable drawable, @NonNull Runnable runnable) { + unscheduleSelf(runnable); + } + + public void a(ColorStateList colorStateList) { + this.colorStateList = colorStateList; + onStateChange(getState()); + invalidateSelf(); + } + + public Drawable a() { + return this.drawable; + } + + public RecoloredDrawable(Drawable drawable, int i) { + this(drawable, new ColorStateList(new int[][]{new int[0]}, new int[]{i})); + } + + public RecoloredDrawable() { + this.c = 255; + this.d = 255; + } +} \ No newline at end of file diff --git a/app/src/main/java/ru/vtosters/lite/themes/hooks/ToolbarHook.java b/app/src/main/java/ru/vtosters/lite/themes/hooks/ToolbarHook.java index f9f995cc2..38c5097da 100644 --- a/app/src/main/java/ru/vtosters/lite/themes/hooks/ToolbarHook.java +++ b/app/src/main/java/ru/vtosters/lite/themes/hooks/ToolbarHook.java @@ -8,19 +8,21 @@ import ru.vtosters.lite.utils.ThemesUtils; public class ToolbarHook implements BaseHook { @Override public void inject(View view, int i, boolean z) { - if (view instanceof Toolbar) { var color = (ThemesUtils.isMilkshake() && !ThemesUtils.isDarkTheme()) ? ThemesUtils.getAccentColor() : ThemesUtils.getHeaderText(); var menu = ((Toolbar) view).getMenu(); for (int j = 0; j < menu.size(); ++j) { var item = menu.getItem(j); var icon = item.getIcon(); - if (icon instanceof RecoloredDrawable) - ((RecoloredDrawable) icon).a(color); - else - icon = new RecoloredDrawable(icon, color); - item.setIcon(icon); + if (icon != null) { + if (icon instanceof RecoloredDrawable) + ((RecoloredDrawable) icon).a(color); + else + icon = new RecoloredDrawable(icon, color); + item.setIcon(icon); + } } + } } } diff --git a/app/src/main/java/ru/vtosters/lite/utils/SSFSUtils.java b/app/src/main/java/ru/vtosters/lite/utils/SSFSUtils.java index 271687322..892709d20 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/SSFSUtils.java +++ b/app/src/main/java/ru/vtosters/lite/utils/SSFSUtils.java @@ -19,9 +19,8 @@ public class SSFSUtils { "&secret=" + AccountManagerUtils.getUserSecret() + "&proxy=" + getUserProxy() + "&lang=" + getLocale() + - "&vt=1&vksans=" + isVKSansEnabled() + - "&vt_version=" + getBuildNumber() + - "&useragent=" + Base64Utils.encodeValue(Base64Utils.encode(Network.l.c().a()) + + "&vt=1" + + "&useragent=" + Base64Utils.encodeValue(Base64Utils.encode(Network.l.c().a())) + "&vt_debug=" + isDEVModEnabled(); } diff --git a/smali/smali_classes2/com/vk/core/drawable/RecoloredDrawable.smali b/smali/smali_classes2/com/vk/core/drawable/RecoloredDrawable.smali deleted file mode 100644 index 5c0ad4e90..000000000 --- a/smali/smali_classes2/com/vk/core/drawable/RecoloredDrawable.smali +++ /dev/null @@ -1,389 +0,0 @@ -.class public Lcom/vk/core/drawable/RecoloredDrawable; -.super Landroid/graphics/drawable/Drawable; -.source "RecoloredDrawable.java" - -# interfaces -.implements Landroid/graphics/drawable/Drawable$Callback; - - -# instance fields -.field private a:Landroid/graphics/drawable/Drawable; - -.field private b:Landroid/content/res/ColorStateList; - -.field private c:I - -.field private d:I - - -# direct methods -.method public constructor ()V - .locals 1 - - .line 9 - invoke-direct {p0}, Landroid/graphics/drawable/Drawable;->()V - - const/16 v0, 0xff - - .line 10 - iput v0, p0, Lcom/vk/core/drawable/RecoloredDrawable;->c:I - - .line 11 - iput v0, p0, Lcom/vk/core/drawable/RecoloredDrawable;->d:I - - return-void -.end method - -.method public constructor (Landroid/graphics/drawable/Drawable;I)V - .locals 5 - - .line 8 - new-instance v0, Landroid/content/res/ColorStateList; - - const/4 v1, 0x1 - - new-array v2, v1, [[I - - const/4 v3, 0x0 - - new-array v4, v3, [I - - aput-object v4, v2, v3 - - new-array v1, v1, [I - - aput p2, v1, v3 - - invoke-direct {v0, v2, v1}, Landroid/content/res/ColorStateList;->([[I[I)V - - invoke-direct {p0, p1, v0}, Lcom/vk/core/drawable/RecoloredDrawable;->(Landroid/graphics/drawable/Drawable;Landroid/content/res/ColorStateList;)V - - return-void -.end method - -.method public constructor (Landroid/graphics/drawable/Drawable;Landroid/content/res/ColorStateList;)V - .locals 1 - - .line 1 - invoke-direct {p0}, Landroid/graphics/drawable/Drawable;->()V - - const/16 v0, 0xff - - .line 2 - iput v0, p0, Lcom/vk/core/drawable/RecoloredDrawable;->c:I - - .line 3 - iput v0, p0, Lcom/vk/core/drawable/RecoloredDrawable;->d:I - - .line 4 - invoke-virtual {p1}, Landroid/graphics/drawable/Drawable;->mutate()Landroid/graphics/drawable/Drawable; - - move-result-object p1 - - iput-object p1, p0, Lcom/vk/core/drawable/RecoloredDrawable;->a:Landroid/graphics/drawable/Drawable; - - .line 5 - iget-object p1, p0, Lcom/vk/core/drawable/RecoloredDrawable;->a:Landroid/graphics/drawable/Drawable; - - invoke-virtual {p1, p0}, Landroid/graphics/drawable/Drawable;->setCallback(Landroid/graphics/drawable/Drawable$Callback;)V - - invoke-static {p2}, Lru/vtosters/lite/themes/utils/RecolorUtils;->themeCSL(Landroid/content/res/ColorStateList;)Landroid/content/res/ColorStateList; - - move-result-object p2 - - .line 6 - iput-object p2, p0, Lcom/vk/core/drawable/RecoloredDrawable;->b:Landroid/content/res/ColorStateList; - - const/4 p1, 0x0 - - new-array p1, p1, [I - - .line 7 - invoke-virtual {p0, p1}, Lcom/vk/core/drawable/RecoloredDrawable;->onStateChange([I)Z - - return-void -.end method - - -# virtual methods -.method public a()Landroid/graphics/drawable/Drawable; - .locals 1 - - .line 5 - iget-object v0, p0, Lcom/vk/core/drawable/RecoloredDrawable;->a:Landroid/graphics/drawable/Drawable; - - return-object v0 -.end method - -.method public a(I)V - .locals 5 - - .line 1 - new-instance v0, Landroid/content/res/ColorStateList; - - const/4 v1, 0x1 - - new-array v2, v1, [[I - - const/4 v3, 0x0 - - new-array v4, v3, [I - - aput-object v4, v2, v3 - - new-array v1, v1, [I - - aput p1, v1, v3 - - invoke-direct {v0, v2, v1}, Landroid/content/res/ColorStateList;->([[I[I)V - - invoke-virtual {p0, v0}, Lcom/vk/core/drawable/RecoloredDrawable;->a(Landroid/content/res/ColorStateList;)V - - return-void -.end method - -.method public a(Landroid/content/res/ColorStateList;)V - .locals 0 - - .line 2 - iput-object p1, p0, Lcom/vk/core/drawable/RecoloredDrawable;->b:Landroid/content/res/ColorStateList; - - .line 3 - invoke-virtual {p0}, Landroid/graphics/drawable/Drawable;->getState()[I - - move-result-object p1 - - invoke-virtual {p0, p1}, Lcom/vk/core/drawable/RecoloredDrawable;->onStateChange([I)Z - - .line 4 - invoke-virtual {p0}, Landroid/graphics/drawable/Drawable;->invalidateSelf()V - - return-void -.end method - -.method public draw(Landroid/graphics/Canvas;)V - .locals 1 - .param p1 # Landroid/graphics/Canvas; - .annotation build Landroidx/annotation/NonNull; - .end annotation - .end param - - .line 1 - iget-object v0, p0, Lcom/vk/core/drawable/RecoloredDrawable;->a:Landroid/graphics/drawable/Drawable; - - invoke-virtual {v0, p1}, Landroid/graphics/drawable/Drawable;->draw(Landroid/graphics/Canvas;)V - - return-void -.end method - -.method public getIntrinsicHeight()I - .locals 1 - - .line 1 - iget-object v0, p0, Lcom/vk/core/drawable/RecoloredDrawable;->a:Landroid/graphics/drawable/Drawable; - - invoke-virtual {v0}, Landroid/graphics/drawable/Drawable;->getIntrinsicHeight()I - - move-result v0 - - return v0 -.end method - -.method public getIntrinsicWidth()I - .locals 1 - - .line 1 - iget-object v0, p0, Lcom/vk/core/drawable/RecoloredDrawable;->a:Landroid/graphics/drawable/Drawable; - - invoke-virtual {v0}, Landroid/graphics/drawable/Drawable;->getIntrinsicWidth()I - - move-result v0 - - return v0 -.end method - -.method public getOpacity()I - .locals 1 - - .line 1 - iget-object v0, p0, Lcom/vk/core/drawable/RecoloredDrawable;->a:Landroid/graphics/drawable/Drawable; - - invoke-virtual {v0}, Landroid/graphics/drawable/Drawable;->getOpacity()I - - move-result v0 - - return v0 -.end method - -.method public invalidateDrawable(Landroid/graphics/drawable/Drawable;)V - .locals 0 - .param p1 # Landroid/graphics/drawable/Drawable; - .annotation build Landroidx/annotation/NonNull; - .end annotation - .end param - - .line 1 - invoke-virtual {p0}, Landroid/graphics/drawable/Drawable;->invalidateSelf()V - - return-void -.end method - -.method public isStateful()Z - .locals 1 - - .line 1 - iget-object v0, p0, Lcom/vk/core/drawable/RecoloredDrawable;->b:Landroid/content/res/ColorStateList; - - invoke-virtual {v0}, Landroid/content/res/ColorStateList;->isStateful()Z - - move-result v0 - - return v0 -.end method - -.method protected onStateChange([I)Z - .locals 6 - - .line 1 - invoke-super {p0, p1}, Landroid/graphics/drawable/Drawable;->onStateChange([I)Z - - .line 2 - iget-object v0, p0, Lcom/vk/core/drawable/RecoloredDrawable;->b:Landroid/content/res/ColorStateList; - - invoke-virtual {v0}, Landroid/content/res/ColorStateList;->getDefaultColor()I - - move-result v1 - - invoke-virtual {v0, p1, v1}, Landroid/content/res/ColorStateList;->getColorForState([II)I - - move-result v0 - - .line 3 - iget-object v1, p0, Lcom/vk/core/drawable/RecoloredDrawable;->a:Landroid/graphics/drawable/Drawable; - - sget-object v2, Landroid/graphics/PorterDuff$Mode;->SRC_IN:Landroid/graphics/PorterDuff$Mode; - - invoke-virtual {v1, v0, v2}, Landroid/graphics/drawable/Drawable;->setColorFilter(ILandroid/graphics/PorterDuff$Mode;)V - - .line 4 - array-length v0, p1 - - const/4 v1, 0x0 - - const/4 v2, 0x0 - - :goto_0 - const/4 v3, 0x1 - - if-ge v2, v0, :cond_1 - - aget v4, p1, v2 - - const v5, 0x10100a1 - - if-ne v4, v5, :cond_0 - - const/4 v1, 0x1 - - goto :goto_1 - - :cond_0 - add-int/lit8 v2, v2, 0x1 - - goto :goto_0 - - .line 5 - :cond_1 - :goto_1 - iget-object v0, p0, Lcom/vk/core/drawable/RecoloredDrawable;->a:Landroid/graphics/drawable/Drawable; - - invoke-virtual {v0, p1}, Landroid/graphics/drawable/Drawable;->setState([I)Z - - .line 6 - iget-object p1, p0, Lcom/vk/core/drawable/RecoloredDrawable;->a:Landroid/graphics/drawable/Drawable; - - if-eqz v1, :cond_2 - - iget v0, p0, Lcom/vk/core/drawable/RecoloredDrawable;->c:I - - goto :goto_2 - - :cond_2 - iget v0, p0, Lcom/vk/core/drawable/RecoloredDrawable;->d:I - - :goto_2 - invoke-virtual {p1, v0}, Landroid/graphics/drawable/Drawable;->setAlpha(I)V - - return v3 -.end method - -.method public scheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;J)V - .locals 0 - .param p1 # Landroid/graphics/drawable/Drawable; - .annotation build Landroidx/annotation/NonNull; - .end annotation - .end param - .param p2 # Ljava/lang/Runnable; - .annotation build Landroidx/annotation/NonNull; - .end annotation - .end param - - .line 1 - invoke-virtual {p0, p2, p3, p4}, Landroid/graphics/drawable/Drawable;->scheduleSelf(Ljava/lang/Runnable;J)V - - return-void -.end method - -.method public setAlpha(I)V - .locals 1 - - .line 1 - iput p1, p0, Lcom/vk/core/drawable/RecoloredDrawable;->c:I - - .line 2 - iput p1, p0, Lcom/vk/core/drawable/RecoloredDrawable;->d:I - - .line 3 - iget-object v0, p0, Lcom/vk/core/drawable/RecoloredDrawable;->a:Landroid/graphics/drawable/Drawable; - - invoke-virtual {v0, p1}, Landroid/graphics/drawable/Drawable;->setAlpha(I)V - - return-void -.end method - -.method public setBounds(IIII)V - .locals 1 - - .line 1 - invoke-super {p0, p1, p2, p3, p4}, Landroid/graphics/drawable/Drawable;->setBounds(IIII)V - - .line 2 - iget-object v0, p0, Lcom/vk/core/drawable/RecoloredDrawable;->a:Landroid/graphics/drawable/Drawable; - - invoke-virtual {v0, p1, p2, p3, p4}, Landroid/graphics/drawable/Drawable;->setBounds(IIII)V - - return-void -.end method - -.method public setColorFilter(Landroid/graphics/ColorFilter;)V - .locals 0 - - return-void -.end method - -.method public unscheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;)V - .locals 0 - .param p1 # Landroid/graphics/drawable/Drawable; - .annotation build Landroidx/annotation/NonNull; - .end annotation - .end param - .param p2 # Ljava/lang/Runnable; - .annotation build Landroidx/annotation/NonNull; - .end annotation - .end param - - .line 1 - invoke-virtual {p0, p2}, Landroid/graphics/drawable/Drawable;->unscheduleSelf(Ljava/lang/Runnable;)V - - return-void -.end method