Compare commits
97
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bdcb3db238 | ||
|
|
f7960b1695 | ||
|
|
825d1b95da | ||
|
|
0e7abaf3f0 | ||
|
|
2731989ae8 | ||
|
|
5ad09e11df | ||
|
|
653d2eeeee | ||
|
|
756ad615ed | ||
|
|
dd6abafad5 | ||
|
|
0434f06bb5 | ||
|
|
50971098ad | ||
|
|
1787f10fca | ||
|
|
6d2684db70 | ||
|
|
f0f1b3a946 | ||
|
|
ae9b703726 | ||
|
|
10512fb74b | ||
|
|
ce9bdba30c | ||
|
|
188c98589c | ||
|
|
e5fa42ff14 | ||
|
|
f42aa95003 | ||
|
|
b16dc816b6 | ||
|
|
b86fe4d65d | ||
|
|
d7e17416f1 | ||
|
|
91355f1dd5 | ||
|
|
ae9e3ed07c | ||
|
|
f701993b0f | ||
|
|
c5bf617f65 | ||
|
|
f09cae1684 | ||
|
|
99d7f06981 | ||
|
|
eaaf7e2bbf | ||
|
|
897382de2b | ||
|
|
55d02a8412 | ||
|
|
7733582238 | ||
|
|
754c8339df | ||
|
|
ebf7baaa65 | ||
|
|
8b26b12813 | ||
|
|
5deb4186f9 | ||
|
|
d3d501f94a | ||
|
|
634f1213d4 | ||
|
|
6fa97ee435 | ||
|
|
05b3342763 | ||
|
|
d434f42d12 | ||
|
|
084f13eda4 | ||
|
|
ed59b54618 | ||
|
|
df282b95ad | ||
|
|
1b38533c83 | ||
|
|
8f4c370ab2 | ||
|
|
9360ea4d85 | ||
|
|
c87d6581c8 | ||
|
|
7133fc6c03 | ||
|
|
46af5af250 | ||
|
|
5b9cc6778c | ||
|
|
5260ad8243 | ||
|
|
2996772020 | ||
|
|
d37534cb6b | ||
|
|
92eb48c21e | ||
|
|
d9e867cb6e | ||
|
|
f200c6e59a | ||
|
|
c668f3bf9a | ||
|
|
bd7afee09b | ||
|
|
ff09a4aec0 | ||
|
|
1e6c60f2ed | ||
|
|
beedb1538d | ||
|
|
8463f9e963 | ||
|
|
ce8f88b8d4 | ||
|
|
ff7d080b5a | ||
|
|
12ad83c607 | ||
|
|
cdf5d2c37c | ||
|
|
9af8e1729e | ||
|
|
d5219ed322 | ||
|
|
7af9a72e77 | ||
|
|
08817bde7e | ||
|
|
d1e9aadd71 | ||
|
|
b6307182cd | ||
|
|
cc70e55b53 | ||
|
|
ed08e97a50 | ||
|
|
44904786d9 | ||
|
|
12b67ce189 | ||
|
|
21b0edf092 | ||
|
|
2adb446d80 | ||
|
|
60738458bb | ||
|
|
a591026258 | ||
|
|
1bab7fa17c | ||
|
|
2713216728 | ||
|
|
f9a529275a | ||
|
|
e992203b7c | ||
|
|
0ed057d705 | ||
|
|
9b70ca6faf | ||
|
|
422c3e4a6c | ||
|
|
6dac880d61 | ||
|
|
c911b2d64e | ||
|
|
39f72f9058 | ||
|
|
2bff354ad0 | ||
|
|
cb55e9b96f | ||
|
|
33f551d464 | ||
|
|
282fa7bdda | ||
|
|
0abd97e8e1 |
@@ -4,7 +4,10 @@ on:
|
|||||||
push:
|
push:
|
||||||
branches: [ master ]
|
branches: [ master ]
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: [ master ]
|
types:
|
||||||
|
- opened
|
||||||
|
- synchronize
|
||||||
|
- reopened
|
||||||
|
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
|
|||||||
@@ -25,3 +25,4 @@ smali/assets/version.properties
|
|||||||
app/src/main/assets/version.properties
|
app/src/main/assets/version.properties
|
||||||
smali/build/resources.zip
|
smali/build/resources.zip
|
||||||
*.idsig
|
*.idsig
|
||||||
|
/smali/VTLite.apk.cache/
|
||||||
|
|||||||
@@ -8,6 +8,10 @@ VTosters Lite - это модифицированный клиент (деком
|
|||||||
|
|
||||||
Стабильные сборки находятся в [Releases](https://github.com/vtosters/lite/releases)
|
Стабильные сборки находятся в [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`
|
Для отладки с помощью Android Studio необходимо пройти в `/smali/AndroidManifest.xml`
|
||||||
|
|||||||
+3
-2
@@ -86,12 +86,13 @@ android {
|
|||||||
sourceCompatibility JavaVersion.VERSION_11
|
sourceCompatibility JavaVersion.VERSION_11
|
||||||
targetCompatibility JavaVersion.VERSION_11
|
targetCompatibility JavaVersion.VERSION_11
|
||||||
}
|
}
|
||||||
|
namespace 'ru.vtosters.lite'
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation "androidx.multidex:multidex:2.0.1"
|
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.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'])
|
compileOnly fileTree(dir: 'libs', include: ['*.jar'])
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
package="ru.vtosters.lite">
|
|
||||||
|
|
||||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package bruhcollective.itaysonlab.libvkx.client;
|
package bruhcollective.itaysonlab.libvkx.client;
|
||||||
|
|
||||||
import static ru.vtosters.lite.utils.Globals.getContext;
|
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.content.Context;
|
||||||
import android.os.RemoteException;
|
import android.os.RemoteException;
|
||||||
@@ -36,7 +36,7 @@ public class LibVKXClient {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isIntegrationEnabled() {
|
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) {
|
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.AtomicBoolean;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
import ru.f0x1d.net.NetCall;
|
import ru.vtosters.lite.net.NetCall;
|
||||||
import ru.f0x1d.net.NetCallback;
|
import ru.vtosters.lite.net.NetCallback;
|
||||||
import ru.f0x1d.net.NetClient;
|
import ru.vtosters.lite.net.NetClient;
|
||||||
import ru.f0x1d.net.NetRequest;
|
import ru.vtosters.lite.net.NetRequest;
|
||||||
import ru.f0x1d.net.NetResponse;
|
import ru.vtosters.lite.net.NetResponse;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by Aefyr on 11.05.2018.
|
* 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -164,8 +164,18 @@ public final class R {
|
|||||||
public static final int start_values = 0x7f03005c;
|
public static final int start_values = 0x7f03005c;
|
||||||
public static final int proxy = 0x7f03005d;
|
public static final int proxy = 0x7f03005d;
|
||||||
public static final int proxy_value = 0x7f03005e;
|
public static final int proxy_value = 0x7f03005e;
|
||||||
public static final int msgcount = 0x7f03005f;
|
public static final int commentssort = 0x7f03005f;
|
||||||
public static final int msgcount_value = 0x7f030060;
|
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 {
|
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 window_bg_transparent = 0x7f06028b;
|
||||||
public static final int yellow = 0x7f06028c;
|
public static final int yellow = 0x7f06028c;
|
||||||
public static final int yellow_light = 0x7f06028d;
|
public static final int yellow_light = 0x7f06028d;
|
||||||
|
public static final int iclauncher = 0x7f06028e;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final class dimen {
|
public static final class dimen {
|
||||||
@@ -14466,8 +14477,8 @@ public final class R {
|
|||||||
public static final int copytokenbtn = 0x7f111029;
|
public static final int copytokenbtn = 0x7f111029;
|
||||||
public static final int killappbtn = 0x7f11102a;
|
public static final int killappbtn = 0x7f11102a;
|
||||||
public static final int experts = 0x7f11102b;
|
public static final int experts = 0x7f11102b;
|
||||||
public static final int DNT_OFF = 0x7f11102c;
|
public static final int DNT_OFF_res_0x7f11102c = 0x7f11102c;
|
||||||
public static final int DNT_ON = 0x7f11102d;
|
public static final int DNT_ON_res_0x7f11102d = 0x7f11102d;
|
||||||
public static final int accounts = 0x7f11102e;
|
public static final int accounts = 0x7f11102e;
|
||||||
public static final int act_bot = 0x7f11102f;
|
public static final int act_bot = 0x7f11102f;
|
||||||
public static final int act_cnv = 0x7f111030;
|
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 vtlota = 0x7f111233;
|
||||||
public static final int DNR_ON = 0x7f111234;
|
public static final int DNR_ON = 0x7f111234;
|
||||||
public static final int DNR_OFF = 0x7f111235;
|
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 {
|
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 = 0x7f1203a7;
|
||||||
public static final int MD_Button_Borderless_Dialog = 0x7f1203a8;
|
public static final int MD_Button_Borderless_Dialog = 0x7f1203a8;
|
||||||
public static final int MaterialDialogTheme_Dark = 0x7f1203a9;
|
public static final int MaterialDialogTheme_Dark = 0x7f1203a9;
|
||||||
public static final int BaseAmoledStyle = 0x7f1203aa;
|
public static final int ActionBarThemeFix = 0x7f1203aa;
|
||||||
public static final int BaseAmoledTheme = 0x7f1203ab;
|
public static final int BaseAmoledStyle = 0x7f1203ab;
|
||||||
public static final int Vk_Theme_client_amoled_generated = 0x7f1203ac;
|
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 {
|
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,5 +1,8 @@
|
|||||||
package ru.vtosters.lite.audio.gcm;
|
package ru.vtosters.lite.audio.gcm;
|
||||||
|
|
||||||
|
import static ru.vtosters.lite.utils.Preferences.VKVersion;
|
||||||
|
import static ru.vtosters.lite.utils.Preferences.VKVersionBuild;
|
||||||
|
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.util.Base64;
|
import android.util.Base64;
|
||||||
|
|
||||||
@@ -108,7 +111,7 @@ public class GCMFix {
|
|||||||
params.add("X-X-subscription=841415684880");
|
params.add("X-X-subscription=841415684880");
|
||||||
}
|
}
|
||||||
params.add("X-X-subtype=841415684880");
|
params.add("X-X-subtype=841415684880");
|
||||||
params.add("X-app_ver=3439");
|
params.add("X-app_ver=" + VKVersionBuild());
|
||||||
params.add("X-kid=|ID|" + rid + "|");
|
params.add("X-kid=|ID|" + rid + "|");
|
||||||
params.add("X-osv=30");
|
params.add("X-osv=30");
|
||||||
params.add("X-sig=" + sig);
|
params.add("X-sig=" + sig);
|
||||||
@@ -129,12 +132,12 @@ public class GCMFix {
|
|||||||
if (!del) {
|
if (!del) {
|
||||||
params.add("X-gmp_app_id=1:841415684880:android:632f429381141121");
|
params.add("X-gmp_app_id=1:841415684880:android:632f429381141121");
|
||||||
}
|
}
|
||||||
params.add("X-app_ver_name=5.29");
|
params.add("X-app_ver_name=" + VKVersion());
|
||||||
params.add("app=com.vkontakte.android");
|
params.add("app=com.vkontakte.android");
|
||||||
params.add("sender=841415684880");
|
params.add("sender=841415684880");
|
||||||
params.add("device=" + androidId);
|
params.add("device=" + androidId);
|
||||||
params.add("cert=48761eef50ee53afc4cc9c5f10e6bde7f8f5b82f");
|
params.add("cert=48761eef50ee53afc4cc9c5f10e6bde7f8f5b82f");
|
||||||
params.add("app_ver=3439");
|
params.add("app_ver=" + VKVersionBuild());
|
||||||
params.add("gcm_ver=11949470");
|
params.add("gcm_ver=11949470");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package ru.vtosters.lite.badmanners;
|
package ru.vtosters.lite.deviceinfo;
|
||||||
|
|
||||||
public class Device {
|
public class Device {
|
||||||
private String androidId;
|
private String androidId;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package ru.vtosters.lite.badmanners;
|
package ru.vtosters.lite.deviceinfo;
|
||||||
|
|
||||||
import android.bluetooth.BluetoothAdapter;
|
import android.bluetooth.BluetoothAdapter;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package ru.vtosters.lite.dnr;
|
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.Globals.getUserToken;
|
||||||
import static ru.vtosters.lite.utils.Proxy.getApiCom;
|
import static ru.vtosters.lite.utils.Proxy.getApiCom;
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
package ru.vtosters.lite.dnr;
|
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 class DNRPrefs {
|
||||||
public static boolean getStoriesRead() {
|
public static boolean getStoriesRead() {
|
||||||
return BooleanFalse("read_s");
|
return getBoolValue("read_s", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean getMarkAsReadWithoutExceptions(int peerId) {
|
public static boolean getMarkAsReadWithoutExceptions(int peerId) {
|
||||||
@@ -28,27 +28,27 @@ public class DNRPrefs {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static boolean readPM(int peer) {
|
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) {
|
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) {
|
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) {
|
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) {
|
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) {
|
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) {
|
public static boolean getActivityWithoutExceptions(int peerId) {
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package ru.vtosters.lite.downloaders;
|
package ru.vtosters.lite.downloaders;
|
||||||
|
|
||||||
|
import static ru.vtosters.lite.utils.Globals.getString;
|
||||||
|
|
||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
import android.app.DownloadManager;
|
import android.app.DownloadManager;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
@@ -48,7 +50,7 @@ public class VideoDownloader {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (list.isEmpty()) {
|
if (list.isEmpty()) {
|
||||||
ToastUtils.a("Данное видео невозможно скачать");
|
ToastUtils.a(getString("videodownloaderr"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package ru.vtosters.lite.encryption.base;
|
package ru.vtosters.lite.encryption.base;
|
||||||
|
|
||||||
import static ru.vtosters.lite.utils.Preferences.BooleanFalse;
|
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
|
||||||
import static ru.vtosters.lite.utils.Preferences.BooleanTrue;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
@@ -50,29 +49,29 @@ public abstract class IMProcessor {
|
|||||||
|
|
||||||
public boolean isUsed() {
|
public boolean isUsed() {
|
||||||
//Log.d("IMProcessor", "Checking if decoded with "+getUIName());
|
//Log.d("IMProcessor", "Checking if decoded with "+getUIName());
|
||||||
return BooleanTrue("VT_IMDecode_"+getPrefKey());
|
return getBoolValue("VT_IMDecode_"+getPrefKey(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isUsedToEncrypt(int id) {
|
public boolean isUsedToEncrypt(int id) {
|
||||||
//Log.d("IMProcessor", "Checking if "+id+" is ready to be encrypted with "+getUIName());
|
//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) {
|
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) {
|
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) {
|
public void setEncryptionKeyFor(int id, @Nullable String key) {
|
||||||
if (key == null || key.isEmpty()) key = "VTAesDefault";
|
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
|
@Nullable
|
||||||
public String getEncryptionKeyFor(int id) {
|
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
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
public String getEncryptionKeyFor(int id) {
|
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> {
|
public static class Triple<F, S, T> {
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package ru.vtosters.lite.f0x1d;
|
package ru.vtosters.lite.f0x1d;
|
||||||
|
|
||||||
import static ru.vtosters.lite.utils.About.*;
|
import static ru.vtosters.lite.utils.About.getBuildNumber;
|
||||||
import static ru.vtosters.lite.utils.Globals.*;
|
import static ru.vtosters.lite.utils.Globals.getContext;
|
||||||
import static ru.vtosters.lite.utils.Preferences.*;
|
import static ru.vtosters.lite.utils.Globals.getString;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.Notification;
|
import android.app.Notification;
|
||||||
@@ -20,7 +20,7 @@ import com.vtosters.lite.R;
|
|||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
import java.io.StringWriter;
|
import java.io.StringWriter;
|
||||||
|
|
||||||
import ru.vtosters.lite.badmanners.DeviceInfoCollector;
|
import ru.vtosters.lite.deviceinfo.DeviceInfoCollector;
|
||||||
|
|
||||||
public class Crashreporter {
|
public class Crashreporter {
|
||||||
protected static String logString;
|
protected static String logString;
|
||||||
@@ -37,7 +37,7 @@ public class Crashreporter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void start(Thread.UncaughtExceptionHandler uncaughtExceptionHandler, Thread thread, Throwable th, Activity activity) {
|
static void start(Thread.UncaughtExceptionHandler uncaughtExceptionHandler, Thread thread, Throwable th, Activity activity) {
|
||||||
logString = getStackTrace(th) + "\n\n" + new DeviceInfoCollector().collect(getContext()).toDeviceName() + "\n VTL Version: " + VERSIONNAME + ", build: " + getBuildNumber();
|
logString = getStackTrace(th) + "\n\n" + new DeviceInfoCollector().collect(getContext()).toDeviceName() + ", commit: " + getBuildNumber();
|
||||||
if (Build.VERSION.SDK_INT >= 26) {
|
if (Build.VERSION.SDK_INT >= 26) {
|
||||||
var notificationChannel = new NotificationChannel("crashes", "crash", NotificationManager.IMPORTANCE_DEFAULT);
|
var notificationChannel = new NotificationChannel("crashes", "crash", NotificationManager.IMPORTANCE_DEFAULT);
|
||||||
notificationChannel.enableVibration(true);
|
notificationChannel.enableVibration(true);
|
||||||
@@ -61,13 +61,13 @@ public class Crashreporter {
|
|||||||
|
|
||||||
var builder = new Notification.Builder(getContext());
|
var builder = new Notification.Builder(getContext());
|
||||||
builder.setSmallIcon(R.drawable.ic_bug_24);
|
builder.setSmallIcon(R.drawable.ic_bug_24);
|
||||||
builder.setContentTitle("VTL Крашнулся!");
|
builder.setContentTitle(getString("vtl_crashed"));
|
||||||
builder.setContentText(logString);
|
builder.setContentText(logString);
|
||||||
builder.setStyle(new Notification.BigTextStyle().bigText(logString));
|
builder.setStyle(new Notification.BigTextStyle().bigText(logString));
|
||||||
builder.setAutoCancel(true);
|
builder.setAutoCancel(true);
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) {
|
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, getString("vtl_crash_upload"), 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_save"), psaveLogIntent));
|
||||||
} else {
|
} else {
|
||||||
builder.setContentIntent(PendingIntent.getActivity(activity, 0, foxbinIntent, PendingIntent.FLAG_ONE_SHOT));
|
builder.setContentIntent(PendingIntent.getActivity(activity, 0, foxbinIntent, PendingIntent.FLAG_ONE_SHOT));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package ru.vtosters.lite.f0x1d;
|
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.Context;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
@@ -42,6 +42,7 @@ public class VTVerifications {
|
|||||||
|
|
||||||
public static void load(Context context) {
|
public static void load(Context context) {
|
||||||
mVerificationsCache = context.getSharedPreferences("vt_another_data", 0);
|
mVerificationsCache = context.getSharedPreferences("vt_another_data", 0);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
processArray(new JSONArray(getLoaded(VERIFICATIONS_KEY)), sVerificationsMap, null);
|
processArray(new JSONArray(getLoaded(VERIFICATIONS_KEY)), sVerificationsMap, null);
|
||||||
processArray(new JSONArray(getLoaded(PROMETHEUS_KEY)), sPrometheusMap, null);
|
processArray(new JSONArray(getLoaded(PROMETHEUS_KEY)), sPrometheusMap, null);
|
||||||
@@ -53,7 +54,7 @@ public class VTVerifications {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Request request = new Request.Builder()
|
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]}"))
|
.a(RequestBody.a(MediaType.b("application/json; charset=UTF-8"), "{\"types\":[0,228,404,1337]}"))
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
@@ -102,9 +103,7 @@ public class VTVerifications {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static boolean hasPrometheus(int i) {
|
public static boolean hasPrometheus(int i) {
|
||||||
|
|
||||||
return sPrometheusMap.get(i) != null ? sPrometheusMap.get(i) : false;
|
return sPrometheusMap.get(i) != null ? sPrometheusMap.get(i) : false;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isDeveloper(int i) {
|
public static boolean isDeveloper(int i) {
|
||||||
@@ -132,13 +131,20 @@ public class VTVerifications {
|
|||||||
return Base64.encodeToString(str.getBytes(), 1);
|
return Base64.encodeToString(str.getBytes(), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static boolean vtverif() {
|
||||||
|
return getBoolValue("VT_Verification", true);
|
||||||
|
}
|
||||||
|
|
||||||
public static boolean isVerified(JSONObject jSONObject) {
|
public static boolean isVerified(JSONObject jSONObject) {
|
||||||
if (jSONObject.optInt("verified", 0) == 1) {
|
if (jSONObject.optInt("verified", 0) == 1) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (!BooleanTrue("VT_Verification")) {
|
|
||||||
|
if (!getBoolValue("VT_Verification", true)) {
|
||||||
return false;
|
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));
|
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) {
|
if (jSONObject.optInt("trending", 0) == 1) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (!BooleanTrue("VT_Fire")) {
|
|
||||||
|
if (!getBoolValue("VT_Fire", true)) {
|
||||||
return false;
|
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));
|
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) {
|
public static boolean hasDeveloper(JSONObject jSONObject) {
|
||||||
if (!BooleanTrue("VT_Dev")) {
|
if (!getBoolValue("VT_Dev", true)) {
|
||||||
return false;
|
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));
|
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.LENGTH_SHORT;
|
||||||
import static android.widget.Toast.makeText;
|
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.Globals.getString;
|
||||||
import static ru.vtosters.lite.utils.Proxy.getApiCom;
|
import static ru.vtosters.lite.utils.Proxy.getApiCom;
|
||||||
import static ru.vtosters.lite.utils.Proxy.proxy;
|
import static ru.vtosters.lite.utils.Proxy.proxy;
|
||||||
@@ -25,9 +26,7 @@ import java.util.regex.Matcher;
|
|||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import okhttp3.OkHttpClient;
|
import okhttp3.OkHttpClient;
|
||||||
import okhttp3.Request;
|
import ru.vtosters.lite.net.Request;
|
||||||
import ru.f0x1d.net.F0x1dRequest;
|
|
||||||
import ru.vtosters.lite.utils.Preferences;
|
|
||||||
|
|
||||||
public class FoafBase {
|
public class FoafBase {
|
||||||
private static final Pattern FOAF_REGEX = Pattern.compile("<ya:created dc:date=\"(.+?)\"\\/>");
|
private static final Pattern FOAF_REGEX = Pattern.compile("<ya:created dc:date=\"(.+?)\"\\/>");
|
||||||
@@ -36,7 +35,7 @@ public class FoafBase {
|
|||||||
private static final OkHttpClient client = new OkHttpClient();
|
private static final OkHttpClient client = new OkHttpClient();
|
||||||
|
|
||||||
public static int GetLastSeenInt(int i) throws ParseException, IOException {
|
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()) {
|
if (!matcher.find()) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -64,12 +63,12 @@ public class FoafBase {
|
|||||||
|
|
||||||
public static void loadAndShow(Context context, int i) {
|
public static void loadAndShow(Context context, int i) {
|
||||||
ProgressDialog progressDialog = new ProgressDialog(context);
|
ProgressDialog progressDialog = new ProgressDialog(context);
|
||||||
progressDialog.setMessage("Загрузка...");
|
progressDialog.setMessage(getString("com_facebook_loading"));
|
||||||
progressDialog.setCancelable(false);
|
progressDialog.setCancelable(false);
|
||||||
progressDialog.show();
|
progressDialog.show();
|
||||||
|
|
||||||
F0x1dRequest.F0x1dRequestCallback callback = str -> FoafBase.lambdaLoadAndShow(progressDialog, context, i, str);
|
Request.RequestCallback callback =str -> FoafBase.lambdaLoadAndShow(progressDialog, context, i, str);
|
||||||
F0x1dRequest.makeRequest(getLink(i), callback);
|
Request.makeRequest(getLink(i), callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lambdaLoadAndShow(ProgressDialog progressDialog, Context context, int i, String str) {
|
static void lambdaLoadAndShow(ProgressDialog progressDialog, Context context, int i, String str) {
|
||||||
@@ -81,7 +80,7 @@ public class FoafBase {
|
|||||||
matcher2.find();
|
matcher2.find();
|
||||||
String normalHumanDate = getNormalHumanDate(matcher.group(1));
|
String normalHumanDate = getNormalHumanDate(matcher.group(1));
|
||||||
getNormalHumanDate(matcher2.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();
|
a2.b(getString("foafid") + " " + i + getString("foafregdate") + " " + normalHumanDate + getString("foafdate") + " " + daysPassedFromFoafDate(normalHumanDate)).b(17039370, null).b().show();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package ru.f0x1d.net;
|
package ru.vtosters.lite.net;
|
||||||
|
|
||||||
import android.util.Base64;
|
import android.util.Base64;
|
||||||
|
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package ru.f0x1d.net;
|
package ru.vtosters.lite.net;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package ru.f0x1d.net;
|
package ru.vtosters.lite.net;
|
||||||
|
|
||||||
import java.net.PasswordAuthentication;
|
import java.net.PasswordAuthentication;
|
||||||
import java.net.Proxy;
|
import java.net.Proxy;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package ru.f0x1d.net;
|
package ru.vtosters.lite.net;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package ru.f0x1d.net;
|
package ru.vtosters.lite.net;
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.InputStream;
|
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.edit;
|
||||||
import static ru.vtosters.lite.utils.Globals.getContext;
|
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.Activity;
|
||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
@@ -17,14 +18,14 @@ import ru.vtosters.lite.utils.OEMDetector;
|
|||||||
|
|
||||||
public class DisableBattery {
|
public class DisableBattery {
|
||||||
public static void alert(Activity activity) {
|
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();
|
final Context context = getContext();
|
||||||
if (!((PowerManager) context.getSystemService(Context.POWER_SERVICE)).isIgnoringBatteryOptimizations(context.getPackageName())) {
|
if (!((PowerManager) context.getSystemService(Context.POWER_SERVICE)).isIgnoringBatteryOptimizations(context.getPackageName())) {
|
||||||
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
|
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
|
||||||
builder.setTitle("Выключите оптимизацию батареи!");
|
builder.setTitle(getString("batteryissuetitle"));
|
||||||
builder.setMessage("Из-за того, что Вы используете оболочку из списка ниже - уведомления могут приходить с задержкой или не приходить вовсе. \n Для того, чтобы это исправить - нажмите на кнопку \"Отключить оптимизацию\". \n\nПрошивки на которых наблюдаются проблемы с пушами:\nFlyme, EMUI, MIUI, ColorOS, Samsung Experience или TouchWiz, Magic UI, ZenUI, Funtouch OS");
|
builder.setMessage(getString("batteryissuesumm"));
|
||||||
builder.setCancelable(false);
|
builder.setCancelable(false);
|
||||||
builder.setPositiveButton("Отключить оптимизацию", new DialogInterface.OnClickListener() {
|
builder.setPositiveButton(getString("batteryissuebtn1"), new DialogInterface.OnClickListener() {
|
||||||
@Override // android.content.DialogInterface.OnClickListener
|
@Override // android.content.DialogInterface.OnClickListener
|
||||||
public void onClick(DialogInterface dialogInterface, int i) {
|
public void onClick(DialogInterface dialogInterface, int i) {
|
||||||
Intent intent = new Intent("android.settings.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS");
|
Intent intent = new Intent("android.settings.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS");
|
||||||
@@ -35,7 +36,7 @@ public class DisableBattery {
|
|||||||
context.startActivity(intent);
|
context.startActivity(intent);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
builder.setNeutralButton("Игнорировать", new DialogInterface.OnClickListener() {
|
builder.setNeutralButton(getString("batteryissuebtn2"), new DialogInterface.OnClickListener() {
|
||||||
@Override // android.content.DialogInterface.OnClickListener
|
@Override // android.content.DialogInterface.OnClickListener
|
||||||
public void onClick(DialogInterface dialogInterface, int i) {
|
public void onClick(DialogInterface dialogInterface, int i) {
|
||||||
edit().putBoolean("showDoze", false).apply();
|
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.edit;
|
||||||
import static ru.vtosters.lite.utils.Globals.getContext;
|
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.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.Activity;
|
||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
@@ -19,17 +20,17 @@ public class InstallGMS {
|
|||||||
public static void alert(final Activity activity) {
|
public static void alert(final Activity activity) {
|
||||||
if (!isGmsInstalled()) {
|
if (!isGmsInstalled()) {
|
||||||
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
|
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
|
||||||
builder.setTitle("Внимание!");
|
builder.setTitle(getString("debug_warning"));
|
||||||
builder.setMessage(Text());
|
builder.setMessage(getString("gmsissuesumm"));
|
||||||
builder.setCancelable(false);
|
builder.setCancelable(false);
|
||||||
builder.setPositiveButton("Продолжить без GMS", new DialogInterface.OnClickListener() {
|
builder.setPositiveButton(getString("gmsissuebtn1"), new DialogInterface.OnClickListener() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(DialogInterface dialogInterface, int i) {
|
public void onClick(DialogInterface dialogInterface, int i) {
|
||||||
edit().putBoolean("showAlertGms", false).apply();
|
edit().putBoolean("showAlertGms", false).apply();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
builder.setNeutralButton("Установить GMS", new DialogInterface.OnClickListener() {
|
builder.setNeutralButton(getString("gmsissuebtn2"), new DialogInterface.OnClickListener() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(DialogInterface dialogInterface, int i) {
|
public void onClick(DialogInterface dialogInterface, int i) {
|
||||||
@@ -39,13 +40,9 @@ public class InstallGMS {
|
|||||||
context.startActivity(a2);
|
context.startActivity(a2);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
if (BooleanTrue("showAlertGms")) {
|
if (getBoolValue("showAlertGms", true)) {
|
||||||
builder.show();
|
builder.show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String Text() {
|
|
||||||
return "На вашем устройстве отсутствует компонент Google Play Services (GMS), который необходим для корректной работы VTosters Lite";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
package ru.vtosters.lite.ui.dialogs;
|
package ru.vtosters.lite.ui.dialogs;
|
||||||
|
|
||||||
import static ru.vtosters.lite.utils.Globals.edit;
|
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.Activity;
|
||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
@@ -18,17 +19,17 @@ public class Start {
|
|||||||
activity.requestPermissions(new String[]{"android.permission.WRITE_EXTERNAL_STORAGE"}, 228);
|
activity.requestPermissions(new String[]{"android.permission.WRITE_EXTERNAL_STORAGE"}, 228);
|
||||||
}
|
}
|
||||||
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
|
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
|
||||||
builder.setTitle("Внимание!");
|
builder.setTitle(getString("debug_warning"));
|
||||||
builder.setMessage(getWelcome());
|
builder.setMessage(getWelcome());
|
||||||
builder.setCancelable(false);
|
builder.setCancelable(false);
|
||||||
builder.setPositiveButton("Продолжить", new DialogInterface.OnClickListener() {
|
builder.setPositiveButton(getString("startbtn2"), new DialogInterface.OnClickListener() {
|
||||||
|
|
||||||
@Override // android.content.DialogInterface.OnClickListener
|
@Override // android.content.DialogInterface.OnClickListener
|
||||||
public void onClick(DialogInterface dialogInterface, int i) {
|
public void onClick(DialogInterface dialogInterface, int i) {
|
||||||
edit().putBoolean("showAlert", false).apply();
|
edit().putBoolean("showAlert", false).apply();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
builder.setNeutralButton("Новости", new DialogInterface.OnClickListener() {
|
builder.setNeutralButton(getString("startbtn1"), new DialogInterface.OnClickListener() {
|
||||||
|
|
||||||
@Override // android.content.DialogInterface.OnClickListener
|
@Override // android.content.DialogInterface.OnClickListener
|
||||||
public void onClick(DialogInterface dialogInterface, int i) {
|
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")));
|
activity.startActivity(new Intent("android.intent.action.VIEW").setData(Uri.parse("https://t.me/vtosters")));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
if (BooleanTrue("showAlert")) {
|
if (getBoolValue("showAlert", true)) {
|
||||||
builder.show();
|
builder.show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String getWelcome() {
|
private static String getWelcome() {
|
||||||
if (!OEMDetector.isOEM()) {
|
String Default = getString("startsumm1");
|
||||||
return "Модификация VTosters Lite не имеет никакого отношения к VK Group!\nРаспространяется полностью бесплатно!";
|
|
||||||
|
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;
|
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.R;
|
||||||
import com.vtosters.lite.fragments.MaterialPreferenceToolbarFragment;
|
import com.vtosters.lite.fragments.MaterialPreferenceToolbarFragment;
|
||||||
|
|
||||||
@@ -10,5 +17,23 @@ public class FeedFragment extends MaterialPreferenceToolbarFragment {
|
|||||||
public void b(Bundle bundle) {
|
public void b(Bundle bundle) {
|
||||||
super.b(bundle);
|
super.b(bundle);
|
||||||
a(R.xml.preferences_feed);
|
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;
|
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.Globals.getString;
|
||||||
import static ru.vtosters.lite.utils.IconHelper.switchToDefault;
|
|
||||||
import static ru.vtosters.lite.utils.IconHelper.switchToVK;
|
|
||||||
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.v7.preference.Preference;
|
import android.support.v7.preference.Preference;
|
||||||
@@ -22,10 +21,13 @@ public class ThemesFragment extends MaterialPreferenceToolbarFragment {
|
|||||||
|
|
||||||
public boolean apply(Preference preference, Object obj) {
|
public boolean apply(Preference preference, Object obj) {
|
||||||
if (((Boolean) obj).booleanValue()) {
|
if (((Boolean) obj).booleanValue()) {
|
||||||
switchToVK();
|
componentSwitcher("VTIconDefault", false);
|
||||||
|
componentSwitcher("VTIconVK", true);
|
||||||
} else {
|
} else {
|
||||||
switchToDefault();
|
componentSwitcher("VTIconDefault", true);
|
||||||
|
componentSwitcher("VTIconVK", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
ToastUtils.a(getString("iconapplying"));
|
ToastUtils.a(getString("iconapplying"));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package ru.vtosters.lite.ui.fragments.dockbar;
|
package ru.vtosters.lite.ui.fragments.dockbar;
|
||||||
|
|
||||||
import static ru.vtosters.lite.utils.Globals.convertDpToPixel;
|
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 static ru.vtosters.lite.utils.Globals.restartApplication;
|
||||||
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
@@ -40,7 +41,7 @@ public class DockBarFragment extends ToolbarFragment {
|
|||||||
container.addView(buttonsContainer, new LinearLayout.LayoutParams(-1, -2));
|
container.addView(buttonsContainer, new LinearLayout.LayoutParams(-1, -2));
|
||||||
|
|
||||||
Button save = new Button(n());
|
Button save = new Button(n());
|
||||||
save.setText("Сохранить");
|
save.setText(getString("dockbar_save"));
|
||||||
save.setOnClickListener(v -> {
|
save.setOnClickListener(v -> {
|
||||||
DockBarManager.getInstance().save();
|
DockBarManager.getInstance().save();
|
||||||
restartApplication();
|
restartApplication();
|
||||||
@@ -54,7 +55,7 @@ public class DockBarFragment extends ToolbarFragment {
|
|||||||
buttonsContainer.addView(divider, new LinearLayout.LayoutParams(convertDpToPixel(10), 0));
|
buttonsContainer.addView(divider, new LinearLayout.LayoutParams(convertDpToPixel(10), 0));
|
||||||
|
|
||||||
Button reset = new Button(n());
|
Button reset = new Button(n());
|
||||||
reset.setText("Сбросить");
|
reset.setText(getString("dockbar_reset"));
|
||||||
reset.setOnClickListener(v -> {
|
reset.setOnClickListener(v -> {
|
||||||
DockBarManager.getInstance().delete();
|
DockBarManager.getInstance().delete();
|
||||||
restartApplication();
|
restartApplication();
|
||||||
@@ -83,6 +84,6 @@ public class DockBarFragment extends ToolbarFragment {
|
|||||||
|
|
||||||
super.a(arg0, arg1);
|
super.a(arg0, arg1);
|
||||||
|
|
||||||
a("Редактор докбара");
|
a(getString("dockbar_editor"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
package ru.vtosters.lite.ui.fragments.dockbar;
|
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;
|
import android.content.res.ColorStateList;
|
||||||
|
import android.graphics.Color;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
@@ -61,12 +63,18 @@ public class DockBarInjector {
|
|||||||
|
|
||||||
for (DockBarTab tab : sManager.getSelectedTabs()) {
|
for (DockBarTab tab : sManager.getSelectedTabs()) {
|
||||||
MenuItem add = menu.add(0, tab.id, 0, tab.titleID);
|
MenuItem add = menu.add(0, tab.id, 0, tab.titleID);
|
||||||
Drawable drawable = getContext().getResources().getDrawable(tab.iconID);
|
Drawable drawable = getResources().getDrawable(tab.iconID);
|
||||||
ColorStateList colorStateList = getContext().getResources().getColorStateList(com.vtosters.lite.R.color.bottom_navigation_item);
|
ColorStateList dockcolors = new ColorStateList(
|
||||||
// if (isAndroidMonet()) {
|
new int[][]{
|
||||||
// colorStateList = ColorStateList.valueOf(Themes.getAccentColor());
|
new int[]{android.R.attr.state_checked},
|
||||||
// }
|
new int[]{-android.R.attr.state_checked}
|
||||||
add.setIcon(new RecoloredDrawable(drawable, colorStateList));
|
},
|
||||||
|
new int[] {
|
||||||
|
getAccentColor(),
|
||||||
|
Color.parseColor("#ffaaaeb3")
|
||||||
|
}
|
||||||
|
);
|
||||||
|
add.setIcon(new RecoloredDrawable(drawable, dockcolors));
|
||||||
add.setShowAsAction(1);
|
add.setShowAsAction(1);
|
||||||
add.setCheckable(true);
|
add.setCheckable(true);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
package ru.vtosters.lite.ui.fragments.dockbar;
|
package ru.vtosters.lite.ui.fragments.dockbar;
|
||||||
|
|
||||||
import static ru.vtosters.lite.utils.Globals.getContext;
|
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.newfeed;
|
||||||
import static ru.vtosters.lite.utils.Preferences.olddock;
|
import static ru.vtosters.lite.utils.Preferences.olddock;
|
||||||
|
|
||||||
import com.vk.apps.AppsFragment;
|
import com.vk.apps.AppsFragment;
|
||||||
import com.vk.discover.DiscoverFragment;
|
import com.vk.discover.DiscoverFragment;
|
||||||
import com.vk.discover.GatewaysFragment;
|
|
||||||
import com.vk.fave.fragments.FaveTabFragment;
|
import com.vk.fave.fragments.FaveTabFragment;
|
||||||
import com.vk.feedlikes.fragments.FeedLikesFragment;
|
import com.vk.feedlikes.fragments.FeedLikesFragment;
|
||||||
import com.vk.menu.MenuFragment;
|
import com.vk.menu.MenuFragment;
|
||||||
@@ -52,8 +52,8 @@ public class DockBarManager {
|
|||||||
private final List<DockBarTab> mSelectedTabs = new ArrayList<>();
|
private final List<DockBarTab> mSelectedTabs = new ArrayList<>();
|
||||||
private final List<DockBarTab> mDisabledTabs = new ArrayList<>();
|
private final List<DockBarTab> mDisabledTabs = new ArrayList<>();
|
||||||
private final List<String> mGroups = Arrays.asList(
|
private final List<String> mGroups = Arrays.asList(
|
||||||
"Выбранные элементы докбара",
|
getString("dockbar_selected_items"),
|
||||||
"Невыбранные элементы"
|
getString("dockbar_unselected_items")
|
||||||
);
|
);
|
||||||
public DockBarManager() {
|
public DockBarManager() {
|
||||||
load();
|
load();
|
||||||
@@ -80,7 +80,7 @@ public class DockBarManager {
|
|||||||
|
|
||||||
if (!dockbar.exists()) {
|
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_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_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_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));
|
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 {
|
} else {
|
||||||
if (tab.fragmentClass == HomeFragment.class) {
|
if (tab.fragmentClass == HomeFragment.class) {
|
||||||
tab.fragmentClass = NewsfeedFragment.class;
|
tab.fragmentClass = NewsfeedFragment.class;
|
||||||
} else if (tab.fragmentClass == GatewaysFragment.class) {
|
} else if (tab.fragmentClass == DiscoverFragment.class) {
|
||||||
tab.fragmentClass = GatewaysFragment.class;
|
tab.fragmentClass = DiscoverFragment.class;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mSelectedTabs.add(tab);
|
mSelectedTabs.add(tab);
|
||||||
@@ -145,12 +145,12 @@ public class DockBarManager {
|
|||||||
if (tab.fragmentClass == NewsfeedFragment.class) {
|
if (tab.fragmentClass == NewsfeedFragment.class) {
|
||||||
tab.fragmentClass = HomeFragment.class;
|
tab.fragmentClass = HomeFragment.class;
|
||||||
} else if (tab.fragmentClass == DiscoverFragment.class) {
|
} else if (tab.fragmentClass == DiscoverFragment.class) {
|
||||||
tab.fragmentClass = GatewaysFragment.class;
|
tab.fragmentClass = DiscoverFragment.class;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (tab.fragmentClass == HomeFragment.class) {
|
if (tab.fragmentClass == HomeFragment.class) {
|
||||||
tab.fragmentClass = NewsfeedFragment.class;
|
tab.fragmentClass = NewsfeedFragment.class;
|
||||||
} else if (tab.fragmentClass == GatewaysFragment.class) {
|
} else if (tab.fragmentClass == DiscoverFragment.class) {
|
||||||
tab.fragmentClass = DiscoverFragment.class;
|
tab.fragmentClass = DiscoverFragment.class;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -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.convertDpToPixel;
|
||||||
import static ru.vtosters.lite.utils.Globals.getContext;
|
import static ru.vtosters.lite.utils.Globals.getContext;
|
||||||
import static ru.vtosters.lite.utils.Globals.getResources;
|
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.isNetworkConnected;
|
||||||
import static ru.vtosters.lite.utils.Globals.restartApplication;
|
import static ru.vtosters.lite.utils.Globals.restartApplication;
|
||||||
import static ru.vtosters.lite.utils.Themes.getTextAttr;
|
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) {
|
public void bind(MultiAccountItem item, int pos) {
|
||||||
if (pos == 0) {
|
if (pos == 0) {
|
||||||
mNickname.setText("Добавить новый аккаунт");
|
mNickname.setText(getString("add_another_account"));
|
||||||
mContainer.setOnClickListener(v -> {
|
mContainer.setOnClickListener(v -> {
|
||||||
MultiAccountManager.addAccount();
|
MultiAccountManager.addAccount();
|
||||||
|
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ import static ru.vtosters.lite.utils.Globals.getIdentifier;
|
|||||||
import static ru.vtosters.lite.utils.Globals.getResources;
|
import static ru.vtosters.lite.utils.Globals.getResources;
|
||||||
import static ru.vtosters.lite.utils.Globals.getString;
|
import static ru.vtosters.lite.utils.Globals.getString;
|
||||||
import static ru.vtosters.lite.utils.Themes.getAccentColor;
|
import static ru.vtosters.lite.utils.Themes.getAccentColor;
|
||||||
import static ru.vtosters.lite.utils.Themes.getNavbarColor;
|
|
||||||
import static ru.vtosters.lite.utils.Themes.getSTextAttr;
|
import static ru.vtosters.lite.utils.Themes.getSTextAttr;
|
||||||
|
import static ru.vtosters.lite.utils.Themes.getTabbarBackground;
|
||||||
import static ru.vtosters.lite.utils.Themes.getTextAttr;
|
import static ru.vtosters.lite.utils.Themes.getTextAttr;
|
||||||
import static ru.vtosters.lite.utils.Themes.recolorDrawable;
|
import static ru.vtosters.lite.utils.Themes.recolorDrawable;
|
||||||
|
|
||||||
@@ -60,7 +60,7 @@ public class StickersFragment extends ToolbarFragment {
|
|||||||
|
|
||||||
public final static String ACTION_RELOAD = "com.vtosters.lite.action.RELOAD_TGS_LIST";
|
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";
|
private static final String TAG = "StickersFragment";
|
||||||
public int from;
|
public int from;
|
||||||
public int to;
|
public int to;
|
||||||
@@ -97,7 +97,6 @@ public class StickersFragment extends ToolbarFragment {
|
|||||||
private void initGrabber() {
|
private void initGrabber() {
|
||||||
int method = TGPref.getTGConnectMethod();
|
int method = TGPref.getTGConnectMethod();
|
||||||
switch (method) {
|
switch (method) {
|
||||||
case TYPE_TOASTER_SERVER:
|
|
||||||
case TYPE_DIRECT:
|
case TYPE_DIRECT:
|
||||||
TelegramStickersGrabber.USE_PROXY = false;
|
TelegramStickersGrabber.USE_PROXY = false;
|
||||||
grabber.resetProxy();
|
grabber.resetProxy();
|
||||||
@@ -251,7 +250,6 @@ public class StickersFragment extends ToolbarFragment {
|
|||||||
openMenu(getString("stickersproxy1"));
|
openMenu(getString("stickersproxy1"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
case TYPE_TOASTER_SERVER:
|
|
||||||
case TYPE_DIRECT:
|
case TYPE_DIRECT:
|
||||||
final Runnable work = () -> {
|
final Runnable work = () -> {
|
||||||
LinearLayout linearLayout = new LinearLayout(super.n());
|
LinearLayout linearLayout = new LinearLayout(super.n());
|
||||||
@@ -372,7 +370,7 @@ public class StickersFragment extends ToolbarFragment {
|
|||||||
holder.switchCompat.setOnCheckedChangeListener((buttonView, isChecked) -> stickersService.setPackEnabled(pack, isChecked, false));
|
holder.switchCompat.setOnCheckedChangeListener((buttonView, isChecked) -> stickersService.setPackEnabled(pack, isChecked, false));
|
||||||
holder.count.setText(pack.stickersCount + " " + getString("stickerscount"));
|
holder.count.setText(pack.stickersCount + " " + getString("stickerscount"));
|
||||||
|
|
||||||
holder.layout.setBackgroundColor(getNavbarColor());
|
holder.layout.setBackgroundColor(getTabbarBackground());
|
||||||
|
|
||||||
// Color костыль
|
// Color костыль
|
||||||
int color = getTextAttr();
|
int color = getTextAttr();
|
||||||
|
|||||||
+3
-3
@@ -1,6 +1,6 @@
|
|||||||
package ru.vtosters.lite.ui.fragments.tgstickers;
|
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 static ru.vtosters.lite.utils.Globals.getString;
|
||||||
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
@@ -19,7 +19,7 @@ public class StickersPreferencesFragment extends MaterialPreferenceToolbarFragme
|
|||||||
public void b(Bundle bundle) {
|
public void b(Bundle bundle) {
|
||||||
super.b(bundle);
|
super.b(bundle);
|
||||||
|
|
||||||
int vtosterXml = getContext().getResources().getIdentifier("empty", "xml", getContext().getPackageName());
|
int vtosterXml = getIdentifier("empty", "xml");
|
||||||
this.a(vtosterXml);
|
this.a(vtosterXml);
|
||||||
|
|
||||||
PreferencesUtil.addPreferenceCategory(this, getString("sprefsstickers"));
|
PreferencesUtil.addPreferenceCategory(this, getString("sprefsstickers"));
|
||||||
@@ -85,7 +85,7 @@ public class StickersPreferencesFragment extends MaterialPreferenceToolbarFragme
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int aq() {
|
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.getApplicationName;
|
||||||
import static ru.vtosters.lite.utils.Globals.getContext;
|
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.VERSIONNAME;
|
||||||
import static ru.vtosters.lite.utils.Preferences.oldabout;
|
import static ru.vtosters.lite.utils.Preferences.oldabout;
|
||||||
|
|
||||||
@@ -19,32 +20,34 @@ public class About {
|
|||||||
public static void injectAbout(List<Items2> list) {
|
public static void injectAbout(List<Items2> list) {
|
||||||
list.clear();
|
list.clear();
|
||||||
list.add(new Items1());
|
list.add(new Items1());
|
||||||
|
|
||||||
if (!oldabout()) {
|
if (!oldabout()) {
|
||||||
list.add(new Items(21, com.vtosters.lite.R.string.opencommit));
|
list.add(new Items(21, getIdentifier("opencommit", "string")));
|
||||||
list.add(new Items(8, com.vtosters.lite.R.string.tgchannel));
|
list.add(new Items(8, getIdentifier("tgchannel", "string")));
|
||||||
list.add(new Items(9, com.vtosters.lite.R.string.tgchat));
|
list.add(new Items(9, getIdentifier("tgchat", "string")));
|
||||||
list.add(new Items(16, com.vtosters.lite.R.string.vtfaq));
|
list.add(new Items(16, getIdentifier("vtfaq", "string")));
|
||||||
list.add(new Items(19, com.vtosters.lite.R.string.vtsite));
|
list.add(new Items(19, getIdentifier("vtsite", "string")));
|
||||||
list.add(new Items(20, com.vtosters.lite.R.string.donate));
|
list.add(new Items(20, getIdentifier("donate", "string")));
|
||||||
list.add(new Items(17, com.vtosters.lite.R.string.vkgroup));
|
list.add(new Items(17, getIdentifier("vkgroup", "string")));
|
||||||
list.add(new Items(18, com.vtosters.lite.R.string.sett_debug));
|
list.add(new Items(18, getIdentifier("sett_debug", "string")));
|
||||||
return;
|
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(0, getIdentifier("about_app_feedback", "string")));
|
||||||
list.add(new Items(2, com.vtosters.lite.R.string.about_app_privacy));
|
list.add(new Items(1, getIdentifier("about_app_estimate", "string")));
|
||||||
list.add(new Items(5, com.vtosters.lite.R.string.about_app_cookie));
|
list.add(new Items(2, getIdentifier("about_app_privacy", "string")));
|
||||||
list.add(new Items(3, com.vtosters.lite.R.string.about_app_terms_to_use));
|
list.add(new Items(5, getIdentifier("about_app_cookie", "string")));
|
||||||
list.add(new Items(4, com.vtosters.lite.R.string.about_app_license));
|
list.add(new Items(3, getIdentifier("about_app_terms_to_use", "string")));
|
||||||
list.add(new Items(6, com.vtosters.lite.R.string.about_app_data_protect));
|
list.add(new Items(4, getIdentifier("about_app_license", "string")));
|
||||||
list.add(new Items(8, com.vtosters.lite.R.string.sett_debug));
|
list.add(new Items(6, getIdentifier("about_app_data_protect", "string")));
|
||||||
|
list.add(new Items(8, getIdentifier("sett_debug", "string")));
|
||||||
}
|
}
|
||||||
public static String getBuildNumber() {
|
public static String getBuildNumber() {
|
||||||
return getBuild(getContext(), "version.properties");
|
return getBuild(getContext(), "version.properties");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getCommitLink() {
|
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) {
|
public static String getBuild(Context context, String name) {
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package ru.vtosters.lite.utils;
|
package ru.vtosters.lite.utils;
|
||||||
|
|
||||||
import static ru.vtosters.lite.utils.Globals.getContext;
|
import static ru.vtosters.lite.utils.Globals.getContext;
|
||||||
import static ru.vtosters.lite.utils.Globals.getPreferences;
|
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.content.ContentValues;
|
||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
@@ -25,7 +25,6 @@ import java.util.List;
|
|||||||
import ru.vtosters.lite.encryption.EncryptProvider;
|
import ru.vtosters.lite.encryption.EncryptProvider;
|
||||||
|
|
||||||
public class DeletedMessagesHandler {
|
public class DeletedMessagesHandler {
|
||||||
|
|
||||||
private static List<Integer> sDeletedMessagesList = new ArrayList<>();
|
private static List<Integer> sDeletedMessagesList = new ArrayList<>();
|
||||||
|
|
||||||
private static SQLiteDatabase sVKSQLiteDatabase;
|
private static SQLiteDatabase sVKSQLiteDatabase;
|
||||||
@@ -44,7 +43,7 @@ public class DeletedMessagesHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static boolean hook() {
|
public static boolean hook() {
|
||||||
return BooleanFalse("undeletemsg");
|
return getBoolValue("undeletemsg", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void setBodyDBParser(Msg msg) {
|
public static void setBodyDBParser(Msg msg) {
|
||||||
@@ -76,17 +75,7 @@ public class DeletedMessagesHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static String getPreifxUndelete() {
|
private static String getPreifxUndelete() {
|
||||||
String string = getPreferences().getString("undeletemsg_prefix", "");
|
return getPrefsValue("undeletemsg_prefix_value") + " ";
|
||||||
if (string.isEmpty()) {
|
|
||||||
return "[Удалено] ";
|
|
||||||
}
|
|
||||||
if (string.equals("icon")) {
|
|
||||||
return "\uD83D\uDDD1 ";
|
|
||||||
}
|
|
||||||
if (string.equals("icon2")) {
|
|
||||||
return "❌ ";
|
|
||||||
}
|
|
||||||
return "[Удалено] ";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void updateDialog(MsgDeleteLpTask msgDeleteLpTask) {
|
public static void updateDialog(MsgDeleteLpTask msgDeleteLpTask) {
|
||||||
@@ -128,7 +117,6 @@ public class DeletedMessagesHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static class DeletedMessagesDBHelper extends SQLiteOpenHelper {
|
public static class DeletedMessagesDBHelper extends SQLiteOpenHelper {
|
||||||
|
|
||||||
public DeletedMessagesDBHelper() {
|
public DeletedMessagesDBHelper() {
|
||||||
super(getContext(), "deleted_msgs", null, 1);
|
super(getContext(), "deleted_msgs", null, 1);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
package ru.vtosters.lite.utils;
|
package ru.vtosters.lite.utils;
|
||||||
|
|
||||||
import static ru.vtosters.lite.utils.Preferences.getLocale;
|
import static ru.vtosters.lite.utils.Preferences.getLocale;
|
||||||
|
import static ru.vtosters.lite.utils.Preferences.preferences;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.Application;
|
import android.app.Application;
|
||||||
import android.app.NotificationChannel;
|
import android.app.NotificationChannel;
|
||||||
import android.app.NotificationManager;
|
import android.app.NotificationManager;
|
||||||
|
import android.content.ComponentName;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
@@ -16,10 +18,12 @@ import android.net.NetworkInfo;
|
|||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.preference.PreferenceManager;
|
import android.preference.PreferenceManager;
|
||||||
|
import android.util.Log;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.StringRes;
|
||||||
|
|
||||||
import com.vk.core.util.ToastUtils;
|
|
||||||
import com.vtosters.lite.UserProfile;
|
import com.vtosters.lite.UserProfile;
|
||||||
import com.vtosters.lite.VKActivity;
|
import com.vtosters.lite.VKActivity;
|
||||||
import com.vtosters.lite.api.ExtendedUserProfile;
|
import com.vtosters.lite.api.ExtendedUserProfile;
|
||||||
@@ -34,17 +38,23 @@ import java.util.Locale;
|
|||||||
public class Globals {
|
public class Globals {
|
||||||
private static final List<Activity> activities = new ArrayList<>();
|
private static final List<Activity> activities = new ArrayList<>();
|
||||||
|
|
||||||
static SharedPreferences prefs = getContext().getSharedPreferences("com.vtosters.lite_preferences", Context.MODE_PRIVATE);
|
public static SharedPreferences getDefprefs() {
|
||||||
|
if (preferences == null) preferences = PreferenceManager.getDefaultSharedPreferences(getContext());
|
||||||
public static SharedPreferences getPrefs() {
|
return preferences;
|
||||||
if (prefs == null) prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
|
|
||||||
return prefs;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Current UserId
|
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
|
||||||
|
|
||||||
public static int getUserId() {
|
public static int getUserId() {
|
||||||
return VKAccountManager.b().a();
|
return VKAccountManager.b().a();
|
||||||
}
|
} // Current UserId
|
||||||
|
|
||||||
public static String getUserSecret() {
|
public static String getUserSecret() {
|
||||||
return VKAccountManager.b().c();
|
return VKAccountManager.b().c();
|
||||||
@@ -56,17 +66,15 @@ public class Globals {
|
|||||||
|
|
||||||
public static SharedPreferences.Editor edit() {
|
public static SharedPreferences.Editor edit() {
|
||||||
return PreferenceManager.getDefaultSharedPreferences(getContext()).edit();
|
return PreferenceManager.getDefaultSharedPreferences(getContext()).edit();
|
||||||
}
|
} // Edit SharedPreferences
|
||||||
|
|
||||||
// Delete and reload msg cache
|
|
||||||
public static void reloadMSG() {
|
public static void reloadMSG() {
|
||||||
ImEngineProvider.a().h();
|
ImEngineProvider.a().h();
|
||||||
}
|
} // Delete and reload msg cache
|
||||||
|
|
||||||
// UserId Profile via userProfile
|
|
||||||
public static int getUserID(UserProfile userProfile) {
|
public static int getUserID(UserProfile userProfile) {
|
||||||
return userProfile.n;
|
return userProfile.n;
|
||||||
}
|
} // UserId Profile via userProfile
|
||||||
|
|
||||||
public static String getUserFirstName(UserProfile userProfile) {
|
public static String getUserFirstName(UserProfile userProfile) {
|
||||||
return userProfile.p;
|
return userProfile.p;
|
||||||
@@ -76,26 +84,25 @@ public class Globals {
|
|||||||
return userProfile.o;
|
return userProfile.o;
|
||||||
}
|
}
|
||||||
|
|
||||||
// UserId Profile via extendedUserProfile
|
|
||||||
public static int getUserID(ExtendedUserProfile extendedUserProfile) {
|
public static int getUserID(ExtendedUserProfile extendedUserProfile) {
|
||||||
return getUserID(fromEup(extendedUserProfile));
|
return getUserID(fromEup(extendedUserProfile));
|
||||||
}
|
} // UserId Profile via extendedUserProfile
|
||||||
|
|
||||||
public static UserProfile fromEup(ExtendedUserProfile extendedUserProfile) {
|
public static UserProfile fromEup(ExtendedUserProfile extendedUserProfile) {
|
||||||
return extendedUserProfile.a;
|
return extendedUserProfile.a;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Application restart (works on sdk 29+ too)
|
|
||||||
public static void restartApplication() {
|
public static void restartApplication() {
|
||||||
Context ctx = getContext();
|
Context ctx = getContext();
|
||||||
PackageManager pm = ctx.getPackageManager();
|
PackageManager pm = ctx.getPackageManager();
|
||||||
|
|
||||||
Intent intent = pm.getLaunchIntentForPackage(ctx.getPackageName());
|
Intent intent = pm.getLaunchIntentForPackage(ctx.getPackageName());
|
||||||
Intent mainIntent = Intent.makeRestartActivityTask(intent.getComponent());
|
Intent mainIntent = Intent.makeRestartActivityTask(intent.getComponent());
|
||||||
ctx.startActivity(mainIntent);
|
ctx.startActivity(mainIntent);
|
||||||
Runtime.getRuntime().exit(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Global Context
|
Runtime.getRuntime().exit(0);
|
||||||
|
} // Application restart (works on sdk 29+ too)
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
public static Context getContext() {
|
public static Context getContext() {
|
||||||
try {
|
try {
|
||||||
@@ -107,9 +114,9 @@ public class Globals {
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
} // Getting the global context through reflection to use context on application initialization
|
||||||
|
|
||||||
|
|
||||||
// Google Market Services check
|
|
||||||
public static boolean isGmsInstalled() {
|
public static boolean isGmsInstalled() {
|
||||||
try {
|
try {
|
||||||
getContext().getPackageManager().getPackageInfo("com.google.android.gms", 0);
|
getContext().getPackageManager().getPackageInfo("com.google.android.gms", 0);
|
||||||
@@ -117,18 +124,28 @@ public class Globals {
|
|||||||
} catch (Exception unused) {
|
} catch (Exception unused) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
} // Google Market Services check
|
||||||
|
|
||||||
public static Resources getResources() {
|
public static Resources getResources() {
|
||||||
return getContext().getResources();
|
return getContext().getResources();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int getIdentifier(String str, String str2) {
|
public static int getIdentifier(String name, String type) {
|
||||||
return getResources().getIdentifier(str, str2, getContext().getPackageName());
|
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) {
|
public static String getString(String resourcename) {
|
||||||
return getContext().getString(Integer.parseInt(String.valueOf(getContext().getResources().getIdentifier(str, "string", getContext().getPackageName()))));
|
return getContext().getString(getIdentifier(resourcename, "string"));
|
||||||
|
} // Get string via getIdentifier
|
||||||
|
|
||||||
|
public static String getStringDate(@StringRes int i, Object... objArr) {
|
||||||
|
return getContext().getString(i, objArr);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getPackageName() {
|
public static String getPackageName() {
|
||||||
@@ -136,7 +153,7 @@ public class Globals {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static int convertDpToPixel(float f) {
|
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() {
|
public static SharedPreferences getPreferences() {
|
||||||
@@ -144,7 +161,7 @@ public class Globals {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void sendToast(String text) {
|
public static void sendToast(String text) {
|
||||||
ToastUtils.a(text);
|
Toast.makeText(getContext(), text, Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isEmpty(String str) {
|
public static boolean isEmpty(String str) {
|
||||||
@@ -155,28 +172,25 @@ public class Globals {
|
|||||||
ConnectivityManager cm = (ConnectivityManager) getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
|
ConnectivityManager cm = (ConnectivityManager) getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
|
||||||
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
|
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
|
||||||
return activeNetwork != null && activeNetwork.isConnectedOrConnecting();
|
return activeNetwork != null && activeNetwork.isConnectedOrConnecting();
|
||||||
}
|
} // Network check
|
||||||
|
|
||||||
// Music channels fix
|
|
||||||
public static void fixGapps() {
|
public static void fixGapps() {
|
||||||
try {
|
try {
|
||||||
if (Build.VERSION.SDK_INT >= 26) {
|
if (Build.VERSION.SDK_INT >= 26) {
|
||||||
NotificationManager notificationManager = (NotificationManager) getContext().getSystemService(Context.NOTIFICATION_SERVICE);
|
NotificationManager notificationManager = (NotificationManager) getContext().getSystemService(Context.NOTIFICATION_SERVICE);
|
||||||
boolean z = false;
|
boolean hasMusicChannel = false;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (notificationManager.getNotificationChannel("audio_playback_channel") != null) {
|
if (notificationManager.getNotificationChannel("audio_playback_channel") != null) {
|
||||||
z = true;
|
hasMusicChannel = true;
|
||||||
}
|
}
|
||||||
} catch (Exception ignored) {
|
} catch (Exception ignored) {}
|
||||||
}
|
if (!hasMusicChannel) {
|
||||||
if (!z) {
|
notificationManager.createNotificationChannel(new NotificationChannel("audio_playback_channel", getResources().getString(getIdentifier("audio_message_play_error", "string")), NotificationManager.IMPORTANCE_LOW));
|
||||||
notificationManager.createNotificationChannel(new NotificationChannel("audio_playback_channel", getResources().getString(com.vtosters.lite.R.string.audio_message_play_error), NotificationManager.IMPORTANCE_LOW));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (Exception ignored) {
|
} catch (Exception ignored) {}
|
||||||
}
|
} // Music channels fix
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public static void registerActivities(Application application) {
|
public static void registerActivities(Application application) {
|
||||||
application.registerActivityLifecycleCallbacks(new Application.ActivityLifecycleCallbacks() {
|
application.registerActivityLifecycleCallbacks(new Application.ActivityLifecycleCallbacks() {
|
||||||
@@ -223,20 +237,32 @@ public class Globals {
|
|||||||
return getContext().getApplicationInfo().loadLabel(getContext().getPackageManager()).toString();
|
return getContext().getApplicationInfo().loadLabel(getContext().getPackageManager()).toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Language changer and BaseContext inject
|
|
||||||
public static Context BaseContextLocale(Context context) {
|
public static Context BaseContextLocale(Context context) {
|
||||||
Locale locale = new Locale(getLocale());
|
Locale locale = new Locale(getLocale());
|
||||||
Locale.setDefault(locale);
|
Locale.setDefault(locale);
|
||||||
|
|
||||||
var resources = context.getResources();
|
var resources = context.getResources();
|
||||||
var configuration = resources.getConfiguration();
|
var configuration = resources.getConfiguration();
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT >= 24) {
|
if (Build.VERSION.SDK_INT >= 24) {
|
||||||
configuration.setLocale(locale);
|
configuration.setLocale(locale);
|
||||||
configuration.setLayoutDirection(locale);
|
configuration.setLayoutDirection(locale);
|
||||||
return context.createConfigurationContext(configuration);
|
return context.createConfigurationContext(configuration);
|
||||||
}
|
}
|
||||||
|
|
||||||
configuration.locale = locale;
|
configuration.locale = locale;
|
||||||
configuration.setLayoutDirection(locale);
|
configuration.setLayoutDirection(locale);
|
||||||
resources.updateConfiguration(configuration, resources.getDisplayMetrics());
|
resources.updateConfiguration(configuration, resources.getDisplayMetrics());
|
||||||
|
|
||||||
return context;
|
return context;
|
||||||
|
} // Language changer and BaseContext injector
|
||||||
|
|
||||||
|
public static float[] getCenterScreenCoords() {
|
||||||
|
int width = getResources().getDisplayMetrics().widthPixels;
|
||||||
|
int height = getResources().getDisplayMetrics().heightPixels;
|
||||||
|
|
||||||
|
int centerWidth = width/2;
|
||||||
|
int centerHeight = height/2;
|
||||||
|
return new float[] {centerWidth, centerHeight};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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(8);
|
||||||
|
|
||||||
|
return hasVerification() || donaterecomm() || randomshower != 1 ? "null" : "info";
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String haveDonateButton() {
|
||||||
|
Random random = new Random();
|
||||||
|
int randomshower = random.nextInt(10);
|
||||||
|
|
||||||
|
return hasVerification() || donaterecomm() || randomshower != 1 ? "null" : "buttons";
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,20 +3,20 @@ package ru.vtosters.lite.utils;
|
|||||||
import static java.lang.Long.MAX_VALUE;
|
import static java.lang.Long.MAX_VALUE;
|
||||||
import static ru.vtosters.lite.ui.fragments.dockbar.DockBarManager.getInstance;
|
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.getContext;
|
||||||
import static ru.vtosters.lite.utils.Globals.getPreferences;
|
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.adsgroup;
|
||||||
import static ru.vtosters.lite.utils.Preferences.adsstories;
|
import static ru.vtosters.lite.utils.Preferences.adsstories;
|
||||||
import static ru.vtosters.lite.utils.Preferences.authorsrecomm;
|
import static ru.vtosters.lite.utils.Preferences.authorsrecomm;
|
||||||
import static ru.vtosters.lite.utils.Preferences.copyright_post;
|
import static ru.vtosters.lite.utils.Preferences.copyright_post;
|
||||||
import static ru.vtosters.lite.utils.Preferences.friendsrecomm;
|
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.newfeed;
|
||||||
import static ru.vtosters.lite.utils.Preferences.postsrecomm;
|
import static ru.vtosters.lite.utils.Preferences.postsrecomm;
|
||||||
|
|
||||||
import com.vk.apps.AppsFragment;
|
import com.vk.apps.AppsFragment;
|
||||||
import com.vk.core.preference.Preference;
|
import com.vk.core.preference.Preference;
|
||||||
import com.vk.discover.DiscoverFragment;
|
import com.vk.discover.DiscoverFragment;
|
||||||
import com.vk.discover.GatewaysFragment;
|
|
||||||
import com.vk.fave.fragments.FaveTabFragment;
|
import com.vk.fave.fragments.FaveTabFragment;
|
||||||
import com.vk.menu.MenuFragment;
|
import com.vk.menu.MenuFragment;
|
||||||
import com.vk.music.fragment.MusicFragment;
|
import com.vk.music.fragment.MusicFragment;
|
||||||
@@ -52,9 +52,7 @@ public class Newsfeed {
|
|||||||
|
|
||||||
public static boolean isBlockedByFilter(String str) {
|
public static boolean isBlockedByFilter(String str) {
|
||||||
for (String str2 : mFilters) {
|
for (String str2 : mFilters) {
|
||||||
if (str.toLowerCase().contains(str2.toLowerCase())) {
|
if (str.toLowerCase().contains(str2.toLowerCase())) return true;
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -67,16 +65,16 @@ public class Newsfeed {
|
|||||||
getFilter("default_ad_list", "StandartFilter.txt");
|
getFilter("default_ad_list", "StandartFilter.txt");
|
||||||
getFilter("shitposting", "IDontWantToReadIt.txt");
|
getFilter("shitposting", "IDontWantToReadIt.txt");
|
||||||
|
|
||||||
String string = getPreferences().getString("spamfilters", "");
|
String customfilters = getPrefsValue("spamfilters");
|
||||||
|
|
||||||
if (!string.isEmpty()) {
|
if (!customfilters.isEmpty()) {
|
||||||
mFilters.addAll(Arrays.asList(string.split(", ")));
|
mFilters.addAll(Arrays.asList(customfilters.split(", ")));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void getFilter(String boolname, String filename) {
|
public static void getFilter(String boolname, String filename) {
|
||||||
if (BooleanTrue(boolname)) {
|
if (getBoolValue(boolname, true)) {
|
||||||
try {
|
try {
|
||||||
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(getContext().getAssets().open(filename)));
|
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(getContext().getAssets().open(filename)));
|
||||||
while (true) {
|
while (true) {
|
||||||
@@ -92,35 +90,34 @@ public class Newsfeed {
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} // Get needed filter list from assets
|
||||||
|
|
||||||
public static boolean injectFilters(JSONObject jSONObject) {
|
public static boolean injectFilters(JSONObject jSONObject) {
|
||||||
String optString = jSONObject.optString(NavigatorKeys.j, "");
|
String optString = jSONObject.optString(NavigatorKeys.j, "");
|
||||||
if (!ads(optString) && !authors_rec(optString) && !recomm(optString) && !friendrecomm(optString)) {
|
if (!ads(optString) && !checkCopyright(optString) && !authors_rec(optString) && !recomm(optString) && !friendrecomm(optString)) {
|
||||||
String optString2 = jSONObject.optString("post_type", "");
|
String optString2 = jSONObject.optString("post_type", "");
|
||||||
if (!ads(optString2) && !authors_rec(optString2) && !recomm(optString2) && !friendrecomm(optString2)) {
|
if (!ads(optString2) && !authors_rec(optString2) && !recomm(optString2) && !friendrecomm(optString2)) {
|
||||||
String optString3 = jSONObject.optString("filters", "");
|
String optString3 = jSONObject.optString("filters", "");
|
||||||
if (ads(optString3) || authors_rec(optString3) || recomm(optString3) || friendrecomm(optString3) || isBlockedByFilter(jSONObject.optString(NavigatorKeys.x, "")) || checkCopyright(jSONObject) || captions(jSONObject)) {
|
if (ads(optString3) || authors_rec(optString3) || recomm(optString3) || friendrecomm(optString3) || isBlockedByFilter(jSONObject.optString(NavigatorKeys.x, "")) || captions(jSONObject)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return !AD(jSONObject);
|
return !AD(jSONObject);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
} // json newsfeed/posts injector to detect and delete posts
|
||||||
|
|
||||||
public static boolean authors_rec(String str) {
|
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) {
|
public static boolean captions(JSONObject jSONObject) {
|
||||||
try {
|
try {
|
||||||
JSONObject jSONObject2 = jSONObject.getJSONObject("caption");
|
JSONObject jSONObject2 = jSONObject.getJSONObject("caption");
|
||||||
if (!Preferences.captions()) {
|
if (Preferences.captions()) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
boolean postsrecomm = 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()))));
|
||||||
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) {
|
} catch (JSONException unused) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -134,31 +131,31 @@ public class Newsfeed {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static boolean recomm(String str) {
|
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) {
|
public static boolean friendrecomm(String str) {
|
||||||
return str.equals("friends_recommendations") && !friendsrecomm();
|
return str.equals("friends_recommendations") && friendsrecomm();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean AD(JSONObject jSONObject) {
|
public static boolean AD(JSONObject jSONObject) {
|
||||||
return jSONObject.optInt("marked_as_ads", 0) == 1 && adsgroup();
|
return jSONObject.optInt("marked_as_ads", 0) == 1 && adsgroup();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean checkCopyright(JSONObject jSONObject) {
|
public static boolean checkCopyright(String str) {
|
||||||
return jSONObject.optInt("copyright", 0) == 1 && copyright_post();
|
return str.equals("copyright") && copyright_post();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String friendsads() {
|
public static String friendsads() {
|
||||||
return postsrecomm() ? "user_rec" : "null";
|
return postsrecomm() ? "null" : "user_rec";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getFriendRecomm() {
|
public static String getFriendRecomm() {
|
||||||
return friendsrecomm() ? "friends_recommendations" : "null";
|
return friendsrecomm() ? "null" : "friends_recommendations";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String authorsads() {
|
public static String authorsads() {
|
||||||
return authorsrecomm() ? "authors_rec" : "null";
|
return authorsrecomm() ? "null" : "authors_rec";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String widgetads() {
|
public static String widgetads() {
|
||||||
@@ -173,93 +170,63 @@ public class Newsfeed {
|
|||||||
return adsstories() ? "null" : "ads";
|
return adsstories() ? "null" : "ads";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getCommentsSort(String def) {
|
public static String getCommentsSort(int value) {
|
||||||
String string = getPreferences().getString("commentssort", "");
|
return !CommentsSort() && value == 2 || value == 1 ? "desc" : "asc";
|
||||||
if (string.isEmpty()) {
|
|
||||||
return def;
|
|
||||||
}
|
|
||||||
if (string.equals("new")) {
|
|
||||||
return "desc";
|
|
||||||
}
|
|
||||||
if (string.equals("old")) {
|
|
||||||
return "asc";
|
|
||||||
}
|
|
||||||
return def;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static long getUpdateNewsfeed(boolean refresh_timeout) {
|
public static long getUpdateNewsfeed(boolean refresh_timeout) {
|
||||||
String string = getPreferences().getString("newsupdate", "");
|
switch (getPrefsValue("newsupdate")) {
|
||||||
if (string.isEmpty()) {
|
case "no_update":
|
||||||
return Preference.b().getLong(refresh_timeout ? "refresh_timeout_top" : "refresh_timeout_recent", 600000L);
|
return MAX_VALUE;
|
||||||
|
case "imd_update":
|
||||||
|
return 10000L;
|
||||||
|
default:
|
||||||
|
return Preference.b().getLong(refresh_timeout ? "refresh_timeout_top" : "refresh_timeout_recent", 600000L);
|
||||||
}
|
}
|
||||||
if (string.equals("no_update")) {
|
|
||||||
return MAX_VALUE;
|
|
||||||
}
|
|
||||||
if (string.equals("imd_update")) {
|
|
||||||
return 10000L;
|
|
||||||
}
|
|
||||||
return Preference.b().getLong(refresh_timeout ? "refresh_timeout_top" : "refresh_timeout_recent", 600000L);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Class getStartFragment() {
|
public static Class getStartFragment() {
|
||||||
String string = getPreferences().getString("start_values", "");
|
switch (getPrefsValue("start_values")) {
|
||||||
if (string.equals("default")) {
|
case "newsfeed":
|
||||||
return getInstance().getSelectedTabs().get(0).fragmentClass;
|
return newfeed() ? HomeFragment.class : NewsfeedFragment.class;
|
||||||
|
case "messenger":
|
||||||
|
return DialogsFragment.class;
|
||||||
|
case "groups":
|
||||||
|
return GroupsFragment.class;
|
||||||
|
case "music":
|
||||||
|
return MusicFragment.class;
|
||||||
|
case "friends":
|
||||||
|
return FriendsFragment.class;
|
||||||
|
case "photos":
|
||||||
|
return PhotosFragment.class;
|
||||||
|
case "videos":
|
||||||
|
return VideosFragment.class;
|
||||||
|
case "settings":
|
||||||
|
return SettingsListFragment.class;
|
||||||
|
case "apps":
|
||||||
|
return AppsFragment.class;
|
||||||
|
case "discover":
|
||||||
|
return DiscoverFragment.class;
|
||||||
|
case "notifications":
|
||||||
|
return NotificationsContainerFragment.class;
|
||||||
|
case "money":
|
||||||
|
return MoneyTransfersFragment.class;
|
||||||
|
case "games":
|
||||||
|
return GamesFragment.class;
|
||||||
|
case "liked":
|
||||||
|
return FaveTabFragment.class;
|
||||||
|
case "menu":
|
||||||
|
return MenuFragment.class;
|
||||||
|
case "profile":
|
||||||
|
return ProfileFragment.class;
|
||||||
|
case "lives":
|
||||||
|
return LivesTabsFragment.class;
|
||||||
|
case "docs":
|
||||||
|
return DocumentsViewFragment.class;
|
||||||
|
case "brtd":
|
||||||
|
return BirthdaysFragment.class;
|
||||||
|
default:
|
||||||
|
return getInstance().getSelectedTabs().get(0).fragmentClass;
|
||||||
}
|
}
|
||||||
if (string.equals("newsfeed")) {
|
|
||||||
return newfeed() ? HomeFragment.class : NewsfeedFragment.class;
|
|
||||||
}
|
|
||||||
if (string.equals("messenger")) {
|
|
||||||
return DialogsFragment.class;
|
|
||||||
}
|
|
||||||
if (string.equals("groups")) {
|
|
||||||
return GroupsFragment.class;
|
|
||||||
}
|
|
||||||
if (string.equals("music")) {
|
|
||||||
return MusicFragment.class;
|
|
||||||
}
|
|
||||||
if (string.equals("friends")) {
|
|
||||||
return FriendsFragment.class;
|
|
||||||
}
|
|
||||||
if (string.equals("photos")) {
|
|
||||||
return PhotosFragment.class;
|
|
||||||
}
|
|
||||||
if (string.equals("videos")) {
|
|
||||||
return VideosFragment.class;
|
|
||||||
}
|
|
||||||
if (string.equals("settings")) {
|
|
||||||
return SettingsListFragment.class;
|
|
||||||
}
|
|
||||||
if (string.equals("apps")) {
|
|
||||||
return AppsFragment.class;
|
|
||||||
}
|
|
||||||
if (string.equals("discover")) {
|
|
||||||
return newfeed() ? GatewaysFragment.class : DiscoverFragment.class;
|
|
||||||
}
|
|
||||||
if (string.equals("notifications")) {
|
|
||||||
return NotificationsContainerFragment.class;
|
|
||||||
}
|
|
||||||
if (string.equals("money")) {
|
|
||||||
return MoneyTransfersFragment.class;
|
|
||||||
}
|
|
||||||
if (string.equals("games")) {
|
|
||||||
return GamesFragment.class;
|
|
||||||
}
|
|
||||||
if (string.equals("liked")) {
|
|
||||||
return FaveTabFragment.class;
|
|
||||||
}
|
|
||||||
if (string.equals("menu")) {
|
|
||||||
return MenuFragment.class;
|
|
||||||
}
|
|
||||||
if (string.equals("profile")) {
|
|
||||||
return ProfileFragment.class;
|
|
||||||
}
|
|
||||||
if (string.equals("lives")) {
|
|
||||||
return LivesTabsFragment.class;
|
|
||||||
}
|
|
||||||
if (string.equals("docs")) {
|
|
||||||
return DocumentsViewFragment.class;
|
|
||||||
}
|
|
||||||
return string.equals("brtd") ? BirthdaysFragment.class : getInstance().getSelectedTabs().get(0).fragmentClass;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,18 +37,15 @@ public class OEMDetector {
|
|||||||
|
|
||||||
private static String getSystemProperty(String str) {
|
private static String getSystemProperty(String str) {
|
||||||
BufferedReader bufferedReader;
|
BufferedReader bufferedReader;
|
||||||
Throwable th;
|
|
||||||
BufferedReader bufferedReader2 = null;
|
|
||||||
try {
|
try {
|
||||||
bufferedReader = new BufferedReader(new InputStreamReader(Runtime.getRuntime().exec("getprop " + str).getInputStream()), 1024);
|
bufferedReader = new BufferedReader(new InputStreamReader(Runtime.getRuntime().exec("getprop " + str).getInputStream()), 1024);
|
||||||
try {
|
try {
|
||||||
String readLine = bufferedReader.readLine();
|
|
||||||
try {
|
try {
|
||||||
bufferedReader.close();
|
bufferedReader.close();
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
return readLine;
|
return bufferedReader.readLine();
|
||||||
} catch (IOException ignored) {
|
} catch (IOException ignored) {
|
||||||
}
|
}
|
||||||
} catch (Throwable ignored) {
|
} catch (Throwable ignored) {
|
||||||
|
|||||||
@@ -0,0 +1,61 @@
|
|||||||
|
package ru.vtosters.lite.utils;
|
||||||
|
|
||||||
|
import static ru.vtosters.lite.utils.Preferences.dev;
|
||||||
|
import static ru.vtosters.lite.utils.Preferences.opusmodule;
|
||||||
|
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
|
import com.vk.medianative.MediaNative;
|
||||||
|
|
||||||
|
import java.nio.ByteBuffer;
|
||||||
|
|
||||||
|
public class OpusLoader {
|
||||||
|
private static long timetracker;
|
||||||
|
private static boolean inited;
|
||||||
|
|
||||||
|
public static void LoadLibrary(String libname){
|
||||||
|
try {
|
||||||
|
System.loadLibrary(libname);
|
||||||
|
inited = true;
|
||||||
|
} catch (UnsatisfiedLinkError unused2) {
|
||||||
|
if(dev()) Log.d("VTLite", "Failed to load " + libname);
|
||||||
|
inited = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static long getLength() {
|
||||||
|
if (isReadyToUse()) {
|
||||||
|
long length = System.currentTimeMillis() - timetracker;
|
||||||
|
timetracker = System.currentTimeMillis();
|
||||||
|
return length;
|
||||||
|
}
|
||||||
|
return 0L;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int AudioStartRecordBridge(String str) {
|
||||||
|
if (isReadyToUse()) {
|
||||||
|
// Init custom AudioStartRecord
|
||||||
|
timetracker = System.currentTimeMillis();
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return MediaNative.nativeAudioStartRecord(str);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int AudioWriteFrameBridge(ByteBuffer buffer, int length) {
|
||||||
|
if (isReadyToUse()) {
|
||||||
|
// Init custom AudioWriteFrame
|
||||||
|
}
|
||||||
|
return MediaNative.nativeAudioWriteFrame(buffer, length);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void AudioStopRecordBridge() {
|
||||||
|
if (isReadyToUse()) {
|
||||||
|
// Init custom AudioStopRecord
|
||||||
|
}
|
||||||
|
MediaNative.nativeAudioStopRecord();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean isReadyToUse() {
|
||||||
|
return opusmodule() && inited;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,13 +1,20 @@
|
|||||||
package ru.vtosters.lite.utils;
|
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.ui.fragments.multiaccount.MultiAccountManager.migrate;
|
||||||
import static ru.vtosters.lite.utils.DeletedMessagesHandler.reloadMessagesList;
|
import static ru.vtosters.lite.utils.DeletedMessagesHandler.reloadMessagesList;
|
||||||
import static ru.vtosters.lite.utils.Globals.fixGapps;
|
import static ru.vtosters.lite.utils.Globals.fixGapps;
|
||||||
import static ru.vtosters.lite.utils.Globals.getContext;
|
import static ru.vtosters.lite.utils.Globals.getContext;
|
||||||
import static ru.vtosters.lite.utils.Globals.getPreferences;
|
import static ru.vtosters.lite.utils.Globals.getIdentifier;
|
||||||
|
import static ru.vtosters.lite.utils.Globals.getPrefsValue;
|
||||||
|
import static ru.vtosters.lite.utils.Globals.getString;
|
||||||
|
import static ru.vtosters.lite.utils.Globals.getStringDate;
|
||||||
|
import static ru.vtosters.lite.utils.Globals.getUserId;
|
||||||
import static ru.vtosters.lite.utils.Globals.registerActivities;
|
import static ru.vtosters.lite.utils.Globals.registerActivities;
|
||||||
import static ru.vtosters.lite.utils.Newsfeed.setupFilters;
|
import static ru.vtosters.lite.utils.Newsfeed.setupFilters;
|
||||||
|
import static ru.vtosters.lite.utils.OpusLoader.LoadLibrary;
|
||||||
import static ru.vtosters.lite.utils.Proxy.setProxy;
|
import static ru.vtosters.lite.utils.Proxy.setProxy;
|
||||||
|
import static ru.vtosters.lite.utils.Themes.systemThemeChanger;
|
||||||
|
|
||||||
import android.app.Application;
|
import android.app.Application;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
@@ -16,13 +23,21 @@ import android.os.Build;
|
|||||||
import android.preference.PreferenceManager;
|
import android.preference.PreferenceManager;
|
||||||
|
|
||||||
import com.vk.core.util.Screen;
|
import com.vk.core.util.Screen;
|
||||||
|
import com.vk.im.engine.models.users.UserSex;
|
||||||
import com.vtosters.lite.data.Users;
|
import com.vtosters.lite.data.Users;
|
||||||
|
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
public class Preferences {
|
public class Preferences {
|
||||||
|
public static SharedPreferences preferences = getContext().getSharedPreferences("com.vtosters.lite_preferences", Context.MODE_PRIVATE);
|
||||||
|
|
||||||
public static String VERSIONNAME = "Beta";
|
public static String VERSIONNAME = "Beta";
|
||||||
|
|
||||||
|
public static Integer VKBUILD = 12116; // 3439 orig
|
||||||
|
public static String VKVER = "7.24"; // 5.29 orig
|
||||||
|
|
||||||
public static void init(Application application) {
|
public static void init(Application application) {
|
||||||
setupFilters();
|
setupFilters();
|
||||||
fixGapps();
|
fixGapps();
|
||||||
@@ -30,64 +45,71 @@ public class Preferences {
|
|||||||
migrate();
|
migrate();
|
||||||
reloadMessagesList();
|
reloadMessagesList();
|
||||||
registerActivities(application);
|
registerActivities(application);
|
||||||
|
LoadLibrary("vkopustest");
|
||||||
|
systemThemeChanger();
|
||||||
|
} // VK Init
|
||||||
|
|
||||||
|
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 getBoolValue("opusmodule", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean BooleanFalse(String key) {
|
public static boolean systemtheme() {
|
||||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
|
return getBoolValue("systemtheme", true);
|
||||||
return prefs.getBoolean(key, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean BooleanTrue(String key) {
|
|
||||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
|
|
||||||
return prefs.getBoolean(key, true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean authorsrecomm() {
|
public static boolean authorsrecomm() {
|
||||||
return BooleanTrue("authorsrecomm");
|
return getBoolValue("authorsrecomm", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean captions() {
|
public static boolean captions() {
|
||||||
return BooleanTrue("captions");
|
return getBoolValue("captions", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean copyright_post() {
|
public static boolean copyright_post() {
|
||||||
return BooleanFalse("copyright_post");
|
return getBoolValue("copyright_post", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean default_ad_list() {
|
public static boolean default_ad_list() {
|
||||||
return BooleanFalse("default_ad_list");
|
return getBoolValue("default_ad_list", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean shitposting() {
|
public static boolean shitposting() {
|
||||||
return BooleanFalse("shitposting");
|
return getBoolValue("shitposting", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean friendsrecomm() {
|
public static boolean friendsrecomm() {
|
||||||
return BooleanTrue("friendsrecomm");
|
return getBoolValue("friendsrecomm", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isBGStickersEnabled() {
|
public static boolean isBGStickersEnabled() {
|
||||||
return BooleanTrue("isBGStickersEnabled");
|
return getBoolValue("isBGStickersEnabled", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean ads() {
|
public static boolean ads() {
|
||||||
return BooleanFalse("__dbg_no_ads");
|
return getBoolValue("__dbg_no_ads", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean adsgroup() {
|
public static boolean adsgroup() {
|
||||||
return BooleanFalse("adsgroup");
|
return getBoolValue("adsgroup", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean olddock() {
|
public static boolean olddock() {
|
||||||
return BooleanFalse("olddock");
|
return getBoolValue("olddock", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean adsslider() {
|
public static boolean adsslider() {
|
||||||
return BooleanFalse("__dbg_no_slider_ads");
|
return getBoolValue("__dbg_no_slider_ads", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean adsstories() {
|
public static boolean adsstories() {
|
||||||
return BooleanFalse("adsstories");
|
return getBoolValue("adsstories", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean alteremoji(Context context) {
|
public static boolean alteremoji(Context context) {
|
||||||
@@ -95,186 +117,190 @@ public class Preferences {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static boolean alteremojipref() {
|
public static boolean alteremojipref() {
|
||||||
return BooleanFalse("alteremoji");
|
return getBoolValue("alteremoji", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean awayphp() {
|
public static boolean awayphp() {
|
||||||
return BooleanTrue("awayphp");
|
return getBoolValue("awayphp", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean VKUI_INJ() {
|
public static boolean VKUI_INJ() {
|
||||||
return BooleanTrue("VKUI_INJ");
|
return getBoolValue("VKUI_INJ", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean benchmark() {
|
public static boolean benchmark() {
|
||||||
return BooleanFalse("benchmark");
|
return getBoolValue("benchmark", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean calls() {
|
public static boolean calls() {
|
||||||
return BooleanTrue("calls");
|
return getBoolValue("calls", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean convUsersOnline() {
|
public static boolean convUsersOnline() {
|
||||||
return BooleanFalse("convUsersOnline");
|
return getBoolValue("convUsersOnline", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean darkmode() {
|
public static boolean darkmode() {
|
||||||
return BooleanTrue("darkmode");
|
return getBoolValue("darkmode", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean dev() {
|
public static boolean dev() {
|
||||||
return BooleanFalse("dev");
|
return getBoolValue("dev", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean devmenu() {
|
public static boolean devmenu() {
|
||||||
return BooleanFalse("devmenu");
|
return getBoolValue("devmenu", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean dnr() {
|
public static boolean dnr() {
|
||||||
return BooleanTrue("dnr");
|
return getBoolValue("dnr", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean dns() {
|
public static boolean dns() {
|
||||||
return BooleanTrue("dns");
|
return getBoolValue("dns", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean libverify() {
|
public static boolean libverify() {
|
||||||
return BooleanFalse("libverify");
|
return getBoolValue("libverify", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean dnt() {
|
public static boolean dnt() {
|
||||||
return BooleanTrue("dnt");
|
return getBoolValue("dnt", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean dockcounter() {
|
public static boolean dockcounter() {
|
||||||
return BooleanTrue("dockcounter");
|
return getBoolValue("dockcounter", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean feedcache() {
|
public static boolean feedcache() {
|
||||||
return BooleanTrue("feedcache");
|
return getBoolValue("feedcache", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean CommentsSort() {
|
||||||
|
return getBoolValue("commentssorting", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void forceOffline() {
|
public static void forceOffline() {
|
||||||
if (setoffline()) {
|
if (setoffline() && !offline()) {
|
||||||
Users.b();
|
Users.b();
|
||||||
}
|
}
|
||||||
setupFilters();
|
setupFilters();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean fulltime() {
|
|
||||||
return BooleanTrue("fulltime");
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean gcmfix() {
|
public static boolean gcmfix() {
|
||||||
return BooleanTrue("gcmfix");
|
return getBoolValue("gcmfix", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean hasMusicSubscription() {
|
public static boolean hasMusicSubscription() {
|
||||||
return BooleanTrue("hasMusicSubscription");
|
return getBoolValue("hasMusicSubscription", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isEnableExternalOpening() {
|
public static boolean isEnableExternalOpening() {
|
||||||
return BooleanFalse("isEnableExternalOpening");
|
return getBoolValue("isEnableExternalOpening", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean iconvk() {
|
public static boolean iconvk() {
|
||||||
return BooleanFalse("iconvk");
|
return getBoolValue("iconvk", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean iconvkru() {
|
public static boolean iconvkru() {
|
||||||
return BooleanFalse("iconvkru");
|
return getBoolValue("iconvkru", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isMusicRestricted() {
|
public static boolean isMusicRestricted() {
|
||||||
return BooleanTrue("isMusicRestricted");
|
return getBoolValue("isMusicRestricted", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean msgflat() {
|
public static boolean msgflat() {
|
||||||
return BooleanFalse("msgflat");
|
return getBoolValue("msgflat", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean msgtails() {
|
public static boolean msgtails() {
|
||||||
return BooleanTrue("msgtails");
|
return getBoolValue("msgtails", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean navbar() {
|
public static boolean navbar() {
|
||||||
return BooleanTrue("navbar");
|
return getBoolValue("navbar", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean newfeed() {
|
public static boolean newfeed() {
|
||||||
return BooleanTrue("newfeed");
|
return getBoolValue("newfeed", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean offline() {
|
public static boolean offline() {
|
||||||
return BooleanTrue("offline");
|
return getBoolValue("offline", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean oldabout() {
|
public static boolean oldabout() {
|
||||||
return BooleanFalse("oldabout");
|
return getBoolValue("oldabout", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean postsrecomm() {
|
public static boolean postsrecomm() {
|
||||||
return BooleanTrue("postsrecomm");
|
return getBoolValue("postsrecomm", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String readstatus() {
|
public static String readstatus() {
|
||||||
return dnr() ? "messages.markAsRead" : "null";
|
return dnr() ? "messages.markAsRead" : "null";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String copyrightfix() {
|
||||||
|
return copyright_post() ? "copyright" : "ads_easy_promote";
|
||||||
|
}
|
||||||
|
|
||||||
public static boolean refsfilter() {
|
public static boolean refsfilter() {
|
||||||
return BooleanFalse("refsfilter");
|
return getBoolValue("refsfilter", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean setoffline() {
|
public static boolean setoffline() {
|
||||||
return BooleanFalse("setoffline");
|
return getBoolValue("setoffline", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean shortinfo() {
|
public static boolean shortinfo() {
|
||||||
return BooleanTrue("shortinfo");
|
return getBoolValue("shortinfo", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean shortlinkfilter() {
|
public static boolean shortlinkfilter() {
|
||||||
return BooleanFalse("shortlinkfilter");
|
return getBoolValue("shortlinkfilter", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean shortpost() {
|
public static boolean shortpost() {
|
||||||
return BooleanTrue("shortpost");
|
return getBoolValue("shortpost", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean showmenu() {
|
public static boolean showmenu() {
|
||||||
return BooleanFalse("showmenu");
|
return getBoolValue("showmenu", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean ssl() {
|
public static boolean ssl() {
|
||||||
return BooleanTrue("ssl");
|
return getBoolValue("ssl", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean stories() {
|
public static boolean stories() {
|
||||||
return BooleanTrue("stories");
|
return getBoolValue("stories", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean swipe() {
|
public static boolean swipe() {
|
||||||
return BooleanTrue("swipe");
|
return getBoolValue("swipe", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean systememoji() {
|
public static boolean systememoji() {
|
||||||
return BooleanFalse("systememoji");
|
return getBoolValue("systememoji", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean unlockstats() {
|
public static boolean unlockstats() {
|
||||||
return BooleanFalse("unlockstats");
|
return getBoolValue("unlockstats", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean usevkui() {
|
public static boolean usevkui() {
|
||||||
return BooleanTrue("usevkui");
|
return getBoolValue("usevkui", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean vksans() {
|
public static boolean vksans() {
|
||||||
return BooleanFalse("vksans");
|
return getBoolValue("vksans", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean voice() {
|
public static boolean voice() {
|
||||||
return BooleanTrue("voice");
|
return getBoolValue("voice", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean newvideo() {
|
public static boolean newvideo() {
|
||||||
@@ -282,43 +308,96 @@ public class Preferences {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static int getMsgCount() {
|
public static int getMsgCount() {
|
||||||
String customvalue = getPreferences().getString("msgcount", "");
|
String customvalue = getPrefsValue("msgcount");
|
||||||
return customvalue.isEmpty() ? 30 : Integer.parseInt(customvalue);
|
return customvalue.isEmpty() ? 30 : Integer.parseInt(customvalue);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String MediacontentFix() {
|
public static String MediacontentFix() {
|
||||||
return Build.VERSION.SDK_INT >= 29 ? "date_modified DESC" : "datetaken DESC";
|
return Build.VERSION.SDK_INT >= 29 ? "date_modified DESC" : "datetaken DESC";
|
||||||
}
|
} // Fix photo picker for sdk 29+
|
||||||
|
|
||||||
public static String MediacontentFix2() {
|
public static String MediacontentFix2() {
|
||||||
return Build.VERSION.SDK_INT >= 29 ? "date_modified" : "datetaken";
|
return Build.VERSION.SDK_INT >= 29 ? "date_modified" : "datetaken";
|
||||||
}
|
} // Fix photo picker for sdk 29+
|
||||||
|
|
||||||
public static String MediacontentFix3() {
|
public static String MediacontentFix3() {
|
||||||
return Build.VERSION.SDK_INT >= 29 ? ", date_modified=" : ", dateTaken=";
|
return Build.VERSION.SDK_INT >= 29 ? ", date_modified=" : ", dateTaken=";
|
||||||
}
|
} // Fix photo picker for sdk 29+
|
||||||
|
|
||||||
public static boolean color_grishka() {
|
public static boolean color_grishka() {
|
||||||
return BooleanTrue("color_grishka");
|
return getBoolValue("color_grishka", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean vkme_msg() {
|
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() {
|
public static String VKVersion() {
|
||||||
String string = getPreferences().getString("vkversion", "");
|
return VKVER;
|
||||||
if (!string.isEmpty()) {
|
}
|
||||||
return string;
|
|
||||||
}
|
public static int VKVersionBuild() {
|
||||||
return "5.29";
|
return VKBUILD;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static long VKVersionBuildLong() {
|
||||||
|
return VKVersionBuild();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean hasVerification() {
|
||||||
|
return isVerified(getUserId());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getLocale() {
|
public static String getLocale() {
|
||||||
String string = getPreferences().getString("lang_value", "");
|
String string = getPrefsValue("lang_value");
|
||||||
|
|
||||||
if (string.equals("system")) {
|
if (string.equals("system")) {
|
||||||
return Locale.getDefault().getLanguage();
|
return Locale.getDefault().getLanguage();
|
||||||
}
|
}
|
||||||
|
|
||||||
return string.isEmpty() ? Locale.getDefault().getLanguage() : string;
|
return string.isEmpty() ? Locale.getDefault().getLanguage() : string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static boolean fulltime() {
|
||||||
|
return getPrefsValue("dateformat").equals("noyear") || getPrefsValue("dateformat").equals("full") || getPrefsValue("dateformat").equals("noseconds");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getDateFormat() {
|
||||||
|
if (getPrefsValue("dateformat").equals("noyear")) {
|
||||||
|
return getString("fulltime2");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getPrefsValue("dateformat").equals("full")) {
|
||||||
|
return getString("fulltime");
|
||||||
|
}
|
||||||
|
|
||||||
|
return getString("fulltime3");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getFormattedDate(UserSex type, long time){
|
||||||
|
SimpleDateFormat date = new SimpleDateFormat(getDateFormat(), Locale.getDefault());
|
||||||
|
|
||||||
|
if(!fulltime()) return null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
return getStringDate(type == UserSex.FEMALE ? getIdentifier("last_seen_profile_f", "string") : getIdentifier("last_seen_profile_m", "string"), new Object[]{date.format(new Date(time))});
|
||||||
|
|
||||||
|
} catch (Throwable th) {
|
||||||
|
th.printStackTrace();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,25 +1,23 @@
|
|||||||
package ru.vtosters.lite.utils;
|
package ru.vtosters.lite.utils;
|
||||||
|
|
||||||
import static java.lang.System.*;
|
import static java.lang.System.clearProperty;
|
||||||
import static ru.vtosters.lite.utils.Globals.*;
|
import static java.lang.System.getProperties;
|
||||||
import static ru.vtosters.lite.utils.Preferences.*;
|
import static ru.vtosters.lite.utils.Globals.getPrefsValue;
|
||||||
|
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
|
||||||
|
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
public class Proxy {
|
public class Proxy {
|
||||||
public static String getOauthComAuth() {
|
public static String getOauthComAuth() {
|
||||||
String oauthComHttps = getOauthComHttps();
|
return getOauthComHttps() + "/authorize";
|
||||||
return oauthComHttps + "/authorize";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getOauthComAuthClient() {
|
public static String getOauthComAuthClient() {
|
||||||
String oauthComAuth = getOauthComAuth();
|
return getOauthComAuth() + "?client_id=";
|
||||||
return oauthComAuth + "?client_id=";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getOauthComBlank() {
|
public static String getOauthComBlank() {
|
||||||
String oauthComHttps = getOauthComHttps();
|
return getOauthComHttps() + "/blank.html";
|
||||||
return oauthComHttps + "/blank.html";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getOauthComBlankRedirect() {
|
public static String getOauthComBlankRedirect() {
|
||||||
@@ -31,8 +29,7 @@ public class Proxy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static String getStaticComSupport() {
|
public static String getStaticComSupport() {
|
||||||
String staticCom = getStaticCom();
|
return getStaticCom() + "/support";
|
||||||
return staticCom + "/support";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String oauthFix() {
|
public static String oauthFix() {
|
||||||
@@ -40,62 +37,51 @@ public class Proxy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static String getApiCom() {
|
public static String getApiCom() {
|
||||||
String string = getPreferences().getString("proxyapi", "");
|
String string = getPrefsValue("proxyapi");
|
||||||
if (!proxy() & string.isEmpty()) {
|
if (!proxy() & string.isEmpty()) return "api.vk.com";
|
||||||
return "api.vk.com";
|
|
||||||
}
|
|
||||||
return string;
|
return string;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getAwayPhpCom() {
|
public static String getAwayPhpCom() {
|
||||||
String string = getPreferences().getString("proxyapi", "");
|
String string = getPrefsValue("proxyapi");
|
||||||
if (!proxy() & string.isEmpty()) {
|
if (!proxy() & string.isEmpty()) return "m.vk.com";
|
||||||
return "m.vk.com";
|
|
||||||
}
|
|
||||||
return string;
|
return string;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getOauthCom() {
|
public static String getOauthCom() {
|
||||||
String string = getPreferences().getString("proxyoauth", "");
|
String string = getPrefsValue("proxyoauth");
|
||||||
if (!proxy() & string.isEmpty()) {
|
if (!proxy() & string.isEmpty()) return "oauth.vk.com";
|
||||||
return "oauth.vk.com";
|
|
||||||
}
|
|
||||||
return string;
|
return string;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getStaticCom() {
|
public static String getStaticCom() {
|
||||||
String string = getPreferences().getString("proxystatic", "");
|
String string = getPrefsValue("proxystatic");
|
||||||
if (!proxy() & string.isEmpty()) {
|
if (!proxy() & string.isEmpty()) return "static.vk.com";
|
||||||
return "static.vk.com";
|
|
||||||
}
|
|
||||||
return string;
|
return string;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String staticFix(String str) {
|
public static String staticFix(String str) {
|
||||||
String str2;
|
String str2;
|
||||||
String string = getPreferences().getString("proxystatic", "");
|
String string = getPrefsValue("proxystatic");
|
||||||
if (!proxy() & string.isEmpty()) {
|
|
||||||
return str;
|
if (!proxy() & string.isEmpty()) return str;
|
||||||
}
|
|
||||||
str2 = string;
|
str2 = string;
|
||||||
return str.replace(str2, "static.vk.com");
|
return str.replace(str2, "static.vk.com");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void setProxy() {
|
public static void setProxy() {
|
||||||
Properties properties = getProperties();
|
Properties properties = getProperties();
|
||||||
switch (getPreferences().getString("proxy", "")) {
|
|
||||||
|
switch (getPrefsValue("proxy")) {
|
||||||
case "zaborona":
|
case "zaborona":
|
||||||
properties.setProperty("socksProxyHost", "socks.zaboronahelp.pp.ua");
|
properties.setProperty("socksProxyHost", "socks.zaboronahelp.pp.ua");
|
||||||
properties.setProperty("socksProxyPort", "1488");
|
properties.setProperty("socksProxyPort", "1488");
|
||||||
clearProperty("java.net.socks.username");
|
|
||||||
clearProperty("java.net.socks.password");
|
|
||||||
resetProxySocks();
|
resetProxySocks();
|
||||||
break;
|
break;
|
||||||
case "socks":
|
case "socks":
|
||||||
properties.setProperty("socksProxyHost", proxyHostSocks());
|
properties.setProperty("socksProxyHost", proxyHostSocks());
|
||||||
properties.setProperty("socksProxyPort", proxyPortSocks());
|
properties.setProperty("socksProxyPort", proxyPortSocks());
|
||||||
properties.setProperty("java.net.socks.username", proxyUserSocks());
|
|
||||||
properties.setProperty("java.net.socks.password", proxyPassSocks());
|
|
||||||
resetProxySocks();
|
resetProxySocks();
|
||||||
break;
|
break;
|
||||||
case "http":
|
case "http":
|
||||||
@@ -129,9 +115,7 @@ public class Proxy {
|
|||||||
clearProperty("http.proxyPassword");
|
clearProperty("http.proxyPassword");
|
||||||
clearProperty("socksProxyHost");
|
clearProperty("socksProxyHost");
|
||||||
clearProperty("socksPortHost");
|
clearProperty("socksPortHost");
|
||||||
clearProperty("java.net.socks.username");
|
} // Reset all proxies
|
||||||
clearProperty("java.net.socks.password");
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void resetProxySocks() {
|
public static void resetProxySocks() {
|
||||||
clearProperty("https.proxyHost");
|
clearProperty("https.proxyHost");
|
||||||
@@ -142,7 +126,7 @@ public class Proxy {
|
|||||||
clearProperty("http.proxyPort");
|
clearProperty("http.proxyPort");
|
||||||
clearProperty("http.proxyUser");
|
clearProperty("http.proxyUser");
|
||||||
clearProperty("http.proxyPassword");
|
clearProperty("http.proxyPassword");
|
||||||
}
|
} // Reset all except socks
|
||||||
|
|
||||||
public static void resetProxyHttp() {
|
public static void resetProxyHttp() {
|
||||||
clearProperty("https.proxyHost");
|
clearProperty("https.proxyHost");
|
||||||
@@ -151,9 +135,7 @@ public class Proxy {
|
|||||||
clearProperty("https.proxyPassword");
|
clearProperty("https.proxyPassword");
|
||||||
clearProperty("socksProxyHost");
|
clearProperty("socksProxyHost");
|
||||||
clearProperty("socksPortHost");
|
clearProperty("socksPortHost");
|
||||||
clearProperty("java.net.socks.username");
|
} // Reset all except http
|
||||||
clearProperty("java.net.socks.password");
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void resetProxyHttps() {
|
public static void resetProxyHttps() {
|
||||||
clearProperty("http.proxyHost");
|
clearProperty("http.proxyHost");
|
||||||
@@ -162,76 +144,64 @@ public class Proxy {
|
|||||||
clearProperty("http.proxyPassword");
|
clearProperty("http.proxyPassword");
|
||||||
clearProperty("socksProxyHost");
|
clearProperty("socksProxyHost");
|
||||||
clearProperty("socksPortHost");
|
clearProperty("socksPortHost");
|
||||||
clearProperty("java.net.socks.username");
|
} // Reset all except https
|
||||||
clearProperty("java.net.socks.password");
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String proxyHostHTTP() {
|
public static String proxyHostHTTP() {
|
||||||
String string = getPreferences().getString("proxyHostHTTP", "");
|
String string = getPrefsValue("proxyHostHTTP");
|
||||||
return string.isEmpty() ? "192.168.0.1" : string;
|
return string.isEmpty() ? "192.168.0.1" : string;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String proxyHostHTTPS() {
|
public static String proxyHostHTTPS() {
|
||||||
String string = getPreferences().getString("proxyHostHTTPS", "");
|
String string = getPrefsValue("proxyHostHTTPS");
|
||||||
return string.isEmpty() ? "192.168.0.1" : string;
|
return string.isEmpty() ? "192.168.0.1" : string;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String proxyHostSocks() {
|
public static String proxyHostSocks() {
|
||||||
String string = getPreferences().getString("proxyHostSocks", "");
|
String string = getPrefsValue("proxyHostSocks");
|
||||||
return string.isEmpty() ? "192.168.0.1" : string;
|
return string.isEmpty() ? "192.168.0.1" : string;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String proxyPortHTTP() {
|
public static String proxyPortHTTP() {
|
||||||
String string = getPreferences().getString("proxyPortHTTP", "");
|
String string = getPrefsValue("proxyPortHTTP");
|
||||||
return string.isEmpty() ? "8888" : string;
|
return string.isEmpty() ? "8888" : string;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String proxyPortHTTPS() {
|
public static String proxyPortHTTPS() {
|
||||||
String string = getPreferences().getString("proxyPortHTTPS", "");
|
String string = getPrefsValue("proxyPortHTTPS");
|
||||||
return string.isEmpty() ? "8888" : string;
|
return string.isEmpty() ? "8888" : string;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String proxyPortSocks() {
|
public static String proxyPortSocks() {
|
||||||
String string = getPreferences().getString("proxyPortSocks", "");
|
String string = getPrefsValue("proxyPortSocks");
|
||||||
return string.isEmpty() ? "8888" : string;
|
return string.isEmpty() ? "8888" : string;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String proxyUserHTTP() {
|
public static String proxyUserHTTP() {
|
||||||
String string = getPreferences().getString("proxyUserHTTP", "");
|
String string = getPrefsValue("proxyUserHTTP");
|
||||||
return string.isEmpty() ? "" : string;
|
return string.isEmpty() ? "" : string;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String proxyUserHTTPS() {
|
public static String proxyUserHTTPS() {
|
||||||
String string = getPreferences().getString("proxyUserHTTPS", "");
|
String string = getPrefsValue("proxyUserHTTPS");
|
||||||
return string.isEmpty() ? "" : string;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String proxyUserSocks() {
|
|
||||||
String string = getPreferences().getString("proxyUserSocks", "");
|
|
||||||
return string.isEmpty() ? "" : string;
|
return string.isEmpty() ? "" : string;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String proxyPassHTTP() {
|
public static String proxyPassHTTP() {
|
||||||
String string = getPreferences().getString("proxyPassHTTP", "");
|
String string = getPrefsValue("proxyPassHTTP");
|
||||||
return string.isEmpty() ? "" : string;
|
return string.isEmpty() ? "" : string;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String proxyPassHTTPS() {
|
public static String proxyPassHTTPS() {
|
||||||
String string = getPreferences().getString("proxyPassHTTPS", "");
|
String string = getPrefsValue("proxyPassHTTPS");
|
||||||
return string.isEmpty() ? "" : string;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String proxyPassSocks() {
|
|
||||||
String string = getPreferences().getString("proxyPassSocks", "");
|
|
||||||
return string.isEmpty() ? "" : string;
|
return string.isEmpty() ? "" : string;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean proxy() {
|
public static boolean proxy() {
|
||||||
return getPreferences().getString("proxy", "").equals("apiproxy");
|
return getPrefsValue("proxy").equals("apiproxy");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Official vk proxy enforcer
|
|
||||||
public static boolean proxyvk() {
|
public static boolean proxyvk() {
|
||||||
return BooleanFalse("proxyvk");
|
return getBoolValue("proxyvk", false);
|
||||||
}
|
} // Official vk proxy enforcer
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,15 +1,14 @@
|
|||||||
package ru.vtosters.lite.utils;
|
package ru.vtosters.lite.utils;
|
||||||
|
|
||||||
import static ru.vtosters.lite.utils.About.getBuildNumber;
|
import static ru.vtosters.lite.utils.About.getBuildNumber;
|
||||||
import static ru.vtosters.lite.utils.Globals.getPreferences;
|
import static ru.vtosters.lite.utils.Globals.getPrefsValue;
|
||||||
import static ru.vtosters.lite.utils.Globals.getUserSecret;
|
import static ru.vtosters.lite.utils.Globals.getUserSecret;
|
||||||
import static ru.vtosters.lite.utils.Globals.getUserToken;
|
import static ru.vtosters.lite.utils.Globals.getUserToken;
|
||||||
import static ru.vtosters.lite.utils.Preferences.dev;
|
import static ru.vtosters.lite.utils.Preferences.dev;
|
||||||
import static ru.vtosters.lite.utils.Preferences.getLocale;
|
import static ru.vtosters.lite.utils.Preferences.getLocale;
|
||||||
import static ru.vtosters.lite.utils.Preferences.vksans;
|
import static ru.vtosters.lite.utils.Preferences.vksans;
|
||||||
import static ru.vtosters.lite.utils.Proxy.proxy;
|
import static ru.vtosters.lite.utils.Proxy.proxy;
|
||||||
|
import static ru.vtosters.lite.utils.Themes.isDarkTheme;
|
||||||
import com.vk.core.ui.themes.VKThemeHelper;
|
|
||||||
|
|
||||||
public class SSFS {
|
public class SSFS {
|
||||||
public static String getSSFSLink() {
|
public static String getSSFSLink() {
|
||||||
@@ -17,20 +16,19 @@ public class SSFS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static String SSFSDomain() {
|
public static String SSFSDomain() {
|
||||||
String string = getPreferences().getString("ssfscustom", "");
|
String string = getPrefsValue("ssfscustom");
|
||||||
if (!string.isEmpty()) {
|
|
||||||
return string;
|
if (!string.isEmpty()) return string;
|
||||||
}
|
|
||||||
return "https://vtsf.vknext.net";
|
return "https://vtsf.vknext.net";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getDarkVKUI() {
|
public static String getDarkVKUI() {
|
||||||
return !VKThemeHelper.d() ? "1" : "0";
|
return isDarkTheme() ? "1" : "0";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getAmoledVKUI() {
|
public static String getAmoledVKUI() {
|
||||||
String string = getPreferences().getString("darktheme", "");
|
return getPrefsValue("darktheme").equals("amoled") && isDarkTheme() ? "1" : "0";
|
||||||
return string.equals("amoled") ? "1" : "0";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getUserProxy() {
|
public static String getUserProxy() {
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ import static android.widget.Toast.makeText;
|
|||||||
import static ru.vtosters.lite.utils.Globals.getContext;
|
import static ru.vtosters.lite.utils.Globals.getContext;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.util.Base64;
|
import android.util.Base64;
|
||||||
|
|
||||||
@@ -32,7 +31,7 @@ public class SettBackup {
|
|||||||
public static void backupSettings() {
|
public static void backupSettings() {
|
||||||
SimpleDateFormat date = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault());
|
SimpleDateFormat date = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault());
|
||||||
String currentDateandTime = date.format(new Date());
|
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);
|
var file = new File(directory);
|
||||||
try {
|
try {
|
||||||
var exists = file.createNewFile();
|
var exists = file.createNewFile();
|
||||||
@@ -63,9 +62,7 @@ public class SettBackup {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void restoreBackup() {
|
public static void restoreBackup() {
|
||||||
Intent intent = new Intent();
|
File dir = new File(getExternalStoragePublicDirectory(DIRECTORY_DOWNLOADS + "/VTLBackups/").getPath());;
|
||||||
intent.setAction(Intent.ACTION_GET_CONTENT);
|
// TODO Make restore backup from file list
|
||||||
intent.setType("text/plain");
|
|
||||||
getContext().startActivity(intent);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,116 +1,162 @@
|
|||||||
package ru.vtosters.lite.utils;
|
package ru.vtosters.lite.utils;
|
||||||
|
|
||||||
import static ru.vtosters.lite.utils.Globals.getContext;
|
import static android.view.View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR;
|
||||||
import static ru.vtosters.lite.utils.Globals.getPreferences;
|
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.color_grishka;
|
||||||
import static ru.vtosters.lite.utils.Preferences.isBGStickersEnabled;
|
import static ru.vtosters.lite.utils.Preferences.isBGStickersEnabled;
|
||||||
import static ru.vtosters.lite.utils.Preferences.navbar;
|
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 static ru.vtosters.lite.utils.Preferences.vksans;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.res.ColorStateList;
|
import android.content.res.ColorStateList;
|
||||||
|
import android.content.res.Configuration;
|
||||||
|
import android.graphics.Color;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.support.v7.widget.Toolbar;
|
import android.support.v7.widget.Toolbar;
|
||||||
|
import android.view.View;
|
||||||
import android.view.Window;
|
import android.view.Window;
|
||||||
import android.widget.ImageButton;
|
import android.widget.ImageButton;
|
||||||
|
|
||||||
|
import androidx.core.graphics.ColorUtils;
|
||||||
|
|
||||||
import com.vk.core.d.RecoloredDrawable;
|
import com.vk.core.d.RecoloredDrawable;
|
||||||
import com.vk.core.ui.themes.VKTheme;
|
import com.vk.core.ui.themes.VKTheme;
|
||||||
import com.vk.core.ui.themes.VKThemeHelper;
|
import com.vk.core.ui.themes.VKThemeHelper;
|
||||||
import com.vk.im.ui.themes.ImTheme;
|
import com.vk.im.ui.themes.ImTheme;
|
||||||
|
import com.vk.im.ui.themes.ImThemeHelper;
|
||||||
import com.vtosters.lite.R;
|
import com.vtosters.lite.R;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class Themes {
|
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() {
|
public static int getAccentColor() {
|
||||||
return VKThemeHelper.a(R.attr.accent);
|
return VKThemeHelper.a(R.attr.accent);
|
||||||
}
|
} // Color accent
|
||||||
|
|
||||||
public static int getTextAttr() {
|
public static int getTextAttr() {
|
||||||
return VKThemeHelper.a(R.attr.text_primary);
|
return VKThemeHelper.a(R.attr.text_primary);
|
||||||
}
|
} // Text Primary color
|
||||||
|
|
||||||
public static int getSTextAttr() {
|
public static int getSTextAttr() {
|
||||||
return VKThemeHelper.a(R.attr.text_secondary);
|
return VKThemeHelper.a(R.attr.text_secondary);
|
||||||
}
|
} // Text Secondary color
|
||||||
|
|
||||||
public static int getTabbarBackground() {
|
public static int getTabbarBackground() {
|
||||||
return VKThemeHelper.a(R.attr.tabbar_background);
|
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() {
|
public static int getHeaderBackground() {
|
||||||
return VKThemeHelper.a(R.attr.header_background);
|
return VKThemeHelper.a(R.attr.header_background);
|
||||||
}
|
} // Toolbar/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());
|
|
||||||
}
|
|
||||||
|
|
||||||
public static VKTheme getDarkTheme() {
|
|
||||||
String string = getPreferences().getString("darktheme", "");
|
|
||||||
if (string.isEmpty()) {
|
|
||||||
return VKTheme.DARK;
|
|
||||||
}
|
|
||||||
if (string.equals("amoled")) {
|
|
||||||
return VKTheme.AMOLED;
|
|
||||||
}
|
|
||||||
return VKTheme.DARK;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static ImTheme getImDarkTheme() {
|
|
||||||
String string = getPreferences().getString("darktheme", "");
|
|
||||||
if (string.isEmpty()) {
|
|
||||||
return ImTheme.VKAPP_DARK;
|
|
||||||
}
|
|
||||||
if (string.equals("amoled")) {
|
|
||||||
return ImTheme.VKAPP_AMOLED;
|
|
||||||
}
|
|
||||||
return ImTheme.VKAPP_DARK;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static VKTheme getLightTheme() {
|
|
||||||
String string = getPreferences().getString("lighttheme", "");
|
|
||||||
if (string.isEmpty()) {
|
|
||||||
return VKTheme.DEFAULT_LIGHT;
|
|
||||||
}
|
|
||||||
return VKTheme.DEFAULT_LIGHT;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static ImTheme getImLightTheme() {
|
|
||||||
String string = getPreferences().getString("lighttheme", "");
|
|
||||||
if (string.isEmpty()) {
|
|
||||||
return ImTheme.VKAPP_LIGHT;
|
|
||||||
}
|
|
||||||
return ImTheme.VKAPP_LIGHT;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int getColorFromAttr(int attr) {
|
|
||||||
return VKThemeHelper.a(attr);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int getHeaderText() {
|
public static int getHeaderText() {
|
||||||
return VKThemeHelper.a(R.attr.header_text);
|
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 boolean isAndroidMonet() {
|
public static void setBarTheme(View getview) {
|
||||||
if (color_grishka()) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||||
return Build.VERSION.SDK_INT >= 31;
|
getview.setSystemUiVisibility(getNeededColorNavbar() | getNeededColorStatusbar());
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
} // Set white/dark statusbar/navbar icons
|
||||||
|
|
||||||
|
public static int getNeededColorStatusbar() {
|
||||||
|
return VKThemeHelper.d() && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S ? 8192 : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int getNeededColorNavbar() {
|
||||||
|
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.O ? VKThemeHelper.d() ? SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR : 0 : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int getNeededColorStatusbarFix() {
|
||||||
|
return VKThemeHelper.d() ? 8192 : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static VKTheme getDarkTheme() {
|
||||||
|
switch (getPrefsValue("darktheme")) {
|
||||||
|
case "amoled":
|
||||||
|
return VKTheme.AMOLED;
|
||||||
|
default:
|
||||||
|
return VKTheme.DARK;
|
||||||
|
}
|
||||||
|
} // Return needed theme for theme changer
|
||||||
|
|
||||||
|
public static ImTheme getImDarkTheme() {
|
||||||
|
switch (getPrefsValue("darktheme")) {
|
||||||
|
case "amoled":
|
||||||
|
return roundedmsgs() ? ImTheme.VKME_AMOLED : ImTheme.VKAPP_AMOLED;
|
||||||
|
default:
|
||||||
|
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 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) {
|
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) {
|
public static void themeMonetToolbar(ImageButton imageButton, Toolbar toolbar) {
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||||
@@ -124,20 +170,71 @@ public class Themes {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return new RecoloredDrawable(drawable, getAccentColor());
|
return new RecoloredDrawable(drawable, getAccentColor());
|
||||||
}
|
} // Recolor drawable to accent color
|
||||||
|
|
||||||
public static Drawable recolorDrawableToolbar(Drawable drawable) {
|
public static Drawable recolorDrawableToolbar(Drawable drawable) {
|
||||||
if (drawable == null) {
|
if (drawable == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return new RecoloredDrawable(drawable, getHeaderText());
|
return new RecoloredDrawable(drawable, getHeaderText());
|
||||||
}
|
} // Recolor toolbar drawable to accent color
|
||||||
|
|
||||||
public static ColorStateList recolorCSL(ColorStateList colorStateList) {
|
public static ColorStateList recolorCSL(ColorStateList colorStateList) {
|
||||||
if (colorStateList == null) {
|
if (colorStateList == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return ColorStateList.valueOf(getAccentColor());
|
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) {
|
public static int getColor(Context context, int i) {
|
||||||
@@ -147,25 +244,27 @@ public class Themes {
|
|||||||
if (Build.VERSION.SDK_INT >= 23) {
|
if (Build.VERSION.SDK_INT >= 23) {
|
||||||
return context.getColor(i);
|
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) {
|
public static int getColor2(int i) {
|
||||||
if (isColorRefAccented(i) && isAndroidMonet()) {
|
if (isColorRefAccented(i) && isAndroidMonet()) {
|
||||||
return getAccentColor();
|
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) {
|
public static void setNavbarColor(Window window, int i) {
|
||||||
if (navbar() && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
if (navbar() && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||||
window.setNavigationBarColor(getNavbarColor());
|
window.setNavigationBarColor(getTabbarBackground());
|
||||||
|
window.getDecorView().setSystemUiVisibility(getNeededColorNavbar());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String hex(int i) {
|
public static String hex(int i) {
|
||||||
return String.format("#%06X", Integer.valueOf(i & 16777215));
|
return String.format("#%06X", Integer.valueOf(i & 16777215));
|
||||||
}
|
} // Get color as hex string
|
||||||
|
|
||||||
public static int vk_sans_display_demibold() {
|
public static int vk_sans_display_demibold() {
|
||||||
return vksans() ? R.font.vk_sans_display_demibold : R.font.tt_commons_demi_bold;
|
return vksans() ? R.font.vk_sans_display_demibold : R.font.tt_commons_demi_bold;
|
||||||
}
|
}
|
||||||
@@ -194,14 +293,33 @@ public class Themes {
|
|||||||
return vksans() ? R.font.vk_sans_text_regular : R.font.roboto_regular;
|
return vksans() ? R.font.vk_sans_text_regular : R.font.roboto_regular;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int getNavbarColor() {
|
|
||||||
return VKThemeHelper.a(R.attr.tabbar_background);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String getBackgroundStickers() {
|
public static String getBackgroundStickers() {
|
||||||
if (isBGStickersEnabled()) {
|
if (isBGStickersEnabled()) {
|
||||||
return "images_with_background";
|
return "images_with_background";
|
||||||
}
|
}
|
||||||
return "images";
|
return "images";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void systemThemeChanger() {
|
||||||
|
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:
|
||||||
|
applyTheme(getLightTheme(), getImLightTheme());
|
||||||
|
break;
|
||||||
|
case Configuration.UI_MODE_NIGHT_NO:
|
||||||
|
applyTheme(getLightTheme(), getImLightTheme());
|
||||||
|
break;
|
||||||
|
case Configuration.UI_MODE_NIGHT_YES:
|
||||||
|
applyTheme(getDarkTheme(), getImDarkTheme());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
package ru.vtosters.lite.utils;
|
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.getContext;
|
||||||
import static ru.vtosters.lite.utils.Globals.getPreferences;
|
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.getColorFromAttr;
|
||||||
import static ru.vtosters.lite.utils.Themes.hex;
|
import static ru.vtosters.lite.utils.Themes.hex;
|
||||||
|
|
||||||
import android.util.Base64;
|
|
||||||
import android.webkit.WebView;
|
import android.webkit.WebView;
|
||||||
|
|
||||||
import com.vtosters.lite.R;
|
import com.vtosters.lite.R;
|
||||||
@@ -21,17 +22,13 @@ public class VKUIInjector {
|
|||||||
private static String loadedCSS = "";
|
private static String loadedCSS = "";
|
||||||
private static String loadedCSSAmoled = "";
|
private static String loadedCSSAmoled = "";
|
||||||
|
|
||||||
static {
|
|
||||||
}
|
|
||||||
|
|
||||||
public VKUIInjector() {
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String load(String str) {
|
private static String load(String str) {
|
||||||
try {
|
try {
|
||||||
InputStream open = getContext().getAssets().open(str);
|
InputStream open = getContext().getAssets().open(str);
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
|
|
||||||
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(open, StandardCharsets.UTF_8));
|
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(open, StandardCharsets.UTF_8));
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
String readLine = bufferedReader.readLine();
|
String readLine = bufferedReader.readLine();
|
||||||
if (readLine != null) {
|
if (readLine != null) {
|
||||||
@@ -41,7 +38,9 @@ public class VKUIInjector {
|
|||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
@@ -66,21 +65,27 @@ public class VKUIInjector {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void inject(WebView webView) {
|
public static void inject(WebView webView) {
|
||||||
String string = getPreferences().getString("darktheme", "");
|
String string = getPrefsValue("darktheme");
|
||||||
if (Preferences.BooleanTrue("VKUI_INJ")) {
|
|
||||||
|
if (getBoolValue("VKUI_INJ", true)) {
|
||||||
|
|
||||||
if (!isLoaded) {
|
if (!isLoaded) {
|
||||||
load();
|
load();
|
||||||
}
|
}
|
||||||
|
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
|
|
||||||
if (true/*Themes.isAccentedCache()*/) {
|
if (true/*Themes.isAccentedCache()*/) {
|
||||||
sb.append("\n\n");
|
sb.append("\n\n");
|
||||||
sb.append(loadedCSS);
|
sb.append(loadedCSS);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (string.equals("amoled")) {
|
if (string.equals("amoled")) {
|
||||||
sb.append("\n\n");
|
sb.append("\n\n");
|
||||||
sb.append(loadedCSSAmoled);
|
sb.append(loadedCSSAmoled);
|
||||||
}
|
}
|
||||||
inject(webView, Base64.encodeToString(sb.toString().getBytes(), 2));
|
|
||||||
|
inject(webView, encodeToString(sb.toString().getBytes(), 2));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
<resources>
|
<resources>
|
||||||
<string name="app_name">Vtoasters Shit</string>
|
<string name="app_name">VTosters Lite</string>
|
||||||
</resources>
|
</resources>
|
||||||
+1
-1
@@ -5,7 +5,7 @@ buildscript {
|
|||||||
mavenCentral()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:7.2.0-rc02'
|
classpath 'com.android.tools.build:gradle:7.2.1'
|
||||||
|
|
||||||
// NOTE: Do not place your application dependencies here; they belong
|
// NOTE: Do not place your application dependencies here; they belong
|
||||||
// in the individual module build.gradle files
|
// in the individual module build.gradle files
|
||||||
|
|||||||
+15
-1
@@ -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.useAndroidX=true
|
||||||
android.enableJetifier=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.
@@ -12,7 +12,7 @@
|
|||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<shape>
|
<shape>
|
||||||
<solid android:color="#665181b8" />
|
<solid android:color="?accent" />
|
||||||
<corners android:radius="4.0dip" />
|
<corners android:radius="4.0dip" />
|
||||||
</shape>
|
</shape>
|
||||||
</item>
|
</item>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
<ripple android:color="@color/overlay">
|
<ripple android:color="@color/overlay">
|
||||||
<item>
|
<item>
|
||||||
<shape>
|
<shape>
|
||||||
<solid android:color="?header_text" />
|
<solid android:color="?header_background" />
|
||||||
<corners android:radius="@dimen/vkui_button_corner_big_radius" />
|
<corners android:radius="@dimen/vkui_button_corner_big_radius" />
|
||||||
</shape>
|
</shape>
|
||||||
</item>
|
</item>
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<shape>
|
<shape>
|
||||||
<solid android:color="?header_text" />
|
<solid android:color="?header_background" />
|
||||||
<corners android:radius="@dimen/vkui_button_corner_big_radius" />
|
<corners android:radius="@dimen/vkui_button_corner_big_radius" />
|
||||||
</shape>
|
</shape>
|
||||||
</item>
|
</item>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
<gradient
|
<gradient
|
||||||
android:startColor="#fff8f8f8"
|
android:startColor="?background_content"
|
||||||
android:endColor="#ffffffff"
|
android:endColor="?background_content"
|
||||||
android:angle="90.0" />
|
android:angle="90.0" />
|
||||||
</shape>
|
</shape>
|
||||||
@@ -5,5 +5,5 @@
|
|||||||
android:topRightRadius="12.0dip"
|
android:topRightRadius="12.0dip"
|
||||||
android:bottomLeftRadius="12.0dip"
|
android:bottomLeftRadius="12.0dip"
|
||||||
android:bottomRightRadius="12.0dip" />
|
android:bottomRightRadius="12.0dip" />
|
||||||
<solid android:color="@color/blue_300" />
|
<solid android:color="?accent" />
|
||||||
</shape>
|
</shape>
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
<solid android:color="@android:color/transparent" />
|
<solid android:color="@android:color/transparent" />
|
||||||
<stroke
|
<stroke
|
||||||
android:width="0.5dip"
|
android:width="0.5dip"
|
||||||
android:color="@color/blue_300" />
|
android:color="?accent" />
|
||||||
<padding
|
<padding
|
||||||
android:left="0.0dip"
|
android:left="0.0dip"
|
||||||
android:top="0.0dip"
|
android:top="0.0dip"
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
<item android:state_enabled="false">
|
<item android:state_enabled="false">
|
||||||
<shape android:shape="rectangle">
|
<shape android:shape="rectangle">
|
||||||
<solid android:color="@color/blue_200_muted" />
|
<solid android:color="?accent" />
|
||||||
</shape>
|
</shape>
|
||||||
</item>
|
</item>
|
||||||
<item android:state_pressed="true">
|
<item android:state_pressed="true">
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<shape android:shape="rectangle">
|
<shape android:shape="rectangle">
|
||||||
<solid android:color="@color/blue_300" />
|
<solid android:color="?accent" />
|
||||||
</shape>
|
</shape>
|
||||||
</item>
|
</item>
|
||||||
</selector>
|
</selector>
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<shape android:shape="rectangle"
|
<shape android:shape="rectangle"
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
<solid android:color="#e5ebf0f5" />
|
<solid android:color="?im_history_incoming_background" />
|
||||||
<padding
|
<padding
|
||||||
android:left="6.0dip"
|
android:left="6.0dip"
|
||||||
android:top="2.2999878dip"
|
android:top="2.2999878dip"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<shape android:shape="rectangle"
|
<shape android:shape="rectangle"
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
<solid android:color="#e5ebf0f5" />
|
<solid android:color="?im_history_incoming_background" />
|
||||||
<padding
|
<padding
|
||||||
android:left="6.0dip"
|
android:left="6.0dip"
|
||||||
android:top="2.2999878dip"
|
android:top="2.2999878dip"
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<shape>
|
<shape>
|
||||||
<solid android:color="?header_text" />
|
<solid android:color="?header_background" />
|
||||||
<corners android:radius="@dimen/vkui_button_corner_big_radius" />
|
<corners android:radius="@dimen/vkui_button_corner_big_radius" />
|
||||||
</shape>
|
</shape>
|
||||||
</item>
|
</item>
|
||||||
|
|||||||
@@ -41,7 +41,7 @@
|
|||||||
android:layout_height="48.0dip"
|
android:layout_height="48.0dip"
|
||||||
app:tabBackground="@drawable/music_tab_bg"
|
app:tabBackground="@drawable/music_tab_bg"
|
||||||
app:tabGravity="center"
|
app:tabGravity="center"
|
||||||
app:tabIndicatorColor="@color/white" />
|
app:tabIndicatorColor="?header_tab_active_indicator" />
|
||||||
</android.support.design.widget.AppBarLayout>
|
</android.support.design.widget.AppBarLayout>
|
||||||
|
|
||||||
<android.support.v4.view.ViewPager
|
<android.support.v4.view.ViewPager
|
||||||
|
|||||||
@@ -78,7 +78,7 @@
|
|||||||
|
|
||||||
<com.vtosters.lite.ui.BadooTextView
|
<com.vtosters.lite.ui.BadooTextView
|
||||||
android:enabled="false"
|
android:enabled="false"
|
||||||
android:textColor="@color/light_blue_gray"
|
android:textColor="?accent"
|
||||||
android:id="@id/sticker_ok"
|
android:id="@id/sticker_ok"
|
||||||
android:paddingTop="0.0dip"
|
android:paddingTop="0.0dip"
|
||||||
android:paddingBottom="0.0dip"
|
android:paddingBottom="0.0dip"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<FrameLayout android:background="#fffafbfc"
|
<FrameLayout android:background="?tabbar_background"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
<com.vk.im.ui.views.span.SpanPressableTextView
|
<com.vk.im.ui.views.span.SpanPressableTextView
|
||||||
android:textSize="14.0sp"
|
android:textSize="14.0sp"
|
||||||
android:textColor="#ff71757a"
|
android:textColor="?text_primary"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
android:layout_gravity="center_vertical"
|
android:layout_gravity="center_vertical"
|
||||||
@@ -56,13 +56,13 @@
|
|||||||
android:layout_height="48.0dip"
|
android:layout_height="48.0dip"
|
||||||
android:src="@drawable/ic_cancel_24"
|
android:src="@drawable/ic_cancel_24"
|
||||||
android:scaleType="centerInside"
|
android:scaleType="centerInside"
|
||||||
android:tint="@color/light_gray"
|
android:tint="?text_primary"
|
||||||
android:contentDescription="@null" />
|
android:contentDescription="@null" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:textSize="14.0sp"
|
android:textSize="14.0sp"
|
||||||
android:textColor="#ff71757a"
|
android:textColor="?text_primary"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:layout_gravity="start|center"
|
android:layout_gravity="start|center"
|
||||||
android:id="@id/loading"
|
android:id="@id/loading"
|
||||||
@@ -77,7 +77,7 @@
|
|||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:textSize="14.0sp"
|
android:textSize="14.0sp"
|
||||||
android:textColor="#ff71757a"
|
android:textColor="?text_primary"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:layout_gravity="start|center"
|
android:layout_gravity="start|center"
|
||||||
android:id="@id/error"
|
android:id="@id/error"
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:id="@id/appkit_loader_content"
|
android:id="@id/appkit_loader_content"
|
||||||
android:background="#ffffffff"
|
android:background="?background_content"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="fill_parent">
|
android:layout_height="fill_parent">
|
||||||
|
|
||||||
|
|||||||
@@ -74,7 +74,7 @@
|
|||||||
|
|
||||||
<com.vtosters.lite.ui.BadooTextView
|
<com.vtosters.lite.ui.BadooTextView
|
||||||
android:enabled="false"
|
android:enabled="false"
|
||||||
android:textColor="@color/light_blue_gray"
|
android:textColor="?accent"
|
||||||
android:id="@id/sticker_ok"
|
android:id="@id/sticker_ok"
|
||||||
android:paddingTop="0.0dip"
|
android:paddingTop="0.0dip"
|
||||||
android:paddingBottom="0.0dip"
|
android:paddingBottom="0.0dip"
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
|
android:background="?background_content"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:padding="16.0dip"
|
android:padding="16.0dip"
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
android:id="@id/load_more_error"
|
android:id="@id/load_more_error"
|
||||||
android:padding="16.0dip"
|
android:padding="16.0dip"
|
||||||
|
android:background="?background_content"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="76.0dip">
|
android:layout_height="76.0dip">
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<FrameLayout android:layout_width="fill_parent"
|
<FrameLayout android:layout_width="fill_parent"
|
||||||
android:layout_height="fill_parent"
|
android:layout_height="fill_parent"
|
||||||
|
android:background="?background_content"
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
<ProgressBar
|
<ProgressBar
|
||||||
|
|||||||
@@ -42,7 +42,7 @@
|
|||||||
android:layout_width="16.0dip"
|
android:layout_width="16.0dip"
|
||||||
android:layout_height="16.0dip"
|
android:layout_height="16.0dip"
|
||||||
android:src="@drawable/ic_favorite_16"
|
android:src="@drawable/ic_favorite_16"
|
||||||
android:tint="@color/blue_200_muted"
|
android:tint="?accent"
|
||||||
android:layout_marginEnd="4.0dip"
|
android:layout_marginEnd="4.0dip"
|
||||||
app:layout_constraintBottom_toBottomOf="@id/game_title"
|
app:layout_constraintBottom_toBottomOf="@id/game_title"
|
||||||
app:layout_constraintEnd_toStartOf="@id/game_menu"
|
app:layout_constraintEnd_toStartOf="@id/game_menu"
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
android:layout_height="238.0dip"
|
android:layout_height="238.0dip"
|
||||||
app:contentScrim="?text_primary"
|
app:contentScrim="?text_primary"
|
||||||
app:layout_scrollFlags="exitUntilCollapsed|scroll"
|
app:layout_scrollFlags="exitUntilCollapsed|scroll"
|
||||||
app:statusBarScrim="?tabbar_background"
|
app:statusBarScrim="?header_background"
|
||||||
app:titleEnabled="false">
|
app:titleEnabled="false">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
|||||||
@@ -117,12 +117,12 @@
|
|||||||
android:layout_width="16.0dip"
|
android:layout_width="16.0dip"
|
||||||
android:layout_height="16.0dip"
|
android:layout_height="16.0dip"
|
||||||
android:src="@drawable/ic_longreads_black_16"
|
android:src="@drawable/ic_longreads_black_16"
|
||||||
android:tint="@color/black" />
|
android:tint="?header_text" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:textSize="12.0sp"
|
android:textSize="12.0sp"
|
||||||
android:textStyle="normal"
|
android:textStyle="normal"
|
||||||
android:textColor="@color/black"
|
android:textColor="?header_text"
|
||||||
android:layout_gravity="center_vertical"
|
android:layout_gravity="center_vertical"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
|||||||
@@ -100,12 +100,12 @@
|
|||||||
android:layout_width="16.0dip"
|
android:layout_width="16.0dip"
|
||||||
android:layout_height="16.0dip"
|
android:layout_height="16.0dip"
|
||||||
android:src="@drawable/ic_longreads_black_16"
|
android:src="@drawable/ic_longreads_black_16"
|
||||||
android:tint="@color/black" />
|
android:tint="?header_text" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:textSize="12.0sp"
|
android:textSize="12.0sp"
|
||||||
android:textStyle="normal"
|
android:textStyle="normal"
|
||||||
android:textColor="@color/black"
|
android:textColor="?header_text"
|
||||||
android:layout_gravity="center_vertical"
|
android:layout_gravity="center_vertical"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
|||||||
@@ -72,12 +72,12 @@
|
|||||||
android:layout_width="16.0dip"
|
android:layout_width="16.0dip"
|
||||||
android:layout_height="16.0dip"
|
android:layout_height="16.0dip"
|
||||||
android:src="@drawable/ic_longreads_black_16"
|
android:src="@drawable/ic_longreads_black_16"
|
||||||
android:tint="@color/black" />
|
android:tint="?header_text" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:textSize="12.0sp"
|
android:textSize="12.0sp"
|
||||||
android:textStyle="normal"
|
android:textStyle="normal"
|
||||||
android:textColor="@color/black"
|
android:textColor="?header_text"
|
||||||
android:layout_gravity="center_vertical"
|
android:layout_gravity="center_vertical"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
<android.support.design.widget.CoordinatorLayout
|
<android.support.design.widget.CoordinatorLayout
|
||||||
android:id="@id/appkit_loader_content"
|
android:id="@id/appkit_loader_content"
|
||||||
android:background="#ffffffff"
|
android:background="?background_content"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="fill_parent">
|
android:layout_height="fill_parent">
|
||||||
|
|
||||||
|
|||||||
@@ -59,7 +59,7 @@
|
|||||||
android:layout_marginTop="4.0dip"
|
android:layout_marginTop="4.0dip"
|
||||||
android:src="@drawable/ic_more_vertical_24"
|
android:src="@drawable/ic_more_vertical_24"
|
||||||
android:scaleType="center"
|
android:scaleType="center"
|
||||||
android:tint="@color/fave_action_gray"
|
android:tint="?text_primary"
|
||||||
android:layout_marginEnd="4.0dip"
|
android:layout_marginEnd="4.0dip"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
@@ -115,7 +115,7 @@
|
|||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:textSize="13.0sp"
|
android:textSize="13.0sp"
|
||||||
android:textColor="@color/gray_400"
|
android:textColor="?text_primary"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:gravity="start|center"
|
android:gravity="start|center"
|
||||||
android:id="@id/tv_subtitle"
|
android:id="@id/tv_subtitle"
|
||||||
@@ -136,12 +136,12 @@
|
|||||||
app:layout_constraintHorizontal_bias="0.0"
|
app:layout_constraintHorizontal_bias="0.0"
|
||||||
app:layout_constraintStart_toEndOf="@id/iv_fave_image"
|
app:layout_constraintStart_toEndOf="@id/iv_fave_image"
|
||||||
app:layout_constraintTop_toBottomOf="@id/tv_subtitle_container"
|
app:layout_constraintTop_toBottomOf="@id/tv_subtitle_container"
|
||||||
app:separatorTextColor="@color/gray_400"
|
app:separatorTextColor="?text_primary"
|
||||||
app:singleLineMode="true"
|
app:singleLineMode="true"
|
||||||
app:tagFontFamily="@string/font_family_regular"
|
app:tagFontFamily="@string/font_family_regular"
|
||||||
app:tagHorizontalPadding="2.0dip"
|
app:tagHorizontalPadding="2.0dip"
|
||||||
app:tagLineSpacingExtra="5.0sp"
|
app:tagLineSpacingExtra="5.0sp"
|
||||||
app:tagTextColor="@color/gray_400"
|
app:tagTextColor="?text_primary"
|
||||||
app:tagTextSize="13.0sp"
|
app:tagTextSize="13.0sp"
|
||||||
app:tagVerticalPadding="1.0dip"
|
app:tagVerticalPadding="1.0dip"
|
||||||
app:verticalSpacing="0.0dip" />
|
app:verticalSpacing="0.0dip" />
|
||||||
@@ -151,7 +151,7 @@
|
|||||||
android:layout_width="12.0dip"
|
android:layout_width="12.0dip"
|
||||||
android:layout_height="12.0dip"
|
android:layout_height="12.0dip"
|
||||||
android:src="@drawable/ic_tag_12"
|
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_constraintBottom_toBottomOf="@id/ft_tag_group"
|
||||||
app:layout_constraintStart_toStartOf="@id/tv_title"
|
app:layout_constraintStart_toStartOf="@id/tv_title"
|
||||||
app:layout_constraintTop_toTopOf="@id/ft_tag_group" />
|
app:layout_constraintTop_toTopOf="@id/ft_tag_group" />
|
||||||
|
|||||||
@@ -1,11 +1,14 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<FrameLayout android:orientation="vertical"
|
<FrameLayout android:orientation="vertical"
|
||||||
|
android:background="?background_page"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="fill_parent"
|
android:layout_height="fill_parent"
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:id="@id/cardContainer"
|
android:id="@id/cardContainer"
|
||||||
|
android:background="?background_content"
|
||||||
|
android:tint="?background_content"
|
||||||
android:paddingTop="8.0dip"
|
android:paddingTop="8.0dip"
|
||||||
android:paddingBottom="22.0dip"
|
android:paddingBottom="22.0dip"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
@@ -21,6 +24,7 @@
|
|||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:paddingLeft="@dimen/post_side_padding"
|
android:paddingLeft="@dimen/post_side_padding"
|
||||||
|
android:background="?background_content"
|
||||||
android:paddingRight="@dimen/post_side_padding"
|
android:paddingRight="@dimen/post_side_padding"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:id="@id/filter_block"
|
android:id="@id/filter_block"
|
||||||
android:background="#fff7f7f7"
|
android:background="?background_content"
|
||||||
android:padding="4.0dip"
|
android:padding="4.0dip"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content">
|
||||||
@@ -37,12 +37,14 @@
|
|||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
|
android:background="?background_content"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="fill_parent"
|
android:layout_height="fill_parent"
|
||||||
android:layout_below="@id/filter_block">
|
android:layout_below="@id/filter_block">
|
||||||
|
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:id="@id/filter_price"
|
android:id="@id/filter_price"
|
||||||
|
android:background="?background_content"
|
||||||
android:paddingLeft="@dimen/post_side_padding"
|
android:paddingLeft="@dimen/post_side_padding"
|
||||||
android:paddingTop="16.0dip"
|
android:paddingTop="16.0dip"
|
||||||
android:paddingRight="@dimen/post_side_padding"
|
android:paddingRight="@dimen/post_side_padding"
|
||||||
@@ -55,6 +57,7 @@
|
|||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
android:id="@id/filter_price_badge"
|
android:id="@id/filter_price_badge"
|
||||||
android:background="@drawable/highlight_filter_badge"
|
android:background="@drawable/highlight_filter_badge"
|
||||||
|
android:backgroundTint="?background_page"
|
||||||
android:paddingLeft="8.0dip"
|
android:paddingLeft="8.0dip"
|
||||||
android:clickable="true"
|
android:clickable="true"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
@@ -63,7 +66,7 @@
|
|||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:textSize="14.0dip"
|
android:textSize="14.0dip"
|
||||||
android:textColor="#ff51647a"
|
android:textColor="?text_primary"
|
||||||
android:id="@id/price_filter_text"
|
android:id="@id/price_filter_text"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content" />
|
android:layout_height="wrap_content" />
|
||||||
|
|||||||
@@ -55,7 +55,7 @@
|
|||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:textSize="17.0dip"
|
android:textSize="17.0dip"
|
||||||
android:textColor="?text_primary"
|
android:textColor="@color/white"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:gravity="center_horizontal"
|
android:gravity="center_horizontal"
|
||||||
android:id="@id/playlist_title"
|
android:id="@id/playlist_title"
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
<TextView
|
<TextView
|
||||||
android:textSize="14.0dip"
|
android:textSize="14.0dip"
|
||||||
android:textStyle="normal"
|
android:textStyle="normal"
|
||||||
android:textColor="?text_primary"
|
android:textColor="?header_text"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
android:id="@id/playlist_title"
|
android:id="@id/playlist_title"
|
||||||
|
|||||||
@@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:textSize="17.0dip"
|
android:textSize="17.0dip"
|
||||||
android:textColor="?text_primary"
|
android:textColor="?header_text"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:id="@id/playlist_title"
|
android:id="@id/playlist_title"
|
||||||
android:layout_width="0.0dip"
|
android:layout_width="0.0dip"
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
android:minHeight="48.0dip"
|
android:minHeight="48.0dip"
|
||||||
app:tabBackground="@drawable/music_tab_bg"
|
app:tabBackground="@drawable/music_tab_bg"
|
||||||
app:tabGravity="fill"
|
app:tabGravity="fill"
|
||||||
app:tabIndicatorColor="@color/white"
|
app:tabIndicatorColor="?header_tab_active_indicator"
|
||||||
app:tabMaxWidth="0.0dip"
|
app:tabMaxWidth="0.0dip"
|
||||||
app:tabMode="fixed" />
|
app:tabMode="fixed" />
|
||||||
</android.support.design.widget.AppBarLayout>
|
</android.support.design.widget.AppBarLayout>
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:id="@id/appkit_loader_content"
|
android:id="@id/appkit_loader_content"
|
||||||
android:background="#ffffffff"
|
android:background="?background_content"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="fill_parent">
|
android:layout_height="fill_parent">
|
||||||
|
|
||||||
|
|||||||
@@ -83,7 +83,7 @@
|
|||||||
|
|
||||||
<com.vtosters.lite.ui.BadooTextView
|
<com.vtosters.lite.ui.BadooTextView
|
||||||
android:enabled="false"
|
android:enabled="false"
|
||||||
android:textColor="@color/light_blue_gray"
|
android:textColor="?accent"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:id="@id/sticker_ok"
|
android:id="@id/sticker_ok"
|
||||||
app:typeface="Medium"
|
app:typeface="Medium"
|
||||||
|
|||||||
@@ -79,7 +79,7 @@
|
|||||||
|
|
||||||
<com.vtosters.lite.ui.BadooTextView
|
<com.vtosters.lite.ui.BadooTextView
|
||||||
android:enabled="false"
|
android:enabled="false"
|
||||||
android:textColor="@color/light_blue_gray"
|
android:textColor="?accent"
|
||||||
android:id="@id/sticker_ok"
|
android:id="@id/sticker_ok"
|
||||||
android:paddingTop="4.5dip"
|
android:paddingTop="4.5dip"
|
||||||
android:paddingBottom="8.5dip"
|
android:paddingBottom="8.5dip"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?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_width="fill_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:minHeight="48.0dip"
|
android:minHeight="48.0dip"
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
android:layout_height="24.0dip"
|
android:layout_height="24.0dip"
|
||||||
android:layout_marginTop="12.0dip"
|
android:layout_marginTop="12.0dip"
|
||||||
android:src="@drawable/ic_tag_24"
|
android:src="@drawable/ic_tag_24"
|
||||||
android:tint="@color/blue_200_muted"
|
android:tint="?text_primary"
|
||||||
android:layout_marginStart="16.0dip" />
|
android:layout_marginStart="16.0dip" />
|
||||||
|
|
||||||
<com.vk.fave.views.FaveTagViewGroup
|
<com.vk.fave.views.FaveTagViewGroup
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
android:layout_marginBottom="8.0dip"
|
android:layout_marginBottom="8.0dip"
|
||||||
android:layout_marginStart="52.0dip"
|
android:layout_marginStart="52.0dip"
|
||||||
android:layout_marginEnd="8.0dip"
|
android:layout_marginEnd="8.0dip"
|
||||||
app:separatorTextColor="@color/gray_300"
|
app:separatorTextColor="?text_primary"
|
||||||
app:separatorWidth="6.0dip"
|
app:separatorWidth="6.0dip"
|
||||||
app:tagBackground="@drawable/highlight_radius_4"
|
app:tagBackground="@drawable/highlight_radius_4"
|
||||||
app:tagFontFamily="@string/font_family_regular"
|
app:tagFontFamily="@string/font_family_regular"
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@id/search_voice"
|
android:id="@id/search_voice"
|
||||||
android:background="?accent"
|
android:background="?header_background"
|
||||||
android:layout_width="48.0dip"
|
android:layout_width="48.0dip"
|
||||||
android:layout_height="48.0dip"
|
android:layout_height="48.0dip"
|
||||||
android:src="@drawable/ic_voice_24"
|
android:src="@drawable/ic_voice_24"
|
||||||
@@ -42,7 +42,7 @@
|
|||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@id/search_done"
|
android:id="@id/search_done"
|
||||||
android:background="?accent"
|
android:background="?header_background"
|
||||||
android:layout_width="48.0dip"
|
android:layout_width="48.0dip"
|
||||||
android:layout_height="48.0dip"
|
android:layout_height="48.0dip"
|
||||||
android:src="@drawable/ic_check_24"
|
android:src="@drawable/ic_check_24"
|
||||||
|
|||||||
@@ -20,11 +20,11 @@
|
|||||||
android:layout_height="48.0dip"
|
android:layout_height="48.0dip"
|
||||||
android:src="@drawable/ic_back_24"
|
android:src="@drawable/ic_back_24"
|
||||||
android:scaleType="centerInside"
|
android:scaleType="centerInside"
|
||||||
android:tint="#ff909499" />
|
android:tint="?text_primary" />
|
||||||
|
|
||||||
<com.vk.core.view.NoMenuEditText
|
<com.vk.core.view.NoMenuEditText
|
||||||
android:textSize="16.0dip"
|
android:textSize="16.0dip"
|
||||||
android:textColor="#ff000000"
|
android:textColor="?header_text"
|
||||||
android:textColorHint="#ffaaaeb3"
|
android:textColorHint="#ffaaaeb3"
|
||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
android:id="@id/query"
|
android:id="@id/query"
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:textSize="16.0dip"
|
android:textSize="16.0dip"
|
||||||
android:textColor="#ff000000"
|
android:textColor="?header_text"
|
||||||
android:textColorHint="#ffaaaeb3"
|
android:textColorHint="#ffaaaeb3"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
@@ -74,6 +74,6 @@
|
|||||||
android:layout_height="40.0dip"
|
android:layout_height="40.0dip"
|
||||||
android:src="@drawable/ic_cancel_24"
|
android:src="@drawable/ic_cancel_24"
|
||||||
android:scaleType="centerInside"
|
android:scaleType="centerInside"
|
||||||
android:tint="#ff909499" />
|
android:tint="?header_text" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</merge>
|
</merge>
|
||||||
@@ -60,7 +60,7 @@
|
|||||||
android:layout_width="24.0dip"
|
android:layout_width="24.0dip"
|
||||||
android:layout_height="24.0dip"
|
android:layout_height="24.0dip"
|
||||||
android:src="@drawable/ic_share_outline_24"
|
android:src="@drawable/ic_share_outline_24"
|
||||||
android:tint="@color/light_blue" />
|
android:tint="?accent" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/vkim_share"
|
android:text="@string/vkim_share"
|
||||||
@@ -81,7 +81,7 @@
|
|||||||
android:layout_width="24.0dip"
|
android:layout_width="24.0dip"
|
||||||
android:layout_height="24.0dip"
|
android:layout_height="24.0dip"
|
||||||
android:src="@drawable/vkim_ic_msg_copy"
|
android:src="@drawable/vkim_ic_msg_copy"
|
||||||
android:tint="@color/light_blue" />
|
android:tint="?accent" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/vkim_copy_link"
|
android:text="@string/vkim_copy_link"
|
||||||
@@ -102,7 +102,7 @@
|
|||||||
android:layout_width="24.0dip"
|
android:layout_width="24.0dip"
|
||||||
android:layout_height="24.0dip"
|
android:layout_height="24.0dip"
|
||||||
android:src="@drawable/ic_do_not_disturb_24"
|
android:src="@drawable/ic_do_not_disturb_24"
|
||||||
android:tint="@color/light_blue" />
|
android:tint="?accent" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/vkim_chat_link_invalidate"
|
android:text="@string/vkim_chat_link_invalidate"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<FrameLayout android:background="#fffafbfc"
|
<FrameLayout android:background="?tabbar_background"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
@@ -64,7 +64,7 @@
|
|||||||
android:layout_marginTop="4.0dip"
|
android:layout_marginTop="4.0dip"
|
||||||
android:src="@drawable/ic_cancel_24"
|
android:src="@drawable/ic_cancel_24"
|
||||||
android:scaleType="centerInside"
|
android:scaleType="centerInside"
|
||||||
android:tint="@color/light_gray"
|
android:tint="?text_primary"
|
||||||
android:contentDescription="@null" />
|
android:contentDescription="@null" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
<item
|
<item
|
||||||
android:icon="@drawable/ic_settings_24"
|
android:icon="@drawable/ic_settings_24"
|
||||||
android:id="@id/settings"
|
android:id="@id/settings"
|
||||||
|
app:menuTint="?header_text"
|
||||||
android:title="@string/menu_settings"
|
android:title="@string/menu_settings"
|
||||||
android:showAsAction="always"
|
android:showAsAction="always"
|
||||||
app:showAsAction="always" />
|
app:showAsAction="always" />
|
||||||
|
|||||||
@@ -445,7 +445,7 @@
|
|||||||
<item>Украинский</item>
|
<item>Украинский</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
<string-array name="start">
|
<string-array name="start">
|
||||||
<item>Стандартное</item>
|
<item>По умолчанию</item>
|
||||||
<item>Новости</item>
|
<item>Новости</item>
|
||||||
<item>Диалоги</item>
|
<item>Диалоги</item>
|
||||||
<item>Меню</item>
|
<item>Меню</item>
|
||||||
@@ -505,4 +505,10 @@
|
|||||||
<item>🗑</item>
|
<item>🗑</item>
|
||||||
<item>❌</item>
|
<item>❌</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
<string-array name="dateformat_value">
|
||||||
|
<item>По умолчанию</item>
|
||||||
|
<item>15 апреля в 18:42</item>
|
||||||
|
<item>15 апреля в 18:42:28</item>
|
||||||
|
<item>15 апреля 2022 в 18:42:28</item>
|
||||||
|
</string-array>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
+196
-11
@@ -1773,7 +1773,7 @@
|
|||||||
без ограничений"</string>
|
без ограничений"</string>
|
||||||
<string name="music_subs_try_free">Попробовать</string>
|
<string name="music_subs_try_free">Попробовать</string>
|
||||||
<string name="music_subscription_agreement">Условия использования</string>
|
<string name="music_subscription_agreement">Условия использования</string>
|
||||||
<string name="music_subscription_exist">У Вас уже оформлена подписка на Музыку</string>
|
<string name="music_subscription_exist">Данный трэк нельзя воспроизвести без настоящей подписки на музыку</string>
|
||||||
<string name="music_subscription_label_payment_type">Cпособ оплаты</string>
|
<string name="music_subscription_label_payment_type">Cпособ оплаты</string>
|
||||||
<string name="music_subscription_label_status">Статус подписки</string>
|
<string name="music_subscription_label_status">Статус подписки</string>
|
||||||
<string name="music_subscription_purchase_btn_title">Оформить за %1$s в месяц</string>
|
<string name="music_subscription_purchase_btn_title">Оформить за %1$s в месяц</string>
|
||||||
@@ -4064,21 +4064,23 @@
|
|||||||
<string name="vtlnavbar">Покрасить панель навигации</string>
|
<string name="vtlnavbar">Покрасить панель навигации</string>
|
||||||
<string name="donate">Помочь проекту</string>
|
<string name="donate">Помочь проекту</string>
|
||||||
<string name="fulltime">dd MMMM yyyy в HH:mm:ss</string>
|
<string name="fulltime">dd MMMM yyyy в HH:mm:ss</string>
|
||||||
|
<string name="fulltime2">dd MMMM в HH:mm:ss</string>
|
||||||
|
<string name="fulltime3">dd MMMM в HH:mm</string>
|
||||||
<string name="vtlsfiltershort">"Фильтр коротких ссылок "</string>
|
<string name="vtlsfiltershort">"Фильтр коротких ссылок "</string>
|
||||||
<string name="vtlsfiltershortsummary">"Фильтр для блокировки постов с короткими ссылками, такими как bit.ly или cutt.ly
|
<string name="vtlsfiltershortsummary">"Фильтр для блокировки постов с короткими ссылками, такими как bit.ly или cutt.ly
|
||||||
Этот фильтр не затрагивает ссылки vk.cc"</string>
|
Этот фильтр не затрагивает ссылки vk.cc"</string>
|
||||||
<string name="vtlsfilterrefs">Фильтр реферальных ссылок</string>
|
<string name="vtlsfilterrefs">Фильтр реферальных ссылок</string>
|
||||||
<string name="vtlsfilterrefssummary">Фильтр для блокировки постов с реферальными ссылками, такими как ali.pub и тд</string>
|
<string name="vtlsfilterrefssummary">Фильтр для блокировки постов с реферальными ссылками, такими как ali.pub и тд</string>
|
||||||
<string name="vtlrecommend">Рекомендации</string>
|
<string name="vtlrecommend">Рекомендации</string>
|
||||||
<string name="vtlrecommendfriend">Рекомендации друзей</string>
|
<string name="vtlrecommendfriend">Отключить рекомендации друзей</string>
|
||||||
<string name="vtlrecommendauthor">Рекомендации авторов</string>
|
<string name="vtlrecommendauthor">Отключить рекомендации авторов</string>
|
||||||
<string name="vtlrecommendfriendpost">Рекомендации постов друзей</string>
|
<string name="vtlrecommendfriendpost">Отключить рекомендации постов друзей</string>
|
||||||
<string name="BGStickers">Обводка стикеров</string>
|
<string name="BGStickers">Обводка стикеров</string>
|
||||||
<string name="vtlrecommendmarksummary">Посты по типу Вам может быть интересно и тд</string>
|
<string name="vtlrecommendmarksummary">Посты по типу Вам может быть интересно и тд</string>
|
||||||
<string name="vtlfeedwork">Прочее</string>
|
<string name="vtlfeedwork">Прочее</string>
|
||||||
<string name="vtlfeedreload">Автоматическое обновление ленты</string>
|
<string name="vtlfeedreload">Автоматическое обновление ленты</string>
|
||||||
<string name="vtlfeedcache">Кэшировать посты в ленте</string>
|
<string name="vtlfeedcache">Кэшировать посты в ленте</string>
|
||||||
<string name="vtlrecommendmark">Посты с пометкой рекомендовано</string>
|
<string name="vtlrecommendmark">Отключить посты с пометкой рекомендовано</string>
|
||||||
<string name="vtlmsgtails">Хвосты сообщений</string>
|
<string name="vtlmsgtails">Хвосты сообщений</string>
|
||||||
<string name="vtlmsgflat">Плоские сообщения</string>
|
<string name="vtlmsgflat">Плоские сообщения</string>
|
||||||
<string name="vtlupdmsg">Обновить</string>
|
<string name="vtlupdmsg">Обновить</string>
|
||||||
@@ -4102,7 +4104,7 @@
|
|||||||
<string name="alteremoji">Альтернативный дизайн меню с эмодзи</string>
|
<string name="alteremoji">Альтернативный дизайн меню с эмодзи</string>
|
||||||
<string name="alteremojisum">Альтернативный вид выбора эмодзи и стикеров в миниатюрном меню</string>
|
<string name="alteremojisum">Альтернативный вид выбора эмодзи и стикеров в миниатюрном меню</string>
|
||||||
<string name="altnewsfeed">Альтернативный дизайн ленты</string>
|
<string name="altnewsfeed">Альтернативный дизайн ленты</string>
|
||||||
<string name="altnewsfeedsum">Дизайн с новыми вкладками в ленте, а также замена поиска по умолчанию на улучшенный (в нижнем меню)</string>
|
<string name="altnewsfeedsum">Дизайн с динамическими вкладками в ленте</string>
|
||||||
<string name="applicationrestart">Перезапустить приложение</string>
|
<string name="applicationrestart">Перезапустить приложение</string>
|
||||||
<string name="benchapi">Бенчмарк апи</string>
|
<string name="benchapi">Бенчмарк апи</string>
|
||||||
<string name="benchapisummary">Тестирование скорости отправки запросов. Бесполезная функция для всех, кроме разработчиков ВКонтакте</string>
|
<string name="benchapisummary">Тестирование скорости отправки запросов. Бесполезная функция для всех, кроме разработчиков ВКонтакте</string>
|
||||||
@@ -4118,7 +4120,7 @@
|
|||||||
<string name="ctypedisabled">Не установлено</string>
|
<string name="ctypedisabled">Не установлено</string>
|
||||||
<string name="ctypesocks">Socks</string>
|
<string name="ctypesocks">Socks</string>
|
||||||
<string name="dnr">Нечиталка</string>
|
<string name="dnr">Нечиталка</string>
|
||||||
<string name="dns">Отправка статуса просмотра истории</string>
|
<string name="dns">Статус просмотра/прочтения историй</string>
|
||||||
<string name="dnw">Неписалка</string>
|
<string name="dnw">Неписалка</string>
|
||||||
<string name="docknumbers">Счётчики в докбаре</string>
|
<string name="docknumbers">Счётчики в докбаре</string>
|
||||||
<string name="docknumberssum">Отключение не работает в интерфейсе для планшетов</string>
|
<string name="docknumberssum">Отключение не работает в интерфейсе для планшетов</string>
|
||||||
@@ -4151,7 +4153,7 @@
|
|||||||
Показать полностью..."</string>
|
Показать полностью..."</string>
|
||||||
<string name="interfacenewsfeed">Лента</string>
|
<string name="interfacenewsfeed">Лента</string>
|
||||||
<string name="interfacenewsfeedswipe">Боковая камера в новостях</string>
|
<string name="interfacenewsfeedswipe">Боковая камера в новостях</string>
|
||||||
<string name="interfacenewsfeedswipesum">Работает только со стандартным дизайном новостей</string>
|
<string name="interfacenewsfeedswipesum">Работает только с классическим дизайном новостей</string>
|
||||||
<string name="interfacestartfr">Стандартный стартовый фрагмент</string>
|
<string name="interfacestartfr">Стандартный стартовый фрагмент</string>
|
||||||
<string name="interfacestartfrsum">Выберите стартовый фрагмент</string>
|
<string name="interfacestartfrsum">Выберите стартовый фрагмент</string>
|
||||||
<string name="interfacevideo">Видео</string>
|
<string name="interfacevideo">Видео</string>
|
||||||
@@ -4204,7 +4206,8 @@
|
|||||||
<string name="shitposting">Однотипные новости</string>
|
<string name="shitposting">Однотипные новости</string>
|
||||||
<string name="shitpostingsummary">Фильтр очистки постов с РФ и действиями связанными на Украине</string>
|
<string name="shitpostingsummary">Фильтр очистки постов с РФ и действиями связанными на Украине</string>
|
||||||
<string name="showstories">Показывать истории</string>
|
<string name="showstories">Показывать истории</string>
|
||||||
<string name="showstoriessum">Показывать истории в верхней части ленты</string>
|
<string name="showstoriessum">Блок истории в верхней части ленты</string>
|
||||||
|
<string name="donaterecomm">Отключить рекомендации о донате</string>
|
||||||
<string name="showvtfire">Показывать специальные верификации</string>
|
<string name="showvtfire">Показывать специальные верификации</string>
|
||||||
<string name="showvtverify">Показывать верификации</string>
|
<string name="showvtverify">Показывать верификации</string>
|
||||||
<string name="sprefsctype">Тип подключения</string>
|
<string name="sprefsctype">Тип подключения</string>
|
||||||
@@ -4242,10 +4245,10 @@
|
|||||||
<string name="useproxy">Вариант прокси</string>
|
<string name="useproxy">Вариант прокси</string>
|
||||||
<string name="useproxyinfo">Информация об использовании прокси</string>
|
<string name="useproxyinfo">Информация об использовании прокси</string>
|
||||||
<string name="useproxysum">Выберите вариант прокси</string>
|
<string name="useproxysum">Выберите вариант прокси</string>
|
||||||
<string name="vkuiinj">Покраска VKUI</string>
|
<string name="vkuiinj">Покраска веб страниц</string>
|
||||||
<string name="vtlawayphpsummary">Слежка за пользователем для персонализации рекламы. Также проверка ссылок на блэклист от ВКонтакте и антивирус</string>
|
<string name="vtlawayphpsummary">Слежка за пользователем для персонализации рекламы. Также проверка ссылок на блэклист от ВКонтакте и антивирус</string>
|
||||||
<string name="vtloffline">Отправка статуса онлайн</string>
|
<string name="vtloffline">Отправка статуса онлайн</string>
|
||||||
<string name="vtloffline2">Принудительно отправлять офлайн запросы</string>
|
<string name="vtloffline2">Принудительный офлайн</string>
|
||||||
<string name="vtloffline2summary">"Работает только при отключении отправки статуса онлайн
|
<string name="vtloffline2summary">"Работает только при отключении отправки статуса онлайн
|
||||||
Отправляет мгновенно в офлайн после отправки сообщений и прочих методов апи которые отправляют в онлайн
|
Отправляет мгновенно в офлайн после отправки сообщений и прочих методов апи которые отправляют в онлайн
|
||||||
|
|
||||||
@@ -4256,7 +4259,189 @@
|
|||||||
<string name="vtverifyinfo">Что такое верификация VTosters?</string>
|
<string name="vtverifyinfo">Что такое верификация VTosters?</string>
|
||||||
<string name="vtverifyinfosum">Это наша благодарность за поддержку проекта</string>
|
<string name="vtverifyinfosum">Это наша благодарность за поддержку проекта</string>
|
||||||
<string name="vtlota">Обновления</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_ON">Включить нечиталку</string>
|
||||||
<string name="DNR_OFF">Отключить нечиталку</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="dateformat">Выберите тип показа дат</string>
|
||||||
|
|
||||||
<string name="empty_text" />
|
<string name="empty_text" />
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -1638,7 +1638,7 @@
|
|||||||
без обмежень"</string>
|
без обмежень"</string>
|
||||||
<string name="music_subs_try_free">Спробувати</string>
|
<string name="music_subs_try_free">Спробувати</string>
|
||||||
<string name="music_subscription_agreement">Умови використання</string>
|
<string name="music_subscription_agreement">Умови використання</string>
|
||||||
<string name="music_subscription_exist">У Вас уже оформлена підписка на Музику</string>
|
<string name="music_subscription_exist">Данный трэк нельзя воспроизвести без настоящей подписки на музыку</string>
|
||||||
<string name="music_subscription_label_payment_type">Спосіб оплати</string>
|
<string name="music_subscription_label_payment_type">Спосіб оплати</string>
|
||||||
<string name="music_subscription_label_status">Статус підписки</string>
|
<string name="music_subscription_label_status">Статус підписки</string>
|
||||||
<string name="music_subscription_purchase_btn_title">Оформити за %1$s в місяць</string>
|
<string name="music_subscription_purchase_btn_title">Оформити за %1$s в місяць</string>
|
||||||
|
|||||||
+1427
-94
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user