Compare commits
19
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dfa7ba031e | ||
|
|
6ddea672ad | ||
|
|
047378a11d | ||
|
|
3420c4abb0 | ||
|
|
15a8d70f5f | ||
|
|
91f90a6609 | ||
|
|
e170b70999 | ||
|
|
b489011d24 | ||
|
|
58adfbd261 | ||
|
|
3bb18b6daf | ||
|
|
120bf18416 | ||
|
|
428c4ef7d6 | ||
|
|
40fc05fc15 | ||
|
|
2e913223a2 | ||
|
|
48f12a912c | ||
|
|
0228c0b8a1 | ||
|
|
ba07aeb4d7 | ||
|
|
529b13f18b | ||
|
|
5720fddb59 |
@@ -34,7 +34,6 @@ jobs:
|
||||
|
||||
- name: Build VTLite
|
||||
run: |
|
||||
git checkout master
|
||||
bash scripts/buildworkflow.sh
|
||||
|
||||
- name: Sign and verify the apk
|
||||
|
||||
@@ -21,13 +21,13 @@ android:debuggable="false" -> android:debuggable="true"
|
||||
|
||||
Для дополнительной отладки ответов, доп логов и подмены данных для дебаг приложения необходимо включить **Режим разработчика**
|
||||
```
|
||||
Настройки -> Для разработчиков -> Режим разработчика
|
||||
Настройки -> О приложении -> Для разработчиков -> Режим разработчика
|
||||
```
|
||||
|
||||
Для просмотра трафика необходимо отключить функцию **SSL Pinning**
|
||||
|
||||
```
|
||||
Настройки -> Для разработчиков -> SSL Pinning
|
||||
Настройки -> О приложении -> Для разработчиков -> SSL Pinning
|
||||
```
|
||||
|
||||
Для логгирования внутренних запросов к API необходимо включить функции **Логгирование API**
|
||||
@@ -35,12 +35,12 @@ android:debuggable="false" -> android:debuggable="true"
|
||||
(Работает только при использовании внутреннего логгера!)
|
||||
|
||||
```
|
||||
Настройки -> Для разработчиков -> Логгирование API
|
||||
Настройки -> О приложении -> Для разработчиков -> Логгирование API
|
||||
```
|
||||
|
||||
Для использования внутреннего логгера необходимо включить функции **Запись логов в файл**
|
||||
```
|
||||
Настройки -> Для разработчиков -> Запись логов в файл
|
||||
Настройки -> О приложении -> Для разработчиков -> Запись логов в файл
|
||||
```
|
||||
Сразу после нажатия на запись аппа начнет записывать **все действия** в файлы по пути
|
||||
```
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.vk.core.ui.themes;
|
||||
|
||||
import com.vk.s.R;
|
||||
|
||||
import ru.vtosters.lite.utils.Themes;
|
||||
|
||||
public enum VKTheme {
|
||||
|
||||
@@ -4,7 +4,6 @@ import static android.widget.Toast.LENGTH_SHORT;
|
||||
import static android.widget.Toast.makeText;
|
||||
import static ru.vtosters.lite.utils.Globals.getIdentifier;
|
||||
import static ru.vtosters.lite.utils.Globals.getString;
|
||||
import static ru.vtosters.lite.utils.Preferences.getDateFormat;
|
||||
import static ru.vtosters.lite.utils.Proxy.getApiCom;
|
||||
import static ru.vtosters.lite.utils.Proxy.proxy;
|
||||
|
||||
@@ -15,7 +14,6 @@ import android.support.v7.app.AlertDialog;
|
||||
import androidx.exifinterface.media.ExifInterface;
|
||||
|
||||
import com.vk.core.dialogs.alert.VkAlertDialog;
|
||||
import com.vtosters.lite.R;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.text.ParseException;
|
||||
|
||||
@@ -45,6 +45,20 @@ public class PreferencesUtil {
|
||||
fragment.ay().d(preference); // fragment.getPreferenceScreen().addPreference(preference)
|
||||
}
|
||||
|
||||
public static void addListPreferenceIcon(MaterialPreferenceToolbarFragment fragment, String key, String def, CharSequence title, String icon, CharSequence summary, CharSequence[] entries, CharSequence[] entriesValue) {
|
||||
ListPreference preference = new ListPreference(getContext());
|
||||
preference.a(entries);
|
||||
preference.b(entriesValue);
|
||||
preference.b(summary); // setSummary
|
||||
preference.c(title); // setTitle
|
||||
preference.a(title); // setDialogTitle
|
||||
preference.d(key); // setKey
|
||||
preference.b(def); // setDefaultValue
|
||||
if (icon != null)
|
||||
preference.a(setTint(getContext(), getDrawable(getContext(), icon))); // preference.setIcon
|
||||
fragment.ay().d(preference); // fragment.getPreferenceScreen().addPreference(preference)
|
||||
}
|
||||
|
||||
public static void addMaterialSwitchPreference(MaterialPreferenceToolbarFragment materialPreferenceToolbarFragment, String key, CharSequence title, CharSequence summary, boolean defValue) {
|
||||
MaterialSwitchPreference materialSwitchPreference = new MaterialSwitchPreference(getContext());
|
||||
materialSwitchPreference.c(title); // setTitle
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package ru.vtosters.lite.ui.fragments;
|
||||
|
||||
import static ru.vtosters.lite.utils.Globals.deleteCache;
|
||||
import static ru.vtosters.lite.utils.CacheUtils.deleteCache;
|
||||
import static ru.vtosters.lite.utils.Globals.getContext;
|
||||
import static ru.vtosters.lite.utils.Globals.restartApplicationWithTimer;
|
||||
|
||||
|
||||
@@ -1,14 +1,7 @@
|
||||
package ru.vtosters.lite.ui.fragments;
|
||||
|
||||
import static ru.vtosters.lite.utils.Globals.getContext;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.preference.Preference;
|
||||
|
||||
import com.vk.navigation.Navigator;
|
||||
import com.vk.webapp.VKConnect;
|
||||
import com.vtosters.lite.R;
|
||||
import com.vtosters.lite.fragments.MaterialPreferenceToolbarFragment;
|
||||
|
||||
@@ -17,23 +10,5 @@ public class MusicFragment extends MaterialPreferenceToolbarFragment {
|
||||
public void b(Bundle bundle) {
|
||||
super.b(bundle);
|
||||
a(R.xml.preferences_music);
|
||||
prefs();
|
||||
}
|
||||
|
||||
private void prefs() {
|
||||
a("vkid_warn").a(new MusicFragment.openvkid());
|
||||
}
|
||||
|
||||
public static class openvkid implements Preference.c {
|
||||
openvkid() {
|
||||
}
|
||||
|
||||
@Override // android.support.v7.preference.Preference.c
|
||||
public boolean a(Preference preference) {
|
||||
Context context = getContext();
|
||||
Intent a2 = new Navigator(VKConnect.class).a(context);
|
||||
context.startActivity(a2);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ package ru.vtosters.lite.ui.fragments;
|
||||
|
||||
import static android.widget.Toast.LENGTH_SHORT;
|
||||
import static android.widget.Toast.makeText;
|
||||
import static ru.vtosters.lite.utils.Globals.deleteCache;
|
||||
import static ru.vtosters.lite.utils.CacheUtils.deleteCache;
|
||||
import static ru.vtosters.lite.utils.Globals.getContext;
|
||||
import static ru.vtosters.lite.utils.Globals.getString;
|
||||
import static ru.vtosters.lite.utils.Globals.getUserToken;
|
||||
|
||||
@@ -2,12 +2,12 @@ package ru.vtosters.lite.ui.fragments;
|
||||
|
||||
import static bruhcollective.itaysonlab.libvkx.client.LibVKXClient.isIntegrationEnabled;
|
||||
import static ru.vtosters.lite.f0x1d.VTVerifications.vtverif;
|
||||
import static ru.vtosters.lite.ui.fragments.multiaccount.MultiAccountManager.getAccountPrefsCount;
|
||||
import static ru.vtosters.lite.ui.fragments.multiaccount.MultiAccountManager.getCurrentAccount;
|
||||
import static ru.vtosters.lite.ui.fragments.multiaccount.MultiAccountManager.withRegex;
|
||||
import static ru.vtosters.lite.ui.fragments.multiaccount.MultiAccountManager.workingAccounts;
|
||||
import static ru.vtosters.lite.utils.About.getBuildNumber;
|
||||
import static ru.vtosters.lite.utils.About.getCommitLink;
|
||||
import static ru.vtosters.lite.utils.CacheUtils.humanReadableByteCountBin;
|
||||
import static ru.vtosters.lite.utils.Globals.drawableFromUrl;
|
||||
import static ru.vtosters.lite.utils.Globals.edit;
|
||||
import static ru.vtosters.lite.utils.Globals.getContext;
|
||||
@@ -62,6 +62,7 @@ import ru.vtosters.lite.ui.fragments.dockbar.DockBarFragment;
|
||||
import ru.vtosters.lite.ui.fragments.dockbar.DockBarManager;
|
||||
import ru.vtosters.lite.ui.fragments.multiaccount.MultiAccountFragment;
|
||||
import ru.vtosters.lite.ui.fragments.tgstickers.StickersFragment;
|
||||
import ru.vtosters.lite.utils.CacheUtils;
|
||||
|
||||
public class VTSettings extends MaterialPreferenceToolbarFragment {
|
||||
|
||||
@@ -308,6 +309,13 @@ public class VTSettings extends MaterialPreferenceToolbarFragment {
|
||||
return false;
|
||||
});
|
||||
|
||||
PreferencesUtil.addListPreferenceIcon(this, "clearcache", "Default", getString("autoclearcache"), "ic_delete_24", getString("autoclearcachesumm") + " " + humanReadableByteCountBin(CacheUtils.getInstance().size), new CharSequence[]{
|
||||
getString("autoclearcachedisabled"), "100 MB", "500 MB", "1 GB", "2 GB", "5 GB"
|
||||
}, new String[]{
|
||||
"Default", "100mb", "500mb", "1gb", "2gb", "5gb"
|
||||
});
|
||||
|
||||
|
||||
PreferencesUtil.addPreference(this, "", getString("vtlother"), othersumm, "ic_more_24", preference -> {
|
||||
Context context = getContext();
|
||||
Intent a2 = new Navigator(OtherFragment.class).a(context);
|
||||
@@ -388,7 +396,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment {
|
||||
}
|
||||
|
||||
public static String getMultiAccsumm() {
|
||||
if(disableSettingsSumms() || getAccountPrefsCount() <= 1) return "";
|
||||
if(disableSettingsSumms() || workingAccounts() <= 1) return "";
|
||||
|
||||
return getString("vtlmultiaccsumm") + ": " + workingAccounts();
|
||||
}
|
||||
|
||||
@@ -8,12 +8,13 @@ import android.os.Bundle;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.support.v7.widget.a.ItemTouchHelper;
|
||||
import android.view.ContextThemeWrapper;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import me.grishka.appkit.fragments.ToolbarFragment;
|
||||
|
||||
@@ -40,7 +41,7 @@ public class DockBarFragment extends ToolbarFragment {
|
||||
);
|
||||
container.addView(buttonsContainer, new LinearLayout.LayoutParams(-1, -2));
|
||||
|
||||
Button save = new Button(n());
|
||||
TextView save = new TextView(new ContextThemeWrapper(n(), com.vtosters.lite.R.style.VKUIButton_Primary));
|
||||
save.setText(getString("dockbar_save"));
|
||||
save.setOnClickListener(v -> {
|
||||
DockBarManager.getInstance().save();
|
||||
@@ -54,7 +55,7 @@ public class DockBarFragment extends ToolbarFragment {
|
||||
View divider = new View(n());
|
||||
buttonsContainer.addView(divider, new LinearLayout.LayoutParams(convertDpToPixel(10), 0));
|
||||
|
||||
Button reset = new Button(n());
|
||||
TextView reset = new TextView(new ContextThemeWrapper(n(), com.vtosters.lite.R.style.VKUIButton_Primary));
|
||||
reset.setText(getString("dockbar_reset"));
|
||||
reset.setOnClickListener(v -> {
|
||||
DockBarManager.getInstance().delete();
|
||||
|
||||
+1
-1
@@ -93,7 +93,7 @@ public class MultiAccountManager {
|
||||
}
|
||||
|
||||
public static void addAccount() {
|
||||
getPreferences().edit().putInt("account", workingAccounts()).commit();
|
||||
getPreferences().edit().putInt("account", workingAccounts() + 1).commit();
|
||||
}
|
||||
|
||||
public static void deleteAccount(int i) {
|
||||
|
||||
@@ -0,0 +1,88 @@
|
||||
package ru.vtosters.lite.utils;
|
||||
|
||||
import static ru.vtosters.lite.utils.Globals.getContext;
|
||||
import static ru.vtosters.lite.utils.Globals.sendToast;
|
||||
import static ru.vtosters.lite.utils.Preferences.dev;
|
||||
import static ru.vtosters.lite.utils.Preferences.getSizeForDelete;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
|
||||
import java.io.File;
|
||||
import java.text.CharacterIterator;
|
||||
import java.text.StringCharacterIterator;
|
||||
import java.util.Objects;
|
||||
|
||||
public class CacheUtils {
|
||||
private static CacheUtils sInstance = new CacheUtils();
|
||||
public long size = 0;
|
||||
|
||||
public static CacheUtils getInstance() {
|
||||
if (sInstance == null)
|
||||
sInstance = new CacheUtils();
|
||||
return sInstance;
|
||||
}
|
||||
|
||||
public void autoCleaningCache() {
|
||||
size = getDirSize(getContext().getCacheDir());
|
||||
|
||||
if(size >= getSizeForDelete()) {
|
||||
if(dev()) sendToast("Кэш очищен");
|
||||
deleteCache();
|
||||
size = 0;
|
||||
}
|
||||
}
|
||||
|
||||
public long getDirSize(File dir){
|
||||
long size = 0;
|
||||
for (File file : Objects.requireNonNull(dir.listFiles())) {
|
||||
if (file != null && file.isDirectory()) {
|
||||
size += getDirSize(file);
|
||||
} else if (file != null && file.isFile()) {
|
||||
size += file.length();
|
||||
}
|
||||
}
|
||||
return size;
|
||||
}
|
||||
|
||||
public static void deleteCache() {
|
||||
try {
|
||||
File dir = getContext().getCacheDir();
|
||||
deleteDir(dir);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean deleteDir(File dir) {
|
||||
if (dir != null && dir.isDirectory()) {
|
||||
String[] children = dir.list();
|
||||
for (int i=0; i < Objects.requireNonNull(children).length; i++) {
|
||||
boolean success = deleteDir(new File(dir, children[i]));
|
||||
if (!success) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return dir.delete();
|
||||
} else if(dir!= null && dir.isFile()) {
|
||||
return dir.delete();
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("DefaultLocale")
|
||||
public static String humanReadableByteCountBin(long bytes) {
|
||||
long absB = bytes == Long.MIN_VALUE ? Long.MAX_VALUE : Math.abs(bytes);
|
||||
if (absB < 1024) {
|
||||
return bytes + " B";
|
||||
}
|
||||
long value = absB;
|
||||
CharacterIterator ci = new StringCharacterIterator("KMGTPE");
|
||||
for (int i = 40; i >= 0 && absB > 0xfffccccccccccccL >> i; i -= 10) {
|
||||
value >>= 10;
|
||||
ci.next();
|
||||
}
|
||||
value *= Long.signum(bytes);
|
||||
return String.format("%.1f %cB", value / 1024.0, ci.current());
|
||||
}
|
||||
}
|
||||
@@ -42,7 +42,6 @@ import com.vtosters.lite.api.ExtendedUserProfile;
|
||||
import com.vtosters.lite.auth.VKAccountManager;
|
||||
import com.vtosters.lite.im.ImEngineProvider;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.InputStream;
|
||||
import java.lang.reflect.Method;
|
||||
import java.net.URL;
|
||||
@@ -50,7 +49,6 @@ import java.net.URLConnection;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Objects;
|
||||
|
||||
import ru.vtosters.lite.ui.dialogs.DisableBattery;
|
||||
import ru.vtosters.lite.ui.dialogs.InstallGMS;
|
||||
@@ -202,31 +200,6 @@ public class Globals {
|
||||
return null;
|
||||
} // Getting the global context through reflection to use context on application initialization
|
||||
|
||||
public static void deleteCache() {
|
||||
try {
|
||||
File dir = getContext().getCacheDir();
|
||||
deleteDir(dir);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean deleteDir(File dir) {
|
||||
if (dir != null && dir.isDirectory()) {
|
||||
String[] children = dir.list();
|
||||
for (int i=0; i < Objects.requireNonNull(children).length; i++) {
|
||||
boolean success = deleteDir(new File(dir, children[i]));
|
||||
if (!success) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return dir.delete();
|
||||
} else if(dir!= null && dir.isFile()) {
|
||||
return dir.delete();
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
public static boolean isGmsInstalled() {
|
||||
try {
|
||||
getContext().getPackageManager().getPackageInfo("com.google.android.gms", 0);
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
package ru.vtosters.lite.utils;
|
||||
|
||||
import static android.os.Build.VERSION;
|
||||
import static java.lang.Long.MAX_VALUE;
|
||||
import static ru.vtosters.lite.f0x1d.VTVerifications.hasPrometheus;
|
||||
import static ru.vtosters.lite.f0x1d.VTVerifications.isVerified;
|
||||
import static ru.vtosters.lite.ui.fragments.multiaccount.MultiAccountManager.migrate;
|
||||
import static ru.vtosters.lite.utils.CacheUtils.getInstance;
|
||||
import static ru.vtosters.lite.utils.DeletedMessagesHandler.reloadMessagesList;
|
||||
import static ru.vtosters.lite.utils.Globals.fixGapps;
|
||||
import static ru.vtosters.lite.utils.Globals.getContext;
|
||||
@@ -58,13 +60,16 @@ public class Preferences {
|
||||
LoadLibrary("vkopustest");
|
||||
}
|
||||
systemThemeChanger();
|
||||
getInstance().autoCleaningCache();
|
||||
} // VK Init
|
||||
|
||||
public static void forceOffline() {
|
||||
setupFilters();
|
||||
getInstance().autoCleaningCache();
|
||||
|
||||
if (setoffline() && !offline()) {
|
||||
Users.b();
|
||||
}
|
||||
setupFilters();
|
||||
}
|
||||
|
||||
public static boolean getBoolValue(String key, Boolean value) {
|
||||
@@ -438,6 +443,29 @@ public class Preferences {
|
||||
}
|
||||
}
|
||||
|
||||
public static long getSizeForDelete() {
|
||||
switch (getPrefsValue("clearcache")) {
|
||||
case "100mb":
|
||||
return 104857600L;
|
||||
case "500mb":
|
||||
return 524288000L;
|
||||
case "1gb":
|
||||
return 1073741824L;
|
||||
case "2gb":
|
||||
return 2147483648L;
|
||||
case "5gb":
|
||||
return 5368709120L;
|
||||
default:
|
||||
return MAX_VALUE;
|
||||
}
|
||||
}
|
||||
|
||||
public static int compress(int origquality) {
|
||||
if(getBoolValue("shakal", false)) return 5;
|
||||
if(!getBoolValue("compressPhotos", true)) return 100;
|
||||
return origquality;
|
||||
}
|
||||
|
||||
public static String nullOnline() {
|
||||
return getString("onlineNull");
|
||||
}
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
package ru.vtosters.lite.utils;
|
||||
|
||||
import static android.view.View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR;
|
||||
import static com.vk.im.ui.themes.ImTheme.*;
|
||||
import static com.vk.im.ui.themes.ImTheme.VKAPP_AMOLED;
|
||||
import static com.vk.im.ui.themes.ImTheme.VKAPP_DARK;
|
||||
import static com.vk.im.ui.themes.ImTheme.VKAPP_LIGHT;
|
||||
import static com.vk.im.ui.themes.ImTheme.VKME_AMOLED;
|
||||
import static com.vk.im.ui.themes.ImTheme.VKME_DARK;
|
||||
import static com.vk.im.ui.themes.ImTheme.VKME_LIGHT;
|
||||
import static ru.vtosters.lite.utils.Globals.edit;
|
||||
import static ru.vtosters.lite.utils.Globals.getIdentifier;
|
||||
import static ru.vtosters.lite.utils.Globals.getPrefsValue;
|
||||
@@ -162,8 +167,11 @@ public class Themes {
|
||||
return color_grishka() && Build.VERSION.SDK_INT >= 31;
|
||||
}
|
||||
|
||||
public static boolean isColorRefAccented(int i) {
|
||||
return i == R.color.cornflower_blue || i == R.color.cornflower_blue_two || i == R.color.dot_unread || i == R.color.music_action_button_blue || i == R.color.fave_promo_btn_pressed || i == R.color.im_back_to_vk_gradient_start || i == R.color.live_emoji_butt_hide || i == R.color.picker_tab_bg_selected || i == R.color.sky_300 || i == R.color.text_blue || i == R.color.tw__blue_default || i == R.color.tw__blue_pressed || i == R.color.white_blue32 || i == R.color.name || i == R.color.picker_blue || i == R.color.picker_blue_pressed || i == R.color.picker_tab_text_selected || i == R.color.sharing_blue_btn_pressed || i == R.color.sharing_blue_btn_normal || i == R.color.tip_background || i == R.color.vkim_msg_sending_ic || i == R.color.vkim_playing_drawable_rect || i == R.color.accent_blue || i == R.color.light_blue_gray || i == R.color.light_blue || i == R.color.blue_200 || i == R.color.header_blue || i == R.color.blue_200_muted || i == R.color.im_old_accent || i == R.color.im_old_accent_muted || i == R.color.im_dark_accent || i == R.color.im_dark_accent_muted || i == R.color.azure_A400 || i == R.color.blue || i == R.color.blue_400 || i == R.color.blue_300 || i == R.color.cool_blue;
|
||||
public static boolean isColorRefAccented(int color) {
|
||||
for (int accent : new int[]{R.color.accent_blue, R.color.azure_A400, R.color.blue, R.color.blue_200, R.color.blue_200_muted, R.color.blue_300, R.color.blue_400, R.color.cool_blue, R.color.cornflower_blue, R.color.cornflower_blue_two, R.color.dot_unread, R.color.fave_promo_btn_pressed, R.color.header_blue, R.color.im_back_to_vk_gradient_start, R.color.im_dark_accent, R.color.im_dark_accent_muted, R.color.im_old_accent, R.color.im_old_accent_muted, R.color.light_blue, R.color.light_blue_gray, R.color.live_emoji_butt_hide, R.color.music_action_button_blue, R.color.name, R.color.picker_blue, R.color.picker_blue_pressed, R.color.picker_tab_bg_selected, R.color.picker_tab_text_selected, R.color.sharing_blue_btn_normal, R.color.sharing_blue_btn_pressed, R.color.sky_300, R.color.text_blue, R.color.tip_background, R.color.tw__blue_default, R.color.tw__blue_pressed, R.color.vkim_msg_sending_ic, R.color.vkim_playing_drawable_rect, R.color.white_blue32}) {
|
||||
if(color == accent) return true;
|
||||
}
|
||||
return false;
|
||||
} // Accent colors
|
||||
|
||||
public static void themeMonetToolbar(ImageButton imageButton, Toolbar toolbar) {
|
||||
@@ -174,37 +182,60 @@ public class Themes {
|
||||
}
|
||||
|
||||
public static Drawable recolorDrawable(Drawable drawable) {
|
||||
if (drawable == null) {
|
||||
return null;
|
||||
}
|
||||
if (drawable == null) return null;
|
||||
return new RecoloredDrawable(drawable, getAccentColor());
|
||||
} // Recolor drawable to accent color
|
||||
|
||||
public static Drawable recolorVKIconMenu(Drawable drawable) {
|
||||
int accent = getHeaderText();
|
||||
|
||||
if (drawable == null) return null;
|
||||
|
||||
if(isAndroidMonet() || isDarkTheme()) accent = getAccentColor();
|
||||
|
||||
return new RecoloredDrawable(drawable, accent);
|
||||
} // Recolor vk icon to accent color
|
||||
|
||||
|
||||
public static Drawable recolorDrawableToolbar(Drawable drawable) {
|
||||
if (drawable == null) {
|
||||
return null;
|
||||
}
|
||||
if (drawable == null) return null;
|
||||
|
||||
if(!isAndroidMonet()) return drawable;
|
||||
|
||||
return new RecoloredDrawable(drawable, getHeaderText());
|
||||
} // Recolor toolbar drawable to accent color
|
||||
|
||||
@SuppressLint("UseCompatLoadingForDrawables")
|
||||
public static Drawable recolorDrawableInt(int drawable) {
|
||||
if(!isAndroidMonet()) return getResources().getDrawable(drawable);
|
||||
|
||||
@SuppressLint("UseCompatLoadingForDrawables") Drawable res = getResources().getDrawable(drawable);
|
||||
return new RecoloredDrawable(res, getAccentColor());
|
||||
} // Get res drawable via id and coloring to accent
|
||||
|
||||
public static ColorStateList recolorCSL(ColorStateList colorStateList) {
|
||||
if (colorStateList == null) {
|
||||
return null;
|
||||
}
|
||||
if (colorStateList == null) return null;
|
||||
|
||||
if(!isAndroidMonet()) return colorStateList;
|
||||
|
||||
return ColorStateList.valueOf(getAccentColor());
|
||||
} // Recolor ColorStateList to accent color
|
||||
|
||||
@SuppressLint("UseCompatLoadingForColorStateLists")
|
||||
public static ColorStateList themeCSL(Context context, int color) {
|
||||
|
||||
if (isColorRefAccented(color) && isAndroidMonet()) {
|
||||
return ColorStateList.valueOf(getAccentColor());
|
||||
}
|
||||
|
||||
ColorStateList csl = context.getColorStateList(color);
|
||||
ColorStateList csl;
|
||||
|
||||
if (Build.VERSION.SDK_INT >= 23) {
|
||||
csl = context.getColorStateList(color);
|
||||
} else {
|
||||
csl = context.getResources().getColorStateList(color);
|
||||
}
|
||||
|
||||
try {
|
||||
int unsel = csl.getColorForState(new int[]{-android.R.attr.state_selected}, Color.BLACK);
|
||||
int sel = csl.getColorForState(new int[]{android.R.attr.state_selected}, Color.BLACK);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" android:compileSdkVersion="23" android:compileSdkVersionCodename="6.0-2438415" package="com.vtosters.lite" platformBuildVersionCode="23" platformBuildVersionName="6.0-2438415">
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" android:compileSdkVersion="23" android:minSdkVersion="20" android:compileSdkVersionCodename="6.0-2438415" package="com.vtosters.lite" platformBuildVersionCode="23" platformBuildVersionName="6.0-2438415">
|
||||
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true"/>
|
||||
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
|
||||
<uses-permission android:name="android.permission.CAMERA"/>
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
style="@style/VKUIText.Title1" />
|
||||
|
||||
<TextView
|
||||
android:textColor="?text_primary"
|
||||
android:textColor="?text_secondary"
|
||||
android:ellipsize="end"
|
||||
android:id="@id/label"
|
||||
android:layout_width="fill_parent"
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
<com.vk.imageloader.view.VKImageView
|
||||
android:id="@id/iv_preview"
|
||||
android:background="@drawable/picker_bg_graffiti_preview_top"
|
||||
android:backgroundTint="?background_content"
|
||||
android:paddingLeft="32.0dip"
|
||||
android:paddingTop="32.0dip"
|
||||
android:paddingRight="32.0dip"
|
||||
@@ -35,11 +34,10 @@
|
||||
|
||||
<TextView
|
||||
android:textSize="14.0sp"
|
||||
android:textColor="?header_text"
|
||||
android:textColor="#ffffffff"
|
||||
android:gravity="center"
|
||||
android:id="@id/tv_send_button"
|
||||
android:background="@drawable/picker_bg_graffiti_preview_bottom"
|
||||
android:backgroundTint="?accent"
|
||||
android:paddingLeft="24.0dip"
|
||||
android:paddingRight="24.0dip"
|
||||
android:paddingBottom="24.0dip"
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
|
||||
<TextView
|
||||
android:textSize="14.0dip"
|
||||
android:textColor="#ff8c8d8f"
|
||||
android:textColor="?text_secondary"
|
||||
android:ellipsize="marquee"
|
||||
android:id="@id/label"
|
||||
android:layout_width="fill_parent"
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
|
||||
<TextView
|
||||
android:textSize="14.0dip"
|
||||
android:textColor="#ff8c8d8f"
|
||||
android:textColor="?text_secondary"
|
||||
android:ellipsize="marquee"
|
||||
android:id="@id/label"
|
||||
android:layout_width="fill_parent"
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
style="@style/VKUIText.Title1" />
|
||||
|
||||
<TextView
|
||||
android:textColor="@color/gray_400"
|
||||
android:textColor="?text_secondary"
|
||||
android:id="@id/label"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
||||
@@ -76,6 +76,7 @@
|
||||
android:singleLine="true" />
|
||||
|
||||
<TextView
|
||||
android:textColor="?text_secondary"
|
||||
android:textSize="14.0dip"
|
||||
android:ellipsize="marquee"
|
||||
android:id="@id/label"
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
|
||||
<com.vk.im.ui.views.FixTextView
|
||||
android:textSize="14.0sp"
|
||||
android:textColor="?text_primary"
|
||||
android:textColor="?text_secondary"
|
||||
android:ellipsize="end"
|
||||
android:id="@id/content_body"
|
||||
android:layout_width="fill_parent"
|
||||
|
||||
@@ -4201,6 +4201,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="reportbugsumm">Репорты багов помогают нам их исправлять</string>
|
||||
<string name="restartapp">Перезапустите приложение</string>
|
||||
<string name="savedmsg">Сохраненные сообщения</string>
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
<dimen name="notification_header_bottom_padding">4.0dip</dimen>
|
||||
<dimen name="notification_header_top_padding">17.0dip</dimen>
|
||||
<dimen name="picker_dimen">400.0dip</dimen>
|
||||
<dimen name="post_side_padding">32.0dip</dimen>
|
||||
<dimen name="post_side_padding">20.0dip</dimen>
|
||||
<dimen name="post_side_padding_btn">16.0dip</dimen>
|
||||
<dimen name="post_side_padding_info">56.0dip</dimen>
|
||||
<dimen name="post_side_padding_menu">20.0dip</dimen>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<resources>
|
||||
<dimen name="_post_side_padding">-32.0dip</dimen>
|
||||
<dimen name="gift_min_size">128.0dip</dimen>
|
||||
<dimen name="post_side_padding">32.0dip</dimen>
|
||||
<dimen name="post_side_padding">20.0dip</dimen>
|
||||
<dimen name="post_side_padding_btn">16.0dip</dimen>
|
||||
<dimen name="post_side_padding_info">56.0dip</dimen>
|
||||
<dimen name="post_side_padding_menu">20.0dip</dimen>
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<dimen name="picker_item_size_image">160.0dip</dimen>
|
||||
<dimen name="picker_item_size_image_small">140.0dip</dimen>
|
||||
<dimen name="picker_sticker_size">200.0dip</dimen>
|
||||
<dimen name="post_side_padding">32.0dip</dimen>
|
||||
<dimen name="post_side_padding">20.0dip</dimen>
|
||||
<dimen name="post_side_padding_btn">16.0dip</dimen>
|
||||
<dimen name="post_side_padding_info">56.0dip</dimen>
|
||||
<dimen name="post_side_padding_menu">20.0dip</dimen>
|
||||
|
||||
@@ -4326,6 +4326,9 @@ You need to restart the application to apply proxy settings"</string>
|
||||
<string name="proxysocks">Socks Proxy</string>
|
||||
<string name="proxystatic">Static Domain</string>
|
||||
<string name="reportbug">Report a bug</string>
|
||||
<string name="autoclearcache">Auto cleaning app cache</string>
|
||||
<string name="autoclearcachesumm">Cache size:</string>
|
||||
<string name="autoclearcachedisabled">"Don't clear cache"</string>
|
||||
<string name="reportbugsumm">Bug reports help us fix them</string>
|
||||
<string name="restartapp">Please, restart app</string>
|
||||
<string name="savedmsg">Saved messages</string>
|
||||
|
||||
@@ -69,6 +69,10 @@
|
||||
android:defaultValue="true"
|
||||
android:key="useNewSettings"
|
||||
android:title="Use New Settings" />
|
||||
<com.vtosters.lite.ui.MaterialSwitchPreference
|
||||
android:defaultValue="false"
|
||||
android:key="shakal"
|
||||
android:title="shakalish pikchi da" />
|
||||
</PreferenceCategory>
|
||||
<PreferenceCategory android:title="@string/debug_developer_functions">
|
||||
<com.vtosters.lite.ui.MaterialSwitchPreference
|
||||
|
||||
@@ -215,6 +215,10 @@
|
||||
|
||||
const/16 v6, 0x56
|
||||
|
||||
invoke-static {v6}, Lru/vtosters/lite/utils/Preferences;->compress(I)I
|
||||
|
||||
move-result v6
|
||||
|
||||
invoke-virtual {v4, v5, v6, v3}, Landroid/graphics/Bitmap;->compress(Landroid/graphics/Bitmap$CompressFormat;ILjava/io/OutputStream;)Z
|
||||
:try_end_1
|
||||
.catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_0
|
||||
|
||||
@@ -230,6 +230,10 @@
|
||||
const/16 p2, 0x64
|
||||
|
||||
:goto_0
|
||||
invoke-static {p2}, Lru/vtosters/lite/utils/Preferences;->compress(I)I
|
||||
|
||||
move-result p2
|
||||
|
||||
invoke-virtual {p0, v2, p2, v1}, Landroid/graphics/Bitmap;->compress(Landroid/graphics/Bitmap$CompressFormat;ILjava/io/OutputStream;)Z
|
||||
:try_end_1
|
||||
.catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_1
|
||||
|
||||
@@ -584,6 +584,10 @@
|
||||
|
||||
const/16 v14, 0x64
|
||||
|
||||
invoke-static {v14}, Lru/vtosters/lite/utils/Preferences;->compress(I)I
|
||||
|
||||
move-result v14
|
||||
|
||||
check-cast v12, Ljava/io/OutputStream;
|
||||
|
||||
invoke-virtual {v10, v13, v14, v12}, Landroid/graphics/Bitmap;->compress(Landroid/graphics/Bitmap$CompressFormat;ILjava/io/OutputStream;)Z
|
||||
|
||||
@@ -274,6 +274,10 @@
|
||||
|
||||
const/16 v10, 0x55
|
||||
|
||||
invoke-static {v10}, Lru/vtosters/lite/utils/Preferences;->compress(I)I
|
||||
|
||||
move-result v10
|
||||
|
||||
invoke-virtual {v7, v9, v10, v8}, Landroid/graphics/Bitmap;->compress(Landroid/graphics/Bitmap$CompressFormat;ILjava/io/OutputStream;)Z
|
||||
|
||||
.line 701
|
||||
|
||||
@@ -346,6 +346,10 @@
|
||||
|
||||
const/16 v4, 0x5a
|
||||
|
||||
invoke-static {v4}, Lru/vtosters/lite/utils/Preferences;->compress(I)I
|
||||
|
||||
move-result v4
|
||||
|
||||
move-object v5, v2
|
||||
|
||||
check-cast v5, Ljava/io/OutputStream;
|
||||
|
||||
@@ -5577,7 +5577,7 @@
|
||||
|
||||
move-result-object p1
|
||||
|
||||
invoke-static {p1}, Lru/vtosters/lite/utils/Themes;->recolorDrawable(Landroid/graphics/drawable/Drawable;)Landroid/graphics/drawable/Drawable;
|
||||
invoke-static {p1}, Lru/vtosters/lite/utils/Themes;->recolorVKIconMenu(Landroid/graphics/drawable/Drawable;)Landroid/graphics/drawable/Drawable;
|
||||
|
||||
move-result-object p1
|
||||
|
||||
|
||||
@@ -376,6 +376,10 @@
|
||||
|
||||
move-result v3
|
||||
|
||||
invoke-static {v3}, Lru/vtosters/lite/utils/Preferences;->compress(I)I
|
||||
|
||||
move-result v3
|
||||
|
||||
move-object/from16 v8, p2
|
||||
|
||||
invoke-virtual {v1, v5, v3, v8}, Landroid/graphics/Bitmap;->compress(Landroid/graphics/Bitmap$CompressFormat;ILjava/io/OutputStream;)Z
|
||||
|
||||
@@ -974,6 +974,10 @@
|
||||
|
||||
const/16 v4, 0x64
|
||||
|
||||
invoke-static {v4}, Lru/vtosters/lite/utils/Preferences;->compress(I)I
|
||||
|
||||
move-result v4
|
||||
|
||||
invoke-virtual {v2, v3, v4, v1}, Landroid/graphics/Bitmap;->compress(Landroid/graphics/Bitmap$CompressFormat;ILjava/io/OutputStream;)Z
|
||||
|
||||
.line 437
|
||||
|
||||
@@ -121,6 +121,10 @@
|
||||
|
||||
const/16 v3, 0x64
|
||||
|
||||
invoke-static {v3}, Lru/vtosters/lite/utils/Preferences;->compress(I)I
|
||||
|
||||
move-result v3
|
||||
|
||||
move-object v4, v1
|
||||
|
||||
check-cast v4, Ljava/io/OutputStream;
|
||||
|
||||
@@ -1036,6 +1036,10 @@
|
||||
|
||||
check-cast v13, Ljava/io/OutputStream;
|
||||
|
||||
invoke-static {v10}, Lru/vtosters/lite/utils/Preferences;->compress(I)I
|
||||
|
||||
move-result v10
|
||||
|
||||
invoke-virtual {v3, v6, v10, v13}, Landroid/graphics/Bitmap;->compress(Landroid/graphics/Bitmap$CompressFormat;ILjava/io/OutputStream;)Z
|
||||
|
||||
.line 126
|
||||
|
||||
@@ -139,6 +139,10 @@
|
||||
|
||||
const/16 v2, 0x64
|
||||
|
||||
invoke-static {v2}, Lru/vtosters/lite/utils/Preferences;->compress(I)I
|
||||
|
||||
move-result v2
|
||||
|
||||
invoke-virtual {p2, v0, v2, v1}, Landroid/graphics/Bitmap;->compress(Landroid/graphics/Bitmap$CompressFormat;ILjava/io/OutputStream;)Z
|
||||
|
||||
const-string p2, ""
|
||||
|
||||
@@ -765,6 +765,10 @@
|
||||
|
||||
const/16 v6, 0x5a
|
||||
|
||||
invoke-static {v6}, Lru/vtosters/lite/utils/Preferences;->compress(I)I
|
||||
|
||||
move-result v6
|
||||
|
||||
check-cast v4, Ljava/io/OutputStream;
|
||||
|
||||
invoke-virtual {p1, v5, v6, v4}, Landroid/graphics/Bitmap;->compress(Landroid/graphics/Bitmap$CompressFormat;ILjava/io/OutputStream;)Z
|
||||
|
||||
@@ -126,6 +126,10 @@
|
||||
|
||||
const/16 v3, 0xa
|
||||
|
||||
invoke-static {v3}, Lru/vtosters/lite/utils/Preferences;->compress(I)I
|
||||
|
||||
move-result v3
|
||||
|
||||
invoke-virtual {v1, v2, v3, v0}, Landroid/graphics/Bitmap;->compress(Landroid/graphics/Bitmap$CompressFormat;ILjava/io/OutputStream;)Z
|
||||
|
||||
.line 299
|
||||
|
||||
@@ -100,6 +100,10 @@
|
||||
|
||||
const/16 v6, 0x56
|
||||
|
||||
invoke-static {v6}, Lru/vtosters/lite/utils/Preferences;->compress(I)I
|
||||
|
||||
move-result v6
|
||||
|
||||
invoke-virtual {p1, v5, v6, v4}, Landroid/graphics/Bitmap;->compress(Landroid/graphics/Bitmap$CompressFormat;ILjava/io/OutputStream;)Z
|
||||
:try_end_1
|
||||
.catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_0
|
||||
|
||||
Reference in New Issue
Block a user