Compare commits
41
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6b5c5bedea | ||
|
|
0901af5106 | ||
|
|
5ef7b85e87 | ||
|
|
7facf974e6 | ||
|
|
eb21d3d11c | ||
|
|
03e8d7873e | ||
|
|
11faab902f | ||
|
|
9c1b00ef23 | ||
|
|
f40d3a5aac | ||
|
|
07aa13d9b0 | ||
|
|
0b267091ba | ||
|
|
ead6860674 | ||
|
|
a87c34f1fd | ||
|
|
4e4813fd5c | ||
|
|
58e728f26c | ||
|
|
35282945cc | ||
|
|
18965af7d8 | ||
|
|
a3987abf11 | ||
|
|
58ab5cf4cf | ||
|
|
6f115d1766 | ||
|
|
568a489993 | ||
|
|
2e50607a90 | ||
|
|
560321f4a3 | ||
|
|
afc0173423 | ||
|
|
da5ac90189 | ||
|
|
d8d435c994 | ||
|
|
0e225db32d | ||
|
|
e06e5ac3a7 | ||
|
|
a073314c28 | ||
|
|
c643776790 | ||
|
|
a67f3cd11e | ||
|
|
04087259c3 | ||
|
|
3f6177150d | ||
|
|
3f339821f7 | ||
|
|
9abef592fb | ||
|
|
a561f05b32 | ||
|
|
a8c4f0d505 | ||
|
|
93551d6b2d | ||
|
|
6ff176e5d4 | ||
|
|
cdec126f54 | ||
|
|
2885129531 |
@@ -5,15 +5,14 @@ import static ru.vtosters.lite.utils.Preferences.getBoolValue;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.RemoteException;
|
||||
import android.util.Log;
|
||||
|
||||
import com.vk.dto.music.MusicTrack;
|
||||
import com.vk.music.common.MusicPlaybackLaunchContext;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import b.h.g.g.PackageManagerHelper;
|
||||
import bruhcollective.itaysonlab.libvkx.ILibVkxService;
|
||||
|
||||
public class LibVKXClient{
|
||||
@@ -32,8 +31,13 @@ public class LibVKXClient{
|
||||
}
|
||||
|
||||
public static boolean isVkxInstalled(){
|
||||
return PackageManagerHelper.a(ClientConstants.PACKAGE, 128) != null;
|
||||
}
|
||||
try {
|
||||
getContext().getPackageManager().getPackageInfo("ua.itaysonlab.vkx", 0);
|
||||
return true;
|
||||
} catch (Exception unused) {
|
||||
return false;
|
||||
}
|
||||
} // VKX check
|
||||
|
||||
public static boolean isIntegrationEnabled(){
|
||||
return getBoolValue("libvkx_integration", false) && isVkxInstalled();
|
||||
@@ -44,30 +48,32 @@ public class LibVKXClient{
|
||||
return false;
|
||||
}
|
||||
|
||||
LibVKXClientImpl.LibVKXAction action = iLibVkxService -> LibVKXClient.lambdaplay(list, musicTrack, playerRefer, iLibVkxService);
|
||||
Log.d("LibVKXClient", "playing: " + musicTrack.toString());
|
||||
|
||||
LibVKXClientImpl.LibVKXAction action = iLibVkxService -> LibVKXClient.lambdaplay(list, musicTrack, iLibVkxService);
|
||||
|
||||
return getInstance().runOnService(action);
|
||||
}
|
||||
|
||||
public static void lambdaplay(List list, MusicTrack musicTrack, MusicPlaybackLaunchContext playerRefer, ILibVkxService iLibVkxService){
|
||||
public static void lambdaplay(List<MusicTrack> list, MusicTrack musicTrack, ILibVkxService iLibVkxService){
|
||||
int indexOf = list.indexOf(musicTrack);
|
||||
ArrayList arrayList = new ArrayList();
|
||||
Iterator it = list.iterator();
|
||||
while(it.hasNext()) {
|
||||
arrayList.add(asId((MusicTrack) it.next()));
|
||||
var ids = new ArrayList<String>();
|
||||
for (var track : list) {
|
||||
ids.add(asId(track));
|
||||
}
|
||||
if (indexOf == -1) {
|
||||
indexOf = 0;
|
||||
}
|
||||
Log.d("LibVKXClient", "tracks: " + ids.toString());
|
||||
try {
|
||||
iLibVkxService.play(arrayList, indexOf, "");
|
||||
iLibVkxService.play(ids, indexOf, "");
|
||||
} catch (RemoteException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private static String asId(MusicTrack musicTrack){
|
||||
String str = musicTrack.d + "_" + musicTrack.e;
|
||||
String str = musicTrack.e + "_" + musicTrack.d;
|
||||
if (musicTrack.O == null || musicTrack.O.equals("")) {
|
||||
return str;
|
||||
}
|
||||
|
||||
@@ -7,6 +7,10 @@ public class DNRPrefs{
|
||||
return getBoolValue("read_s", false);
|
||||
}
|
||||
|
||||
public static boolean getVoiceListened(){
|
||||
return getBoolValue("listen_v", false);
|
||||
}
|
||||
|
||||
public static boolean getMarkAsReadWithoutExceptions(int peerId){
|
||||
if (readPM(peerId))
|
||||
return true;
|
||||
|
||||
@@ -10,8 +10,8 @@ import com.vk.core.util.ToastUtils;
|
||||
import com.vk.dto.music.MusicTrack;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Random;
|
||||
|
||||
import ru.vtosters.lite.downloaders.notifications.NotificationChannels;
|
||||
import ru.vtosters.lite.music.Callback;
|
||||
import ru.vtosters.lite.music.FFMpeg;
|
||||
import ru.vtosters.lite.music.M3UDownloader;
|
||||
@@ -83,7 +83,7 @@ public class AudioDownloader{
|
||||
}
|
||||
|
||||
private static NotificationCompat.Builder buildDownloadNotification(MusicTrack track, int id){
|
||||
var notificationBuilder = new NotificationCompat.Builder(Globals.getContext(), "music_downloads")
|
||||
var notificationBuilder = new NotificationCompat.Builder(Globals.getContext(), NotificationChannels.MUSIC_DOWNLOAD_CHANNEL_ID)
|
||||
.setSmallIcon(android.R.drawable.stat_sys_download)
|
||||
.setContentTitle("Загрузка аудиозаписи")
|
||||
.setContentText(track.toString())
|
||||
|
||||
@@ -17,6 +17,7 @@ import android.widget.Toast;
|
||||
import com.vk.core.dialogs.bottomsheet.MenuBottomSheetAction;
|
||||
import com.vk.core.util.ToastUtils;
|
||||
import com.vk.dto.common.VideoFile;
|
||||
import com.vtosters.lite.R;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
@@ -26,10 +27,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import com.vtosters.lite.R;
|
||||
|
||||
import ru.vtosters.lite.utils.ExternalLinkHandler;
|
||||
import ru.vtosters.lite.utils.Preferences;
|
||||
|
||||
public class VideoDownloader{
|
||||
private static final int DOWNLOAD_ID = 0;
|
||||
@@ -48,7 +46,7 @@ public class VideoDownloader{
|
||||
public static void injectAction(ArrayList<MenuBottomSheetAction> list, VideoFile video){
|
||||
if (!video.U && !video.I1()) {
|
||||
addAction(list, DOWNLOAD_ID, R.drawable.ic_download_outline_24, R.string.download, 9);
|
||||
addAction(list, OPEN_EXTERNAL_LINK_ID, R.drawable.ic_link_outline_28, getIdentifier("interfacevideoext", "string"), 9);
|
||||
addAction(list, OPEN_EXTERNAL_LINK_ID, R.drawable.ic_link_outline_28, getIdentifier("interfacevideoext_short", "string"), 9);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
package ru.vtosters.lite.downloaders.notifications;
|
||||
|
||||
import android.app.Notification;
|
||||
import android.app.NotificationChannel;
|
||||
import android.app.NotificationManager;
|
||||
import android.os.Build;
|
||||
|
||||
import androidx.annotation.RequiresApi;
|
||||
import androidx.core.app.NotificationManagerCompat;
|
||||
|
||||
import ru.vtosters.lite.utils.Globals;
|
||||
|
||||
public class NotificationChannels {
|
||||
public static final String MUSIC_DOWNLOAD_CHANNEL_ID = "music_download_channel";
|
||||
public static final String MUSIC_DOWNLOAD_CHANNEL_NAME = "Загрузка музыки";
|
||||
public static final String MUSIC_DOWNLOAD_CHANNEL_DESCRIPTION = "Прогресс загрузки музыки";
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.O)
|
||||
public static void createChannels() {
|
||||
createMusicDownloadChannel();
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.O)
|
||||
public static void createMusicDownloadChannel() {
|
||||
var musicDownloadChannel = new NotificationChannel(MUSIC_DOWNLOAD_CHANNEL_ID, MUSIC_DOWNLOAD_CHANNEL_NAME, NotificationManager.IMPORTANCE_LOW);
|
||||
musicDownloadChannel.setDescription(MUSIC_DOWNLOAD_CHANNEL_DESCRIPTION);
|
||||
musicDownloadChannel.setShowBadge(true);
|
||||
musicDownloadChannel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);
|
||||
var notificationManager = NotificationManagerCompat.from(Globals.getContext());
|
||||
notificationManager.createNotificationChannel(musicDownloadChannel);
|
||||
}
|
||||
}
|
||||
+12
-12
@@ -1,4 +1,4 @@
|
||||
package ru.vtosters.lite.utils;
|
||||
package ru.vtosters.lite.hooks;
|
||||
import static ru.vtosters.lite.utils.Globals.getIdentifier;
|
||||
import static ru.vtosters.lite.utils.Globals.getPrefsValue;
|
||||
import static ru.vtosters.lite.utils.Globals.getString;
|
||||
@@ -10,17 +10,7 @@ import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.Locale;
|
||||
|
||||
public class LocaleUtils{
|
||||
public static String getLocale(){
|
||||
String string = getPrefsValue("lang_value");
|
||||
|
||||
if (string.equals("system")) {
|
||||
return Locale.getDefault().getLanguage();
|
||||
}
|
||||
|
||||
return string.isEmpty() ? Locale.getDefault().getLanguage() : string;
|
||||
}
|
||||
|
||||
public class DateHook{
|
||||
public static boolean fulltime(){
|
||||
return getPrefsValue("dateformat").equals("noyear") || getPrefsValue("dateformat").equals("full") || getPrefsValue("dateformat").equals("noseconds");
|
||||
}
|
||||
@@ -53,4 +43,14 @@ public class LocaleUtils{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static String getLocale(){
|
||||
String string = getPrefsValue("lang_value");
|
||||
|
||||
if (string.equals("system")) {
|
||||
return Locale.getDefault().getLanguage();
|
||||
}
|
||||
|
||||
return string.isEmpty() ? Locale.getDefault().getLanguage() : string;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package ru.vtosters.lite.hooks;
|
||||
import static ru.vtosters.lite.utils.FragAnimationKit.setAnimations;
|
||||
import static ru.vtosters.lite.utils.Globals.getPrefsValue;
|
||||
|
||||
import androidx.fragment.app.FragmentTransaction;
|
||||
|
||||
public class FragAnimationHook{
|
||||
public static boolean animateOpen(FragmentTransaction transaction){
|
||||
setAnimations(transaction);
|
||||
|
||||
return getPrefsValue("anim_rtrn_type").equals("noanim") || getPrefsValue("anim_rtrn_type").isEmpty();
|
||||
}
|
||||
|
||||
public static void animateClose(FragmentTransaction transaction){
|
||||
setAnimations(transaction);
|
||||
}
|
||||
}
|
||||
+6
-6
@@ -1,4 +1,4 @@
|
||||
package ru.vtosters.lite.audio.gcm;
|
||||
package ru.vtosters.lite.hooks;
|
||||
|
||||
import static ru.vtosters.lite.utils.Preferences.musicFixNew;
|
||||
|
||||
@@ -27,7 +27,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
import javax.net.ssl.HttpsURLConnection;
|
||||
|
||||
public class GCMFix{
|
||||
public class GcmHook{
|
||||
private static final String agent = String.format("Android-GCM/1.5 (%s %s)", Build.MODEL, Build.MODEL);
|
||||
public static ArrayList<String> langs = new ArrayList<>();
|
||||
private static KeyPair pair;
|
||||
@@ -38,12 +38,12 @@ public class GCMFix{
|
||||
}
|
||||
|
||||
public static String requestTokenV2(String orig){
|
||||
if (musicFixNew()) return "null"; // TODO FIX TOKENMOD v2 cyz vk shit
|
||||
if (musicFixNew()) return "null";
|
||||
return orig;
|
||||
}
|
||||
|
||||
public static String requestToken(String orig){
|
||||
if (musicFixNew()) return "{null}"; // TODO FIX TOKENMOD v2 cyz vk shit
|
||||
if (musicFixNew()) return "{null}";
|
||||
if (orig.equals("")) return requestToken();
|
||||
return orig;
|
||||
}
|
||||
@@ -66,7 +66,7 @@ public class GCMFix{
|
||||
List<String> params = new ArrayList<>();
|
||||
fillParams(params, sig, pub2, xappide, Long.parseLong(aid.split(" ")[1].split(":")[0]), false);
|
||||
|
||||
Callback callback = str -> GCMFix.lambdaRequestToken(sb, wait, str);
|
||||
Callback callback = str -> GcmHook.lambdaRequestToken(sb, wait, str);
|
||||
|
||||
doRequest("https://android.clients.google.com/c2dm/register3", "POST", params, aid, callback);
|
||||
while(!wait.get()) {
|
||||
@@ -81,7 +81,7 @@ public class GCMFix{
|
||||
String sig2 = getSig(pub22);
|
||||
params.clear();
|
||||
fillParams(params, sig2, pub22, xappide, Long.parseLong(aid.split(" ")[1].split(":")[0]), true);
|
||||
doRequest("https://android.clients.google.com/c2dm/register3", "POST", params, aid, GCMFix::lambda$requestToken$1);
|
||||
doRequest("https://android.clients.google.com/c2dm/register3", "POST", params, aid, GcmHook::lambda$requestToken$1);
|
||||
return token;
|
||||
} catch (FileNotFoundException e2) {
|
||||
return requestToken();
|
||||
+69
-1
@@ -1,10 +1,11 @@
|
||||
package ru.vtosters.lite.utils;
|
||||
package ru.vtosters.lite.hooks;
|
||||
|
||||
import static ru.vtosters.lite.f0x1d.VTVerifications.isDeveloper;
|
||||
import static ru.vtosters.lite.f0x1d.VTVerifications.isPrometheus;
|
||||
import static ru.vtosters.lite.f0x1d.VTVerifications.isVerified;
|
||||
import static ru.vtosters.lite.utils.Base64Utils.decode;
|
||||
import static ru.vtosters.lite.utils.Preferences.dev;
|
||||
import static ru.vtosters.lite.utils.Preferences.friendsblock;
|
||||
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
|
||||
import static ru.vtosters.lite.utils.Preferences.hasVerification;
|
||||
|
||||
@@ -97,6 +98,73 @@ public class JsonInjectors{
|
||||
return json.putOpt("items", newItems);
|
||||
}
|
||||
|
||||
public static JSONObject friends(JSONObject json) throws JSONException{
|
||||
JSONObject catalog = json;
|
||||
boolean sectionexecute = true;
|
||||
boolean hasBirthday = false;
|
||||
|
||||
if (json.optJSONObject("catalog") != null) {
|
||||
catalog = json.optJSONObject("catalog");
|
||||
sectionexecute = false;
|
||||
}
|
||||
|
||||
JSONArray section = null;
|
||||
JSONObject sections = null;
|
||||
|
||||
if (sectionexecute) {
|
||||
sections = catalog.optJSONObject("section");
|
||||
} else {
|
||||
section = catalog.optJSONArray("sections");
|
||||
}
|
||||
|
||||
JSONArray oldItems;
|
||||
|
||||
if (sectionexecute) {
|
||||
oldItems = sections.optJSONArray("blocks");
|
||||
} else {
|
||||
oldItems = section.optJSONObject(0).optJSONArray("blocks");
|
||||
}
|
||||
|
||||
var newItems = new JSONArray();
|
||||
if (oldItems != null) {
|
||||
for (int i = 0; i < oldItems.length(); i++) {
|
||||
var type = oldItems.optJSONObject(i);
|
||||
var name = type.optJSONObject("layout").optString("name");
|
||||
var buttons = "";
|
||||
var skip = false;
|
||||
if (type.optJSONArray("buttons") != null) {
|
||||
buttons = type.optJSONArray("buttons").optJSONObject(0).optString("ref_layout_name");
|
||||
}
|
||||
if (name.contains("list_friend_suggests") || buttons.contains("list_friend_suggests") || name.contains("separator")) {
|
||||
skip = friendsblock();
|
||||
}
|
||||
|
||||
if (buttons.contains("friends_birthdays_list")){
|
||||
hasBirthday = true;
|
||||
}
|
||||
|
||||
if (name.contains("separator") && hasBirthday){
|
||||
skip = false;
|
||||
hasBirthday = false;
|
||||
}
|
||||
|
||||
if (!skip) {
|
||||
newItems.put(type);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if (sectionexecute) {
|
||||
sections.putOpt("blocks", newItems);
|
||||
} else {
|
||||
section.optJSONObject(0).putOpt("blocks", newItems);
|
||||
}
|
||||
|
||||
return json;
|
||||
}
|
||||
|
||||
|
||||
public static boolean haveDonateButton(){
|
||||
int randomshower = new Random().nextInt(6);
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
package ru.vtosters.lite.hooks;
|
||||
import static java.lang.Long.MAX_VALUE;
|
||||
import static ru.vtosters.lite.utils.Globals.getPrefsValue;
|
||||
import static ru.vtosters.lite.utils.Newsfeed.checkCaption;
|
||||
import static ru.vtosters.lite.utils.Newsfeed.checkCopyright;
|
||||
import static ru.vtosters.lite.utils.Newsfeed.injectFiltersReposts;
|
||||
import static ru.vtosters.lite.utils.Newsfeed.isAds;
|
||||
import static ru.vtosters.lite.utils.Newsfeed.isAuthorRecommendations;
|
||||
import static ru.vtosters.lite.utils.Newsfeed.isBadNew;
|
||||
import static ru.vtosters.lite.utils.Newsfeed.isFriendsRecommendations;
|
||||
import static ru.vtosters.lite.utils.Newsfeed.isGroupAds;
|
||||
import static ru.vtosters.lite.utils.Newsfeed.isMusicBlock;
|
||||
import static ru.vtosters.lite.utils.Newsfeed.isNewsBlock;
|
||||
import static ru.vtosters.lite.utils.Newsfeed.isPostRecommendations;
|
||||
import static ru.vtosters.lite.utils.Newsfeed.isRecomsGroup;
|
||||
import static ru.vtosters.lite.utils.Preferences.vkme;
|
||||
|
||||
import com.vk.core.preference.Preference;
|
||||
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
public class NewsfeedHook{
|
||||
public static boolean injectFilters(JSONObject obj) throws JSONException{
|
||||
var optString = obj.optString("type", "");
|
||||
if (isAds(optString) || isAuthorRecommendations(optString) || isPostRecommendations(optString) || isFriendsRecommendations(optString) || isRecomsGroup(optString) || isMusicBlock(optString) || isNewsBlock(optString)) {
|
||||
return false;
|
||||
}
|
||||
optString = obj.optString("post_type", "");
|
||||
if (isAds(optString) || isAuthorRecommendations(optString) || isPostRecommendations(optString) || isFriendsRecommendations(optString) || isMusicBlock(optString) || isNewsBlock(optString)) {
|
||||
return false;
|
||||
}
|
||||
optString = obj.optString("filters", "");
|
||||
if (isAds(optString) || isAuthorRecommendations(optString) || isPostRecommendations(optString) || isFriendsRecommendations(optString)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (checkCopyright(obj)) return false;
|
||||
|
||||
if (isBadNew(obj.optString("text", ""))) return false;
|
||||
|
||||
if (checkCaption(obj)) return false;
|
||||
|
||||
if (isGroupAds(obj)) return false;
|
||||
|
||||
return !injectFiltersReposts(obj);
|
||||
} // inject our filters to newsfeed, getpost and discover
|
||||
|
||||
public static long getUpdateNewsfeed(boolean refresh_timeout){
|
||||
if (vkme()) {
|
||||
return MAX_VALUE;
|
||||
}
|
||||
switch(getPrefsValue("newsupdate")) {
|
||||
case "no_update":
|
||||
return MAX_VALUE;
|
||||
case "imd_update":
|
||||
return 10000L;
|
||||
default:
|
||||
return Preference.b().getLong(refresh_timeout ? "refresh_timeout_top" : "refresh_timeout_recent", 600000L);
|
||||
}
|
||||
}
|
||||
}
|
||||
+5
-4
@@ -1,10 +1,10 @@
|
||||
package ru.vtosters.lite.utils;
|
||||
|
||||
package ru.vtosters.lite.hooks;
|
||||
import static ru.vtosters.lite.net.Request.makeRequest;
|
||||
import static ru.vtosters.lite.utils.Globals.getString;
|
||||
import static ru.vtosters.lite.utils.Globals.getUserToken;
|
||||
import static ru.vtosters.lite.utils.Globals.sendToast;
|
||||
import static ru.vtosters.lite.utils.Preferences.dev;
|
||||
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
|
||||
import static ru.vtosters.lite.utils.Preferences.getPrefsFromFile;
|
||||
import static ru.vtosters.lite.utils.Proxy.getApi;
|
||||
|
||||
@@ -12,11 +12,11 @@ import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
public class OnlineFormatter{
|
||||
public class OnlineFormatterHook{
|
||||
private static String AppName;
|
||||
|
||||
public static String getAppName(int appid){ // thanks to egormetlitsky (vk mp3 mod) for helping with online ids
|
||||
if (appid <= 3) return null;
|
||||
if (appid <= 3 || !getBoolValue("onlineformatter", true)) return null;
|
||||
|
||||
switch(appid) {
|
||||
case 2274003:
|
||||
@@ -160,3 +160,4 @@ public class OnlineFormatter{
|
||||
return getString("custom_online") + " " + appname;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,167 @@
|
||||
package ru.vtosters.lite.hooks;
|
||||
|
||||
import static ru.vtosters.lite.utils.Globals.getIdentifier;
|
||||
import static ru.vtosters.lite.utils.Globals.getPreferences;
|
||||
|
||||
import android.content.ClipData;
|
||||
import android.content.ClipboardManager;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.graphics.Color;
|
||||
import android.net.Uri;
|
||||
import android.util.Log;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.vk.core.dialogs.actionspopup.ActionsPopup;
|
||||
import com.vk.core.drawable.RecoloredDrawable;
|
||||
import com.vk.dto.common.AttachmentWithMedia;
|
||||
import com.vtosters.lite.R;
|
||||
import com.vtosters.lite.attachments.PhotoAttachment;
|
||||
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URLEncoder;
|
||||
|
||||
import okhttp3.Call;
|
||||
import okhttp3.Callback;
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.Request;
|
||||
import okhttp3.Response;
|
||||
import ru.vtosters.lite.utils.Globals;
|
||||
import ru.vtosters.lite.utils.Themes;
|
||||
|
||||
public class PhotoViewer {
|
||||
|
||||
static OkHttpClient client = new OkHttpClient();
|
||||
|
||||
public static boolean interceptClick(AttachmentWithMedia attachment, MenuItem item, View view) {
|
||||
if (item.getItemId() == Globals.getIdentifier("search_photo", "id")) {
|
||||
searchPhoto(getUrlFromAttachment((PhotoAttachment) attachment));
|
||||
return true;
|
||||
} else if (item.getItemId() == Globals.getIdentifier("copy_photo_url", "id")) {
|
||||
copyPhotoUrl(getUrlFromAttachment((PhotoAttachment) attachment));
|
||||
return true;
|
||||
} else if (item.getItemId() == Globals.getIdentifier("open_original_photo", "id")) {
|
||||
openUrl(getUrlFromAttachment((PhotoAttachment) attachment));
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public static void addMenuItems(AttachmentWithMedia attachment, ActionsPopup.b actionPopup, int i, boolean z) {
|
||||
actionPopup.a(getIdentifier("search_photo_content", "string"),
|
||||
Themes.isDarkTheme()
|
||||
? Globals.getContext().getDrawable(R.drawable.ic_menu_search_outline_28)
|
||||
: new RecoloredDrawable(Globals.getContext().getDrawable(R.drawable.ic_menu_search_outline_28), Themes.getAccentColor()),
|
||||
false,
|
||||
() -> {
|
||||
searchPhoto(getUrlFromAttachment((PhotoAttachment) attachment));
|
||||
return null;
|
||||
}
|
||||
);
|
||||
actionPopup.a(getIdentifier("copy_photo_url_content", "string"),
|
||||
!Themes.isDarkTheme()
|
||||
? new RecoloredDrawable(Globals.getContext().getDrawable(R.drawable.ic_copy_outline_28), Themes.getAccentColor())
|
||||
: new RecoloredDrawable(Globals.getContext().getDrawable(R.drawable.ic_copy_outline_28), Color.WHITE),
|
||||
false,
|
||||
() -> {
|
||||
copyPhotoUrl(getUrlFromAttachment((PhotoAttachment) attachment));
|
||||
return null;
|
||||
}
|
||||
);
|
||||
actionPopup.a(getIdentifier("open_original_photo_content", "string"),
|
||||
Themes.isDarkTheme()
|
||||
? Globals.getContext().getDrawable(R.drawable.ic_link_outline_28)
|
||||
: new RecoloredDrawable(Globals.getContext().getDrawable(R.drawable.ic_link_outline_28),
|
||||
Themes.getAccentColor()),
|
||||
false,
|
||||
() -> {
|
||||
openUrl(getUrlFromAttachment((PhotoAttachment) attachment));
|
||||
return null;
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
private static String getUrlFromAttachment(PhotoAttachment attachment) {
|
||||
var imageSizes = attachment.D.Q.t1();
|
||||
if (imageSizes.isEmpty())
|
||||
return null;
|
||||
var max = imageSizes.get(0);
|
||||
for (int i = 1; i < imageSizes.size(); ++i) {
|
||||
var size = imageSizes.get(i);
|
||||
if (max != null && max.t1() < size.t1()) {
|
||||
max = size;
|
||||
}
|
||||
}
|
||||
return max.url;
|
||||
}
|
||||
|
||||
private static void searchPhoto(String url) {
|
||||
if (url == null || url.isEmpty()) return;
|
||||
switch (getPreferences().getInt("search_engine", 0)) {
|
||||
case 0:
|
||||
searchWithYandex(url);
|
||||
break;
|
||||
case 1:
|
||||
searchWithGoogle(url);
|
||||
break;
|
||||
case 2:
|
||||
searchWithBing(url);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private static void searchWithYandex(String url) {
|
||||
var request = new Request.a()
|
||||
.b(String.format("https://yandex.ru/images-apphost/image-download?url=%s&images_avatars_size=preview&images_avatars_namespace=images-cbir",
|
||||
URLEncoder.encode(url)))
|
||||
.a();
|
||||
client.a(request).a(new Callback() {
|
||||
@Override
|
||||
public void a(Call call, IOException e) {
|
||||
Log.d("PhotoViewer", e+"");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void a(Call call, Response response) throws IOException {
|
||||
try {
|
||||
JSONObject payload = new JSONObject(response.a().g());
|
||||
var cbirId = payload.optInt("image_shard") + "/" + payload.optString("image_id");
|
||||
var imageUrl = String.format("https://avatars.mds.yandex.net/get-images-cbir/%s/orig", cbirId);
|
||||
var searchUrl = String.format("https://yandex.ru/images/search?rpt=imageview&url=%s&cbir_id=%s", imageUrl, cbirId);
|
||||
openUrl(searchUrl);
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private static void searchWithGoogle(String url) {
|
||||
openUrl("https://www.google.ru/searchbyimage?image_url=" +
|
||||
URLEncoder.encode(url));
|
||||
}
|
||||
|
||||
private static void searchWithBing(String url) {
|
||||
openUrl("https://www.bing.com/images/search?view=detailv2&iss=SBI&form=SBIIDP&sbisrc=UrlPaste&q=imgurl:"
|
||||
+ URLEncoder.encode(url));
|
||||
}
|
||||
|
||||
private static void copyPhotoUrl(String url) {
|
||||
if (url == null || url.isEmpty()) return;
|
||||
ClipboardManager manager = (ClipboardManager) Globals.getContext().getSystemService(Context.CLIPBOARD_SERVICE);
|
||||
manager.setPrimaryClip(ClipData.newPlainText("vk_photo_url", url));
|
||||
Toast.makeText(Globals.getContext(), Globals.getIdentifier("copied_to_clipboard", "string"), Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
|
||||
private static void openUrl(String url) {
|
||||
var uri = Uri.parse(url);
|
||||
var intent = new Intent(Intent.ACTION_VIEW, uri);
|
||||
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
Globals.getContext().startActivity(intent);
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -1,4 +1,4 @@
|
||||
package ru.vtosters.lite.utils;
|
||||
package ru.vtosters.lite.hooks;
|
||||
|
||||
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
|
||||
|
||||
@@ -9,7 +9,7 @@ import android.widget.TextView;
|
||||
import com.vk.dto.polls.PollOption;
|
||||
import com.vk.polls.ui.views.PollOptionView;
|
||||
|
||||
public class PollUtils{
|
||||
public class PollHook{
|
||||
public static void show(PollOptionView view){
|
||||
if (!getBoolValue("pollresults", false)) return;
|
||||
|
||||
+47
-1
@@ -1,7 +1,9 @@
|
||||
package ru.vtosters.lite.utils;
|
||||
package ru.vtosters.lite.hooks;
|
||||
import static ru.vtosters.lite.utils.Globals.convertDpToPixel;
|
||||
import static ru.vtosters.lite.utils.Globals.edit;
|
||||
import static ru.vtosters.lite.utils.Globals.getPrefsValue;
|
||||
import static ru.vtosters.lite.utils.Globals.restartApplication;
|
||||
import static ru.vtosters.lite.utils.Proxy.apiproxy;
|
||||
import static ru.vtosters.lite.utils.Proxy.isZaboronaEnabled;
|
||||
import static ru.vtosters.lite.utils.Themes.getAccentColor;
|
||||
import static ru.vtosters.lite.utils.Themes.getAlertStyle;
|
||||
@@ -11,6 +13,7 @@ import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.util.Log;
|
||||
import android.util.TypedValue;
|
||||
import android.view.View;
|
||||
import android.widget.RadioButton;
|
||||
@@ -86,4 +89,47 @@ public class ProxyHook{
|
||||
alert.getButton(DialogInterface.BUTTON_POSITIVE).setTextColor(getAccentColor());
|
||||
alert.getButton(DialogInterface.BUTTON_NEUTRAL).setTextColor(getAccentColor());
|
||||
}
|
||||
|
||||
public static String linkReplacer(String link){
|
||||
var vkapi = "api.vk.com";
|
||||
var oauth = "oauth.vk.com";
|
||||
var vkstatic = "static.vk.com";
|
||||
|
||||
var proxyapi = getPrefsValue("proxyapi");
|
||||
var proxyoauth = getPrefsValue("proxyoauth");
|
||||
var proxystatic = getPrefsValue("proxystatic");
|
||||
|
||||
if (!apiproxy() || link.isEmpty()) {
|
||||
return link;
|
||||
}
|
||||
|
||||
if (proxyapi.isEmpty() || proxyoauth.isEmpty() || proxystatic.isEmpty()) {
|
||||
Log.d("VTLite", "Proxy is not set" + " " + proxyapi + " " + proxyoauth + " " + proxystatic);
|
||||
return link;
|
||||
}
|
||||
|
||||
if (link.contains(vkapi)) {
|
||||
return link.replace(proxyapi, vkapi);
|
||||
}
|
||||
|
||||
if (link.contains(oauth)) {
|
||||
return link.replace(proxyoauth, oauth);
|
||||
}
|
||||
|
||||
if (link.contains(vkstatic)) {
|
||||
return link.replace(proxystatic, vkstatic);
|
||||
}
|
||||
|
||||
return link;
|
||||
}
|
||||
|
||||
public static String getAwayPhpCom(){
|
||||
var proxyapi = getPrefsValue("proxyapi");
|
||||
|
||||
if (apiproxy() & !proxyapi.isEmpty()) {
|
||||
return proxyapi;
|
||||
}
|
||||
|
||||
return "m.vk.com";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
package ru.vtosters.lite.hooks;
|
||||
import static ru.vtosters.lite.ui.fragments.dockbar.DockBarManager.getInstance;
|
||||
import static ru.vtosters.lite.utils.Globals.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.vkme;
|
||||
|
||||
import com.vk.apps.AppsFragment;
|
||||
import com.vk.discover.ThemedFeedFragment;
|
||||
import com.vk.fave.fragments.FaveTabFragment;
|
||||
import com.vk.menu.MenuFragment;
|
||||
import com.vk.menu.SearchMenuFragment;
|
||||
import com.vk.music.fragment.MusicCatalogFragment1;
|
||||
import com.vk.music.fragment.MusicFragment;
|
||||
import com.vk.newsfeed.HomeFragment;
|
||||
import com.vk.newsfeed.NewsfeedFragment;
|
||||
import com.vk.notifications.NotificationsContainerFragment;
|
||||
import com.vk.profile.catalog.CommunitiesCatalogFragment;
|
||||
import com.vk.superapp.SuperAppFragment;
|
||||
import com.vtosters.lite.fragments.ProfileFragment;
|
||||
import com.vtosters.lite.fragments.friends.FriendsFragment;
|
||||
import com.vtosters.lite.fragments.gifts.BirthdaysFragment;
|
||||
import com.vtosters.lite.fragments.lives.LivesTabsFragment;
|
||||
import com.vtosters.lite.fragments.money.MoneyTransfersFragment;
|
||||
import com.vtosters.lite.fragments.p2.DocumentsViewFragment;
|
||||
import com.vtosters.lite.fragments.s2.GroupsFragment1;
|
||||
import com.vtosters.lite.fragments.t2.c.DialogsFragment;
|
||||
import com.vtosters.lite.fragments.y2.VideosFragment;
|
||||
import com.vtosters.lite.general.fragments.GamesFragment;
|
||||
import com.vtosters.lite.general.fragments.PhotosFragment;
|
||||
|
||||
public class StartFragmentHook{
|
||||
public static Class getStartFragment(){
|
||||
if (vkme()) {
|
||||
return DialogsFragment.class;
|
||||
}
|
||||
switch(getPrefsValue("start_values")) {
|
||||
case "newsfeed":
|
||||
return milkshake() ? HomeFragment.class : NewsfeedFragment.class;
|
||||
case "messenger":
|
||||
return DialogsFragment.class;
|
||||
case "groups":
|
||||
return milkshake() ? CommunitiesCatalogFragment.class : GroupsFragment1.class;
|
||||
case "music":
|
||||
return getBoolValue("musicnewcatalog", true) ? MusicCatalogFragment1.class : MusicFragment.class;
|
||||
case "friends":
|
||||
return FriendsFragment.class;
|
||||
case "photos":
|
||||
return PhotosFragment.class;
|
||||
case "videos":
|
||||
return VideosFragment.class;
|
||||
case "settings":
|
||||
return useNewSettings();
|
||||
case "apps":
|
||||
return AppsFragment.class;
|
||||
case "discover":
|
||||
return ThemedFeedFragment.class;
|
||||
case "notifications":
|
||||
return NotificationsContainerFragment.class;
|
||||
case "money":
|
||||
return MoneyTransfersFragment.class;
|
||||
case "games":
|
||||
return GamesFragment.class;
|
||||
case "liked":
|
||||
return FaveTabFragment.class;
|
||||
case "menu":
|
||||
return milkshake() ? (superapp() ? SuperAppFragment.class : SearchMenuFragment.class) : MenuFragment.class;
|
||||
case "profile":
|
||||
return ProfileFragment.class;
|
||||
case "lives":
|
||||
return LivesTabsFragment.class;
|
||||
case "docs":
|
||||
return DocumentsViewFragment.class;
|
||||
case "brtd":
|
||||
return BirthdaysFragment.class;
|
||||
default:
|
||||
return getInstance().getSelectedTabs().get(0).fragmentClass;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package ru.vtosters.lite.hooks;
|
||||
import static ru.vtosters.lite.utils.Preferences.adsstories;
|
||||
import static ru.vtosters.lite.utils.Preferences.stories;
|
||||
|
||||
public class StoriesHook{
|
||||
public static String ads(){
|
||||
return adsstories() ? "null" : "ads";
|
||||
}
|
||||
|
||||
public static boolean showstories(){
|
||||
return stories();
|
||||
}
|
||||
}
|
||||
+2
-3
@@ -1,5 +1,4 @@
|
||||
package ru.vtosters.lite.utils;
|
||||
|
||||
package ru.vtosters.lite.hooks;
|
||||
import static ru.vtosters.lite.utils.Preferences.feedcache;
|
||||
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
|
||||
import static ru.vtosters.lite.utils.Preferences.milkshake;
|
||||
@@ -10,7 +9,7 @@ import static ru.vtosters.lite.utils.Preferences.superapp;
|
||||
import com.vk.toggle.FeatureManager;
|
||||
import com.vk.toggle.Features;
|
||||
|
||||
public class Toggles{
|
||||
public class TogglesHook{
|
||||
public static boolean shouldPatch(Features.Type feature){
|
||||
switch(feature) {
|
||||
case AB_IM_LONGPOLL_MSG_BATCHING:
|
||||
+12
-3
@@ -1,5 +1,4 @@
|
||||
package ru.vtosters.lite.utils;
|
||||
|
||||
package ru.vtosters.lite.hooks;
|
||||
import static android.util.Base64.encodeToString;
|
||||
import static ru.vtosters.lite.utils.Globals.getContext;
|
||||
import static ru.vtosters.lite.utils.Globals.getPrefsValue;
|
||||
@@ -14,13 +13,16 @@ import static ru.vtosters.lite.utils.Themes.hex;
|
||||
|
||||
import android.webkit.WebView;
|
||||
|
||||
import com.vk.articles.preload.WebCachePreloader;
|
||||
import com.vtosters.lite.data.ThemeTracker;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
public class VKUIInjector{
|
||||
public class VKUIHook{
|
||||
public static boolean isLoaded = false;
|
||||
private static String loadedCSS = "";
|
||||
private static String loadedCSSAmoled = "";
|
||||
@@ -90,4 +92,11 @@ public class VKUIInjector{
|
||||
inject(webView, encodeToString(sb.toString().getBytes(), 2));
|
||||
}
|
||||
}
|
||||
|
||||
public static void clearWebCache(){
|
||||
ThemeTracker.a();
|
||||
isLoaded = false;
|
||||
new WebView(getContext()).clearCache(true);
|
||||
WebCachePreloader.e();
|
||||
}
|
||||
}
|
||||
@@ -69,7 +69,7 @@ public class FFMpeg{
|
||||
var concat = FFmpegKit.execute("-f concat -safe 0 -i " + in + "/list.txt -c copy " + in + "/all.ts");
|
||||
|
||||
// convert .ts file to .mp3 file via ffmpeg
|
||||
var session = FFmpegKit.execute("-i " + in + "/all.ts -f mp3 -acodec mp3 -b 320 -y '" + out + "'");
|
||||
var session = FFmpegKit.execute("-i " + in + "/all.ts -f mp3 -acodec mp3 -q:a 0 -y '" + out + "'");
|
||||
var rc = session.getReturnCode();
|
||||
|
||||
if (ReturnCode.isSuccess(rc)) {
|
||||
|
||||
@@ -3,7 +3,6 @@ package ru.vtosters.lite.ui;
|
||||
import static ru.vtosters.lite.utils.Globals.convertDpToPixel;
|
||||
import static ru.vtosters.lite.utils.Globals.getContext;
|
||||
import static ru.vtosters.lite.utils.Themes.getAccentColor;
|
||||
import static ru.vtosters.lite.utils.Themes.getAlertStyle;
|
||||
import static ru.vtosters.lite.utils.Themes.getSTextAttr;
|
||||
import static ru.vtosters.lite.utils.Themes.getTextAttr;
|
||||
|
||||
@@ -184,7 +183,7 @@ public class PreferencesUtil{
|
||||
margin.setMargins(convertDpToPixel(20f), 0, convertDpToPixel(20f), 0);
|
||||
editText.setLayoutParams(margin);
|
||||
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(fragment.getContext(), getAlertStyle());
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(fragment.getContext());
|
||||
builder.setTitle(title);
|
||||
builder.setView(linearLayout);
|
||||
builder.setPositiveButton("OK", (dialog, which) -> {
|
||||
|
||||
@@ -0,0 +1,173 @@
|
||||
package ru.vtosters.lite.ui.components;
|
||||
|
||||
import static ru.vtosters.lite.utils.Themes.getTextAttr;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.view.Gravity;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.CheckedTextView;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.ListView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import ru.vtosters.lite.utils.Globals;
|
||||
import ru.vtosters.lite.utils.LayoutHelper;
|
||||
|
||||
public class ImagineArrayAdapter extends ArrayAdapter<ImagineArrayAdapter.ImagineArrayAdapterItem> {
|
||||
|
||||
private List<ImagineArrayAdapterItem> mItems = new ArrayList<>();
|
||||
private OnClickListener mListener;
|
||||
private int mSelectedIndex = -1;
|
||||
|
||||
public ImagineArrayAdapter(@NonNull Context context, OnClickListener listener) {
|
||||
super(context, 0);
|
||||
this.mListener = listener;
|
||||
}
|
||||
|
||||
public ImagineArrayAdapter(@NonNull Context context, List<ImagineArrayAdapterItem> items, OnClickListener listener) {
|
||||
super(context, 0, items);
|
||||
mItems = items;
|
||||
this.mListener = listener;
|
||||
}
|
||||
|
||||
public void setSelected(int i) {
|
||||
this.mSelectedIndex = i;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
return mItems.size();
|
||||
}
|
||||
|
||||
public void add(ImagineArrayAdapterItem item) {
|
||||
mItems.add(item);
|
||||
super.add(item);
|
||||
}
|
||||
|
||||
public void add(Drawable icon, String text) {
|
||||
var item = new ImagineArrayAdapterItem(icon, text);
|
||||
mItems.add(item);
|
||||
super.add(item);
|
||||
}
|
||||
|
||||
public void add(int iconId, String text) {
|
||||
var icon = Globals.getResources().getDrawable(iconId);
|
||||
var item = new ImagineArrayAdapterItem(icon, text);
|
||||
mItems.add(item);
|
||||
super.add(item);
|
||||
}
|
||||
|
||||
public void add(Drawable icon, int textId) {
|
||||
var text = Globals.getResources().getString(textId);
|
||||
var item = new ImagineArrayAdapterItem(icon, text);
|
||||
mItems.add(item);
|
||||
super.add(item);
|
||||
}
|
||||
|
||||
public void add(int iconId, int textId) {
|
||||
var icon = Globals.getResources().getDrawable(iconId);
|
||||
var text = Globals.getResources().getString(textId);
|
||||
var item = new ImagineArrayAdapterItem(icon, text);
|
||||
mItems.add(item);
|
||||
super.add(item);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
|
||||
var container = new LinearLayout(getContext());
|
||||
container.setOrientation(LinearLayout.HORIZONTAL);
|
||||
container.setGravity(Gravity.CENTER_VERTICAL);
|
||||
container.setPadding(0, Globals.convertDpToPixel(5.0f), 0, Globals.convertDpToPixel(5.0f));
|
||||
container.setLayoutParams(new ViewGroup.LayoutParams(-1, -2));
|
||||
container.setOnClickListener(v -> {
|
||||
if (position != mSelectedIndex) {
|
||||
mListener.onClick(position);
|
||||
}
|
||||
});
|
||||
|
||||
// if make radiobutton without layout inflation it can't be unclickable
|
||||
var checkedTextView = (CheckedTextView) LayoutInflater.from(getContext())
|
||||
.inflate(Globals.getIdentifier("select_dialog_singlechoice_material", "layout"), parent, false);
|
||||
checkedTextView.setChecked(position == mSelectedIndex);
|
||||
container.addView(checkedTextView, LayoutHelper.createLinear(Globals.convertDpToPixel(50.0f), -2));
|
||||
|
||||
var item = mItems.get(position);
|
||||
|
||||
var imageView = new ImageView(getContext());
|
||||
imageView.setImageDrawable(item.getIcon());
|
||||
imageView.setPadding(
|
||||
Globals.convertDpToPixel(13.0f),
|
||||
0,
|
||||
0,
|
||||
0
|
||||
);
|
||||
var imageViewParams = LayoutHelper.createLinear(
|
||||
Globals.convertDpToPixel(50.0f),
|
||||
Globals.convertDpToPixel(50.0f)
|
||||
);
|
||||
container.addView(imageView, imageViewParams);
|
||||
|
||||
var textView = new CheckedTextView(getContext());
|
||||
textView.setText(item.getText());
|
||||
textView.setTextColor(getTextAttr());
|
||||
textView.setPadding(
|
||||
Globals.convertDpToPixel(13.0f),
|
||||
Globals.convertDpToPixel(5.0f),
|
||||
Globals.convertDpToPixel(5.0f),
|
||||
Globals.convertDpToPixel(5.0f));
|
||||
textView.setTextSize(18.0f);
|
||||
textView.setGravity(Gravity.CENTER_VERTICAL);
|
||||
var textViewParams = LayoutHelper.createLinear(-2, -1);
|
||||
container.addView(textView, textViewParams);
|
||||
|
||||
return container;
|
||||
}
|
||||
|
||||
public static class ImagineArrayAdapterItem {
|
||||
private Drawable mIcon;
|
||||
private String mText;
|
||||
|
||||
public ImagineArrayAdapterItem(Drawable icon, String text) {
|
||||
this.mIcon = icon;
|
||||
this.mText = text;
|
||||
}
|
||||
|
||||
public ImagineArrayAdapterItem(int iconId, String text) {
|
||||
this.mIcon = Globals.getResources().getDrawable(iconId);
|
||||
this.mText = text;
|
||||
}
|
||||
|
||||
public ImagineArrayAdapterItem(Drawable icon, int textId) {
|
||||
this.mIcon = icon;
|
||||
this.mText = Globals.getResources().getString(textId);
|
||||
}
|
||||
|
||||
public ImagineArrayAdapterItem(int iconId, int textId) {
|
||||
this.mIcon = Globals.getResources().getDrawable(iconId);
|
||||
this.mText = Globals.getResources().getString(textId);
|
||||
}
|
||||
|
||||
public Drawable getIcon() {
|
||||
return mIcon;
|
||||
}
|
||||
|
||||
public String getText() {
|
||||
return mText;
|
||||
}
|
||||
}
|
||||
|
||||
public interface OnClickListener {
|
||||
public void onClick(int i);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
package ru.vtosters.lite.ui.fragments;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.FrameLayout;
|
||||
|
||||
import androidx.annotation.CallSuper;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
|
||||
import com.vk.core.fragments.FragmentImpl;
|
||||
import com.vtosters.lite.R;
|
||||
import com.vtosters.lite.ViewUtils;
|
||||
import com.vtosters.lite.m0.ToolbarHelper;
|
||||
|
||||
import ru.vtosters.lite.utils.LayoutHelper;
|
||||
|
||||
public abstract class BaseToolbarFragment extends FragmentImpl {
|
||||
|
||||
private FrameLayout mRootView;
|
||||
private Toolbar mToolbar;
|
||||
private FrameLayout mContentLayout;
|
||||
|
||||
@CallSuper
|
||||
protected void onCreateMenu(Menu menu) {
|
||||
if (menu.size() > 0)
|
||||
for (int i = 0; i < menu.size(); i++)
|
||||
menu.getItem(i).setOnMenuItemClickListener(this::onOptionsItemSelected);
|
||||
}
|
||||
|
||||
public void setTitle(String title) {
|
||||
mToolbar.setTitle(title);
|
||||
}
|
||||
|
||||
public void setTitle(int id) {
|
||||
mToolbar.setTitle(id);
|
||||
}
|
||||
|
||||
public void setNavigationIconEnabled(boolean enabled) {
|
||||
if (enabled) {
|
||||
ViewUtils.a(mToolbar, R.drawable.ic_back_outline_28);
|
||||
} else {
|
||||
ToolbarHelper.a(this, mToolbar);
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public final View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup parent, @Nullable Bundle bundle) {
|
||||
super.onCreateView(inflater, parent, bundle);
|
||||
|
||||
mRootView = (FrameLayout) inflater.inflate(R.layout.appkit_toolbar_fragment, parent, false);
|
||||
mToolbar = mRootView.findViewById(R.id.toolbar);
|
||||
mContentLayout = mRootView.findViewById(R.id.appkit_content);
|
||||
|
||||
initToolbar();
|
||||
mContentLayout.addView(onCreateContent(inflater, bundle), LayoutHelper.createFrame(-1, -1));
|
||||
|
||||
return mRootView;
|
||||
}
|
||||
|
||||
public abstract View onCreateContent(@NonNull LayoutInflater inflater, @Nullable Bundle bundle);
|
||||
|
||||
private void initToolbar() {
|
||||
setNavigationIconEnabled(false);
|
||||
onCreateMenu(mToolbar.getMenu());
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,10 @@ package ru.vtosters.lite.ui.fragments;
|
||||
|
||||
import static ru.vtosters.lite.utils.Globals.convertDpToPixel;
|
||||
import static ru.vtosters.lite.utils.Globals.edit;
|
||||
import static ru.vtosters.lite.utils.Globals.getDrawableFromUrl;
|
||||
import static ru.vtosters.lite.utils.Globals.getIdentifier;
|
||||
import static ru.vtosters.lite.utils.Globals.getPackageName;
|
||||
import static ru.vtosters.lite.utils.Globals.getPrefsValue;
|
||||
import static ru.vtosters.lite.utils.Globals.getUserPhoto;
|
||||
import static ru.vtosters.lite.utils.Globals.getUsername;
|
||||
import static ru.vtosters.lite.utils.Globals.restartApplication;
|
||||
import static ru.vtosters.lite.utils.Globals.sendToast;
|
||||
import static ru.vtosters.lite.utils.IconManager.*;
|
||||
import static ru.vtosters.lite.utils.Preferences.DoNotUseOldIcons;
|
||||
import static ru.vtosters.lite.utils.IconManager.icons;
|
||||
import static ru.vtosters.lite.utils.IconManager.iconsValues;
|
||||
import static ru.vtosters.lite.utils.IconManager.switchComponent;
|
||||
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
|
||||
import static ru.vtosters.lite.utils.Preferences.hasVerification;
|
||||
import static ru.vtosters.lite.utils.Preferences.preferences;
|
||||
@@ -24,7 +18,6 @@ import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.util.TypedValue;
|
||||
@@ -33,16 +26,10 @@ import android.widget.RadioGroup;
|
||||
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.appcompat.view.ContextThemeWrapper;
|
||||
import androidx.core.content.res.ResourcesCompat;
|
||||
|
||||
import com.vk.bridges.AuthBridge;
|
||||
import com.vk.navigation.Navigator;
|
||||
import com.vtosters.lite.fragments.w2.BlacklistFragment;
|
||||
import com.vtosters.lite.general.fragments.MaterialPreferenceToolbarFragment;
|
||||
|
||||
import ru.vtosters.lite.ui.PreferencesUtil;
|
||||
import ru.vtosters.lite.utils.Globals;
|
||||
import ru.vtosters.lite.utils.IconManager;
|
||||
|
||||
public class IconsFragment extends MaterialPreferenceToolbarFragment{
|
||||
@SuppressLint("UseCompatLoadingForDrawables")
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package ru.vtosters.lite.ui.fragments;
|
||||
|
||||
import static ru.vtosters.lite.utils.Globals.edit;
|
||||
import static ru.vtosters.lite.utils.Globals.getIdentifier;
|
||||
import static ru.vtosters.lite.utils.Globals.getPreferences;
|
||||
import static ru.vtosters.lite.utils.Globals.restartApplicationWithTimer;
|
||||
import static ru.vtosters.lite.utils.Themes.getAccentColor;
|
||||
import static ru.vtosters.lite.utils.Themes.getAlertStyle;
|
||||
import static ru.vtosters.lite.utils.Themes.getTextAttr;
|
||||
@@ -9,15 +12,21 @@ import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.res.ColorStateList;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.widget.EditText;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.ListView;
|
||||
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.preference.Preference;
|
||||
|
||||
import com.vk.core.dialogs.alert.VkAlertDialog;
|
||||
import com.vtosters.lite.general.fragments.MaterialPreferenceToolbarFragment;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import ru.vtosters.lite.downloaders.VideoDownloader;
|
||||
import ru.vtosters.lite.ui.components.ImagineArrayAdapter;
|
||||
|
||||
public class MediaFragment extends MaterialPreferenceToolbarFragment{
|
||||
public static void download(Context ctx){
|
||||
@@ -55,6 +64,29 @@ public class MediaFragment extends MaterialPreferenceToolbarFragment{
|
||||
|
||||
private void prefs(){
|
||||
findPreference("download_video").setOnPreferenceClickListener(new MediaFragment.download());
|
||||
findPreference("dateformat").setOnPreferenceChangeListener(new MediaFragment.restart());
|
||||
findPreference("select_photo_search_engine").setOnPreferenceClickListener(preference -> {
|
||||
var items = Arrays.asList(
|
||||
new ImagineArrayAdapter.ImagineArrayAdapterItem(getIdentifier("yandex", "drawable"), "Yandex"),
|
||||
new ImagineArrayAdapter.ImagineArrayAdapterItem(getIdentifier("google", "drawable"), "Google"),
|
||||
new ImagineArrayAdapter.ImagineArrayAdapterItem(getIdentifier("microsoft", "drawable"), "Bing")
|
||||
);
|
||||
|
||||
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("search_engine", i).apply();
|
||||
alert.dismiss();
|
||||
});
|
||||
adapter.setSelected(getPreferences().getInt("search_engine", 0));
|
||||
listView.setAdapter(adapter);
|
||||
alert.setView(listView);
|
||||
alert.show();
|
||||
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
public class download implements Preference.OnPreferenceClickListener{
|
||||
@@ -64,4 +96,13 @@ public class MediaFragment extends MaterialPreferenceToolbarFragment{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public static class restart implements Preference.OnPreferenceChangeListener{
|
||||
@Override
|
||||
public boolean onPreferenceChange(Preference preference, Object o){
|
||||
edit().putString("dateformat", o.toString()).commit();
|
||||
restartApplicationWithTimer();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,6 @@ import static android.widget.Toast.LENGTH_LONG;
|
||||
import static android.widget.Toast.LENGTH_SHORT;
|
||||
import static android.widget.Toast.makeText;
|
||||
import static ru.vtosters.lite.utils.CacheUtils.deleteCache;
|
||||
import static ru.vtosters.lite.utils.Globals.getContext;
|
||||
import static ru.vtosters.lite.utils.Globals.getIdentifier;
|
||||
import static ru.vtosters.lite.utils.Globals.getUserToken;
|
||||
import static ru.vtosters.lite.utils.Globals.restartApplication;
|
||||
@@ -17,7 +16,6 @@ import static ru.vtosters.lite.utils.Themes.getAlertStyle;
|
||||
import android.content.ClipData;
|
||||
import android.content.ClipboardManager;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
import android.webkit.WebView;
|
||||
|
||||
@@ -13,8 +13,6 @@ import androidx.preference.Preference;
|
||||
import com.vk.navigation.Navigator;
|
||||
import com.vtosters.lite.general.fragments.MaterialPreferenceToolbarFragment;
|
||||
|
||||
import ru.vtosters.lite.ui.wallpapers.WallpaperMenuFragment;
|
||||
|
||||
|
||||
public class ThemesFragment extends MaterialPreferenceToolbarFragment{
|
||||
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
package ru.vtosters.lite.ui.fragments;
|
||||
|
||||
import static bruhcollective.itaysonlab.libvkx.client.LibVKXClient.isIntegrationEnabled;
|
||||
import static com.vk.bridges.AuthBridge.logout;
|
||||
import static ru.vtosters.lite.f0x1d.VTVerifications.vtverif;
|
||||
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;
|
||||
import static ru.vtosters.lite.ui.PreferencesUtil.addPreferenceDrawable;
|
||||
import static ru.vtosters.lite.ui.vkui.VBListBuilder.VBListItem;
|
||||
import static ru.vtosters.lite.ui.vkui.VBListBuilder.buildListOf;
|
||||
import static ru.vtosters.lite.ui.vkui.VBottomSheetBuilder.VBSContent;
|
||||
@@ -16,8 +21,6 @@ import static ru.vtosters.lite.utils.Globals.getUserPhoto;
|
||||
import static ru.vtosters.lite.utils.Globals.getUsername;
|
||||
import static ru.vtosters.lite.utils.Globals.isGmsInstalled;
|
||||
import static ru.vtosters.lite.utils.Globals.restartApplication;
|
||||
import static ru.vtosters.lite.utils.IconManager.icons;
|
||||
import static ru.vtosters.lite.utils.IconManager.iconsValues;
|
||||
import static ru.vtosters.lite.utils.Preferences.DoNotUseOldIcons;
|
||||
import static ru.vtosters.lite.utils.Preferences.ads;
|
||||
import static ru.vtosters.lite.utils.Preferences.devmenu;
|
||||
@@ -30,6 +33,8 @@ import static ru.vtosters.lite.utils.Preferences.navbar;
|
||||
import static ru.vtosters.lite.utils.Preferences.offline;
|
||||
import static ru.vtosters.lite.utils.Preferences.preferences;
|
||||
import static ru.vtosters.lite.utils.Preferences.shortinfo;
|
||||
import static ru.vtosters.lite.utils.Preferences.stories;
|
||||
import static ru.vtosters.lite.utils.Preferences.superapp;
|
||||
import static ru.vtosters.lite.utils.Preferences.vkme;
|
||||
import static ru.vtosters.lite.utils.Themes.getDarkTheme;
|
||||
import static ru.vtosters.lite.utils.Themes.getLightTheme;
|
||||
@@ -45,7 +50,6 @@ import android.os.Bundle;
|
||||
import com.aefyr.tsg.g2.TelegramStickersService;
|
||||
import com.vk.about.AboutAppFragment;
|
||||
import com.vk.balance.BalanceFragment;
|
||||
import com.vk.bridges.AuthBridge;
|
||||
import com.vk.navigation.Navigator;
|
||||
import com.vk.notifications.settings.NotificationsSettingsFragment;
|
||||
import com.vk.webapp.fragments.PrivacyFragment;
|
||||
@@ -60,16 +64,13 @@ import com.vtosters.lite.general.fragments.SettingsGeneralFragment;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import ru.vtosters.lite.ui.PreferencesUtil;
|
||||
import ru.vtosters.lite.ui.dialogs.OTADialog;
|
||||
import ru.vtosters.lite.ui.fragments.dockbar.AdapterHelper;
|
||||
import ru.vtosters.lite.ui.fragments.dockbar.DockBarEditorFragment;
|
||||
import ru.vtosters.lite.ui.fragments.dockbar.DockBarManager;
|
||||
import ru.vtosters.lite.ui.fragments.tgstickers.StickersFragment;
|
||||
import ru.vtosters.lite.ui.vkui.VBottomSheetBuilder;
|
||||
import ru.vtosters.lite.utils.CacheUtils;
|
||||
import ru.vtosters.lite.utils.Globals;
|
||||
import ru.vtosters.lite.utils.IconManager;
|
||||
import ru.vtosters.lite.utils.SSFS;
|
||||
import ru.vtosters.lite.utils.VKUIwrapper;
|
||||
|
||||
@@ -137,32 +138,32 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{
|
||||
public void onCreate(Bundle bundle){
|
||||
super.onCreate(bundle);
|
||||
|
||||
String feedsumm = getValAsString("vtlfeedsumm", ads());
|
||||
String docksumm = getDocksumm();
|
||||
String musicsumm = getValAsString("vtlmediasumm", isIntegrationEnabled());
|
||||
String msgsumm = getValAsString("vtlmsgsumm", vkme());
|
||||
String activitysumm = getValAsString("vtlactivitysumm", offline());
|
||||
String themessumm = getValAsString("vtlthemessumm", navbar());
|
||||
String tgssumm = getTGSsumm();
|
||||
String superapp = getSuperappsumm();
|
||||
String interfacesumm = getValAsString("vtlinterfacesumm", shortinfo());
|
||||
String proxysumm = getProxysumm();
|
||||
String othersumm = getValAsString("vtlothersumm", vtverif());
|
||||
String ssfs = getSSFSsumm();
|
||||
String about = "Commit: " + getBuildNumber();
|
||||
var feedsumm = getValAsString("vtlfeedsumm", ads());
|
||||
var docksumm = getDocksumm();
|
||||
var msgsumm = getValAsString("vtlmsgsumm", vkme());
|
||||
var activitysumm = getValAsString("vtlactivitysumm", offline());
|
||||
var themessumm = getValAsString("vtlthemessumm", navbar());
|
||||
var tgssumm = getTGSsumm();
|
||||
var superapp = getSuperappsumm();
|
||||
var mediasumm = getValAsString("vtlinterfacesumm", shortinfo());
|
||||
var interfacesumm = getValAsString("showstories", stories());
|
||||
var proxysumm = getProxysumm();
|
||||
var othersumm = getValAsString("vtlothersumm", vtverif());
|
||||
var ssfs = getSSFSsumm();
|
||||
var about = "Commit: " + getBuildNumber();
|
||||
|
||||
int vtosterXml = getIdentifier("empty", "xml");
|
||||
this.addPreferencesFromResource(vtosterXml);
|
||||
|
||||
PreferencesUtil.addPreferenceDrawable(this, "", "Аккаунты", getUsername() + (hasVerification() ? Globals.getString("thanksfordonate") : Globals.getString("getdonate")), getDrawableFromUrl(getUserPhoto(), "ic_user_circle_outline_28", true, true), preference -> {
|
||||
AuthBridge.logout();
|
||||
addPreferenceDrawable(this, "", "Аккаунты", getUsername() + (hasVerification() ? Globals.getString("thanksfordonate") : Globals.getString("getdonate")), getDrawableFromUrl(getUserPhoto(), "ic_user_circle_outline_28", true, true), preference -> {
|
||||
logout();
|
||||
restartApplication();
|
||||
return false;
|
||||
});
|
||||
|
||||
PreferencesUtil.addPreferenceCategory(this, Globals.getString("vtsettdarktheme"));
|
||||
addPreferenceCategory(this, Globals.getString("vtsettdarktheme"));
|
||||
|
||||
PreferencesUtil.addMaterialSwitchPreference(this, "isdark", Globals.getString("vtsettdarktheme"), "", !DoNotUseOldIcons() ? "ic_palette_24" : "ic_palette_outline_28", false, (preference, o) -> {
|
||||
addMaterialSwitchPreference(this, "isdark", Globals.getString("vtsettdarktheme"), "", !DoNotUseOldIcons() ? "ic_palette_24" : "ic_palette_outline_28", false, (preference, o) -> {
|
||||
boolean value = (boolean) o;
|
||||
|
||||
if (!value) { // inverted
|
||||
@@ -176,7 +177,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{
|
||||
});
|
||||
|
||||
if (Build.VERSION.SDK_INT >= 28 && false) { // TODO refactoring system theme
|
||||
PreferencesUtil.addMaterialSwitchPreference(this, "systemtheme", Globals.getString("appearance_theme_use_system"), Globals.getString("appearance_theme_use_system_summary"), !DoNotUseOldIcons() ? "ic_recent_24" : "ic_recent_outline_28", true, (preference, o) -> {
|
||||
addMaterialSwitchPreference(this, "systemtheme", Globals.getString("appearance_theme_use_system"), Globals.getString("appearance_theme_use_system_summary"), !DoNotUseOldIcons() ? "ic_recent_24" : "ic_recent_outline_28", true, (preference, o) -> {
|
||||
boolean value = (boolean) o;
|
||||
|
||||
edit().putBoolean("systemtheme", value).commit();
|
||||
@@ -185,7 +186,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{
|
||||
}
|
||||
|
||||
if (!isGmsInstalled()) {
|
||||
PreferencesUtil.addPreference(this, "", Globals.getString("installgms"), "", "ic_warning_24", preference -> {
|
||||
addPreference(this, "", Globals.getString("installgms"), "", "ic_warning_24", preference -> {
|
||||
Context context = getContext();
|
||||
Intent a2 = new Navigator(InstallGMSFragment.class).b(context);
|
||||
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
@@ -195,9 +196,9 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{
|
||||
}
|
||||
|
||||
if (devmenu()) {
|
||||
PreferencesUtil.addPreferenceCategory(this, Globals.getString("sett_debug"));
|
||||
addPreferenceCategory(this, Globals.getString("sett_debug"));
|
||||
|
||||
PreferencesUtil.addPreference(this, "", Globals.getString("sett_debug"), "", !DoNotUseOldIcons() ? "ic_bug_24" : "ic_bug_outline_28", preference -> {
|
||||
addPreference(this, "", Globals.getString("sett_debug"), "", !DoNotUseOldIcons() ? "ic_bug_24" : "ic_bug_outline_28", preference -> {
|
||||
Context context = getContext();
|
||||
Intent a2 = new Navigator(SettingsDebugFragment.class).b(context);
|
||||
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
@@ -205,16 +206,16 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{
|
||||
return false;
|
||||
});
|
||||
|
||||
PreferencesUtil.addMaterialSwitchPreference(this, "ssl", Globals.getString("debug_developer_force_ssl"), Globals.getString("debug_developer_force_ssl_summary"), !DoNotUseOldIcons() ? "ic_globe_20" : "ic_globe_outline_28", true, (preference, o) -> {
|
||||
addMaterialSwitchPreference(this, "ssl", Globals.getString("debug_developer_force_ssl"), Globals.getString("debug_developer_force_ssl_summary"), !DoNotUseOldIcons() ? "ic_globe_20" : "ic_globe_outline_28", true, (preference, o) -> {
|
||||
boolean value = (boolean) o;
|
||||
edit().putBoolean("ssl", value).commit();
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
PreferencesUtil.addPreferenceCategory(this, Globals.getString("vtsettaccount"));
|
||||
addPreferenceCategory(this, Globals.getString("vtsettaccount"));
|
||||
|
||||
PreferencesUtil.addPreference(this, "", Globals.getString("vkconnect"), "", !DoNotUseOldIcons() ? "ic_tags_24" : "ic_user_circle_outline_28", preference -> {
|
||||
addPreference(this, "", Globals.getString("vkconnect"), "", !DoNotUseOldIcons() ? "ic_tags_24" : "ic_user_circle_outline_28", preference -> {
|
||||
Context context = getContext();
|
||||
VKUIwrapper.officalLinks("account");
|
||||
Intent a2 = new Navigator(VKUIwrapper.class).b(context);
|
||||
@@ -223,7 +224,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{
|
||||
return false;
|
||||
});
|
||||
|
||||
PreferencesUtil.addPreference(this, "", Globals.getString("privacy_settings"), "", !DoNotUseOldIcons() ? "ic_privacy_24" : "ic_privacy_outline_28", preference -> {
|
||||
addPreference(this, "", Globals.getString("privacy_settings"), "", !DoNotUseOldIcons() ? "ic_privacy_24" : "ic_privacy_outline_28", preference -> {
|
||||
Context context = getContext();
|
||||
Intent a2 = new Navigator(PrivacyFragment.class).b(context);
|
||||
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
@@ -231,7 +232,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{
|
||||
return false;
|
||||
});
|
||||
|
||||
PreferencesUtil.addPreference(this, "", Globals.getString("sett_account"), "", !DoNotUseOldIcons() ? "ic_user_24" : "ic_user_outline_28", preference -> {
|
||||
addPreference(this, "", Globals.getString("sett_account"), "", !DoNotUseOldIcons() ? "ic_user_24" : "ic_user_outline_28", preference -> {
|
||||
Context context = getContext();
|
||||
Intent a2 = new Navigator(SettingsAccountFragment.class).b(context);
|
||||
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
@@ -239,7 +240,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{
|
||||
return false;
|
||||
});
|
||||
|
||||
PreferencesUtil.addPreference(this, "", Globals.getString("bugs"), "", !DoNotUseOldIcons() ? "ic_bug_24" : "ic_bug_outline_28", preference -> {
|
||||
addPreference(this, "", Globals.getString("bugs"), "", !DoNotUseOldIcons() ? "ic_bug_24" : "ic_bug_outline_28", preference -> {
|
||||
Context context = getContext();
|
||||
VKUIwrapper.officalLinks("bugs");
|
||||
Intent a2 = new Navigator(VKUIwrapper.class).b(context);
|
||||
@@ -248,7 +249,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{
|
||||
return false;
|
||||
});
|
||||
|
||||
PreferencesUtil.addPreference(this, "", Globals.getString("vtssfs"), ssfs, !DoNotUseOldIcons() ? "ic_link_24" : "ic_link_circle_outline_28", preference -> {
|
||||
addPreference(this, "", Globals.getString("vtssfs"), ssfs, !DoNotUseOldIcons() ? "ic_link_24" : "ic_link_circle_outline_28", preference -> {
|
||||
Context context = getContext();
|
||||
VKUIwrapper.setLink(SSFS.getSSFSLink());
|
||||
Intent a2 = new Navigator(VKUIwrapper.class).b(context);
|
||||
@@ -257,9 +258,9 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{
|
||||
return false;
|
||||
});
|
||||
|
||||
PreferencesUtil.addPreferenceCategory(this, Globals.getString("notification_settings"));
|
||||
addPreferenceCategory(this, Globals.getString("notification_settings"));
|
||||
|
||||
PreferencesUtil.addPreference(this, "", Globals.getString("sett_general"), "", !DoNotUseOldIcons() ? "ic_settings_24" : "ic_settings_outline_28", preference -> {
|
||||
addPreference(this, "", Globals.getString("sett_general"), "", !DoNotUseOldIcons() ? "ic_settings_24" : "ic_settings_outline_28", preference -> {
|
||||
Context context = getContext();
|
||||
Intent a2 = new Navigator(SettingsGeneralFragment.class).b(context);
|
||||
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
@@ -267,7 +268,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{
|
||||
return false;
|
||||
});
|
||||
|
||||
PreferencesUtil.addPreference(this, "", Globals.getString("blacklist"), "", !DoNotUseOldIcons() ? "ic_users_24" : "ic_users_outline_28", preference -> {
|
||||
addPreference(this, "", Globals.getString("blacklist"), "", !DoNotUseOldIcons() ? "ic_users_24" : "ic_users_outline_28", preference -> {
|
||||
Context context = getContext();
|
||||
Intent a2 = new Navigator(BlacklistFragment.class).b(context);
|
||||
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
@@ -275,7 +276,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{
|
||||
return false;
|
||||
});
|
||||
|
||||
PreferencesUtil.addPreference(this, "", Globals.getString("sett_notifications"), "", !DoNotUseOldIcons() ? "ic_notification_24" : "ic_menu_notification_outline_28", preference -> {
|
||||
addPreference(this, "", Globals.getString("sett_notifications"), "", !DoNotUseOldIcons() ? "ic_notification_24" : "ic_menu_notification_outline_28", preference -> {
|
||||
Context context = getContext();
|
||||
Intent a2 = new Navigator(NotificationsSettingsFragment.class).b(context);
|
||||
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
@@ -284,7 +285,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{
|
||||
});
|
||||
|
||||
if (VKAccountManager.d().isMusicSubs()) {
|
||||
PreferencesUtil.addPreference(this, "", Globals.getString("subscription_music"), "", !DoNotUseOldIcons() ? "ic_music_24" : "ic_music_outline_28", preference -> {
|
||||
addPreference(this, "", Globals.getString("subscription_music"), "", !DoNotUseOldIcons() ? "ic_music_24" : "ic_music_outline_28", preference -> {
|
||||
Context context = getContext();
|
||||
Intent a2 = new Navigator(MusicSubscriptionControlFragment.class).b(context);
|
||||
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
@@ -293,7 +294,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{
|
||||
});
|
||||
}
|
||||
|
||||
PreferencesUtil.addPreference(this, "", Globals.getString("votes"), "", !DoNotUseOldIcons() ? "ic_coins_24" : "ic_coins_outline_28", preference -> {
|
||||
addPreference(this, "", Globals.getString("votes"), "", !DoNotUseOldIcons() ? "ic_coins_24" : "ic_coins_outline_28", preference -> {
|
||||
Context context = getContext();
|
||||
Intent a2 = new Navigator(BalanceFragment.class).b(context);
|
||||
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
@@ -301,10 +302,10 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{
|
||||
return false;
|
||||
});
|
||||
|
||||
PreferencesUtil.addPreferenceCategory(this, Globals.getString("vtsettmod"));
|
||||
addPreferenceCategory(this, Globals.getString("vtsettmod"));
|
||||
|
||||
if (!vkme()) {
|
||||
PreferencesUtil.addPreference(this, "", Globals.getString("vtlfeed"), feedsumm, !DoNotUseOldIcons() ? "ic_newsfeed_24" : "ic_newsfeed_outline_28", preference -> {
|
||||
addPreference(this, "", Globals.getString("vtlfeed"), feedsumm, !DoNotUseOldIcons() ? "ic_newsfeed_24" : "ic_newsfeed_outline_28", preference -> {
|
||||
Context context = getContext();
|
||||
Intent a2 = new Navigator(FeedFragment.class).b(context);
|
||||
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
@@ -312,7 +313,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{
|
||||
return false;
|
||||
});
|
||||
|
||||
PreferencesUtil.addPreference(this, "", Globals.getString("dockbar_editor"), docksumm, !DoNotUseOldIcons() ? "ic_list_24" : "ic_list_outline_28", preference -> {
|
||||
addPreference(this, "", Globals.getString("dockbar_editor"), docksumm, !DoNotUseOldIcons() ? "ic_list_24" : "ic_list_outline_28", preference -> {
|
||||
Context context = getContext();
|
||||
Intent a2 = new Navigator(DockBarEditorFragment.class).b(context);
|
||||
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
@@ -321,7 +322,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{
|
||||
});
|
||||
}
|
||||
|
||||
PreferencesUtil.addPreference(this, "", Globals.getString("vtlmedia"), musicsumm, "ic_media_outline_28", preference -> {
|
||||
addPreference(this, "", Globals.getString("vtlmedia"), mediasumm, "ic_media_outline_28", preference -> {
|
||||
Context context = getContext();
|
||||
Intent a2 = new Navigator(MediaFragment.class).b(context);
|
||||
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
@@ -329,7 +330,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{
|
||||
return false;
|
||||
});
|
||||
|
||||
PreferencesUtil.addPreference(this, "", Globals.getString("vtlmessages"), msgsumm, !DoNotUseOldIcons() ? "ic_message_24" : "ic_message_outline_28", preference -> {
|
||||
addPreference(this, "", Globals.getString("vtlmessages"), msgsumm, !DoNotUseOldIcons() ? "ic_message_24" : "ic_message_outline_28", preference -> {
|
||||
Context context = getContext();
|
||||
Intent a2 = new Navigator(MessagesFragment.class).b(context);
|
||||
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
@@ -337,7 +338,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{
|
||||
return false;
|
||||
});
|
||||
|
||||
PreferencesUtil.addPreference(this, "", Globals.getString("vtlactivity"), activitysumm, !DoNotUseOldIcons() ? "ic_write_24" : "ic_write_outline_28_new_accent", preference -> {
|
||||
addPreference(this, "", Globals.getString("vtlactivity"), activitysumm, !DoNotUseOldIcons() ? "ic_write_24" : "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);
|
||||
@@ -345,7 +346,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{
|
||||
return false;
|
||||
});
|
||||
|
||||
PreferencesUtil.addPreference(this, "", Globals.getString("vtlthemes"), themessumm, !DoNotUseOldIcons() ? "ic_palette_24" : "ic_write_outline_24", preference -> {
|
||||
addPreference(this, "", Globals.getString("vtlthemes"), themessumm, !DoNotUseOldIcons() ? "ic_palette_24" : "ic_write_outline_24", preference -> {
|
||||
Context context = getContext();
|
||||
Intent a2 = new Navigator(ThemesFragment.class).b(context);
|
||||
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
@@ -353,7 +354,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{
|
||||
return false;
|
||||
});
|
||||
|
||||
PreferencesUtil.addPreference(this, "", Globals.getString("vtltgs"), tgssumm, !DoNotUseOldIcons() ? "ic_telegram_24" : "ic_telegram_outline_28", preference -> {
|
||||
addPreference(this, "", Globals.getString("vtltgs"), tgssumm, !DoNotUseOldIcons() ? "ic_telegram_24" : "ic_telegram_outline_28", preference -> {
|
||||
Context context = getContext();
|
||||
Intent a2 = new Navigator(StickersFragment.class).b(context);
|
||||
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
@@ -361,7 +362,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{
|
||||
return false;
|
||||
});
|
||||
|
||||
PreferencesUtil.addPreference(this, "", Globals.getString("vtlinterface"), interfacesumm, !DoNotUseOldIcons() ? "ic_interface_24" : "ic_interface_outline_28", preference -> {
|
||||
addPreference(this, "", Globals.getString("vtlinterface"), interfacesumm, !DoNotUseOldIcons() ? "ic_interface_24" : "ic_interface_outline_28", preference -> {
|
||||
Context context = getContext();
|
||||
Intent a2 = new Navigator(InterfaceFragment.class).b(context);
|
||||
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
@@ -369,14 +370,14 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{
|
||||
return false;
|
||||
});
|
||||
|
||||
if (milkshake()) {
|
||||
PreferencesUtil.addPreference(this, "", "Настроить Superapp", superapp, "ic_explore_outline_28", (preference) -> {
|
||||
if (milkshake() && superapp()) {
|
||||
addPreference(this, "", "Настроить Superapp", superapp, "ic_explore_outline_28", (preference) -> {
|
||||
callEditorPopup();
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
PreferencesUtil.addPreference(this, "", Globals.getString("vtlproxy"), proxysumm, !DoNotUseOldIcons() ? "ic_globe_20" : "ic_globe_outline_28", preference -> {
|
||||
addPreference(this, "", Globals.getString("vtlproxy"), proxysumm, !DoNotUseOldIcons() ? "ic_globe_20" : "ic_globe_outline_28", preference -> {
|
||||
Context context = getContext();
|
||||
Intent a2 = new Navigator(ProxySettingsFragment.class).b(context);
|
||||
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
@@ -384,13 +385,13 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{
|
||||
return false;
|
||||
});
|
||||
|
||||
PreferencesUtil.addListPreferenceIcon(this, "clearcache", "Default", Globals.getString("autoclearcache"), !DoNotUseOldIcons() ? "ic_delete_24" : "ic_delete_outline_28", getCachesumm(), new CharSequence[] {
|
||||
addListPreferenceIcon(this, "clearcache", "Default", Globals.getString("autoclearcache"), !DoNotUseOldIcons() ? "ic_delete_24" : "ic_delete_outline_28", getCachesumm(), new CharSequence[] {
|
||||
Globals.getString("autoclearcachedisabled"), "100 MB", "500 MB", "1 GB", "2 GB", "5 GB"
|
||||
}, new String[] {
|
||||
"Default", "100mb", "500mb", "1gb", "2gb", "5gb"
|
||||
}, null);
|
||||
|
||||
PreferencesUtil.addPreference(this, "", Globals.getString("vtlother"), othersumm, !DoNotUseOldIcons() ? "ic_more_24" : "ic_more_horizontal_28", preference -> {
|
||||
addPreference(this, "", Globals.getString("vtlother"), othersumm, !DoNotUseOldIcons() ? "ic_more_24" : "ic_more_horizontal_28", preference -> {
|
||||
Context context = getContext();
|
||||
Intent a2 = new Navigator(OtherFragment.class).b(context);
|
||||
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
@@ -398,9 +399,9 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{
|
||||
return false;
|
||||
});
|
||||
|
||||
PreferencesUtil.addPreferenceCategory(this, Globals.getString("vtsettaboutmod"));
|
||||
addPreferenceCategory(this, Globals.getString("vtsettaboutmod"));
|
||||
|
||||
PreferencesUtil.addPreference(this, "", Globals.getString("menu_about"), about, !DoNotUseOldIcons() ? "ic_about_24" : "ic_about_outline_28", preference -> {
|
||||
addPreference(this, "", Globals.getString("menu_about"), about, !DoNotUseOldIcons() ? "ic_about_24" : "ic_about_outline_28", preference -> {
|
||||
Context context = getContext();
|
||||
Intent a2 = new Navigator(AboutAppFragment.class).b(context);
|
||||
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
@@ -408,30 +409,30 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{
|
||||
return false;
|
||||
});
|
||||
|
||||
PreferencesUtil.addPreference(this, "", Globals.getString("opencommit"), "", !DoNotUseOldIcons() ? "ic_link_24" : "ic_link_outline_28", preference -> {
|
||||
addPreference(this, "", Globals.getString("opencommit"), "", !DoNotUseOldIcons() ? "ic_link_24" : "ic_link_outline_28", preference -> {
|
||||
getContext().startActivity(new Intent("android.intent.action.VIEW").setData(Uri.parse(getCommitLink())));
|
||||
return false;
|
||||
});
|
||||
|
||||
PreferencesUtil.addPreference(this, "", Globals.getString("vtfaq"), Globals.getString("vtfaqsumm"), !DoNotUseOldIcons() ? "ic_help_24" : "ic_help_outline_24", preference -> {
|
||||
addPreference(this, "", Globals.getString("vtfaq"), Globals.getString("vtfaqsumm"), !DoNotUseOldIcons() ? "ic_help_24" : "ic_help_outline_24", preference -> {
|
||||
getContext().startActivity(new Intent("android.intent.action.VIEW").setData(Uri.parse("https://t.me/s/vtosters_faq")));
|
||||
return false;
|
||||
});
|
||||
|
||||
PreferencesUtil.addPreference(this, "", Globals.getString("reportbug"), Globals.getString("reportbugsumm"), !DoNotUseOldIcons() ? "ic_bug_24" : "ic_bug_outline_28", preference -> {
|
||||
addPreference(this, "", Globals.getString("reportbug"), Globals.getString("reportbugsumm"), !DoNotUseOldIcons() ? "ic_bug_24" : "ic_bug_outline_28", preference -> {
|
||||
getContext().startActivity(new Intent("android.intent.action.VIEW").setData(Uri.parse("https://github.com/vtosters/lite/issues")));
|
||||
return false;
|
||||
});
|
||||
|
||||
if (isValidSignature()) {
|
||||
PreferencesUtil.addPreferenceCategory(this, Globals.getString("updates"));
|
||||
addPreferenceCategory(this, Globals.getString("updates"));
|
||||
|
||||
PreferencesUtil.addPreference(this, "", Globals.getString("checkforupdates"), "", "ic_download_outline_24", preference -> {
|
||||
addPreference(this, "", Globals.getString("checkforupdates"), "", "ic_download_outline_24", preference -> {
|
||||
OTADialog.checkUpdates(getActivity());
|
||||
return false;
|
||||
});
|
||||
|
||||
PreferencesUtil.addMaterialSwitchPreference(this, "checkupdates", Globals.getString("checkupdates"), "", "ic_recent_outline_28", true, (preference, o) -> {
|
||||
addMaterialSwitchPreference(this, "checkupdates", Globals.getString("checkupdates"), "", "ic_recent_outline_28", true, (preference, o) -> {
|
||||
boolean value = (boolean) o;
|
||||
|
||||
edit().putBoolean("checkupdates", value).commit();
|
||||
|
||||
@@ -25,8 +25,6 @@ public class AdapterHelper{
|
||||
}
|
||||
|
||||
public static int getItemCount(){
|
||||
return sManager.getCategoryTitles().size()
|
||||
+ sManager.getSelectedTabs().size()
|
||||
+ sManager.getDisabledTabs().size();
|
||||
return sManager.getSelectedTabs().size() + sManager.getDisabledTabs().size() + 2;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,6 @@ import static ru.vtosters.lite.utils.Globals.getContext;
|
||||
|
||||
import android.content.res.ColorStateList;
|
||||
import android.graphics.Typeface;
|
||||
import android.util.Log;
|
||||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
@@ -116,8 +115,9 @@ public class DockBarEditorAdapter extends RecyclerView.Adapter<DockBarEditorAdap
|
||||
DockBarTab curr;
|
||||
if (AdapterHelper.getTabType(fromPosition) == AdapterHelper.SELECTED) {
|
||||
curr = selectedTabs.get(fromPosition - 1);
|
||||
var min = selectedTabs.size() == DockBarManager.MIN_SELECTED_TABS_LIMIT;
|
||||
if (AdapterHelper.getItemViewType(toPosition) == AdapterHelper.CATEGORY_TITLE_TYPE) {
|
||||
if (selectedTabs.size() == DockBarManager.MIN_SELECTED_TABS_LIMIT)
|
||||
if (min)
|
||||
return false;
|
||||
selectedTabs.remove(fromPosition - 1);
|
||||
disabledTabs.add(curr);
|
||||
@@ -126,16 +126,21 @@ public class DockBarEditorAdapter extends RecyclerView.Adapter<DockBarEditorAdap
|
||||
disabledTabs.set(i + 1, disabledTabs.get(i));
|
||||
disabledTabs.set(i, tmp);
|
||||
}
|
||||
} else if (AdapterHelper.getTabType(toPosition) == AdapterHelper.DISABLED && min) {
|
||||
return false;
|
||||
} else {
|
||||
Collections.swap(selectedTabs, fromPosition - 1, toPosition - 1);
|
||||
}
|
||||
} else if (AdapterHelper.getTabType(fromPosition) == AdapterHelper.DISABLED) {
|
||||
curr = disabledTabs.get(fromPosition - selectedTabs.size() - 2);
|
||||
var max = selectedTabs.size() == DockBarManager.MAX_SELECTED_TABS_LIMIT;
|
||||
if (AdapterHelper.getItemViewType(toPosition) == AdapterHelper.CATEGORY_TITLE_TYPE) {
|
||||
if (selectedTabs.size() == DockBarManager.MAX_SELECTED_TABS_LIMIT)
|
||||
if (max)
|
||||
return false;
|
||||
disabledTabs.remove(0);
|
||||
selectedTabs.add(curr);
|
||||
} else if (AdapterHelper.getTabType(toPosition) == AdapterHelper.SELECTED && max) {
|
||||
return false;
|
||||
} else {
|
||||
Collections.swap(disabledTabs, fromPosition - selectedTabs.size() - 2, toPosition - selectedTabs.size() - 2);
|
||||
}
|
||||
@@ -167,7 +172,6 @@ public class DockBarEditorAdapter extends RecyclerView.Adapter<DockBarEditorAdap
|
||||
}
|
||||
|
||||
public void bind(int pos){
|
||||
Log.d("ItemViewHolder", pos + "");
|
||||
if (AdapterHelper.getItemViewType(pos) == AdapterHelper.TAB_TYPE) {
|
||||
DockBarTab tab = AdapterHelper.getTabType(pos) == AdapterHelper.SELECTED
|
||||
? mDockBarManager.getSelectedTabs().get(pos - 1)
|
||||
@@ -177,7 +181,7 @@ public class DockBarEditorAdapter extends RecyclerView.Adapter<DockBarEditorAdap
|
||||
mTabContainer.setVisibility(View.VISIBLE);
|
||||
mCategoryTitleContainer.setVisibility(View.INVISIBLE);
|
||||
} else {
|
||||
mCategoryTitle.setText(mDockBarManager.getCategoryTitles().get(pos == 0 ? 0 : 1));
|
||||
mCategoryTitle.setText(mDockBarManager.getCategoryTitles()[pos == 0 ? 0 : 1]);
|
||||
mCategoryTitleContainer.setVisibility(View.VISIBLE);
|
||||
mTabContainer.setVisibility(View.INVISIBLE);
|
||||
}
|
||||
|
||||
@@ -9,21 +9,20 @@ import android.view.ContextThemeWrapper;
|
||||
import android.view.Gravity;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.recyclerview.widget.ItemTouchHelper;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.vtosters.lite.general.fragments.MaterialPreferenceToolbarFragment;
|
||||
|
||||
import com.vtosters.lite.R;
|
||||
import ru.vtosters.lite.ui.fragments.BaseToolbarFragment;
|
||||
import ru.vtosters.lite.utils.Globals;
|
||||
|
||||
public class DockBarEditorFragment extends MaterialPreferenceToolbarFragment{
|
||||
public class DockBarEditorFragment extends BaseToolbarFragment {
|
||||
|
||||
private RecyclerView mRecycler;
|
||||
private DockBarEditorAdapter mAdapter;
|
||||
@@ -31,15 +30,10 @@ public class DockBarEditorFragment extends MaterialPreferenceToolbarFragment{
|
||||
private ItemTouchHelper mItemTouchHelper;
|
||||
|
||||
@Override
|
||||
public int T4(){
|
||||
return getIdentifier("dockbar_editor", "string");
|
||||
}
|
||||
public View onCreateContent(@NonNull LayoutInflater inflater, @Nullable Bundle bundle) {
|
||||
setTitle(getIdentifier("dockbar_editor", "string"));
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater layoutInflater, ViewGroup viewGroup, Bundle bundle){
|
||||
View root = super.onCreateView(layoutInflater, viewGroup, bundle);
|
||||
|
||||
FrameLayout content = root.findViewById(R.id.appkit_content);
|
||||
FrameLayout content = new FrameLayout(getContext());
|
||||
|
||||
LinearLayout container = new LinearLayout(getContext());
|
||||
container.setOrientation(LinearLayout.VERTICAL);
|
||||
@@ -92,6 +86,6 @@ public class DockBarEditorFragment extends MaterialPreferenceToolbarFragment{
|
||||
mItemTouchHelper = new ItemTouchHelper(mCallback);
|
||||
mItemTouchHelper.attachToRecyclerView(mRecycler);
|
||||
|
||||
return root;
|
||||
return content;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package ru.vtosters.lite.ui.fragments.dockbar;
|
||||
|
||||
import static com.vtosters.lite.R.id.menu_feedback;
|
||||
import static com.vtosters.lite.R.id.menu_friends;
|
||||
import static com.vtosters.lite.R.id.menu_messages;
|
||||
import static com.vtosters.lite.R.id.menu_newsfeed;
|
||||
import static com.vtosters.lite.R.id.menu_search;
|
||||
@@ -21,7 +22,9 @@ import android.view.MenuItem;
|
||||
import com.vk.apps.AppsFragment;
|
||||
import com.vk.core.drawable.RecoloredDrawable;
|
||||
import com.vk.core.fragments.FragmentImpl;
|
||||
import com.vk.core.util.StringUtils;
|
||||
import com.vk.navigation.right.RightMenu;
|
||||
import com.vtosters.lite.MenuCountersState;
|
||||
import com.vtosters.lite.ui.bottomnavigation.BottomNavigationMenuView;
|
||||
import com.vtosters.lite.ui.bottomnavigation.BottomNavigationView;
|
||||
|
||||
@@ -38,6 +41,8 @@ import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import ru.vtosters.lite.utils.Preferences;
|
||||
|
||||
public class DockBarInjector{
|
||||
private static final DockBarManager sManager = DockBarManager.getInstance();
|
||||
|
||||
@@ -155,6 +160,45 @@ public class DockBarInjector{
|
||||
}
|
||||
}
|
||||
|
||||
public static void setCounter(int tabId, BottomNavigationView navigationView){
|
||||
navigationView.a(tabId, counters(tabId, navigationView));
|
||||
}
|
||||
|
||||
private static CharSequence counters(int tabId, BottomNavigationView navigationView){
|
||||
if (!Preferences.dockcounter()) return null;
|
||||
|
||||
int val = 0;
|
||||
switch (tabId) {
|
||||
case tab_messages:
|
||||
val = MenuCountersState.j();
|
||||
break;
|
||||
case tab_feedback:
|
||||
if (Preferences.milkshake())
|
||||
val = MenuCountersState.k();
|
||||
break;
|
||||
case menu_friends:
|
||||
if (!Preferences.milkshake())
|
||||
val = MenuCountersState.k();
|
||||
break;
|
||||
}
|
||||
//
|
||||
// val = MenuCountersState.g(); // friends ?????? menu_friends
|
||||
// val = MenuCountersState.j(); // messages
|
||||
// val = MenuCountersState.k(); // notifications
|
||||
// val = MenuCountersState.b(); // NewsfeedMarkDiscoverBadgeViewed
|
||||
// val = MenuCountersState.c(); // fave
|
||||
// val = MenuCountersState.a(); // games
|
||||
// val = MenuCountersState.h(); // groups
|
||||
// val = MenuCountersState.l(); // photos
|
||||
// val = MenuCountersState.m(); // support
|
||||
// val = MenuCountersState.n(); // videos
|
||||
// val = MenuCountersState.o(); // vk_pay
|
||||
// val = MenuCountersState.e(); // new friends
|
||||
// val = MenuCountersState.f(); // suggested friends
|
||||
|
||||
return val > 0 ? StringUtils.a(val) : null;
|
||||
}
|
||||
|
||||
public static JSONArray injectMenuJSON(JSONArray arr){
|
||||
List<String> arrayList = new ArrayList(Arrays.asList(
|
||||
"news",
|
||||
@@ -199,11 +243,11 @@ public class DockBarInjector{
|
||||
public static boolean isDockOpenAllowed(Class<?> cls){
|
||||
for (DockBarTab tab : sManager.getSelectedTabs())
|
||||
if (tab.fragmentClass == cls)
|
||||
return true;
|
||||
return false;
|
||||
for (DockBarTab tab : sManager.getDisabledTabs())
|
||||
if (tab.fragmentClass == cls)
|
||||
return true;
|
||||
return false;
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
public static Class<?> interceptClick(int id, RightMenu rightMenu){
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package ru.vtosters.lite.ui.fragments.dockbar;
|
||||
|
||||
import static ru.vtosters.lite.utils.Globals.getContext;
|
||||
import static ru.vtosters.lite.utils.Globals.getPreferences;
|
||||
import static ru.vtosters.lite.utils.Globals.getString;
|
||||
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
|
||||
import static ru.vtosters.lite.utils.Preferences.milkshake;
|
||||
import static ru.vtosters.lite.utils.Preferences.musicnewcatalog;
|
||||
import static ru.vtosters.lite.utils.Preferences.superapp;
|
||||
import static ru.vtosters.lite.utils.Preferences.useNewSettings;
|
||||
import static ru.vtosters.lite.utils.Preferences.vkme;
|
||||
@@ -26,8 +26,9 @@ import com.vk.profile.catalog.CommunitiesCatalogFragment;
|
||||
import com.vk.superapp.SuperAppFragment;
|
||||
import com.vtosters.lite.R;
|
||||
import com.vtosters.lite.fragments.ProfileFragment;
|
||||
import com.vtosters.lite.fragments.friends.FriendsFragment;
|
||||
import com.vtosters.lite.fragments.gifts.BirthdaysFragment;
|
||||
import com.vtosters.lite.fragments.lives.LivesPostListFragment;
|
||||
import com.vtosters.lite.fragments.lives.LivesTabsFragment;
|
||||
import com.vtosters.lite.fragments.money.MoneyTransfersFragment;
|
||||
import com.vtosters.lite.fragments.p2.DocumentsViewFragment;
|
||||
import com.vtosters.lite.fragments.s2.GroupsFragment1;
|
||||
@@ -36,19 +37,15 @@ import com.vtosters.lite.fragments.y2.VideosFragment;
|
||||
import com.vtosters.lite.general.fragments.GamesFragment;
|
||||
import com.vtosters.lite.general.fragments.PhotosFragment;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import ru.vtosters.lite.utils.StreamUtils;
|
||||
import ru.vtosters.lite.utils.Globals;
|
||||
|
||||
public class DockBarManager{
|
||||
public class DockBarManager {
|
||||
|
||||
public static final int MIN_SELECTED_TABS_LIMIT = 3;
|
||||
public static final int MAX_SELECTED_TABS_LIMIT = 9;
|
||||
@@ -57,310 +54,220 @@ public class DockBarManager{
|
||||
|
||||
private final List<DockBarTab> mSelectedTabs = new ArrayList<>();
|
||||
private final List<DockBarTab> mDisabledTabs = new ArrayList<>();
|
||||
private final List<String> mCategoryTitles = Arrays.asList(
|
||||
private final String[] mCategoryTitles = {
|
||||
getString("dockbar_selected_items"),
|
||||
getString("dockbar_unselected_items")
|
||||
);
|
||||
private File mConfig;
|
||||
};
|
||||
|
||||
public DockBarManager(){
|
||||
init();
|
||||
}
|
||||
|
||||
public static DockBarManager getInstance(){
|
||||
public static DockBarManager getInstance() {
|
||||
return sInstance == null
|
||||
? (sInstance = new DockBarManager())
|
||||
: sInstance;
|
||||
}
|
||||
|
||||
private void init(){
|
||||
mConfig = new File(getContext().getFilesDir(), "dockbar.json");
|
||||
public DockBarManager() {
|
||||
init();
|
||||
}
|
||||
|
||||
private void init() {
|
||||
if (vkme()) {
|
||||
mSelectedTabs.add(DockBarTab.valuesOf(
|
||||
"tab_settings",
|
||||
R.drawable.ic_settings_outline_28,
|
||||
R.string.menu_settings,
|
||||
R.id.menu_settings,
|
||||
useNewSettings()));
|
||||
mSelectedTabs.add(getTabByTag("tab_settings"));
|
||||
if (vkme_notifs())
|
||||
mSelectedTabs.add(DockBarTab.valuesOf(
|
||||
"tab_feedback",
|
||||
R.drawable.ic_menu_notification_outline_28,
|
||||
R.string.feedback,
|
||||
R.id.tab_feedback,
|
||||
NotificationsContainerFragment.class));
|
||||
mSelectedTabs.add(DockBarTab.valuesOf(
|
||||
"tab_messages",
|
||||
R.drawable.ic_message_outline_28,
|
||||
R.string.messages,
|
||||
R.id.tab_messages,
|
||||
DialogsFragment.class));
|
||||
mSelectedTabs.add(DockBarTab.valuesOf(
|
||||
"tab_profile",
|
||||
milkshake() ? R.drawable.ic_user_circle_outline_28 : R.drawable.ic_account_outline_28,
|
||||
R.string.profile,
|
||||
R.id.tab_menu,
|
||||
milkshake() ? ProfileFragment.class : MenuFragment.class));
|
||||
mSelectedTabs.add(getTabByTag("tab_feedback"));
|
||||
mSelectedTabs.add(getTabByTag("tab_messages"));
|
||||
mSelectedTabs.add(getTabByTag("tab_profile"));
|
||||
return;
|
||||
}
|
||||
if (mConfig.exists()) {
|
||||
readFromConfig();
|
||||
} else {
|
||||
fillDefault();
|
||||
|
||||
checkOldConfig();
|
||||
|
||||
String[] selectedTabsTags = getPreferences().getString("dockbar_tabs", "tab_news,tab_superapps,tab_messages,tab_friends,tab_profile")
|
||||
.split(",");
|
||||
parseSelectedTabs(selectedTabsTags);
|
||||
}
|
||||
|
||||
private void checkOldConfig() {
|
||||
File config = new File(getContext().getFilesDir(), "dockbar.json");
|
||||
if (config.exists()) config.deleteOnExit();
|
||||
}
|
||||
|
||||
private void parseSelectedTabs(String[] selectedTabsTags) {
|
||||
List<String> allTags = new ArrayList<>(Arrays.asList( "tab_news", "tab_superapps", "tab_messages", "tab_feedback", "tab_profile",
|
||||
"tab_friends", "tab_groups", "tab_photos", "tab_audios", "tab_videos", "tab_lives", "tab_games", "tab_liked",
|
||||
"tab_fave", "tab_documents", "tab_payments", "tab_vk_apps", "tab_settings", "tab_menu", "tab_brtd" ));
|
||||
for (String tag : selectedTabsTags) {
|
||||
mSelectedTabs.add(getTabByTag(tag));
|
||||
allTags.remove(tag);
|
||||
}
|
||||
allTags.forEach(tag -> mDisabledTabs.add(getTabByTag(tag)));
|
||||
}
|
||||
|
||||
private void readFromConfig(){
|
||||
try {
|
||||
JSONObject jsonObj = new JSONObject(StreamUtils.readAllLines(mConfig));
|
||||
|
||||
fillList(mSelectedTabs, jsonObj.getJSONArray("selected"));
|
||||
fillList(mDisabledTabs, jsonObj.getJSONArray("disabled"));
|
||||
} catch (JSONException | IOException | ClassNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
public void save() {
|
||||
Globals.getPreferences().edit().putString("dockbar_tabs", mSelectedTabs.stream().map(tab -> tab.tag)
|
||||
.collect(Collectors.joining(","))).commit();
|
||||
}
|
||||
|
||||
private void fillList(List<DockBarTab> list, JSONArray array) throws JSONException, ClassNotFoundException{
|
||||
for (int i = 0; i < array.length(); i++) {
|
||||
JSONObject item = array.getJSONObject(i);
|
||||
DockBarTab tab = DockBarTab.valuesOf(
|
||||
item.getString("tag"),
|
||||
item.getInt("iconID"),
|
||||
item.getInt("titleID"),
|
||||
item.getInt("id"),
|
||||
Class.forName(item.getString("fragmentClass"))
|
||||
);
|
||||
|
||||
if (musicnewcatalog() && MusicFragment.class == tab.fragmentClass)
|
||||
tab.fragmentClass = MusicCatalogFragment1.class;
|
||||
else if (MusicCatalogFragment1.class == tab.fragmentClass)
|
||||
tab.fragmentClass = MusicFragment.class;
|
||||
|
||||
if (milkshake()) {
|
||||
if (NewsfeedFragment.class == tab.fragmentClass)
|
||||
tab.fragmentClass = HomeFragment.class;
|
||||
// fix menu visibility
|
||||
if (MenuFragment.class == tab.fragmentClass) {
|
||||
tab.fragmentClass = ProfileFragment.class;
|
||||
tab.iconID = R.drawable.ic_user_circle_outline_28;
|
||||
}
|
||||
|
||||
if (ThemedFeedFragment.class == tab.fragmentClass) {
|
||||
tab.fragmentClass = SuperAppFragment.class;
|
||||
tab.iconID = R.drawable.ic_explore_outline_28;
|
||||
}
|
||||
|
||||
if (!superapp() && SuperAppFragment.class == tab.fragmentClass) {
|
||||
tab.fragmentClass = SearchMenuFragment.class;
|
||||
}
|
||||
|
||||
if (NotificationsContainerFragment.class == tab.fragmentClass) {
|
||||
tab.fragmentClass = FriendsCatalogFragment.class;
|
||||
tab.iconID = R.drawable.ic_users_outline_28;
|
||||
}
|
||||
|
||||
if (milkshake() && GroupsFragment1.class == tab.fragmentClass) {
|
||||
tab.fragmentClass = CommunitiesCatalogFragment.class;
|
||||
}
|
||||
|
||||
} else {
|
||||
if (HomeFragment.class == tab.fragmentClass)
|
||||
tab.fragmentClass = NewsfeedFragment.class;
|
||||
// fix menu visibility
|
||||
if (ProfileFragment.class == tab.fragmentClass) {
|
||||
tab.iconID = R.drawable.ic_menu_more_outline_28;
|
||||
tab.fragmentClass = MenuFragment.class;
|
||||
}
|
||||
|
||||
if (SuperAppFragment.class == tab.fragmentClass) {
|
||||
tab.iconID = R.drawable.ic_menu_search_outline_28;
|
||||
tab.fragmentClass = ThemedFeedFragment.class;
|
||||
}
|
||||
|
||||
if (SearchMenuFragment.class == tab.fragmentClass) {
|
||||
tab.fragmentClass = ThemedFeedFragment.class;
|
||||
}
|
||||
|
||||
if (CommunitiesCatalogFragment.class == tab.fragmentClass) {
|
||||
tab.fragmentClass = GroupsFragment1.class;
|
||||
}
|
||||
|
||||
if (FriendsCatalogFragment.class == tab.fragmentClass) {
|
||||
tab.fragmentClass = NotificationsContainerFragment.class;
|
||||
tab.iconID = R.drawable.ic_menu_notification_outline_28;
|
||||
}
|
||||
}
|
||||
list.add(tab);
|
||||
}
|
||||
public void reset() {
|
||||
Globals.getPreferences().edit().putString("dockbar_tabs", "tab_news,tab_superapps,tab_messages,tab_friends,tab_profile").commit();
|
||||
}
|
||||
|
||||
private void fillDefault(){
|
||||
// fill selected tabs list
|
||||
mSelectedTabs.add(DockBarTab.valuesOf(
|
||||
"tab_news",
|
||||
R.drawable.ic_menu_newsfeed_outline_28,
|
||||
R.string.newsfeed,
|
||||
R.id.tab_news,
|
||||
milkshake() ? HomeFragment.class : NewsfeedFragment.class));
|
||||
mSelectedTabs.add(DockBarTab.valuesOf(
|
||||
"tab_superapps",
|
||||
milkshake() ? R.drawable.ic_explore_outline_28 : R.drawable.ic_menu_search_outline_28,
|
||||
R.string.super_app_title,
|
||||
R.id.tab_discover,
|
||||
milkshake() ? (superapp() ? SuperAppFragment.class : SearchMenuFragment.class) : ThemedFeedFragment.class));
|
||||
mSelectedTabs.add(DockBarTab.valuesOf(
|
||||
"tab_messages",
|
||||
R.drawable.ic_message_outline_28,
|
||||
R.string.messages,
|
||||
R.id.tab_messages,
|
||||
DialogsFragment.class));
|
||||
mSelectedTabs.add(DockBarTab.valuesOf(
|
||||
"tab_friends",
|
||||
milkshake() ? R.drawable.ic_users_outline_28 : R.drawable.ic_menu_notification_outline_28,
|
||||
R.string.friends,
|
||||
R.id.tab_feedback,
|
||||
milkshake() ? FriendsCatalogFragment.class : NotificationsContainerFragment.class));
|
||||
mSelectedTabs.add(DockBarTab.valuesOf(
|
||||
"tab_profile",
|
||||
milkshake() ? R.drawable.ic_user_circle_outline_28 : R.drawable.ic_menu_more_outline_28,
|
||||
R.string.profile,
|
||||
R.id.tab_menu,
|
||||
milkshake() ? ProfileFragment.class : MenuFragment.class));
|
||||
|
||||
// fill disabled tabs list
|
||||
mDisabledTabs.add(DockBarTab.valuesOf(
|
||||
"tab_feedback",
|
||||
R.drawable.ic_menu_notification_outline_28,
|
||||
R.string.feedback,
|
||||
R.id.tab_feedback,
|
||||
NotificationsContainerFragment.class));
|
||||
mDisabledTabs.add(DockBarTab.valuesOf(
|
||||
"tab_groups",
|
||||
R.drawable.ic_users_outline_28,
|
||||
R.string.groups,
|
||||
R.id.menu_groups,
|
||||
milkshake() ? CommunitiesCatalogFragment.class : GroupsFragment1.class));
|
||||
mDisabledTabs.add(DockBarTab.valuesOf(
|
||||
"tab_photos",
|
||||
R.drawable.ic_camera_outline_28,
|
||||
R.string.photos,
|
||||
R.id.menu_photos,
|
||||
PhotosFragment.class));
|
||||
mDisabledTabs.add(DockBarTab.valuesOf(
|
||||
"tab_audios",
|
||||
R.drawable.ic_music_outline_28,
|
||||
R.string.music,
|
||||
R.id.menu_audios,
|
||||
getBoolValue("musicnewcatalog", true) ? MusicCatalogFragment1.class : MusicFragment.class));
|
||||
mDisabledTabs.add(DockBarTab.valuesOf(
|
||||
"tab_videos",
|
||||
R.drawable.ic_video_outline_28,
|
||||
R.string.videos,
|
||||
R.id.menu_videos,
|
||||
VideosFragment.class));
|
||||
mDisabledTabs.add(DockBarTab.valuesOf(
|
||||
"tab_lives",
|
||||
R.drawable.ic_live_outline_28,
|
||||
R.string.sett_live,
|
||||
R.id.menu_lives,
|
||||
LivesPostListFragment.class));
|
||||
mDisabledTabs.add(DockBarTab.valuesOf(
|
||||
"tab_games",
|
||||
R.drawable.ic_games_outline_36,
|
||||
R.string.games,
|
||||
R.id.menu_games,
|
||||
GamesFragment.class));
|
||||
mDisabledTabs.add(DockBarTab.valuesOf(
|
||||
"tab_liked",
|
||||
R.drawable.ic_menu_like_24,
|
||||
R.string.sett_likes,
|
||||
R.id.menu_feed_likes,
|
||||
FeedLikesFragment.class));
|
||||
mDisabledTabs.add(DockBarTab.valuesOf(
|
||||
"tab_fave",
|
||||
R.drawable.ic_favorite_outline_28,
|
||||
R.string.video,
|
||||
R.id.menu_fave,
|
||||
FaveTabFragment.class));
|
||||
mDisabledTabs.add(DockBarTab.valuesOf(
|
||||
"tab_documents",
|
||||
R.drawable.ic_document_outline_24,
|
||||
R.string.docs,
|
||||
R.id.menu_documents,
|
||||
DocumentsViewFragment.class));
|
||||
mDisabledTabs.add(DockBarTab.valuesOf(
|
||||
"tab_payments",
|
||||
R.drawable.ic_money_transfer_outline_28,
|
||||
R.string.money_transfer_money_transfers,
|
||||
R.id.menu_payments,
|
||||
MoneyTransfersFragment.class));
|
||||
mDisabledTabs.add(DockBarTab.valuesOf(
|
||||
"tab_vk_apps",
|
||||
R.drawable.ic_services_outline_28,
|
||||
R.string.menu_apps,
|
||||
R.id.menu_vk_apps,
|
||||
AppsFragment.class));
|
||||
mDisabledTabs.add(DockBarTab.valuesOf(
|
||||
"tab_settings",
|
||||
R.drawable.ic_settings_outline_28,
|
||||
R.string.menu_settings,
|
||||
R.id.menu_settings,
|
||||
useNewSettings()));
|
||||
mDisabledTabs.add(DockBarTab.valuesOf(
|
||||
"tab_menu",
|
||||
R.drawable.ic_menu_more_outline_28,
|
||||
R.string.register,
|
||||
R.id.tab_menu,
|
||||
MenuFragment.class));
|
||||
mDisabledTabs.add(DockBarTab.valuesOf(
|
||||
"tab_brtd",
|
||||
R.drawable.ic_menu_birthdays,
|
||||
R.string.birthdays_title,
|
||||
R.id.menu_birthdays,
|
||||
BirthdaysFragment.class));
|
||||
}
|
||||
|
||||
public void save(){
|
||||
try {
|
||||
JSONObject jsonObj = new JSONObject()
|
||||
.put("selected", makeJsonArrayWithTabs(mSelectedTabs))
|
||||
.put("disabled", makeJsonArrayWithTabs(mDisabledTabs));
|
||||
|
||||
StreamUtils.writeToFile(mConfig, jsonObj.toString());
|
||||
} catch (JSONException | IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public void reset(){
|
||||
mConfig.deleteOnExit();
|
||||
}
|
||||
|
||||
private JSONArray makeJsonArrayWithTabs(List<DockBarTab> list) throws JSONException{
|
||||
JSONArray array = new JSONArray();
|
||||
for (DockBarTab tab : list) {
|
||||
JSONObject item = new JSONObject()
|
||||
.put("tag", tab.tag)
|
||||
.put("iconID", tab.iconID)
|
||||
.put("titleID", tab.titleID)
|
||||
.put("id", tab.id)
|
||||
.put("fragmentClass", tab.fragmentClass.getName());
|
||||
array.put(item);
|
||||
}
|
||||
return array;
|
||||
}
|
||||
|
||||
public List<DockBarTab> getSelectedTabs(){
|
||||
public List<DockBarTab> getSelectedTabs() {
|
||||
return mSelectedTabs;
|
||||
}
|
||||
|
||||
public List<DockBarTab> getDisabledTabs(){
|
||||
public List<DockBarTab> getDisabledTabs() {
|
||||
return mDisabledTabs;
|
||||
}
|
||||
|
||||
public List<String> getCategoryTitles(){
|
||||
public String[] getCategoryTitles() {
|
||||
return mCategoryTitles;
|
||||
}
|
||||
|
||||
private DockBarTab getTabByTag(String tag) {
|
||||
switch (tag) {
|
||||
case "tab_news":
|
||||
return DockBarTab.valuesOf(
|
||||
"tab_news",
|
||||
R.drawable.ic_menu_newsfeed_outline_28,
|
||||
R.string.newsfeed,
|
||||
R.id.tab_news,
|
||||
milkshake() ? HomeFragment.class : NewsfeedFragment.class);
|
||||
case "tab_superapps":
|
||||
return DockBarTab.valuesOf(
|
||||
"tab_superapps",
|
||||
milkshake() ? R.drawable.ic_explore_outline_28 : R.drawable.ic_menu_search_outline_28,
|
||||
milkshake() ? R.string.super_app_title : R.string.search,
|
||||
R.id.tab_discover,
|
||||
milkshake() ? (superapp() ? SuperAppFragment.class : SearchMenuFragment.class) : ThemedFeedFragment.class);
|
||||
case "tab_messages":
|
||||
return DockBarTab.valuesOf(
|
||||
"tab_messages",
|
||||
R.drawable.ic_message_outline_28,
|
||||
R.string.messages,
|
||||
R.id.tab_messages,
|
||||
DialogsFragment.class);
|
||||
case "tab_feedback":
|
||||
return DockBarTab.valuesOf(
|
||||
"tab_feedback",
|
||||
!milkshake() ? R.drawable.ic_users_outline_28 : R.drawable.ic_menu_notification_outline_28,
|
||||
!milkshake() ? R.string.friends : R.string.notification,
|
||||
R.id.tab_feedback,
|
||||
!milkshake() ? FriendsFragment.class : NotificationsContainerFragment.class);
|
||||
case "tab_profile":
|
||||
return DockBarTab.valuesOf(
|
||||
"tab_profile",
|
||||
milkshake() ? R.drawable.ic_user_circle_outline_28 : R.drawable.ic_menu_more_outline_28,
|
||||
milkshake() ? R.string.profile : R.string.menu,
|
||||
R.id.tab_menu,
|
||||
milkshake() ? ProfileFragment.class : MenuFragment.class);
|
||||
case "tab_friends":
|
||||
return DockBarTab.valuesOf(
|
||||
"tab_friends",
|
||||
milkshake() ? R.drawable.ic_users_outline_28 : R.drawable.ic_menu_notification_outline_28,
|
||||
milkshake() ? R.string.friends : R.string.notification,
|
||||
R.id.menu_friends,
|
||||
milkshake() ? FriendsCatalogFragment.class : NotificationsContainerFragment.class);
|
||||
case "tab_groups":
|
||||
return DockBarTab.valuesOf(
|
||||
"tab_groups",
|
||||
R.drawable.users_3_outline_28,
|
||||
R.string.groups,
|
||||
R.id.menu_groups,
|
||||
milkshake() ? CommunitiesCatalogFragment.class : GroupsFragment1.class);
|
||||
case "tab_photos":
|
||||
return DockBarTab.valuesOf(
|
||||
"tab_photos",
|
||||
R.drawable.ic_camera_outline_28,
|
||||
R.string.photos,
|
||||
R.id.menu_photos,
|
||||
PhotosFragment.class);
|
||||
case "tab_audios":
|
||||
return DockBarTab.valuesOf(
|
||||
"tab_audios",
|
||||
R.drawable.ic_music_outline_28,
|
||||
R.string.music,
|
||||
R.id.menu_audios,
|
||||
getBoolValue("musicnewcatalog", true) ? MusicCatalogFragment1.class : MusicFragment.class);
|
||||
case "tab_videos":
|
||||
return DockBarTab.valuesOf(
|
||||
"tab_videos",
|
||||
R.drawable.ic_video_outline_28,
|
||||
R.string.videos,
|
||||
R.id.menu_videos,
|
||||
VideosFragment.class);
|
||||
case "tab_lives":
|
||||
return DockBarTab.valuesOf(
|
||||
"tab_lives",
|
||||
R.drawable.ic_live_outline_28,
|
||||
R.string.sett_live,
|
||||
R.id.menu_lives,
|
||||
LivesTabsFragment.class);
|
||||
case "tab_games":
|
||||
return DockBarTab.valuesOf(
|
||||
"tab_games",
|
||||
R.drawable.ic_games_outline_36,
|
||||
R.string.games,
|
||||
R.id.menu_games,
|
||||
GamesFragment.class);
|
||||
case "tab_liked":
|
||||
return DockBarTab.valuesOf(
|
||||
"tab_liked",
|
||||
R.drawable.ic_like_outline_28,
|
||||
R.string.sett_likes,
|
||||
R.id.menu_feed_likes,
|
||||
FeedLikesFragment.class);
|
||||
case "tab_fave":
|
||||
return DockBarTab.valuesOf(
|
||||
"tab_fave",
|
||||
R.drawable.ic_favorite_outline_28,
|
||||
R.string.fave_title,
|
||||
R.id.menu_fave,
|
||||
FaveTabFragment.class);
|
||||
case "tab_documents":
|
||||
return DockBarTab.valuesOf(
|
||||
"tab_documents",
|
||||
R.drawable.ic_document_outline_28,
|
||||
R.string.docs,
|
||||
R.id.menu_documents,
|
||||
DocumentsViewFragment.class);
|
||||
case "tab_payments":
|
||||
return DockBarTab.valuesOf(
|
||||
"tab_payments",
|
||||
R.drawable.ic_money_transfer_outline_28,
|
||||
R.string.money_transfer_money_transfers,
|
||||
R.id.menu_payments,
|
||||
MoneyTransfersFragment.class);
|
||||
case "tab_vk_apps":
|
||||
return DockBarTab.valuesOf(
|
||||
"tab_vk_apps",
|
||||
R.drawable.ic_services_outline_28,
|
||||
R.string.menu_apps,
|
||||
R.id.menu_vk_apps,
|
||||
AppsFragment.class);
|
||||
case "tab_settings":
|
||||
return DockBarTab.valuesOf(
|
||||
"tab_settings",
|
||||
R.drawable.ic_settings_outline_28,
|
||||
R.string.menu_settings,
|
||||
R.id.menu_settings,
|
||||
useNewSettings());
|
||||
case "tab_menu":
|
||||
return DockBarTab.valuesOf(
|
||||
"tab_menu",
|
||||
milkshake() ? R.drawable.ic_user_circle_outline_28 : R.drawable.ic_menu_more_outline_28,
|
||||
milkshake() ? R.string.profile : R.string.menu,
|
||||
R.id.tab_menu,
|
||||
milkshake() ? ProfileFragment.class : MenuFragment.class);
|
||||
case "tab_brtd":
|
||||
return DockBarTab.valuesOf(
|
||||
"tab_brtd",
|
||||
R.drawable.ic_menu_birthdays,
|
||||
R.string.birthdays_title,
|
||||
R.id.menu_birthdays,
|
||||
BirthdaysFragment.class);
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,15 +2,17 @@ package ru.vtosters.lite.ui.fragments.tgstickers;
|
||||
|
||||
import static android.widget.Toast.LENGTH_SHORT;
|
||||
import static android.widget.Toast.makeText;
|
||||
import static ru.vtosters.lite.tgs.TGPref.setTGBotKey;
|
||||
import static ru.vtosters.lite.utils.Globals.convertDpToPixel;
|
||||
import static ru.vtosters.lite.utils.Globals.getIdentifier;
|
||||
import static ru.vtosters.lite.utils.Themes.getAccentColor;
|
||||
import static ru.vtosters.lite.utils.Themes.getAlertStyle;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.AlertDialog;
|
||||
import android.app.ProgressDialog;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.res.ColorStateList;
|
||||
@@ -18,6 +20,7 @@ import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.view.Gravity;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
@@ -27,7 +30,6 @@ import android.widget.LinearLayout;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import androidx.recyclerview.widget.StaggeredGridLayoutManager;
|
||||
@@ -36,16 +38,15 @@ import com.aefyr.tsg.g2.TelegramStickersService;
|
||||
import com.aefyr.tsg.g2.stickersgrabber.TelegramStickersGrabber;
|
||||
import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
||||
import com.vk.navigation.Navigator;
|
||||
import com.vtosters.lite.R;
|
||||
import com.vtosters.lite.general.fragments.MaterialPreferenceToolbarFragment;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import ru.vtosters.lite.tgs.TGPref;
|
||||
import ru.vtosters.lite.ui.PreferencesUtil;
|
||||
import ru.vtosters.lite.ui.fragments.BaseToolbarFragment;
|
||||
import ru.vtosters.lite.utils.Globals;
|
||||
|
||||
public class StickersFragment extends MaterialPreferenceToolbarFragment{
|
||||
public class StickersFragment extends BaseToolbarFragment{
|
||||
|
||||
public final static String ACTION_RELOAD = "com.vtosters.lite.action.RELOAD_TGS_LIST";
|
||||
|
||||
@@ -80,6 +81,15 @@ public class StickersFragment extends MaterialPreferenceToolbarFragment{
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
protected void onCreateMenu(Menu menu){
|
||||
var item = menu.add(0, 0, 0, "");
|
||||
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
|
||||
item.setIcon(getResources().getDrawable(getIdentifier("ic_settings_24", "drawable")));
|
||||
|
||||
super.onCreateMenu(menu);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem arg0){
|
||||
openMenu(null);
|
||||
@@ -95,7 +105,6 @@ public class StickersFragment extends MaterialPreferenceToolbarFragment{
|
||||
super.getContext().startActivity(intent);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onCreate(@Nullable Bundle savedInstanceState){
|
||||
super.onCreate(savedInstanceState);
|
||||
@@ -106,23 +115,10 @@ public class StickersFragment extends MaterialPreferenceToolbarFragment{
|
||||
}
|
||||
|
||||
@Override
|
||||
public int T4(){
|
||||
return getIdentifier("vtltgs", "string");
|
||||
}
|
||||
public View onCreateContent(@NonNull LayoutInflater inflater, @Nullable Bundle bundle){
|
||||
setTitle(getIdentifier("vtltgs", "string"));
|
||||
|
||||
@SuppressLint("RestrictedApi")
|
||||
@SuppressWarnings("rawtypes")
|
||||
@NonNull
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState){
|
||||
View root = super.onCreateView(inflater, container, savedInstanceState);
|
||||
|
||||
FrameLayout layout = root.findViewById(R.id.appkit_content);
|
||||
|
||||
Toolbar toolbar = root.findViewById(R.id.toolbar);
|
||||
var item = toolbar.getMenu().add(0, 0, 0, "");
|
||||
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
|
||||
item.setIcon(getResources().getDrawable(getIdentifier("ic_settings_24", "drawable")));
|
||||
FrameLayout layout = new FrameLayout(getContext());
|
||||
|
||||
mAdapter = new StickerPackAdapter();
|
||||
mRecycler = new RecyclerView(getContext());
|
||||
@@ -140,12 +136,12 @@ public class StickersFragment extends MaterialPreferenceToolbarFragment{
|
||||
params.setMargins(0, 0, 0, convertDpToPixel(12f));
|
||||
layout.addView(mAddStickerPack, params);
|
||||
|
||||
return root;
|
||||
return layout;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onViewCreated(View arg0, Bundle arg1){
|
||||
setHasOptionsMenu(true);
|
||||
super.onViewCreated(arg0, arg1);
|
||||
}
|
||||
|
||||
@@ -173,27 +169,30 @@ public class StickersFragment extends MaterialPreferenceToolbarFragment{
|
||||
|
||||
final EditText editText = new EditText(getContext());
|
||||
editText.setHintTextColor(PreferencesUtil.getSTextColor(getContext()));
|
||||
editText.setBackgroundTintList(ColorStateList.valueOf(getAccentColor()));
|
||||
|
||||
// Костыль для китката
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
editText.setBackgroundTintList(ColorStateList.valueOf(PreferencesUtil.getTextColor(getContext())));
|
||||
} else {
|
||||
ViewCompat.setBackgroundTintList(editText, ColorStateList.valueOf(PreferencesUtil.getTextColor(getContext())));
|
||||
}
|
||||
linearLayout.addView(editText);
|
||||
editText.getLayoutParams().width = ViewGroup.LayoutParams.MATCH_PARENT;
|
||||
ViewGroup.MarginLayoutParams margin = ((ViewGroup.MarginLayoutParams) editText.getLayoutParams());
|
||||
margin.setMargins(convertDpToPixel(24f), 0, convertDpToPixel(24f), 0);
|
||||
editText.setLayoutParams(margin);
|
||||
|
||||
new AlertDialog.Builder(getContext()).setTitle(Globals.getString("stickershelp1"))
|
||||
.setMessage(Globals.getString("stickershelp2"))
|
||||
.setView(linearLayout)
|
||||
.setPositiveButton(android.R.string.ok, (dialog, which) -> {
|
||||
String pack = editText.getText().toString();
|
||||
pack = parsePack(pack);
|
||||
mService.requestPackDownload(pack, new File(getContext().getFilesDir(), new File("VT-Stickers", pack).getAbsolutePath()));
|
||||
}).setNeutralButton(android.R.string.cancel, null).create().show();
|
||||
var dlg = new AlertDialog.Builder(getContext(), getAlertStyle());
|
||||
dlg.setTitle(Globals.getString("stickershelp1"));
|
||||
dlg.setMessage(Globals.getString("stickershelp2"));
|
||||
dlg.setView(linearLayout);
|
||||
dlg.setPositiveButton(android.R.string.ok, (dialog, which) -> {
|
||||
String pack = editText.getText().toString();
|
||||
pack = parsePack(pack);
|
||||
mService.requestPackDownload(pack, new File(getContext().getFilesDir(), new File("VT-Stickers", pack).getAbsolutePath()));
|
||||
});
|
||||
dlg.setNeutralButton(android.R.string.cancel, null);
|
||||
var alert = dlg.create();
|
||||
|
||||
alert.show();
|
||||
|
||||
alert.getButton(DialogInterface.BUTTON_POSITIVE).setTextColor(getAccentColor());
|
||||
alert.getButton(DialogInterface.BUTTON_NEUTRAL).setTextColor(getAccentColor());
|
||||
};
|
||||
if (TGPref.getTGBotKey() == null) enterBotKey(() -> checkApiKey(callback));
|
||||
else checkApiKey(callback);
|
||||
@@ -226,8 +225,7 @@ public class StickersFragment extends MaterialPreferenceToolbarFragment{
|
||||
|
||||
final EditText editText = new EditText(getContext());
|
||||
editText.setHintTextColor(PreferencesUtil.getSTextColor(getContext()));
|
||||
|
||||
ViewCompat.setBackgroundTintList(editText, ColorStateList.valueOf(PreferencesUtil.getTextColor(getContext())));
|
||||
editText.setBackgroundTintList(ColorStateList.valueOf(getAccentColor()));
|
||||
|
||||
linearLayout.addView(editText);
|
||||
editText.getLayoutParams().width = ViewGroup.LayoutParams.MATCH_PARENT;
|
||||
@@ -241,19 +239,24 @@ public class StickersFragment extends MaterialPreferenceToolbarFragment{
|
||||
Globals.getString("stickersapi10")).setPositiveButton(android.R.string.ok, null)
|
||||
.create();
|
||||
|
||||
new AlertDialog.Builder(getContext())
|
||||
.setTitle(Globals.getString("stickersapi5"))
|
||||
.setMessage(Globals.getString("stickersapi6"))
|
||||
.setView(linearLayout)
|
||||
.setPositiveButton(android.R.string.ok, (dialog, which) -> {
|
||||
TGPref.setTGBotKey(editText.getText().toString());
|
||||
if (r != null) r.run();
|
||||
})
|
||||
.setNegativeButton(android.R.string.cancel, null)
|
||||
var dlg = new AlertDialog.Builder(getContext());
|
||||
dlg.setTitle(Globals.getString("stickersapi5"));
|
||||
dlg.setMessage(Globals.getString("stickersapi6"));
|
||||
dlg.setView(linearLayout);
|
||||
dlg.setPositiveButton(android.R.string.ok, (dialog, which) -> {
|
||||
setTGBotKey(editText.getText().toString());
|
||||
if (r != null) r.run();
|
||||
});
|
||||
dlg.setNegativeButton(android.R.string.cancel, null)
|
||||
.setNeutralButton(Globals.getString("stickersapi7"),
|
||||
(dialog, which) -> alert.show())
|
||||
.create()
|
||||
.show();
|
||||
(dialog, which) -> alert.show());
|
||||
var alerts = dlg.create();
|
||||
|
||||
alerts.show();
|
||||
|
||||
alerts.getButton(DialogInterface.BUTTON_POSITIVE).setTextColor(getAccentColor());
|
||||
alerts.getButton(DialogInterface.BUTTON_NEUTRAL).setTextColor(getAccentColor());
|
||||
alerts.getButton(DialogInterface.BUTTON_NEGATIVE).setTextColor(getAccentColor());
|
||||
}
|
||||
|
||||
private void checkApiKey(Runnable callback){
|
||||
@@ -272,6 +275,7 @@ public class StickersFragment extends MaterialPreferenceToolbarFragment{
|
||||
progressDialog.dismiss();
|
||||
if (!ok) {
|
||||
makeText(context, Globals.getString("stickersapi2"), LENGTH_SHORT).show();
|
||||
setTGBotKey(null);
|
||||
return;
|
||||
}
|
||||
mService.setBotKey(TGPref.getTGBotKey());
|
||||
@@ -300,5 +304,4 @@ public class StickersFragment extends MaterialPreferenceToolbarFragment{
|
||||
}
|
||||
return pack;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,10 +1,10 @@
|
||||
package ru.vtosters.lite.utils;
|
||||
|
||||
import static ru.vtosters.lite.utils.Globals.getContext;
|
||||
import static ru.vtosters.lite.utils.Globals.getCurrentActivity;
|
||||
import static ru.vtosters.lite.utils.Globals.isEmpty;
|
||||
import static ru.vtosters.lite.utils.Preferences.isEnableExternalOpening;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
@@ -34,6 +34,14 @@ public class ExternalLinkHandler{
|
||||
return parseVideoFile(file, getContext(), isEnableExternalOpening());
|
||||
}
|
||||
|
||||
public static boolean parseVideoFile(VideoFile file, Context context) {
|
||||
return parseVideoFile(file, context, isEnableExternalOpening());
|
||||
}
|
||||
|
||||
public static boolean parseVideoFile(VideoFile file, Activity activity) {
|
||||
return parseVideoFile(file, activity, isEnableExternalOpening());
|
||||
}
|
||||
|
||||
public static boolean parseVideoFile(VideoFile file, Context context, Boolean isEnabled) {
|
||||
if (checkYoutubeLink(file)) {
|
||||
try {
|
||||
@@ -47,7 +55,7 @@ public class ExternalLinkHandler{
|
||||
}
|
||||
}
|
||||
|
||||
if (!isEnabled) return false;
|
||||
if (!isEnabled || file.isEmpty()) return false;
|
||||
|
||||
if (checkVkVideo(file)) {
|
||||
if (qualities.size() == 1) {
|
||||
|
||||
@@ -31,16 +31,6 @@ public class FragAnimationKit{
|
||||
private static final int SSTactCloseEnter = resources.getIdentifier("task_close_enter", "anim", "android");
|
||||
private static final int SSTactCloseExit = resources.getIdentifier("task_close_exit", "anim", "android");
|
||||
|
||||
public static boolean animateOpen(FragmentTransaction transaction){
|
||||
setAnimations(transaction);
|
||||
|
||||
return getPrefsValue("anim_rtrn_type").equals("noanim") || getPrefsValue("anim_rtrn_type").isEmpty();
|
||||
}
|
||||
|
||||
public static void animateClose(FragmentTransaction transaction){
|
||||
setAnimations(transaction);
|
||||
}
|
||||
|
||||
public static void setAnimations(FragmentTransaction transaction){
|
||||
if (transaction != null && !getPrefsValue("anim_rtrn_type").equals("noanim")) {
|
||||
switch(getPrefsValue("anim_rtrn_type")) {
|
||||
|
||||
@@ -4,14 +4,13 @@ import static android.graphics.Bitmap.Config;
|
||||
import static android.graphics.Bitmap.createBitmap;
|
||||
import static android.graphics.Bitmap.createScaledBitmap;
|
||||
import static androidx.core.content.ContextCompat.getDrawable;
|
||||
import static ru.vtosters.lite.hooks.DateHook.getLocale;
|
||||
import static ru.vtosters.lite.utils.CacheUtils.getInstance;
|
||||
import static ru.vtosters.lite.utils.LocaleUtils.getLocale;
|
||||
import static ru.vtosters.lite.utils.Preferences.checkupdates;
|
||||
import static ru.vtosters.lite.utils.Preferences.preferences;
|
||||
import static ru.vtosters.lite.utils.ServerDialog.sendRequest;
|
||||
import static ru.vtosters.lite.utils.Themes.isDarkTheme;
|
||||
import static ru.vtosters.lite.utils.Themes.setNeededTheme;
|
||||
import static ru.vtosters.lite.utils.VKUIInjector.isLoaded;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.Application;
|
||||
@@ -30,8 +29,6 @@ import android.graphics.RectF;
|
||||
import android.graphics.drawable.BitmapDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.net.NetworkCapabilities;
|
||||
import android.net.NetworkInfo;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
@@ -39,13 +36,11 @@ import android.os.StrictMode;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.util.Log;
|
||||
import android.webkit.WebView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.StringRes;
|
||||
|
||||
import com.vk.articles.preload.WebCachePreloader;
|
||||
import com.vk.dto.user.UserProfile;
|
||||
import com.vk.im.ui.providers.audiomsg.ImAudioMsgPlayerProvider;
|
||||
import com.vk.im.ui.providers.audiomsg.PlayerActionSources;
|
||||
@@ -53,7 +48,6 @@ import com.vk.navigation.Navigator;
|
||||
import com.vtosters.lite.VKActivity;
|
||||
import com.vtosters.lite.api.ExtendedUserProfile;
|
||||
import com.vtosters.lite.auth.VKAccountManager;
|
||||
import com.vtosters.lite.data.ThemeTracker;
|
||||
import com.vtosters.lite.im.ImEngineProvider;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
@@ -69,6 +63,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
import ru.vtosters.lite.downloaders.notifications.NotificationChannels;
|
||||
import ru.vtosters.lite.ui.dialogs.DisableBattery;
|
||||
import ru.vtosters.lite.ui.dialogs.InstallGMS;
|
||||
import ru.vtosters.lite.ui.dialogs.OTADialog;
|
||||
@@ -95,6 +90,9 @@ public class Globals{
|
||||
DisableBattery.alert(activity);
|
||||
edit().putBoolean("isdark", isDarkTheme()).commit();
|
||||
getInstance().autoCleaningCache();
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
NotificationChannels.createChannels();
|
||||
}
|
||||
// VKIDProtection.alert(activity);
|
||||
}
|
||||
|
||||
@@ -333,13 +331,6 @@ public class Globals{
|
||||
return getContext().getPackageName();
|
||||
}
|
||||
|
||||
public static void clearWebCache(){
|
||||
ThemeTracker.a();
|
||||
isLoaded = false;
|
||||
new WebView(getContext()).clearCache(true);
|
||||
WebCachePreloader.e();
|
||||
}
|
||||
|
||||
public static int convertDpToPixel(float f){
|
||||
return (int) (f * ((float) getResources().getDisplayMetrics().densityDpi / 160.0f));
|
||||
}
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
package ru.vtosters.lite.utils;
|
||||
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.RelativeLayout;
|
||||
|
||||
public class LayoutHelper {
|
||||
|
||||
public static int MATCH_PARENT = -1;
|
||||
public static int FILL_PARENT = -1;
|
||||
public static int WRAP_CONTENT = -2;
|
||||
|
||||
public static LinearLayout.LayoutParams createLinear(int w, int h) {
|
||||
return new LinearLayout.LayoutParams(w, h);
|
||||
}
|
||||
|
||||
public static RelativeLayout.LayoutParams createRelative(int w, int h) {
|
||||
return new RelativeLayout.LayoutParams(w, h);
|
||||
}
|
||||
|
||||
public static FrameLayout.LayoutParams createFrame(int w, int h) {
|
||||
return new FrameLayout.LayoutParams(w, h);
|
||||
}
|
||||
}
|
||||
@@ -1,50 +1,17 @@
|
||||
package ru.vtosters.lite.utils;
|
||||
|
||||
import static java.lang.Long.MAX_VALUE;
|
||||
import static ru.vtosters.lite.ui.fragments.dockbar.DockBarManager.getInstance;
|
||||
import static ru.vtosters.lite.utils.Globals.getContext;
|
||||
import static ru.vtosters.lite.utils.Globals.getPrefsValue;
|
||||
import static ru.vtosters.lite.utils.Preferences.adsgroup;
|
||||
import static ru.vtosters.lite.utils.Preferences.adsstories;
|
||||
import static ru.vtosters.lite.utils.Preferences.authorsrecomm;
|
||||
import static ru.vtosters.lite.utils.Preferences.copyright_post;
|
||||
import static ru.vtosters.lite.utils.Preferences.dev;
|
||||
import static ru.vtosters.lite.utils.Preferences.friendsrecomm;
|
||||
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
|
||||
import static ru.vtosters.lite.utils.Preferences.milkshake;
|
||||
import static ru.vtosters.lite.utils.Preferences.postsrecomm;
|
||||
import static ru.vtosters.lite.utils.Preferences.superapp;
|
||||
import static ru.vtosters.lite.utils.Preferences.useNewSettings;
|
||||
import static ru.vtosters.lite.utils.Preferences.vkme;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
import com.vk.apps.AppsFragment;
|
||||
import com.vk.core.preference.Preference;
|
||||
import com.vk.discover.ThemedFeedFragment;
|
||||
import com.vk.fave.fragments.FaveTabFragment;
|
||||
import com.vk.menu.MenuFragment;
|
||||
import com.vk.menu.SearchMenuFragment;
|
||||
import com.vk.music.fragment.MusicCatalogFragment1;
|
||||
import com.vk.music.fragment.MusicFragment;
|
||||
import com.vk.newsfeed.HomeFragment;
|
||||
import com.vk.newsfeed.NewsfeedFragment;
|
||||
import com.vk.notifications.NotificationsContainerFragment;
|
||||
import com.vk.profile.catalog.CommunitiesCatalogFragment;
|
||||
import com.vk.search.fragment.GroupsSearchFragment;
|
||||
import com.vk.superapp.SuperAppFragment;
|
||||
import com.vtosters.lite.fragments.ProfileFragment;
|
||||
import com.vtosters.lite.fragments.friends.FriendsFragment;
|
||||
import com.vtosters.lite.fragments.gifts.BirthdaysFragment;
|
||||
import com.vtosters.lite.fragments.lives.LivesTabsFragment;
|
||||
import com.vtosters.lite.fragments.money.MoneyTransfersFragment;
|
||||
import com.vtosters.lite.fragments.p2.DocumentsViewFragment;
|
||||
import com.vtosters.lite.fragments.s2.GroupsFragment1;
|
||||
import com.vtosters.lite.fragments.t2.c.DialogsFragment;
|
||||
import com.vtosters.lite.fragments.y2.VideosFragment;
|
||||
import com.vtosters.lite.general.fragments.GamesFragment;
|
||||
import com.vtosters.lite.general.fragments.PhotosFragment;
|
||||
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
@@ -100,31 +67,6 @@ public class Newsfeed{
|
||||
}
|
||||
} // Get needed filter list from assets
|
||||
|
||||
public static boolean injectFilters(JSONObject obj) throws JSONException{
|
||||
var optString = obj.optString("type", "");
|
||||
if (isAds(optString) || isAuthorRecommendations(optString) || isPostRecommendations(optString) || isFriendsRecommendations(optString) || isRecomsGroup(optString) || isMusicBlock(optString) || isNewsBlock(optString)) {
|
||||
return false;
|
||||
}
|
||||
optString = obj.optString("post_type", "");
|
||||
if (isAds(optString) || isAuthorRecommendations(optString) || isPostRecommendations(optString) || isFriendsRecommendations(optString) || isMusicBlock(optString) || isNewsBlock(optString)) {
|
||||
return false;
|
||||
}
|
||||
optString = obj.optString("filters", "");
|
||||
if (isAds(optString) || isAuthorRecommendations(optString) || isPostRecommendations(optString) || isFriendsRecommendations(optString)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (checkCopyright(obj)) return false;
|
||||
|
||||
if (isBadNew(obj.optString("text", ""))) return false;
|
||||
|
||||
if (checkCaption(obj)) return false;
|
||||
|
||||
if (isGroupAds(obj)) return false;
|
||||
|
||||
return !injectFiltersReposts(obj);
|
||||
} // inject our filters to newsfeed, getpost and discover
|
||||
|
||||
public static boolean injectFiltersReposts(JSONObject obj){
|
||||
if (obj.optJSONArray("copy_history") == null) return false;
|
||||
|
||||
@@ -143,7 +85,7 @@ public class Newsfeed{
|
||||
return isBadNew(Array);
|
||||
} // get repost information and inject our text filters
|
||||
|
||||
private static boolean checkCopyright(JSONObject json) throws JSONException{
|
||||
public static boolean checkCopyright(JSONObject json) throws JSONException{
|
||||
if (json.opt("copyright") != null) {
|
||||
var copyright = json.getJSONObject("copyright");
|
||||
var copyrightlink = copyright.getString("link");
|
||||
@@ -158,15 +100,15 @@ public class Newsfeed{
|
||||
return false;
|
||||
}
|
||||
|
||||
private static boolean isRecomsGroup(String src){
|
||||
public static boolean isRecomsGroup(String src){
|
||||
return src.equals("recommended_groups") && authorsrecomm();
|
||||
}
|
||||
|
||||
private static boolean isMusicBlock(String src){
|
||||
public static boolean isMusicBlock(String src){
|
||||
return (src.equals("recommended_audios") || src.equals("recommended_artists") || src.equals("recommended_playlists")) && authorsrecomm();
|
||||
}
|
||||
|
||||
private static boolean isNewsBlock(String src){
|
||||
public static boolean isNewsBlock(String src){
|
||||
return (src.equals("tags_suggestions")) && Preferences.ads();
|
||||
}
|
||||
|
||||
@@ -227,70 +169,4 @@ public class Newsfeed{
|
||||
public static boolean isGroupAds(JSONObject obj){
|
||||
return (obj.optInt("marked_as_ads", 0) == 1) && adsgroup();
|
||||
}
|
||||
|
||||
public static String storyads(){
|
||||
return adsstories() ? "null" : "ads";
|
||||
}
|
||||
|
||||
public static long getUpdateNewsfeed(boolean refresh_timeout){
|
||||
if (vkme()) {
|
||||
return MAX_VALUE;
|
||||
}
|
||||
switch(getPrefsValue("newsupdate")) {
|
||||
case "no_update":
|
||||
return MAX_VALUE;
|
||||
case "imd_update":
|
||||
return 10000L;
|
||||
default:
|
||||
return Preference.b().getLong(refresh_timeout ? "refresh_timeout_top" : "refresh_timeout_recent", 600000L);
|
||||
}
|
||||
}
|
||||
|
||||
public static Class getStartFragment(){
|
||||
if (vkme()) {
|
||||
return DialogsFragment.class;
|
||||
}
|
||||
switch(getPrefsValue("start_values")) {
|
||||
case "newsfeed":
|
||||
return milkshake() ? HomeFragment.class : NewsfeedFragment.class;
|
||||
case "messenger":
|
||||
return DialogsFragment.class;
|
||||
case "groups":
|
||||
return milkshake() ? CommunitiesCatalogFragment.class : GroupsFragment1.class;
|
||||
case "music":
|
||||
return getBoolValue("musicnewcatalog", true) ? MusicCatalogFragment1.class : MusicFragment.class;
|
||||
case "friends":
|
||||
return FriendsFragment.class;
|
||||
case "photos":
|
||||
return PhotosFragment.class;
|
||||
case "videos":
|
||||
return VideosFragment.class;
|
||||
case "settings":
|
||||
return useNewSettings();
|
||||
case "apps":
|
||||
return AppsFragment.class;
|
||||
case "discover":
|
||||
return ThemedFeedFragment.class;
|
||||
case "notifications":
|
||||
return NotificationsContainerFragment.class;
|
||||
case "money":
|
||||
return MoneyTransfersFragment.class;
|
||||
case "games":
|
||||
return GamesFragment.class;
|
||||
case "liked":
|
||||
return FaveTabFragment.class;
|
||||
case "menu":
|
||||
return milkshake() ? (superapp() ? SuperAppFragment.class : SearchMenuFragment.class) : MenuFragment.class;
|
||||
case "profile":
|
||||
return ProfileFragment.class;
|
||||
case "lives":
|
||||
return LivesTabsFragment.class;
|
||||
case "docs":
|
||||
return DocumentsViewFragment.class;
|
||||
case "brtd":
|
||||
return BirthdaysFragment.class;
|
||||
default:
|
||||
return getInstance().getSelectedTabs().get(0).fragmentClass;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,61 +0,0 @@
|
||||
package ru.vtosters.lite.utils;
|
||||
|
||||
import static ru.vtosters.lite.utils.Preferences.dev;
|
||||
import static ru.vtosters.lite.utils.Preferences.opusmodule;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
import com.vk.medianative.MediaNative;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
public class OpusLoader{
|
||||
private static long timetracker;
|
||||
private static boolean inited;
|
||||
|
||||
public static void LoadLibrary(String libname){
|
||||
try {
|
||||
System.loadLibrary(libname);
|
||||
inited = true;
|
||||
} catch (UnsatisfiedLinkError unused2) {
|
||||
if (dev()) Log.d("VTLite", "Failed to load " + libname);
|
||||
inited = false;
|
||||
}
|
||||
}
|
||||
|
||||
public static long getLength(){
|
||||
if (isReadyToUse()) {
|
||||
long length = System.currentTimeMillis() - timetracker;
|
||||
timetracker = System.currentTimeMillis();
|
||||
return length;
|
||||
}
|
||||
return 0L;
|
||||
}
|
||||
|
||||
public static int AudioStartRecordBridge(String str){
|
||||
if (isReadyToUse()) {
|
||||
// Init custom AudioStartRecord
|
||||
timetracker = System.currentTimeMillis();
|
||||
return 1;
|
||||
}
|
||||
return MediaNative.audioStartRecord(str);
|
||||
}
|
||||
|
||||
public static int AudioWriteFrameBridge(ByteBuffer buffer, int length){
|
||||
if (isReadyToUse()) {
|
||||
// Init custom AudioWriteFrame
|
||||
}
|
||||
return MediaNative.audioWriteFrame(buffer, length);
|
||||
}
|
||||
|
||||
public static void AudioStopRecordBridge(){
|
||||
if (isReadyToUse()) {
|
||||
// Init custom AudioStopRecord
|
||||
}
|
||||
MediaNative.audioStopRecord();
|
||||
}
|
||||
|
||||
private static boolean isReadyToUse(){
|
||||
return opusmodule() && inited;
|
||||
}
|
||||
}
|
||||
@@ -174,10 +174,6 @@ public class Preferences{
|
||||
return getBoolValue("dnr", true);
|
||||
}
|
||||
|
||||
public static boolean dns(){
|
||||
return getBoolValue("dns", false);
|
||||
}
|
||||
|
||||
public static boolean dnt(){
|
||||
return getBoolValue("dnt", true);
|
||||
}
|
||||
@@ -194,6 +190,14 @@ public class Preferences{
|
||||
return getBoolValue("superapp", true);
|
||||
}
|
||||
|
||||
public static boolean miniapps(){
|
||||
return getBoolValue("miniapps", true);
|
||||
}
|
||||
|
||||
public static boolean friendsblock(){
|
||||
return getBoolValue("friendsblock", false);
|
||||
}
|
||||
|
||||
public static boolean milkshake(){
|
||||
return getBoolValue("milkshake", false);
|
||||
}
|
||||
@@ -247,7 +251,7 @@ public class Preferences{
|
||||
}
|
||||
|
||||
public static boolean setoffline(){
|
||||
return getBoolValue("setoffline", true);
|
||||
return getBoolValue("setoffline", false);
|
||||
}
|
||||
|
||||
public static boolean shortinfo(){
|
||||
|
||||
@@ -4,42 +4,7 @@ import static java.lang.System.clearProperty;
|
||||
import static java.lang.System.getProperties;
|
||||
import static ru.vtosters.lite.utils.Globals.getPrefsValue;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
public class Proxy{
|
||||
public static String linkReplacer(String link){
|
||||
var vkapi = "api.vk.com";
|
||||
var oauth = "oauth.vk.com";
|
||||
var vkstatic = "static.vk.com";
|
||||
|
||||
var proxyapi = getPrefsValue("proxyapi");
|
||||
var proxyoauth = getPrefsValue("proxyoauth");
|
||||
var proxystatic = getPrefsValue("proxystatic");
|
||||
|
||||
if (!apiproxy() || link.isEmpty()) {
|
||||
return link;
|
||||
}
|
||||
|
||||
if (proxyapi.isEmpty() || proxyoauth.isEmpty() || proxystatic.isEmpty()) {
|
||||
Log.d("VTLite", "Proxy is not set" + " " + proxyapi + " " + proxyoauth + " " + proxystatic);
|
||||
return link;
|
||||
}
|
||||
|
||||
if (link.contains(vkapi)) {
|
||||
return link.replace(proxyapi, vkapi);
|
||||
}
|
||||
|
||||
if (link.contains(oauth)) {
|
||||
return link.replace(proxyoauth, oauth);
|
||||
}
|
||||
|
||||
if (link.contains(vkstatic)) {
|
||||
return link.replace(proxystatic, vkstatic);
|
||||
}
|
||||
|
||||
return link;
|
||||
}
|
||||
|
||||
public static String getApi(){
|
||||
var proxyapi = getPrefsValue("proxyapi");
|
||||
|
||||
@@ -50,16 +15,6 @@ public class Proxy{
|
||||
return "api.vk.com";
|
||||
}
|
||||
|
||||
public static String getAwayPhpCom(){
|
||||
var proxyapi = getPrefsValue("proxyapi");
|
||||
|
||||
if (apiproxy() & !proxyapi.isEmpty()) {
|
||||
return proxyapi;
|
||||
}
|
||||
|
||||
return "m.vk.com";
|
||||
}
|
||||
|
||||
public static Boolean isZaboronaEnabled(){
|
||||
return getPrefsValue("proxy").equals("zaborona");
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package ru.vtosters.lite.utils;
|
||||
|
||||
import static ru.vtosters.lite.hooks.DateHook.getLocale;
|
||||
import static ru.vtosters.lite.utils.About.getBuildNumber;
|
||||
import static ru.vtosters.lite.utils.Globals.getPrefsValue;
|
||||
import static ru.vtosters.lite.utils.Globals.getUserSecret;
|
||||
import static ru.vtosters.lite.utils.Globals.getUserToken;
|
||||
import static ru.vtosters.lite.utils.LocaleUtils.getLocale;
|
||||
import static ru.vtosters.lite.utils.Preferences.dev;
|
||||
import static ru.vtosters.lite.utils.Preferences.vksans;
|
||||
import static ru.vtosters.lite.utils.Proxy.apiproxy;
|
||||
|
||||
@@ -16,7 +16,6 @@ import java.io.File;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.HashSet;
|
||||
import java.util.Locale;
|
||||
@@ -61,11 +60,10 @@ public class SettBackup{
|
||||
}
|
||||
|
||||
public static void backupSettings(){
|
||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd:HH-mm-ss", Locale.getDefault());
|
||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd.HH-mm-ss", Locale.getDefault());
|
||||
var file = new File(sBackupDir,
|
||||
"Backup_" + dateFormat.format(new Date()) + ".xml");
|
||||
try {
|
||||
file.delete();
|
||||
sBackupDir.mkdirs();
|
||||
FileWriter out = new FileWriter(file);
|
||||
out.write(getPrefContent("com.vtosters.lite_preferences.xml"));
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package ru.vtosters.lite.utils;
|
||||
|
||||
import static android.view.View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR;
|
||||
import static ru.vtosters.lite.hooks.VKUIHook.isLoaded;
|
||||
import static ru.vtosters.lite.ui.wallpapers.WallpapersHooks.getWallpaper;
|
||||
import static ru.vtosters.lite.utils.Globals.edit;
|
||||
import static ru.vtosters.lite.utils.Globals.getCenterScreenCoords;
|
||||
@@ -8,14 +9,11 @@ import static ru.vtosters.lite.utils.Globals.getCurrentActivity;
|
||||
import static ru.vtosters.lite.utils.Globals.getIdentifier;
|
||||
import static ru.vtosters.lite.utils.Globals.getPrefsValue;
|
||||
import static ru.vtosters.lite.utils.Globals.getResources;
|
||||
import static ru.vtosters.lite.utils.Globals.sendToast;
|
||||
import static ru.vtosters.lite.utils.Preferences.color_grishka;
|
||||
import static ru.vtosters.lite.utils.Preferences.milkshake;
|
||||
import static ru.vtosters.lite.utils.Preferences.navbar;
|
||||
import static ru.vtosters.lite.utils.Preferences.systemtheme;
|
||||
import static ru.vtosters.lite.utils.Preferences.vkme;
|
||||
import static ru.vtosters.lite.utils.ReflectionUtils.getField;
|
||||
import static ru.vtosters.lite.utils.VKUIInjector.isLoaded;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
@@ -42,14 +40,8 @@ import com.vk.core.ui.themes.VKThemeHelper;
|
||||
import com.vtosters.lite.R;
|
||||
import com.vtosters.lite.data.ThemeTracker;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.Arrays;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
|
||||
import kotlin.u.KProperty5;
|
||||
|
||||
public class Themes{
|
||||
public static List<String> accentColors = Arrays.asList(
|
||||
|
||||
@@ -8,4 +8,5 @@ appcent
|
||||
bitmain
|
||||
cents-apps
|
||||
cent-app
|
||||
centapp
|
||||
centapp
|
||||
/?a=
|
||||
@@ -88,4 +88,6 @@ cкорее подписывайся
|
||||
Подписывайся скорее
|
||||
Подписывайся cкорее
|
||||
Промокоды сливают сами сотрудники заведений
|
||||
Промокоды сливают сотрудники
|
||||
Промокоды сливают сотрудники
|
||||
напиши Нашему боту
|
||||
пиши Нашему боту
|
||||
@@ -0,0 +1,18 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
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"/>
|
||||
</vector>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 3.1 KiB |
@@ -0,0 +1,12 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
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"/>
|
||||
</vector>
|
||||
@@ -40,4 +40,16 @@
|
||||
android:id="@id/report"
|
||||
android:showAsAction="never"
|
||||
android:title="@string/report_content" />
|
||||
<item
|
||||
android:id="@id/search_photo"
|
||||
android:showAsAction="never"
|
||||
android:title="@string/search_photo_content" />
|
||||
<item
|
||||
android:id="@id/copy_photo_url"
|
||||
android:showAsAction="never"
|
||||
android:title="@string/copy_photo_url_content" />
|
||||
<item
|
||||
android:id="@id/open_original_photo"
|
||||
android:showAsAction="never"
|
||||
android:title="@string/open_original_photo_content" />
|
||||
</menu>
|
||||
@@ -2645,6 +2645,10 @@
|
||||
<string name="photo_upload_ok_multiple">Фотографии загружены</string>
|
||||
<string name="photo_upload_ok_multiple_long">Фотографии успешно загружены</string>
|
||||
<string name="photo_viewer_save_photo">Сохранить</string>
|
||||
<string name="search_photo_content">Найти фото</string>
|
||||
<string name="copy_photo_url_content">Скопировать прямую ссылку</string>
|
||||
<string name="open_original_photo_content">Оригинал</string>
|
||||
<string name="copied_to_clipboard">Скопировано в буфер обмена</string>
|
||||
<string name="photo_viewer_share">Поделиться</string>
|
||||
<string name="photos">Фотографии</string>
|
||||
<string name="photos_like_block_title">Фотографии</string>
|
||||
@@ -5447,6 +5451,7 @@
|
||||
<string name="interfacestartfr">Стандартный стартовый фрагмент</string>
|
||||
<string name="interfacestartfrsum">Выберите стартовый фрагмент</string>
|
||||
<string name="interfacevideo">Видео</string>
|
||||
<string name="interfacevideoext_short">Внешний плеер</string>
|
||||
<string name="interfacevideoext">Использовать внешний видеоплеер</string>
|
||||
<string name="interfacevideoextsum">Использовать внешний видеоплеер для воспроизведения видео</string>
|
||||
<string name="interfacevideorec">Отключение рекомендаций видео</string>
|
||||
@@ -5498,7 +5503,7 @@
|
||||
<string name="savedmsg">Сохраненные сообщения</string>
|
||||
<string name="selectacc">Выберите аккаунт</string>
|
||||
<string name="shitposting">Однотипные новости</string>
|
||||
<string name="shitpostingsummary">Фильтр очистки постов с РФ и действиями связанными на Украине</string>
|
||||
<string name="shitpostingsummary">Фильтр очистки постов с РФ и действиями связанными на Украине\n\nМогут быть ошибочные срабатывания</string>
|
||||
<string name="showstories">Показывать истории</string>
|
||||
<string name="showstoriessum">Блок истории в верхней части ленты</string>
|
||||
<string name="dialogrecomm">Отключить рекомендации</string>
|
||||
|
||||
@@ -2769,6 +2769,9 @@
|
||||
<item name="replies_count" type="id" />
|
||||
<item name="reply_to_name" type="id" />
|
||||
<item name="report" type="id" />
|
||||
<item name="search_photo" type="id" />
|
||||
<item name="copy_photo_url" type="id" />
|
||||
<item name="open_original_photo" type="id" />
|
||||
<item name="request_check_icon" type="id" />
|
||||
<item name="request_money_view" type="id" />
|
||||
<item name="required" type="id" />
|
||||
|
||||
@@ -3277,6 +3277,10 @@ the VK camera"</string>
|
||||
<string name="reply_from_group">Reply as community</string>
|
||||
<string name="reply_to">Reply</string>
|
||||
<string name="report_content">Report</string>
|
||||
<string name="search_photo_content">Search photo</string>
|
||||
<string name="copy_photo_url_content">Copy direct link</string>
|
||||
<string name="open_original_photo_content">Original</string>
|
||||
<string name="copied_to_clipboard">Copied to clipboard</string>
|
||||
<string name="report_msgs_confirm">Are you sure you want to mark as spam and delete %s?</string>
|
||||
<string name="report_msgs_delete">Spam</string>
|
||||
<string name="report_msgs_title">Mark as spam</string>
|
||||
@@ -5599,6 +5603,7 @@ Expand text..."</string>
|
||||
<string name="interfacestartfr">Default start fragment</string>
|
||||
<string name="interfacestartfrsum">Select start fragment</string>
|
||||
<string name="interfacevideo">Video</string>
|
||||
<string name="interfacevideoext_short">External player</string>
|
||||
<string name="interfacevideoext">Use external video player</string>
|
||||
<string name="interfacevideoextsum">Use an external video player to play videos</string>
|
||||
<string name="interfacevideorec">Disable recommended videos</string>
|
||||
@@ -5650,7 +5655,7 @@ You need to restart the application to apply proxy settings"</string>
|
||||
<string name="savedmsg">Saved messages</string>
|
||||
<string name="selectacc">Select account</string>
|
||||
<string name="shitposting">The same type of news</string>
|
||||
<string name="shitpostingsummary">Filter for cleaning posts with the Russian Federation and actions related in Ukraine</string>
|
||||
<string name="shitpostingsummary">Filter for cleaning posts with the Russian Federation and actions related in Ukraine\n\nThere may be incorrect triggers</string>
|
||||
<string name="showstories">Show stories</string>
|
||||
<string name="showstoriessum">The story section at the top of the feed</string>
|
||||
<string name="dialogrecomm">Disable recommendations</string>
|
||||
|
||||
@@ -21,10 +21,15 @@
|
||||
android:summary="@string/vtlofflinesummary"
|
||||
android:title="@string/vtloffline" />
|
||||
<com.vtosters.lite.ui.MaterialSwitchPreference
|
||||
android:defaultValue="true"
|
||||
android:defaultValue="false"
|
||||
android:key="setoffline"
|
||||
android:summary="@string/vtloffline2summary"
|
||||
android:title="@string/vtloffline2" />
|
||||
<com.vtosters.lite.ui.MaterialSwitchPreference
|
||||
android:defaultValue="true"
|
||||
android:key="onlineformatter"
|
||||
android:summary="Показывать статус пользователя с какого клиента сидит в онлайне"
|
||||
android:title="Расширенный онлайн" />
|
||||
</PreferenceCategory>
|
||||
<PreferenceCategory android:title="@string/dnr">
|
||||
<Preference
|
||||
@@ -73,9 +78,19 @@
|
||||
android:title="@string/activity_what_is_it" />
|
||||
<com.vtosters.lite.ui.MaterialSwitchPreference
|
||||
android:defaultValue="false"
|
||||
android:key="dns"
|
||||
android:key="read_s"
|
||||
android:title="@string/dns" />
|
||||
</PreferenceCategory>
|
||||
<PreferenceCategory android:title="Голосовые сообщения">
|
||||
<Preference
|
||||
android:enabled="false"
|
||||
android:summary="Функция позволяет вам не отправлять статус прослушивания вами голосовых сообщений собеседника"
|
||||
android:title="@string/activity_what_is_it" />
|
||||
<com.vtosters.lite.ui.MaterialSwitchPreference
|
||||
android:defaultValue="false"
|
||||
android:key="listen_v"
|
||||
android:title="Отключить статус прослушивания" />
|
||||
</PreferenceCategory>
|
||||
<PreferenceCategory android:title="@string/privacy_vtl">
|
||||
<com.vtosters.lite.ui.MaterialSwitchPreference
|
||||
android:defaultValue="true"
|
||||
|
||||
@@ -35,11 +35,21 @@
|
||||
android:title="Редизайн видеопостов" />
|
||||
</PreferenceCategory>
|
||||
<PreferenceCategory android:title="@string/vtlother">
|
||||
<com.vtosters.lite.ui.MaterialSwitchPreference
|
||||
android:defaultValue="true"
|
||||
android:key="miniapps"
|
||||
android:summary="Показывать Miniapps в меню"
|
||||
android:title="Блок миниаппов" />
|
||||
<com.vtosters.lite.ui.MaterialSwitchPreference
|
||||
android:defaultValue="true"
|
||||
android:key="superapp"
|
||||
android:summary="Новый вид меню как в новых версиях ВКонтакте"
|
||||
android:title="Супераппы" />
|
||||
<com.vtosters.lite.ui.MaterialSwitchPreference
|
||||
android:defaultValue="false"
|
||||
android:key="friendsblock"
|
||||
android:summary="Скрыть блок рекомендаций друзей в друзьях"
|
||||
android:title="Скрыть друзей" />
|
||||
<com.vtosters.lite.ui.MaterialSwitchPreference
|
||||
android:defaultValue="false"
|
||||
android:key="showmenu"
|
||||
|
||||
@@ -63,6 +63,11 @@
|
||||
android:summary="@string/interfacevideorecsum"
|
||||
android:title="@string/interfacevideorec" />
|
||||
</PreferenceCategory>
|
||||
<PreferenceCategory android:title="Фото">
|
||||
<Preference
|
||||
android:key="select_photo_search_engine"
|
||||
android:title="Выбор движка для поиска фото" />
|
||||
</PreferenceCategory>
|
||||
<PreferenceCategory android:title="@string/vkx_title">
|
||||
<Preference
|
||||
android:enabled="false"
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
|
||||
const-string v0, "api.vk.com"
|
||||
|
||||
invoke-static {v0}, Lru/vtosters/lite/utils/Proxy;->linkReplacer(Ljava/lang/String;)Ljava/lang/String;
|
||||
invoke-static {v0}, Lru/vtosters/lite/hooks/ProxyHook;->linkReplacer(Ljava/lang/String;)Ljava/lang/String;
|
||||
|
||||
move-result-object v0
|
||||
|
||||
@@ -123,7 +123,7 @@
|
||||
|
||||
const-string v0, "api.vk.com"
|
||||
|
||||
invoke-static {v0}, Lru/vtosters/lite/utils/Proxy;->linkReplacer(Ljava/lang/String;)Ljava/lang/String;
|
||||
invoke-static {v0}, Lru/vtosters/lite/hooks/ProxyHook;->linkReplacer(Ljava/lang/String;)Ljava/lang/String;
|
||||
|
||||
move-result-object v0
|
||||
|
||||
|
||||
@@ -1260,7 +1260,7 @@
|
||||
|
||||
move-result-object v0
|
||||
|
||||
invoke-static {v0}, Lru/vtosters/lite/utils/Proxy;->linkReplacer(Ljava/lang/String;)Ljava/lang/String;
|
||||
invoke-static {v0}, Lru/vtosters/lite/hooks/ProxyHook;->linkReplacer(Ljava/lang/String;)Ljava/lang/String;
|
||||
|
||||
move-result-object v0
|
||||
|
||||
@@ -1269,7 +1269,7 @@
|
||||
:cond_0
|
||||
const-string v0, "api.vk.com"
|
||||
|
||||
invoke-static {v0}, Lru/vtosters/lite/utils/Proxy;->linkReplacer(Ljava/lang/String;)Ljava/lang/String;
|
||||
invoke-static {v0}, Lru/vtosters/lite/hooks/ProxyHook;->linkReplacer(Ljava/lang/String;)Ljava/lang/String;
|
||||
|
||||
move-result-object v0
|
||||
|
||||
|
||||
@@ -122,7 +122,7 @@
|
||||
|
||||
move-result-object v10
|
||||
|
||||
invoke-static {v10}, Lru/vtosters/lite/utils/Newsfeed;->injectFilters(Lorg/json/JSONObject;)Z
|
||||
invoke-static {v10}, Lru/vtosters/lite/hooks/NewsfeedHook;->injectFilters(Lorg/json/JSONObject;)Z
|
||||
|
||||
move-result v11
|
||||
|
||||
@@ -539,7 +539,7 @@
|
||||
|
||||
move-object/from16 v21, v5
|
||||
|
||||
invoke-static {v13}, Lru/vtosters/lite/utils/Newsfeed;->injectFilters(Lorg/json/JSONObject;)Z
|
||||
invoke-static {v13}, Lru/vtosters/lite/hooks/NewsfeedHook;->injectFilters(Lorg/json/JSONObject;)Z
|
||||
|
||||
move-result v16
|
||||
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
|
||||
move-result-object v2
|
||||
|
||||
invoke-static {v2}, Lru/vtosters/lite/utils/Newsfeed;->injectFilters(Lorg/json/JSONObject;)Z
|
||||
invoke-static {v2}, Lru/vtosters/lite/hooks/NewsfeedHook;->injectFilters(Lorg/json/JSONObject;)Z
|
||||
|
||||
move-result v10
|
||||
|
||||
@@ -242,7 +242,7 @@
|
||||
|
||||
move-result-object v2
|
||||
|
||||
invoke-static {v2}, Lru/vtosters/lite/utils/Newsfeed;->injectFilters(Lorg/json/JSONObject;)Z
|
||||
invoke-static {v2}, Lru/vtosters/lite/hooks/NewsfeedHook;->injectFilters(Lorg/json/JSONObject;)Z
|
||||
|
||||
move-result v10
|
||||
|
||||
|
||||
+2
-2
@@ -137,7 +137,7 @@
|
||||
|
||||
const-string v4, "receipt"
|
||||
|
||||
invoke-static {v3}, Lru/vtosters/lite/audio/gcm/GCMFix;->requestToken(Ljava/lang/String;)Ljava/lang/String;
|
||||
invoke-static {v3}, Lru/vtosters/lite/hooks/GcmHook;->requestToken(Ljava/lang/String;)Ljava/lang/String;
|
||||
|
||||
move-result-object v3
|
||||
|
||||
@@ -169,7 +169,7 @@
|
||||
|
||||
const-string v5, "receipt2"
|
||||
|
||||
invoke-static {v4}, Lru/vtosters/lite/audio/gcm/GCMFix;->requestTokenV2(Ljava/lang/String;)Ljava/lang/String;
|
||||
invoke-static {v4}, Lru/vtosters/lite/hooks/GcmHook;->requestTokenV2(Ljava/lang/String;)Ljava/lang/String;
|
||||
|
||||
move-result-object v4
|
||||
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
|
||||
const-string v0, "api.vk.com"
|
||||
|
||||
invoke-static {v0}, Lru/vtosters/lite/utils/Proxy;->linkReplacer(Ljava/lang/String;)Ljava/lang/String;
|
||||
invoke-static {v0}, Lru/vtosters/lite/hooks/ProxyHook;->linkReplacer(Ljava/lang/String;)Ljava/lang/String;
|
||||
|
||||
move-result-object v0
|
||||
|
||||
|
||||
@@ -114,7 +114,7 @@
|
||||
|
||||
const-string v3, "https://oauth.vk.com/blank.html"
|
||||
|
||||
invoke-static {v3}, Lru/vtosters/lite/utils/Proxy;->linkReplacer(Ljava/lang/String;)Ljava/lang/String;
|
||||
invoke-static {v3}, Lru/vtosters/lite/hooks/ProxyHook;->linkReplacer(Ljava/lang/String;)Ljava/lang/String;
|
||||
|
||||
move-result-object v3
|
||||
|
||||
|
||||
@@ -335,7 +335,7 @@
|
||||
.method public onPageFinished(Landroid/webkit/WebView;Ljava/lang/String;)V
|
||||
.locals 0
|
||||
|
||||
invoke-static/range {p1 .. p1}, Lru/vtosters/lite/utils/VKUIInjector;->inject(Landroid/webkit/WebView;)V
|
||||
invoke-static/range {p1 .. p1}, Lru/vtosters/lite/hooks/VKUIHook;->inject(Landroid/webkit/WebView;)V
|
||||
|
||||
.line 1
|
||||
invoke-super {p0, p1, p2}, Landroid/webkit/WebViewClient;->onPageFinished(Landroid/webkit/WebView;Ljava/lang/String;)V
|
||||
|
||||
@@ -202,7 +202,7 @@
|
||||
:cond_0
|
||||
const-string v0, "https://oauth.vk.com/authorize"
|
||||
|
||||
invoke-static {v0}, Lru/vtosters/lite/utils/Proxy;->linkReplacer(Ljava/lang/String;)Ljava/lang/String;
|
||||
invoke-static {v0}, Lru/vtosters/lite/hooks/ProxyHook;->linkReplacer(Ljava/lang/String;)Ljava/lang/String;
|
||||
|
||||
move-result-object v0
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -47,7 +47,7 @@
|
||||
|
||||
const-string v1, "static.vk.com/restore"
|
||||
|
||||
invoke-static {v1}, Lru/vtosters/lite/utils/Proxy;->linkReplacer(Ljava/lang/String;)Ljava/lang/String;
|
||||
invoke-static {v1}, Lru/vtosters/lite/hooks/ProxyHook;->linkReplacer(Ljava/lang/String;)Ljava/lang/String;
|
||||
|
||||
move-result-object v1
|
||||
|
||||
|
||||
@@ -657,7 +657,7 @@
|
||||
|
||||
move-result-object v0
|
||||
|
||||
invoke-static {v0}, Lru/vtosters/lite/utils/Proxy;->linkReplacer(Ljava/lang/String;)Ljava/lang/String;
|
||||
invoke-static {v0}, Lru/vtosters/lite/hooks/ProxyHook;->linkReplacer(Ljava/lang/String;)Ljava/lang/String;
|
||||
|
||||
move-result-object v0
|
||||
|
||||
|
||||
@@ -1930,6 +1930,10 @@
|
||||
|
||||
move-result v0
|
||||
|
||||
invoke-static {}, Lru/vtosters/lite/utils/Preferences;->miniapps()Z
|
||||
|
||||
move-result v0
|
||||
|
||||
return v0
|
||||
.end method
|
||||
|
||||
|
||||
@@ -210,7 +210,7 @@
|
||||
|
||||
invoke-virtual {p2, v0}, Landroid/view/View;->setOnClickListener(Landroid/view/View$OnClickListener;)V
|
||||
|
||||
invoke-static {p2}, Lru/vtosters/lite/utils/ProxyHook;->hookAuth(Landroid/view/View;)V
|
||||
invoke-static {p2}, Lru/vtosters/lite/hooks/ProxyHook;->hookAuth(Landroid/view/View;)V
|
||||
|
||||
.line 7
|
||||
invoke-direct {p0}, Lcom/vk/auth/w/a/ChooseAuthMethodFragment;->K4()V
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
|
||||
const-string v0, "oauth.vk.com"
|
||||
|
||||
invoke-static {v0}, Lru/vtosters/lite/utils/Proxy;->linkReplacer(Ljava/lang/String;)Ljava/lang/String;
|
||||
invoke-static {v0}, Lru/vtosters/lite/hooks/ProxyHook;->linkReplacer(Ljava/lang/String;)Ljava/lang/String;
|
||||
|
||||
move-result-object v0
|
||||
|
||||
|
||||
@@ -166,7 +166,7 @@
|
||||
|
||||
const-string v2, "https://static.vk.com/promo_codes/"
|
||||
|
||||
invoke-static {v2}, Lru/vtosters/lite/utils/Proxy;->linkReplacer(Ljava/lang/String;)Ljava/lang/String;
|
||||
invoke-static {v2}, Lru/vtosters/lite/hooks/ProxyHook;->linkReplacer(Ljava/lang/String;)Ljava/lang/String;
|
||||
|
||||
move-result-object v2
|
||||
|
||||
|
||||
@@ -107,6 +107,10 @@
|
||||
|
||||
move-result-object p1
|
||||
|
||||
invoke-static {p1}, Lru/vtosters/lite/hooks/JsonInjectors;->friends(Lorg/json/JSONObject;)Lorg/json/JSONObject;
|
||||
|
||||
move-result-object p1
|
||||
|
||||
const-string v1, "r.getJSONObject(ServerKeys.RESPONSE)"
|
||||
|
||||
invoke-static {p1, v1}, Lkotlin/jvm/internal/Intrinsics;->a(Ljava/lang/Object;Ljava/lang/String;)V
|
||||
|
||||
@@ -79,6 +79,10 @@
|
||||
|
||||
move-result-object p1
|
||||
|
||||
invoke-static {p1}, Lru/vtosters/lite/hooks/JsonInjectors;->friends(Lorg/json/JSONObject;)Lorg/json/JSONObject;
|
||||
|
||||
move-result-object p1
|
||||
|
||||
const-string v1, "r.getJSONObject(ServerKeys.RESPONSE)"
|
||||
|
||||
invoke-static {p1, v1}, Lkotlin/jvm/internal/Intrinsics;->a(Ljava/lang/Object;Ljava/lang/String;)V
|
||||
|
||||
@@ -640,7 +640,7 @@
|
||||
const-string v0, ""
|
||||
|
||||
:goto_0
|
||||
invoke-static {}, Lru/vtosters/lite/utils/Proxy;->getAwayPhpCom()Ljava/lang/String;
|
||||
invoke-static {}, Lru/vtosters/lite/hooks/ProxyHook;->getAwayPhpCom()Ljava/lang/String;
|
||||
|
||||
move-result-object v0
|
||||
|
||||
|
||||
@@ -1427,7 +1427,7 @@
|
||||
.method public static final a(Landroid/content/Context;Lcom/vk/dto/common/VideoFile;Ljava/lang/String;Lcom/vk/libvideo/ad/AdsDataProvider;Ljava/lang/String;Lcom/vk/statistic/Statistic;ZLcom/vk/common/links/OpenCallback;Ljava/lang/Integer;)V
|
||||
.locals 14
|
||||
|
||||
invoke-static/range {p1 .. p1}, Lru/vtosters/lite/utils/ExternalLinkHandler;->parseVideoFile(Lcom/vk/dto/common/VideoFile;)Z
|
||||
invoke-static {p1, p0}, Lru/vtosters/lite/utils/ExternalLinkHandler;->parseVideoFile(Lcom/vk/dto/common/VideoFile;Landroid/content/Context;)Z
|
||||
|
||||
move-result v9
|
||||
|
||||
|
||||
@@ -219,7 +219,7 @@
|
||||
.method private final a(ZJ)Ljava/lang/String;
|
||||
.locals 2
|
||||
|
||||
invoke-static {p1, p2, p3}, Lru/vtosters/lite/utils/LocaleUtils;->getFormattedDate(ZJ)Ljava/lang/String;
|
||||
invoke-static {p1, p2, p3}, Lru/vtosters/lite/hooks/DateHook;->getFormattedDate(ZJ)Ljava/lang/String;
|
||||
|
||||
move-result-object v0
|
||||
|
||||
|
||||
@@ -186,7 +186,7 @@
|
||||
|
||||
if-eqz v0, :cond_0
|
||||
|
||||
invoke-static {v0}, Lru/vtosters/lite/utils/FragAnimationKit;->animateOpen(Landroidx/fragment/app/FragmentTransaction;)Z
|
||||
invoke-static {v0}, Lru/vtosters/lite/hooks/FragAnimationHook;->animateOpen(Landroidx/fragment/app/FragmentTransaction;)Z
|
||||
|
||||
move-result v1
|
||||
|
||||
@@ -355,7 +355,7 @@
|
||||
|
||||
move-result-object v0
|
||||
|
||||
invoke-static {v0}, Lru/vtosters/lite/utils/FragAnimationKit;->animateClose(Landroidx/fragment/app/FragmentTransaction;)V
|
||||
invoke-static {v0}, Lru/vtosters/lite/hooks/FragAnimationHook;->animateClose(Landroidx/fragment/app/FragmentTransaction;)V
|
||||
|
||||
iput-object v0, p0, Lcom/vk/core/fragments/j/b/ParentSupportFragmentManager;->b:Landroidx/fragment/app/FragmentTransaction;
|
||||
|
||||
|
||||
@@ -187,7 +187,7 @@
|
||||
|
||||
const-string v3, "https://api.vk.com/method/execute"
|
||||
|
||||
invoke-static {v3}, Lru/vtosters/lite/utils/Proxy;->linkReplacer(Ljava/lang/String;)Ljava/lang/String;
|
||||
invoke-static {v3}, Lru/vtosters/lite/hooks/ProxyHook;->linkReplacer(Ljava/lang/String;)Ljava/lang/String;
|
||||
|
||||
move-result-object v3
|
||||
|
||||
|
||||
@@ -1206,9 +1206,19 @@
|
||||
.end method
|
||||
|
||||
.method public final w1()Z
|
||||
.locals 1
|
||||
.locals 2
|
||||
|
||||
.line 1
|
||||
invoke-static {}, Lru/vtosters/lite/utils/Preferences;->isEnableExternalOpening()Z
|
||||
|
||||
move-result v1
|
||||
|
||||
if-eqz v1, :cond_228
|
||||
|
||||
const/4 v0, 0x0
|
||||
|
||||
return v0
|
||||
|
||||
:cond_228
|
||||
iget-boolean v0, p0, Lcom/vk/dto/account/VideoConfig;->e:Z
|
||||
|
||||
return v0
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
.method public final a(Lorg/json/JSONObject;)Lcom/vk/dto/menu/MenuResponse;
|
||||
.locals 9
|
||||
|
||||
invoke-static {p1}, Lru/vtosters/lite/utils/JsonInjectors;->menu(Lorg/json/JSONObject;)Lorg/json/JSONObject;
|
||||
invoke-static {p1}, Lru/vtosters/lite/hooks/JsonInjectors;->menu(Lorg/json/JSONObject;)Lorg/json/JSONObject;
|
||||
|
||||
move-result-object p1
|
||||
|
||||
|
||||
@@ -181,7 +181,7 @@
|
||||
.method public final a(Lorg/json/JSONObject;)Lcom/vk/dto/menu/SuperAppMenuResponse;
|
||||
.locals 9
|
||||
|
||||
invoke-static {p1}, Lru/vtosters/lite/utils/JsonInjectors;->superapp(Lorg/json/JSONObject;)Lorg/json/JSONObject;
|
||||
invoke-static {p1}, Lru/vtosters/lite/hooks/JsonInjectors;->superapp(Lorg/json/JSONObject;)Lorg/json/JSONObject;
|
||||
|
||||
move-result-object p1
|
||||
|
||||
|
||||
@@ -309,7 +309,7 @@
|
||||
|
||||
invoke-static {v5, v6, v2, v3}, Lcom/vk/dto/stories/model/GetStoriesResponse;->a(Lorg/json/JSONArray;Ljava/util/Collection;Landroid/util/SparseArray;Landroid/util/SparseArray;)V
|
||||
|
||||
invoke-static {}, Lru/vtosters/lite/utils/Newsfeed;->storyads()Ljava/lang/String;
|
||||
invoke-static {}, Lru/vtosters/lite/hooks/StoriesHook;->ads()Ljava/lang/String;
|
||||
|
||||
move-result-object v5
|
||||
|
||||
|
||||
@@ -342,7 +342,7 @@
|
||||
.line 1
|
||||
iget v1, p0, Lcom/vk/dto/user/VisibleStatus;->c:I
|
||||
|
||||
invoke-static {v1}, Lru/vtosters/lite/utils/OnlineFormatter;->getOnline(I)Ljava/lang/String;
|
||||
invoke-static {v1}, Lru/vtosters/lite/hooks/OnlineFormatterHook;->getOnline(I)Ljava/lang/String;
|
||||
|
||||
move-result-object v0
|
||||
|
||||
|
||||
@@ -275,7 +275,7 @@
|
||||
|
||||
const-string v3, "api.vk.com"
|
||||
|
||||
invoke-static {v3}, Lru/vtosters/lite/utils/Proxy;->linkReplacer(Ljava/lang/String;)Ljava/lang/String;
|
||||
invoke-static {v3}, Lru/vtosters/lite/hooks/ProxyHook;->linkReplacer(Ljava/lang/String;)Ljava/lang/String;
|
||||
|
||||
move-result-object v3
|
||||
|
||||
|
||||
+9
-1
@@ -49,7 +49,15 @@
|
||||
.method public a(Lcom/vk/im/engine/ImEnvironment;)V
|
||||
.locals 4
|
||||
|
||||
.line 2
|
||||
invoke-static {}, Lru/vtosters/lite/dnr/DNRPrefs;->getVoiceListened()Z
|
||||
|
||||
move-result v1
|
||||
|
||||
if-eqz v1, :cond_228
|
||||
|
||||
return-void
|
||||
|
||||
:cond_228
|
||||
invoke-interface {p1}, Lcom/vk/im/engine/ImEnvironment;->a0()Lcom/vk/im/engine/internal/storage/StorageManager;
|
||||
|
||||
move-result-object v0
|
||||
|
||||
+1
-1
@@ -622,7 +622,7 @@
|
||||
|
||||
move-result-object v4
|
||||
|
||||
invoke-static {v1}, Lru/vtosters/lite/utils/JsonInjectors;->convBar(Lorg/json/JSONObject;)Lorg/json/JSONObject;
|
||||
invoke-static {v1}, Lru/vtosters/lite/hooks/JsonInjectors;->convBar(Lorg/json/JSONObject;)Lorg/json/JSONObject;
|
||||
|
||||
move-result-object v6
|
||||
|
||||
|
||||
@@ -96,7 +96,6 @@
|
||||
.method public a(Lcom/vk/im/engine/ImEnvironment;Lcom/vk/instantjobs/InstantJob$b;)V
|
||||
.locals 2
|
||||
|
||||
.line 1
|
||||
invoke-interface {p1}, Lcom/vk/im/engine/ImEnvironment;->a0()Lcom/vk/im/engine/internal/storage/StorageManager;
|
||||
|
||||
move-result-object p2
|
||||
|
||||
+1
-1
@@ -45,7 +45,7 @@
|
||||
|
||||
invoke-direct {p1, v0}, Ljava/text/SimpleDateFormat;-><init>(Ljava/lang/String;)V
|
||||
|
||||
invoke-static {}, Lru/vtosters/lite/utils/LocaleUtils;->setDateFormat()Ljava/text/SimpleDateFormat;
|
||||
invoke-static {}, Lru/vtosters/lite/hooks/DateHook;->setDateFormat()Ljava/text/SimpleDateFormat;
|
||||
|
||||
move-result-object p1
|
||||
|
||||
|
||||
@@ -1926,16 +1926,6 @@
|
||||
}
|
||||
.end annotation
|
||||
|
||||
.line 10
|
||||
invoke-static {p1, p2, p3}, Lbruhcollective/itaysonlab/libvkx/client/LibVKXClient;->play(Lcom/vk/dto/music/MusicTrack;Ljava/util/List;Lcom/vk/music/common/MusicPlaybackLaunchContext;)Z
|
||||
|
||||
move-result v0
|
||||
|
||||
if-eqz v0, :cond_b
|
||||
|
||||
return-void
|
||||
|
||||
:cond_b
|
||||
invoke-static {p0}, Lcom/vk/music/model/IpcPlayerModelImpl;->a(Lcom/vk/music/model/IpcPlayerModelImpl;)Lcom/vk/audioipc/core/AudioPlayer;
|
||||
|
||||
move-result-object v0
|
||||
|
||||
@@ -116,6 +116,15 @@
|
||||
}
|
||||
.end annotation
|
||||
|
||||
invoke-static {p1, p2, p4}, Lbruhcollective/itaysonlab/libvkx/client/LibVKXClient;->play(Lcom/vk/dto/music/MusicTrack;Ljava/util/List;Lcom/vk/music/common/MusicPlaybackLaunchContext;)Z
|
||||
|
||||
move-result v0
|
||||
|
||||
if-eqz v0, :cond_7
|
||||
|
||||
return-void
|
||||
|
||||
:cond_7
|
||||
if-eqz p2, :cond_1
|
||||
|
||||
if-nez p1, :cond_0
|
||||
|
||||
@@ -1249,18 +1249,6 @@
|
||||
.method private final a(I)Ljava/lang/CharSequence;
|
||||
.locals 2
|
||||
|
||||
invoke-static {}, Lru/vtosters/lite/utils/Preferences;->dockcounter()Z
|
||||
|
||||
move-result v1
|
||||
|
||||
if-nez v1, :cond_228
|
||||
|
||||
const/4 p1, 0x0
|
||||
|
||||
return-object p1
|
||||
|
||||
:cond_228
|
||||
|
||||
const/4 v0, 0x0
|
||||
|
||||
packed-switch p1, :pswitch_data_0
|
||||
@@ -5440,11 +5428,7 @@
|
||||
|
||||
if-eqz v2, :cond_0
|
||||
|
||||
invoke-direct {p0, v1}, Lcom/vk/navigation/NavigationDelegateBottom;->a(I)Ljava/lang/CharSequence;
|
||||
|
||||
move-result-object v3
|
||||
|
||||
invoke-virtual {v2, v1, v3}, Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationView;->a(ILjava/lang/CharSequence;)V
|
||||
invoke-static {v1, v2}, Lru/vtosters/lite/ui/fragments/dockbar/DockBarInjector;->setCounter(ILcom/vtosters/lite/ui/bottomnavigation/BottomNavigationView;)V
|
||||
|
||||
goto :goto_0
|
||||
|
||||
|
||||
@@ -244,7 +244,7 @@
|
||||
.line 6
|
||||
invoke-static {v0, p1}, Lcom/vk/core/ui/themes/VKThemeHelper;->b(Landroid/app/Activity;[F)V
|
||||
|
||||
invoke-static {}, Lru/vtosters/lite/utils/Globals;->clearWebCache()V
|
||||
invoke-static {}, Lru/vtosters/lite/hooks/VKUIHook;->clearWebCache()V
|
||||
|
||||
:cond_0
|
||||
return-void
|
||||
|
||||
+1
-1
@@ -377,7 +377,7 @@
|
||||
|
||||
move-result-object v1
|
||||
|
||||
invoke-static/range {v1 .. v1}, Lru/vtosters/lite/utils/ExternalLinkHandler;->parseVideoFile(Lcom/vk/dto/common/VideoFile;)Z
|
||||
invoke-static {v1, v0}, Lru/vtosters/lite/utils/ExternalLinkHandler;->parseVideoFile(Lcom/vk/dto/common/VideoFile;Landroid/app/Activity;)Z
|
||||
|
||||
move-result v4
|
||||
|
||||
|
||||
@@ -1176,7 +1176,7 @@
|
||||
.method private final b(Lcom/vk/dto/stories/model/GetStoriesResponse;)V
|
||||
.locals 4
|
||||
|
||||
invoke-static {}, Lru/vtosters/lite/utils/Preferences;->stories()Z
|
||||
invoke-static {}, Lru/vtosters/lite/hooks/StoriesHook;->showstories()Z
|
||||
|
||||
move-result v0
|
||||
|
||||
|
||||
@@ -756,7 +756,7 @@
|
||||
:goto_5
|
||||
invoke-virtual {v0, v2}, Landroid/widget/TextView;->setVisibility(I)V
|
||||
|
||||
invoke-static {p0}, Lru/vtosters/lite/utils/PollUtils;->show(Lcom/vk/polls/ui/views/PollOptionView;)V
|
||||
invoke-static {p0}, Lru/vtosters/lite/hooks/PollHook;->show(Lcom/vk/polls/ui/views/PollOptionView;)V
|
||||
|
||||
.line 18
|
||||
iget-object v0, p0, Lcom/vk/polls/ui/views/PollOptionView;->c:Landroid/widget/TextView;
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
|
||||
const-string v4, "static.vk.com"
|
||||
|
||||
invoke-static {v4}, Lru/vtosters/lite/utils/Proxy;->linkReplacer(Ljava/lang/String;)Ljava/lang/String;
|
||||
invoke-static {v4}, Lru/vtosters/lite/hooks/ProxyHook;->linkReplacer(Ljava/lang/String;)Ljava/lang/String;
|
||||
|
||||
move-result-object v4
|
||||
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
|
||||
const-string v4, "static.vk.com"
|
||||
|
||||
invoke-static {v4}, Lru/vtosters/lite/utils/Proxy;->linkReplacer(Ljava/lang/String;)Ljava/lang/String;
|
||||
invoke-static {v4}, Lru/vtosters/lite/hooks/ProxyHook;->linkReplacer(Ljava/lang/String;)Ljava/lang/String;
|
||||
|
||||
move-result-object v4
|
||||
|
||||
|
||||
@@ -1941,7 +1941,7 @@
|
||||
|
||||
.line 43
|
||||
:cond_0
|
||||
invoke-static {}, Lru/vtosters/lite/utils/Preferences;->dns()Z
|
||||
invoke-static {}, Lru/vtosters/lite/dnr/DNRPrefs;->getStoriesRead()Z
|
||||
|
||||
move-result v2
|
||||
|
||||
@@ -1999,7 +1999,7 @@
|
||||
.method public static a(Lcom/vk/dto/stories/model/StoriesContainer;Lcom/vk/dto/stories/model/StoryEntry;Lcom/vk/stories/StoriesController$SourceType;I)V
|
||||
.locals 15
|
||||
|
||||
invoke-static {}, Lru/vtosters/lite/utils/Preferences;->dns()Z
|
||||
invoke-static {}, Lru/vtosters/lite/dnr/DNRPrefs;->getStoriesRead()Z
|
||||
|
||||
move-result v2
|
||||
|
||||
|
||||
@@ -558,13 +558,13 @@
|
||||
.method public static final declared-synchronized b(Lcom/vk/toggle/Features$Type;)Z
|
||||
.locals 2
|
||||
|
||||
invoke-static {p0}, Lru/vtosters/lite/utils/Toggles;->shouldPatch(Lcom/vk/toggle/Features$Type;)Z
|
||||
invoke-static {p0}, Lru/vtosters/lite/hooks/TogglesHook;->shouldPatch(Lcom/vk/toggle/Features$Type;)Z
|
||||
|
||||
move-result v0
|
||||
|
||||
if-eqz v0, :cond_b
|
||||
|
||||
invoke-static {p0}, Lru/vtosters/lite/utils/Toggles;->redirect(Lcom/vk/toggle/Features$Type;)Z
|
||||
invoke-static {p0}, Lru/vtosters/lite/hooks/TogglesHook;->redirect(Lcom/vk/toggle/Features$Type;)Z
|
||||
|
||||
move-result p0
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user