some code upgrades

This commit is contained in:
gdlbo
2022-12-06 18:45:33 +03:00
parent 6b88996962
commit de511d15a6
4 changed files with 142 additions and 398 deletions
@@ -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;
}
}
@@ -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);
}
}
}
}
}
@@ -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();
}
@@ -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 <init>()V
.locals 1
.line 9
invoke-direct {p0}, Landroid/graphics/drawable/Drawable;-><init>()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 <init>(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;-><init>([[I[I)V
invoke-direct {p0, p1, v0}, Lcom/vk/core/drawable/RecoloredDrawable;-><init>(Landroid/graphics/drawable/Drawable;Landroid/content/res/ColorStateList;)V
return-void
.end method
.method public constructor <init>(Landroid/graphics/drawable/Drawable;Landroid/content/res/ColorStateList;)V
.locals 1
.line 1
invoke-direct {p0}, Landroid/graphics/drawable/Drawable;-><init>()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;-><init>([[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