From c481d5fca90e114b3fc80be4300b377d683bf1cf Mon Sep 17 00:00:00 2001
From: gdlbo <41114720+gdlbo@users.noreply.github.com>
Date: Fri, 5 Aug 2022 19:28:27 +0300
Subject: [PATCH] some code imp
---
.../im/ui/views/dialogs/DialogItemView.java | 2 -
.../vtosters/lite/hooks/PicRoundingHook.java | 38 +++++++++++++++++
.../ui/dialogs/RoundingSeekbarDialog.java | 41 +++++++++++++++++++
.../lite/ui/fragments/MediaFragment.java | 6 +++
.../ru/vtosters/lite/utils/AndroidUtils.java | 2 +-
smali/res/xml/preferences_media.xml | 3 ++
.../drawee/generic/RoundingParams.smali | 24 +++--------
7 files changed, 95 insertions(+), 21 deletions(-)
create mode 100644 app/src/main/java/ru/vtosters/lite/hooks/PicRoundingHook.java
create mode 100644 app/src/main/java/ru/vtosters/lite/ui/dialogs/RoundingSeekbarDialog.java
diff --git a/app/src/main/java/com/vk/im/ui/views/dialogs/DialogItemView.java b/app/src/main/java/com/vk/im/ui/views/dialogs/DialogItemView.java
index 6b4c70675..fcea16294 100644
--- a/app/src/main/java/com/vk/im/ui/views/dialogs/DialogItemView.java
+++ b/app/src/main/java/com/vk/im/ui/views/dialogs/DialogItemView.java
@@ -1,7 +1,6 @@
package com.vk.im.ui.views.dialogs;
import static com.vk.im.ui.d.vkim_administration_title;
-
import static ru.vtosters.lite.utils.ThemesUtils.getAccentColor;
import android.content.Context;
@@ -23,7 +22,6 @@ import androidx.annotation.ColorInt;
import androidx.appcompat.widget.AppCompatImageView;
import com.vk.core.extensions.AnimationExtKt;
-import com.vk.core.ui.themes.VKThemeHelper;
import com.vk.core.util.ContextExtKt;
import com.vk.core.util.Screen;
import com.vk.core.utils.VerifyInfoHelper;
diff --git a/app/src/main/java/ru/vtosters/lite/hooks/PicRoundingHook.java b/app/src/main/java/ru/vtosters/lite/hooks/PicRoundingHook.java
new file mode 100644
index 000000000..25d03a6a8
--- /dev/null
+++ b/app/src/main/java/ru/vtosters/lite/hooks/PicRoundingHook.java
@@ -0,0 +1,38 @@
+package ru.vtosters.lite.hooks;
+import static ru.vtosters.lite.utils.Preferences.preferences;
+
+import com.facebook.drawee.generic.RoundingParams;
+
+import ru.vtosters.lite.utils.AndroidUtils;
+
+public class PicRoundingHook{
+ private static final int pref = preferences.getInt("pic_rounding", 0);
+
+ public static RoundingParams inject() {
+ if (pref > 0) {
+ return customParams();
+ }
+
+ return new RoundingParams().a(true);
+ }
+
+ public static RoundingParams inject(float orig) {
+ if (pref > 0) {
+ return customParams();
+ }
+
+ return new RoundingParams().b(orig);
+ }
+
+ public static RoundingParams inject(float orig, float orig2, float orig3, float orig4) {
+ if (pref > 0) {
+ orig = orig2 = orig3 = orig4 = AndroidUtils.dp2px(pref);
+ }
+
+ return new RoundingParams().a(orig, orig2, orig3, orig4);
+ }
+
+ private static RoundingParams customParams(){
+ return RoundingParams.b(AndroidUtils.dp2px(pref), AndroidUtils.dp2px(pref), AndroidUtils.dp2px(pref), AndroidUtils.dp2px(pref));
+ }
+}
diff --git a/app/src/main/java/ru/vtosters/lite/ui/dialogs/RoundingSeekbarDialog.java b/app/src/main/java/ru/vtosters/lite/ui/dialogs/RoundingSeekbarDialog.java
new file mode 100644
index 000000000..a6c7189a0
--- /dev/null
+++ b/app/src/main/java/ru/vtosters/lite/ui/dialogs/RoundingSeekbarDialog.java
@@ -0,0 +1,41 @@
+package ru.vtosters.lite.ui.dialogs;
+import static ru.vtosters.lite.utils.AndroidUtils.dp2px;
+import static ru.vtosters.lite.utils.AndroidUtils.edit;
+import static ru.vtosters.lite.utils.AndroidUtils.getPreferences;
+import static ru.vtosters.lite.utils.LifecycleUtils.restartApplicationWithTimer;
+
+import android.content.Context;
+import android.widget.LinearLayout;
+import android.widget.SeekBar;
+
+
+import com.vk.core.dialogs.alert.VkAlertDialog;
+
+import ru.vtosters.lite.utils.LayoutUtils;
+
+public class RoundingSeekbarDialog{
+ public static void dialog(Context context) {
+ LinearLayout mContainer = new LinearLayout(context);
+ SeekBar seek = new SeekBar(context);
+ seek.setMax(10);
+ seek.setKeyProgressIncrement(0);
+ seek.setProgress(getPreferences().getInt("pic_rounding", 0));
+
+ seek.setPadding(dp2px(16f), dp2px(16f), dp2px(16f), dp2px(16f));
+
+ mContainer.addView(seek, LayoutUtils.createLinear(-1, -2));
+
+ VkAlertDialog.Builder builder = new VkAlertDialog.Builder(context);
+ builder.setTitle("Выберите размер закругления углов");
+ builder.setMessage("Для отключения функции закругления углов введите 0");
+ builder.setCancelable(true);
+ builder.setNegativeButton("Отмена", null);
+ builder.setView(mContainer);
+ builder.setPositiveButton("Применить", (dialog, which) -> {
+ edit().putInt("pic_rounding", seek.getProgress()).commit();
+ restartApplicationWithTimer();
+ });
+
+ builder.show();
+ }
+}
diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/MediaFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/MediaFragment.java
index 2c8b6f9bc..1d4ebd78f 100644
--- a/app/src/main/java/ru/vtosters/lite/ui/fragments/MediaFragment.java
+++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/MediaFragment.java
@@ -40,6 +40,7 @@ import okhttp3.Request;
import ru.vtosters.lite.downloaders.VideoDownloader;
import ru.vtosters.lite.music.Scrobbler;
import ru.vtosters.lite.ui.adapters.ImagineArrayAdapter;
+import ru.vtosters.lite.ui.dialogs.RoundingSeekbarDialog;
public class MediaFragment extends MaterialPreferenceToolbarFragment {
public static void download(Context ctx) {
@@ -162,6 +163,11 @@ public class MediaFragment extends MaterialPreferenceToolbarFragment {
return true;
});
+ findPreference("customrounding").setOnPreferenceClickListener(preference -> {
+ RoundingSeekbarDialog.dialog(getContext());
+ return true;
+ });
+
if (isLoggedIn()) {
findPreference("lastfm_auth").setSummary("Вы авторизованы как " + Scrobbler.getUserName());
} else {
diff --git a/app/src/main/java/ru/vtosters/lite/utils/AndroidUtils.java b/app/src/main/java/ru/vtosters/lite/utils/AndroidUtils.java
index 0e8bffa8d..69fcced1a 100644
--- a/app/src/main/java/ru/vtosters/lite/utils/AndroidUtils.java
+++ b/app/src/main/java/ru/vtosters/lite/utils/AndroidUtils.java
@@ -42,7 +42,7 @@ public class AndroidUtils {
@NonNull
public static Context getGlobalContext() {
try {
- return (Context) ReflectionUtils.invokeStaticMethod("android.app.AppGlobals", "getInitialApplication");
+ return ReflectionUtils.invokeStaticMethod("android.app.AppGlobals", "getInitialApplication");
} catch (Exception e) {
e.printStackTrace();
}
diff --git a/smali/res/xml/preferences_media.xml b/smali/res/xml/preferences_media.xml
index 4260ce02a..e8cec0ee1 100644
--- a/smali/res/xml/preferences_media.xml
+++ b/smali/res/xml/preferences_media.xml
@@ -89,6 +89,9 @@
+
inject(FFFF)Lcom/facebook/drawee/generic/RoundingParams;
- invoke-direct {v0}, Lcom/facebook/drawee/generic/RoundingParams;->()V
-
- .line 5
- invoke-virtual {v0, p0, p1, p2, p3}, Lcom/facebook/drawee/generic/RoundingParams;->a(FFFF)Lcom/facebook/drawee/generic/RoundingParams;
+ move-result-object v0
return-object v0
.end method
@@ -88,12 +84,9 @@
.method public static d(F)Lcom/facebook/drawee/generic/RoundingParams;
.locals 1
- .line 2
- new-instance v0, Lcom/facebook/drawee/generic/RoundingParams;
+ invoke-static {p0}, Lru/vtosters/lite/hooks/PicRoundingHook;->inject(F)Lcom/facebook/drawee/generic/RoundingParams;
- invoke-direct {v0}, Lcom/facebook/drawee/generic/RoundingParams;->()V
-
- invoke-virtual {v0, p0}, Lcom/facebook/drawee/generic/RoundingParams;->b(F)Lcom/facebook/drawee/generic/RoundingParams;
+ move-result-object v0
return-object v0
.end method
@@ -101,14 +94,9 @@
.method public static i()Lcom/facebook/drawee/generic/RoundingParams;
.locals 2
- .line 1
- new-instance v0, Lcom/facebook/drawee/generic/RoundingParams;
+ invoke-static {}, Lru/vtosters/lite/hooks/PicRoundingHook;->inject()Lcom/facebook/drawee/generic/RoundingParams;
- invoke-direct {v0}, Lcom/facebook/drawee/generic/RoundingParams;->()V
-
- const/4 v1, 0x1
-
- invoke-virtual {v0, v1}, Lcom/facebook/drawee/generic/RoundingParams;->a(Z)Lcom/facebook/drawee/generic/RoundingParams;
+ move-result-object v0
return-object v0
.end method