Merge branch 'vtl-remaster' into theming

This commit is contained in:
aliveoutside
2022-07-28 18:50:35 +03:00
7 changed files with 199 additions and 117 deletions
@@ -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() {
}
@@ -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);
+3 -3
View File
@@ -5497,9 +5497,9 @@
<string name="proxysocks">Socks Прокси</string>
<string name="proxystatic">Static Домен</string>
<string name="reportbug">Сообщить о баге</string>
<string name="autoclearcache">Автоочистка кэша</string>
<string name="autoclearcachesumm">Размер кэша:</string>
<string name="autoclearcachedisabled">Не очищать кэш</string>
<string name="autoclearcache">Автоочистка кеша</string>
<string name="autoclearcachesumm">Размер кеша:</string>
<string name="autoclearcachedisabled">Не очищать кеш</string>
<string name="reportbugsumm">Репорты багов помогают нам их исправлять</string>
<string name="restartapp">Перезапустите приложение</string>
<string name="savedmsg">Сохраненные сообщения</string>
+3 -11
View File
@@ -95,17 +95,9 @@
android:summary=""
android:title="@string/sett_clear_audio_cache" />
<Preference
android:key="clearImageCache"
android:summary=""
android:title="@string/sett_clear_img_cache" />
<Preference
android:key="clearVideoCache"
android:summary=""
android:title="@string/sett_clear_video_cache" />
<Preference
android:key="clearMessagesCache"
android:summary=""
android:title="@string/sett_clear_messages_cache" />
android:enabled="false"
android:summary="Они переехали в настройки мода во вкладку Другое"
android:title="Где настройки кеша?" />
<com.vtosters.lite.ui.MaterialSectionDividerPreference />
</PreferenceCategory>
</PreferenceScreen>
@@ -95,16 +95,8 @@
android:summary=""
android:title="@string/sett_clear_audio_cache" />
<Preference
android:key="clearImageCache"
android:summary=""
android:title="@string/sett_clear_img_cache" />
<Preference
android:key="clearVideoCache"
android:summary=""
android:title="@string/sett_clear_video_cache" />
<Preference
android:key="clearMessagesCache"
android:summary=""
android:title="@string/sett_clear_messages_cache" />
android:enabled="false"
android:summary="Они переехали в настройки мода во вкладку Другое"
android:title="Где настройки кеша?" />
</PreferenceCategory>
</PreferenceScreen>
+5 -11
View File
@@ -6,19 +6,13 @@
android:summary="@string/firebasefixsum"
android:title="@string/firebasefix" />
<Preference
android:key="stickfix"
android:summary="@string/other_clear_stickers_cache_summary"
android:title="@string/other_clear_stickers_cache" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="true"
android:key="color_grishka"
android:title="@string/other_fix_dynamic_colors" />
android:key="clearcache"
android:title="Очистка кеша приложения" />
<Preference
android:key="autoclearcache"
android:title="@string/autoclearcache" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/vtsystem">
<Preference
android:key="clearcache"
android:summary="@string/clearcachesum"
android:title="@string/clearcache" />
<Preference
android:key="applicationrestart"
android:title="@string/applicationrestart" />
@@ -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;-><init>(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;-><init>(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;-><init>(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