Merge pull request #555 from iNotFlying/vtl-remaster && update from vtl-remaster branch
Remove dead VK code, update colors.xml
This commit is contained in:
@@ -4,11 +4,15 @@ on:
|
||||
push:
|
||||
branches:
|
||||
- '*'
|
||||
paths-ignore:
|
||||
- '**.md'
|
||||
pull_request:
|
||||
types:
|
||||
- opened
|
||||
- synchronize
|
||||
- reopened
|
||||
paths-ignore:
|
||||
- '**.md'
|
||||
|
||||
workflow_dispatch:
|
||||
|
||||
|
||||
@@ -1,99 +1,189 @@
|
||||
# VTosters Lite
|
||||
<p align="center">
|
||||
<a href="https://vtosters.app/">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://cdn.discordapp.com/attachments/918864618116481029/1002916719595106344/VT_Fill_Logo_Dark.svg">
|
||||
<img src="https://cdn.discordapp.com/attachments/918864618116481029/1002916719381201036/VT_Fill_Logo_Light.svg">
|
||||
</picture>
|
||||
</a>
|
||||
<br>
|
||||
<br>
|
||||
<a href="https://t.me/s/vtosters">
|
||||
<img src="https://img.shields.io/badge/-Telegram-blue?style=for-the-badge&logo=telegram&color=2AABEE"/>
|
||||
</a>
|
||||
<a href="https://vk.com/vtosters_official">
|
||||
<img src="https://img.shields.io/badge/-VK-blue?style=for-the-badge&logo=vk&color=0077FF"/>
|
||||
</a>
|
||||
<a href="https://discord.gg/j9CAt3uYXj">
|
||||
<img src="https://img.shields.io/badge/-Discord-blue?style=for-the-badge&logo=discord&color=5865F2&logoColor=FFFFFF"/>
|
||||
</a>
|
||||
<br>
|
||||
<a href="https://github.com/vtosters/lite/issues">
|
||||
<img src="https://img.shields.io/github/issues/vtosters/lite?style=flat-square"/>
|
||||
</a>
|
||||
<a href="https://github.com/vtosters/lite/network/members">
|
||||
<img src="https://img.shields.io/github/forks/vtosters/lite?style=flat-square"/>
|
||||
</a>
|
||||
<a href="https://github.com/vtosters/lite/stargazers">
|
||||
<img src="https://img.shields.io/github/stars/vtosters/lite?style=flat-square"/>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
ВТостерс Lite - это модифицированный клиент (декомпиляция) официального ВКонтакте основанный на версии 5.56.1 (4838)
|
||||
**ВТостерс Lite** — это модифицированный клиент официального ВКонтакте, основанный на версии **5.56.1 (4838)**
|
||||
|
||||
О найденных багах сообщать в [issues](https://github.com/vtosters/lite/issues), просьба не плодить дубликаты, воспользуйтесь поиском перед созданием нового issue
|
||||
* Вы можете предложить свои идеи/сообщить о багах в [Issues](https://github.com/vtosters/lite/issues)
|
||||
|
||||
Скачивать самые актуальные версии можно с [Actions](https://github.com/vtosters/lite/actions)
|
||||
* Скачивать самые актуальные версии можно с [Actions](https://github.com/vtosters/lite/actions)
|
||||
<sup><sub>(могут содержать баги)</sub></sup>
|
||||
|
||||
Стабильные сборки находятся в [Releases](https://github.com/vtosters/lite/releases)
|
||||
* Стабильные сборки находятся в [Releases](https://github.com/vtosters/lite/releases)
|
||||
|
||||
Зеркало на нашем [Git](https://git.maki.su/gdlbo/lite)
|
||||
Зеркало на нашем [<img src="https://git.maki.su/assets/img/logo.svg" align="center" width="20" height="20"/> Git](https://git.maki.su/gdlbo/lite)
|
||||
|
||||
Зеркало на [Github](https://github.com/vtosters/lite)
|
||||
### Быстрая навигация
|
||||
|
||||
* [Функционал](#функционал)
|
||||
* [Отладка приложения](#отладка-приложения)
|
||||
* [Разработка](#разработка)
|
||||
* [Всё необходимое для сборки и компиляции](#всё-необходимое-для-сборки-и-компиляции)
|
||||
* [Необходимые зависимости](#необходимые-зависимости)
|
||||
* [Linux/macOS](#linuxmacos)
|
||||
* [Windows](#windows)
|
||||
|
||||
|
||||
## Функционал
|
||||
|
||||
* Лента
|
||||
* Блокировка рекламы в ленте
|
||||
* Блокировка постов через фильтры
|
||||
* Возможность отключить рекомендации от ВК
|
||||
* Редактор докбара
|
||||
* Редактор элементов Superapp
|
||||
* Медиа контент
|
||||
* Округление дат
|
||||
* 1 января в 4:20
|
||||
* 1 января в 4:20:00
|
||||
* 1 января 2000 в 4:20:00
|
||||
* Округление чисел
|
||||
* Сокращение постов **(Показать полностью)**
|
||||
* Результаты опросов без участия
|
||||
* Интеграция с <a href="https://www.last.fm/">LAST.FM</a> (а также возможность скробблинга)
|
||||
* Новый раздел музыки
|
||||
* Возможность скачивать видео
|
||||
* Возможность найти фотографию через поисковые системы
|
||||
* Интеграция с <a href="https://vkx.app/">VK X</a>
|
||||
* Сообщения
|
||||
* Обои в сообщениях
|
||||
* Возможность выключения кнопки записи голосовых сообщений
|
||||
* Возможность скрыть блок рекомендаций в сообщениях
|
||||
* Режим **VK Me**
|
||||
* Возможность вернуть вкладку уведомлений
|
||||
* Встроенный переводчик текста для сообщений
|
||||
* Возможность выбрать язык перевода
|
||||
* Автоматический перевод ваших сообщений на выбранный язык
|
||||
* Альтернативный дизайн эмодзи меню
|
||||
* Возможность использовать системные эмодзи
|
||||
* Активность
|
||||
* Возможность видеть удаленные сообщения
|
||||
* Функционал, позволяющий оставаться в «оффлайне» (принудительный оффлайн/не отправлять статус онлайна и т.п.)
|
||||
* Нечиталка/неписалка для ЛС/бесед/ботов/групп
|
||||
* Возможность отключить информацию о том, что вы просмотрели историю/прослушали голосовое сообщение
|
||||
* Возможность видеть онлайн пользователей, если у вас скрыт онлайн через VK Messenger
|
||||
* Отключить уведомление о том, что вы сделали скриншот в беседе
|
||||
* Отключение редиректа через away.php
|
||||
* Внешний вид
|
||||
* **Milkshake** тема (дизайн новых версий ВК)
|
||||
* Название заголовков в докбаре
|
||||
* Возможность использовать акцент для иконок
|
||||
* Возможность отключить счётчики в докбаре
|
||||
* Смена иконки приложения (содержит много уникальных иконок для донатеров)
|
||||
* Возможность покрасить панель навигации, веб-страницы
|
||||
* Telegram Стикеры
|
||||
* Возможность загружать свои стикерпаки из Telegram во ВКонтакте
|
||||
* Интерфейс
|
||||
* Возможность отключить блок историй наверху ленты
|
||||
* Возможность отключить боковую камеру в разделе «Новости»
|
||||
* Возможность отключить блок «Что у вас нового?» в разделе «Новости»
|
||||
* Возможность менять раздел, который запускается при запуске
|
||||
* Анимации фрагментов
|
||||
* Возможность отключить редизайн видеопостов
|
||||
* Возможность отключить блок миниаппов/VK Pay/Superapp
|
||||
* Возможность отключить сокращение названий разделов в меню
|
||||
* Возможность скрыть блок рекомендаций друзей в разделе «Друзья»
|
||||
* Возможность скрыть подписи в настройках
|
||||
* Прокси
|
||||
* Возможность использовать **HTTP/HTTPS/SOCKS** прокси, менять домены **API/OAuth/Static**
|
||||
* Другое
|
||||
* Очистка кеша приложения (**всё/стикеры/изображения/видео/сообщения/WebView**)
|
||||
* Автоочистка кеша при достижении указанного вами значения (**100/500 MB, 1/2/5 GB**)
|
||||
* Функционал для **дебага приложения/бэкап возможности/верификации VTosters**
|
||||
|
||||
А также:
|
||||
* Галочки, которые видны только пользователям приложения **ВТостерс Lite** (подробнее тут: [vtosters.app](https://vtosters.app) ➝ Пожертвования)
|
||||
* Оптимизация приложения VK (удаление ненужных библиотек, которые встроены в оригинальный VK)
|
||||
|
||||
И многое другое!
|
||||
|
||||
## Отладка приложения
|
||||
|
||||
Для отладки с помощью Android Studio необходимо пройти в `/smali/AndroidManifest.xml`
|
||||
```
|
||||
android:debuggable="false" -> android:debuggable="true"
|
||||
```
|
||||
Для отладки с помощью <a href="#"><img src="https://i.imgur.com/cPvvFDP.png" align="center" width="20" height="23"/></a> Android Studio необходимо пройти в `/smali/AndroidManifest.xml` и изменить значение `android:debuggable`:
|
||||
|
||||
Для дополнительной отладки ответов, доп логов и подмены данных для дебаг приложения необходимо включить **Режим разработчика**
|
||||
```
|
||||
Настройки -> О приложении -> Для разработчиков -> Режим разработчика
|
||||
```
|
||||
`android:debuggable="false"` ➝ `android:debuggable="true"`
|
||||
|
||||
Для просмотра трафика необходимо отключить функцию **SSL Pinning**
|
||||
Настройки, необходимые для **отладки** вне Android Studio, находятся по этой ссылке: [vk.com/vt/debug](https://vk.com/vt/debug)
|
||||
|
||||
```
|
||||
Настройки -> О приложении -> Для разработчиков -> SSL Pinning
|
||||
```
|
||||
* Для дополнительной отладки ответов и логов необходимо включить **[Режим разработчика]**
|
||||
|
||||
Для логгирования внутренних запросов к API необходимо включить функции **Логгирование API**
|
||||
* Для просмотра SSL-трафика необходимо **отключить** функцию **[SSL Pinning]**
|
||||
|
||||
(Работает только при использовании внутреннего логгера!)
|
||||
* Для логгирования внутренних запросов к API необходимо включить функцию **[Логгирование API]** <sup>(работает только при использовании внутреннего логгера!)</sup>
|
||||
|
||||
```
|
||||
Настройки -> О приложении -> Для разработчиков -> Логгирование API
|
||||
```
|
||||
* Для использования внутреннего логгера необходимо включить функцию **[Запись логов в файл]**
|
||||
|
||||
Для использования внутреннего логгера необходимо включить функции **Запись логов в файл**
|
||||
```
|
||||
Настройки -> О приложении -> Для разработчиков -> Запись логов в файл
|
||||
```
|
||||
Сразу после нажатия на запись аппа начнет записывать **все действия** в файлы по пути
|
||||
```
|
||||
/VK/logs/com.vtosters.lite
|
||||
```
|
||||
При следующем открытии аппы она автоматически запакует эти файлы и отправит вам в **Документы** ВК
|
||||
Сразу после нажатия на запись приложение начнет записывать **все ваши действия** по пути `/Download/VK/logs/com.vtosters.lite/`
|
||||
|
||||
Позже архив можно будет скачать и работать с файлами логов которые находятся в нем
|
||||
При следующем открытии приложения оно автоматически сохранит логи и отправит вам в [**Документы** ВК](https://vk.com/docs), откуда вы можете скачать архив логов и работать с ними.
|
||||
|
||||
## Разработка
|
||||
|
||||
Для понимания декомпилированного кода требуется использовать **Dex to Java** декомпилятор [jadx](https://github.com/skylot/jadx) или же сторонние варианты как [Fernflower](https://github.com/fesh0r/fernflower)
|
||||
Для понимания работы декомпилированного кода требуется использовать **Dex to Java** декомпилятор [jadx](https://github.com/skylot/jadx) или же сторонние варианты как [Fernflower](https://github.com/fesh0r/fernflower)
|
||||
|
||||
Рекомендуется установка **Android Debug Bridge** в систему ([Гайд как это сделать](https://technastic.com/system-wide-adb-fastboot-windows-10))
|
||||
При нахождении решения каких-либо проблем ждем вас в [Pull Requests](https://github.com/vtosters/lite/pulls)
|
||||
|
||||
Для индексации декомпилированного кода в Studio используется [dex2jar](https://github.com/pxb1988/dex2jar)
|
||||
* Рекомендуется установка **ADB** в систему ([гайд](https://technastic.com/system-wide-adb-fastboot-windows-10))
|
||||
|
||||
Сгенерированные библиотеки из дексов находятся в `/app/libs`
|
||||
* Для индексации декомпилированного кода в Studio используется [dex2jar](https://github.com/pxb1988/dex2jar)
|
||||
|
||||
При чистой перекомпиляции дексов в jar может сломаться некоторая индексация файлов, исправляйте ручками что попадется (К примеру какие-то функции в дексах изменены с **private** на **public**)
|
||||
Сгенерированные библиотеки из .dex файлов находятся в `/app/libs`
|
||||
|
||||
При чистой перекомпиляции .dex в .jar может сломаться некоторая индексация файлов, исправляйте ручками что попадется (К примеру какие-то функции в дексах изменены с **private** на **public**)
|
||||
|
||||
Для сборки декомпилированного кода и ресурсов используется [Apktool](https://github.com/iBotPeaches/Apktool)
|
||||
|
||||
А при нахождении решения каких-либо проблем ждем вас в [Pull Requests](https://github.com/vtosters/lite/pulls)
|
||||
|
||||
### Всё необходимое для сборки и компиляции
|
||||
|
||||
`Не меняйте packagename во избежание проблем с приложением`
|
||||
```diff
|
||||
- Не меняйте имя пакета во избежание проблем с приложением
|
||||
|
||||
`Некоторые функции связанные с музыкой не будут работать в пересобранном приложении`
|
||||
- Некоторые функции, связанные с музыкой не будут работать в пересобранном приложении
|
||||
```
|
||||
|
||||
Весь декомпилированный код клиента находится в `/smali`
|
||||
* Весь декомпилированный код клиента находится в `/smali`
|
||||
|
||||
Весь исходный код модификации находится в `/app`
|
||||
* Весь исходный код модификации находится в `/app`
|
||||
|
||||
Все необходимые скрипты/жарники для компиляции APK, его подписывании и не только находятся в `/scripts`
|
||||
* Все необходимые скрипты/.jar файлы для компиляции APK, его подписывании и не только находятся в `/scripts`
|
||||
|
||||
### Необходимые зависимости
|
||||
Требуется установленная **Java** >11 версии
|
||||
<a href="https://www.oracle.com/java/technologies/downloads/"><img src="https://i.imgur.com/z8ZN19a.png" align="center" width="20" height="23"/> **JDK**</a> >11 версии
|
||||
|
||||
Требуется установленная **Android Studio**
|
||||
<a href="https://developer.android.com/studio"><img src="https://i.imgur.com/cPvvFDP.png" align="center" width="20" height="23"/> **Android Studio**</a>
|
||||
|
||||
### Linux/macOS
|
||||
```
|
||||
./build.sh
|
||||
```
|
||||
|
||||

|
||||
Для сборки используется файл `./build.sh`
|
||||
|
||||
<img src="https://i.imgur.com/8BMX8lG.png" width="550" height="368"/>
|
||||
|
||||
### Windows
|
||||
```
|
||||
build.bat
|
||||
```
|
||||
Для сборки используется файл `build.bat`
|
||||
|
||||

|
||||
<img src="https://i.imgur.com/iZSUKJ6.png" width="550" height="368"/>
|
||||
|
||||
+1
-1
@@ -73,7 +73,7 @@ android {
|
||||
|
||||
defaultConfig {
|
||||
applicationId "ru.vtosters.lite.utils.lite"
|
||||
minSdkVersion 24
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 32
|
||||
versionCode 1
|
||||
versionName "1.0"
|
||||
|
||||
Binary file not shown.
@@ -1,6 +1,5 @@
|
||||
package bruhcollective.itaysonlab.libvkx.client;
|
||||
|
||||
import static ru.vtosters.lite.music.Scrobbler.scrobbleTrack;
|
||||
import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext;
|
||||
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
|
||||
|
||||
@@ -16,23 +15,23 @@ import java.util.List;
|
||||
|
||||
import bruhcollective.itaysonlab.libvkx.ILibVkxService;
|
||||
|
||||
public class LibVKXClient{
|
||||
public class LibVKXClient {
|
||||
@SuppressLint("StaticFieldLeak")
|
||||
private static LibVKXClientImpl impl;
|
||||
|
||||
public static LibVKXClientImpl getInstance(Context context){
|
||||
public static LibVKXClientImpl getInstance(Context context) {
|
||||
if (impl == null) {
|
||||
impl = new LibVKXClientImpl(context);
|
||||
}
|
||||
return impl;
|
||||
}
|
||||
|
||||
public static LibVKXClientImpl getInstance(){
|
||||
public static LibVKXClientImpl getInstance() {
|
||||
LibVKXClientImpl libVKXClientImpl = impl;
|
||||
return libVKXClientImpl == null ? getInstance(getGlobalContext()) : libVKXClientImpl;
|
||||
}
|
||||
|
||||
public static boolean isVkxInstalled(){
|
||||
public static boolean isVkxInstalled() {
|
||||
try {
|
||||
getGlobalContext().getPackageManager().getPackageInfo("ua.itaysonlab.vkx", 0);
|
||||
return true;
|
||||
@@ -41,13 +40,11 @@ public class LibVKXClient{
|
||||
}
|
||||
} // VKX check
|
||||
|
||||
public static boolean isIntegrationEnabled(){
|
||||
public static boolean isIntegrationEnabled() {
|
||||
return getBoolValue("libvkx_integration", false) && isVkxInstalled();
|
||||
}
|
||||
|
||||
public static boolean play(MusicTrack musicTrack, List<MusicTrack> list, MusicPlaybackLaunchContext playerRefer){
|
||||
scrobbleTrack(musicTrack.h, musicTrack.C, musicTrack.f, musicTrack.y1());
|
||||
|
||||
public static boolean play(MusicTrack musicTrack, List<MusicTrack> list, MusicPlaybackLaunchContext playerRefer) {
|
||||
if (!isIntegrationEnabled()) {
|
||||
return false;
|
||||
}
|
||||
@@ -57,7 +54,7 @@ public class LibVKXClient{
|
||||
return getInstance().runOnService(action);
|
||||
}
|
||||
|
||||
public static void lambdaplay(List<MusicTrack> list, MusicTrack musicTrack, ILibVkxService iLibVkxService){
|
||||
public static void lambdaplay(List<MusicTrack> list, MusicTrack musicTrack, ILibVkxService iLibVkxService) {
|
||||
int indexOf = list.indexOf(musicTrack);
|
||||
var ids = new ArrayList<String>();
|
||||
for (var track : list) {
|
||||
@@ -74,7 +71,7 @@ public class LibVKXClient{
|
||||
}
|
||||
}
|
||||
|
||||
private static String asId(MusicTrack musicTrack){
|
||||
private static String asId(MusicTrack musicTrack) {
|
||||
String str = musicTrack.e + "_" + musicTrack.d;
|
||||
if (musicTrack.O == null || musicTrack.O.equals("")) {
|
||||
return str;
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
package com.vk.api.gifts;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.vk.api.base.ApiRequest;
|
||||
import com.vk.dto.gift.CatalogedGift;
|
||||
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
public class GiftGetByStickerId extends ApiRequest<GiftGetByStickerId.a> {
|
||||
public static class a {
|
||||
public final int a;
|
||||
public final CatalogedGift b;
|
||||
|
||||
public a(int i, CatalogedGift catalogedGift) {
|
||||
this.a = i;
|
||||
this.b = catalogedGift;
|
||||
}
|
||||
}
|
||||
|
||||
public GiftGetByStickerId(Context context, int i) {
|
||||
super("execute.getGiftByStickerId");
|
||||
b("sticker_id", i);
|
||||
c("no_inapp", "0");
|
||||
b("force_payment", 1);
|
||||
}
|
||||
|
||||
@Override // com.vk.api.sdk.o.VKRequest
|
||||
public GiftGetByStickerId.a a(JSONObject jSONObject) throws JSONException {
|
||||
JSONObject jSONObject2 = jSONObject.getJSONObject("response");
|
||||
return new a(jSONObject2.optInt("balance"),
|
||||
new CatalogedGift(jSONObject2.getJSONObject("gift")));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package com.vk.im.ui.components.common;
|
||||
|
||||
public enum DialogAction {
|
||||
OPEN_USER_PROFILE,
|
||||
OPEN_GROUP_PROFILE,
|
||||
CHAT_SETTINGS,
|
||||
SEARCH,
|
||||
ADD_CHAT_MEMBER,
|
||||
CREATE_SHORTCUT,
|
||||
PINNED_MSG_HIDE,
|
||||
PINNED_MSG_SHOW,
|
||||
PINNED_MSG_DETACH,
|
||||
SHOW_ATTACHES,
|
||||
NOTIFICATIONS_ON,
|
||||
NOTIFICATIONS_OFF,
|
||||
GROUP_RECEIVE_MSGS_ENABLE,
|
||||
GROUP_RECEIVE_MSGS_DISABLE,
|
||||
GROUP_RECEIVE_NOTIFY_DISABLE,
|
||||
CHANNEL_INVITE_LINK,
|
||||
CLEAR_HISTORY,
|
||||
CLEAR_HISTORY_AND_LEAVE,
|
||||
LEAVE,
|
||||
LEAVE_CHANNEL,
|
||||
RETURN,
|
||||
RETURN_TO_CHANNEL,
|
||||
MARK_AS_READ,
|
||||
AUDIO_BTN_AUDIO_CALL,
|
||||
AUDIO_BTN_VIDEO_CALL,
|
||||
VIDEO_BTN_VIDEO_CALL,
|
||||
VIDEO_BTN_AUDIO_CALL,
|
||||
DNR_ON,
|
||||
DNR_OFF,
|
||||
DNT_ON,
|
||||
DNT_OFF,
|
||||
pinmsg,
|
||||
unpinmsg,
|
||||
}
|
||||
@@ -0,0 +1,148 @@
|
||||
package com.vk.im.ui.components.common;
|
||||
|
||||
import com.vk.core.extensions.CollectionExt;
|
||||
import com.vk.core.network.TimeProvider;
|
||||
import com.vk.im.engine.ImConfig;
|
||||
import com.vk.im.engine.models.MemberType;
|
||||
import com.vk.im.engine.models.Profile;
|
||||
import com.vk.im.engine.models.ProfilesSimpleInfo;
|
||||
import com.vk.im.engine.models.dialogs.ChatSettings;
|
||||
import com.vk.im.engine.models.dialogs.Dialog;
|
||||
import com.vk.im.engine.models.groups.Group;
|
||||
import com.vk.im.engine.utils.DialogPermissionHelper;
|
||||
import com.vk.im.ui.p.ImBridge7;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import ru.vtosters.lite.dnr.DNRInjector;
|
||||
|
||||
public final class DialogActionsHelper {
|
||||
public static final DialogActionsHelper a = new DialogActionsHelper();
|
||||
|
||||
public final List<DialogAction> a(ImConfig imConfig, Dialog dialog, ProfilesSimpleInfo profilesSimpleInfo) {
|
||||
if (dialog != null && profilesSimpleInfo != null) {
|
||||
long b2 = TimeProvider.f.b();
|
||||
ChatSettings z1 = dialog.z1();
|
||||
boolean z = false;
|
||||
boolean I1 = z1 != null && z1.I1();
|
||||
ArrayList<DialogAction> arrayList = new ArrayList<>();
|
||||
|
||||
DNRInjector.inject(dialog, arrayList);
|
||||
|
||||
arrayList.add(DialogAction.SEARCH);
|
||||
|
||||
if (dialog.S1()) {
|
||||
arrayList.add(DialogAction.SHOW_ATTACHES);
|
||||
}
|
||||
|
||||
if (!I1 && !dialog.W1()) {
|
||||
arrayList.add(DialogAction.CLEAR_HISTORY);
|
||||
}
|
||||
|
||||
if (I1) {
|
||||
arrayList.add(DialogAction.CHANNEL_INVITE_LINK);
|
||||
}
|
||||
|
||||
if (dialog.K1() != null) {
|
||||
CollectionExt.a(arrayList, DialogAction.PINNED_MSG_DETACH, !I1);
|
||||
CollectionExt.a(arrayList, DialogAction.PINNED_MSG_SHOW, !dialog.L1());
|
||||
CollectionExt.a(arrayList, DialogAction.PINNED_MSG_HIDE, dialog.L1());
|
||||
}
|
||||
|
||||
if (dialog.a(MemberType.USER)) {
|
||||
arrayList.add(DialogAction.OPEN_USER_PROFILE);
|
||||
}
|
||||
|
||||
if (dialog.a(MemberType.GROUP)) {
|
||||
arrayList.add(DialogAction.OPEN_GROUP_PROFILE);
|
||||
Group group = profilesSimpleInfo.w1().get(dialog.I1());
|
||||
if (group != null) {
|
||||
if (group.v1()) {
|
||||
arrayList.add(DialogAction.GROUP_RECEIVE_MSGS_DISABLE);
|
||||
} else {
|
||||
CollectionExt.a(arrayList, DialogAction.GROUP_RECEIVE_NOTIFY_DISABLE, group.w1());
|
||||
CollectionExt.a(arrayList, DialogAction.GROUP_RECEIVE_MSGS_ENABLE, !group.w1());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (dialog.W1()) {
|
||||
DialogAction dialogAction = DialogAction.ADD_CHAT_MEMBER;
|
||||
ChatSettings z12 = dialog.z1();
|
||||
if (z12 != null) {
|
||||
z = z12.y1();
|
||||
}
|
||||
CollectionExt.a(arrayList, dialogAction, z);
|
||||
CollectionExt.a(arrayList, DialogAction.CHAT_SETTINGS, DialogPermissionHelper.a.a(dialog));
|
||||
}
|
||||
|
||||
CollectionExt.a(arrayList, DialogAction.NOTIFICATIONS_ON, !dialog.b(b2));
|
||||
CollectionExt.a(arrayList, DialogAction.NOTIFICATIONS_OFF, dialog.b(b2));
|
||||
return arrayList;
|
||||
}
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
public final List<DialogAction> a(Dialog dialog, ProfilesSimpleInfo profilesSimpleInfo) {
|
||||
long b2 = TimeProvider.f.b();
|
||||
Profile profile = profilesSimpleInfo.get(dialog.getId());
|
||||
|
||||
if (!(profile instanceof Group)) {
|
||||
profile = null;
|
||||
}
|
||||
|
||||
Group group = (Group) profile;
|
||||
ChatSettings z1 = dialog.z1();
|
||||
ArrayList<DialogAction> arrayList = new ArrayList<>();
|
||||
|
||||
DNRInjector.inject(dialog, arrayList);
|
||||
|
||||
// if (dialog.hasUnread()) {
|
||||
arrayList.add(DialogAction.MARK_AS_READ);
|
||||
// }
|
||||
|
||||
if (!dialog.W1()) {
|
||||
arrayList.add(DialogAction.CREATE_SHORTCUT);
|
||||
arrayList.add(DialogAction.CLEAR_HISTORY);
|
||||
CollectionExt.a(arrayList, DialogAction.NOTIFICATIONS_OFF, dialog.b(b2));
|
||||
CollectionExt.a(arrayList, DialogAction.NOTIFICATIONS_ON, !dialog.b(b2));
|
||||
}
|
||||
|
||||
if (dialog.a(MemberType.GROUP) && group != null) {
|
||||
if (group.v1()) {
|
||||
arrayList.add(DialogAction.GROUP_RECEIVE_MSGS_DISABLE);
|
||||
} else {
|
||||
CollectionExt.a(arrayList, DialogAction.GROUP_RECEIVE_NOTIFY_DISABLE, group.w1());
|
||||
CollectionExt.a(arrayList, DialogAction.GROUP_RECEIVE_MSGS_ENABLE, !group.w1());
|
||||
}
|
||||
}
|
||||
|
||||
if (dialog.W1() && z1 != null) {
|
||||
if (!z1.L1()) {
|
||||
arrayList.add(DialogAction.CREATE_SHORTCUT);
|
||||
CollectionExt.a(arrayList, DialogAction.NOTIFICATIONS_OFF, dialog.b(b2));
|
||||
CollectionExt.a(arrayList, DialogAction.NOTIFICATIONS_ON, !dialog.b(b2));
|
||||
}
|
||||
CollectionExt.a(arrayList, DialogAction.CLEAR_HISTORY, z1.L1());
|
||||
if (z1.I1()) {
|
||||
CollectionExt.a(arrayList, DialogAction.LEAVE_CHANNEL, !z1.L1());
|
||||
CollectionExt.a(arrayList, DialogAction.RETURN_TO_CHANNEL, z1.L1());
|
||||
} else {
|
||||
CollectionExt.a(arrayList, DialogAction.RETURN, z1.L1());
|
||||
CollectionExt.a(arrayList, DialogAction.LEAVE, !z1.L1());
|
||||
CollectionExt.a(arrayList, DialogAction.CLEAR_HISTORY_AND_LEAVE, !z1.L1());
|
||||
}
|
||||
}
|
||||
|
||||
return arrayList;
|
||||
}
|
||||
|
||||
public final boolean a(Dialog dialog) {
|
||||
if (dialog.V1() || !dialog.y1()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return !dialog.U1() || !ImBridge7.a().a();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.vk.im.ui.components.common;
|
||||
|
||||
public enum MsgAction {
|
||||
RETRY,
|
||||
REPLY,
|
||||
FORWARD,
|
||||
COPY,
|
||||
EDIT,
|
||||
DELETE,
|
||||
SPAM,
|
||||
PIN,
|
||||
UNPIN,
|
||||
TRANSLATE,
|
||||
READTO
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
package com.vk.im.ui.components.common;
|
||||
|
||||
import com.vk.core.extensions.CollectionExt;
|
||||
import com.vk.im.engine.ImConfig;
|
||||
import com.vk.im.engine.ImEngine;
|
||||
import com.vk.im.engine.models.dialogs.Dialog;
|
||||
import com.vk.im.engine.models.messages.Msg;
|
||||
import com.vk.im.engine.utils.MsgPermissionHelper;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
public final class MsgActionHelper {
|
||||
public static final MsgActionHelper a = new MsgActionHelper();
|
||||
|
||||
public final List<MsgAction> a(ImEngine imEngine, Dialog dialog, Collection<? extends Msg> collection) {
|
||||
return a(imEngine != null ? imEngine.g() : null, dialog, collection);
|
||||
}
|
||||
|
||||
public final List<MsgAction> a(ImConfig imConfig, Dialog dialog, Collection<? extends Msg> collection) {
|
||||
if (imConfig != null && dialog != null && collection != null) {
|
||||
MsgPermissionHelper.a aVar = new MsgPermissionHelper.a(imConfig, dialog, collection);
|
||||
ArrayList<MsgAction> arrayList = new ArrayList<>();
|
||||
|
||||
CollectionExt.a(arrayList, MsgAction.RETRY, MsgPermissionHelper.b.g(aVar));
|
||||
CollectionExt.a(arrayList, MsgAction.REPLY, MsgPermissionHelper.b.f(aVar));
|
||||
CollectionExt.a(arrayList, MsgAction.FORWARD, MsgPermissionHelper.b.d(aVar));
|
||||
CollectionExt.a(arrayList, MsgAction.COPY, MsgPermissionHelper.b.a(aVar));
|
||||
CollectionExt.a(arrayList, MsgAction.EDIT, MsgPermissionHelper.b.c(aVar));
|
||||
CollectionExt.a(arrayList, MsgAction.DELETE, MsgPermissionHelper.b.b(aVar));
|
||||
CollectionExt.a(arrayList, MsgAction.SPAM, MsgPermissionHelper.b.h(aVar));
|
||||
CollectionExt.a(arrayList, MsgAction.PIN, MsgPermissionHelper.b.e(aVar));
|
||||
CollectionExt.a(arrayList, MsgAction.UNPIN, MsgPermissionHelper.b.i(aVar));
|
||||
CollectionExt.a(arrayList, MsgAction.TRANSLATE, true);
|
||||
CollectionExt.a(arrayList, MsgAction.READTO, true);
|
||||
|
||||
return arrayList;
|
||||
}
|
||||
|
||||
return new ArrayList<>();
|
||||
}
|
||||
}
|
||||
@@ -4,18 +4,37 @@ import static ru.vtosters.lite.dnr.DNRModule.hookDNR;
|
||||
import static ru.vtosters.lite.dnr.DNRModule.hookDNT;
|
||||
import static ru.vtosters.lite.dnr.DNRModule.isDnrEnabledFor;
|
||||
import static ru.vtosters.lite.dnr.DNRModule.isDntEnabledFor;
|
||||
import static ru.vtosters.lite.utils.AccountManagerUtils.getUserToken;
|
||||
import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier;
|
||||
import static ru.vtosters.lite.utils.AndroidUtils.sendToast;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.Log;
|
||||
|
||||
import com.vk.core.network.Network;
|
||||
import com.vk.im.engine.models.dialogs.Dialog;
|
||||
import com.vk.im.engine.models.messages.Msg;
|
||||
import com.vk.im.engine.models.messages.MsgFromUser;
|
||||
import com.vk.im.ui.components.common.DialogAction;
|
||||
import com.vk.im.ui.components.common.MsgAction;
|
||||
import com.vk.im.ui.components.viewcontrollers.popup.DelegateMsg;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
|
||||
import okhttp3.Headers;
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.Request;
|
||||
import ru.vtosters.lite.ui.dialogs.Translate;
|
||||
|
||||
public class DNRInjector {
|
||||
public static void inject(Dialog dialog, List<DialogAction> list) {
|
||||
int peerId = dialog.getId();
|
||||
|
||||
list.add(DialogAction.valueOf("pinmsg"));
|
||||
list.add(DialogAction.valueOf("unpinmsg"));
|
||||
|
||||
if (isDnrEnabledFor(peerId)) {
|
||||
list.add(DialogAction.valueOf("DNR_OFF"));
|
||||
} else {
|
||||
@@ -34,6 +53,10 @@ public class DNRInjector {
|
||||
hashMap.put(DialogAction.valueOf("DNR_OFF"), getIdentifier("DNR_OFF", "string"));
|
||||
hashMap.put(DialogAction.valueOf("DNT_ON"), getIdentifier("DNT_ON", "string"));
|
||||
hashMap.put(DialogAction.valueOf("DNT_OFF"), getIdentifier("DNT_OFF", "string"));
|
||||
|
||||
|
||||
hashMap.put(DialogAction.valueOf("pinmsg"), getIdentifier("pinmsg", "string"));
|
||||
hashMap.put(DialogAction.valueOf("unpinmsg"), getIdentifier("unpinmsg", "string"));
|
||||
return hashMap;
|
||||
}
|
||||
|
||||
@@ -60,9 +83,75 @@ public class DNRInjector {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (action == DialogAction.valueOf("pinmsg")) {
|
||||
pinnedMsg(id, true);
|
||||
return true;
|
||||
} else if (action == DialogAction.valueOf("unpinmsg")) {
|
||||
pinnedMsg(id, false);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static LinkedHashMap<MsgAction, DelegateMsg.a.a> injectToHashMapMsg(LinkedHashMap<MsgAction, DelegateMsg.a.a> hashMap) {
|
||||
hashMap.put(MsgAction.valueOf("TRANSLATE"), new DelegateMsg.a.a(getIdentifier("translator", "string")));
|
||||
hashMap.put(MsgAction.valueOf("READTO"), new DelegateMsg.a.a(getIdentifier("readto", "string")));
|
||||
return hashMap;
|
||||
}
|
||||
|
||||
public static boolean onClickMsg(Context context, MsgAction action, Msg msg) {
|
||||
var text = ((MsgFromUser) msg).f();
|
||||
var fullMsg = ((MsgFromUser) msg).j2(); // text + reply
|
||||
var reply = fullMsg.substring(text.length() + 1);
|
||||
|
||||
if (action == MsgAction.valueOf("READTO")) {
|
||||
DNRModule.hookReadStartMsgTo(msg);
|
||||
return true;
|
||||
}
|
||||
|
||||
var isTextExist = !text.isEmpty() && !text.equals(" ");
|
||||
var isReplyExist = !reply.isEmpty() && !reply.equals(" ");
|
||||
|
||||
if (action == MsgAction.valueOf("TRANSLATE")) {
|
||||
if (isTextExist && isReplyExist) {
|
||||
Translate.showTranslatedText(context, text + "\n\nРеплай:\n" + reply);
|
||||
} else if (isReplyExist) {
|
||||
Translate.showTranslatedText(context, "Реплай:\n" + reply);
|
||||
} else if (isTextExist) {
|
||||
Translate.showTranslatedText(context, text);
|
||||
} else {
|
||||
sendToast("Нет текста для перевода");
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static void pinnedMsg(int dialogid, boolean needToBePinned) {
|
||||
Thread thread = new Thread(() -> {
|
||||
try {
|
||||
var request = new Request.a()
|
||||
.b("https://api.vk.com/method/" + (needToBePinned ? "messages.pinConversation" : "messages.unpinConversation") + "?peer_id=" + dialogid + "&access_token=" + getUserToken() + "&v=5.119")
|
||||
.a(Headers.a("User-Agent", Network.l.c().a(), "Content-Type", "application/x-www-form-urlencoded; charset=utf-8"))
|
||||
.a();
|
||||
|
||||
try {
|
||||
var response = new OkHttpClient().a(request).execute().a().g();
|
||||
Log.d("Pins", response);
|
||||
} catch (IOException e) {
|
||||
Log.e("Pins", "Error while pinning message", e);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
});
|
||||
|
||||
thread.start();
|
||||
|
||||
sendToast("Диалог успешно " + (needToBePinned ? "закреплен" : "откреплен"));
|
||||
}
|
||||
|
||||
public static void setDnr(Dialog dialog, boolean value) {
|
||||
hookDNR(dialog.getId());
|
||||
}
|
||||
|
||||
@@ -4,8 +4,11 @@ import static ru.vtosters.lite.net.Request.makeRequest;
|
||||
import static ru.vtosters.lite.utils.AccountManagerUtils.getUserToken;
|
||||
import static ru.vtosters.lite.utils.ProxyUtils.getApi;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
import com.vk.im.engine.commands.messages.SetUserActivityCmd;
|
||||
import com.vk.im.engine.models.dialogs.Dialog;
|
||||
import com.vk.im.engine.models.messages.Msg;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -54,6 +57,12 @@ public class DNRModule {
|
||||
});
|
||||
}
|
||||
|
||||
public static void hookReadStartMsgTo(Msg dialog) {
|
||||
Log.d("DNR", "hookReadStartMsgTo: " + dialog.C1() + " " + dialog.v1());
|
||||
makeRequest("https://" + getApi() + "/method/messages.markAsRead?start_message_id=" + dialog.C1() + "&peer_id=" + dialog.v1() + "&v=5.119&access_token=" + getUserToken(), response -> {
|
||||
});
|
||||
}
|
||||
|
||||
public static void hookDNR(int peerId) {
|
||||
mDoNotReadDBHelper.setEnabledForPeerId(peerId, !mDoNotReadDBHelper.isEnabledForPeerId(peerId));
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package ru.vtosters.lite.foaf;
|
||||
|
||||
import static android.widget.Toast.LENGTH_SHORT;
|
||||
import static android.widget.Toast.makeText;
|
||||
import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext;
|
||||
import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier;
|
||||
import static ru.vtosters.lite.utils.AndroidUtils.getString;
|
||||
import static ru.vtosters.lite.utils.ProxyUtils.apiproxy;
|
||||
@@ -100,7 +101,7 @@ public class FoafBase {
|
||||
a2.setMessage(getString("foafid") + " " + i + getString("foafregdate") + " " + normalHumanDate + getString("foafdate") + " " + daysPassedFromFoafDate(normalHumanDate)).setPositiveButton(17039370, null).create().show();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
makeText(context, getString("foaferr"), LENGTH_SHORT).show();
|
||||
makeText(getGlobalContext(), getString("foaferr"), LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
package ru.vtosters.lite.hooks;
|
||||
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class DeviceInfoHook{
|
||||
public static String getDeviceInfo(String input) {
|
||||
Log.d("DeviceInfoHook", "getDeviceInfo: " + input);
|
||||
if (getBoolValue("hideDeviceInfo", true)) return "";
|
||||
return input;
|
||||
}
|
||||
|
||||
public static String getDeviceId(String input) {
|
||||
Log.d("DeviceInfoHook", "getDeviceId: " + input);
|
||||
Log.d("DeviceInfoHook", "getDeviceId shuffled: " + shuffle(input));
|
||||
if (getBoolValue("hideDeviceInfo", true)) return shuffle(input);
|
||||
return input;
|
||||
}
|
||||
|
||||
public static String shuffle(String string) {
|
||||
StringBuilder sb = new StringBuilder(string.length());
|
||||
double rnd;
|
||||
for (char c: string.toCharArray()) {
|
||||
rnd = Math.random();
|
||||
if (rnd < 0.34)
|
||||
sb.append(c);
|
||||
else if (rnd < 0.67)
|
||||
sb.insert(sb.length() / 2, c);
|
||||
else
|
||||
sb.insert(0, c);
|
||||
|
||||
sb.append(new Random().nextInt(10));
|
||||
sb.deleteCharAt(0);
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
||||
@@ -463,8 +463,7 @@ public class JsonInjectors {
|
||||
oldItems = catalog.optJSONArray("sections");
|
||||
}
|
||||
|
||||
|
||||
if (oldItems != null) {
|
||||
if (oldItems != null && oldItems.optJSONObject(0).optString("url").contains("general")) {
|
||||
if (podcastcatalog()) {
|
||||
var podcasts = fetchCatalogPodcast();
|
||||
if (podcasts != null) {
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
package ru.vtosters.lite.hooks;
|
||||
|
||||
import static ru.vtosters.lite.ui.dialogs.MessageSettings.argDialog;
|
||||
import static ru.vtosters.lite.ui.dialogs.MessageSettings.bombCount;
|
||||
import static ru.vtosters.lite.ui.dialogs.MessageSettings.isSilentEnabled;
|
||||
import static ru.vtosters.lite.utils.Preferences.autoalltranslate;
|
||||
import static ru.vtosters.lite.utils.Preferences.autotranslate;
|
||||
import static ru.vtosters.lite.utils.Preferences.savemsgsett;
|
||||
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
|
||||
import com.vk.api.internal.MethodCall;
|
||||
|
||||
import ru.vtosters.lite.translators.BaseTranslator;
|
||||
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class MessagesHook {
|
||||
public static String injectOwnText(String oldText) {
|
||||
if (!autotranslate() || TextUtils.isEmpty(oldText))
|
||||
return oldText;
|
||||
var instance = BaseTranslator.getInstance();
|
||||
|
||||
return replaceMentions(oldText, instance);
|
||||
}
|
||||
|
||||
public static String injectOwnTextAll(String oldText) {
|
||||
if (!autoalltranslate() || TextUtils.isEmpty(oldText)) {
|
||||
return oldText;
|
||||
}
|
||||
var instance = BaseTranslator.getInstance();
|
||||
|
||||
return replaceMentions(oldText, instance);
|
||||
}
|
||||
|
||||
public static String replaceMentions(String oldText, BaseTranslator instance) {
|
||||
try {
|
||||
var matcher = Pattern.compile("(\\[(?:club|id|public)\\d+\\|[^]]+\\])|(@[^\\s]+)").matcher(oldText);
|
||||
var mentionsCount = 0;
|
||||
|
||||
var textBuff = new StringBuffer();
|
||||
var mentions = new ArrayList<String>();
|
||||
while (matcher.find()) {
|
||||
mentions.add(matcher.group());
|
||||
matcher.appendReplacement(textBuff, "vtl_mention" + mentionsCount + ""); ++mentionsCount;
|
||||
}
|
||||
matcher.appendTail(textBuff);
|
||||
|
||||
var translatedText = instance.getTranslation(textBuff.toString());
|
||||
var matcherMentions = Pattern.compile("vtl_mention(\\d+)").matcher(translatedText);
|
||||
var retTextBuff = new StringBuffer();
|
||||
while (matcherMentions.find()) {
|
||||
matcherMentions.appendReplacement(retTextBuff, mentions.get(
|
||||
Integer.parseInt(matcherMentions.group(1))
|
||||
));
|
||||
}
|
||||
matcherMentions.appendTail(retTextBuff);
|
||||
|
||||
return retTextBuff.toString();
|
||||
} catch(Exception e) {
|
||||
e.printStackTrace();
|
||||
return instance.getTranslation(oldText);
|
||||
}
|
||||
}
|
||||
|
||||
public static void onLongClick(View view) {
|
||||
view.setOnLongClickListener(v -> {
|
||||
argDialog(v.getContext());
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
public static void injRequest(MethodCall.a req) {
|
||||
var time = expireTime();
|
||||
|
||||
if (time > 0) {
|
||||
req.a("expire_ttl", time);
|
||||
if (!savemsgsett()) bombCount = "0";
|
||||
}
|
||||
|
||||
if (isSilentEnabled) {
|
||||
req.a("silent", 1);
|
||||
if (!savemsgsett()) isSilentEnabled = false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static int expireTime() {
|
||||
switch (bombCount) {
|
||||
case "15s":
|
||||
return 15;
|
||||
case "1m":
|
||||
return 60;
|
||||
case "5m":
|
||||
return 300;
|
||||
case "1h":
|
||||
return 3600;
|
||||
case "24h":
|
||||
return 86400;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,7 @@ package ru.vtosters.lite.hooks;
|
||||
import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier;
|
||||
import static ru.vtosters.lite.utils.AndroidUtils.getPreferences;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.ClipData;
|
||||
import android.content.ClipboardManager;
|
||||
import android.content.Context;
|
||||
@@ -52,6 +53,7 @@ public class PhotoViewer {
|
||||
return true;
|
||||
}
|
||||
|
||||
@SuppressLint("UseCompatLoadingForDrawables")
|
||||
public static void addMenuItems(AttachmentWithMedia attachment, ActionsPopup.b actionPopup, int i, boolean z) {
|
||||
actionPopup.a(getIdentifier("search_photo_content", "string"),
|
||||
ThemesUtils.isDarkTheme()
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
package ru.vtosters.lite.hooks;
|
||||
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.RelativeLayout;
|
||||
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.vk.newsfeed.holders.BaseFooterHolder;
|
||||
import com.vtosters.lite.R;
|
||||
|
||||
import ru.vtosters.lite.utils.Preferences;
|
||||
|
||||
public class PostViewHook {
|
||||
|
||||
/**
|
||||
* For displaying child elements with custom direction in rtl container we should remove their, set layout direction and add again */
|
||||
private static void saveChildDirectionForRlt(ViewGroup container) {
|
||||
var children = new View[container.getChildCount()];
|
||||
for (int i = 0; i < container.getChildCount(); i++) {
|
||||
var child = container.getChildAt(i);
|
||||
child.setLayoutDirection(View.LAYOUT_DIRECTION_LTR);
|
||||
children[i] = child;
|
||||
}
|
||||
container.removeAllViews();
|
||||
for (View child : children) {
|
||||
container.addView(child);
|
||||
}
|
||||
container.setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
|
||||
}
|
||||
|
||||
// res/layout/likes_panel.xml
|
||||
public static void injectBaseFooterHolder(BaseFooterHolder baseFooterHolder) {
|
||||
if (!Preferences.isLikesOnRightEnabled())
|
||||
return;
|
||||
try {
|
||||
var container = (ViewGroup) ((RecyclerView.ViewHolder) baseFooterHolder).itemView;
|
||||
saveChildDirectionForRlt((ViewGroup) container.getChildAt(1));
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
// res/layout/photo_viewer_bottom.xml
|
||||
public static void injectPhotoViewer(View container) {
|
||||
if (!Preferences.isLikesOnRightEnabled())
|
||||
return;
|
||||
try {
|
||||
var bottomPanel = (ViewGroup) container.findViewById(R.id.photo_viewer_bottom_panel);
|
||||
saveChildDirectionForRlt(bottomPanel);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
// res/layout/video_bottom_view.xml
|
||||
public static void injectVideoView(RelativeLayout container) {
|
||||
if (!Preferences.isLikesOnRightEnabled())
|
||||
return;
|
||||
try {
|
||||
var bottomBar = (ViewGroup) container.findViewById(R.id.bottom_bar);
|
||||
saveChildDirectionForRlt(bottomBar);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package ru.vtosters.lite.hooks;
|
||||
import static ru.vtosters.lite.utils.Preferences.dev;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
import com.vk.api.internal.MethodCall;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
|
||||
public class RequestDumper{
|
||||
public static void addParams(MethodCall.a paramslist, String method, LinkedHashMap params, String apiver) {
|
||||
if (method.contains("execute.getGiftByStickerId")) {
|
||||
apiver = "5.187";
|
||||
}
|
||||
|
||||
if (dev()) {
|
||||
Log.d("RequestDumper", "Method: " + method);
|
||||
Log.d("RequestDumper", "API version: " + apiver);
|
||||
Log.d("RequestDumper", "Params: " + params);
|
||||
}
|
||||
|
||||
paramslist.a(method);
|
||||
paramslist.a(params);
|
||||
paramslist.b(apiver);
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,6 @@ import static ru.vtosters.lite.utils.AndroidUtils.getPrefsValue;
|
||||
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
|
||||
import static ru.vtosters.lite.utils.Preferences.milkshake;
|
||||
import static ru.vtosters.lite.utils.Preferences.superapp;
|
||||
import static ru.vtosters.lite.utils.Preferences.useNewSettings;
|
||||
import static ru.vtosters.lite.utils.Preferences.videonewcatalog;
|
||||
import static ru.vtosters.lite.utils.Preferences.vkme;
|
||||
|
||||
@@ -34,6 +33,8 @@ import com.vtosters.lite.fragments.y2.VideosFragment;
|
||||
import com.vtosters.lite.general.fragments.GamesFragment;
|
||||
import com.vtosters.lite.general.fragments.PhotosFragment;
|
||||
|
||||
import ru.vtosters.lite.ui.fragments.VTSettings;
|
||||
|
||||
public class StartFragmentHook {
|
||||
public static Class getStartFragment() {
|
||||
if (vkme()) {
|
||||
@@ -55,7 +56,7 @@ public class StartFragmentHook {
|
||||
case "videos":
|
||||
return videonewcatalog() ? VideoCatalogFragment.class : VideosFragment.class;
|
||||
case "settings":
|
||||
return useNewSettings();
|
||||
return VTSettings.class;
|
||||
case "apps":
|
||||
return AppsFragment.class;
|
||||
case "discover":
|
||||
|
||||
@@ -5,8 +5,10 @@ import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext;
|
||||
import static ru.vtosters.lite.utils.AndroidUtils.getPrefsValue;
|
||||
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
|
||||
import static ru.vtosters.lite.utils.ThemesUtils.getAccentColor;
|
||||
import static ru.vtosters.lite.utils.ThemesUtils.getAttrId;
|
||||
import static ru.vtosters.lite.utils.ThemesUtils.getBackgroundContent;
|
||||
import static ru.vtosters.lite.utils.ThemesUtils.getBackgroundPage;
|
||||
import static ru.vtosters.lite.utils.ThemesUtils.getColorFromAttr;
|
||||
import static ru.vtosters.lite.utils.ThemesUtils.getHeaderBackground;
|
||||
import static ru.vtosters.lite.utils.ThemesUtils.getHeaderText;
|
||||
import static ru.vtosters.lite.utils.ThemesUtils.getTextAttr;
|
||||
@@ -59,8 +61,13 @@ public class VKUIHook {
|
||||
.replace("%header_text%", hex(getHeaderText()))
|
||||
.replace("%accent%", hex(getAccentColor()))
|
||||
.replace("%background_page%", hex(getBackgroundPage()))
|
||||
.replace("%content_tint_background%", hex(getColorFromAttr(getAttrId("content_tint_background"))))
|
||||
.replace("%button_primary_background%", hex(getColorFromAttr(getAttrId("button_primary_background"))))
|
||||
.replace("%button_outline_foreground%", hex(getColorFromAttr(getAttrId("button_outline_foreground"))))
|
||||
.replace("%button_outline_border%", hex(getColorFromAttr(getAttrId("button_outline_border"))))
|
||||
.replace("%text_primary%", hex(getTextAttr()));
|
||||
|
||||
|
||||
loadedCSSAmoled = load("vt_ui_oled.css");
|
||||
isLoaded = true;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
package ru.vtosters.lite.music;
|
||||
import static java.lang.String.*;
|
||||
|
||||
import static java.lang.String.valueOf;
|
||||
import static ru.vtosters.lite.utils.AndroidUtils.MD5;
|
||||
import static ru.vtosters.lite.utils.AndroidUtils.edit;
|
||||
@@ -9,6 +9,8 @@ import static ru.vtosters.lite.utils.AndroidUtils.sendToast;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
import com.vk.dto.music.MusicTrack;
|
||||
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
@@ -22,16 +24,15 @@ import ru.vtosters.lite.net.NetCallback;
|
||||
import ru.vtosters.lite.net.NetClient;
|
||||
import ru.vtosters.lite.net.NetRequest;
|
||||
import ru.vtosters.lite.net.NetResponse;
|
||||
import ru.vtosters.lite.utils.Preferences;
|
||||
|
||||
public class Scrobbler{
|
||||
public class Scrobbler {
|
||||
private static final String key = "5965d63402414776c54c266db0211746";
|
||||
private static final String keysecret = "d982180eed13275bb948e41cf225f88f";
|
||||
private static final String url = "https://ws.audioscrobbler.com/2.0/";
|
||||
private static final NetClient client = new NetClient.Builder().build();
|
||||
private static final ArrayList<String> scrobbled = new ArrayList<>();
|
||||
|
||||
public static void scrobbleTrack(long duration, String artist, String title, String uid){
|
||||
public static void scrobbleTrack(long duration, String artist, String title, String uid) {
|
||||
var string = getDefaultPrefs().getString("sessionKey", null);
|
||||
var timestamp = System.currentTimeMillis() / 1000;
|
||||
|
||||
@@ -59,21 +60,35 @@ public class Scrobbler{
|
||||
treeMap.put("api_sig", signMD5(treeMap));
|
||||
treeMap.put("format", "json");
|
||||
|
||||
client.newCall(new NetRequest.Builder().url(url).post().params(treeMap).build()).enqueue(new NetCallback(){
|
||||
client.newCall(new NetRequest.Builder().url(url).post().params(treeMap).build()).enqueue(new NetCallback() {
|
||||
@Override
|
||||
public void onFailure(NetCall call, IOException e){
|
||||
public void onFailure(NetCall call, IOException e) {
|
||||
Log.d("Scrobbler", "Error: " + e.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResponse(NetCall call, NetResponse response){
|
||||
public void onResponse(NetCall call, NetResponse response) {
|
||||
Log.d("Scrobbler", "Scrobbled: " + artist + " - " + title);
|
||||
Log.d("Scrobbler", "Response scrobble: " + response.getDataString());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private static String signMD5(Map<String, String> map){
|
||||
public static void grabMusicTrack(MusicTrack musictrack) {
|
||||
var uid = musictrack.y1();
|
||||
var artist = musictrack.C;
|
||||
var title = musictrack.f;
|
||||
var duration = musictrack.h;
|
||||
|
||||
if (uid.isEmpty() || artist == null || artist.isEmpty() || title == null || title.isEmpty() || duration == 0) {
|
||||
Log.d("Scrobbler", "grabTrackInfo: " + "Empty track, info: " + artist + " - " + title + " - " + duration + " - " + uid);
|
||||
return;
|
||||
}
|
||||
|
||||
scrobbleTrack(duration, artist, title, uid);
|
||||
}
|
||||
|
||||
private static String signMD5(Map<String, String> map) {
|
||||
var sb = new StringBuilder();
|
||||
|
||||
for (Map.Entry<String, String> entry : map.entrySet()) {
|
||||
@@ -86,7 +101,7 @@ public class Scrobbler{
|
||||
return MD5(sb.toString());
|
||||
}
|
||||
|
||||
public static void auth(String login, String pass){
|
||||
public static void auth(String login, String pass) {
|
||||
if (login == null || pass == null) {
|
||||
sendToast("Логин или пароль не заданы");
|
||||
return;
|
||||
@@ -100,15 +115,15 @@ public class Scrobbler{
|
||||
treeMap.put("api_sig", signMD5(treeMap));
|
||||
treeMap.put("format", "json");
|
||||
|
||||
client.newCall(new NetRequest.Builder().url(url).post().params(treeMap).build()).enqueue(new NetCallback(){
|
||||
client.newCall(new NetRequest.Builder().url(url).post().params(treeMap).build()).enqueue(new NetCallback() {
|
||||
@Override
|
||||
public void onFailure(NetCall call, IOException e){
|
||||
public void onFailure(NetCall call, IOException e) {
|
||||
Log.d("Scrobbler", "Auth failed", e);
|
||||
sendToast("Ошибка входа");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResponse(NetCall call, NetResponse response){
|
||||
public void onResponse(NetCall call, NetResponse response) {
|
||||
try {
|
||||
var jSONObject = new JSONObject(response.getDataString());
|
||||
sessionFetcher(jSONObject);
|
||||
@@ -120,7 +135,7 @@ public class Scrobbler{
|
||||
});
|
||||
}
|
||||
|
||||
public static void sessionFetcher(JSONObject jsonObject) throws JSONException{
|
||||
public static void sessionFetcher(JSONObject jsonObject) throws JSONException {
|
||||
if (!jsonObject.has("session")) {
|
||||
Log.d("Scrobbler", "Auth failed - no session");
|
||||
return;
|
||||
@@ -136,26 +151,26 @@ public class Scrobbler{
|
||||
Log.d("Scrobbler", "Auth success as " + name + ", key " + key);
|
||||
}
|
||||
|
||||
public static void logout(){
|
||||
public static void logout() {
|
||||
edit().remove("username").apply();
|
||||
edit().remove("sessionKey").apply();
|
||||
scrobbled.clear();
|
||||
sendToast("Вы успешно вышли из учетной записи");
|
||||
}
|
||||
|
||||
public static boolean needToBeScrobble(String uid){
|
||||
public static boolean needToBeScrobble(String uid) {
|
||||
return isLoggedIn() && isScrobblingEnabled() && !scrobbled.contains(uid);
|
||||
}
|
||||
|
||||
public static boolean isLoggedIn(){
|
||||
public static boolean isLoggedIn() {
|
||||
return getDefaultPrefs().getString("sessionKey", null) != null;
|
||||
}
|
||||
|
||||
public static boolean isScrobblingEnabled(){
|
||||
public static boolean isScrobblingEnabled() {
|
||||
return getPreferences().getBoolean("lastfm_enabled", false);
|
||||
}
|
||||
|
||||
public static String getUserName(){
|
||||
public static String getUserName() {
|
||||
return getDefaultPrefs().getString("username", null);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,8 +3,6 @@ package ru.vtosters.lite.net;
|
||||
import android.util.Base64;
|
||||
import android.util.Log;
|
||||
|
||||
import org.json.JSONException;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
package ru.vtosters.lite.translators;
|
||||
|
||||
import static ru.vtosters.lite.utils.Preferences.preferences;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.collection.LruCache;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
import ru.vtosters.lite.utils.AndroidUtils;
|
||||
|
||||
public abstract class BaseTranslator {
|
||||
|
||||
private final LruCache<String, String> cache = new LruCache<>(200);
|
||||
|
||||
private static final int YANDEX = 0;
|
||||
private static final int GOOGLE = 1;
|
||||
private static final int DEEPL = 2;
|
||||
|
||||
@NonNull
|
||||
public abstract String translate(String text, String tl);
|
||||
|
||||
@NonNull
|
||||
public final String getTranslation(String text) {
|
||||
var val = cache.get(text);
|
||||
if (val != null)
|
||||
return val;
|
||||
var translation = translate(text, getToLanguage());
|
||||
cache.put(text, translation);
|
||||
return translation;
|
||||
}
|
||||
|
||||
public static String getToLanguage() {
|
||||
var lang = preferences.getString("lang_target", "system");
|
||||
var systemLang = Locale.getDefault().getLanguage();
|
||||
|
||||
if (lang.isEmpty() || lang.equals(systemLang) || lang.equals("system"))
|
||||
return systemLang;
|
||||
|
||||
return lang;
|
||||
}
|
||||
|
||||
public static BaseTranslator getInstance() {
|
||||
switch (AndroidUtils.getPreferences().getInt("translator", 0)) {
|
||||
case YANDEX:
|
||||
return YandexTranslator.getInstance();
|
||||
case GOOGLE:
|
||||
return GoogleTranslator.getInstance();
|
||||
case DEEPL:
|
||||
return DeepLTranslator.getInstance();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,134 @@
|
||||
package ru.vtosters.lite.translators;
|
||||
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import okhttp3.MediaType;
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.Request;
|
||||
import okhttp3.RequestBody;
|
||||
|
||||
public class DeepLTranslator extends BaseTranslator {
|
||||
|
||||
private static final OkHttpClient client = new OkHttpClient();
|
||||
private static final Pattern pattern = Pattern.compile("[i]");
|
||||
private static final String REQUEST_BODY_FORMAT = "{\n" +
|
||||
" \"method\": \"LMT_handle_texts\",\n" +
|
||||
" \"id\": %s,\n" +
|
||||
" \"jsonrpc\": \"2.0\",\n" +
|
||||
" \"params\": {\n" +
|
||||
" \"splitting\": \"newlines\",\n" +
|
||||
" \"texts\": [{\n" +
|
||||
" \"requestAlternatives\": 0,\n" +
|
||||
" \"text\": \"%s\"\n" +
|
||||
" }],\n" +
|
||||
" \"lang\": {\n" +
|
||||
" \"target_lang\": \"%s\",\n" +
|
||||
" \"source_lang_user_selected\": \"\"\n" +
|
||||
" },\n" +
|
||||
" \"commonJobParams\": {\n" +
|
||||
" \"regionalVariant\": null,\n" +
|
||||
" \"wasSpoken\": false,\n" +
|
||||
" \"formality\": \"informal\"\n" +
|
||||
" },\n" +
|
||||
" \"timestamp\": %s\n" +
|
||||
" }\n" +
|
||||
"}";
|
||||
|
||||
|
||||
private static DeepLTranslator instance;
|
||||
|
||||
public static DeepLTranslator getInstance() {
|
||||
if (instance == null)
|
||||
instance = new DeepLTranslator();
|
||||
return instance;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public String translate(String text, String tl) {
|
||||
try {
|
||||
System.setProperty("sun.net.http.allowRestrictedHeaders", "true");
|
||||
|
||||
if (tl.contains("-"))
|
||||
tl = tl.toUpperCase();
|
||||
|
||||
var i = 1;
|
||||
while (pattern.matcher(text).find()) {
|
||||
i++;
|
||||
}
|
||||
|
||||
var id = new AtomicLong(ThreadLocalRandom.current().nextLong(Long.parseLong("10000000000")));
|
||||
|
||||
var requestBody = String.format(REQUEST_BODY_FORMAT,
|
||||
id.incrementAndGet(),
|
||||
text,
|
||||
tl,
|
||||
getTimestamp(i)
|
||||
);
|
||||
|
||||
requestBody = (id.get() + 3) % 13 == 0 || (id.get() + 5) % 29 == 0
|
||||
? requestBody.replace("hod\":\"", "hod\" : \"")
|
||||
: requestBody.replace("hod\":\"", "hod\": \"");
|
||||
|
||||
String uuid = UUID.randomUUID().toString();
|
||||
var request = new Request.a()
|
||||
.b("https://www2.deepl.com/jsonrpc")
|
||||
.a("referer", "https://www.deepl.com/")
|
||||
.a("user-agent", "DeepL-Android/VersionName(name=1.0.1) Android 10 (aarch64)")
|
||||
.a("x-app-os-name", "Android")
|
||||
.a("x-app-os-version", "10")
|
||||
.a("x-app-version", "1.0.1")
|
||||
.a("x-app-build", "13")
|
||||
.a("x-app-device", "Pixel 5")
|
||||
.a("x-app-instance-id", uuid)
|
||||
.a("accept-encoding", "gzip")
|
||||
.a(RequestBody.a(MediaType.a("application/json; charset=utf-8"), requestBody.getBytes(StandardCharsets.UTF_8)))
|
||||
.a();
|
||||
|
||||
var response = client.a(request).execute();
|
||||
var payload = response.a().g();
|
||||
|
||||
Log.d("DeepL", response.toString());
|
||||
Log.d("DeepL", payload);
|
||||
|
||||
|
||||
if (!TextUtils.isEmpty(payload)) {
|
||||
var json = new JSONObject(payload);
|
||||
if (!json.has("result"))
|
||||
return text;
|
||||
var result = json.getJSONObject("result");
|
||||
if (!result.has("texts"))
|
||||
return text;
|
||||
var sb = new StringBuilder();
|
||||
var texts = result.getJSONArray("texts");
|
||||
for (int j = 0; j < texts.length(); j++) {
|
||||
var value = texts.getJSONObject(j).getString("text");
|
||||
Log.d("DeepL", value);
|
||||
sb.append(value);
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
return text;
|
||||
} catch (Throwable e) {
|
||||
Log.d("DeepL", e + "");
|
||||
}
|
||||
return text;
|
||||
}
|
||||
|
||||
private static Long getTimestamp(int iNumber) {
|
||||
var now = System.currentTimeMillis();
|
||||
return Long.valueOf((((long) iNumber) + now) - (now % ((long) iNumber)));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
package ru.vtosters.lite.translators;
|
||||
|
||||
import android.text.TextUtils;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.net.URLEncoder;
|
||||
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.Request;
|
||||
|
||||
public class GoogleTranslator extends BaseTranslator {
|
||||
|
||||
private static final OkHttpClient client = new OkHttpClient();
|
||||
private static final String[] devices = new String[]{
|
||||
"Linux; U; Android 10; Pixel 4",
|
||||
"Linux; U; Android 10; Pixel 4 XL",
|
||||
"Linux; U; Android 10; Pixel 4a",
|
||||
"Linux; U; Android 10; Pixel 4a XL",
|
||||
"Linux; U; Android 11; Pixel 4",
|
||||
"Linux; U; Android 11; Pixel 4 XL",
|
||||
"Linux; U; Android 11; Pixel 4a",
|
||||
"Linux; U; Android 11; Pixel 4a XL",
|
||||
"Linux; U; Android 11; Pixel 5",
|
||||
"Linux; U; Android 11; Pixel 5a",
|
||||
"Linux; U; Android 12; Pixel 4",
|
||||
"Linux; U; Android 12; Pixel 4 XL",
|
||||
"Linux; U; Android 12; Pixel 4a",
|
||||
"Linux; U; Android 12; Pixel 4a XL",
|
||||
"Linux; U; Android 12; Pixel 5",
|
||||
"Linux; U; Android 12; Pixel 5a",
|
||||
"Linux; U; Android 12; Pixel 6",
|
||||
"Linux; U; Android 12; Pixel 6 Pro",
|
||||
};
|
||||
|
||||
private static GoogleTranslator instance;
|
||||
|
||||
public static GoogleTranslator getInstance() {
|
||||
if (instance == null)
|
||||
instance = new GoogleTranslator();
|
||||
return instance;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public String translate(String text, String tl) {
|
||||
try {
|
||||
var request = new Request.a()
|
||||
.b("https://translate.googleapis.com/translate_a/single?dj=1" +
|
||||
"&q=" + URLEncoder.encode(text, "UTF-8") +
|
||||
"&sl=auto" +
|
||||
"&tl=" + tl +
|
||||
"&ie=UTF-8&oe=UTF-8&client=at&dt=t&otf=2")
|
||||
.a("User-Agent",
|
||||
"GoogleTranslate/6.28.0.05.421483610 (" + devices[(int) Math.round(Math.random() * (devices.length - 1))] + ")")
|
||||
.a();
|
||||
var payload = client.a(request).execute().a().g();
|
||||
if (!TextUtils.isEmpty(payload)) {
|
||||
var sb = new StringBuilder();
|
||||
var object = new JSONObject(payload);
|
||||
var array = object.getJSONArray("sentences");
|
||||
for (int i = 0; i < array.length(); i++) {
|
||||
sb.append(array.getJSONObject(i).getString("trans"));
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return text;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
package ru.vtosters.lite.translators;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.net.URLEncoder;
|
||||
import java.util.UUID;
|
||||
|
||||
import okhttp3.MediaType;
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.Request;
|
||||
import okhttp3.RequestBody;
|
||||
|
||||
public class YandexTranslator extends BaseTranslator {
|
||||
|
||||
private static final OkHttpClient client = new OkHttpClient();
|
||||
private static final String uuid = UUID.randomUUID().toString().replace("-", "");
|
||||
|
||||
private static YandexTranslator instance;
|
||||
|
||||
public static YandexTranslator getInstance() {
|
||||
if (instance == null)
|
||||
instance = new YandexTranslator();
|
||||
return instance;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public String translate(String text, String tl) {
|
||||
try {
|
||||
var request = new Request.a()
|
||||
.b("https://translate.yandex.net/api/v1/tr.json/translate?&srv=android&id=" + uuid + "-0-0")
|
||||
.a("User-Agent", "ru.yandex.translate/21.15.4.21402814 (Xiaomi Redmi K20 Pro; Android 11)")
|
||||
.a(RequestBody.a(MediaType.a("application/x-www-form-urlencoded"),
|
||||
"lang=" + tl + "&text=" + URLEncoder.encode(text, "UTF-8")))
|
||||
.a();
|
||||
var payload = client.a(request).execute().a().g();
|
||||
var json = new JSONObject(payload);
|
||||
if (!json.has("text") && json.has("message")) {
|
||||
Log.d("YandexTranslator", json.getString("message"));
|
||||
return text;
|
||||
}
|
||||
var array = json.getJSONArray("text");
|
||||
var sb = new StringBuilder();
|
||||
var length = array.length();
|
||||
for (int i = 0; i < length; i++) {
|
||||
sb.append(array.getString(i));
|
||||
}
|
||||
return sb.toString();
|
||||
} catch (Throwable e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return text;
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,6 @@ import static ru.vtosters.lite.utils.AndroidUtils.getPreferences;
|
||||
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
|
||||
import static ru.vtosters.lite.utils.Preferences.milkshake;
|
||||
import static ru.vtosters.lite.utils.Preferences.superapp;
|
||||
import static ru.vtosters.lite.utils.Preferences.useNewSettings;
|
||||
import static ru.vtosters.lite.utils.Preferences.videonewcatalog;
|
||||
import static ru.vtosters.lite.utils.Preferences.vkme;
|
||||
import static ru.vtosters.lite.utils.Preferences.vkme_notifs;
|
||||
@@ -43,6 +42,7 @@ import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import ru.vtosters.lite.ui.fragments.VTSettings;
|
||||
import ru.vtosters.lite.ui.items.DockBarTab;
|
||||
import ru.vtosters.lite.utils.AndroidUtils;
|
||||
|
||||
@@ -261,7 +261,7 @@ public class DockBarEditorManager {
|
||||
R.drawable.ic_settings_outline_28,
|
||||
R.string.menu_settings,
|
||||
R.id.menu_settings,
|
||||
useNewSettings());
|
||||
VTSettings.class);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,132 @@
|
||||
package ru.vtosters.lite.ui.dialogs;
|
||||
|
||||
import static ru.vtosters.lite.utils.AndroidUtils.dp2px;
|
||||
import static ru.vtosters.lite.utils.ThemesUtils.getTextAttr;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.util.TypedValue;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.RadioButton;
|
||||
import android.widget.RadioGroup;
|
||||
|
||||
import androidx.appcompat.view.ContextThemeWrapper;
|
||||
import androidx.appcompat.widget.SwitchCompat;
|
||||
|
||||
import com.vk.core.dialogs.alert.VkAlertDialog;
|
||||
|
||||
import ru.vtosters.lite.utils.LayoutUtils;
|
||||
|
||||
public class MessageSettings {
|
||||
public static Boolean isSilentEnabled = false;
|
||||
public static String bombCount = "0";
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
public static void argDialog(Context context) {
|
||||
LinearLayout mContainer = new LinearLayout(context);
|
||||
|
||||
RadioGroup rg = new RadioGroup(context);
|
||||
rg.setOrientation(LinearLayout.VERTICAL);
|
||||
rg.setPadding(dp2px(18f), dp2px(12f), dp2px(18f), 0);
|
||||
|
||||
RadioButton zero = new RadioButton(new ContextThemeWrapper(context, com.vtosters.lite.R.style.Widget_AppCompat_CompoundButton_RadioButton));
|
||||
RadioButton one = new RadioButton(new ContextThemeWrapper(context, com.vtosters.lite.R.style.Widget_AppCompat_CompoundButton_RadioButton));
|
||||
RadioButton two = new RadioButton(new ContextThemeWrapper(context, com.vtosters.lite.R.style.Widget_AppCompat_CompoundButton_RadioButton));
|
||||
RadioButton three = new RadioButton(new ContextThemeWrapper(context, com.vtosters.lite.R.style.Widget_AppCompat_CompoundButton_RadioButton));
|
||||
RadioButton four = new RadioButton(new ContextThemeWrapper(context, com.vtosters.lite.R.style.Widget_AppCompat_CompoundButton_RadioButton));
|
||||
RadioButton five = new RadioButton(new ContextThemeWrapper(context, com.vtosters.lite.R.style.Widget_AppCompat_CompoundButton_RadioButton));
|
||||
|
||||
rg.addView(zero);
|
||||
rg.addView(one);
|
||||
rg.addView(two);
|
||||
rg.addView(three);
|
||||
rg.addView(four);
|
||||
rg.addView(five);
|
||||
|
||||
zero.setTextSize(TypedValue.COMPLEX_UNIT_PX, dp2px(14f));
|
||||
one.setTextSize(TypedValue.COMPLEX_UNIT_PX, dp2px(14f));
|
||||
two.setTextSize(TypedValue.COMPLEX_UNIT_PX, dp2px(14f));
|
||||
three.setTextSize(TypedValue.COMPLEX_UNIT_PX, dp2px(14f));
|
||||
four.setTextSize(TypedValue.COMPLEX_UNIT_PX, dp2px(14f));
|
||||
five.setTextSize(TypedValue.COMPLEX_UNIT_PX, dp2px(14f));
|
||||
|
||||
zero.setText("Отключить");
|
||||
one.setText("15 секунд");
|
||||
two.setText("1 минута");
|
||||
three.setText("5 минут");
|
||||
four.setText("1 час");
|
||||
five.setText("24 часа");
|
||||
|
||||
zero.setTextColor(getTextAttr());
|
||||
one.setTextColor(getTextAttr());
|
||||
two.setTextColor(getTextAttr());
|
||||
three.setTextColor(getTextAttr());
|
||||
four.setTextColor(getTextAttr());
|
||||
five.setTextColor(getTextAttr());
|
||||
|
||||
switch (bombCount) {
|
||||
case "15s":
|
||||
one.setChecked(true);
|
||||
break;
|
||||
case "1m":
|
||||
two.setChecked(true);
|
||||
break;
|
||||
case "5m":
|
||||
three.setChecked(true);
|
||||
break;
|
||||
case "1h":
|
||||
four.setChecked(true);
|
||||
break;
|
||||
case "24h":
|
||||
five.setChecked(true);
|
||||
break;
|
||||
default:
|
||||
zero.setChecked(true);
|
||||
break;
|
||||
}
|
||||
|
||||
@SuppressLint("UseSwitchCompatOrMaterialCode")
|
||||
var silentSwitch = new SwitchCompat(new ContextThemeWrapper(context, com.vtosters.lite.R.style.Widget_AppCompat_CompoundButton_Switch));
|
||||
silentSwitch.setText("Бесшумные сообщения");
|
||||
silentSwitch.setTextSize(TypedValue.COMPLEX_UNIT_PX, dp2px(14f));
|
||||
silentSwitch.setTextColor(getTextAttr());
|
||||
silentSwitch.setChecked(isSilentEnabled);
|
||||
silentSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> {
|
||||
isSilentEnabled = isChecked;
|
||||
});
|
||||
|
||||
silentSwitch.setPadding(dp2px(24f), dp2px(12f), dp2px(18f), dp2px(12f));
|
||||
|
||||
mContainer.setLayoutParams(LayoutUtils.createLinear(-1, -1));
|
||||
mContainer.setOrientation(LinearLayout.VERTICAL);
|
||||
|
||||
mContainer.addView(rg, LayoutUtils.createLinear(-1, -2));
|
||||
mContainer.addView(silentSwitch, LayoutUtils.createLinear(-1, -2));
|
||||
|
||||
VkAlertDialog.Builder builder = new VkAlertDialog.Builder(context);
|
||||
builder.setTitle("Настройки отправки");
|
||||
builder.setMessage("Выберите время исчезновения сообщения");
|
||||
builder.setCancelable(true);
|
||||
builder.setNegativeButton("Отмена", null);
|
||||
builder.setView(mContainer);
|
||||
builder.setPositiveButton("Применить", (dialog, which) -> {
|
||||
var checked = rg.getCheckedRadioButtonId();
|
||||
|
||||
if (checked == zero.getId()) {
|
||||
bombCount = "0";
|
||||
} else if (checked == one.getId()) {
|
||||
bombCount = "15s";
|
||||
} else if (checked == two.getId()) {
|
||||
bombCount = "1m";
|
||||
} else if (checked == three.getId()) {
|
||||
bombCount = "5m";
|
||||
} else if (checked == four.getId()) {
|
||||
bombCount = "1h";
|
||||
} else if (checked == five.getId()) {
|
||||
bombCount = "24h";
|
||||
}
|
||||
});
|
||||
|
||||
builder.show();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
package ru.vtosters.lite.ui.dialogs;
|
||||
|
||||
import static ru.vtosters.lite.utils.AndroidUtils.sendToast;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.util.Log;
|
||||
|
||||
import com.vk.core.dialogs.alert.VkAlertDialog;
|
||||
|
||||
import ru.vtosters.lite.translators.BaseTranslator;
|
||||
|
||||
public class Translate {
|
||||
public static void showTranslatedText(Context context, String text) {
|
||||
new Thread(() -> {
|
||||
try {
|
||||
var translation = BaseTranslator.getInstance().getTranslation(text);
|
||||
new Handler(Looper.getMainLooper()).post(() -> {
|
||||
showDialog(context, translation);
|
||||
});
|
||||
} catch (Exception e) {
|
||||
Log.e("Translate", e + "");
|
||||
}
|
||||
}).start();
|
||||
}
|
||||
|
||||
private static void showDialog(Context context, String text) {
|
||||
VkAlertDialog.Builder alertDialog = new VkAlertDialog.Builder(context);
|
||||
alertDialog.setTitle("Переводчик");
|
||||
alertDialog.setMessage(text);
|
||||
alertDialog.setPositiveButton("Закрыть", (dialog, which) -> {
|
||||
dialog.cancel();
|
||||
});
|
||||
alertDialog.setNeutralButton("Скопировать", (dialog, which) -> {
|
||||
android.content.ClipboardManager clipboard = (android.content.ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
|
||||
android.content.ClipData clip = android.content.ClipData.newPlainText("Copied Text", text);
|
||||
clipboard.setPrimaryClip(clip);
|
||||
sendToast("Скопировано в буфер обмена");
|
||||
});
|
||||
var alert = alertDialog.create();
|
||||
alert.show();
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,8 @@
|
||||
package ru.vtosters.lite.ui.fragments;
|
||||
|
||||
import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier;
|
||||
import static ru.vtosters.lite.utils.Preferences.copyright_post;
|
||||
import static ru.vtosters.lite.utils.Preferences.offline;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
@@ -22,6 +24,13 @@ public class FeedFragment extends MaterialPreferenceToolbarFragment {
|
||||
|
||||
private void prefs() {
|
||||
findPreference("officialnewssett").setOnPreferenceClickListener(new openofficialsett());
|
||||
findPreference("cringecopyright").setEnabled(!copyright_post());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onPreferenceTreeClick(Preference preference) {
|
||||
findPreference("cringecopyright").setEnabled(!copyright_post());
|
||||
return super.onPreferenceTreeClick(preference);
|
||||
}
|
||||
|
||||
public class openofficialsett implements Preference.OnPreferenceClickListener {
|
||||
|
||||
@@ -20,6 +20,7 @@ public class InterfaceFragment extends MaterialPreferenceToolbarFragment {
|
||||
private void prefs() {
|
||||
findPreference("stories").setOnPreferenceClickListener(new restart());
|
||||
findPreference("swipe").setOnPreferenceClickListener(new restart());
|
||||
findPreference("is_likes_on_right").setOnPreferenceClickListener(new restart());
|
||||
}
|
||||
|
||||
public boolean restart(Preference preference) {
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
package ru.vtosters.lite.ui.fragments;
|
||||
|
||||
import static ru.vtosters.lite.music.Scrobbler.isLoggedIn;
|
||||
import static ru.vtosters.lite.utils.AccountManagerUtils.getUserToken;
|
||||
import static ru.vtosters.lite.utils.AndroidUtils.dp2px;
|
||||
import static ru.vtosters.lite.utils.AndroidUtils.edit;
|
||||
import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier;
|
||||
import static ru.vtosters.lite.utils.AndroidUtils.getPreferences;
|
||||
import static ru.vtosters.lite.utils.AndroidUtils.sendToast;
|
||||
import static ru.vtosters.lite.utils.LifecycleUtils.restartApplicationWithTimer;
|
||||
import static ru.vtosters.lite.utils.ThemesUtils.getAccentColor;
|
||||
import static ru.vtosters.lite.utils.ThemesUtils.getAlertStyle;
|
||||
@@ -15,6 +17,7 @@ import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.res.ColorStateList;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.EditText;
|
||||
@@ -25,10 +28,15 @@ import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.preference.Preference;
|
||||
|
||||
import com.vk.core.dialogs.alert.VkAlertDialog;
|
||||
import com.vk.core.network.Network;
|
||||
import com.vtosters.lite.general.fragments.MaterialPreferenceToolbarFragment;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
|
||||
import okhttp3.Headers;
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.Request;
|
||||
import ru.vtosters.lite.downloaders.VideoDownloader;
|
||||
import ru.vtosters.lite.music.Scrobbler;
|
||||
import ru.vtosters.lite.ui.adapters.ImagineArrayAdapter;
|
||||
@@ -107,6 +115,30 @@ public class MediaFragment extends MaterialPreferenceToolbarFragment {
|
||||
alert.getButton(DialogInterface.BUTTON_POSITIVE).setTextColor(getAccentColor());
|
||||
}
|
||||
|
||||
public static void deleteVideoHistory() {
|
||||
Thread thread = new Thread(() -> {
|
||||
try {
|
||||
var request = new Request.a()
|
||||
.b("https://api.vk.com/method/" + "video.clearViewingHistoryRecords" + "?https=1" + "&access_token=" + getUserToken() + "&v=5.187")
|
||||
.a(Headers.a("User-Agent", Network.l.c().a(), "Content-Type", "application/x-www-form-urlencoded; charset=utf-8"))
|
||||
.a();
|
||||
|
||||
try {
|
||||
var response = new OkHttpClient().a(request).execute().a().g();
|
||||
Log.d("VideoHistory", response);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
});
|
||||
|
||||
thread.start();
|
||||
|
||||
sendToast("История просмотра видео очищена");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle bundle) {
|
||||
super.onCreate(bundle);
|
||||
@@ -116,6 +148,10 @@ public class MediaFragment extends MaterialPreferenceToolbarFragment {
|
||||
|
||||
private void prefs() {
|
||||
findPreference("download_video").setOnPreferenceClickListener(new MediaFragment.download());
|
||||
findPreference("clearvideohistory").setOnPreferenceClickListener(preference -> {
|
||||
deleteVideoHistory();
|
||||
return true;
|
||||
});
|
||||
findPreference("dateformat").setOnPreferenceChangeListener(new MediaFragment.restart());
|
||||
findPreference("lastfm_auth").setOnPreferenceClickListener(preference -> {
|
||||
if (isLoggedIn()) {
|
||||
|
||||
@@ -1,17 +1,26 @@
|
||||
package ru.vtosters.lite.ui.fragments;
|
||||
|
||||
import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier;
|
||||
import static ru.vtosters.lite.utils.AndroidUtils.getPreferences;
|
||||
import static ru.vtosters.lite.utils.LifecycleUtils.restartApplicationWithTimer;
|
||||
import static ru.vtosters.lite.utils.Preferences.autoalltranslate;
|
||||
import static ru.vtosters.lite.utils.Preferences.offline;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.widget.ListView;
|
||||
|
||||
import androidx.preference.Preference;
|
||||
|
||||
import com.vk.core.dialogs.alert.VkAlertDialog;
|
||||
import com.vk.navigation.Navigator;
|
||||
import com.vtosters.lite.general.fragments.MaterialPreferenceToolbarFragment;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import ru.vtosters.lite.ui.adapters.ImagineArrayAdapter;
|
||||
import ru.vtosters.lite.ui.wallpapers.WallpaperMenuFragment;
|
||||
|
||||
public class MessagesFragment extends MaterialPreferenceToolbarFragment {
|
||||
@@ -27,6 +36,37 @@ public class MessagesFragment extends MaterialPreferenceToolbarFragment {
|
||||
findPreference("vkme_notifs").setOnPreferenceClickListener(new MessagesFragment.restart());
|
||||
findPreference("systememoji").setOnPreferenceClickListener(new MessagesFragment.restart());
|
||||
findPreference("wallpapers").setOnPreferenceClickListener(new MessagesFragment.openwp());
|
||||
|
||||
findPreference("autotranslate").setEnabled(!autoalltranslate());
|
||||
|
||||
findPreference("lang_service").setOnPreferenceClickListener(preference -> {
|
||||
var items = Arrays.asList(
|
||||
new ImagineArrayAdapter.ImagineArrayAdapterItem(getIdentifier("ic_yandex_translate_icon", "drawable"), "Yandex Translate"),
|
||||
new ImagineArrayAdapter.ImagineArrayAdapterItem(getIdentifier("ic_google_translate_logo", "drawable"), "Google Translate")
|
||||
// new ImagineArrayAdapter.ImagineArrayAdapterItem(getIdentifier("ic_deepl_logo_icon", "drawable"), "DeepL")
|
||||
);
|
||||
|
||||
var alert = new VkAlertDialog.Builder(getActivity())
|
||||
.create();
|
||||
|
||||
var listView = (ListView) LayoutInflater.from(getContext()).inflate(com.vtosters.lite.R.layout.abc_select_dialog_material, null, false);
|
||||
var adapter = new ImagineArrayAdapter(getContext(), items, i -> {
|
||||
getPreferences().edit().putInt("translator", i).apply();
|
||||
alert.dismiss();
|
||||
});
|
||||
adapter.setSelected(getPreferences().getInt("translator", 0));
|
||||
listView.setAdapter(adapter);
|
||||
alert.setView(listView);
|
||||
alert.show();
|
||||
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onPreferenceTreeClick(Preference preference) {
|
||||
findPreference("autotranslate").setEnabled(!autoalltranslate());
|
||||
return super.onPreferenceTreeClick(preference);
|
||||
}
|
||||
|
||||
public boolean restart(Preference preference) {
|
||||
|
||||
@@ -11,10 +11,8 @@ import static ru.vtosters.lite.utils.AccountManagerUtils.getUserToken;
|
||||
import static ru.vtosters.lite.utils.AndroidUtils.dp2px;
|
||||
import static ru.vtosters.lite.utils.AndroidUtils.getDefaultPrefs;
|
||||
import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier;
|
||||
import static ru.vtosters.lite.utils.AndroidUtils.getPrefsValue;
|
||||
import static ru.vtosters.lite.utils.CacheUtils.deleteCache;
|
||||
import static ru.vtosters.lite.utils.LifecycleUtils.restartApplication;
|
||||
import static ru.vtosters.lite.utils.ThemesUtils.getAccentColor;
|
||||
import static ru.vtosters.lite.utils.ThemesUtils.getTextAttr;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
@@ -22,7 +20,6 @@ import android.app.Activity;
|
||||
import android.content.ClipData;
|
||||
import android.content.ClipboardManager;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
@@ -34,7 +31,6 @@ import android.widget.RadioButton;
|
||||
import android.widget.RadioGroup;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.appcompat.view.ContextThemeWrapper;
|
||||
import androidx.preference.Preference;
|
||||
|
||||
@@ -43,7 +39,6 @@ import com.vk.core.dialogs.alert.VkAlertDialog;
|
||||
import com.vk.core.util.ToastUtils;
|
||||
import com.vk.im.engine.ImEngine1;
|
||||
import com.vk.im.engine.ImEngineExt;
|
||||
import com.vk.im.engine.models.Sticker;
|
||||
import com.vk.im.ui.providers.audiomsg.ImAudioMsgPlayerProvider;
|
||||
import com.vk.im.ui.providers.audiomsg.PlayerActionSources;
|
||||
import com.vk.imageloader.VKImageLoader;
|
||||
@@ -58,7 +53,6 @@ import com.vtosters.lite.im.ImEngineProvider;
|
||||
import java.io.IOException;
|
||||
|
||||
import b.h.g.m.FileUtils;
|
||||
import ru.vtosters.lite.music.Scrobbler;
|
||||
import ru.vtosters.lite.ui.activities.VKAdminTokenActivity;
|
||||
import ru.vtosters.lite.ui.components.BackupManager;
|
||||
import ru.vtosters.lite.utils.AndroidUtils;
|
||||
@@ -102,7 +96,7 @@ public class OtherFragment extends MaterialPreferenceToolbarFragment {
|
||||
});
|
||||
|
||||
var pref = getDefaultPrefs().getString("autoclearcache", "Default");
|
||||
switch(pref) {
|
||||
switch (pref) {
|
||||
case "Default":
|
||||
findPreference("autoclearcache").setSummary("Не включено");
|
||||
break;
|
||||
@@ -228,47 +222,47 @@ public class OtherFragment extends MaterialPreferenceToolbarFragment {
|
||||
private void cacheCleanDialog() {
|
||||
VkAlertDialog.Builder builder = new VkAlertDialog.Builder(getContext());
|
||||
builder.setTitle("Выберите что вы хотите очистить");
|
||||
builder.setItems(new String[]{"Очистить весь кэш", "Очистить кеш стикеров", "Очистить кеш изображений", "Очистить кеш видео", "Очистить кеш сообщений", "Очистить кеш WebView" }, (dialog, which) -> {
|
||||
switch(which) {
|
||||
case 0: {
|
||||
SharedPreferences prefs2 = getContext().getSharedPreferences("stickers_storage", Context.MODE_PRIVATE);
|
||||
prefs2.edit().clear().commit();
|
||||
new WebView(getActivity()).clearCache(true);
|
||||
VKImageLoader.e();
|
||||
ImEngineProvider.b().a();
|
||||
ImAudioMsgPlayerProvider.b().e(PlayerActionSources.a);
|
||||
ImAudioMsgPlayerProvider.b().d(PlayerActionSources.a);
|
||||
FileUtils.l();
|
||||
Stickers.l.c();
|
||||
ImEngineExt.a(ImEngine1.a());
|
||||
AutoPlayCacheHolder.d.a();
|
||||
MediaStorage.a();
|
||||
deleteCache();
|
||||
break;
|
||||
}
|
||||
case 1: {
|
||||
SharedPreferences prefs2 = getContext().getSharedPreferences("stickers_storage", Context.MODE_PRIVATE);
|
||||
prefs2.edit().clear().commit();
|
||||
Stickers.l.c();
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
VKImageLoader.e();
|
||||
ImEngineExt.a(ImEngine1.a());
|
||||
break;
|
||||
case 3:
|
||||
AutoPlayCacheHolder.d.a();
|
||||
MediaStorage.a();
|
||||
break;
|
||||
case 4:
|
||||
ImEngineProvider.b().a();
|
||||
ImAudioMsgPlayerProvider.b().e(PlayerActionSources.a);
|
||||
ImAudioMsgPlayerProvider.b().d(PlayerActionSources.a);
|
||||
break;
|
||||
case 5:
|
||||
new WebView(getActivity()).clearCache(true);
|
||||
break;
|
||||
builder.setItems(new String[]{"Очистить весь кеш", "Очистить кеш стикеров", "Очистить кеш изображений", "Очистить кеш видео", "Очистить кеш сообщений", "Очистить кеш WebView"}, (dialog, which) -> {
|
||||
switch (which) {
|
||||
case 0: {
|
||||
SharedPreferences prefs2 = getContext().getSharedPreferences("stickers_storage", Context.MODE_PRIVATE);
|
||||
prefs2.edit().clear().commit();
|
||||
new WebView(getActivity()).clearCache(true);
|
||||
VKImageLoader.e();
|
||||
ImEngineProvider.b().a();
|
||||
ImAudioMsgPlayerProvider.b().e(PlayerActionSources.a);
|
||||
ImAudioMsgPlayerProvider.b().d(PlayerActionSources.a);
|
||||
FileUtils.l();
|
||||
Stickers.l.c();
|
||||
ImEngineExt.a(ImEngine1.a());
|
||||
AutoPlayCacheHolder.d.a();
|
||||
MediaStorage.a();
|
||||
deleteCache();
|
||||
break;
|
||||
}
|
||||
case 1: {
|
||||
SharedPreferences prefs2 = getContext().getSharedPreferences("stickers_storage", Context.MODE_PRIVATE);
|
||||
prefs2.edit().clear().commit();
|
||||
Stickers.l.c();
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
VKImageLoader.e();
|
||||
ImEngineExt.a(ImEngine1.a());
|
||||
break;
|
||||
case 3:
|
||||
AutoPlayCacheHolder.d.a();
|
||||
MediaStorage.a();
|
||||
break;
|
||||
case 4:
|
||||
ImEngineProvider.b().a();
|
||||
ImAudioMsgPlayerProvider.b().e(PlayerActionSources.a);
|
||||
ImAudioMsgPlayerProvider.b().d(PlayerActionSources.a);
|
||||
break;
|
||||
case 5:
|
||||
new WebView(getActivity()).clearCache(true);
|
||||
break;
|
||||
}
|
||||
|
||||
Toast.makeText(getContext(), "Кеш очищен", LENGTH_SHORT).show();
|
||||
});
|
||||
@@ -341,6 +335,7 @@ public class OtherFragment extends MaterialPreferenceToolbarFragment {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public static class saveprefs implements Preference.OnPreferenceClickListener {
|
||||
saveprefs() {
|
||||
}
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
package ru.vtosters.lite.ui.fragments;
|
||||
|
||||
import static com.vk.bridges.AuthBridge.logout;
|
||||
import static ru.vtosters.lite.ui.PreferencesUtil.addListPreferenceIcon;
|
||||
import static ru.vtosters.lite.ui.PreferencesUtil.addMaterialSwitchPreference;
|
||||
import static ru.vtosters.lite.ui.PreferencesUtil.addPreference;
|
||||
import static ru.vtosters.lite.ui.PreferencesUtil.addPreferenceCategory;
|
||||
@@ -17,8 +15,6 @@ import static ru.vtosters.lite.utils.AndroidUtils.getPrefsValue;
|
||||
import static ru.vtosters.lite.utils.CacheUtils.humanReadableByteCountBin;
|
||||
import static ru.vtosters.lite.utils.GmsUtils.isGmsInstalled;
|
||||
import static ru.vtosters.lite.utils.ImageUtils.getDrawableFromUrl;
|
||||
import static ru.vtosters.lite.utils.LifecycleUtils.restartApplication;
|
||||
import static ru.vtosters.lite.utils.Preferences.DoNotUseOldIcons;
|
||||
import static ru.vtosters.lite.utils.Preferences.ads;
|
||||
import static ru.vtosters.lite.utils.Preferences.devmenu;
|
||||
import static ru.vtosters.lite.utils.Preferences.disableSettingsSumms;
|
||||
@@ -50,7 +46,9 @@ import com.vk.balance.BalanceFragment;
|
||||
import com.vk.navigation.Navigator;
|
||||
import com.vk.notifications.settings.NotificationsSettingsFragment;
|
||||
import com.vk.webapp.fragments.PrivacyFragment;
|
||||
import com.vtosters.lite.MainActivity;
|
||||
import com.vtosters.lite.auth.VKAccountManager;
|
||||
import com.vtosters.lite.auth.VKAuth;
|
||||
import com.vtosters.lite.fragments.money.music.control.subscription.MusicSubscriptionControlFragment;
|
||||
import com.vtosters.lite.fragments.n2.SettingsDebugFragment;
|
||||
import com.vtosters.lite.fragments.w2.BlacklistFragment;
|
||||
@@ -149,14 +147,22 @@ public class VTSettings extends MaterialPreferenceToolbarFragment {
|
||||
this.addPreferencesFromResource(vtosterXml);
|
||||
|
||||
addPreferenceDrawable(this, "", getUsername(), hasVerification() ? AndroidUtils.getString("thanksfordonate") : AndroidUtils.getString("getdonate"), getDrawableFromUrl(getUserPhoto(), "ic_user_circle_outline_28", true, true), preference -> {
|
||||
logout();
|
||||
restartApplication();
|
||||
try {
|
||||
VKAuth.a("logout", false);
|
||||
} catch (Exception ignored) { }
|
||||
|
||||
var intent = new Intent(getContext(), MainActivity.class);
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
getContext().startActivity(intent);
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
addPreferenceCategory(this, AndroidUtils.getString("vtsettdarktheme"));
|
||||
|
||||
addMaterialSwitchPreference(this, "isdark", AndroidUtils.getString("vtsettdarktheme"), "", !DoNotUseOldIcons() ? "ic_palette_24" : "ic_palette_outline_28", false, (preference, o) -> {
|
||||
addMaterialSwitchPreference(this, "isdark", AndroidUtils.getString("vtsettdarktheme"), "", "ic_palette_outline_28", false, (preference, o) -> {
|
||||
boolean value = (boolean) o;
|
||||
|
||||
if (!value) { // inverted
|
||||
@@ -170,7 +176,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment {
|
||||
});
|
||||
|
||||
if (Build.VERSION.SDK_INT >= 28 && false) { // TODO refactoring system theme
|
||||
addMaterialSwitchPreference(this, "systemtheme", AndroidUtils.getString("appearance_theme_use_system"), AndroidUtils.getString("appearance_theme_use_system_summary"), !DoNotUseOldIcons() ? "ic_recent_24" : "ic_recent_outline_28", true, (preference, o) -> {
|
||||
addMaterialSwitchPreference(this, "systemtheme", AndroidUtils.getString("appearance_theme_use_system"), AndroidUtils.getString("appearance_theme_use_system_summary"), "ic_recent_outline_28", true, (preference, o) -> {
|
||||
boolean value = (boolean) o;
|
||||
|
||||
edit().putBoolean("systemtheme", value).commit();
|
||||
@@ -191,7 +197,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment {
|
||||
if (devmenu()) {
|
||||
addPreferenceCategory(this, AndroidUtils.getString("sett_debug"));
|
||||
|
||||
addPreference(this, "", AndroidUtils.getString("sett_debug"), "", !DoNotUseOldIcons() ? "ic_bug_24" : "ic_bug_outline_28", preference -> {
|
||||
addPreference(this, "", AndroidUtils.getString("sett_debug"), "", "ic_bug_outline_28", preference -> {
|
||||
Context context = getContext();
|
||||
Intent a2 = new Navigator(SettingsDebugFragment.class).b(context);
|
||||
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
@@ -199,7 +205,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment {
|
||||
return false;
|
||||
});
|
||||
|
||||
addMaterialSwitchPreference(this, "ssl", AndroidUtils.getString("debug_developer_force_ssl"), AndroidUtils.getString("debug_developer_force_ssl_summary"), !DoNotUseOldIcons() ? "ic_globe_20" : "ic_globe_outline_28", true, (preference, o) -> {
|
||||
addMaterialSwitchPreference(this, "ssl", AndroidUtils.getString("debug_developer_force_ssl"), AndroidUtils.getString("debug_developer_force_ssl_summary"), "ic_globe_outline_28", true, (preference, o) -> {
|
||||
boolean value = (boolean) o;
|
||||
edit().putBoolean("ssl", value).commit();
|
||||
return true;
|
||||
@@ -208,7 +214,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment {
|
||||
|
||||
addPreferenceCategory(this, AndroidUtils.getString("vtsettaccount"));
|
||||
|
||||
addPreference(this, "", AndroidUtils.getString("vkconnect"), "", !DoNotUseOldIcons() ? "ic_tags_24" : "ic_user_circle_outline_28", preference -> {
|
||||
addPreference(this, "", AndroidUtils.getString("vkconnect"), "", "ic_user_circle_outline_28", preference -> {
|
||||
Context context = getContext();
|
||||
VKUIwrapper.officalLinks("account");
|
||||
Intent a2 = new Navigator(VKUIwrapper.class).b(context);
|
||||
@@ -217,7 +223,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment {
|
||||
return false;
|
||||
});
|
||||
|
||||
addPreference(this, "", AndroidUtils.getString("privacy_settings"), "", !DoNotUseOldIcons() ? "ic_privacy_24" : "ic_privacy_outline_28", preference -> {
|
||||
addPreference(this, "", AndroidUtils.getString("privacy_settings"), "", "ic_privacy_outline_28", preference -> {
|
||||
Context context = getContext();
|
||||
Intent a2 = new Navigator(PrivacyFragment.class).b(context);
|
||||
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
@@ -225,7 +231,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment {
|
||||
return false;
|
||||
});
|
||||
|
||||
addPreference(this, "", AndroidUtils.getString("sett_account"), "", !DoNotUseOldIcons() ? "ic_user_24" : "ic_user_outline_28", preference -> {
|
||||
addPreference(this, "", AndroidUtils.getString("sett_account"), "", "ic_user_outline_28", preference -> {
|
||||
Context context = getContext();
|
||||
Intent a2 = new Navigator(SettingsAccountFragment.class).b(context);
|
||||
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
@@ -234,7 +240,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment {
|
||||
});
|
||||
|
||||
if (isVKTester()) {
|
||||
addPreference(this, "", AndroidUtils.getString("bugs"), "", !DoNotUseOldIcons() ? "ic_bug_24" : "ic_bug_outline_28", preference -> {
|
||||
addPreference(this, "", AndroidUtils.getString("bugs"), "", "ic_bug_outline_28", preference -> {
|
||||
Context context = getContext();
|
||||
VKUIwrapper.officalLinks("bugs");
|
||||
Intent a2 = new Navigator(VKUIwrapper.class).b(context);
|
||||
@@ -244,7 +250,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment {
|
||||
});
|
||||
}
|
||||
|
||||
addPreference(this, "", AndroidUtils.getString("vtssfs"), ssfs, !DoNotUseOldIcons() ? "ic_link_24" : "ic_link_circle_outline_28", preference -> {
|
||||
addPreference(this, "", AndroidUtils.getString("vtssfs"), ssfs, "ic_link_circle_outline_28", preference -> {
|
||||
Context context = getContext();
|
||||
VKUIwrapper.setLink(SSFSUtils.getSSFSLink());
|
||||
Intent a2 = new Navigator(VKUIwrapper.class).b(context);
|
||||
@@ -255,7 +261,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment {
|
||||
|
||||
addPreferenceCategory(this, AndroidUtils.getString("notification_settings"));
|
||||
|
||||
addPreference(this, "", AndroidUtils.getString("sett_general"), "", !DoNotUseOldIcons() ? "ic_settings_24" : "ic_settings_outline_28", preference -> {
|
||||
addPreference(this, "", AndroidUtils.getString("sett_general"), "", "ic_settings_outline_28", preference -> {
|
||||
Context context = getContext();
|
||||
Intent a2 = new Navigator(SettingsGeneralFragment.class).b(context);
|
||||
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
@@ -263,7 +269,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment {
|
||||
return false;
|
||||
});
|
||||
|
||||
addPreference(this, "", AndroidUtils.getString("blacklist"), "", !DoNotUseOldIcons() ? "ic_users_24" : "ic_users_outline_28", preference -> {
|
||||
addPreference(this, "", AndroidUtils.getString("blacklist"), "", "ic_users_outline_28", preference -> {
|
||||
Context context = getContext();
|
||||
Intent a2 = new Navigator(BlacklistFragment.class).b(context);
|
||||
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
@@ -271,7 +277,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment {
|
||||
return false;
|
||||
});
|
||||
|
||||
addPreference(this, "", AndroidUtils.getString("sett_notifications"), "", !DoNotUseOldIcons() ? "ic_notification_24" : "ic_menu_notification_outline_28", preference -> {
|
||||
addPreference(this, "", AndroidUtils.getString("sett_notifications"), "", "ic_menu_notification_outline_28", preference -> {
|
||||
Context context = getContext();
|
||||
Intent a2 = new Navigator(NotificationsSettingsFragment.class).b(context);
|
||||
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
@@ -280,7 +286,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment {
|
||||
});
|
||||
|
||||
if (VKAccountManager.d().isMusicSubs()) {
|
||||
addPreference(this, "", AndroidUtils.getString("subscription_music"), "", !DoNotUseOldIcons() ? "ic_music_24" : "ic_music_outline_28", preference -> {
|
||||
addPreference(this, "", AndroidUtils.getString("subscription_music"), "", "ic_music_outline_28", preference -> {
|
||||
Context context = getContext();
|
||||
Intent a2 = new Navigator(MusicSubscriptionControlFragment.class).b(context);
|
||||
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
@@ -289,7 +295,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment {
|
||||
});
|
||||
}
|
||||
|
||||
addPreference(this, "", AndroidUtils.getString("votes"), "", !DoNotUseOldIcons() ? "ic_coins_24" : "ic_coins_outline_28", preference -> {
|
||||
addPreference(this, "", AndroidUtils.getString("votes"), "", "ic_coins_outline_28", preference -> {
|
||||
Context context = getContext();
|
||||
Intent a2 = new Navigator(BalanceFragment.class).b(context);
|
||||
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
@@ -300,7 +306,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment {
|
||||
addPreferenceCategory(this, AndroidUtils.getString("vtsettmod"));
|
||||
|
||||
if (!vkme()) {
|
||||
addPreference(this, "", AndroidUtils.getString("vtlfeed"), feedsumm, !DoNotUseOldIcons() ? "ic_newsfeed_24" : "ic_newsfeed_outline_28", preference -> {
|
||||
addPreference(this, "", AndroidUtils.getString("vtlfeed"), feedsumm, "ic_newsfeed_outline_28", preference -> {
|
||||
Context context = getContext();
|
||||
Intent a2 = new Navigator(FeedFragment.class).b(context);
|
||||
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
@@ -308,7 +314,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment {
|
||||
return false;
|
||||
});
|
||||
|
||||
addPreference(this, "", AndroidUtils.getString("dockbar_editor"), docksumm, !DoNotUseOldIcons() ? "ic_list_24" : "ic_list_outline_28", preference -> {
|
||||
addPreference(this, "", AndroidUtils.getString("dockbar_editor"), docksumm, "ic_list_outline_28", preference -> {
|
||||
Context context = getContext();
|
||||
Intent intent = new Navigator(DockBarEditorFragment.class).b(context);
|
||||
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
@@ -317,7 +323,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment {
|
||||
});
|
||||
|
||||
if (milkshake() && superapp()) {
|
||||
addPreference(this, "", "Редактор Superapp", superapp, "ic_explore_outline_28", (preference) -> {
|
||||
addPreference(this, "", AndroidUtils.getString("superapp_editor"), superapp, "ic_services_outline_28", (preference) -> {
|
||||
Context context = getContext();
|
||||
Intent intent = new Navigator(SuperAppEditorFragment.class).b(context);
|
||||
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
@@ -326,7 +332,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment {
|
||||
});
|
||||
}
|
||||
} else {
|
||||
addPreference(this, "", "Внимание!", "Некоторые пункты настроек были скрыты из-за режима VK Me \n\nДля отключения режима перейдите в настройки Сообщений", !DoNotUseOldIcons() ? "ic_about_24" : "ic_about_outline_28", preference -> false);
|
||||
addPreference(this, "", "Внимание!", "Некоторые пункты настроек были скрыты из-за режима VK Me \n\nДля отключения режима перейдите в настройки Сообщений", "ic_about_outline_28", preference -> false);
|
||||
}
|
||||
|
||||
addPreference(this, "", AndroidUtils.getString("vtlmedia"), mediasumm, "ic_media_outline_28", preference -> {
|
||||
@@ -337,7 +343,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment {
|
||||
return false;
|
||||
});
|
||||
|
||||
addPreference(this, "", AndroidUtils.getString("vtlmessages"), msgsumm, !DoNotUseOldIcons() ? "ic_message_24" : "ic_message_outline_28", preference -> {
|
||||
addPreference(this, "", AndroidUtils.getString("vtlmessages"), msgsumm, "ic_message_outline_28", preference -> {
|
||||
Context context = getContext();
|
||||
Intent a2 = new Navigator(MessagesFragment.class).b(context);
|
||||
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
@@ -345,7 +351,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment {
|
||||
return false;
|
||||
});
|
||||
|
||||
addPreference(this, "", AndroidUtils.getString("vtlactivity"), activitysumm, !DoNotUseOldIcons() ? "ic_write_24" : "ic_write_outline_28_new_accent", preference -> {
|
||||
addPreference(this, "", AndroidUtils.getString("vtlactivity"), activitysumm, "ic_write_outline_28_new_accent", preference -> {
|
||||
Context context = getContext();
|
||||
Intent a2 = new Navigator(ActivityFragment.class).b(context);
|
||||
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
@@ -353,7 +359,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment {
|
||||
return false;
|
||||
});
|
||||
|
||||
addPreference(this, "", AndroidUtils.getString("vtlthemes"), themessumm, !DoNotUseOldIcons() ? "ic_palette_24" : "ic_write_outline_24", preference -> {
|
||||
addPreference(this, "", AndroidUtils.getString("vtlthemes"), themessumm, "ic_write_outline_28", preference -> {
|
||||
Context context = getContext();
|
||||
Intent a2 = new Navigator(ThemesFragment.class).b(context);
|
||||
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
@@ -361,7 +367,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment {
|
||||
return false;
|
||||
});
|
||||
|
||||
addPreference(this, "", AndroidUtils.getString("vtltgs"), tgssumm, !DoNotUseOldIcons() ? "ic_telegram_24" : "ic_telegram_outline_28", preference -> {
|
||||
addPreference(this, "", AndroidUtils.getString("vtltgs"), tgssumm, "ic_telegram_outline_28", preference -> {
|
||||
Context context = getContext();
|
||||
Intent a2 = new Navigator(StickersFragment.class).b(context);
|
||||
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
@@ -369,7 +375,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment {
|
||||
return false;
|
||||
});
|
||||
|
||||
addPreference(this, "", AndroidUtils.getString("vtlinterface"), interfacesumm, !DoNotUseOldIcons() ? "ic_interface_24" : "ic_interface_outline_28", preference -> {
|
||||
addPreference(this, "", AndroidUtils.getString("vtlinterface"), interfacesumm, "ic_interface_outline_28", preference -> {
|
||||
Context context = getContext();
|
||||
Intent a2 = new Navigator(InterfaceFragment.class).b(context);
|
||||
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
@@ -377,7 +383,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment {
|
||||
return false;
|
||||
});
|
||||
|
||||
addPreference(this, "", AndroidUtils.getString("vtlproxy"), proxysumm, !DoNotUseOldIcons() ? "ic_globe_20" : "ic_globe_outline_28", preference -> {
|
||||
addPreference(this, "", AndroidUtils.getString("vtlproxy"), proxysumm, "ic_globe_outline_28", preference -> {
|
||||
Context context = getContext();
|
||||
Intent a2 = new Navigator(ProxySettingsFragment.class).b(context);
|
||||
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
@@ -385,7 +391,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment {
|
||||
return false;
|
||||
});
|
||||
|
||||
addPreference(this, "", AndroidUtils.getString("vtlother"), othersumm, !DoNotUseOldIcons() ? "ic_more_24" : "ic_more_horizontal_28", preference -> {
|
||||
addPreference(this, "", AndroidUtils.getString("vtlother"), othersumm, "ic_more_horizontal_28", preference -> {
|
||||
Context context = getContext();
|
||||
Intent a2 = new Navigator(OtherFragment.class).b(context);
|
||||
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
@@ -395,7 +401,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment {
|
||||
|
||||
addPreferenceCategory(this, AndroidUtils.getString("vtsettaboutmod"));
|
||||
|
||||
addPreference(this, "", AndroidUtils.getString("menu_about"), about, !DoNotUseOldIcons() ? "ic_about_24" : "ic_about_outline_28", preference -> {
|
||||
addPreference(this, "", AndroidUtils.getString("menu_about"), about, "ic_about_outline_28", preference -> {
|
||||
Context context = getContext();
|
||||
Intent a2 = new Navigator(AboutAppFragment.class).b(context);
|
||||
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
@@ -403,17 +409,17 @@ public class VTSettings extends MaterialPreferenceToolbarFragment {
|
||||
return false;
|
||||
});
|
||||
|
||||
addPreference(this, "", AndroidUtils.getString("opencommit"), "", !DoNotUseOldIcons() ? "ic_link_24" : "ic_link_outline_28", preference -> {
|
||||
addPreference(this, "", AndroidUtils.getString("opencommit"), "", "ic_link_outline_28", preference -> {
|
||||
getContext().startActivity(new Intent("android.intent.action.VIEW").setData(Uri.parse(getCommitLink())));
|
||||
return false;
|
||||
});
|
||||
|
||||
addPreference(this, "", AndroidUtils.getString("vtfaq"), AndroidUtils.getString("vtfaqsumm"), !DoNotUseOldIcons() ? "ic_help_24" : "ic_help_outline_24", preference -> {
|
||||
addPreference(this, "", AndroidUtils.getString("vtfaq"), AndroidUtils.getString("vtfaqsumm"), "ic_help_outline_28", preference -> {
|
||||
getContext().startActivity(new Intent("android.intent.action.VIEW").setData(Uri.parse("https://t.me/s/vtosters_faq")));
|
||||
return false;
|
||||
});
|
||||
|
||||
addPreference(this, "", AndroidUtils.getString("reportbug"), AndroidUtils.getString("reportbugsumm"), !DoNotUseOldIcons() ? "ic_bug_24" : "ic_bug_outline_28", preference -> {
|
||||
addPreference(this, "", AndroidUtils.getString("reportbug"), AndroidUtils.getString("reportbugsumm"), "ic_bug_outline_28", preference -> {
|
||||
getContext().startActivity(new Intent("android.intent.action.VIEW").setData(Uri.parse("https://github.com/vtosters/lite/issues")));
|
||||
return false;
|
||||
});
|
||||
@@ -421,7 +427,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment {
|
||||
if (isValidSignature()) {
|
||||
addPreferenceCategory(this, AndroidUtils.getString("updates"));
|
||||
|
||||
addPreference(this, "", AndroidUtils.getString("checkforupdates"), "", "ic_download_outline_24", preference -> {
|
||||
addPreference(this, "", AndroidUtils.getString("checkforupdates"), "", "ic_download_outline_28", preference -> {
|
||||
OTADialog.checkUpdates(getActivity());
|
||||
return false;
|
||||
});
|
||||
|
||||
@@ -1,53 +1,36 @@
|
||||
package ru.vtosters.lite.utils;
|
||||
|
||||
import static ru.vtosters.lite.utils.AndroidUtils.edit;
|
||||
import static ru.vtosters.lite.utils.AndroidUtils.getApplicationName;
|
||||
import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext;
|
||||
import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier;
|
||||
import static ru.vtosters.lite.utils.AndroidUtils.sendToast;
|
||||
import static ru.vtosters.lite.utils.Preferences.VERSIONNAME;
|
||||
import static ru.vtosters.lite.utils.Preferences.devmenu;
|
||||
import static ru.vtosters.lite.utils.Preferences.isValidSignature;
|
||||
import static ru.vtosters.lite.utils.Preferences.oldabout;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.vk.about.Items;
|
||||
import com.vk.about.Items1;
|
||||
import com.vk.about.Items2;
|
||||
import android.view.View;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Scanner;
|
||||
|
||||
public class About {
|
||||
public static void injectAbout(List<Items2> list) {
|
||||
list.clear();
|
||||
list.add(new Items1());
|
||||
|
||||
if (!oldabout()) {
|
||||
list.add(new Items(21, getIdentifier("opencommit", "string")));
|
||||
list.add(new Items(8, getIdentifier("tgchannel", "string")));
|
||||
list.add(new Items(9, getIdentifier("tgchat", "string")));
|
||||
list.add(new Items(16, getIdentifier("vtfaq", "string")));
|
||||
list.add(new Items(19, getIdentifier("vtsite", "string")));
|
||||
list.add(new Items(20, getIdentifier("donate", "string")));
|
||||
list.add(new Items(17, getIdentifier("vkgroup", "string")));
|
||||
list.add(new Items(18, getIdentifier("sett_debug", "string")));
|
||||
return;
|
||||
}
|
||||
|
||||
list.add(new Items(0, getIdentifier("about_app_feedback", "string")));
|
||||
list.add(new Items(1, getIdentifier("about_app_estimate", "string")));
|
||||
list.add(new Items(2, getIdentifier("about_app_privacy", "string")));
|
||||
list.add(new Items(5, getIdentifier("about_app_cookie", "string")));
|
||||
list.add(new Items(3, getIdentifier("about_app_terms_to_use", "string")));
|
||||
list.add(new Items(4, getIdentifier("about_app_license", "string")));
|
||||
list.add(new Items(6, getIdentifier("about_app_data_protect", "string")));
|
||||
list.add(new Items(8, getIdentifier("sett_debug", "string")));
|
||||
}
|
||||
|
||||
public static String getBuildNumber() {
|
||||
return getBuild(getGlobalContext(), "version.properties");
|
||||
}
|
||||
|
||||
public static void injectToToolBar(View view) {
|
||||
view.setOnLongClickListener(v -> {
|
||||
if (devmenu()) {
|
||||
sendToast("Меню для разработчиков уже активировано");
|
||||
} else {
|
||||
edit().putBoolean("devmenu", true).apply();
|
||||
sendToast("Меню для разработчиков активировано");
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
public static String getCommitLink() {
|
||||
return "https://git.maki.su/gdlbo/lite/commit/" + getBuild(getGlobalContext(), "version.properties"); // https://github.com/vtosters/lite/commit/ github repo
|
||||
}
|
||||
|
||||
@@ -118,7 +118,7 @@ public class AndroidUtils {
|
||||
Toast.makeText(getGlobalContext(), text, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
|
||||
public static String MD5(String s){
|
||||
public static String MD5(String s) {
|
||||
try {
|
||||
var messageDigest = MessageDigest.getInstance("MD5");
|
||||
var sb = new StringBuilder();
|
||||
@@ -126,7 +126,7 @@ public class AndroidUtils {
|
||||
byte[] digest = messageDigest.digest();
|
||||
for (byte b : digest) {
|
||||
String hexString = Integer.toHexString(b & 255);
|
||||
while(hexString.length() < 2) {
|
||||
while (hexString.length() < 2) {
|
||||
hexString = "0" + hexString;
|
||||
}
|
||||
sb.append(hexString);
|
||||
|
||||
@@ -44,7 +44,7 @@ public class CacheUtils {
|
||||
size = IOUtils.getDirSize(getGlobalContext().getCacheDir());
|
||||
|
||||
if (size >= getSizeForDelete()) {
|
||||
if (dev()) sendToast("Кэш очищен");
|
||||
if (dev()) sendToast("Кеш очищен");
|
||||
deleteCache();
|
||||
size = 0;
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package ru.vtosters.lite.utils;
|
||||
|
||||
import static android.text.TextUtils.isEmpty;
|
||||
import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext;
|
||||
import static ru.vtosters.lite.utils.Preferences.isEnableExternalOpening;
|
||||
import static ru.vtosters.lite.utils.StringUtils.isEmpty;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
|
||||
@@ -10,7 +10,6 @@ import static ru.vtosters.lite.utils.NewsFeedFiltersUtils.setupFilters;
|
||||
import static ru.vtosters.lite.utils.ProxyUtils.setProxy;
|
||||
import static ru.vtosters.lite.utils.SignatureChecker.validateAppSignature;
|
||||
import static ru.vtosters.lite.utils.ThemesUtils.isDarkTheme;
|
||||
import static ru.vtosters.lite.utils.ThemesUtils.systemThemeChanger;
|
||||
import static ru.vtosters.lite.utils.VTVerifications.isPrometheus;
|
||||
import static ru.vtosters.lite.utils.VTVerifications.isVerified;
|
||||
|
||||
@@ -21,12 +20,9 @@ import android.content.pm.PackageManager;
|
||||
import android.preference.PreferenceManager;
|
||||
|
||||
import com.vtosters.lite.data.Users;
|
||||
import com.vtosters.lite.fragments.SettingsListFragment;
|
||||
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
|
||||
import ru.vtosters.lite.ui.fragments.VTSettings;
|
||||
|
||||
public class Preferences {
|
||||
public static SharedPreferences preferences = getGlobalContext().getSharedPreferences("com.vtosters.lite_preferences", Context.MODE_PRIVATE);
|
||||
public static String VERSIONNAME = "Beta";
|
||||
@@ -37,7 +33,6 @@ public class Preferences {
|
||||
setProxy();
|
||||
reloadMessagesList();
|
||||
LifecycleUtils.registerActivities(application);
|
||||
systemThemeChanger(null);
|
||||
getInstance().autoCleaningCache();
|
||||
} // VK Init
|
||||
|
||||
@@ -66,10 +61,6 @@ public class Preferences {
|
||||
return getBoolValue("opusmodule", true);
|
||||
}
|
||||
|
||||
public static boolean DoNotUseOldIcons() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public static boolean systemtheme() {
|
||||
return false; //getBoolValue("systemtheme", true) && VERSION.SDK_INT >= 28;
|
||||
}
|
||||
@@ -142,11 +133,6 @@ public class Preferences {
|
||||
return getBoolValue("foaf", false);
|
||||
}
|
||||
|
||||
public static Class useNewSettings() {
|
||||
boolean bool = getBoolValue("useNewSettings", true);
|
||||
return bool ? VTSettings.class : SettingsListFragment.class;
|
||||
}
|
||||
|
||||
public static boolean VKUI_INJ() {
|
||||
return getBoolValue("VKUI_INJ", true);
|
||||
}
|
||||
@@ -195,6 +181,10 @@ public class Preferences {
|
||||
return getBoolValue("miniapps", true);
|
||||
}
|
||||
|
||||
public static boolean savemsgsett() {
|
||||
return getBoolValue("savemsgsett", false);
|
||||
}
|
||||
|
||||
public static boolean friendsblock() {
|
||||
return getBoolValue("friendsblock", false);
|
||||
}
|
||||
@@ -263,6 +253,15 @@ public class Preferences {
|
||||
return getBoolValue("setoffline", false);
|
||||
}
|
||||
|
||||
public static boolean autotranslate() {
|
||||
if (autoalltranslate()) return true;
|
||||
return getBoolValue("autotranslate", false);
|
||||
}
|
||||
|
||||
public static boolean autoalltranslate() {
|
||||
return getBoolValue("autoalltranslate", false);
|
||||
}
|
||||
|
||||
public static boolean shortinfo() {
|
||||
return getBoolValue("shortinfo", true);
|
||||
}
|
||||
@@ -349,6 +348,10 @@ public class Preferences {
|
||||
return isPrometheus(AccountManagerUtils.getUserId());
|
||||
}
|
||||
|
||||
public static boolean isLikesOnRightEnabled() {
|
||||
return getBoolValue("is_likes_on_right", false);
|
||||
}
|
||||
|
||||
public static long getSizeForDelete() {
|
||||
switch (getPrefsValue("clearcache")) {
|
||||
case "100mb":
|
||||
|
||||
@@ -53,9 +53,9 @@ public class ReflectionUtils {
|
||||
public static <T> T getObjectField(Class<?> clz, String fieldName, Object instance) throws NoSuchFieldException, IllegalAccessException {
|
||||
Field field;
|
||||
try {
|
||||
field = clz.getField(fieldName);
|
||||
field = getField(clz, fieldName);
|
||||
} catch (NoSuchFieldException e) {
|
||||
field = clz.getDeclaredField(fieldName);
|
||||
field = getDeclaredField(clz, fieldName);
|
||||
}
|
||||
return (T) field.get(instance);
|
||||
}
|
||||
@@ -76,9 +76,9 @@ public class ReflectionUtils {
|
||||
public static void setObjectField(Class<?> clz, String fieldName, Object instance, Object value) throws NoSuchFieldException, IllegalAccessException {
|
||||
Field field;
|
||||
try {
|
||||
field = clz.getField(fieldName);
|
||||
field = getField(clz, fieldName);
|
||||
} catch (NoSuchFieldException e) {
|
||||
field = clz.getDeclaredField(fieldName);
|
||||
field = getDeclaredField(clz, fieldName);
|
||||
}
|
||||
field.set(instance, value);
|
||||
}
|
||||
@@ -112,9 +112,9 @@ public class ReflectionUtils {
|
||||
public static void setObjectFinalField(Class<?> clz, String fieldName, Object instance, Object value) throws NoSuchFieldException, IllegalAccessException {
|
||||
Field field;
|
||||
try {
|
||||
field = clz.getField(fieldName);
|
||||
field = getField(clz, fieldName);
|
||||
} catch (NoSuchFieldException e) {
|
||||
field = clz.getDeclaredField(fieldName);
|
||||
field = getDeclaredField(clz, fieldName);
|
||||
}
|
||||
|
||||
if (!Modifier.isFinal(field.getModifiers())) return;
|
||||
@@ -143,9 +143,9 @@ public class ReflectionUtils {
|
||||
public static void setObjectStaticField(Class<?> clz, String fieldName, Object value) throws NoSuchFieldException, IllegalAccessException {
|
||||
Field field;
|
||||
try {
|
||||
field = clz.getField(fieldName);
|
||||
field = getField(clz, fieldName);
|
||||
} catch (NoSuchFieldException e) {
|
||||
field = clz.getDeclaredField(fieldName);
|
||||
field = getDeclaredField(clz, fieldName);
|
||||
}
|
||||
field.set(null, value);
|
||||
}
|
||||
@@ -166,9 +166,9 @@ public class ReflectionUtils {
|
||||
public static void setObjectFinalStaticField(Class<?> clz, String fieldName, Object value) throws NoSuchFieldException, IllegalAccessException {
|
||||
Field field;
|
||||
try {
|
||||
field = clz.getField(fieldName);
|
||||
field = getField(clz, fieldName);
|
||||
} catch (NoSuchFieldException e) {
|
||||
field = clz.getDeclaredField(fieldName);
|
||||
field = getDeclaredField(clz, fieldName);
|
||||
}
|
||||
|
||||
if (!Modifier.isFinal(field.getModifiers())) return;
|
||||
@@ -197,9 +197,9 @@ public class ReflectionUtils {
|
||||
public static <T> T getObjectField(Class<?> clz, String fieldName) throws NoSuchFieldException, IllegalAccessException {
|
||||
Field field;
|
||||
try {
|
||||
field = clz.getField(fieldName);
|
||||
field = getField(clz, fieldName);
|
||||
} catch (NoSuchFieldException e) {
|
||||
field = clz.getDeclaredField(fieldName);
|
||||
field = getDeclaredField(clz, fieldName);
|
||||
}
|
||||
return (T) field.get(null);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package ru.vtosters.lite.utils;
|
||||
|
||||
import static ru.vtosters.lite.ui.PreferencesUtil.getSTextColor;
|
||||
import static ru.vtosters.lite.utils.AndroidUtils.dp2px;
|
||||
import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext;
|
||||
import static ru.vtosters.lite.utils.AndroidUtils.getResources;
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
package ru.vtosters.lite.utils;
|
||||
|
||||
public class StringUtils {
|
||||
|
||||
public static boolean isEmpty(String str) {
|
||||
return str == null || str.isEmpty();
|
||||
}
|
||||
}
|
||||
@@ -11,9 +11,9 @@ body[scheme=bright_light] {
|
||||
--attach_picker_tab_active_background: %accent% !important;
|
||||
--attach_picker_tab_active_text: %accent% !important;
|
||||
--button_muted_foreground: %accent% !important;
|
||||
--button_outline_border: %accent% !important;
|
||||
--button_outline_foreground: %accent% !important;
|
||||
--button_primary_background: %accent% !important;
|
||||
--button_outline_border: %button_outline_border% !important;
|
||||
--button_outline_foreground: %button_outline_foreground% !important;
|
||||
--button_primary_background: %button_primary_background% !important;
|
||||
--button_secondary_foreground: %accent% !important;
|
||||
--button_tertiary_foreground: %accent% !important;
|
||||
--cell_button_foreground: %accent% !important;
|
||||
@@ -40,7 +40,7 @@ body[scheme=bright_light] {
|
||||
/* backgrounds */
|
||||
--background_content: %background_content% !important;
|
||||
--background_page: %background_page% !important;
|
||||
--content_tint_background: %background_page% !important;
|
||||
--content_tint_background: %content_tint_background% !important;
|
||||
--loader_background: %background_page% !important;
|
||||
--header_background: %header_background% !important;
|
||||
--header_background_before_blur: %header_background% !important;
|
||||
@@ -62,9 +62,9 @@ body[scheme=space_gray] {
|
||||
--attach_picker_tab_active_background: %accent% !important;
|
||||
--attach_picker_tab_active_text: %accent% !important;
|
||||
--button_muted_foreground: %accent% !important;
|
||||
--button_outline_border: %accent% !important;
|
||||
--button_outline_foreground: %accent% !important;
|
||||
--button_primary_background: %accent% !important;
|
||||
--button_outline_border: %button_outline_border% !important;
|
||||
--button_outline_foreground: %button_outline_foreground% !important;
|
||||
--button_primary_background: %button_primary_background% !important;
|
||||
--button_secondary_foreground: %accent% !important;
|
||||
--button_tertiary_foreground: %accent% !important;
|
||||
--cell_button_foreground: %accent% !important;
|
||||
@@ -90,7 +90,7 @@ body[scheme=space_gray] {
|
||||
--dynamic_blue: %accent% !important;
|
||||
--background_content: %background_content% !important;
|
||||
--background_page: %background_page% !important;
|
||||
--content_tint_background: %background_page% !important;
|
||||
--content_tint_background: %content_tint_background% !important;
|
||||
--loader_background: %background_page% !important;
|
||||
--header_background: %header_background% !important;
|
||||
--header_background_before_blur: %header_background% !important;
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
|
||||
@@ -1,4 +1,3 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
|
||||
@@ -1,4 +1,3 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
|
||||
@@ -1,4 +1,3 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
|
||||
@@ -1,4 +1,3 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
|
||||
@@ -1,4 +1,3 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:pathData="M 0.0,0.0 c0.167,0 0.667,1 1.0,1.0" />
|
||||
@@ -1,4 +1,3 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:pathData="M 0.0,0.0 c0.167,0 0.667,1 1.0,1.0" />
|
||||
@@ -1,4 +1,3 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
|
||||
@@ -1,4 +1,3 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
|
||||
@@ -1,4 +1,3 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
|
||||
@@ -1,4 +1,3 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
|
||||
@@ -1,4 +1,3 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
|
||||
@@ -1,4 +1,3 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
|
||||
@@ -1,4 +1,3 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
|
||||
@@ -1,4 +1,3 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
|
||||
@@ -1,4 +1,3 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
|
||||
@@ -1,4 +1,3 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
|
||||
@@ -1,4 +1,3 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
|
||||
@@ -1,4 +1,3 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
|
||||
@@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:width="24.0dip"
|
||||
android:height="24.0dip"
|
||||
android:viewportWidth="24.0"
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:duration="@integer/hide_password_duration"
|
||||
android:interpolator="@android:interpolator/fast_out_slow_in"
|
||||
android:propertyName="pathData"
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:duration="@integer/hide_password_duration"
|
||||
android:interpolator="@android:interpolator/fast_out_slow_in"
|
||||
android:propertyName="trimPathEnd"
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:width="24.0dip"
|
||||
android:height="24.0dip"
|
||||
android:viewportWidth="24.0"
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:duration="@integer/show_password_duration"
|
||||
android:interpolator="@android:interpolator/fast_out_linear_in"
|
||||
android:propertyName="pathData"
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:duration="@integer/show_password_duration"
|
||||
android:interpolator="@android:interpolator/fast_out_linear_in"
|
||||
android:propertyName="trimPathEnd"
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:width="28.0dip"
|
||||
android:height="28.0dip"
|
||||
android:viewportWidth="28.0"
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<set xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:ordering="together">
|
||||
<objectAnimator
|
||||
android:duration="167"
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<set xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:ordering="together">
|
||||
<objectAnimator
|
||||
android:duration="133"
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<set xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:ordering="together">
|
||||
<objectAnimator
|
||||
android:duration="133"
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<set xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:ordering="together">
|
||||
<objectAnimator
|
||||
android:duration="1000"
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:drawable="@drawable/$avd_hide_password__0">
|
||||
<target
|
||||
android:name="eye_mask"
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:drawable="@drawable/$avd_show_password__0">
|
||||
<target
|
||||
android:name="eye_mask"
|
||||
|
||||
@@ -3,16 +3,16 @@
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:pathData="M23.745,12.27C23.745,11.48 23.675,10.73 23.555,10L12.255,10L12.255,14.51L18.725,14.51C18.435,15.99 17.585,17.24 16.325,18.09L16.325,21.09L20.185,21.09C22.445,19 23.745,15.92 23.745,12.27Z"
|
||||
android:fillColor="#4285F4"/>
|
||||
<path
|
||||
android:pathData="M12.255,24C15.495,24 18.205,22.92 20.185,21.09L16.325,18.09C15.245,18.81 13.875,19.25 12.255,19.25C9.125,19.25 6.475,17.14 5.525,14.29L1.545,14.29L1.545,17.38C3.515,21.3 7.565,24 12.255,24Z"
|
||||
android:fillColor="#34A853"/>
|
||||
<path
|
||||
android:pathData="M5.525,14.29C5.275,13.57 5.145,12.8 5.145,12C5.145,11.2 5.285,10.43 5.525,9.71L5.525,6.62L1.545,6.62C0.725,8.24 0.255,10.06 0.255,12C0.255,13.94 0.725,15.76 1.545,17.38L5.525,14.29Z"
|
||||
android:fillColor="#FBBC05"/>
|
||||
<path
|
||||
android:pathData="M12.255,4.75C14.025,4.75 15.605,5.36 16.855,6.55L20.275,3.13C18.205,1.19 15.495,0 12.255,0C7.565,0 3.515,2.7 1.545,6.62L5.525,9.71C6.475,6.86 9.125,4.75 12.255,4.75Z"
|
||||
android:fillColor="#EA4335"/>
|
||||
<path
|
||||
android:fillColor="#4285F4"
|
||||
android:pathData="M23.745,12.27C23.745,11.48 23.675,10.73 23.555,10L12.255,10L12.255,14.51L18.725,14.51C18.435,15.99 17.585,17.24 16.325,18.09L16.325,21.09L20.185,21.09C22.445,19 23.745,15.92 23.745,12.27Z" />
|
||||
<path
|
||||
android:fillColor="#34A853"
|
||||
android:pathData="M12.255,24C15.495,24 18.205,22.92 20.185,21.09L16.325,18.09C15.245,18.81 13.875,19.25 12.255,19.25C9.125,19.25 6.475,17.14 5.525,14.29L1.545,14.29L1.545,17.38C3.515,21.3 7.565,24 12.255,24Z" />
|
||||
<path
|
||||
android:fillColor="#FBBC05"
|
||||
android:pathData="M5.525,14.29C5.275,13.57 5.145,12.8 5.145,12C5.145,11.2 5.285,10.43 5.525,9.71L5.525,6.62L1.545,6.62C0.725,8.24 0.255,10.06 0.255,12C0.255,13.94 0.725,15.76 1.545,17.38L5.525,14.29Z" />
|
||||
<path
|
||||
android:fillColor="#EA4335"
|
||||
android:pathData="M12.255,4.75C14.025,4.75 15.605,5.36 16.855,6.55L20.275,3.13C18.205,1.19 15.495,0 12.255,0C7.565,0 3.515,2.7 1.545,6.62L5.525,9.71C6.475,6.86 9.125,4.75 12.255,4.75Z" />
|
||||
</vector>
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="48dp"
|
||||
android:height="48dp"
|
||||
android:viewportWidth="64"
|
||||
android:viewportHeight="64">
|
||||
<path
|
||||
android:fillColor="#042B48"
|
||||
android:pathData="M54.579,12.268l-20.375,-11.625c-1.375,-0.75 -3.125,-0.75 -4.5,-0l-20.375,11.625c-1.375,0.75 -2.25,2.25 -2.25,3.875l0,23.75c0,1.625 0.875,3.125 2.25,3.875l35.125,20.25l0,-14.375l10.125,-5.875c1.375,-0.75 2.25,-2.25 2.25,-3.875l0,-23.75C56.954,14.518 55.954,13.018 54.579,12.268zM28.829,38.393c0,2.375 -1.875,4.25 -4.25,4.25c-2.375,-0 -4.25,-1.875 -4.25,-4.25c0,-2.375 1.875,-4.25 4.25,-4.25c1.125,-0 2,0.375 2.75,1l7.5,-4.25c0.375,0.875 0.875,1.75 1.375,2.5l-7.5,4.25C28.829,37.893 28.829,38.143 28.829,38.393zM41.829,32.768c-2.375,-0 -4.25,-1.875 -4.25,-4.25c0,-0.25 0,-0.5 0.125,-0.75l-10.25,-5.875c-0.75,0.625 -1.75,1 -2.75,1c-2.375,-0 -4.25,-1.875 -4.25,-4.25c0,-2.375 1.875,-4.25 4.25,-4.25c2.375,-0 4.25,1.875 4.25,4.25c0,0.25 0,0.5 -0.125,0.75l10.25,5.875c0.75,-0.625 1.75,-1.125 2.875,-1.125c2.375,-0 4.25,1.875 4.25,4.25C46.079,30.768 44.204,32.768 41.829,32.768z" />
|
||||
</vector>
|
||||
@@ -0,0 +1,58 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:width="47.990383dp"
|
||||
android:height="48dp"
|
||||
android:viewportWidth="998.1"
|
||||
android:viewportHeight="998.3">
|
||||
<path
|
||||
android:fillColor="#DBDBDB"
|
||||
android:pathData="M931.7,998.3c36.5,0 66.4,-29.4 66.4,-65.4V265.8c0,-36 -29.9,-65.4 -66.4,-65.4H283.6l260.1,797.9h388z" />
|
||||
<path
|
||||
android:fillColor="#DCDCDC"
|
||||
android:pathData="M931.7,230.4c9.7,0 18.9,3.8 25.8,10.6 6.8,6.7 10.6,15.5 10.6,24.8v667.1c0,9.3 -3.7,18.1 -10.6,24.8 -6.9,6.8 -16.1,10.6 -25.8,10.6H565.5L324.9,230.4h606.8m0,-30H283.6l260.1,797.9h388c36.5,0 66.4,-29.4 66.4,-65.4V265.8c0,-36 -29.9,-65.4 -66.4,-65.4z" />
|
||||
<path
|
||||
android:fillColor="#4352B8"
|
||||
android:pathData="M482.3,809.8l61.4,188.5l170.7,-188.5z" />
|
||||
<path
|
||||
android:fillColor="#607988"
|
||||
android:pathData="M936.1,476.1V437H747.6v-63.2h-61.2V437H566.1v39.1h239.4c-12.8,45.1 -41.1,87.7 -68.7,120.8 -48.9,-57.9 -49.1,-76.7 -49.1,-76.7h-50.8s2.1,28.2 70.7,108.6c-22.3,22.8 -39.2,36.3 -39.2,36.3l15.6,48.8s23.6,-20.3 53.1,-51.6c29.6,32.1 67.8,70.7 117.2,116.7l32.1,-32.1c-52.9,-48 -91.7,-86.1 -120.2,-116.7 38.2,-45.2 77,-102.1 85.2,-154.2H936v0.1z" />
|
||||
<path
|
||||
android:fillColor="#4285F4"
|
||||
android:pathData="M66.4,0C29.9,0 0,29.9 0,66.5v677c0,36.5 29.9,66.4 66.4,66.4h648.1L454.4,0h-388z" />
|
||||
<path android:pathData="M534.3,200.4h397.4c36.5,0 66.4,29.4 66.4,65.4V666L534.3,200.4z">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:endX="998.1"
|
||||
android:endY="433.2"
|
||||
android:startX="534.3"
|
||||
android:startY="433.2"
|
||||
android:type="linear">
|
||||
<item
|
||||
android:color="#33FFFFFF"
|
||||
android:offset="0" />
|
||||
<item
|
||||
android:color="#05FFFFFF"
|
||||
android:offset="1" />
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
<path
|
||||
android:fillColor="#EEEEEE"
|
||||
android:pathData="M371.4,430.6c-2.5,30.3 -28.4,75.2 -91.1,75.2 -54.3,0 -98.3,-44.9 -98.3,-100.2s44,-100.2 98.3,-100.2c30.9,0 51.5,13.4 63.3,24.3l41.2,-39.6c-27.1,-25 -62.4,-40.6 -104.5,-40.6 -86.1,0 -156,69.9 -156,156s69.9,156 156,156c90.2,0 149.8,-63.3 149.8,-152.6 0,-12.8 -1.6,-22.2 -3.7,-31.8h-146v53.4l91,0.1z" />
|
||||
<path android:pathData="M931.7,200.4H518.8L454.4,0h-388C29.9,0 0,29.9 0,66.5v677c0,36.5 29.9,66.4 66.4,66.4h415.9l61.4,188.4h388c36.5,0 66.4,-29.4 66.4,-65.4V265.8c0,-36 -29.9,-65.4 -66.4,-65.4z">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:centerX="65.21"
|
||||
android:centerY="19.37"
|
||||
android:gradientRadius="1398.27"
|
||||
android:type="radial">
|
||||
<item
|
||||
android:color="#19FFFFFF"
|
||||
android:offset="0" />
|
||||
<item
|
||||
android:color="#00FFFFFF"
|
||||
android:offset="1" />
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
</vector>
|
||||
@@ -0,0 +1,46 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:width="44dp"
|
||||
android:height="44dp"
|
||||
android:viewportWidth="44"
|
||||
android:viewportHeight="44">
|
||||
<group>
|
||||
<clip-path android:pathData="M22,22m-17,0a17,17 0,1 1,34 0a17,17 0,1 1,-34 0" />
|
||||
<path
|
||||
android:fillColor="#FC3F1D"
|
||||
android:pathData="M39,39h-9.63L14.63,5H39v34z" />
|
||||
<path
|
||||
android:fillColor="#2B2B2B"
|
||||
android:pathData="M39,39h-9.63L14.63,5H39v34z" />
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:fillType="evenOdd"
|
||||
android:pathData="M33.71,19.33a4.1,4.1 0,0 0,-2.2 -2.17c0.18,-0.8 0.24,-1.46 0.26,-1.9h-1.8a9.8,9.8 0,0 1,-0.2 1.41c-1.4,-0.2 -2.98,0 -4.5,0.54 -0.17,-0.98 -0.28,-1.9 -0.34,-2.7 5.41,-0.3 8.6,-1.58 8.75,-1.65L33,11.24c-0.03,0 -3.06,1.2 -8.13,1.5 0,-1.21 -0.04,-1.2 0.02,-1.61l-1.8,-0.02c-0.04,0.34 -0.03,0.7 -0.02,1.7h-0.17c-1.62,0 -3.12,-0.12 -3.48,-0.15l-0.33,1.79c0.53,0.04 2.15,0.13 3.6,0.13h0.22l0.23,-0.01c0.07,1 0.2,2.16 0.44,3.42 -2.39,1.4 -4.3,4.1 -3.32,6.3 0.4,0.92 1.19,1.52 2.2,1.67 0.18,0.02 0.36,0.04 0.54,0.04 1.03,0 2.21,-0.41 3.34,-1.11a10.8,10.8 0,0 0,1.39 1.7l1.24,-1.29c-0.02,-0.01 -0.54,-0.5 -1.2,-1.49a12.86,12.86 0,0 0,3.26 -4.91c0.4,0.23 0.8,0.57 1.02,1.09 0.72,1.75 -0.32,3.78 -1.3,4.66l1.23,1.3c1.62,-1.47 2.73,-4.21 1.74,-6.62zM22.73,24.2a0.98,0.98 0,0 1,-0.83 -0.62c-0.44,-1.01 0.52,-2.67 2.1,-3.77 0.4,1.4 0.9,2.6 1.41,3.56 -0.96,0.6 -1.95,0.94 -2.68,0.83zM27.24,21.8 L26.84,22.22c-0.44,-0.9 -0.88,-1.98 -1.2,-3.26a8.31,8.31 0,0 1,3.65 -0.58,11.12 11.12,0 0,1 -2.05,3.43z" />
|
||||
<path
|
||||
android:fillColor="#FC3F1D"
|
||||
android:pathData="M5,5h9.63l14.74,34H5V5z" />
|
||||
<path
|
||||
android:fillAlpha="0.4"
|
||||
android:pathData="M5,5h9.63l14.74,34H5V5z">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:endX="13.14"
|
||||
android:endY="32.31"
|
||||
android:startX="49.36"
|
||||
android:startY="1.11"
|
||||
android:type="linear">
|
||||
<item
|
||||
android:color="#FFFFFFFF"
|
||||
android:offset="0" />
|
||||
<item
|
||||
android:color="#00FFFFFF"
|
||||
android:offset="1" />
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:fillType="evenOdd"
|
||||
android:pathData="M15.38,17.42 L9.52,30.96h2.4l1.44,-3.61h5.93l1.44,3.61h2.4l-5.86,-13.54h-1.9zM16.32,20.21 L18.51,25.52h-4.37l2.18,-5.31z" />
|
||||
</group>
|
||||
</vector>
|
||||
@@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:drawable="@drawable/$notification_receive_28_60fps__0">
|
||||
<target
|
||||
android:name="_R_G_L_1_G"
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:id="@android:id/background">
|
||||
<shape>
|
||||
<corners android:radius="1.0dip" />
|
||||
|
||||
@@ -2,13 +2,12 @@
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
|
||||
<corners android:radius="15dp"/>
|
||||
<solid android:color="?attr/tabbar_background"/>
|
||||
<corners android:radius="15dp" />
|
||||
<solid android:color="?attr/tabbar_background" />
|
||||
|
||||
<padding
|
||||
android:bottom="10dp"
|
||||
android:left="20dp"
|
||||
android:top="10dp"
|
||||
android:right="20dp"
|
||||
android:bottom="10dp" >
|
||||
</padding>
|
||||
android:top="10dp"></padding>
|
||||
</shape>
|
||||
@@ -3,10 +3,10 @@
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:pathData="M2.04,12c0,-5.523 4.476,-10 10,-10 5.522,0 10,4.477 10,10s-4.478,10 -10,10c-5.524,0 -10,-4.477 -10,-10z"
|
||||
android:fillColor="#FC3F1D"/>
|
||||
<path
|
||||
android:pathData="M13.32,7.666h-0.924c-1.694,0 -2.585,0.858 -2.585,2.123 0,1.43 0.616,2.1 1.881,2.959l1.045,0.704 -3.003,4.487H7.49l2.695,-4.014c-1.55,-1.111 -2.42,-2.19 -2.42,-4.015 0,-2.288 1.595,-3.85 4.62,-3.85h3.003v11.868H13.32V7.666z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:fillColor="#FC3F1D"
|
||||
android:pathData="M2.04,12c0,-5.523 4.476,-10 10,-10 5.522,0 10,4.477 10,10s-4.478,10 -10,10c-5.524,0 -10,-4.477 -10,-10z" />
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M13.32,7.666h-0.924c-1.694,0 -2.585,0.858 -2.585,2.123 0,1.43 0.616,2.1 1.881,2.959l1.045,0.704 -3.003,4.487H7.49l2.695,-4.014c-1.55,-1.111 -2.42,-2.19 -2.42,-4.015 0,-2.288 1.595,-3.85 4.62,-3.85h3.003v11.868H13.32V7.666z" />
|
||||
</vector>
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 2.4 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.6 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 3.1 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 4.5 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 5.9 KiB |
@@ -4924,7 +4924,7 @@ Los mensajes no se marcarán como leídos hasta que aceptes la solicitud."</stri
|
||||
<string name="vkim_onboarding_dialogs_grant_contacts_permission">Permitir el acceso a los contactos</string>
|
||||
<string name="vkim_onboarding_dialogs_syncing">Sincronizando contactos</string>
|
||||
<string name="vkim_onboarding_dialogs_title">No hay chats</string>
|
||||
<string name="vkim_one_msg_is_expired_description">Este mensaje se autodestruyó después de cierto tiempo. Puedes enviar este tipo de mensajes también en VK Me.</string>
|
||||
<string name="vkim_one_msg_is_expired_description">Este mensaje se autodestruyó después de cierto tiempo.</string>
|
||||
<string name="vkim_one_msg_is_expired_title">Mensaje que se autodestruye</string>
|
||||
<string name="vkim_one_time_story_dialog_description">Esta historia se autodestruyó después de ser vista. Puedes enviar este tipo de historias en VK Me.</string>
|
||||
<string name="vkim_one_time_story_dialog_title">Historia que se autodestruye</string>
|
||||
@@ -5109,7 +5109,7 @@ en la barra de búsqueda"</string>
|
||||
<string name="vkim_share_title">Compartir</string>
|
||||
<string name="vkim_share_to_casper_chat">En los chats fantasmas, los mensajes se autodestruyen una hora después de ser enviados</string>
|
||||
<string name="vkim_share_waiting_for_network">Esperando conexión…</string>
|
||||
<string name="vkim_some_msg_is_expired_description">Estos mensajes se autodestruyen después de cierto tiempo. Puedes enviar este tipo de mensajes también en VK Me.</string>
|
||||
<string name="vkim_some_msg_is_expired_description">Estos mensajes se autodestruyen después de cierto tiempo.</string>
|
||||
<string name="vkim_some_msg_is_expired_title">Mensaje que desaparece</string>
|
||||
<string name="vkim_stickers_pack_description">Para obtener %1$s paquete de pegatinas necesitas descargar VK Me.</string>
|
||||
<string name="vkim_stickers_pack_description_default">Para obtener este paquete de pegatinas necesitas descargar VK Me.</string>
|
||||
|
||||
@@ -4874,7 +4874,7 @@ https://vk.me"</string>
|
||||
<string name="vkim_onboarding_dialogs_grant_contacts_permission">Контактілерге рұқсат беру</string>
|
||||
<string name="vkim_onboarding_dialogs_syncing">Контактілерді жүктеу</string>
|
||||
<string name="vkim_onboarding_dialogs_title">Әзірше әңгімелер жоқ</string>
|
||||
<string name="vkim_one_msg_is_expired_description">Осы хабарлама жіберілгеннен кейін кішкене уақыт өте жоқ болып кетті. Сондай хабарламаларды тек VK Me мессенджерінен жіберуге болады.</string>
|
||||
<string name="vkim_one_msg_is_expired_description">Осы хабарлама жіберілгеннен кейін кішкене уақыт өте жоқ болып кетті.</string>
|
||||
<string name="vkim_one_msg_is_expired_title">Жойылатын хабарлама</string>
|
||||
<string name="vkim_one_time_story_dialog_description">Осы сторис көрілгеннен кейін жойылды. Осындай стористерді VK Me мессенджері арқылы жіберуге болады.</string>
|
||||
<string name="vkim_one_time_story_dialog_title">Жойылатын сторис</string>
|
||||
@@ -5059,7 +5059,7 @@ https://vk.me"</string>
|
||||
<string name="vkim_share_title">Бөлісу</string>
|
||||
<string name="vkim_share_to_casper_chat">Фантом-чатта хабарламалар жіберілгеннен кейін бір сағат өте жойылып тұрады</string>
|
||||
<string name="vkim_share_waiting_for_network">Желіні күтудеміз…</string>
|
||||
<string name="vkim_some_msg_is_expired_description">Осы хабарламалар жіберілгеннен кейін кішкене уақыт өте жоқ болып кетті. Сондай хабарламаларды тек VK Me мессенджерінен жіберуге болады.</string>
|
||||
<string name="vkim_some_msg_is_expired_description">Осы хабарламалар жіберілгеннен кейін кішкене уақыт өте жоқ болып кетті.</string>
|
||||
<string name="vkim_some_msg_is_expired_title">Жойылатын хабарлама</string>
|
||||
<string name="vkim_stickers_pack_description">«%1$s» стикерлер жинағын алу үшін VK Me мессенджерін орнату керек.</string>
|
||||
<string name="vkim_stickers_pack_description_default">Стикерлер жинағын алу үшін VK Me мессенджерін орнату керек.</string>
|
||||
|
||||
@@ -4892,7 +4892,7 @@ Os remetentes não saberão que você viu as mensagens deles até você clicar e
|
||||
<string name="vkim_onboarding_dialogs_grant_contacts_permission">Permitir acesso a contatos</string>
|
||||
<string name="vkim_onboarding_dialogs_syncing">Carregando os contatos</string>
|
||||
<string name="vkim_onboarding_dialogs_title">Ainda não há conversas</string>
|
||||
<string name="vkim_one_msg_is_expired_description">Esta mensagem desapareceu algum tempo após o envio. As mensagens que desaparecem podem ser enviadas somente no VK Me.</string>
|
||||
<string name="vkim_one_msg_is_expired_description">Esta mensagem desapareceu algum tempo após o envio.</string>
|
||||
<string name="vkim_one_msg_is_expired_title">Mensagem que desaparece</string>
|
||||
<string name="vkim_one_time_story_dialog_description">Esta história desapareceu após a visualização. As histórias deste tipo podem ser enviadas no messenger VK Me.</string>
|
||||
<string name="vkim_one_time_story_dialog_title">História que desaparece</string>
|
||||
@@ -5075,7 +5075,7 @@ no campo da pesquisa"</string>
|
||||
<string name="vkim_share_title">Compartilhar</string>
|
||||
<string name="vkim_share_to_casper_chat">No chat fantasma todas as mensagens se apagam uma hora após o envio</string>
|
||||
<string name="vkim_share_waiting_for_network">Aguardando conexão…</string>
|
||||
<string name="vkim_some_msg_is_expired_description">Estas mensagens desapareceram algum tempo após o envio. As mensagens que desaparecem podem ser enviadas somente no VK Me.</string>
|
||||
<string name="vkim_some_msg_is_expired_description">Estas mensagens desapareceram algum tempo após o envio.</string>
|
||||
<string name="vkim_some_msg_is_expired_title">Mensagens que desaparecem</string>
|
||||
<string name="vkim_stickers_pack_description">Para receber o pacote de adesivos \"%1$s\", é necessário baixar o messenger VK Me.</string>
|
||||
<string name="vkim_stickers_pack_description_default">Para receber o pacote de adesivos, é necessário baixar o messenger VK Me.</string>
|
||||
|
||||
@@ -600,6 +600,16 @@
|
||||
<item>Сторонний HTTPS</item>
|
||||
<item>Сторонний SOCKS</item>
|
||||
</string-array>
|
||||
<string-array name="targetlang_value">
|
||||
<item>Системный</item>
|
||||
<item>Русский</item>
|
||||
<item>Английский</item>
|
||||
<item>Украинский</item>
|
||||
<item>Немецкий</item>
|
||||
<item>Французский</item>
|
||||
<item>Казахский</item>
|
||||
<item>Китайский</item>
|
||||
</string-array>
|
||||
<string-array name="msgcount_value">
|
||||
<item>По умолчанию</item>
|
||||
<item>40 сообщений</item>
|
||||
|
||||
@@ -4951,7 +4951,7 @@
|
||||
<string name="vkim_onboarding_dialogs_grant_contacts_permission">Разрешить доступ к контактам</string>
|
||||
<string name="vkim_onboarding_dialogs_syncing">Загрузка контактов</string>
|
||||
<string name="vkim_onboarding_dialogs_title">Бесед пока нет</string>
|
||||
<string name="vkim_one_msg_is_expired_description">Это сообщение исчезло спустя некоторое время после отправки. Отправлять такие сообщения можно только в мессенджере VK Me.</string>
|
||||
<string name="vkim_one_msg_is_expired_description">Это сообщение исчезло спустя некоторое время после отправки.</string>
|
||||
<string name="vkim_one_msg_is_expired_title">Исчезающее сообщение</string>
|
||||
<string name="vkim_one_time_story_dialog_description">Эта история исчезла после просмотра. Отправлять такие истории можно в мессенджере VK Me.</string>
|
||||
<string name="vkim_one_time_story_dialog_title">Исчезающая история</string>
|
||||
@@ -5136,7 +5136,7 @@
|
||||
<string name="vkim_share_title">Поделиться</string>
|
||||
<string name="vkim_share_to_casper_chat">В фантом-чате сообщения исчезают через час после отправки</string>
|
||||
<string name="vkim_share_waiting_for_network">Ожидание сети…</string>
|
||||
<string name="vkim_some_msg_is_expired_description">Эти сообщения исчезли спустя некоторое время после отправки. Отправлять такие сообщения можно только в мессенджере VK Me.</string>
|
||||
<string name="vkim_some_msg_is_expired_description">Эти сообщения исчезли спустя некоторое время после отправки.</string>
|
||||
<string name="vkim_some_msg_is_expired_title">Исчезающие сообщения</string>
|
||||
<string name="vkim_stickers_pack_description">Чтобы получить набор стикеров «%1$s», необходимо установить мессенджер VK Me.</string>
|
||||
<string name="vkim_stickers_pack_description_default">Чтобы получить набор стикеров, необходимо установить мессенджер VK Me.</string>
|
||||
@@ -5374,12 +5374,12 @@
|
||||
<string name="vtlrecommendmarksummary">Посты по типу Вам может быть интересно и тд</string>
|
||||
<string name="vtlfeedwork">Прочее</string>
|
||||
<string name="vtlfeedreload">Автоматическое обновление ленты</string>
|
||||
<string name="vtlfeedcache">Кэшировать посты в ленте</string>
|
||||
<string name="vtlfeedcache">Кешировать посты в ленте</string>
|
||||
<string name="vtlrecommendmark">Отключить посты с пометкой рекомендовано</string>
|
||||
<string name="vtlmsgtails">Хвосты сообщений</string>
|
||||
<string name="vtlmsgflat">Плоские сообщения</string>
|
||||
<string name="vtlupdmsg">Обновить</string>
|
||||
<string name="BGStickerssum">Для включения/отключения вам необходимо очистить кэш приложения</string>
|
||||
<string name="BGStickerssum">Для включения/отключения вам необходимо очистить кеш приложения</string>
|
||||
<string name="addinf">Дополнительная информация</string>
|
||||
<string name="copyid">Скопировать айди</string>
|
||||
<string name="vtssfs">VT Функции</string>
|
||||
@@ -5391,6 +5391,8 @@
|
||||
<string name="experts">Эксперты</string>
|
||||
<string name="DNT_OFF">Отключить неписалку</string>
|
||||
<string name="DNT_ON">Включить неписалку</string>
|
||||
<string name="pinmsg">Закрепить чат</string>
|
||||
<string name="unpinmsg">Открепить чат</string>
|
||||
<string name="accounts">Аккаунты</string>
|
||||
<string name="act_bot">Для ботов/групп</string>
|
||||
<string name="act_cnv">Для бесед</string>
|
||||
@@ -5402,9 +5404,9 @@
|
||||
<string name="applicationrestart">Перезапустить приложение</string>
|
||||
<string name="benchapi">Бенчмарк апи</string>
|
||||
<string name="benchapisummary">Тестирование скорости отправки запросов. Бесполезная функция для всех, кроме разработчиков ВКонтакте</string>
|
||||
<string name="cachecleaned">Кэш очищен</string>
|
||||
<string name="clearcache">Очистить весь кэш</string>
|
||||
<string name="clearcachesum">Чистка всего кэша приложения (кроме кэша ленты)</string>
|
||||
<string name="cachecleaned">Кеш очищен</string>
|
||||
<string name="clearcache">Очистить весь кеш</string>
|
||||
<string name="clearcachesum">Чистка всего ккша приложения (кроме кеша ленты)</string>
|
||||
<string name="convUsersOnline">Фикс показа онлайна в беседах</string>
|
||||
<string name="convUsersOnlinesum">"Фикс показа онлайна других пользователей в беседах (нужно только если Вы скрыли свой онлайн)
|
||||
|
||||
@@ -5624,7 +5626,7 @@
|
||||
<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">Очистить кеш стикеров</string>
|
||||
<string name="other_clear_stickers_cache_summary">Исправление загрузки стикеров при их полном отсутствии</string>
|
||||
<string name="other_reset_settings">Сбросить настройки</string>
|
||||
<string name="other_reset_settings_summary">Сбрасывает включенные вами функции модификации на значения по умолчанию</string>
|
||||
@@ -5689,8 +5691,8 @@
|
||||
|
||||
<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_cache_webview">Очистить кеш WebView</string>
|
||||
<string name="debug_cache_video">Очистить видео кеш</string>
|
||||
|
||||
<string name="debug_system">Системные</string>
|
||||
<string name="debug_system_language">Подменить язык</string>
|
||||
@@ -5787,10 +5789,13 @@
|
||||
<string name="downloaderr">Ошибка загрузки файла</string>
|
||||
|
||||
<string name="download_mp3">Скачать как mp3</string>
|
||||
<string name="remove_from_cache">Удалить из кэша</string>
|
||||
<string name="remove_from_cache">Удалить из кеша</string>
|
||||
|
||||
<string name="thanksfordonate">Спасибо тебе за поддержку проекта!</string>
|
||||
<string name="getdonate">Поддержи проект донатом и получи бонусы</string>
|
||||
|
||||
<string name="wallpapers">Обои</string>
|
||||
<string name="readto">Прочитать до</string>
|
||||
|
||||
<string name="translator">Перевести</string>
|
||||
</resources>
|
||||
|
||||
@@ -4899,7 +4899,7 @@
|
||||
<string name="vkim_onboarding_dialogs_grant_contacts_permission">Надайте доступ до контактів</string>
|
||||
<string name="vkim_onboarding_dialogs_syncing">Завантаження контактів</string>
|
||||
<string name="vkim_onboarding_dialogs_title">Бесід наразі немає</string>
|
||||
<string name="vkim_one_msg_is_expired_description">Це повідомлення зникло через деякий час після надсилання. Надіслати такі повідомлення можна лише в месенджері VK Me.</string>
|
||||
<string name="vkim_one_msg_is_expired_description">Це повідомлення зникло через деякий час після надсилання.</string>
|
||||
<string name="vkim_one_msg_is_expired_title">Повідомлення що зникає</string>
|
||||
<string name="vkim_one_time_story_dialog_description">Ця історія зникла після перегляду. Надсилати такі історії можна в месенджері VK Me.</string>
|
||||
<string name="vkim_one_time_story_dialog_title">Зникаюча історія</string>
|
||||
@@ -5084,7 +5084,7 @@
|
||||
<string name="vkim_share_title">Поділитися</string>
|
||||
<string name="vkim_share_to_casper_chat">У фантом-чаті повідомлення зникають через годину після надсилання</string>
|
||||
<string name="vkim_share_waiting_for_network">Очікування мережі…</string>
|
||||
<string name="vkim_some_msg_is_expired_description">Ці повідомлення зникли через деякий час після надсилання. Надіслати такі повідомлення можна лишн в месенджері VK Me.</string>
|
||||
<string name="vkim_some_msg_is_expired_description">Ці повідомлення зникли через деякий час після надсилання.</string>
|
||||
<string name="vkim_some_msg_is_expired_title">Повідомлення що зникають</string>
|
||||
<string name="vkim_stickers_pack_description">Щоб отримати набір стікерів «%1$s», необхідно встановити месенджер VK Me.</string>
|
||||
<string name="vkim_stickers_pack_description_default">Щоб отримати набір стікерів, необхідно встановити месенджер VK Me.</string>
|
||||
|
||||
@@ -756,6 +756,26 @@
|
||||
<item>https</item>
|
||||
<item>socks</item>
|
||||
</string-array>
|
||||
<string-array name="targetlang_value">
|
||||
<item>System</item>
|
||||
<item>Russian</item>
|
||||
<item>English</item>
|
||||
<item>Ukrainian</item>
|
||||
<item>German</item>
|
||||
<item>French</item>
|
||||
<item>Kazakh</item>
|
||||
<item>Chinese</item>
|
||||
</string-array>
|
||||
<string-array name="targetlang">
|
||||
<item>system</item>
|
||||
<item>ru</item>
|
||||
<item>en</item>
|
||||
<item>uk</item>
|
||||
<item>de</item>
|
||||
<item>fr</item>
|
||||
<item>kk</item>
|
||||
<item>zh</item>
|
||||
</string-array>
|
||||
<string-array name="msgcount_value">
|
||||
<item>Default</item>
|
||||
<item>40 messages</item>
|
||||
|
||||
+528
-143
@@ -1,5 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<color name="abc_decor_view_status_guard">#ff000000</color>
|
||||
<color name="abc_decor_view_status_guard_light">#ffffffff</color>
|
||||
<color name="abc_input_method_navigation_guard">@android:color/black</color>
|
||||
<color name="abc_search_url_text_normal">#ff7fa87f</color>
|
||||
<color name="abc_search_url_text_pressed">@android:color/black</color>
|
||||
@@ -11,16 +13,18 @@
|
||||
<color name="account_stub_light">#ffdbdde1</color>
|
||||
<color name="almost_black">#ff2e3033</color>
|
||||
<color name="ampm_text_color">#ff8c8c8c</color>
|
||||
<color name="androidx_core_ripple_material_light">#1f000000</color>
|
||||
<color name="androidx_core_secondary_text_default_material_light">#8a000000</color>
|
||||
<color name="attach_title">#ff5a5d61</color>
|
||||
<color name="attachpicker_item_background">#14001c3d</color>
|
||||
<color name="audio_ad_progress_color">#fff5a623</color>
|
||||
<color name="azure_100_muted">#ff67a5eb</color>
|
||||
<color name="azure_300">#ff3f8ae0</color>
|
||||
<color name="azure_100_muted">@color/vk_azure_100_muted</color>
|
||||
<color name="azure_300">@color/vk_azure_300</color>
|
||||
<color name="azure_300_alpha10">#193f8ae0</color>
|
||||
<color name="azure_300_alpha15">#263f8ae0</color>
|
||||
<color name="azure_350">#ff2975cc</color>
|
||||
<color name="azure_A100">#ff2787f5</color>
|
||||
<color name="azure_A400">#ff4986cc</color>
|
||||
<color name="azure_350">@color/vk_azure_350</color>
|
||||
<color name="azure_A100">@color/vk_azure_A100</color>
|
||||
<color name="azure_A400">@color/vk_azure_A400</color>
|
||||
<color name="azure_A400_alpha10">#194986cc</color>
|
||||
<color name="azure_A400_alpha15">#264986cc</color>
|
||||
<color name="background">#fffdfffc</color>
|
||||
@@ -32,61 +36,63 @@
|
||||
<color name="background_tab_pressed">#6633b5e5</color>
|
||||
<color name="base">#ff00b956</color>
|
||||
<color name="big_photo_placeholder">#1a000000</color>
|
||||
<color name="biometric_error_color">#ffff5722</color>
|
||||
<color name="black">#ff000000</color>
|
||||
<color name="black_alpha05">#0d000000</color>
|
||||
<color name="black_alpha12">#1f000000</color>
|
||||
<color name="black_alpha15">#26000000</color>
|
||||
<color name="black_alpha16">#28000000</color>
|
||||
<color name="black_alpha20">#4d000000</color>
|
||||
<color name="black_alpha24">#3d000000</color>
|
||||
<color name="black_alpha35">#59000000</color>
|
||||
<color name="black_alpha6">#0f000000</color>
|
||||
<color name="black_alpha60">#99000000</color>
|
||||
<color name="black_alpha75">#bf000000</color>
|
||||
<color name="black_alpha8">#14000000</color>
|
||||
<color name="black_alpha05">@color/vk_black_alpha05</color>
|
||||
<color name="black_alpha12">@color/vk_black_alpha12</color>
|
||||
<color name="black_alpha15">@color/vk_black_alpha15</color>
|
||||
<color name="black_alpha16">@color/vk_black_alpha16</color>
|
||||
<color name="black_alpha20">@color/vk_black_alpha20</color>
|
||||
<color name="black_alpha24">@color/vk_black_alpha24</color>
|
||||
<color name="black_alpha35">@color/vk_black_alpha35</color>
|
||||
<color name="black_alpha45">@color/vk_black_alpha45</color>
|
||||
<color name="black_alpha6">@color/vk_black_alpha6</color>
|
||||
<color name="black_alpha60">@color/vk_black_alpha60</color>
|
||||
<color name="black_alpha75">@color/vk_black_alpha75</color>
|
||||
<color name="black_alpha8">@color/vk_black_alpha8</color>
|
||||
<color name="black_alpha90">#e5000000</color>
|
||||
<color name="black_blue10">#ff000c1a</color>
|
||||
<color name="black_blue24">#ff001c3d</color>
|
||||
<color name="black_blue24_alpha24">#3d001c3d</color>
|
||||
<color name="black_blue24_alpha8">#14001c3d</color>
|
||||
<color name="black_blue30_alpha66">#a800244d</color>
|
||||
<color name="black_blue45_alpha10">#1a003973</color>
|
||||
<color name="black_blue10">@color/vk_black_blue10</color>
|
||||
<color name="black_blue24">@color/vk_black_blue24</color>
|
||||
<color name="black_blue24_alpha24">@color/vk_black_blue24_alpha24</color>
|
||||
<color name="black_blue24_alpha8">@color/vk_black_blue24_alpha8</color>
|
||||
<color name="black_blue30_alpha66">@color/vk_black_blue30_alpha66</color>
|
||||
<color name="black_blue45_alpha10">@color/vk_black_blue45_alpha10</color>
|
||||
<color name="black_lavender_alpha5">@color/vk_black_lavender_alpha5</color>
|
||||
<color name="black_opacity_08">#14000000</color>
|
||||
<color name="black_opacity_15">#27000000</color>
|
||||
<color name="black_opacity_20">#33000000</color>
|
||||
<color name="black_opacity_25">#3f000000</color>
|
||||
<color name="black_opacity_36">#5c000000</color>
|
||||
<color name="blue">#ff5c9ce6</color>
|
||||
<color name="blue_200">#ff5c9ce6</color>
|
||||
<color name="blue_200_muted">#ff74a2d6</color>
|
||||
<color name="blue_300">#ff528bcc</color>
|
||||
<color name="blue_400">#ff5181b8</color>
|
||||
<color name="blue_600">#ff45678f</color>
|
||||
<color name="blue_A300">#ff4772a6</color>
|
||||
<color name="blue_A400">#ff346cad</color>
|
||||
<color name="blue_A500">#ff3c6a9e</color>
|
||||
<color name="blue_A800">#ff28436e</color>
|
||||
<color name="blue_facebook">#ff4367a3</color>
|
||||
<color name="blue_200">@color/vk_blue_200</color>
|
||||
<color name="blue_200_muted">@color/vk_blue_200_muted</color>
|
||||
<color name="blue_300">@color/vk_blue_300</color>
|
||||
<color name="blue_400">@color/vk_blue_400</color>
|
||||
<color name="blue_600">@color/vk_blue_600</color>
|
||||
<color name="blue_A300">@color/vk_blue_A300</color>
|
||||
<color name="blue_A400">@color/vk_blue_A400</color>
|
||||
<color name="blue_A500">@color/vk_blue_A500</color>
|
||||
<color name="blue_A800">@color/vk_blue_A800</color>
|
||||
<color name="blue_facebook">@color/vk_blue_facebook</color>
|
||||
<color name="blue_gray">#ff61768f</color>
|
||||
<color name="blue_overlight_1_alpha32">#52add3ff</color>
|
||||
<color name="blue_overlight_2_alpha80">#ccc2deff</color>
|
||||
<color name="blue_overlight_3">#ff92b2d6</color>
|
||||
<color name="blue_overlight_1_alpha32">@color/vk_blue_overlight_1_alpha32</color>
|
||||
<color name="blue_overlight_2_alpha80">@color/vk_blue_overlight_2_alpha80</color>
|
||||
<color name="blue_overlight_3">@color/vk_blue_overlight_3</color>
|
||||
<color name="bottom_menu_color">#fffafafa</color>
|
||||
<color name="brand_dark">#ff38618d</color>
|
||||
<color name="bright_foreground_disabled_material_dark">#80ffffff</color>
|
||||
<color name="bright_foreground_disabled_material_light">#80000000</color>
|
||||
<color name="bright_foreground_inverse_material_dark">@color/bright_foreground_material_light
|
||||
</color>
|
||||
<color name="bright_foreground_inverse_material_light">@color/bright_foreground_material_dark
|
||||
</color>
|
||||
<color name="bright_foreground_inverse_material_dark">@color/bright_foreground_material_light</color>
|
||||
<color name="bright_foreground_inverse_material_light">@color/bright_foreground_material_dark</color>
|
||||
<color name="bright_foreground_material_dark">@android:color/white</color>
|
||||
<color name="bright_foreground_material_light">@android:color/black</color>
|
||||
<color name="brown_gold">#ff9e8f72</color>
|
||||
<color name="brown_light">#ffc2b79f</color>
|
||||
<color name="brown_gold">@color/vk_brown_gold</color>
|
||||
<color name="brown_light">@color/vk_brown_light</color>
|
||||
<color name="browser_actions_bg_grey">#fff5f5f5</color>
|
||||
<color name="browser_actions_divider_color">#1e000000</color>
|
||||
<color name="browser_actions_text_color">#de000000</color>
|
||||
<color name="browser_actions_title_color">#ff646464</color>
|
||||
<color name="bugtracker_blue">#ff528bcc</color>
|
||||
<color name="button_material_dark">#ff5a595b</color>
|
||||
<color name="button_material_light">#ffd6d7d7</color>
|
||||
<color name="calendar_header">#ff999999</color>
|
||||
@@ -103,18 +109,44 @@
|
||||
<color name="cardview_light_background">#ffffffff</color>
|
||||
<color name="cardview_shadow_end_color">#03000000</color>
|
||||
<color name="cardview_shadow_start_color">#37000000</color>
|
||||
<color name="charcoal">#ff384452</color>
|
||||
<color name="cast_expanded_controller_ad_break_marker_color">#fffec92f</color>
|
||||
<color name="cast_expanded_controller_ad_container_white_stripe_color">#1affffff</color>
|
||||
<color name="cast_expanded_controller_ad_in_progress_text_color">#ffffffff</color>
|
||||
<color name="cast_expanded_controller_ad_label_background_color">#fffec92f</color>
|
||||
<color name="cast_expanded_controller_ad_label_text_color">#ffffffff</color>
|
||||
<color name="cast_expanded_controller_background_color">#ff000000</color>
|
||||
<color name="cast_expanded_controller_live_indicator_color">#ffd0021b</color>
|
||||
<color name="cast_expanded_controller_loading_indicator_color">#ffffffff</color>
|
||||
<color name="cast_expanded_controller_progress_text_color">#e5ffffff</color>
|
||||
<color name="cast_expanded_controller_seek_bar_progress_background_tint_color">#46ffffff</color>
|
||||
<color name="cast_expanded_controller_text_color">#ffffffff</color>
|
||||
<color name="cast_intro_overlay_background_color">#cc000000</color>
|
||||
<color name="cast_intro_overlay_button_background_color">#bb33b5e5</color>
|
||||
<color name="cast_libraries_material_featurehighlight_outer_highlight_default_color">#ff2196f3</color>
|
||||
<color name="cast_libraries_material_featurehighlight_text_body_color">#ffffffff</color>
|
||||
<color name="cast_libraries_material_featurehighlight_text_header_color">#ffffffff</color>
|
||||
<color name="cast_mini_controller_loading_indicator_color">#ff000000</color>
|
||||
<color name="cast_seekbar_progress_thumb_color">#ffd0021b</color>
|
||||
<color name="cast_seekbar_secondary_progress_color">#a6ffffff</color>
|
||||
<color name="cast_seekbar_tooltip_background_color">#e6616161</color>
|
||||
<color name="cast_seekbar_unseekable_progress_color">#4dffffff</color>
|
||||
<color name="charcoal">@color/vk_charcoal</color>
|
||||
<color name="circle_background">#fff2f2f2</color>
|
||||
<color name="clear">#00000000</color>
|
||||
<color name="clear">@color/vk_clear</color>
|
||||
<color name="clip_action_button_background_color">@color/vk_azure_A400</color>
|
||||
<color name="clip_action_button_text_color">@color/vk_white</color>
|
||||
<color name="clip_clickable_description">@color/vk_white_alpha60</color>
|
||||
<color name="clip_feed_page_selector_color">@color/vk_white_alpha20</color>
|
||||
<color name="clip_timeline">@color/vk_white</color>
|
||||
<color name="colorAccent">#ff80cbc4</color>
|
||||
<color name="colorPrimary">#ff212121</color>
|
||||
<color name="colorPrimaryDark">@android:color/black</color>
|
||||
<color name="colored_notification_bg">@color/white</color>
|
||||
<color name="com_facebook_blue">#ff1877f2</color>
|
||||
<color name="com_facebook_button_background_color">@color/com_facebook_blue</color>
|
||||
<color name="com_facebook_button_background_color_disabled">#ffebedf0</color>
|
||||
<color name="com_facebook_button_background_color_pressed">#ff186bda</color>
|
||||
<color name="com_facebook_button_send_background_color">@color/com_facebook_messenger_blue
|
||||
</color>
|
||||
<color name="com_facebook_button_send_background_color">@color/com_facebook_messenger_blue</color>
|
||||
<color name="com_facebook_button_send_background_color_pressed">#ff006fff</color>
|
||||
<color name="com_facebook_device_auth_text">#ff90949c</color>
|
||||
<color name="com_facebook_likeboxcountview_border_color">#ff6a7180</color>
|
||||
@@ -143,10 +175,36 @@
|
||||
<color name="darker_blue">#ff0099cc</color>
|
||||
<color name="date_picker_text_normal">#ff999999</color>
|
||||
<color name="date_picker_view_animator">#fff2f2f2</color>
|
||||
<color name="debug_view_bg">#a044678f</color>
|
||||
<color name="debug_view_error_bg">#a0e6457a</color>
|
||||
<color name="default_progress_bar_color">#ffffffff</color>
|
||||
<color name="design_bottom_navigation_shadow_color">#14000000</color>
|
||||
<color name="design_default_color_primary">#ff3f51b5</color>
|
||||
<color name="design_default_color_primary_dark">#ff303f9f</color>
|
||||
<color name="design_dark_default_color_background">#ff121212</color>
|
||||
<color name="design_dark_default_color_error">#ffcf6679</color>
|
||||
<color name="design_dark_default_color_on_background">#ffffffff</color>
|
||||
<color name="design_dark_default_color_on_error">#ff000000</color>
|
||||
<color name="design_dark_default_color_on_primary">#ff000000</color>
|
||||
<color name="design_dark_default_color_on_secondary">#ff000000</color>
|
||||
<color name="design_dark_default_color_on_surface">#ffffffff</color>
|
||||
<color name="design_dark_default_color_primary">#ffba86fc</color>
|
||||
<color name="design_dark_default_color_primary_dark">#ff000000</color>
|
||||
<color name="design_dark_default_color_primary_variant">#ff3700b3</color>
|
||||
<color name="design_dark_default_color_secondary">#ff03dac6</color>
|
||||
<color name="design_dark_default_color_secondary_variant">#ff03dac6</color>
|
||||
<color name="design_dark_default_color_surface">#ff121212</color>
|
||||
<color name="design_default_color_background">#ffffffff</color>
|
||||
<color name="design_default_color_error">#ffb00020</color>
|
||||
<color name="design_default_color_on_background">#ff000000</color>
|
||||
<color name="design_default_color_on_error">#ffffffff</color>
|
||||
<color name="design_default_color_on_primary">#ffffffff</color>
|
||||
<color name="design_default_color_on_secondary">#ff000000</color>
|
||||
<color name="design_default_color_on_surface">#ff000000</color>
|
||||
<color name="design_default_color_primary">#ff6200ee</color>
|
||||
<color name="design_default_color_primary_dark">#ff3700b3</color>
|
||||
<color name="design_default_color_primary_variant">#ff3700b3</color>
|
||||
<color name="design_default_color_secondary">#ff03dac6</color>
|
||||
<color name="design_default_color_secondary_variant">#ff018786</color>
|
||||
<color name="design_default_color_surface">#ffffffff</color>
|
||||
<color name="design_fab_shadow_end_color">@android:color/transparent</color>
|
||||
<color name="design_fab_shadow_mid_color">#14000000</color>
|
||||
<color name="design_fab_shadow_start_color">#44000000</color>
|
||||
@@ -166,8 +224,17 @@
|
||||
<color name="done_text_color_normal">#ff333333</color>
|
||||
<color name="dot_unread">#ff7aa0cc</color>
|
||||
<color name="drawer_bg_tablet">#ff384554</color>
|
||||
<color name="emerald">@color/vk_emerald</color>
|
||||
<color name="error_color_material_dark">#ffff7043</color>
|
||||
<color name="error_color_material_light">#ffff5722</color>
|
||||
<color name="exo_black_opacity_60">#98000000</color>
|
||||
<color name="exo_black_opacity_70">#b3000000</color>
|
||||
<color name="exo_bottom_bar_background">#b0000000</color>
|
||||
<color name="exo_edit_mode_background_color">#fff4f3f0</color>
|
||||
<color name="exo_error_message_background_color">#aa000000</color>
|
||||
<color name="exo_styled_error_message_background">#80808080</color>
|
||||
<color name="exo_white">#ffffffff</color>
|
||||
<color name="exo_white_opacity_70">#b3ffffff</color>
|
||||
<color name="fave_action_gray">#ffd8d8d8</color>
|
||||
<color name="fave_dark_link">#ff44678f</color>
|
||||
<color name="fave_dark_transparent">#880d0d0d</color>
|
||||
@@ -177,40 +244,47 @@
|
||||
<color name="fave_snippet_dark_gray">#ffbfc8d2</color>
|
||||
<color name="fave_snippet_gray">#ffebedf0</color>
|
||||
<color name="fave_transparent_gray">#26000000</color>
|
||||
<color name="fcm_test_color">#ff4285f4</color>
|
||||
<color name="fire_orange">#fff05c44</color>
|
||||
<color name="foreground_material_dark">@android:color/white</color>
|
||||
<color name="foreground_material_light">@android:color/black</color>
|
||||
<color name="friend_request_notification_description">@color/vk_steel_gray_400</color>
|
||||
<color name="friend_request_notification_subhead">@color/vk_steel_gray_500</color>
|
||||
<color name="friend_request_notification_title">@color/vk_black</color>
|
||||
<color name="game_gray">#ff9ca0a6</color>
|
||||
<color name="games_gray">#ff6a6f75</color>
|
||||
<color name="games_light_gray">#ff909499</color>
|
||||
<color name="gifts_dialog_bg">#fff0f1f2</color>
|
||||
<color name="gold_200">#fff4e7c3</color>
|
||||
<color name="gold_250">#ffe3d3ac</color>
|
||||
<color name="gold_300">#ffd1c097</color>
|
||||
<color name="gold_400">#ffab9871</color>
|
||||
<color name="gold_500">#ff857250</color>
|
||||
<color name="gold_200">@color/vk_gold_200</color>
|
||||
<color name="gold_250">@color/vk_gold_250</color>
|
||||
<color name="gold_300">@color/vk_gold_300</color>
|
||||
<color name="gold_400">@color/vk_gold_400</color>
|
||||
<color name="gold_500">@color/vk_gold_500</color>
|
||||
<color name="gray">#ff909499</color>
|
||||
<color name="gray_100">#ffe1e3e6</color>
|
||||
<color name="gray_1000">#ff0a0a0a</color>
|
||||
<color name="gray_20">#fff9f9f9</color>
|
||||
<color name="gray_200">#ffc4c8cc</color>
|
||||
<color name="gray_300">#ffaaaeb3</color>
|
||||
<color name="gray_40">#fff2f3f5</color>
|
||||
<color name="gray_400">#ff909499</color>
|
||||
<color name="gray_450">#ff7f8285</color>
|
||||
<color name="gray_50">#ffebedf0</color>
|
||||
<color name="gray_500">#ff76787a</color>
|
||||
<color name="gray_600">#ff5d5f61</color>
|
||||
<color name="gray_700">#ff454647</color>
|
||||
<color name="gray_750">#ff363738</color>
|
||||
<color name="gray_800">#ff2c2d2e</color>
|
||||
<color name="gray_850">#ff232324</color>
|
||||
<color name="gray_900">#ff19191a</color>
|
||||
<color name="gray_950">#ff141414</color>
|
||||
<color name="gray_A150">#ffd7d8d9</color>
|
||||
<color name="gray_A40">#fff5f5f5</color>
|
||||
<color name="gray_A970">#ff070708</color>
|
||||
<color name="gray_alpha">#b3d7dbe0</color>
|
||||
<color name="gray_100">@color/vk_gray_100</color>
|
||||
<color name="gray_1000">@color/vk_gray_1000</color>
|
||||
<color name="gray_20">@color/vk_gray_20</color>
|
||||
<color name="gray_200">@color/vk_gray_200</color>
|
||||
<color name="gray_300">@color/vk_gray_300</color>
|
||||
<color name="gray_40">@color/vk_gray_40</color>
|
||||
<color name="gray_400">@color/vk_gray_400</color>
|
||||
<color name="gray_450">@color/vk_gray_450</color>
|
||||
<color name="gray_50">@color/vk_gray_50</color>
|
||||
<color name="gray_500">@color/vk_gray_500</color>
|
||||
<color name="gray_600">@color/vk_gray_600</color>
|
||||
<color name="gray_700">@color/vk_gray_700</color>
|
||||
<color name="gray_750">@color/vk_gray_750</color>
|
||||
<color name="gray_800">@color/vk_gray_800</color>
|
||||
<color name="gray_850">@color/vk_gray_850</color>
|
||||
<color name="gray_900">@color/vk_gray_900</color>
|
||||
<color name="gray_950">@color/vk_gray_950</color>
|
||||
<color name="gray_A150">@color/vk_gray_A150</color>
|
||||
<color name="gray_A40">@color/vk_gray_A40</color>
|
||||
<color name="gray_A970">@color/vk_gray_A970</color>
|
||||
<color name="gray_alpha">@color/vk_gray_alpha</color>
|
||||
<color name="gray_title">#86000205</color>
|
||||
<color name="green">#ff4bb34b</color>
|
||||
<color name="green">@color/vk_green</color>
|
||||
<color name="green_alpha">@color/vk_green_alpha</color>
|
||||
<color name="green_opacity40">#664bb34b</color>
|
||||
<color name="header_blue">#ff5181b8</color>
|
||||
<color name="header_blue_opacity16">#285181b8</color>
|
||||
@@ -219,19 +293,75 @@
|
||||
<color name="highlighted_positive">#0f003973</color>
|
||||
<color name="highlighted_text_material_dark">#6680cbc4</color>
|
||||
<color name="highlighted_text_material_light">#66009688</color>
|
||||
<color name="icon_background_blue_start_color">#ff70b2ff</color>
|
||||
<color name="icon_background_green_end_color">#ff32b332</color>
|
||||
<color name="icon_background_green_start_color">#ff50c750</color>
|
||||
<color name="icon_background_grey_start_color">#ffb1b6bd</color>
|
||||
<color name="image_placeholder">#ffe6e8eb</color>
|
||||
<color name="image_placeholder_discover">#fff7f7f7</color>
|
||||
<color name="lavender_100">@color/vk_lavender_100</color>
|
||||
<color name="lavender_200">@color/vk_lavender_200</color>
|
||||
<color name="lavender_300">@color/vk_lavender_300</color>
|
||||
<color name="lavender_700">@color/vk_lavender_700</color>
|
||||
<color name="lavender_800">@color/vk_lavender_800</color>
|
||||
<color name="lavender_900">@color/vk_lavender_900</color>
|
||||
<color name="lavender_A100">@color/vk_lavender_A100</color>
|
||||
<color name="lavender_A200">@color/vk_lavender_A200</color>
|
||||
<color name="lavender_A300">@color/vk_lavender_A300</color>
|
||||
<color name="lavender_A400">@color/vk_lavender_A400</color>
|
||||
<color name="lavender_A700">@color/vk_lavender_A700</color>
|
||||
<color name="lavender_A800">@color/vk_lavender_A800</color>
|
||||
<color name="leak_canary_background_color">#ff242424</color>
|
||||
<color name="leak_canary_class_name">#ffbababa</color>
|
||||
<color name="leak_canary_count_default">#26ffcc32</color>
|
||||
<color name="leak_canary_count_new">#ffffd34c</color>
|
||||
<color name="leak_canary_count_new_border">@color/leak_canary_yellow</color>
|
||||
<color name="leak_canary_extra">#ff919191</color>
|
||||
<color name="leak_canary_gray">#ff2f2f2f</color>
|
||||
<color name="leak_canary_gray_3f">#ff3f3f3f</color>
|
||||
<color name="leak_canary_gray_6f">#ff6f6f6f</color>
|
||||
<color name="leak_canary_gray_darkest">#ff151c1f</color>
|
||||
<color name="leak_canary_gray_darkest_25p">#40151c1f</color>
|
||||
<color name="leak_canary_gray_darkest_40p">#66151c1f</color>
|
||||
<color name="leak_canary_gray_light">#ff939ca3</color>
|
||||
<color name="leak_canary_gray_lightest">#fff2f4f5</color>
|
||||
<color name="leak_canary_heap_app">#ff00ffff</color>
|
||||
<color name="leak_canary_heap_boolean_array">#ff383838</color>
|
||||
<color name="leak_canary_heap_byte_array">#ffe23ff7</color>
|
||||
<color name="leak_canary_heap_char_array">#ffffa500</color>
|
||||
<color name="leak_canary_heap_class_dump">#ff689959</color>
|
||||
<color name="leak_canary_heap_double_array">#ff4d4d4d</color>
|
||||
<color name="leak_canary_heap_float_array">#ff4d4d4d</color>
|
||||
<color name="leak_canary_heap_hprof_string">#ff900000</color>
|
||||
<color name="leak_canary_heap_image">#ff039dff</color>
|
||||
<color name="leak_canary_heap_instance">#ff72547a</color>
|
||||
<color name="leak_canary_heap_instance_string">#ffff0000</color>
|
||||
<color name="leak_canary_heap_int_array">#ff797979</color>
|
||||
<color name="leak_canary_heap_load_class">#ff12580f</color>
|
||||
<color name="leak_canary_heap_long_array">#ff797979</color>
|
||||
<color name="leak_canary_heap_object_array">#ffffffff</color>
|
||||
<color name="leak_canary_heap_other">#ff000000</color>
|
||||
<color name="leak_canary_heap_short_array">#ff797979</color>
|
||||
<color name="leak_canary_heap_stack_trace">#ffffd40b</color>
|
||||
<color name="leak_canary_heap_zygote">#ff000a8b</color>
|
||||
<color name="leak_canary_help">#ff6a98b9</color>
|
||||
<color name="leak_canary_leak">#ffbe383f</color>
|
||||
<color name="leak_canary_reference">#ff9976a8</color>
|
||||
<color name="leak_canary_white">#ffffffff</color>
|
||||
<color name="leak_canary_yellow">#ffffcc32</color>
|
||||
<color name="leak_canary_yellow_button">#ffffe79f</color>
|
||||
<color name="leak_canary_yellow_button_pressed">#ffc4b47f</color>
|
||||
<color name="libverify_secondary_icon_color">#ff757575</color>
|
||||
<color name="libverify_settings_color">#ff2a56c6</color>
|
||||
<color name="light_blue">#ff74a2d6</color>
|
||||
<color name="light_blue_gray">#ff99a2ad</color>
|
||||
<color name="light_blue_old">#ffe9eef3</color>
|
||||
<color name="light_gray">#ffaaaeb3</color>
|
||||
<color name="light_gray_2">#ffa9b0b8</color>
|
||||
<color name="light_gray_2">@color/vk_light_gray_2</color>
|
||||
<color name="light_transparent_white">#ccffffff</color>
|
||||
<color name="likes_panel_icon_color">#8dffffff</color>
|
||||
<color name="line_background">#ffcccccc</color>
|
||||
<color name="list_dialog_blue">@color/header_blue</color>
|
||||
<color name="list_dialog_blue">@color/vk_blue_400</color>
|
||||
<color name="live_emoji_butt_default">#ffb4b7bb</color>
|
||||
<color name="live_emoji_butt_hide">#ff638ebf</color>
|
||||
<color name="live_end_broadcast_background">#d9000000</color>
|
||||
@@ -245,13 +375,15 @@
|
||||
<color name="live_keyboard_hint">#9dc9cdd2</color>
|
||||
<color name="live_keyboard_popup_background">#ffebeef2</color>
|
||||
<color name="live_new_messages_text">#ff71757a</color>
|
||||
<color name="live_pending_background">#90000000</color>
|
||||
<color name="live_pending_fullscreen_background">#cc000000</color>
|
||||
<color name="live_recommended_element_back">#ff363636</color>
|
||||
<color name="live_white_chat_transparent">#ffffffff</color>
|
||||
<color name="material_blue_grey_800">#ff37474f</color>
|
||||
<color name="material_blue_grey_900">#ff263238</color>
|
||||
<color name="material_blue_grey_950">#ff21272b</color>
|
||||
<color name="material_deep_teal_200">#ff80cbc4</color>
|
||||
<color name="material_deep_teal_500">#ff009688</color>
|
||||
<color name="material_deep_teal_500">#ff008577</color>
|
||||
<color name="material_grey_100">#fff5f5f5</color>
|
||||
<color name="material_grey_300">#ffe0e0e0</color>
|
||||
<color name="material_grey_50">#fffafafa</color>
|
||||
@@ -264,14 +396,163 @@
|
||||
<color name="message_time">#ff78838f</color>
|
||||
<color name="messages_background_color">#ffebf0f5</color>
|
||||
<color name="mid_gray">#ffaaaeb3</color>
|
||||
<color name="mint_100">#ffd4fde8</color>
|
||||
<color name="mint_200">#ffaee6c9</color>
|
||||
<color name="mint_400">#ff6d8f7e</color>
|
||||
<color name="mint_500">#ff567867</color>
|
||||
<color name="mint_A1_alpha12">#1f006732</color>
|
||||
<color name="mint_100">@color/vk_mint_100</color>
|
||||
<color name="mint_200">@color/vk_mint_200</color>
|
||||
<color name="mint_400">@color/vk_mint_400</color>
|
||||
<color name="mint_500">@color/vk_mint_500</color>
|
||||
<color name="mint_A1_alpha12">@color/vk_mint_A1_alpha12</color>
|
||||
<color name="modal_edittext_background">#fff2f3f5</color>
|
||||
<color name="modal_edittext_stroke">#26000000</color>
|
||||
<color name="money_transfer_create_bg">#ffebf0f5</color>
|
||||
<color name="mr_cast_meta_black_scrim">#99000000</color>
|
||||
<color name="mr_cast_meta_default_background">#ff25272b</color>
|
||||
<color name="mr_cast_meta_default_text_color">#ffffffff</color>
|
||||
<color name="mr_cast_progressbar_background_dark">#ff5f6368</color>
|
||||
<color name="mr_cast_progressbar_background_light">#ffcbcccd</color>
|
||||
<color name="mr_cast_progressbar_progress_and_thumb_dark">#ff5195ea</color>
|
||||
<color name="mr_cast_progressbar_progress_and_thumb_light">#ff4285f4</color>
|
||||
<color name="mr_cast_route_divider_dark">#803c4043</color>
|
||||
<color name="mr_cast_route_divider_light">#1425272b</color>
|
||||
<color name="mr_dynamic_dialog_background_dark">#ff000000</color>
|
||||
<color name="mr_dynamic_dialog_background_light">#ffffffff</color>
|
||||
<color name="mr_dynamic_dialog_header_text_color_dark">#ffbdc1c6</color>
|
||||
<color name="mr_dynamic_dialog_header_text_color_light">#ff80868b</color>
|
||||
<color name="mr_dynamic_dialog_icon_dark">#fff8f9fa</color>
|
||||
<color name="mr_dynamic_dialog_icon_light">#ff202124</color>
|
||||
<color name="mr_dynamic_dialog_route_text_color_dark">#ffffffff</color>
|
||||
<color name="mr_dynamic_dialog_route_text_color_light">#ff25272b</color>
|
||||
<color name="mrg_azure_100_muted">#ff67a5eb</color>
|
||||
<color name="mrg_azure_300">#ff2688eb</color>
|
||||
<color name="mrg_azure_350">#ff2975cc</color>
|
||||
<color name="mrg_azure_A100">#ff0077ff</color>
|
||||
<color name="mrg_azure_A400">#ff2d81e0</color>
|
||||
<color name="mrg_black">#ff000000</color>
|
||||
<color name="mrg_black_alpha05">#0d000000</color>
|
||||
<color name="mrg_black_alpha12">#1f000000</color>
|
||||
<color name="mrg_black_alpha15">#26000000</color>
|
||||
<color name="mrg_black_alpha16">#28000000</color>
|
||||
<color name="mrg_black_alpha20">#34000000</color>
|
||||
<color name="mrg_black_alpha24">#3d000000</color>
|
||||
<color name="mrg_black_alpha35">#59000000</color>
|
||||
<color name="mrg_black_alpha45">#73000000</color>
|
||||
<color name="mrg_black_alpha6">#0f000000</color>
|
||||
<color name="mrg_black_alpha60">#99000000</color>
|
||||
<color name="mrg_black_alpha75">#bf000000</color>
|
||||
<color name="mrg_black_alpha8">#14000000</color>
|
||||
<color name="mrg_black_blue10">#ff000c1a</color>
|
||||
<color name="mrg_black_blue24">#ff001c3d</color>
|
||||
<color name="mrg_black_blue24_alpha24">#3d001c3d</color>
|
||||
<color name="mrg_black_blue24_alpha8">#14001c3d</color>
|
||||
<color name="mrg_black_blue30_alpha66">#a800244d</color>
|
||||
<color name="mrg_black_blue45_alpha10">#1a003973</color>
|
||||
<color name="mrg_black_lavender_alpha5">#0d00083d</color>
|
||||
<color name="mrg_blue_200">#ff5c9ce6</color>
|
||||
<color name="mrg_blue_200_muted">#ff74a2d6</color>
|
||||
<color name="mrg_blue_300">#ff528bcc</color>
|
||||
<color name="mrg_blue_400">#ff5181b8</color>
|
||||
<color name="mrg_blue_600">#ff45678f</color>
|
||||
<color name="mrg_blue_A300">#ff4772a6</color>
|
||||
<color name="mrg_blue_A400">#ff346cad</color>
|
||||
<color name="mrg_blue_A500">#ff3c6a9e</color>
|
||||
<color name="mrg_blue_A800">#ff28436e</color>
|
||||
<color name="mrg_blue_facebook">#ff4367a3</color>
|
||||
<color name="mrg_blue_overlight_1_alpha32">#52add3ff</color>
|
||||
<color name="mrg_blue_overlight_2_alpha80">#ccc2deff</color>
|
||||
<color name="mrg_blue_overlight_3">#ff92b2d6</color>
|
||||
<color name="mrg_brown_gold">#ff9e8f72</color>
|
||||
<color name="mrg_brown_light">#ffc2b79f</color>
|
||||
<color name="mrg_charcoal">#ff384452</color>
|
||||
<color name="mrg_clear">#00000000</color>
|
||||
<color name="mrg_emerald">#ff4cd964</color>
|
||||
<color name="mrg_gold_200">#fff4e7c3</color>
|
||||
<color name="mrg_gold_250">#ffe3d3ac</color>
|
||||
<color name="mrg_gold_300">#ffd1c097</color>
|
||||
<color name="mrg_gold_400">#ffab9871</color>
|
||||
<color name="mrg_gold_500">#ff857250</color>
|
||||
<color name="mrg_gray_100">#ffe1e3e6</color>
|
||||
<color name="mrg_gray_1000">#ff0a0a0a</color>
|
||||
<color name="mrg_gray_20">#fff9f9f9</color>
|
||||
<color name="mrg_gray_200">#ffc4c8cc</color>
|
||||
<color name="mrg_gray_300">#ffaaaeb3</color>
|
||||
<color name="mrg_gray_40">#fff2f3f5</color>
|
||||
<color name="mrg_gray_400">#ff909499</color>
|
||||
<color name="mrg_gray_450">#ff7f8285</color>
|
||||
<color name="mrg_gray_50">#ffebedf0</color>
|
||||
<color name="mrg_gray_500">#ff76787a</color>
|
||||
<color name="mrg_gray_600">#ff5d5f61</color>
|
||||
<color name="mrg_gray_700">#ff454647</color>
|
||||
<color name="mrg_gray_750">#ff363738</color>
|
||||
<color name="mrg_gray_800">#ff2c2d2e</color>
|
||||
<color name="mrg_gray_850">#ff232324</color>
|
||||
<color name="mrg_gray_900">#ff19191a</color>
|
||||
<color name="mrg_gray_950">#ff141414</color>
|
||||
<color name="mrg_gray_A150">#ffd7d8d9</color>
|
||||
<color name="mrg_gray_A40">#fff5f5f5</color>
|
||||
<color name="mrg_gray_A970">#ff070708</color>
|
||||
<color name="mrg_gray_alpha">#b3d7dbe0</color>
|
||||
<color name="mrg_green">#ff4bb34b</color>
|
||||
<color name="mrg_green_alpha">#264bb34b</color>
|
||||
<color name="mrg_lavender_100">#ffe6e9ff</color>
|
||||
<color name="mrg_lavender_200">#ffccd3ff</color>
|
||||
<color name="mrg_lavender_300">#ffadb8ff</color>
|
||||
<color name="mrg_lavender_700">#ff5965b3</color>
|
||||
<color name="mrg_lavender_800">#ff404980</color>
|
||||
<color name="mrg_lavender_900">#ff262b4d</color>
|
||||
<color name="mrg_lavender_A100">#ffe6e5ff</color>
|
||||
<color name="mrg_lavender_A200">#ffceccff</color>
|
||||
<color name="mrg_lavender_A300">#ffb0adff</color>
|
||||
<color name="mrg_lavender_A400">#ff928fff</color>
|
||||
<color name="mrg_lavender_A700">#ff4b47b2</color>
|
||||
<color name="mrg_lavender_A800">#ff353380</color>
|
||||
<color name="mrg_light_gray_2">#ffa9b0b8</color>
|
||||
<color name="mrg_mint_100">#ffd4fde8</color>
|
||||
<color name="mrg_mint_200">#ffaee6c9</color>
|
||||
<color name="mrg_mint_400">#ff6d8f7e</color>
|
||||
<color name="mrg_mint_500">#ff567867</color>
|
||||
<color name="mrg_mint_A1_alpha12">#1f006732</color>
|
||||
<color name="mrg_neon_pink">#fff45fff</color>
|
||||
<color name="mrg_orange">#ffffa000</color>
|
||||
<color name="mrg_orange_fire">#fff05c44</color>
|
||||
<color name="mrg_pink">#ffe6457a</color>
|
||||
<color name="mrg_pink_alpha">#2e1e000c</color>
|
||||
<color name="mrg_pink_light">#fffaebeb</color>
|
||||
<color name="mrg_purple">#ff735ce6</color>
|
||||
<color name="mrg_purple_light">#ff937ff5</color>
|
||||
<color name="mrg_raspberry_pink">#ffe03fab</color>
|
||||
<color name="mrg_raspberry_pink_light">#fff060c0</color>
|
||||
<color name="mrg_red">#ffe64646</color>
|
||||
<color name="mrg_red_dark">#ff522e2e</color>
|
||||
<color name="mrg_red_error">#ffeb4250</color>
|
||||
<color name="mrg_red_light">#ffff5c5c</color>
|
||||
<color name="mrg_red_nice">#ffff3347</color>
|
||||
<color name="mrg_sky_300">#ff529ef4</color>
|
||||
<color name="mrg_steel_gray_150">#ffb8c1cc</color>
|
||||
<color name="mrg_steel_gray_200">#ffaeb7c2</color>
|
||||
<color name="mrg_steel_gray_250">#ffa3adb8</color>
|
||||
<color name="mrg_steel_gray_300">#ff99a2ad</color>
|
||||
<color name="mrg_steel_gray_350">#ff9099a3</color>
|
||||
<color name="mrg_steel_gray_400">#ff818c99</color>
|
||||
<color name="mrg_steel_gray_500">#ff6d7885</color>
|
||||
<color name="mrg_steel_gray_600">#ff5a6470</color>
|
||||
<color name="mrg_turquoise">#ff63b9ba</color>
|
||||
<color name="mrg_violet">#ff792ec0</color>
|
||||
<color name="mrg_violet_dark">#ff1f1b2c</color>
|
||||
<color name="mrg_violet_light">#ffa393f5</color>
|
||||
<color name="mrg_violet_muted">#ff4b4d61</color>
|
||||
<color name="mrg_white">#ffffffff</color>
|
||||
<color name="mrg_white_alpha12">#1fffffff</color>
|
||||
<color name="mrg_white_alpha15">#26ffffff</color>
|
||||
<color name="mrg_white_alpha20">#33ffffff</color>
|
||||
<color name="mrg_white_alpha32">#52ffffff</color>
|
||||
<color name="mrg_white_alpha40">#66ffffff</color>
|
||||
<color name="mrg_white_alpha60">#99ffffff</color>
|
||||
<color name="mrg_white_alpha8">#14ffffff</color>
|
||||
<color name="mrg_white_blue20">#ffcce4ff</color>
|
||||
<color name="mrg_white_blue32">#ffadd3ff</color>
|
||||
<color name="mrg_yellow">#ffffc107</color>
|
||||
<color name="mrg_yellow_light">#ffffd54f</color>
|
||||
<color name="mrg_yellow_overlight">#fffff2d6</color>
|
||||
<color name="mrg_yellow_sunflower">#fffece00</color>
|
||||
<color name="msg_search_selection">#1e0062d1</color>
|
||||
<color name="mtrl_btn_bg_color_disabled">#1f000000</color>
|
||||
<color name="mtrl_btn_text_color_disabled">#61000000</color>
|
||||
@@ -280,6 +561,7 @@
|
||||
<color name="mtrl_textinput_default_box_stroke_color">#6b000000</color>
|
||||
<color name="mtrl_textinput_disabled_color">#1f000000</color>
|
||||
<color name="mtrl_textinput_filled_box_default_background_color">#0a000000</color>
|
||||
<color name="mtrl_textinput_focused_box_stroke_color">#00000000</color>
|
||||
<color name="mtrl_textinput_hovered_box_stroke_color">#de000000</color>
|
||||
<color name="music_action_button_blue">#ff518bcc</color>
|
||||
<color name="music_action_button_gray">#ffaaaeb3</color>
|
||||
@@ -297,7 +579,7 @@
|
||||
<color name="music_check_button_bg_checked">#1a003973</color>
|
||||
<color name="music_check_button_bg_normal">#ff5181b8</color>
|
||||
<color name="music_check_button_bg_pressed">#ff71a1d8</color>
|
||||
<color name="music_check_button_content_checked">@color/caption_gray</color>
|
||||
<color name="music_check_button_content_checked">@color/vk_gray_400</color>
|
||||
<color name="music_check_button_content_normal">#ffffffff</color>
|
||||
<color name="music_controls_button">#ff45484c</color>
|
||||
<color name="music_divider_bg">#1f000000</color>
|
||||
@@ -306,10 +588,10 @@
|
||||
<color name="music_follow_button_bg_pressed">@color/music_check_button_bg_pressed</color>
|
||||
<color name="music_link_text_normal">#ff5a8fcc</color>
|
||||
<color name="music_link_text_pressed">#ff71a1d8</color>
|
||||
<color name="music_list_item_snippet_color">@color/caption_gray</color>
|
||||
<color name="music_list_item_snippet_color">@color/vk_gray_400</color>
|
||||
<color name="music_list_item_title_color">#ff2c2d2e</color>
|
||||
<color name="music_placeholder_artist_bg">#14001c3d</color>
|
||||
<color name="music_placeholder_bg">@color/placeholder_background</color>
|
||||
<color name="music_placeholder_bg">@color/vk_black_blue24_alpha8</color>
|
||||
<color name="music_placeholder_icon_tint">#ffafbac7</color>
|
||||
<color name="music_playing_drawable_rect_blue">#ff518bcc</color>
|
||||
<color name="music_playing_drawable_rect_white">#fffdfeff</color>
|
||||
@@ -325,10 +607,10 @@
|
||||
<color name="music_search_suggestion_highlight">#ff909499</color>
|
||||
<color name="music_search_text_hint">#99ffffff</color>
|
||||
<color name="music_selectable_bg_normal">#00000000</color>
|
||||
<color name="music_selectable_bg_pressed">#33999999</color>
|
||||
<color name="music_selectable_bg_selected">#33999999</color>
|
||||
<color name="music_selectable_bg_pressed">#39999999</color>
|
||||
<color name="music_selectable_bg_selected">#39999999</color>
|
||||
<color name="music_subscription_link">#ff4d88d0</color>
|
||||
<color name="music_tab_bg_normal">@color/header_blue</color>
|
||||
<color name="music_tab_bg_normal">@color/vk_blue_400</color>
|
||||
<color name="music_tab_bg_pressed">#ff71a1d8</color>
|
||||
<color name="music_tab_text_normal">#b3ffffff</color>
|
||||
<color name="music_tab_text_selected">#ffffffff</color>
|
||||
@@ -343,9 +625,34 @@
|
||||
<color name="muted_blue">#ff45678f</color>
|
||||
<color name="muted_blue_old">#ff45678f</color>
|
||||
<color name="muted_blue_opacity40">#6645678f</color>
|
||||
<color name="myAssistant_background">#ffffffff</color>
|
||||
<color name="myAssistant_black">#ff000000</color>
|
||||
<color name="myAssistant_border">#142f3c5f</color>
|
||||
<color name="myAssistant_brandedBlue">#ff005ff9</color>
|
||||
<color name="myAssistant_cardBackground">@color/myAssistant_background</color>
|
||||
<color name="myAssistant_cardBackground2">#ffffffff</color>
|
||||
<color name="myAssistant_cardStroke">#14000000</color>
|
||||
<color name="myAssistant_chatDark">#ff2f3c5f</color>
|
||||
<color name="myAssistant_chatDivider">#fff3f3f3</color>
|
||||
<color name="myAssistant_contrast">#ff000000</color>
|
||||
<color name="myAssistant_dialogOverlay">#80ffffff</color>
|
||||
<color name="myAssistant_dialogScrim">#80000000</color>
|
||||
<color name="myAssistant_dialogSuggestBackground">#ffebf2fe</color>
|
||||
<color name="myAssistant_dialogSuggestText">#ff004ac2</color>
|
||||
<color name="myAssistant_grayBg">#fff3f3f3</color>
|
||||
<color name="myAssistant_iconBlack">#ff000000</color>
|
||||
<color name="myAssistant_iconDark">#ff2f3c5f</color>
|
||||
<color name="myAssistant_iconGray">#ffc2cadc</color>
|
||||
<color name="myAssistant_iconWhite">#ffffffff</color>
|
||||
<color name="myAssistant_mainBlue">@color/myAssistant_brandedBlue</color>
|
||||
<color name="myAssistant_messageBackground">#fff3f3f3</color>
|
||||
<color name="myAssistant_textGray">#ffa1a9bc</color>
|
||||
<color name="myAssistant_textGray2">#ffa1a9bc</color>
|
||||
<color name="myAssistant_white">#ffffffff</color>
|
||||
<color name="name">#ff4774a8</color>
|
||||
<color name="narrative_bg_button_color">#a6ffffff</color>
|
||||
<color name="narrative_more_bg">#ff363738</color>
|
||||
<color name="neon_pink">@color/vk_neon_pink</color>
|
||||
<color name="newpost_button_inactive">#ffa0a9b3</color>
|
||||
<color name="newpost_done_inactive">#ffc8cacc</color>
|
||||
<color name="newpost_search_background">#fff2f3f5</color>
|
||||
@@ -355,20 +662,28 @@
|
||||
<color name="nice_red">#ffff3347</color>
|
||||
<color name="nice_red_opacity40">#66ff3347</color>
|
||||
<color name="not_placeholder_color">#ffebebeb</color>
|
||||
<color name="notification_action_color_filter">@color/secondary_text_default_material_light
|
||||
</color>
|
||||
<color name="notification_action_color_filter">@color/androidx_core_secondary_text_default_material_light</color>
|
||||
<color name="notification_color">#ff5181b8</color>
|
||||
<color name="notification_icon_bg_color">#ff9e9e9e</color>
|
||||
<color name="notification_material_background_media_default_color">#ff424242</color>
|
||||
<color name="numbers_text_color">#ff8c8c8c</color>
|
||||
<color name="old">#ff24b56d</color>
|
||||
<color name="orange">#ffffa000</color>
|
||||
<color name="orange_fire">#fff05c44</color>
|
||||
<color name="one_video_azur_300">#ff3f8ae0</color>
|
||||
<color name="one_video_black">#ff000000</color>
|
||||
<color name="one_video_blue_300">#ff528bcc</color>
|
||||
<color name="one_video_gray">#ff909499</color>
|
||||
<color name="one_video_gray_200">#ffc4c8cc</color>
|
||||
<color name="one_video_steel_gray_400">#ff818c99</color>
|
||||
<color name="one_video_subtitle_background">#66000000</color>
|
||||
<color name="one_video_white">#ffffffff</color>
|
||||
<color name="one_video_white_alpha60">#99ffffff</color>
|
||||
<color name="orange">@color/vk_orange</color>
|
||||
<color name="orange_fire">@color/vk_orange_fire</color>
|
||||
<color name="outline_gray">#ffa0a6ad</color>
|
||||
<color name="overlay">#fff7f7f7</color>
|
||||
<color name="pale_grey">#fff0f1f3</color>
|
||||
<color name="photo_placeholder">#fff2f2f2</color>
|
||||
<color name="picker_blue">#ff5181b8</color>
|
||||
<color name="picker_blue">@color/blue_400</color>
|
||||
<color name="picker_blue_disabled">#ff718198</color>
|
||||
<color name="picker_blue_pressed">#ff71a1d8</color>
|
||||
<color name="picker_camera_button">#ff4774a8</color>
|
||||
@@ -383,14 +698,17 @@
|
||||
<color name="picker_tab_panel_bg">#fffafafa</color>
|
||||
<color name="picker_tab_text_normal">#ff888e94</color>
|
||||
<color name="picker_tab_text_selected">#ff5181b8</color>
|
||||
<color name="pink">#ffe6457a</color>
|
||||
<color name="pink_alpha">#2e1e000c</color>
|
||||
<color name="pink_light">#fffaebeb</color>
|
||||
<color name="pickup_point_marker_color">@color/vk_azure_300</color>
|
||||
<color name="pin_keyboard_selected">#ffe6ebf1</color>
|
||||
<color name="pink">@color/vk_pink</color>
|
||||
<color name="pink_alpha">@color/vk_pink_alpha</color>
|
||||
<color name="pink_light">@color/vk_pink_light</color>
|
||||
<color name="placeholder_background">#12001c3d</color>
|
||||
<color name="placeholder_foreground">#4000244d</color>
|
||||
<color name="placeholder_icon_background_system_theme">@color/vk_black_blue24_alpha8</color>
|
||||
<color name="post_dark_gray">#ff757c85</color>
|
||||
<color name="post_light_gray">#fff5f6f7</color>
|
||||
<color name="post_suggest_blue">@color/accent_blue</color>
|
||||
<color name="post_suggest_blue">@color/vk_blue_300</color>
|
||||
<color name="post_suggest_green">#ff62b362</color>
|
||||
<color name="post_suggest_orange">#ffeb9823</color>
|
||||
<color name="post_suggest_purple">#ffa351cc</color>
|
||||
@@ -409,13 +727,20 @@
|
||||
<color name="profile_icon_tint_light">#ffa9b2be</color>
|
||||
<color name="profile_image_bg">#ffc9cdd1</color>
|
||||
<color name="prompt_bg_color">#8f000000</color>
|
||||
<color name="red">#ffe64646</color>
|
||||
<color name="red_dark">#ff522e2e</color>
|
||||
<color name="red_error">#ffeb4250</color>
|
||||
<color name="purple">@color/vk_purple</color>
|
||||
<color name="purple_light">@color/vk_purple_light</color>
|
||||
<color name="raspberry_pink">@color/vk_raspberry_pink</color>
|
||||
<color name="raspberry_pink_light">@color/vk_raspberry_pink_light</color>
|
||||
<color name="recognition_background_color">#66ffffff</color>
|
||||
<color name="recognition_border_color">#1e000000</color>
|
||||
<color name="recognition_progress_color">@color/vk_white</color>
|
||||
<color name="red">@color/vk_red</color>
|
||||
<color name="red_dark">@color/vk_red_dark</color>
|
||||
<color name="red_error">@color/vk_red_error</color>
|
||||
<color name="red_error_alpha10">#19eb4250</color>
|
||||
<color name="red_error_alpha15">#26eb4250</color>
|
||||
<color name="red_light">#ffff5c5c</color>
|
||||
<color name="red_nice">#ffff3347</color>
|
||||
<color name="red_light">@color/vk_red_light</color>
|
||||
<color name="red_nice">@color/vk_red_nice</color>
|
||||
<color name="ripple_material_dark">#33ffffff</color>
|
||||
<color name="ripple_material_light">#1f000000</color>
|
||||
<color name="secondary_text_default_material_dark">#b3ffffff</color>
|
||||
@@ -436,17 +761,20 @@
|
||||
<color name="sharing_white_btn_pressed">#ffdddddd</color>
|
||||
<color name="sharing_white_highlighter">#50ffffff</color>
|
||||
<color name="single_video_placeholder">#ff262729</color>
|
||||
<color name="sky_300">#ff71aaeb</color>
|
||||
<color name="sky_300">@color/vk_sky_300</color>
|
||||
<color name="slate_grey_87">#de5a6166</color>
|
||||
<color name="spb_default_color">#ff33b5e5</color>
|
||||
<color name="splash_background">#fff1f2f6</color>
|
||||
<color name="status_bar_bg">#44000000</color>
|
||||
<color name="steel_gray_150">#ffb8c1cc</color>
|
||||
<color name="steel_gray_200">#ffaeb7c2</color>
|
||||
<color name="steel_gray_250">#ffa3adb8</color>
|
||||
<color name="steel_gray_300">#ff99a2ad</color>
|
||||
<color name="steel_gray_350">#ff9099a3</color>
|
||||
<color name="steel_gray_400">#ff818c99</color>
|
||||
<color name="steel_gray_500">#ff6d7885</color>
|
||||
<color name="steel_gray_150">@color/vk_steel_gray_150</color>
|
||||
<color name="steel_gray_200">@color/vk_steel_gray_200</color>
|
||||
<color name="steel_gray_250">@color/vk_steel_gray_250</color>
|
||||
<color name="steel_gray_300">@color/vk_steel_gray_300</color>
|
||||
<color name="steel_gray_350">@color/vk_steel_gray_350</color>
|
||||
<color name="steel_gray_400">@color/vk_steel_gray_400</color>
|
||||
<color name="steel_gray_500">@color/vk_steel_gray_500</color>
|
||||
<color name="steel_gray_600">@color/vk_steel_gray_600</color>
|
||||
<color name="stopwatch_text_color">@color/vk_white</color>
|
||||
<color name="story_clickable_sticker_bright_hint">#88808080</color>
|
||||
<color name="story_clickable_transparent_hint">#88ffffff</color>
|
||||
<color name="story_dialog_background">#4d000000</color>
|
||||
@@ -495,15 +823,14 @@
|
||||
<color name="tip_background">#ff5a9eff</color>
|
||||
<color name="toolbar_blueDialog_statusBarColorBack">#ff3b5f87</color>
|
||||
<color name="toolbar_blueDialog_statusBarColorFront">#00000000</color>
|
||||
<color name="toolbar_blue_background">@color/header_blue</color>
|
||||
<color name="toolbar_blue_background">@color/vk_blue_400</color>
|
||||
<color name="toolbar_blue_searchViewTextColorHint">#99ffffff</color>
|
||||
<color name="toolbar_blue_statusBarColorBack">@color/header_blue</color>
|
||||
<color name="toolbar_blue_statusBarColorBack">@color/vk_blue_400</color>
|
||||
<color name="toolbar_blue_statusBarColorFront">#44000000</color>
|
||||
<color name="toolbar_blue_textColorPrimary">@color/white</color>
|
||||
<color name="toolbar_blue_textColorSecondary">@color/white</color>
|
||||
<color name="toolbar_milk_background">#fff7f7f7</color>
|
||||
<color name="toolbar_milk_searchViewTextColorHint">@color/toolbar_milk_textColorSecondary
|
||||
</color>
|
||||
<color name="toolbar_milk_searchViewTextColorHint">@color/toolbar_milk_textColorSecondary</color>
|
||||
<color name="toolbar_milk_statusBarColorBack">@color/toolbar_milk_background</color>
|
||||
<color name="toolbar_milk_statusBarColorFront">#00000000</color>
|
||||
<color name="toolbar_milk_textColorPrimary">#ff444547</color>
|
||||
@@ -518,47 +845,51 @@
|
||||
<color name="tooltip_background_dark">#e6616161</color>
|
||||
<color name="tooltip_background_light">#e6ffffff</color>
|
||||
<color name="transparent_black">#7f000000</color>
|
||||
<color name="turquoise">#ff63b9ba</color>
|
||||
<color name="turquoise">@color/vk_turquoise</color>
|
||||
<color name="tw__blue_default">#ff5baaf4</color>
|
||||
<color name="tw__blue_pressed">#ff4186c8</color>
|
||||
<color name="tw__light_gray">#ffccd6dd</color>
|
||||
<color name="tw__solid_white">#ffffffff</color>
|
||||
<color name="users_discover_age_color">#ccffffff</color>
|
||||
<color name="video_blue">#ff91bff2</color>
|
||||
<color name="video_dark_while">#44ffffff</color>
|
||||
<color name="video_feed_background">#ff141414</color>
|
||||
<color name="video_light_white">#67ffffff</color>
|
||||
<color name="video_progress_background_color">#bf000000</color>
|
||||
<color name="video_restriction_blur_color_filter">#3d1f1f1f</color>
|
||||
<color name="video_subtitle_background">#66000000</color>
|
||||
<color name="video_white">#ffffffff</color>
|
||||
<color name="viewer_retry_button_text_color">#ff528bcc</color>
|
||||
<color name="viewer_retry_description_text_color">#ffffffff</color>
|
||||
<color name="violet">#ff792ec0</color>
|
||||
<color name="violet_dark">#ff1f1b2c</color>
|
||||
<color name="violet_light">#ffa393f5</color>
|
||||
<color name="violet_muted">#ff4b4d61</color>
|
||||
<color name="violet">@color/vk_violet</color>
|
||||
<color name="violet_dark">@color/vk_violet_dark</color>
|
||||
<color name="violet_light">@color/vk_violet_light</color>
|
||||
<color name="violet_muted">@color/vk_violet_muted</color>
|
||||
<color name="vk_azure_100_muted">#ff67a5eb</color>
|
||||
<color name="vk_azure_300">#ff3f8ae0</color>
|
||||
<color name="vk_azure_300">#ff2688eb</color>
|
||||
<color name="vk_azure_350">#ff2975cc</color>
|
||||
<color name="vk_azure_A100">#ff2787f5</color>
|
||||
<color name="vk_azure_A400">#ff4986cc</color>
|
||||
<color name="vk_azure_A100">#ff0077ff</color>
|
||||
<color name="vk_azure_A400">#ff2d81e0</color>
|
||||
<color name="vk_black">#ff000000</color>
|
||||
<color name="vk_black_alpha05">#0d000000</color>
|
||||
<color name="vk_black_alpha12">#1f000000</color>
|
||||
<color name="vk_black_alpha15">#26000000</color>
|
||||
<color name="vk_black_alpha16">#28000000</color>
|
||||
<color name="vk_black_alpha20">#4d000000</color>
|
||||
<color name="vk_black_alpha20">#34000000</color>
|
||||
<color name="vk_black_alpha24">#3d000000</color>
|
||||
<color name="vk_black_alpha35">#59000000</color>
|
||||
<color name="vk_black_alpha45">#73000000</color>
|
||||
<color name="vk_black_alpha6">#0f000000</color>
|
||||
<color name="vk_black_alpha60">#99000000</color>
|
||||
<color name="vk_black_alpha75">#bf000000</color>
|
||||
<color name="vk_black_alpha8">#14000000</color>
|
||||
<color name="vk_black_blue10">#ff000c1a</color>
|
||||
<color name="vk_black_blue24">#ff001d3d</color>
|
||||
<color name="vk_black_blue24">#ff001c3d</color>
|
||||
<color name="vk_black_blue24_alpha24">#3d001c3d</color>
|
||||
<color name="vk_black_blue24_alpha8">#14001d3d</color>
|
||||
<color name="vk_black_blue24_alpha8">#14001c3d</color>
|
||||
<color name="vk_black_blue30_alpha66">#a800244d</color>
|
||||
<color name="vk_black_blue45_alpha10">#1a003973</color>
|
||||
<color name="vk_black_lavender_alpha5">#0d00083d</color>
|
||||
<color name="vk_blue_200">#ff5c9ce6</color>
|
||||
<color name="vk_blue_200_muted">#ff74a2d6</color>
|
||||
<color name="vk_blue_300">#ff528bcc</color>
|
||||
@@ -576,12 +907,14 @@
|
||||
<color name="vk_brown_light">#ffc2b79f</color>
|
||||
<color name="vk_charcoal">#ff384452</color>
|
||||
<color name="vk_clear">#00000000</color>
|
||||
<color name="vk_emerald">#ff4cd964</color>
|
||||
<color name="vk_gold_100">#fffffbf2</color>
|
||||
<color name="vk_gold_150">#fffff1d4</color>
|
||||
<color name="vk_gold_200">#fff4e4be</color>
|
||||
<color name="vk_gold_300">#ffbbaa84</color>
|
||||
<color name="vk_gold_400">#ff9e8d6b</color>
|
||||
<color name="vk_gold_500">#ff7a6c4f</color>
|
||||
<color name="vk_gold_200">#fff4e7c3</color>
|
||||
<color name="vk_gold_250">#ffe3d3ac</color>
|
||||
<color name="vk_gold_300">#ffd1c097</color>
|
||||
<color name="vk_gold_400">#ffab9871</color>
|
||||
<color name="vk_gold_500">#ff857250</color>
|
||||
<color name="vk_gray_100">#ffe1e3e6</color>
|
||||
<color name="vk_gray_1000">#ff0a0a0a</color>
|
||||
<color name="vk_gray_20">#fff9f9f9</color>
|
||||
@@ -604,18 +937,45 @@
|
||||
<color name="vk_gray_A970">#ff070708</color>
|
||||
<color name="vk_gray_alpha">#b3d7dbe0</color>
|
||||
<color name="vk_green">#ff4bb34b</color>
|
||||
<color name="vk_green_alpha">#264bb34b</color>
|
||||
<color name="vk_green_call">@color/vk_green</color>
|
||||
<color name="vk_header_blue">#ff5181b8</color>
|
||||
<color name="vk_lavender_100">#ffe6e9ff</color>
|
||||
<color name="vk_lavender_200">#ffccd3ff</color>
|
||||
<color name="vk_lavender_300">#ffadb8ff</color>
|
||||
<color name="vk_lavender_700">#ff5965b3</color>
|
||||
<color name="vk_lavender_800">#ff404980</color>
|
||||
<color name="vk_lavender_900">#ff262b4d</color>
|
||||
<color name="vk_lavender_A100">#ffe6e5ff</color>
|
||||
<color name="vk_lavender_A200">#ffceccff</color>
|
||||
<color name="vk_lavender_A300">#ffb0adff</color>
|
||||
<color name="vk_lavender_A400">#ff928fff</color>
|
||||
<color name="vk_lavender_A700">#ff4b47b2</color>
|
||||
<color name="vk_lavender_A800">#ff353380</color>
|
||||
<color name="vk_light_gray_2">#ffa9b0b8</color>
|
||||
<color name="vk_mint_100">#ffd4fde8</color>
|
||||
<color name="vk_mint_200">#ffaee6c9</color>
|
||||
<color name="vk_mint_400">#ff6d8f7e</color>
|
||||
<color name="vk_mint_500">#ff567867</color>
|
||||
<color name="vk_mint_A1_alpha12">#1f006732</color>
|
||||
<color name="vk_neon_pink">#fff45fff</color>
|
||||
<color name="vk_orange">#ffffa000</color>
|
||||
<color name="vk_orange_fire">#fff05c44</color>
|
||||
<color name="vk_pink">#ffe6457a</color>
|
||||
<color name="vk_pink_alpha">#2e1e000c</color>
|
||||
<color name="vk_pink_light">#fffaebeb</color>
|
||||
<color name="vk_purple">#ff735ce6</color>
|
||||
<color name="vk_purple_light">#ff937ff5</color>
|
||||
<color name="vk_raspberry_pink">#ffe03fab</color>
|
||||
<color name="vk_raspberry_pink_light">#fff060c0</color>
|
||||
<color name="vk_red">#ffe64646</color>
|
||||
<color name="vk_red_call">@color/vk_red</color>
|
||||
<color name="vk_red_dark">#ff522e2e</color>
|
||||
<color name="vk_red_error">#ffeb4250</color>
|
||||
<color name="vk_red_light">#ffff4e5f</color>
|
||||
<color name="vk_red_light">#ffff5c5c</color>
|
||||
<color name="vk_red_nice">#ffff3347</color>
|
||||
<color name="vk_sky_300">#ff71aaeb</color>
|
||||
<color name="vk_silver_call">@color/vk_steel_gray_400</color>
|
||||
<color name="vk_sky_300">#ff529ef4</color>
|
||||
<color name="vk_steel_gray_150">#ffb8c1cc</color>
|
||||
<color name="vk_steel_gray_200">#ffaeb7c2</color>
|
||||
<color name="vk_steel_gray_250">#ffa3adb8</color>
|
||||
@@ -623,25 +983,30 @@
|
||||
<color name="vk_steel_gray_350">#ff9099a3</color>
|
||||
<color name="vk_steel_gray_400">#ff818c99</color>
|
||||
<color name="vk_steel_gray_500">#ff6d7885</color>
|
||||
<color name="vk_steel_gray_600">#ff5a6470</color>
|
||||
<color name="vk_terms_link">#ff528bcc</color>
|
||||
<color name="vk_tip_background">#ff5a9eff</color>
|
||||
<color name="vk_turquoise">#ff63b9ba</color>
|
||||
<color name="vk_ui_navigation_background">#33282b2e</color>
|
||||
<color name="vk_ui_navigation_background_pressed">#51282b2e</color>
|
||||
<color name="vk_ui_navigation_toolbar_controls_type_divider">#3dffffff</color>
|
||||
<color name="vk_violet">#ff792ec0</color>
|
||||
<color name="vk_violet_dark">#ff1f1b2c</color>
|
||||
<color name="vk_violet_light">#ff928dab</color>
|
||||
<color name="vk_violet_light">#ffa393f5</color>
|
||||
<color name="vk_violet_muted">#ff4b4d61</color>
|
||||
<color name="vk_white">#ffffffff</color>
|
||||
<color name="vk_white_alpha12">#1fffffff</color>
|
||||
<color name="vk_white_alpha15">#26ffffff</color>
|
||||
<color name="vk_white_alpha20">#4dffffff</color>
|
||||
<color name="vk_white_alpha20">#33ffffff</color>
|
||||
<color name="vk_white_alpha32">#52ffffff</color>
|
||||
<color name="vk_white_alpha40">#66ffffff</color>
|
||||
<color name="vk_white_alpha60">#99ffffff</color>
|
||||
<color name="vk_white_alpha8">#14ffffff</color>
|
||||
<color name="vk_white_blue20">#ffcce4ff</color>
|
||||
<color name="vk_white_blue32">#ffadd3ff</color>
|
||||
<color name="vk_yellow">#ffffc107</color>
|
||||
<color name="vk_yellow_light">#ffffd54f</color>
|
||||
<color name="vk_yellow_overlight">#fffff2d6</color>
|
||||
<color name="vk_yellow_sunflower">#fffece00</color>
|
||||
<color name="vkim_administration_title">#ff4d9950</color>
|
||||
<color name="vkim_background_dim">#66000000</color>
|
||||
@@ -659,17 +1024,36 @@
|
||||
<color name="vkim_ripple_dark">#20444444</color>
|
||||
<color name="vkim_ripple_light">#33ffffff</color>
|
||||
<color name="vkim_white_semitransparent">#80ffffff</color>
|
||||
<color name="vkrabota_brand_background">#ff8272c2</color>
|
||||
<color name="voip_mic_base_color_disabled">@color/vk_black</color>
|
||||
<color name="voip_mic_base_color_enabled">@color/vk_white</color>
|
||||
<color name="voip_mic_sound_color">@color/vk_emerald</color>
|
||||
<color name="voip_notification_bg_color">@color/vk_gray_800</color>
|
||||
<color name="voip_notification_name_text_color">@color/vk_gray_100</color>
|
||||
<color name="wallet_bright_foreground_disabled_holo_light">#ffb2b2b2</color>
|
||||
<color name="wallet_bright_foreground_holo_dark">#fff3f3f3</color>
|
||||
<color name="wallet_bright_foreground_holo_light">#ff000000</color>
|
||||
<color name="wallet_dim_foreground_disabled_holo_dark">#80bebebe</color>
|
||||
<color name="wallet_dim_foreground_holo_dark">#ffbebebe</color>
|
||||
<color name="wallet_highlighted_text_holo_dark">#6633b5e5</color>
|
||||
<color name="wallet_highlighted_text_holo_light">#6633b5e5</color>
|
||||
<color name="wallet_hint_foreground_holo_dark">#ff808080</color>
|
||||
<color name="wallet_hint_foreground_holo_light">#ff808080</color>
|
||||
<color name="wallet_holo_blue_light">#ff33b5e5</color>
|
||||
<color name="wallet_link_text_light">#ff0000ee</color>
|
||||
<color name="waveform_light">#ffbacde3</color>
|
||||
<color name="white">#ffffffff</color>
|
||||
<color name="white">@color/vk_white</color>
|
||||
<color name="white_alpha10">#02ffffff</color>
|
||||
<color name="white_alpha12">#1fffffff</color>
|
||||
<color name="white_alpha15">#26ffffff</color>
|
||||
<color name="white_alpha20">#4dffffff</color>
|
||||
<color name="white_alpha12">@color/vk_white_alpha12</color>
|
||||
<color name="white_alpha15">@color/vk_white_alpha15</color>
|
||||
<color name="white_alpha20">@color/vk_white_alpha20</color>
|
||||
<color name="white_alpha30">#4cffffff</color>
|
||||
<color name="white_alpha60">#99ffffff</color>
|
||||
<color name="white_alpha32">@color/vk_white_alpha32</color>
|
||||
<color name="white_alpha40">#66ffffff</color>
|
||||
<color name="white_alpha60">@color/vk_white_alpha60</color>
|
||||
<color name="white_alpha8">#15ffffff</color>
|
||||
<color name="white_blue20">#ffcce4ff</color>
|
||||
<color name="white_blue32">#ffadd3ff</color>
|
||||
<color name="white_blue20">@color/vk_white_blue20</color>
|
||||
<color name="white_blue32">@color/vk_white_blue32</color>
|
||||
<color name="white_highlighter">#25ffffff</color>
|
||||
<color name="white_highlighter_ripple">#50ffffff</color>
|
||||
<color name="white_opacity10">#02ffffff</color>
|
||||
@@ -682,8 +1066,9 @@
|
||||
<color name="window_bg">#ffffffff</color>
|
||||
<color name="window_bg_black">#ff000000</color>
|
||||
<color name="window_bg_transparent">#00000000</color>
|
||||
<color name="yellow">#ffffc107</color>
|
||||
<color name="yellow_light">#ffffd54f</color>
|
||||
<color name="yellow_sunflower">#fffece00</color>
|
||||
<color name="yellow">@color/vk_yellow</color>
|
||||
<color name="yellow_light">@color/vk_yellow_light</color>
|
||||
<color name="yellow_overlight">@color/vk_yellow_overlight</color>
|
||||
<color name="yellow_sunflower">@color/vk_yellow_sunflower</color>
|
||||
<color name="iclauncher">#fffcfcfc</color>
|
||||
</resources>
|
||||
|
||||
@@ -5099,7 +5099,7 @@ The messages won't be marked as read until you accept the request."</string>
|
||||
<string name="vkim_onboarding_dialogs_grant_contacts_permission">Allow access to contacts</string>
|
||||
<string name="vkim_onboarding_dialogs_syncing">Syncing contacts</string>
|
||||
<string name="vkim_onboarding_dialogs_title">No chats</string>
|
||||
<string name="vkim_one_msg_is_expired_description">This message self-destructed after a certain amount of time. You can only send these kinds of messages on VK Me.</string>
|
||||
<string name="vkim_one_msg_is_expired_description">This message self-destructed after a certain amount of time.</string>
|
||||
<string name="vkim_one_msg_is_expired_title">Self-destructing message</string>
|
||||
<string name="vkim_one_time_story_dialog_description">This story self-destructed after being viewed. You can send these kinds of stories on VK Me.</string>
|
||||
<string name="vkim_one_time_story_dialog_title">Self-destructing story</string>
|
||||
@@ -5284,7 +5284,7 @@ into the search bar"</string>
|
||||
<string name="vkim_share_title">Share</string>
|
||||
<string name="vkim_share_to_casper_chat">"In phantom chats, messages self-destruct an hour after they're sent"</string>
|
||||
<string name="vkim_share_waiting_for_network">Waiting for network…</string>
|
||||
<string name="vkim_some_msg_is_expired_description">These messages self-destructed after a certain amount of time. You can only send these kinds of messages on VK Me.</string>
|
||||
<string name="vkim_some_msg_is_expired_description">These messages self-destructed after a certain amount of time.</string>
|
||||
<string name="vkim_some_msg_is_expired_title">Self-destructing messages</string>
|
||||
<string name="vkim_stickers_pack_description">To get the %1$s sticker pack, you need to download VK Me.</string>
|
||||
<string name="vkim_stickers_pack_description_default">To get this sticker pack, you need to install VK Me.</string>
|
||||
@@ -5543,6 +5543,8 @@ Does not affect vk.cc links"</string>
|
||||
<string name="experts">Experts</string>
|
||||
<string name="DNT_OFF">Disable Do Not Type</string>
|
||||
<string name="DNT_ON">Enable Do Not Type</string>
|
||||
<string name="pinmsg">Pin chat</string>
|
||||
<string name="unpinmsg">Unpin chat</string>
|
||||
<string name="accounts">Accounts</string>
|
||||
<string name="act_bot">For Bots/Groups</string>
|
||||
<string name="act_cnv">For Conversations</string>
|
||||
@@ -5952,6 +5954,9 @@ May look like a fake leaving the online"</string>
|
||||
|
||||
<string name="wallpapers">Wallpapers</string>
|
||||
|
||||
<string name="translator">Translate</string>
|
||||
<string name="readto">Read to</string>
|
||||
|
||||
<string name="vkiddisable">Disable protection</string>
|
||||
<string name="vkidsumm">VK has started blocking the use of third-party applications, so for the stable operation of all parts of the application, it is necessary to disable Protection from suspicious applications \n\nVK ID -> Security and Login -> Protection from suspicious applications</string>
|
||||
</resources>
|
||||
|
||||
@@ -105,6 +105,11 @@
|
||||
android:title="Глобальный обход онлайна" />
|
||||
</PreferenceCategory>
|
||||
<PreferenceCategory android:title="@string/privacy_vtl">
|
||||
<com.vtosters.lite.ui.MaterialSwitchPreference
|
||||
android:defaultValue="false"
|
||||
android:key="savemsgsett"
|
||||
android:summary="Сохранять положение тумблеров в настройках сообщений"
|
||||
android:title="Сохранять настройки сообщений" />
|
||||
<com.vtosters.lite.ui.MaterialSwitchPreference
|
||||
android:defaultValue="false"
|
||||
android:key="screenshotdetect"
|
||||
@@ -115,5 +120,10 @@
|
||||
android:key="awayphp"
|
||||
android:summary="@string/vtlawayphpsummary"
|
||||
android:title="@string/vtlawayphp" />
|
||||
<com.vtosters.lite.ui.MaterialSwitchPreference
|
||||
android:defaultValue="true"
|
||||
android:key="hideDeviceInfo"
|
||||
android:summary="Отключить отправку информации об устройстве пользователя и вашем местоположении"
|
||||
android:title="Отключить отправку метрики" />
|
||||
</PreferenceCategory>
|
||||
</PreferenceScreen>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user