Compare commits

..
Author SHA1 Message Date
gdlbo dd6abafad5 added pref disableanimstickers to debug 2022-06-09 00:04:14 +03:00
gdlbo 0434f06bb5 fixed some accents 2022-06-08 23:44:58 +03:00
gdlbo 50971098ad fixed accent vkim link 2022-06-08 23:26:30 +03:00
gdlbo 1787f10fca fixed load friends page 2022-06-08 22:58:52 +03:00
gdlbo 6d2684db70 added shadow in dialogs vkme 2022-06-08 21:18:05 +03:00
gdlbo f0f1b3a946 disabled divider in dialogs 2022-06-08 21:09:12 +03:00
gdlbo ae9b703726 fixed shadow 2022-06-08 20:55:19 +03:00
gdlbo 10512fb74b fixed shadow on 31 sdk+ 2022-06-08 20:47:52 +03:00
gdlbo ce9bdba30c sdk 31 rounded msgs 2022-06-08 20:29:30 +03:00
gdlbo 188c98589c amoled theme for rounded msgs 2022-06-08 19:55:11 +03:00
gdlbo e5fa42ff14 some fixes 2022-06-08 19:32:29 +03:00
gdlbo f42aa95003 init rounded msg for light theme 2022-06-08 19:26:01 +03:00
gdlbo b16dc816b6 added applying theme after restart 2022-06-08 19:25:01 +03:00
gdlbo b86fe4d65d init rounded msg for dark theme 2022-06-08 18:50:28 +03:00
gdlbo d7e17416f1 init rounded theme 2022-06-08 18:41:03 +03:00
gdlbo 91355f1dd5 fixed stickers time color 2022-06-08 18:28:56 +03:00
gdlbo ae9e3ed07c fixes some themes logic 2022-06-08 17:22:11 +03:00
gdlbo f701993b0f fixes + more translations 2022-06-08 15:14:34 +03:00
gdlbo c5bf617f65 fixes + more translations 2022-06-08 14:02:45 +03:00
gdlbo f09cae1684 fixes 2022-06-07 17:50:02 +03:00
gdlbo 99d7f06981 New feature open news settings via settings lmao 2022-06-07 11:56:23 +03:00
gdlbo eaaf7e2bbf fixed news logic 2022-06-07 11:26:29 +03:00
gdlbo 897382de2b Fixed some translations + fixed settings logic 2022-06-07 11:24:44 +03:00
gdlbo 55d02a8412 Fixed links 2022-06-07 10:51:24 +03:00
gdlbo 7733582238 Casino update from 7 to 5 2022-06-04 22:14:36 +03:00
gdlbo 754c8339df Added randomize to disable donate alert 2022-06-04 21:18:50 +03:00
gdlbo ebf7baaa65 fixed links + disable recomms 2022-06-04 20:36:00 +03:00
gdlbo 8b26b12813 Added donate banners lmao 2022-06-04 20:04:28 +03:00
gdlbo 5deb4186f9 Fixed market colors 2022-06-04 11:25:38 +03:00
gdlbo d3d501f94a Fix dark accent color on monet 2022-06-04 10:25:41 +03:00
gdlbo 634f1213d4 Merge pull request #283 from bxkr/master 2022-06-04 09:32:58 +03:00
Andrew 6fa97ee435 Update R.java 2022-06-04 06:10:16 +03:00
gdlbo 05b3342763 Fix pull requests building 2022-06-04 04:54:54 +03:00
Andrew d434f42d12 Preferences localization
- Added en,ru translations for hardcoded strings in preferences
- Updated public.xml
- Fixed some ru strings
2022-06-03 23:38:52 +03:00
gdlbo 084f13eda4 Fix actions compiling 2022-06-03 20:36:56 +03:00
gdlbo ed59b54618 Fix actions compiling 2022-06-03 20:33:29 +03:00
gdlbo df282b95ad fix some strings 2022-06-03 19:43:23 +03:00
gdlbo 1b38533c83 color fixes 2022-06-03 17:47:29 +03:00
gdlbo 8f4c370ab2 Update build.gradle 2022-06-03 16:00:11 +03:00
gdlbo 9360ea4d85 Color article fixes 2022-06-02 19:45:49 +03:00
gdlbo c87d6581c8 Color fixes 2022-06-02 19:28:16 +03:00
gdlbo 7133fc6c03 Disabled discover ads 2022-06-02 19:04:24 +03:00
gdlbo 46af5af250 Fix https://github.com/vtosters/lite/issues/266 2022-06-02 17:38:28 +03:00
gdlbo 5b9cc6778c Fixes 2022-06-02 16:42:45 +03:00
gdlbo 5260ad8243 Fixed comments load 2022-06-02 14:25:32 +03:00
gdlbo 2996772020 Updated gitignore 2022-06-02 14:02:37 +03:00
gdlbo d37534cb6b Fixed icon changing 2022-06-02 13:25:19 +03:00
gdlbo 92eb48c21e Fixed crash + fixed msg cache 2022-06-02 13:06:55 +03:00
gdlbo d9e867cb6e Refactoring of some code that suggested what to fix in the comments in our vk group 2022-06-02 12:33:52 +03:00
gdlbo f200c6e59a Refactoring of some code that suggested what to fix in the comments in our vk group 2022-06-02 11:20:11 +03:00
gdlbo c668f3bf9a Refactoring 2022-05-31 16:55:19 +03:00
gdlbo bd7afee09b added more documentations 2022-05-31 16:43:58 +03:00
gdlbo ff09a4aec0 Added our git links 2022-05-26 20:25:51 +03:00
106 changed files with 3333 additions and 1632 deletions
+4 -1
View File
@@ -4,7 +4,10 @@ on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
types:
- opened
- synchronize
- reopened
workflow_dispatch:
+1
View File
@@ -25,3 +25,4 @@ smali/assets/version.properties
app/src/main/assets/version.properties
smali/build/resources.zip
*.idsig
/smali/VTLite.apk.cache/
+4
View File
@@ -8,6 +8,10 @@ VTosters Lite - это модифицированный клиент (деком
Стабильные сборки находятся в [Releases](https://github.com/vtosters/lite/releases)
Зеркало на нашем [Git](https://git.maki.su/gdlbo/lite)
Зеркало на [Github](https://github.com/vtosters/lite)
## Отладка приложения
Для отладки с помощью Android Studio необходимо пройти в `/smali/AndroidManifest.xml`
+2 -2
View File
@@ -91,8 +91,8 @@ android {
dependencies {
implementation "androidx.multidex:multidex:2.0.1"
implementation 'com.google.android.material:material:1.5.0'
implementation 'com.google.android.material:material:1.6.1'
implementation 'androidx.exifinterface:exifinterface:1.3.3'
implementation 'androidx.preference:preference:1.1.1'
implementation 'androidx.preference:preference:1.2.0'
compileOnly fileTree(dir: 'libs', include: ['*.jar'])
}
@@ -1,7 +1,7 @@
package bruhcollective.itaysonlab.libvkx.client;
import static ru.vtosters.lite.utils.Globals.getContext;
import static ru.vtosters.lite.utils.Preferences.BooleanFalse;
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
import android.content.Context;
import android.os.RemoteException;
@@ -36,7 +36,7 @@ public class LibVKXClient {
}
public static boolean isIntegrationEnabled() {
return BooleanFalse("libvkx_integration") && isVkxInstalled();
return getBoolValue("libvkx_integration", false) && isVkxInstalled();
}
public static boolean play(MusicTrack musicTrack, List<MusicTrack> list, PlayerRefer playerRefer) {
@@ -27,11 +27,11 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import ru.f0x1d.net.NetCall;
import ru.f0x1d.net.NetCallback;
import ru.f0x1d.net.NetClient;
import ru.f0x1d.net.NetRequest;
import ru.f0x1d.net.NetResponse;
import ru.vtosters.lite.net.NetCall;
import ru.vtosters.lite.net.NetCallback;
import ru.vtosters.lite.net.NetClient;
import ru.vtosters.lite.net.NetRequest;
import ru.vtosters.lite.net.NetResponse;
/**
* Created by Aefyr on 11.05.2018.
@@ -0,0 +1,26 @@
package com.vk.core.ui.themes;
import com.vk.s.R;
import ru.vtosters.lite.utils.Themes;
public enum VKTheme {
DEFAULT_LIGHT(0, R.g.BaseStyle),
DARK(1, R.g.BaseDarkStyle),
AMOLED(2, Themes.getAmoledTheme());
private final long id;
private final int themeResId;
VKTheme(long j, int i) {
this.id = j;
this.themeResId = i;
}
public final long a() {
return this.id;
}
public final int b() {
return this.themeResId;
}
}
@@ -0,0 +1,33 @@
package com.vk.im.ui.themes;
import static com.vk.im.ui.R.m.VkIm_Theme_VkApp_Dark;
import static com.vk.im.ui.R.m.VkIm_Theme_VkApp_Light;
import static com.vk.im.ui.R.m.VkIm_Theme_VkMe_Dark;
import static com.vk.im.ui.R.m.VkIm_Theme_VkMe_Light;
import ru.vtosters.lite.utils.Themes;
public enum ImTheme {
VKAPP_LIGHT(0, VkIm_Theme_VkApp_Light),
VKAPP_DARK(3, VkIm_Theme_VkApp_Dark),
VKME_LIGHT(1, VkIm_Theme_VkMe_Light),
VKME_DARK(2, VkIm_Theme_VkMe_Dark),
VKME_AMOLED(5, Themes.getAmoledMeTheme()),
VKAPP_AMOLED(4, Themes.getAmoledImTheme());
private final int id;
private final int themeResId;
ImTheme(int i, int i2) {
this.id = i;
this.themeResId = i2;
}
public final int a() {
return this.id;
}
public final int b() {
return this.themeResId;
}
}
+158 -7
View File
@@ -164,8 +164,18 @@ public final class R {
public static final int start_values = 0x7f03005c;
public static final int proxy = 0x7f03005d;
public static final int proxy_value = 0x7f03005e;
public static final int msgcount = 0x7f03005f;
public static final int msgcount_value = 0x7f030060;
public static final int commentssort = 0x7f03005f;
public static final int commentssort_value = 0x7f030060;
public static final int darktheme = 0x7f030061;
public static final int darktheme_value = 0x7f030062;
public static final int lighttheme = 0x7f030063;
public static final int lighttheme_value = 0x7f030064;
public static final int msgcount = 0x7f030065;
public static final int msgcount_value = 0x7f030066;
public static final int newsupdate = 0x7f030067;
public static final int newsupdate_value = 0x7f030068;
public static final int undel = 0x7f030069;
public static final int undel_value = 0x7f03006a;
}
public static final class attr {
@@ -2397,6 +2407,7 @@ public final class R {
public static final int window_bg_transparent = 0x7f06028b;
public static final int yellow = 0x7f06028c;
public static final int yellow_light = 0x7f06028d;
public static final int iclauncher = 0x7f06028e;
}
public static final class dimen {
@@ -14466,8 +14477,8 @@ public final class R {
public static final int copytokenbtn = 0x7f111029;
public static final int killappbtn = 0x7f11102a;
public static final int experts = 0x7f11102b;
public static final int DNT_OFF = 0x7f11102c;
public static final int DNT_ON = 0x7f11102d;
public static final int DNT_OFF_res_0x7f11102c = 0x7f11102c;
public static final int DNT_ON_res_0x7f11102d = 0x7f11102d;
public static final int accounts = 0x7f11102e;
public static final int act_bot = 0x7f11102f;
public static final int act_cnv = 0x7f111030;
@@ -14988,6 +14999,144 @@ public final class R {
public static final int vtlota = 0x7f111233;
public static final int DNR_ON = 0x7f111234;
public static final int DNR_OFF = 0x7f111235;
public static final int DNT_ON_res_0x7f111236 = 0x7f111236;
public static final int DNT_OFF_res_0x7f111237 = 0x7f111237;
public static final int other_clear_stickers_cache_summary = 0x7f111238;
public static final int dockbar_editor = 0x7f111239;
public static final int dockbar_reset = 0x7f11123a;
public static final int dockbar_save = 0x7f11123b;
public static final int dockbar_selected_items = 0x7f11123c;
public static final int dockbar_unselected_items = 0x7f11123d;
public static final int download_latest_vtl = 0x7f11123e;
public static final int other_fix_dynamic_colors = 0x7f11123f;
public static final int other_reset_settings = 0x7f111240;
public static final int other_reset_settings_summary = 0x7f111241;
public static final int other_fix_app = 0x7f111242;
public static final int activity_dnr_summary = 0x7f111243;
public static final int activity_dnr_visual = 0x7f111244;
public static final int activity_dnr_warn = 0x7f111245;
public static final int activity_dns_summary = 0x7f111246;
public static final int activity_dnw_summary = 0x7f111247;
public static final int activity_undel = 0x7f111248;
public static final int activity_undel_attachments = 0x7f111249;
public static final int activity_undel_dial = 0x7f11124a;
public static final int activity_undel_enable = 0x7f11124b;
public static final int activity_undel_tag = 0x7f11124c;
public static final int activity_what_is_it = 0x7f11124d;
public static final int appearance_other_color_navbar_summary = 0x7f11124e;
public static final int appearance_other_color_webview_summary = 0x7f11124f;
public static final int appearance_theme_dark_theme = 0x7f111250;
public static final int appearance_theme_dialog_title = 0x7f111251;
public static final int appearance_theme_info = 0x7f111252;
public static final int appearance_theme_info_summary = 0x7f111253;
public static final int appearance_theme_light_theme = 0x7f111254;
public static final int appearance_theme_use_system = 0x7f111255;
public static final int appearance_theme_use_system_summary = 0x7f111256;
public static final int debug_cache = 0x7f111257;
public static final int debug_cache_trusted_hash = 0x7f111258;
public static final int debug_cache_video = 0x7f111259;
public static final int debug_cache_webview = 0x7f11125a;
public static final int debug_developer_dark_mode = 0x7f11125b;
public static final int debug_developer_force_ssl = 0x7f11125c;
public static final int debug_developer_force_ssl_summary = 0x7f11125d;
public static final int debug_developer_functions = 0x7f11125e;
public static final int debug_developer_has_music_subscription = 0x7f11125f;
public static final int debug_developer_has_music_subscription_summary = 0x7f111260;
public static final int debug_developer_is_music_restricted = 0x7f111261;
public static final int debug_developer_is_music_restricted_summary = 0x7f111262;
public static final int debug_developer_mode = 0x7f111263;
public static final int debug_developer_mode_summary = 0x7f111264;
public static final int debug_developer_old_about = 0x7f111265;
public static final int debug_developer_ssfs_custom = 0x7f111266;
public static final int debug_domains = 0x7f111267;
public static final int debug_domains_api = 0x7f111268;
public static final int debug_domains_awayphp = 0x7f111269;
public static final int debug_domains_editing = 0x7f11126a;
public static final int debug_domains_editing_summary = 0x7f11126b;
public static final int debug_domains_oauth = 0x7f11126c;
public static final int debug_domains_vkui_host = 0x7f11126d;
public static final int debug_domains_vkui_spa = 0x7f11126e;
public static final int debug_experimental = 0x7f11126f;
public static final int debug_experimental_language = 0x7f111270;
public static final int debug_experimental_language_summary = 0x7f111271;
public static final int debug_experimental_libverify = 0x7f111272;
public static final int debug_experimental_libverify_summary = 0x7f111273;
public static final int debug_experimental_opusmodule = 0x7f111274;
public static final int debug_experimental_page_stats = 0x7f111275;
public static final int debug_experimental_page_stats_summary = 0x7f111276;
public static final int debug_experimental_usevkui = 0x7f111277;
public static final int debug_experimental_vk_me_mode = 0x7f111278;
public static final int debug_experimental_vk_sans_font = 0x7f111279;
public static final int debug_logging = 0x7f11127a;
public static final int debug_logging_api = 0x7f11127b;
public static final int debug_logging_api_errors = 0x7f11127c;
public static final int debug_logging_api_errors_summary = 0x7f11127d;
public static final int debug_logging_api_summary = 0x7f11127e;
public static final int debug_logging_apply_spaces = 0x7f11127f;
public static final int debug_logging_apply_spaces_summary = 0x7f111280;
public static final int debug_logging_breakpoints = 0x7f111281;
public static final int debug_logging_breakpoints_summary = 0x7f111282;
public static final int debug_logging_file = 0x7f111283;
public static final int debug_logging_file_summary = 0x7f111284;
public static final int debug_logging_force_stats_sending = 0x7f111285;
public static final int debug_logging_memleak = 0x7f111286;
public static final int debug_logging_visualise_viewposttime = 0x7f111287;
public static final int debug_logging_visualise_viewposttime_summary = 0x7f111288;
public static final int debug_logging_webview = 0x7f111289;
public static final int debug_other = 0x7f11128a;
public static final int debug_proxy = 0x7f11128b;
public static final int debug_proxy_enable = 0x7f11128c;
public static final int debug_proxy_enable_summary = 0x7f11128d;
public static final int debug_proxy_force = 0x7f11128e;
public static final int debug_proxy_force_summary = 0x7f11128f;
public static final int debug_show_settings_item = 0x7f111290;
public static final int debug_system = 0x7f111291;
public static final int debug_system_fcm = 0x7f111292;
public static final int debug_system_fcm_copy_token = 0x7f111293;
public static final int debug_system_google_now = 0x7f111294;
public static final int debug_system_language = 0x7f111295;
public static final int debug_system_terminate = 0x7f111296;
public static final int debug_tests = 0x7f111297;
public static final int debug_tests_ads = 0x7f111298;
public static final int debug_tests_bd = 0x7f111299;
public static final int debug_tests_captcha = 0x7f11129a;
public static final int debug_tests_crash = 0x7f11129b;
public static final int debug_tests_pretty_cards = 0x7f11129c;
public static final int debug_tests_spa = 0x7f11129d;
public static final int debug_tests_spa_uri = 0x7f11129e;
public static final int debug_tests_validation = 0x7f11129f;
public static final int debug_warning = 0x7f1112a0;
public static final int debug_warning_summary = 0x7f1112a1;
public static final int feed_ads_carousel_summary = 0x7f1112a2;
public static final int feed_ads_regular_summary = 0x7f1112a3;
public static final int feed_ads_sources = 0x7f1112a4;
public static final int feed_ads_sources_summary = 0x7f1112a5;
public static final int feed_ads_stories_summary = 0x7f1112a6;
public static final int feed_other_cache_summary = 0x7f1112a7;
public static final int feed_other_sort_comments = 0x7f1112a8;
public static final int feed_other_sort_comments_summary = 0x7f1112a9;
public static final int feed_other_update = 0x7f1112aa;
public static final int feed_other_update_dialog_title = 0x7f1112ab;
public static final int feed_recommendations_authors_summary = 0x7f1112ac;
public static final int feed_recommendations_friends_reacted_summary = 0x7f1112ad;
public static final int feed_recommendations_friends_summary = 0x7f1112ae;
public static final int interface_global_old_icons = 0x7f1112af;
public static final int interface_global_old_icons_summary = 0x7f1112b0;
public static final int messages_interface_calls_summary = 0x7f1112b1;
public static final int messages_interface_tails_summary = 0x7f1112b2;
public static final int messages_other_choose_count = 0x7f1112b3;
public static final int messages_other_download_first = 0x7f1112b4;
public static final int proxy_if = 0x7f1112b5;
public static final int proxy_login_title = 0x7f1112b6;
public static final int proxy_password_title = 0x7f1112b7;
public static final int vkx_download = 0x7f1112b8;
public static final int vk_fix_music = 0x7f1112b9;
public static final int vk_fix_music_summary = 0x7f1112ba;
public static final int vkx_integration = 0x7f1112bb;
public static final int vk_fix_music_other = 0x7f1112bc;
public static final int vkx_title = 0x7f1112bd;
public static final int vkx_why = 0x7f1112be;
public static final int vkx_why_summary = 0x7f1112bf;
}
public static final class style {
@@ -15929,9 +16078,11 @@ public final class R {
public static final int MD_Button_Borderless = 0x7f1203a7;
public static final int MD_Button_Borderless_Dialog = 0x7f1203a8;
public static final int MaterialDialogTheme_Dark = 0x7f1203a9;
public static final int BaseAmoledStyle = 0x7f1203aa;
public static final int BaseAmoledTheme = 0x7f1203ab;
public static final int Vk_Theme_client_amoled_generated = 0x7f1203ac;
public static final int ActionBarThemeFix = 0x7f1203aa;
public static final int BaseAmoledStyle = 0x7f1203ab;
public static final int BaseAmoledTheme = 0x7f1203ac;
public static final int Vk_Theme_client_amoled_generated = 0x7f1203ad;
public static final int VkIm_Theme_VkApp_Amoled = 0x7f1203ae;
}
public static final class xml {
@@ -1,86 +0,0 @@
package ru.f0x1d.net;
import static ru.vtosters.lite.utils.Globals.getUserToken;
import android.os.AsyncTask;
import com.vk.core.network.Network;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class F0x1dRequest {
public static void makeRequest(byte[] bArr, F0x1dRequestCallback f0x1dRequestCallback) {
new MakeRequestTask(bArr, f0x1dRequestCallback).execute();
}
public static void makeRequest(String str, F0x1dRequestCallback f0x1dRequestCallback) {
new MakeRequestTask(str.getBytes(), f0x1dRequestCallback).execute();
}
public static void makeRequestToaster(String str, F0x1dRequestCallback f0x1dRequestCallback, boolean z) {
new MakeRequestTask(str.getBytes(), f0x1dRequestCallback, true, !z).execute();
}
public interface F0x1dRequestCallback {
void onResponse(String str);
}
private static class MakeRequestTask extends AsyncTask<Void, Void, String> {
private final F0x1dRequestCallback callback;
private boolean mIsPut;
private boolean mIsVkToasterRequest;
private final byte[] url;
public MakeRequestTask(byte[] bArr, F0x1dRequestCallback f0x1dRequestCallback) {
this.mIsVkToasterRequest = false;
this.mIsPut = false;
this.callback = f0x1dRequestCallback;
this.url = bArr;
}
public MakeRequestTask(byte[] bArr, F0x1dRequestCallback f0x1dRequestCallback, boolean z, boolean z2) {
this.mIsVkToasterRequest = false;
this.mIsPut = false;
this.callback = f0x1dRequestCallback;
this.url = bArr;
this.mIsVkToasterRequest = z;
this.mIsPut = z2;
}
public String doInBackground(Void... voidArr) {
try {
HttpURLConnection httpURLConnection = (HttpURLConnection) new URL(new String(this.url)).openConnection();
httpURLConnection.setRequestMethod(this.mIsPut ? "PUT" : "GET");
if (this.mIsVkToasterRequest) {
httpURLConnection.setRequestProperty("Token", getUserToken());
}
if (!this.mIsVkToasterRequest) {
httpURLConnection.setRequestProperty("User-Agent", Network.a.a().a());
}
httpURLConnection.setRequestProperty("Content-Type", this.mIsVkToasterRequest ? "Content-Type" : "application/x-www-form-urlencoded");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream()));
StringBuffer stringBuffer = new StringBuffer();
while (true) {
String readLine = bufferedReader.readLine();
if (readLine != null) {
stringBuffer.append(readLine);
} else {
bufferedReader.close();
return stringBuffer.toString();
}
}
} catch (Exception e) {
return e.getLocalizedMessage();
}
}
public void onPostExecute(String str) {
super.onPostExecute(str);
this.callback.onResponse(str);
}
}
}
@@ -1,6 +1,6 @@
package ru.vtosters.lite.dnr;
import static ru.f0x1d.net.F0x1dRequest.makeRequest;
import static ru.vtosters.lite.net.Request.makeRequest;
import static ru.vtosters.lite.utils.Globals.getUserToken;
import static ru.vtosters.lite.utils.Proxy.getApiCom;
@@ -1,10 +1,10 @@
package ru.vtosters.lite.dnr;
import static ru.vtosters.lite.utils.Preferences.BooleanFalse;
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
public class DNRPrefs {
public static boolean getStoriesRead() {
return BooleanFalse("read_s");
return getBoolValue("read_s", false);
}
public static boolean getMarkAsReadWithoutExceptions(int peerId) {
@@ -28,27 +28,27 @@ public class DNRPrefs {
}
public static boolean readPM(int peer) {
return (peer > 0 && peer < 2000000000) && BooleanFalse("read_pm");
return (peer > 0 && peer < 2000000000) && getBoolValue("read_pm", false);
}
public static boolean readConversations(int peer) {
return (peer > 2000000000) && BooleanFalse("read_conversations");
return (peer > 2000000000) && getBoolValue("read_conversations", false);
}
public static boolean readBots(int peer) {
return (peer < 0) && BooleanFalse("read_bot");
return (peer < 0) && getBoolValue("read_bot", false);
}
public static boolean writePM(int peer) {
return (peer > 0 && peer < 2000000000) && BooleanFalse("write_pm");
return (peer > 0 && peer < 2000000000) && getBoolValue("write_pm", false);
}
public static boolean writeConversations(int peer) {
return (peer > 2000000000) && BooleanFalse("write_conversations");
return (peer > 2000000000) && getBoolValue("write_conversations", false);
}
public static boolean writeBots(int peer) {
return (peer < 0) && BooleanFalse("write_bot");
return (peer < 0) && getBoolValue("write_bot", false);
}
public static boolean getActivityWithoutExceptions(int peerId) {
@@ -1,5 +1,7 @@
package ru.vtosters.lite.downloaders;
import static ru.vtosters.lite.utils.Globals.getString;
import android.app.AlertDialog;
import android.app.DownloadManager;
import android.content.Context;
@@ -48,7 +50,7 @@ public class VideoDownloader {
}
if (list.isEmpty()) {
ToastUtils.a("Данное видео невозможно скачать");
ToastUtils.a(getString("videodownloaderr"));
return;
}
@@ -1,7 +1,6 @@
package ru.vtosters.lite.encryption.base;
import static ru.vtosters.lite.utils.Preferences.BooleanFalse;
import static ru.vtosters.lite.utils.Preferences.BooleanTrue;
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -50,29 +49,29 @@ public abstract class IMProcessor {
public boolean isUsed() {
//Log.d("IMProcessor", "Checking if decoded with "+getUIName());
return BooleanTrue("VT_IMDecode_"+getPrefKey());
return getBoolValue("VT_IMDecode_"+getPrefKey(), true);
}
public boolean isUsedToEncrypt(int id) {
//Log.d("IMProcessor", "Checking if "+id+" is ready to be encrypted with "+getUIName());
return BooleanFalse("VT_IMEncode_"+getPrefKey()+"_"+id);
return getBoolValue("VT_IMEncode_"+getPrefKey()+"_"+id, false);
}
public void enableEncryptFor(int id) {
Globals.getPrefs().edit().putBoolean("VT_IMEncode_"+getPrefKey()+"_"+id, true).apply();
Globals.getDefprefs().edit().putBoolean("VT_IMEncode_"+getPrefKey()+"_"+id, true).apply();
}
public void disableEncryptFor(int id) {
Globals.getPrefs().edit().putBoolean("VT_IMEncode_"+getPrefKey()+"_"+id, false).apply();
Globals.getDefprefs().edit().putBoolean("VT_IMEncode_"+getPrefKey()+"_"+id, false).apply();
}
public void setEncryptionKeyFor(int id, @Nullable String key) {
if (key == null || key.isEmpty()) key = "VTAesDefault";
Globals.getPrefs().edit().putString("VT_IMEncodeKey_"+getPrefKey()+"_"+id, key).apply();
Globals.getDefprefs().edit().putString("VT_IMEncodeKey_"+getPrefKey()+"_"+id, key).apply();
}
@Nullable
public String getEncryptionKeyFor(int id) {
return Globals.getPrefs().getString("VT_IMEncodeKey_"+getPrefKey()+"_"+id, null);
return Globals.getDefprefs().getString("VT_IMEncodeKey_"+getPrefKey()+"_"+id, null);
}
}
@@ -113,7 +113,7 @@ public class VTostersAESProcessor extends IMProcessor {
@Nullable
@Override
public String getEncryptionKeyFor(int id) {
return Globals.getPrefs().getString("VT_IMEncodeKey_"+getPrefKey()+"_"+id, "VTAesDefault");
return Globals.getDefprefs().getString("VT_IMEncodeKey_"+getPrefKey()+"_"+id, "VTAesDefault");
}
public static class Triple<F, S, T> {
@@ -2,6 +2,7 @@ package ru.vtosters.lite.f0x1d;
import static ru.vtosters.lite.utils.About.getBuildNumber;
import static ru.vtosters.lite.utils.Globals.getContext;
import static ru.vtosters.lite.utils.Globals.getString;
import android.app.Activity;
import android.app.Notification;
@@ -60,13 +61,13 @@ public class Crashreporter {
var builder = new Notification.Builder(getContext());
builder.setSmallIcon(R.drawable.ic_bug_24);
builder.setContentTitle("Произошла ошибка в работе VTLite!");
builder.setContentTitle(getString("vtl_crashed"));
builder.setContentText(logString);
builder.setStyle(new Notification.BigTextStyle().bigText(logString));
builder.setAutoCancel(true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) {
builder.addAction(new Notification.Action(0, "Загрузить логи", PendingIntent.getActivity(getContext(), (int) (Math.random() * 100.0d), foxbinIntent, PendingIntent.FLAG_CANCEL_CURRENT)));
builder.addAction(new Notification.Action(0, "Сохранить в файл", psaveLogIntent));
builder.addAction(new Notification.Action(0, getString("vtl_crash_upload"), PendingIntent.getActivity(getContext(), (int) (Math.random() * 100.0d), foxbinIntent, PendingIntent.FLAG_CANCEL_CURRENT)));
builder.addAction(new Notification.Action(0, getString("vtl_crash_save"), psaveLogIntent));
} else {
builder.setContentIntent(PendingIntent.getActivity(activity, 0, foxbinIntent, PendingIntent.FLAG_ONE_SHOT));
}
@@ -1,6 +1,6 @@
package ru.vtosters.lite.f0x1d;
import static ru.vtosters.lite.utils.Preferences.BooleanTrue;
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
import android.content.Context;
import android.content.SharedPreferences;
@@ -42,6 +42,7 @@ public class VTVerifications {
public static void load(Context context) {
mVerificationsCache = context.getSharedPreferences("vt_another_data", 0);
try {
processArray(new JSONArray(getLoaded(VERIFICATIONS_KEY)), sVerificationsMap, null);
processArray(new JSONArray(getLoaded(PROMETHEUS_KEY)), sPrometheusMap, null);
@@ -53,7 +54,7 @@ public class VTVerifications {
}
Request request = new Request.Builder()
.url("https://gdlbo.net/vktoaster/getGalo4kiBatch")
.url("https://vtosters.app/vktoaster/getGalo4kiBatch")
.a(RequestBody.a(MediaType.b("application/json; charset=UTF-8"), "{\"types\":[0,228,404,1337]}"))
.build();
@@ -102,9 +103,7 @@ public class VTVerifications {
}
public static boolean hasPrometheus(int i) {
return sPrometheusMap.get(i) != null ? sPrometheusMap.get(i) : false;
}
public static boolean isDeveloper(int i) {
@@ -132,13 +131,20 @@ public class VTVerifications {
return Base64.encodeToString(str.getBytes(), 1);
}
public static boolean vtverif() {
return getBoolValue("VT_Verification", true);
}
public static boolean isVerified(JSONObject jSONObject) {
if (jSONObject.optInt("verified", 0) == 1) {
return true;
}
if (!BooleanTrue("VT_Verification")) {
if (!getBoolValue("VT_Verification", true)) {
return false;
}
return isVerified((jSONObject.optString(NavigatorKeys.j) == null || (!jSONObject.optString(NavigatorKeys.j).equals("group") && !jSONObject.optString(NavigatorKeys.j).equals("page"))) ? jSONObject.optInt("id", 0) : -jSONObject.optInt("id", 0));
}
@@ -146,16 +152,19 @@ public class VTVerifications {
if (jSONObject.optInt("trending", 0) == 1) {
return true;
}
if (!BooleanTrue("VT_Fire")) {
if (!getBoolValue("VT_Fire", true)) {
return false;
}
return hasPrometheus((jSONObject.optString(NavigatorKeys.j) == null || (!jSONObject.optString(NavigatorKeys.j).equals("group") && !jSONObject.optString(NavigatorKeys.j).equals("page"))) ? jSONObject.optInt("id", 0) : -jSONObject.optInt("id", 0));
}
public static boolean hasDeveloper(JSONObject jSONObject) {
if (!BooleanTrue("VT_Dev")) {
if (!getBoolValue("VT_Dev", true)) {
return false;
}
return isDeveloper((jSONObject.optString(NavigatorKeys.j) == null || (!jSONObject.optString(NavigatorKeys.j).equals("group") && !jSONObject.optString(NavigatorKeys.j).equals("page"))) ? jSONObject.optInt("id", 0) : -jSONObject.optInt("id", 0));
}
@@ -2,6 +2,7 @@ package ru.vtosters.lite.foaf;
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.Proxy.getApiCom;
import static ru.vtosters.lite.utils.Proxy.proxy;
@@ -25,8 +26,7 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import ru.f0x1d.net.F0x1dRequest;
import ru.vtosters.lite.net.Request;
public class FoafBase {
private static final Pattern FOAF_REGEX = Pattern.compile("<ya:created dc:date=\"(.+?)\"\\/>");
@@ -35,7 +35,7 @@ public class FoafBase {
private static final OkHttpClient client = new OkHttpClient();
public static int GetLastSeenInt(int i) throws ParseException, IOException {
Matcher matcher = FOAF_REGEX_LAST_SEEN.matcher(client.newCall(new Request.Builder().url(getLink(i)).build()).b().body().string());
Matcher matcher = FOAF_REGEX_LAST_SEEN.matcher(client.newCall(new okhttp3.Request.Builder().url(getLink(i)).build()).b().body().string());
if (!matcher.find()) {
return 0;
}
@@ -63,12 +63,12 @@ public class FoafBase {
public static void loadAndShow(Context context, int i) {
ProgressDialog progressDialog = new ProgressDialog(context);
progressDialog.setMessage("Загрузка...");
progressDialog.setMessage(getString("com_facebook_loading"));
progressDialog.setCancelable(false);
progressDialog.show();
F0x1dRequest.F0x1dRequestCallback callback = str -> FoafBase.lambdaLoadAndShow(progressDialog, context, i, str);
F0x1dRequest.makeRequest(getLink(i), callback);
Request.RequestCallback callback =str -> FoafBase.lambdaLoadAndShow(progressDialog, context, i, str);
Request.makeRequest(getLink(i), callback);
}
static void lambdaLoadAndShow(ProgressDialog progressDialog, Context context, int i, String str) {
@@ -80,7 +80,7 @@ public class FoafBase {
matcher2.find();
String normalHumanDate = getNormalHumanDate(matcher.group(1));
getNormalHumanDate(matcher2.group(1));
AlertDialog.a a2 = new VkAlertDialog.a(context).a(R.string.addinf);
AlertDialog.a a2 = new VkAlertDialog.a(context).a(getIdentifier("addinf", "string"));
a2.b(getString("foafid") + " " + i + getString("foafregdate") + " " + normalHumanDate + getString("foafdate") + " " + daysPassedFromFoafDate(normalHumanDate)).b(17039370, null).b().show();
} catch (Exception e) {
e.printStackTrace();
@@ -1,4 +1,4 @@
package ru.f0x1d.net;
package ru.vtosters.lite.net;
import android.util.Base64;
@@ -1,4 +1,4 @@
package ru.f0x1d.net;
package ru.vtosters.lite.net;
import java.io.IOException;
@@ -1,4 +1,4 @@
package ru.f0x1d.net;
package ru.vtosters.lite.net;
import java.net.PasswordAuthentication;
import java.net.Proxy;
@@ -1,4 +1,4 @@
package ru.f0x1d.net;
package ru.vtosters.lite.net;
import java.util.Map;
import java.util.TreeMap;
@@ -1,4 +1,4 @@
package ru.f0x1d.net;
package ru.vtosters.lite.net;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
@@ -0,0 +1,76 @@
package ru.vtosters.lite.net;
import static ru.vtosters.lite.utils.Globals.getUserToken;
import android.os.AsyncTask;
import com.vk.core.network.Network;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class Request {
public static void makeRequest(byte[] bArr, RequestCallback RequestCallback) {
new MakeRequestTask(bArr, RequestCallback).execute();
}
public static void makeRequest(String str, RequestCallback RequestCallback) {
new MakeRequestTask(str.getBytes(), RequestCallback).execute();
}
public interface RequestCallback {
void onResponse(String str);
}
private static class MakeRequestTask extends AsyncTask<Void, Void, String> {
private final RequestCallback callback;
private boolean mIsPut;
private boolean mIsVTostersRequest;
private final byte[] url;
public MakeRequestTask(byte[] bArr, RequestCallback RequestCallback) {
mIsVTostersRequest = false;
mIsPut = false;
callback = RequestCallback;
url = bArr;
}
public String doInBackground(Void... voidArr) {
try {
HttpURLConnection httpURLConnection = (HttpURLConnection) new URL(new String(url)).openConnection();
httpURLConnection.setRequestMethod(mIsPut ? "PUT" : "GET");
if (mIsVTostersRequest) {
httpURLConnection.setRequestProperty("Token", getUserToken());
}
if (!mIsVTostersRequest) {
httpURLConnection.setRequestProperty("User-Agent", Network.a.a().a());
}
httpURLConnection.setRequestProperty("Content-Type", mIsVTostersRequest ? "Content-Type" : "application/x-www-form-urlencoded");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream()));
StringBuffer stringBuffer = new StringBuffer();
while (true) {
String readLine = bufferedReader.readLine();
if (readLine != null) {
stringBuffer.append(readLine);
} else {
bufferedReader.close();
return stringBuffer.toString();
}
}
} catch (Exception e) {
return e.getLocalizedMessage();
}
}
public void onPostExecute(String str) {
super.onPostExecute(str);
callback.onResponse(str);
}
}
}
@@ -2,7 +2,8 @@ package ru.vtosters.lite.ui.dialogs;
import static ru.vtosters.lite.utils.Globals.edit;
import static ru.vtosters.lite.utils.Globals.getContext;
import static ru.vtosters.lite.utils.Preferences.BooleanTrue;
import static ru.vtosters.lite.utils.Globals.getString;
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
import android.app.Activity;
import android.app.AlertDialog;
@@ -17,14 +18,14 @@ import ru.vtosters.lite.utils.OEMDetector;
public class DisableBattery {
public static void alert(Activity activity) {
if (OEMDetector.isOEM() && Build.VERSION.SDK_INT >= 23 && BooleanTrue("showDoze")) {
if (OEMDetector.isOEM() && Build.VERSION.SDK_INT >= 23 && getBoolValue("showDoze", true)) {
final Context context = getContext();
if (!((PowerManager) context.getSystemService(Context.POWER_SERVICE)).isIgnoringBatteryOptimizations(context.getPackageName())) {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle("Выключите оптимизацию батареи!");
builder.setMessage("Из-за того, что Вы используете оболочку из списка ниже - уведомления могут приходить с задержкой или не приходить вовсе. \n Для того, чтобы это исправить - нажмите на кнопку \"Отключить оптимизацию\". \n\nПрошивки на которых наблюдаются проблемы с пушами:\nFlyme, EMUI, MIUI, ColorOS, Samsung Experience или TouchWiz, Magic UI, ZenUI, Funtouch OS");
builder.setTitle(getString("batteryissuetitle"));
builder.setMessage(getString("batteryissuesumm"));
builder.setCancelable(false);
builder.setPositiveButton("Отключить оптимизацию", new DialogInterface.OnClickListener() {
builder.setPositiveButton(getString("batteryissuebtn1"), new DialogInterface.OnClickListener() {
@Override // android.content.DialogInterface.OnClickListener
public void onClick(DialogInterface dialogInterface, int i) {
Intent intent = new Intent("android.settings.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS");
@@ -35,7 +36,7 @@ public class DisableBattery {
context.startActivity(intent);
}
});
builder.setNeutralButton("Игнорировать", new DialogInterface.OnClickListener() {
builder.setNeutralButton(getString("batteryissuebtn2"), new DialogInterface.OnClickListener() {
@Override // android.content.DialogInterface.OnClickListener
public void onClick(DialogInterface dialogInterface, int i) {
edit().putBoolean("showDoze", false).apply();
@@ -2,8 +2,9 @@ package ru.vtosters.lite.ui.dialogs;
import static ru.vtosters.lite.utils.Globals.edit;
import static ru.vtosters.lite.utils.Globals.getContext;
import static ru.vtosters.lite.utils.Globals.getString;
import static ru.vtosters.lite.utils.Globals.isGmsInstalled;
import static ru.vtosters.lite.utils.Preferences.BooleanTrue;
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
import android.app.Activity;
import android.app.AlertDialog;
@@ -19,17 +20,17 @@ public class InstallGMS {
public static void alert(final Activity activity) {
if (!isGmsInstalled()) {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle("Внимание!");
builder.setMessage(Text());
builder.setTitle(getString("debug_warning"));
builder.setMessage(getString("gmsissuesumm"));
builder.setCancelable(false);
builder.setPositiveButton("Продолжить без GMS", new DialogInterface.OnClickListener() {
builder.setPositiveButton(getString("gmsissuebtn1"), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
edit().putBoolean("showAlertGms", false).apply();
}
});
builder.setNeutralButton("Установить GMS", new DialogInterface.OnClickListener() {
builder.setNeutralButton(getString("gmsissuebtn2"), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
@@ -39,13 +40,9 @@ public class InstallGMS {
context.startActivity(a2);
}
});
if (BooleanTrue("showAlertGms")) {
if (getBoolValue("showAlertGms", true)) {
builder.show();
}
}
}
private static String Text() {
return "На вашем устройстве отсутствует компонент Google Play Services (GMS), который необходим для корректной работы VTosters Lite";
}
}
@@ -1,7 +1,8 @@
package ru.vtosters.lite.ui.dialogs;
import static ru.vtosters.lite.utils.Globals.edit;
import static ru.vtosters.lite.utils.Preferences.BooleanTrue;
import static ru.vtosters.lite.utils.Globals.getString;
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
import android.app.Activity;
import android.app.AlertDialog;
@@ -18,17 +19,17 @@ public class Start {
activity.requestPermissions(new String[]{"android.permission.WRITE_EXTERNAL_STORAGE"}, 228);
}
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle("Внимание!");
builder.setTitle(getString("debug_warning"));
builder.setMessage(getWelcome());
builder.setCancelable(false);
builder.setPositiveButton("Продолжить", new DialogInterface.OnClickListener() {
builder.setPositiveButton(getString("startbtn2"), new DialogInterface.OnClickListener() {
@Override // android.content.DialogInterface.OnClickListener
public void onClick(DialogInterface dialogInterface, int i) {
edit().putBoolean("showAlert", false).apply();
}
});
builder.setNeutralButton("Новости", new DialogInterface.OnClickListener() {
builder.setNeutralButton(getString("startbtn1"), new DialogInterface.OnClickListener() {
@Override // android.content.DialogInterface.OnClickListener
public void onClick(DialogInterface dialogInterface, int i) {
@@ -36,15 +37,18 @@ public class Start {
activity.startActivity(new Intent("android.intent.action.VIEW").setData(Uri.parse("https://t.me/vtosters")));
}
});
if (BooleanTrue("showAlert")) {
if (getBoolValue("showAlert", true)) {
builder.show();
}
}
private static String getWelcome() {
if (!OEMDetector.isOEM()) {
return "Модификация VTosters Lite не имеет никакого отношения к VK Group!\nРаспространяется полностью бесплатно!";
String Default = getString("startsumm1");
if (OEMDetector.isOEM()){
return Default + getString("startsumm2");
}
return "Модификация VTosters Lite не имеет никакого отношения к VK Group!\nРаспространяется полностью бесплатно!\n\nПриложение может некорректно работать в связи с тем, что вы, скорее всего, используете оболочку из списка ниже. Все проблемы с отображением и работой приложения связаны только с вашей прошивкой и только с ней. Все багрепорты, присланные из-за проблем на этой прошивке, не рассматриваются разработчиками и не будут исправлены.\n\nНажимая на кнопку \"Продолжить\", вы соглашаетесь с тем, что возможные баги приложения могут произойти из-за специфики вашей прошивки. Рекомендуем использовать прошивки на базе AOSP для получения максимальной стабильности.\n\nПрошивки на которых наблюдаются проблемы с приложениями:\nFlyme, EMUI, MIUI, ColorOS, Samsung Experience или TouchWiz, Magic UI, ZenUI, Funtouch OS";
return Default;
}
}
@@ -1,7 +1,14 @@
package ru.vtosters.lite.ui.fragments;
import android.os.Bundle;
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.newsfeed.NewsfeedSettingsFragment;
import com.vtosters.lite.R;
import com.vtosters.lite.fragments.MaterialPreferenceToolbarFragment;
@@ -10,5 +17,23 @@ public class FeedFragment extends MaterialPreferenceToolbarFragment {
public void b(Bundle bundle) {
super.b(bundle);
a(R.xml.preferences_feed);
prefs();
}
private void prefs() {
a("officialnewssett").a(new FeedFragment.openofficialsett());
}
public class openofficialsett implements Preference.c {
openofficialsett() {
}
@Override // android.support.v7.preference.Preference.c
public boolean a(Preference preference) {
Context context = getContext();
Intent a2 = new Navigator(NewsfeedSettingsFragment.class).a(context);
context.startActivity(a2);
return true;
}
}
}
@@ -1,8 +1,7 @@
package ru.vtosters.lite.ui.fragments;
import static ru.vtosters.lite.utils.Globals.componentSwitcher;
import static ru.vtosters.lite.utils.Globals.getString;
import static ru.vtosters.lite.utils.IconHelper.switchToDefault;
import static ru.vtosters.lite.utils.IconHelper.switchToVK;
import android.os.Bundle;
import android.support.v7.preference.Preference;
@@ -22,10 +21,13 @@ public class ThemesFragment extends MaterialPreferenceToolbarFragment {
public boolean apply(Preference preference, Object obj) {
if (((Boolean) obj).booleanValue()) {
switchToVK();
componentSwitcher("VTIconDefault", false);
componentSwitcher("VTIconVK", true);
} else {
switchToDefault();
componentSwitcher("VTIconDefault", true);
componentSwitcher("VTIconVK", false);
}
ToastUtils.a(getString("iconapplying"));
return true;
}
@@ -1,6 +1,7 @@
package ru.vtosters.lite.ui.fragments.dockbar;
import static ru.vtosters.lite.utils.Globals.convertDpToPixel;
import static ru.vtosters.lite.utils.Globals.getString;
import static ru.vtosters.lite.utils.Globals.restartApplication;
import android.os.Bundle;
@@ -40,7 +41,7 @@ public class DockBarFragment extends ToolbarFragment {
container.addView(buttonsContainer, new LinearLayout.LayoutParams(-1, -2));
Button save = new Button(n());
save.setText("Сохранить");
save.setText(getString("dockbar_save"));
save.setOnClickListener(v -> {
DockBarManager.getInstance().save();
restartApplication();
@@ -54,7 +55,7 @@ public class DockBarFragment extends ToolbarFragment {
buttonsContainer.addView(divider, new LinearLayout.LayoutParams(convertDpToPixel(10), 0));
Button reset = new Button(n());
reset.setText("Сбросить");
reset.setText(getString("dockbar_reset"));
reset.setOnClickListener(v -> {
DockBarManager.getInstance().delete();
restartApplication();
@@ -83,6 +84,6 @@ public class DockBarFragment extends ToolbarFragment {
super.a(arg0, arg1);
a("Редактор докбара");
a(getString("dockbar_editor"));
}
}
@@ -1,6 +1,6 @@
package ru.vtosters.lite.ui.fragments.dockbar;
import static ru.vtosters.lite.utils.Globals.getContext;
import static ru.vtosters.lite.utils.Globals.getResources;
import static ru.vtosters.lite.utils.Themes.getAccentColor;
import android.content.res.ColorStateList;
@@ -63,7 +63,7 @@ public class DockBarInjector {
for (DockBarTab tab : sManager.getSelectedTabs()) {
MenuItem add = menu.add(0, tab.id, 0, tab.titleID);
Drawable drawable = getContext().getResources().getDrawable(tab.iconID);
Drawable drawable = getResources().getDrawable(tab.iconID);
ColorStateList dockcolors = new ColorStateList(
new int[][]{
new int[]{android.R.attr.state_checked},
@@ -1,12 +1,12 @@
package ru.vtosters.lite.ui.fragments.dockbar;
import static ru.vtosters.lite.utils.Globals.getContext;
import static ru.vtosters.lite.utils.Globals.getString;
import static ru.vtosters.lite.utils.Preferences.newfeed;
import static ru.vtosters.lite.utils.Preferences.olddock;
import com.vk.apps.AppsFragment;
import com.vk.discover.DiscoverFragment;
import com.vk.discover.GatewaysFragment;
import com.vk.fave.fragments.FaveTabFragment;
import com.vk.feedlikes.fragments.FeedLikesFragment;
import com.vk.menu.MenuFragment;
@@ -52,8 +52,8 @@ public class DockBarManager {
private final List<DockBarTab> mSelectedTabs = new ArrayList<>();
private final List<DockBarTab> mDisabledTabs = new ArrayList<>();
private final List<String> mGroups = Arrays.asList(
"Выбранные элементы докбара",
"Невыбранные элементы"
getString("dockbar_selected_items"),
getString("dockbar_unselected_items")
);
public DockBarManager() {
load();
@@ -80,7 +80,7 @@ public class DockBarManager {
if (!dockbar.exists()) {
mSelectedTabs.add(new DockBarTab("tab_news", olddock() ? R.drawable.ic_newsfeed_28 : R.drawable.ic_menu_newsfeed_outline_28, R.string.newsfeed, R.id.tab_news, newfeed() ? HomeFragment.class : NewsfeedFragment.class));
mSelectedTabs.add(new DockBarTab("tab_discover", olddock() ? R.drawable.ic_search_28 : R.drawable.ic_menu_search_outline_28, R.string.search, R.id.tab_discover, newfeed() ? GatewaysFragment.class : DiscoverFragment.class ));
mSelectedTabs.add(new DockBarTab("tab_discover", olddock() ? R.drawable.ic_search_28 : R.drawable.ic_menu_search_outline_28, R.string.search, R.id.tab_discover, DiscoverFragment.class ));
mSelectedTabs.add(new DockBarTab("tab_messages", olddock() ? R.drawable.ic_menu_messages_28 : R.drawable.ic_message_28_outline, R.string.messages, R.id.tab_messages, DialogsFragment.class));
mSelectedTabs.add(new DockBarTab("tab_feedback", olddock() ? R.drawable.ic_menu_notifications_28 : R.drawable.ic_menu_notification_outline_28, R.string.feedback, R.id.tab_feedback, NotificationsContainerFragment.class));
mSelectedTabs.add(new DockBarTab("tab_menu", olddock() ? R.drawable.ic_menu_more_28 : R.drawable.ic_menu_more_outline_28, R.string.menu, R.id.tab_menu, MenuFragment.class));
@@ -124,8 +124,8 @@ public class DockBarManager {
} else {
if (tab.fragmentClass == HomeFragment.class) {
tab.fragmentClass = NewsfeedFragment.class;
} else if (tab.fragmentClass == GatewaysFragment.class) {
tab.fragmentClass = GatewaysFragment.class;
} else if (tab.fragmentClass == DiscoverFragment.class) {
tab.fragmentClass = DiscoverFragment.class;
}
}
mSelectedTabs.add(tab);
@@ -145,12 +145,12 @@ public class DockBarManager {
if (tab.fragmentClass == NewsfeedFragment.class) {
tab.fragmentClass = HomeFragment.class;
} else if (tab.fragmentClass == DiscoverFragment.class) {
tab.fragmentClass = GatewaysFragment.class;
tab.fragmentClass = DiscoverFragment.class;
}
} else {
if (tab.fragmentClass == HomeFragment.class) {
tab.fragmentClass = NewsfeedFragment.class;
} else if (tab.fragmentClass == GatewaysFragment.class) {
} else if (tab.fragmentClass == DiscoverFragment.class) {
tab.fragmentClass = DiscoverFragment.class;
}
}
@@ -3,6 +3,7 @@ package ru.vtosters.lite.ui.fragments.multiaccount;
import static ru.vtosters.lite.utils.Globals.convertDpToPixel;
import static ru.vtosters.lite.utils.Globals.getContext;
import static ru.vtosters.lite.utils.Globals.getResources;
import static ru.vtosters.lite.utils.Globals.getString;
import static ru.vtosters.lite.utils.Globals.isNetworkConnected;
import static ru.vtosters.lite.utils.Globals.restartApplication;
import static ru.vtosters.lite.utils.Themes.getTextAttr;
@@ -119,7 +120,7 @@ public class MultiAccountAdapter extends RecyclerView.a<MultiAccountAdapter.Mult
public void bind(MultiAccountItem item, int pos) {
if (pos == 0) {
mNickname.setText("Добавить новый аккаунт");
mNickname.setText(getString("add_another_account"));
mContainer.setOnClickListener(v -> {
MultiAccountManager.addAccount();
@@ -60,7 +60,7 @@ public class StickersFragment extends ToolbarFragment {
public final static String ACTION_RELOAD = "com.vtosters.lite.action.RELOAD_TGS_LIST";
private final static int TYPE_DIRECT = 0, TYPE_SOCKS = 2, TYPE_TOASTER_SERVER = 3;
private final static int TYPE_DIRECT = 0, TYPE_SOCKS = 2;
private static final String TAG = "StickersFragment";
public int from;
public int to;
@@ -97,7 +97,6 @@ public class StickersFragment extends ToolbarFragment {
private void initGrabber() {
int method = TGPref.getTGConnectMethod();
switch (method) {
case TYPE_TOASTER_SERVER:
case TYPE_DIRECT:
TelegramStickersGrabber.USE_PROXY = false;
grabber.resetProxy();
@@ -251,7 +250,6 @@ public class StickersFragment extends ToolbarFragment {
openMenu(getString("stickersproxy1"));
return;
}
case TYPE_TOASTER_SERVER:
case TYPE_DIRECT:
final Runnable work = () -> {
LinearLayout linearLayout = new LinearLayout(super.n());
@@ -1,6 +1,6 @@
package ru.vtosters.lite.ui.fragments.tgstickers;
import static ru.vtosters.lite.utils.Globals.getContext;
import static ru.vtosters.lite.utils.Globals.getIdentifier;
import static ru.vtosters.lite.utils.Globals.getString;
import android.os.Bundle;
@@ -19,7 +19,7 @@ public class StickersPreferencesFragment extends MaterialPreferenceToolbarFragme
public void b(Bundle bundle) {
super.b(bundle);
int vtosterXml = getContext().getResources().getIdentifier("empty", "xml", getContext().getPackageName());
int vtosterXml = getIdentifier("empty", "xml");
this.a(vtosterXml);
PreferencesUtil.addPreferenceCategory(this, getString("sprefsstickers"));
@@ -85,7 +85,7 @@ public class StickersPreferencesFragment extends MaterialPreferenceToolbarFragme
@Override
public int aq() {
return getContext().getResources().getIdentifier("vtltgs", "string", getContext().getPackageName());
return getIdentifier("vtltgs", "string");
}
}
@@ -2,6 +2,7 @@ package ru.vtosters.lite.utils;
import static ru.vtosters.lite.utils.Globals.getApplicationName;
import static ru.vtosters.lite.utils.Globals.getContext;
import static ru.vtosters.lite.utils.Globals.getIdentifier;
import static ru.vtosters.lite.utils.Preferences.VERSIONNAME;
import static ru.vtosters.lite.utils.Preferences.oldabout;
@@ -19,32 +20,34 @@ public class About {
public static void injectAbout(List<Items2> list) {
list.clear();
list.add(new Items1());
if (!oldabout()) {
list.add(new Items(21, com.vtosters.lite.R.string.opencommit));
list.add(new Items(8, com.vtosters.lite.R.string.tgchannel));
list.add(new Items(9, com.vtosters.lite.R.string.tgchat));
list.add(new Items(16, com.vtosters.lite.R.string.vtfaq));
list.add(new Items(19, com.vtosters.lite.R.string.vtsite));
list.add(new Items(20, com.vtosters.lite.R.string.donate));
list.add(new Items(17, com.vtosters.lite.R.string.vkgroup));
list.add(new Items(18, com.vtosters.lite.R.string.sett_debug));
list.add(new Items(21, getIdentifier("opencommit", "string")));
list.add(new Items(8, getIdentifier("tgchannel", "string")));
list.add(new Items(9, getIdentifier("tgchat", "string")));
list.add(new Items(16, getIdentifier("vtfaq", "string")));
list.add(new Items(19, getIdentifier("vtsite", "string")));
list.add(new Items(20, getIdentifier("donate", "string")));
list.add(new Items(17, getIdentifier("vkgroup", "string")));
list.add(new Items(18, getIdentifier("sett_debug", "string")));
return;
}
list.add(new Items(0, com.vtosters.lite.R.string.about_app_feedback));
list.add(new Items(1, com.vtosters.lite.R.string.about_app_estimate));
list.add(new Items(2, com.vtosters.lite.R.string.about_app_privacy));
list.add(new Items(5, com.vtosters.lite.R.string.about_app_cookie));
list.add(new Items(3, com.vtosters.lite.R.string.about_app_terms_to_use));
list.add(new Items(4, com.vtosters.lite.R.string.about_app_license));
list.add(new Items(6, com.vtosters.lite.R.string.about_app_data_protect));
list.add(new Items(8, com.vtosters.lite.R.string.sett_debug));
list.add(new Items(0, getIdentifier("about_app_feedback", "string")));
list.add(new Items(1, getIdentifier("about_app_estimate", "string")));
list.add(new Items(2, getIdentifier("about_app_privacy", "string")));
list.add(new Items(5, getIdentifier("about_app_cookie", "string")));
list.add(new Items(3, getIdentifier("about_app_terms_to_use", "string")));
list.add(new Items(4, getIdentifier("about_app_license", "string")));
list.add(new Items(6, getIdentifier("about_app_data_protect", "string")));
list.add(new Items(8, getIdentifier("sett_debug", "string")));
}
public static String getBuildNumber() {
return getBuild(getContext(), "version.properties");
}
public static String getCommitLink() {
return "https://github.com/vtosters/lite/commit/" + getBuild(getContext(), "version.properties");
return "https://git.maki.su/gdlbo/lite/commit/" + getBuild(getContext(), "version.properties"); // https://github.com/vtosters/lite/commit/ github repo
}
public static String getBuild(Context context, String name) {
@@ -2,7 +2,7 @@ package ru.vtosters.lite.utils;
import static ru.vtosters.lite.utils.Globals.getContext;
import static ru.vtosters.lite.utils.Globals.getPrefsValue;
import static ru.vtosters.lite.utils.Preferences.BooleanFalse;
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
import android.content.ContentValues;
import android.database.Cursor;
@@ -25,7 +25,6 @@ import java.util.List;
import ru.vtosters.lite.encryption.EncryptProvider;
public class DeletedMessagesHandler {
private static List<Integer> sDeletedMessagesList = new ArrayList<>();
private static SQLiteDatabase sVKSQLiteDatabase;
@@ -44,7 +43,7 @@ public class DeletedMessagesHandler {
}
public static boolean hook() {
return BooleanFalse("undeletemsg");
return getBoolValue("undeletemsg", true);
}
public static void setBodyDBParser(Msg msg) {
@@ -76,17 +75,7 @@ public class DeletedMessagesHandler {
}
private static String getPreifxUndelete() {
String string = getPrefsValue("undeletemsg_prefix");
if (string.isEmpty()) {
return "[Удалено] ";
}
if (string.equals("icon")) {
return "\uD83D\uDDD1 ";
}
if (string.equals("icon2")) {
return "❌ ";
}
return "[Удалено] ";
return getPrefsValue("undeletemsg_prefix_value") + " ";
}
public static void updateDialog(MsgDeleteLpTask msgDeleteLpTask) {
@@ -128,7 +117,6 @@ public class DeletedMessagesHandler {
}
public static class DeletedMessagesDBHelper extends SQLiteOpenHelper {
public DeletedMessagesDBHelper() {
super(getContext(), "deleted_msgs", null, 1);
}
@@ -1,11 +1,13 @@
package ru.vtosters.lite.utils;
import static ru.vtosters.lite.utils.Preferences.getLocale;
import static ru.vtosters.lite.utils.Preferences.preferences;
import android.app.Activity;
import android.app.Application;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
@@ -16,6 +18,7 @@ import android.net.NetworkInfo;
import android.os.Build;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Log;
import android.widget.Toast;
import androidx.annotation.NonNull;
@@ -34,21 +37,23 @@ import java.util.Locale;
public class Globals {
private static final List<Activity> activities = new ArrayList<>();
static SharedPreferences prefs = getContext().getSharedPreferences("com.vtosters.lite_preferences", Context.MODE_PRIVATE);
public static SharedPreferences getPrefs() {
if (prefs == null) prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
return prefs;
public static SharedPreferences getDefprefs() {
if (preferences == null) preferences = PreferenceManager.getDefaultSharedPreferences(getContext());
return preferences;
}
public static void componentSwitcher(String component, Boolean enabled) {
var packageManager = getContext().getPackageManager();
packageManager.setComponentEnabledSetting(new ComponentName(getPackageName(), getPackageName() + "." + component), enabled? PackageManager.COMPONENT_ENABLED_STATE_ENABLED : PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
} // Component switcher for changing app icon
public static String getPrefsValue(String pref) {
return getPreferences().getString(pref, "");
}
} // Get pref value as string
// Current UserId
public static int getUserId() {
return VKAccountManager.b().a();
}
} // Current UserId
public static String getUserSecret() {
return VKAccountManager.b().c();
@@ -60,17 +65,15 @@ public class Globals {
public static SharedPreferences.Editor edit() {
return PreferenceManager.getDefaultSharedPreferences(getContext()).edit();
}
} // Edit SharedPreferences
// Delete and reload msg cache
public static void reloadMSG() {
ImEngineProvider.a().h();
}
} // Delete and reload msg cache
// UserId Profile via userProfile
public static int getUserID(UserProfile userProfile) {
return userProfile.n;
}
} // UserId Profile via userProfile
public static String getUserFirstName(UserProfile userProfile) {
return userProfile.p;
@@ -80,26 +83,25 @@ public class Globals {
return userProfile.o;
}
// UserId Profile via extendedUserProfile
public static int getUserID(ExtendedUserProfile extendedUserProfile) {
return getUserID(fromEup(extendedUserProfile));
}
} // UserId Profile via extendedUserProfile
public static UserProfile fromEup(ExtendedUserProfile extendedUserProfile) {
return extendedUserProfile.a;
}
// Application restart (works on sdk 29+ too)
public static void restartApplication() {
Context ctx = getContext();
PackageManager pm = ctx.getPackageManager();
Intent intent = pm.getLaunchIntentForPackage(ctx.getPackageName());
Intent mainIntent = Intent.makeRestartActivityTask(intent.getComponent());
ctx.startActivity(mainIntent);
Runtime.getRuntime().exit(0);
}
// Global Context
Runtime.getRuntime().exit(0);
} // Application restart (works on sdk 29+ too)
@NonNull
public static Context getContext() {
try {
@@ -111,9 +113,9 @@ public class Globals {
e.printStackTrace();
}
return null;
}
} // Getting the global context through reflection to use context on application initialization
// Google Market Services check
public static boolean isGmsInstalled() {
try {
getContext().getPackageManager().getPackageInfo("com.google.android.gms", 0);
@@ -121,26 +123,32 @@ public class Globals {
} catch (Exception unused) {
return false;
}
}
} // Google Market Services check
public static Resources getResources() {
return getContext().getResources();
}
public static int getIdentifier(String str, String str2) {
return getResources().getIdentifier(str, str2, getContext().getPackageName());
}
public static int getIdentifier(String name, String type) {
try {
return getResources().getIdentifier(name, type, getContext().getPackageName());
} catch (Exception e) {
Log.d("VTLite", "Not found " + name + "as type " + type);
e.printStackTrace();
}
return 0;
} // Get res id
public static String getString(String str) {
return getContext().getString(Integer.parseInt(String.valueOf(getContext().getResources().getIdentifier(str, "string", getContext().getPackageName()))));
}
public static String getString(String resourcename) {
return getContext().getString(getIdentifier(resourcename, "string"));
} // Get string via getIdentifier
public static String getPackageName() {
return getContext().getPackageName();
}
public static int convertDpToPixel(float f) {
return (int) (f * ((float) getContext().getResources().getDisplayMetrics().densityDpi / 160.0f));
return (int) (f * ((float) getResources().getDisplayMetrics().densityDpi / 160.0f));
}
public static SharedPreferences getPreferences() {
@@ -159,28 +167,25 @@ public class Globals {
ConnectivityManager cm = (ConnectivityManager) getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
return activeNetwork != null && activeNetwork.isConnectedOrConnecting();
}
} // Network check
// Music channels fix
public static void fixGapps() {
try {
if (Build.VERSION.SDK_INT >= 26) {
NotificationManager notificationManager = (NotificationManager) getContext().getSystemService(Context.NOTIFICATION_SERVICE);
boolean hasMusicChannel = false;
try {
if (notificationManager.getNotificationChannel("audio_playback_channel") != null) {
hasMusicChannel = true;
}
} catch (Exception ignored) {
}
} catch (Exception ignored) {}
if (!hasMusicChannel) {
notificationManager.createNotificationChannel(new NotificationChannel("audio_playback_channel", getResources().getString(com.vtosters.lite.R.string.audio_message_play_error), NotificationManager.IMPORTANCE_LOW));
notificationManager.createNotificationChannel(new NotificationChannel("audio_playback_channel", getResources().getString(getIdentifier("audio_message_play_error", "string")), NotificationManager.IMPORTANCE_LOW));
}
}
} catch (Exception ignored) {
}
}
} catch (Exception ignored) {}
} // Music channels fix
public static void registerActivities(Application application) {
application.registerActivityLifecycleCallbacks(new Application.ActivityLifecycleCallbacks() {
@@ -227,22 +232,25 @@ public class Globals {
return getContext().getApplicationInfo().loadLabel(getContext().getPackageManager()).toString();
}
// Language changer and BaseContext inject
public static Context BaseContextLocale(Context context) {
Locale locale = new Locale(getLocale());
Locale.setDefault(locale);
var resources = context.getResources();
var configuration = resources.getConfiguration();
if (Build.VERSION.SDK_INT >= 24) {
configuration.setLocale(locale);
configuration.setLayoutDirection(locale);
return context.createConfigurationContext(configuration);
}
configuration.locale = locale;
configuration.setLayoutDirection(locale);
resources.updateConfiguration(configuration, resources.getDisplayMetrics());
return context;
}
} // Language changer and BaseContext injector
public static float[] getCenterScreenCoords() {
int width = getResources().getDisplayMetrics().widthPixels;
@@ -1,23 +0,0 @@
package ru.vtosters.lite.utils;
import static ru.vtosters.lite.utils.Globals.getContext;
import static ru.vtosters.lite.utils.Globals.getPackageName;
import android.content.ComponentName;
import android.content.pm.PackageManager;
public class IconHelper {
public static void switchToVK() {
var packageManager = getContext().getPackageManager();
var packageName = getPackageName();
packageManager.setComponentEnabledSetting(new ComponentName(packageName, getPackageName() + ".VTIconDefault"), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
packageManager.setComponentEnabledSetting(new ComponentName(packageName, getPackageName() + ".VTIconVK"), PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
}
public static void switchToDefault() {
var packageManager = getContext().getPackageManager();
var packageName = getPackageName();
packageManager.setComponentEnabledSetting(new ComponentName(packageName, getPackageName() + ".VTIconDefault"), PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
packageManager.setComponentEnabledSetting(new ComponentName(packageName, getPackageName() + ".VTIconVK"), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
}
}
@@ -0,0 +1,53 @@
package ru.vtosters.lite.utils;
import static ru.vtosters.lite.utils.Preferences.donaterecomm;
import static ru.vtosters.lite.utils.Preferences.hasVerification;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.Random;
public class JsonInjectors {
public static JSONObject profileButton() throws JSONException {
String pic = "https:\\/\\/sun1-18.userapi.com\\/NLd_rNpGuSaBnPV6O-j5mqCGZk8BK8drAMd2LQ\\/5R-DEF37PFs.png";
String title = "Помоги проекту донатом и получи бонус!";
String link = "https:\\/\\/vk.com\\/vtosters_official";
String text_color = "2D81E0";
JSONObject jsonObj = new JSONObject("{\"action\":{\"target\":\"internal\",\"type\":\"open_url\",\"url\":\"" + link + "\"},\"title\":\"" + title + "\",\"icons\":[{\"url\":\"" + pic + "\",\"width\":20,\"height\":20},{\"url\":\"" + pic + "\",\"width\":40,\"height\":40},{\"url\":\"" + pic + "\",\"width\":60,\"height\":60},{\"url\":\"" + pic + "\",\"width\":80,\"height\":80}],\"text_color\":\"" + text_color + "\"}");
return jsonObj;
}
public static JSONObject discoverBanner() throws JSONException {
String smallimg = "https:\\/\\/sun1-25.userapi.com\\/3D4YtNHjgwoyxav3FksnYRINp_FhWULuDKYdcA\\/zfCUgKMS0O4.png";
String background = "https:\\/\\/images.wsj.net\\/im-501403";
String title = "Задонать";
String desc = "Помоги проекту донатом и получи приятные бонусы на аккаунт";
String text_color = "ffffff";
JSONObject jsonObj = new JSONObject("{\"title\":\"" + title + "\",\"description\":\"" + desc + "\",\"text_color\":\"#" + text_color + "\",\"image\":[{\"url\":\"" + smallimg + "\",\"width\":72,\"height\":72},{\"url\":\"" + smallimg + "\",\"width\":108,\"height\":108},{\"url\":\"" + smallimg + "\",\"width\":144,\"height\":144},{\"url\":\"" + smallimg + "\",\"width\":216,\"height\":216},{\"url\":\"" + smallimg + "\",\"width\":288,\"height\":288}],\"background\":[{\"url\":\"" + background + "\",\"width\":344,\"height\":215},{\"url\":\"" + background + "\",\"width\":516,\"height\":323},{\"url\":\"" + background + "\",\"width\":680,\"height\":426},{\"url\":\"" + background + "\",\"width\":1032,\"height\":645},{\"url\":\"" + background + "\",\"width\":1376,\"height\":860}]}");
return jsonObj;
}
public static JSONObject discoverBannerButton() throws JSONException {
String link = "vk.com\\/vtosters_official";
JSONObject jsonObj = new JSONObject("{\"type\":\"open_url\",\"url\":\"" + link + "\",\"target\":\"internal\"}");
return jsonObj;
}
public static String haveDonateBanner() {
Random random = new Random();
int randomshower = random.nextInt(7);
return hasVerification() || donaterecomm() || randomshower != 1 ? "null" : "info";
}
public static String haveDonateButton() {
Random random = new Random();
int randomshower = random.nextInt(7);
return hasVerification() || donaterecomm() || randomshower != 1 ? "null" : "buttons";
}
}
@@ -4,19 +4,19 @@ import static java.lang.Long.MAX_VALUE;
import static ru.vtosters.lite.ui.fragments.dockbar.DockBarManager.getInstance;
import static ru.vtosters.lite.utils.Globals.getContext;
import static ru.vtosters.lite.utils.Globals.getPrefsValue;
import static ru.vtosters.lite.utils.Preferences.BooleanTrue;
import static ru.vtosters.lite.utils.Preferences.CommentsSort;
import static ru.vtosters.lite.utils.Preferences.adsgroup;
import static ru.vtosters.lite.utils.Preferences.adsstories;
import static ru.vtosters.lite.utils.Preferences.authorsrecomm;
import static ru.vtosters.lite.utils.Preferences.copyright_post;
import static ru.vtosters.lite.utils.Preferences.friendsrecomm;
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
import static ru.vtosters.lite.utils.Preferences.newfeed;
import static ru.vtosters.lite.utils.Preferences.postsrecomm;
import com.vk.apps.AppsFragment;
import com.vk.core.preference.Preference;
import com.vk.discover.DiscoverFragment;
import com.vk.discover.GatewaysFragment;
import com.vk.fave.fragments.FaveTabFragment;
import com.vk.menu.MenuFragment;
import com.vk.music.fragment.MusicFragment;
@@ -74,7 +74,7 @@ public class Newsfeed {
}
public static void getFilter(String boolname, String filename) {
if (BooleanTrue(boolname)) {
if (getBoolValue(boolname, true)) {
try {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(getContext().getAssets().open(filename)));
while (true) {
@@ -90,7 +90,7 @@ public class Newsfeed {
e.printStackTrace();
}
}
}
} // Get needed filter list from assets
public static boolean injectFilters(JSONObject jSONObject) {
String optString = jSONObject.optString(NavigatorKeys.j, "");
@@ -105,19 +105,19 @@ public class Newsfeed {
}
}
return false;
}
} // json newsfeed/posts injector to detect and delete posts
public static boolean authors_rec(String str) {
return str.equals("authors_rec") && !authorsrecomm();
return str.equals("authors_rec") && authorsrecomm();
}
public static boolean captions(JSONObject jSONObject) {
try {
JSONObject jSONObject2 = jSONObject.getJSONObject("caption");
if (!Preferences.captions()) {
if (Preferences.captions()) {
return true;
}
return (jSONObject2.getString(NavigatorKeys.j).equals("explorebait") && !postsrecomm()) || ((jSONObject2.getString(NavigatorKeys.j).equals("shared") && postsrecomm()) || ((jSONObject.getString(NavigatorKeys.j).equals("digest") && postsrecomm()) || ((jSONObject2.getString(NavigatorKeys.j).equals("commented") && postsrecomm()) || (jSONObject2.getString(NavigatorKeys.j).equals("voted") && postsrecomm()))));
return (jSONObject2.getString(NavigatorKeys.j).equals("explorebait") && postsrecomm()) || ((jSONObject2.getString(NavigatorKeys.j).equals("shared") && postsrecomm()) || ((jSONObject.getString(NavigatorKeys.j).equals("digest") && postsrecomm()) || ((jSONObject2.getString(NavigatorKeys.j).equals("commented") && postsrecomm()) || (jSONObject2.getString(NavigatorKeys.j).equals("voted") && postsrecomm()))));
} catch (JSONException unused) {
return false;
}
@@ -131,11 +131,11 @@ public class Newsfeed {
}
public static boolean recomm(String str) {
return (str.equals("user_rec") || str.equals("live_recommended") || str.equals("inline_user_rec")) && !postsrecomm();
return (str.equals("user_rec") || str.equals("live_recommended") || str.equals("inline_user_rec")) && postsrecomm();
}
public static boolean friendrecomm(String str) {
return str.equals("friends_recommendations") && !friendsrecomm();
return str.equals("friends_recommendations") && friendsrecomm();
}
public static boolean AD(JSONObject jSONObject) {
@@ -147,15 +147,15 @@ public class Newsfeed {
}
public static String friendsads() {
return postsrecomm() ? "user_rec" : "null";
return postsrecomm() ? "null" : "user_rec";
}
public static String getFriendRecomm() {
return friendsrecomm() ? "friends_recommendations" : "null";
return friendsrecomm() ? "null" : "friends_recommendations";
}
public static String authorsads() {
return authorsrecomm() ? "authors_rec" : "null";
return authorsrecomm() ? "null" : "authors_rec";
}
public static String widgetads() {
@@ -170,15 +170,8 @@ public class Newsfeed {
return adsstories() ? "null" : "ads";
}
public static String getCommentsSort(String def) {
switch (getPrefsValue("commentssort")) {
case "new":
return "desc";
case "old":
return "asc";
default:
return def;
}
public static String getCommentsSort(int value) {
return !CommentsSort() && value == 2 || value == 1 ? "desc" : "asc";
}
public static long getUpdateNewsfeed(boolean refresh_timeout) {
@@ -213,7 +206,7 @@ public class Newsfeed {
case "apps":
return AppsFragment.class;
case "discover":
return newfeed() ? GatewaysFragment.class : DiscoverFragment.class;
return DiscoverFragment.class;
case "notifications":
return NotificationsContainerFragment.class;
case "money":
@@ -1,10 +1,12 @@
package ru.vtosters.lite.utils;
import static ru.vtosters.lite.f0x1d.VTVerifications.isVerified;
import static ru.vtosters.lite.ui.fragments.multiaccount.MultiAccountManager.migrate;
import static ru.vtosters.lite.utils.DeletedMessagesHandler.reloadMessagesList;
import static ru.vtosters.lite.utils.Globals.fixGapps;
import static ru.vtosters.lite.utils.Globals.getContext;
import static ru.vtosters.lite.utils.Globals.getPrefsValue;
import static ru.vtosters.lite.utils.Globals.getUserId;
import static ru.vtosters.lite.utils.Globals.registerActivities;
import static ru.vtosters.lite.utils.Newsfeed.setupFilters;
import static ru.vtosters.lite.utils.OpusLoader.LoadLibrary;
@@ -23,6 +25,8 @@ import com.vtosters.lite.data.Users;
import java.util.Locale;
public class Preferences {
public static SharedPreferences preferences = getContext().getSharedPreferences("com.vtosters.lite_preferences", Context.MODE_PRIVATE);
public static String VERSIONNAME = "Beta";
public static Integer VKBUILD = 12116; // 3439 orig
@@ -37,73 +41,69 @@ public class Preferences {
registerActivities(application);
LoadLibrary("vkopustest");
systemThemeChanger();
}
} // VK Init
public static boolean BooleanFalse(String key) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
return prefs.getBoolean(key, false);
}
public static boolean BooleanTrue(String key) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
return prefs.getBoolean(key, true);
}
public static boolean getBoolValue(String key, Boolean value) {
if (preferences == null) {
preferences = PreferenceManager.getDefaultSharedPreferences(getContext());
}
return preferences.getBoolean(key, value);
} // Set bool by default and get value
public static boolean opusmodule() {
return BooleanTrue("opusmodule");
return getBoolValue("opusmodule", true);
}
public static boolean systemtheme() {
return BooleanTrue("systemtheme");
return getBoolValue("systemtheme", true);
}
public static boolean authorsrecomm() {
return BooleanTrue("authorsrecomm");
return getBoolValue("authorsrecomm", false);
}
public static boolean captions() {
return BooleanTrue("captions");
return getBoolValue("captions", false);
}
public static boolean copyright_post() {
return BooleanFalse("copyright_post");
return getBoolValue("copyright_post", false);
}
public static boolean default_ad_list() {
return BooleanFalse("default_ad_list");
return getBoolValue("default_ad_list", false);
}
public static boolean shitposting() {
return BooleanFalse("shitposting");
return getBoolValue("shitposting", false);
}
public static boolean friendsrecomm() {
return BooleanTrue("friendsrecomm");
return getBoolValue("friendsrecomm", false);
}
public static boolean isBGStickersEnabled() {
return BooleanTrue("isBGStickersEnabled");
return getBoolValue("isBGStickersEnabled", true);
}
public static boolean ads() {
return BooleanFalse("__dbg_no_ads");
return getBoolValue("__dbg_no_ads", false);
}
public static boolean adsgroup() {
return BooleanFalse("adsgroup");
return getBoolValue("adsgroup", false);
}
public static boolean olddock() {
return BooleanFalse("olddock");
return getBoolValue("olddock", false);
}
public static boolean adsslider() {
return BooleanFalse("__dbg_no_slider_ads");
return getBoolValue("__dbg_no_slider_ads", false);
}
public static boolean adsstories() {
return BooleanFalse("adsstories");
return getBoolValue("adsstories", false);
}
public static boolean alteremoji(Context context) {
@@ -111,126 +111,130 @@ public class Preferences {
}
public static boolean alteremojipref() {
return BooleanFalse("alteremoji");
return getBoolValue("alteremoji", false);
}
public static boolean awayphp() {
return BooleanTrue("awayphp");
return getBoolValue("awayphp", true);
}
public static boolean VKUI_INJ() {
return BooleanTrue("VKUI_INJ");
return getBoolValue("VKUI_INJ", true);
}
public static boolean benchmark() {
return BooleanFalse("benchmark");
return getBoolValue("benchmark", false);
}
public static boolean calls() {
return BooleanTrue("calls");
return getBoolValue("calls", false);
}
public static boolean convUsersOnline() {
return BooleanFalse("convUsersOnline");
return getBoolValue("convUsersOnline", false);
}
public static boolean darkmode() {
return BooleanTrue("darkmode");
return getBoolValue("darkmode", true);
}
public static boolean dev() {
return BooleanFalse("dev");
return getBoolValue("dev", false);
}
public static boolean devmenu() {
return BooleanFalse("devmenu");
return getBoolValue("devmenu", false);
}
public static boolean dnr() {
return BooleanTrue("dnr");
return getBoolValue("dnr", true);
}
public static boolean dns() {
return BooleanTrue("dns");
return getBoolValue("dns", true);
}
public static boolean libverify() {
return BooleanFalse("libverify");
return getBoolValue("libverify", false);
}
public static boolean dnt() {
return BooleanTrue("dnt");
return getBoolValue("dnt", true);
}
public static boolean dockcounter() {
return BooleanTrue("dockcounter");
return getBoolValue("dockcounter", true);
}
public static boolean feedcache() {
return BooleanTrue("feedcache");
return getBoolValue("feedcache", true);
}
public static boolean CommentsSort() {
return getBoolValue("commentssorting", false);
}
public static void forceOffline() {
if (setoffline()) {
if (setoffline() && !offline()) {
Users.b();
}
setupFilters();
}
public static boolean fulltime() {
return BooleanTrue("fulltime");
return getBoolValue("fulltime", true);
}
public static boolean gcmfix() {
return BooleanTrue("gcmfix");
return getBoolValue("gcmfix", true);
}
public static boolean hasMusicSubscription() {
return BooleanTrue("hasMusicSubscription");
return getBoolValue("hasMusicSubscription", true);
}
public static boolean isEnableExternalOpening() {
return BooleanFalse("isEnableExternalOpening");
return getBoolValue("isEnableExternalOpening", false);
}
public static boolean iconvk() {
return BooleanFalse("iconvk");
return getBoolValue("iconvk", false);
}
public static boolean iconvkru() {
return BooleanFalse("iconvkru");
return getBoolValue("iconvkru", false);
}
public static boolean isMusicRestricted() {
return BooleanTrue("isMusicRestricted");
return getBoolValue("isMusicRestricted", true);
}
public static boolean msgflat() {
return BooleanFalse("msgflat");
return getBoolValue("msgflat", false);
}
public static boolean msgtails() {
return BooleanTrue("msgtails");
return getBoolValue("msgtails", true);
}
public static boolean navbar() {
return BooleanTrue("navbar");
return getBoolValue("navbar", true);
}
public static boolean newfeed() {
return BooleanTrue("newfeed");
return getBoolValue("newfeed", true);
}
public static boolean offline() {
return BooleanTrue("offline");
return getBoolValue("offline", true);
}
public static boolean oldabout() {
return BooleanFalse("oldabout");
return getBoolValue("oldabout", false);
}
public static boolean postsrecomm() {
return BooleanTrue("postsrecomm");
return getBoolValue("postsrecomm", false);
}
public static String readstatus() {
@@ -242,59 +246,59 @@ public class Preferences {
}
public static boolean refsfilter() {
return BooleanFalse("refsfilter");
return getBoolValue("refsfilter", false);
}
public static boolean setoffline() {
return BooleanFalse("setoffline");
return getBoolValue("setoffline", true);
}
public static boolean shortinfo() {
return BooleanTrue("shortinfo");
return getBoolValue("shortinfo", true);
}
public static boolean shortlinkfilter() {
return BooleanFalse("shortlinkfilter");
return getBoolValue("shortlinkfilter", false);
}
public static boolean shortpost() {
return BooleanTrue("shortpost");
return getBoolValue("shortpost", true);
}
public static boolean showmenu() {
return BooleanFalse("showmenu");
return getBoolValue("showmenu", false);
}
public static boolean ssl() {
return BooleanTrue("ssl");
return getBoolValue("ssl", true);
}
public static boolean stories() {
return BooleanTrue("stories");
return getBoolValue("stories", true);
}
public static boolean swipe() {
return BooleanTrue("swipe");
return getBoolValue("swipe", true);
}
public static boolean systememoji() {
return BooleanFalse("systememoji");
return getBoolValue("systememoji", false);
}
public static boolean unlockstats() {
return BooleanFalse("unlockstats");
return getBoolValue("unlockstats", false);
}
public static boolean usevkui() {
return BooleanTrue("usevkui");
return getBoolValue("usevkui", true);
}
public static boolean vksans() {
return BooleanFalse("vksans");
return getBoolValue("vksans", false);
}
public static boolean voice() {
return BooleanTrue("voice");
return getBoolValue("voice", true);
}
public static boolean newvideo() {
@@ -308,22 +312,34 @@ public class Preferences {
public static String MediacontentFix() {
return Build.VERSION.SDK_INT >= 29 ? "date_modified DESC" : "datetaken DESC";
}
} // Fix photo picker for sdk 29+
public static String MediacontentFix2() {
return Build.VERSION.SDK_INT >= 29 ? "date_modified" : "datetaken";
}
} // Fix photo picker for sdk 29+
public static String MediacontentFix3() {
return Build.VERSION.SDK_INT >= 29 ? ", date_modified=" : ", dateTaken=";
}
} // Fix photo picker for sdk 29+
public static boolean color_grishka() {
return BooleanTrue("color_grishka");
return getBoolValue("color_grishka", true);
}
public static boolean vkme_msg() {
return BooleanFalse("vkme_msg");
return getBoolValue("vkme_msg", false);
}
public static boolean roundedmsgs() {
return getBoolValue("roundedmsgs", false);
}
public static boolean disableanimstickers() {
return getBoolValue("disableanimstickers", true);
}
public static boolean donaterecomm() {
return getBoolValue("donaterecomm", false);
}
public static String VKVersion() {
@@ -335,14 +351,20 @@ public class Preferences {
}
public static long VKVersionBuildLong() {
return (long) VKVersionBuild();
return VKVersionBuild();
}
public static boolean hasVerification() {
return isVerified(getUserId());
}
public static String getLocale() {
String string = getPrefsValue("lang_value");
if (string.equals("system")) {
return Locale.getDefault().getLanguage();
}
return string.isEmpty() ? Locale.getDefault().getLanguage() : string;
}
}
@@ -3,7 +3,7 @@ package ru.vtosters.lite.utils;
import static java.lang.System.clearProperty;
import static java.lang.System.getProperties;
import static ru.vtosters.lite.utils.Globals.getPrefsValue;
import static ru.vtosters.lite.utils.Preferences.BooleanFalse;
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
import java.util.Properties;
@@ -38,48 +38,41 @@ public class Proxy {
public static String getApiCom() {
String string = getPrefsValue("proxyapi");
if (!proxy() & string.isEmpty()) {
return "api.vk.com";
}
if (!proxy() & string.isEmpty()) return "api.vk.com";
return string;
}
public static String getAwayPhpCom() {
String string = getPrefsValue("proxyapi");
if (!proxy() & string.isEmpty()) {
return "m.vk.com";
}
if (!proxy() & string.isEmpty()) return "m.vk.com";
return string;
}
public static String getOauthCom() {
String string = getPrefsValue("proxyoauth");
if (!proxy() & string.isEmpty()) {
return "oauth.vk.com";
}
if (!proxy() & string.isEmpty()) return "oauth.vk.com";
return string;
}
public static String getStaticCom() {
String string = getPrefsValue("proxystatic");
if (!proxy() & string.isEmpty()) {
return "static.vk.com";
}
if (!proxy() & string.isEmpty()) return "static.vk.com";
return string;
}
public static String staticFix(String str) {
String str2;
String string = getPrefsValue("proxystatic");
if (!proxy() & string.isEmpty()) {
return str;
}
if (!proxy() & string.isEmpty()) return str;
str2 = string;
return str.replace(str2, "static.vk.com");
}
public static void setProxy() {
Properties properties = getProperties();
switch (getPrefsValue("proxy")) {
case "zaborona":
properties.setProperty("socksProxyHost", "socks.zaboronahelp.pp.ua");
@@ -122,7 +115,7 @@ public class Proxy {
clearProperty("http.proxyPassword");
clearProperty("socksProxyHost");
clearProperty("socksPortHost");
}
} // Reset all proxies
public static void resetProxySocks() {
clearProperty("https.proxyHost");
@@ -133,7 +126,7 @@ public class Proxy {
clearProperty("http.proxyPort");
clearProperty("http.proxyUser");
clearProperty("http.proxyPassword");
}
} // Reset all except socks
public static void resetProxyHttp() {
clearProperty("https.proxyHost");
@@ -142,7 +135,7 @@ public class Proxy {
clearProperty("https.proxyPassword");
clearProperty("socksProxyHost");
clearProperty("socksPortHost");
}
} // Reset all except http
public static void resetProxyHttps() {
clearProperty("http.proxyHost");
@@ -151,7 +144,7 @@ public class Proxy {
clearProperty("http.proxyPassword");
clearProperty("socksProxyHost");
clearProperty("socksPortHost");
}
} // Reset all except https
public static String proxyHostHTTP() {
String string = getPrefsValue("proxyHostHTTP");
@@ -207,8 +200,8 @@ public class Proxy {
return getPrefsValue("proxy").equals("apiproxy");
}
// Official vk proxy enforcer
public static boolean proxyvk() {
return BooleanFalse("proxyvk");
}
return getBoolValue("proxyvk", false);
} // Official vk proxy enforcer
}
@@ -8,8 +8,7 @@ import static ru.vtosters.lite.utils.Preferences.dev;
import static ru.vtosters.lite.utils.Preferences.getLocale;
import static ru.vtosters.lite.utils.Preferences.vksans;
import static ru.vtosters.lite.utils.Proxy.proxy;
import com.vk.core.ui.themes.VKThemeHelper;
import static ru.vtosters.lite.utils.Themes.isDarkTheme;
public class SSFS {
public static String getSSFSLink() {
@@ -18,18 +17,18 @@ public class SSFS {
public static String SSFSDomain() {
String string = getPrefsValue("ssfscustom");
if (!string.isEmpty()) {
return string;
}
if (!string.isEmpty()) return string;
return "https://vtsf.vknext.net";
}
public static String getDarkVKUI() {
return !VKThemeHelper.d() ? "1" : "0";
return isDarkTheme() ? "1" : "0";
}
public static String getAmoledVKUI() {
return getPrefsValue("darktheme").equals("amoled") ? "1" : "0";
return getPrefsValue("darktheme").equals("amoled") && isDarkTheme() ? "1" : "0";
}
public static String getUserProxy() {
@@ -8,7 +8,6 @@ import static android.widget.Toast.makeText;
import static ru.vtosters.lite.utils.Globals.getContext;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.util.Base64;
@@ -32,7 +31,7 @@ public class SettBackup {
public static void backupSettings() {
SimpleDateFormat date = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault());
String currentDateandTime = date.format(new Date());
var directory = getExternalStoragePublicDirectory(DIRECTORY_DOWNLOADS) + "/VTLBackup_" + currentDateandTime + ".txt";
var directory = getExternalStoragePublicDirectory(DIRECTORY_DOWNLOADS + "/VTLBackups/") + "/Backup_" + currentDateandTime + ".txt";
var file = new File(directory);
try {
var exists = file.createNewFile();
@@ -63,9 +62,7 @@ public class SettBackup {
}
public static void restoreBackup() {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.setType("text/plain");
getContext().startActivity(intent);
File dir = new File(getExternalStoragePublicDirectory(DIRECTORY_DOWNLOADS + "/VTLBackups/").getPath());;
// TODO Make restore backup from file list
}
}
@@ -1,17 +1,21 @@
package ru.vtosters.lite.utils;
import static android.view.View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR;
import static ru.vtosters.lite.utils.Globals.getContext;
import static java.util.Arrays.asList;
import static ru.vtosters.lite.utils.Globals.getIdentifier;
import static ru.vtosters.lite.utils.Globals.getPrefsValue;
import static ru.vtosters.lite.utils.Globals.getResources;
import static ru.vtosters.lite.utils.Preferences.color_grishka;
import static ru.vtosters.lite.utils.Preferences.isBGStickersEnabled;
import static ru.vtosters.lite.utils.Preferences.navbar;
import static ru.vtosters.lite.utils.Preferences.systemtheme;
import static ru.vtosters.lite.utils.Preferences.roundedmsgs;
import static ru.vtosters.lite.utils.Preferences.vksans;
import android.content.Context;
import android.content.res.ColorStateList;
import android.content.res.Configuration;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.support.v7.widget.Toolbar;
@@ -19,6 +23,8 @@ import android.view.View;
import android.view.Window;
import android.widget.ImageButton;
import androidx.core.graphics.ColorUtils;
import com.vk.core.d.RecoloredDrawable;
import com.vk.core.ui.themes.VKTheme;
import com.vk.core.ui.themes.VKThemeHelper;
@@ -26,52 +32,75 @@ import com.vk.im.ui.themes.ImTheme;
import com.vk.im.ui.themes.ImThemeHelper;
import com.vtosters.lite.R;
import java.util.List;
public class Themes {
public static List<String> accentColors = asList(
"71AAEB", "3F8AE0", "528BCC", "4986CC", "5181B8", "74A2D6", "518BCC"
);
public static void applyTheme(VKTheme theme, ImTheme imtheme) {
VKThemeHelper.b.a(theme); // VKThemeHelper.b.a(VKTheme value) VK Theme apply
ImThemeHelper.b.a(imtheme); // ImThemeHelper.b.a(ImTheme value) VK Theme Msg apply
} // Apply VKTheme and ImTheme (hard applying without dynamic theme changing)
public static boolean isDarkTheme() {
return !VKThemeHelper.d();
}
public static int getAccentColor() {
return VKThemeHelper.a(R.attr.accent);
}
} // Color accent
public static int getTextAttr() {
return VKThemeHelper.a(R.attr.text_primary);
}
} // Text Primary color
public static int getSTextAttr() {
return VKThemeHelper.a(R.attr.text_secondary);
}
} // Text Secondary color
public static int getTabbarBackground() {
return VKThemeHelper.a(R.attr.tabbar_background);
}
} // Tabbar/Navbar background
public static int getBackgroundContent() {
return VKThemeHelper.a(R.attr.background_content);
}
} // Background color in app
public static int getHeaderBackground() {
return VKThemeHelper.a(R.attr.header_background);
}
public static int getAmoledTheme() {
return getContext().getResources().getIdentifier("BaseAmoledStyle", "style", getContext().getPackageName());
}
public static int picFix() {
return getContext().getResources().getIdentifier("ActionBarThemeFix", "style", getContext().getPackageName());
}
public static int getAmoledImTheme() {
return getContext().getResources().getIdentifier("VkIm.Theme.VkApp.Amoled", "style", getContext().getPackageName());
}
} // Toolbar/Header background
public static int getHeaderText() {
return VKThemeHelper.a(R.attr.header_text);
} // Header/Toolbar color text
public static int getAmoledTheme() {
return getIdentifier("BaseAmoledStyle", "style");
} // Get Amoled theme id
public static int picFix() {
return getIdentifier("ActionBarThemeFix", "style");
} // Fix tabbar color in photo viewer
public static int getAmoledImTheme() {
return getIdentifier("VkIm.Theme.VkApp.Amoled", "style");
} // Get Amoled theme id for messages
public static int getAmoledMeTheme() {
return getIdentifier("VkIm.Theme.VkMe.Amoled", "style");
} // Get Amoled theme id for messages with rounded msg
public static int getAttrId(String attr) {
return getIdentifier(attr, "attr");
}
public static void setBarTheme(View getview) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
getview.setSystemUiVisibility(getNeededColorNavbar() | getNeededColorStatusbar());
}
}
} // Set white/dark statusbar/navbar icons
public static int getNeededColorStatusbar() {
return VKThemeHelper.d() && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S ? 8192 : 0;
@@ -92,42 +121,42 @@ public class Themes {
default:
return VKTheme.DARK;
}
}
} // Return needed theme for theme changer
public static ImTheme getImDarkTheme() {
switch (getPrefsValue("darktheme")) {
case "amoled":
return ImTheme.VKAPP_AMOLED;
return roundedmsgs() ? ImTheme.VKME_AMOLED : ImTheme.VKAPP_AMOLED;
default:
return ImTheme.VKAPP_DARK;
return roundedmsgs() ? ImTheme.VKME_DARK : ImTheme.VKAPP_DARK;
}
}
} // Return needed theme for theme changer
public static VKTheme getLightTheme() {
switch (getPrefsValue("lighttheme")) {
default:
return VKTheme.DEFAULT_LIGHT;
}
}
} // Return needed theme for theme changer
public static ImTheme getImLightTheme() {
switch (getPrefsValue("lighttheme")) {
default:
return ImTheme.VKAPP_LIGHT;
return roundedmsgs() ? ImTheme.VKME_LIGHT : ImTheme.VKAPP_LIGHT;
}
}
} // Return needed theme for theme changer
public static int getColorFromAttr(int attr) {
return VKThemeHelper.a(attr);
}
} // Get needed attr color
public static boolean isAndroidMonet() {
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.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;
}
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;
} // Accent colors
public static void themeMonetToolbar(ImageButton imageButton, Toolbar toolbar) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
@@ -141,20 +170,71 @@ public class Themes {
return null;
}
return new RecoloredDrawable(drawable, getAccentColor());
}
} // Recolor drawable to accent color
public static Drawable recolorDrawableToolbar(Drawable drawable) {
if (drawable == null) {
return null;
}
return new RecoloredDrawable(drawable, getHeaderText());
}
} // Recolor toolbar drawable to accent color
public static ColorStateList recolorCSL(ColorStateList colorStateList) {
if (colorStateList == null) {
return null;
}
return ColorStateList.valueOf(getAccentColor());
} // Recolor ColorStateList to accent color
public static ColorStateList themeCSL(ColorStateList csl) {
int color = csl.getDefaultColor();
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);
boolean isUnselAccent = isAccentedColor(unsel);
boolean isSelAccent = isAccentedColor(sel);
if (isUnselAccent || isSelAccent) {
return new ColorStateList(new int[][] {
new int[]{android.R.attr.state_selected}, new int[]{-android.R.attr.state_selected}
}, new int[] {isSelAccent ? getAccentColor() : sel, isUnselAccent ? getAccentColor() : unsel});
}
return csl;
} catch (Exception e) {
e.printStackTrace();
return null;
}
} // Recolor ColorStateList
public static int darken(int color, float by) {
float[] hsl = new float[3];
ColorUtils.colorToHSL(color, hsl);
hsl[2] -= by;
hsl[2] = Math.max(0f, Math.min(hsl[2], 1f));
return ColorUtils.HSLToColor(hsl);
}
public static int lighten(int color, float factor) {
int red = (int) ((Color.red(color) * (1 - factor) / 255 + factor) * 255);
int green = (int) ((Color.green(color) * (1 - factor) / 255 + factor) * 255);
int blue = (int) ((Color.blue(color) * (1 - factor) / 255 + factor) * 255);
return Color.argb(Color.alpha(color), red, green, blue);
}
public static int halfAlpha(int src) {
return ColorUtils.setAlphaComponent(src, 169);
}
public static boolean isAccentedColor(ColorStateList target) {
return target != null && isAccentedColor(target.getDefaultColor());
}
public static boolean isAccentedColor(int target) {
return accentColors.contains(hex(target).toUpperCase());
}
public static int getColor(Context context, int i) {
@@ -164,15 +244,15 @@ public class Themes {
if (Build.VERSION.SDK_INT >= 23) {
return context.getColor(i);
}
return context.getResources().getColor(i);
}
return getResources().getColor(i);
} // Android Support color injector + accent color checker
public static int getColor2(int i) {
if (isColorRefAccented(i) && isAndroidMonet()) {
return getAccentColor();
}
return getContext().getResources().getColor(i);
}
return getResources().getColor(i);
} // Android Support color injector + accent color checker
public static void setNavbarColor(Window window, int i) {
if (navbar() && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
@@ -183,7 +263,8 @@ public class Themes {
public static String hex(int i) {
return String.format("#%06X", Integer.valueOf(i & 16777215));
}
} // Get color as hex string
public static int vk_sans_display_demibold() {
return vksans() ? R.font.vk_sans_display_demibold : R.font.tt_commons_demi_bold;
}
@@ -220,24 +301,25 @@ public class Themes {
}
public static void systemThemeChanger() {
if (!systemtheme())
return;
int currentNightMode = getContext().getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
if (isDarkTheme()){
applyTheme(getDarkTheme(), getImDarkTheme());
} else {
applyTheme(getLightTheme(), getImLightTheme());
}
if (!systemtheme()) return;
int currentNightMode = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
switch (currentNightMode) {
case Configuration.UI_MODE_NIGHT_UNDEFINED:
changeTheme(getLightTheme(), getImLightTheme());
applyTheme(getLightTheme(), getImLightTheme());
break;
case Configuration.UI_MODE_NIGHT_NO:
changeTheme(getLightTheme(), getImLightTheme());
applyTheme(getLightTheme(), getImLightTheme());
break;
case Configuration.UI_MODE_NIGHT_YES:
changeTheme(getDarkTheme(), getImDarkTheme());
applyTheme(getDarkTheme(), getImDarkTheme());
break;
}
}
public static void changeTheme(VKTheme theme, ImTheme imtheme) {
VKThemeHelper.b.a(theme);
ImThemeHelper.b.a(imtheme);
}
}
@@ -1,11 +1,12 @@
package ru.vtosters.lite.utils;
import static android.util.Base64.encodeToString;
import static ru.vtosters.lite.utils.Globals.getContext;
import static ru.vtosters.lite.utils.Globals.getPrefsValue;
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
import static ru.vtosters.lite.utils.Themes.getColorFromAttr;
import static ru.vtosters.lite.utils.Themes.hex;
import android.util.Base64;
import android.webkit.WebView;
import com.vtosters.lite.R;
@@ -21,17 +22,13 @@ public class VKUIInjector {
private static String loadedCSS = "";
private static String loadedCSSAmoled = "";
static {
}
public VKUIInjector() {
}
private static String load(String str) {
try {
InputStream open = getContext().getAssets().open(str);
StringBuilder sb = new StringBuilder();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(open, StandardCharsets.UTF_8));
while (true) {
String readLine = bufferedReader.readLine();
if (readLine != null) {
@@ -41,7 +38,9 @@ public class VKUIInjector {
return sb.toString();
}
}
} catch (IOException e) {
e.printStackTrace();
return "";
}
@@ -67,20 +66,26 @@ public class VKUIInjector {
public static void inject(WebView webView) {
String string = getPrefsValue("darktheme");
if (Preferences.BooleanTrue("VKUI_INJ")) {
if (getBoolValue("VKUI_INJ", true)) {
if (!isLoaded) {
load();
}
StringBuilder sb = new StringBuilder();
if (true/*Themes.isAccentedCache()*/) {
sb.append("\n\n");
sb.append(loadedCSS);
}
if (string.equals("amoled")) {
sb.append("\n\n");
sb.append(loadedCSSAmoled);
}
inject(webView, Base64.encodeToString(sb.toString().getBytes(), 2));
inject(webView, encodeToString(sb.toString().getBytes(), 2));
}
}
}
+1 -1
View File
@@ -1,3 +1,3 @@
<resources>
<string name="app_name">Vtoasters Shit</string>
<string name="app_name">VTosters Lite</string>
</resources>
+1 -1
View File
@@ -5,7 +5,7 @@ buildscript {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.2.0'
classpath 'com.android.tools.build:gradle:7.2.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
+15 -1
View File
@@ -1,3 +1,17 @@
## For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
#
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx1024m -XX:MaxPermSize=256m
# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
#
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
#Fri Jun 03 17:38:03 MSK 2022
org.gradle.jvmargs=-Xmx1536M -Dkotlin.daemon.jvm.options\="-Xmx1536M"
android.useAndroidX=true
android.enableJetifier=true
android.jetifier.ignorelist=classes-dex2jar.jar, classes2-dex2jar.jar, classes3-dex2jar.jar, classes4-dex2jar.jar, classes5-dex2jar.jar, classes6-dex2jar.jar, classes7-dex2jar.jar
android.jetifier.ignorelist=classes-dex2jar.jar, classes2-dex2jar.jar, classes3-dex2jar.jar, classes4-dex2jar.jar, classes5-dex2jar.jar, classes6-dex2jar.jar, classes7-dex2jar.jar
Binary file not shown.
+1 -1
View File
@@ -12,7 +12,7 @@
</item>
<item>
<shape>
<solid android:color="#665181b8" />
<solid android:color="?accent" />
<corners android:radius="4.0dip" />
</shape>
</item>
@@ -4,7 +4,7 @@
<ripple android:color="@color/overlay">
<item>
<shape>
<solid android:color="?header_text" />
<solid android:color="?header_background" />
<corners android:radius="@dimen/vkui_button_corner_big_radius" />
</shape>
</item>
@@ -12,7 +12,7 @@
</item>
<item>
<shape>
<solid android:color="?header_text" />
<solid android:color="?header_background" />
<corners android:radius="@dimen/vkui_button_corner_big_radius" />
</shape>
</item>
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape android:shape="rectangle"
xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#e5ebf0f5" />
<solid android:color="?im_history_incoming_background" />
<padding
android:left="6.0dip"
android:top="2.2999878dip"
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape android:shape="rectangle"
xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#e5ebf0f5" />
<solid android:color="?im_history_incoming_background" />
<padding
android:left="6.0dip"
android:top="2.2999878dip"
+1 -1
View File
@@ -14,7 +14,7 @@
</item>
<item>
<shape>
<solid android:color="?header_text" />
<solid android:color="?header_background" />
<corners android:radius="@dimen/vkui_button_corner_big_radius" />
</shape>
</item>
@@ -41,7 +41,7 @@
android:layout_height="48.0dip"
app:tabBackground="@drawable/music_tab_bg"
app:tabGravity="center"
app:tabIndicatorColor="@color/white" />
app:tabIndicatorColor="?header_tab_active_indicator" />
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
+1 -1
View File
@@ -78,7 +78,7 @@
<com.vtosters.lite.ui.BadooTextView
android:enabled="false"
android:textColor="@color/light_blue_gray"
android:textColor="?accent"
android:id="@id/sticker_ok"
android:paddingTop="0.0dip"
android:paddingBottom="0.0dip"
+1 -1
View File
@@ -74,7 +74,7 @@
<com.vtosters.lite.ui.BadooTextView
android:enabled="false"
android:textColor="@color/light_blue_gray"
android:textColor="?accent"
android:id="@id/sticker_ok"
android:paddingTop="0.0dip"
android:paddingBottom="0.0dip"
@@ -24,7 +24,7 @@
android:layout_height="238.0dip"
app:contentScrim="?text_primary"
app:layout_scrollFlags="exitUntilCollapsed|scroll"
app:statusBarScrim="?tabbar_background"
app:statusBarScrim="?header_background"
app:titleEnabled="false">
<LinearLayout
+2 -2
View File
@@ -117,12 +117,12 @@
android:layout_width="16.0dip"
android:layout_height="16.0dip"
android:src="@drawable/ic_longreads_black_16"
android:tint="@color/black" />
android:tint="?header_text" />
<TextView
android:textSize="12.0sp"
android:textStyle="normal"
android:textColor="@color/black"
android:textColor="?header_text"
android:layout_gravity="center_vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+2 -2
View File
@@ -100,12 +100,12 @@
android:layout_width="16.0dip"
android:layout_height="16.0dip"
android:src="@drawable/ic_longreads_black_16"
android:tint="@color/black" />
android:tint="?header_text" />
<TextView
android:textSize="12.0sp"
android:textStyle="normal"
android:textColor="@color/black"
android:textColor="?header_text"
android:layout_gravity="center_vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -72,12 +72,12 @@
android:layout_width="16.0dip"
android:layout_height="16.0dip"
android:src="@drawable/ic_longreads_black_16"
android:tint="@color/black" />
android:tint="?header_text" />
<TextView
android:textSize="12.0sp"
android:textStyle="normal"
android:textColor="@color/black"
android:textColor="?header_text"
android:layout_gravity="center_vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+5 -5
View File
@@ -59,7 +59,7 @@
android:layout_marginTop="4.0dip"
android:src="@drawable/ic_more_vertical_24"
android:scaleType="center"
android:tint="@color/fave_action_gray"
android:tint="?text_primary"
android:layout_marginEnd="4.0dip"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@@ -115,7 +115,7 @@
<TextView
android:textSize="13.0sp"
android:textColor="@color/gray_400"
android:textColor="?text_primary"
android:ellipsize="end"
android:gravity="start|center"
android:id="@id/tv_subtitle"
@@ -136,12 +136,12 @@
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toEndOf="@id/iv_fave_image"
app:layout_constraintTop_toBottomOf="@id/tv_subtitle_container"
app:separatorTextColor="@color/gray_400"
app:separatorTextColor="?text_primary"
app:singleLineMode="true"
app:tagFontFamily="@string/font_family_regular"
app:tagHorizontalPadding="2.0dip"
app:tagLineSpacingExtra="5.0sp"
app:tagTextColor="@color/gray_400"
app:tagTextColor="?text_primary"
app:tagTextSize="13.0sp"
app:tagVerticalPadding="1.0dip"
app:verticalSpacing="0.0dip" />
@@ -151,7 +151,7 @@
android:layout_width="12.0dip"
android:layout_height="12.0dip"
android:src="@drawable/ic_tag_12"
android:tint="@color/gray_300"
android:tint="?text_primary"
app:layout_constraintBottom_toBottomOf="@id/ft_tag_group"
app:layout_constraintStart_toStartOf="@id/tv_title"
app:layout_constraintTop_toTopOf="@id/ft_tag_group" />
@@ -1,11 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout android:orientation="vertical"
android:background="?background_page"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<FrameLayout
android:id="@id/cardContainer"
android:background="?background_content"
android:tint="?background_content"
android:paddingTop="8.0dip"
android:paddingBottom="22.0dip"
android:layout_width="fill_parent"
@@ -21,6 +24,7 @@
<LinearLayout
android:paddingLeft="@dimen/post_side_padding"
android:background="?background_content"
android:paddingRight="@dimen/post_side_padding"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
+5 -2
View File
@@ -13,7 +13,7 @@
<FrameLayout
android:id="@id/filter_block"
android:background="#fff7f7f7"
android:background="?background_content"
android:padding="4.0dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
@@ -37,12 +37,14 @@
<LinearLayout
android:orientation="vertical"
android:background="?background_content"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@id/filter_block">
<FrameLayout
android:id="@id/filter_price"
android:background="?background_content"
android:paddingLeft="@dimen/post_side_padding"
android:paddingTop="16.0dip"
android:paddingRight="@dimen/post_side_padding"
@@ -55,6 +57,7 @@
android:gravity="center_vertical"
android:id="@id/filter_price_badge"
android:background="@drawable/highlight_filter_badge"
android:backgroundTint="?background_page"
android:paddingLeft="8.0dip"
android:clickable="true"
android:layout_width="wrap_content"
@@ -63,7 +66,7 @@
<TextView
android:textSize="14.0dip"
android:textColor="#ff51647a"
android:textColor="?text_primary"
android:id="@id/price_filter_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
+1 -1
View File
@@ -55,7 +55,7 @@
<TextView
android:textSize="17.0dip"
android:textColor="?header_text"
android:textColor="@color/white"
android:ellipsize="end"
android:gravity="center_horizontal"
android:id="@id/playlist_title"
+1 -1
View File
@@ -45,7 +45,7 @@
android:minHeight="48.0dip"
app:tabBackground="@drawable/music_tab_bg"
app:tabGravity="fill"
app:tabIndicatorColor="@color/white"
app:tabIndicatorColor="?header_tab_active_indicator"
app:tabMaxWidth="0.0dip"
app:tabMode="fixed" />
</android.support.design.widget.AppBarLayout>
+1 -1
View File
@@ -83,7 +83,7 @@
<com.vtosters.lite.ui.BadooTextView
android:enabled="false"
android:textColor="@color/light_blue_gray"
android:textColor="?accent"
android:layout_gravity="center"
android:id="@id/sticker_ok"
app:typeface="Medium"
+1 -1
View File
@@ -79,7 +79,7 @@
<com.vtosters.lite.ui.BadooTextView
android:enabled="false"
android:textColor="@color/light_blue_gray"
android:textColor="?accent"
android:id="@id/sticker_ok"
android:paddingTop="4.5dip"
android:paddingBottom="8.5dip"
+3 -3
View File
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout android:background="@color/gray_A40"
<FrameLayout android:background="?background_content"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minHeight="48.0dip"
@@ -18,7 +18,7 @@
android:layout_height="24.0dip"
android:layout_marginTop="12.0dip"
android:src="@drawable/ic_tag_24"
android:tint="?accent"
android:tint="?text_primary"
android:layout_marginStart="16.0dip" />
<com.vk.fave.views.FaveTagViewGroup
@@ -30,7 +30,7 @@
android:layout_marginBottom="8.0dip"
android:layout_marginStart="52.0dip"
android:layout_marginEnd="8.0dip"
app:separatorTextColor="@color/gray_300"
app:separatorTextColor="?text_primary"
app:separatorWidth="6.0dip"
app:tagBackground="@drawable/highlight_radius_4"
app:tagFontFamily="@string/font_family_regular"
+3 -3
View File
@@ -60,7 +60,7 @@
android:layout_width="24.0dip"
android:layout_height="24.0dip"
android:src="@drawable/ic_share_outline_24"
android:tint="@color/light_blue" />
android:tint="?accent" />
<TextView
android:text="@string/vkim_share"
@@ -81,7 +81,7 @@
android:layout_width="24.0dip"
android:layout_height="24.0dip"
android:src="@drawable/vkim_ic_msg_copy"
android:tint="@color/light_blue" />
android:tint="?accent" />
<TextView
android:text="@string/vkim_copy_link"
@@ -102,7 +102,7 @@
android:layout_width="24.0dip"
android:layout_height="24.0dip"
android:src="@drawable/ic_do_not_disturb_24"
android:tint="@color/light_blue" />
android:tint="?accent" />
<TextView
android:text="@string/vkim_chat_link_invalidate"
+1
View File
@@ -4,6 +4,7 @@
<item
android:icon="@drawable/ic_settings_24"
android:id="@id/settings"
app:menuTint="?header_text"
android:title="@string/menu_settings"
android:showAsAction="always"
app:showAsAction="always" />
+186 -5
View File
@@ -4070,15 +4070,15 @@
<string name="vtlsfilterrefs">Фильтр реферальных ссылок</string>
<string name="vtlsfilterrefssummary">Фильтр для блокировки постов с реферальными ссылками, такими как ali.pub и тд</string>
<string name="vtlrecommend">Рекомендации</string>
<string name="vtlrecommendfriend">Рекомендации друзей</string>
<string name="vtlrecommendauthor">Рекомендации авторов</string>
<string name="vtlrecommendfriendpost">Рекомендации постов друзей</string>
<string name="vtlrecommendfriend">Отключить рекомендации друзей</string>
<string name="vtlrecommendauthor">Отключить рекомендации авторов</string>
<string name="vtlrecommendfriendpost">Отключить рекомендации постов друзей</string>
<string name="BGStickers">Обводка стикеров</string>
<string name="vtlrecommendmarksummary">Посты по типу Вам может быть интересно и тд</string>
<string name="vtlfeedwork">Прочее</string>
<string name="vtlfeedreload">Автоматическое обновление ленты</string>
<string name="vtlfeedcache">Кэшировать посты в ленте</string>
<string name="vtlrecommendmark">Посты с пометкой рекомендовано</string>
<string name="vtlrecommendmark">Отключить посты с пометкой рекомендовано</string>
<string name="vtlmsgtails">Хвосты сообщений</string>
<string name="vtlmsgflat">Плоские сообщения</string>
<string name="vtlupdmsg">Обновить</string>
@@ -4102,7 +4102,7 @@
<string name="alteremoji">Альтернативный дизайн меню с эмодзи</string>
<string name="alteremojisum">Альтернативный вид выбора эмодзи и стикеров в миниатюрном меню</string>
<string name="altnewsfeed">Альтернативный дизайн ленты</string>
<string name="altnewsfeedsum">Дизайн с новыми вкладками в ленте, а также замена поиска по умолчанию на улучшенный (в нижнем меню)</string>
<string name="altnewsfeedsum">Дизайн с динамическими вкладками в ленте</string>
<string name="applicationrestart">Перезапустить приложение</string>
<string name="benchapi">Бенчмарк апи</string>
<string name="benchapisummary">Тестирование скорости отправки запросов. Бесполезная функция для всех, кроме разработчиков ВКонтакте</string>
@@ -4205,6 +4205,7 @@
<string name="shitpostingsummary">Фильтр очистки постов с РФ и действиями связанными на Украине</string>
<string name="showstories">Показывать истории</string>
<string name="showstoriessum">Блок истории в верхней части ленты</string>
<string name="donaterecomm">Отключить рекомендации о донате</string>
<string name="showvtfire">Показывать специальные верификации</string>
<string name="showvtverify">Показывать верификации</string>
<string name="sprefsctype">Тип подключения</string>
@@ -4256,7 +4257,187 @@
<string name="vtverifyinfo">Что такое верификация VTosters?</string>
<string name="vtverifyinfosum">Это наша благодарность за поддержку проекта</string>
<string name="vtlota">Обновления</string>
<string name="feed_ads_regular_summary">Обычные рекламные вставки в ленте между постами</string>
<string name="feed_ads_carousel_summary">Реклама со списком (товаров)</string>
<string name="feed_ads_stories_summary">Реклама при переходе между историями</string>
<string name="feed_ads_sources">Отключить посты с источником</string>
<string name="feed_ads_sources_summary">В большинстве случаев - рекламные посты с пометкой источника рекламодателя</string>
<string name="feed_recommendations_friends_summary">Рекомендации возможных друзей</string>
<string name="feed_recommendations_authors_summary">Рекомендации постов популярных авторов контента</string>
<string name="feed_recommendations_friends_reacted_summary">Рекомендации лайкнутых постов ваших друзей</string>
<string name="feed_other_update">Автоматическое обновление новостей</string>
<string name="feed_other_update_dialog_title">Выберите тип обновления</string>
<string name="feed_other_sort_comments">Сортировка комментариев</string>
<string name="feed_other_sort_comments_summary">Сортировать комментарии по новизне</string>
<string name="feed_other_cache_summary">Оставлять список загруженных постов в ленте</string>
<string name="officialnewssett">Встроенные настройки новостей</string>
<string name="officialnewssett_summary">Официальные настройки новостей встроенные в клиент</string>
<string name="appearance_theme_info">Полезная информация</string>
<string name="appearance_theme_info_summary">Для применений изменений тем необходимо переключить тему</string>
<string name="appearance_theme_dialog_title">Выберите тему</string>
<string name="appearance_theme_dark_theme">Тёмная тема приложения</string>
<string name="appearance_theme_light_theme">Светлая тема приложения</string>
<string name="appearance_theme_use_system">Использовать системную тему</string>
<string name="appearance_theme_use_system_summary">Применение системной темы при запуске приложения</string>
<string name="appearance_other_color_navbar_summary">Если семтемно имеется</string>
<string name="appearance_other_color_webview_summary">Покраска страниц, таких как VKID, под тему приложения</string>
<string name="interface_global_old_icons">Старые иконки</string>
<string name="interface_global_old_icons_summary">Использовать старые иконки в докбаре. Необходимо сбросить настройки докбара для применения изменений</string>
<string name="activity_what_is_it">Что это за функция?</string>
<string name="activity_dnr_summary">Функция позволяет вам не отправлять статус прочтения вами сообщения собеседника</string>
<string name="activity_dnw_summary">Функция позволяет вам не отправлять статус вашего набора/написания сообщения</string>
<string name="activity_dns_summary">Функция позволяет вам не отправлять статус просмотра вами историй</string>
<string name="activity_dnr_warn">Внимание!</string>
<string name="activity_dnr_visual">Визуально может работать некорректно (сообщение прочиталось локально), но у собеседника оно прочитано не будет</string>
<string name="activity_undel">Анти-удаление сообщений</string>
<string name="activity_undel_tag">Пометка удалённого сообщения</string>
<string name="activity_undel_enable">Оставлять удалённые сообщения</string>
<string name="activity_undel_attachments">Может не сохранять вложения</string>
<string name="messages_interface_calls_summary">Иконка звонков в сообщениях</string>
<string name="messages_interface_tails_summary">Может некорректно работать с вложениями</string>
<string name="messages_other_choose_count">Выберите количество</string>
<string name="messages_other_download_first">Количество сообщений, загружаемых сразу</string>
<string name="vkx_why">Зачем?</string>
<string name="vkx_why_summary">Интеграция позволит использовать возможности VK X прямиком в VTosters Lite\n\nКроме воспроизведения, в клиенте будет работать и кеш из плеера</string>
<string name="vkx_download">Скачать VKX</string>
<string name="vkx_integration">Интеграция с VK X</string>
<string name="vk_fix_music_other">Прочее</string>
<string name="vk_fix_music">Исправление музыкального раздела</string>
<string name="vk_fix_music_summary">Актуально если музыкальный раздел не работает (не отображается музыка или вместо музыки написано Слушайте в официальном приложении ВКонтакте) или же отсутствует компонент GMS</string>
<string name="proxy_if">Если имеется</string>
<string name="proxy_login_title">Логин</string>
<string name="proxy_password_title">Пароль</string>
<string name="other_fix_app">Исправление работы приложения</string>
<string name="other_clear_stickers_cache">Очистить кэш стикеров</string>
<string name="other_clear_stickers_cache_summary">Исправление загрузки стикеров при их полном отсутствии</string>
<string name="other_reset_settings">Сбросить настройки</string>
<string name="other_reset_settings_summary">Сбрасывает включенные вами функции модификации на значения по умолчанию</string>
<string name="other_fix_dynamic_colors">Исправление покрасок для Android 12+</string>
<string name="dockbar_editor">Редактор докбара</string>
<string name="dockbar_save">Сохранить</string>
<string name="dockbar_reset">Сбросить</string>
<string name="dockbar_selected_items">Выбранные элементы</string>
<string name="dockbar_unselected_items">Невыбранные элементы</string>
<string name="add_another_account">Добавить новый аккаунт</string>
<string name="download_latest_vtl">Скачать последнюю версию</string>
<string name="debug_warning">Внимание!</string>
<string name="debug_warning_summary">Данное меню предназначено только для тестирования работоспособности приложения. Если вы являетесь рядовым юзером, то вам не следует ничего не трогать в данных настройках (пожалуйста)</string>
<string name="debug_show_settings_item">Показывать пункт дебага в настройках</string>
<string name="debug_experimental">Experimental</string>
<string name="debug_experimental_usevkui">Редактирование страницы?</string>
<string name="debug_experimental_page_stats">Статистика страницы</string>
<string name="debug_experimental_page_stats_summary">Вкшники вроде перестали отдавать инфу</string>
<string name="debug_experimental_vk_sans_font">Шрифт VK Sans</string>
<string name="debug_experimental_vk_me_mode">Режим VK Me MSG</string>
<string name="debug_experimental_libverify">Поддержка libverify</string>
<string name="debug_experimental_libverify_summary">Включение может пофиксить 2фа вход</string>
<string name="debug_experimental_opusmodule">Модуль Opus</string>
<string name="debug_experimental_language">Язык приложения</string>
<string name="debug_experimental_language_summary">Выберите язык приложения</string>
<string name="debug_developer_functions">Функции для разработчиков</string>
<string name="debug_developer_mode">Режим разработчика</string>
<string name="debug_developer_mode_summary">Форсирование аккаунта разработчика/тестера/работника и форсирование версии debug/deploy. Нужно только для расширенного дебагинга</string>
<string name="debug_developer_force_ssl_summary">Проверка сертификата HTTPS. Отключение позволит смотреть и редактировать трафик через Charles и прочие программы</string>
<string name="debug_developer_dark_mode">Тёмная тема</string>
<string name="debug_developer_is_music_restricted_summary">Вкшные ограничения на музыку. Фактически ничего не ограничивает, ибо всё вырезано</string>
<string name="debug_developer_has_music_subscription_summary">Подписка на музыку</string>
<string name="debug_developer_old_about">Вернуть старые пункты в about</string>
<string name="debug_developer_ssfs_custom">Домен SSFS</string>
<string name="debug_domains">Домены</string>
<string name="debug_domains_editing">Изменение ссылок доменов</string>
<string name="debug_domains_editing_summary">Вся логика смены доменов переехала во вкладку с прокси</string>
<string name="debug_domains_api">Домен API</string>
<string name="debug_domains_oauth">Домен OAuth</string>
<string name="debug_domains_awayphp">Домен away.php</string>
<string name="debug_logging">Логгирование</string>
<string name="debug_logging_file">Запись логов в файл</string>
<string name="debug_logging_file_summary">Запись логов приложения. Работает до полной остановки приложения</string>
<string name="debug_logging_api">Логирование API</string>
<string name="debug_logging_api_summary">Возможность логгирования Api при записи логов</string>
<string name="debug_logging_api_errors">Показывать ошибки API</string>
<string name="debug_logging_api_errors_summary">Отображать ошибки api с помощью тоста</string>
<string name="debug_logging_force_stats_sending">Моментальная отправка статы</string>
<string name="debug_logging_webview">Дебаг WebView</string>
<string name="debug_logging_visualise_viewposttime">Визуализация view_post_timen</string>
<string name="debug_logging_visualise_viewposttime_summary">Подсвечивать посты при регистрации события view_post_time</string>
<string name="debug_logging_apply_spaces">Применять дырки</string>
<string name="debug_logging_apply_spaces_summary">Применять дырки для сообщений после long poll history</string>
<string name="debug_logging_memleak">Включить MemLeak detect</string>
<string name="debug_cache">Кэш</string>
<string name="debug_cache_trusted_hash">Очистить хэш 2фа</string>
<string name="debug_cache_webview">Очистить кэш WebView</string>
<string name="debug_cache_video">Очистить видео кэш</string>
<string name="debug_system">Системные</string>
<string name="debug_system_language">Подменить язык</string>
<string name="debug_system_terminate">Завершить процесс</string>
<string name="debug_system_fcm">Обновить регистрацию Firebase</string>
<string name="debug_system_fcm_copy_token">Скопировать push-токен</string>
<string name="debug_system_google_now">Обновить Google Now</string>
<string name="debug_tests">Тесты</string>
<string name="debug_tests_bd">Тест уведомления о ДР</string>
<string name="debug_tests_validation">Тест ошибки need_validation</string>
<string name="debug_tests_captcha">Тест ошибки captcha</string>
<string name="debug_tests_crash">Тест ошибки системы</string>
<string name="debug_tests_ads">Тестовая реклама</string>
<string name="debug_tests_pretty_cards">Демо карусель карточек</string>
<string name="debug_tests_spa_uri">VK UI Uri (для теста)</string>
<string name="debug_tests_spa">Тест VK UI</string>
<string name="debug_proxy">Официальный прокси ВК</string>
<string name="debug_proxy_force_summary">Вкшные костыли для своего прокси</string>
<string name="debug_proxy_enable">Прокси</string>
<string name="debug_proxy_enable_summary">Не работает</string>
<string name="debug_other">Прочее</string>
<string name="DNR_ON">Включить нечиталку</string>
<string name="DNR_OFF">Отключить нечиталку</string>
<string name="vtl_crashed">Произошла ошибка в работе Vtosters!</string>
<string name="vtl_crash_upload">Загрузить логи</string>
<string name="vtl_crash_save">Сохранить в файл</string>
<string name="batteryissuetitle">Отключите оптимизацию батареи!</string>
<string name="batteryissuesumm">В связи с тем, что вы используете прошивку сторонних производителей из приведенного ниже списка - уведомления могут приходить с задержкой или не приходить вовсе. \n Нажмите на кнопку \"Отключить оптимизацию\" чтобы исправить проблему. \n\nСторонние прошивки на которых наблюдаются проблемы с пушами:\nFlyme, EMUI, MIUI, ColorOS, Samsung Experience или TouchWiz, Magic UI, ZenUI, Funtouch OS</string>
<string name="batteryissuebtn1">Отключить оптимизацию</string>
<string name="batteryissuebtn2">Игнорировать</string>
<string name="gmsissuesumm">На вашем устройстве отсутствует компонент Google Play Services (GMS), который необходим для корректной работы VTosters Lite</string>
<string name="gmsissuebtn1">Продолжить без GMS</string>
<string name="gmsissuebtn2">Установить GMS</string>
<string name="startsumm1">Модификация VTosters Lite не имеет никакого отношения к VK Group!\nРаспространяется полностью бесплатно!</string>
<string name="startsumm2">\n\nПриложение может некорректно работать в связи с тем, что вы, скорее всего, используете оболочку из списка ниже. Все проблемы с отображением и работой приложения связаны только с вашей прошивкой и только с ней. Все багрепорты, присланные из-за проблем на этой прошивке, не рассматриваются разработчиками и не будут исправлены.\n\nНажимая на кнопку \"Продолжить\", вы соглашаетесь с тем, что возможные баги приложения могут произойти из-за специфики вашей прошивки. Рекомендуем использовать прошивки на базе AOSP для получения максимальной стабильности.\n\n Прошивки на которых наблюдаются проблемы с приложениями:\nFlyme, EMUI, MIUI, ColorOS, Samsung Experience или TouchWiz, Magic UI, ZenUI, Funtouch OS</string>
<string name="startbtn1">Новости</string>
<string name="startbtn2">Продолжить</string>
<string name="videodownloaderr">Данное видео невозможно скачать</string>
<string name="roundedmsgs">Круглые сообщения</string>
<string name="empty_text" />
</resources>
File diff suppressed because it is too large Load Diff
+161 -5
View File
@@ -154,6 +154,18 @@
<public type="array" name="start_values" id="0x7f03005c" />
<public type="array" name="proxy" id="0x7f03005d" />
<public type="array" name="proxy_value" id="0x7f03005e" />
<public type="array" name="commentssort" id="0x7f03005f" />
<public type="array" name="commentssort_value" id="0x7f030060" />
<public type="array" name="darktheme" id="0x7f030061" />
<public type="array" name="darktheme_value" id="0x7f030062" />
<public type="array" name="lighttheme" id="0x7f030063" />
<public type="array" name="lighttheme_value" id="0x7f030064" />
<public type="array" name="msgcount" id="0x7f030065" />
<public type="array" name="msgcount_value" id="0x7f030066" />
<public type="array" name="newsupdate" id="0x7f030067" />
<public type="array" name="newsupdate_value" id="0x7f030068" />
<public type="array" name="undel" id="0x7f030069" />
<public type="array" name="undel_value" id="0x7f03006a" />
<public type="attr" name="BMSB_auto" id="0x7f040000" />
<public type="attr" name="BMSB_error_text_color" id="0x7f040001" />
<public type="attr" name="BuyMusicSubscriptionButtonStyle" id="0x7f040002" />
@@ -2375,6 +2387,7 @@
<public type="color" name="window_bg_transparent" id="0x7f06028b" />
<public type="color" name="yellow" id="0x7f06028c" />
<public type="color" name="yellow_light" id="0x7f06028d" />
<public type="color" name="iclauncher" id="0x7f06028e" />
<public type="color" name="abc_color_highlight_material" id="0x7f060004" />
<public type="dimen" name="_post_side_padding" id="0x7f070000" />
<public type="dimen" name="abc_action_bar_content_inset_material" id="0x7f070001" />
@@ -14556,9 +14569,6 @@
<public type="string" name="vtverify" id="0x7f1110bb" />
<public type="string" name="vtverifyinfo" id="0x7f1110bc" />
<public type="string" name="vtverifyinfosum" id="0x7f1110bd" />
<public type="string" name="vtlota" id="0x7f111233" />
<public type="string" name="DNR_ON" id="0x7f111234" />
<public type="string" name="DNR_OFF" id="0x7f111235" />
<public type="string" name="APKTOOL_DUMMY_10be" id="0x7f1110be" />
<public type="string" name="APKTOOL_DUMMY_10bf" id="0x7f1110bf" />
<public type="string" name="APKTOOL_DUMMY_10c0" id="0x7f1110c0" />
@@ -14932,6 +14942,147 @@
<public type="string" name="APKTOOL_DUMMY_1230" id="0x7f111230" />
<public type="string" name="APKTOOL_DUMMY_1231" id="0x7f111231" />
<public type="string" name="APKTOOL_DUMMY_1232" id="0x7f111232" />
<public type="string" name="vtlota" id="0x7f111233" />
<public type="string" name="DNR_ON" id="0x7f111234" />
<public type="string" name="DNR_OFF" id="0x7f111235" />
<public type="string" name="add_another_account" id="0x7f111236" />
<public type="string" name="other_clear_stickers_cache" id="0x7f111237" />
<public type="string" name="other_clear_stickers_cache_summary" id="0x7f111238" />
<public type="string" name="dockbar_editor" id="0x7f111239" />
<public type="string" name="dockbar_reset" id="0x7f11123a" />
<public type="string" name="dockbar_save" id="0x7f11123b" />
<public type="string" name="dockbar_selected_items" id="0x7f11123c" />
<public type="string" name="dockbar_unselected_items" id="0x7f11123d" />
<public type="string" name="download_latest_vtl" id="0x7f11123e" />
<public type="string" name="other_fix_dynamic_colors" id="0x7f11123f" />
<public type="string" name="other_reset_settings" id="0x7f111240" />
<public type="string" name="other_reset_settings_summary" id="0x7f111241" />
<public type="string" name="other_fix_app" id="0x7f111242" />
<public type="string" name="activity_dnr_summary" id="0x7f111243" />
<public type="string" name="activity_dnr_visual" id="0x7f111244" />
<public type="string" name="activity_dnr_warn" id="0x7f111245" />
<public type="string" name="activity_dns_summary" id="0x7f111246" />
<public type="string" name="activity_dnw_summary" id="0x7f111247" />
<public type="string" name="activity_undel" id="0x7f111248" />
<public type="string" name="activity_undel_attachments" id="0x7f111249" />
<public type="string" name="activity_undel_dial" id="0x7f11124a" />
<public type="string" name="activity_undel_enable" id="0x7f11124b" />
<public type="string" name="activity_undel_tag" id="0x7f11124c" />
<public type="string" name="activity_what_is_it" id="0x7f11124d" />
<public type="string" name="appearance_other_color_navbar_summary" id="0x7f11124e" />
<public type="string" name="appearance_other_color_webview_summary" id="0x7f11124f" />
<public type="string" name="appearance_theme_dark_theme" id="0x7f111250" />
<public type="string" name="appearance_theme_dialog_title" id="0x7f111251" />
<public type="string" name="appearance_theme_info" id="0x7f111252" />
<public type="string" name="appearance_theme_info_summary" id="0x7f111253" />
<public type="string" name="appearance_theme_light_theme" id="0x7f111254" />
<public type="string" name="appearance_theme_use_system" id="0x7f111255" />
<public type="string" name="appearance_theme_use_system_summary" id="0x7f111256" />
<public type="string" name="debug_cache" id="0x7f111257" />
<public type="string" name="debug_cache_trusted_hash" id="0x7f111258" />
<public type="string" name="debug_cache_video" id="0x7f111259" />
<public type="string" name="debug_cache_webview" id="0x7f11125a" />
<public type="string" name="debug_developer_dark_mode" id="0x7f11125b" />
<public type="string" name="debug_developer_force_ssl" id="0x7f11125c" />
<public type="string" name="debug_developer_force_ssl_summary" id="0x7f11125d" />
<public type="string" name="debug_developer_functions" id="0x7f11125e" />
<public type="string" name="debug_developer_has_music_subscription" id="0x7f11125f" />
<public type="string" name="debug_developer_has_music_subscription_summary" id="0x7f111260" />
<public type="string" name="debug_developer_is_music_restricted" id="0x7f111261" />
<public type="string" name="debug_developer_is_music_restricted_summary" id="0x7f111262" />
<public type="string" name="debug_developer_mode" id="0x7f111263" />
<public type="string" name="debug_developer_mode_summary" id="0x7f111264" />
<public type="string" name="debug_developer_old_about" id="0x7f111265" />
<public type="string" name="debug_developer_ssfs_custom" id="0x7f111266" />
<public type="string" name="debug_domains" id="0x7f111267" />
<public type="string" name="debug_domains_api" id="0x7f111268" />
<public type="string" name="debug_domains_awayphp" id="0x7f111269" />
<public type="string" name="debug_domains_editing" id="0x7f11126a" />
<public type="string" name="debug_domains_editing_summary" id="0x7f11126b" />
<public type="string" name="debug_domains_oauth" id="0x7f11126c" />
<public type="string" name="debug_domains_vkui_host" id="0x7f11126d" />
<public type="string" name="debug_domains_vkui_spa" id="0x7f11126e" />
<public type="string" name="debug_experimental" id="0x7f11126f" />
<public type="string" name="debug_experimental_language" id="0x7f111270" />
<public type="string" name="debug_experimental_language_summary" id="0x7f111271" />
<public type="string" name="debug_experimental_libverify" id="0x7f111272" />
<public type="string" name="debug_experimental_libverify_summary" id="0x7f111273" />
<public type="string" name="debug_experimental_opusmodule" id="0x7f111274" />
<public type="string" name="debug_experimental_page_stats" id="0x7f111275" />
<public type="string" name="debug_experimental_page_stats_summary" id="0x7f111276" />
<public type="string" name="debug_experimental_usevkui" id="0x7f111277" />
<public type="string" name="debug_experimental_vk_me_mode" id="0x7f111278" />
<public type="string" name="debug_experimental_vk_sans_font" id="0x7f111279" />
<public type="string" name="debug_logging" id="0x7f11127a" />
<public type="string" name="debug_logging_api" id="0x7f11127b" />
<public type="string" name="debug_logging_api_errors" id="0x7f11127c" />
<public type="string" name="debug_logging_api_errors_summary" id="0x7f11127d" />
<public type="string" name="debug_logging_api_summary" id="0x7f11127e" />
<public type="string" name="debug_logging_apply_spaces" id="0x7f11127f" />
<public type="string" name="debug_logging_apply_spaces_summary" id="0x7f111280" />
<public type="string" name="debug_logging_breakpoints" id="0x7f111281" />
<public type="string" name="debug_logging_breakpoints_summary" id="0x7f111282" />
<public type="string" name="debug_logging_file" id="0x7f111283" />
<public type="string" name="debug_logging_file_summary" id="0x7f111284" />
<public type="string" name="debug_logging_force_stats_sending" id="0x7f111285" />
<public type="string" name="debug_logging_memleak" id="0x7f111286" />
<public type="string" name="debug_logging_visualise_viewposttime" id="0x7f111287" />
<public type="string" name="debug_logging_visualise_viewposttime_summary" id="0x7f111288" />
<public type="string" name="debug_logging_webview" id="0x7f111289" />
<public type="string" name="debug_other" id="0x7f11128a" />
<public type="string" name="debug_proxy" id="0x7f11128b" />
<public type="string" name="debug_proxy_enable" id="0x7f11128c" />
<public type="string" name="debug_proxy_enable_summary" id="0x7f11128d" />
<public type="string" name="debug_proxy_force" id="0x7f11128e" />
<public type="string" name="debug_proxy_force_summary" id="0x7f11128f" />
<public type="string" name="debug_show_settings_item" id="0x7f111290" />
<public type="string" name="debug_system" id="0x7f111291" />
<public type="string" name="debug_system_fcm" id="0x7f111292" />
<public type="string" name="debug_system_fcm_copy_token" id="0x7f111293" />
<public type="string" name="debug_system_google_now" id="0x7f111294" />
<public type="string" name="debug_system_language" id="0x7f111295" />
<public type="string" name="debug_system_terminate" id="0x7f111296" />
<public type="string" name="debug_tests" id="0x7f111297" />
<public type="string" name="debug_tests_ads" id="0x7f111298" />
<public type="string" name="debug_tests_bd" id="0x7f111299" />
<public type="string" name="debug_tests_captcha" id="0x7f11129a" />
<public type="string" name="debug_tests_crash" id="0x7f11129b" />
<public type="string" name="debug_tests_pretty_cards" id="0x7f11129c" />
<public type="string" name="debug_tests_spa" id="0x7f11129d" />
<public type="string" name="debug_tests_spa_uri" id="0x7f11129e" />
<public type="string" name="debug_tests_validation" id="0x7f11129f" />
<public type="string" name="debug_warning" id="0x7f1112a0" />
<public type="string" name="debug_warning_summary" id="0x7f1112a1" />
<public type="string" name="feed_ads_carousel_summary" id="0x7f1112a2" />
<public type="string" name="feed_ads_regular_summary" id="0x7f1112a3" />
<public type="string" name="feed_ads_sources" id="0x7f1112a4" />
<public type="string" name="feed_ads_sources_summary" id="0x7f1112a5" />
<public type="string" name="feed_ads_stories_summary" id="0x7f1112a6" />
<public type="string" name="feed_other_cache_summary" id="0x7f1112a7" />
<public type="string" name="feed_other_sort_comments" id="0x7f1112a8" />
<public type="string" name="feed_other_sort_comments_summary" id="0x7f1112a9" />
<public type="string" name="feed_other_update" id="0x7f1112aa" />
<public type="string" name="feed_other_update_dialog_title" id="0x7f1112ab" />
<public type="string" name="feed_recommendations_authors_summary" id="0x7f1112ac" />
<public type="string" name="feed_recommendations_friends_reacted_summary" id="0x7f1112ad" />
<public type="string" name="feed_recommendations_friends_summary" id="0x7f1112ae" />
<public type="string" name="interface_global_old_icons" id="0x7f1112af" />
<public type="string" name="interface_global_old_icons_summary" id="0x7f1112b0" />
<public type="string" name="messages_interface_calls_summary" id="0x7f1112b1" />
<public type="string" name="messages_interface_tails_summary" id="0x7f1112b2" />
<public type="string" name="messages_other_choose_count" id="0x7f1112b3" />
<public type="string" name="messages_other_download_first" id="0x7f1112b4" />
<public type="string" name="proxy_if" id="0x7f1112b5" />
<public type="string" name="proxy_login_title" id="0x7f1112b6" />
<public type="string" name="proxy_password_title" id="0x7f1112b7" />
<public type="string" name="vkx_download" id="0x7f1112b8" />
<public type="string" name="vk_fix_music" id="0x7f1112b9" />
<public type="string" name="vk_fix_music_summary" id="0x7f1112ba" />
<public type="string" name="vkx_integration" id="0x7f1112bb" />
<public type="string" name="vk_fix_music_other" id="0x7f1112bc" />
<public type="string" name="vkx_title" id="0x7f1112bd" />
<public type="string" name="vkx_why" id="0x7f1112be" />
<public type="string" name="vkx_why_summary" id="0x7f1112bf" />
<public type="string" name="scree_nsize" id="0x7f110a34" />
<public type="string" name="empty_text" id="0x7f11027f" />
<public type="style" name="ActionBarGrayTheme" id="0x7f120000" />
@@ -15840,6 +15991,11 @@
<public type="style" name="title_text" id="0x7f1203a4" />
<public type="style" name="tooltip_bubble_text" id="0x7f1203a5" />
<public type="style" name="Vk.Theme.Dark" id="0x7f1203a6" />
<public type="style" name="ActionBarThemeFix" id="0x7f1203aa" />
<public type="style" name="BaseAmoledStyle" id="0x7f1203ab" />
<public type="style" name="BaseAmoledTheme" id="0x7f1203ac" />
<public type="style" name="Vk.Theme.client_amoled_generated" id="0x7f1203ad" />
<public type="style" name="VkIm.Theme.VkApp.Amoled" id="0x7f1203ae" />
<public type="style" name="Base.TextAppearance.AppCompat.Light.Widget.PopupMenu.Large" id="0x7f120039" />
<public type="style" name="Base.TextAppearance.AppCompat.Light.Widget.PopupMenu.Small" id="0x7f12003a" />
<public type="style" name="Base.V21.Theme.AppCompat" id="0x7f120074" />
@@ -15887,6 +16043,7 @@
<public type="xml" name="sync_contacts" id="0x7f14000c" />
<public type="xml" name="widget_player_big_provider" id="0x7f14000d" />
<public type="xml" name="widget_player_provider" id="0x7f14000e" />
<public type="xml" name="APKTOOL_DUMMY_f" id="0x7f14000f" />
<public type="xml" name="preferences_feed" id="0x7f140010" />
<public type="xml" name="preferences_interface" id="0x7f140011" />
<public type="xml" name="preferences_other" id="0x7f140012" />
@@ -15896,8 +16053,7 @@
<public type="xml" name="preferences_music" id="0x7f140016" />
<public type="xml" name="preferences_tgs" id="0x7f140017" />
<public type="xml" name="preferences_proxy" id="0x7f140018" />
<public type="xml" name="APKTOOL_DUMMY_19" id="0x7f140019" />
<public type="xml" name="preferences_gms" id="0x7f14001a" />
<public type="xml" name="empty" id="0x7f14001b" />
<public type="xml" name="APKTOOL_DUMMY_f" id="0x7f14000f" />
<public type="xml" name="APKTOOL_DUMMY_19" id="0x7f140019" />
</resources>
+197 -6
View File
@@ -4195,15 +4195,15 @@ Does not affect vk.cc links"</string>
<string name="vtlsfilterrefs">Referral links filter</string>
<string name="vtlsfilterrefssummary">Blocks posts containing referral links, such as ali.pub and so on</string>
<string name="vtlrecommend">Recommendations</string>
<string name="vtlrecommendfriend">Friends recommendations</string>
<string name="vtlrecommendauthor">Authors recommendations</string>
<string name="vtlrecommendfriendpost">"Recommended friends' posts"</string>
<string name="vtlrecommendfriend">Disable friends recommendations</string>
<string name="vtlrecommendauthor">Disable authors recommendations</string>
<string name="vtlrecommendfriendpost">Disable recommended friends posts</string>
<string name="BGStickers">Sticker outlines</string>
<string name="vtlrecommendmarksummary">Posts like You may be interested</string>
<string name="vtlfeedwork">Other</string>
<string name="vtlfeedreload">Automatic feed update</string>
<string name="vtlfeedcache">Cache feed posts</string>
<string name="vtlrecommendmark">Posts with recommended mark</string>
<string name="vtlrecommendmark">Disable posts with recommended mark</string>
<string name="vtlmsgtails">Message tails</string>
<string name="vtlmsgflat">Flat Messages</string>
<string name="vtlupdmsg">Update</string>
@@ -4227,7 +4227,7 @@ Does not affect vk.cc links"</string>
<string name="alteremoji">Alternative type of emoji menu</string>
<string name="alteremojisum">Alrernative selection of emojis and stickers in the miniature menu</string>
<string name="altnewsfeed">Alternative design of newsfeed</string>
<string name="altnewsfeedsum">Design with new tabs in the feed, as well as replacing default search with an improved one (in the bottom menu)</string>
<string name="altnewsfeedsum">Design with dynamic tabs in the feed</string>
<string name="applicationrestart">Restart application</string>
<string name="benchapi">Benchmark api</string>
<string name="benchapisummary">Testing the speed of sending requests. Useless function for everyone except VKontakte developers</string>
@@ -4330,6 +4330,7 @@ You need to restart the application to apply proxy settings"</string>
<string name="shitpostingsummary">Filter for cleaning posts with the Russian Federation and actions related in Ukraine</string>
<string name="showstories">Show stories</string>
<string name="showstoriessum">The story section at the top of the feed</string>
<string name="donaterecomm">Disable recommendations about donation</string>
<string name="showvtfire">Show special verifications</string>
<string name="showvtverify">Show verifications</string>
<string name="sprefsctype">Connection type</string>
@@ -4371,7 +4372,7 @@ You need to restart the application to apply proxy settings"</string>
<string name="vtlawayphpsummary">Tracking the user to personalize ads. Also checking links to the blacklist from VKontakte and antivirus</string>
<string name="vtloffline">Send online status</string>
<string name="vtloffline2">Force offline</string>
<string name="vtloffline2summary">"Works only when online status sending is disabledsends instantly offline after sending messages and other api methods that are sent online
<string name="vtloffline2summary">"Works only when online status sending is disabled. Sends instantly offline after sending messages and other api methods that are sent online
May look like a fake leaving the online"</string>
<string name="vtlofflinesummary">Disabling online will allow you to stay offline</string>
@@ -4380,8 +4381,198 @@ May look like a fake leaving the online"</string>
<string name="vtverifyinfo">What are VTosters verifications?</string>
<string name="vtverifyinfosum">This is our gratitude for the support of the project</string>
<string name="vtlota">Updates</string>
<string name="feed_ads_regular_summary">Regular ads in feed between posts</string>
<string name="feed_ads_carousel_summary">Ads with list (of goods)</string>
<string name="feed_ads_stories_summary">Ads in stories</string>
<string name="feed_ads_sources">Disable posts with source</string>
<string name="feed_ads_sources_summary">More often posts ad posts with advertiser source tag</string>
<string name="feed_recommendations_friends_summary">Recommend potential friends</string>
<string name="feed_recommendations_authors_summary">Recommend popular authors\' posts friends</string>
<string name="feed_recommendations_friends_reacted_summary">Recommend posts that your friends like</string>
<string name="feed_other_update">Audo update news</string>
<string name="feed_other_update_dialog_title">Choose update type</string>
<string name="feed_other_sort_comments">Sort comments</string>
<string name="feed_other_sort_comments_summary">Sort comments by newest</string>
<string name="feed_other_cache_summary">Keep cached posts in feed</string>
<string name="officialnewssett">Built-in news settings</string>
<string name="officialnewssett_summary">Official news settings built-in into the client</string>
<string name="appearance_theme_info">Useful information</string>
<string name="appearance_theme_info_summary">To apply theme changes you should toggle the theme</string>
<string name="appearance_theme_dialog_title">Choose a theme</string>
<string name="appearance_theme_dark_theme">Dark app theme</string>
<string name="appearance_theme_light_theme">Light app theme</string>
<string name="appearance_theme_use_system">Use system theme</string>
<string name="appearance_theme_use_system_summary">Apply system theme on app start</string>
<string name="appearance_other_color_navbar_summary">If systemically available</string>
<string name="appearance_other_color_webview_summary">Color pages such as VKID in app theme</string>
<string name="interface_global_old_icons">Old icons</string>
<string name="interface_global_old_icons_summary">Use old icons in dockbar. You should reset its setting to apply changes</string>
<string name="activity_what_is_it">What is it?</string>
<string name="activity_dnr_summary">Function lets you don\'t send read message status</string>
<string name="activity_dnw_summary">Function lets you don\'t send write message status</string>
<string name="activity_dns_summary">Function lets you don\'t send read stories status</string>
<string name="activity_dnr_warn">Warning!</string>
<string name="activity_dnr_visual">Visually may not work correctly (locally read), but companion will see that it wasn\'t read.</string>
<string name="activity_undel">Anti-delete messages</string>
<string name="activity_undel_tag">Deleted message tag</string>
<string name="activity_undel_dial">Choose message tag</string>
<string name="activity_undel_enable">Keep deleted messages</string>
<string name="activity_undel_attachments">May not save attachments</string>
<string name="messages_interface_calls_summary">Call icon in messages</string>
<string name="messages_interface_tails_summary">May not work correctly with attachments</string>
<string name="messages_other_choose_count">Choose count</string>
<string name="messages_other_download_first">Amount of messages downloaded at once</string>
<string name="vkx_title" translatable="false">VK X</string>
<string name="vkx_why">Why?</string>
<string name="vkx_why_summary">Integration let you use VK X features directly in VTosters Lite\n\nIn addition to playback, cached tracks also will work in client</string>
<string name="vkx_download">Download VK X</string>
<string name="vkx_integration">VK X Integration</string>
<string name="vk_fix_music_other">Other</string>
<string name="vk_fix_music">Fix the music tab</string>
<string name="vk_fix_music_summary">Use when music tab doesn\'t work (no tracks/\'listen in official VK app\') or there is no GMS component</string>
<string name="proxy_if">If available</string>
<string name="proxy_login_title">Login</string>
<string name="proxy_password_title">Password</string>
<string name="other_fix_app">Fixing the app</string>
<string name="other_clear_stickers_cache">Clear stickers cache</string>
<string name="other_clear_stickers_cache_summary">Fix loading stickers when they are completely absent</string>
<string name="other_reset_settings">Reset settings</string>
<string name="other_reset_settings_summary">Resets turned on functions of VTLite to defaults</string>
<string name="other_fix_dynamic_colors">Fix colors on Android 12+</string>
<string name="dockbar_editor">Dockbar editor</string>
<string name="dockbar_save">Save</string>
<string name="dockbar_reset">Reset</string>
<string name="dockbar_selected_items">Selected items</string>
<string name="dockbar_unselected_items">Disabled items</string>
<string name="add_another_account">Add new account</string>
<string name="download_latest_vtl">Download latest version</string>
<string name="debug_warning">Warning!</string>
<string name="debug_warning_summary">These options are for testing this app only. If you are a regular user, please, don\'t use them</string>
<string name="debug_show_settings_item">Show debug category in settings</string>
<string name="debug_experimental">Experimental</string>
<string name="debug_experimental_usevkui">Profile editing?</string>
<string name="debug_experimental_page_stats">Page stats</string>
<string name="debug_experimental_page_stats_summary">VK Devs seems to have stopped sending info</string>
<string name="debug_experimental_vk_sans_font">VK Sans font</string>
<string name="debug_experimental_vk_me_mode">VK Me MSG mode</string>
<string name="debug_experimental_libverify">libverify support</string>
<string name="debug_experimental_libverify_summary">Turning on may fix 2fa login</string>
<string name="debug_experimental_opusmodule">Opus Module</string>
<string name="debug_experimental_language">App language</string>
<string name="debug_experimental_language_summary">Choose language of the app</string>
<string name="debug_developer_functions">Developer options</string>
<string name="debug_developer_mode">Developer mode</string>
<string name="debug_developer_mode_summary">Force tester/dev/employee account and debug/deploy version. Only for extended debugging</string>
<string name="debug_developer_force_ssl" translatable="false">SSL Pinning</string>
<string name="debug_developer_force_ssl_summary">HTTPS certificate checking. Turning off let sniff app\'s traffic</string>
<string name="debug_developer_dark_mode">Dark mode</string>
<string name="debug_developer_is_music_restricted" translatable="false">isMusicRestricted</string>
<string name="debug_developer_is_music_restricted_summary">VK music restriction. Actually doesn\'t restrict anything, because everything is removed</string>
<string name="debug_developer_has_music_subscription" translatable="false">hasMusicSubscription</string>
<string name="debug_developer_has_music_subscription_summary">Music subscription</string>
<string name="debug_developer_old_about">Return old about screen</string>
<string name="debug_developer_ssfs_custom">SSFS domain</string>
<string name="debug_domains">Domains</string>
<string name="debug_domains_editing">Domain editing</string>
<string name="debug_domains_editing_summary">All domain editing logic moved to proxy settings</string>
<string name="debug_domains_api">API domain</string>
<string name="debug_domains_oauth">OAuth domain</string>
<string name="debug_domains_vkui_host" translatable="false">VK UI host uri</string>
<string name="debug_domains_vkui_spa" translatable="false">VK UI SPA uri</string>
<string name="debug_domains_awayphp">away.php domain</string>
<string name="debug_logging">Logging</string>
<string name="debug_logging_file">Record logs to file</string>
<string name="debug_logging_file_summary">Record app logs. Works until app\'s full stop</string>
<string name="debug_logging_api">API logging</string>
<string name="debug_logging_api_summary">Log API along with main logging</string>
<string name="debug_logging_api_errors">Show API errors</string>
<string name="debug_logging_api_errors_summary">Display API errors as toasts</string>
<string name="debug_logging_webview">WebView debugging</string>
<string name="debug_logging_force_stats_sending">Immediately send stats</string>
<string name="debug_logging_visualise_viewposttime">view_post_time visualisation</string>
<string name="debug_logging_visualise_viewposttime_summary">Highlight posts on view_post_time event</string>
<string name="debug_logging_breakpoints">Allow breakpoints</string>
<string name="debug_logging_breakpoints_summary">Allow request breakpoints through proxy (Charles)</string>
<string name="debug_logging_apply_spaces">Apply spaces</string>
<string name="debug_logging_apply_spaces_summary">Apply spaces for messages after longpoll history</string>
<string name="debug_logging_memleak">Turn on MemLeak detect</string>
<string name="debug_cache">Cache</string>
<string name="debug_cache_trusted_hash">Clear 2fa hash</string>
<string name="debug_cache_webview">Clear WebView cache</string>
<string name="debug_cache_video">Clear video cache</string>
<string name="debug_system">System</string>
<string name="debug_system_language">Language override</string>
<string name="debug_system_terminate">Kill the app</string>
<string name="debug_system_fcm">Update Firebase device registration</string>
<string name="debug_system_fcm_copy_token">Copy push token</string>
<string name="debug_system_google_now">Update Google Now</string>
<string name="debug_tests">Tests</string>
<string name="debug_tests_bd">Test BD notification</string>
<string name="debug_tests_validation">Test need_validation error</string>
<string name="debug_tests_captcha">Test captcha error</string>
<string name="debug_tests_crash">Test system error</string>
<string name="debug_tests_ads">Test ad</string>
<string name="debug_tests_pretty_cards">pretty_cards demo</string>
<string name="debug_tests_spa_uri">Test VK UI uri</string>
<string name="debug_tests_spa">Test VK UI</string>
<string name="debug_proxy">Official VK Proxy</string>
<string name="debug_proxy_force">Force VK Proxy features</string>
<string name="debug_proxy_force_summary">VK solutions for their proxy</string>
<string name="debug_proxy_enable">Proxy</string>
<string name="debug_proxy_enable_summary">Won\'t work</string>
<string name="debug_other">Other</string>
<string name="DNR_ON">Enable Do Not Read</string>
<string name="DNR_OFF">Disable Do Not Read</string>
<string name="vtl_crashed">An error has occurred in VTL!</string>
<string name="vtl_crash_upload">Upload logs</string>
<string name="vtl_crash_save">Save to local file</string>
<string name="batteryissuetitle">Disable battery optimization!</string>
<string name="batteryissuesumm">Due to the fact that you are using a third-party firmware from the list below, notifications may come with a delay or not at all. \n Click on the \"Disable optimization\" button to fix this problem. \n\nThird-party firmware on which problems with push are observed:\nFlyme, EMUI, MIUI, ColorOS, Samsung Experience or TouchWiz, Magic UI, ZenUI, Funtouch OS</string>
<string name="batteryissuebtn1">Disable optimization</string>
<string name="batteryissuebtn2">Ignore</string>
<string name="gmsissuesumm">There is no Google Play Services (GMS) component on your device, which is necessary for VTosters Lite to work correctly</string>
<string name="gmsissuebtn1">Continue without GMS</string>
<string name="gmsissuebtn2">Install GMS</string>
<string name="startsumm1">The VTosters Lite modification has nothing with VK Group!\nDistributed completely free of fee!</string>
<string name="startsumm2">\n\nThe application may not work correctly due to the fact that you are most likely using the shell from the list below. All problems with the display and work of the application are related only to your firmware and only with it. All bug reports sent due to problems on this firmware are not considered by the developers and will not be fixed.\n\n Pressing the \"Continue\" button, you agree that possible application bugs may occur due to the specifics of your firmware. We recommend using AOSP-based firmware for maximum stability.\n\n Firmware on which there are problems with applications:\nFlyme, EMUI, MIUI, ColorOS, Samsung Experience or TouchWiz, Magic UI, ZenUI, Funtouch OS</string>
<string name="startbtn1">News</string>
<string name="startbtn2">Continue</string>
<string name="videodownloaderr">This video cannot be downloaded</string>
<string name="roundedmsgs">Rounded messages</string>
<item type="string" name="APKTOOL_DUMMY_10be" />
<item type="string" name="APKTOOL_DUMMY_10bf" />
<item type="string" name="APKTOOL_DUMMY_10c0" />
File diff suppressed because it is too large Load Diff
+36 -39
View File
@@ -1,14 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="@string/activity_undel">
<com.vtosters.lite.ui.SummaryListPreference
android:defaultValue="default"
android:dialogTitle="@string/activity_undel_dial"
android:entries="@array/undel_value"
android:entryValues="@array/undel"
android:key="undeletemsg_prefix_value"
android:title="@string/activity_undel_tag" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="true"
android:key="undeletemsg"
android:summary="@string/activity_undel_attachments"
android:title="@string/activity_undel_enable" />
<com.vtosters.lite.ui.MaterialSectionDividerPreference />
</PreferenceCategory>
<PreferenceCategory android:title="@string/online_vtl">
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="true"
android:key="offline"
android:summary="@string/vtlofflinesummary"
android:title="@string/vtloffline" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="true"
android:key="setoffline"
android:summary="@string/vtloffline2summary"
android:title="@string/vtloffline2" />
<com.vtosters.lite.ui.MaterialSectionDividerPreference />
</PreferenceCategory>
<PreferenceCategory android:title="@string/dnr">
<Preference
android:enabled="false"
android:summary="Функция позволяет вам не отправлять статус прочтения вами сообщения собеседника"
android:title="Что это за функция?" />
android:summary="@string/activity_dnr_summary"
android:title="@string/activity_what_is_it" />
<Preference
android:enabled="false"
android:summary="Визуально может работать некорректно (сообщение прочиталось локально), но у собеседника оно прочитано не будет"
android:title="Внимание!" />
android:summary="@string/activity_dnr_visual"
android:title="@string/activity_dnr_warn" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="read_pm"
@@ -26,8 +54,8 @@
<PreferenceCategory android:title="@string/dnw">
<Preference
android:enabled="false"
android:summary="Функция позволяет вам не отправлять статус вашего набора/написания сообщения"
android:title="Что это за функция?" />
android:summary="@string/activity_dnw_summary"
android:title="@string/activity_what_is_it" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="write_pm"
@@ -45,45 +73,14 @@
<PreferenceCategory android:title="@string/stories_vtl">
<Preference
android:enabled="false"
android:summary="Функция позволяет вам не отправлять статус просмотра вами историй"
android:title="Что это за функция?" />
android:summary="@string/activity_dns_summary"
android:title="@string/activity_what_is_it" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="true"
android:key="dns"
android:title="@string/dns" />
<com.vtosters.lite.ui.MaterialSectionDividerPreference />
</PreferenceCategory>
<PreferenceCategory android:title="Анти-удаление сообщений">
<com.vtosters.lite.ui.SummaryListPreference
android:defaultValue="default"
android:dialogTitle="Выберите значение"
android:entries="@array/undel_value"
android:entryValues="@array/undel"
android:key="undeletemsg_prefix"
android:title="Пометка удаленного сообщения" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="undeletemsg"
android:summary="Может не сохранять вложения"
android:title="Оставлять удаленные сообщения" />
<com.vtosters.lite.ui.MaterialSectionDividerPreference />
</PreferenceCategory>
<PreferenceCategory android:title="@string/online_vtl">
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="true"
android:key="offline"
android:summary="@string/vtlofflinesummary"
android:title="@string/vtloffline" />
<com.vtosters.lite.ui.MaterialSectionDividerPreference />
</PreferenceCategory>
<PreferenceCategory android:title="@string/offline_vtl">
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="setoffline"
android:summary="@string/vtloffline2summary"
android:title="@string/vtloffline2" />
<com.vtosters.lite.ui.MaterialSectionDividerPreference />
</PreferenceCategory>
<PreferenceCategory android:title="@string/privacy_vtl">
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="true"
+89 -75
View File
@@ -3,36 +3,46 @@
android:key="preferences_debug">
<Preference
android:enabled="false"
android:summary="Данное меню предназначено только для тестирования работоспособности приложения. Если вы являетесь рядовым юзером, то вам не следует ничего не трогать в данных настройках (пожалуйста)"
android:title="Внимание!" />
android:summary="@string/debug_warning_summary"
android:title="@string/debug_warning" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="devmenu"
android:title="Показывать пункт дебага в настройках" />
<PreferenceCategory android:title="Experimental">
android:title="@string/debug_show_settings_item" />
<PreferenceCategory android:title="@string/debug_experimental">
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="true"
android:key="msgtails"
android:summary="@string/messages_interface_tails_summary"
android:title="@string/vtlmsgtails" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="calls"
android:summary="@string/messages_interface_calls_summary"
android:title="@string/vtlcalls" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="true"
android:key="usevkui"
android:summary="Редактирование страницы?"
android:summary="@string/debug_experimental_usevkui"
android:title="@string/vtlusevkui" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="unlockstats"
android:summary="Вкшники вроде перестали отдавать инфу"
android:title="Статистика страницы" />
android:summary="@string/debug_experimental_page_stats_summary"
android:title="@string/debug_experimental_page_stats" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="vksans"
android:title="Шрифт VK Sans" />
android:title="@string/debug_experimental_vk_sans_font" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="vkme_msg"
android:title="VK Me MSG mode" />
android:title="@string/debug_experimental_vk_me_mode" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="libverify"
android:summary="Включение может пофиксить 2фа вход"
android:title="libverify support" />
android:summary="@string/debug_experimental_libverify_summary"
android:title="@string/debug_experimental_libverify" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="msgflat"
@@ -40,206 +50,210 @@
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="true"
android:key="opusmodule"
android:title="Opus Module" />
android:title="@string/debug_experimental_opusmodule" />
<com.vtosters.lite.ui.SummaryListPreference
android:defaultValue="system"
android:dialogTitle="Выберите язык приложения"
android:dialogTitle="@string/debug_experimental_language_summary"
android:entries="@array/language"
android:entryValues="@array/lang_value"
android:key="lang_value"
android:title="Язык приложения" />
android:title="@string/debug_experimental_language" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="true"
android:key="disableanimstickers"
android:title="Disable anim stickers + suggestions" />
</PreferenceCategory>
<PreferenceCategory android:title="Функции для разработчиков">
<PreferenceCategory android:title="@string/debug_developer_functions">
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="dev"
android:summary="Форсирование аккаунта разработчика/тестера/работника и форсирование версии debug/deploy. Нужно только для расширенного дебагинга"
android:title="Режим разработчика" />
android:summary="@string/debug_developer_mode_summary"
android:title="@string/debug_developer_mode" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="true"
android:key="ssl"
android:summary="Проверка сертификата HTTPS. Отключение позволит смотреть и редактировать трафик через Charles и прочие программы"
android:title="SSL Pinning" />
android:summary="@string/debug_developer_force_ssl_summary"
android:title="@string/debug_developer_force_ssl" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="true"
android:key="darkmode"
android:title="Тёмная тема" />
android:title="@string/debug_developer_dark_mode" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="true"
android:key="isMusicRestricted"
android:summary="Вкшные ограничения на музыку. Фактически ничего не ограничивает, ибо всё вырезано"
android:title="isMusicRestricted" />
android:summary="@string/debug_developer_is_music_restricted_summary"
android:title="@string/debug_developer_is_music_restricted" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="true"
android:key="hasMusicSubscription"
android:summary="Подписка на музыку"
android:title="hasMusicSubscription" />
android:summary="@string/debug_developer_has_music_subscription_summary"
android:title="@string/debug_developer_has_music_subscription" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="oldabout"
android:title="Вернуть старые пункты в about" />
android:title="@string/debug_developer_old_about" />
<EditTextPreference
android:defaultValue="https://vtsf.vknext.net"
android:key="ssfscustom"
android:title="SSFS Domain" />
android:title="@string/debug_developer_ssfs_custom" />
<com.vtosters.lite.ui.MaterialSectionDividerPreference />
</PreferenceCategory>
<PreferenceCategory
android:key="domains"
android:title="Домены">
android:title="@string/debug_domains">
<Preference
android:enabled="false"
android:summary="Вся логика смены доменов переехала во вкладку с прокси"
android:title="Изменение ссылок доменов" />
android:summary="@string/debug_domains_editing_summary"
android:title="@string/debug_domains_editing" />
<EditTextPreference
android:defaultValue="api.vk.com"
android:key="apiHost"
android:title="Домен API" />
android:title="@string/debug_domains_api" />
<EditTextPreference
android:defaultValue="oauth.vk.com"
android:key="oauthHost"
android:title="Домен OAuth" />
android:title="@string/debug_domains_oauth" />
<EditTextPreference
android:defaultValue="static.vk.com"
android:key="vkUiHostUri"
android:title="VK UI host uri" />
android:title="@string/debug_domains_vkui_host" />
<EditTextPreference
android:defaultValue="vk.com/spa"
android:key="spaUri"
android:title="VK UI SPA uri" />
android:title="@string/debug_domains_vkui_spa" />
<EditTextPreference
android:defaultValue="m.vk.com"
android:key="awayPhpDomain"
android:title="away.php domain" />
android:title="@string/debug_domains_awayphp" />
<com.vtosters.lite.ui.MaterialSectionDividerPreference />
</PreferenceCategory>
<PreferenceCategory
android:key="logging"
android:title="Логирование">
android:title="@string/debug_logging">
<Preference
android:key="__dbg_log_to_file"
android:summary="Запись логов приложения. Работает до полной остановки приложения"
android:title="Запись логов в файл" />
android:summary="@string/debug_logging_file_summary"
android:title="@string/debug_logging_file" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="__dbg_api"
android:summary="Возможность логгирования Api при записи логов"
android:title="Логирование API" />
android:summary="@string/debug_logging_api_summary"
android:title="@string/debug_logging_api" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="__dbg_api_errors"
android:summary="Отображать ошибки api с помощью тоста"
android:title="Показывать ошибки API" />
android:summary="@string/debug_logging_api_errors_summary"
android:title="@string/debug_logging_api_errors" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="__dbg_force_send"
android:title="Моментальная отправка статы" />
android:title="@string/debug_logging_force_stats_sending" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="__dbg_webview"
android:title="Дебаг WebView" />
android:title="@string/debug_logging_webview" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="__dbg_view_post_time_overlay"
android:summary="Подсвечивать посты при регистрации события view_post_time"
android:title="Визуализация view_post_time" />
android:summary="@string/debug_logging_visualise_viewposttime_summary"
android:title="@string/debug_logging_visualise_viewposttime" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="__dbg_allow_requests_breakpoints"
android:summary="Разрешить брекпоинты запросов через Proxy (Charles)"
android:title="Разрешить брекпоинты" />
android:summary="@string/debug_logging_breakpoints_summary"
android:title="@string/debug_logging_breakpoints" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="__dbg_apply_spaces"
android:summary="Применять дырки для сообщений после long poll history."
android:title="Применять дырки" />
android:summary="@string/debug_logging_apply_spaces_summary"
android:title="@string/debug_logging_apply_spaces" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="__dbg_mem_leak"
android:title="Включить MemLeak detect" />
android:title="@string/debug_logging_memleak" />
<com.vtosters.lite.ui.MaterialSectionDividerPreference />
</PreferenceCategory>
<PreferenceCategory
android:key="cache"
android:title="Кэш">
android:title="@string/debug_cache">
<Preference
android:key="clearTrustedHash"
android:title="Очистить хэш 2ФА" />
android:title="@string/debug_cache_trusted_hash" />
<Preference
android:key="clearWebViewCache"
android:title="Очистить кэш WebView" />
android:title="@string/debug_cache_webview" />
<Preference
android:key="clearVideoCache"
android:title="Очистить видео кэш" />
android:title="@string/debug_cache_video" />
<com.vtosters.lite.ui.MaterialSectionDividerPreference />
</PreferenceCategory>
<PreferenceCategory
android:key="system"
android:title="Системные">
android:title="@string/debug_system">
<EditTextPreference
android:key="__dbg_lang_override"
android:title="Language override" />
android:title="@string/debug_system_language" />
<Preference
android:key="__dbg_terminate"
android:title="Завершить процесс" />
android:title="@string/debug_system_terminate" />
<Preference
android:key="__dbg_re_register_firebase"
android:title="Обновить регистрацию Firebase" />
android:title="@string/debug_system_fcm" />
<Preference
android:key="__dbg_copy_firebase_token"
android:title="Скопировать push token" />
android:title="@string/debug_system_fcm_copy_token" />
<Preference
android:key="reRegisterGoogleNow"
android:title="Обновить Google Now" />
android:title="@string/debug_system_google_now" />
<com.vtosters.lite.ui.MaterialSectionDividerPreference />
</PreferenceCategory>
<PreferenceCategory
android:key="tests"
android:title="Тесты">
android:title="@string/debug_tests">
<Preference
android:key="__dbg_test_bday"
android:title="Тест уведомления о ДР" />
android:title="@string/debug_tests_bd" />
<Preference
android:key="__dbg_test_validation"
android:title="Тест ошибки need_validation" />
android:title="@string/debug_tests_validation" />
<Preference
android:key="__dbg_test_captcha"
android:title="Тест ошибки captcha" />
android:title="@string/debug_tests_captcha" />
<Preference
android:key="__dbg_test_crash"
android:title="Тест ошибки системы" />
android:title="@string/debug_tests_crash" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="__dbg_demo_ads"
android:title="Тестовая реклама" />
android:title="@string/debug_tests_ads" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="__dbg_demo_pretty_cards"
android:title="Демо карусель карточек" />
android:title="@string/debug_tests_pretty_cards" />
<EditTextPreference
android:defaultValue="static.vk.com/demo"
android:key="testSPAUri"
android:title="VK UI Uri (для теста)" />
android:title="@string/debug_tests_spa_uri" />
<Preference
android:key="__dbg_test_vk_ui"
android:title="Тест VK UI" />
android:title="@string/debug_tests_spa" />
</PreferenceCategory>
<com.vtosters.lite.ui.MaterialSectionDividerPreference />
<PreferenceCategory android:title="Официальный прокси вк">
<PreferenceCategory android:title="@string/debug_proxy">
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="proxyvk"
android:summary="Вкшные костыли для своего прокси"
android:title="Force VK Proxy features" />
android:summary="@string/debug_proxy_force_summary"
android:title="@string/debug_proxy_force" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="__dbg_proxy_enable"
android:summary="Не работает"
android:title="Прокси" />
android:summary="@string/debug_proxy_enable_summary"
android:title="@string/debug_proxy_enable" />
<com.vtosters.lite.ui.MaterialSectionDividerPreference />
</PreferenceCategory>
<PreferenceCategory
android:key="others"
android:title="Прочее" />
android:title="@string/debug_other" />
<com.vtosters.lite.ui.MaterialSectionDividerPreference />
</PreferenceScreen>
+24 -22
View File
@@ -4,7 +4,7 @@
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="__dbg_no_ads"
android:summary="Обычные рекламные вставки в ленте между постами"
android:summary="@string/feed_ads_regular_summary"
android:title="@string/vtldads" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
@@ -14,18 +14,18 @@
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="__dbg_no_slider_ads"
android:summary="Реклама со списком (товаров)"
android:summary="@string/feed_ads_carousel_summary"
android:title="@string/vtldca" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="adsstories"
android:summary="Реклама при переходе между историями"
android:summary="@string/feed_ads_stories_summary"
android:title="@string/vtldas" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="copyright_post"
android:summary="В большенстве случаев рекламные посты с пометкой источника рекламодателя"
android:title="Отключить посты с источником" />
android:summary="@string/feed_ads_sources_summary"
android:title="@string/feed_ads_sources" />
<com.vtosters.lite.ui.MaterialSectionDividerPreference />
</PreferenceCategory>
<PreferenceCategory android:title="@string/vtlfilters">
@@ -61,46 +61,48 @@
</PreferenceCategory>
<PreferenceCategory android:title="@string/vtlrecommend">
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="true"
android:defaultValue="false"
android:key="friendsrecomm"
android:summary="Рекомендации возможных друзей"
android:summary="@string/feed_recommendations_friends_summary"
android:title="@string/vtlrecommendfriend" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="true"
android:defaultValue="false"
android:key="authorsrecomm"
android:summary="Рекомендации постов популярных авторов контента"
android:summary="@string/feed_recommendations_authors_summary"
android:title="@string/vtlrecommendauthor" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="true"
android:defaultValue="false"
android:key="postsrecomm"
android:summary="Рекомендации лайкнутых постов твоих друзей"
android:summary="@string/feed_recommendations_friends_reacted_summary"
android:title="@string/vtlrecommendfriendpost" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="true"
android:defaultValue="false"
android:key="captions"
android:summary="@string/vtlrecommendmarksummary"
android:title="@string/vtlrecommendmark" />
<com.vtosters.lite.ui.MaterialSectionDividerPreference />
</PreferenceCategory>
<PreferenceCategory android:title="@string/vtlfeedwork">
<Preference
android:key="officialnewssett"
android:summary="@string/officialnewssett_summary"
android:title="@string/officialnewssett" />
<com.vtosters.lite.ui.SummaryListPreference
android:defaultValue="default"
android:dialogTitle="Выберите значение"
android:entries="@array/commentssort_value"
android:entryValues="@array/commentssort"
android:key="commentssort"
android:title="Сортировка комментариев" />
<com.vtosters.lite.ui.SummaryListPreference
android:defaultValue="default"
android:dialogTitle="Выберите значение"
android:dialogTitle="@string/feed_other_update_dialog_title"
android:entries="@array/newsupdate_value"
android:entryValues="@array/newsupdate"
android:key="newsupdate"
android:title="Обновление новостей" />
android:title="@string/feed_other_update" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="commentssorting"
android:summary="@string/feed_other_sort_comments_summary"
android:title="@string/feed_other_sort_comments" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="true"
android:key="feedcache"
android:summary="Оставлять список загруженных постов в ленте"
android:summary="@string/feed_other_cache_summary"
android:title="@string/vtlfeedcache" />
</PreferenceCategory>
</PreferenceScreen>
+2 -3
View File
@@ -28,9 +28,8 @@
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="olddock"
android:summary="Использовать старые иконки в докбаре
Необходимо сбросить настройки докбара для применения изменений"
android:title="Старые иконки" />
android:summary="@string/interface_global_old_icons_summary"
android:title="@string/interface_global_old_icons" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="true"
android:key="fulltime"
+6 -12
View File
@@ -1,21 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="@string/vtlinterfacemsg">
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="true"
android:key="calls"
android:summary="Иконка звонков в сообщениях"
android:title="@string/vtlcalls" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="true"
android:key="msgtails"
android:summary="Может некорректно работать с вложениями"
android:title="@string/vtlmsgtails" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="true"
android:key="voice"
android:summary="@string/vtlvoicesummary"
android:title="@string/vtlvoice" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="roundedmsgs"
android:title="@string/roundedmsgs" />
<com.vtosters.lite.ui.MaterialSectionDividerPreference />
</PreferenceCategory>
<PreferenceCategory android:title="@string/interfaceemoji">
@@ -39,11 +33,11 @@
<PreferenceCategory android:title="@string/vtlother">
<com.vtosters.lite.ui.SummaryListPreference
android:defaultValue="30"
android:dialogTitle="Выберите количество"
android:dialogTitle="@string/messages_other_choose_count"
android:entries="@array/msgcount_value"
android:entryValues="@array/msgcount"
android:key="msgcount"
android:title="Количество загружаемых сразу сообщений" />
android:title="@string/messages_other_download_first" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="convUsersOnline"
+8 -8
View File
@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="VKX">
<PreferenceCategory android:title="@string/vkx_title">
<Preference
android:enabled="false"
android:summary="Интеграция позволит использовать возможности VK X прямиком в VTosters Lite\n\nКроме воспроизведения, в клиенте будет работать и кеш из плеера"
android:title="Зачем?" />
android:summary="@string/vkx_why_summary"
android:title="@string/vkx_why" />
<Preference
android:persistent="false"
android:title="Скачать VKX">
android:title="@string/vkx_download">
<intent
android:action="android.intent.action.VIEW"
android:data="https://vkx.app" />
@@ -15,14 +15,14 @@
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="libvkx_integration"
android:title="Интеграция с VK X" />
android:title="@string/vkx_integration" />
<com.vtosters.lite.ui.MaterialSectionDividerPreference />
</PreferenceCategory>
<PreferenceCategory android:title="Прочее">
<PreferenceCategory android:title="@string/vk_fix_music_other">
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="true"
android:key="gcmfix"
android:summary="Актуально если музыкальный раздел не работает (не отображается музыка или вместо музыки написано Слушайте в официальном приложении ВКонтакте) или же отсутствует компонент GMS"
android:title="Исправление музыкального раздела" />
android:summary="@string/vk_fix_music_summary"
android:title="@string/vk_fix_music" />
</PreferenceCategory>
</PreferenceScreen>
+10 -6
View File
@@ -1,22 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="Исправление работы приложения">
<PreferenceCategory android:title="@string/other_fix_app">
<Preference
android:key="firebasefix"
android:summary="@string/firebasefixsum"
android:title="@string/firebasefix" />
<Preference
android:key="stickfix"
android:title="Очистить кэш стикеров"
android:summary="Исправление загрузки стикеров при их полном отсутствии" />
android:title="@string/other_clear_stickers_cache"
android:summary="@string/other_clear_stickers_cache_summary" />
<Preference
android:key="deleteprefs"
android:summary="Сбрасывает включенные вами функции модификации на значения по умолчанию"
android:title="Сбросить настройки" />
android:summary="@string/other_reset_settings_summary"
android:title="@string/other_reset_settings" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="true"
android:key="color_grishka"
android:title="Исправление покрасок для Android 12" />
android:title="@string/other_fix_dynamic_colors" />
<com.vtosters.lite.ui.MaterialSectionDividerPreference />
</PreferenceCategory>
<PreferenceCategory android:title="@string/vtsystem">
@@ -68,5 +68,9 @@
android:defaultValue="true"
android:key="VT_Fire"
android:title="@string/showvtfire" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="donaterecomm"
android:title="@string/donaterecomm" />
</PreferenceCategory>
</PreferenceScreen>
+8 -8
View File
@@ -41,13 +41,13 @@
<EditTextPreference
android:defaultValue=""
android:key="proxyUserHTTP"
android:summary="Если имеется"
android:title="Логин" />
android:summary="@string/proxy_if"
android:title="@string/proxy_login_title" />
<EditTextPreference
android:defaultValue=""
android:key="proxyPassHTTP"
android:summary="Если имеется"
android:title="Пароль" />
android:summary="@string/proxy_if"
android:title="@string/proxy_password_title" />
<com.vtosters.lite.ui.MaterialSectionDividerPreference />
</PreferenceCategory>
<PreferenceCategory android:title="@string/proxyhttps">
@@ -62,13 +62,13 @@
<EditTextPreference
android:defaultValue=""
android:key="proxyUserHTTPS"
android:summary="Если имеется"
android:title="Логин" />
android:summary="@string/proxy_if"
android:title="@string/proxy_login_title" />
<EditTextPreference
android:defaultValue=""
android:key="proxyPassHTTPS"
android:summary="Если имеется"
android:title="Пароль" />
android:summary="@string/proxy_if"
android:title="@string/proxy_password_title" />
<com.vtosters.lite.ui.MaterialSectionDividerPreference />
</PreferenceCategory>
<PreferenceCategory android:title="@string/proxysocks">
+10 -10
View File
@@ -3,27 +3,27 @@
<PreferenceCategory android:title="@string/vtlthemes">
<Preference
android:enabled="false"
android:summary="Для примнений изменений тем необходимо переключить тему"
android:title="Полезная информация" />
android:summary="@string/appearance_theme_info_summary"
android:title="@string/appearance_theme_info" />
<com.vtosters.lite.ui.SummaryListPreference
android:defaultValue="default"
android:dialogTitle="Выберите тему"
android:dialogTitle="@string/appearance_theme_dialog_title"
android:entries="@array/darktheme_value"
android:entryValues="@array/darktheme"
android:key="darktheme"
android:title="Темная тема приложения" />
android:title="@string/appearance_theme_dark_theme" />
<com.vtosters.lite.ui.SummaryListPreference
android:defaultValue="default"
android:dialogTitle="Выберите тему"
android:dialogTitle="@string/appearance_theme_dialog_title"
android:entries="@array/lighttheme_value"
android:entryValues="@array/lighttheme"
android:key="lighttheme"
android:title="Светлая тема приложения" />
android:title="@string/appearance_theme_light_theme" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="true"
android:key="systemtheme"
android:summary="Применение системной темы при запуске приложения"
android:title="Использовать системную тему" />
android:summary="@string/appearance_theme_use_system_summary"
android:title="@string/appearance_theme_use_system" />
<com.vtosters.lite.ui.MaterialSectionDividerPreference />
</PreferenceCategory>
<PreferenceCategory android:title="@string/vticon">
@@ -38,12 +38,12 @@
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="true"
android:key="navbar"
android:summary="Если системно имеется"
android:summary="@string/appearance_other_color_navbar_summary"
android:title="@string/vtlnavbar" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="true"
android:key="VKUI_INJ"
android:summary="Покраска страниц как VKID под тему приложения"
android:summary="@string/appearance_other_color_webview_summary"
android:title="@string/vkuiinj" />
</PreferenceCategory>
</PreferenceScreen>
@@ -1,174 +0,0 @@
.class public final enum Lcom/vk/core/ui/themes/VKTheme;
.super Ljava/lang/Enum;
.source "VKThemeHelper.kt"
# annotations
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/lang/Enum<",
"Lcom/vk/core/ui/themes/VKTheme;",
">;"
}
.end annotation
# static fields
.field private static final synthetic $VALUES:[Lcom/vk/core/ui/themes/VKTheme;
.field public static final enum DARK:Lcom/vk/core/ui/themes/VKTheme;
.field public static final enum AMOLED:Lcom/vk/core/ui/themes/VKTheme;
.field public static final enum DEFAULT_LIGHT:Lcom/vk/core/ui/themes/VKTheme;
# instance fields
.field private final id:J
.field private final themeResId:I
# direct methods
.method static constructor <clinit>()V
.locals 14
const/4 v0, 0x3
new-array v0, v0, [Lcom/vk/core/ui/themes/VKTheme;
new-instance v7, Lcom/vk/core/ui/themes/VKTheme;
const-string v2, "DEFAULT_LIGHT"
.line 291
sget v6, Lcom/vk/s/R$g;->BaseStyle:I
const/4 v3, 0x0
const-wide/16 v4, 0x0
move-object v1, v7
invoke-direct/range {v1 .. v6}, Lcom/vk/core/ui/themes/VKTheme;-><init>(Ljava/lang/String;IJI)V
sput-object v7, Lcom/vk/core/ui/themes/VKTheme;->DEFAULT_LIGHT:Lcom/vk/core/ui/themes/VKTheme;
const/4 v1, 0x0
aput-object v7, v0, v1
new-instance v1, Lcom/vk/core/ui/themes/VKTheme;
const-string v9, "DARK"
.line 292
sget v13, Lcom/vk/s/R$g;->BaseDarkStyle:I
const/4 v10, 0x1
const-wide/16 v11, 0x1
move-object v8, v1
invoke-direct/range {v8 .. v13}, Lcom/vk/core/ui/themes/VKTheme;-><init>(Ljava/lang/String;IJI)V
sput-object v1, Lcom/vk/core/ui/themes/VKTheme;->DARK:Lcom/vk/core/ui/themes/VKTheme;
const/4 v2, 0x1
aput-object v1, v0, v2
new-instance v1, Lcom/vk/core/ui/themes/VKTheme;
const-string v9, "AMOLED"
.line 292
invoke-static {}, Lru/vtosters/lite/utils/Themes;->getAmoledTheme()I
move-result v13
const/4 v10, 0x2
const-wide/16 v11, 0x2
move-object v8, v1
invoke-direct/range {v8 .. v13}, Lcom/vk/core/ui/themes/VKTheme;-><init>(Ljava/lang/String;IJI)V
sput-object v1, Lcom/vk/core/ui/themes/VKTheme;->AMOLED:Lcom/vk/core/ui/themes/VKTheme;
const/4 v2, 0x2
aput-object v1, v0, v2
sput-object v0, Lcom/vk/core/ui/themes/VKTheme;->$VALUES:[Lcom/vk/core/ui/themes/VKTheme;
return-void
.end method
.method protected constructor <init>(Ljava/lang/String;IJI)V
.locals 0
.annotation system Ldalvik/annotation/Signature;
value = {
"(JI)V"
}
.end annotation
.line 289
invoke-direct {p0, p1, p2}, Ljava/lang/Enum;-><init>(Ljava/lang/String;I)V
iput-wide p3, p0, Lcom/vk/core/ui/themes/VKTheme;->id:J
iput p5, p0, Lcom/vk/core/ui/themes/VKTheme;->themeResId:I
return-void
.end method
.method public static valueOf(Ljava/lang/String;)Lcom/vk/core/ui/themes/VKTheme;
.locals 1
const-class v0, Lcom/vk/core/ui/themes/VKTheme;
invoke-static {v0, p0}, Ljava/lang/Enum;->valueOf(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;
move-result-object p0
check-cast p0, Lcom/vk/core/ui/themes/VKTheme;
return-object p0
.end method
.method public static values()[Lcom/vk/core/ui/themes/VKTheme;
.locals 1
sget-object v0, Lcom/vk/core/ui/themes/VKTheme;->$VALUES:[Lcom/vk/core/ui/themes/VKTheme;
invoke-virtual {v0}, [Lcom/vk/core/ui/themes/VKTheme;->clone()Ljava/lang/Object;
move-result-object v0
check-cast v0, [Lcom/vk/core/ui/themes/VKTheme;
return-object v0
.end method
# virtual methods
.method public final a()J
.locals 2
.line 289
iget-wide v0, p0, Lcom/vk/core/ui/themes/VKTheme;->id:J
return-wide v0
.end method
.method public final b()I
.locals 1
.line 290
iget v0, p0, Lcom/vk/core/ui/themes/VKTheme;->themeResId:I
return v0
.end method
@@ -38,6 +38,10 @@
.method public final a(Lorg/json/JSONObject;)Lcom/vk/dto/discover/Info;
.locals 7
invoke-static {}, Lru/vtosters/lite/utils/JsonInjectors;->discoverBanner()Lorg/json/JSONObject;
move-result-object p1
const-string v0, "json"
invoke-static {p1, v0}, Lkotlin/jvm/internal/Intrinsics;->b(Ljava/lang/Object;Ljava/lang/String;)V
@@ -92,10 +92,6 @@
iput-object p2, p0, Lcom/vk/im/engine/commands/dialogs/DialogsHistoryGetArgs;->c:Lcom/vk/im/engine/models/dialogs/DialogsFilter;
invoke-static {}, Lru/vtosters/lite/utils/Preferences;->getMsgCount()I
move-result p3
iput p3, p0, Lcom/vk/im/engine/commands/dialogs/DialogsHistoryGetArgs;->d:I
iput-object p4, p0, Lcom/vk/im/engine/commands/dialogs/DialogsHistoryGetArgs;->e:Lcom/vk/im/engine/models/Source;
@@ -1324,10 +1324,8 @@
if-eqz p2, :cond_1
const-string p2, "VT_Verification"
.line 181
invoke-static {p2}, Lru/vtosters/lite/utils/Preferences;->BooleanTrue(Ljava/lang/String;)Z
invoke-static {}, Lru/vtosters/lite/f0x1d/VTVerifications;->vtverif()Z
move-result p2
@@ -1354,10 +1352,8 @@
if-eqz p2, :cond_2
const-string p2, "VT_Verification"
.line 181
invoke-static {p2}, Lru/vtosters/lite/utils/Preferences;->BooleanTrue(Ljava/lang/String;)Z
invoke-static {}, Lru/vtosters/lite/f0x1d/VTVerifications;->vtverif()Z
move-result p2
@@ -73,10 +73,8 @@
if-eqz p2, :cond_1
const-string p2, "VT_Verification"
.line 181
invoke-static {p2}, Lru/vtosters/lite/utils/Preferences;->BooleanTrue(Ljava/lang/String;)Z
invoke-static {}, Lru/vtosters/lite/f0x1d/VTVerifications;->vtverif()Z
move-result p2
@@ -104,10 +102,8 @@
if-eqz p2, :cond_2
const-string p2, "VT_Verification"
.line 181
invoke-static {p2}, Lru/vtosters/lite/utils/Preferences;->BooleanTrue(Ljava/lang/String;)Z
invoke-static {}, Lru/vtosters/lite/f0x1d/VTVerifications;->vtverif()Z
move-result p2
@@ -379,7 +379,7 @@
move-result-object v8
const/4 v9, 0x0
const/4 v9, 0x2
invoke-virtual {p0}, Lcom/vk/wall/post/CommentsListPresenter;->z()Ljava/lang/String;
@@ -389,7 +389,7 @@
move v4, p1
invoke-direct/range {v1 .. v10}, Lcom/vk/api/wall/WallGetComments;-><init>(IIIIIZLjava/lang/String;ZLjava/lang/String;)V
invoke-direct/range {v1 .. v10}, Lcom/vk/api/wall/WallGetComments;-><init>(IIIIIZLjava/lang/String;ILjava/lang/String;)V
const/4 p1, 0x0
@@ -1084,7 +1084,7 @@
move-object v4, v1
invoke-direct/range {v4 .. v13}, Lcom/vk/api/wall/WallGetComments;-><init>(IIIIIZLjava/lang/String;ZLjava/lang/String;)V
invoke-direct/range {v4 .. v13}, Lcom/vk/api/wall/WallGetComments;-><init>(IIIIIZLjava/lang/String;ILjava/lang/String;)V
.line 171
invoke-virtual {p1}, Lcom/vtosters/lite/NewsComment;->h()I
@@ -1912,7 +1912,7 @@
move v8, p1
invoke-direct/range {v2 .. v11}, Lcom/vk/api/wall/WallGetComments;-><init>(IIIIIZLjava/lang/String;ZLjava/lang/String;)V
invoke-direct/range {v2 .. v11}, Lcom/vk/api/wall/WallGetComments;-><init>(IIIIIZLjava/lang/String;ILjava/lang/String;)V
const/4 p1, 0x0
@@ -2220,11 +2220,11 @@
const/4 v6, 0x1
const/4 v8, 0x0
const/4 v8, 0x2
move-object v0, v10
invoke-direct/range {v0 .. v9}, Lcom/vk/api/wall/WallGetComments;-><init>(IIIIIZLjava/lang/String;ZLjava/lang/String;)V
invoke-direct/range {v0 .. v9}, Lcom/vk/api/wall/WallGetComments;-><init>(IIIIIZLjava/lang/String;ILjava/lang/String;)V
.line 105
invoke-virtual {p0}, Lcom/vk/wall/post/CommentsListPresenter;->v()I
@@ -956,7 +956,7 @@
move v4, p1
invoke-direct/range {v1 .. v10}, Lcom/vk/api/wall/WallGetComments;-><init>(IIIIIZLjava/lang/String;ZLjava/lang/String;)V
invoke-direct/range {v1 .. v10}, Lcom/vk/api/wall/WallGetComments;-><init>(IIIIIZLjava/lang/String;ILjava/lang/String;)V
.line 211
iget p1, p0, Lcom/vk/wall/thread/CommentThreadPresenter;->c:I
@@ -3087,7 +3087,7 @@
move-object v1, p1
invoke-direct/range {v1 .. v10}, Lcom/vk/api/wall/WallGetComments;-><init>(IIIIIZLjava/lang/String;ZLjava/lang/String;)V
invoke-direct/range {v1 .. v10}, Lcom/vk/api/wall/WallGetComments;-><init>(IIIIIZLjava/lang/String;ILjava/lang/String;)V
.line 235
iget v1, p0, Lcom/vk/wall/thread/CommentThreadPresenter;->c:I
@@ -4222,7 +4222,7 @@
move-object v0, v10
invoke-direct/range {v0 .. v9}, Lcom/vk/api/wall/WallGetComments;-><init>(IIIIIZLjava/lang/String;ZLjava/lang/String;)V
invoke-direct/range {v0 .. v9}, Lcom/vk/api/wall/WallGetComments;-><init>(IIIIIZLjava/lang/String;ILjava/lang/String;)V
.line 219
iget v0, p0, Lcom/vk/wall/thread/CommentThreadPresenter;->c:I
@@ -358,6 +358,16 @@
.method public static b(Landroid/content/Context;I)Landroid/content/res/ColorStateList;
.locals 2
invoke-virtual {p0, p1}, Landroid/content/Context;->getColorStateList(I)Landroid/content/res/ColorStateList;
move-result-object p0
invoke-static {p0}, Lru/vtosters/lite/utils/Themes;->themeCSL(Landroid/content/res/ColorStateList;)Landroid/content/res/ColorStateList;
move-result-object p0
return-object p0
.line 395
sget v0, Landroid/os/Build$VERSION;->SDK_INT:I
@@ -580,14 +580,6 @@
invoke-static {}, Lkotlin/jvm/internal/Intrinsics;->a()V
:cond_1
invoke-virtual {v0}, Landroid/app/Dialog;->getWindow()Landroid/view/Window;
move-result-object v0
const/4 v1, 0x1
invoke-virtual {v0, v1}, Landroid/view/Window;->requestFeature(I)Z
return-void
.end method
@@ -851,7 +851,11 @@
move-result-object v8
const-string v8, "Редактор докбара"
const v8, 0x7f111239
invoke-static {v8}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v8
const-class v9, Lru/vtosters/lite/ui/fragments/dockbar/DockBarFragment;
@@ -1152,11 +1156,11 @@
const v7, 0x7f040022
new-instance v8, Ljava/lang/StringBuilder;
const v8, 0x7f11123e
invoke-direct {v8}, Ljava/lang/StringBuilder;-><init>()V
invoke-static {v8}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
const-string v8, "Скачать последнюю версию"
move-result-object v8
new-instance v9, Lcom/vtosters/lite/fragments/VTDownload;
@@ -169,6 +169,10 @@
if-eqz v1, :cond_2
invoke-static {}, Lru/vtosters/lite/utils/JsonInjectors;->discoverBannerButton()Lorg/json/JSONObject;
move-result-object p1
.line 13
sget-object v0, Lcom/vk/dto/common/actions/ActionOpenUrl;->b:Lcom/vk/dto/common/actions/ActionOpenUrl$b;
@@ -100,7 +100,7 @@
const-string v3, "from"
invoke-virtual {p1, v3}, Lorg/json/JSONObject;->getInt(Ljava/lang/String;)I
invoke-virtual {p1, v3}, Lorg/json/JSONObject;->optInt(Ljava/lang/String;)I
move-result v3
@@ -1,195 +0,0 @@
.class public final enum Lcom/vk/im/ui/themes/ImTheme;
.super Ljava/lang/Enum;
.source "ImThemeHelper.kt"
# annotations
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/lang/Enum<",
"Lcom/vk/im/ui/themes/ImTheme;",
">;"
}
.end annotation
# static fields
.field private static final synthetic $VALUES:[Lcom/vk/im/ui/themes/ImTheme;
.field public static final enum VKAPP_DARK:Lcom/vk/im/ui/themes/ImTheme;
.field public static final enum VKAPP_LIGHT:Lcom/vk/im/ui/themes/ImTheme;
.field public static final enum VKME_DARK:Lcom/vk/im/ui/themes/ImTheme;
.field public static final enum VKME_LIGHT:Lcom/vk/im/ui/themes/ImTheme;
.field public static final enum VKAPP_AMOLED:Lcom/vk/im/ui/themes/ImTheme;
# instance fields
.field private final id:I
.field private final themeResId:I
# direct methods
.method static constructor <clinit>()V
.locals 7
const/4 v0, 0x5
new-array v0, v0, [Lcom/vk/im/ui/themes/ImTheme;
new-instance v1, Lcom/vk/im/ui/themes/ImTheme;
const-string v2, "VKAPP_LIGHT"
.line 57
sget v3, Lcom/vk/im/ui/R$m;->VkIm_Theme_VkApp_Light:I
const/4 v4, 0x0
invoke-direct {v1, v2, v4, v4, v3}, Lcom/vk/im/ui/themes/ImTheme;-><init>(Ljava/lang/String;III)V
sput-object v1, Lcom/vk/im/ui/themes/ImTheme;->VKAPP_LIGHT:Lcom/vk/im/ui/themes/ImTheme;
aput-object v1, v0, v4
new-instance v1, Lcom/vk/im/ui/themes/ImTheme;
const-string v2, "VKAPP_DARK"
.line 58
sget v3, Lcom/vk/im/ui/R$m;->VkIm_Theme_VkApp_Dark:I
const/4 v4, 0x3
const/4 v5, 0x1
invoke-direct {v1, v2, v5, v4, v3}, Lcom/vk/im/ui/themes/ImTheme;-><init>(Ljava/lang/String;III)V
sput-object v1, Lcom/vk/im/ui/themes/ImTheme;->VKAPP_DARK:Lcom/vk/im/ui/themes/ImTheme;
aput-object v1, v0, v5
new-instance v1, Lcom/vk/im/ui/themes/ImTheme;
const-string v2, "VKME_LIGHT"
.line 59
sget v3, Lcom/vk/im/ui/R$m;->VkIm_Theme_VkMe_Light:I
const/4 v6, 0x2
invoke-direct {v1, v2, v6, v5, v3}, Lcom/vk/im/ui/themes/ImTheme;-><init>(Ljava/lang/String;III)V
sput-object v1, Lcom/vk/im/ui/themes/ImTheme;->VKME_LIGHT:Lcom/vk/im/ui/themes/ImTheme;
aput-object v1, v0, v6
new-instance v1, Lcom/vk/im/ui/themes/ImTheme;
const-string v2, "VKME_DARK"
.line 60
sget v3, Lcom/vk/im/ui/R$m;->VkIm_Theme_VkMe_Dark:I
invoke-direct {v1, v2, v4, v6, v3}, Lcom/vk/im/ui/themes/ImTheme;-><init>(Ljava/lang/String;III)V
sput-object v1, Lcom/vk/im/ui/themes/ImTheme;->VKME_DARK:Lcom/vk/im/ui/themes/ImTheme;
aput-object v1, v0, v4
new-instance v1, Lcom/vk/im/ui/themes/ImTheme;
const-string v2, "VKAPP_AMOLED"
.line 58
invoke-static {}, Lru/vtosters/lite/utils/Themes;->getAmoledImTheme()I
move-result v3
const/4 v4, 0x4
const/4 v5, 0x4
invoke-direct {v1, v2, v5, v4, v3}, Lcom/vk/im/ui/themes/ImTheme;-><init>(Ljava/lang/String;III)V
sput-object v1, Lcom/vk/im/ui/themes/ImTheme;->VKAPP_AMOLED:Lcom/vk/im/ui/themes/ImTheme;
aput-object v1, v0, v5
sput-object v0, Lcom/vk/im/ui/themes/ImTheme;->$VALUES:[Lcom/vk/im/ui/themes/ImTheme;
return-void
.end method
.method protected constructor <init>(Ljava/lang/String;III)V
.locals 0
.annotation system Ldalvik/annotation/Signature;
value = {
"(II)V"
}
.end annotation
.line 55
invoke-direct {p0, p1, p2}, Ljava/lang/Enum;-><init>(Ljava/lang/String;I)V
iput p3, p0, Lcom/vk/im/ui/themes/ImTheme;->id:I
iput p4, p0, Lcom/vk/im/ui/themes/ImTheme;->themeResId:I
return-void
.end method
.method public static valueOf(Ljava/lang/String;)Lcom/vk/im/ui/themes/ImTheme;
.locals 1
const-class v0, Lcom/vk/im/ui/themes/ImTheme;
invoke-static {v0, p0}, Ljava/lang/Enum;->valueOf(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;
move-result-object p0
check-cast p0, Lcom/vk/im/ui/themes/ImTheme;
return-object p0
.end method
.method public static values()[Lcom/vk/im/ui/themes/ImTheme;
.locals 1
sget-object v0, Lcom/vk/im/ui/themes/ImTheme;->$VALUES:[Lcom/vk/im/ui/themes/ImTheme;
invoke-virtual {v0}, [Lcom/vk/im/ui/themes/ImTheme;->clone()Ljava/lang/Object;
move-result-object v0
check-cast v0, [Lcom/vk/im/ui/themes/ImTheme;
return-object v0
.end method
# virtual methods
.method public final a()I
.locals 1
.line 55
iget v0, p0, Lcom/vk/im/ui/themes/ImTheme;->id:I
return v0
.end method
.method public final b()I
.locals 1
.line 56
iget v0, p0, Lcom/vk/im/ui/themes/ImTheme;->themeResId:I
return v0
.end method

Some files were not shown because too many files have changed in this diff Show More