some data sett updated

This commit is contained in:
gdlbo
2023-06-12 16:30:22 +03:00
parent 49051dae9a
commit a5e81dbd87
4 changed files with 173 additions and 120 deletions
@@ -330,7 +330,7 @@ public class Preferences {
}
public static long getSizeForDelete() {
return switch (Preferences.getPreferences().getString("clearcache", "")) {
return switch (Preferences.getPreferences().getString("autoclearcache", "")) {
case "100mb" -> 104857600L;
case "500mb" -> 524288000L;
case "1gb" -> 1073741824L;
@@ -1,21 +1,37 @@
package ru.vtosters.lite.ui.fragments;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Build;
import android.os.Bundle;
import android.util.TypedValue;
import android.view.View;
import android.view.WindowInsetsController;
import android.webkit.WebView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;
import androidx.appcompat.view.ContextThemeWrapper;
import b.h.g.m.FileUtils;
import com.vk.core.dialogs.alert.VkAlertDialog;
import com.vk.im.engine.ImEngine1;
import com.vk.im.engine.ImEngineExt;
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.stickers.Stickers;
import com.vtosters.lite.im.ImEngineProvider;
import ru.vtosters.hooks.SwitchHook;
import ru.vtosters.hooks.other.Preferences;
import ru.vtosters.hooks.other.ThemesUtils;
import ru.vtosters.lite.ui.PreferenceFragmentUtils;
import ru.vtosters.lite.ui.components.BackupManager;
import ru.vtosters.lite.utils.AccountManagerUtils;
import ru.vtosters.lite.utils.AndroidUtils;
import ru.vtosters.lite.utils.LifecycleUtils;
import ru.vtosters.lite.utils.VKAccountDB;
import ru.vtosters.lite.utils.*;
import java.io.IOException;
@@ -58,6 +74,108 @@ public class DataSettingsFragment extends TrackedMaterialPreferenceToolbarFragme
}
}
PreferenceFragmentUtils.addPreferenceCategory(getPreferenceScreen(), AndroidUtils.getString("data"));
PreferenceFragmentUtils.addPreference(
getPreferenceScreen(),
"currcache",
"Размер приложения",
"Вес кеша приложения: " + CacheUtils.humanReadableByteCountBin(IOUtils.getDirSize(AndroidUtils.getGlobalContext().getCacheDir())),
null,
preference -> {
new VkAlertDialog.Builder(requireContext())
.setTitle("Очистить весь кеш?")
.setPositiveButton(requireContext().getString(com.vtosters.lite.R.string.yes), (dialogInterface, i) -> {
new WebView(requireContext()).clearCache(true);
VKImageLoader.e();
ImAudioMsgPlayerProvider.b().e(PlayerActionSources.a);
ImAudioMsgPlayerProvider.b().d(PlayerActionSources.a);
FileUtils.l();
AutoPlayCacheHolder.d.a();
MediaStorage.a();
updateCacheSize();
})
.setNegativeButton(requireContext().getString(com.vtosters.lite.R.string.cancel), (dialogInterface, i) -> dialogInterface.dismiss())
.show();
return false;
}
);
PreferenceFragmentUtils.addPreference(
getPreferenceScreen(),
"",
AndroidUtils.getString("clearcache_other_title"),
"",
null,
preference -> {
new VkAlertDialog.Builder(getContext())
.setTitle(requireContext().getString(com.vtosters.lite.R.string.select_which_clean))
.setItems(AndroidUtils.getArray(com.vtosters.lite.R.array.cache_cleaner), (dialog, which) -> {
switch (which) {
case 0 -> {
SharedPreferences prefs2 = getContext().getSharedPreferences("stickers_storage", Context.MODE_PRIVATE);
prefs2.edit().clear().commit();
new WebView(requireContext()).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();
}
case 1 -> {
SharedPreferences prefs2 = getContext().getSharedPreferences("stickers_storage", Context.MODE_PRIVATE);
prefs2.edit().clear().commit();
Stickers.l.c();
}
case 2 -> {
VKImageLoader.e();
ImEngineExt.a(ImEngine1.a());
}
case 3 -> {
AutoPlayCacheHolder.d.a();
MediaStorage.a();
}
case 4 -> {
ImEngineProvider.b().a();
ImAudioMsgPlayerProvider.b().e(PlayerActionSources.a);
ImAudioMsgPlayerProvider.b().d(PlayerActionSources.a);
}
case 5 -> new WebView(requireContext()).clearCache(true);
}
Toast.makeText(getContext(), requireContext().getString(com.vtosters.lite.R.string.cache_cleaned), Toast.LENGTH_SHORT).show();
updateCacheSize();
})
.show();
return false;
}
);
PreferenceFragmentUtils.addPreference(
getPreferenceScreen(),
"autoclearcache_btn",
AndroidUtils.getString("autoclearcache"),
"",
null,
preference -> {
cacheAutoCleanDialog();
return false;
}
);
var pref = Preferences.getPreferences().getString("autoclearcache", "Default");
switch (pref) {
case "Default" -> findPreference("autoclearcache_btn").setSummary(requireContext().getString(com.vtosters.lite.R.string.cache_disabled));
case "100mb" -> findPreference("autoclearcache_btn").setSummary(requireContext().getString(com.vtosters.lite.R.string.cache_100mb));
case "500mb" -> findPreference("autoclearcache_btn").setSummary(requireContext().getString(com.vtosters.lite.R.string.cache_500mb));
case "1gb" -> findPreference("autoclearcache_btn").setSummary(requireContext().getString(com.vtosters.lite.R.string.cache_1gb));
case "2gb" -> findPreference("autoclearcache_btn").setSummary(requireContext().getString(com.vtosters.lite.R.string.cache_2gb));
case "5gb" -> findPreference("autoclearcache_btn").setSummary(requireContext().getString(com.vtosters.lite.R.string.cache_5gb));
}
PreferenceFragmentUtils.addPreferenceCategory(getPreferenceScreen(), AndroidUtils.getString("accounts"));
PreferenceFragmentUtils.addPreference(
@@ -177,4 +295,54 @@ public class DataSettingsFragment extends TrackedMaterialPreferenceToolbarFragme
findPreference("analyticsDisabled").setVisible(Preferences.isValidSignature());
}
private void updateCacheSize() {
findPreference("currcache").setSummary("Вес кеша приложения: " + CacheUtils.humanReadableByteCountBin(IOUtils.getDirSize(AndroidUtils.getGlobalContext().getCacheDir())));
}
@SuppressLint({"CommitPrefEdits", "SetTextI18n"})
private void cacheAutoCleanDialog() {
String[] cacheText = {null, "100 MB", "500 MB", "1 GB", "2 GB", "5 GB"};
var val = Preferences.getPreferences().getInt("autoclearcache_size", 0);
RadioGroup rg = new RadioGroup(getContext());
rg.setPadding(AndroidUtils.dp2px(18f), AndroidUtils.dp2px(12f), AndroidUtils.dp2px(18f), 0);
for (int item = 0; item <= 5; item++) {
RadioButton rb = new RadioButton(new ContextThemeWrapper(getContext(), com.vtosters.lite.R.style.Widget_AppCompat_CompoundButton_RadioButton));
SwitchHook.setCompoundButton(rb);
rg.addView(rb);
rb.setId(item);
rb.setTextSize(TypedValue.COMPLEX_UNIT_PX, AndroidUtils.dp2px(14f));
var text = cacheText[item];
rb.setText(text != null ? text : AndroidUtils.getString("autoclearcachedisabled"));
rb.setTextColor(ThemesUtils.getTextAttr());
rb.setChecked(val == item);
}
new VkAlertDialog.Builder(getContext())
.setTitle(requireContext().getString(com.vtosters.lite.R.string.cache_clean_title))
.setMessage(requireContext().getString(com.vtosters.lite.R.string.cache_select_size))
.setCancelable(true)
.setNegativeButton(requireContext().getString(com.vtosters.lite.R.string.cancel), null)
.setView(rg)
.setPositiveButton(requireContext().getString(com.vtosters.lite.R.string.save), (dialog, which) -> {
var sizes = new String[]{"Default", "100mb", "500mb", "1gb", "2gb", "5gb"};
var id = rg.getCheckedRadioButtonId();
Preferences.getPreferences().edit()
.putInt("autoclearcache_size", id)
.putString("autoclearcache", sizes[id])
.apply();
})
.show();
}
@Override
public void onResume() {
super.onResume();
updateCacheSize();
}
}
@@ -111,11 +111,6 @@ public class OtherFragment extends TrackedMaterialPreferenceToolbarFragment {
return true;
});
findPreference("clearcache").setOnPreferenceClickListener(preference -> {
cacheCleanDialog();
return true;
});
findPreference("copyownlink").setOnPreferenceClickListener(preference -> {
copyText("https://vk.com/id" + AccountManagerUtils.getUserId());
ToastUtils.a(requireContext().getString(R.string.link_copied));
@@ -127,11 +122,6 @@ public class OtherFragment extends TrackedMaterialPreferenceToolbarFragment {
return true;
});
findPreference("autoclearcache").setOnPreferenceClickListener(preference -> {
cacheAutoCleanDialog();
return true;
});
findPreference("datasettings").setOnPreferenceClickListener(preference -> {
NavigatorUtils.switchFragment(requireContext(), DataSettingsFragment.class);
return true;
@@ -146,19 +136,6 @@ public class OtherFragment extends TrackedMaterialPreferenceToolbarFragment {
return true;
});
var pref = Preferences.getPreferences().getString("autoclearcache", "Default");
switch (pref) {
case "Default" ->
findPreference("autoclearcache").setSummary(requireContext().getString(R.string.cache_disabled));
case "100mb" ->
findPreference("autoclearcache").setSummary(requireContext().getString(R.string.cache_100mb));
case "500mb" ->
findPreference("autoclearcache").setSummary(requireContext().getString(R.string.cache_500mb));
case "1gb" -> findPreference("autoclearcache").setSummary(requireContext().getString(R.string.cache_1gb));
case "2gb" -> findPreference("autoclearcache").setSummary(requireContext().getString(R.string.cache_2gb));
case "5gb" -> findPreference("autoclearcache").setSummary(requireContext().getString(R.string.cache_5gb));
}
var vkAdminTokenPref = findPreference("vk_admin_token");
vkAdminTokenPref.setVisible(Preferences.getPreferences().getBoolean("new_music_downloading_way", false));
if (vkAdminTokenPref.isVisible()) {
@@ -170,93 +147,7 @@ public class OtherFragment extends TrackedMaterialPreferenceToolbarFragment {
}
}
@SuppressLint({"CommitPrefEdits", "SetTextI18n"})
private void cacheAutoCleanDialog() {
String[] cacheText = {null, "100 MB", "500 MB", "1 GB", "2 GB", "5 GB"};
var val = Preferences.getPreferences().getInt("autoclearcache_size", 0);
RadioGroup rg = new RadioGroup(getContext());
rg.setPadding(AndroidUtils.dp2px(18f), AndroidUtils.dp2px(12f), AndroidUtils.dp2px(18f), 0);
for (int item = 0; item <= 5; item++) {
RadioButton rb = new RadioButton(new ContextThemeWrapper(getContext(), com.vtosters.lite.R.style.Widget_AppCompat_CompoundButton_RadioButton));
SwitchHook.setCompoundButton(rb);
rg.addView(rb);
rb.setId(item);
rb.setTextSize(TypedValue.COMPLEX_UNIT_PX, AndroidUtils.dp2px(14f));
var text = cacheText[item];
rb.setText(text != null ? text : AndroidUtils.getString("autoclearcachedisabled"));
rb.setTextColor(ThemesUtils.getTextAttr());
rb.setChecked(val == item);
}
new VkAlertDialog.Builder(getContext())
.setTitle(requireContext().getString(R.string.cache_clean_title))
.setMessage(requireContext().getString(R.string.cache_select_size))
.setCancelable(true)
.setNegativeButton(requireContext().getString(R.string.cancel), null)
.setView(rg)
.setPositiveButton(requireContext().getString(R.string.save), (dialog, which) -> {
var sizes = new String[]{"Default", "100mb", "500mb", "1gb", "2gb", "5gb"};
var id = rg.getCheckedRadioButtonId();
Preferences.getPreferences().edit()
.putInt("autoclearcache_size", id)
.putString("autoclearcache", sizes[id])
.apply();
})
.show();
}
private void cacheCleanDialog() {
new VkAlertDialog.Builder(getContext())
.setTitle(requireContext().getString(R.string.select_which_clean))
.setItems(AndroidUtils.getArray(R.array.cache_cleaner), (dialog, which) -> {
switch (which) {
case 0 -> {
SharedPreferences prefs2 = getContext().getSharedPreferences("stickers_storage", Context.MODE_PRIVATE);
prefs2.edit().clear().commit();
clearWebViewCache();
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();
}
case 1 -> {
SharedPreferences prefs2 = getContext().getSharedPreferences("stickers_storage", Context.MODE_PRIVATE);
prefs2.edit().clear().commit();
Stickers.l.c();
}
case 2 -> {
VKImageLoader.e();
ImEngineExt.a(ImEngine1.a());
}
case 3 -> {
AutoPlayCacheHolder.d.a();
MediaStorage.a();
}
case 4 -> {
ImEngineProvider.b().a();
ImAudioMsgPlayerProvider.b().e(PlayerActionSources.a);
ImAudioMsgPlayerProvider.b().d(PlayerActionSources.a);
}
case 5 -> clearWebViewCache();
}
Toast.makeText(getContext(), requireContext().getString(R.string.cache_cleaned), Toast.LENGTH_SHORT).show();
})
.show();
}
private void clearWebViewCache() {
new WebView(requireContext()).clearCache(true);
}
private void copyText(String src) {
var manager = (ClipboardManager) requireContext().getSystemService(Context.CLIPBOARD_SERVICE);