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