diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/OtherFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/OtherFragment.java index afe88f157..25b3d19e6 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/OtherFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/OtherFragment.java @@ -8,31 +8,49 @@ import static ru.vtosters.lite.ui.components.BackupManager.backupSettings; import static ru.vtosters.lite.ui.components.BackupManager.deletePrefs; import static ru.vtosters.lite.ui.components.BackupManager.restoreBackup; import static ru.vtosters.lite.utils.AccountManagerUtils.getUserToken; +import static ru.vtosters.lite.utils.AndroidUtils.dp2px; +import static ru.vtosters.lite.utils.AndroidUtils.getDefaultPrefs; import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier; +import static ru.vtosters.lite.utils.AndroidUtils.getPrefsValue; import static ru.vtosters.lite.utils.CacheUtils.deleteCache; import static ru.vtosters.lite.utils.LifecycleUtils.restartApplication; +import static ru.vtosters.lite.utils.ThemesUtils.getAccentColor; +import static ru.vtosters.lite.utils.ThemesUtils.getTextAttr; +import android.annotation.SuppressLint; import android.app.Activity; import android.content.ClipData; import android.content.ClipboardManager; import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.util.Log; +import android.util.TypedValue; import android.webkit.WebView; import android.widget.ArrayAdapter; +import android.widget.RadioButton; +import android.widget.RadioGroup; import android.widget.Toast; +import androidx.appcompat.app.AlertDialog; +import androidx.appcompat.view.ContextThemeWrapper; import androidx.preference.Preference; import com.vk.auth.api.VKAccount; import com.vk.core.dialogs.alert.VkAlertDialog; import com.vk.core.util.ToastUtils; +import com.vk.im.engine.ImEngine1; +import com.vk.im.engine.ImEngineExt; +import com.vk.im.engine.models.Sticker; import com.vk.im.ui.providers.audiomsg.ImAudioMsgPlayerProvider; import com.vk.im.ui.providers.audiomsg.PlayerActionSources; import com.vk.imageloader.VKImageLoader; +import com.vk.media.player.cache.AutoPlayCacheHolder; +import com.vk.mediastore.MediaStorage; import com.vk.pushes.PushSubscriber; +import com.vk.stickers.Stickers; import com.vtosters.lite.auth.VKAccountManager; import com.vtosters.lite.general.fragments.MaterialPreferenceToolbarFragment; import com.vtosters.lite.im.ImEngineProvider; @@ -40,12 +58,12 @@ import com.vtosters.lite.im.ImEngineProvider; import java.io.IOException; import b.h.g.m.FileUtils; +import ru.vtosters.lite.music.Scrobbler; import ru.vtosters.lite.ui.activities.VKAdminTokenActivity; import ru.vtosters.lite.ui.components.BackupManager; import ru.vtosters.lite.utils.AndroidUtils; public class OtherFragment extends MaterialPreferenceToolbarFragment { - private static final int VK_ADMIN_TOKEN_REQUEST_CODE = 1; @Override @@ -74,8 +92,37 @@ public class OtherFragment extends MaterialPreferenceToolbarFragment { findPreference("applicationstop").setOnPreferenceClickListener(new b()); findPreference("tokencopy").setOnPreferenceClickListener(new c()); findPreference("applicationrestart").setOnPreferenceClickListener(new d()); - findPreference("clearcache").setOnPreferenceClickListener(new e()); - findPreference("stickfix").setOnPreferenceClickListener(new f()); + findPreference("clearcache").setOnPreferenceClickListener(preference -> { + cacheCleanDialog(); + return true; + }); + findPreference("autoclearcache").setOnPreferenceClickListener(preference -> { + cacheAutoCleanDialog(); + return true; + }); + + var pref = getDefaultPrefs().getString("autoclearcache", "Default"); + switch(pref) { + case "Default": + findPreference("autoclearcache").setSummary("Не включено"); + break; + case "100mb": + findPreference("autoclearcache").setSummary("Очищать кеш при не менее 100 Мб"); + break; + case "500mb": + findPreference("autoclearcache").setSummary("Очищать кеш при не менее 500 Мб"); + break; + case "1gb": + findPreference("autoclearcache").setSummary("Очищать кеш при не менее 1 Гб"); + break; + case "2gb": + findPreference("autoclearcache").setSummary("Очищать кеш при не менее 2 Гб"); + break; + case "5gb": + findPreference("autoclearcache").setSummary("Очищать кеш при не менее 5 Гб"); + break; + } + findPreference("deleteprefs").setOnPreferenceClickListener(new deleteprefs()); findPreference("saveonlines").setOnPreferenceClickListener(new onlines()); @@ -94,6 +141,140 @@ public class OtherFragment extends MaterialPreferenceToolbarFragment { } } + @SuppressLint({"CommitPrefEdits", "SetTextI18n"}) + private void cacheAutoCleanDialog() { + var val = getDefaultPrefs().getInt("autoclearcache_size", 0); + RadioGroup rg = new RadioGroup(getContext()); + + rg.setPadding(dp2px(18f), dp2px(12f), dp2px(18f), 0); + + RadioButton zero = new RadioButton(new ContextThemeWrapper(getContext(), com.vtosters.lite.R.style.Widget_AppCompat_CompoundButton_RadioButton)); + RadioButton one = new RadioButton(new ContextThemeWrapper(getContext(), com.vtosters.lite.R.style.Widget_AppCompat_CompoundButton_RadioButton)); + RadioButton two = new RadioButton(new ContextThemeWrapper(getContext(), com.vtosters.lite.R.style.Widget_AppCompat_CompoundButton_RadioButton)); + RadioButton three = new RadioButton(new ContextThemeWrapper(getContext(), com.vtosters.lite.R.style.Widget_AppCompat_CompoundButton_RadioButton)); + RadioButton four = new RadioButton(new ContextThemeWrapper(getContext(), com.vtosters.lite.R.style.Widget_AppCompat_CompoundButton_RadioButton)); + RadioButton five = new RadioButton(new ContextThemeWrapper(getContext(), com.vtosters.lite.R.style.Widget_AppCompat_CompoundButton_RadioButton)); + + rg.addView(zero); + rg.addView(one); + rg.addView(two); + rg.addView(three); + rg.addView(four); + rg.addView(five); + + zero.setTextSize(TypedValue.COMPLEX_UNIT_PX, dp2px(14f)); + one.setTextSize(TypedValue.COMPLEX_UNIT_PX, dp2px(14f)); + two.setTextSize(TypedValue.COMPLEX_UNIT_PX, dp2px(14f)); + three.setTextSize(TypedValue.COMPLEX_UNIT_PX, dp2px(14f)); + four.setTextSize(TypedValue.COMPLEX_UNIT_PX, dp2px(14f)); + five.setTextSize(TypedValue.COMPLEX_UNIT_PX, dp2px(14f)); + + zero.setText(AndroidUtils.getString("autoclearcachedisabled")); + one.setText("100 MB"); + two.setText("500 MB"); + three.setText("1 GB"); + four.setText("2 GB"); + five.setText("5 GB"); + + zero.setTextColor(getTextAttr()); + one.setTextColor(getTextAttr()); + two.setTextColor(getTextAttr()); + three.setTextColor(getTextAttr()); + four.setTextColor(getTextAttr()); + five.setTextColor(getTextAttr()); + + zero.setChecked(val == 0); + one.setChecked(val == 1); + two.setChecked(val == 2); + three.setChecked(val == 3); + four.setChecked(val == 4); + five.setChecked(val == 5); + + VkAlertDialog.Builder builder = new VkAlertDialog.Builder(getContext()); + builder.setTitle("Очистка кеша"); + builder.setMessage("Выберите объём кеша для очистки"); + builder.setCancelable(true); + builder.setNegativeButton("Отмена", null); + builder.setView(rg); + builder.setPositiveButton("Сохранить", (dialog, which) -> { + var pref = getDefaultPrefs().edit(); + var checked = rg.getCheckedRadioButtonId(); + + if (checked == zero.getId()) { + pref.putInt("autoclearcache_size", 0); + pref.putString("autoclearcache", "Default"); + } else if (checked == one.getId()) { + pref.putInt("autoclearcache_size", 1); + pref.putString("autoclearcache", "100mb"); + } else if (checked == two.getId()) { + pref.putInt("autoclearcache_size", 2); + pref.putString("autoclearcache", "500mb"); + } else if (checked == three.getId()) { + pref.putInt("autoclearcache_size", 3); + pref.putString("autoclearcache", "1gb"); + } else if (checked == four.getId()) { + pref.putInt("autoclearcache_size", 4); + pref.putString("autoclearcache", "2gb"); + } else if (checked == five.getId()) { + pref.putInt("autoclearcache_size", 5); + pref.putString("autoclearcache", "5gb"); + } + + pref.apply(); + }); + builder.show(); + } + + private void cacheCleanDialog() { + VkAlertDialog.Builder builder = new VkAlertDialog.Builder(getContext()); + builder.setTitle("Выберите что вы хотите очистить"); + builder.setItems(new String[]{"Очистить весь кэш", "Очистить кеш стикеров", "Очистить кеш изображений", "Очистить кеш видео", "Очистить кеш сообщений", "Очистить кеш WebView" }, (dialog, which) -> { + switch(which) { + case 0: { + SharedPreferences prefs2 = getContext().getSharedPreferences("stickers_storage", Context.MODE_PRIVATE); + prefs2.edit().clear().commit(); + new WebView(getActivity()).clearCache(true); + VKImageLoader.e(); + ImEngineProvider.b().a(); + ImAudioMsgPlayerProvider.b().e(PlayerActionSources.a); + ImAudioMsgPlayerProvider.b().d(PlayerActionSources.a); + FileUtils.l(); + Stickers.l.c(); + ImEngineExt.a(ImEngine1.a()); + AutoPlayCacheHolder.d.a(); + MediaStorage.a(); + deleteCache(); + break; + } + case 1: { + SharedPreferences prefs2 = getContext().getSharedPreferences("stickers_storage", Context.MODE_PRIVATE); + prefs2.edit().clear().commit(); + Stickers.l.c(); + break; + } + case 2: + VKImageLoader.e(); + ImEngineExt.a(ImEngine1.a()); + break; + case 3: + AutoPlayCacheHolder.d.a(); + MediaStorage.a(); + break; + case 4: + ImEngineProvider.b().a(); + ImAudioMsgPlayerProvider.b().e(PlayerActionSources.a); + ImAudioMsgPlayerProvider.b().d(PlayerActionSources.a); + break; + case 5: + new WebView(getActivity()).clearCache(true); + break; + } + + Toast.makeText(getContext(), "Кеш очищен", LENGTH_SHORT).show(); + }); + builder.create().show(); + } + public static class d implements Preference.OnPreferenceClickListener { @Override // android.support.v7.preference.Preference.c public boolean onPreferenceClick(Preference preference) { @@ -145,23 +326,6 @@ public class OtherFragment extends MaterialPreferenceToolbarFragment { } } - public class e implements Preference.OnPreferenceClickListener { - @Override // android.support.v7.preference.Preference.c - public boolean onPreferenceClick(Preference preference) { - SharedPreferences prefs2 = getContext().getSharedPreferences("stickers_storage", Context.MODE_PRIVATE); - prefs2.edit().clear().commit(); - new WebView(getActivity()).clearCache(true); - VKImageLoader.e(); - ImEngineProvider.b().a(); - ImAudioMsgPlayerProvider.b().e(PlayerActionSources.a); - ImAudioMsgPlayerProvider.b().d(PlayerActionSources.a); - FileUtils.l(); - deleteCache(); - ToastUtils.a(AndroidUtils.getString("cachecleaned")); - return true; - } - } - public class a implements Preference.OnPreferenceClickListener { @Override // android.support.v7.preference.Preference.c public boolean onPreferenceClick(Preference preference) { @@ -177,19 +341,7 @@ public class OtherFragment extends MaterialPreferenceToolbarFragment { return true; } } - - public class f implements Preference.OnPreferenceClickListener { - @Override // android.support.v7.preference.Preference.c - public boolean onPreferenceClick(Preference preference) { - SharedPreferences prefs2 = getContext().getSharedPreferences("stickers_storage", Context.MODE_PRIVATE); - prefs2.edit().clear().commit(); - deleteCache(); - ToastUtils.a(AndroidUtils.getString("cachecleaned")); - return true; - } - } - - public class saveprefs implements Preference.OnPreferenceClickListener { + public static class saveprefs implements Preference.OnPreferenceClickListener { saveprefs() { } diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/VTSettings.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/VTSettings.java index 3fd0d395b..9a57ec269 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/VTSettings.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/VTSettings.java @@ -385,12 +385,6 @@ public class VTSettings extends MaterialPreferenceToolbarFragment { return false; }); - addListPreferenceIcon(this, "clearcache", "Default", AndroidUtils.getString("autoclearcache"), !DoNotUseOldIcons() ? "ic_delete_24" : "ic_delete_outline_28", getCachesumm(), new CharSequence[]{ - AndroidUtils.getString("autoclearcachedisabled"), "100 MB", "500 MB", "1 GB", "2 GB", "5 GB" - }, new String[]{ - "Default", "100mb", "500mb", "1gb", "2gb", "5gb" - }, null); - addPreference(this, "", AndroidUtils.getString("vtlother"), othersumm, !DoNotUseOldIcons() ? "ic_more_24" : "ic_more_horizontal_28", preference -> { Context context = getContext(); Intent a2 = new Navigator(OtherFragment.class).b(context); diff --git a/smali/res/values-ru/strings.xml b/smali/res/values-ru/strings.xml index 48bbe0915..461126a8b 100644 --- a/smali/res/values-ru/strings.xml +++ b/smali/res/values-ru/strings.xml @@ -5497,9 +5497,9 @@ Socks Прокси Static Домен Сообщить о баге - Автоочистка кэша - Размер кэша: - Не очищать кэш + Автоочистка кеша + Размер кеша: + Не очищать кеш Репорты багов помогают нам их исправлять Перезапустите приложение Сохраненные сообщения diff --git a/smali/res/xml/preferences_general.xml b/smali/res/xml/preferences_general.xml index 0929362fe..4811f8862 100644 --- a/smali/res/xml/preferences_general.xml +++ b/smali/res/xml/preferences_general.xml @@ -95,17 +95,9 @@ android:summary="" android:title="@string/sett_clear_audio_cache" /> - - + android:enabled="false" + android:summary="Они переехали в настройки мода во вкладку Другое" + android:title="Где настройки кеша?" /> \ No newline at end of file diff --git a/smali/res/xml/preferences_general_milkshake.xml b/smali/res/xml/preferences_general_milkshake.xml index 77a3bb8bf..fd145a56c 100644 --- a/smali/res/xml/preferences_general_milkshake.xml +++ b/smali/res/xml/preferences_general_milkshake.xml @@ -95,16 +95,8 @@ android:summary="" android:title="@string/sett_clear_audio_cache" /> - - + android:enabled="false" + android:summary="Они переехали в настройки мода во вкладку Другое" + android:title="Где настройки кеша?" /> \ No newline at end of file diff --git a/smali/res/xml/preferences_other.xml b/smali/res/xml/preferences_other.xml index 41ba21517..eab05dfdb 100644 --- a/smali/res/xml/preferences_other.xml +++ b/smali/res/xml/preferences_other.xml @@ -6,19 +6,13 @@ android:summary="@string/firebasefixsum" android:title="@string/firebasefix" /> - + android:key="clearcache" + android:title="Очистка кеша приложения" /> + - diff --git a/smali/smali_classes4/com/vtosters/lite/general/fragments/SettingsGeneralFragment.smali b/smali/smali_classes4/com/vtosters/lite/general/fragments/SettingsGeneralFragment.smali index d2c8f0403..dcc67a9d7 100644 --- a/smali/smali_classes4/com/vtosters/lite/general/fragments/SettingsGeneralFragment.smali +++ b/smali/smali_classes4/com/vtosters/lite/general/fragments/SettingsGeneralFragment.smali @@ -1148,48 +1148,6 @@ invoke-virtual {p1, v6}, Landroidx/preference/Preference;->setVisible(Z)V :cond_5 - const-string p1, "clearImageCache" - - .line 33 - invoke-virtual {p0, p1}, Lcom/vtosters/lite/fragments/u2/PreferenceFragmentCompat;->findPreference(Ljava/lang/CharSequence;)Landroidx/preference/Preference; - - move-result-object p1 - - .line 34 - new-instance v0, Lcom/vtosters/lite/fragments/o0; - - invoke-direct {v0, p0}, Lcom/vtosters/lite/fragments/o0;->(Lcom/vtosters/lite/general/fragments/SettingsGeneralFragment;)V - - invoke-virtual {p1, v0}, Landroidx/preference/Preference;->setOnPreferenceClickListener(Landroidx/preference/Preference$OnPreferenceClickListener;)V - - const-string p1, "clearVideoCache" - - .line 35 - invoke-virtual {p0, p1}, Lcom/vtosters/lite/fragments/u2/PreferenceFragmentCompat;->findPreference(Ljava/lang/CharSequence;)Landroidx/preference/Preference; - - move-result-object p1 - - .line 36 - new-instance v0, Lcom/vtosters/lite/fragments/j0; - - invoke-direct {v0, p0}, Lcom/vtosters/lite/fragments/j0;->(Lcom/vtosters/lite/general/fragments/SettingsGeneralFragment;)V - - invoke-virtual {p1, v0}, Landroidx/preference/Preference;->setOnPreferenceClickListener(Landroidx/preference/Preference$OnPreferenceClickListener;)V - - const-string p1, "clearMessagesCache" - - .line 37 - invoke-virtual {p0, p1}, Lcom/vtosters/lite/fragments/u2/PreferenceFragmentCompat;->findPreference(Ljava/lang/CharSequence;)Landroidx/preference/Preference; - - move-result-object p1 - - .line 38 - new-instance v0, Lcom/vtosters/lite/fragments/m0; - - invoke-direct {v0, p0}, Lcom/vtosters/lite/fragments/m0;->(Lcom/vtosters/lite/general/fragments/SettingsGeneralFragment;)V - - invoke-virtual {p1, v0}, Landroidx/preference/Preference;->setOnPreferenceClickListener(Landroidx/preference/Preference$OnPreferenceClickListener;)V - const-string p1, "downloadAudio" .line 39