Clean up code
This commit is contained in:
@@ -4,10 +4,25 @@
|
||||
package bruhcollective.itaysonlab.libvkx;
|
||||
|
||||
public interface ILibVkxService extends android.os.IInterface {
|
||||
void play(java.util.List<String> audio_ids, int index, String playbackContext) throws android.os.RemoteException;
|
||||
|
||||
int getUserId() throws android.os.RemoteException;
|
||||
// Starts playback. playbackContext can be "other" if you don't sure what it is
|
||||
|
||||
void addTrackToCache(int track_id, int owner_id, String access_key) throws android.os.RemoteException;
|
||||
// A UserID. CHECK FOR THIS TO BE EQUAL BEFORE SENDING ANYTHING TO SERVICE!
|
||||
|
||||
void deleteTrackFromCache(int track_id, int owner_id) throws android.os.RemoteException;
|
||||
// Cache add/remove
|
||||
|
||||
boolean isTrackCached(int track_id, int owner_id) throws android.os.RemoteException;
|
||||
|
||||
java.util.List<String> getCache() throws android.os.RemoteException;
|
||||
|
||||
/**
|
||||
* Default implementation for ILibVkxService.
|
||||
*/
|
||||
public static class Default implements ILibVkxService {
|
||||
class Default implements ILibVkxService {
|
||||
// Starts playback. playbackContext can be "other" if you don't sure what it is
|
||||
|
||||
@Override
|
||||
@@ -46,13 +61,20 @@ public interface ILibVkxService extends android.os.IInterface {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
// Get a list of cached tracks. The response is close to VK's original response (an audio list)
|
||||
// Also, the items in the list are JSON ones.
|
||||
|
||||
/**
|
||||
* Local-side IPC implementation stub class.
|
||||
*/
|
||||
public static abstract class Stub extends android.os.Binder implements ILibVkxService {
|
||||
abstract class Stub extends android.os.Binder implements ILibVkxService {
|
||||
static final int TRANSACTION_play = (android.os.IBinder.FIRST_CALL_TRANSACTION + 1);
|
||||
static final int TRANSACTION_getUserId = (android.os.IBinder.FIRST_CALL_TRANSACTION + 2);
|
||||
static final int TRANSACTION_addTrackToCache = (android.os.IBinder.FIRST_CALL_TRANSACTION + 3);
|
||||
static final int TRANSACTION_deleteTrackFromCache = (android.os.IBinder.FIRST_CALL_TRANSACTION + 4);
|
||||
static final int TRANSACTION_isTrackCached = (android.os.IBinder.FIRST_CALL_TRANSACTION + 5);
|
||||
static final int TRANSACTION_getCache = (android.os.IBinder.FIRST_CALL_TRANSACTION + 6);
|
||||
private static final String DESCRIPTOR = "bruhcollective.itaysonlab.libvkx.ILibVkxService";
|
||||
|
||||
/**
|
||||
* Construct the stub at attach it to the interface.
|
||||
*/
|
||||
@@ -75,6 +97,18 @@ public interface ILibVkxService extends android.os.IInterface {
|
||||
return new Proxy(obj);
|
||||
}
|
||||
|
||||
public static boolean setDefaultImpl(ILibVkxService impl) {
|
||||
if (Proxy.sDefaultImpl == null && impl != null) {
|
||||
Proxy.sDefaultImpl = impl;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static ILibVkxService getDefaultImpl() {
|
||||
return Proxy.sDefaultImpl;
|
||||
}
|
||||
|
||||
@Override
|
||||
public android.os.IBinder asBinder() {
|
||||
return this;
|
||||
@@ -154,7 +188,8 @@ public interface ILibVkxService extends android.os.IInterface {
|
||||
}
|
||||
|
||||
private static class Proxy implements ILibVkxService {
|
||||
private android.os.IBinder mRemote;
|
||||
public static ILibVkxService sDefaultImpl;
|
||||
private final android.os.IBinder mRemote;
|
||||
|
||||
Proxy(android.os.IBinder remote) {
|
||||
mRemote = remote;
|
||||
@@ -164,11 +199,12 @@ public interface ILibVkxService extends android.os.IInterface {
|
||||
public android.os.IBinder asBinder() {
|
||||
return mRemote;
|
||||
}
|
||||
// Starts playback. playbackContext can be "other" if you don't sure what it is
|
||||
|
||||
public String getInterfaceDescriptor() {
|
||||
return DESCRIPTOR;
|
||||
}
|
||||
// Starts playback. playbackContext can be "other" if you don't sure what it is
|
||||
// A UserID. CHECK FOR THIS TO BE EQUAL BEFORE SENDING ANYTHING TO SERVICE!
|
||||
|
||||
@Override
|
||||
public void play(java.util.List<String> audio_ids, int index, String playbackContext) throws android.os.RemoteException {
|
||||
@@ -190,7 +226,7 @@ public interface ILibVkxService extends android.os.IInterface {
|
||||
_data.recycle();
|
||||
}
|
||||
}
|
||||
// A UserID. CHECK FOR THIS TO BE EQUAL BEFORE SENDING ANYTHING TO SERVICE!
|
||||
// Cache add/remove
|
||||
|
||||
@Override
|
||||
public int getUserId() throws android.os.RemoteException {
|
||||
@@ -211,7 +247,6 @@ public interface ILibVkxService extends android.os.IInterface {
|
||||
}
|
||||
return _result;
|
||||
}
|
||||
// Cache add/remove
|
||||
|
||||
@Override
|
||||
public void addTrackToCache(int track_id, int owner_id, String access_key) throws android.os.RemoteException {
|
||||
@@ -253,6 +288,8 @@ public interface ILibVkxService extends android.os.IInterface {
|
||||
_data.recycle();
|
||||
}
|
||||
}
|
||||
// Get a list of cached tracks. The response is close to VK's original response (an audio list)
|
||||
// Also, the items in the list are JSON ones.
|
||||
|
||||
@Override
|
||||
public boolean isTrackCached(int track_id, int owner_id) throws android.os.RemoteException {
|
||||
@@ -275,8 +312,6 @@ public interface ILibVkxService extends android.os.IInterface {
|
||||
}
|
||||
return _result;
|
||||
}
|
||||
// Get a list of cached tracks. The response is close to VK's original response (an audio list)
|
||||
// Also, the items in the list are JSON ones.
|
||||
|
||||
@Override
|
||||
public java.util.List<String> getCache() throws android.os.RemoteException {
|
||||
@@ -297,44 +332,6 @@ public interface ILibVkxService extends android.os.IInterface {
|
||||
}
|
||||
return _result;
|
||||
}
|
||||
|
||||
public static ILibVkxService sDefaultImpl;
|
||||
}
|
||||
|
||||
static final int TRANSACTION_play = (android.os.IBinder.FIRST_CALL_TRANSACTION + 1);
|
||||
static final int TRANSACTION_getUserId = (android.os.IBinder.FIRST_CALL_TRANSACTION + 2);
|
||||
static final int TRANSACTION_addTrackToCache = (android.os.IBinder.FIRST_CALL_TRANSACTION + 3);
|
||||
static final int TRANSACTION_deleteTrackFromCache = (android.os.IBinder.FIRST_CALL_TRANSACTION + 4);
|
||||
static final int TRANSACTION_isTrackCached = (android.os.IBinder.FIRST_CALL_TRANSACTION + 5);
|
||||
static final int TRANSACTION_getCache = (android.os.IBinder.FIRST_CALL_TRANSACTION + 6);
|
||||
|
||||
public static boolean setDefaultImpl(ILibVkxService impl) {
|
||||
if (Proxy.sDefaultImpl == null && impl != null) {
|
||||
Proxy.sDefaultImpl = impl;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static ILibVkxService getDefaultImpl() {
|
||||
return Proxy.sDefaultImpl;
|
||||
}
|
||||
}
|
||||
// Starts playback. playbackContext can be "other" if you don't sure what it is
|
||||
|
||||
public void play(java.util.List<String> audio_ids, int index, String playbackContext) throws android.os.RemoteException;
|
||||
// A UserID. CHECK FOR THIS TO BE EQUAL BEFORE SENDING ANYTHING TO SERVICE!
|
||||
|
||||
public int getUserId() throws android.os.RemoteException;
|
||||
// Cache add/remove
|
||||
|
||||
public void addTrackToCache(int track_id, int owner_id, String access_key) throws android.os.RemoteException;
|
||||
|
||||
public void deleteTrackFromCache(int track_id, int owner_id) throws android.os.RemoteException;
|
||||
|
||||
public boolean isTrackCached(int track_id, int owner_id) throws android.os.RemoteException;
|
||||
// Get a list of cached tracks. The response is close to VK's original response (an audio list)
|
||||
// Also, the items in the list are JSON ones.
|
||||
|
||||
public java.util.List<String> getCache() throws android.os.RemoteException;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package bruhcollective.itaysonlab.libvkx.client;
|
||||
|
||||
import static ru.vtosters.lite.utils.Helper.*;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.RemoteException;
|
||||
|
||||
@@ -27,7 +29,7 @@ public class LibVKXClient {
|
||||
|
||||
public static LibVKXClientImpl getInstance() {
|
||||
LibVKXClientImpl libVKXClientImpl = impl;
|
||||
return libVKXClientImpl == null ? getInstance(Helper.GetContext()) : libVKXClientImpl;
|
||||
return libVKXClientImpl == null ? getInstance(GetContext()) : libVKXClientImpl;
|
||||
}
|
||||
|
||||
public static boolean isVkxInstalled() {
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package bruhcollective.itaysonlab.libvkx.client;
|
||||
|
||||
import static ru.vtosters.lite.utils.Helper.*;
|
||||
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
@@ -51,7 +53,7 @@ public class LibVKXClientImpl {
|
||||
public boolean runOnService(LibVKXAction action) {
|
||||
if (serviceInstance != null) {
|
||||
try {
|
||||
if (serviceInstance.getUserId() != Helper.GetUserId()) return false;
|
||||
if (serviceInstance.getUserId() != GetUserId()) return false;
|
||||
action.run(serviceInstance);
|
||||
return true;
|
||||
} catch (RemoteException e) {
|
||||
@@ -75,7 +77,7 @@ public class LibVKXClientImpl {
|
||||
isBindFailed = true;
|
||||
} else {
|
||||
try {
|
||||
if (serviceInstance.getUserId() != Helper.GetUserId()) return;
|
||||
if (serviceInstance.getUserId() != GetUserId()) return;
|
||||
runAfterBind.run(serviceInstance);
|
||||
} catch (RemoteException e) {
|
||||
e.printStackTrace();
|
||||
@@ -95,8 +97,7 @@ public class LibVKXClientImpl {
|
||||
|
||||
private boolean verifyBindActuality() {
|
||||
if (!checkIfAppExists()) return false; // no need
|
||||
if (isBindFailed) return false;
|
||||
return true;
|
||||
return !isBindFailed;
|
||||
}
|
||||
|
||||
private Intent getIntent() {
|
||||
|
||||
@@ -21,17 +21,13 @@ import java.util.concurrent.atomic.AtomicLong;
|
||||
public class NotificationsHelper {
|
||||
private static final int NOTIFICATION_ID_BASE = 3921337;
|
||||
private static final String NOTIFICATION_CHANNEL_ID = "tgss_chan_v5";
|
||||
|
||||
private HashMap<TelegramStickersPack, Integer> downloadingPacksNotificationsIds;
|
||||
|
||||
private Context c;
|
||||
private NotificationManagerCompat manager;
|
||||
private int currentNotificationN = 0;
|
||||
|
||||
private static final int MAX_UPDATE_NOTIFICATIONS_PER_SECOND = 3;
|
||||
private static final int MIN_TIME_BETWEEN_UPDATE_NOTIFICATIONS = 1000 / MAX_UPDATE_NOTIFICATIONS_PER_SECOND;
|
||||
|
||||
private AtomicLong lastNotificationTime = new AtomicLong(0);
|
||||
private final HashMap<TelegramStickersPack, Integer> downloadingPacksNotificationsIds;
|
||||
private final Context c;
|
||||
private final NotificationManagerCompat manager;
|
||||
private int currentNotificationN = 0;
|
||||
private final AtomicLong lastNotificationTime = new AtomicLong(0);
|
||||
|
||||
public NotificationsHelper(Context c) {
|
||||
this.c = c;
|
||||
|
||||
@@ -11,7 +11,7 @@ import java.io.File;
|
||||
class PackDeletionTask extends AsyncTask<Void, Void, Boolean> {
|
||||
private static final String TAG = "TGSSAnnihilator";
|
||||
|
||||
private TelegramStickersPack pack;
|
||||
private final TelegramStickersPack pack;
|
||||
|
||||
PackDeletionTask(TelegramStickersPack pack) {
|
||||
this.pack = pack;
|
||||
|
||||
@@ -101,7 +101,7 @@ public class TelegramStickersPack extends CustomStickersPack {
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
return obj instanceof TelegramStickersPack && ((TelegramStickersPack) obj).id.toLowerCase().equals(id.toLowerCase());
|
||||
return obj instanceof TelegramStickersPack && ((TelegramStickersPack) obj).id.equalsIgnoreCase(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package com.aefyr.tsg.g2;
|
||||
|
||||
import static ru.vtosters.lite.utils.Helper.*;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Handler;
|
||||
@@ -27,29 +29,25 @@ public class TelegramStickersService {
|
||||
private static final String TAG = "TGStickersService";
|
||||
private static TelegramStickersService instance;
|
||||
|
||||
private Context c;
|
||||
private final Context c;
|
||||
|
||||
private ArrayList<TelegramStickersPack> packs;
|
||||
private ArrayList<TelegramStickersPack> activePacks;
|
||||
private ArrayList<TelegramStickersPack> inactivePacks;
|
||||
private ArrayList<StickersEventsListener> listeners;
|
||||
private HashSet<String> currentlyDownloading;
|
||||
private final ArrayList<TelegramStickersPack> packs;
|
||||
private final ArrayList<TelegramStickersPack> activePacks;
|
||||
private final ArrayList<TelegramStickersPack> inactivePacks;
|
||||
private final ArrayList<StickersEventsListener> listeners;
|
||||
private final HashSet<String> currentlyDownloading;
|
||||
|
||||
private Handler uiThreadHandler;
|
||||
private final Handler uiThreadHandler;
|
||||
|
||||
private TelegramStickersGrabber grabber;
|
||||
private final TelegramStickersGrabber grabber;
|
||||
|
||||
private TelegramStickersDbHelper dbHelper;
|
||||
private final TelegramStickersDbHelper dbHelper;
|
||||
private boolean ready = false;
|
||||
private ArrayList<Runnable> queuedTasks;
|
||||
private final ArrayList<Runnable> queuedTasks;
|
||||
|
||||
private ThreadPoolExecutor executor;
|
||||
private final ThreadPoolExecutor executor;
|
||||
|
||||
private NotificationsHelper notificationsHelper;
|
||||
|
||||
public static TelegramStickersService getInstance(Context c) {
|
||||
return instance == null ? new TelegramStickersService(c) : instance;
|
||||
}
|
||||
private final NotificationsHelper notificationsHelper;
|
||||
|
||||
private TelegramStickersService(Context context) {
|
||||
instance = this;
|
||||
@@ -72,6 +70,10 @@ public class TelegramStickersService {
|
||||
updatePacks(true);
|
||||
}
|
||||
|
||||
public static TelegramStickersService getInstance(Context c) {
|
||||
return instance == null ? new TelegramStickersService(c) : instance;
|
||||
}
|
||||
|
||||
private void updatePacks(final boolean notify) {
|
||||
packs.clear();
|
||||
dbHelper.getAllPacks(new TelegramStickersDbHelper.PacksLoadingListener() {
|
||||
@@ -105,20 +107,6 @@ public class TelegramStickersService {
|
||||
});
|
||||
}
|
||||
|
||||
interface StickersEventsListener {
|
||||
void onPackAdded(TelegramStickersPack pack, int atIndex);
|
||||
|
||||
void onPackRemoved(TelegramStickersPack pack, int atIndex);
|
||||
|
||||
void onPackChanged(TelegramStickersPack pack, int atIndex);
|
||||
|
||||
void onPackDownloadError(TelegramStickersPack pack, Exception error);
|
||||
|
||||
void onActivePacksListChanged();
|
||||
|
||||
void onInactivePacksListChanged();
|
||||
}
|
||||
|
||||
public void addStickersEventsListener(StickersEventsListener listener) {
|
||||
listeners.add(listener);
|
||||
}
|
||||
@@ -128,7 +116,7 @@ public class TelegramStickersService {
|
||||
}
|
||||
|
||||
private void notifyPackAdded(TelegramStickersPack pack, int atIndex) {
|
||||
Helper.GetContext().sendBroadcast(new Intent(StickersFragment.ACTION_RELOAD));
|
||||
GetContext().sendBroadcast(new Intent(StickersFragment.ACTION_RELOAD));
|
||||
if (listeners.isEmpty())
|
||||
return;
|
||||
|
||||
@@ -138,7 +126,7 @@ public class TelegramStickersService {
|
||||
}
|
||||
|
||||
private void notifyPackChanged(TelegramStickersPack pack, int atIndex) {
|
||||
Helper.GetContext().sendBroadcast(new Intent(StickersFragment.ACTION_RELOAD));
|
||||
GetContext().sendBroadcast(new Intent(StickersFragment.ACTION_RELOAD));
|
||||
if (listeners.isEmpty())
|
||||
return;
|
||||
|
||||
@@ -148,7 +136,7 @@ public class TelegramStickersService {
|
||||
}
|
||||
|
||||
private void notifyPackRemoved(TelegramStickersPack pack, int atIndex) {
|
||||
Helper.GetContext().sendBroadcast(new Intent(StickersFragment.ACTION_RELOAD));
|
||||
GetContext().sendBroadcast(new Intent(StickersFragment.ACTION_RELOAD));
|
||||
if (listeners.isEmpty())
|
||||
return;
|
||||
|
||||
@@ -158,7 +146,7 @@ public class TelegramStickersService {
|
||||
}
|
||||
|
||||
private void notifyPackDownloadError(TelegramStickersPack pack, Exception error) {
|
||||
Helper.GetContext().sendBroadcast(new Intent(StickersFragment.ACTION_RELOAD));
|
||||
GetContext().sendBroadcast(new Intent(StickersFragment.ACTION_RELOAD));
|
||||
if (listeners.isEmpty())
|
||||
return;
|
||||
|
||||
@@ -168,7 +156,7 @@ public class TelegramStickersService {
|
||||
}
|
||||
|
||||
private void notifyActivePacksListChanged() {
|
||||
Helper.GetContext().sendBroadcast(new Intent(StickersFragment.ACTION_RELOAD));
|
||||
GetContext().sendBroadcast(new Intent(StickersFragment.ACTION_RELOAD));
|
||||
if (listeners.isEmpty())
|
||||
return;
|
||||
|
||||
@@ -178,7 +166,7 @@ public class TelegramStickersService {
|
||||
}
|
||||
|
||||
private void notifyInactivePacksListChanged() {
|
||||
Helper.GetContext().sendBroadcast(new Intent(StickersFragment.ACTION_RELOAD));
|
||||
GetContext().sendBroadcast(new Intent(StickersFragment.ACTION_RELOAD));
|
||||
if (listeners.isEmpty())
|
||||
return;
|
||||
|
||||
@@ -398,5 +386,19 @@ public class TelegramStickersService {
|
||||
getPacksListReference().set(li1, p2);
|
||||
}
|
||||
|
||||
interface StickersEventsListener {
|
||||
void onPackAdded(TelegramStickersPack pack, int atIndex);
|
||||
|
||||
void onPackRemoved(TelegramStickersPack pack, int atIndex);
|
||||
|
||||
void onPackChanged(TelegramStickersPack pack, int atIndex);
|
||||
|
||||
void onPackDownloadError(TelegramStickersPack pack, Exception error);
|
||||
|
||||
void onActivePacksListChanged();
|
||||
|
||||
void onInactivePacksListChanged();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -7,6 +7,10 @@ import android.provider.BaseColumns;
|
||||
*/
|
||||
public final class TelegramStickersContract {
|
||||
|
||||
public static final String SQL_CREATE_ENTRIES = String.format("CREATE TABLE %s (%s INTEGER PRIMARY KEY, %s INTEGER AUTO_INCREMENT, %s TEXT, %s TEXT, %s TEXT, %s INTEGER, %s INTEGER, %s TEXT, %s TEXT)",
|
||||
StickersTableEntry.TABLE_NAME, StickersTableEntry._ID, StickersTableEntry.COLUMN_NAME_INDEX, StickersTableEntry.COLUMN_NAME_ID, StickersTableEntry.COLUMN_NAME_NAME,
|
||||
StickersTableEntry.COLUMN_NAME_FOLDER, StickersTableEntry.COLUMN_NAME_STICKERS_COUNT, StickersTableEntry.COLUMN_NAME_ENABLED, StickersTableEntry.COLUMN_NAME_VERSION, StickersTableEntry.COLUMN_NAME_EMOJIS);
|
||||
|
||||
private TelegramStickersContract() {
|
||||
}
|
||||
|
||||
@@ -23,9 +27,5 @@ public final class TelegramStickersContract {
|
||||
public static final String COLUMN_NAME_EMOJIS = "emojis";
|
||||
}
|
||||
|
||||
public static final String SQL_CREATE_ENTRIES = String.format("CREATE TABLE %s (%s INTEGER PRIMARY KEY, %s INTEGER AUTO_INCREMENT, %s TEXT, %s TEXT, %s TEXT, %s INTEGER, %s INTEGER, %s TEXT, %s TEXT)",
|
||||
StickersTableEntry.TABLE_NAME, StickersTableEntry._ID, StickersTableEntry.COLUMN_NAME_INDEX, StickersTableEntry.COLUMN_NAME_ID, StickersTableEntry.COLUMN_NAME_NAME,
|
||||
StickersTableEntry.COLUMN_NAME_FOLDER, StickersTableEntry.COLUMN_NAME_STICKERS_COUNT, StickersTableEntry.COLUMN_NAME_ENABLED, StickersTableEntry.COLUMN_NAME_VERSION, StickersTableEntry.COLUMN_NAME_EMOJIS);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -27,12 +27,6 @@ public class TelegramStickersDbHelper extends SQLiteOpenHelper {
|
||||
private SQLiteDatabase writableDb;
|
||||
private SQLiteDatabase readableDb;
|
||||
|
||||
public interface PacksLoadingListener {
|
||||
void onPackLoaded(TelegramStickersPack pack);
|
||||
|
||||
void onAllPacksLoaded(ArrayList<TelegramStickersPack> packs);
|
||||
}
|
||||
|
||||
public TelegramStickersDbHelper(Context context) {
|
||||
super(context, DB_NAME, null, DB_VERSION);
|
||||
}
|
||||
@@ -105,6 +99,12 @@ public class TelegramStickersDbHelper extends SQLiteOpenHelper {
|
||||
new PacksLoadingTask(listener).execute();
|
||||
}
|
||||
|
||||
public interface PacksLoadingListener {
|
||||
void onPackLoaded(TelegramStickersPack pack);
|
||||
|
||||
void onAllPacksLoaded(ArrayList<TelegramStickersPack> packs);
|
||||
}
|
||||
|
||||
private class PacksLoadingTask extends AsyncTask<Void, Void, ArrayList<TelegramStickersPack>> {
|
||||
|
||||
PacksLoadingListener listener;
|
||||
|
||||
@@ -38,12 +38,6 @@ import ru.f0x1d.net.NetResponse;
|
||||
*/
|
||||
public class TelegramStickersGrabber {
|
||||
private static final String TAG = "TSG";
|
||||
|
||||
private static String BOT_API_BASE_URL;
|
||||
private static String GET_STICKER_SET_URL;
|
||||
private static String GET_FILE_URL;
|
||||
private static String BOT_API_BASE_FILE_URL;
|
||||
|
||||
public static String REAL_TG_IP = null;
|
||||
public static String PROXY_IP = null;
|
||||
public static int PROXY_PORT = -1;
|
||||
@@ -52,11 +46,32 @@ public class TelegramStickersGrabber {
|
||||
public static boolean PROXY_SOCKS = true;
|
||||
public static boolean HAS_PASS = false;
|
||||
public static boolean USE_PROXY = false;
|
||||
private static String BOT_API_BASE_URL;
|
||||
private static String GET_STICKER_SET_URL;
|
||||
private static String GET_FILE_URL;
|
||||
private static String BOT_API_BASE_FILE_URL;
|
||||
|
||||
static {
|
||||
updateURLs();
|
||||
}
|
||||
|
||||
private final MessageDigest sha256;
|
||||
private final Handler uiThreadHandler;
|
||||
private String botApiKey = "";
|
||||
private NetClient httpClient;
|
||||
public TelegramStickersGrabber(String botApiKey) {
|
||||
this.botApiKey = botApiKey;
|
||||
httpClient = new NetClient.Builder().connectTimeout(5, TimeUnit.SECONDS).build();
|
||||
uiThreadHandler = new Handler(Looper.getMainLooper());
|
||||
try {
|
||||
sha256 = MessageDigest.getInstance("SHA-256");
|
||||
} catch (NoSuchAlgorithmException e) {
|
||||
Log.wtf(TAG, "No support for SHA-256");
|
||||
e.printStackTrace();
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public static void updateURLs() {
|
||||
BOT_API_BASE_FILE_URL = "https://api.telegram.org/file/bot%s/%s";
|
||||
|
||||
@@ -66,11 +81,6 @@ public class TelegramStickersGrabber {
|
||||
GET_FILE_URL = BOT_API_BASE_URL + "getFile?file_id=%s";
|
||||
}
|
||||
|
||||
private String botApiKey = "";
|
||||
private NetClient httpClient;
|
||||
private final MessageDigest sha256;
|
||||
private final Handler uiThreadHandler;
|
||||
|
||||
public static boolean isTelegramBlocked() {
|
||||
NetClient client = new NetClient.Builder().connectTimeout(5, TimeUnit.SECONDS).build();
|
||||
try {
|
||||
@@ -101,43 +111,6 @@ public class TelegramStickersGrabber {
|
||||
return false;
|
||||
}
|
||||
|
||||
public interface PackDownloadListener {
|
||||
void onPackDownloaded(TelegramStickersPackInfo pack, boolean newVersionFound);
|
||||
|
||||
void onPackDownloadError(Exception e);
|
||||
|
||||
void onGotPackInfo(TelegramStickersPackInfo packInfo);
|
||||
|
||||
void onStickerDownloaded(String pack, File sticker, String boundEmoji, int stickerIndex, int downloadedStickersCount, int totalStickerCount);
|
||||
}
|
||||
|
||||
public interface KeyCheckListener {
|
||||
void onKeyChecked(boolean ok);
|
||||
|
||||
void onNetError();
|
||||
}
|
||||
|
||||
public class TSGException extends Exception {
|
||||
private static final long serialVersionUID = 7866915509988422944L;
|
||||
|
||||
private TSGException(String message) {
|
||||
super(message);
|
||||
}
|
||||
}
|
||||
|
||||
public TelegramStickersGrabber(String botApiKey) {
|
||||
this.botApiKey = botApiKey;
|
||||
httpClient = new NetClient.Builder().connectTimeout(5, TimeUnit.SECONDS).build();
|
||||
uiThreadHandler = new Handler(Looper.getMainLooper());
|
||||
try {
|
||||
sha256 = MessageDigest.getInstance("SHA-256");
|
||||
} catch (NoSuchAlgorithmException e) {
|
||||
Log.wtf(TAG, "No support for SHA-256");
|
||||
e.printStackTrace();
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public void resetProxy() {
|
||||
httpClient = new NetClient.Builder().connectTimeout(5, TimeUnit.SECONDS).build();
|
||||
}
|
||||
@@ -201,40 +174,6 @@ public class TelegramStickersGrabber {
|
||||
});
|
||||
}
|
||||
|
||||
private class StickerSet {
|
||||
String id;
|
||||
String name;
|
||||
String version;
|
||||
ArrayList<Sticker> stickers;
|
||||
|
||||
StickerSet(String id, String name, String version, ArrayList<Sticker> stickers) {
|
||||
this.name = name;
|
||||
this.stickers = stickers;
|
||||
this.id = id;
|
||||
this.version = version;
|
||||
}
|
||||
}
|
||||
|
||||
private class Sticker {
|
||||
String emoji;
|
||||
String fileId;
|
||||
|
||||
Sticker(String fileId, String emoji) {
|
||||
this.fileId = fileId;
|
||||
this.emoji = emoji;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
return obj instanceof Sticker && ((Sticker) obj).fileId.equals(fileId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return (17 * emoji.hashCode()) << 32 + fileId.hashCode();
|
||||
}
|
||||
}
|
||||
|
||||
private void getPackInfo(final String packName, final File packFolder, final String installedVersion, final PackDownloadListener listener) {
|
||||
NetRequest packInfoRequest = new NetRequest.Builder().get().url(String.format(GET_STICKER_SET_URL, botApiKey, packName)).build();
|
||||
httpClient.newCall(packInfoRequest).enqueue(new NetCallback() {
|
||||
@@ -478,4 +417,62 @@ public class TelegramStickersGrabber {
|
||||
private void runOnUiThread(Runnable r) {
|
||||
uiThreadHandler.post(r);
|
||||
}
|
||||
|
||||
public interface PackDownloadListener {
|
||||
void onPackDownloaded(TelegramStickersPackInfo pack, boolean newVersionFound);
|
||||
|
||||
void onPackDownloadError(Exception e);
|
||||
|
||||
void onGotPackInfo(TelegramStickersPackInfo packInfo);
|
||||
|
||||
void onStickerDownloaded(String pack, File sticker, String boundEmoji, int stickerIndex, int downloadedStickersCount, int totalStickerCount);
|
||||
}
|
||||
|
||||
public interface KeyCheckListener {
|
||||
void onKeyChecked(boolean ok);
|
||||
|
||||
void onNetError();
|
||||
}
|
||||
|
||||
public class TSGException extends Exception {
|
||||
private static final long serialVersionUID = 7866915509988422944L;
|
||||
|
||||
private TSGException(String message) {
|
||||
super(message);
|
||||
}
|
||||
}
|
||||
|
||||
private class StickerSet {
|
||||
String id;
|
||||
String name;
|
||||
String version;
|
||||
ArrayList<Sticker> stickers;
|
||||
|
||||
StickerSet(String id, String name, String version, ArrayList<Sticker> stickers) {
|
||||
this.name = name;
|
||||
this.stickers = stickers;
|
||||
this.id = id;
|
||||
this.version = version;
|
||||
}
|
||||
}
|
||||
|
||||
private class Sticker {
|
||||
String emoji;
|
||||
String fileId;
|
||||
|
||||
Sticker(String fileId, String emoji) {
|
||||
this.fileId = fileId;
|
||||
this.emoji = emoji;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
return obj instanceof Sticker && ((Sticker) obj).fileId.equals(fileId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return (17 * emoji.hashCode()) << 32 + fileId.hashCode();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,14 +7,9 @@ import android.util.Log;
|
||||
*/
|
||||
public class GoalCounter {
|
||||
|
||||
public interface OnGoalReachListener {
|
||||
void onGoalReached();
|
||||
}
|
||||
|
||||
private int goal;
|
||||
private final int goal;
|
||||
private int i = 0;
|
||||
|
||||
private OnGoalReachListener listener;
|
||||
private final OnGoalReachListener listener;
|
||||
|
||||
public GoalCounter(int goal, OnGoalReachListener listener) {
|
||||
this.goal = goal;
|
||||
@@ -36,4 +31,8 @@ public class GoalCounter {
|
||||
public synchronized int value() {
|
||||
return i;
|
||||
}
|
||||
|
||||
public interface OnGoalReachListener {
|
||||
void onGoalReached();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,9 +15,9 @@ public final class Request {
|
||||
final String b;
|
||||
final Headers c;
|
||||
final Map<Class<?>, Object> e;
|
||||
private volatile CacheControl f;
|
||||
@Nullable
|
||||
final RequestBody requestBody;
|
||||
private volatile CacheControl f;
|
||||
|
||||
Request(Builder builder) {
|
||||
this.a = builder.a;
|
||||
@@ -55,7 +55,7 @@ public final class Request {
|
||||
|
||||
@Nullable
|
||||
public <T> T a(Class<? extends T> cls) {
|
||||
return (T) cls.cast(this.e.get(cls));
|
||||
return cls.cast(this.e.get(cls));
|
||||
}
|
||||
|
||||
public Builder e() {
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package ru.f0x1d.net;
|
||||
|
||||
import static ru.vtosters.lite.utils.Helper.*;
|
||||
|
||||
import android.os.AsyncTask;
|
||||
|
||||
import com.vk.core.network.Network;
|
||||
@@ -13,10 +15,6 @@ import ru.vtosters.lite.utils.Helper;
|
||||
|
||||
public class F0x1dRequest {
|
||||
|
||||
public interface F0x1dRequestCallback {
|
||||
void onResponse(String str);
|
||||
}
|
||||
|
||||
public static void makeRequest(byte[] bArr, F0x1dRequestCallback f0x1dRequestCallback) {
|
||||
new MakeRequestTask(bArr, f0x1dRequestCallback).execute();
|
||||
}
|
||||
@@ -29,11 +27,15 @@ public class F0x1dRequest {
|
||||
new MakeRequestTask(str.getBytes(), f0x1dRequestCallback, true, !z).execute();
|
||||
}
|
||||
|
||||
public interface F0x1dRequestCallback {
|
||||
void onResponse(String str);
|
||||
}
|
||||
|
||||
private static class MakeRequestTask extends AsyncTask<Void, Void, String> {
|
||||
private F0x1dRequestCallback callback;
|
||||
private final F0x1dRequestCallback callback;
|
||||
private boolean mIsPut;
|
||||
private boolean mIsVkToasterRequest;
|
||||
private byte[] url;
|
||||
private final byte[] url;
|
||||
|
||||
public MakeRequestTask(byte[] bArr, F0x1dRequestCallback f0x1dRequestCallback) {
|
||||
this.mIsVkToasterRequest = false;
|
||||
@@ -56,7 +58,7 @@ public class F0x1dRequest {
|
||||
HttpURLConnection httpURLConnection = (HttpURLConnection) new URL(new String(this.url)).openConnection();
|
||||
httpURLConnection.setRequestMethod(this.mIsPut ? "PUT" : "GET");
|
||||
if (this.mIsVkToasterRequest) {
|
||||
httpURLConnection.setRequestProperty("Token", Helper.GetUserToken());
|
||||
httpURLConnection.setRequestProperty("Token", GetUserToken());
|
||||
}
|
||||
if (!this.mIsVkToasterRequest) {
|
||||
httpURLConnection.setRequestProperty("User-Agent", Network.a.a().a());
|
||||
|
||||
@@ -16,14 +16,24 @@ import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
|
||||
public final class NetCall {
|
||||
private NetRequest req;
|
||||
private NetClient cl;
|
||||
private final NetRequest req;
|
||||
private final NetClient cl;
|
||||
|
||||
protected NetCall(NetClient cl, NetRequest req) {
|
||||
this.req = req;
|
||||
this.cl = cl;
|
||||
}
|
||||
|
||||
private static String constructArgs(Map<String, String> args) throws UnsupportedEncodingException {
|
||||
args = new TreeMap<>(args);
|
||||
String str = "";
|
||||
for (Map.Entry<String, String> en : args.entrySet()) {
|
||||
if (!str.isEmpty()) str += "&";
|
||||
str += URLEncoder.encode(en.getKey(), "UTF-8") + "=" + URLEncoder.encode(en.getValue(), "UTF-8");
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
public NetRequest request() {
|
||||
return req;
|
||||
}
|
||||
@@ -65,16 +75,6 @@ public final class NetCall {
|
||||
return r;
|
||||
}
|
||||
|
||||
private static String constructArgs(Map<String, String> args) throws UnsupportedEncodingException {
|
||||
args = new TreeMap<>(args);
|
||||
String str = "";
|
||||
for (Map.Entry<String, String> en : args.entrySet()) {
|
||||
if (!str.isEmpty()) str += "&";
|
||||
str += URLEncoder.encode(en.getKey(), "UTF-8") + "=" + URLEncoder.encode(en.getValue(), "UTF-8");
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
public void enqueue(NetCallback cb) {
|
||||
new Thread() {
|
||||
@Override
|
||||
|
||||
@@ -5,9 +5,39 @@ import java.net.Proxy;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
public class NetClient {
|
||||
private long timeout;
|
||||
private Proxy proxy;
|
||||
private PasswordAuthentication authenticator;
|
||||
private final long timeout;
|
||||
private final Proxy proxy;
|
||||
private final PasswordAuthentication authenticator;
|
||||
|
||||
protected NetClient(Builder b) {
|
||||
timeout = b.timeout;
|
||||
proxy = b.proxy;
|
||||
authenticator = b.auth;
|
||||
}
|
||||
|
||||
public Builder newBuilder() {
|
||||
Builder b = new Builder();
|
||||
b.timeout = timeout;
|
||||
b.proxy = proxy;
|
||||
b.auth = authenticator;
|
||||
return b;
|
||||
}
|
||||
|
||||
public NetCall newCall(NetRequest req) {
|
||||
return new NetCall(this, req);
|
||||
}
|
||||
|
||||
public PasswordAuthentication getAuthenticator() {
|
||||
return authenticator;
|
||||
}
|
||||
|
||||
public Proxy getProxy() {
|
||||
return proxy;
|
||||
}
|
||||
|
||||
public long getTimeout() {
|
||||
return timeout;
|
||||
}
|
||||
|
||||
public static final class Builder {
|
||||
private long timeout;
|
||||
@@ -54,34 +84,4 @@ public class NetClient {
|
||||
return new NetClient(this);
|
||||
}
|
||||
}
|
||||
|
||||
public Builder newBuilder() {
|
||||
Builder b = new Builder();
|
||||
b.timeout = timeout;
|
||||
b.proxy = proxy;
|
||||
b.auth = authenticator;
|
||||
return b;
|
||||
}
|
||||
|
||||
protected NetClient(Builder b) {
|
||||
timeout = b.timeout;
|
||||
proxy = b.proxy;
|
||||
authenticator = b.auth;
|
||||
}
|
||||
|
||||
public NetCall newCall(NetRequest req) {
|
||||
return new NetCall(this, req);
|
||||
}
|
||||
|
||||
public PasswordAuthentication getAuthenticator() {
|
||||
return authenticator;
|
||||
}
|
||||
|
||||
public Proxy getProxy() {
|
||||
return proxy;
|
||||
}
|
||||
|
||||
public long getTimeout() {
|
||||
return timeout;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,9 +4,27 @@ import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
|
||||
public class NetRequest {
|
||||
private String url;
|
||||
private String requestMethod;
|
||||
private Map<String, String> params;
|
||||
private final String url;
|
||||
private final String requestMethod;
|
||||
private final Map<String, String> params;
|
||||
|
||||
protected NetRequest(Builder b) {
|
||||
url = b.url;
|
||||
requestMethod = b.req;
|
||||
params = b.params;
|
||||
}
|
||||
|
||||
public Map<String, String> getRequestParams() {
|
||||
return params;
|
||||
}
|
||||
|
||||
public String url() {
|
||||
return url;
|
||||
}
|
||||
|
||||
public String getRequestMethod() {
|
||||
return requestMethod;
|
||||
}
|
||||
|
||||
public static final class Builder {
|
||||
private String url;
|
||||
@@ -43,22 +61,4 @@ public class NetRequest {
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
protected NetRequest(Builder b) {
|
||||
url = b.url;
|
||||
requestMethod = b.req;
|
||||
params = b.params;
|
||||
}
|
||||
|
||||
public Map<String, String> getRequestParams() {
|
||||
return params;
|
||||
}
|
||||
|
||||
public String url() {
|
||||
return url;
|
||||
}
|
||||
|
||||
public String getRequestMethod() {
|
||||
return requestMethod;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ import java.io.InputStream;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
public final class NetResponse {
|
||||
private byte[] data;
|
||||
private final byte[] data;
|
||||
private int code;
|
||||
|
||||
protected NetResponse(byte[] data) {
|
||||
|
||||
@@ -26,15 +26,11 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import javax.net.ssl.HttpsURLConnection;
|
||||
|
||||
public class GCMFix {
|
||||
private static String agent = String.format("Android-GCM/1.5 (%s %s)", Build.MODEL, Build.MODEL);
|
||||
public static ArrayList<String> langs = new ArrayList<>();
|
||||
private static final String agent = String.format("Android-GCM/1.5 (%s %s)", Build.MODEL, Build.MODEL);
|
||||
private static KeyPair pair;
|
||||
private static int rid = 0;
|
||||
|
||||
public interface Callback {
|
||||
void doCallback(String str);
|
||||
}
|
||||
|
||||
static {
|
||||
genNewKey();
|
||||
}
|
||||
@@ -195,4 +191,8 @@ public class GCMFix {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public interface Callback {
|
||||
void doCallback(String str);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -164,7 +164,7 @@ public class DeviceInfoCollector {
|
||||
declaredField.setAccessible(true);
|
||||
Object obj = declaredField.get(defaultAdapter);
|
||||
if (obj != null) {
|
||||
return (String) obj.getClass().getMethod("getAddress", new Class[0]).invoke(obj, new Object[0]);
|
||||
return (String) obj.getClass().getMethod("getAddress").invoke(obj, new Object[0]);
|
||||
}
|
||||
return null;
|
||||
} catch (Exception e) {
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
package ru.vtosters.lite.dnr;
|
||||
|
||||
import static ru.vtosters.lite.dnr.DNRModule.*;
|
||||
import static ru.vtosters.lite.utils.Helper.*;
|
||||
|
||||
import com.vk.im.engine.models.dialogs.Dialog;
|
||||
import com.vk.im.ui.components.common.DialogAction;
|
||||
|
||||
@@ -12,13 +15,13 @@ public class DNRInjector {
|
||||
public static void inject(Dialog dialog, List<DialogAction> list) {
|
||||
int peerId = dialog.a();
|
||||
|
||||
if (DNRModule.isDnrEnabledFor(peerId)) {
|
||||
if (isDnrEnabledFor(peerId)) {
|
||||
list.add(DialogAction.valueOf("DNR_OFF"));
|
||||
} else {
|
||||
list.add(DialogAction.valueOf("DNR_ON"));
|
||||
}
|
||||
|
||||
if (DNRModule.isDntEnabledFor(peerId)) {
|
||||
if (isDntEnabledFor(peerId)) {
|
||||
list.add(DialogAction.valueOf("DNT_OFF"));
|
||||
} else {
|
||||
list.add(DialogAction.valueOf("DNT_ON"));
|
||||
@@ -26,10 +29,10 @@ public class DNRInjector {
|
||||
}
|
||||
|
||||
public static LinkedHashMap<DialogAction, Integer> injectToHashMap(LinkedHashMap<DialogAction, Integer> hashMap) {
|
||||
hashMap.put(DialogAction.valueOf("DNR_ON"), Helper.getIdentifier("DNR_ON", "string"));
|
||||
hashMap.put(DialogAction.valueOf("DNR_OFF"), Helper.getIdentifier("DNR_OFF", "string"));
|
||||
hashMap.put(DialogAction.valueOf("DNT_ON"), Helper.getIdentifier("DNT_ON", "string"));
|
||||
hashMap.put(DialogAction.valueOf("DNT_OFF"), Helper.getIdentifier("DNT_OFF", "string"));
|
||||
hashMap.put(DialogAction.valueOf("DNR_ON"), getIdentifier("DNR_ON", "string"));
|
||||
hashMap.put(DialogAction.valueOf("DNR_OFF"), getIdentifier("DNR_OFF", "string"));
|
||||
hashMap.put(DialogAction.valueOf("DNT_ON"), getIdentifier("DNT_ON", "string"));
|
||||
hashMap.put(DialogAction.valueOf("DNT_OFF"), getIdentifier("DNT_OFF", "string"));
|
||||
return hashMap;
|
||||
}
|
||||
|
||||
@@ -56,11 +59,11 @@ public class DNRInjector {
|
||||
}
|
||||
|
||||
public static void setDnr(Dialog dialog, boolean value) {
|
||||
DNRModule.hookDNR(dialog.a());
|
||||
hookDNR(dialog.a());
|
||||
}
|
||||
|
||||
public static void setDnt(Dialog dialog, boolean value) {
|
||||
DNRModule.hookDNT(dialog.a());
|
||||
hookDNT(dialog.a());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
package ru.vtosters.lite.dnr;
|
||||
|
||||
import static ru.f0x1d.net.F0x1dRequest.*;
|
||||
import static ru.vtosters.lite.utils.Helper.*;
|
||||
import static ru.vtosters.lite.utils.Proxy.*;
|
||||
|
||||
import com.vk.core.util.ToastUtils;
|
||||
import com.vk.im.engine.commands.messages.SetUserActivityCmd;
|
||||
import com.vk.im.engine.models.dialogs.Dialog;
|
||||
@@ -15,6 +19,7 @@ import ru.vtosters.lite.utils.Proxy;
|
||||
public class DNRModule {
|
||||
public static DoNotReadDBHelper mDoNotReadDBHelper = new DoNotReadDBHelper();
|
||||
public static DoNotTypeDBHelper mDoNotTypeDBHelper = new DoNotTypeDBHelper();
|
||||
public static Dialog mDialog;
|
||||
|
||||
public static boolean isDnrEnabledFor(int id) {
|
||||
var isEnabled = mDoNotReadDBHelper.isEnabledForPeerId(id);
|
||||
@@ -49,13 +54,11 @@ public class DNRModule {
|
||||
}
|
||||
|
||||
public static void hookRead(Dialog dialog) {
|
||||
F0x1dRequest.makeRequest("https://" + Proxy.getApiCom() + "/method/messages.markAsRead?start_message_id=" + dialog.lastMsgVkId + "&peer_id=" + dialog.a() + "&v=5.91&access_token=" + Helper.GetUserToken(), response -> {
|
||||
makeRequest("https://" + getApiCom() + "/method/messages.markAsRead?start_message_id=" + dialog.lastMsgVkId + "&peer_id=" + dialog.a() + "&v=5.91&access_token=" + GetUserToken(), response -> {
|
||||
ToastUtils.a("Чат помечен как прочитанный!");
|
||||
});
|
||||
}
|
||||
|
||||
public static Dialog mDialog;
|
||||
|
||||
public static void hookDNR(int peerId) {
|
||||
mDoNotReadDBHelper.setEnabledForPeerId(peerId, !mDoNotReadDBHelper.isEnabledForPeerId(peerId));
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package ru.vtosters.lite.dnr.helpers;
|
||||
|
||||
import static ru.vtosters.lite.utils.Helper.*;
|
||||
|
||||
import android.content.ContentValues;
|
||||
import android.database.Cursor;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
@@ -13,7 +15,7 @@ import ru.vtosters.lite.utils.Helper;
|
||||
|
||||
public class DoNotReadDBHelper extends SQLiteOpenHelper {
|
||||
public DoNotReadDBHelper() {
|
||||
super(Helper.GetContext(), "dnr", null, 1);
|
||||
super(GetContext(), "dnr", null, 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -64,7 +64,7 @@ public class VideoDownloader {
|
||||
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
|
||||
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
|
||||
request.setTitle(videoFile.toString());
|
||||
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_MOVIES, videoFile.toString() + ".mp4");
|
||||
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_MOVIES, videoFile + ".mp4");
|
||||
((DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE)).enqueue(request);
|
||||
}));
|
||||
builder.show();
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package ru.vtosters.lite.f0x1d;
|
||||
|
||||
import static ru.vtosters.lite.utils.Helper.*;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.Notification;
|
||||
import android.app.NotificationChannel;
|
||||
@@ -35,12 +37,12 @@ public class Crashreporter {
|
||||
}
|
||||
|
||||
static void start(Thread.UncaughtExceptionHandler uncaughtExceptionHandler, Thread thread, Throwable th, Activity activity) {
|
||||
logString = getStackTrace(th) + "\n\n" + new DeviceInfoCollector().collect(Helper.GetContext()).toDeviceName() + "\n VTL Version: " + Prefs.VERSIONNAME + ", build: " + Prefs.getBuildNumber();
|
||||
logString = getStackTrace(th) + "\n\n" + new DeviceInfoCollector().collect(GetContext()).toDeviceName() + "\n VTL Version: " + Prefs.VERSIONNAME + ", build: " + Prefs.getBuildNumber();
|
||||
if (Build.VERSION.SDK_INT >= 26) {
|
||||
var notificationChannel = new NotificationChannel("crashes", "crash", NotificationManager.IMPORTANCE_DEFAULT);
|
||||
notificationChannel.enableVibration(true);
|
||||
notificationChannel.enableLights(true);
|
||||
((NotificationManager) Helper.GetContext().getSystemService(Context.NOTIFICATION_SERVICE)).createNotificationChannel(notificationChannel);
|
||||
((NotificationManager) GetContext().getSystemService(Context.NOTIFICATION_SERVICE)).createNotificationChannel(notificationChannel);
|
||||
}
|
||||
|
||||
var foxbinIntent = new Intent("com.f0x1d.dogbin.ACTION_UPLOAD_TO_FOXBIN");
|
||||
@@ -52,19 +54,19 @@ public class Crashreporter {
|
||||
foxbinIntent.addFlags(Intent.FLAG_ACTIVITY_NO_USER_ACTION);
|
||||
}
|
||||
|
||||
var saveLogIntent = new Intent(Helper.GetContext(), LogWriterService.class);
|
||||
var saveLogIntent = new Intent(GetContext(), LogWriterService.class);
|
||||
saveLogIntent.putExtra("log", logString);
|
||||
saveLogIntent.putExtra("notificationId", 1);
|
||||
var psaveLogIntent = PendingIntent.getService(Helper.GetContext(), 0, saveLogIntent, PendingIntent.FLAG_CANCEL_CURRENT);
|
||||
var psaveLogIntent = PendingIntent.getService(GetContext(), 0, saveLogIntent, PendingIntent.FLAG_CANCEL_CURRENT);
|
||||
|
||||
var builder = new Notification.Builder(Helper.GetContext());
|
||||
var builder = new Notification.Builder(GetContext());
|
||||
builder.setSmallIcon(R.drawable.ic_bug_24);
|
||||
builder.setContentTitle("VTL Крашнулся!");
|
||||
builder.setContentText(logString);
|
||||
builder.setStyle(new Notification.BigTextStyle().bigText(logString));
|
||||
builder.setAutoCancel(true);
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) {
|
||||
builder.addAction(new Notification.Action(0, "Загрузить логи", PendingIntent.getActivity(Helper.GetContext(), (int) (Math.random() * 100.0d), foxbinIntent, PendingIntent.FLAG_CANCEL_CURRENT)));
|
||||
builder.addAction(new Notification.Action(0, "Загрузить логи", PendingIntent.getActivity(GetContext(), (int) (Math.random() * 100.0d), foxbinIntent, PendingIntent.FLAG_CANCEL_CURRENT)));
|
||||
builder.addAction(new Notification.Action(0, "Сохранить в файл", psaveLogIntent));
|
||||
} else {
|
||||
builder.setContentIntent(PendingIntent.getActivity(activity, 0, foxbinIntent, PendingIntent.FLAG_ONE_SHOT));
|
||||
@@ -75,13 +77,13 @@ public class Crashreporter {
|
||||
}
|
||||
|
||||
|
||||
((NotificationManager) Helper.GetContext().getSystemService(Context.NOTIFICATION_SERVICE)).notify(-2147483548, builder.build());
|
||||
((NotificationManager) GetContext().getSystemService(Context.NOTIFICATION_SERVICE)).notify(-2147483548, builder.build());
|
||||
Log.e("VTosters Lite", "crashed: " + th.getLocalizedMessage());
|
||||
uncaughtExceptionHandler.uncaughtException(thread, th);
|
||||
}
|
||||
|
||||
private static boolean isFoxbinInstalled() {
|
||||
var pm = Helper.GetContext().getPackageManager();
|
||||
var pm = GetContext().getPackageManager();
|
||||
try {
|
||||
pm.getPackageInfo("com.f0x1d.dogbin", 0);
|
||||
return true;
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
package ru.vtosters.lite.f0x1d;
|
||||
|
||||
import static android.widget.Toast.*;
|
||||
import static ru.vtosters.lite.utils.Helper.*;
|
||||
|
||||
import android.app.NotificationManager;
|
||||
import android.app.Service;
|
||||
import android.content.Context;
|
||||
@@ -38,12 +41,12 @@ public class LogWriterService extends Service {
|
||||
writeLog(intent, file);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
Toast.makeText(Helper.GetContext(), "Не удалось сохранить лог-файл", Toast.LENGTH_SHORT).show();
|
||||
makeText(GetContext(), "Не удалось сохранить лог-файл", LENGTH_SHORT).show();
|
||||
}
|
||||
var notificationId = intent.getIntExtra("notificationId", 1);
|
||||
var manager = (NotificationManager) Helper.GetContext().getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
var manager = (NotificationManager) GetContext().getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
manager.cancel(notificationId);
|
||||
Toast.makeText(Helper.GetContext(), "Лог-файл был сохранен", Toast.LENGTH_SHORT).show();
|
||||
makeText(GetContext(), "Лог-файл был сохранен", LENGTH_SHORT).show();
|
||||
|
||||
stopSelf();
|
||||
return START_NOT_STICKY;
|
||||
|
||||
@@ -27,18 +27,17 @@ import okhttp3.Response;
|
||||
import ru.vtosters.lite.utils.Prefs;
|
||||
|
||||
public class VTVerifications {
|
||||
public static final HashMap<Integer, Boolean> sServiceAccountsMap = new HashMap<>();
|
||||
private static final String TAG = "VTVerifications";
|
||||
private static final String DEVELOPERS_KEY = "VTNRS3";
|
||||
private static final String PROMETHEUS_KEY = "VTNRS1";
|
||||
private static final String SERVICE_ACCOUNTS_KEY = "VTNRS4";
|
||||
private static final String VERIFICATIONS_KEY = "VTNRS0";
|
||||
private static SharedPreferences mVerificationsCache;
|
||||
private static final HashMap<Integer, Boolean> sDevelopersMap = new HashMap<>();
|
||||
private static final HashMap<Integer, Boolean> sPrometheusMap = new HashMap<>();
|
||||
public static final HashMap<Integer, Boolean> sServiceAccountsMap = new HashMap<>();
|
||||
private static final HashMap<Integer, Boolean> sVerificationsMap = new HashMap<>();
|
||||
|
||||
private static OkHttpClient client = new OkHttpClient();
|
||||
private static SharedPreferences mVerificationsCache;
|
||||
private static final OkHttpClient client = new OkHttpClient();
|
||||
|
||||
public static void load(Context context) {
|
||||
mVerificationsCache = context.getSharedPreferences("vt_another_data", 0);
|
||||
@@ -139,10 +138,7 @@ public class VTVerifications {
|
||||
if (!Prefs.BooleanTrue("VT_Verification")) {
|
||||
return false;
|
||||
}
|
||||
if (isVerified((jSONObject.optString(NavigatorKeys.j) == null || (!jSONObject.optString(NavigatorKeys.j).equals("group") && !jSONObject.optString(NavigatorKeys.j).equals("page"))) ? jSONObject.optInt("id", 0) : -jSONObject.optInt("id", 0))) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
return isVerified((jSONObject.optString(NavigatorKeys.j) == null || (!jSONObject.optString(NavigatorKeys.j).equals("group") && !jSONObject.optString(NavigatorKeys.j).equals("page"))) ? jSONObject.optInt("id", 0) : -jSONObject.optInt("id", 0));
|
||||
}
|
||||
|
||||
public static boolean hasPrometheus(JSONObject jSONObject) {
|
||||
@@ -152,10 +148,7 @@ public class VTVerifications {
|
||||
if (!Prefs.BooleanTrue("VT_Fire")) {
|
||||
return false;
|
||||
}
|
||||
if (hasPrometheus((jSONObject.optString(NavigatorKeys.j) == null || (!jSONObject.optString(NavigatorKeys.j).equals("group") && !jSONObject.optString(NavigatorKeys.j).equals("page"))) ? jSONObject.optInt("id", 0) : -jSONObject.optInt("id", 0))) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
return hasPrometheus((jSONObject.optString(NavigatorKeys.j) == null || (!jSONObject.optString(NavigatorKeys.j).equals("group") && !jSONObject.optString(NavigatorKeys.j).equals("page"))) ? jSONObject.optInt("id", 0) : -jSONObject.optInt("id", 0));
|
||||
}
|
||||
|
||||
public static boolean hasDeveloper(JSONObject jSONObject) {
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package ru.vtosters.lite.foaf;
|
||||
|
||||
import static android.widget.Toast.*;
|
||||
import static ru.vtosters.lite.utils.Helper.*;
|
||||
import static ru.vtosters.lite.utils.Proxy.getApiCom;
|
||||
|
||||
import android.app.ProgressDialog;
|
||||
@@ -32,7 +34,7 @@ public class FoafBase {
|
||||
private static final Pattern FOAF_REGEX = Pattern.compile("<ya:created dc:date=\"(.+?)\"\\/>");
|
||||
private static final Pattern FOAF_REGEX_LAST_SEEN = Pattern.compile("<ya:lastLoggedIn dc:date=\"(.*)(((\\+|-)\\d\\d):(\\d\\d))\"\\/>");
|
||||
private static final Pattern FOAF_REGEX_LOGIN = Pattern.compile("<ya:created dc:date=\"(.+?)\"\\/>");
|
||||
private static OkHttpClient client = new OkHttpClient();
|
||||
private static final OkHttpClient client = new OkHttpClient();
|
||||
|
||||
public static int GetLastSeenInt(int i) throws ParseException, IOException {
|
||||
Matcher matcher = FOAF_REGEX_LAST_SEEN.matcher(client.newCall(new Request.Builder().url(getLink(i)).build()).b().body().string());
|
||||
@@ -81,10 +83,10 @@ public class FoafBase {
|
||||
String normalHumanDate = getNormalHumanDate(matcher.group(1));
|
||||
getNormalHumanDate(matcher2.group(1));
|
||||
AlertDialog.a a2 = new VkAlertDialog.a(context).a(R.string.addinf);
|
||||
a2.b(Helper.getString("foafid") + " " + i + Helper.getString("foafregdate") + " " + normalHumanDate + Helper.getString("foafdate") + " " + daysPassedFromFoafDate(normalHumanDate)).b(17039370, (DialogInterface.OnClickListener) null).b().show();
|
||||
a2.b(getString("foafid") + " " + i + getString("foafregdate") + " " + normalHumanDate + getString("foafdate") + " " + daysPassedFromFoafDate(normalHumanDate)).b(17039370, null).b().show();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
Toast.makeText(context, Helper.getString("foaferr"), Toast.LENGTH_SHORT).show();
|
||||
makeText(context, getString("foaferr"), LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,16 +6,16 @@ import android.preference.PreferenceManager;
|
||||
import ru.vtosters.lite.utils.Helper;
|
||||
|
||||
public class TGPref {
|
||||
private static SharedPreferences Prefs = PreferenceManager.getDefaultSharedPreferences(Helper.GetContext());
|
||||
private static final SharedPreferences Prefs = PreferenceManager.getDefaultSharedPreferences(Helper.GetContext());
|
||||
|
||||
private static String
|
||||
CNCT_METHOD = "VTGS:CM",
|
||||
TG_BOTKEY = "VTGS:BKey",
|
||||
TG_PROXYIP = "VTGS:PIP",
|
||||
TG_PROXYPORT = "VTGS:PPT",
|
||||
TG_PROXYPASS = "VTGS:PPS",
|
||||
TG_PROXYUSER = "VTGS:PUS",
|
||||
TG_PROXYUSEPASS = "VTGS:PUsePassword";
|
||||
private static final String
|
||||
CNCT_METHOD = "VTGS:CM";
|
||||
private static final String TG_BOTKEY = "VTGS:BKey";
|
||||
private static final String TG_PROXYIP = "VTGS:PIP";
|
||||
private static final String TG_PROXYPORT = "VTGS:PPT";
|
||||
private static final String TG_PROXYPASS = "VTGS:PPS";
|
||||
private static final String TG_PROXYUSER = "VTGS:PUS";
|
||||
private static final String TG_PROXYUSEPASS = "VTGS:PUsePassword";
|
||||
|
||||
public static int getTGConnectMethod() {
|
||||
return Integer.parseInt(Prefs.getString(CNCT_METHOD, "0"));
|
||||
@@ -37,6 +37,10 @@ public class TGPref {
|
||||
return Prefs.getString(TG_PROXYIP, null);
|
||||
}
|
||||
|
||||
public static void setTGProxyIP(String ip) {
|
||||
Prefs.edit().putString(TG_PROXYIP, ip).apply();
|
||||
}
|
||||
|
||||
public static int getTGProxyPort() {
|
||||
return Prefs.getInt(TG_PROXYPORT, 0);
|
||||
}
|
||||
@@ -53,10 +57,6 @@ public class TGPref {
|
||||
return Prefs.getString(TG_PROXYUSER, "");
|
||||
}
|
||||
|
||||
public static void setTGProxyIP(String ip) {
|
||||
Prefs.edit().putString(TG_PROXYIP, ip).apply();
|
||||
}
|
||||
|
||||
public static void setTGProxyUserPass(String user, String pass) {
|
||||
Prefs.edit().putString(TG_PROXYUSER, user).putString(TG_PROXYPASS, pass)
|
||||
.apply();
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package ru.vtosters.lite.tgs;
|
||||
|
||||
import static ru.vtosters.lite.utils.Helper.*;
|
||||
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
|
||||
@@ -23,21 +25,19 @@ import java.util.Stack;
|
||||
import ru.vtosters.lite.utils.Helper;
|
||||
|
||||
public class TGRoot {
|
||||
private final static Stack<Integer> pendingStickers = new Stack<>();
|
||||
|
||||
public static final int N = 76820000;
|
||||
public static final int X = 976820000;
|
||||
|
||||
private static String TAG = "TGRoot";
|
||||
private final static Stack<Integer> pendingStickers = new Stack<>();
|
||||
private static final String TAG = "TGRoot";
|
||||
|
||||
public static String getSummary() {
|
||||
switch (TGPref.getTGConnectMethod()) {
|
||||
case 0:
|
||||
return Helper.getString("ctypedirect");
|
||||
return getString("ctypedirect");
|
||||
case 2:
|
||||
return Helper.getString("ctypesocks");
|
||||
return getString("ctypesocks");
|
||||
default:
|
||||
return Helper.getString("ctypedisabled");
|
||||
return getString("ctypedisabled");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ public class TGRoot {
|
||||
int stickerId = (id - N) % 120;
|
||||
|
||||
TelegramStickersPack pack = null;
|
||||
for (TelegramStickersPack p : TelegramStickersService.getInstance(Helper.GetContext()).getActivePacksListReference()) {
|
||||
for (TelegramStickersPack p : TelegramStickersService.getInstance(GetContext()).getActivePacksListReference()) {
|
||||
if (p.index == index) {
|
||||
pack = p;
|
||||
break;
|
||||
@@ -70,7 +70,7 @@ public class TGRoot {
|
||||
|
||||
public static void injectStickers(List<StickerStockItem> list) {
|
||||
try {
|
||||
List<TelegramStickersPack> packs = TelegramStickersService.getInstance(Helper.GetContext()).getActivePacksListReference();
|
||||
List<TelegramStickersPack> packs = TelegramStickersService.getInstance(GetContext()).getActivePacksListReference();
|
||||
for (int i = packs.size() - 1; i >= 0; i--)
|
||||
list.add(0, toStickerPack(packs.get(i)));
|
||||
} catch (Exception e) {
|
||||
@@ -83,7 +83,7 @@ public class TGRoot {
|
||||
int index = (stickerId - N) / 120;
|
||||
|
||||
TelegramStickersPack p = null;
|
||||
for (TelegramStickersPack p_ : TelegramStickersService.getInstance(Helper.GetContext())
|
||||
for (TelegramStickersPack p_ : TelegramStickersService.getInstance(GetContext())
|
||||
.getActivePacksListReference()) {
|
||||
if (p_.index == index) {
|
||||
p = p_;
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package ru.vtosters.lite.ui;
|
||||
|
||||
import static ru.vtosters.lite.utils.Helper.*;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
import android.content.res.ColorStateList;
|
||||
@@ -27,17 +29,13 @@ import ru.vtosters.lite.utils.Themes;
|
||||
|
||||
public class PreferencesUtil {
|
||||
|
||||
public interface EditTextPrefChangeListener {
|
||||
boolean onChanged(Preference preference, Object obj);
|
||||
}
|
||||
|
||||
public static Drawable setTint(Context ctx, Drawable d) {
|
||||
d.setColorFilter(Themes.getAccentColor(), PorterDuff.Mode.SRC_ATOP);
|
||||
return d;
|
||||
}
|
||||
|
||||
public static void addListPreference(MaterialPreferenceToolbarFragment fragment, String key, String def, CharSequence title, CharSequence[] entries, CharSequence[] entriesValue) {
|
||||
ListPreference preference = new ListPreference(Helper.GetContext());
|
||||
ListPreference preference = new ListPreference(GetContext());
|
||||
preference.a(entries);
|
||||
preference.b(entriesValue);
|
||||
preference.c(title); // setTitle
|
||||
@@ -48,7 +46,7 @@ public class PreferencesUtil {
|
||||
}
|
||||
|
||||
public static void addMaterialSwitchPreference(MaterialPreferenceToolbarFragment materialPreferenceToolbarFragment, String key, CharSequence title, CharSequence summary, boolean defValue) {
|
||||
MaterialSwitchPreference materialSwitchPreference = new MaterialSwitchPreference(Helper.GetContext());
|
||||
MaterialSwitchPreference materialSwitchPreference = new MaterialSwitchPreference(GetContext());
|
||||
materialSwitchPreference.c(title); // setTitle
|
||||
materialSwitchPreference.b(summary); // setSummary
|
||||
materialSwitchPreference.d(key); // setKey
|
||||
@@ -58,7 +56,7 @@ public class PreferencesUtil {
|
||||
}
|
||||
|
||||
public static void addMaterialSwitchPreference(MaterialPreferenceToolbarFragment fragment, String key, CharSequence title, CharSequence summary, int icon, boolean defValue, Preference.b listener) {
|
||||
MaterialSwitchPreference materialSwitchPreference = new MaterialSwitchPreference(Helper.GetContext());
|
||||
MaterialSwitchPreference materialSwitchPreference = new MaterialSwitchPreference(GetContext());
|
||||
materialSwitchPreference.c(title); // setTitle
|
||||
materialSwitchPreference.b(summary); // setSummary
|
||||
materialSwitchPreference.d(key); // setKey
|
||||
@@ -66,13 +64,13 @@ public class PreferencesUtil {
|
||||
materialSwitchPreference.a(listener); // setOnPreferenceClickListener
|
||||
|
||||
if (icon != 1)
|
||||
materialSwitchPreference.a(setTint(Helper.GetContext(), ContextCompat.getDrawable(Helper.GetContext(), icon))); // preference.setIcon
|
||||
materialSwitchPreference.a(setTint(GetContext(), ContextCompat.getDrawable(GetContext(), icon))); // preference.setIcon
|
||||
|
||||
fragment.ay().d(materialSwitchPreference); // fragment.getPreferenceScreen().addPreference(preference)
|
||||
}
|
||||
|
||||
public static void addMaterialSwitchPreference(MaterialPreferenceToolbarFragment fragment, String key, CharSequence title, CharSequence summary, String icon, boolean defValue, Preference.b listener) {
|
||||
MaterialSwitchPreference materialSwitchPreference = new MaterialSwitchPreference(Helper.GetContext());
|
||||
MaterialSwitchPreference materialSwitchPreference = new MaterialSwitchPreference(GetContext());
|
||||
materialSwitchPreference.c(title); // setTitle
|
||||
materialSwitchPreference.b(summary); // setSummary
|
||||
materialSwitchPreference.d(key); // setKey
|
||||
@@ -80,14 +78,14 @@ public class PreferencesUtil {
|
||||
fragment.ay().d(materialSwitchPreference); // materialPreferenceToolbarFragment.getPreferenceScreen().addPreference(preference)
|
||||
|
||||
if (icon != null)
|
||||
materialSwitchPreference.a(setTint(Helper.GetContext(), getDrawable(Helper.GetContext(), icon))); // preference.setIcon
|
||||
materialSwitchPreference.a(setTint(GetContext(), getDrawable(GetContext(), icon))); // preference.setIcon
|
||||
materialSwitchPreference.a(listener); // setOnPreferenceClickListener(listener)
|
||||
|
||||
fragment.ay().d(materialSwitchPreference); // fragment.getPreferenceScreen().addPreference(preference)
|
||||
}
|
||||
|
||||
public static void addPreference(MaterialPreferenceToolbarFragment fragment, String key, CharSequence title, CharSequence summary) {
|
||||
Preference preference = new Preference(Helper.GetContext());
|
||||
Preference preference = new Preference(GetContext());
|
||||
preference.b(summary); // setSummary
|
||||
preference.c(title); // setTitle
|
||||
preference.d(key); // setKey
|
||||
@@ -96,64 +94,64 @@ public class PreferencesUtil {
|
||||
}
|
||||
|
||||
public static void addPreference(MaterialPreferenceToolbarFragment fragment, CharSequence title, CharSequence summary, @Nullable String icon, Preference.c listener) {
|
||||
Preference preference = new Preference(Helper.GetContext());
|
||||
Preference preference = new Preference(GetContext());
|
||||
preference.b(summary); // setSummary
|
||||
preference.c(title); // setTitle
|
||||
|
||||
if (icon != null)
|
||||
preference.a(setTint(Helper.GetContext(), getDrawable(Helper.GetContext(), icon))); // preference.setIcon
|
||||
preference.a(setTint(GetContext(), getDrawable(GetContext(), icon))); // preference.setIcon
|
||||
preference.a(listener); // preference.setOnPreferenceClickListener(listener)
|
||||
|
||||
fragment.ay().d(preference); // fragment.getPreferenceScreen().addPreference(preference)
|
||||
}
|
||||
|
||||
public static void addPreference(MaterialPreferenceToolbarFragment fragment, String key, CharSequence title, CharSequence summary, @Nullable String icon, Preference.c listener) {
|
||||
Preference preference = new Preference(Helper.GetContext());
|
||||
Preference preference = new Preference(GetContext());
|
||||
preference.b(summary); // setSummary
|
||||
preference.c(title); // setTitle
|
||||
preference.d(key); // setKey
|
||||
|
||||
if (icon != null)
|
||||
preference.a(setTint(Helper.GetContext(), getDrawable(Helper.GetContext(), icon))); // preference.setIcon
|
||||
preference.a(setTint(GetContext(), getDrawable(GetContext(), icon))); // preference.setIcon
|
||||
preference.a(listener); // preference.setOnPreferenceClickListener(listener)
|
||||
|
||||
fragment.ay().d(preference); // fragment.getPreferenceScreen().addPreference(preference)
|
||||
}
|
||||
|
||||
public static void addPreferenceCategory(MaterialPreferenceToolbarFragment fragment, CharSequence title) {
|
||||
PreferenceCategory preference = new PreferenceCategory(Helper.GetContext(), null);
|
||||
PreferenceCategory preference = new PreferenceCategory(GetContext(), null);
|
||||
preference.c(title); // setTitle
|
||||
fragment.ay().d(preference); // fragment.getPreferenceScreen().addPreference(preference)
|
||||
}
|
||||
|
||||
public static void addPreferenceCategory(MaterialPreferenceToolbarFragment fragment, CharSequence title, int collapsedSize) {
|
||||
PreferenceCategory preference = new PreferenceCategory(Helper.GetContext(), null);
|
||||
PreferenceCategory preference = new PreferenceCategory(GetContext(), null);
|
||||
preference.c(title); // setTitle
|
||||
fragment.ay().d(preference); // fragment.getPreferenceScreen().addPreference(preference)
|
||||
}
|
||||
|
||||
public static void addEditTextPreference(MaterialPreferenceToolbarFragment fragment, String key, CharSequence title, EditTextPrefChangeListener editTextPrefChangeListener) {
|
||||
Preference preference = new Preference(Helper.GetContext());
|
||||
Preference preference = new Preference(GetContext());
|
||||
|
||||
preference.c(title); // setTitle
|
||||
preference.d(key); // setKey
|
||||
preference.a(preference1 -> {
|
||||
LinearLayout linearLayout = new LinearLayout(Helper.GetContext());
|
||||
LinearLayout linearLayout = new LinearLayout(GetContext());
|
||||
|
||||
final EditText editText = new EditText(Helper.GetContext());
|
||||
editText.setText(PreferenceManager.getDefaultSharedPreferences(Helper.GetContext()).getString(key, ""));
|
||||
final EditText editText = new EditText(GetContext());
|
||||
editText.setText(PreferenceManager.getDefaultSharedPreferences(GetContext()).getString(key, ""));
|
||||
editText.setHint(title);
|
||||
editText.setHintTextColor(PreferencesUtil.getSTextColor(Helper.GetContext()));
|
||||
editText.setHintTextColor(PreferencesUtil.getSTextColor(GetContext()));
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
editText.setBackgroundTintList(ColorStateList.valueOf(PreferencesUtil.getTextColor(Helper.GetContext())));
|
||||
editText.setBackgroundTintList(ColorStateList.valueOf(PreferencesUtil.getTextColor(GetContext())));
|
||||
} else {
|
||||
ViewCompat.setBackgroundTintList(editText, ColorStateList.valueOf(PreferencesUtil.getTextColor(Helper.GetContext())));
|
||||
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(Helper.convertDpToPixel(24f), 0, Helper.convertDpToPixel(24f), 0);
|
||||
margin.setMargins(convertDpToPixel(24f), 0, convertDpToPixel(24f), 0);
|
||||
editText.setLayoutParams(margin);
|
||||
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(fragment.p());
|
||||
@@ -164,7 +162,7 @@ public class PreferencesUtil {
|
||||
if (!change)
|
||||
return;
|
||||
|
||||
PreferenceManager.getDefaultSharedPreferences(Helper.GetContext())
|
||||
PreferenceManager.getDefaultSharedPreferences(GetContext())
|
||||
.edit()
|
||||
.putString(key, editText.getText().toString())
|
||||
.apply();
|
||||
@@ -192,4 +190,8 @@ public class PreferencesUtil {
|
||||
var id = ctx.getResources().getIdentifier(name, "drawable", ctx.getPackageName());
|
||||
return ContextCompat.getDrawable(ctx, id);
|
||||
}
|
||||
|
||||
public interface EditTextPrefChangeListener {
|
||||
boolean onChanged(Preference preference, Object obj);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package ru.vtosters.lite.ui.dialogs;
|
||||
|
||||
import static ru.vtosters.lite.utils.Helper.*;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
@@ -16,7 +18,7 @@ import ru.vtosters.lite.utils.Prefs;
|
||||
public class DisableBattery {
|
||||
public static void alert(Activity activity) {
|
||||
if (OEMDetector.isOEM() && Build.VERSION.SDK_INT >= 23 && Prefs.BooleanTrue("showDoze")) {
|
||||
final Context context = Helper.GetContext();
|
||||
final Context context = GetContext();
|
||||
if (!((PowerManager) context.getSystemService(Context.POWER_SERVICE)).isIgnoringBatteryOptimizations(context.getPackageName())) {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
|
||||
builder.setTitle("Выключите оптимизацию батареи!");
|
||||
@@ -36,7 +38,7 @@ public class DisableBattery {
|
||||
builder.setNeutralButton("Игнорировать", new DialogInterface.OnClickListener() {
|
||||
@Override // android.content.DialogInterface.OnClickListener
|
||||
public void onClick(DialogInterface dialogInterface, int i) {
|
||||
Helper.edit().putBoolean("showDoze", false).apply();
|
||||
edit().putBoolean("showDoze", false).apply();
|
||||
}
|
||||
});
|
||||
builder.show();
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package ru.vtosters.lite.ui.dialogs;
|
||||
|
||||
import static ru.vtosters.lite.utils.Helper.*;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
@@ -14,7 +16,7 @@ import ru.vtosters.lite.utils.Prefs;
|
||||
|
||||
public class InstallGMS {
|
||||
public static void alert(final Activity activity) {
|
||||
if (!Helper.IsGmsInstalled()) {
|
||||
if (!IsGmsInstalled()) {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
|
||||
builder.setTitle("Внимание!");
|
||||
builder.setMessage(Text());
|
||||
@@ -23,15 +25,15 @@ public class InstallGMS {
|
||||
|
||||
@Override
|
||||
public void onClick(DialogInterface dialogInterface, int i) {
|
||||
Helper.edit().putBoolean("showAlertGms", false).apply();
|
||||
edit().putBoolean("showAlertGms", false).apply();
|
||||
}
|
||||
});
|
||||
builder.setNeutralButton("Установить GMS", new DialogInterface.OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(DialogInterface dialogInterface, int i) {
|
||||
Helper.edit().putBoolean("showAlertGms", false).apply();
|
||||
Context context = Helper.GetContext();
|
||||
edit().putBoolean("showAlertGms", false).apply();
|
||||
Context context = GetContext();
|
||||
Intent a2 = new Navigator(InstallGMSFragment.class).a(context);
|
||||
context.startActivity(a2);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package ru.vtosters.lite.ui.dialogs;
|
||||
|
||||
import static ru.vtosters.lite.utils.Helper.*;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.content.DialogInterface;
|
||||
@@ -24,14 +26,14 @@ public class Start {
|
||||
|
||||
@Override // android.content.DialogInterface.OnClickListener
|
||||
public void onClick(DialogInterface dialogInterface, int i) {
|
||||
Helper.edit().putBoolean("showAlert", false).apply();
|
||||
edit().putBoolean("showAlert", false).apply();
|
||||
}
|
||||
});
|
||||
builder.setNeutralButton("Новости", new DialogInterface.OnClickListener() {
|
||||
|
||||
@Override // android.content.DialogInterface.OnClickListener
|
||||
public void onClick(DialogInterface dialogInterface, int i) {
|
||||
Helper.edit().putBoolean("showAlert", false).apply();
|
||||
edit().putBoolean("showAlert", false).apply();
|
||||
activity.startActivity(new Intent("android.intent.action.VIEW").setData(Uri.parse("https://t.me/vtosters")));
|
||||
}
|
||||
});
|
||||
|
||||
@@ -17,22 +17,22 @@ public class InterfaceFragment extends MaterialPreferenceToolbarFragment {
|
||||
prefs();
|
||||
}
|
||||
|
||||
public class a implements Preference.b {
|
||||
@Override // android.support.v7.preference.Preference.b
|
||||
public boolean a(Preference preference, Object obj) {
|
||||
return InterfaceFragment.this.restart(preference, obj);
|
||||
}
|
||||
|
||||
a() {
|
||||
}
|
||||
}
|
||||
|
||||
private void prefs() {
|
||||
a("newfeed").a((Preference.b) new a());
|
||||
a("newfeed").a(new a());
|
||||
}
|
||||
|
||||
public boolean restart(Preference preference, Object obj) {
|
||||
ToastUtils.a(Helper.getString("restartapp"));
|
||||
return true;
|
||||
}
|
||||
|
||||
public class a implements Preference.b {
|
||||
a() {
|
||||
}
|
||||
|
||||
@Override // android.support.v7.preference.Preference.b
|
||||
public boolean a(Preference preference, Object obj) {
|
||||
return InterfaceFragment.this.restart(preference, obj);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package ru.vtosters.lite.ui.fragments;
|
||||
|
||||
import static android.widget.Toast.*;
|
||||
import static ru.vtosters.lite.utils.Helper.*;
|
||||
import static ru.vtosters.lite.utils.SettBackup.backupSettings;
|
||||
import static ru.vtosters.lite.utils.SettBackup.deletePrefs;
|
||||
import static ru.vtosters.lite.utils.SettBackup.restoreBackup;
|
||||
@@ -28,23 +30,6 @@ import ru.vtosters.lite.utils.Helper;
|
||||
|
||||
public class OtherFragment extends MaterialPreferenceToolbarFragment {
|
||||
|
||||
static class c implements Preference.c {
|
||||
@Override // android.support.v7.preference.Preference.c
|
||||
public boolean a(Preference preference) {
|
||||
copy(Helper.GetContext(), Helper.GetUserToken());
|
||||
return true;
|
||||
}
|
||||
|
||||
public static void copy(Context context, String str) {
|
||||
((ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE)).setPrimaryClip(ClipData.newPlainText("MBH-ST", str));
|
||||
Toast.makeText(context, Helper.getString("copybtn"), Toast.LENGTH_SHORT).show();
|
||||
ToastUtils.a(Helper.getString("tokenwarning"));
|
||||
}
|
||||
|
||||
c() {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void b(Bundle bundle) {
|
||||
super.b(bundle);
|
||||
@@ -52,19 +37,49 @@ public class OtherFragment extends MaterialPreferenceToolbarFragment {
|
||||
prefs();
|
||||
}
|
||||
|
||||
private void prefs() {
|
||||
a("firebasefix").a(new a());
|
||||
a("applicationstop").a(new b());
|
||||
a("tokencopy").a(new c());
|
||||
a("applicationrestart").a(new d());
|
||||
a("clearcache").a(new e());
|
||||
a("stickfix").a(new f());
|
||||
a("deleteprefs").a(new deleteprefs());
|
||||
|
||||
// a("saveprefs").a((Preference.c) new saveprefs());
|
||||
// a("restoreprefs").a((Preference.c) new restoreprefs());
|
||||
}
|
||||
|
||||
static class c implements Preference.c {
|
||||
c() {
|
||||
}
|
||||
|
||||
public static void copy(Context context, String str) {
|
||||
((ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE)).setPrimaryClip(ClipData.newPlainText("MBH-ST", str));
|
||||
makeText(context, getString("copybtn"), LENGTH_SHORT).show();
|
||||
ToastUtils.a(getString("tokenwarning"));
|
||||
}
|
||||
|
||||
@Override // android.support.v7.preference.Preference.c
|
||||
public boolean a(Preference preference) {
|
||||
copy(GetContext(), GetUserToken());
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public class e implements Preference.c {
|
||||
e() {
|
||||
}
|
||||
|
||||
@Override // android.support.v7.preference.Preference.c
|
||||
public boolean a(Preference preference) {
|
||||
VKImageLoader.b();
|
||||
ImEngineProvider.a().h();
|
||||
AudioMessageUtils.j();
|
||||
FileUtils.l();
|
||||
ToastUtils.a(Helper.getString("cachecleaned"));
|
||||
ToastUtils.a(getString("cachecleaned"));
|
||||
return true;
|
||||
}
|
||||
|
||||
e() {
|
||||
}
|
||||
}
|
||||
|
||||
public class b implements Preference.c {
|
||||
@@ -79,13 +94,13 @@ public class OtherFragment extends MaterialPreferenceToolbarFragment {
|
||||
}
|
||||
|
||||
public class d implements Preference.c {
|
||||
@Override // android.support.v7.preference.Preference.c
|
||||
public boolean a(Preference preference) {
|
||||
Helper.restarting();
|
||||
return true;
|
||||
d() {
|
||||
}
|
||||
|
||||
d() {
|
||||
@Override // android.support.v7.preference.Preference.c
|
||||
public boolean a(Preference preference) {
|
||||
restarting();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -97,74 +112,61 @@ public class OtherFragment extends MaterialPreferenceToolbarFragment {
|
||||
public boolean a(Preference preference) {
|
||||
VKAccount b = VKAccountManager.b();
|
||||
PushSubscriber.a.a(b.b(), b.c());
|
||||
ToastUtils.a(Helper.getString("fcmtokenrem"));
|
||||
ToastUtils.a(getString("fcmtokenrem"));
|
||||
AppContextHolder.a.getSharedPreferences("gcm", 0).edit().clear().apply();
|
||||
OtherFragment.this.aB().postDelayed(() -> {
|
||||
PushSubscriber.a.a(true);
|
||||
ToastUtils.a(Helper.getString("fcmtokenget"));
|
||||
ToastUtils.a(Helper.getString("fcmtokenfixed"));
|
||||
ToastUtils.a(getString("fcmtokenget"));
|
||||
ToastUtils.a(getString("fcmtokenfixed"));
|
||||
}, 1000);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public class f implements Preference.c {
|
||||
@Override // android.support.v7.preference.Preference.c
|
||||
public boolean a(Preference preference) {
|
||||
SharedPreferences prefs = Helper.GetContext().getSharedPreferences("stickers", Context.MODE_PRIVATE);
|
||||
prefs.edit().clear().commit();
|
||||
Helper.restarting();
|
||||
return true;
|
||||
f() {
|
||||
}
|
||||
|
||||
f() {
|
||||
@Override // android.support.v7.preference.Preference.c
|
||||
public boolean a(Preference preference) {
|
||||
SharedPreferences prefs = GetContext().getSharedPreferences("stickers", Context.MODE_PRIVATE);
|
||||
prefs.edit().clear().commit();
|
||||
restarting();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public class deleteprefs implements Preference.c {
|
||||
deleteprefs() {
|
||||
}
|
||||
|
||||
@Override // android.support.v7.preference.Preference.c
|
||||
public boolean a(Preference preference) {
|
||||
deletePrefs();
|
||||
Helper.restarting();
|
||||
restarting();
|
||||
return true;
|
||||
}
|
||||
|
||||
deleteprefs() {
|
||||
}
|
||||
}
|
||||
|
||||
public class saveprefs implements Preference.c {
|
||||
saveprefs() {
|
||||
}
|
||||
|
||||
@Override // android.support.v7.preference.Preference.c
|
||||
public boolean a(Preference preference) {
|
||||
backupSettings();
|
||||
return true;
|
||||
}
|
||||
|
||||
saveprefs() {
|
||||
}
|
||||
}
|
||||
|
||||
public class restoreprefs implements Preference.c {
|
||||
restoreprefs() {
|
||||
}
|
||||
|
||||
@Override // android.support.v7.preference.Preference.c
|
||||
public boolean a(Preference preference) {
|
||||
restoreBackup();
|
||||
return true;
|
||||
}
|
||||
|
||||
restoreprefs() {
|
||||
}
|
||||
}
|
||||
|
||||
private void prefs() {
|
||||
a("firebasefix").a((Preference.c) new a());
|
||||
a("applicationstop").a((Preference.c) new b());
|
||||
a("tokencopy").a((Preference.c) new c());
|
||||
a("applicationrestart").a((Preference.c) new d());
|
||||
a("clearcache").a((Preference.c) new e());
|
||||
a("stickfix").a((Preference.c) new f());
|
||||
a("deleteprefs").a((Preference.c) new deleteprefs());
|
||||
|
||||
// a("saveprefs").a((Preference.c) new saveprefs());
|
||||
// a("restoreprefs").a((Preference.c) new restoreprefs());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,21 +12,6 @@ import ru.vtosters.lite.utils.IconHelper;
|
||||
|
||||
public class ThemesFragment extends MaterialPreferenceToolbarFragment {
|
||||
|
||||
public class a implements Preference.b {
|
||||
@Override // android.support.v7.preference.Preference.b
|
||||
public boolean a(Preference preference, Object obj) {
|
||||
return ThemesFragment.this.apply(preference, obj);
|
||||
}
|
||||
}
|
||||
|
||||
public static class b implements Preference.b {
|
||||
@Override // android.support.v7.preference.Preference.b
|
||||
public boolean a(Preference preference, Object obj) {
|
||||
ToastUtils.a(Helper.getString("restartapp"));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void b(Bundle bundle) {
|
||||
super.b(bundle);
|
||||
@@ -45,8 +30,23 @@ public class ThemesFragment extends MaterialPreferenceToolbarFragment {
|
||||
}
|
||||
|
||||
private void prefs() {
|
||||
a("iconvk").a((Preference.b) new a());
|
||||
a("darktheme").a((Preference.b) new b());
|
||||
a("lighttheme").a((Preference.b) new b());
|
||||
a("iconvk").a(new a());
|
||||
a("darktheme").a(new b());
|
||||
a("lighttheme").a(new b());
|
||||
}
|
||||
|
||||
public static class b implements Preference.b {
|
||||
@Override // android.support.v7.preference.Preference.b
|
||||
public boolean a(Preference preference, Object obj) {
|
||||
ToastUtils.a(Helper.getString("restartapp"));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public class a implements Preference.b {
|
||||
@Override // android.support.v7.preference.Preference.b
|
||||
public boolean a(Preference preference, Object obj) {
|
||||
return ThemesFragment.this.apply(preference, obj);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package ru.vtosters.lite.ui.fragments.dockbar;
|
||||
|
||||
import static ru.vtosters.lite.utils.Helper.*;
|
||||
|
||||
import android.content.res.ColorStateList;
|
||||
import android.graphics.Typeface;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
@@ -40,51 +42,51 @@ public class DockBarAdapter extends RecyclerView.a
|
||||
}
|
||||
|
||||
private View createTabItem() {
|
||||
LinearLayout container = new LinearLayout(Helper.GetContext());
|
||||
LinearLayout container = new LinearLayout(GetContext());
|
||||
container.setTag("tab_item_container");
|
||||
container.setGravity(Gravity.CENTER_VERTICAL);
|
||||
container.setOrientation(LinearLayout.HORIZONTAL);
|
||||
container.setPadding(
|
||||
Helper.convertDpToPixel(12),
|
||||
Helper.convertDpToPixel(12),
|
||||
Helper.convertDpToPixel(12),
|
||||
Helper.convertDpToPixel(12)
|
||||
convertDpToPixel(12),
|
||||
convertDpToPixel(12),
|
||||
convertDpToPixel(12),
|
||||
convertDpToPixel(12)
|
||||
);
|
||||
container.setLayoutParams(new LinearLayout.LayoutParams(-1, Helper.convertDpToPixel(48)));
|
||||
container.setLayoutParams(new LinearLayout.LayoutParams(-1, convertDpToPixel(48)));
|
||||
|
||||
ImageView icon = new ImageView(Helper.GetContext());
|
||||
ImageView icon = new ImageView(GetContext());
|
||||
icon.setTag("icon");
|
||||
icon.setImageTintList(ColorStateList.valueOf(Themes.getAccentColor()));
|
||||
icon.setLayoutParams(new LinearLayout.LayoutParams(
|
||||
Helper.convertDpToPixel(24),
|
||||
Helper.convertDpToPixel(24)));
|
||||
convertDpToPixel(24),
|
||||
convertDpToPixel(24)));
|
||||
container.addView(icon);
|
||||
|
||||
TextView title = new TextView(Helper.GetContext());
|
||||
TextView title = new TextView(GetContext());
|
||||
title.setTag("title");
|
||||
title.setTextSize(16.0f);
|
||||
title.setTypeface(Typeface.DEFAULT_BOLD);
|
||||
title.setTextColor(Themes.getTextAttr());
|
||||
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(-1, -2);
|
||||
params.weight = 1;
|
||||
params.leftMargin = Helper.convertDpToPixel(16);
|
||||
params.leftMargin = convertDpToPixel(16);
|
||||
container.addView(title, params);
|
||||
|
||||
return container;
|
||||
}
|
||||
|
||||
private View createGroupTitle() {
|
||||
LinearLayout layout = new LinearLayout(Helper.GetContext());
|
||||
LinearLayout layout = new LinearLayout(GetContext());
|
||||
layout.setLayoutParams(new LinearLayout.LayoutParams(-1, -2));
|
||||
|
||||
TextView title = new TextView(Helper.GetContext());
|
||||
TextView title = new TextView(GetContext());
|
||||
title.setTag("group_title");
|
||||
title.setTextSize(13.0f);
|
||||
title.setPadding(
|
||||
Helper.convertDpToPixel(16),
|
||||
Helper.convertDpToPixel(13),
|
||||
Helper.convertDpToPixel(16),
|
||||
Helper.convertDpToPixel(13)
|
||||
convertDpToPixel(16),
|
||||
convertDpToPixel(13),
|
||||
convertDpToPixel(16),
|
||||
convertDpToPixel(13)
|
||||
);
|
||||
title.setAllCaps(true);
|
||||
title.setTextColor(Themes.getTextAttr());
|
||||
@@ -155,8 +157,8 @@ public class DockBarAdapter extends RecyclerView.a
|
||||
|
||||
static class DockBarEditViewHolder extends RecyclerView.x {
|
||||
|
||||
private ImageView mIcon;
|
||||
private TextView mTitle;
|
||||
private final ImageView mIcon;
|
||||
private final TextView mTitle;
|
||||
|
||||
public DockBarEditViewHolder(View itemView) {
|
||||
super(itemView);
|
||||
@@ -173,7 +175,7 @@ public class DockBarAdapter extends RecyclerView.a
|
||||
|
||||
static class GroupViewHolder extends RecyclerView.x {
|
||||
|
||||
private TextView mGroupTitle;
|
||||
private final TextView mGroupTitle;
|
||||
|
||||
public GroupViewHolder(View view) {
|
||||
super(view);
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package ru.vtosters.lite.ui.fragments.dockbar;
|
||||
|
||||
import static ru.vtosters.lite.utils.Helper.*;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
@@ -30,10 +32,10 @@ public class DockBarFragment extends ToolbarFragment {
|
||||
|
||||
LinearLayout buttonsContainer = new LinearLayout(n());
|
||||
buttonsContainer.setPadding(
|
||||
Helper.convertDpToPixel(13),
|
||||
Helper.convertDpToPixel(10),
|
||||
Helper.convertDpToPixel(13),
|
||||
Helper.convertDpToPixel(10)
|
||||
convertDpToPixel(13),
|
||||
convertDpToPixel(10),
|
||||
convertDpToPixel(13),
|
||||
convertDpToPixel(10)
|
||||
);
|
||||
container.addView(buttonsContainer, new LinearLayout.LayoutParams(-1, -2));
|
||||
|
||||
@@ -41,7 +43,7 @@ public class DockBarFragment extends ToolbarFragment {
|
||||
save.setText("Сохранить");
|
||||
save.setOnClickListener(v -> {
|
||||
DockBarManager.getInstance().save();
|
||||
Helper.restarting();
|
||||
restarting();
|
||||
});
|
||||
|
||||
LinearLayout.LayoutParams saveParams = new LinearLayout.LayoutParams(0, -2);
|
||||
@@ -49,13 +51,13 @@ public class DockBarFragment extends ToolbarFragment {
|
||||
buttonsContainer.addView(save, saveParams);
|
||||
|
||||
View divider = new View(n());
|
||||
buttonsContainer.addView(divider, new LinearLayout.LayoutParams(Helper.convertDpToPixel(10), 0));
|
||||
buttonsContainer.addView(divider, new LinearLayout.LayoutParams(convertDpToPixel(10), 0));
|
||||
|
||||
Button reset = new Button(n());
|
||||
reset.setText("Сбросить");
|
||||
reset.setOnClickListener(v -> {
|
||||
DockBarManager.getInstance().delete();
|
||||
Helper.restarting();
|
||||
restarting();
|
||||
});
|
||||
|
||||
LinearLayout.LayoutParams resetParams = new LinearLayout.LayoutParams(0, -2);
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package ru.vtosters.lite.ui.fragments.dockbar;
|
||||
|
||||
import static ru.vtosters.lite.utils.Helper.*;
|
||||
|
||||
import android.content.res.ColorStateList;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.view.Menu;
|
||||
@@ -61,12 +63,12 @@ public class DockBarInjector {
|
||||
|
||||
for (DockBarTab tab : sManager.getSelectedTabs()) {
|
||||
MenuItem add = menu.add(0, tab.id, 0, tab.titleID);
|
||||
Drawable drawable = Helper.GetContext().getResources().getDrawable(tab.iconID);
|
||||
ColorStateList colorStateList = Helper.GetContext().getResources().getColorStateList(com.vtosters.lite.R.color.bottom_navigation_item);
|
||||
Drawable drawable = GetContext().getResources().getDrawable(tab.iconID);
|
||||
ColorStateList colorStateList = GetContext().getResources().getColorStateList(com.vtosters.lite.R.color.bottom_navigation_item);
|
||||
// if (isAndroidMonet()) {
|
||||
// colorStateList = ColorStateList.valueOf(Themes.getAccentColor());
|
||||
// }
|
||||
add.setIcon((Drawable) new RecoloredDrawable(drawable, colorStateList));
|
||||
add.setIcon(new RecoloredDrawable(drawable, colorStateList));
|
||||
add.setShowAsAction(1);
|
||||
add.setCheckable(true);
|
||||
}
|
||||
|
||||
@@ -48,6 +48,15 @@ public class DockBarManager {
|
||||
public static final int MAX_SELECTED_TABS_LIMIT = 9;
|
||||
|
||||
private static DockBarManager sInstance = new DockBarManager();
|
||||
private final List<DockBarTab> mSelectedTabs = new ArrayList<>();
|
||||
private final List<DockBarTab> mDisabledTabs = new ArrayList<>();
|
||||
private final List<String> mGroups = Arrays.asList(
|
||||
"Выбранные элементы докбара",
|
||||
"Невыбранные элементы"
|
||||
);
|
||||
public DockBarManager() {
|
||||
load();
|
||||
}
|
||||
|
||||
public static DockBarManager getInstance() {
|
||||
if (sInstance == null)
|
||||
@@ -55,15 +64,14 @@ public class DockBarManager {
|
||||
return sInstance;
|
||||
}
|
||||
|
||||
private List<DockBarTab> mSelectedTabs = new ArrayList<>();
|
||||
private List<DockBarTab> mDisabledTabs = new ArrayList<>();
|
||||
private List<String> mGroups = Arrays.asList(
|
||||
"Выбранные элементы докбара",
|
||||
"Невыбранные элементы"
|
||||
);
|
||||
|
||||
public DockBarManager() {
|
||||
load();
|
||||
private static String readFully(InputStream is) throws IOException {
|
||||
ByteArrayOutputStream bos = new ByteArrayOutputStream();
|
||||
byte[] buffer = new byte[2048];
|
||||
int len;
|
||||
while ((len = is.read(buffer)) > 0) {
|
||||
bos.write(buffer, 0, len);
|
||||
}
|
||||
return bos.toString();
|
||||
}
|
||||
|
||||
private void load() {
|
||||
@@ -154,16 +162,6 @@ public class DockBarManager {
|
||||
}
|
||||
}
|
||||
|
||||
private static String readFully(InputStream is) throws IOException {
|
||||
ByteArrayOutputStream bos = new ByteArrayOutputStream();
|
||||
byte[] buffer = new byte[2048];
|
||||
int len;
|
||||
while ((len = is.read(buffer)) > 0) {
|
||||
bos.write(buffer, 0, len);
|
||||
}
|
||||
return bos.toString();
|
||||
}
|
||||
|
||||
public void delete() {
|
||||
File dockbar = new File(Helper.GetContext().getFilesDir(), "dockbar.json");
|
||||
if (dockbar.exists()) dockbar.delete();
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ import android.support.v7.widget.a.ItemTouchHelper;
|
||||
|
||||
public class ItemTouchHelperCallback extends ItemTouchHelper.a {
|
||||
|
||||
private DockBarAdapter mAdapter;
|
||||
private final DockBarAdapter mAdapter;
|
||||
|
||||
public ItemTouchHelperCallback(DockBarAdapter mAdapter) {
|
||||
this.mAdapter = mAdapter;
|
||||
|
||||
+22
-19
@@ -1,5 +1,8 @@
|
||||
package ru.vtosters.lite.ui.fragments.multiaccount;
|
||||
|
||||
import static ru.vtosters.lite.utils.Helper.*;
|
||||
import static ru.vtosters.lite.utils.Themes.*;
|
||||
|
||||
import android.graphics.Typeface;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
@@ -34,17 +37,17 @@ public class MultiAccountAdapter extends RecyclerView.a<MultiAccountAdapter.Mult
|
||||
public MultiAccountViewHolder b(ViewGroup parent, int viewType) {
|
||||
RelativeLayout layout = new RelativeLayout(parent.getContext());
|
||||
layout.setPadding(
|
||||
Helper.convertDpToPixel(12),
|
||||
Helper.convertDpToPixel(6),
|
||||
Helper.convertDpToPixel(6),
|
||||
Helper.convertDpToPixel(6)
|
||||
convertDpToPixel(12),
|
||||
convertDpToPixel(6),
|
||||
convertDpToPixel(6),
|
||||
convertDpToPixel(6)
|
||||
);
|
||||
|
||||
VKCircleImageView avatar = new VKCircleImageView(parent.getContext());
|
||||
avatar.setId(1);
|
||||
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
|
||||
Helper.convertDpToPixel(48),
|
||||
Helper.convertDpToPixel(48)
|
||||
convertDpToPixel(48),
|
||||
convertDpToPixel(48)
|
||||
);
|
||||
params.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
|
||||
params.addRule(RelativeLayout.CENTER_VERTICAL);
|
||||
@@ -53,7 +56,7 @@ public class MultiAccountAdapter extends RecyclerView.a<MultiAccountAdapter.Mult
|
||||
TextView nickname = new TextView(parent.getContext());
|
||||
nickname.setId(2);
|
||||
nickname.setPaddingRelative(
|
||||
Helper.convertDpToPixel(12),
|
||||
convertDpToPixel(12),
|
||||
0,
|
||||
0,
|
||||
0
|
||||
@@ -61,7 +64,7 @@ public class MultiAccountAdapter extends RecyclerView.a<MultiAccountAdapter.Mult
|
||||
nickname.setEllipsize(TextUtils.TruncateAt.END);
|
||||
nickname.setSingleLine(true);
|
||||
nickname.setTextSize(15.0f);
|
||||
nickname.setTextColor(Themes.getTextAttr());
|
||||
nickname.setTextColor(getTextAttr());
|
||||
nickname.setTypeface(Typeface.create("sans-serif-medium", Typeface.NORMAL));
|
||||
RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(-2, -2);
|
||||
params1.addRule(RelativeLayout.CENTER_VERTICAL);
|
||||
@@ -71,11 +74,11 @@ public class MultiAccountAdapter extends RecyclerView.a<MultiAccountAdapter.Mult
|
||||
ImageButton action = new ImageButton(parent.getContext());
|
||||
action.setId(3);
|
||||
action.setBackgroundResource(com.vtosters.lite.R.drawable.rounded_list_selector);
|
||||
Drawable drawable = Themes.recolorDrawable(Helper.getResources().getDrawable(R.drawable.ic_list_remove));
|
||||
Drawable drawable = recolorDrawable(getResources().getDrawable(R.drawable.ic_list_remove));
|
||||
action.setImageDrawable(drawable);
|
||||
RelativeLayout.LayoutParams params2 = new RelativeLayout.LayoutParams(
|
||||
Helper.convertDpToPixel(48),
|
||||
Helper.convertDpToPixel(48)
|
||||
convertDpToPixel(48),
|
||||
convertDpToPixel(48)
|
||||
);
|
||||
params2.addRule(RelativeLayout.CENTER_VERTICAL);
|
||||
params2.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
|
||||
@@ -105,9 +108,9 @@ public class MultiAccountAdapter extends RecyclerView.a<MultiAccountAdapter.Mult
|
||||
super(view);
|
||||
|
||||
mContainer = (RelativeLayout) view;
|
||||
mAvatar = (VKCircleImageView) view.findViewById(1);
|
||||
mNickname = (TextView) view.findViewById(2);
|
||||
mAction = (ImageButton) view.findViewById(3);
|
||||
mAvatar = view.findViewById(1);
|
||||
mNickname = view.findViewById(2);
|
||||
mAction = view.findViewById(3);
|
||||
}
|
||||
|
||||
public void bind(MultiAccountItem item, int pos) {
|
||||
@@ -123,9 +126,9 @@ public class MultiAccountAdapter extends RecyclerView.a<MultiAccountAdapter.Mult
|
||||
VKAccount b = VKAccountManager.b();
|
||||
PushSubscriber.a.a(b.b(), b.c());
|
||||
AppContextHolder.a.getSharedPreferences("gcm", 0).edit().clear().apply();
|
||||
Helper.restarting();
|
||||
restarting();
|
||||
});
|
||||
Drawable drawable = Themes.recolorDrawable(Helper.getResources().getDrawable(R.drawable.ic_list_add));
|
||||
Drawable drawable = recolorDrawable(getResources().getDrawable(R.drawable.ic_list_add));
|
||||
mAction.setImageDrawable(drawable);
|
||||
mAction.setClickable(false);
|
||||
} else {
|
||||
@@ -139,11 +142,11 @@ public class MultiAccountAdapter extends RecyclerView.a<MultiAccountAdapter.Mult
|
||||
VKAccount b = VKAccountManager.b();
|
||||
PushSubscriber.a.a(b.b(), b.c());
|
||||
AppContextHolder.a.getSharedPreferences("gcm", 0).edit().clear().apply();
|
||||
Helper.restarting();
|
||||
restarting();
|
||||
|
||||
});
|
||||
|
||||
if (Helper.isNetworkConnected())
|
||||
if (isNetworkConnected())
|
||||
mAvatar.a(item.imageUrl);
|
||||
else
|
||||
mAvatar.a(R.drawable.vkim_ic_placeholder_user_square_64dp);
|
||||
@@ -160,7 +163,7 @@ public class MultiAccountAdapter extends RecyclerView.a<MultiAccountAdapter.Mult
|
||||
VKAccount b = VKAccountManager.b();
|
||||
PushSubscriber.a.a(b.b(), b.c());
|
||||
AppContextHolder.a.getSharedPreferences("gcm", 0).edit().clear().apply();
|
||||
Helper.restarting();
|
||||
restarting();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
+12
-11
@@ -1,5 +1,6 @@
|
||||
package ru.vtosters.lite.ui.fragments.multiaccount;
|
||||
|
||||
import static ru.vtosters.lite.utils.Helper.*;
|
||||
import static ru.vtosters.lite.utils.Helper.GetContext;
|
||||
|
||||
import android.content.Context;
|
||||
@@ -16,7 +17,7 @@ import ru.vtosters.lite.utils.Helper;
|
||||
public class MultiAccountManager {
|
||||
|
||||
public static void migrate() {
|
||||
SharedPreferences OldPrefs = Helper.GetContext().getSharedPreferences("pref_account_manager", Context.MODE_PRIVATE);
|
||||
SharedPreferences OldPrefs = GetContext().getSharedPreferences("pref_account_manager", Context.MODE_PRIVATE);
|
||||
String OldPrefsValue = OldPrefs.getString("key_vk_account", "");
|
||||
SharedPreferences NewPrefs = GetContext().getSharedPreferences("pref_account_manager0", Context.MODE_PRIVATE);
|
||||
SharedPreferences.Editor editor = NewPrefs.edit();
|
||||
@@ -25,12 +26,12 @@ public class MultiAccountManager {
|
||||
}
|
||||
|
||||
public static SharedPreferences getCurrentAccount() {
|
||||
int account = Helper.GetPreferences().getInt("account", 0);
|
||||
return Helper.GetContext().getSharedPreferences("pref_account_manager" + (account != 0 ? account : ""), Context.MODE_PRIVATE);
|
||||
int account = GetPreferences().getInt("account", 0);
|
||||
return GetContext().getSharedPreferences("pref_account_manager" + (account != 0 ? account : ""), Context.MODE_PRIVATE);
|
||||
}
|
||||
|
||||
private static int getAccountPrefsCount() {
|
||||
File[] prefs = new File(Helper.GetContext().getFilesDir().getParent(), "shared_prefs")
|
||||
File[] prefs = new File(GetContext().getFilesDir().getParent(), "shared_prefs")
|
||||
.listFiles((dir, name) -> {
|
||||
return name.matches("pref_account_manager\\d+\\.xml");
|
||||
});
|
||||
@@ -49,7 +50,7 @@ public class MultiAccountManager {
|
||||
public static List<MultiAccountItem> buildList() {
|
||||
List<MultiAccountItem> list = new ArrayList<>();
|
||||
for (int i = 0; i <= getAccountPrefsCount(); i++) {
|
||||
SharedPreferences prefs = Helper.GetContext().getSharedPreferences("pref_account_manager" + i, Context.MODE_PRIVATE);
|
||||
SharedPreferences prefs = GetContext().getSharedPreferences("pref_account_manager" + i, Context.MODE_PRIVATE);
|
||||
String keyVKAccount = prefs.getString("key_vk_account", "");
|
||||
if (!keyVKAccount.isEmpty()) {
|
||||
String name = withRegex(keyVKAccount, ".*\"name\":\\{.*?:\"(.*?)\"\\}.*", "");
|
||||
@@ -64,22 +65,22 @@ public class MultiAccountManager {
|
||||
}
|
||||
|
||||
public static boolean switchAccount(int i) {
|
||||
int account = Helper.GetPreferences().getInt("account", 0);
|
||||
int account = GetPreferences().getInt("account", 0);
|
||||
if (account == i) return false;
|
||||
|
||||
Helper.GetPreferences().edit().putInt("account", i).commit();
|
||||
GetPreferences().edit().putInt("account", i).commit();
|
||||
return true;
|
||||
}
|
||||
|
||||
public static void addAccount() {
|
||||
Helper.GetPreferences().edit().putInt("account", getAccountPrefsCount()).commit();
|
||||
GetPreferences().edit().putInt("account", getAccountPrefsCount()).commit();
|
||||
}
|
||||
|
||||
public static void deleteAccount(int i) {
|
||||
int account = Helper.GetPreferences().getInt("account", 0);
|
||||
SharedPreferences prefs = Helper.GetContext().getSharedPreferences("pref_account_manager" + i, Context.MODE_PRIVATE);
|
||||
int account = GetPreferences().getInt("account", 0);
|
||||
SharedPreferences prefs = GetContext().getSharedPreferences("pref_account_manager" + i, Context.MODE_PRIVATE);
|
||||
prefs.edit().clear().commit();
|
||||
File file = new File(new File(Helper.GetContext().getFilesDir().getParent(), "shared_prefs"), "pref_account_manager" + i);
|
||||
File file = new File(new File(GetContext().getFilesDir().getParent(), "shared_prefs"), "pref_account_manager" + i);
|
||||
if (file.exists()) file.delete();
|
||||
if (account == i && getAccountPrefsCount() > 0)
|
||||
switchAccount(buildList().get(0).index);
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
package ru.vtosters.lite.ui.fragments.tgstickers;
|
||||
|
||||
import static android.widget.Toast.*;
|
||||
import static ru.vtosters.lite.utils.Helper.*;
|
||||
import static ru.vtosters.lite.utils.Themes.*;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.app.ProgressDialog;
|
||||
import android.content.BroadcastReceiver;
|
||||
@@ -52,23 +56,15 @@ public class StickersFragment extends ToolbarFragment {
|
||||
public final static String ACTION_RELOAD = "com.vtosters.lite.action.RELOAD_TGS_LIST";
|
||||
|
||||
private final static int TYPE_DIRECT = 0, TYPE_SOCKS = 2, TYPE_TOASTER_SERVER = 3;
|
||||
|
||||
private static final String TAG = "StickersFragment";
|
||||
public int from;
|
||||
public int to;
|
||||
private TelegramStickersGrabber grabber;
|
||||
private TelegramStickersService stickersService;
|
||||
private FloatingActionButton fab;
|
||||
|
||||
private static final String TAG = "StickersFragment";
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
private RecyclerView.Adapter adapter;
|
||||
|
||||
private boolean movePending = false;
|
||||
public int from;
|
||||
public int to;
|
||||
|
||||
private int editPadding;
|
||||
private RecyclerView recycler;
|
||||
|
||||
private final BroadcastReceiver receiver = new BroadcastReceiver() {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
@@ -90,6 +86,8 @@ public class StickersFragment extends ToolbarFragment {
|
||||
}
|
||||
}
|
||||
};
|
||||
private int editPadding;
|
||||
private RecyclerView recycler;
|
||||
|
||||
private void initGrabber() {
|
||||
int method = TGPref.getTGConnectMethod();
|
||||
@@ -118,7 +116,7 @@ public class StickersFragment extends ToolbarFragment {
|
||||
|
||||
private void openMenu(String toast) {
|
||||
if (toast != null) {
|
||||
Toast.makeText(super.n(), toast, Toast.LENGTH_SHORT).show();
|
||||
makeText(super.n(), toast, LENGTH_SHORT).show();
|
||||
}
|
||||
var intent = new Navigator(StickersPreferencesFragment.class, new Bundle()).a(super.n());
|
||||
super.n().startActivity(intent);
|
||||
@@ -130,7 +128,7 @@ public class StickersFragment extends ToolbarFragment {
|
||||
super.a(menu, menuInflater);
|
||||
MenuItem add = menu.add(0, 0, 0, "");
|
||||
add.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
|
||||
add.setIcon(Helper.getResources().getDrawable(com.vtosters.lite.R.drawable.ic_settings_24));
|
||||
add.setIcon(getResources().getDrawable(com.vtosters.lite.R.drawable.ic_settings_24));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -155,20 +153,20 @@ public class StickersFragment extends ToolbarFragment {
|
||||
linearLayout.addView(editText);
|
||||
editText.getLayoutParams().width = ViewGroup.LayoutParams.MATCH_PARENT;
|
||||
ViewGroup.MarginLayoutParams margin = ((ViewGroup.MarginLayoutParams) editText.getLayoutParams());
|
||||
margin.setMargins(Helper.convertDpToPixel(24f), 0, Helper.convertDpToPixel(24f), 0);
|
||||
margin.setMargins(convertDpToPixel(24f), 0, convertDpToPixel(24f), 0);
|
||||
editText.setLayoutParams(margin);
|
||||
|
||||
new AlertDialog.Builder(super.n())
|
||||
.setTitle(Helper.getString("stickersapi5"))
|
||||
.setMessage(Helper.getString("stickersapi6"))
|
||||
.setTitle(getString("stickersapi5"))
|
||||
.setMessage(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).setNeutralButton(Helper.getString("stickersapi7"), (dialog, which) -> new AlertDialog.Builder(super.n())
|
||||
.setTitle(Helper.getString("stickersapi8"))
|
||||
.setMessage(Helper.getString("stickersapi9") +
|
||||
Helper.getString("stickersapi10")).setPositiveButton(android.R.string.ok, null)
|
||||
}).setNegativeButton(android.R.string.cancel, null).setNeutralButton(getString("stickersapi7"), (dialog, which) -> new AlertDialog.Builder(super.n())
|
||||
.setTitle(getString("stickersapi8"))
|
||||
.setMessage(getString("stickersapi9") +
|
||||
getString("stickersapi10")).setPositiveButton(android.R.string.ok, null)
|
||||
.create().show()).create().show();
|
||||
}
|
||||
|
||||
@@ -179,7 +177,7 @@ public class StickersFragment extends ToolbarFragment {
|
||||
|
||||
final ProgressDialog progressDialog = new ProgressDialog(context);
|
||||
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
|
||||
progressDialog.setMessage(Helper.getString("stickersapi1"));
|
||||
progressDialog.setMessage(getString("stickersapi1"));
|
||||
progressDialog.show();
|
||||
|
||||
grabber.checkKey(new TelegramStickersGrabber.KeyCheckListener() {
|
||||
@@ -187,7 +185,7 @@ public class StickersFragment extends ToolbarFragment {
|
||||
public void onKeyChecked(boolean ok) {
|
||||
progressDialog.dismiss();
|
||||
if (!ok) {
|
||||
Toast.makeText(context, Helper.getString("stickersapi2"), Toast.LENGTH_SHORT).show();
|
||||
makeText(context, getString("stickersapi2"), LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
stickersService.setBotKey(TGPref.getTGBotKey());
|
||||
@@ -199,9 +197,9 @@ public class StickersFragment extends ToolbarFragment {
|
||||
public void onNetError() {
|
||||
progressDialog.dismiss();
|
||||
new AlertDialog.Builder(context)
|
||||
.setMessage(Helper.getString("stickersapi3"))
|
||||
.setMessage(getString("stickersapi3"))
|
||||
.setNegativeButton(android.R.string.cancel, null)
|
||||
.setPositiveButton(Helper.getString("stickersapi4"), (arg0, arg1) -> checkApiKey(r)).create().show();
|
||||
.setPositiveButton(getString("stickersapi4"), (arg0, arg1) -> checkApiKey(r)).create().show();
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -211,9 +209,9 @@ public class StickersFragment extends ToolbarFragment {
|
||||
@Override
|
||||
public View d(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
grabber = new TelegramStickersGrabber(TGPref.getTGBotKey());
|
||||
stickersService = TelegramStickersService.getInstance(Helper.GetContext());
|
||||
stickersService = TelegramStickersService.getInstance(GetContext());
|
||||
|
||||
editPadding = Helper.convertDpToPixel(24f);
|
||||
editPadding = convertDpToPixel(24f);
|
||||
|
||||
FrameLayout v = new FrameLayout(container.getContext());
|
||||
|
||||
@@ -222,11 +220,11 @@ public class StickersFragment extends ToolbarFragment {
|
||||
|
||||
fab = new FloatingActionButton(container.getContext());
|
||||
fab.setImageResource(R.drawable.ic_add_24);
|
||||
fab.setBackgroundTintList(ColorStateList.valueOf(Themes.getAccentColor()));
|
||||
fab.setBackgroundTintList(ColorStateList.valueOf(getAccentColor()));
|
||||
fab.setOnClickListener(v2 -> fabClick());
|
||||
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT);
|
||||
params.gravity = Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL;
|
||||
params.setMargins(0, 0, 0, Helper.convertDpToPixel(12f));
|
||||
params.setMargins(0, 0, 0, convertDpToPixel(12f));
|
||||
fab.setLayoutParams(params);
|
||||
|
||||
v.addView(recycler);
|
||||
@@ -245,7 +243,7 @@ public class StickersFragment extends ToolbarFragment {
|
||||
switch (method) {
|
||||
case TYPE_SOCKS:
|
||||
if (TGPref.getTGProxyIP() == null) {
|
||||
openMenu(Helper.getString("stickersproxy1"));
|
||||
openMenu(getString("stickersproxy1"));
|
||||
return;
|
||||
}
|
||||
case TYPE_TOASTER_SERVER:
|
||||
@@ -254,27 +252,27 @@ public class StickersFragment extends ToolbarFragment {
|
||||
LinearLayout linearLayout = new LinearLayout(super.n());
|
||||
|
||||
final EditText editText = new EditText(super.n());
|
||||
editText.setHintTextColor(PreferencesUtil.getSTextColor(Helper.GetContext()));
|
||||
editText.setHintTextColor(PreferencesUtil.getSTextColor(GetContext()));
|
||||
|
||||
// Костыль для китката
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
editText.setBackgroundTintList(ColorStateList.valueOf(PreferencesUtil.getTextColor(Helper.GetContext())));
|
||||
editText.setBackgroundTintList(ColorStateList.valueOf(PreferencesUtil.getTextColor(GetContext())));
|
||||
} else {
|
||||
ViewCompat.setBackgroundTintList(editText, ColorStateList.valueOf(PreferencesUtil.getTextColor(Helper.GetContext())));
|
||||
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(Helper.convertDpToPixel(24f), 0, Helper.convertDpToPixel(24f), 0);
|
||||
margin.setMargins(convertDpToPixel(24f), 0, convertDpToPixel(24f), 0);
|
||||
editText.setLayoutParams(margin);
|
||||
|
||||
new AlertDialog.Builder(super.n()).setTitle(Helper.getString("stickershelp1"))
|
||||
.setMessage(Helper.getString("stickershelp2"))
|
||||
new AlertDialog.Builder(super.n()).setTitle(getString("stickershelp1"))
|
||||
.setMessage(getString("stickershelp2"))
|
||||
.setView(linearLayout)
|
||||
.setPositiveButton(android.R.string.ok, (dialog, which) -> {
|
||||
String pack = editText.getText().toString();
|
||||
pack = parsePack(pack);
|
||||
stickersService.requestPackDownload(pack, new File(Helper.GetContext().getFilesDir(), new File("VT-Stickers", pack).getAbsolutePath()));
|
||||
stickersService.requestPackDownload(pack, new File(GetContext().getFilesDir(), new File("VT-Stickers", pack).getAbsolutePath()));
|
||||
}).setNeutralButton(android.R.string.cancel, null).create().show();
|
||||
};
|
||||
if (TGPref.getTGBotKey() == null) enterBotKey(() -> checkApiKey(work));
|
||||
@@ -284,7 +282,7 @@ public class StickersFragment extends ToolbarFragment {
|
||||
};
|
||||
|
||||
if (method == -1) {
|
||||
openMenu(Helper.getString("stickersconnection"));
|
||||
openMenu(getString("stickersconnection"));
|
||||
} else {
|
||||
r.run();
|
||||
}
|
||||
@@ -293,7 +291,7 @@ public class StickersFragment extends ToolbarFragment {
|
||||
@Override
|
||||
public void b(@Nullable Bundle savedInstanceState) {
|
||||
super.b(savedInstanceState);
|
||||
Helper.GetContext().registerReceiver(receiver, new IntentFilter(ACTION_RELOAD));
|
||||
GetContext().registerReceiver(receiver, new IntentFilter(ACTION_RELOAD));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -302,13 +300,13 @@ public class StickersFragment extends ToolbarFragment {
|
||||
|
||||
super.a(arg0, arg1);
|
||||
|
||||
a(Helper.getString("vtltgs"));
|
||||
a(getString("vtltgs"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void A_() {
|
||||
super.A_();
|
||||
Helper.GetContext().unregisterReceiver(receiver);
|
||||
GetContext().unregisterReceiver(receiver);
|
||||
}
|
||||
|
||||
private String parsePack(String pack) {
|
||||
@@ -321,31 +319,12 @@ public class StickersFragment extends ToolbarFragment {
|
||||
}
|
||||
|
||||
public class StickerPackAdapter extends RecyclerView.Adapter<StickerPackAdapter.StickerPackViewHolder> {
|
||||
private String TAG = "StickerPackAdapter";
|
||||
|
||||
public class StickerPackViewHolder extends RecyclerView.ViewHolder {
|
||||
private SwitchCompat switchCompat;
|
||||
private ImageView stickerImage, updateButton, deleteButton;
|
||||
private TextView name, count;
|
||||
private LinearLayout layout;
|
||||
|
||||
StickerPackViewHolder(@NonNull View view) {
|
||||
super(view);
|
||||
|
||||
switchCompat = (SwitchCompat) view.findViewById(R.id.choose_btn);
|
||||
stickerImage = (ImageView) view.findViewById(R.id.photo);
|
||||
updateButton = (ImageView) view.findViewById(R.id.button_update);
|
||||
deleteButton = (ImageView) view.findViewById(R.id.action_delete);
|
||||
name = (TextView) view.findViewById(R.id.vkim_cancel);
|
||||
count = (TextView) view.findViewById(R.id.vkim_cancel_label_text);
|
||||
layout = (LinearLayout) view.findViewById(R.id.linearLayout5);
|
||||
}
|
||||
}
|
||||
private final String TAG = "StickerPackAdapter";
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public StickerPackViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
var view = LayoutInflater.from(parent.getContext()).inflate(Helper.getIdentifier("tgs_entry", "layout"), parent, false);
|
||||
var view = LayoutInflater.from(parent.getContext()).inflate(getIdentifier("tgs_entry", "layout"), parent, false);
|
||||
return new StickerPackViewHolder(view);
|
||||
}
|
||||
|
||||
@@ -365,19 +344,19 @@ public class StickersFragment extends ToolbarFragment {
|
||||
if (f.exists()) {
|
||||
holder.stickerImage.setImageURI(Uri.parse("file://" + f.getAbsolutePath()));
|
||||
} else {
|
||||
holder.stickerImage.setImageDrawable(Helper.getResources().getDrawable(R.drawable.icon_vk_104));
|
||||
holder.stickerImage.setImageDrawable(getResources().getDrawable(R.drawable.icon_vk_104));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
holder.updateButton.setImageDrawable(Themes.recolorDrawable(Helper.getResources().getDrawable(R.drawable.ic_camera_switch_48)));
|
||||
holder.updateButton.setImageDrawable(recolorDrawable(getResources().getDrawable(R.drawable.ic_camera_switch_48)));
|
||||
holder.updateButton.setOnClickListener(listener -> {
|
||||
stickersService.setBotKey(TGPref.getTGBotKey());
|
||||
stickersService.requestPackDownload(pack.id, new File(Helper.GetContext().getFilesDir(), new File("VT-Stickers", pack.id).getAbsolutePath()));
|
||||
stickersService.requestPackDownload(pack.id, new File(GetContext().getFilesDir(), new File("VT-Stickers", pack.id).getAbsolutePath()));
|
||||
});
|
||||
|
||||
holder.deleteButton.setImageDrawable(Themes.recolorDrawable(Helper.getResources().getDrawable(R.drawable.vkim_ic_msg_delete)));
|
||||
holder.deleteButton.setImageDrawable(recolorDrawable(getResources().getDrawable(R.drawable.vkim_ic_msg_delete)));
|
||||
holder.deleteButton.setOnClickListener(listener -> {
|
||||
stickersService.deletePack(pack);
|
||||
notifyItemRemoved(position);
|
||||
@@ -386,13 +365,13 @@ public class StickersFragment extends ToolbarFragment {
|
||||
holder.name.setText(pack.title);
|
||||
holder.switchCompat.setChecked(pack.enabled);
|
||||
holder.switchCompat.setOnCheckedChangeListener((buttonView, isChecked) -> stickersService.setPackEnabled(pack, isChecked, false));
|
||||
holder.count.setText(pack.stickersCount + " " + Helper.getString("stickerscount"));
|
||||
holder.count.setText(pack.stickersCount + " " + getString("stickerscount"));
|
||||
|
||||
holder.layout.setBackgroundColor(Prefs.getNavbarColor());
|
||||
|
||||
// Color костыль
|
||||
int color = Themes.getTextAttr();
|
||||
int secondary = Themes.getSTextAttr();
|
||||
int color = getTextAttr();
|
||||
int secondary = getSTextAttr();
|
||||
|
||||
holder.name.setTextColor(color);
|
||||
holder.count.setTextColor(secondary);
|
||||
@@ -402,6 +381,28 @@ public class StickersFragment extends ToolbarFragment {
|
||||
public int getItemCount() {
|
||||
return stickersService.getPacksListReference().size();
|
||||
}
|
||||
|
||||
public class StickerPackViewHolder extends RecyclerView.ViewHolder {
|
||||
private final SwitchCompat switchCompat;
|
||||
private final ImageView stickerImage;
|
||||
private final ImageView updateButton;
|
||||
private final ImageView deleteButton;
|
||||
private final TextView name;
|
||||
private final TextView count;
|
||||
private final LinearLayout layout;
|
||||
|
||||
StickerPackViewHolder(@NonNull View view) {
|
||||
super(view);
|
||||
|
||||
switchCompat = view.findViewById(R.id.choose_btn);
|
||||
stickerImage = view.findViewById(R.id.photo);
|
||||
updateButton = view.findViewById(R.id.button_update);
|
||||
deleteButton = view.findViewById(R.id.action_delete);
|
||||
name = view.findViewById(R.id.vkim_cancel);
|
||||
count = view.findViewById(R.id.vkim_cancel_label_text);
|
||||
layout = view.findViewById(R.id.linearLayout5);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+17
-15
@@ -1,5 +1,7 @@
|
||||
package ru.vtosters.lite.ui.fragments.tgstickers;
|
||||
|
||||
import static ru.vtosters.lite.utils.Helper.*;
|
||||
|
||||
import android.os.Bundle;
|
||||
|
||||
import com.aefyr.tsg.g2.stickersgrabber.TelegramStickersGrabber;
|
||||
@@ -17,19 +19,19 @@ public class StickersPreferencesFragment extends MaterialPreferenceToolbarFragme
|
||||
public void b(Bundle bundle) {
|
||||
super.b(bundle);
|
||||
|
||||
int vtosterXml = Helper.GetContext().getResources().getIdentifier("empty", "xml", Helper.GetContext().getPackageName());
|
||||
int vtosterXml = GetContext().getResources().getIdentifier("empty", "xml", GetContext().getPackageName());
|
||||
this.a(vtosterXml);
|
||||
|
||||
PreferencesUtil.addPreferenceCategory(this, Helper.getString("sprefsstickers"));
|
||||
PreferencesUtil.addPreference(this, "", Helper.getString("sprefsdelkey"), "", null, preference -> {
|
||||
PreferencesUtil.addPreferenceCategory(this, getString("sprefsstickers"));
|
||||
PreferencesUtil.addPreference(this, "", getString("sprefsdelkey"), "", null, preference -> {
|
||||
TGPref.setTGBotKey(null);
|
||||
ToastUtils.a(Helper.getString("sprefsdelkey2"));
|
||||
ToastUtils.a(getString("sprefsdelkey2"));
|
||||
return false;
|
||||
});
|
||||
|
||||
PreferencesUtil.addPreferenceCategory(this, Helper.getString("sprefsnetwork"));
|
||||
PreferencesUtil.addListPreference(this, "VTGS:CM", "0", Helper.getString("sprefsctype"), new CharSequence[]{
|
||||
Helper.getString("ctypedirect"), Helper.getString("ctypesocks")
|
||||
PreferencesUtil.addPreferenceCategory(this, getString("sprefsnetwork"));
|
||||
PreferencesUtil.addListPreference(this, "VTGS:CM", "0", getString("sprefsctype"), new CharSequence[]{
|
||||
getString("ctypedirect"), getString("ctypesocks")
|
||||
}, new String[]{
|
||||
"0", "2"
|
||||
});
|
||||
@@ -44,22 +46,22 @@ public class StickersPreferencesFragment extends MaterialPreferenceToolbarFragme
|
||||
return true;
|
||||
});
|
||||
|
||||
PreferencesUtil.addPreferenceCategory(this, Helper.getString("ssocks"));
|
||||
PreferencesUtil.addPreferenceCategory(this, getString("ssocks"));
|
||||
|
||||
PreferencesUtil.addEditTextPreference(this, "tg_proxy_host", Helper.getString("ssockshost"), (preference, o) -> {
|
||||
PreferencesUtil.addEditTextPreference(this, "tg_proxy_host", getString("ssockshost"), (preference, o) -> {
|
||||
TGPref.setTGProxyIP((String) o);
|
||||
return true;
|
||||
});
|
||||
PreferencesUtil.addEditTextPreference(this, "tg_proxy_port", Helper.getString("ssocksport"), (preference, o) -> {
|
||||
PreferencesUtil.addEditTextPreference(this, "tg_proxy_port", getString("ssocksport"), (preference, o) -> {
|
||||
try {
|
||||
TGPref.setTGProxyPort(Integer.parseInt((String) o));
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
ToastUtils.a(Helper.getString("ssockswport"));
|
||||
ToastUtils.a(getString("ssockswport"));
|
||||
return false;
|
||||
}
|
||||
});
|
||||
PreferencesUtil.addMaterialSwitchPreference(this, "tg_proxy_auth", Helper.getString("ssocksauth"), "", null, false, (preference, o) -> {
|
||||
PreferencesUtil.addMaterialSwitchPreference(this, "tg_proxy_auth", getString("ssocksauth"), "", null, false, (preference, o) -> {
|
||||
boolean value = (boolean) o;
|
||||
|
||||
a("tg_proxy_login").a(value); // findPreference("tg_proxy_login").setEnabled(value);
|
||||
@@ -68,11 +70,11 @@ public class StickersPreferencesFragment extends MaterialPreferenceToolbarFragme
|
||||
TGPref.setTGProxyPassEnabled(value);
|
||||
return true;
|
||||
});
|
||||
PreferencesUtil.addEditTextPreference(this, "tg_proxy_login", Helper.getString("ssockslogin"), (preference, o) -> {
|
||||
PreferencesUtil.addEditTextPreference(this, "tg_proxy_login", getString("ssockslogin"), (preference, o) -> {
|
||||
TGPref.setTGProxyUserPass((String) o, TGPref.getTGProxyPass());
|
||||
return true;
|
||||
});
|
||||
PreferencesUtil.addEditTextPreference(this, "tg_proxy_pass", Helper.getString("ssockspass"), (preference, o) -> {
|
||||
PreferencesUtil.addEditTextPreference(this, "tg_proxy_pass", getString("ssockspass"), (preference, o) -> {
|
||||
TGPref.setTGProxyUserPass(TGPref.getTGProxyUser(), (String) o);
|
||||
return true;
|
||||
});
|
||||
@@ -83,7 +85,7 @@ public class StickersPreferencesFragment extends MaterialPreferenceToolbarFragme
|
||||
|
||||
@Override
|
||||
public int aq() {
|
||||
return Helper.GetContext().getResources().getIdentifier("vtltgs", "string", Helper.GetContext().getPackageName());
|
||||
return GetContext().getResources().getIdentifier("vtltgs", "string", GetContext().getPackageName());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package ru.vtosters.lite.utils;
|
||||
|
||||
import static ru.vtosters.lite.utils.Helper.*;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
@@ -55,7 +57,7 @@ public class ExternalLinkHandler {
|
||||
}
|
||||
|
||||
private static boolean checkYoutubeLink(VideoFile file) {
|
||||
if (!Helper.isEmpty(file.n)) {
|
||||
if (!isEmpty(file.n)) {
|
||||
for (String filter : filters) {
|
||||
if (file.n.contains(filter))
|
||||
return true;
|
||||
@@ -74,25 +76,25 @@ public class ExternalLinkHandler {
|
||||
* this.k = var3.optString("mp4_2160");
|
||||
*/
|
||||
public static boolean checkVkVideo(VideoFile videoFile) {
|
||||
if (!Helper.isEmpty(videoFile.e)) {
|
||||
if (!isEmpty(videoFile.e)) {
|
||||
qualities.put("240", videoFile.e);
|
||||
}
|
||||
if (!Helper.isEmpty(videoFile.f)) {
|
||||
if (!isEmpty(videoFile.f)) {
|
||||
qualities.put("360", videoFile.f);
|
||||
}
|
||||
if (!Helper.isEmpty(videoFile.g)) {
|
||||
if (!isEmpty(videoFile.g)) {
|
||||
qualities.put("480", videoFile.g);
|
||||
}
|
||||
if (!Helper.isEmpty(videoFile.h)) {
|
||||
if (!isEmpty(videoFile.h)) {
|
||||
qualities.put("720", videoFile.h);
|
||||
}
|
||||
if (!Helper.isEmpty(videoFile.i)) {
|
||||
if (!isEmpty(videoFile.i)) {
|
||||
qualities.put("1080", videoFile.i);
|
||||
}
|
||||
if (!Helper.isEmpty(videoFile.j)) {
|
||||
if (!isEmpty(videoFile.j)) {
|
||||
qualities.put("1440", videoFile.j);
|
||||
}
|
||||
if (!Helper.isEmpty(videoFile.k)) {
|
||||
if (!isEmpty(videoFile.k)) {
|
||||
qualities.put("2160", videoFile.k);
|
||||
}
|
||||
|
||||
@@ -107,7 +109,7 @@ public class ExternalLinkHandler {
|
||||
Intent intent = new Intent();
|
||||
|
||||
String packageName = getMXPlayerPackageName();
|
||||
if (!Helper.isEmpty(packageName)) {
|
||||
if (!isEmpty(packageName)) {
|
||||
intent.setPackage(packageName);
|
||||
intent.setDataAndType(uri, "application/mp4");
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
@@ -118,7 +120,7 @@ public class ExternalLinkHandler {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
|
||||
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
||||
}
|
||||
Helper.GetContext().startActivity(intent);
|
||||
GetContext().startActivity(intent);
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
@@ -127,7 +129,7 @@ public class ExternalLinkHandler {
|
||||
}
|
||||
|
||||
private static String getMXPlayerPackageName() {
|
||||
for (ApplicationInfo info : Helper.GetContext().getPackageManager().getInstalledApplications(0)) {
|
||||
for (ApplicationInfo info : GetContext().getPackageManager().getInstalledApplications(0)) {
|
||||
String packName = info.packageName;
|
||||
if (packName.equals("com.mxtech.videoplayer.ad") || packName.equals("com.mxtech.videoplayer.pro"))
|
||||
return packName;
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package ru.vtosters.lite.utils;
|
||||
|
||||
import static ru.vtosters.lite.utils.Proxy.*;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
@@ -38,7 +40,7 @@ public class Helper {
|
||||
}
|
||||
|
||||
public static String getConnectorDomain(String str) {
|
||||
return Proxy.GetConnector(str);
|
||||
return GetConnector(str);
|
||||
}
|
||||
|
||||
public static void reloadMSG() {
|
||||
@@ -107,7 +109,7 @@ public class Helper {
|
||||
}
|
||||
|
||||
public static String getString(String str) {
|
||||
return Helper.GetContext().getString(Integer.parseInt(String.valueOf(Helper.GetContext().getResources().getIdentifier(str, "string", Helper.GetContext().getPackageName()))));
|
||||
return GetContext().getString(Integer.parseInt(String.valueOf(GetContext().getResources().getIdentifier(str, "string", GetContext().getPackageName()))));
|
||||
}
|
||||
|
||||
public static String getPackageName() {
|
||||
@@ -141,6 +143,6 @@ public class Helper {
|
||||
public static boolean isNetworkConnected() {
|
||||
ConnectivityManager cm = (ConnectivityManager) GetContext().getSystemService(Context.CONNECTIVITY_SERVICE);
|
||||
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
|
||||
return activeNetwork != null ? activeNetwork.isConnectedOrConnecting() : false;
|
||||
return activeNetwork != null && activeNetwork.isConnectedOrConnecting();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,20 +1,22 @@
|
||||
package ru.vtosters.lite.utils;
|
||||
|
||||
import static ru.vtosters.lite.utils.Helper.*;
|
||||
|
||||
import android.content.ComponentName;
|
||||
import android.content.pm.PackageManager;
|
||||
|
||||
public class IconHelper {
|
||||
public static void switchToVK() {
|
||||
var packageManager = Helper.GetContext().getPackageManager();
|
||||
var packageName = Helper.getPackageName();
|
||||
packageManager.setComponentEnabledSetting(new ComponentName(packageName, Helper.getPackageName() + ".VTIconDefault"), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
|
||||
packageManager.setComponentEnabledSetting(new ComponentName(packageName, Helper.getPackageName() + ".VTIconVK"), PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
|
||||
var packageManager = GetContext().getPackageManager();
|
||||
var packageName = getPackageName();
|
||||
packageManager.setComponentEnabledSetting(new ComponentName(packageName, getPackageName() + ".VTIconDefault"), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
|
||||
packageManager.setComponentEnabledSetting(new ComponentName(packageName, getPackageName() + ".VTIconVK"), PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
|
||||
}
|
||||
|
||||
public static void switchToDefault() {
|
||||
var packageManager = Helper.GetContext().getPackageManager();
|
||||
var packageName = Helper.getPackageName();
|
||||
packageManager.setComponentEnabledSetting(new ComponentName(packageName, Helper.getPackageName() + ".VTIconDefault"), PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
|
||||
packageManager.setComponentEnabledSetting(new ComponentName(packageName, Helper.getPackageName() + ".VTIconVK"), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
|
||||
var packageManager = GetContext().getPackageManager();
|
||||
var packageName = getPackageName();
|
||||
packageManager.setComponentEnabledSetting(new ComponentName(packageName, getPackageName() + ".VTIconDefault"), PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
|
||||
packageManager.setComponentEnabledSetting(new ComponentName(packageName, getPackageName() + ".VTIconVK"), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package ru.vtosters.lite.utils;
|
||||
|
||||
import static ru.vtosters.lite.utils.Helper.*;
|
||||
import static ru.vtosters.lite.utils.Proxy.setProxy;
|
||||
|
||||
import android.app.Activity;
|
||||
@@ -57,17 +58,17 @@ import ru.vtosters.lite.ui.fragments.dockbar.DockBarManager;
|
||||
import ru.vtosters.lite.ui.fragments.multiaccount.MultiAccountManager;
|
||||
|
||||
public class Prefs {
|
||||
private static final List<Activity> activities = new ArrayList<>();
|
||||
public static String VERSIONNAME = "2.0 Beta";
|
||||
private static List<String> mFilters;
|
||||
private static final List<Activity> activities = new ArrayList<>();
|
||||
|
||||
public static boolean BooleanFalse(String key) {
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(Helper.GetContext());
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(GetContext());
|
||||
return prefs.getBoolean(key, false);
|
||||
}
|
||||
|
||||
public static boolean BooleanTrue(String key) {
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(Helper.GetContext());
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(GetContext());
|
||||
return prefs.getBoolean(key, true);
|
||||
}
|
||||
|
||||
@@ -241,11 +242,11 @@ public class Prefs {
|
||||
}
|
||||
|
||||
public static String getBuildNumber() {
|
||||
return Prefs.getBuild(Helper.GetContext(), "version.properties");
|
||||
return Prefs.getBuild(GetContext(), "version.properties");
|
||||
}
|
||||
|
||||
public static String getCommitLink() {
|
||||
return "https://github.com/vtosters/lite/commit/" + Prefs.getBuild(Helper.GetContext(), "version.properties");
|
||||
return "https://github.com/vtosters/lite/commit/" + Prefs.getBuild(GetContext(), "version.properties");
|
||||
}
|
||||
|
||||
public static String getBuild(Context context, String name) {
|
||||
@@ -265,7 +266,7 @@ public class Prefs {
|
||||
}
|
||||
|
||||
public static String getBranch() {
|
||||
return Helper.GetPreferences().getString("ota_branches", "Stable");
|
||||
return GetPreferences().getString("ota_branches", "Stable");
|
||||
}
|
||||
|
||||
public static String getDarkVKUI() {
|
||||
@@ -273,12 +274,12 @@ public class Prefs {
|
||||
}
|
||||
|
||||
public static String getAmoledVKUI() {
|
||||
String string = Helper.GetPreferences().getString("darktheme", "");
|
||||
String string = GetPreferences().getString("darktheme", "");
|
||||
return string.equals("amoled") ? "1" : "0";
|
||||
}
|
||||
|
||||
public static String getCommentsSort(String def) {
|
||||
String string = Helper.GetPreferences().getString("commentssort", "");
|
||||
String string = GetPreferences().getString("commentssort", "");
|
||||
if (string.isEmpty()) {
|
||||
return def;
|
||||
}
|
||||
@@ -292,23 +293,23 @@ public class Prefs {
|
||||
}
|
||||
|
||||
public static String getMeToken() {
|
||||
return Helper.GetPreferences().getString("me_token", "");
|
||||
return GetPreferences().getString("me_token", "");
|
||||
}
|
||||
|
||||
public static void setMeToken(String str) {
|
||||
ru.vtosters.lite.utils.Helper.GetPreferences().edit().putString("me_token", str).apply();
|
||||
GetPreferences().edit().putString("me_token", str).apply();
|
||||
}
|
||||
|
||||
public static int getNavbarColor() {
|
||||
return VKThemeHelper.a((int) R.attr.tabbar_background);
|
||||
return VKThemeHelper.a(R.attr.tabbar_background);
|
||||
}
|
||||
|
||||
public static String getSSFSLink() {
|
||||
return SSFSDomain() + "?token=" + ru.vtosters.lite.utils.Helper.GetUserToken() + "&vt_dark=" + getDarkVKUI() + "&vt_amoled=" + getAmoledVKUI() + "&secret=" + ru.vtosters.lite.utils.Helper.GetUserSecret() + "&proxy=" + getUserProxy() + "&lang=" + getLocale() + "&vt=1&vtl=1&vksans=" + isVKSansEnabled() + "&vt_version=" + getBuildNumber() + "&vt_debug=" + isDEVModEnabled();
|
||||
return SSFSDomain() + "?token=" + GetUserToken() + "&vt_dark=" + getDarkVKUI() + "&vt_amoled=" + getAmoledVKUI() + "&secret=" + GetUserSecret() + "&proxy=" + getUserProxy() + "&lang=" + getLocale() + "&vt=1&vtl=1&vksans=" + isVKSansEnabled() + "&vt_version=" + getBuildNumber() + "&vt_debug=" + isDEVModEnabled();
|
||||
}
|
||||
|
||||
public static String getString(String key, String defValue) {
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(Helper.GetContext());
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(GetContext());
|
||||
return prefs.getString(key, defValue);
|
||||
}
|
||||
|
||||
@@ -381,32 +382,32 @@ public class Prefs {
|
||||
}
|
||||
|
||||
public static String proxyHostHTTP() {
|
||||
String string = Helper.GetPreferences().getString("proxyHostHTTP", "");
|
||||
String string = GetPreferences().getString("proxyHostHTTP", "");
|
||||
return string.isEmpty() ? "192.168.0.1" : string;
|
||||
}
|
||||
|
||||
public static String proxyHostHTTPS() {
|
||||
String string = Helper.GetPreferences().getString("proxyHostHTTPS", "");
|
||||
String string = GetPreferences().getString("proxyHostHTTPS", "");
|
||||
return string.isEmpty() ? "192.168.0.1" : string;
|
||||
}
|
||||
|
||||
public static String proxyHostSocks() {
|
||||
String string = Helper.GetPreferences().getString("proxyHostSocks", "");
|
||||
String string = GetPreferences().getString("proxyHostSocks", "");
|
||||
return string.isEmpty() ? "192.168.0.1" : string;
|
||||
}
|
||||
|
||||
public static String proxyPortHTTP() {
|
||||
String string = Helper.GetPreferences().getString("proxyPortHTTP", "");
|
||||
String string = GetPreferences().getString("proxyPortHTTP", "");
|
||||
return string.isEmpty() ? "8888" : string;
|
||||
}
|
||||
|
||||
public static String proxyPortHTTPS() {
|
||||
String string = ru.vtosters.lite.utils.Helper.GetPreferences().getString("proxyPortHTTPS", "");
|
||||
String string = GetPreferences().getString("proxyPortHTTPS", "");
|
||||
return string.isEmpty() ? "8888" : string;
|
||||
}
|
||||
|
||||
public static String proxyPortSocks() {
|
||||
String string = Helper.GetPreferences().getString("proxyPortSocks", "");
|
||||
String string = GetPreferences().getString("proxyPortSocks", "");
|
||||
return string.isEmpty() ? "8888" : string;
|
||||
}
|
||||
|
||||
@@ -491,7 +492,7 @@ public class Prefs {
|
||||
}
|
||||
|
||||
public static int getMsgCount() {
|
||||
String customvalue = Helper.GetPreferences().getString("msgcount", "");
|
||||
String customvalue = GetPreferences().getString("msgcount", "");
|
||||
return customvalue.isEmpty() ? 30 : Integer.parseInt(customvalue);
|
||||
}
|
||||
|
||||
@@ -534,7 +535,7 @@ public class Prefs {
|
||||
StandardFilterPut();
|
||||
ShortLinkPut();
|
||||
IDontWantToReadIt();
|
||||
String string = Helper.GetPreferences().getString("spamfilters", "");
|
||||
String string = GetPreferences().getString("spamfilters", "");
|
||||
if (!string.isEmpty()) {
|
||||
mFilters.addAll(Arrays.asList(string.split(", ")));
|
||||
}
|
||||
@@ -543,7 +544,7 @@ public class Prefs {
|
||||
public static void ReferalsPut() {
|
||||
if (BooleanTrue("refsfilter")) {
|
||||
try {
|
||||
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(Helper.GetContext().getAssets().open("Referals.txt")));
|
||||
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(GetContext().getAssets().open("Referals.txt")));
|
||||
while (true) {
|
||||
String readLine = bufferedReader.readLine();
|
||||
if (readLine != null) {
|
||||
@@ -562,7 +563,7 @@ public class Prefs {
|
||||
public static void ShortLinkPut() {
|
||||
if (BooleanTrue("shortlinkfilter")) {
|
||||
try {
|
||||
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(Helper.GetContext().getAssets().open("LinkShorter.txt")));
|
||||
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(GetContext().getAssets().open("LinkShorter.txt")));
|
||||
while (true) {
|
||||
String readLine = bufferedReader.readLine();
|
||||
if (readLine != null) {
|
||||
@@ -581,7 +582,7 @@ public class Prefs {
|
||||
public static void StandardFilterPut() {
|
||||
if (BooleanTrue("default_ad_list")) {
|
||||
try {
|
||||
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(Helper.GetContext().getAssets().open("StandartFilter.txt")));
|
||||
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(GetContext().getAssets().open("StandartFilter.txt")));
|
||||
while (true) {
|
||||
String readLine = bufferedReader.readLine();
|
||||
if (readLine != null) {
|
||||
@@ -600,7 +601,7 @@ public class Prefs {
|
||||
public static void IDontWantToReadIt() {
|
||||
if (BooleanTrue("shitposting")) {
|
||||
try {
|
||||
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(Helper.GetContext().getAssets().open("IDontWantToReadIt.txt")));
|
||||
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(GetContext().getAssets().open("IDontWantToReadIt.txt")));
|
||||
while (true) {
|
||||
String readLine = bufferedReader.readLine();
|
||||
if (readLine != null) {
|
||||
@@ -617,7 +618,7 @@ public class Prefs {
|
||||
}
|
||||
|
||||
public static String SSFSDomain() {
|
||||
String string = Helper.GetPreferences().getString("ssfscustom", "");
|
||||
String string = GetPreferences().getString("ssfscustom", "");
|
||||
if (!string.isEmpty()) {
|
||||
return string;
|
||||
}
|
||||
@@ -625,7 +626,7 @@ public class Prefs {
|
||||
}
|
||||
|
||||
public static String VKVersion() {
|
||||
String string = Helper.GetPreferences().getString("vkversion", "");
|
||||
String string = GetPreferences().getString("vkversion", "");
|
||||
if (!string.isEmpty()) {
|
||||
return string;
|
||||
}
|
||||
@@ -673,7 +674,7 @@ public class Prefs {
|
||||
}
|
||||
|
||||
public static String getLocale() {
|
||||
String string = Helper.GetPreferences().getString("lang_value", "");
|
||||
String string = GetPreferences().getString("lang_value", "");
|
||||
if (string.equals("system")) {
|
||||
return Locale.getDefault().getLanguage();
|
||||
}
|
||||
@@ -681,7 +682,7 @@ public class Prefs {
|
||||
}
|
||||
|
||||
public static boolean proxy() {
|
||||
return ru.vtosters.lite.utils.Helper.GetPreferences().getString("proxy", "").equals("apiproxy");
|
||||
return GetPreferences().getString("proxy", "").equals("apiproxy");
|
||||
}
|
||||
|
||||
public static boolean authors_rec(String str) {
|
||||
@@ -773,7 +774,7 @@ public class Prefs {
|
||||
}
|
||||
|
||||
public static Class getStartFragment() {
|
||||
String string = ru.vtosters.lite.utils.Helper.GetPreferences().getString("start_values", "");
|
||||
String string = GetPreferences().getString("start_values", "");
|
||||
if (string.equals("default")) {
|
||||
return DockBarManager.getInstance().getSelectedTabs().get(0).fragmentClass;
|
||||
}
|
||||
@@ -881,7 +882,7 @@ public class Prefs {
|
||||
public static void fixGapps() {
|
||||
try {
|
||||
if (Build.VERSION.SDK_INT >= 26) {
|
||||
NotificationManager notificationManager = (NotificationManager) ru.vtosters.lite.utils.Helper.GetContext().getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
NotificationManager notificationManager = (NotificationManager) GetContext().getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
boolean z = false;
|
||||
try {
|
||||
if (notificationManager.getNotificationChannel("audio_playback_channel") != null) {
|
||||
@@ -890,7 +891,7 @@ public class Prefs {
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
if (!z) {
|
||||
notificationManager.createNotificationChannel(new NotificationChannel("audio_playback_channel", ru.vtosters.lite.utils.Helper.getResources().getString(R.string.audio_message_play_error), NotificationManager.IMPORTANCE_LOW));
|
||||
notificationManager.createNotificationChannel(new NotificationChannel("audio_playback_channel", getResources().getString(R.string.audio_message_play_error), NotificationManager.IMPORTANCE_LOW));
|
||||
}
|
||||
}
|
||||
} catch (Exception ignored) {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package ru.vtosters.lite.utils;
|
||||
|
||||
import static ru.vtosters.lite.utils.Helper.*;
|
||||
import static ru.vtosters.lite.utils.Prefs.proxyHostHTTP;
|
||||
import static ru.vtosters.lite.utils.Prefs.proxyHostHTTPS;
|
||||
import static ru.vtosters.lite.utils.Prefs.proxyHostSocks;
|
||||
@@ -43,7 +44,7 @@ public class Proxy {
|
||||
}
|
||||
|
||||
public static String getApiCom() {
|
||||
String string = Helper.GetPreferences().getString("proxyapi", "");
|
||||
String string = GetPreferences().getString("proxyapi", "");
|
||||
if (!Prefs.proxy() & string.isEmpty()) {
|
||||
return "api.vk.com";
|
||||
}
|
||||
@@ -51,7 +52,7 @@ public class Proxy {
|
||||
}
|
||||
|
||||
public static String getAwayPhpCom() {
|
||||
String string = Helper.GetPreferences().getString("proxyapi", "");
|
||||
String string = GetPreferences().getString("proxyapi", "");
|
||||
if (!Prefs.proxy() & string.isEmpty()) {
|
||||
return "m.vk.com";
|
||||
}
|
||||
@@ -59,7 +60,7 @@ public class Proxy {
|
||||
}
|
||||
|
||||
public static String getOauthCom() {
|
||||
String string = Helper.GetPreferences().getString("proxyoauth", "");
|
||||
String string = GetPreferences().getString("proxyoauth", "");
|
||||
if (!Prefs.proxy() & string.isEmpty()) {
|
||||
return "oauth.vk.com";
|
||||
}
|
||||
@@ -67,7 +68,7 @@ public class Proxy {
|
||||
}
|
||||
|
||||
public static String getStaticCom() {
|
||||
String string = Helper.GetPreferences().getString("proxystatic", "");
|
||||
String string = GetPreferences().getString("proxystatic", "");
|
||||
if (!Prefs.proxy() & string.isEmpty()) {
|
||||
return "static.vk.com";
|
||||
}
|
||||
@@ -76,7 +77,7 @@ public class Proxy {
|
||||
|
||||
public static String staticFix(String str) {
|
||||
String str2;
|
||||
String string = Helper.GetPreferences().getString("proxystatic", "");
|
||||
String string = GetPreferences().getString("proxystatic", "");
|
||||
if (!Prefs.proxy() & string.isEmpty()) {
|
||||
return str;
|
||||
}
|
||||
@@ -100,7 +101,7 @@ public class Proxy {
|
||||
}
|
||||
|
||||
public static void setProxy() {
|
||||
switch (Helper.GetPreferences().getString("proxy", "")) {
|
||||
switch (GetPreferences().getString("proxy", "")) {
|
||||
case "zaborona":
|
||||
Properties properties = System.getProperties();
|
||||
properties.setProperty("socksProxyHost", "socks.zaboronahelp.pp.ua");
|
||||
|
||||
@@ -1,20 +1,16 @@
|
||||
package ru.vtosters.lite.utils;
|
||||
|
||||
import static android.app.Activity.RESULT_OK;
|
||||
import static android.os.Environment.*;
|
||||
import static android.widget.Toast.*;
|
||||
|
||||
import static androidx.core.app.ActivityCompat.startActivityForResult;
|
||||
|
||||
import static ru.vtosters.lite.utils.Helper.*;
|
||||
import static android.os.Environment.DIRECTORY_DOWNLOADS;
|
||||
import static android.os.Environment.getExternalStoragePublicDirectory;
|
||||
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.Helper.GetContext;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.net.Uri;
|
||||
import android.os.Environment;
|
||||
import android.util.Base64;
|
||||
import android.widget.Toast;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileWriter;
|
||||
@@ -54,7 +50,7 @@ public class SettBackup {
|
||||
e.printStackTrace();
|
||||
makeText(GetContext(), "Не удалось сохранить файл", LENGTH_SHORT).show();
|
||||
}
|
||||
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
makeText(GetContext(), "Не удалось сохранить файл", LENGTH_SHORT).show();
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package ru.vtosters.lite.utils;
|
||||
|
||||
import static ru.vtosters.lite.utils.Helper.*;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.ColorStateList;
|
||||
import android.graphics.drawable.Drawable;
|
||||
@@ -15,39 +17,39 @@ import com.vtosters.lite.R;
|
||||
|
||||
public class Themes {
|
||||
public static int getAccentColor() {
|
||||
return VKThemeHelper.a((int) R.attr.accent);
|
||||
return VKThemeHelper.a(R.attr.accent);
|
||||
}
|
||||
|
||||
public static int getTextAttr() {
|
||||
return VKThemeHelper.a((int) R.attr.text_primary);
|
||||
return VKThemeHelper.a(R.attr.text_primary);
|
||||
}
|
||||
|
||||
public static int getSTextAttr() {
|
||||
return VKThemeHelper.a((int) R.attr.text_secondary);
|
||||
return VKThemeHelper.a(R.attr.text_secondary);
|
||||
}
|
||||
|
||||
public static int getTabbarBackground() {
|
||||
return VKThemeHelper.a((int) R.attr.tabbar_background);
|
||||
return VKThemeHelper.a(R.attr.tabbar_background);
|
||||
}
|
||||
|
||||
public static int getHeaderBackground() {
|
||||
return VKThemeHelper.a((int) R.attr.header_background);
|
||||
return VKThemeHelper.a(R.attr.header_background);
|
||||
}
|
||||
|
||||
public static int getAmoledTheme() {
|
||||
return Helper.GetContext().getResources().getIdentifier("BaseAmoledStyle", "style", Helper.GetContext().getPackageName());
|
||||
return GetContext().getResources().getIdentifier("BaseAmoledStyle", "style", GetContext().getPackageName());
|
||||
}
|
||||
|
||||
public static int picFix() {
|
||||
return Helper.GetContext().getResources().getIdentifier("ActionBarThemeFix", "style", Helper.GetContext().getPackageName());
|
||||
return GetContext().getResources().getIdentifier("ActionBarThemeFix", "style", GetContext().getPackageName());
|
||||
}
|
||||
|
||||
public static int getAmoledImTheme() {
|
||||
return Helper.GetContext().getResources().getIdentifier("VkIm.Theme.VkApp.Amoled", "style", Helper.GetContext().getPackageName());
|
||||
return GetContext().getResources().getIdentifier("VkIm.Theme.VkApp.Amoled", "style", GetContext().getPackageName());
|
||||
}
|
||||
|
||||
public static VKTheme getDarkTheme() {
|
||||
String string = Helper.GetPreferences().getString("darktheme", "");
|
||||
String string = GetPreferences().getString("darktheme", "");
|
||||
if (string.isEmpty()) {
|
||||
return VKTheme.DARK;
|
||||
}
|
||||
@@ -58,7 +60,7 @@ public class Themes {
|
||||
}
|
||||
|
||||
public static ImTheme getImDarkTheme() {
|
||||
String string = Helper.GetPreferences().getString("darktheme", "");
|
||||
String string = GetPreferences().getString("darktheme", "");
|
||||
if (string.isEmpty()) {
|
||||
return ImTheme.VKAPP_DARK;
|
||||
}
|
||||
@@ -69,7 +71,7 @@ public class Themes {
|
||||
}
|
||||
|
||||
public static VKTheme getLightTheme() {
|
||||
String string = Helper.GetPreferences().getString("lighttheme", "");
|
||||
String string = GetPreferences().getString("lighttheme", "");
|
||||
if (string.isEmpty()) {
|
||||
return VKTheme.DEFAULT_LIGHT;
|
||||
}
|
||||
@@ -77,7 +79,7 @@ public class Themes {
|
||||
}
|
||||
|
||||
public static ImTheme getImLightTheme() {
|
||||
String string = Helper.GetPreferences().getString("lighttheme", "");
|
||||
String string = GetPreferences().getString("lighttheme", "");
|
||||
if (string.isEmpty()) {
|
||||
return ImTheme.VKAPP_LIGHT;
|
||||
}
|
||||
@@ -89,7 +91,7 @@ public class Themes {
|
||||
}
|
||||
|
||||
public static int getHeaderText() {
|
||||
return VKThemeHelper.a((int) R.attr.header_text);
|
||||
return VKThemeHelper.a(R.attr.header_text);
|
||||
}
|
||||
|
||||
public static boolean isAndroidMonet() {
|
||||
@@ -162,10 +164,10 @@ public class Themes {
|
||||
if (isColorRefAccented(i) && isAndroidMonet()) {
|
||||
return getAccentColor();
|
||||
}
|
||||
return Helper.GetContext().getResources().getColor(i);
|
||||
return GetContext().getResources().getColor(i);
|
||||
}
|
||||
|
||||
public static String hex(int i) {
|
||||
return String.format("#%06X", new Object[]{Integer.valueOf(i & 16777215)});
|
||||
return String.format("#%06X", Integer.valueOf(i & 16777215));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
package ru.vtosters.lite.utils;
|
||||
|
||||
import static ru.vtosters.lite.utils.Helper.*;
|
||||
import static ru.vtosters.lite.utils.Themes.*;
|
||||
|
||||
import android.util.Base64;
|
||||
import android.webkit.WebView;
|
||||
|
||||
@@ -24,7 +27,7 @@ public class VKUIInjector {
|
||||
|
||||
private static String load(String str) {
|
||||
try {
|
||||
InputStream open = Helper.GetContext().getAssets().open(str);
|
||||
InputStream open = GetContext().getAssets().open(str);
|
||||
StringBuilder sb = new StringBuilder();
|
||||
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(open, StandardCharsets.UTF_8));
|
||||
while (true) {
|
||||
@@ -44,13 +47,13 @@ public class VKUIInjector {
|
||||
|
||||
public static void load() {
|
||||
loadedCSS = load("vt_ui_accent.css")
|
||||
.replace("%header_background%", Themes.hex(Themes.getColorFromAttr(R.attr.header_background)))
|
||||
.replace("%background_content%", Themes.hex(Themes.getColorFromAttr(R.attr.background_content)))
|
||||
.replace("%header_text%", Themes.hex(Themes.getColorFromAttr(R.attr.header_text)))
|
||||
.replace("%accent%", Themes.hex(Themes.getColorFromAttr(R.attr.accent)))
|
||||
.replace("%background_page%", Themes.hex(Themes.getColorFromAttr(R.attr.background_page)))
|
||||
.replace("%background_content%", Themes.hex(Themes.getColorFromAttr(R.attr.background_content)))
|
||||
.replace("%text_primary%", Themes.hex(Themes.getColorFromAttr(R.attr.text_primary)));
|
||||
.replace("%header_background%", hex(getColorFromAttr(R.attr.header_background)))
|
||||
.replace("%background_content%", hex(getColorFromAttr(R.attr.background_content)))
|
||||
.replace("%header_text%", hex(getColorFromAttr(R.attr.header_text)))
|
||||
.replace("%accent%", hex(getColorFromAttr(R.attr.accent)))
|
||||
.replace("%background_page%", hex(getColorFromAttr(R.attr.background_page)))
|
||||
.replace("%background_content%", hex(getColorFromAttr(R.attr.background_content)))
|
||||
.replace("%text_primary%", hex(getColorFromAttr(R.attr.text_primary)));
|
||||
|
||||
loadedCSSAmoled = load("vt_ui_oled.css");
|
||||
isLoaded = true;
|
||||
@@ -61,7 +64,7 @@ public class VKUIInjector {
|
||||
}
|
||||
|
||||
public static void inject(WebView webView) {
|
||||
String string = Helper.GetPreferences().getString("darktheme", "");
|
||||
String string = GetPreferences().getString("darktheme", "");
|
||||
if (Prefs.BooleanTrue("VKUI_INJ")) {
|
||||
if (!isLoaded) {
|
||||
load();
|
||||
|
||||
Reference in New Issue
Block a user