diff --git a/app/src/main/java/bruhcollective/itaysonlab/libvkx/ILibVkxService.java b/app/src/main/java/bruhcollective/itaysonlab/libvkx/ILibVkxService.java index 4950d8704..0de1327b3 100644 --- a/app/src/main/java/bruhcollective/itaysonlab/libvkx/ILibVkxService.java +++ b/app/src/main/java/bruhcollective/itaysonlab/libvkx/ILibVkxService.java @@ -5,7 +5,7 @@ package bruhcollective.itaysonlab.libvkx; // Works only with original signature of VT -public interface ILibVkxService extends android.os.IInterface{ +public interface ILibVkxService extends android.os.IInterface { void play(java.util.List audio_ids, int index, String playbackContext) throws android.os.RemoteException; int getUserId() throws android.os.RemoteException; @@ -24,42 +24,42 @@ public interface ILibVkxService extends android.os.IInterface{ /** * Default implementation for ILibVkxService. */ - class Default implements ILibVkxService{ + class Default implements ILibVkxService { // Starts playback. playbackContext can be "other" if you don't sure what it is @Override - public void play(java.util.List audio_ids, int index, String playbackContext) throws android.os.RemoteException{ + public void play(java.util.List audio_ids, int index, String playbackContext) throws android.os.RemoteException { } // A UserID. CHECK FOR THIS TO BE EQUAL BEFORE SENDING ANYTHING TO SERVICE! @Override - public int getUserId() throws android.os.RemoteException{ + public int getUserId() throws android.os.RemoteException { return 0; } // Cache add/remove @Override - public void addTrackToCache(int track_id, int owner_id, String access_key) throws android.os.RemoteException{ + public void addTrackToCache(int track_id, int owner_id, String access_key) throws android.os.RemoteException { } @Override - public void deleteTrackFromCache(int track_id, int owner_id) throws android.os.RemoteException{ + public void deleteTrackFromCache(int track_id, int owner_id) throws android.os.RemoteException { } @Override - public boolean isTrackCached(int track_id, int owner_id) throws android.os.RemoteException{ + public boolean isTrackCached(int track_id, int owner_id) throws android.os.RemoteException { return false; } // 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 getCache() throws android.os.RemoteException{ + public java.util.List getCache() throws android.os.RemoteException { return null; } @Override - public android.os.IBinder asBinder(){ + public android.os.IBinder asBinder() { return null; } } @@ -69,7 +69,7 @@ public interface ILibVkxService extends android.os.IInterface{ /** * Local-side IPC implementation stub class. */ - 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); @@ -81,7 +81,7 @@ public interface ILibVkxService extends android.os.IInterface{ /** * Construct the stub at attach it to the interface. */ - public Stub(){ + public Stub() { this.attachInterface(this, DESCRIPTOR); } @@ -89,7 +89,7 @@ public interface ILibVkxService extends android.os.IInterface{ * Cast an IBinder object into an bruhcollective.itaysonlab.libvkx.ILibVkxService interface, * generating a proxy if needed. */ - public static ILibVkxService asInterface(android.os.IBinder obj){ + public static ILibVkxService asInterface(android.os.IBinder obj) { if ((obj == null)) { return null; } @@ -100,7 +100,7 @@ public interface ILibVkxService extends android.os.IInterface{ return new Proxy(obj); } - public static boolean setDefaultImpl(ILibVkxService impl){ + public static boolean setDefaultImpl(ILibVkxService impl) { if (Proxy.sDefaultImpl == null && impl != null) { Proxy.sDefaultImpl = impl; return true; @@ -108,19 +108,19 @@ public interface ILibVkxService extends android.os.IInterface{ return false; } - public static ILibVkxService getDefaultImpl(){ + public static ILibVkxService getDefaultImpl() { return Proxy.sDefaultImpl; } @Override - public android.os.IBinder asBinder(){ + public android.os.IBinder asBinder() { return this; } @Override - public boolean onTransact(int code, android.os.Parcel data, android.os.Parcel reply, int flags) throws android.os.RemoteException{ + public boolean onTransact(int code, android.os.Parcel data, android.os.Parcel reply, int flags) throws android.os.RemoteException { String descriptor = DESCRIPTOR; - switch(code) { + switch (code) { case INTERFACE_TRANSACTION: { reply.writeString(descriptor); return true; @@ -190,27 +190,27 @@ public interface ILibVkxService extends android.os.IInterface{ } } - private static class Proxy implements ILibVkxService{ + private static class Proxy implements ILibVkxService { public static ILibVkxService sDefaultImpl; private final android.os.IBinder mRemote; - Proxy(android.os.IBinder remote){ + Proxy(android.os.IBinder remote) { mRemote = remote; } @Override - public android.os.IBinder asBinder(){ + public android.os.IBinder asBinder() { return mRemote; } // Starts playback. playbackContext can be "other" if you don't sure what it is - public String getInterfaceDescriptor(){ + public String getInterfaceDescriptor() { return DESCRIPTOR; } // A UserID. CHECK FOR THIS TO BE EQUAL BEFORE SENDING ANYTHING TO SERVICE! @Override - public void play(java.util.List audio_ids, int index, String playbackContext) throws android.os.RemoteException{ + public void play(java.util.List audio_ids, int index, String playbackContext) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(); android.os.Parcel _reply = android.os.Parcel.obtain(); try { @@ -232,7 +232,7 @@ public interface ILibVkxService extends android.os.IInterface{ // Cache add/remove @Override - public int getUserId() throws android.os.RemoteException{ + public int getUserId() throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(); android.os.Parcel _reply = android.os.Parcel.obtain(); int _result; @@ -252,7 +252,7 @@ public interface ILibVkxService extends android.os.IInterface{ } @Override - public void addTrackToCache(int track_id, int owner_id, String access_key) throws android.os.RemoteException{ + public void addTrackToCache(int track_id, int owner_id, String access_key) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(); android.os.Parcel _reply = android.os.Parcel.obtain(); try { @@ -273,7 +273,7 @@ public interface ILibVkxService extends android.os.IInterface{ } @Override - public void deleteTrackFromCache(int track_id, int owner_id) throws android.os.RemoteException{ + public void deleteTrackFromCache(int track_id, int owner_id) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(); android.os.Parcel _reply = android.os.Parcel.obtain(); try { @@ -295,7 +295,7 @@ public interface ILibVkxService extends android.os.IInterface{ // Also, the items in the list are JSON ones. @Override - public boolean isTrackCached(int track_id, int owner_id) throws android.os.RemoteException{ + public boolean isTrackCached(int track_id, int owner_id) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(); android.os.Parcel _reply = android.os.Parcel.obtain(); boolean _result; @@ -317,7 +317,7 @@ public interface ILibVkxService extends android.os.IInterface{ } @Override - public java.util.List getCache() throws android.os.RemoteException{ + public java.util.List getCache() throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(); android.os.Parcel _reply = android.os.Parcel.obtain(); java.util.List _result; diff --git a/app/src/main/java/bruhcollective/itaysonlab/libvkx/client/ClientConstants.java b/app/src/main/java/bruhcollective/itaysonlab/libvkx/client/ClientConstants.java index 86ae88f4b..b66519ad0 100644 --- a/app/src/main/java/bruhcollective/itaysonlab/libvkx/client/ClientConstants.java +++ b/app/src/main/java/bruhcollective/itaysonlab/libvkx/client/ClientConstants.java @@ -1,6 +1,6 @@ package bruhcollective.itaysonlab.libvkx.client; -public class ClientConstants{ +public class ClientConstants { public final static String ACTION = "bruhcollective.itaysonlab.libvkx.LIBVKX_SERVICE"; public final static String PACKAGE = "ua.itaysonlab.vkx"; } diff --git a/app/src/main/java/bruhcollective/itaysonlab/libvkx/client/LibVKXClient.java b/app/src/main/java/bruhcollective/itaysonlab/libvkx/client/LibVKXClient.java index 4a4238bb0..3c2623517 100644 --- a/app/src/main/java/bruhcollective/itaysonlab/libvkx/client/LibVKXClient.java +++ b/app/src/main/java/bruhcollective/itaysonlab/libvkx/client/LibVKXClient.java @@ -1,11 +1,10 @@ package bruhcollective.itaysonlab.libvkx.client; -import static ru.vtosters.lite.utils.Globals.getContext; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; import static ru.vtosters.lite.utils.Preferences.getBoolValue; import android.content.Context; import android.os.RemoteException; -import android.util.Log; import com.vk.dto.music.MusicTrack; import com.vk.music.common.MusicPlaybackLaunchContext; @@ -15,35 +14,35 @@ import java.util.List; import bruhcollective.itaysonlab.libvkx.ILibVkxService; -public class LibVKXClient{ +public class LibVKXClient { private static LibVKXClientImpl impl; - public static LibVKXClientImpl getInstance(Context context){ + public static LibVKXClientImpl getInstance(Context context) { if (impl == null) { impl = new LibVKXClientImpl(context); } return impl; } - public static LibVKXClientImpl getInstance(){ + public static LibVKXClientImpl getInstance() { LibVKXClientImpl libVKXClientImpl = impl; - return libVKXClientImpl == null ? getInstance(getContext()) : libVKXClientImpl; + return libVKXClientImpl == null ? getInstance(getGlobalContext()) : libVKXClientImpl; } - public static boolean isVkxInstalled(){ + public static boolean isVkxInstalled() { try { - getContext().getPackageManager().getPackageInfo("ua.itaysonlab.vkx", 0); + getGlobalContext().getPackageManager().getPackageInfo("ua.itaysonlab.vkx", 0); return true; } catch (Exception unused) { return false; } } // VKX check - public static boolean isIntegrationEnabled(){ + public static boolean isIntegrationEnabled() { return getBoolValue("libvkx_integration", false) && isVkxInstalled(); } - public static boolean play(MusicTrack musicTrack, List list, MusicPlaybackLaunchContext playerRefer){ + public static boolean play(MusicTrack musicTrack, List list, MusicPlaybackLaunchContext playerRefer) { if (!isIntegrationEnabled()) { return false; } @@ -53,7 +52,7 @@ public class LibVKXClient{ return getInstance().runOnService(action); } - public static void lambdaplay(List list, MusicTrack musicTrack, ILibVkxService iLibVkxService){ + public static void lambdaplay(List list, MusicTrack musicTrack, ILibVkxService iLibVkxService) { int indexOf = list.indexOf(musicTrack); var ids = new ArrayList(); for (var track : list) { @@ -70,7 +69,7 @@ public class LibVKXClient{ } } - private static String asId(MusicTrack musicTrack){ + private static String asId(MusicTrack musicTrack) { String str = musicTrack.e + "_" + musicTrack.d; if (musicTrack.O == null || musicTrack.O.equals("")) { return str; diff --git a/app/src/main/java/bruhcollective/itaysonlab/libvkx/client/LibVKXClientImpl.java b/app/src/main/java/bruhcollective/itaysonlab/libvkx/client/LibVKXClientImpl.java index 09cf56ba8..11b862856 100644 --- a/app/src/main/java/bruhcollective/itaysonlab/libvkx/client/LibVKXClientImpl.java +++ b/app/src/main/java/bruhcollective/itaysonlab/libvkx/client/LibVKXClientImpl.java @@ -1,6 +1,6 @@ package bruhcollective.itaysonlab.libvkx.client; -import static ru.vtosters.lite.utils.Globals.getUserId; +import static ru.vtosters.lite.utils.AccountManagerUtils.getUserId; import android.content.ComponentName; import android.content.Context; @@ -15,7 +15,7 @@ import java.util.List; import bruhcollective.itaysonlab.libvkx.ILibVkxService; -public class LibVKXClientImpl{ +public class LibVKXClientImpl { private ILibVkxService serviceInstance; private PackageManager pm; private Context ctx; @@ -23,15 +23,15 @@ public class LibVKXClientImpl{ private boolean isBindFailed = false; - private LibVKXClientImpl(){ + private LibVKXClientImpl() { } - public LibVKXClientImpl(Context ctx){ + public LibVKXClientImpl(Context ctx) { this.ctx = ctx; this.pm = ctx.getPackageManager(); } - public void finish(){ + public void finish() { if (cn != null) { ctx.unbindService(cn); } @@ -39,7 +39,7 @@ public class LibVKXClientImpl{ serviceInstance = null; } - public T runOnServiceSync(LibVKXActionGeneric action){ + public T runOnServiceSync(LibVKXActionGeneric action) { if (serviceInstance != null) { return action.run(serviceInstance); } else { @@ -49,7 +49,7 @@ public class LibVKXClientImpl{ // true - action is ran // false - action is failed, should fallback to default UI/UX - public boolean runOnService(LibVKXAction action){ + public boolean runOnService(LibVKXAction action) { if (serviceInstance != null) { try { if (serviceInstance.getUserId() != getUserId()) return false; @@ -64,12 +64,12 @@ public class LibVKXClientImpl{ } } - private boolean requestServiceInit(LibVKXAction runAfterBind){ + private boolean requestServiceInit(LibVKXAction runAfterBind) { if (!verifyBindActuality()) return false; - cn = new ServiceConnection(){ + cn = new ServiceConnection() { @Override - public void onServiceConnected(ComponentName name, IBinder service){ + public void onServiceConnected(ComponentName name, IBinder service) { serviceInstance = ILibVkxService.Stub.asInterface(service); if (serviceInstance == null) { // op mycopok... @@ -85,7 +85,7 @@ public class LibVKXClientImpl{ } @Override - public void onServiceDisconnected(ComponentName name){ + public void onServiceDisconnected(ComponentName name) { serviceInstance = null; } }; @@ -94,16 +94,16 @@ public class LibVKXClientImpl{ return true; } - private boolean verifyBindActuality(){ + private boolean verifyBindActuality() { if (!checkIfAppExists()) return false; // no need return !isBindFailed; } - private Intent getIntent(){ + private Intent getIntent() { return new Intent(ClientConstants.ACTION).setPackage(ClientConstants.PACKAGE); } - private boolean checkIfAppExists(){ + private boolean checkIfAppExists() { List resolveInfos = pm.queryIntentServices(getIntent(), 0); if (resolveInfos == null || resolveInfos.isEmpty()) return false; @@ -114,14 +114,14 @@ public class LibVKXClientImpl{ return false; } - public interface LibVKXAction{ + public interface LibVKXAction { void run(ILibVkxService service); } - public interface LibVKXActionGeneric{ + public interface LibVKXActionGeneric { T run(ILibVkxService service); - default T defaultValue(){ + default T defaultValue() { return null; } } diff --git a/app/src/main/java/com/aefyr/tsg/g2/CustomStickersEventsListener.java b/app/src/main/java/com/aefyr/tsg/g2/CustomStickersEventsListener.java index 6b8f6b88b..d2cb9318d 100755 --- a/app/src/main/java/com/aefyr/tsg/g2/CustomStickersEventsListener.java +++ b/app/src/main/java/com/aefyr/tsg/g2/CustomStickersEventsListener.java @@ -3,35 +3,35 @@ package com.aefyr.tsg.g2; /** * Created by Aefyr on 19.05.2018. */ -public abstract class CustomStickersEventsListener implements TelegramStickersService.StickersEventsListener{ +public abstract class CustomStickersEventsListener implements TelegramStickersService.StickersEventsListener { @Override - public void onPackAdded(TelegramStickersPack pack, int atIndex){ + public void onPackAdded(TelegramStickersPack pack, int atIndex) { } @Override - public void onPackChanged(TelegramStickersPack pack, int atIndex){ + public void onPackChanged(TelegramStickersPack pack, int atIndex) { } @Override - public void onPackRemoved(TelegramStickersPack pack, int atIndex){ + public void onPackRemoved(TelegramStickersPack pack, int atIndex) { } @Override - public void onPackDownloadError(TelegramStickersPack pack, Exception error){ + public void onPackDownloadError(TelegramStickersPack pack, Exception error) { } @Override - public void onActivePacksListChanged(){ + public void onActivePacksListChanged() { } @Override - public void onInactivePacksListChanged(){ + public void onInactivePacksListChanged() { } } diff --git a/app/src/main/java/com/aefyr/tsg/g2/CustomStickersPack.java b/app/src/main/java/com/aefyr/tsg/g2/CustomStickersPack.java index ab958a042..ab1194a3c 100755 --- a/app/src/main/java/com/aefyr/tsg/g2/CustomStickersPack.java +++ b/app/src/main/java/com/aefyr/tsg/g2/CustomStickersPack.java @@ -7,7 +7,7 @@ import java.io.File; /** * Created by Aefyr on 20.05.2018. */ -public abstract class CustomStickersPack{ +public abstract class CustomStickersPack { public abstract File folder(); diff --git a/app/src/main/java/com/aefyr/tsg/g2/NotificationsHelper.java b/app/src/main/java/com/aefyr/tsg/g2/NotificationsHelper.java index d1ad5a612..1479a6bb7 100755 --- a/app/src/main/java/com/aefyr/tsg/g2/NotificationsHelper.java +++ b/app/src/main/java/com/aefyr/tsg/g2/NotificationsHelper.java @@ -1,6 +1,6 @@ package com.aefyr.tsg.g2; -import static ru.vtosters.lite.utils.Globals.getIdentifier; +import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier; import android.app.Notification; import android.app.NotificationChannel; @@ -20,7 +20,7 @@ import java.util.concurrent.atomic.AtomicLong; /** * Created by Aefyr on 20.05.2018. */ -public class NotificationsHelper{ +public class NotificationsHelper { private static final int NOTIFICATION_ID_BASE = 3921337; private static final String NOTIFICATION_CHANNEL_ID = "tgss_chan_v5"; private static final int MAX_UPDATE_NOTIFICATIONS_PER_SECOND = 3; @@ -31,7 +31,7 @@ public class NotificationsHelper{ private final AtomicLong lastNotificationTime = new AtomicLong(0); private int currentNotificationN = 0; - public NotificationsHelper(Context c){ + public NotificationsHelper(Context c) { this.c = c; manager = NotificationManagerCompat.from(c); @@ -44,7 +44,7 @@ public class NotificationsHelper{ } } - public void packStartedDownloading(TelegramStickersPack pack){ + public void packStartedDownloading(TelegramStickersPack pack) { int notificationId = NOTIFICATION_ID_BASE + currentNotificationN++; downloadingPacksNotificationsIds.put(pack, notificationId); @@ -56,7 +56,7 @@ public class NotificationsHelper{ manager.notify(notificationId, builder.build()); } - public void packDownloadUpdated(TelegramStickersPack pack, int downloadProgress){ + public void packDownloadUpdated(TelegramStickersPack pack, int downloadProgress) { if (System.currentTimeMillis() - lastNotificationTime.get() < MIN_TIME_BETWEEN_UPDATE_NOTIFICATIONS) return; @@ -73,7 +73,7 @@ public class NotificationsHelper{ manager.notify(downloadingPacksNotificationsIds.get(pack), builder.build()); } - public void packDoneDownloading(TelegramStickersPack pack, boolean success, boolean wasUpdate, @Nullable Exception e){ + public void packDoneDownloading(TelegramStickersPack pack, boolean success, boolean wasUpdate, @Nullable Exception e) { Notification.Builder builder = commonBuilder(); builder.setProgress(0, 0, false); builder.setOngoing(false); @@ -94,11 +94,11 @@ public class NotificationsHelper{ manager.notify(downloadingPacksNotificationsIds.remove(pack), builder.build()); } - public void removePackNotification(TelegramStickersPack pack){ + public void removePackNotification(TelegramStickersPack pack) { manager.cancel(downloadingPacksNotificationsIds.remove(pack)); } - private Notification.Builder commonBuilder(){ + private Notification.Builder commonBuilder() { var builder = new Notification.Builder(c).setPriority(Notification.PRIORITY_MAX).setSmallIcon(getIdentifier("ic_download_24", "drawable")); if (oreo()) { builder.setChannelId(NOTIFICATION_CHANNEL_ID); @@ -107,7 +107,7 @@ public class NotificationsHelper{ return builder; } - private boolean oreo(){ + private boolean oreo() { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.O; } } diff --git a/app/src/main/java/com/aefyr/tsg/g2/PackDeletionTask.java b/app/src/main/java/com/aefyr/tsg/g2/PackDeletionTask.java index 4c7e3467d..c17e4fcd0 100755 --- a/app/src/main/java/com/aefyr/tsg/g2/PackDeletionTask.java +++ b/app/src/main/java/com/aefyr/tsg/g2/PackDeletionTask.java @@ -8,17 +8,17 @@ import java.io.File; /** * Created by Aefyr on 20.05.2018. */ -class PackDeletionTask extends AsyncTask{ +class PackDeletionTask extends AsyncTask { private static final String TAG = "TGSSAnnihilator"; private final TelegramStickersPack pack; - PackDeletionTask(TelegramStickersPack pack){ + PackDeletionTask(TelegramStickersPack pack) { this.pack = pack; } @Override - protected Boolean doInBackground(Void... voids){ + protected Boolean doInBackground(Void... voids) { boolean success = true; for (File f : pack.folder.listFiles()) { @@ -31,7 +31,7 @@ class PackDeletionTask extends AsyncTask{ } @Override - protected void onPostExecute(Boolean aBoolean){ + protected void onPostExecute(Boolean aBoolean) { Log.d(TAG, String.format("Attempted deleting pack %s, success?%s", pack.id, aBoolean)); } } diff --git a/app/src/main/java/com/aefyr/tsg/g2/TelegramStickersPack.java b/app/src/main/java/com/aefyr/tsg/g2/TelegramStickersPack.java index cc32aa983..25cc4b6da 100755 --- a/app/src/main/java/com/aefyr/tsg/g2/TelegramStickersPack.java +++ b/app/src/main/java/com/aefyr/tsg/g2/TelegramStickersPack.java @@ -17,7 +17,7 @@ import java.util.List; /** * Created by Aefyr on 18.05.2018. */ -public class TelegramStickersPack extends CustomStickersPack{ +public class TelegramStickersPack extends CustomStickersPack { public static final int UNKNOWN = -1; public static final int DOWNLOADED = 0; @@ -35,12 +35,12 @@ public class TelegramStickersPack extends CustomStickersPack{ public HashMap> emojis = new HashMap<>(); - public TelegramStickersPack(String id){ + public TelegramStickersPack(String id) { this.id = id.toLowerCase(); title = id; } - public JSONObject encodeEmojis() throws JSONException{ + public JSONObject encodeEmojis() throws JSONException { JSONObject obj = new JSONObject(); for (HashMap.Entry> en : emojis.entrySet()) { JSONArray arr = new JSONArray(); @@ -51,9 +51,9 @@ public class TelegramStickersPack extends CustomStickersPack{ return obj; } - public void loadEmojis(JSONObject obj) throws JSONException{ + public void loadEmojis(JSONObject obj) throws JSONException { Iterator it = obj.keys(); - while(it.hasNext()) { + while (it.hasNext()) { String key = it.next(); //emojis.put(key, obj.getInt(key)); List list = emojis.get(key); @@ -65,7 +65,7 @@ public class TelegramStickersPack extends CustomStickersPack{ } } - public Bitmap getIcon(int targetMaxSideSize){ + public Bitmap getIcon(int targetMaxSideSize) { if (state != DOWNLOADED && state != UPDATING) throw new IllegalStateException("Unable to get an icon of a pack that hasn't been downloaded yet"); @@ -74,7 +74,7 @@ public class TelegramStickersPack extends CustomStickersPack{ return getScaledBitmap(icon, targetMaxSideSize); } - private Bitmap getScaledBitmap(File bitmapFile, int targetMaxSideSize){ + private Bitmap getScaledBitmap(File bitmapFile, int targetMaxSideSize) { BitmapFactory.Options op = new BitmapFactory.Options(); op.inJustDecodeBounds = true; op.inPreferredConfig = Bitmap.Config.ARGB_8888; @@ -100,46 +100,46 @@ public class TelegramStickersPack extends CustomStickersPack{ } @Override - public boolean equals(Object obj){ + public boolean equals(Object obj) { return obj instanceof TelegramStickersPack && ((TelegramStickersPack) obj).id.equalsIgnoreCase(id); } @Override - public int hashCode(){ + public int hashCode() { return id.toLowerCase().hashCode(); } @Override - public File folder(){ + public File folder() { return folder; } @Override - public int stickersCount(){ + public int stickersCount() { return stickersCount; } @Override - public String name(){ + public String name() { return title; } @Override - public Bitmap getIconBitmap(){ + public Bitmap getIconBitmap() { return getIcon(128); } @Override - public Bitmap getStickerBitmap(int index){ + public Bitmap getStickerBitmap(int index) { return BitmapFactory.decodeFile(new File(folder, String.format("%03d.png", index + 1)).getAbsolutePath()); } @Override - public File getStickerFile(int index){ + public File getStickerFile(int index) { return new File(folder, String.format("%03d.png", index + 1)); } - public Bitmap getStickerBitmap(int index, int maxSize){ + public Bitmap getStickerBitmap(int index, int maxSize) { return getScaledBitmap(new File(folder, String.format("%03d.png", index + 1)), maxSize); } } diff --git a/app/src/main/java/com/aefyr/tsg/g2/TelegramStickersService.java b/app/src/main/java/com/aefyr/tsg/g2/TelegramStickersService.java index 4fc52fc8d..04e27b64b 100755 --- a/app/src/main/java/com/aefyr/tsg/g2/TelegramStickersService.java +++ b/app/src/main/java/com/aefyr/tsg/g2/TelegramStickersService.java @@ -1,6 +1,6 @@ package com.aefyr.tsg.g2; -import static ru.vtosters.lite.utils.Globals.getContext; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; import android.content.Context; import android.content.Intent; @@ -24,7 +24,7 @@ import ru.vtosters.lite.ui.fragments.tgstickers.StickersFragment; /** * Created by Aefyr on 19.05.2018. */ -public class TelegramStickersService{ +public class TelegramStickersService { private static final String TAG = "TGStickersService"; private static TelegramStickersService instance; @@ -46,7 +46,7 @@ public class TelegramStickersService{ private final NotificationsHelper notificationsHelper; private boolean ready = false; - private TelegramStickersService(Context context){ + private TelegramStickersService(Context context) { instance = this; this.c = context.getApplicationContext(); @@ -67,15 +67,15 @@ public class TelegramStickersService{ updatePacks(true); } - public static TelegramStickersService getInstance(Context c){ + public static TelegramStickersService getInstance(Context c) { return instance == null ? new TelegramStickersService(c) : instance; } - private void updatePacks(final boolean notify){ + private void updatePacks(final boolean notify) { packs.clear(); - dbHelper.getAllPacks(new TelegramStickersDbHelper.PacksLoadingListener(){ + dbHelper.getAllPacks(new TelegramStickersDbHelper.PacksLoadingListener() { @Override - public void onPackLoaded(final TelegramStickersPack pack){ + public void onPackLoaded(final TelegramStickersPack pack) { runOnUiThread(() -> { packs.add(pack); @@ -89,7 +89,7 @@ public class TelegramStickersService{ } @Override - public void onAllPacksLoaded(ArrayList packs){ + public void onAllPacksLoaded(ArrayList packs) { ready = true; if (notify) { @@ -98,22 +98,22 @@ public class TelegramStickersService{ } Log.d(TAG, String.format("Packs list loaded, running %d queued tasks...", queuedTasks.size())); - while(!queuedTasks.isEmpty()) + while (!queuedTasks.isEmpty()) queuedTasks.remove(0).run(); } }); } - public void addStickersEventsListener(StickersEventsListener listener){ + public void addStickersEventsListener(StickersEventsListener listener) { listeners.add(listener); } - public void removeStickersEventsListener(StickersEventsListener listener){ + public void removeStickersEventsListener(StickersEventsListener listener) { listeners.remove(listener); } - private void notifyPackAdded(TelegramStickersPack pack, int atIndex){ - getContext().sendBroadcast(new Intent(StickersFragment.ACTION_RELOAD)); + private void notifyPackAdded(TelegramStickersPack pack, int atIndex) { + getGlobalContext().sendBroadcast(new Intent(StickersFragment.ACTION_RELOAD)); if (listeners.isEmpty()) return; @@ -122,8 +122,8 @@ public class TelegramStickersService{ } } - private void notifyPackChanged(TelegramStickersPack pack, int atIndex){ - getContext().sendBroadcast(new Intent(StickersFragment.ACTION_RELOAD)); + private void notifyPackChanged(TelegramStickersPack pack, int atIndex) { + getGlobalContext().sendBroadcast(new Intent(StickersFragment.ACTION_RELOAD)); if (listeners.isEmpty()) return; @@ -132,8 +132,8 @@ public class TelegramStickersService{ } } - private void notifyPackRemoved(TelegramStickersPack pack, int atIndex){ - getContext().sendBroadcast(new Intent(StickersFragment.ACTION_RELOAD)); + private void notifyPackRemoved(TelegramStickersPack pack, int atIndex) { + getGlobalContext().sendBroadcast(new Intent(StickersFragment.ACTION_RELOAD)); if (listeners.isEmpty()) return; @@ -142,8 +142,8 @@ public class TelegramStickersService{ } } - private void notifyPackDownloadError(TelegramStickersPack pack, Exception error){ - getContext().sendBroadcast(new Intent(StickersFragment.ACTION_RELOAD)); + private void notifyPackDownloadError(TelegramStickersPack pack, Exception error) { + getGlobalContext().sendBroadcast(new Intent(StickersFragment.ACTION_RELOAD)); if (listeners.isEmpty()) return; @@ -152,8 +152,8 @@ public class TelegramStickersService{ } } - private void notifyActivePacksListChanged(){ - getContext().sendBroadcast(new Intent(StickersFragment.ACTION_RELOAD)); + private void notifyActivePacksListChanged() { + getGlobalContext().sendBroadcast(new Intent(StickersFragment.ACTION_RELOAD)); if (listeners.isEmpty()) return; @@ -162,8 +162,8 @@ public class TelegramStickersService{ } } - private void notifyInactivePacksListChanged(){ - getContext().sendBroadcast(new Intent(StickersFragment.ACTION_RELOAD)); + private void notifyInactivePacksListChanged() { + getGlobalContext().sendBroadcast(new Intent(StickersFragment.ACTION_RELOAD)); if (listeners.isEmpty()) return; @@ -172,27 +172,27 @@ public class TelegramStickersService{ } } - public void setBotKey(String botKey){ + public void setBotKey(String botKey) { grabber.setBotApiKey(botKey); } - public ArrayList getPacksListReference(){ + public ArrayList getPacksListReference() { return packs; } - public ArrayList getActivePacksListReference(){ + public ArrayList getActivePacksListReference() { return activePacks; } - public ArrayList getInactivePacksListReference(){ + public ArrayList getInactivePacksListReference() { return inactivePacks; } - public boolean isDoneLoading(){ + public boolean isDoneLoading() { return ready; } - public boolean requestPackDownload(final String id, File packFolder){ + public boolean requestPackDownload(final String id, File packFolder) { if (currentlyDownloading.contains(id)) { Log.e(TAG, String.format("Got request to download pack %s which is already downloading", id)); return false; @@ -228,9 +228,9 @@ public class TelegramStickersService{ notificationsHelper.packStartedDownloading(newPack); grabber.enableProxy(); - grabber.grabPack(id, packFolder, pack.version, new TelegramStickersGrabber.PackDownloadListener(){ + grabber.grabPack(id, packFolder, pack.version, new TelegramStickersGrabber.PackDownloadListener() { @Override - public void onPackDownloaded(TelegramStickersPackInfo packInfo, boolean newVersionFound){ + public void onPackDownloaded(TelegramStickersPackInfo packInfo, boolean newVersionFound) { runOnUiThread(() -> { newPack.state = TelegramStickersPack.DOWNLOADED; @@ -250,7 +250,7 @@ public class TelegramStickersService{ } @Override - public void onPackDownloadError(final Exception e){ + public void onPackDownloadError(final Exception e) { runOnUiThread(() -> { Log.e(TAG, "Error while downloading pack " + newPack.id); e.printStackTrace(); @@ -271,7 +271,7 @@ public class TelegramStickersService{ } @Override - public void onGotPackInfo(final TelegramStickersPackInfo packInfo){ + public void onGotPackInfo(final TelegramStickersPackInfo packInfo) { runOnUiThread(() -> { newPack.title = packInfo.title; newPack.stickersCount = packInfo.stickersCount; @@ -283,7 +283,7 @@ public class TelegramStickersService{ } @Override - public void onStickerDownloaded(String pack, File sticker, String boundEmoji, int stickerIndex, int downloadedStickersCount, int totalStickersCount){ + public void onStickerDownloaded(String pack, File sticker, String boundEmoji, int stickerIndex, int downloadedStickersCount, int totalStickersCount) { stickerIndex--; List list = newPack.emojis.get(boundEmoji); @@ -298,7 +298,7 @@ public class TelegramStickersService{ return true; } - public void setPackEnabled(final TelegramStickersPack pack, final boolean enabled, final boolean notify){ + public void setPackEnabled(final TelegramStickersPack pack, final boolean enabled, final boolean notify) { if (!ready) { queuedTasks.add(() -> setPackEnabled(pack, enabled, notify)); return; @@ -324,7 +324,7 @@ public class TelegramStickersService{ } } - public void deletePack(final TelegramStickersPack pack){ + public void deletePack(final TelegramStickersPack pack) { if (!ready) { queuedTasks.add(() -> deletePack(pack)); return; @@ -350,11 +350,11 @@ public class TelegramStickersService{ new PackDeletionTask(pack).executeOnExecutor(executor); } - private void runOnUiThread(Runnable r){ + private void runOnUiThread(Runnable r) { uiThreadHandler.post(r); } - private void syncPack(final TelegramStickersPack pack){ + private void syncPack(final TelegramStickersPack pack) { if (!ready) { queuedTasks.add(() -> syncPack(pack)); return; @@ -363,7 +363,7 @@ public class TelegramStickersService{ Log.d(TAG, "Sync=" + dbHelper.syncPack(pack)); } - public void swap(TelegramStickersPack p1, TelegramStickersPack p2){ + public void swap(TelegramStickersPack p1, TelegramStickersPack p2) { int i1 = p1.index; int i2 = p2.index; p1.index = i2; @@ -383,7 +383,7 @@ public class TelegramStickersService{ getPacksListReference().set(li1, p2); } - interface StickersEventsListener{ + interface StickersEventsListener { void onPackAdded(TelegramStickersPack pack, int atIndex); void onPackRemoved(TelegramStickersPack pack, int atIndex); diff --git a/app/src/main/java/com/aefyr/tsg/g2/sql/TelegramStickersContract.java b/app/src/main/java/com/aefyr/tsg/g2/sql/TelegramStickersContract.java index 34d5507d5..426e25286 100755 --- a/app/src/main/java/com/aefyr/tsg/g2/sql/TelegramStickersContract.java +++ b/app/src/main/java/com/aefyr/tsg/g2/sql/TelegramStickersContract.java @@ -5,16 +5,16 @@ import android.provider.BaseColumns; /** * Created by Aefyr on 19.05.2018. */ -public final class TelegramStickersContract{ +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(){ + private TelegramStickersContract() { } - public static class StickersTableEntry implements BaseColumns{ + public static class StickersTableEntry implements BaseColumns { public static final String TABLE_NAME = "packs"; public static final String COLUMN_NAME_ID = "id"; diff --git a/app/src/main/java/com/aefyr/tsg/g2/sql/TelegramStickersDbHelper.java b/app/src/main/java/com/aefyr/tsg/g2/sql/TelegramStickersDbHelper.java index 6903651ef..8decf3eac 100755 --- a/app/src/main/java/com/aefyr/tsg/g2/sql/TelegramStickersDbHelper.java +++ b/app/src/main/java/com/aefyr/tsg/g2/sql/TelegramStickersDbHelper.java @@ -20,35 +20,35 @@ import java.util.ArrayList; /** * Created by Aefyr on 19.05.2018. */ -public class TelegramStickersDbHelper extends SQLiteOpenHelper{ +public class TelegramStickersDbHelper extends SQLiteOpenHelper { private static final int DB_VERSION = 2; private static final String DB_NAME = "TelegramStickers.db"; private SQLiteDatabase writableDb; private SQLiteDatabase readableDb; - public TelegramStickersDbHelper(Context context){ + public TelegramStickersDbHelper(Context context) { super(context, DB_NAME, null, DB_VERSION); } @Override - public void onCreate(SQLiteDatabase db){ + public void onCreate(SQLiteDatabase db) { db.execSQL(TelegramStickersContract.SQL_CREATE_ENTRIES); } @Override - public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){ + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { if (oldVersion == 1 && newVersion == 2) { db.execSQL(String.format("ALTER TABLE %s ADD COLUMN %s TEXT", TelegramStickersContract.StickersTableEntry.TABLE_NAME, TelegramStickersContract.StickersTableEntry.COLUMN_NAME_EMOJIS)); } } - public void loadDatabases(){ + public void loadDatabases() { writableDb = getWritableDatabase(); readableDb = getReadableDatabase(); } - public boolean syncPack(TelegramStickersPack pack){ + public boolean syncPack(TelegramStickersPack pack) { ContentValues sqlPack = new ContentValues(); sqlPack.put(TelegramStickersContract.StickersTableEntry.COLUMN_NAME_ID, pack.id); sqlPack.put(TelegramStickersContract.StickersTableEntry.COLUMN_NAME_NAME, pack.title); @@ -77,7 +77,7 @@ public class TelegramStickersDbHelper extends SQLiteOpenHelper{ return true; } - private int getNewIndex(){ + private int getNewIndex() { Cursor c = readableDb.rawQuery("SELECT MAX(" + TelegramStickersContract.StickersTableEntry.COLUMN_NAME_INDEX + ") FROM " + TelegramStickersContract.StickersTableEntry.TABLE_NAME, new String[0]); c.moveToLast(); int max; @@ -91,30 +91,30 @@ public class TelegramStickersDbHelper extends SQLiteOpenHelper{ return max + 1; } - public boolean deletePack(TelegramStickersPack pack){ + public boolean deletePack(TelegramStickersPack pack) { return writableDb.delete(TelegramStickersContract.StickersTableEntry.TABLE_NAME, TelegramStickersContract.StickersTableEntry.COLUMN_NAME_ID + "='" + pack.id + "'", null) == 1; } - public void getAllPacks(PacksLoadingListener listener){ + public void getAllPacks(PacksLoadingListener listener) { new PacksLoadingTask(listener).execute(); } - public interface PacksLoadingListener{ + public interface PacksLoadingListener { void onPackLoaded(TelegramStickersPack pack); void onAllPacksLoaded(ArrayList packs); } - private class PacksLoadingTask extends AsyncTask>{ + private class PacksLoadingTask extends AsyncTask> { PacksLoadingListener listener; - PacksLoadingTask(PacksLoadingListener listener){ + PacksLoadingTask(PacksLoadingListener listener) { this.listener = listener; } @Override - protected ArrayList doInBackground(Void... voids){ + protected ArrayList doInBackground(Void... voids) { if (readableDb == null) loadDatabases(); @@ -125,7 +125,7 @@ public class TelegramStickersDbHelper extends SQLiteOpenHelper{ ArrayList packs = new ArrayList<>(cursor.getCount() + 8); - while(cursor.moveToNext()) { + while (cursor.moveToNext()) { Log.d("DB", "PACK LOADED"); String id = cursor.getString(cursor.getColumnIndexOrThrow(TelegramStickersContract.StickersTableEntry.COLUMN_NAME_ID)); String name = cursor.getString(cursor.getColumnIndexOrThrow(TelegramStickersContract.StickersTableEntry.COLUMN_NAME_NAME)); @@ -160,7 +160,7 @@ public class TelegramStickersDbHelper extends SQLiteOpenHelper{ } @Override - protected void onPostExecute(ArrayList packs){ + protected void onPostExecute(ArrayList packs) { listener.onAllPacksLoaded(packs); } } diff --git a/app/src/main/java/com/aefyr/tsg/g2/stickersgrabber/TelegramStickersGrabber.java b/app/src/main/java/com/aefyr/tsg/g2/stickersgrabber/TelegramStickersGrabber.java index 828d7c50d..57fcb88e8 100644 --- a/app/src/main/java/com/aefyr/tsg/g2/stickersgrabber/TelegramStickersGrabber.java +++ b/app/src/main/java/com/aefyr/tsg/g2/stickersgrabber/TelegramStickersGrabber.java @@ -36,7 +36,7 @@ import ru.vtosters.lite.net.NetResponse; /** * Created by Aefyr on 11.05.2018. */ -public class TelegramStickersGrabber{ +public class TelegramStickersGrabber { private static final String TAG = "TSG"; public static String REAL_TG_IP = null; public static String PROXY_IP = null; @@ -51,7 +51,7 @@ public class TelegramStickersGrabber{ private static String GET_FILE_URL; private static String BOT_API_BASE_FILE_URL; - static{ + static { updateURLs(); } @@ -60,7 +60,7 @@ public class TelegramStickersGrabber{ private String botApiKey = ""; private NetClient httpClient; - public TelegramStickersGrabber(String botApiKey){ + public TelegramStickersGrabber(String botApiKey) { this.botApiKey = botApiKey; httpClient = new NetClient.Builder().connectTimeout(5, TimeUnit.SECONDS).build(); uiThreadHandler = new Handler(Looper.getMainLooper()); @@ -73,7 +73,7 @@ public class TelegramStickersGrabber{ } } - public static void updateURLs(){ + public static void updateURLs() { BOT_API_BASE_FILE_URL = "https://api.telegram.org/file/bot%s/%s"; @@ -82,7 +82,7 @@ public class TelegramStickersGrabber{ GET_FILE_URL = BOT_API_BASE_URL + "getFile?file_id=%s"; } - public static boolean isTelegramBlocked(){ + public static boolean isTelegramBlocked() { NetClient client = new NetClient.Builder().connectTimeout(5, TimeUnit.SECONDS).build(); try { if (PROXY_IP != null) { @@ -112,14 +112,14 @@ public class TelegramStickersGrabber{ return false; } - public void resetProxy(){ + public void resetProxy() { httpClient = new NetClient.Builder().connectTimeout(5, TimeUnit.SECONDS).build(); } - public void enableProxy(){ - Thread kostil = new Thread(){ + public void enableProxy() { + Thread kostil = new Thread() { @Override - public void run(){ + public void run() { try { if (PROXY_IP != null) { Socket socket = new Socket(PROXY_IP, PROXY_PORT); @@ -150,41 +150,41 @@ public class TelegramStickersGrabber{ } } - public void grabPack(String id, File packFolder, String installedVersion, final PackDownloadListener listener){ + public void grabPack(String id, File packFolder, String installedVersion, final PackDownloadListener listener) { getPackInfo(id, packFolder, installedVersion, listener); } - public void setBotApiKey(String key){ + public void setBotApiKey(String key) { botApiKey = key; } - public void checkKey(final KeyCheckListener listener){ + public void checkKey(final KeyCheckListener listener) { Log.d(TAG, "Checking key: " + botApiKey); NetRequest request = new NetRequest.Builder().get().url(String.format(BOT_API_BASE_URL + "getMe", botApiKey)).build(); - httpClient.newCall(request).enqueue(new NetCallback(){ + httpClient.newCall(request).enqueue(new NetCallback() { @Override - public void onFailure(NetCall call, IOException e){ + public void onFailure(NetCall call, IOException e) { e.printStackTrace(); runOnUiThread(listener::onNetError); } @Override - public void onResponse(NetCall call, final NetResponse response) throws IOException{ + public void onResponse(NetCall call, final NetResponse response) throws IOException { runOnUiThread(() -> listener.onKeyChecked(response.code() == 200)); } }); } - private void getPackInfo(final String packName, final File packFolder, final String installedVersion, final PackDownloadListener listener){ + 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(){ + httpClient.newCall(packInfoRequest).enqueue(new NetCallback() { @Override - public void onFailure(NetCall call, IOException e){ + public void onFailure(NetCall call, IOException e) { listener.onPackDownloadError(e); } @Override - public void onResponse(NetCall call, NetResponse response) throws IOException{ + public void onResponse(NetCall call, NetResponse response) throws IOException { if (!response.isSuccessful()) { if (response.getData() != null) listener.onPackDownloadError(new TSGException(response.getDataString() + "\nURL: " + call.request().url())); @@ -246,7 +246,7 @@ public class TelegramStickersGrabber{ }); } - private void getPack(final StickerSet set, final File packFolder, final TelegramStickersPackInfo packInfo, final PackDownloadListener listener){ + private void getPack(final StickerSet set, final File packFolder, final TelegramStickersPackInfo packInfo, final PackDownloadListener listener) { final GoalCounter downloadedStickers = new GoalCounter(set.stickers.size(), () -> { Log.d(TAG, String.format("Pack %s has been downloaded to %s", set.id, packFolder.getAbsolutePath())); @@ -262,9 +262,9 @@ public class TelegramStickersGrabber{ final int stickerIndex = i + 1; AtomicBoolean sync = new AtomicBoolean(); - httpClient.newCall(fileInfoRequest).enqueue(new NetCallback(){ + httpClient.newCall(fileInfoRequest).enqueue(new NetCallback() { @Override - public void onFailure(NetCall call, IOException e){ + public void onFailure(NetCall call, IOException e) { if (deathFlag.up()) return; @@ -275,7 +275,7 @@ public class TelegramStickersGrabber{ } @Override - public void onResponse(NetCall call, NetResponse response) throws IOException{ + public void onResponse(NetCall call, NetResponse response) throws IOException { if (deathFlag.up()) return; @@ -305,9 +305,9 @@ public class TelegramStickersGrabber{ NetRequest fileDownloadRequest = new NetRequest.Builder().get().url(String.format(BOT_API_BASE_FILE_URL, botApiKey, filePath)).build(); - httpClient.newCall(fileDownloadRequest).enqueue(new NetCallback(){ + httpClient.newCall(fileDownloadRequest).enqueue(new NetCallback() { @Override - public void onFailure(NetCall call, IOException e){ + public void onFailure(NetCall call, IOException e) { if (deathFlag.up()) return; @@ -318,7 +318,7 @@ public class TelegramStickersGrabber{ } @Override - public void onResponse(NetCall call, NetResponse response) throws IOException{ + public void onResponse(NetCall call, NetResponse response) throws IOException { if (deathFlag.up()) return; @@ -407,7 +407,7 @@ public class TelegramStickersGrabber{ } }); - while(!sync.get()) + while (!sync.get()) try { Thread.sleep(100); } catch (InterruptedException e1) { @@ -415,11 +415,11 @@ public class TelegramStickersGrabber{ } } - private void runOnUiThread(Runnable r){ + private void runOnUiThread(Runnable r) { uiThreadHandler.post(r); } - public interface PackDownloadListener{ + public interface PackDownloadListener { void onPackDownloaded(TelegramStickersPackInfo pack, boolean newVersionFound); void onPackDownloadError(Exception e); @@ -429,27 +429,27 @@ public class TelegramStickersGrabber{ void onStickerDownloaded(String pack, File sticker, String boundEmoji, int stickerIndex, int downloadedStickersCount, int totalStickerCount); } - public interface KeyCheckListener{ + public interface KeyCheckListener { void onKeyChecked(boolean ok); void onNetError(); } - public class TSGException extends Exception{ + public class TSGException extends Exception { private static final long serialVersionUID = 7866915509988422944L; - private TSGException(String message){ + private TSGException(String message) { super(message); } } - private class StickerSet{ + private class StickerSet { String id; String name; String version; ArrayList stickers; - StickerSet(String id, String name, String version, ArrayList stickers){ + StickerSet(String id, String name, String version, ArrayList stickers) { this.name = name; this.stickers = stickers; this.id = id; @@ -457,22 +457,22 @@ public class TelegramStickersGrabber{ } } - private class Sticker{ + private class Sticker { String emoji; String fileId; - Sticker(String fileId, String emoji){ + Sticker(String fileId, String emoji) { this.fileId = fileId; this.emoji = emoji; } @Override - public boolean equals(Object obj){ + public boolean equals(Object obj) { return obj instanceof Sticker && ((Sticker) obj).fileId.equals(fileId); } @Override - public int hashCode(){ + public int hashCode() { return (17 * emoji.hashCode()) << 32 + fileId.hashCode(); } } diff --git a/app/src/main/java/com/aefyr/tsg/g2/stickersgrabber/TelegramStickersPackInfo.java b/app/src/main/java/com/aefyr/tsg/g2/stickersgrabber/TelegramStickersPackInfo.java index 753460b16..af031386b 100755 --- a/app/src/main/java/com/aefyr/tsg/g2/stickersgrabber/TelegramStickersPackInfo.java +++ b/app/src/main/java/com/aefyr/tsg/g2/stickersgrabber/TelegramStickersPackInfo.java @@ -3,13 +3,13 @@ package com.aefyr.tsg.g2.stickersgrabber; /** * Created by Aefyr on 22.05.2018. */ -public class TelegramStickersPackInfo{ +public class TelegramStickersPackInfo { public String id; public String title; public String version; public int stickersCount; - TelegramStickersPackInfo(String id, String title, int stickersCount, String version){ + TelegramStickersPackInfo(String id, String title, int stickersCount, String version) { this.id = id; this.title = title; this.version = version; diff --git a/app/src/main/java/com/aefyr/tsg/g2/stickersgrabber/util/Flag.java b/app/src/main/java/com/aefyr/tsg/g2/stickersgrabber/util/Flag.java index 6af500f4a..26d13e7b7 100755 --- a/app/src/main/java/com/aefyr/tsg/g2/stickersgrabber/util/Flag.java +++ b/app/src/main/java/com/aefyr/tsg/g2/stickersgrabber/util/Flag.java @@ -3,18 +3,18 @@ package com.aefyr.tsg.g2.stickersgrabber.util; /** * Created by Aefyr on 11.05.2018. */ -public class Flag{ +public class Flag { private boolean up = false; - public synchronized boolean up(){ + public synchronized boolean up() { return up; } - public synchronized void raise(){ + public synchronized void raise() { up = true; } - public synchronized void lower(){ + public synchronized void lower() { up = false; } } diff --git a/app/src/main/java/com/aefyr/tsg/g2/stickersgrabber/util/GoalCounter.java b/app/src/main/java/com/aefyr/tsg/g2/stickersgrabber/util/GoalCounter.java index 426a1e49b..3c778c47a 100755 --- a/app/src/main/java/com/aefyr/tsg/g2/stickersgrabber/util/GoalCounter.java +++ b/app/src/main/java/com/aefyr/tsg/g2/stickersgrabber/util/GoalCounter.java @@ -5,34 +5,34 @@ import android.util.Log; /** * Created by Aefyr on 11.05.2018. */ -public class GoalCounter{ +public class GoalCounter { private final int goal; private final OnGoalReachListener listener; private int i = 0; - public GoalCounter(int goal, OnGoalReachListener listener){ + public GoalCounter(int goal, OnGoalReachListener listener) { this.goal = goal; this.listener = listener; } - public synchronized void increase(){ + public synchronized void increase() { if (++i == goal) listener.onGoalReached(); Log.d("COUNTER", "G=" + goal + ", I=" + i); } - public synchronized void increase(int delta){ + public synchronized void increase(int delta) { if ((i += delta) == goal) listener.onGoalReached(); } - public synchronized int value(){ + public synchronized int value() { return i; } - public interface OnGoalReachListener{ + public interface OnGoalReachListener { void onGoalReached(); } } diff --git a/app/src/main/java/com/arthenica/ffmpegkit/NativeLoader.java b/app/src/main/java/com/arthenica/ffmpegkit/NativeLoader.java index aa7c89d0f..a544a51a9 100755 --- a/app/src/main/java/com/arthenica/ffmpegkit/NativeLoader.java +++ b/app/src/main/java/com/arthenica/ffmpegkit/NativeLoader.java @@ -8,60 +8,60 @@ import com.arthenica.smartexception.java.Exceptions; import java.util.Collections; import java.util.List; -import ru.vtosters.lite.utils.Globals; +import ru.vtosters.lite.utils.AndroidUtils; -public class NativeLoader{ +public class NativeLoader { static final String[] FFMPEG_LIBRARIES = {"avutil", "swscale", "swresample", "avcodec", "avformat", "avfilter", "avdevice"}; - private static void loadLibrary(String libraryName){ - String path = Globals.getContext().getFilesDir() + "/lib" + libraryName + ".so"; + private static void loadLibrary(String libraryName) { + String path = AndroidUtils.getGlobalContext().getFilesDir() + "/lib" + libraryName + ".so"; System.load(path); } - private static List loadExternalLibraries(){ + private static List loadExternalLibraries() { // return Packages.getExternalLibraries(); return Collections.emptyList(); } - private static String loadNativeAbi(){ + private static String loadNativeAbi() { // return AbiDetect.getNativeAbi(); return Abi.ABI_ARMV7A_NEON.getName(); } - static String loadAbi(){ + static String loadAbi() { // return AbiDetect.getAbi(); return Abi.ABI_ARMV7A_NEON.getName(); } - static String loadPackageName(){ + static String loadPackageName() { return Packages.getPackageName(); } - static String loadVersion(){ + static String loadVersion() { return FFmpegKitConfig.getVersion(); } - static boolean loadIsLTSBuild(){ + static boolean loadIsLTSBuild() { return AbiDetect.isNativeLTSBuild(); } - static int loadLogLevel(){ + static int loadLogLevel() { return FFmpegKitConfig.getNativeLogLevel(); } - static String loadBuildDate(){ + static String loadBuildDate() { return FFmpegKitConfig.getBuildDate(); } - static void enableRedirection(){ + static void enableRedirection() { FFmpegKitConfig.enableRedirection(); } - static void loadFFmpegKitAbiDetect(){ + static void loadFFmpegKitAbiDetect() { loadLibrary("ffmpegkit_abidetect"); } - static boolean loadFFmpeg(){ + static boolean loadFFmpeg() { boolean nativeFFmpegLoaded = false; boolean nativeFFmpegTriedAndFailed = false; @@ -85,7 +85,7 @@ public class NativeLoader{ return nativeFFmpegTriedAndFailed; } - static void loadFFmpegKit(boolean nativeFFmpegTriedAndFailed){ + static void loadFFmpegKit(boolean nativeFFmpegTriedAndFailed) { boolean nativeFFmpegKitLoaded = false; if (!nativeFFmpegTriedAndFailed && "arm-v7a".equals(loadNativeAbi())) { try { @@ -102,7 +102,7 @@ public class NativeLoader{ } - static String getDeviceDebugInformation(){ + static String getDeviceDebugInformation() { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("brand: "); stringBuilder.append(Build.BRAND); diff --git a/app/src/main/java/com/arthenica/smartexception/AbstractExceptions.java b/app/src/main/java/com/arthenica/smartexception/AbstractExceptions.java index 04049943e..f0759d34d 100755 --- a/app/src/main/java/com/arthenica/smartexception/AbstractExceptions.java +++ b/app/src/main/java/com/arthenica/smartexception/AbstractExceptions.java @@ -43,7 +43,7 @@ import java.util.Set; * @author Taner Sener * @since 0.1.0 */ -public abstract class AbstractExceptions{ +public abstract class AbstractExceptions { /** *

Default max depth used in methods which do not have a maxDepth argument. @@ -90,14 +90,14 @@ public abstract class AbstractExceptions{ * * @param packageString root package name to register */ - public static void registerRootPackage(final String packageString){ + public static void registerRootPackage(final String packageString) { rootPackageSet.add(packageString); } /** *

Clears previously registered root packages. */ - public static void clearRootPackages(){ + public static void clearRootPackages() { rootPackageSet.clear(); } @@ -106,14 +106,14 @@ public abstract class AbstractExceptions{ * * @param packageString group package name to register */ - public static void registerGroupPackage(final String packageString){ + public static void registerGroupPackage(final String packageString) { groupPackageSet.add(packageString); } /** *

Clears previously registered group packages. */ - public static void clearGroupPackages(){ + public static void clearGroupPackages() { groupPackageSet.clear(); } @@ -123,7 +123,7 @@ public abstract class AbstractExceptions{ * * @return current stack trace serializer implementation */ - public static StackTraceElementSerializer getStackTraceElementSerializer(){ + public static StackTraceElementSerializer getStackTraceElementSerializer() { return stackTraceElementSerializer; } @@ -133,7 +133,7 @@ public abstract class AbstractExceptions{ * * @param stackTraceElementSerializer new stack trace serializer implementation */ - public static void setStackTraceElementSerializer(final StackTraceElementSerializer stackTraceElementSerializer){ + public static void setStackTraceElementSerializer(final StackTraceElementSerializer stackTraceElementSerializer) { AbstractExceptions.stackTraceElementSerializer = stackTraceElementSerializer; } @@ -143,7 +143,7 @@ public abstract class AbstractExceptions{ * @param packageString ignore package name to register * @param ignoreCauseClasses ignore cause classes from this package too */ - public static void registerIgnorePackage(final String packageString, final boolean ignoreCauseClasses){ + public static void registerIgnorePackage(final String packageString, final boolean ignoreCauseClasses) { ignorePackageSet.add(packageString); if (ignoreCauseClasses) { ignoreCausePackageSet.add(packageString); @@ -153,7 +153,7 @@ public abstract class AbstractExceptions{ /** *

Clears previously registered ignore packages. */ - public static void clearIgnorePackages(){ + public static void clearIgnorePackages() { ignorePackageSet.clear(); ignoreCausePackageSet.clear(); } @@ -165,7 +165,7 @@ public abstract class AbstractExceptions{ * converted to string will not include causes. If value is false causes will be appended to the stack trace of * the main throwable. */ - public static boolean getIgnoreAllCauses(){ + public static boolean getIgnoreAllCauses() { return ignoreAllCauses; } @@ -176,7 +176,7 @@ public abstract class AbstractExceptions{ * or converted to string will not include causes. If value is false causes will be appended to the stack trace of * the main throwable. */ - public static void setIgnoreAllCauses(final boolean ignoreAllCauses){ + public static void setIgnoreAllCauses(final boolean ignoreAllCauses) { AbstractExceptions.ignoreAllCauses = ignoreAllCauses; } @@ -190,7 +190,7 @@ public abstract class AbstractExceptions{ * @param throwable parent throwable * @return a string containing the smart stack trace for the given throwable */ - public static String getStackTraceString(final Throwable throwable){ + public static String getStackTraceString(final Throwable throwable) { return getStackTraceString(throwable, false, rootPackageSet, groupPackageSet, ignorePackageSet, 0, ignoreAllCauses); } @@ -205,7 +205,7 @@ public abstract class AbstractExceptions{ * @param ignoreAllCauses ignore all causes in the exception chain * @return a string containing the smart stack trace for the given throwable */ - public static String getStackTraceString(final Throwable throwable, final boolean ignoreAllCauses){ + public static String getStackTraceString(final Throwable throwable, final boolean ignoreAllCauses) { return getStackTraceString(throwable, false, rootPackageSet, groupPackageSet, ignorePackageSet, 0, ignoreAllCauses); } @@ -218,7 +218,7 @@ public abstract class AbstractExceptions{ * @param ignorePackageSet ignore packages to use for building the stack trace * @return a string containing the smart stack trace for the given throwable */ - public static String getStackTraceString(final Throwable throwable, final Set rootPackageSet, final Set groupPackageSet, final Set ignorePackageSet){ + public static String getStackTraceString(final Throwable throwable, final Set rootPackageSet, final Set groupPackageSet, final Set ignorePackageSet) { return getStackTraceString(throwable, false, rootPackageSet, groupPackageSet, ignorePackageSet, 0, ignoreAllCauses); } @@ -232,7 +232,7 @@ public abstract class AbstractExceptions{ * @param ignoreAllCauses ignore all causes in the exception chain * @return a string containing the smart stack trace for the given throwable */ - public static String getStackTraceString(final Throwable throwable, final Set rootPackageSet, final Set groupPackageSet, final Set ignorePackageSet, final boolean ignoreAllCauses){ + public static String getStackTraceString(final Throwable throwable, final Set rootPackageSet, final Set groupPackageSet, final Set ignorePackageSet, final boolean ignoreAllCauses) { return getStackTraceString(throwable, false, rootPackageSet, groupPackageSet, ignorePackageSet, 0, ignoreAllCauses); } @@ -243,7 +243,7 @@ public abstract class AbstractExceptions{ * @param rootPackage root package to use for building the stack trace * @return a string containing the smart stack trace for the given throwable */ - public static String getStackTraceString(final Throwable throwable, final String rootPackage){ + public static String getStackTraceString(final Throwable throwable, final String rootPackage) { return getStackTraceString(throwable, false, Collections.singleton(rootPackage), new HashSet(), new HashSet(), 0, ignoreAllCauses); } @@ -255,7 +255,7 @@ public abstract class AbstractExceptions{ * @param groupPackage group package to use for building the stack trace * @return a string containing the smart stack trace for the given throwable */ - public static String getStackTraceString(final Throwable throwable, final String rootPackage, final String groupPackage){ + public static String getStackTraceString(final Throwable throwable, final String rootPackage, final String groupPackage) { return getStackTraceString(throwable, false, Collections.singleton(rootPackage), Collections.singleton(groupPackage), new HashSet(), 0, ignoreAllCauses); } @@ -266,7 +266,7 @@ public abstract class AbstractExceptions{ * @param maxDepth max depth in exception chain that will be used * @return a string containing the smart stack trace for the given throwable */ - public static String getStackTraceString(final Throwable throwable, final int maxDepth){ + public static String getStackTraceString(final Throwable throwable, final int maxDepth) { return getStackTraceString(throwable, false, new HashSet(), new HashSet(), new HashSet(), maxDepth, ignoreAllCauses); } @@ -278,7 +278,7 @@ public abstract class AbstractExceptions{ * @param ignoreAllCauses ignore all causes in the exception chain * @return a string containing the smart stack trace for the given throwable */ - public static String getStackTraceString(final Throwable throwable, final int maxDepth, final boolean ignoreAllCauses){ + public static String getStackTraceString(final Throwable throwable, final int maxDepth, final boolean ignoreAllCauses) { return getStackTraceString(throwable, false, new HashSet(), new HashSet(), new HashSet(), maxDepth, ignoreAllCauses); } @@ -294,7 +294,7 @@ public abstract class AbstractExceptions{ * @param ignoreAllCauses ignore all causes in the exception chain * @return a string containing the smart stack trace for the given throwable */ - public static String getStackTraceString(final Throwable throwable, final boolean isCause, final Set rootPackageSet, final Set groupPackageSet, final Set ignorePackageSet, final int maxDepth, final boolean ignoreAllCauses){ + public static String getStackTraceString(final Throwable throwable, final boolean isCause, final Set rootPackageSet, final Set groupPackageSet, final Set ignorePackageSet, final int maxDepth, final boolean ignoreAllCauses) { final StringBuilder builder = new StringBuilder(); if (throwable == null) { @@ -386,7 +386,7 @@ public abstract class AbstractExceptions{ * @param firstStackTraceElementInTheGroup first stack trace element of this group * @return new value for the group element count */ - public static int appendStackTraceGroupElement(final StringBuilder stringBuilder, final String currentGroupPackage, final int numberOfElementsInTheCurrentGroup, final StackTraceElement firstStackTraceElementInTheGroup){ + public static int appendStackTraceGroupElement(final StringBuilder stringBuilder, final String currentGroupPackage, final int numberOfElementsInTheCurrentGroup, final StackTraceElement firstStackTraceElementInTheGroup) { if (numberOfElementsInTheCurrentGroup > 0) { if (stackTraceElementSerializer == null) { throw new IllegalArgumentException("Stack trace element serializer not initialized."); @@ -407,7 +407,7 @@ public abstract class AbstractExceptions{ * @return true if package of the given class name matches one of package names provided in packageSet, * false otherwise */ - public static boolean containsPackage(final String fullClassName, final Set packageSet){ + public static boolean containsPackage(final String fullClassName, final Set packageSet) { return getContainingPackage(fullClassName, packageSet) != null; } @@ -420,7 +420,7 @@ public abstract class AbstractExceptions{ * @return one of the package names in the packageSet that matches the package of the given class name * or null if no matching package name is found in the packageSet */ - public static String getContainingPackage(final String fullClassName, final Set packageSet){ + public static String getContainingPackage(final String fullClassName, final Set packageSet) { for (final String parentExceptionPackage : packageSet) { if (fullClassName.startsWith(parentExceptionPackage)) { return parentExceptionPackage; @@ -436,7 +436,7 @@ public abstract class AbstractExceptions{ * @param throwable parent throwable * @return a string containing all messages found in the exception chain */ - public static String getAllMessages(final Throwable throwable){ + public static String getAllMessages(final Throwable throwable) { final StringBuilder messageBuilder = new StringBuilder(); getAllMessages(throwable, messageBuilder); return messageBuilder.toString(); @@ -448,7 +448,7 @@ public abstract class AbstractExceptions{ * @param throwable parent throwable * @param messageBuilder message builder */ - public static void getAllMessages(final Throwable throwable, final StringBuilder messageBuilder){ + public static void getAllMessages(final Throwable throwable, final StringBuilder messageBuilder) { if (throwable != null) { final String message = throwable.getMessage(); if (!isEmpty(message)) { @@ -470,7 +470,7 @@ public abstract class AbstractExceptions{ * @param maxDepth max depth in exception chain that will be returned * @return an array containing stack trace elements */ - public static StackTraceElement[] getStackTrace(final Throwable throwable, final int maxDepth){ + public static StackTraceElement[] getStackTrace(final Throwable throwable, final int maxDepth) { final ArrayList list = new ArrayList(); if (throwable != null) { @@ -492,7 +492,7 @@ public abstract class AbstractExceptions{ * @param ignorePackageSet ignore packages to use for building the stack trace * @return an array containing stack trace elements */ - public static StackTraceElement[] getStackTrace(final Throwable throwable, final Set rootPackageSet, final Set ignorePackageSet){ + public static StackTraceElement[] getStackTrace(final Throwable throwable, final Set rootPackageSet, final Set ignorePackageSet) { final ArrayList list = new ArrayList(); final ArrayList partialList = new ArrayList(); @@ -529,7 +529,7 @@ public abstract class AbstractExceptions{ * @return true if the given cause class is found in the exception chain of the throwable, false * otherwise */ - public static boolean containsCause(final Throwable throwable, final Class causeClass){ + public static boolean containsCause(final Throwable throwable, final Class causeClass) { return containsCause(throwable, causeClass, null); } @@ -547,7 +547,7 @@ public abstract class AbstractExceptions{ * @return true if the given cause class and cause message is found in the exception chain of the * throwable, false otherwise */ - public static boolean containsCause(final Throwable throwable, final Class causeClass, final String causeMessage){ + public static boolean containsCause(final Throwable throwable, final Class causeClass, final String causeMessage) { return (searchCause(throwable, causeClass, causeMessage, DEFAULT_MAX_DEPTH) != null); } @@ -557,7 +557,7 @@ public abstract class AbstractExceptions{ * @param throwable parent throwable * @return the cause of the throwable found or null if throwable does not have a cause */ - public static Throwable getCause(final Throwable throwable){ + public static Throwable getCause(final Throwable throwable) { return getCause(throwable, DEFAULT_MAX_DEPTH); } @@ -573,7 +573,7 @@ public abstract class AbstractExceptions{ * @return the cause of the throwable found until maxDepth is reached in the exception * chain or null if throwable does not have a cause */ - public static Throwable getCause(final Throwable throwable, final int maxDepth){ + public static Throwable getCause(final Throwable throwable, final int maxDepth) { if (throwable == null) { return null; } @@ -601,7 +601,7 @@ public abstract class AbstractExceptions{ * @param causeClass class to search for * @return the throwable found or null if no class in exception chain matches the given cause class */ - public static Throwable searchCause(final Throwable throwable, final Class causeClass){ + public static Throwable searchCause(final Throwable throwable, final Class causeClass) { return searchCause(throwable, causeClass, null, DEFAULT_MAX_DEPTH); } @@ -618,7 +618,7 @@ public abstract class AbstractExceptions{ * @return the throwable found or null if no class in exception chain matches the given cause class * and cause message */ - public static Throwable searchCause(final Throwable throwable, final Class causeClass, final String causeMessage){ + public static Throwable searchCause(final Throwable throwable, final Class causeClass, final String causeMessage) { return searchCause(throwable, causeClass, causeMessage, DEFAULT_MAX_DEPTH); } @@ -636,7 +636,7 @@ public abstract class AbstractExceptions{ * @return the throwable found or null if no class in exception chain matches the given cause class * and cause message */ - public static Throwable searchCause(final Throwable throwable, final Class causeClass, final String causeMessage, final int maxDepth){ + public static Throwable searchCause(final Throwable throwable, final Class causeClass, final String causeMessage, final int maxDepth) { if (throwable == null) { return null; } @@ -675,7 +675,7 @@ public abstract class AbstractExceptions{ * @param maxDepth max depth in exception chain that will be searched * @return the throwable found or null if no class in exception chain matches the given cause class */ - public static Throwable searchCause(final Throwable throwable, final Class causeClass, final int maxDepth){ + public static Throwable searchCause(final Throwable throwable, final Class causeClass, final int maxDepth) { if (throwable == null) { return null; } @@ -702,7 +702,7 @@ public abstract class AbstractExceptions{ * @param value string to check * @return true if given string is null or has zero length after trim(), false otherwise */ - public static boolean isEmpty(final String value){ + public static boolean isEmpty(final String value) { if (value == null) { return true; } @@ -716,7 +716,7 @@ public abstract class AbstractExceptions{ * @param className fully qualified class name * @return name of the package */ - public static String packageName(final String className){ + public static String packageName(final String className) { if (className == null) { return ""; } diff --git a/app/src/main/java/com/arthenica/smartexception/StackTraceElementSerializer.java b/app/src/main/java/com/arthenica/smartexception/StackTraceElementSerializer.java index 9eabec0cd..9e1d548da 100755 --- a/app/src/main/java/com/arthenica/smartexception/StackTraceElementSerializer.java +++ b/app/src/main/java/com/arthenica/smartexception/StackTraceElementSerializer.java @@ -38,7 +38,7 @@ package com.arthenica.smartexception; * @author Taner Sener * @since 0.1.0 */ -public interface StackTraceElementSerializer{ +public interface StackTraceElementSerializer { /** *

Converts the given stackTraceElement into a string. diff --git a/app/src/main/java/com/arthenica/smartexception/java/Exceptions.java b/app/src/main/java/com/arthenica/smartexception/java/Exceptions.java index 1cb9ca897..a94458842 100755 --- a/app/src/main/java/com/arthenica/smartexception/java/Exceptions.java +++ b/app/src/main/java/com/arthenica/smartexception/java/Exceptions.java @@ -44,13 +44,13 @@ import java.util.Set; * @author Taner Sener * @since 0.1.0 */ -public class Exceptions{ +public class Exceptions { - static{ - AbstractExceptions.setStackTraceElementSerializer(new StackTraceElementSerializer(){ + static { + AbstractExceptions.setStackTraceElementSerializer(new StackTraceElementSerializer() { @Override - public String toString(StackTraceElement stackTraceElement){ + public String toString(StackTraceElement stackTraceElement) { final StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append(stackTraceElement.getClassName()); @@ -75,17 +75,17 @@ public class Exceptions{ } @Override - public String getModuleName(StackTraceElement stackTraceElement){ + public String getModuleName(StackTraceElement stackTraceElement) { return ""; } @Override - public String getNativeMethodDefinition(){ + public String getNativeMethodDefinition() { return "(Native Method)"; } @Override - public String getUnknownSourceDefinition(){ + public String getUnknownSourceDefinition() { return "(Unknown Source)"; } }); @@ -96,14 +96,14 @@ public class Exceptions{ * * @param packageString root package name to register */ - public static void registerRootPackage(final String packageString){ + public static void registerRootPackage(final String packageString) { AbstractExceptions.registerRootPackage(packageString); } /** *

Clears previously registered root packages. */ - public static void clearRootPackages(){ + public static void clearRootPackages() { AbstractExceptions.clearRootPackages(); } @@ -112,14 +112,14 @@ public class Exceptions{ * * @param packageString group package name to register */ - public static void registerGroupPackage(final String packageString){ + public static void registerGroupPackage(final String packageString) { AbstractExceptions.registerGroupPackage(packageString); } /** *

Clears previously registered group packages. */ - public static void clearGroupPackages(){ + public static void clearGroupPackages() { AbstractExceptions.clearGroupPackages(); } @@ -129,7 +129,7 @@ public class Exceptions{ * * @return current stack trace serializer implementation */ - public static StackTraceElementSerializer getStackTraceElementSerializer(){ + public static StackTraceElementSerializer getStackTraceElementSerializer() { return AbstractExceptions.getStackTraceElementSerializer(); } @@ -139,7 +139,7 @@ public class Exceptions{ * * @param stackTraceElementSerializer new stack trace serializer implementation */ - public static void setStackTraceElementSerializer(final StackTraceElementSerializer stackTraceElementSerializer){ + public static void setStackTraceElementSerializer(final StackTraceElementSerializer stackTraceElementSerializer) { AbstractExceptions.setStackTraceElementSerializer(stackTraceElementSerializer); } @@ -149,14 +149,14 @@ public class Exceptions{ * @param packageString ignore package name to register * @param ignoreCauseClasses ignore cause classes from this package too */ - public static void registerIgnorePackage(final String packageString, final boolean ignoreCauseClasses){ + public static void registerIgnorePackage(final String packageString, final boolean ignoreCauseClasses) { AbstractExceptions.registerIgnorePackage(packageString, ignoreCauseClasses); } /** *

Clears previously registered ignore packages. */ - public static void clearIgnorePackages(){ + public static void clearIgnorePackages() { AbstractExceptions.clearIgnorePackages(); } @@ -167,7 +167,7 @@ public class Exceptions{ * converted to string will not include causes. If value is false causes will be appended to the stack trace of * the main throwable. */ - public static boolean getIgnoreAllCauses(){ + public static boolean getIgnoreAllCauses() { return AbstractExceptions.getIgnoreAllCauses(); } @@ -178,7 +178,7 @@ public class Exceptions{ * or converted to string will not include causes. If value is false causes will be appended to the stack trace of * the main throwable. */ - public static void setIgnoreAllCauses(final boolean ignoreAllCauses){ + public static void setIgnoreAllCauses(final boolean ignoreAllCauses) { AbstractExceptions.setIgnoreAllCauses(ignoreAllCauses); } @@ -192,7 +192,7 @@ public class Exceptions{ * @param throwable parent throwable * @return a string containing the smart stack trace for the given throwable */ - public static String getStackTraceString(final Throwable throwable){ + public static String getStackTraceString(final Throwable throwable) { return AbstractExceptions.getStackTraceString(throwable); } @@ -207,7 +207,7 @@ public class Exceptions{ * @param ignoreAllCauses ignore all causes in the exception chain * @return a string containing the smart stack trace for the given throwable */ - public static String getStackTraceString(final Throwable throwable, final boolean ignoreAllCauses){ + public static String getStackTraceString(final Throwable throwable, final boolean ignoreAllCauses) { return AbstractExceptions.getStackTraceString(throwable, ignoreAllCauses); } @@ -220,7 +220,7 @@ public class Exceptions{ * @param ignorePackageSet ignore packages to use for building the stack trace * @return a string containing the smart stack trace for the given throwable */ - public static String getStackTraceString(final Throwable throwable, final Set rootPackageSet, final Set groupPackageSet, final Set ignorePackageSet){ + public static String getStackTraceString(final Throwable throwable, final Set rootPackageSet, final Set groupPackageSet, final Set ignorePackageSet) { return AbstractExceptions.getStackTraceString(throwable, rootPackageSet, groupPackageSet, ignorePackageSet); } @@ -234,7 +234,7 @@ public class Exceptions{ * @param ignoreAllCauses ignore all causes in the exception chain * @return a string containing the smart stack trace for the given throwable */ - public static String getStackTraceString(final Throwable throwable, final Set rootPackageSet, final Set groupPackageSet, final Set ignorePackageSet, final boolean ignoreAllCauses){ + public static String getStackTraceString(final Throwable throwable, final Set rootPackageSet, final Set groupPackageSet, final Set ignorePackageSet, final boolean ignoreAllCauses) { return AbstractExceptions.getStackTraceString(throwable, rootPackageSet, groupPackageSet, ignorePackageSet, ignoreAllCauses); } @@ -245,7 +245,7 @@ public class Exceptions{ * @param rootPackage root package to use for building the stack trace * @return a string containing the smart stack trace for the given throwable */ - public static String getStackTraceString(final Throwable throwable, final String rootPackage){ + public static String getStackTraceString(final Throwable throwable, final String rootPackage) { return AbstractExceptions.getStackTraceString(throwable, rootPackage); } @@ -257,7 +257,7 @@ public class Exceptions{ * @param groupPackage group package to use for building the stack trace * @return a string containing the smart stack trace for the given throwable */ - public static String getStackTraceString(final Throwable throwable, final String rootPackage, final String groupPackage){ + public static String getStackTraceString(final Throwable throwable, final String rootPackage, final String groupPackage) { return AbstractExceptions.getStackTraceString(throwable, rootPackage, groupPackage); } @@ -268,7 +268,7 @@ public class Exceptions{ * @param maxDepth max depth in exception chain that will be used * @return a string containing the smart stack trace for the given throwable */ - public static String getStackTraceString(final Throwable throwable, final int maxDepth){ + public static String getStackTraceString(final Throwable throwable, final int maxDepth) { return AbstractExceptions.getStackTraceString(throwable, maxDepth); } @@ -280,7 +280,7 @@ public class Exceptions{ * @param ignoreAllCauses ignore all causes in the exception chain * @return a string containing the smart stack trace for the given throwable */ - public static String getStackTraceString(final Throwable throwable, final int maxDepth, final boolean ignoreAllCauses){ + public static String getStackTraceString(final Throwable throwable, final int maxDepth, final boolean ignoreAllCauses) { return AbstractExceptions.getStackTraceString(throwable, maxDepth, ignoreAllCauses); } @@ -290,7 +290,7 @@ public class Exceptions{ * @param throwable parent throwable * @return a string containing all messages found in the exception chain */ - public static String getAllMessages(final Throwable throwable){ + public static String getAllMessages(final Throwable throwable) { return AbstractExceptions.getAllMessages(throwable); } @@ -306,7 +306,7 @@ public class Exceptions{ * @return true if the given cause class is found in the exception chain of the throwable, false * otherwise */ - public static boolean containsCause(final Throwable throwable, final Class causeClass){ + public static boolean containsCause(final Throwable throwable, final Class causeClass) { return AbstractExceptions.containsCause(throwable, causeClass); } @@ -324,7 +324,7 @@ public class Exceptions{ * @return true if the given cause class and cause message is found in the exception chain of the * throwable, false otherwise */ - public static boolean containsCause(final Throwable throwable, final Class causeClass, final String causeMessage){ + public static boolean containsCause(final Throwable throwable, final Class causeClass, final String causeMessage) { return AbstractExceptions.containsCause(throwable, causeClass, causeMessage); } @@ -334,7 +334,7 @@ public class Exceptions{ * @param throwable parent throwable * @return the cause of the throwable found or null if throwable does not have a cause */ - public static Throwable getCause(final Throwable throwable){ + public static Throwable getCause(final Throwable throwable) { return AbstractExceptions.getCause(throwable); } @@ -350,7 +350,7 @@ public class Exceptions{ * @return the cause of the throwable found until maxDepth is reached in the exception * chain or null if throwable does not have a cause */ - public static Throwable getCause(final Throwable throwable, final int maxDepth){ + public static Throwable getCause(final Throwable throwable, final int maxDepth) { return AbstractExceptions.getCause(throwable, maxDepth); } @@ -365,7 +365,7 @@ public class Exceptions{ * @param causeClass class to search for * @return the throwable found or null if no class in exception chain matches the given cause class */ - public static Throwable searchCause(final Throwable throwable, final Class causeClass){ + public static Throwable searchCause(final Throwable throwable, final Class causeClass) { return AbstractExceptions.searchCause(throwable, causeClass); } @@ -382,7 +382,7 @@ public class Exceptions{ * @return the throwable found or null if no class in exception chain matches the given cause class * and cause message */ - public static Throwable searchCause(final Throwable throwable, final Class causeClass, final String causeMessage){ + public static Throwable searchCause(final Throwable throwable, final Class causeClass, final String causeMessage) { return AbstractExceptions.searchCause(throwable, causeClass, causeMessage); } @@ -400,7 +400,7 @@ public class Exceptions{ * @return the throwable found or null if no class in exception chain matches the given cause class * and cause message */ - public static Throwable searchCause(final Throwable throwable, final Class causeClass, final String causeMessage, final int maxDepth){ + public static Throwable searchCause(final Throwable throwable, final Class causeClass, final String causeMessage, final int maxDepth) { return AbstractExceptions.searchCause(throwable, causeClass, causeMessage, maxDepth); } @@ -416,7 +416,7 @@ public class Exceptions{ * @param maxDepth max depth in exception chain that will be searched * @return the throwable found or null if no class in exception chain matches the given cause class */ - public static Throwable searchCause(final Throwable throwable, final Class causeClass, final int maxDepth){ + public static Throwable searchCause(final Throwable throwable, final Class causeClass, final int maxDepth) { return AbstractExceptions.searchCause(throwable, causeClass, maxDepth); } diff --git a/app/src/main/java/com/vtosters/lite/R.java b/app/src/main/java/com/vtosters/lite/R.java index c441732e8..12420af5e 100644 --- a/app/src/main/java/com/vtosters/lite/R.java +++ b/app/src/main/java/com/vtosters/lite/R.java @@ -1,7 +1,7 @@ package com.vtosters.lite; -public class R{ - public static final class anim{ +public class R { + public static final class anim { public static final int abc_fade_in = 0x7f010000; public static final int abc_fade_out = 0x7f010001; public static final int abc_grow_fade_in_from_bottom = 0x7f010002; @@ -75,7 +75,7 @@ public class R{ public static final int vkme_exit_noop = 0x7f010046; } - public static final class animator{ + public static final class animator { public static final int design_appbar_state_list_animator = 0x7f020000; public static final int design_fab_hide_motion_spec = 0x7f020001; public static final int design_fab_show_motion_spec = 0x7f020002; @@ -88,7 +88,7 @@ public class R{ public static final int mtrl_fab_transformation_sheet_expand_spec = 0x7f020009; } - public static final class array{ + public static final class array { public static final int ad_report_reasons = 0x7f030000; public static final int ad_report_reasons_api = 0x7f030001; public static final int address_will_be_opened = 0x7f030002; @@ -180,7 +180,7 @@ public class R{ public static final int when_day_of_week = 0x7f030058; } - public static final class attr{ + public static final class attr { public static final int BMSB_error_text_color = 0x7f040000; public static final int BuyMusicSubscriptionButtonStyle = 0x7f040001; public static final int PIAlphaNormal = 0x7f040002; @@ -2091,7 +2091,7 @@ public class R{ public static final int zOrderOnTop = 0x7f040773; } - public static final class bool{ + public static final class bool { public static final int abc_action_bar_embed_tabs = 0x7f050000; public static final int abc_allow_stacked_button_bar = 0x7f050001; public static final int abc_config_actionMenuItemAllCaps = 0x7f050002; @@ -2110,7 +2110,7 @@ public class R{ public static final int vk_is_tablet = 0x7f05000f; } - public static final class color{ + public static final class color { public static final int abc_background_cache_hint_selector_material_dark = 0x7f060000; public static final int abc_background_cache_hint_selector_material_light = 0x7f060001; public static final int abc_btn_colored_borderless_text_material = 0x7f060002; @@ -2918,7 +2918,7 @@ public class R{ public static final int abc_color_highlight_material = 0x7f060004; } - public static final class dimen{ + public static final class dimen { public static final int _post_side_padding = 0x7f070000; public static final int abc_action_bar_content_inset_material = 0x7f070001; public static final int abc_action_bar_content_inset_with_nav = 0x7f070002; @@ -3783,7 +3783,7 @@ public class R{ public static final int camera_target_text_size = 0x7f070074; } - public static final class drawable{ + public static final class drawable { public static final int $$notification_receive_28_60fps__1__0 = 0x7f080000; public static final int $$notification_receive_28_60fps__1__1 = 0x7f080001; public static final int $$notification_receive_28_60fps__1__2 = 0x7f080002; @@ -6801,7 +6801,7 @@ public class R{ public static final int promo_qr_2 = 0x7f0809cf; } - public static final class font{ + public static final class font { public static final int fortun_af_led7seg_3 = 0x7f090000; public static final int roboto_black = 0x7f090001; public static final int roboto_black_italic = 0x7f090002; @@ -6824,7 +6824,7 @@ public class R{ public static final int vk_tt_commons_demi_bold = 0x7f090013; } - public static final class id{ + public static final class id { public static final int ALT = 0x7f0a0000; public static final int CIRCLE = 0x7f0a0001; public static final int CTRL = 0x7f0a0002; @@ -10931,7 +10931,7 @@ public class R{ public static final int choose_btn = 0x7f0a1007; } - public static final class integer{ + public static final class integer { public static final int abc_config_activityDefaultDur = 0x7f0b0000; public static final int abc_config_activityShortDur = 0x7f0b0001; public static final int angle_rtl_180 = 0x7f0b0002; @@ -10980,14 +10980,14 @@ public class R{ public static final int s2dip = 0x7f0b0028; } - public static final class interpolator{ + public static final class interpolator { public static final int mtrl_fast_out_linear_in = 0x7f0c0000; public static final int mtrl_fast_out_slow_in = 0x7f0c0001; public static final int mtrl_linear = 0x7f0c0002; public static final int mtrl_linear_out_slow_in = 0x7f0c0003; } - public static final class layout{ + public static final class layout { public static final int ab_done_right = 0x7f0d0000; public static final int abc_action_bar_title_item = 0x7f0d0001; public static final int abc_action_bar_up_container = 0x7f0d0002; @@ -12749,7 +12749,7 @@ public class R{ public static final int tgs_entry = 0x7f0d06de; } - public static final class menu{ + public static final class menu { public static final int add = 0x7f0e0000; public static final int attach_item = 0x7f0e0001; public static final int audio = 0x7f0e0002; @@ -12824,7 +12824,7 @@ public class R{ public static final int vkim_photo_viewer = 0x7f0e0047; } - public static final class mipmap{ + public static final class mipmap { public static final int adaptive_launcher_background = 0x7f0f0000; public static final int adaptive_launcher_foreground = 0x7f0f0001; public static final int ic_launcher_round = 0x7f0f0002; @@ -12840,7 +12840,7 @@ public class R{ public static final int ic_skip_previous_alpha_40_28 = 0x7f0f000b; } - public static final class plurals{ + public static final class plurals { public static final int accessibility_comments = 0x7f100000; public static final int accessibility_likes = 0x7f100001; public static final int accessibility_reposts = 0x7f100002; @@ -13113,7 +13113,7 @@ public class R{ public static final int x_stickers = 0x7f10010d; } - public static final class raw{ + public static final class raw { public static final int amu_ballon_gx_prefix = 0x7f110000; public static final int amu_basic_folder = 0x7f110001; public static final int amu_basic_placemark = 0x7f110002; @@ -13153,7 +13153,7 @@ public class R{ public static final int vklogo = 0x7f110024; } - public static final class string{ + public static final class string { public static final int abc_action_bar_home_description = 0x7f120000; public static final int abc_action_bar_up_description = 0x7f120001; public static final int abc_action_menu_overflow_description = 0x7f120002; @@ -18525,7 +18525,7 @@ public class R{ public static final int your_gender = 0x7f1214f8; } - public static final class style{ + public static final class style { public static final int ActionBarGrayTheme = 0x7f130000; public static final int ActionBarProgress = 0x7f130001; public static final int ActionBarSpinner = 0x7f130002; @@ -19662,7 +19662,7 @@ public class R{ public static final int Base_V28_Theme_AppCompat_Light = 0x7f1300a3; } - public static final class xml{ + public static final class xml { public static final int account_preferences = 0x7f150000; public static final int authenticator = 0x7f150001; public static final int contacts_custom_type = 0x7f150002; diff --git a/app/src/main/java/com/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView.java b/app/src/main/java/com/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView.java index dc39c3456..6df6b0d8b 100644 --- a/app/src/main/java/com/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView.java +++ b/app/src/main/java/com/vtosters/lite/ui/bottomnavigation/BottomNavigationItemView.java @@ -1,17 +1,15 @@ package com.vtosters.lite.ui.bottomnavigation; -import static ru.vtosters.lite.utils.Themes.getCSTDock; +import static ru.vtosters.lite.utils.ThemesUtils.getCSTDock; import android.annotation.SuppressLint; import android.content.Context; import android.content.res.ColorStateList; -import android.graphics.Color; import android.graphics.PorterDuff; import android.graphics.Typeface; import android.graphics.drawable.Drawable; import android.text.TextUtils; import android.util.AttributeSet; -import android.util.Log; import android.util.TypedValue; import android.view.Gravity; import android.view.LayoutInflater; @@ -28,13 +26,10 @@ import androidx.core.content.ContextCompat; import androidx.core.graphics.drawable.DrawableCompat; import androidx.core.view.ViewCompat; -import com.vk.core.ui.themes.Themable; import com.vk.core.ui.themes.VKThemeHelper; import com.vtosters.lite.R; import me.grishka.appkit.utils.V; -import ru.vtosters.lite.utils.Globals; -import ru.vtosters.lite.utils.Themes; public class BottomNavigationItemView extends FrameLayout implements MenuView.ItemView { private final TextView mSmallLabel; @@ -178,20 +173,20 @@ public class BottomNavigationItemView extends FrameLayout implements MenuView.It counterContainerParams.topMargin = this.mMargin + V.a(1.5F); counterContainerParams.bottomMargin = this.mMargin + V.a(1.5F); this.mCounterContainer.setLayoutParams(counterContainerParams); - this.mCounterContainer.setTranslationY((float)(-V.a(5.5F))); + this.mCounterContainer.setTranslationY((float) (-V.a(5.5F))); this.mLargeLabel.setVisibility(GONE); this.mSmallLabel.setVisibility(GONE); } else { if (mShiftingModeEnabled) { if (checked) { - var iconParams = (LayoutParams)this.mIcon.getLayoutParams(); - iconParams.gravity = Gravity.TOP|Gravity.CENTER_HORIZONTAL; + var iconParams = (LayoutParams) this.mIcon.getLayoutParams(); + iconParams.gravity = Gravity.TOP | Gravity.CENTER_HORIZONTAL; iconParams.topMargin = this.mMargin; this.mIcon.setLayoutParams(iconParams); - var counterContainerParams = (LayoutParams)this.mCounterContainer.getLayoutParams(); - counterContainerParams.gravity = Gravity.TOP|Gravity.CENTER_HORIZONTAL; + var counterContainerParams = (LayoutParams) this.mCounterContainer.getLayoutParams(); + counterContainerParams.gravity = Gravity.TOP | Gravity.CENTER_HORIZONTAL; counterContainerParams.topMargin = this.mMargin + V.a(1.5F); counterContainerParams.bottomMargin = this.mMargin + V.a(1.5F); @@ -202,17 +197,17 @@ public class BottomNavigationItemView extends FrameLayout implements MenuView.It ViewCompat.setScaleX(this.mLargeLabel, 1.0F); ViewCompat.setScaleY(this.mLargeLabel, 1.0F); } else { - var iconParams = (LayoutParams)this.mIcon.getLayoutParams(); + var iconParams = (LayoutParams) this.mIcon.getLayoutParams(); iconParams.gravity = Gravity.CENTER; iconParams.topMargin = this.mMargin; this.mIcon.setLayoutParams(iconParams); - var counterContainerParams = (LayoutParams)this.mCounterContainer.getLayoutParams(); + var counterContainerParams = (LayoutParams) this.mCounterContainer.getLayoutParams(); counterContainerParams.gravity = Gravity.CENTER; counterContainerParams.topMargin = this.mMargin + V.a(1.5F); counterContainerParams.bottomMargin = this.mMargin + V.a(1.5F); this.mCounterContainer.setLayoutParams(counterContainerParams); - this.mCounterContainer.setTranslationY((float)(-V.a(5.5F))); + this.mCounterContainer.setTranslationY((float) (-V.a(5.5F))); this.mLargeLabel.setVisibility(INVISIBLE); ViewCompat.setScaleX(this.mLargeLabel, 0.5F); @@ -241,7 +236,7 @@ public class BottomNavigationItemView extends FrameLayout implements MenuView.It iconParams.bottomMargin = V.a(6); this.mIcon.setLayoutParams(iconParams); - var counterContainerParams = (LayoutParams)this.mCounterContainer.getLayoutParams(); + var counterContainerParams = (LayoutParams) this.mCounterContainer.getLayoutParams(); counterContainerParams.gravity = Gravity.CENTER; counterContainerParams.topMargin = 0; counterContainerParams.bottomMargin = V.a(8); diff --git a/app/src/main/java/ru/vtosters/lite/deviceinfo/Device.java b/app/src/main/java/ru/vtosters/lite/deviceinfo/Device.java index 14a7b68d6..b6014d3ea 100644 --- a/app/src/main/java/ru/vtosters/lite/deviceinfo/Device.java +++ b/app/src/main/java/ru/vtosters/lite/deviceinfo/Device.java @@ -1,6 +1,6 @@ package ru.vtosters.lite.deviceinfo; -public class Device{ +public class Device { private String androidId; private String bluetoothMac; private String boardName; @@ -16,81 +16,81 @@ public class Device{ private String serialId; private String wifiMac; - public Device withSerialId(String str){ + public Device withSerialId(String str) { this.serialId = str; return this; } - public Device withAndroidId(String str){ + public Device withAndroidId(String str) { this.androidId = str; return this; } - public Device withWifiMac(String str){ + public Device withWifiMac(String str) { this.wifiMac = str; return this; } - public Device withBluetoothMac(String str){ + public Device withBluetoothMac(String str) { this.bluetoothMac = str; return this; } - public Device withSdkVersion(int i){ + public Device withSdkVersion(int i) { this.sdkVersion = i; return this; } - public Device withFirmwareId(String str){ + public Device withFirmwareId(String str) { this.firmwareId = str; return this; } - public Device withFirmwareDisplay(String str){ + public Device withFirmwareDisplay(String str) { this.firmwareDisplay = str; return this; } - public Device withProductName(String str){ + public Device withProductName(String str) { this.productName = str; return this; } - public Device withDeviceName(String str){ + public Device withDeviceName(String str) { this.deviceName = str; return this; } - public Device withBoardName(String str){ + public Device withBoardName(String str) { this.boardName = str; return this; } - public Device withCpuAbi(String str){ + public Device withCpuAbi(String str) { this.cpuAbi = str; return this; } - public Device withManufacturerName(String str){ + public Device withManufacturerName(String str) { this.manufacturerName = str; return this; } - public Device withBrandName(String str){ + public Device withBrandName(String str) { this.brandName = str; return this; } - public Device withModelName(String str){ + public Device withModelName(String str) { this.modelName = str; return this; } - public String toString(){ + public String toString() { return "Device{serialId='" + this.serialId + "', androidId='" + this.androidId + "', wifiMac='" + this.wifiMac + "', bluetoothMac='" + this.bluetoothMac + "'}"; } - public String toDeviceName(){ + public String toDeviceName() { return "Device{sdkVersion=" + this.sdkVersion + ", productName='" + this.productName + "', deviceName='" + this.deviceName + "', boardName='" + this.boardName + "', cpuAbi='" + this.cpuAbi + "', manufacturerName='" + this.manufacturerName + "', brandName='" + this.brandName + "', modelName='" + this.modelName + "'}"; } } diff --git a/app/src/main/java/ru/vtosters/lite/deviceinfo/DeviceInfoCollector.java b/app/src/main/java/ru/vtosters/lite/deviceinfo/DeviceInfoCollector.java index 4ccab134d..eb1097b8a 100644 --- a/app/src/main/java/ru/vtosters/lite/deviceinfo/DeviceInfoCollector.java +++ b/app/src/main/java/ru/vtosters/lite/deviceinfo/DeviceInfoCollector.java @@ -18,14 +18,14 @@ import java.lang.reflect.Method; import java.net.NetworkInterface; import java.util.Collections; -public class DeviceInfoCollector{ +public class DeviceInfoCollector { private static final String TAG = "DeviceInfoCollector"; - public Device collect(Context context){ + public Device collect(Context context) { return new Device().withSerialId(serialId()).withAndroidId(androidId(context)).withWifiMac(wifiMac(context)).withBluetoothMac(bluetoothMac(context)).withSdkVersion(Build.VERSION.SDK_INT).withFirmwareId(Build.ID).withFirmwareDisplay(Build.DISPLAY).withProductName(Build.PRODUCT).withDeviceName(Build.DEVICE).withBoardName(Build.BOARD).withCpuAbi(Build.CPU_ABI).withManufacturerName(Build.MANUFACTURER).withBrandName(Build.BRAND).withModelName(Build.MODEL); } - private String serialId(){ + private String serialId() { String str; try { Class cls = Class.forName("android.os.SystemProperties"); @@ -53,11 +53,11 @@ public class DeviceInfoCollector{ return null; } - private String androidId(Context context){ + private String androidId(Context context) { return Settings.Secure.getString(context.getContentResolver(), "android_id").toLowerCase(); } - private String wifiMac(Context context){ + private String wifiMac(Context context) { String wifiMacFromManager = wifiMacFromManager(context); if (isInvalidMac(wifiMacFromManager)) { wifiMacFromManager = wifiMacFromNetworkInterfaces(); @@ -74,7 +74,7 @@ public class DeviceInfoCollector{ return null; } - private String wifiMacFromManager(Context context){ + private String wifiMacFromManager(Context context) { WifiInfo connectionInfo; try { WifiManager wifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE); @@ -88,7 +88,7 @@ public class DeviceInfoCollector{ } } - private String wifiMacFromNetworkInterfaces(){ + private String wifiMacFromNetworkInterfaces() { try { for (NetworkInterface networkInterface : Collections.list(NetworkInterface.getNetworkInterfaces())) { if ("wlan0".equalsIgnoreCase(networkInterface.getName())) { @@ -114,7 +114,7 @@ public class DeviceInfoCollector{ } } - private String wifiMacFromFileSystem(){ + private String wifiMacFromFileSystem() { try { FileReader fileReader = new FileReader("/sys/class/net/wlan0/address"); try { @@ -137,7 +137,7 @@ public class DeviceInfoCollector{ return null; } - private String bluetoothMac(Context context){ + private String bluetoothMac(Context context) { String bluetoothMacFromAdapter = bluetoothMacFromAdapter(); if (isInvalidMac(bluetoothMacFromAdapter)) { bluetoothMacFromAdapter = bluetoothMacFromContentResolver(context); @@ -151,7 +151,7 @@ public class DeviceInfoCollector{ return null; } - private String bluetoothMacFromAdapter(){ + private String bluetoothMacFromAdapter() { try { BluetoothAdapter defaultAdapter = BluetoothAdapter.getDefaultAdapter(); if (defaultAdapter == null) { @@ -173,7 +173,7 @@ public class DeviceInfoCollector{ } } - private String bluetoothMacFromContentResolver(Context context){ + private String bluetoothMacFromContentResolver(Context context) { try { return Settings.Secure.getString(context.getContentResolver(), "bluetooth_address"); } catch (Exception e) { @@ -182,11 +182,11 @@ public class DeviceInfoCollector{ } } - private boolean isInvalidSerial(String str){ + private boolean isInvalidSerial(String str) { return TextUtils.isEmpty(str) || EnvironmentCompat.MEDIA_UNKNOWN.equalsIgnoreCase(str); } - private boolean isInvalidMac(String str){ + private boolean isInvalidMac(String str) { return TextUtils.isEmpty(str) || "02:00:00:00:00:00".equalsIgnoreCase(str) || "00:00:00:00:00:00".equalsIgnoreCase(str); } } diff --git a/app/src/main/java/ru/vtosters/lite/utils/OEMDetector.java b/app/src/main/java/ru/vtosters/lite/deviceinfo/OEMDetector.java similarity index 80% rename from app/src/main/java/ru/vtosters/lite/utils/OEMDetector.java rename to app/src/main/java/ru/vtosters/lite/deviceinfo/OEMDetector.java index d6c56aa24..e135743ad 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/OEMDetector.java +++ b/app/src/main/java/ru/vtosters/lite/deviceinfo/OEMDetector.java @@ -1,4 +1,4 @@ -package ru.vtosters.lite.utils; +package ru.vtosters.lite.deviceinfo; import android.text.TextUtils; @@ -6,36 +6,36 @@ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; -public class OEMDetector{ - public static boolean isOEM(){ +public class OEMDetector { + public static boolean isOEM() { return isMIUI() || isEMUI() || isFlyme() || isZenUI() || isSamsung() || isVivo(); } - private static boolean isMIUI(){ + private static boolean isMIUI() { return !TextUtils.isEmpty(getSystemProperty("ro.miui.ui.version.name")); } - private static boolean isEMUI(){ + private static boolean isEMUI() { return !TextUtils.isEmpty(getSystemProperty("ro.build.hw_emui_api_level")); } - private static boolean isZenUI(){ + private static boolean isZenUI() { return !TextUtils.isEmpty(getSystemProperty("ro.asus.ui")); } - private static boolean isVivo(){ + private static boolean isVivo() { return !TextUtils.isEmpty(getSystemProperty("ro.vivo.os.version")) || !TextUtils.isEmpty(getSystemProperty("ro.vivo.rom")) || !TextUtils.isEmpty(getSystemProperty("ro.vivo.rom.version")) || !TextUtils.isEmpty(getSystemProperty("ro.vivo.build.version.sdk")); } - private static boolean isSamsung(){ + private static boolean isSamsung() { return !TextUtils.isEmpty(getSystemProperty("ro.config.knox")); } - private static boolean isFlyme(){ + private static boolean isFlyme() { return !TextUtils.isEmpty(getSystemProperty("ro.build.ro.meizu.rom.config")) || !TextUtils.isEmpty(getSystemProperty("persist.sys.static_blur_mode")) || !TextUtils.isEmpty(getSystemProperty("persist.sys.use.flyme.icon")); } - private static String getSystemProperty(String str){ + private static String getSystemProperty(String str) { BufferedReader bufferedReader; try { bufferedReader = new BufferedReader(new InputStreamReader(Runtime.getRuntime().exec("getprop " + str).getInputStream()), 1024); diff --git a/app/src/main/java/ru/vtosters/lite/dnr/DNRInjector.java b/app/src/main/java/ru/vtosters/lite/dnr/DNRInjector.java index 9cb6a446b..92f10c067 100644 --- a/app/src/main/java/ru/vtosters/lite/dnr/DNRInjector.java +++ b/app/src/main/java/ru/vtosters/lite/dnr/DNRInjector.java @@ -4,17 +4,16 @@ import static ru.vtosters.lite.dnr.DNRModule.hookDNR; import static ru.vtosters.lite.dnr.DNRModule.hookDNT; import static ru.vtosters.lite.dnr.DNRModule.isDnrEnabledFor; import static ru.vtosters.lite.dnr.DNRModule.isDntEnabledFor; -import static ru.vtosters.lite.utils.Globals.getIdentifier; +import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier; -import com.vk.core.util.ToastUtils; import com.vk.im.engine.models.dialogs.Dialog; import com.vk.im.ui.components.common.DialogAction; import java.util.LinkedHashMap; import java.util.List; -public class DNRInjector{ - public static void inject(Dialog dialog, List list){ +public class DNRInjector { + public static void inject(Dialog dialog, List list) { int peerId = dialog.getId(); if (isDnrEnabledFor(peerId)) { @@ -30,7 +29,7 @@ public class DNRInjector{ } } - public static LinkedHashMap injectToHashMap(LinkedHashMap hashMap){ + public static LinkedHashMap injectToHashMap(LinkedHashMap hashMap) { 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")); @@ -38,7 +37,7 @@ public class DNRInjector{ return hashMap; } - public static boolean onClick(Dialog dialog, DialogAction action){ + public static boolean onClick(Dialog dialog, DialogAction action) { var id = dialog.getId(); if (action == DialogAction.valueOf("MARK_AS_READ")) { @@ -64,11 +63,11 @@ public class DNRInjector{ return false; } - public static void setDnr(Dialog dialog, boolean value){ + public static void setDnr(Dialog dialog, boolean value) { hookDNR(dialog.getId()); } - public static void setDnt(Dialog dialog, boolean value){ + public static void setDnt(Dialog dialog, boolean value) { hookDNT(dialog.getId()); } } diff --git a/app/src/main/java/ru/vtosters/lite/dnr/DNRModule.java b/app/src/main/java/ru/vtosters/lite/dnr/DNRModule.java index 4c6ba4ceb..df4520cf2 100644 --- a/app/src/main/java/ru/vtosters/lite/dnr/DNRModule.java +++ b/app/src/main/java/ru/vtosters/lite/dnr/DNRModule.java @@ -1,10 +1,9 @@ package ru.vtosters.lite.dnr; import static ru.vtosters.lite.net.Request.makeRequest; -import static ru.vtosters.lite.utils.Globals.getUserToken; -import static ru.vtosters.lite.utils.Proxy.getApi; +import static ru.vtosters.lite.utils.AccountManagerUtils.getUserToken; +import static ru.vtosters.lite.utils.ProxyUtils.getApi; -import com.vk.core.util.ToastUtils; import com.vk.im.engine.commands.messages.SetUserActivityCmd; import com.vk.im.engine.models.dialogs.Dialog; @@ -13,53 +12,53 @@ import java.util.List; import ru.vtosters.lite.dnr.helpers.DoNotReadDBHelper; import ru.vtosters.lite.dnr.helpers.DoNotTypeDBHelper; -public class DNRModule{ +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){ + public static boolean isDnrEnabledFor(int id) { var isEnabled = mDoNotReadDBHelper.isEnabledForPeerId(id); return isEnabled; } - public static List getDnrEnabled(){ + public static List getDnrEnabled() { return mDoNotReadDBHelper.get(); } - public static List getDntEnabled(){ + public static List getDntEnabled() { return mDoNotTypeDBHelper.get(); } - public static boolean isDntEnabledFor(int id){ + public static boolean isDntEnabledFor(int id) { var isEnabled = mDoNotTypeDBHelper.isEnabledForPeerId(id); return isEnabled; } - public static boolean isDntEnabledFor(SetUserActivityCmd cmd){ + public static boolean isDntEnabledFor(SetUserActivityCmd cmd) { return isDntEnabledFor(cmd.b); } - public static boolean isDnrEnabledFor(Dialog dialog){ + public static boolean isDnrEnabledFor(Dialog dialog) { if (dialog == null) return false; return isDnrEnabledFor(dialog.getId()); } - public static boolean isDntEnabledFor(Dialog dialog){ + public static boolean isDntEnabledFor(Dialog dialog) { if (dialog == null) return false; return isDntEnabledFor(dialog.getId()); } - public static void hookRead(Dialog dialog){ + public static void hookRead(Dialog dialog) { makeRequest("https://" + getApi() + "/method/messages.markAsRead?start_message_id=" + dialog.F1() + "&peer_id=" + dialog.getId() + "&v=5.119&access_token=" + getUserToken(), response -> { }); } - public static void hookDNR(int peerId){ + public static void hookDNR(int peerId) { mDoNotReadDBHelper.setEnabledForPeerId(peerId, !mDoNotReadDBHelper.isEnabledForPeerId(peerId)); } - public static void hookDNT(int peerId){ + public static void hookDNT(int peerId) { mDoNotTypeDBHelper.setEnabledForPeerId(peerId, !mDoNotTypeDBHelper.isEnabledForPeerId(peerId)); } } diff --git a/app/src/main/java/ru/vtosters/lite/dnr/DNRPrefs.java b/app/src/main/java/ru/vtosters/lite/dnr/DNRPrefs.java index d83e0a0d2..6e5a464e9 100644 --- a/app/src/main/java/ru/vtosters/lite/dnr/DNRPrefs.java +++ b/app/src/main/java/ru/vtosters/lite/dnr/DNRPrefs.java @@ -2,16 +2,16 @@ package ru.vtosters.lite.dnr; import static ru.vtosters.lite.utils.Preferences.getBoolValue; -public class DNRPrefs{ - public static boolean getStoriesRead(){ +public class DNRPrefs { + public static boolean getStoriesRead() { return getBoolValue("read_s", false); } - public static boolean getVoiceListened(){ + public static boolean getVoiceListened() { return getBoolValue("listen_v", false); } - public static boolean getMarkAsReadWithoutExceptions(int peerId){ + public static boolean getMarkAsReadWithoutExceptions(int peerId) { if (readPM(peerId)) return true; if (readConversations(peerId)) @@ -19,43 +19,43 @@ public class DNRPrefs{ return readBots(peerId); } - public static boolean getMarkAsRead(int peerId){ + public static boolean getMarkAsRead(int peerId) { return isInDNRExceptions(peerId); } - public static boolean isInDNRExceptions(int peerId){ + public static boolean isInDNRExceptions(int peerId) { return DNRModule.mDoNotReadDBHelper.isEnabledForPeerId(peerId); } - public static boolean isInDNTExceptions(int peerId){ + public static boolean isInDNTExceptions(int peerId) { return DNRModule.mDoNotTypeDBHelper.isEnabledForPeerId(peerId); } - public static boolean readPM(int peer){ + public static boolean readPM(int peer) { return (peer > 0 && peer < 2000000000) && getBoolValue("read_pm", false); } - public static boolean readConversations(int peer){ + public static boolean readConversations(int peer) { return (peer > 2000000000) && getBoolValue("read_conversations", false); } - public static boolean readBots(int peer){ + public static boolean readBots(int peer) { return (peer < 0) && getBoolValue("read_bot", false); } - public static boolean writePM(int peer){ + public static boolean writePM(int peer) { return (peer > 0 && peer < 2000000000) && getBoolValue("write_pm", false); } - public static boolean writeConversations(int peer){ + public static boolean writeConversations(int peer) { return (peer > 2000000000) && getBoolValue("write_conversations", false); } - public static boolean writeBots(int peer){ + public static boolean writeBots(int peer) { return (peer < 0) && getBoolValue("write_bot", false); } - public static boolean getActivityWithoutExceptions(int peerId){ + public static boolean getActivityWithoutExceptions(int peerId) { if (writePM(peerId)) return true; if (writeConversations(peerId)) @@ -63,7 +63,7 @@ public class DNRPrefs{ return writeBots(peerId); } - public static boolean getActivity(int peerId){ + public static boolean getActivity(int peerId) { return isInDNTExceptions(peerId); } } diff --git a/app/src/main/java/ru/vtosters/lite/dnr/helpers/DoNotReadDBHelper.java b/app/src/main/java/ru/vtosters/lite/dnr/helpers/DoNotReadDBHelper.java index 221b0bde1..3cc391d21 100644 --- a/app/src/main/java/ru/vtosters/lite/dnr/helpers/DoNotReadDBHelper.java +++ b/app/src/main/java/ru/vtosters/lite/dnr/helpers/DoNotReadDBHelper.java @@ -1,6 +1,6 @@ package ru.vtosters.lite.dnr.helpers; -import static ru.vtosters.lite.utils.Globals.getContext; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; import android.content.ContentValues; import android.database.Cursor; @@ -12,22 +12,22 @@ import java.util.List; import ru.vtosters.lite.dnr.DNRPrefs; -public class DoNotReadDBHelper extends SQLiteOpenHelper{ - public DoNotReadDBHelper(){ - super(getContext(), "dnr", null, 1); +public class DoNotReadDBHelper extends SQLiteOpenHelper { + public DoNotReadDBHelper() { + super(getGlobalContext(), "dnr", null, 1); } @Override - public void onCreate(SQLiteDatabase db){ + public void onCreate(SQLiteDatabase db) { db.execSQL("create table dnr (peerId integer primary key, enabled integer)"); } @Override - public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){ + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } - public boolean isEnabledForPeerId(int peerId){ + public boolean isEnabledForPeerId(int peerId) { try (Cursor c = getReadableDatabase().query("dnr", null, null, null, null, null, null)) { if (c.moveToFirst()) { int peerIdIndex = c.getColumnIndex("peerId"); @@ -36,7 +36,7 @@ public class DoNotReadDBHelper extends SQLiteOpenHelper{ do { if (c.getInt(peerIdIndex) == peerId) return c.getInt(enabledIndex) == 1; - } while(c.moveToNext()); + } while (c.moveToNext()); } } catch (Exception e) { e.printStackTrace(); @@ -45,7 +45,7 @@ public class DoNotReadDBHelper extends SQLiteOpenHelper{ return DNRPrefs.getMarkAsReadWithoutExceptions(peerId); } - public List get(){ + public List get() { ArrayList rs = new ArrayList<>(); try (Cursor c = getReadableDatabase().query("dnr", null, null, null, null, null, null)) { @@ -57,7 +57,7 @@ public class DoNotReadDBHelper extends SQLiteOpenHelper{ if (c.getInt(enabledIndex) == 1) { rs.add(c.getInt(peerIdIndex)); } - } while(c.moveToNext()); + } while (c.moveToNext()); } } catch (Exception e) { e.printStackTrace(); @@ -66,7 +66,7 @@ public class DoNotReadDBHelper extends SQLiteOpenHelper{ return rs; } - public void setEnabledForPeerId(int peerId, boolean enabled){ + public void setEnabledForPeerId(int peerId, boolean enabled) { ContentValues cv = new ContentValues(); cv.put("enabled", enabled ? 1 : 0); diff --git a/app/src/main/java/ru/vtosters/lite/dnr/helpers/DoNotTypeDBHelper.java b/app/src/main/java/ru/vtosters/lite/dnr/helpers/DoNotTypeDBHelper.java index 8fdea5066..f448b79ee 100644 --- a/app/src/main/java/ru/vtosters/lite/dnr/helpers/DoNotTypeDBHelper.java +++ b/app/src/main/java/ru/vtosters/lite/dnr/helpers/DoNotTypeDBHelper.java @@ -1,6 +1,6 @@ package ru.vtosters.lite.dnr.helpers; -import static ru.vtosters.lite.utils.Globals.getContext; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; import android.content.ContentValues; import android.database.Cursor; @@ -12,22 +12,22 @@ import java.util.List; import ru.vtosters.lite.dnr.DNRPrefs; -public class DoNotTypeDBHelper extends SQLiteOpenHelper{ - public DoNotTypeDBHelper(){ - super(getContext(), "dnt", null, 1); +public class DoNotTypeDBHelper extends SQLiteOpenHelper { + public DoNotTypeDBHelper() { + super(getGlobalContext(), "dnt", null, 1); } @Override - public void onCreate(SQLiteDatabase db){ + public void onCreate(SQLiteDatabase db) { db.execSQL("create table dnt (peerId integer primary key, enabled integer)"); } @Override - public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){ + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } - public List get(){ + public List get() { ArrayList rs = new ArrayList<>(); try (Cursor c = getReadableDatabase().query("dnt", null, null, null, null, null, null)) { @@ -39,7 +39,7 @@ public class DoNotTypeDBHelper extends SQLiteOpenHelper{ if (c.getInt(enabledIndex) == 1) { rs.add(c.getInt(peerIdIndex)); } - } while(c.moveToNext()); + } while (c.moveToNext()); } } catch (Exception e) { e.printStackTrace(); @@ -48,7 +48,7 @@ public class DoNotTypeDBHelper extends SQLiteOpenHelper{ return rs; } - public boolean isEnabledForPeerId(int peerId){ + public boolean isEnabledForPeerId(int peerId) { try (Cursor c = getReadableDatabase().query("dnt", null, null, null, null, null, null)) { if (c.moveToFirst()) { int peerIdIndex = c.getColumnIndex("peerId"); @@ -57,7 +57,7 @@ public class DoNotTypeDBHelper extends SQLiteOpenHelper{ do { if (c.getInt(peerIdIndex) == peerId) return c.getInt(enabledIndex) == 1; - } while(c.moveToNext()); + } while (c.moveToNext()); } } catch (Exception e) { e.printStackTrace(); @@ -66,7 +66,7 @@ public class DoNotTypeDBHelper extends SQLiteOpenHelper{ return DNRPrefs.getActivityWithoutExceptions(peerId); } - public void setEnabledForPeerId(int peerId, boolean enabled){ + public void setEnabledForPeerId(int peerId, boolean enabled) { ContentValues cv = new ContentValues(); cv.put("enabled", enabled ? 1 : 0); diff --git a/app/src/main/java/ru/vtosters/lite/downloaders/AudioDownloader.java b/app/src/main/java/ru/vtosters/lite/downloaders/AudioDownloader.java index 237f51c20..bc9f5d154 100644 --- a/app/src/main/java/ru/vtosters/lite/downloaders/AudioDownloader.java +++ b/app/src/main/java/ru/vtosters/lite/downloaders/AudioDownloader.java @@ -16,13 +16,13 @@ import ru.vtosters.lite.music.Callback; import ru.vtosters.lite.music.FFMpeg; import ru.vtosters.lite.music.M3UDownloader; import ru.vtosters.lite.music.MP3Downloader; -import ru.vtosters.lite.utils.Globals; +import ru.vtosters.lite.utils.AndroidUtils; public class AudioDownloader { - private static NotificationManagerCompat notificationManager = NotificationManagerCompat.from(Globals.getContext()); + private static NotificationManagerCompat notificationManager = NotificationManagerCompat.from(AndroidUtils.getGlobalContext()); public static void downloadAudio(MusicTrack track) { - if (Globals.getDefprefs().getBoolean("new_music_downloading_way", false)) { + if (AndroidUtils.getDefaultPrefs().getBoolean("new_music_downloading_way", false)) { downloadMP3(track); } else { downloadM3U8(track); @@ -89,15 +89,15 @@ public class AudioDownloader { else Log.e("AudioDownloader", "Directory creation failed"); Log.i("AudioDownloader", "Downloading audio to " + path); - new M3UDownloader(track.D, outDir, callback).execute(); + M3UDownloader.execute(track.D, outDir, callback); } private static void downloadMP3(MusicTrack track) { - new MP3Downloader().execute(track); + MP3Downloader.execute(track); } private static NotificationCompat.Builder buildDownloadNotification(MusicTrack track, int id) { - var notificationBuilder = new NotificationCompat.Builder(Globals.getContext(), NotificationChannels.MUSIC_DOWNLOAD_CHANNEL_ID) + var notificationBuilder = new NotificationCompat.Builder(AndroidUtils.getGlobalContext(), NotificationChannels.MUSIC_DOWNLOAD_CHANNEL_ID) .setSmallIcon(android.R.drawable.stat_sys_download) .setContentTitle("Загрузка аудиозаписи") .setContentText(track.toString()) diff --git a/app/src/main/java/ru/vtosters/lite/downloaders/OTADownloader.java b/app/src/main/java/ru/vtosters/lite/downloaders/OTADownloader.java index 76801b376..c9a7429d1 100644 --- a/app/src/main/java/ru/vtosters/lite/downloaders/OTADownloader.java +++ b/app/src/main/java/ru/vtosters/lite/downloaders/OTADownloader.java @@ -1,6 +1,6 @@ package ru.vtosters.lite.downloaders; -import static ru.vtosters.lite.utils.Globals.getString; +import static ru.vtosters.lite.utils.AndroidUtils.getString; import android.annotation.SuppressLint; import android.app.DownloadManager; @@ -15,13 +15,13 @@ import java.io.File; import b.h.g.m.FileUtils; import ru.vtosters.lite.ui.activities.APKInstallActivity; -import ru.vtosters.lite.utils.Globals; +import ru.vtosters.lite.utils.AndroidUtils; -public class OTADownloader{ +public class OTADownloader { - private static final BroadcastReceiver callback = new BroadcastReceiver(){ + private static final BroadcastReceiver callback = new BroadcastReceiver() { @Override - public void onReceive(Context context, Intent intent){ + public void onReceive(Context context, Intent intent) { var extras = intent.getExtras(); if (extras == null || !intent.getAction().equals(DownloadManager.ACTION_DOWNLOAD_COMPLETE)) return; @@ -29,7 +29,7 @@ public class OTADownloader{ var query = new DownloadManager.Query(); var id = extras.getLong(DownloadManager.EXTRA_DOWNLOAD_ID); query.setFilterById(id); - var manager = (DownloadManager) Globals.getContext().getSystemService(Context.DOWNLOAD_SERVICE); + var manager = (DownloadManager) AndroidUtils.getGlobalContext().getSystemService(Context.DOWNLOAD_SERVICE); var cursor = manager.query(query); if (cursor.moveToFirst()) { @SuppressLint("Range") var status = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS)); @@ -48,14 +48,14 @@ public class OTADownloader{ File apk = maxIndex == -1 ? new File(downloadDir, "VTLite.apk") : new File(downloadDir, "VTLite-" + maxIndex + ".apk"); APKInstallActivity.installOta(context, FileUtils.n(apk)); } else if (status == DownloadManager.STATUS_FAILED) { - Globals.sendToast(getString("downloaderr")); + AndroidUtils.sendToast(getString("downloaderr")); } } } }; - public static void downloadBuild(String url){ - var context = Globals.getContext(); + public static void downloadBuild(String url) { + var context = AndroidUtils.getGlobalContext(); var uri = Uri.parse(url); context.registerReceiver(callback, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE)); @@ -65,7 +65,7 @@ public class OTADownloader{ request.setTitle("VTLite.apk"); request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "VTLite.apk"); - var manager = (DownloadManager) Globals.getContext().getSystemService(Context.DOWNLOAD_SERVICE); + var manager = (DownloadManager) AndroidUtils.getGlobalContext().getSystemService(Context.DOWNLOAD_SERVICE); manager.enqueue(request); } } diff --git a/app/src/main/java/ru/vtosters/lite/downloaders/StoryDownloader.java b/app/src/main/java/ru/vtosters/lite/downloaders/StoryDownloader.java index 80be9d8c8..31003a267 100644 --- a/app/src/main/java/ru/vtosters/lite/downloaders/StoryDownloader.java +++ b/app/src/main/java/ru/vtosters/lite/downloaders/StoryDownloader.java @@ -1,6 +1,7 @@ package ru.vtosters.lite.downloaders; + import static ru.vtosters.lite.downloaders.VideoDownloader.downloadVideo; -import static ru.vtosters.lite.utils.Globals.getContext; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; import android.app.DownloadManager; import android.content.Context; @@ -12,8 +13,8 @@ import com.vk.dto.stories.model.StoryEntry; import java.util.List; -public class StoryDownloader{ - public static Runnable injectButton(StoryEntry story){ +public class StoryDownloader { + public static Runnable injectButton(StoryEntry story) { return () -> { // if story is a pic if (story.T1()) { @@ -23,7 +24,7 @@ public class StoryDownloader{ request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); request.setTitle("photo" + story.E.a); request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DCIM, "/Stories/photo" + story.E.a + ".jpg"); - ((DownloadManager) getContext().getSystemService(Context.DOWNLOAD_SERVICE)).enqueue(request); + ((DownloadManager) getGlobalContext().getSystemService(Context.DOWNLOAD_SERVICE)).enqueue(request); return; } diff --git a/app/src/main/java/ru/vtosters/lite/downloaders/VideoDownloader.java b/app/src/main/java/ru/vtosters/lite/downloaders/VideoDownloader.java index 4d2e5779c..f486cfdaa 100644 --- a/app/src/main/java/ru/vtosters/lite/downloaders/VideoDownloader.java +++ b/app/src/main/java/ru/vtosters/lite/downloaders/VideoDownloader.java @@ -1,10 +1,10 @@ package ru.vtosters.lite.downloaders; import static ru.vtosters.lite.net.Request.makeRequest; -import static ru.vtosters.lite.utils.Globals.getContext; -import static ru.vtosters.lite.utils.Globals.getIdentifier; -import static ru.vtosters.lite.utils.Globals.getString; -import static ru.vtosters.lite.utils.Globals.getUserToken; +import static ru.vtosters.lite.utils.AccountManagerUtils.getUserToken; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; +import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier; +import static ru.vtosters.lite.utils.AndroidUtils.getString; import android.app.AlertDialog; import android.app.DownloadManager; @@ -27,23 +27,23 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; -import ru.vtosters.lite.utils.ExternalLinkHandler; +import ru.vtosters.lite.utils.ExternalLinkParser; -public class VideoDownloader{ +public class VideoDownloader { private static final int DOWNLOAD_ID = 0; private static final int OPEN_EXTERNAL_LINK_ID = 1; - public static boolean onClick(int id, VideoFile video, Context ctx){ + public static boolean onClick(int id, VideoFile video, Context ctx) { if (id == DOWNLOAD_ID) { downloadVideo(video, ctx); return true; } else if (id == OPEN_EXTERNAL_LINK_ID) { - ExternalLinkHandler.parseVideoFile(video, ctx, true); + ExternalLinkParser.parseVideoFile(video, ctx, true); } return false; } - public static void injectAction(ArrayList list, VideoFile video){ + public static void injectAction(ArrayList list, VideoFile video) { if (!video.U && !video.I1()) { addAction(list, DOWNLOAD_ID, R.drawable.ic_download_outline_24, R.string.download, 9); addAction(list, OPEN_EXTERNAL_LINK_ID, R.drawable.ic_link_outline_28, getIdentifier("interfacevideoext_short", "string"), 9); @@ -54,7 +54,7 @@ public class VideoDownloader{ actions.add(new MenuBottomSheetAction(ints[0], ints[1], ints[2], ints[3])); } - public static void downloadVideo(VideoFile videoFile, Context context){ + public static void downloadVideo(VideoFile videoFile, Context context) { final List list = new ArrayList<>(); final List urls = new ArrayList<>(); @@ -105,7 +105,7 @@ public class VideoDownloader{ request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); request.setTitle(videoFile.toString()); request.setDestinationInExternalPublicDir(Environment.DIRECTORY_MOVIES, videoFile + ".mp4"); - ((DownloadManager) getContext().getSystemService(Context.DOWNLOAD_SERVICE)).enqueue(request); + ((DownloadManager) getGlobalContext().getSystemService(Context.DOWNLOAD_SERVICE)).enqueue(request); return; } @@ -121,7 +121,7 @@ public class VideoDownloader{ builder.show(); } - public static void parseVideoLink(String url, Context ctx){ + public static void parseVideoLink(String url, Context ctx) { if (url.contains("vk.com/story")) { ToastUtils.a("Не поддерживается загрузка историй"); return; diff --git a/app/src/main/java/ru/vtosters/lite/downloaders/notifications/NotificationChannels.java b/app/src/main/java/ru/vtosters/lite/downloaders/notifications/NotificationChannels.java index 8bcbbfaaf..b7937baf9 100644 --- a/app/src/main/java/ru/vtosters/lite/downloaders/notifications/NotificationChannels.java +++ b/app/src/main/java/ru/vtosters/lite/downloaders/notifications/NotificationChannels.java @@ -8,7 +8,7 @@ import android.os.Build; import androidx.annotation.RequiresApi; import androidx.core.app.NotificationManagerCompat; -import ru.vtosters.lite.utils.Globals; +import ru.vtosters.lite.utils.AndroidUtils; public class NotificationChannels { public static final String MUSIC_DOWNLOAD_CHANNEL_ID = "music_download_channel"; @@ -26,7 +26,7 @@ public class NotificationChannels { musicDownloadChannel.setDescription(MUSIC_DOWNLOAD_CHANNEL_DESCRIPTION); musicDownloadChannel.setShowBadge(true); musicDownloadChannel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE); - var notificationManager = NotificationManagerCompat.from(Globals.getContext()); + var notificationManager = NotificationManagerCompat.from(AndroidUtils.getGlobalContext()); notificationManager.createNotificationChannel(musicDownloadChannel); } } diff --git a/app/src/main/java/ru/vtosters/lite/encryption/EncryptProvider.java b/app/src/main/java/ru/vtosters/lite/encryption/EncryptProvider.java index 3b29a562e..87164f77c 100644 --- a/app/src/main/java/ru/vtosters/lite/encryption/EncryptProvider.java +++ b/app/src/main/java/ru/vtosters/lite/encryption/EncryptProvider.java @@ -19,10 +19,10 @@ import ru.vtosters.lite.encryption.processors.MP3InvisibleProcessor; import ru.vtosters.lite.encryption.processors.VTostersAESProcessor; import ru.vtosters.lite.encryption.processors.VTostersProcessor; -public class EncryptProvider{ +public class EncryptProvider { public static List processors = new ArrayList<>(); - static{ + static { processors.add(new VTostersProcessor()); processors.add(new VTostersAESProcessor()); processors.add(new DefaultCoffeeProcessor()); @@ -31,7 +31,7 @@ public class EncryptProvider{ processors.add(new MP3InvisibleProcessor()); } - public static IMProcessor getProcessorFor(int peerId){ + public static IMProcessor getProcessorFor(int peerId) { IMProcessor enabled = null; for (IMProcessor processor : EncryptProvider.processors) { if (processor.isUsedToEncrypt(peerId)) { @@ -41,20 +41,20 @@ public class EncryptProvider{ return enabled; } - public static String getBody(MsgFromUser msg){ + public static String getBody(MsgFromUser msg) { return msg.f(); } - public static int getPeerId(Msg msg){ + public static int getPeerId(Msg msg) { return msg.v1(); } // This will run through EVERY single processor available. - public static String decryptMessage(MsgFromUser msg){ + public static String decryptMessage(MsgFromUser msg) { return decryptMessage(getBody(msg), getPeerId(msg)); } - public static String decryptMessage(String msgBody, int peer){ + public static String decryptMessage(String msgBody, int peer) { try { for (IMProcessor processor : processors) { if ((processor.isUsed() || !processor.isPublic()) && processor.isEncrypted(msgBody) && (processor.isPublic() || getKeyForProcessor(processor, peer) != null)) @@ -66,7 +66,7 @@ public class EncryptProvider{ return msgBody; } - private static byte[] getKeyForProcessor(IMProcessor processor, int peer){ + private static byte[] getKeyForProcessor(IMProcessor processor, int peer) { if (processor.isPublic()) return null; String keyString = processor.getEncryptionKeyFor(peer); if (keyString == null) return null; @@ -85,7 +85,7 @@ public class EncryptProvider{ } // This will use only the processor which was chosen in chat menu [that's why ID is needed, bruh] - public static String encryptMessage(MsgFromUser msg){ + public static String encryptMessage(MsgFromUser msg) { String msgBody = getBody(msg); @@ -104,7 +104,7 @@ public class EncryptProvider{ } // For rendering UI - public static List> getUserVisibleEncoders(){ + public static List> getUserVisibleEncoders() { List> theList = new ArrayList<>(); for (IMProcessor processor : processors) { diff --git a/app/src/main/java/ru/vtosters/lite/encryption/base/IMProcessor.java b/app/src/main/java/ru/vtosters/lite/encryption/base/IMProcessor.java index 9f07c3805..2d96779c4 100644 --- a/app/src/main/java/ru/vtosters/lite/encryption/base/IMProcessor.java +++ b/app/src/main/java/ru/vtosters/lite/encryption/base/IMProcessor.java @@ -5,11 +5,11 @@ import static ru.vtosters.lite.utils.Preferences.getBoolValue; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import ru.vtosters.lite.utils.Globals; +import ru.vtosters.lite.utils.AndroidUtils; -public abstract class IMProcessor{ +public abstract class IMProcessor { // By default it checks start and end tag. - public boolean isEncrypted(String source){ + public boolean isEncrypted(String source) { //Log.d("IMProcessor", "Checking if encrypted: "+source+" / "+getUIName()); return source.startsWith(startTag()) && source.endsWith(endTag()); } @@ -23,19 +23,19 @@ public abstract class IMProcessor{ // Automatically removes tags. Magic! @NonNull - public String encode(@NonNull String source, @Nullable byte[] key){ + public String encode(@NonNull String source, @Nullable byte[] key) { //Log.d("IMProcessor", "Encoding "+source); return startTag() + encodeInternal(source, key) + endTag(); } @NonNull - public String decode(@NonNull String source, @Nullable byte[] key){ + public String decode(@NonNull String source, @Nullable byte[] key) { //Log.d("IMProcessor", "Decoding"); return decodeInternal(source.substring(startTag().length(), source.length() - endTag().length()), key); } // Public - no key required. - public boolean isPublic(){ + public boolean isPublic() { return true; } @@ -47,40 +47,40 @@ public abstract class IMProcessor{ abstract public String getPrefKey(); @NonNull - public String startTag(){ + public String startTag() { return ""; } @NonNull - public String endTag(){ + public String endTag() { return ""; } - public boolean isUsed(){ + public boolean isUsed() { //Log.d("IMProcessor", "Checking if decoded with "+getUIName()); return getBoolValue("VT_IMDecode_" + getPrefKey(), true); } - public boolean isUsedToEncrypt(int id){ + public boolean isUsedToEncrypt(int id) { //Log.d("IMProcessor", "Checking if "+id+" is ready to be encrypted with "+getUIName()); return getBoolValue("VT_IMEncode_" + getPrefKey() + "_" + id, false); } - public void enableEncryptFor(int id){ - Globals.getDefprefs().edit().putBoolean("VT_IMEncode_" + getPrefKey() + "_" + id, true).apply(); + public void enableEncryptFor(int id) { + AndroidUtils.getDefaultPrefs().edit().putBoolean("VT_IMEncode_" + getPrefKey() + "_" + id, true).apply(); } - public void disableEncryptFor(int id){ - Globals.getDefprefs().edit().putBoolean("VT_IMEncode_" + getPrefKey() + "_" + id, false).apply(); + public void disableEncryptFor(int id) { + AndroidUtils.getDefaultPrefs().edit().putBoolean("VT_IMEncode_" + getPrefKey() + "_" + id, false).apply(); } - public void setEncryptionKeyFor(int id, @Nullable String key){ + public void setEncryptionKeyFor(int id, @Nullable String key) { if (key == null || key.isEmpty()) key = "VTAesDefault"; - Globals.getDefprefs().edit().putString("VT_IMEncodeKey_" + getPrefKey() + "_" + id, key).apply(); + AndroidUtils.getDefaultPrefs().edit().putString("VT_IMEncodeKey_" + getPrefKey() + "_" + id, key).apply(); } @Nullable - public String getEncryptionKeyFor(int id){ - return Globals.getDefprefs().getString("VT_IMEncodeKey_" + getPrefKey() + "_" + id, null); + public String getEncryptionKeyFor(int id) { + return AndroidUtils.getDefaultPrefs().getString("VT_IMEncodeKey_" + getPrefKey() + "_" + id, null); } } diff --git a/app/src/main/java/ru/vtosters/lite/encryption/processors/BeeCryptProcessor.java b/app/src/main/java/ru/vtosters/lite/encryption/processors/BeeCryptProcessor.java index b93b7a644..379e6b007 100644 --- a/app/src/main/java/ru/vtosters/lite/encryption/processors/BeeCryptProcessor.java +++ b/app/src/main/java/ru/vtosters/lite/encryption/processors/BeeCryptProcessor.java @@ -9,12 +9,12 @@ import java.nio.charset.StandardCharsets; import ru.vtosters.lite.encryption.base.IMProcessor; -public class BeeCryptProcessor extends IMProcessor{ +public class BeeCryptProcessor extends IMProcessor { private static final String BC_CHARSET = "жъЖЪ"; @NonNull @Override - protected String encodeInternal(@NonNull String source, @Nullable byte[] key){ + protected String encodeInternal(@NonNull String source, @Nullable byte[] key) { try { String a = Base64.encodeToString(source.getBytes(StandardCharsets.UTF_8), 2); StringBuilder res = new StringBuilder(); @@ -35,16 +35,16 @@ public class BeeCryptProcessor extends IMProcessor{ } @Override - public boolean isEncrypted(String source){ + public boolean isEncrypted(String source) { return source.matches("[жъЖЪ]{16,}"); } @NonNull @Override - protected String decodeInternal(@NonNull String source, @Nullable byte[] key){ + protected String decodeInternal(@NonNull String source, @Nullable byte[] key) { StringBuilder b64 = new StringBuilder(); int i = 0; - while(i < source.length() - 3) { + while (i < source.length() - 3) { try { String bintxt = source.substring(i, i + 4); int c = 0; @@ -63,13 +63,13 @@ public class BeeCryptProcessor extends IMProcessor{ @NonNull @Override - public String getUIName(){ + public String getUIName() { return "MP3 [beecrypt]"; } @NonNull @Override - public String getPrefKey(){ + public String getPrefKey() { return "mp3_bc"; } } diff --git a/app/src/main/java/ru/vtosters/lite/encryption/processors/DefaultCoffeeProcessor.java b/app/src/main/java/ru/vtosters/lite/encryption/processors/DefaultCoffeeProcessor.java index 3f891788b..05eb716cd 100644 --- a/app/src/main/java/ru/vtosters/lite/encryption/processors/DefaultCoffeeProcessor.java +++ b/app/src/main/java/ru/vtosters/lite/encryption/processors/DefaultCoffeeProcessor.java @@ -10,11 +10,11 @@ import javax.crypto.spec.SecretKeySpec; import ru.vtosters.lite.encryption.base.IMProcessor; -public class DefaultCoffeeProcessor extends IMProcessor{ +public class DefaultCoffeeProcessor extends IMProcessor { private final static String KEY = "stupidUsersMustD"; private static Cipher dCipher, eCipher; - static{ + static { try { SecretKeySpec key = new SecretKeySpec(KEY.getBytes(), "AES"); @@ -28,7 +28,7 @@ public class DefaultCoffeeProcessor extends IMProcessor{ } } - private String toHex(String text){ + private String toHex(String text) { char[] chars = text.toCharArray(); StringBuilder str = new StringBuilder(); for (char aChar : chars) { @@ -41,7 +41,7 @@ public class DefaultCoffeeProcessor extends IMProcessor{ return string.substring(0, string.length() - 1); } - private String fromHex(String text){ + private String fromHex(String text) { text = text.replace(" ", ""); char[] chars = text.toCharArray(); char[] chars2 = new char[chars.length / 2]; @@ -55,7 +55,7 @@ public class DefaultCoffeeProcessor extends IMProcessor{ @NonNull @Override - protected String encodeInternal(@NonNull String source, @Nullable byte[] key){ + protected String encodeInternal(@NonNull String source, @Nullable byte[] key) { try { return toHex(Base64.encodeToString(eCipher.doFinal(source.getBytes()), 0)); } catch (Exception e) { @@ -67,7 +67,7 @@ public class DefaultCoffeeProcessor extends IMProcessor{ @NonNull @Override - protected String decodeInternal(@NonNull String source, @Nullable byte[] key){ + protected String decodeInternal(@NonNull String source, @Nullable byte[] key) { try { return new String(dCipher.doFinal(Base64.decode(fromHex(source), 0))); } catch (Exception e) { @@ -79,25 +79,25 @@ public class DefaultCoffeeProcessor extends IMProcessor{ @Override @NonNull - public String startTag(){ + public String startTag() { return "VK CO FF EE "; } @Override @NonNull - public String endTag(){ + public String endTag() { return " VK CO FF EE"; } @NonNull @Override - public String getUIName(){ + public String getUIName() { return "VK Coffee [default]"; } @NonNull @Override - public String getPrefKey(){ + public String getPrefKey() { return "coffee_default"; } } diff --git a/app/src/main/java/ru/vtosters/lite/encryption/processors/DonateCoffeeProcessor.java b/app/src/main/java/ru/vtosters/lite/encryption/processors/DonateCoffeeProcessor.java index 749e4e956..f82647b27 100644 --- a/app/src/main/java/ru/vtosters/lite/encryption/processors/DonateCoffeeProcessor.java +++ b/app/src/main/java/ru/vtosters/lite/encryption/processors/DonateCoffeeProcessor.java @@ -2,28 +2,28 @@ package ru.vtosters.lite.encryption.processors; import androidx.annotation.NonNull; -public class DonateCoffeeProcessor extends DefaultCoffeeProcessor{ +public class DonateCoffeeProcessor extends DefaultCoffeeProcessor { @Override @NonNull - public String startTag(){ + public String startTag() { return "II "; } @Override @NonNull - public String endTag(){ + public String endTag() { return " II"; } @NonNull @Override - public String getUIName(){ + public String getUIName() { return "VK Coffee [hidden]"; } @NonNull @Override - public String getPrefKey(){ + public String getPrefKey() { return "coffee_donate"; } } diff --git a/app/src/main/java/ru/vtosters/lite/encryption/processors/MP3InvisibleProcessor.java b/app/src/main/java/ru/vtosters/lite/encryption/processors/MP3InvisibleProcessor.java index d53b379b9..0528cb2ed 100644 --- a/app/src/main/java/ru/vtosters/lite/encryption/processors/MP3InvisibleProcessor.java +++ b/app/src/main/java/ru/vtosters/lite/encryption/processors/MP3InvisibleProcessor.java @@ -9,17 +9,17 @@ import java.nio.charset.StandardCharsets; import ru.vtosters.lite.encryption.base.IMProcessor; -public class MP3InvisibleProcessor extends IMProcessor{ - private static String toStr(int a, String cc){ +public class MP3InvisibleProcessor extends IMProcessor { + private static String toStr(int a, String cc) { StringBuilder s = new StringBuilder(); - while(a > 0) { + while (a > 0) { s.insert(0, cc.charAt(a % cc.length())); a /= cc.length(); } return s.toString(); } - private static int toNum(String a, String cc){ + private static int toNum(String a, String cc) { int n = 0; for (int i = 0; i < a.length(); i++) { int start = (a.length() - i) - 1; @@ -30,7 +30,7 @@ public class MP3InvisibleProcessor extends IMProcessor{ @NonNull @Override - protected String encodeInternal(@NonNull String source, @Nullable byte[] key){ + protected String encodeInternal(@NonNull String source, @Nullable byte[] key) { try { byte[] bytes = source.getBytes(StandardCharsets.UTF_8); java.lang.String[] plainText = new String[bytes.length]; @@ -46,7 +46,7 @@ public class MP3InvisibleProcessor extends IMProcessor{ @NonNull @Override - protected String decodeInternal(@NonNull String source, @Nullable byte[] key){ + protected String decodeInternal(@NonNull String source, @Nullable byte[] key) { try { java.lang.String[] t = source.replaceAll("^" + "  ", "").split(" "); byte[] plainText = new byte[t.length]; @@ -61,19 +61,19 @@ public class MP3InvisibleProcessor extends IMProcessor{ } @Override - public boolean isEncrypted(String source){ + public boolean isEncrypted(String source) { return source.matches("^" + "  " + "([" + " ​‌‏ " + "\\s]*)"); } @NonNull @Override - public String getUIName(){ + public String getUIName() { return "MP3 [invisible]"; } @NonNull @Override - public String getPrefKey(){ + public String getPrefKey() { return "mp3"; } } diff --git a/app/src/main/java/ru/vtosters/lite/encryption/processors/VTostersAESProcessor.java b/app/src/main/java/ru/vtosters/lite/encryption/processors/VTostersAESProcessor.java index 9d8214ba5..7f72be876 100644 --- a/app/src/main/java/ru/vtosters/lite/encryption/processors/VTostersAESProcessor.java +++ b/app/src/main/java/ru/vtosters/lite/encryption/processors/VTostersAESProcessor.java @@ -17,22 +17,22 @@ import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import ru.vtosters.lite.encryption.base.IMProcessor; -import ru.vtosters.lite.utils.Globals; +import ru.vtosters.lite.utils.AndroidUtils; -public class VTostersAESProcessor extends IMProcessor{ +public class VTostersAESProcessor extends IMProcessor { private final static String CIPHER_INSTANCE = "AES/CBC/PKCS7Padding"; private final static String KEY_METHOD = "AES"; private final HashMap decodeMap = new HashMap<>(); private final HashMap encodeMap = new HashMap<>(); - public void free(byte[] key){ + public void free(byte[] key) { decodeMap.remove(key); encodeMap.remove(key); } @NonNull - private Cipher wrapEncoder(byte[] key) throws InvalidAlgorithmParameterException, InvalidKeyException, NoSuchAlgorithmException, NoSuchPaddingException{ + private Cipher wrapEncoder(byte[] key) throws InvalidAlgorithmParameterException, InvalidKeyException, NoSuchAlgorithmException, NoSuchPaddingException { if (encodeMap.containsKey(key)) return encodeMap.get(key); Triple encodeCipher = getBaseCipher(key); @@ -43,7 +43,7 @@ public class VTostersAESProcessor extends IMProcessor{ } @NonNull - private Cipher wrapDecoder(byte[] key) throws InvalidAlgorithmParameterException, InvalidKeyException, NoSuchAlgorithmException, NoSuchPaddingException{ + private Cipher wrapDecoder(byte[] key) throws InvalidAlgorithmParameterException, InvalidKeyException, NoSuchAlgorithmException, NoSuchPaddingException { if (decodeMap.containsKey(key)) return decodeMap.get(key); Triple decodeCipher = getBaseCipher(key); @@ -54,7 +54,7 @@ public class VTostersAESProcessor extends IMProcessor{ } @NonNull - private Triple getBaseCipher(byte[] key) throws NoSuchPaddingException, NoSuchAlgorithmException{ + private Triple getBaseCipher(byte[] key) throws NoSuchPaddingException, NoSuchAlgorithmException { byte[] off = new byte[16]; System.arraycopy(key, 0, off, 0, off.length); return new Triple<>(Cipher.getInstance(CIPHER_INSTANCE), new SecretKeySpec(key, KEY_METHOD), new IvParameterSpec(off)); @@ -62,7 +62,7 @@ public class VTostersAESProcessor extends IMProcessor{ @NonNull @Override - protected String encodeInternal(@NonNull String source, @Nullable byte[] key){ + protected String encodeInternal(@NonNull String source, @Nullable byte[] key) { try { return Base64.encodeToString(wrapEncoder(key).doFinal(source.getBytes(StandardCharsets.UTF_8)), Base64.DEFAULT); } catch (Exception e) { @@ -73,7 +73,7 @@ public class VTostersAESProcessor extends IMProcessor{ @NonNull @Override - protected String decodeInternal(@NonNull String source, @Nullable byte[] key){ + protected String decodeInternal(@NonNull String source, @Nullable byte[] key) { try { return new String(wrapDecoder(key).doFinal(Base64.decode(source, Base64.DEFAULT)), StandardCharsets.UTF_8); } catch (Exception e) { @@ -83,46 +83,46 @@ public class VTostersAESProcessor extends IMProcessor{ } @Override - public boolean isPublic(){ + public boolean isPublic() { return false; } @NonNull @Override - public String startTag(){ + public String startTag() { return "VT0ST3RS [AES] "; } @NonNull @Override - public String endTag(){ + public String endTag() { return " VT0ST3RS [AES]"; } @NonNull @Override - public String getUIName(){ + public String getUIName() { return "VTosters [AES]"; } @NonNull @Override - public String getPrefKey(){ + public String getPrefKey() { return "vtaes"; } @Nullable @Override - public String getEncryptionKeyFor(int id){ - return Globals.getDefprefs().getString("VT_IMEncodeKey_" + getPrefKey() + "_" + id, "VTAesDefault"); + public String getEncryptionKeyFor(int id) { + return AndroidUtils.getDefaultPrefs().getString("VT_IMEncodeKey_" + getPrefKey() + "_" + id, "VTAesDefault"); } - public static class Triple{ + public static class Triple { public final F first; public final S second; public final T third; - public Triple(F first, S second, T third){ + public Triple(F first, S second, T third) { this.first = first; this.second = second; this.third = third; diff --git a/app/src/main/java/ru/vtosters/lite/encryption/processors/VTostersProcessor.java b/app/src/main/java/ru/vtosters/lite/encryption/processors/VTostersProcessor.java index 295a76ee7..c4dcf1fb2 100644 --- a/app/src/main/java/ru/vtosters/lite/encryption/processors/VTostersProcessor.java +++ b/app/src/main/java/ru/vtosters/lite/encryption/processors/VTostersProcessor.java @@ -7,40 +7,40 @@ import androidx.annotation.Nullable; import ru.vtosters.lite.encryption.base.IMProcessor; -public class VTostersProcessor extends IMProcessor{ +public class VTostersProcessor extends IMProcessor { @NonNull @Override - protected String encodeInternal(@NonNull String source, @Nullable byte[] key){ + protected String encodeInternal(@NonNull String source, @Nullable byte[] key) { return Base64.encodeToString(source.getBytes(), Base64.DEFAULT); } @NonNull @Override - protected String decodeInternal(@NonNull String source, @Nullable byte[] key){ + protected String decodeInternal(@NonNull String source, @Nullable byte[] key) { return new String(Base64.decode(source, Base64.DEFAULT)); } @Override @NonNull - public String startTag(){ + public String startTag() { return "VT0ST3RS "; } @Override @NonNull - public String endTag(){ + public String endTag() { return " VT0ST3RS"; } @NonNull @Override - public String getUIName(){ + public String getUIName() { return "VTosters Classique [Base64]"; } @NonNull @Override - public String getPrefKey(){ + public String getPrefKey() { return "vt64"; } } diff --git a/app/src/main/java/ru/vtosters/lite/foaf/FoafBase.java b/app/src/main/java/ru/vtosters/lite/foaf/FoafBase.java index ac8425b9f..e5304d6f4 100644 --- a/app/src/main/java/ru/vtosters/lite/foaf/FoafBase.java +++ b/app/src/main/java/ru/vtosters/lite/foaf/FoafBase.java @@ -2,10 +2,10 @@ package ru.vtosters.lite.foaf; import static android.widget.Toast.LENGTH_SHORT; import static android.widget.Toast.makeText; -import static ru.vtosters.lite.utils.Globals.getIdentifier; -import static ru.vtosters.lite.utils.Globals.getString; -import static ru.vtosters.lite.utils.Proxy.apiproxy; -import static ru.vtosters.lite.utils.Proxy.getApi; +import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier; +import static ru.vtosters.lite.utils.AndroidUtils.getString; +import static ru.vtosters.lite.utils.ProxyUtils.apiproxy; +import static ru.vtosters.lite.utils.ProxyUtils.getApi; import android.app.ProgressDialog; import android.content.Context; @@ -30,13 +30,13 @@ import okhttp3.Headers; import okhttp3.OkHttpClient; import ru.vtosters.lite.net.Request; -public class FoafBase{ +public class FoafBase { private static final Pattern FOAF_REGEX = Pattern.compile(""); private static final Pattern FOAF_REGEX_LAST_SEEN = Pattern.compile(""); private static final Pattern FOAF_REGEX_LOGIN = Pattern.compile(""); private static final OkHttpClient client = new OkHttpClient(); - public static long getLastSeen(long origtime, int id) throws ParseException, IOException{ + public static long getLastSeen(long origtime, int id) throws ParseException, IOException { var request = new okhttp3.Request.a() .b(getLink(id)) .a(Headers.a("User-Agent", Network.l.c().a(), "Content-Type", "application/x-www-form-urlencoded; charset=utf-8")).a(); @@ -62,7 +62,7 @@ public class FoafBase{ return sdf.parse(sdf.format(date)).getTime() / 1000; } - private static String getLink(int i){ + private static String getLink(int i) { String str; StringBuilder sb; if (apiproxy()) { @@ -77,7 +77,7 @@ public class FoafBase{ return sb.toString(); } - public static void loadAndShow(Context context, int i){ + public static void loadAndShow(Context context, int i) { ProgressDialog progressDialog = new ProgressDialog(context); progressDialog.setMessage(getString("com_facebook_loading")); progressDialog.setCancelable(false); @@ -87,7 +87,7 @@ public class FoafBase{ Request.makeRequest(getLink(i), callback); } - static void lambdaLoadAndShow(ProgressDialog progressDialog, Context context, int i, String str){ + static void lambdaLoadAndShow(ProgressDialog progressDialog, Context context, int i, String str) { try { progressDialog.cancel(); Matcher matcher = FOAF_REGEX.matcher(str); @@ -104,7 +104,7 @@ public class FoafBase{ } } - private static long daysPassedFromFoafDate(String str){ + private static long daysPassedFromFoafDate(String str) { try { Date parse = new SimpleDateFormat("yyyy-MM-dd").parse(str.split(" ")[1]); return TimeUnit.DAYS.convert(new Date().getTime() - parse.getTime(), TimeUnit.MILLISECONDS); @@ -114,7 +114,7 @@ public class FoafBase{ } } - private static String getNormalHumanDate(String str){ + private static String getNormalHumanDate(String str) { String[] split = str.split(ExifInterface.GPS_DIRECTION_TRUE); return split[1].split("\\+")[0] + " " + split[0]; } diff --git a/app/src/main/java/ru/vtosters/lite/hooks/DateHook.java b/app/src/main/java/ru/vtosters/lite/hooks/DateHook.java index ca6031fa7..308cd1dba 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/DateHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/DateHook.java @@ -1,8 +1,9 @@ package ru.vtosters.lite.hooks; -import static ru.vtosters.lite.utils.Globals.getIdentifier; -import static ru.vtosters.lite.utils.Globals.getPrefsValue; -import static ru.vtosters.lite.utils.Globals.getString; -import static ru.vtosters.lite.utils.Globals.getStringDate; + +import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier; +import static ru.vtosters.lite.utils.AndroidUtils.getPrefsValue; +import static ru.vtosters.lite.utils.AndroidUtils.getString; +import static ru.vtosters.lite.utils.AndroidUtils.getStringDate; import android.annotation.SuppressLint; @@ -10,13 +11,13 @@ import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; -public class DateHook{ - public static boolean fulltime(){ +public class DateHook { + public static boolean fulltime() { return getPrefsValue("dateformat").equals("noyear") || getPrefsValue("dateformat").equals("full") || getPrefsValue("dateformat").equals("noseconds"); } - public static String getDateFormat(){ - switch(getPrefsValue("dateformat")) { + public static String getDateFormat() { + switch (getPrefsValue("dateformat")) { case "noyear": return getString("fulltime2"); case "full": @@ -27,11 +28,11 @@ public class DateHook{ } @SuppressLint("SimpleDateFormat") - public static SimpleDateFormat setDateFormat(){ + public static SimpleDateFormat setDateFormat() { return new SimpleDateFormat(getDateFormat()); } - public static String getFormattedDate(boolean isFemale, long time){ + public static String getFormattedDate(boolean isFemale, long time) { SimpleDateFormat date = new SimpleDateFormat(getDateFormat(), Locale.getDefault()); if (!fulltime()) return null; @@ -44,7 +45,7 @@ public class DateHook{ } } - public static String getLocale(){ + public static String getLocale() { String string = getPrefsValue("lang_value"); if (string.equals("system")) { diff --git a/app/src/main/java/ru/vtosters/lite/hooks/DockBarInjector.java b/app/src/main/java/ru/vtosters/lite/hooks/DockBarInjector.java index cbe3924e3..7ec1f5531 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/DockBarInjector.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/DockBarInjector.java @@ -1,6 +1,5 @@ package ru.vtosters.lite.hooks; -import static android.graphics.Color.*; import static com.vtosters.lite.R.id.menu_fave; import static com.vtosters.lite.R.id.menu_feedback; import static com.vtosters.lite.R.id.menu_friends; @@ -17,14 +16,14 @@ import static com.vtosters.lite.R.id.tab_feedback; import static com.vtosters.lite.R.id.tab_menu; import static com.vtosters.lite.R.id.tab_messages; import static com.vtosters.lite.R.id.tab_news; -import static ru.vtosters.lite.utils.Globals.getContext; -import static ru.vtosters.lite.utils.Globals.getResources; -import static ru.vtosters.lite.utils.Preferences.*; -import static ru.vtosters.lite.utils.Themes.getCSTDock; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; +import static ru.vtosters.lite.utils.AndroidUtils.getResources; +import static ru.vtosters.lite.utils.Preferences.dockcounter; +import static ru.vtosters.lite.utils.Preferences.getBoolValue; +import static ru.vtosters.lite.utils.Preferences.milkshake; +import static ru.vtosters.lite.utils.ThemesUtils.getCSTDock; import android.annotation.SuppressLint; -import android.content.res.ColorStateList; -import android.graphics.Color; import android.graphics.drawable.Drawable; import android.view.Menu; import android.view.MenuItem; @@ -54,8 +53,6 @@ import java.util.Map; import ru.vtosters.lite.ui.components.DockBarEditorManager; import ru.vtosters.lite.ui.items.DockBarTab; -import ru.vtosters.lite.utils.Globals; -import ru.vtosters.lite.utils.Preferences; public class DockBarInjector { private static final DockBarEditorManager sManager = DockBarEditorManager.getInstance(); @@ -94,7 +91,7 @@ public class DockBarInjector { Drawable drawable = getResources().getDrawable(tab.iconID); add.setIcon(new RecoloredDrawable(drawable, getCSTDock())); - add.setTitle(getContext().getString(tab.titleID)); + add.setTitle(getGlobalContext().getString(tab.titleID)); add.setCheckable(true); } if (getBoolValue("dockbar_tab_titles", true)) { diff --git a/app/src/main/java/ru/vtosters/lite/hooks/FragAnimationHook.java b/app/src/main/java/ru/vtosters/lite/hooks/FragAnimationHook.java index 10edd0b6b..67e6dd8f4 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/FragAnimationHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/FragAnimationHook.java @@ -1,17 +1,18 @@ package ru.vtosters.lite.hooks; -import static ru.vtosters.lite.utils.FragAnimationKit.setAnimations; -import static ru.vtosters.lite.utils.Globals.getPrefsValue; + +import static ru.vtosters.lite.ui.components.FragAnimationKit.setAnimations; +import static ru.vtosters.lite.utils.AndroidUtils.getPrefsValue; import androidx.fragment.app.FragmentTransaction; -public class FragAnimationHook{ - public static boolean animateOpen(FragmentTransaction transaction){ +public class FragAnimationHook { + public static boolean animateOpen(FragmentTransaction transaction) { setAnimations(transaction); return getPrefsValue("anim_rtrn_type").equals("noanim") || getPrefsValue("anim_rtrn_type").isEmpty(); } - public static void animateClose(FragmentTransaction transaction){ + public static void animateClose(FragmentTransaction transaction) { setAnimations(transaction); } } diff --git a/app/src/main/java/ru/vtosters/lite/hooks/GcmHook.java b/app/src/main/java/ru/vtosters/lite/hooks/GcmHook.java index 16a9e4048..2f857b815 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/GcmHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/GcmHook.java @@ -27,28 +27,28 @@ import java.util.concurrent.atomic.AtomicBoolean; import javax.net.ssl.HttpsURLConnection; -public class GcmHook{ +public class GcmHook { private static final String agent = String.format("Android-GCM/1.5 (%s %s)", Build.MODEL, Build.MODEL); public static ArrayList langs = new ArrayList<>(); private static KeyPair pair; private static int rid = 0; - static{ + static { genNewKey(); } - public static String requestTokenV2(String orig){ + public static String requestTokenV2(String orig) { if (musicFixNew()) return "null"; return orig; } - public static String requestToken(String orig){ + public static String requestToken(String orig) { if (musicFixNew()) return "{null}"; if (orig.equals("")) return requestToken(); return orig; } - public static String requestToken(){ + public static String requestToken() { String xappide; try { String aid = getRandomAid(); @@ -59,7 +59,7 @@ public class GcmHook{ bytes[0] = (byte) (((bytes[0] & 15) + 112) & 255); xappide = Base64.encodeToString(bytes, 2).substring(0, 11); } catch (NoSuchAlgorithmException e) { - xappide = ""; + xappide = ""; } AtomicBoolean wait = new AtomicBoolean(false); StringBuilder sb = new StringBuilder(); @@ -69,7 +69,7 @@ public class GcmHook{ Callback callback = str -> GcmHook.lambdaRequestToken(sb, wait, str); doRequest("https://android.clients.google.com/c2dm/register3", "POST", params, aid, callback); - while(!wait.get()) { + while (!wait.get()) { Thread.sleep(100); } String token = sb.toString(); @@ -90,15 +90,15 @@ public class GcmHook{ } } - static void lambdaRequestToken(StringBuilder sb, AtomicBoolean wait, String s){ + static void lambdaRequestToken(StringBuilder sb, AtomicBoolean wait, String s) { sb.append(s.substring(20)); wait.set(true); } - static void lambda$requestToken$1(String str){ + static void lambda$requestToken$1(String str) { } - private static void fillParams(List params, String sig, String pub2, String xappid, long androidId, boolean del){ + private static void fillParams(List params, String sig, String pub2, String xappid, long androidId, boolean del) { rid++; params.add("X-subtype=841415684880"); if (del) { @@ -138,7 +138,7 @@ public class GcmHook{ params.add("gcm_ver=11949470"); } - private static String join(String chr, Iterable arr){ + private static String join(String chr, Iterable arr) { String str = ""; for (String s : arr) { str = str.isEmpty() ? s : str + chr + s; @@ -146,11 +146,11 @@ public class GcmHook{ return str; } - private static String join(String chr, String[] arr){ + private static String join(String chr, String[] arr) { return join(chr, Arrays.asList(arr)); } - private static void doRequest(String url, String method, List params, String aidlogin, Callback callback) throws IOException{ + private static void doRequest(String url, String method, List params, String aidlogin, Callback callback) throws IOException { HttpsURLConnection con = (HttpsURLConnection) new URL(url).openConnection(); con.setRequestMethod(method); con.setRequestProperty("Authorization", aidlogin); @@ -169,13 +169,13 @@ public class GcmHook{ } private static String getRandomAid() { - var arr1 = new String[]{ "3974055026275073921", "4418584909973341826", "4585634953328772978" }; - var arr2 = new String[]{ "1932960345884890854", "6594645578425092292", "1792344590975444730" }; + var arr1 = new String[]{"3974055026275073921", "4418584909973341826", "4585634953328772978"}; + var arr2 = new String[]{"1932960345884890854", "6594645578425092292", "1792344590975444730"}; int r = new Random().nextInt(2); return "AidLogin " + arr1[r] + ":" + arr2[r]; } - private static String genNewKey(){ + private static String genNewKey() { try { KeyPairGenerator gen = KeyPairGenerator.getInstance("RSA"); gen.initialize(2048); @@ -186,12 +186,12 @@ public class GcmHook{ return Base64.encodeToString(pair.getPublic().getEncoded(), 0); } - private static String getSig(String pub2){ + private static String getSig(String pub2) { try { PrivateKey key = pair.getPrivate(); Signature sign = Signature.getInstance(key instanceof RSAPrivateKey ? "SHA256withRSA" : "SHA256withECDSA"); sign.initSign(key); - sign.update(join("\n", new String[] {"com.vkontakte.android", pub2}).getBytes(StandardCharsets.UTF_8)); + sign.update(join("\n", new String[]{"com.vkontakte.android", pub2}).getBytes(StandardCharsets.UTF_8)); return Base64.encodeToString(sign.sign(), 0); } catch (Exception e) { e.printStackTrace(); @@ -199,7 +199,7 @@ public class GcmHook{ } } - public interface Callback{ + public interface Callback { void doCallback(String str); } } diff --git a/app/src/main/java/ru/vtosters/lite/hooks/JsonInjectors.java b/app/src/main/java/ru/vtosters/lite/hooks/JsonInjectors.java index 3c79c406b..d971d3001 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/JsonInjectors.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/JsonInjectors.java @@ -1,19 +1,11 @@ package ru.vtosters.lite.hooks; -import static ru.vtosters.lite.f0x1d.VTVerifications.isDeveloper; -import static ru.vtosters.lite.f0x1d.VTVerifications.isPrometheus; -import static ru.vtosters.lite.f0x1d.VTVerifications.isVerified; import static ru.vtosters.lite.foaf.FoafBase.getLastSeen; import static ru.vtosters.lite.hooks.DateHook.getLocale; import static ru.vtosters.lite.utils.Base64Utils.decode; -import static ru.vtosters.lite.utils.Globals.getContext; -import static ru.vtosters.lite.utils.Globals.getPrefsValue; -import static ru.vtosters.lite.utils.Globals.getUserId; -import static ru.vtosters.lite.utils.Globals.getUserToken; -import static ru.vtosters.lite.utils.Globals.isVKTester; -import static ru.vtosters.lite.utils.Newsfeed.checkCaption; -import static ru.vtosters.lite.utils.Newsfeed.checkCopyright; -import static ru.vtosters.lite.utils.Newsfeed.isBadNews; +import static ru.vtosters.lite.utils.NewsFeedFiltersUtils.checkCaption; +import static ru.vtosters.lite.utils.NewsFeedFiltersUtils.checkCopyright; +import static ru.vtosters.lite.utils.NewsFeedFiltersUtils.isBadNews; import static ru.vtosters.lite.utils.Preferences.ads; import static ru.vtosters.lite.utils.Preferences.adsgroup; import static ru.vtosters.lite.utils.Preferences.adsstories; @@ -25,15 +17,15 @@ import static ru.vtosters.lite.utils.Preferences.getBoolValue; import static ru.vtosters.lite.utils.Preferences.hasVerification; import static ru.vtosters.lite.utils.Preferences.podcastcatalog; import static ru.vtosters.lite.utils.Preferences.postsrecomm; +import static ru.vtosters.lite.utils.VTVerifications.isDeveloper; +import static ru.vtosters.lite.utils.VTVerifications.isPrometheus; +import static ru.vtosters.lite.utils.VTVerifications.isVerified; -import android.net.Uri; import android.util.Log; import com.vk.core.network.Network; import com.vk.core.util.DeviceIdProvider; import com.vk.core.util.LangUtils; -import com.vk.core.util.UriExt; -import com.vk.webapp.VkUiFragment; import org.json.JSONArray; import org.json.JSONException; @@ -47,13 +39,14 @@ import java.util.Random; import okhttp3.Headers; import okhttp3.OkHttpClient; import okhttp3.Request; -import ru.vtosters.lite.utils.Globals; -import ru.vtosters.lite.utils.Newsfeed; +import ru.vtosters.lite.utils.AccountManagerUtils; +import ru.vtosters.lite.utils.AndroidUtils; +import ru.vtosters.lite.utils.NewsFeedFiltersUtils; -public class JsonInjectors{ +public class JsonInjectors { private static final OkHttpClient mClient = new OkHttpClient(); - public static JSONObject profileButton(JSONObject orig) throws JSONException{ + public static JSONObject profileButton(JSONObject orig) throws JSONException { var id = orig.getInt("id"); var newItem = new JSONArray(); @@ -62,11 +55,11 @@ public class JsonInjectors{ newItem = orig.getJSONArray("buttons"); } - if (!haveDonateButton() && id == getUserId()) { + if (!haveDonateButton() && id == AccountManagerUtils.getUserId()) { newItem.put(donateRecomm()); } - if (!orig.has("type") && isVKTester()) { + if (!orig.has("type") && AccountManagerUtils.isVKTester()) { newItem.put(vktesters(id)); } @@ -75,7 +68,7 @@ public class JsonInjectors{ return orig; } - public static JSONObject donateRecomm() throws JSONException{ + public static JSONObject donateRecomm() throws JSONException { var title = "Помоги проекту донатом и получи бонус!"; var link = "https://vk.com/vtosters_official"; var text_color = "2D81E0"; @@ -116,7 +109,7 @@ public class JsonInjectors{ return json; } - public static JSONObject vktesters(int id) throws JSONException{ + public static JSONObject vktesters(int id) throws JSONException { var title = "Карточка Тестера"; var text_color = "2D81E0"; var link = "https://static.vk.com/bugs?lang=" + LangUtils.a() + "#/reporter" + id; @@ -157,7 +150,7 @@ public class JsonInjectors{ return json; } - public static JSONObject convBar(JSONObject orig) throws JSONException{ + public static JSONObject convBar(JSONObject orig) throws JSONException { var peerid = Objects.requireNonNull(orig.optJSONObject("peer")).optInt("id"); var pic = "https://image.pngaaa.com/641/326641-middle.png"; // can be null @@ -199,7 +192,7 @@ public class JsonInjectors{ + decode("fQ==")); } - public static JSONObject menu(JSONObject orig) throws JSONException{ + public static JSONObject menu(JSONObject orig) throws JSONException { var Special = orig.optJSONArray("special"); var Main = orig.getJSONArray("main"); var Other = orig.optJSONArray("other"); @@ -211,8 +204,8 @@ public class JsonInjectors{ return orig; } - public static JSONObject superapp(JSONObject json) throws JSONException{ - var superApps = Globals.getPreferences().getString("superapp_items", + public static JSONObject superapp(JSONObject json) throws JSONException { + var superApps = AndroidUtils.getPreferences().getString("superapp_items", "menu,miniapps,vkpay_slim,greeting,promo,holiday,weather,sport,games,informer,food,event,music,vk_run").split(","); if (superApps.length == 0) return json; @@ -240,7 +233,7 @@ public class JsonInjectors{ return json.putOpt("items", newItems); } - public static JSONObject musiclink(JSONObject json) throws JSONException{ + public static JSONObject musiclink(JSONObject json) { var oldItems = json.optJSONArray("links"); var section = json.optJSONObject("section"); var linksblock = section.optJSONArray("blocks"); @@ -259,7 +252,11 @@ public class JsonInjectors{ } } - section.putOpt("blocks", newBlock); + try { + section.putOpt("blocks", newBlock); + } catch (JSONException e) { + e.printStackTrace(); + } if (dev()) Log.d("VKMusic", "Removed links buttons"); } @@ -268,12 +265,12 @@ public class JsonInjectors{ return json; } - public static JSONObject setOnlineInfo(JSONObject json) throws ParseException, IOException, JSONException{ + public static JSONObject setOnlineInfo(JSONObject json) throws ParseException, IOException, JSONException { var id = json.optInt("id"); var onlineinfo = json.optJSONObject("online_info"); var time = getLastSeen(0L, id); - if (time != 0L && onlineinfo != null && !onlineinfo.optBoolean("is_online") && id != getUserId()) { + if (time != 0L && onlineinfo != null && !onlineinfo.optBoolean("is_online") && id != AccountManagerUtils.getUserId()) { json.remove("online_info"); var online_info = new JSONObject() @@ -293,7 +290,7 @@ public class JsonInjectors{ return json; } - public static JSONObject storiesads(JSONObject json, boolean isDeleteFix) throws JSONException{ + public static JSONObject storiesads(JSONObject json, boolean isDeleteFix) throws JSONException { if (!adsstories()) { return json; } @@ -327,7 +324,7 @@ public class JsonInjectors{ return json; } - private static void parseStoriesItem(JSONObject item) throws JSONException{ + private static void parseStoriesItem(JSONObject item) throws JSONException { var stories = item.optJSONArray("stories"); var newStories = new JSONArray(); @@ -347,7 +344,7 @@ public class JsonInjectors{ item.put("stories", newStories); } - public static Boolean isAds(JSONObject list, String type) throws JSONException{ + public static Boolean isAds(JSONObject list, String type) throws JSONException { if (list == null || type == null || !ads()) return false; if (list.has("ads") @@ -373,7 +370,7 @@ public class JsonInjectors{ return false; } - public static JSONArray newsfeedlist(JSONArray items) throws JSONException{ + public static JSONArray newsfeedlist(JSONArray items) throws JSONException { for (int j = 0; j < items.length(); j++) { var list = items.optJSONObject(j); var name = list.optString("id"); @@ -387,7 +384,7 @@ public class JsonInjectors{ return items; } - public static JSONArray newsfeedadtest(JSONArray items) throws JSONException{ + public static JSONArray newsfeedadtest(JSONArray items) throws JSONException { if (!getBoolValue("newadblock", true)) return items; var newItems = new JSONArray(); @@ -445,7 +442,7 @@ public class JsonInjectors{ continue; } - if (Newsfeed.injectFiltersReposts(list)) { + if (NewsFeedFiltersUtils.injectFiltersReposts(list)) { if (dev()) Log.d("NewsfeedAdBlockV2", "Removed post " + list.optInt("post_id") + " from feed, Reason: repost ad"); continue; @@ -457,7 +454,7 @@ public class JsonInjectors{ return newItems; } - public static JSONObject music(JSONObject json) throws JSONException{ + public static JSONObject music(JSONObject json) throws JSONException { var catalog = json.optJSONObject("catalog"); JSONArray oldItems = null; @@ -527,11 +524,11 @@ public class JsonInjectors{ var title = item.optString("title"); var id = item.optString("id"); var url = item.optString("url"); - var value = getPrefsValue("musicdefcatalog"); + var value = AndroidUtils.getPrefsValue("musicdefcatalog"); Log.d("VKMusic", "title: " + title + " id: " + id + " url: " + url + " value: " + value); - if (url.contains(value) && !value.isEmpty() && !value.equals("default")) { + if (url.contains(value)) { catalog.put("default_section", id); if (dev()) Log.d("VKMusic", "Added " + title + " as default music section"); } @@ -541,7 +538,7 @@ public class JsonInjectors{ return json; } - public static JSONObject fetchCatalogId(String section){ + public static JSONObject fetchCatalogId(String section) { if (section == null) return null; var request = new Request.a() @@ -552,11 +549,11 @@ public class JsonInjectors{ + "&lang=" + getLocale() + "&device_id=" - + DeviceIdProvider.d(getContext()) + + DeviceIdProvider.d(AndroidUtils.getGlobalContext()) + "&url=" + section + "&access_token=" - + getUserToken()) + + AccountManagerUtils.getUserToken()) .a(Headers.a("User-Agent", Network.l.c().a(), "Content-Type", "application/x-www-form-urlencoded; charset=utf-8")).a(); try { return new JSONObject(mClient.a(request).execute().a().g()).getJSONObject("response"); @@ -567,7 +564,7 @@ public class JsonInjectors{ return null; } - public static JSONObject fetchCatalogPodcast(){ + public static JSONObject fetchCatalogPodcast() { var request = new Request.a() .b("https://api.vk.com/method/catalog.getPodcasts" + "?v=5.119" @@ -576,9 +573,9 @@ public class JsonInjectors{ + "&lang=" + getLocale() + "&device_id=" - + DeviceIdProvider.d(getContext()) + + DeviceIdProvider.d(AndroidUtils.getGlobalContext()) + "&access_token=" - + getUserToken()) + + AccountManagerUtils.getUserToken()) .a(Headers.a("User-Agent", Network.l.c().a(), "Content-Type", "application/x-www-form-urlencoded; charset=utf-8")).a(); try { return new JSONObject(mClient.a(request).execute().a().g()).getJSONObject("response"); @@ -589,7 +586,7 @@ public class JsonInjectors{ return null; } - public static JSONObject friends(JSONObject json) throws JSONException{ + public static JSONObject friends(JSONObject json) throws JSONException { JSONObject catalog = json; boolean sectionexecute = true; boolean hasBirthday = false; @@ -656,7 +653,7 @@ public class JsonInjectors{ } - public static boolean haveDonateButton(){ + public static boolean haveDonateButton() { int randomshower = new Random().nextInt(6); return hasVerification() || randomshower != 1; diff --git a/app/src/main/java/ru/vtosters/lite/hooks/MainActivityInjector.java b/app/src/main/java/ru/vtosters/lite/hooks/MainActivityInjector.java new file mode 100644 index 000000000..5a3b4d82d --- /dev/null +++ b/app/src/main/java/ru/vtosters/lite/hooks/MainActivityInjector.java @@ -0,0 +1,41 @@ +package ru.vtosters.lite.hooks; + +import static ru.vtosters.lite.ui.dialogs.ServerDialog.sendRequest; +import static ru.vtosters.lite.utils.CacheUtils.getInstance; +import static ru.vtosters.lite.utils.Preferences.checkupdates; +import static ru.vtosters.lite.utils.ThemesUtils.isDarkTheme; +import static ru.vtosters.lite.utils.ThemesUtils.setNeededTheme; + +import android.app.Activity; +import android.os.Build; +import android.preference.PreferenceManager; + +import ru.vtosters.lite.downloaders.notifications.NotificationChannels; +import ru.vtosters.lite.ui.dialogs.DisableBattery; +import ru.vtosters.lite.ui.dialogs.InstallGMS; +import ru.vtosters.lite.ui.dialogs.OTADialog; +import ru.vtosters.lite.ui.dialogs.ServerDialog; +import ru.vtosters.lite.ui.dialogs.Start; + +public class MainActivityInjector { + + public static void inject(Activity activity) { + setNeededTheme(activity); + ServerDialog.activity = activity; + sendRequest(); + if (checkupdates()) OTADialog.checkUpdates(activity); + Start.alert(activity); + InstallGMS.alert(activity); + DisableBattery.alert(activity); + PreferenceManager.getDefaultSharedPreferences(activity) + .edit() + .putBoolean("isdark", isDarkTheme()) + .commit(); + getInstance().autoCleaningCache(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + NotificationChannels.createChannels(); + } + + // VKIDProtection.alert(activity); + } +} diff --git a/app/src/main/java/ru/vtosters/lite/hooks/NewsfeedHook.java b/app/src/main/java/ru/vtosters/lite/hooks/NewsfeedHook.java index cb67ce38f..af8826f74 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/NewsfeedHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/NewsfeedHook.java @@ -1,18 +1,19 @@ package ru.vtosters.lite.hooks; + import static java.lang.Long.MAX_VALUE; -import static ru.vtosters.lite.utils.Globals.getPrefsValue; -import static ru.vtosters.lite.utils.Newsfeed.checkCaption; -import static ru.vtosters.lite.utils.Newsfeed.checkCopyright; -import static ru.vtosters.lite.utils.Newsfeed.injectFiltersReposts; -import static ru.vtosters.lite.utils.Newsfeed.isAds; -import static ru.vtosters.lite.utils.Newsfeed.isAuthorRecommendations; -import static ru.vtosters.lite.utils.Newsfeed.isBadNews; -import static ru.vtosters.lite.utils.Newsfeed.isFriendsRecommendations; -import static ru.vtosters.lite.utils.Newsfeed.isGroupAds; -import static ru.vtosters.lite.utils.Newsfeed.isMusicBlock; -import static ru.vtosters.lite.utils.Newsfeed.isNewsBlock; -import static ru.vtosters.lite.utils.Newsfeed.isPostRecommendations; -import static ru.vtosters.lite.utils.Newsfeed.isRecomsGroup; +import static ru.vtosters.lite.utils.AndroidUtils.getPrefsValue; +import static ru.vtosters.lite.utils.NewsFeedFiltersUtils.checkCaption; +import static ru.vtosters.lite.utils.NewsFeedFiltersUtils.checkCopyright; +import static ru.vtosters.lite.utils.NewsFeedFiltersUtils.injectFiltersReposts; +import static ru.vtosters.lite.utils.NewsFeedFiltersUtils.isAds; +import static ru.vtosters.lite.utils.NewsFeedFiltersUtils.isAuthorRecommendations; +import static ru.vtosters.lite.utils.NewsFeedFiltersUtils.isBadNews; +import static ru.vtosters.lite.utils.NewsFeedFiltersUtils.isFriendsRecommendations; +import static ru.vtosters.lite.utils.NewsFeedFiltersUtils.isGroupAds; +import static ru.vtosters.lite.utils.NewsFeedFiltersUtils.isMusicBlock; +import static ru.vtosters.lite.utils.NewsFeedFiltersUtils.isNewsBlock; +import static ru.vtosters.lite.utils.NewsFeedFiltersUtils.isPostRecommendations; +import static ru.vtosters.lite.utils.NewsFeedFiltersUtils.isRecomsGroup; import static ru.vtosters.lite.utils.Preferences.getBoolValue; import static ru.vtosters.lite.utils.Preferences.vkme; @@ -24,8 +25,8 @@ import org.json.JSONObject; import java.util.ArrayList; import java.util.List; -public class NewsfeedHook{ - public static boolean injectFilters(JSONObject obj) throws JSONException{ +public class NewsfeedHook { + public static boolean injectFilters(JSONObject obj) throws JSONException { if (getBoolValue("newadblock", true)) return true; var optString = obj.optString("type", ""); @@ -52,11 +53,11 @@ public class NewsfeedHook{ return !injectFiltersReposts(obj); } // inject our filters to newsfeed, getpost and discover - public static long getUpdateNewsfeed(boolean refresh_timeout){ + public static long getUpdateNewsfeed(boolean refresh_timeout) { if (vkme()) { return MAX_VALUE; } - switch(getPrefsValue("newsupdate")) { + switch (getPrefsValue("newsupdate")) { case "no_update": return MAX_VALUE; case "imd_update": @@ -66,7 +67,7 @@ public class NewsfeedHook{ } } - public static List hideElement(ArrayList list){ + public static List hideElement(ArrayList list) { if (!getBoolValue("whatsnew", true)) { list.clear(); } diff --git a/app/src/main/java/ru/vtosters/lite/hooks/OnlineFormatterHook.java b/app/src/main/java/ru/vtosters/lite/hooks/OnlineFormatterHook.java index 3663f3e9a..bc21e390e 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/OnlineFormatterHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/OnlineFormatterHook.java @@ -1,16 +1,14 @@ package ru.vtosters.lite.hooks; + import static ru.vtosters.lite.hooks.JsonInjectors.setOnlineInfo; import static ru.vtosters.lite.net.Request.makeRequest; -import static ru.vtosters.lite.utils.Globals.getString; -import static ru.vtosters.lite.utils.Globals.getUserId; -import static ru.vtosters.lite.utils.Globals.getUserToken; -import static ru.vtosters.lite.utils.Globals.sendToast; +import static ru.vtosters.lite.utils.AccountManagerUtils.getUserToken; +import static ru.vtosters.lite.utils.AndroidUtils.getString; +import static ru.vtosters.lite.utils.AndroidUtils.sendToast; import static ru.vtosters.lite.utils.Preferences.dev; import static ru.vtosters.lite.utils.Preferences.getBoolValue; import static ru.vtosters.lite.utils.Preferences.getPrefsFromFile; -import static ru.vtosters.lite.utils.Proxy.getApi; - -import android.util.Log; +import static ru.vtosters.lite.utils.ProxyUtils.getApi; import org.json.JSONArray; import org.json.JSONException; @@ -19,13 +17,13 @@ import org.json.JSONObject; import java.io.IOException; import java.text.ParseException; -public class OnlineFormatterHook{ +public class OnlineFormatterHook { private static String AppName; - public static String getAppName(int appid){ // thanks to egormetlitsky (vk mp3 mod) for helping with online ids + public static String getAppName(int appid) { // thanks to egormetlitsky (vk mp3 mod) for helping with online ids if (appid <= 3 || !getBoolValue("onlineformatter", true)) return null; - switch(appid) { + switch (appid) { case 2274003: return "Android"; case 6328039: @@ -133,7 +131,7 @@ public class OnlineFormatterHook{ } - public static String getAppNameFromOnline(int appid){ + public static String getAppNameFromOnline(int appid) { var prefs = getPrefsFromFile("onlines"); var appname = prefs.getString(String.valueOf(appid), null); @@ -159,7 +157,7 @@ public class OnlineFormatterHook{ return AppName; } - public static String getOnline(int appid){ + public static String getOnline(int appid) { var appname = getAppName(appid); if (appname == null) return null; @@ -167,7 +165,7 @@ public class OnlineFormatterHook{ return getString("custom_online") + " " + appname; } - public static JSONObject onlineHook(JSONObject json, boolean isGlobalHook) throws ParseException, IOException, JSONException{ + public static JSONObject onlineHook(JSONObject json, boolean isGlobalHook) throws ParseException, IOException, JSONException { if (!getBoolValue("onlinefix", false)) return json; if (isGlobalHook && !getBoolValue("globalUsersOnline", false)) { diff --git a/app/src/main/java/ru/vtosters/lite/hooks/PhotoViewer.java b/app/src/main/java/ru/vtosters/lite/hooks/PhotoViewer.java index de5f655f7..555d8fb99 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/PhotoViewer.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/PhotoViewer.java @@ -1,7 +1,7 @@ package ru.vtosters.lite.hooks; -import static ru.vtosters.lite.utils.Globals.getIdentifier; -import static ru.vtosters.lite.utils.Globals.getPreferences; +import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier; +import static ru.vtosters.lite.utils.AndroidUtils.getPreferences; import android.content.ClipData; import android.content.ClipboardManager; @@ -31,21 +31,21 @@ import okhttp3.Callback; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; -import ru.vtosters.lite.utils.Globals; -import ru.vtosters.lite.utils.Themes; +import ru.vtosters.lite.utils.AndroidUtils; +import ru.vtosters.lite.utils.ThemesUtils; public class PhotoViewer { static OkHttpClient client = new OkHttpClient(); public static boolean interceptClick(AttachmentWithMedia attachment, MenuItem item, View view) { - if (item.getItemId() == Globals.getIdentifier("search_photo", "id")) { + if (item.getItemId() == AndroidUtils.getIdentifier("search_photo", "id")) { searchPhoto(getUrlFromAttachment((PhotoAttachment) attachment)); return true; - } else if (item.getItemId() == Globals.getIdentifier("copy_photo_url", "id")) { + } else if (item.getItemId() == AndroidUtils.getIdentifier("copy_photo_url", "id")) { copyPhotoUrl(getUrlFromAttachment((PhotoAttachment) attachment)); return true; - } else if (item.getItemId() == Globals.getIdentifier("open_original_photo", "id")) { + } else if (item.getItemId() == AndroidUtils.getIdentifier("open_original_photo", "id")) { openUrl(getUrlFromAttachment((PhotoAttachment) attachment)); return true; } @@ -54,19 +54,19 @@ public class PhotoViewer { public static void addMenuItems(AttachmentWithMedia attachment, ActionsPopup.b actionPopup, int i, boolean z) { actionPopup.a(getIdentifier("search_photo_content", "string"), - Themes.isDarkTheme() - ? Globals.getContext().getDrawable(R.drawable.ic_menu_search_outline_28) - : new RecoloredDrawable(Globals.getContext().getDrawable(R.drawable.ic_menu_search_outline_28), Themes.getAccentColor()), + ThemesUtils.isDarkTheme() + ? AndroidUtils.getGlobalContext().getDrawable(R.drawable.ic_menu_search_outline_28) + : new RecoloredDrawable(AndroidUtils.getGlobalContext().getDrawable(R.drawable.ic_menu_search_outline_28), ThemesUtils.getAccentColor()), false, - () -> { - searchPhoto(getUrlFromAttachment((PhotoAttachment) attachment)); - return null; - } + () -> { + searchPhoto(getUrlFromAttachment((PhotoAttachment) attachment)); + return null; + } ); actionPopup.a(getIdentifier("copy_photo_url_content", "string"), - !Themes.isDarkTheme() - ? new RecoloredDrawable(Globals.getContext().getDrawable(R.drawable.ic_copy_outline_28), Themes.getAccentColor()) - : new RecoloredDrawable(Globals.getContext().getDrawable(R.drawable.ic_copy_outline_28), Color.WHITE), + !ThemesUtils.isDarkTheme() + ? new RecoloredDrawable(AndroidUtils.getGlobalContext().getDrawable(R.drawable.ic_copy_outline_28), ThemesUtils.getAccentColor()) + : new RecoloredDrawable(AndroidUtils.getGlobalContext().getDrawable(R.drawable.ic_copy_outline_28), Color.WHITE), false, () -> { copyPhotoUrl(getUrlFromAttachment((PhotoAttachment) attachment)); @@ -74,10 +74,10 @@ public class PhotoViewer { } ); actionPopup.a(getIdentifier("open_original_photo_content", "string"), - Themes.isDarkTheme() - ? Globals.getContext().getDrawable(R.drawable.ic_link_outline_28) - : new RecoloredDrawable(Globals.getContext().getDrawable(R.drawable.ic_link_outline_28), - Themes.getAccentColor()), + ThemesUtils.isDarkTheme() + ? AndroidUtils.getGlobalContext().getDrawable(R.drawable.ic_link_outline_28) + : new RecoloredDrawable(AndroidUtils.getGlobalContext().getDrawable(R.drawable.ic_link_outline_28), + ThemesUtils.getAccentColor()), false, () -> { openUrl(getUrlFromAttachment((PhotoAttachment) attachment)); @@ -99,7 +99,7 @@ public class PhotoViewer { } return max.url; } - + private static void searchPhoto(String url) { if (url == null || url.isEmpty()) return; switch (getPreferences().getInt("search_engine", 0)) { @@ -123,7 +123,7 @@ public class PhotoViewer { client.a(request).a(new Callback() { @Override public void a(Call call, IOException e) { - Log.d("PhotoViewer", e+""); + Log.d("PhotoViewer", e + ""); } @Override @@ -153,15 +153,15 @@ public class PhotoViewer { private static void copyPhotoUrl(String url) { if (url == null || url.isEmpty()) return; - ClipboardManager manager = (ClipboardManager) Globals.getContext().getSystemService(Context.CLIPBOARD_SERVICE); + ClipboardManager manager = (ClipboardManager) AndroidUtils.getGlobalContext().getSystemService(Context.CLIPBOARD_SERVICE); manager.setPrimaryClip(ClipData.newPlainText("vk_photo_url", url)); - Toast.makeText(Globals.getContext(), Globals.getIdentifier("copied_to_clipboard", "string"), Toast.LENGTH_SHORT).show(); + Toast.makeText(AndroidUtils.getGlobalContext(), AndroidUtils.getIdentifier("copied_to_clipboard", "string"), Toast.LENGTH_SHORT).show(); } private static void openUrl(String url) { var uri = Uri.parse(url); var intent = new Intent(Intent.ACTION_VIEW, uri); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - Globals.getContext().startActivity(intent); + AndroidUtils.getGlobalContext().startActivity(intent); } } diff --git a/app/src/main/java/ru/vtosters/lite/hooks/PollHook.java b/app/src/main/java/ru/vtosters/lite/hooks/PollHook.java index baf365eb2..59a2f28cd 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/PollHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/PollHook.java @@ -9,8 +9,8 @@ import android.widget.TextView; import com.vk.dto.polls.PollOption; import com.vk.polls.ui.views.PollOptionView; -public class PollHook{ - public static void show(PollOptionView view){ +public class PollHook { + public static void show(PollOptionView view) { if (!getBoolValue("pollresults", false)) return; TextView resultsView = view.c; diff --git a/app/src/main/java/ru/vtosters/lite/hooks/ProxyHook.java b/app/src/main/java/ru/vtosters/lite/hooks/ProxyHook.java index 79d8847dc..c9fa1c689 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/ProxyHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/ProxyHook.java @@ -1,13 +1,14 @@ package ru.vtosters.lite.hooks; -import static ru.vtosters.lite.utils.Globals.convertDpToPixel; -import static ru.vtosters.lite.utils.Globals.edit; -import static ru.vtosters.lite.utils.Globals.getPrefsValue; -import static ru.vtosters.lite.utils.Globals.restartApplication; -import static ru.vtosters.lite.utils.Proxy.apiproxy; -import static ru.vtosters.lite.utils.Proxy.isZaboronaEnabled; -import static ru.vtosters.lite.utils.Themes.getAccentColor; -import static ru.vtosters.lite.utils.Themes.getAlertStyle; -import static ru.vtosters.lite.utils.Themes.getTextAttr; + +import static ru.vtosters.lite.utils.AndroidUtils.dp2px; +import static ru.vtosters.lite.utils.AndroidUtils.edit; +import static ru.vtosters.lite.utils.AndroidUtils.getPrefsValue; +import static ru.vtosters.lite.utils.LifecycleUtils.restartApplication; +import static ru.vtosters.lite.utils.ProxyUtils.apiproxy; +import static ru.vtosters.lite.utils.ProxyUtils.isZaboronaEnabled; +import static ru.vtosters.lite.utils.ThemesUtils.getAccentColor; +import static ru.vtosters.lite.utils.ThemesUtils.getAlertStyle; +import static ru.vtosters.lite.utils.ThemesUtils.getTextAttr; import android.annotation.SuppressLint; import android.content.Context; @@ -27,15 +28,15 @@ import com.vk.navigation.Navigator; import ru.vtosters.lite.ui.fragments.ProxySettingsFragment; -public class ProxyHook{ - public static void hookAuth(View v){ +public class ProxyHook { + public static void hookAuth(View v) { VkAuthTextView button = (VkAuthTextView) v; button.setText("Настроить прокси"); button.setOnClickListener(v1 -> callProxyDialog(v1.getContext())); } @SuppressLint("SetTextI18n") - public static void callProxyDialog(Context ctx){ + public static void callProxyDialog(Context ctx) { RadioGroup rg = new RadioGroup(ctx); RadioButton rgDefault = new RadioButton(new ContextThemeWrapper(ctx, com.vtosters.lite.R.style.Widget_AppCompat_CompoundButton_RadioButton)); @@ -44,10 +45,10 @@ public class ProxyHook{ rg.addView(rgDefault); rg.addView(rgProxy); - rgDefault.setTextSize(TypedValue.COMPLEX_UNIT_PX, convertDpToPixel(14f)); - rgProxy.setTextSize(TypedValue.COMPLEX_UNIT_PX, convertDpToPixel(14f)); + rgDefault.setTextSize(TypedValue.COMPLEX_UNIT_PX, dp2px(14f)); + rgProxy.setTextSize(TypedValue.COMPLEX_UNIT_PX, dp2px(14f)); - rg.setPadding(convertDpToPixel(18f), convertDpToPixel(12f), convertDpToPixel(18f), 0); + rg.setPadding(dp2px(18f), dp2px(12f), dp2px(18f), 0); rgDefault.setText("Отключить"); rgDefault.setTextColor(getTextAttr()); @@ -90,7 +91,7 @@ public class ProxyHook{ alert.getButton(DialogInterface.BUTTON_NEUTRAL).setTextColor(getAccentColor()); } - public static String linkReplacer(String link){ + public static String linkReplacer(String link) { var vkapi = "api.vk.com"; var oauth = "oauth.vk.com"; var vkstatic = "static.vk.com"; @@ -123,7 +124,7 @@ public class ProxyHook{ return link; } - public static String getAwayPhpCom(){ + public static String getAwayPhpCom() { var proxyapi = getPrefsValue("proxyapi"); if (apiproxy() & !proxyapi.isEmpty()) { diff --git a/app/src/main/java/ru/vtosters/lite/hooks/StartFragmentHook.java b/app/src/main/java/ru/vtosters/lite/hooks/StartFragmentHook.java index 6460e892a..40f9976ea 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/StartFragmentHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/StartFragmentHook.java @@ -1,6 +1,7 @@ package ru.vtosters.lite.hooks; + import static ru.vtosters.lite.ui.components.DockBarEditorManager.getInstance; -import static ru.vtosters.lite.utils.Globals.getPrefsValue; +import static ru.vtosters.lite.utils.AndroidUtils.getPrefsValue; import static ru.vtosters.lite.utils.Preferences.getBoolValue; import static ru.vtosters.lite.utils.Preferences.milkshake; import static ru.vtosters.lite.utils.Preferences.superapp; @@ -33,12 +34,12 @@ import com.vtosters.lite.fragments.y2.VideosFragment; import com.vtosters.lite.general.fragments.GamesFragment; import com.vtosters.lite.general.fragments.PhotosFragment; -public class StartFragmentHook{ - public static Class getStartFragment(){ +public class StartFragmentHook { + public static Class getStartFragment() { if (vkme()) { return DialogsFragment.class; } - switch(getPrefsValue("start_values")) { + switch (getPrefsValue("start_values")) { case "newsfeed": return milkshake() ? HomeFragment.class : NewsfeedFragment.class; case "messenger": diff --git a/app/src/main/java/ru/vtosters/lite/hooks/StoriesHook.java b/app/src/main/java/ru/vtosters/lite/hooks/StoriesHook.java index bdef1410f..7a5492b03 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/StoriesHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/StoriesHook.java @@ -1,13 +1,14 @@ package ru.vtosters.lite.hooks; + import static ru.vtosters.lite.utils.Preferences.adsstories; import static ru.vtosters.lite.utils.Preferences.stories; -public class StoriesHook{ - public static String ads(){ +public class StoriesHook { + public static String ads() { return adsstories() ? "null" : "ads"; } - public static boolean showstories(){ + public static boolean showstories() { return stories(); } } diff --git a/app/src/main/java/ru/vtosters/lite/hooks/TogglesHook.java b/app/src/main/java/ru/vtosters/lite/hooks/TogglesHook.java index 151fc0c13..2c48cda6f 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/TogglesHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/TogglesHook.java @@ -1,8 +1,9 @@ package ru.vtosters.lite.hooks; -import static ru.vtosters.lite.utils.Preferences.*; + import static ru.vtosters.lite.utils.Preferences.feedcache; import static ru.vtosters.lite.utils.Preferences.getBoolValue; import static ru.vtosters.lite.utils.Preferences.milkshake; +import static ru.vtosters.lite.utils.Preferences.miniapps; import static ru.vtosters.lite.utils.Preferences.musicnewcatalog; import static ru.vtosters.lite.utils.Preferences.postsredesign; import static ru.vtosters.lite.utils.Preferences.superapp; @@ -10,11 +11,9 @@ import static ru.vtosters.lite.utils.Preferences.superapp; import com.vk.toggle.FeatureManager; import com.vk.toggle.Features; -import ru.vtosters.lite.utils.Preferences; - -public class TogglesHook{ - public static boolean shouldPatch(Features.Type feature){ - switch(feature) { +public class TogglesHook { + public static boolean shouldPatch(Features.Type feature) { + switch (feature) { case AB_IM_LONGPOLL_MSG_BATCHING: case AB_IM_VIEW_POOL: case AB_MULTI_GIFTS: @@ -123,8 +122,8 @@ public class TogglesHook{ } } - public static boolean redirect(Features.Type feature){ - switch(feature) { + public static boolean redirect(Features.Type feature) { + switch (feature) { case EXPERIMENT_NEWS_DISABLE_CACHE: return !feedcache(); case FEATURE_SUPERAPP_MENU: @@ -149,7 +148,7 @@ public class TogglesHook{ } } - public static FeatureManager.b redirectStrings(Features.Type feature){ + public static FeatureManager.b redirectStrings(Features.Type feature) { return null; } } diff --git a/app/src/main/java/ru/vtosters/lite/hooks/VKUIHook.java b/app/src/main/java/ru/vtosters/lite/hooks/VKUIHook.java index d757f9176..513b5375a 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/VKUIHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/VKUIHook.java @@ -1,15 +1,16 @@ package ru.vtosters.lite.hooks; + import static android.util.Base64.encodeToString; -import static ru.vtosters.lite.utils.Globals.getContext; -import static ru.vtosters.lite.utils.Globals.getPrefsValue; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; +import static ru.vtosters.lite.utils.AndroidUtils.getPrefsValue; import static ru.vtosters.lite.utils.Preferences.getBoolValue; -import static ru.vtosters.lite.utils.Themes.getAccentColor; -import static ru.vtosters.lite.utils.Themes.getBackgroundContent; -import static ru.vtosters.lite.utils.Themes.getBackgroundPage; -import static ru.vtosters.lite.utils.Themes.getHeaderBackground; -import static ru.vtosters.lite.utils.Themes.getHeaderText; -import static ru.vtosters.lite.utils.Themes.getTextAttr; -import static ru.vtosters.lite.utils.Themes.hex; +import static ru.vtosters.lite.utils.ThemesUtils.getAccentColor; +import static ru.vtosters.lite.utils.ThemesUtils.getBackgroundContent; +import static ru.vtosters.lite.utils.ThemesUtils.getBackgroundPage; +import static ru.vtosters.lite.utils.ThemesUtils.getHeaderBackground; +import static ru.vtosters.lite.utils.ThemesUtils.getHeaderText; +import static ru.vtosters.lite.utils.ThemesUtils.getTextAttr; +import static ru.vtosters.lite.utils.ThemesUtils.hex; import android.webkit.WebView; @@ -22,19 +23,19 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; -public class VKUIHook{ +public class VKUIHook { public static boolean isLoaded = false; private static String loadedCSS = ""; private static String loadedCSSAmoled = ""; - private static String load(String str){ + private static String load(String str) { try { - InputStream open = getContext().getAssets().open(str); + InputStream open = getGlobalContext().getAssets().open(str); StringBuilder sb = new StringBuilder(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(open, StandardCharsets.UTF_8)); - while(true) { + while (true) { String readLine = bufferedReader.readLine(); if (readLine != null) { sb.append(readLine); @@ -51,7 +52,7 @@ public class VKUIHook{ } } - public static void load(){ + public static void load() { loadedCSS = load("vt_ui_accent.css") .replace("%header_background%", hex(getHeaderBackground())) .replace("%background_content%", hex(getBackgroundContent())) @@ -64,11 +65,11 @@ public class VKUIHook{ isLoaded = true; } - private static void inject(WebView webView, String str){ + private static void inject(WebView webView, String str) { webView.loadUrl("javascript:(function() {var parent = document.getElementsByTagName('head').item(0);var style = document.createElement('style');style.type = 'text/css';style.innerHTML = window.atob('" + str + "');parent.appendChild(style)})()"); } - public static void inject(WebView webView){ + public static void inject(WebView webView) { String string = getPrefsValue("darktheme"); if (getBoolValue("VKUI_INJ", true)) { @@ -93,10 +94,10 @@ public class VKUIHook{ } } - public static void clearWebCache(){ + public static void clearWebCache() { ThemeTracker.a(); isLoaded = false; - new WebView(getContext()).clearCache(true); + new WebView(getGlobalContext()).clearCache(true); WebCachePreloader.e(); } } diff --git a/app/src/main/java/ru/vtosters/lite/music/Callback.java b/app/src/main/java/ru/vtosters/lite/music/Callback.java index a0b987b62..74ea3599c 100644 --- a/app/src/main/java/ru/vtosters/lite/music/Callback.java +++ b/app/src/main/java/ru/vtosters/lite/music/Callback.java @@ -1,6 +1,6 @@ package ru.vtosters.lite.music; -public interface Callback{ +public interface Callback { void onProgress(int progress); void onSuccess(); diff --git a/app/src/main/java/ru/vtosters/lite/music/FFMpeg.java b/app/src/main/java/ru/vtosters/lite/music/FFMpeg.java index 3cd24a924..fc5c96522 100644 --- a/app/src/main/java/ru/vtosters/lite/music/FFMpeg.java +++ b/app/src/main/java/ru/vtosters/lite/music/FFMpeg.java @@ -11,21 +11,22 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; -import ru.vtosters.lite.utils.Globals; +import ru.vtosters.lite.utils.AndroidUtils; +import ru.vtosters.lite.utils.IOUtils; -public class FFMpeg{ +public class FFMpeg { private static final int BUFFER_SIZE = 2048; - private static void copyAssets(){ + private static void copyAssets() { try { - String[] files = Globals.getContext().getAssets().list("ffmpeg"); + String[] files = AndroidUtils.getGlobalContext().getAssets().list("ffmpeg"); for (String file : files) { if (file.endsWith(".so")) { - InputStream in = Globals.getContext().getAssets().open("ffmpeg" + File.separator + file); - FileOutputStream out = new FileOutputStream(Globals.getContext().getFilesDir() + File.separator + file); + InputStream in = AndroidUtils.getGlobalContext().getAssets().open("ffmpeg" + File.separator + file); + FileOutputStream out = new FileOutputStream(AndroidUtils.getGlobalContext().getFilesDir() + File.separator + file); byte[] buffer = new byte[BUFFER_SIZE]; int read; - while((read = in.read(buffer)) != -1) { + while ((read = in.read(buffer)) != -1) { out.write(buffer, 0, read); } in.close(); @@ -37,15 +38,15 @@ public class FFMpeg{ } } - private static void checkFFMpegLibs(){ - var lib = new File(Globals.getContext().getFilesDir(), "libffmpegkit_abidetect.so"); + private static void checkFFMpegLibs() { + var lib = new File(AndroidUtils.getGlobalContext().getFilesDir(), "libffmpegkit_abidetect.so"); if (!lib.exists()) { ToastUtils.a("Копирование библиотеки ffmpegkit"); copyAssets(); } } - public static boolean convert(String in, String out){ + public static boolean convert(String in, String out) { checkFFMpegLibs(); // write the list of all .ts files to a txt file in "in" directory @@ -64,9 +65,8 @@ public class FFMpeg{ e.printStackTrace(); } - // concatenate .ts files to a single .ts file - var concat = FFmpegKit.execute("-f concat -safe 0 -i " + in + "/list.txt -c copy " + in + "/all.ts"); + FFmpegKit.execute("-f concat -safe 0 -i " + in + "/list.txt -c copy " + in + "/all.ts"); // convert .ts file to .mp3 file via ffmpeg var session = FFmpegKit.execute("-i " + in + "/all.ts -f mp3 -acodec mp3 -q:a 0 -y '" + out + "'"); @@ -74,17 +74,11 @@ public class FFMpeg{ if (ReturnCode.isSuccess(rc)) { // remove temp files - deleteRecursively(new File(in)); + IOUtils.deleteRecursive(new File(in)); return true; - } else { - Log.e("FFMpeg", "FFmpegKit failed with return code " + rc); - return false; } - } - private static void deleteRecursively(File fileOrDirectory){ - if (fileOrDirectory.isDirectory()) for (File child : fileOrDirectory.listFiles()) - deleteRecursively(child); - fileOrDirectory.delete(); + Log.e("FFMpeg", "FFmpegKit failed with return code " + rc); + return false; } } diff --git a/app/src/main/java/ru/vtosters/lite/music/M3UDownloader.java b/app/src/main/java/ru/vtosters/lite/music/M3UDownloader.java index 8df280962..31a5bb4ac 100644 --- a/app/src/main/java/ru/vtosters/lite/music/M3UDownloader.java +++ b/app/src/main/java/ru/vtosters/lite/music/M3UDownloader.java @@ -16,64 +16,55 @@ import okhttp3.Call; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; -import ru.vtosters.lite.utils.StreamUtils; +import ru.vtosters.lite.utils.IOUtils; -public class M3UDownloader{ +public class M3UDownloader { - private final String mURL; - private final File mOutDir; - private final Callback mCallback; - private OkHttpClient mClient = new OkHttpClient(); + private static OkHttpClient client = new OkHttpClient(); - public M3UDownloader(String url, File outDir, Callback callback){ - mURL = url; - mOutDir = outDir; - mCallback = callback; - } - - public void execute(){ + public static void execute(String url, File outDir, Callback callback) { var request = new Request.a() - .b(mURL) + .b(url) .a(); - mClient.a(request).a(new okhttp3.Callback(){ + client.a(request).a(new okhttp3.Callback() { @Override - public void a(Call call, IOException e){ + public void a(Call call, IOException e) { } @Override - public void a(Call call, Response response) throws IOException{ - parse(response.a().g()); + public void a(Call call, Response response) throws IOException { + parse(response.a().g(), outDir, callback); } }); } - private void parse(String payload){ + private static void parse(String payload, File outDir, Callback callback) { try { VKM3UParser parser = new VKM3UParser(payload); List tses = parser.getTransportStreams(); - mCallback.onProgress(5); + callback.onProgress(5); for (TransportStream ts : tses) { String tsURL = parser.getBaseUrl() + ts.getName(); Log.d("M3UDownloader", "Downloading " + tsURL); - InputStream is = StreamUtils.openStream(tsURL); + InputStream is = IOUtils.openStream(tsURL); byte[] content; if (TransportStream.METHOD_AES128.equals(ts.getMethod())) { - String key = StreamUtils.readAllLines(StreamUtils.openStream(ts.getKeyURL())); - content = StreamUtils.decodeStream(is, key); + String key = IOUtils.readAllLines(IOUtils.openStream(ts.getKeyURL())); + content = IOUtils.decodeStream(is, key); } else { - content = StreamUtils.readAllBytes(is); + content = IOUtils.readAllBytes(is); } - File tsDump = new File(mOutDir, ts.getName()); - StreamUtils.writeToFile(tsDump, content); - mCallback.onSizeReceived((long) content.length * tses.size(), parser.getHeapSize()); - mCallback.onProgress(10 + Math.round(80.0f * tses.indexOf(ts) / tses.size())); + File tsDump = new File(outDir, ts.getName()); + IOUtils.writeToFile(tsDump, content); + callback.onSizeReceived((long) content.length * tses.size(), parser.getHeapSize()); + callback.onProgress(10 + Math.round(80.0f * tses.indexOf(ts) / tses.size())); } } catch (IOException | NoSuchPaddingException | NoSuchAlgorithmException | InvalidAlgorithmParameterException | InvalidKeyException e) { e.printStackTrace(); - mCallback.onFailure(); + callback.onFailure(); return; } - mCallback.onSuccess(); + callback.onSuccess(); } } diff --git a/app/src/main/java/ru/vtosters/lite/music/MP3Downloader.java b/app/src/main/java/ru/vtosters/lite/music/MP3Downloader.java index 2cf709251..27e33ba77 100644 --- a/app/src/main/java/ru/vtosters/lite/music/MP3Downloader.java +++ b/app/src/main/java/ru/vtosters/lite/music/MP3Downloader.java @@ -19,20 +19,17 @@ import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import ru.vtosters.lite.downloaders.AudioDownloader; -import ru.vtosters.lite.utils.Globals; +import ru.vtosters.lite.utils.AndroidUtils; public class MP3Downloader { private static final String URL_FORMAT = "https://api.vk.com/method/audio.getById?v=5.131&access_token=%s&audios=%s©right=https://vtosters.app/"; private static final OkHttpClient client = new OkHttpClient(); - public MP3Downloader() { - } - - public void execute(MusicTrack track) { - var token = Globals.getPreferences().getString("vk_admin_token", ""); + public static void execute(MusicTrack track) { + var token = AndroidUtils.getPreferences().getString("vk_admin_token", ""); if (token.isEmpty()) { - Toast.makeText(Globals.getContext(), "Обновите токен VK Admin в настройках", Toast.LENGTH_SHORT).show(); + Toast.makeText(AndroidUtils.getGlobalContext(), "Обновите токен VK Admin в настройках", Toast.LENGTH_SHORT).show(); return; } var request = new Request.a() @@ -41,7 +38,7 @@ public class MP3Downloader { client.a(request).a(new Callback() { @Override public void a(Call call, IOException e) { - Log.d("MP3Downloader", e+""); + Log.d("MP3Downloader", e + ""); } @Override @@ -49,35 +46,35 @@ public class MP3Downloader { var payload = response.a().g(); Log.d("MP3Downloader", payload); try { - JSONObject jsonObj = new JSONObject(payload); - if (jsonObj.has("response")) { - JSONObject responseNode = new JSONObject(payload).getJSONArray("response") - .getJSONObject(0); - if (responseNode.has("url")) { - var url = responseNode.optString("url"); - Log.d("MP3Downloader", url); - if (url != null) { - if (url.endsWith(".mp3")) { - downloadMP3(track.toString(), url); - } else if (VKM3UParser.isM3U8(url)) { - AudioDownloader.downloadM3U8(track); - } - } - } - } + JSONObject jsonObj = new JSONObject(payload); + if (jsonObj.has("response")) { + JSONObject responseNode = new JSONObject(payload).getJSONArray("response") + .getJSONObject(0); + if (responseNode.has("url")) { + var url = responseNode.optString("url"); + Log.d("MP3Downloader", url); + if (url != null) { + if (url.endsWith(".mp3")) { + downloadMP3(track.toString(), url); + } else if (VKM3UParser.isM3U8(url)) { + AudioDownloader.downloadM3U8(track); + } + } + } + } } catch (JSONException e) { - Log.d("MP3Downloader", e+""); + Log.d("MP3Downloader", e + ""); } } }); } - private void downloadMP3(String title, String url) { - var downloadManager = Globals.getContext().getSystemService(DownloadManager.class); + private static void downloadMP3(String title, String url) { + var downloadManager = AndroidUtils.getGlobalContext().getSystemService(DownloadManager.class); var request = new DownloadManager.Request(Uri.parse(url)) .setAllowedOverRoaming(true) .setTitle("Downloading " + title) - .setDestinationInExternalFilesDir(Globals.getContext(), + .setDestinationInExternalFilesDir(AndroidUtils.getGlobalContext(), Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath(), title + ".mp3") .setVisibleInDownloadsUi(true); diff --git a/app/src/main/java/ru/vtosters/lite/music/TransportStream.java b/app/src/main/java/ru/vtosters/lite/music/TransportStream.java index c996751eb..72df073bb 100644 --- a/app/src/main/java/ru/vtosters/lite/music/TransportStream.java +++ b/app/src/main/java/ru/vtosters/lite/music/TransportStream.java @@ -1,6 +1,6 @@ package ru.vtosters.lite.music; -public class TransportStream{ +public class TransportStream { public static final String METHOD_NONE = "NONE"; public static final String METHOD_AES128 = "AES-128"; @@ -9,28 +9,28 @@ public class TransportStream{ private String mName; private String mKeyURL; - public TransportStream(){ + public TransportStream() { this.mMethod = METHOD_NONE; } - public TransportStream(String method, String keyURL){ + public TransportStream(String method, String keyURL) { this.mMethod = method; this.mKeyURL = keyURL; } - public String getMethod(){ + public String getMethod() { return mMethod; } - public String getName(){ + public String getName() { return mName; } - public void setName(String name){ + public void setName(String name) { mName = name; } - public String getKeyURL(){ + public String getKeyURL() { return mKeyURL; } } diff --git a/app/src/main/java/ru/vtosters/lite/music/VKM3UParser.java b/app/src/main/java/ru/vtosters/lite/music/VKM3UParser.java index 9a6d4e93d..d3d3ef081 100644 --- a/app/src/main/java/ru/vtosters/lite/music/VKM3UParser.java +++ b/app/src/main/java/ru/vtosters/lite/music/VKM3UParser.java @@ -4,7 +4,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Scanner; -public class VKM3UParser{ +public class VKM3UParser { private final String mData; private final List mTransportStreams = new ArrayList<>(); @@ -13,15 +13,15 @@ public class VKM3UParser{ private int mHeapSize = 0; private String mBaseURL; - public VKM3UParser(String data){ + public VKM3UParser(String data) { mData = data; init(); } - private void init(){ + private void init() { int i = 0; Scanner scanner = new Scanner(mData); - while(scanner.hasNext()) { + while (scanner.hasNext()) { String line = scanner.nextLine(); mHeapSize += line.getBytes().length; if (line.startsWith("#EXT-X-TARGETDURATION")) { @@ -47,7 +47,7 @@ public class VKM3UParser{ } } - private String getDirectiveValue(String directive){ + private String getDirectiveValue(String directive) { return directive.substring(directive.indexOf(":") + 1); } @@ -55,15 +55,15 @@ public class VKM3UParser{ return str.endsWith(".ts") || str.endsWith(".tp") || str.endsWith(".mpeg-ts") || str.endsWith(".m2ts"); } - public int getHeapSize(){ + public int getHeapSize() { return mHeapSize; } - public String getBaseUrl(){ + public String getBaseUrl() { return mBaseURL; } - public List getTransportStreams(){ + public List getTransportStreams() { return mTransportStreams; } } diff --git a/app/src/main/java/ru/vtosters/lite/net/NetCall.java b/app/src/main/java/ru/vtosters/lite/net/NetCall.java index 6ba3f8373..2750f94fe 100644 --- a/app/src/main/java/ru/vtosters/lite/net/NetCall.java +++ b/app/src/main/java/ru/vtosters/lite/net/NetCall.java @@ -15,16 +15,16 @@ import java.nio.charset.StandardCharsets; import java.util.Map; import java.util.TreeMap; -public final class NetCall{ +public final class NetCall { private final NetRequest req; private final NetClient cl; - protected NetCall(NetClient cl, NetRequest req){ + protected NetCall(NetClient cl, NetRequest req) { this.req = req; this.cl = cl; } - private static String constructArgs(Map args) throws UnsupportedEncodingException{ + private static String constructArgs(Map args) throws UnsupportedEncodingException { args = new TreeMap<>(args); String str = ""; for (Map.Entry en : args.entrySet()) { @@ -34,11 +34,11 @@ public final class NetCall{ return str; } - public NetRequest request(){ + public NetRequest request() { return req; } - public NetResponse execute() throws IOException{ + public NetResponse execute() throws IOException { Proxy proxy = cl.getProxy(); PasswordAuthentication auth = cl.getAuthenticator(); HttpURLConnection con = (HttpURLConnection) new URL(req.url()).openConnection(proxy != null ? proxy : Proxy.NO_PROXY); @@ -67,7 +67,7 @@ public final class NetCall{ ByteArrayOutputStream bos = new ByteArrayOutputStream(); byte[] buffer = new byte[1024 * 1024]; int c; - while((c = in.read(buffer)) != -1) bos.write(buffer, 0, c); + while ((c = in.read(buffer)) != -1) bos.write(buffer, 0, c); in.close(); bos.close(); NetResponse r = new NetResponse(bos.toByteArray()); @@ -75,10 +75,10 @@ public final class NetCall{ return r; } - public void enqueue(NetCallback cb){ - new Thread(){ + public void enqueue(NetCallback cb) { + new Thread() { @Override - public void run(){ + public void run() { try { NetResponse resp = execute(); cb.onResponse(NetCall.this, resp); diff --git a/app/src/main/java/ru/vtosters/lite/net/NetCallback.java b/app/src/main/java/ru/vtosters/lite/net/NetCallback.java index 46333a930..e4f599303 100644 --- a/app/src/main/java/ru/vtosters/lite/net/NetCallback.java +++ b/app/src/main/java/ru/vtosters/lite/net/NetCallback.java @@ -2,7 +2,7 @@ package ru.vtosters.lite.net; import java.io.IOException; -public interface NetCallback{ +public interface NetCallback { void onFailure(NetCall netCall, IOException iOException); void onResponse(NetCall netCall, NetResponse netResponse) throws IOException; diff --git a/app/src/main/java/ru/vtosters/lite/net/NetClient.java b/app/src/main/java/ru/vtosters/lite/net/NetClient.java index 6113f4239..d3a89961e 100644 --- a/app/src/main/java/ru/vtosters/lite/net/NetClient.java +++ b/app/src/main/java/ru/vtosters/lite/net/NetClient.java @@ -4,18 +4,18 @@ import java.net.PasswordAuthentication; import java.net.Proxy; import java.util.concurrent.TimeUnit; -public class NetClient{ +public class NetClient { private final long timeout; private final Proxy proxy; private final PasswordAuthentication authenticator; - protected NetClient(Builder b){ + protected NetClient(Builder b) { timeout = b.timeout; proxy = b.proxy; authenticator = b.auth; } - public Builder newBuilder(){ + public Builder newBuilder() { Builder b = new Builder(); b.timeout = timeout; b.proxy = proxy; @@ -23,30 +23,30 @@ public class NetClient{ return b; } - public NetCall newCall(NetRequest req){ + public NetCall newCall(NetRequest req) { return new NetCall(this, req); } - public PasswordAuthentication getAuthenticator(){ + public PasswordAuthentication getAuthenticator() { return authenticator; } - public Proxy getProxy(){ + public Proxy getProxy() { return proxy; } - public long getTimeout(){ + public long getTimeout() { return timeout; } - public static final class Builder{ + public static final class Builder { private long timeout; private Proxy proxy; private PasswordAuthentication auth; - public Builder connectTimeout(long l, TimeUnit unit){ + public Builder connectTimeout(long l, TimeUnit unit) { int m; - switch(unit) { + switch (unit) { case SECONDS: m = 1000; break; @@ -70,17 +70,17 @@ public class NetClient{ return this; } - public Builder proxyAuthenticator(PasswordAuthentication auth){ + public Builder proxyAuthenticator(PasswordAuthentication auth) { this.auth = auth; return this; } - public Builder proxy(Proxy proxy){ + public Builder proxy(Proxy proxy) { this.proxy = proxy; return this; } - public NetClient build(){ + public NetClient build() { return new NetClient(this); } } diff --git a/app/src/main/java/ru/vtosters/lite/net/NetRequest.java b/app/src/main/java/ru/vtosters/lite/net/NetRequest.java index b7bfe9e33..4b3e1948d 100755 --- a/app/src/main/java/ru/vtosters/lite/net/NetRequest.java +++ b/app/src/main/java/ru/vtosters/lite/net/NetRequest.java @@ -3,59 +3,59 @@ package ru.vtosters.lite.net; import java.util.Map; import java.util.TreeMap; -public class NetRequest{ +public class NetRequest { private final String url; private final String requestMethod; private final Map params; - protected NetRequest(Builder b){ + protected NetRequest(Builder b) { url = b.url; requestMethod = b.req; params = b.params; } - public Map getRequestParams(){ + public Map getRequestParams() { return params; } - public String url(){ + public String url() { return url; } - public String getRequestMethod(){ + public String getRequestMethod() { return requestMethod; } - public static final class Builder{ + public static final class Builder { private String url; private String req = "GET"; private Map params; - public NetRequest build(){ + public NetRequest build() { return new NetRequest(this); } - public Builder url(String url){ + public Builder url(String url) { this.url = url; return this; } - public Builder get(){ + public Builder get() { req = "GET"; return this; } - public Builder post(){ + public Builder post() { req = "POST"; return this; } - public Builder params(Map params){ + public Builder params(Map params) { this.params = params; return this; } - public Builder param(String param, String value){ + public Builder param(String param, String value) { if (params == null) params = new TreeMap<>(); params.put(param, value); return this; diff --git a/app/src/main/java/ru/vtosters/lite/net/NetResponse.java b/app/src/main/java/ru/vtosters/lite/net/NetResponse.java index b15120ab1..4f9f68046 100755 --- a/app/src/main/java/ru/vtosters/lite/net/NetResponse.java +++ b/app/src/main/java/ru/vtosters/lite/net/NetResponse.java @@ -4,35 +4,35 @@ import java.io.ByteArrayInputStream; import java.io.InputStream; import java.nio.charset.StandardCharsets; -public final class NetResponse{ +public final class NetResponse { private final byte[] data; private int code; - protected NetResponse(byte[] data){ + protected NetResponse(byte[] data) { this.data = data; } - protected void setCode(int code){ + protected void setCode(int code) { this.code = code; } - public boolean isSuccessful(){ + public boolean isSuccessful() { return code() == 200; } - public int code(){ + public int code() { return code; } - public byte[] getData(){ + public byte[] getData() { return data; } - public InputStream getDataStream(){ + public InputStream getDataStream() { return new ByteArrayInputStream(data); } - public String getDataString(){ + public String getDataString() { return new String(data, StandardCharsets.UTF_8); } } diff --git a/app/src/main/java/ru/vtosters/lite/net/Request.java b/app/src/main/java/ru/vtosters/lite/net/Request.java index 84e3decea..b2aa1ec02 100644 --- a/app/src/main/java/ru/vtosters/lite/net/Request.java +++ b/app/src/main/java/ru/vtosters/lite/net/Request.java @@ -1,6 +1,6 @@ package ru.vtosters.lite.net; -import static ru.vtosters.lite.utils.Globals.getUserToken; +import static ru.vtosters.lite.utils.AccountManagerUtils.getUserToken; import android.os.AsyncTask; @@ -11,33 +11,33 @@ import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; -public class Request{ - public static void makeRequest(byte[] bArr, RequestCallback RequestCallback){ +public class Request { + public static void makeRequest(byte[] bArr, RequestCallback RequestCallback) { new MakeRequestTask(bArr, RequestCallback).execute(); } - public static void makeRequest(String str, RequestCallback RequestCallback){ + public static void makeRequest(String str, RequestCallback RequestCallback) { new MakeRequestTask(str.getBytes(), RequestCallback).execute(); } - public interface RequestCallback{ + public interface RequestCallback { void onResponse(String str); } - private static class MakeRequestTask extends AsyncTask{ + private static class MakeRequestTask extends AsyncTask { private final RequestCallback callback; private final byte[] url; private final boolean mIsPut; private final boolean mIsVTostersRequest; - public MakeRequestTask(byte[] bArr, RequestCallback RequestCallback){ + public MakeRequestTask(byte[] bArr, RequestCallback RequestCallback) { mIsVTostersRequest = false; mIsPut = false; callback = RequestCallback; url = bArr; } - public String doInBackground(Void... voidArr){ + public String doInBackground(Void... voidArr) { try { HttpURLConnection httpURLConnection = (HttpURLConnection) new URL(new String(url)).openConnection(); httpURLConnection.setRequestMethod(mIsPut ? "PUT" : "GET"); @@ -53,7 +53,7 @@ public class Request{ BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream())); StringBuffer stringBuffer = new StringBuffer(); - while(true) { + while (true) { String readLine = bufferedReader.readLine(); if (readLine != null) { stringBuffer.append(readLine); @@ -68,7 +68,7 @@ public class Request{ } } - public void onPostExecute(String str){ + public void onPostExecute(String str) { super.onPostExecute(str); callback.onResponse(str); } diff --git a/app/src/main/java/ru/vtosters/lite/f0x1d/LogWriterService.java b/app/src/main/java/ru/vtosters/lite/services/LogWriterService.java similarity index 76% rename from app/src/main/java/ru/vtosters/lite/f0x1d/LogWriterService.java rename to app/src/main/java/ru/vtosters/lite/services/LogWriterService.java index aacdc8d33..d076125f3 100644 --- a/app/src/main/java/ru/vtosters/lite/f0x1d/LogWriterService.java +++ b/app/src/main/java/ru/vtosters/lite/services/LogWriterService.java @@ -1,8 +1,8 @@ -package ru.vtosters.lite.f0x1d; +package ru.vtosters.lite.services; import static android.widget.Toast.LENGTH_SHORT; import static android.widget.Toast.makeText; -import static ru.vtosters.lite.utils.Globals.getContext; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; import android.app.NotificationManager; import android.app.Service; @@ -22,12 +22,12 @@ import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; -public class LogWriterService extends Service{ - public LogWriterService(){ +public class LogWriterService extends Service { + public LogWriterService() { } @Override - public int onStartCommand(Intent intent, int flags, int startId){ + public int onStartCommand(Intent intent, int flags, int startId) { super.onStartCommand(intent, flags, startId); Log.d("LogWriterService", "The service has been started"); @@ -44,18 +44,18 @@ public class LogWriterService extends Service{ writeLog(intent, file); } catch (Exception e) { e.printStackTrace(); - makeText(getContext(), "Не удалось сохранить лог-файл", LENGTH_SHORT).show(); + makeText(getGlobalContext(), "Не удалось сохранить лог-файл", LENGTH_SHORT).show(); } var notificationId = intent.getIntExtra("notificationId", 1); - var manager = (NotificationManager) getContext().getSystemService(Context.NOTIFICATION_SERVICE); + var manager = (NotificationManager) getGlobalContext().getSystemService(Context.NOTIFICATION_SERVICE); manager.cancel(notificationId); - makeText(getContext(), "Лог-файл был сохранен", LENGTH_SHORT).show(); + makeText(getGlobalContext(), "Лог-файл был сохранен", LENGTH_SHORT).show(); stopSelf(); return START_NOT_STICKY; } - private void writeLog(Intent intent, File file) throws IOException{ + private void writeLog(Intent intent, File file) throws IOException { FileOutputStream stream; stream = new FileOutputStream(file); stream.write(intent.getStringExtra("log").getBytes(StandardCharsets.UTF_8)); @@ -65,7 +65,7 @@ public class LogWriterService extends Service{ @Nullable @Override - public IBinder onBind(Intent intent){ + public IBinder onBind(Intent intent) { return null; } } diff --git a/app/src/main/java/ru/vtosters/lite/tgs/TGPref.java b/app/src/main/java/ru/vtosters/lite/tgs/TGPref.java index 0917ba833..d54c3f704 100644 --- a/app/src/main/java/ru/vtosters/lite/tgs/TGPref.java +++ b/app/src/main/java/ru/vtosters/lite/tgs/TGPref.java @@ -1,12 +1,12 @@ package ru.vtosters.lite.tgs; -import static ru.vtosters.lite.utils.Globals.getContext; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; import android.content.SharedPreferences; import android.preference.PreferenceManager; -public class TGPref{ - private static final SharedPreferences Prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); +public class TGPref { + private static final SharedPreferences Prefs = PreferenceManager.getDefaultSharedPreferences(getGlobalContext()); private static final String CNCT_METHOD = "VTGS:CM"; private static final String TG_BOTKEY = "VTGS:BKey"; @@ -16,55 +16,55 @@ public class TGPref{ private static final String TG_PROXYUSER = "VTGS:PUS"; private static final String TG_PROXYUSEPASS = "VTGS:PUsePassword"; - public static int getTGConnectMethod(){ + public static int getTGConnectMethod() { return Integer.parseInt(Prefs.getString(CNCT_METHOD, "0")); } - public static void setTGConnectMethod(int method){ + public static void setTGConnectMethod(int method) { Prefs.edit().putString(CNCT_METHOD, String.valueOf(method)).apply(); } - public static String getTGBotKey(){ + public static String getTGBotKey() { return Prefs.getString(TG_BOTKEY, null); } - public static void setTGBotKey(String key){ + public static void setTGBotKey(String key) { Prefs.edit().putString(TG_BOTKEY, key).apply(); } - public static String getTGProxyIP(){ + public static String getTGProxyIP() { return Prefs.getString(TG_PROXYIP, null); } - public static void setTGProxyIP(String ip){ + public static void setTGProxyIP(String ip) { Prefs.edit().putString(TG_PROXYIP, ip).apply(); } - public static int getTGProxyPort(){ + public static int getTGProxyPort() { return Prefs.getInt(TG_PROXYPORT, 0); } - public static void setTGProxyPort(int port){ + public static void setTGProxyPort(int port) { Prefs.edit().putInt(TG_PROXYPORT, port).apply(); } - public static String getTGProxyPass(){ + public static String getTGProxyPass() { return Prefs.getString(TG_PROXYPASS, ""); } - public static String getTGProxyUser(){ + public static String getTGProxyUser() { return Prefs.getString(TG_PROXYUSER, ""); } - public static void setTGProxyUserPass(String user, String pass){ + public static void setTGProxyUserPass(String user, String pass) { Prefs.edit().putString(TG_PROXYUSER, user).putString(TG_PROXYPASS, pass).apply(); } - public static boolean isTGProxyPassEnabled(){ + public static boolean isTGProxyPassEnabled() { return Prefs.getBoolean(TG_PROXYUSEPASS, false); } - public static void setTGProxyPassEnabled(boolean en){ + public static void setTGProxyPassEnabled(boolean en) { Prefs.edit().putBoolean(TG_PROXYUSEPASS, en).apply(); } } diff --git a/app/src/main/java/ru/vtosters/lite/tgs/TGRoot.java b/app/src/main/java/ru/vtosters/lite/tgs/TGRoot.java index 2278ba9b9..2442f88d0 100644 --- a/app/src/main/java/ru/vtosters/lite/tgs/TGRoot.java +++ b/app/src/main/java/ru/vtosters/lite/tgs/TGRoot.java @@ -1,7 +1,7 @@ package ru.vtosters.lite.tgs; -import static ru.vtosters.lite.utils.Globals.getContext; -import static ru.vtosters.lite.utils.Globals.getString; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; +import static ru.vtosters.lite.utils.AndroidUtils.getString; import android.graphics.Bitmap; import android.graphics.BitmapFactory; @@ -23,14 +23,14 @@ import org.json.JSONObject; import java.util.List; import java.util.Stack; -public class TGRoot{ +public class TGRoot { public static final int N = 76820000; public static final int X = 976820000; private final static Stack pendingStickers = new Stack<>(); private static final String TAG = "TGRoot"; - public static String getSummary(){ - switch(TGPref.getTGConnectMethod()) { + public static String getSummary() { + switch (TGPref.getTGConnectMethod()) { case 0: return getString("ctypedirect"); case 2: @@ -40,7 +40,7 @@ public class TGRoot{ } } - public static Attachment processSticker(StickerItem item){ + public static Attachment processSticker(StickerItem item) { int id = item.getId(); if (id < N) return null; @@ -48,7 +48,7 @@ public class TGRoot{ int stickerId = (id - N) % 120; TelegramStickersPack pack = null; - for (TelegramStickersPack p : TelegramStickersService.getInstance(getContext()).getActivePacksListReference()) { + for (TelegramStickersPack p : TelegramStickersService.getInstance(getGlobalContext()).getActivePacksListReference()) { if (p.index == index) { pack = p; break; @@ -67,9 +67,9 @@ public class TGRoot{ return att; } - public static void injectStickers(List list){ + public static void injectStickers(List list) { try { - List packs = TelegramStickersService.getInstance(getContext()).getActivePacksListReference(); + List packs = TelegramStickersService.getInstance(getGlobalContext()).getActivePacksListReference(); for (int i = packs.size() - 1; i >= 0; i--) list.add(0, toStickerPack(packs.get(i))); } catch (Exception e) { @@ -77,12 +77,12 @@ public class TGRoot{ } } - public static StickerStockItem getPackBySticker(int stickerId){ + public static StickerStockItem getPackBySticker(int stickerId) { if (stickerId < N) return null; int index = (stickerId - N) / 120; TelegramStickersPack p = null; - for (TelegramStickersPack p_ : TelegramStickersService.getInstance(getContext()) + for (TelegramStickersPack p_ : TelegramStickersService.getInstance(getGlobalContext()) .getActivePacksListReference()) { if (p_.index == index) { p = p_; @@ -99,7 +99,7 @@ public class TGRoot{ } } - private static StickerStockItem toStickerPack(TelegramStickersPack p) throws JSONException{ + private static StickerStockItem toStickerPack(TelegramStickersPack p) throws JSONException { JSONArray arr = new JSONArray(); for (int j = 0; j < p.stickersCount; j++) @@ -143,7 +143,7 @@ public class TGRoot{ .put("photo_592", photo), X + p.index); } - public static Attach modifyStickerIM(int i, StickerItem stickerItem, String str){ + public static Attach modifyStickerIM(int i, StickerItem stickerItem, String str) { if (stickerItem.getId() < 76820000) { return AppAttachToImAttachConverter.a.a(i, stickerItem, str); } diff --git a/app/src/main/java/ru/vtosters/lite/ui/PreferencesUtil.java b/app/src/main/java/ru/vtosters/lite/ui/PreferencesUtil.java index 6dc9196af..0832b7f7c 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/PreferencesUtil.java +++ b/app/src/main/java/ru/vtosters/lite/ui/PreferencesUtil.java @@ -1,16 +1,16 @@ package ru.vtosters.lite.ui; -import static ru.vtosters.lite.utils.Globals.convertDpToPixel; -import static ru.vtosters.lite.utils.Globals.getContext; -import static ru.vtosters.lite.utils.Themes.getAccentColor; -import static ru.vtosters.lite.utils.Themes.getSTextAttr; -import static ru.vtosters.lite.utils.Themes.getTextAttr; +import static ru.vtosters.lite.utils.AndroidUtils.dp2px; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; +import static ru.vtosters.lite.utils.ImageUtils.setTint; +import static ru.vtosters.lite.utils.ThemesUtils.getAccentColor; +import static ru.vtosters.lite.utils.ThemesUtils.getSTextAttr; +import static ru.vtosters.lite.utils.ThemesUtils.getTextAttr; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.res.ColorStateList; -import android.graphics.PorterDuff; import android.graphics.drawable.Drawable; import android.preference.PreferenceManager; import android.util.TypedValue; @@ -29,15 +29,10 @@ import com.vtosters.lite.ui.MaterialSwitchPreference; import java.util.Objects; -public class PreferencesUtil{ +public class PreferencesUtil { - public static Drawable setTint(Context ctx, Drawable d){ - d.setColorFilter(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(getContext()); + public static void addListPreference(MaterialPreferenceToolbarFragment fragment, String key, String def, CharSequence title, CharSequence[] entries, CharSequence[] entriesValue) { + ListPreference preference = new ListPreference(getGlobalContext()); preference.setEntries(entries); preference.setEntryValues(entriesValue); preference.setTitle(title); // setTitle @@ -47,8 +42,8 @@ public class PreferencesUtil{ fragment.getPreferenceScreen().addPreference(preference); // fragment.getPreferenceScreen().addPreference(preference) } - public static void addListPreferenceIcon(MaterialPreferenceToolbarFragment fragment, String key, String def, CharSequence title, String icon, CharSequence summary, CharSequence[] entries, CharSequence[] entriesValue, Preference.OnPreferenceChangeListener listener){ - ListPreference preference = new ListPreference(getContext()); + public static void addListPreferenceIcon(MaterialPreferenceToolbarFragment fragment, String key, String def, CharSequence title, String icon, CharSequence summary, CharSequence[] entries, CharSequence[] entriesValue, Preference.OnPreferenceChangeListener listener) { + ListPreference preference = new ListPreference(getGlobalContext()); preference.setEntries(entries); preference.setEntryValues(entriesValue); preference.setSummary(summary); // setSummary @@ -59,12 +54,12 @@ public class PreferencesUtil{ preference.setOnPreferenceChangeListener(listener); if (icon != null) - preference.setIcon(setTint(getContext(), getDrawable(getContext(), icon))); // preference.setIcon + preference.setIcon(setTint(getGlobalContext(), getDrawable(getGlobalContext(), icon))); // preference.setIcon fragment.getPreferenceScreen().addPreference(preference); // fragment.getPreferenceScreen().addPreference(preference) } - public static void addMaterialSwitchPreference(MaterialPreferenceToolbarFragment materialPreferenceToolbarFragment, String key, CharSequence title, CharSequence summary, boolean defValue){ - MaterialSwitchPreference materialSwitchPreference = new MaterialSwitchPreference(getContext()); + public static void addMaterialSwitchPreference(MaterialPreferenceToolbarFragment materialPreferenceToolbarFragment, String key, CharSequence title, CharSequence summary, boolean defValue) { + MaterialSwitchPreference materialSwitchPreference = new MaterialSwitchPreference(getGlobalContext()); materialSwitchPreference.setTitle(title); // setTitle materialSwitchPreference.setSummary(summary); // setSummary materialSwitchPreference.setKey(key); // setKey @@ -73,8 +68,8 @@ public class PreferencesUtil{ materialPreferenceToolbarFragment.getPreferenceScreen().addPreference(materialSwitchPreference); // materialPreferenceToolbarFragment.getPreferenceScreen().addPreference(preference) } - public static void addMaterialSwitchPreference(MaterialPreferenceToolbarFragment fragment, String key, CharSequence title, CharSequence summary, int icon, boolean defValue, Preference.OnPreferenceChangeListener listener){ - MaterialSwitchPreference materialSwitchPreference = new MaterialSwitchPreference(getContext()); + public static void addMaterialSwitchPreference(MaterialPreferenceToolbarFragment fragment, String key, CharSequence title, CharSequence summary, int icon, boolean defValue, Preference.OnPreferenceChangeListener listener) { + MaterialSwitchPreference materialSwitchPreference = new MaterialSwitchPreference(getGlobalContext()); materialSwitchPreference.setTitle(title); // setTitle materialSwitchPreference.setSummary(summary); // setSummary materialSwitchPreference.setKey(key); // setKey @@ -82,13 +77,13 @@ public class PreferencesUtil{ materialSwitchPreference.setOnPreferenceChangeListener(listener); // setOnPreferenceClickListener if (icon != 1) - materialSwitchPreference.setIcon(setTint(getContext(), Objects.requireNonNull(ContextCompat.getDrawable(getContext(), icon)))); // preference.setIcon + materialSwitchPreference.setIcon(setTint(getGlobalContext(), Objects.requireNonNull(ContextCompat.getDrawable(getGlobalContext(), icon)))); // preference.setIcon fragment.getPreferenceScreen().addPreference(materialSwitchPreference); // fragment.getPreferenceScreen().addPreference(preference) } - public static void addMaterialSwitchPreference(MaterialPreferenceToolbarFragment fragment, String key, CharSequence title, CharSequence summary, String icon, boolean defValue, Preference.OnPreferenceChangeListener listener){ - MaterialSwitchPreference materialSwitchPreference = new MaterialSwitchPreference(getContext()); + public static void addMaterialSwitchPreference(MaterialPreferenceToolbarFragment fragment, String key, CharSequence title, CharSequence summary, String icon, boolean defValue, Preference.OnPreferenceChangeListener listener) { + MaterialSwitchPreference materialSwitchPreference = new MaterialSwitchPreference(getGlobalContext()); materialSwitchPreference.setTitle(title); // setTitle materialSwitchPreference.setSummary(summary); // setSummary materialSwitchPreference.setKey(key); // setKey @@ -96,14 +91,14 @@ public class PreferencesUtil{ fragment.getPreferenceScreen().addPreference(materialSwitchPreference); // materialPreferenceToolbarFragment.getPreferenceScreen().addPreference(preference) if (icon != null) - materialSwitchPreference.setIcon(setTint(getContext(), getDrawable(getContext(), icon))); // preference.setIcon + materialSwitchPreference.setIcon(setTint(getGlobalContext(), getDrawable(getGlobalContext(), icon))); // preference.setIcon materialSwitchPreference.setOnPreferenceChangeListener(listener); // setOnPreferenceClickListener(listener) fragment.getPreferenceScreen().addPreference(materialSwitchPreference); // fragment.getPreferenceScreen().addPreference(preference) } - public static void addPreference(MaterialPreferenceToolbarFragment fragment, String key, CharSequence title, CharSequence summary){ - Preference preference = new Preference(getContext()); + public static void addPreference(MaterialPreferenceToolbarFragment fragment, String key, CharSequence title, CharSequence summary) { + Preference preference = new Preference(getGlobalContext()); preference.setSummary(summary); // setSummary preference.setTitle(title); // setTitle preference.setKey(key); // setKey @@ -111,33 +106,33 @@ public class PreferencesUtil{ fragment.getPreferenceScreen().addPreference(preference); // fragment.getPreferenceScreen().addPreference(preference) } - public static void addPreference(MaterialPreferenceToolbarFragment fragment, CharSequence title, CharSequence summary, @Nullable String icon, Preference.OnPreferenceClickListener listener){ - Preference preference = new Preference(getContext()); + public static void addPreference(MaterialPreferenceToolbarFragment fragment, CharSequence title, CharSequence summary, @Nullable String icon, Preference.OnPreferenceClickListener listener) { + Preference preference = new Preference(getGlobalContext()); preference.setSummary(summary); // setSummary preference.setTitle(title); // setTitle if (icon != null) - preference.setIcon(setTint(getContext(), getDrawable(getContext(), icon))); // preference.setIcon + preference.setIcon(setTint(getGlobalContext(), getDrawable(getGlobalContext(), icon))); // preference.setIcon preference.setOnPreferenceClickListener(listener); // preference.setOnPreferenceClickListener(listener) fragment.getPreferenceScreen().addPreference(preference); // fragment.getPreferenceScreen().addPreference(preference) } - public static void addPreference(MaterialPreferenceToolbarFragment fragment, String key, CharSequence title, CharSequence summary, @Nullable String icon, Preference.OnPreferenceClickListener listener){ - Preference preference = new Preference(getContext()); + public static void addPreference(MaterialPreferenceToolbarFragment fragment, String key, CharSequence title, CharSequence summary, @Nullable String icon, Preference.OnPreferenceClickListener listener) { + Preference preference = new Preference(getGlobalContext()); preference.setSummary(summary); // setSummary preference.setTitle(title); // setTitle preference.setKey(key); // setKey if (icon != null) - preference.setIcon(setTint(getContext(), getDrawable(getContext(), icon))); // preference.setIcon + preference.setIcon(setTint(getGlobalContext(), getDrawable(getGlobalContext(), icon))); // preference.setIcon preference.setOnPreferenceClickListener(listener); // preference.setOnPreferenceClickListener(listener) fragment.getPreferenceScreen().addPreference(preference); // fragment.getPreferenceScreen().addPreference(preference) } - public static void addPreferenceDrawable(MaterialPreferenceToolbarFragment fragment, String key, CharSequence title, CharSequence summary, @Nullable Drawable icon, Preference.OnPreferenceClickListener listener){ - Preference preference = new Preference(getContext()); + public static void addPreferenceDrawable(MaterialPreferenceToolbarFragment fragment, String key, CharSequence title, CharSequence summary, @Nullable Drawable icon, Preference.OnPreferenceClickListener listener) { + Preference preference = new Preference(getGlobalContext()); preference.setSummary(summary); // setSummary preference.setTitle(title); // setTitle preference.setKey(key); // setKey @@ -149,38 +144,38 @@ public class PreferencesUtil{ fragment.getPreferenceScreen().addPreference(preference); // fragment.getPreferenceScreen().addPreference(preference) } - public static void addPreferenceCategory(MaterialPreferenceToolbarFragment fragment, CharSequence title){ - PreferenceCategory preference = new PreferenceCategory(getContext(), null); + public static void addPreferenceCategory(MaterialPreferenceToolbarFragment fragment, CharSequence title) { + PreferenceCategory preference = new PreferenceCategory(getGlobalContext(), null); preference.setTitle(title); // setTitle fragment.getPreferenceScreen().addPreference(preference); // fragment.getPreferenceScreen().addPreference(preference) } - public static void addPreferenceCategory(MaterialPreferenceToolbarFragment fragment, CharSequence title, int collapsedSize){ - PreferenceCategory preference = new PreferenceCategory(getContext(), null); + public static void addPreferenceCategory(MaterialPreferenceToolbarFragment fragment, CharSequence title, int collapsedSize) { + PreferenceCategory preference = new PreferenceCategory(getGlobalContext(), null); preference.setTitle(title); // setTitle fragment.getPreferenceScreen().addPreference(preference); // fragment.getPreferenceScreen().addPreference(preference) } - public static void addEditTextPreference(MaterialPreferenceToolbarFragment fragment, String key, CharSequence title, EditTextPrefChangeListener editTextPrefChangeListener){ - Preference preference = new Preference(getContext()); + public static void addEditTextPreference(MaterialPreferenceToolbarFragment fragment, String key, CharSequence title, EditTextPrefChangeListener editTextPrefChangeListener) { + Preference preference = new Preference(getGlobalContext()); preference.setTitle(title); // setTitle preference.setKey(key); // setKey preference.setOnPreferenceClickListener(preference1 -> { - LinearLayout linearLayout = new LinearLayout(getContext()); + LinearLayout linearLayout = new LinearLayout(getGlobalContext()); - final EditText editText = new EditText(getContext()); - editText.setText(PreferenceManager.getDefaultSharedPreferences(getContext()).getString(key, "")); + final EditText editText = new EditText(getGlobalContext()); + editText.setText(PreferenceManager.getDefaultSharedPreferences(getGlobalContext()).getString(key, "")); editText.setHint(title); editText.setTextColor(getTextAttr()); - editText.setHintTextColor(getSTextColor(getContext())); + editText.setHintTextColor(getSTextColor(getGlobalContext())); editText.setBackgroundTintList(ColorStateList.valueOf(getAccentColor())); linearLayout.addView(editText); editText.getLayoutParams().width = ViewGroup.LayoutParams.MATCH_PARENT; ViewGroup.MarginLayoutParams margin = ((ViewGroup.MarginLayoutParams) editText.getLayoutParams()); - margin.setMargins(convertDpToPixel(20f), 0, convertDpToPixel(20f), 0); + margin.setMargins(dp2px(20f), 0, dp2px(20f), 0); editText.setLayoutParams(margin); AlertDialog.Builder builder = new AlertDialog.Builder(fragment.getContext()); @@ -191,7 +186,7 @@ public class PreferencesUtil{ if (!change) return; - PreferenceManager.getDefaultSharedPreferences(getContext()) + PreferenceManager.getDefaultSharedPreferences(getGlobalContext()) .edit() .putString(key, editText.getText().toString()) .apply(); @@ -206,24 +201,24 @@ public class PreferencesUtil{ fragment.getPreferenceScreen().addPreference(preference); // fragment.getPreferenceScreen().addPreference(preference) } - public static int getTextColor(Context ctx){ + public static int getTextColor(Context ctx) { TypedValue typedValue = new TypedValue(); ctx.getTheme().resolveAttribute(getTextAttr(), typedValue, true); return typedValue.data; } - public static int getSTextColor(Context ctx){ + public static int getSTextColor(Context ctx) { TypedValue typedValue = new TypedValue(); ctx.getTheme().resolveAttribute(getSTextAttr(), typedValue, true); return typedValue.data; } - private static Drawable getDrawable(Context ctx, String name){ + private static Drawable getDrawable(Context ctx, String name) { var id = ctx.getResources().getIdentifier(name, "drawable", ctx.getPackageName()); return ContextCompat.getDrawable(ctx, id); } - public interface EditTextPrefChangeListener{ + public interface EditTextPrefChangeListener { boolean onChanged(Preference preference, Object obj); } } diff --git a/app/src/main/java/ru/vtosters/lite/ui/activities/APKInstallActivity.java b/app/src/main/java/ru/vtosters/lite/ui/activities/APKInstallActivity.java index 1932f055d..f024a22d7 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/activities/APKInstallActivity.java +++ b/app/src/main/java/ru/vtosters/lite/ui/activities/APKInstallActivity.java @@ -11,14 +11,14 @@ import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; -public class APKInstallActivity extends AppCompatActivity{ +public class APKInstallActivity extends AppCompatActivity { public static final int REQUEST_INSTALL_PERMISSION = 1; public static final String EXTRA_APK_URI = "apk_uri"; private Uri mApkUri; - public static void installOta(Context context, Uri apkUri){ + public static void installOta(Context context, Uri apkUri) { Intent intent = new Intent(context, APKInstallActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); @@ -28,7 +28,7 @@ public class APKInstallActivity extends AppCompatActivity{ } @Override - public void onCreate(Bundle savedInstanceState){ + public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent intent = getIntent(); @@ -48,7 +48,7 @@ public class APKInstallActivity extends AppCompatActivity{ installApk(); } - private void installApk(){ + private void installApk() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { if (!getPackageManager().canRequestPackageInstalls()) { Intent permIntent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES, Uri.parse("package:" + getPackageName())); @@ -73,7 +73,7 @@ public class APKInstallActivity extends AppCompatActivity{ @Override - public void onActivityResult(int requestCode, int resultCode, Intent data){ + public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_INSTALL_PERMISSION) diff --git a/app/src/main/java/ru/vtosters/lite/ui/activities/VKAdminTokenActivity.java b/app/src/main/java/ru/vtosters/lite/ui/activities/VKAdminTokenActivity.java index 084f5416d..7334a296c 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/activities/VKAdminTokenActivity.java +++ b/app/src/main/java/ru/vtosters/lite/ui/activities/VKAdminTokenActivity.java @@ -16,7 +16,7 @@ import java.net.URLDecoder; import java.util.HashMap; import java.util.Map; -import ru.vtosters.lite.utils.LayoutHelper; +import ru.vtosters.lite.utils.LayoutUtils; public class VKAdminTokenActivity extends AppCompatActivity { @@ -27,11 +27,11 @@ public class VKAdminTokenActivity extends AppCompatActivity { super.onCreate(bundle); var container = new FrameLayout(this); - container.setLayoutParams(LayoutHelper.createFrame(-1, -1)); + container.setLayoutParams(LayoutUtils.createFrame(-1, -1)); setContentView(container); var webView = new WebView(this); - container.addView(webView, LayoutHelper.createFrame(-1, -1)); + container.addView(webView, LayoutUtils.createFrame(-1, -1)); webView.setWebViewClient(new WebViewClient() { @Override diff --git a/app/src/main/java/ru/vtosters/lite/ui/adapters/CategorizedAdapter.java b/app/src/main/java/ru/vtosters/lite/ui/adapters/CategorizedAdapter.java index dad0f4ad2..9220e785f 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/adapters/CategorizedAdapter.java +++ b/app/src/main/java/ru/vtosters/lite/ui/adapters/CategorizedAdapter.java @@ -1,12 +1,11 @@ package ru.vtosters.lite.ui.adapters; -import static ru.vtosters.lite.utils.Globals.convertDpToPixel; -import static ru.vtosters.lite.utils.Globals.getContext; -import static ru.vtosters.lite.utils.Globals.getString; +import static ru.vtosters.lite.utils.AndroidUtils.dp2px; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; +import static ru.vtosters.lite.utils.AndroidUtils.getString; import android.content.res.ColorStateList; import android.graphics.Typeface; -import android.util.Log; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; @@ -23,7 +22,7 @@ import java.util.Collections; import java.util.List; import ru.vtosters.lite.ui.components.IItemMovingListener; -import ru.vtosters.lite.utils.Themes; +import ru.vtosters.lite.utils.ThemesUtils; public class CategorizedAdapter extends RecyclerView.Adapter implements IItemMovingListener { @@ -84,64 +83,64 @@ public class CategorizedAdapter extends RecyclerView.Adapter { @@ -60,22 +60,22 @@ public class ImagineArrayAdapter extends ArrayAdapter { if (position != mSelectedIndex) { @@ -97,23 +97,23 @@ public class ImagineArrayAdapter extends ArrayAdapter { @@ -47,10 +47,10 @@ public class MessagesPreviewAdapter extends RecyclerView.Adapter{ - private static TelegramStickersService sService = TelegramStickersService.getInstance(getContext()); +public class StickerPackAdapter extends RecyclerView.Adapter { + private static TelegramStickersService sService = TelegramStickersService.getInstance(getGlobalContext()); @NonNull @Override - public StickerPackViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType){ + public StickerPackViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { int resID = getIdentifier("tgs_entry", "layout"); var view = LayoutInflater.from(parent.getContext()).inflate(resID, parent, false); var holder = new StickerPackViewHolder(view); @@ -45,22 +45,22 @@ public class StickerPackAdapter extends RecyclerView.Adapter { sService.setBotKey(TGPref.getTGBotKey()); - sService.requestPackDownload(pack.id, new File(getContext().getFilesDir(), new File("VT-Stickers", pack.id).getAbsolutePath())); + sService.requestPackDownload(pack.id, new File(getGlobalContext().getFilesDir(), new File("VT-Stickers", pack.id).getAbsolutePath())); }); mDeleteButton.setOnClickListener(listener -> { @@ -108,7 +108,7 @@ public class StickerPackAdapter extends RecyclerView.Adapter sService.setPackEnabled(pack, isChecked, false)); - mStickersCount.setText(pack.stickersCount + " " + Globals.getString("stickerscount")); + mStickersCount.setText(pack.stickersCount + " " + AndroidUtils.getString("stickerscount")); // Color костыль int color = getTextAttr(); diff --git a/app/src/main/java/ru/vtosters/lite/utils/SettBackup.java b/app/src/main/java/ru/vtosters/lite/ui/components/BackupManager.java similarity index 73% rename from app/src/main/java/ru/vtosters/lite/utils/SettBackup.java rename to app/src/main/java/ru/vtosters/lite/ui/components/BackupManager.java index b2df20461..31ee7cc24 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/SettBackup.java +++ b/app/src/main/java/ru/vtosters/lite/ui/components/BackupManager.java @@ -1,11 +1,10 @@ -package ru.vtosters.lite.utils; +package ru.vtosters.lite.ui.components; 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 ru.vtosters.lite.utils.Globals.getContext; -import static ru.vtosters.lite.utils.Globals.readFileFully; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; import android.content.Context; import android.content.SharedPreferences; @@ -24,23 +23,26 @@ import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; -public class SettBackup{ +import ru.vtosters.lite.utils.IOUtils; +import ru.vtosters.lite.utils.Preferences; + +public class BackupManager { static File sBackupDir = new File(getExternalStoragePublicDirectory(DIRECTORY_DOWNLOADS), "/VTLBackups/"); - private static SharedPreferences getPrefs(){ - return getContext().getSharedPreferences("com.vtosters.lite_preferences", Context.MODE_PRIVATE); + private static SharedPreferences getPrefs() { + return getGlobalContext().getSharedPreferences("com.vtosters.lite_preferences", Context.MODE_PRIVATE); } - public static void deletePrefs(){ + public static void deletePrefs() { getPrefs().edit().clear().commit(); - File file = new File(new File(getContext().getFilesDir().getParent(), "shared_prefs"), "com.vtosters.lite_preferences"); + File file = new File(new File(getGlobalContext().getFilesDir().getParent(), "shared_prefs"), "com.vtosters.lite_preferences"); file.delete(); } - public static void backupOnlines() throws IOException{ + public static void backupOnlines() throws IOException { if (getPrefContent("onlines.xml") == null) { - Toast.makeText(getContext(), "Нет данных для резервного копирования", LENGTH_SHORT).show(); + Toast.makeText(getGlobalContext(), "Нет данных для резервного копирования", LENGTH_SHORT).show(); return; } @@ -52,14 +54,14 @@ public class SettBackup{ FileWriter out = new FileWriter(file); out.write(getPrefContent("onlines.xml")); out.close(); - Toast.makeText(getContext(), "Сохранено в файл " + file.getAbsolutePath(), LENGTH_LONG).show(); + Toast.makeText(getGlobalContext(), "Сохранено в файл " + file.getAbsolutePath(), LENGTH_LONG).show(); } catch (IOException e) { e.printStackTrace(); - Toast.makeText(getContext(), "Не удалось сохранить файл", LENGTH_SHORT).show(); + Toast.makeText(getGlobalContext(), "Не удалось сохранить файл", LENGTH_SHORT).show(); } } - public static void backupSettings(){ + public static void backupSettings() { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd.HH-mm-ss", Locale.getDefault()); var file = new File(sBackupDir, "Backup_" + dateFormat.format(new Date()) + ".xml"); @@ -68,15 +70,17 @@ public class SettBackup{ FileWriter out = new FileWriter(file); out.write(getPrefContent("com.vtosters.lite_preferences.xml")); out.close(); - Toast.makeText(getContext(), "Сохранено в файл " + file.getAbsolutePath(), LENGTH_LONG).show(); + Toast.makeText(getGlobalContext(), "Сохранено в файл " + file.getAbsolutePath(), LENGTH_LONG).show(); } catch (IOException e) { e.printStackTrace(); - Toast.makeText(getContext(), "Не удалось сохранить файл", LENGTH_SHORT).show(); + Toast.makeText(getGlobalContext(), "Не удалось сохранить файл", LENGTH_SHORT).show(); } } public static String[] getBackupsNames() { - var arr = sBackupDir.list((dir, name) -> {return name.endsWith(".xml");}); + var arr = sBackupDir.list((dir, name) -> { + return name.endsWith(".xml"); + }); if (arr == null) return new String[0]; for (int i = 0; i < arr.length; i++) { arr[i] = arr[i].replace(".xml", ""); @@ -84,19 +88,19 @@ public class SettBackup{ return arr; } - public static String getPrefContent(String filename) throws IOException{ - File prefsDir = new File(getContext().getFilesDir().getParentFile(), "shared_prefs"); + public static String getPrefContent(String filename) throws IOException { + File prefsDir = new File(getGlobalContext().getFilesDir().getParentFile(), "shared_prefs"); if (!prefsDir.exists()) return null; File pref = new File(prefsDir, filename); - return new String(readFileFully(pref)); + return IOUtils.readAllLines(pref); } - public static void restoreBackup(String backupName) throws IOException{ + public static void restoreBackup(String backupName) throws IOException { SharedPreferences.Editor editor = getPrefs().edit(); File pref = new File(sBackupDir, backupName + ".xml"); - Scanner scanner = new Scanner(new String(readFileFully(pref))); - while(scanner.hasNextLine()) { + Scanner scanner = new Scanner(IOUtils.readAllLines(pref)); + while (scanner.hasNextLine()) { String line = scanner.nextLine().trim(); if (line.contains("") || line.contains("")) continue; @@ -107,7 +111,7 @@ public class SettBackup{ String name = matcher.group(1); Set set = new HashSet<>(); String _line; - while(!(_line = scanner.nextLine().trim()).equals("")) { + while (!(_line = scanner.nextLine().trim()).equals("")) { set.add(_line.substring(_line.indexOf(">") + 1, _line.lastIndexOf("<"))); } editor.putStringSet(name, set) @@ -156,8 +160,8 @@ public class SettBackup{ } } if (!Preferences.dev()) return; - File prefsDir = new File(getContext().getFilesDir().getParentFile(), "shared_prefs"); + File prefsDir = new File(getGlobalContext().getFilesDir().getParentFile(), "shared_prefs"); File file = new File(prefsDir, "com.vtosters.lite_preferences.xml"); - Log.d("TAG", new String(readFileFully(file))); + Log.d("TAG", IOUtils.readAllLines(file)); } } \ No newline at end of file diff --git a/app/src/main/java/ru/vtosters/lite/f0x1d/Crashreporter.java b/app/src/main/java/ru/vtosters/lite/ui/components/CrashReporter.java similarity index 67% rename from app/src/main/java/ru/vtosters/lite/f0x1d/Crashreporter.java rename to app/src/main/java/ru/vtosters/lite/ui/components/CrashReporter.java index c85bd7faa..34a774d7c 100644 --- a/app/src/main/java/ru/vtosters/lite/f0x1d/Crashreporter.java +++ b/app/src/main/java/ru/vtosters/lite/ui/components/CrashReporter.java @@ -1,9 +1,9 @@ -package ru.vtosters.lite.f0x1d; +package ru.vtosters.lite.ui.components; import static ru.vtosters.lite.utils.About.getBuildNumber; -import static ru.vtosters.lite.utils.Globals.getContext; -import static ru.vtosters.lite.utils.Globals.getIdentifier; -import static ru.vtosters.lite.utils.Globals.getString; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; +import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier; +import static ru.vtosters.lite.utils.AndroidUtils.getString; import android.app.Activity; import android.app.Notification; @@ -20,28 +20,29 @@ import java.io.PrintWriter; import java.io.StringWriter; import ru.vtosters.lite.deviceinfo.DeviceInfoCollector; +import ru.vtosters.lite.services.LogWriterService; -public class Crashreporter{ +public class CrashReporter { protected static String logString; - public static String getStackTrace(Throwable th){ + public static String getStackTrace(Throwable th) { StringWriter stringWriter = new StringWriter(); th.printStackTrace(new PrintWriter(stringWriter)); return stringWriter.toString(); } - public static void init(Activity activity){ + public static void init(Activity activity) { final var defaultUncaughtExceptionHandler = Thread.getDefaultUncaughtExceptionHandler(); - Thread.setDefaultUncaughtExceptionHandler((thread, th) -> Crashreporter.start(defaultUncaughtExceptionHandler, thread, th, activity)); + Thread.setDefaultUncaughtExceptionHandler((thread, th) -> CrashReporter.start(defaultUncaughtExceptionHandler, thread, th, activity)); } - static void start(Thread.UncaughtExceptionHandler uncaughtExceptionHandler, Thread thread, Throwable th, Activity activity){ - logString = getStackTrace(th) + "\n\n" + new DeviceInfoCollector().collect(getContext()).toDeviceName() + ", commit: " + getBuildNumber(); + static void start(Thread.UncaughtExceptionHandler uncaughtExceptionHandler, Thread thread, Throwable th, Activity activity) { + logString = getStackTrace(th) + "\n\n" + new DeviceInfoCollector().collect(getGlobalContext()).toDeviceName() + ", commit: " + getBuildNumber(); if (Build.VERSION.SDK_INT >= 26) { var notificationChannel = new NotificationChannel("crashes", "crash", NotificationManager.IMPORTANCE_DEFAULT); notificationChannel.enableVibration(true); notificationChannel.enableLights(true); - ((NotificationManager) getContext().getSystemService(Context.NOTIFICATION_SERVICE)).createNotificationChannel(notificationChannel); + ((NotificationManager) getGlobalContext().getSystemService(Context.NOTIFICATION_SERVICE)).createNotificationChannel(notificationChannel); } var foxbinIntent = new Intent("com.f0x1d.dogbin.ACTION_UPLOAD_TO_FOXBIN"); @@ -53,19 +54,19 @@ public class Crashreporter{ foxbinIntent.addFlags(Intent.FLAG_ACTIVITY_NO_USER_ACTION); } - var saveLogIntent = new Intent(getContext(), LogWriterService.class); + var saveLogIntent = new Intent(getGlobalContext(), LogWriterService.class); saveLogIntent.putExtra("log", logString); saveLogIntent.putExtra("notificationId", 1); - var psaveLogIntent = PendingIntent.getService(getContext(), 0, saveLogIntent, PendingIntent.FLAG_CANCEL_CURRENT); + var psaveLogIntent = PendingIntent.getService(getGlobalContext(), 0, saveLogIntent, PendingIntent.FLAG_CANCEL_CURRENT); - var builder = new Notification.Builder(getContext()); + var builder = new Notification.Builder(getGlobalContext()); builder.setSmallIcon(getIdentifier("ic_bug_24", "drawable")); builder.setContentTitle(getString("vtl_crashed")); builder.setContentText(logString); builder.setStyle(new Notification.BigTextStyle().bigText(logString)); builder.setAutoCancel(true); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) { - builder.addAction(new Notification.Action(0, getString("vtl_crash_upload"), PendingIntent.getActivity(getContext(), (int) (Math.random() * 100.0d), foxbinIntent, PendingIntent.FLAG_CANCEL_CURRENT))); + builder.addAction(new Notification.Action(0, getString("vtl_crash_upload"), PendingIntent.getActivity(getGlobalContext(), (int) (Math.random() * 100.0d), foxbinIntent, PendingIntent.FLAG_CANCEL_CURRENT))); builder.addAction(new Notification.Action(0, getString("vtl_crash_save"), psaveLogIntent)); } else { builder.setContentIntent(PendingIntent.getActivity(activity, 0, foxbinIntent, PendingIntent.FLAG_ONE_SHOT)); @@ -76,13 +77,13 @@ public class Crashreporter{ } - ((NotificationManager) getContext().getSystemService(Context.NOTIFICATION_SERVICE)).notify(-2147483548, builder.build()); + ((NotificationManager) getGlobalContext().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 = getContext().getPackageManager(); + private static boolean isFoxbinInstalled() { + var pm = getGlobalContext().getPackageManager(); try { pm.getPackageInfo("com.f0x1d.dogbin", 0); return true; diff --git a/app/src/main/java/ru/vtosters/lite/ui/components/DockBarEditorManager.java b/app/src/main/java/ru/vtosters/lite/ui/components/DockBarEditorManager.java index 5802dec57..4711395fc 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/components/DockBarEditorManager.java +++ b/app/src/main/java/ru/vtosters/lite/ui/components/DockBarEditorManager.java @@ -1,7 +1,7 @@ package ru.vtosters.lite.ui.components; -import static ru.vtosters.lite.utils.Globals.getContext; -import static ru.vtosters.lite.utils.Globals.getPreferences; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; +import static ru.vtosters.lite.utils.AndroidUtils.getPreferences; import static ru.vtosters.lite.utils.Preferences.getBoolValue; import static ru.vtosters.lite.utils.Preferences.milkshake; import static ru.vtosters.lite.utils.Preferences.superapp; @@ -27,7 +27,6 @@ import com.vk.superapp.SuperAppFragment; import com.vtosters.lite.R; import com.vtosters.lite.fragments.ProfileFragment; import com.vtosters.lite.fragments.friends.FriendsFragment; -import com.vtosters.lite.fragments.gifts.BirthdaysFragment; import com.vtosters.lite.fragments.lives.LivesTabsFragment; import com.vtosters.lite.fragments.money.MoneyTransfersFragment; import com.vtosters.lite.fragments.p2.DocumentsViewFragment; @@ -45,7 +44,7 @@ import java.util.List; import java.util.stream.Collectors; import ru.vtosters.lite.ui.items.DockBarTab; -import ru.vtosters.lite.utils.Globals; +import ru.vtosters.lite.utils.AndroidUtils; public class DockBarEditorManager { @@ -90,12 +89,12 @@ public class DockBarEditorManager { } private void checkOldConfig() { - File config = new File(getContext().getFilesDir(), "dockbar.json"); + File config = new File(getGlobalContext().getFilesDir(), "dockbar.json"); if (config.exists()) config.deleteOnExit(); } private void parseSelectedTabs(String[] selectedTabsTags) { - List allTags = new ArrayList<>(Arrays.asList( "tab_news", "tab_superapps", "tab_messages", "tab_feedback", "tab_profile", + List allTags = new ArrayList<>(Arrays.asList("tab_news", "tab_superapps", "tab_messages", "tab_feedback", "tab_profile", "tab_friends", "tab_groups", "tab_photos", "tab_audios", "tab_videos", "tab_lives", "tab_games", "tab_liked", "tab_fave", "tab_documents", "tab_payments", "tab_vk_apps", "tab_settings", "tab_menu")); for (String tag : selectedTabsTags) { @@ -106,14 +105,14 @@ public class DockBarEditorManager { } public void save() { - Globals.getPreferences().edit().putString("dockbar_tabs", mSelectedTabs.stream() - .map(tab -> tab.tag) - .collect(Collectors.joining(","))) + AndroidUtils.getPreferences().edit().putString("dockbar_tabs", mSelectedTabs.stream() + .map(tab -> tab.tag) + .collect(Collectors.joining(","))) .commit(); } public void reset() { - Globals.getPreferences() + AndroidUtils.getPreferences() .edit() .putString("dockbar_tabs", "tab_news,tab_superapps,tab_messages,tab_friends,tab_profile") .commit(); diff --git a/app/src/main/java/ru/vtosters/lite/utils/FragAnimationKit.java b/app/src/main/java/ru/vtosters/lite/ui/components/FragAnimationKit.java similarity index 92% rename from app/src/main/java/ru/vtosters/lite/utils/FragAnimationKit.java rename to app/src/main/java/ru/vtosters/lite/ui/components/FragAnimationKit.java index 50f9a768e..ea9ed004d 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/FragAnimationKit.java +++ b/app/src/main/java/ru/vtosters/lite/ui/components/FragAnimationKit.java @@ -1,13 +1,13 @@ -package ru.vtosters.lite.utils; +package ru.vtosters.lite.ui.components; -import static ru.vtosters.lite.utils.Globals.getIdentifier; -import static ru.vtosters.lite.utils.Globals.getPrefsValue; +import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier; +import static ru.vtosters.lite.utils.AndroidUtils.getPrefsValue; import android.content.res.Resources; import androidx.fragment.app.FragmentTransaction; -public class FragAnimationKit{ +public class FragAnimationKit { // Q private static final int actOpenEnter = getIdentifier("q_enter", "anim"); @@ -31,9 +31,9 @@ public class FragAnimationKit{ private static final int SSTactCloseEnter = resources.getIdentifier("task_close_enter", "anim", "android"); private static final int SSTactCloseExit = resources.getIdentifier("task_close_exit", "anim", "android"); - public static void setAnimations(FragmentTransaction transaction){ + public static void setAnimations(FragmentTransaction transaction) { if (transaction != null && !getPrefsValue("anim_rtrn_type").equals("noanim")) { - switch(getPrefsValue("anim_rtrn_type")) { + switch (getPrefsValue("anim_rtrn_type")) { case "q": transaction.setCustomAnimations( actOpenEnter, diff --git a/app/src/main/java/ru/vtosters/lite/utils/IconManager.java b/app/src/main/java/ru/vtosters/lite/ui/components/IconManager.java similarity index 92% rename from app/src/main/java/ru/vtosters/lite/utils/IconManager.java rename to app/src/main/java/ru/vtosters/lite/ui/components/IconManager.java index 3127620c9..694fdf8c1 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/IconManager.java +++ b/app/src/main/java/ru/vtosters/lite/ui/components/IconManager.java @@ -1,15 +1,14 @@ -package ru.vtosters.lite.utils; +package ru.vtosters.lite.ui.components; -import static ru.vtosters.lite.utils.Globals.edit; -import static ru.vtosters.lite.utils.Globals.getContext; -import static ru.vtosters.lite.utils.Globals.getPackageName; -import static ru.vtosters.lite.utils.Globals.getPreferences; +import static ru.vtosters.lite.utils.AndroidUtils.edit; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; +import static ru.vtosters.lite.utils.AndroidUtils.getPackageName; +import static ru.vtosters.lite.utils.AndroidUtils.getPreferences; import static ru.vtosters.lite.utils.Preferences.hasVerification; import static ru.vtosters.lite.utils.Preferences.isValidSignature; import android.content.ComponentName; import android.content.pm.PackageManager; -import android.os.Build; import android.util.Log; import java.util.Arrays; @@ -122,7 +121,7 @@ public class IconManager { // Component switcher for changing app icon public static void switchIcon(String componentName, Boolean enabled) { - getContext().getPackageManager().setComponentEnabledSetting( + getGlobalContext().getPackageManager().setComponentEnabledSetting( new ComponentName(getPackageName(), getPackageName() + "." + componentName), enabled ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED : PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); diff --git a/app/src/main/java/ru/vtosters/lite/ui/components/ItemMovingCallback.java b/app/src/main/java/ru/vtosters/lite/ui/components/ItemMovingCallback.java index a3cc19c7d..a41530b5a 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/components/ItemMovingCallback.java +++ b/app/src/main/java/ru/vtosters/lite/ui/components/ItemMovingCallback.java @@ -10,12 +10,12 @@ public class ItemMovingCallback extends ItemTouchHelper.Callback { private final CategorizedAdapter mAdapter; - public ItemMovingCallback(CategorizedAdapter adapter){ + public ItemMovingCallback(CategorizedAdapter adapter) { this.mAdapter = adapter; } @Override - public boolean isLongPressDragEnabled(){ + public boolean isLongPressDragEnabled() { return true; } @@ -25,7 +25,7 @@ public class ItemMovingCallback extends ItemTouchHelper.Callback { } @Override - public int getMovementFlags(@NonNull RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder){ + public int getMovementFlags(@NonNull RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) { int dragFlags = mAdapter.getItemViewType(viewHolder.getAdapterPosition()) == CategorizedAdapter.MOVING_ITEM && !mAdapter.isUnmovedItem(viewHolder.getAdapterPosition()) ? ItemTouchHelper.UP | ItemTouchHelper.DOWN @@ -42,7 +42,7 @@ public class ItemMovingCallback extends ItemTouchHelper.Callback { } @Override - public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target){ + public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) { return mAdapter.onItemMove(viewHolder.getAdapterPosition(), target.getAdapterPosition()); } } diff --git a/app/src/main/java/ru/vtosters/lite/ui/components/SuperAppEditorManager.java b/app/src/main/java/ru/vtosters/lite/ui/components/SuperAppEditorManager.java index d747b70f2..740484ce4 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/components/SuperAppEditorManager.java +++ b/app/src/main/java/ru/vtosters/lite/ui/components/SuperAppEditorManager.java @@ -1,6 +1,6 @@ package ru.vtosters.lite.ui.components; -import static ru.vtosters.lite.utils.Globals.getPreferences; +import static ru.vtosters.lite.utils.AndroidUtils.getPreferences; import java.util.ArrayList; import java.util.Arrays; @@ -8,7 +8,7 @@ import java.util.List; import java.util.stream.Collectors; import ru.vtosters.lite.ui.items.SuperAppItem; -import ru.vtosters.lite.utils.Globals; +import ru.vtosters.lite.utils.AndroidUtils; public class SuperAppEditorManager { @@ -34,8 +34,8 @@ public class SuperAppEditorManager { } private void parseSelectedItems(String[] selectedTabsTags) { - List allTags = new ArrayList<>(Arrays.asList( "menu", "miniapps", "vkpay_slim", "greeting", "promo", "holiday", - "weather", "sport", "games", "informer", "food", "event", "music", "vk_run" )); + List allTags = new ArrayList<>(Arrays.asList("menu", "miniapps", "vkpay_slim", "greeting", "promo", "holiday", + "weather", "sport", "games", "informer", "food", "event", "music", "vk_run")); for (String tag : selectedTabsTags) { mSelectedItems.add(getItemByTag(tag)); allTags.remove(tag); @@ -46,15 +46,15 @@ public class SuperAppEditorManager { public void save() { if (mSelectedItems.size() > 0) getPreferences().edit().putString("superapp_items", mSelectedItems.stream() - .map(item -> item.type) - .collect(Collectors.joining(","))) + .map(item -> item.type) + .collect(Collectors.joining(","))) .commit(); else reset(); } public void reset() { - Globals.getPreferences() + AndroidUtils.getPreferences() .edit() .putString("superapp_items", "menu,miniapps,vkpay_slim,greeting,promo,holiday,informer,event,weather,sport,games,food,music,vk_run") .commit(); diff --git a/app/src/main/java/ru/vtosters/lite/ui/dialogs/DisableBattery.java b/app/src/main/java/ru/vtosters/lite/ui/dialogs/DisableBattery.java index 4b213d095..13d6b23f3 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/dialogs/DisableBattery.java +++ b/app/src/main/java/ru/vtosters/lite/ui/dialogs/DisableBattery.java @@ -1,14 +1,12 @@ package ru.vtosters.lite.ui.dialogs; -import static ru.vtosters.lite.utils.Globals.edit; -import static ru.vtosters.lite.utils.Globals.getContext; -import static ru.vtosters.lite.utils.Globals.getString; +import static ru.vtosters.lite.utils.AndroidUtils.edit; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; +import static ru.vtosters.lite.utils.AndroidUtils.getString; import static ru.vtosters.lite.utils.Preferences.getBoolValue; import android.app.Activity; -import android.app.AlertDialog; import android.content.Context; -import android.content.DialogInterface; import android.content.Intent; import android.net.Uri; import android.os.Build; @@ -16,12 +14,12 @@ import android.os.PowerManager; import com.vk.core.dialogs.alert.VkAlertDialog; -import ru.vtosters.lite.utils.OEMDetector; +import ru.vtosters.lite.deviceinfo.OEMDetector; -public class DisableBattery{ - public static void alert(Activity activity){ +public class DisableBattery { + public static void alert(Activity activity) { if (OEMDetector.isOEM() && Build.VERSION.SDK_INT >= 23 && getBoolValue("showDoze", true)) { - final Context context = getContext(); + final Context context = getGlobalContext(); if (!((PowerManager) context.getSystemService(Context.POWER_SERVICE)).isIgnoringBatteryOptimizations(context.getPackageName())) { VkAlertDialog.Builder builder = new VkAlertDialog.Builder(activity); builder.setTitle(getString("batteryissuetitle")); diff --git a/app/src/main/java/ru/vtosters/lite/ui/dialogs/InstallGMS.java b/app/src/main/java/ru/vtosters/lite/ui/dialogs/InstallGMS.java index af2233c9c..68ac11147 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/dialogs/InstallGMS.java +++ b/app/src/main/java/ru/vtosters/lite/ui/dialogs/InstallGMS.java @@ -1,15 +1,13 @@ package ru.vtosters.lite.ui.dialogs; -import static ru.vtosters.lite.utils.Globals.edit; -import static ru.vtosters.lite.utils.Globals.getContext; -import static ru.vtosters.lite.utils.Globals.getString; -import static ru.vtosters.lite.utils.Globals.isGmsInstalled; +import static ru.vtosters.lite.utils.AndroidUtils.edit; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; +import static ru.vtosters.lite.utils.AndroidUtils.getString; +import static ru.vtosters.lite.utils.GmsUtils.isGmsInstalled; import static ru.vtosters.lite.utils.Preferences.getBoolValue; import android.app.Activity; -import android.app.AlertDialog; import android.content.Context; -import android.content.DialogInterface; import android.content.Intent; import com.vk.core.dialogs.alert.VkAlertDialog; @@ -17,8 +15,8 @@ import com.vk.navigation.Navigator; import ru.vtosters.lite.ui.fragments.InstallGMSFragment; -public class InstallGMS{ - public static void alert(final Activity activity){ +public class InstallGMS { + public static void alert(final Activity activity) { if (!isGmsInstalled()) { VkAlertDialog.Builder builder = new VkAlertDialog.Builder(activity); builder.setTitle(getString("debug_warning")); @@ -27,7 +25,7 @@ public class InstallGMS{ builder.setPositiveButton(getString("gmsissuebtn1"), (dialogInterface, i) -> edit().putBoolean("showAlertGms", false).apply()); builder.setNeutralButton(getString("gmsissuebtn2"), (dialogInterface, i) -> { edit().putBoolean("showAlertGms", false).apply(); - Context context = getContext(); + Context context = getGlobalContext(); Intent a2 = new Navigator(InstallGMSFragment.class).b(context); a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(a2); diff --git a/app/src/main/java/ru/vtosters/lite/ui/dialogs/OTADialog.java b/app/src/main/java/ru/vtosters/lite/ui/dialogs/OTADialog.java index 3683a930f..92ee969ea 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/dialogs/OTADialog.java +++ b/app/src/main/java/ru/vtosters/lite/ui/dialogs/OTADialog.java @@ -1,32 +1,32 @@ package ru.vtosters.lite.ui.dialogs; -import static ru.vtosters.lite.utils.Globals.getString; +import static ru.vtosters.lite.utils.AndroidUtils.getString; import android.app.Activity; import ru.vtosters.lite.downloaders.OTADownloader; import ru.vtosters.lite.ui.vkui.ModalBottomSheetWrapper; -import ru.vtosters.lite.utils.OTAHelper; +import ru.vtosters.lite.utils.OTAUtils; -public class OTADialog implements OTAHelper.OTAListener{ +public class OTADialog implements OTAUtils.OTAListener { private final Activity mActivity; - private final OTAHelper mHelper; + private final OTAUtils mHelper; - public OTADialog(Activity activity){ + public OTADialog(Activity activity) { mActivity = activity; - mHelper = new OTAHelper(this); + mHelper = new OTAUtils(this); mHelper.loadData(); } - public static OTADialog checkUpdates(Activity activity){ + public static OTADialog checkUpdates(Activity activity) { return new OTADialog(activity); } @Override - public void onUpdateApplied(){ + public void onUpdateApplied() { mActivity.runOnUiThread(() -> { // Toast.makeText(mActivity, "Обновления найдены", Toast.LENGTH_SHORT).show(); new ModalBottomSheetWrapper(mActivity) @@ -40,7 +40,7 @@ public class OTADialog implements OTAHelper.OTAListener{ } @Override - public void onUpdateCanceled(){ + public void onUpdateCanceled() { mActivity.runOnUiThread(() -> { // Toast.makeText(mActivity, "Обновлений не найдено", Toast.LENGTH_SHORT).show(); }); diff --git a/app/src/main/java/ru/vtosters/lite/utils/ServerDialog.java b/app/src/main/java/ru/vtosters/lite/ui/dialogs/ServerDialog.java similarity index 88% rename from app/src/main/java/ru/vtosters/lite/utils/ServerDialog.java rename to app/src/main/java/ru/vtosters/lite/ui/dialogs/ServerDialog.java index 6408c07b7..f278606ee 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/ServerDialog.java +++ b/app/src/main/java/ru/vtosters/lite/ui/dialogs/ServerDialog.java @@ -1,12 +1,12 @@ -package ru.vtosters.lite.utils; +package ru.vtosters.lite.ui.dialogs; + import static android.content.ContentValues.TAG; -import static ru.vtosters.lite.utils.Globals.edit; -import static ru.vtosters.lite.utils.Globals.isNetworkIsSlow; +import static ru.vtosters.lite.utils.AndroidUtils.edit; +import static ru.vtosters.lite.utils.NetworkUtils.isNetworkIsSlow; import static ru.vtosters.lite.utils.Preferences.getBoolValue; import static ru.vtosters.lite.utils.Preferences.hasVerification; import android.app.Activity; -import android.app.AlertDialog; import android.content.Intent; import android.net.Uri; import android.util.Log; @@ -24,7 +24,7 @@ import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; -public class ServerDialog{ +public class ServerDialog { private static final OkHttpClient client = new OkHttpClient(); public static Boolean showAlert; public static Activity activity; @@ -37,7 +37,7 @@ public class ServerDialog{ private static Boolean cancelable; private static Boolean isNotForVerified; - public static void sendRequest(){ + public static void sendRequest() { if (getBoolValue("dialogrecomm", false)) return; if (isNetworkIsSlow()) return; @@ -46,15 +46,15 @@ public class ServerDialog{ .b("https://vtosters.app/dialog.json") .a(); - client.a(request).a(new Callback(){ + client.a(request).a(new Callback() { @Override - public void a(Call call, IOException e){ + public void a(Call call, IOException e) { Log.d(TAG, "" + e); showAlert = false; } @Override - public void a(Call call, Response response){ + public void a(Call call, Response response) { try { getResponse(response.a().g()); } catch (Exception e) { @@ -64,7 +64,7 @@ public class ServerDialog{ }); } - private static Boolean showForNotVerified(){ + private static Boolean showForNotVerified() { int random = new Random().nextInt(6); if (isNotForVerified) { @@ -74,7 +74,7 @@ public class ServerDialog{ return true; } - private static void getResponse(String body) throws Exception{ + private static void getResponse(String body) throws Exception { JSONObject jSONObject = new JSONObject(body); Log.d("VTLOG", "getResponse: " + jSONObject); diff --git a/app/src/main/java/ru/vtosters/lite/ui/dialogs/Start.java b/app/src/main/java/ru/vtosters/lite/ui/dialogs/Start.java index 8207de220..9d338aa1f 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/dialogs/Start.java +++ b/app/src/main/java/ru/vtosters/lite/ui/dialogs/Start.java @@ -1,24 +1,22 @@ package ru.vtosters.lite.ui.dialogs; -import static ru.vtosters.lite.utils.Globals.edit; -import static ru.vtosters.lite.utils.Globals.getString; +import static ru.vtosters.lite.utils.AndroidUtils.edit; +import static ru.vtosters.lite.utils.AndroidUtils.getString; import static ru.vtosters.lite.utils.Preferences.getBoolValue; import android.app.Activity; -import android.app.AlertDialog; -import android.content.DialogInterface; import android.content.Intent; import android.net.Uri; import android.os.Build; import com.vk.core.dialogs.alert.VkAlertDialog; -import ru.vtosters.lite.utils.OEMDetector; +import ru.vtosters.lite.deviceinfo.OEMDetector; -public class Start{ - public static void alert(final Activity activity){ +public class Start { + public static void alert(final Activity activity) { if (Build.VERSION.SDK_INT >= 23) { - activity.requestPermissions(new String[] {"android.permission.WRITE_EXTERNAL_STORAGE"}, 228); + activity.requestPermissions(new String[]{"android.permission.WRITE_EXTERNAL_STORAGE"}, 228); } VkAlertDialog.Builder builder = new VkAlertDialog.Builder(activity); builder.setTitle(getString("debug_warning")); @@ -36,7 +34,7 @@ public class Start{ } } - private static String getWelcome(){ + private static String getWelcome() { String Default = getString("startsumm1"); if (OEMDetector.isOEM()) { diff --git a/app/src/main/java/ru/vtosters/lite/ui/dialogs/VKIDProtection.java b/app/src/main/java/ru/vtosters/lite/ui/dialogs/VKIDProtection.java index 46313ac65..a3f786986 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/dialogs/VKIDProtection.java +++ b/app/src/main/java/ru/vtosters/lite/ui/dialogs/VKIDProtection.java @@ -1,20 +1,19 @@ package ru.vtosters.lite.ui.dialogs; -import static ru.vtosters.lite.utils.Globals.edit; -import static ru.vtosters.lite.utils.Globals.getString; +import static ru.vtosters.lite.utils.AndroidUtils.edit; +import static ru.vtosters.lite.utils.AndroidUtils.getString; import static ru.vtosters.lite.utils.Preferences.getBoolValue; import android.app.Activity; -import android.app.AlertDialog; import android.content.Intent; import com.vk.core.dialogs.alert.VkAlertDialog; import com.vk.navigation.Navigator; -import ru.vtosters.lite.utils.VKUIwrapper; +import ru.vtosters.lite.ui.fragments.VKUIwrapper; -public class VKIDProtection{ - public static void alert(final Activity activity){ +public class VKIDProtection { + public static void alert(final Activity activity) { VkAlertDialog.Builder builder = new VkAlertDialog.Builder(activity); builder.setTitle(getString("debug_warning")); builder.setMessage(getString("vkidsumm")); diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/ActivityFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/ActivityFragment.java index 71b937e91..051f827f4 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/ActivityFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/ActivityFragment.java @@ -1,14 +1,14 @@ package ru.vtosters.lite.ui.fragments; -import static ru.vtosters.lite.utils.Globals.getIdentifier; +import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier; import android.os.Bundle; import com.vtosters.lite.general.fragments.MaterialPreferenceToolbarFragment; -public class ActivityFragment extends MaterialPreferenceToolbarFragment{ +public class ActivityFragment extends MaterialPreferenceToolbarFragment { @Override - public void onCreate(Bundle bundle){ + public void onCreate(Bundle bundle) { super.onCreate(bundle); addPreferencesFromResource(getIdentifier("preferences_activity", "xml")); } diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/BaseToolbarFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/BaseToolbarFragment.java index 974c3052c..308cc39c2 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/BaseToolbarFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/BaseToolbarFragment.java @@ -17,7 +17,7 @@ import com.vtosters.lite.R; import com.vtosters.lite.ViewUtils; import com.vtosters.lite.m0.ToolbarHelper; -import ru.vtosters.lite.utils.LayoutHelper; +import ru.vtosters.lite.utils.LayoutUtils; public abstract class BaseToolbarFragment extends FragmentImpl { @@ -58,7 +58,7 @@ public abstract class BaseToolbarFragment extends FragmentImpl { mContentLayout = mRootView.findViewById(R.id.appkit_content); initToolbar(); - mContentLayout.addView(onCreateContent(inflater, bundle), LayoutHelper.createFrame(-1, -1)); + mContentLayout.addView(onCreateContent(inflater, bundle), LayoutUtils.createFrame(-1, -1)); return mRootView; } diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/DockBarEditorFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/DockBarEditorFragment.java index 575707dc5..4af958de6 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/DockBarEditorFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/DockBarEditorFragment.java @@ -1,8 +1,8 @@ package ru.vtosters.lite.ui.fragments; -import static ru.vtosters.lite.utils.Globals.convertDpToPixel; -import static ru.vtosters.lite.utils.Globals.getIdentifier; -import static ru.vtosters.lite.utils.Globals.restartApplication; +import static ru.vtosters.lite.utils.AndroidUtils.dp2px; +import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier; +import static ru.vtosters.lite.utils.LifecycleUtils.restartApplication; import android.os.Bundle; import android.view.ContextThemeWrapper; @@ -25,7 +25,7 @@ import com.vtosters.lite.R; import ru.vtosters.lite.ui.adapters.CategorizedAdapter; import ru.vtosters.lite.ui.components.DockBarEditorManager; import ru.vtosters.lite.ui.components.ItemMovingCallback; -import ru.vtosters.lite.utils.Globals; +import ru.vtosters.lite.utils.AndroidUtils; public class DockBarEditorFragment extends BaseToolbarFragment { @@ -42,15 +42,15 @@ public class DockBarEditorFragment extends BaseToolbarFragment { LinearLayout buttonsContainer = new LinearLayout(getContext()); buttonsContainer.setPadding( - convertDpToPixel(13), - convertDpToPixel(10), - convertDpToPixel(13), - convertDpToPixel(10) + dp2px(13), + dp2px(10), + dp2px(13), + dp2px(10) ); container.addView(buttonsContainer, new LinearLayout.LayoutParams(-1, -2)); TextView save = new TextView(new ContextThemeWrapper(getContext(), R.style.VKUIButton_Primary)); - save.setText(Globals.getString("save")); + save.setText(AndroidUtils.getString("save")); save.setOnClickListener(v -> { DockBarEditorManager.getInstance().save(); restartApplication(); @@ -61,10 +61,10 @@ public class DockBarEditorFragment extends BaseToolbarFragment { buttonsContainer.addView(save, saveParams); View divider = new View(getContext()); - buttonsContainer.addView(divider, new LinearLayout.LayoutParams(convertDpToPixel(10), 0)); + buttonsContainer.addView(divider, new LinearLayout.LayoutParams(dp2px(10), 0)); TextView reset = new TextView(new ContextThemeWrapper(getContext(), R.style.VKUIButton_Primary)); - reset.setText(Globals.getString("reset")); + reset.setText(AndroidUtils.getString("reset")); reset.setOnClickListener(v -> { DockBarEditorManager.getInstance().reset(); restartApplication(); diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/FeedFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/FeedFragment.java index ffe8dacbb..eb746ac60 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/FeedFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/FeedFragment.java @@ -1,6 +1,6 @@ package ru.vtosters.lite.ui.fragments; -import static ru.vtosters.lite.utils.Globals.getIdentifier; +import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier; import android.content.Context; import android.content.Intent; @@ -12,21 +12,21 @@ import com.vk.navigation.Navigator; import com.vk.newsfeed.NewsfeedSettingsFragment; import com.vtosters.lite.general.fragments.MaterialPreferenceToolbarFragment; -public class FeedFragment extends MaterialPreferenceToolbarFragment{ +public class FeedFragment extends MaterialPreferenceToolbarFragment { @Override - public void onCreate(Bundle bundle){ + public void onCreate(Bundle bundle) { super.onCreate(bundle); addPreferencesFromResource(getIdentifier("preferences_feed", "xml")); prefs(); } - private void prefs(){ + private void prefs() { findPreference("officialnewssett").setOnPreferenceClickListener(new openofficialsett()); } - public class openofficialsett implements Preference.OnPreferenceClickListener{ + public class openofficialsett implements Preference.OnPreferenceClickListener { @Override // android.support.v7.preference.Preference.c - public boolean onPreferenceClick(Preference preference){ + public boolean onPreferenceClick(Preference preference) { Context context = getContext(); Intent a2 = new Navigator(NewsfeedSettingsFragment.class).b(context); a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/IconsFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/IconsFragment.java index 768650a53..c5514aa63 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/IconsFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/IconsFragment.java @@ -1,22 +1,24 @@ package ru.vtosters.lite.ui.fragments; -import static ru.vtosters.lite.ui.PreferencesUtil.*; -import static ru.vtosters.lite.utils.Globals.convertDpToPixel; -import static ru.vtosters.lite.utils.Globals.edit; -import static ru.vtosters.lite.utils.Globals.getIdentifier; -import static ru.vtosters.lite.utils.Globals.sendToast; -import static ru.vtosters.lite.utils.IconManager.icons; -import static ru.vtosters.lite.utils.IconManager.iconsValues; -import static ru.vtosters.lite.utils.IconManager.sIconsPlus; -import static ru.vtosters.lite.utils.IconManager.sIconsPlusNames; -import static ru.vtosters.lite.utils.IconManager.switchComponent; +import static ru.vtosters.lite.ui.PreferencesUtil.addPreference; +import static ru.vtosters.lite.ui.PreferencesUtil.addPreferenceCategory; +import static ru.vtosters.lite.ui.PreferencesUtil.addPreferenceDrawable; +import static ru.vtosters.lite.ui.components.IconManager.icons; +import static ru.vtosters.lite.ui.components.IconManager.iconsValues; +import static ru.vtosters.lite.ui.components.IconManager.sIconsPlus; +import static ru.vtosters.lite.ui.components.IconManager.sIconsPlusNames; +import static ru.vtosters.lite.ui.components.IconManager.switchComponent; +import static ru.vtosters.lite.utils.AndroidUtils.dp2px; +import static ru.vtosters.lite.utils.AndroidUtils.edit; +import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier; +import static ru.vtosters.lite.utils.AndroidUtils.sendToast; import static ru.vtosters.lite.utils.Preferences.getBoolValue; import static ru.vtosters.lite.utils.Preferences.hasVerification; import static ru.vtosters.lite.utils.Preferences.preferences; -import static ru.vtosters.lite.utils.Proxy.isZaboronaEnabled; -import static ru.vtosters.lite.utils.Themes.getAccentColor; -import static ru.vtosters.lite.utils.Themes.getAlertStyle; -import static ru.vtosters.lite.utils.Themes.getTextAttr; +import static ru.vtosters.lite.utils.ProxyUtils.isZaboronaEnabled; +import static ru.vtosters.lite.utils.ThemesUtils.getAccentColor; +import static ru.vtosters.lite.utils.ThemesUtils.getAlertStyle; +import static ru.vtosters.lite.utils.ThemesUtils.getTextAttr; import android.annotation.SuppressLint; import android.content.Context; @@ -35,11 +37,9 @@ import androidx.core.content.res.ResourcesCompat; import com.vtosters.lite.general.fragments.MaterialPreferenceToolbarFragment; -import ru.vtosters.lite.ui.PreferencesUtil; - -public class IconsFragment extends MaterialPreferenceToolbarFragment{ +public class IconsFragment extends MaterialPreferenceToolbarFragment { @SuppressLint("SetTextI18n") - public static void callSelectDialog(Context ctx, String appicon){ + public static void callSelectDialog(Context ctx, String appicon) { RadioGroup rg = new RadioGroup(ctx); RadioButton rgDefault = new RadioButton(new ContextThemeWrapper(ctx, com.vtosters.lite.R.style.Widget_AppCompat_CompoundButton_RadioButton)); @@ -50,11 +50,11 @@ public class IconsFragment extends MaterialPreferenceToolbarFragment{ rg.addView(rgVK); rg.addView(rgVKontakte); - rgDefault.setTextSize(TypedValue.COMPLEX_UNIT_PX, convertDpToPixel(14f)); - rgVK.setTextSize(TypedValue.COMPLEX_UNIT_PX, convertDpToPixel(14f)); - rgVKontakte.setTextSize(TypedValue.COMPLEX_UNIT_PX, convertDpToPixel(14f)); + rgDefault.setTextSize(TypedValue.COMPLEX_UNIT_PX, dp2px(14f)); + rgVK.setTextSize(TypedValue.COMPLEX_UNIT_PX, dp2px(14f)); + rgVKontakte.setTextSize(TypedValue.COMPLEX_UNIT_PX, dp2px(14f)); - rg.setPadding(convertDpToPixel(18f), convertDpToPixel(12f), convertDpToPixel(18f), 0); + rg.setPadding(dp2px(18f), dp2px(12f), dp2px(18f), 0); rgDefault.setText("VTLite"); rgDefault.setTextColor(getTextAttr()); @@ -107,7 +107,7 @@ public class IconsFragment extends MaterialPreferenceToolbarFragment{ @SuppressLint("UseCompatLoadingForDrawables") @Override - public void onCreate(Bundle bundle){ + public void onCreate(Bundle bundle) { super.onCreate(bundle); int vtosterXml = getIdentifier("empty", "xml"); diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/InstallGMSFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/InstallGMSFragment.java index 7c6adbffa..a351b0945 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/InstallGMSFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/InstallGMSFragment.java @@ -1,14 +1,14 @@ package ru.vtosters.lite.ui.fragments; -import static ru.vtosters.lite.utils.Globals.getIdentifier; +import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier; import android.os.Bundle; import com.vtosters.lite.general.fragments.MaterialPreferenceToolbarFragment; -public class InstallGMSFragment extends MaterialPreferenceToolbarFragment{ +public class InstallGMSFragment extends MaterialPreferenceToolbarFragment { @Override - public void onCreate(Bundle bundle){ + public void onCreate(Bundle bundle) { super.onCreate(bundle); addPreferencesFromResource(getIdentifier("preferences_gms", "xml")); } diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/InterfaceFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/InterfaceFragment.java index a6359da96..fbbbd5fad 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/InterfaceFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/InterfaceFragment.java @@ -1,8 +1,7 @@ package ru.vtosters.lite.ui.fragments; -import static ru.vtosters.lite.utils.Globals.getIdentifier; -import static ru.vtosters.lite.utils.Globals.getPreferences; -import static ru.vtosters.lite.utils.Globals.restartApplicationWithTimer; +import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier; +import static ru.vtosters.lite.utils.LifecycleUtils.restartApplicationWithTimer; import android.os.Bundle; @@ -10,29 +9,27 @@ import androidx.preference.Preference; import com.vtosters.lite.general.fragments.MaterialPreferenceToolbarFragment; -import ru.vtosters.lite.utils.Globals; - -public class InterfaceFragment extends MaterialPreferenceToolbarFragment{ +public class InterfaceFragment extends MaterialPreferenceToolbarFragment { @Override - public void onCreate(Bundle bundle){ + public void onCreate(Bundle bundle) { super.onCreate(bundle); addPreferencesFromResource(getIdentifier("preferences_interface", "xml")); prefs(); } - private void prefs(){ + private void prefs() { findPreference("stories").setOnPreferenceClickListener(new restart()); findPreference("swipe").setOnPreferenceClickListener(new restart()); } - public boolean restart(Preference preference){ + public boolean restart(Preference preference) { restartApplicationWithTimer(); return true; } - public class restart implements Preference.OnPreferenceClickListener{ + public class restart implements Preference.OnPreferenceClickListener { @Override - public boolean onPreferenceClick(Preference preference){ + public boolean onPreferenceClick(Preference preference) { return InterfaceFragment.this.restart(preference); } } diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/MediaFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/MediaFragment.java index 76fdc2cce..b8b0f2986 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/MediaFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/MediaFragment.java @@ -1,12 +1,12 @@ package ru.vtosters.lite.ui.fragments; -import static ru.vtosters.lite.utils.Globals.edit; -import static ru.vtosters.lite.utils.Globals.getIdentifier; -import static ru.vtosters.lite.utils.Globals.getPreferences; -import static ru.vtosters.lite.utils.Globals.restartApplicationWithTimer; -import static ru.vtosters.lite.utils.Themes.getAccentColor; -import static ru.vtosters.lite.utils.Themes.getAlertStyle; -import static ru.vtosters.lite.utils.Themes.getTextAttr; +import static ru.vtosters.lite.utils.AndroidUtils.edit; +import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier; +import static ru.vtosters.lite.utils.AndroidUtils.getPreferences; +import static ru.vtosters.lite.utils.LifecycleUtils.restartApplicationWithTimer; +import static ru.vtosters.lite.utils.ThemesUtils.getAccentColor; +import static ru.vtosters.lite.utils.ThemesUtils.getAlertStyle; +import static ru.vtosters.lite.utils.ThemesUtils.getTextAttr; import android.content.Context; import android.content.DialogInterface; @@ -28,8 +28,8 @@ import java.util.Arrays; import ru.vtosters.lite.downloaders.VideoDownloader; import ru.vtosters.lite.ui.adapters.ImagineArrayAdapter; -public class MediaFragment extends MaterialPreferenceToolbarFragment{ - public static void download(Context ctx){ +public class MediaFragment extends MaterialPreferenceToolbarFragment { + public static void download(Context ctx) { AlertDialog.Builder alertDialog = new AlertDialog.Builder(ctx, getAlertStyle()); alertDialog.setTitle("Введите ссылку на видео"); @@ -56,13 +56,13 @@ public class MediaFragment extends MaterialPreferenceToolbarFragment{ } @Override - public void onCreate(Bundle bundle){ + public void onCreate(Bundle bundle) { super.onCreate(bundle); addPreferencesFromResource(getIdentifier("preferences_media", "xml")); prefs(); } - private void prefs(){ + private void prefs() { findPreference("download_video").setOnPreferenceClickListener(new MediaFragment.download()); findPreference("dateformat").setOnPreferenceChangeListener(new MediaFragment.restart()); findPreference("select_photo_search_engine").setOnPreferenceClickListener(preference -> { @@ -89,17 +89,17 @@ public class MediaFragment extends MaterialPreferenceToolbarFragment{ }); } - public class download implements Preference.OnPreferenceClickListener{ + public class download implements Preference.OnPreferenceClickListener { @Override // android.support.v7.preference.Preference.c - public boolean onPreferenceClick(Preference preference){ + public boolean onPreferenceClick(Preference preference) { download(getActivity()); return true; } } - public static class restart implements Preference.OnPreferenceChangeListener{ + public static class restart implements Preference.OnPreferenceChangeListener { @Override - public boolean onPreferenceChange(Preference preference, Object o){ + public boolean onPreferenceChange(Preference preference, Object o) { edit().putString("dateformat", o.toString()).commit(); restartApplicationWithTimer(); return false; diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/MessagesFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/MessagesFragment.java index 3be8559f9..36d03733b 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/MessagesFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/MessagesFragment.java @@ -1,7 +1,7 @@ package ru.vtosters.lite.ui.fragments; -import static ru.vtosters.lite.utils.Globals.getIdentifier; -import static ru.vtosters.lite.utils.Globals.restartApplicationWithTimer; +import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier; +import static ru.vtosters.lite.utils.LifecycleUtils.restartApplicationWithTimer; import android.content.Context; import android.content.Intent; @@ -14,43 +14,43 @@ import com.vtosters.lite.general.fragments.MaterialPreferenceToolbarFragment; import ru.vtosters.lite.ui.wallpapers.WallpaperMenuFragment; -public class MessagesFragment extends MaterialPreferenceToolbarFragment{ +public class MessagesFragment extends MaterialPreferenceToolbarFragment { @Override - public void onCreate(Bundle bundle){ + public void onCreate(Bundle bundle) { super.onCreate(bundle); addPreferencesFromResource(getIdentifier("preferences_messages", "xml")); prefs(); } - private void prefs(){ + private void prefs() { findPreference("vkme").setOnPreferenceClickListener(new MessagesFragment.restart()); findPreference("vkme_notifs").setOnPreferenceClickListener(new MessagesFragment.restart()); findPreference("systememoji").setOnPreferenceClickListener(new MessagesFragment.restart()); findPreference("wallpapers").setOnPreferenceClickListener(new MessagesFragment.openwp()); } - public boolean restart(Preference preference){ + public boolean restart(Preference preference) { restartApplicationWithTimer(); return true; } - public class restart implements Preference.OnPreferenceClickListener{ + public class restart implements Preference.OnPreferenceClickListener { @Override - public boolean onPreferenceClick(Preference preference){ + public boolean onPreferenceClick(Preference preference) { return MessagesFragment.this.restart(preference); } } - public class clearCache implements Preference.OnPreferenceClickListener{ + public class clearCache implements Preference.OnPreferenceClickListener { @Override - public boolean onPreferenceClick(Preference preference){ + public boolean onPreferenceClick(Preference preference) { return MessagesFragment.this.restart(preference); } } - public class openwp implements Preference.OnPreferenceClickListener{ + public class openwp implements Preference.OnPreferenceClickListener { @Override - public boolean onPreferenceClick(Preference preference){ + public boolean onPreferenceClick(Preference preference) { Context context = getContext(); Intent a2 = new Navigator(WallpaperMenuFragment.class).b(context); a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/OtherFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/OtherFragment.java index 20789767b..afe88f157 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/OtherFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/OtherFragment.java @@ -3,16 +3,14 @@ package ru.vtosters.lite.ui.fragments; 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.ui.components.BackupManager.backupOnlines; +import static ru.vtosters.lite.ui.components.BackupManager.backupSettings; +import static ru.vtosters.lite.ui.components.BackupManager.deletePrefs; +import static ru.vtosters.lite.ui.components.BackupManager.restoreBackup; +import static ru.vtosters.lite.utils.AccountManagerUtils.getUserToken; +import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier; import static ru.vtosters.lite.utils.CacheUtils.deleteCache; -import static ru.vtosters.lite.utils.Globals.getIdentifier; -import static ru.vtosters.lite.utils.Globals.getUserToken; -import static ru.vtosters.lite.utils.Globals.restartApplication; -import static ru.vtosters.lite.utils.SettBackup.backupOnlines; -import static ru.vtosters.lite.utils.SettBackup.backupSettings; -import static ru.vtosters.lite.utils.SettBackup.deletePrefs; -import static ru.vtosters.lite.utils.SettBackup.restoreBackup; -import static ru.vtosters.lite.utils.Themes.getAlertStyle; -import static ru.vtosters.lite.utils.Themes.getTextAttr; +import static ru.vtosters.lite.utils.LifecycleUtils.restartApplication; import android.app.Activity; import android.content.ClipData; @@ -20,15 +18,12 @@ import android.content.ClipboardManager; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; -import android.graphics.Color; import android.os.Bundle; import android.util.Log; import android.webkit.WebView; import android.widget.ArrayAdapter; -import android.widget.TextView; import android.widget.Toast; -import androidx.appcompat.app.AlertDialog; import androidx.preference.Preference; import com.vk.auth.api.VKAccount; @@ -46,8 +41,8 @@ import java.io.IOException; import b.h.g.m.FileUtils; import ru.vtosters.lite.ui.activities.VKAdminTokenActivity; -import ru.vtosters.lite.utils.Globals; -import ru.vtosters.lite.utils.SettBackup; +import ru.vtosters.lite.ui.components.BackupManager; +import ru.vtosters.lite.utils.AndroidUtils; public class OtherFragment extends MaterialPreferenceToolbarFragment { @@ -67,7 +62,7 @@ public class OtherFragment extends MaterialPreferenceToolbarFragment { if (requestCode == VK_ADMIN_TOKEN_REQUEST_CODE) { if (resultCode == Activity.RESULT_OK) { String token = data.getStringExtra("token"); - Globals.getPreferences().edit().putString("vk_admin_token", token).apply(); + AndroidUtils.getPreferences().edit().putString("vk_admin_token", token).apply(); Log.d("VkAdminToken", token); Toast.makeText(getContext(), "Токен успешно сохранён", LENGTH_SHORT).show(); } @@ -88,7 +83,7 @@ public class OtherFragment extends MaterialPreferenceToolbarFragment { findPreference("restoreprefs").setOnPreferenceClickListener(new restoreprefs()); var vkAdminTokenPref = findPreference("vk_admin_token"); - vkAdminTokenPref.setVisible(Globals.getDefprefs().getBoolean("new_music_downloading_way", false)); + vkAdminTokenPref.setVisible(AndroidUtils.getDefaultPrefs().getBoolean("new_music_downloading_way", false)); if (vkAdminTokenPref.isVisible()) { vkAdminTokenPref.setOnPreferenceClickListener(preference -> { @@ -139,8 +134,8 @@ public class OtherFragment extends MaterialPreferenceToolbarFragment { class c implements Preference.OnPreferenceClickListener { public void copy(Context context, String str) { ((ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE)).setPrimaryClip(ClipData.newPlainText("MBH-ST", str)); - makeText(context, Globals.getString("copybtn"), LENGTH_SHORT).show(); - ToastUtils.a(Globals.getString("tokenwarning")); + makeText(context, AndroidUtils.getString("copybtn"), LENGTH_SHORT).show(); + ToastUtils.a(AndroidUtils.getString("tokenwarning")); } @Override // android.support.v7.preference.Preference.c @@ -162,7 +157,7 @@ public class OtherFragment extends MaterialPreferenceToolbarFragment { ImAudioMsgPlayerProvider.b().d(PlayerActionSources.a); FileUtils.l(); deleteCache(); - ToastUtils.a(Globals.getString("cachecleaned")); + ToastUtils.a(AndroidUtils.getString("cachecleaned")); return true; } } @@ -172,12 +167,12 @@ public class OtherFragment extends MaterialPreferenceToolbarFragment { public boolean onPreferenceClick(Preference preference) { VKAccount b = VKAccountManager.d(); PushSubscriber.e.a(); - ToastUtils.a(Globals.getString("fcmtokenrem")); - Globals.getContext().getSharedPreferences("gcm", 0).edit().clear().apply(); + ToastUtils.a(AndroidUtils.getString("fcmtokenrem")); + AndroidUtils.getGlobalContext().getSharedPreferences("gcm", 0).edit().clear().apply(); OtherFragment.this.getListView().postDelayed(() -> { PushSubscriber.e.a(true); - ToastUtils.a(Globals.getString("fcmtokenget")); - ToastUtils.a(Globals.getString("fcmtokenfixed")); + ToastUtils.a(AndroidUtils.getString("fcmtokenget")); + ToastUtils.a(AndroidUtils.getString("fcmtokenfixed")); }, 1000); return true; } @@ -189,7 +184,7 @@ public class OtherFragment extends MaterialPreferenceToolbarFragment { SharedPreferences prefs2 = getContext().getSharedPreferences("stickers_storage", Context.MODE_PRIVATE); prefs2.edit().clear().commit(); deleteCache(); - ToastUtils.a(Globals.getString("cachecleaned")); + ToastUtils.a(AndroidUtils.getString("cachecleaned")); return true; } } @@ -208,7 +203,7 @@ public class OtherFragment extends MaterialPreferenceToolbarFragment { public class restoreprefs implements Preference.OnPreferenceClickListener { @Override // android.support.v7.preference.Preference.c public boolean onPreferenceClick(Preference preference) { - var arr = SettBackup.getBackupsNames(); + var arr = BackupManager.getBackupsNames(); var adapter = new ArrayAdapter(getContext(), android.R.layout.simple_list_item_1, arr); new VkAlertDialog.Builder(getContext()) .setTitle("Выберите бэкап") diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/ProxySettingsFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/ProxySettingsFragment.java index 93ce04a8f..84b74cc20 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/ProxySettingsFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/ProxySettingsFragment.java @@ -1,14 +1,14 @@ package ru.vtosters.lite.ui.fragments; -import static ru.vtosters.lite.utils.Globals.getIdentifier; +import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier; import android.os.Bundle; import com.vtosters.lite.general.fragments.MaterialPreferenceToolbarFragment; -public class ProxySettingsFragment extends MaterialPreferenceToolbarFragment{ +public class ProxySettingsFragment extends MaterialPreferenceToolbarFragment { @Override - public void onCreate(Bundle bundle){ + public void onCreate(Bundle bundle) { super.onCreate(bundle); addPreferencesFromResource(getIdentifier("preferences_proxy", "xml")); } diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/SuperAppEditorFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/SuperAppEditorFragment.java index 1fefdb0d4..e6d3e44a7 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/SuperAppEditorFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/SuperAppEditorFragment.java @@ -1,8 +1,8 @@ package ru.vtosters.lite.ui.fragments; -import static ru.vtosters.lite.utils.Globals.convertDpToPixel; -import static ru.vtosters.lite.utils.Globals.getIdentifier; -import static ru.vtosters.lite.utils.Globals.restartApplication; +import static ru.vtosters.lite.utils.AndroidUtils.dp2px; +import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier; +import static ru.vtosters.lite.utils.LifecycleUtils.restartApplication; import android.os.Bundle; import android.view.ContextThemeWrapper; @@ -23,9 +23,9 @@ import androidx.recyclerview.widget.RecyclerView; import ru.vtosters.lite.ui.adapters.CategorizedAdapter; import ru.vtosters.lite.ui.components.ItemMovingCallback; import ru.vtosters.lite.ui.components.SuperAppEditorManager; -import ru.vtosters.lite.utils.Globals; -import ru.vtosters.lite.utils.LayoutHelper; -import ru.vtosters.lite.utils.Themes; +import ru.vtosters.lite.utils.AndroidUtils; +import ru.vtosters.lite.utils.LayoutUtils; +import ru.vtosters.lite.utils.ThemesUtils; public class SuperAppEditorFragment extends BaseToolbarFragment { @@ -41,29 +41,29 @@ public class SuperAppEditorFragment extends BaseToolbarFragment { content.addView(container, new FrameLayout.LayoutParams(-1, -1)); TextView message = new TextView(getContext()); - message.setText(Globals.getString("superapp_editor_message")); + message.setText(AndroidUtils.getString("superapp_editor_message")); message.setTextSize(16.0f); message.setTextAlignment(View.TEXT_ALIGNMENT_CENTER); - message.setTextColor(Themes.getTextAttr()); + message.setTextColor(ThemesUtils.getTextAttr()); message.setPadding( - Globals.convertDpToPixel(10), - Globals.convertDpToPixel(10), - Globals.convertDpToPixel(10), + AndroidUtils.dp2px(10), + AndroidUtils.dp2px(10), + AndroidUtils.dp2px(10), 0 ); - container.addView(message, LayoutHelper.createLinear(-1, -2)); + container.addView(message, LayoutUtils.createLinear(-1, -2)); LinearLayout buttonsContainer = new LinearLayout(getContext()); buttonsContainer.setPadding( - convertDpToPixel(13), - convertDpToPixel(10), - convertDpToPixel(13), - convertDpToPixel(10) + dp2px(13), + dp2px(10), + dp2px(13), + dp2px(10) ); container.addView(buttonsContainer, new LinearLayout.LayoutParams(-1, -2)); TextView save = new TextView(new ContextThemeWrapper(getContext(), com.vtosters.lite.R.style.VKUIButton_Primary)); - save.setText(Globals.getString("save")); + save.setText(AndroidUtils.getString("save")); save.setOnClickListener(v -> { SuperAppEditorManager.getInstance().save(); restartApplication(); @@ -74,10 +74,10 @@ public class SuperAppEditorFragment extends BaseToolbarFragment { buttonsContainer.addView(save, saveParams); View divider = new View(getContext()); - buttonsContainer.addView(divider, new LinearLayout.LayoutParams(convertDpToPixel(10), 0)); + buttonsContainer.addView(divider, new LinearLayout.LayoutParams(dp2px(10), 0)); TextView reset = new TextView(new ContextThemeWrapper(getContext(), com.vtosters.lite.R.style.VKUIButton_Primary)); - reset.setText(Globals.getString("reset")); + reset.setText(AndroidUtils.getString("reset")); reset.setOnClickListener(v -> { SuperAppEditorManager.getInstance().reset(); restartApplication(); diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/ThemesFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/ThemesFragment.java index fd7bafac3..a952bffef 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/ThemesFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/ThemesFragment.java @@ -1,10 +1,9 @@ package ru.vtosters.lite.ui.fragments; -import static ru.vtosters.lite.utils.Globals.*; -import static ru.vtosters.lite.utils.Globals.edit; -import static ru.vtosters.lite.utils.Globals.getIdentifier; -import static ru.vtosters.lite.utils.Globals.getPreferences; -import static ru.vtosters.lite.utils.Globals.restartApplicationWithTimer; +import static ru.vtosters.lite.utils.AndroidUtils.edit; +import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier; +import static ru.vtosters.lite.utils.AndroidUtils.getPreferences; +import static ru.vtosters.lite.utils.LifecycleUtils.restartApplicationWithTimer; import android.content.Context; import android.content.Intent; @@ -15,19 +14,19 @@ import androidx.preference.Preference; import com.vk.navigation.Navigator; import com.vtosters.lite.general.fragments.MaterialPreferenceToolbarFragment; -import ru.vtosters.lite.utils.Globals; +import ru.vtosters.lite.utils.LifecycleUtils; -public class ThemesFragment extends MaterialPreferenceToolbarFragment{ +public class ThemesFragment extends MaterialPreferenceToolbarFragment { @Override - public void onCreate(Bundle bundle){ + public void onCreate(Bundle bundle) { super.onCreate(bundle); addPreferencesFromResource(getIdentifier("preferences_themes", "xml")); prefs(); } - private void prefs(){ + private void prefs() { findPreference("navbar").setOnPreferenceClickListener(new restart()); findPreference("milkshake").setOnPreferenceClickListener(new restart()); findPreference("darktheme").setOnPreferenceChangeListener(new restartdark()); @@ -35,16 +34,16 @@ public class ThemesFragment extends MaterialPreferenceToolbarFragment{ findPreference("iconmanager").setOnPreferenceClickListener(new openicons()); findPreference("dockbar_tab_titles").setOnPreferenceChangeListener((preference, o) -> { getPreferences().edit().putBoolean("dockbar_tab_titles", (boolean) o).commit(); - restartApplication(); + LifecycleUtils.restartApplication(); return false; }); findPreference("dockbar_accent").setOnPreferenceClickListener(new restart()); findPreference("dockcounter").setOnPreferenceClickListener(new restart()); } - public class openicons implements Preference.OnPreferenceClickListener{ + public class openicons implements Preference.OnPreferenceClickListener { @Override - public boolean onPreferenceClick(Preference preference){ + public boolean onPreferenceClick(Preference preference) { Context context = getContext(); Intent a2 = new Navigator(IconsFragment.class).b(context); a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); @@ -53,26 +52,26 @@ public class ThemesFragment extends MaterialPreferenceToolbarFragment{ } } - public static class restart implements Preference.OnPreferenceClickListener{ + public static class restart implements Preference.OnPreferenceClickListener { @Override - public boolean onPreferenceClick(Preference preference){ + public boolean onPreferenceClick(Preference preference) { restartApplicationWithTimer(); return true; } } - public static class restartlight implements Preference.OnPreferenceChangeListener{ + public static class restartlight implements Preference.OnPreferenceChangeListener { @Override - public boolean onPreferenceChange(Preference preference, Object o){ + public boolean onPreferenceChange(Preference preference, Object o) { edit().putString("lighttheme", o.toString()).commit(); restartApplicationWithTimer(); return false; } } - public static class restartdark implements Preference.OnPreferenceChangeListener{ + public static class restartdark implements Preference.OnPreferenceChangeListener { @Override - public boolean onPreferenceChange(Preference preference, Object o){ + public boolean onPreferenceChange(Preference preference, Object o) { edit().putString("darktheme", o.toString()).commit(); restartApplicationWithTimer(); return false; diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/VKPayFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/VKPayFragment.java index 349a53a35..d57f055ad 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/VKPayFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/VKPayFragment.java @@ -6,11 +6,9 @@ import android.os.Bundle; import com.vk.core.fragments.FragmentImpl; import com.vk.navigation.Navigator; -import ru.vtosters.lite.utils.VKUIwrapper; - -public class VKPayFragment extends FragmentImpl{ +public class VKPayFragment extends FragmentImpl { @Override - public void onCreate(Bundle bundle){ + public void onCreate(Bundle bundle) { super.onCreate(bundle); start(); } diff --git a/app/src/main/java/ru/vtosters/lite/utils/VKUIwrapper.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/VKUIwrapper.java similarity index 70% rename from app/src/main/java/ru/vtosters/lite/utils/VKUIwrapper.java rename to app/src/main/java/ru/vtosters/lite/ui/fragments/VKUIwrapper.java index 6182e8069..aff57bee9 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/VKUIwrapper.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/VKUIwrapper.java @@ -1,4 +1,4 @@ -package ru.vtosters.lite.utils; +package ru.vtosters.lite.ui.fragments; import android.net.Uri; import android.os.Bundle; @@ -7,20 +7,20 @@ import com.vk.core.util.LangUtils; import com.vk.core.util.UriExt; import com.vk.webapp.VkUiFragment; -public final class VKUIwrapper extends VkUiFragment{ +public final class VKUIwrapper extends VkUiFragment { static String link; - public static void setLink(String getlink){ + public static void setLink(String getlink) { link = getlink; } - public static void officalLinks(String getlink){ + public static void officalLinks(String getlink) { Uri.Builder appendPath = new Uri.Builder().scheme("https").authority(VkUiFragment.z0.a()).appendPath(getlink); Uri.Builder appendQueryParameter = UriExt.a(appendPath).appendQueryParameter("lang", LangUtils.a()); link = appendQueryParameter.build().toString(); } - public void onCreate(Bundle bundle){ + public void onCreate(Bundle bundle) { VKUIwrapper.super.onCreate(bundle); N(link); diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/VTSettings.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/VTSettings.java index 207e41f7d..3fd0d395b 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/VTSettings.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/VTSettings.java @@ -1,7 +1,6 @@ package ru.vtosters.lite.ui.fragments; import static com.vk.bridges.AuthBridge.logout; -import static ru.vtosters.lite.f0x1d.VTVerifications.vtverif; import static ru.vtosters.lite.ui.PreferencesUtil.addListPreferenceIcon; import static ru.vtosters.lite.ui.PreferencesUtil.addMaterialSwitchPreference; import static ru.vtosters.lite.ui.PreferencesUtil.addPreference; @@ -9,16 +8,16 @@ import static ru.vtosters.lite.ui.PreferencesUtil.addPreferenceCategory; import static ru.vtosters.lite.ui.PreferencesUtil.addPreferenceDrawable; import static ru.vtosters.lite.utils.About.getBuildNumber; import static ru.vtosters.lite.utils.About.getCommitLink; +import static ru.vtosters.lite.utils.AccountManagerUtils.getUserPhoto; +import static ru.vtosters.lite.utils.AccountManagerUtils.getUsername; +import static ru.vtosters.lite.utils.AccountManagerUtils.isVKTester; +import static ru.vtosters.lite.utils.AndroidUtils.edit; +import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier; +import static ru.vtosters.lite.utils.AndroidUtils.getPrefsValue; import static ru.vtosters.lite.utils.CacheUtils.humanReadableByteCountBin; -import static ru.vtosters.lite.utils.Globals.edit; -import static ru.vtosters.lite.utils.Globals.getDrawableFromUrl; -import static ru.vtosters.lite.utils.Globals.getIdentifier; -import static ru.vtosters.lite.utils.Globals.getPrefsValue; -import static ru.vtosters.lite.utils.Globals.getUserPhoto; -import static ru.vtosters.lite.utils.Globals.getUsername; -import static ru.vtosters.lite.utils.Globals.isGmsInstalled; -import static ru.vtosters.lite.utils.Globals.isVKTester; -import static ru.vtosters.lite.utils.Globals.restartApplication; +import static ru.vtosters.lite.utils.GmsUtils.isGmsInstalled; +import static ru.vtosters.lite.utils.ImageUtils.getDrawableFromUrl; +import static ru.vtosters.lite.utils.LifecycleUtils.restartApplication; import static ru.vtosters.lite.utils.Preferences.DoNotUseOldIcons; import static ru.vtosters.lite.utils.Preferences.ads; import static ru.vtosters.lite.utils.Preferences.devmenu; @@ -29,14 +28,14 @@ import static ru.vtosters.lite.utils.Preferences.isValidSignature; import static ru.vtosters.lite.utils.Preferences.milkshake; import static ru.vtosters.lite.utils.Preferences.navbar; import static ru.vtosters.lite.utils.Preferences.offline; -import static ru.vtosters.lite.utils.Preferences.preferences; import static ru.vtosters.lite.utils.Preferences.shortinfo; import static ru.vtosters.lite.utils.Preferences.stories; import static ru.vtosters.lite.utils.Preferences.superapp; import static ru.vtosters.lite.utils.Preferences.vkme; -import static ru.vtosters.lite.utils.Themes.getDarkTheme; -import static ru.vtosters.lite.utils.Themes.getLightTheme; -import static ru.vtosters.lite.utils.Themes.setTheme; +import static ru.vtosters.lite.utils.ThemesUtils.getDarkTheme; +import static ru.vtosters.lite.utils.ThemesUtils.getLightTheme; +import static ru.vtosters.lite.utils.ThemesUtils.setTheme; +import static ru.vtosters.lite.utils.VTVerifications.vtverif; import android.content.Context; import android.content.Intent; @@ -63,73 +62,73 @@ import ru.vtosters.lite.ui.components.DockBarEditorManager; import ru.vtosters.lite.ui.components.SuperAppEditorManager; import ru.vtosters.lite.ui.dialogs.OTADialog; import ru.vtosters.lite.ui.fragments.tgstickers.StickersFragment; +import ru.vtosters.lite.utils.AndroidUtils; import ru.vtosters.lite.utils.CacheUtils; -import ru.vtosters.lite.utils.Globals; -import ru.vtosters.lite.utils.SSFS; -import ru.vtosters.lite.utils.VKUIwrapper; +import ru.vtosters.lite.utils.SSFSUtils; -public class VTSettings extends MaterialPreferenceToolbarFragment{ +public class VTSettings extends MaterialPreferenceToolbarFragment { public int hideitems = 0; - public static String getValAsString(String stringid, Boolean value){ + public static String getValAsString(String stringid, Boolean value) { if (disableSettingsSumms()) return null; if (value) { - return Globals.getString(stringid) + ": " + Globals.getString("vtlsettenabled"); + return AndroidUtils.getString(stringid) + ": " + AndroidUtils.getString("vtlsettenabled"); } - return Globals.getString(stringid) + ": " + Globals.getString("vtlsettdisabled"); + return AndroidUtils.getString(stringid) + ": " + AndroidUtils.getString("vtlsettdisabled"); } - public static String getSSFSsumm(){ + public static String getSSFSsumm() { if (disableSettingsSumms()) return null; if (hasSpecialVerif()) - return Globals.getString("vtlssfssumm") + ": " + Globals.getString("vtlsettverifyes"); + return AndroidUtils.getString("vtlssfssumm") + ": " + AndroidUtils.getString("vtlsettverifyes"); - return Globals.getString("vtlssfssumm") + ": " + Globals.getString("vtlsettverifno"); + return AndroidUtils.getString("vtlssfssumm") + ": " + AndroidUtils.getString("vtlsettverifno"); } - public static String getDocksumm(){ + public static String getDocksumm() { if (disableSettingsSumms()) return null; - return Globals.getString("vtldocksumm") + ": " + DockBarEditorManager.getInstance().getSelectedTabs().size(); + return AndroidUtils.getString("vtldocksumm") + ": " + DockBarEditorManager.getInstance().getSelectedTabs().size(); } - public static String getTGSsumm(){ + public static String getTGSsumm() { if (disableSettingsSumms()) return null; - return Globals.getString("vtltgssumm") + ": " + TelegramStickersService.getInstance(Globals.getContext()).getPacksListReference().size(); + return AndroidUtils.getString("vtltgssumm") + ": " + TelegramStickersService.getInstance(AndroidUtils.getGlobalContext()).getPacksListReference().size(); } - public static String getProxysumm(){ + public static String getProxysumm() { var type = getPrefsValue("proxy"); if (disableSettingsSumms()) return null; - if (type.equals("noproxy") || type.isEmpty()) type = Globals.getString("vtlsettdisabled"); + if (type.equals("noproxy") || type.isEmpty()) + type = AndroidUtils.getString("vtlsettdisabled"); - return Globals.getString("vtlproxysumm") + ": " + type; + return AndroidUtils.getString("vtlproxysumm") + ": " + type; } - public static SharedPreferences getCurrentAccount(){ - return Globals.getContext().getSharedPreferences("pref_account_manager", Context.MODE_PRIVATE); + public static SharedPreferences getCurrentAccount() { + return AndroidUtils.getGlobalContext().getSharedPreferences("pref_account_manager", Context.MODE_PRIVATE); } - public static String getSuperappsumm(){ + public static String getSuperappsumm() { if (disableSettingsSumms()) return null; return "Скрыто элементов" + ": " + SuperAppEditorManager.getInstance().getDisabledTabs().size(); } - public static String getCachesumm(){ + public static String getCachesumm() { if (disableSettingsSumms()) return null; - return Globals.getString("autoclearcachesumm") + " " + humanReadableByteCountBin(CacheUtils.getInstance().size); + return AndroidUtils.getString("autoclearcachesumm") + " " + humanReadableByteCountBin(CacheUtils.getInstance().size); } @Override - public void onCreate(Bundle bundle){ + public void onCreate(Bundle bundle) { super.onCreate(bundle); var feedsumm = getValAsString("vtlfeedsumm", ads()); @@ -149,15 +148,15 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{ int vtosterXml = getIdentifier("empty", "xml"); this.addPreferencesFromResource(vtosterXml); - addPreferenceDrawable(this, "", getUsername(), hasVerification() ? Globals.getString("thanksfordonate") : Globals.getString("getdonate"), getDrawableFromUrl(getUserPhoto(), "ic_user_circle_outline_28", true, true), preference -> { + addPreferenceDrawable(this, "", getUsername(), hasVerification() ? AndroidUtils.getString("thanksfordonate") : AndroidUtils.getString("getdonate"), getDrawableFromUrl(getUserPhoto(), "ic_user_circle_outline_28", true, true), preference -> { logout(); restartApplication(); return false; }); - addPreferenceCategory(this, Globals.getString("vtsettdarktheme")); + addPreferenceCategory(this, AndroidUtils.getString("vtsettdarktheme")); - addMaterialSwitchPreference(this, "isdark", Globals.getString("vtsettdarktheme"), "", !DoNotUseOldIcons() ? "ic_palette_24" : "ic_palette_outline_28", false, (preference, o) -> { + addMaterialSwitchPreference(this, "isdark", AndroidUtils.getString("vtsettdarktheme"), "", !DoNotUseOldIcons() ? "ic_palette_24" : "ic_palette_outline_28", false, (preference, o) -> { boolean value = (boolean) o; if (!value) { // inverted @@ -171,7 +170,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{ }); if (Build.VERSION.SDK_INT >= 28 && false) { // TODO refactoring system theme - addMaterialSwitchPreference(this, "systemtheme", Globals.getString("appearance_theme_use_system"), Globals.getString("appearance_theme_use_system_summary"), !DoNotUseOldIcons() ? "ic_recent_24" : "ic_recent_outline_28", true, (preference, o) -> { + addMaterialSwitchPreference(this, "systemtheme", AndroidUtils.getString("appearance_theme_use_system"), AndroidUtils.getString("appearance_theme_use_system_summary"), !DoNotUseOldIcons() ? "ic_recent_24" : "ic_recent_outline_28", true, (preference, o) -> { boolean value = (boolean) o; edit().putBoolean("systemtheme", value).commit(); @@ -180,7 +179,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{ } if (!isGmsInstalled()) { - addPreference(this, "", Globals.getString("installgms"), "", "ic_warning_24", preference -> { + addPreference(this, "", AndroidUtils.getString("installgms"), "", "ic_warning_24", preference -> { Context context = getContext(); Intent a2 = new Navigator(InstallGMSFragment.class).b(context); a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); @@ -190,9 +189,9 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{ } if (devmenu()) { - addPreferenceCategory(this, Globals.getString("sett_debug")); + addPreferenceCategory(this, AndroidUtils.getString("sett_debug")); - addPreference(this, "", Globals.getString("sett_debug"), "", !DoNotUseOldIcons() ? "ic_bug_24" : "ic_bug_outline_28", preference -> { + addPreference(this, "", AndroidUtils.getString("sett_debug"), "", !DoNotUseOldIcons() ? "ic_bug_24" : "ic_bug_outline_28", preference -> { Context context = getContext(); Intent a2 = new Navigator(SettingsDebugFragment.class).b(context); a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); @@ -200,16 +199,16 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{ return false; }); - addMaterialSwitchPreference(this, "ssl", Globals.getString("debug_developer_force_ssl"), Globals.getString("debug_developer_force_ssl_summary"), !DoNotUseOldIcons() ? "ic_globe_20" : "ic_globe_outline_28", true, (preference, o) -> { + addMaterialSwitchPreference(this, "ssl", AndroidUtils.getString("debug_developer_force_ssl"), AndroidUtils.getString("debug_developer_force_ssl_summary"), !DoNotUseOldIcons() ? "ic_globe_20" : "ic_globe_outline_28", true, (preference, o) -> { boolean value = (boolean) o; edit().putBoolean("ssl", value).commit(); return true; }); } - addPreferenceCategory(this, Globals.getString("vtsettaccount")); + addPreferenceCategory(this, AndroidUtils.getString("vtsettaccount")); - addPreference(this, "", Globals.getString("vkconnect"), "", !DoNotUseOldIcons() ? "ic_tags_24" : "ic_user_circle_outline_28", preference -> { + addPreference(this, "", AndroidUtils.getString("vkconnect"), "", !DoNotUseOldIcons() ? "ic_tags_24" : "ic_user_circle_outline_28", preference -> { Context context = getContext(); VKUIwrapper.officalLinks("account"); Intent a2 = new Navigator(VKUIwrapper.class).b(context); @@ -218,7 +217,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{ return false; }); - addPreference(this, "", Globals.getString("privacy_settings"), "", !DoNotUseOldIcons() ? "ic_privacy_24" : "ic_privacy_outline_28", preference -> { + addPreference(this, "", AndroidUtils.getString("privacy_settings"), "", !DoNotUseOldIcons() ? "ic_privacy_24" : "ic_privacy_outline_28", preference -> { Context context = getContext(); Intent a2 = new Navigator(PrivacyFragment.class).b(context); a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); @@ -226,7 +225,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{ return false; }); - addPreference(this, "", Globals.getString("sett_account"), "", !DoNotUseOldIcons() ? "ic_user_24" : "ic_user_outline_28", preference -> { + addPreference(this, "", AndroidUtils.getString("sett_account"), "", !DoNotUseOldIcons() ? "ic_user_24" : "ic_user_outline_28", preference -> { Context context = getContext(); Intent a2 = new Navigator(SettingsAccountFragment.class).b(context); a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); @@ -235,7 +234,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{ }); if (isVKTester()) { - addPreference(this, "", Globals.getString("bugs"), "", !DoNotUseOldIcons() ? "ic_bug_24" : "ic_bug_outline_28", preference -> { + addPreference(this, "", AndroidUtils.getString("bugs"), "", !DoNotUseOldIcons() ? "ic_bug_24" : "ic_bug_outline_28", preference -> { Context context = getContext(); VKUIwrapper.officalLinks("bugs"); Intent a2 = new Navigator(VKUIwrapper.class).b(context); @@ -245,18 +244,18 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{ }); } - addPreference(this, "", Globals.getString("vtssfs"), ssfs, !DoNotUseOldIcons() ? "ic_link_24" : "ic_link_circle_outline_28", preference -> { + addPreference(this, "", AndroidUtils.getString("vtssfs"), ssfs, !DoNotUseOldIcons() ? "ic_link_24" : "ic_link_circle_outline_28", preference -> { Context context = getContext(); - VKUIwrapper.setLink(SSFS.getSSFSLink()); + VKUIwrapper.setLink(SSFSUtils.getSSFSLink()); Intent a2 = new Navigator(VKUIwrapper.class).b(context); a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(a2); return false; }); - addPreferenceCategory(this, Globals.getString("notification_settings")); + addPreferenceCategory(this, AndroidUtils.getString("notification_settings")); - addPreference(this, "", Globals.getString("sett_general"), "", !DoNotUseOldIcons() ? "ic_settings_24" : "ic_settings_outline_28", preference -> { + addPreference(this, "", AndroidUtils.getString("sett_general"), "", !DoNotUseOldIcons() ? "ic_settings_24" : "ic_settings_outline_28", preference -> { Context context = getContext(); Intent a2 = new Navigator(SettingsGeneralFragment.class).b(context); a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); @@ -264,7 +263,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{ return false; }); - addPreference(this, "", Globals.getString("blacklist"), "", !DoNotUseOldIcons() ? "ic_users_24" : "ic_users_outline_28", preference -> { + addPreference(this, "", AndroidUtils.getString("blacklist"), "", !DoNotUseOldIcons() ? "ic_users_24" : "ic_users_outline_28", preference -> { Context context = getContext(); Intent a2 = new Navigator(BlacklistFragment.class).b(context); a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); @@ -272,7 +271,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{ return false; }); - addPreference(this, "", Globals.getString("sett_notifications"), "", !DoNotUseOldIcons() ? "ic_notification_24" : "ic_menu_notification_outline_28", preference -> { + addPreference(this, "", AndroidUtils.getString("sett_notifications"), "", !DoNotUseOldIcons() ? "ic_notification_24" : "ic_menu_notification_outline_28", preference -> { Context context = getContext(); Intent a2 = new Navigator(NotificationsSettingsFragment.class).b(context); a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); @@ -281,7 +280,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{ }); if (VKAccountManager.d().isMusicSubs()) { - addPreference(this, "", Globals.getString("subscription_music"), "", !DoNotUseOldIcons() ? "ic_music_24" : "ic_music_outline_28", preference -> { + addPreference(this, "", AndroidUtils.getString("subscription_music"), "", !DoNotUseOldIcons() ? "ic_music_24" : "ic_music_outline_28", preference -> { Context context = getContext(); Intent a2 = new Navigator(MusicSubscriptionControlFragment.class).b(context); a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); @@ -290,7 +289,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{ }); } - addPreference(this, "", Globals.getString("votes"), "", !DoNotUseOldIcons() ? "ic_coins_24" : "ic_coins_outline_28", preference -> { + addPreference(this, "", AndroidUtils.getString("votes"), "", !DoNotUseOldIcons() ? "ic_coins_24" : "ic_coins_outline_28", preference -> { Context context = getContext(); Intent a2 = new Navigator(BalanceFragment.class).b(context); a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); @@ -298,10 +297,10 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{ return false; }); - addPreferenceCategory(this, Globals.getString("vtsettmod")); + addPreferenceCategory(this, AndroidUtils.getString("vtsettmod")); if (!vkme()) { - addPreference(this, "", Globals.getString("vtlfeed"), feedsumm, !DoNotUseOldIcons() ? "ic_newsfeed_24" : "ic_newsfeed_outline_28", preference -> { + addPreference(this, "", AndroidUtils.getString("vtlfeed"), feedsumm, !DoNotUseOldIcons() ? "ic_newsfeed_24" : "ic_newsfeed_outline_28", preference -> { Context context = getContext(); Intent a2 = new Navigator(FeedFragment.class).b(context); a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); @@ -309,7 +308,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{ return false; }); - addPreference(this, "", Globals.getString("dockbar_editor"), docksumm, !DoNotUseOldIcons() ? "ic_list_24" : "ic_list_outline_28", preference -> { + addPreference(this, "", AndroidUtils.getString("dockbar_editor"), docksumm, !DoNotUseOldIcons() ? "ic_list_24" : "ic_list_outline_28", preference -> { Context context = getContext(); Intent intent = new Navigator(DockBarEditorFragment.class).b(context); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); @@ -330,7 +329,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{ addPreference(this, "", "Внимание!", "Некоторые пункты настроек были скрыты из-за режима VK Me \n\nДля отключения режима перейдите в настройки Сообщений", !DoNotUseOldIcons() ? "ic_about_24" : "ic_about_outline_28", preference -> false); } - addPreference(this, "", Globals.getString("vtlmedia"), mediasumm, "ic_media_outline_28", preference -> { + addPreference(this, "", AndroidUtils.getString("vtlmedia"), mediasumm, "ic_media_outline_28", preference -> { Context context = getContext(); Intent a2 = new Navigator(MediaFragment.class).b(context); a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); @@ -338,7 +337,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{ return false; }); - addPreference(this, "", Globals.getString("vtlmessages"), msgsumm, !DoNotUseOldIcons() ? "ic_message_24" : "ic_message_outline_28", preference -> { + addPreference(this, "", AndroidUtils.getString("vtlmessages"), msgsumm, !DoNotUseOldIcons() ? "ic_message_24" : "ic_message_outline_28", preference -> { Context context = getContext(); Intent a2 = new Navigator(MessagesFragment.class).b(context); a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); @@ -346,7 +345,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{ return false; }); - addPreference(this, "", Globals.getString("vtlactivity"), activitysumm, !DoNotUseOldIcons() ? "ic_write_24" : "ic_write_outline_28_new_accent", preference -> { + addPreference(this, "", AndroidUtils.getString("vtlactivity"), activitysumm, !DoNotUseOldIcons() ? "ic_write_24" : "ic_write_outline_28_new_accent", preference -> { Context context = getContext(); Intent a2 = new Navigator(ActivityFragment.class).b(context); a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); @@ -354,7 +353,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{ return false; }); - addPreference(this, "", Globals.getString("vtlthemes"), themessumm, !DoNotUseOldIcons() ? "ic_palette_24" : "ic_write_outline_24", preference -> { + addPreference(this, "", AndroidUtils.getString("vtlthemes"), themessumm, !DoNotUseOldIcons() ? "ic_palette_24" : "ic_write_outline_24", preference -> { Context context = getContext(); Intent a2 = new Navigator(ThemesFragment.class).b(context); a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); @@ -362,7 +361,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{ return false; }); - addPreference(this, "", Globals.getString("vtltgs"), tgssumm, !DoNotUseOldIcons() ? "ic_telegram_24" : "ic_telegram_outline_28", preference -> { + addPreference(this, "", AndroidUtils.getString("vtltgs"), tgssumm, !DoNotUseOldIcons() ? "ic_telegram_24" : "ic_telegram_outline_28", preference -> { Context context = getContext(); Intent a2 = new Navigator(StickersFragment.class).b(context); a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); @@ -370,7 +369,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{ return false; }); - addPreference(this, "", Globals.getString("vtlinterface"), interfacesumm, !DoNotUseOldIcons() ? "ic_interface_24" : "ic_interface_outline_28", preference -> { + addPreference(this, "", AndroidUtils.getString("vtlinterface"), interfacesumm, !DoNotUseOldIcons() ? "ic_interface_24" : "ic_interface_outline_28", preference -> { Context context = getContext(); Intent a2 = new Navigator(InterfaceFragment.class).b(context); a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); @@ -378,7 +377,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{ return false; }); - addPreference(this, "", Globals.getString("vtlproxy"), proxysumm, !DoNotUseOldIcons() ? "ic_globe_20" : "ic_globe_outline_28", preference -> { + addPreference(this, "", AndroidUtils.getString("vtlproxy"), proxysumm, !DoNotUseOldIcons() ? "ic_globe_20" : "ic_globe_outline_28", preference -> { Context context = getContext(); Intent a2 = new Navigator(ProxySettingsFragment.class).b(context); a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); @@ -386,13 +385,13 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{ return false; }); - addListPreferenceIcon(this, "clearcache", "Default", Globals.getString("autoclearcache"), !DoNotUseOldIcons() ? "ic_delete_24" : "ic_delete_outline_28", getCachesumm(), new CharSequence[] { - Globals.getString("autoclearcachedisabled"), "100 MB", "500 MB", "1 GB", "2 GB", "5 GB" - }, new String[] { + addListPreferenceIcon(this, "clearcache", "Default", AndroidUtils.getString("autoclearcache"), !DoNotUseOldIcons() ? "ic_delete_24" : "ic_delete_outline_28", getCachesumm(), new CharSequence[]{ + AndroidUtils.getString("autoclearcachedisabled"), "100 MB", "500 MB", "1 GB", "2 GB", "5 GB" + }, new String[]{ "Default", "100mb", "500mb", "1gb", "2gb", "5gb" }, null); - addPreference(this, "", Globals.getString("vtlother"), othersumm, !DoNotUseOldIcons() ? "ic_more_24" : "ic_more_horizontal_28", preference -> { + addPreference(this, "", AndroidUtils.getString("vtlother"), othersumm, !DoNotUseOldIcons() ? "ic_more_24" : "ic_more_horizontal_28", preference -> { Context context = getContext(); Intent a2 = new Navigator(OtherFragment.class).b(context); a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); @@ -400,9 +399,9 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{ return false; }); - addPreferenceCategory(this, Globals.getString("vtsettaboutmod")); + addPreferenceCategory(this, AndroidUtils.getString("vtsettaboutmod")); - addPreference(this, "", Globals.getString("menu_about"), about, !DoNotUseOldIcons() ? "ic_about_24" : "ic_about_outline_28", preference -> { + addPreference(this, "", AndroidUtils.getString("menu_about"), about, !DoNotUseOldIcons() ? "ic_about_24" : "ic_about_outline_28", preference -> { Context context = getContext(); Intent a2 = new Navigator(AboutAppFragment.class).b(context); a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); @@ -410,30 +409,30 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{ return false; }); - addPreference(this, "", Globals.getString("opencommit"), "", !DoNotUseOldIcons() ? "ic_link_24" : "ic_link_outline_28", preference -> { + addPreference(this, "", AndroidUtils.getString("opencommit"), "", !DoNotUseOldIcons() ? "ic_link_24" : "ic_link_outline_28", preference -> { getContext().startActivity(new Intent("android.intent.action.VIEW").setData(Uri.parse(getCommitLink()))); return false; }); - addPreference(this, "", Globals.getString("vtfaq"), Globals.getString("vtfaqsumm"), !DoNotUseOldIcons() ? "ic_help_24" : "ic_help_outline_24", preference -> { + addPreference(this, "", AndroidUtils.getString("vtfaq"), AndroidUtils.getString("vtfaqsumm"), !DoNotUseOldIcons() ? "ic_help_24" : "ic_help_outline_24", preference -> { getContext().startActivity(new Intent("android.intent.action.VIEW").setData(Uri.parse("https://t.me/s/vtosters_faq"))); return false; }); - addPreference(this, "", Globals.getString("reportbug"), Globals.getString("reportbugsumm"), !DoNotUseOldIcons() ? "ic_bug_24" : "ic_bug_outline_28", preference -> { + addPreference(this, "", AndroidUtils.getString("reportbug"), AndroidUtils.getString("reportbugsumm"), !DoNotUseOldIcons() ? "ic_bug_24" : "ic_bug_outline_28", preference -> { getContext().startActivity(new Intent("android.intent.action.VIEW").setData(Uri.parse("https://github.com/vtosters/lite/issues"))); return false; }); if (isValidSignature()) { - addPreferenceCategory(this, Globals.getString("updates")); + addPreferenceCategory(this, AndroidUtils.getString("updates")); - addPreference(this, "", Globals.getString("checkforupdates"), "", "ic_download_outline_24", preference -> { + addPreference(this, "", AndroidUtils.getString("checkforupdates"), "", "ic_download_outline_24", preference -> { OTADialog.checkUpdates(getActivity()); return false; }); - addMaterialSwitchPreference(this, "checkupdates", Globals.getString("checkupdates"), "", "ic_recent_outline_28", true, (preference, o) -> { + addMaterialSwitchPreference(this, "checkupdates", AndroidUtils.getString("checkupdates"), "", "ic_recent_outline_28", true, (preference, o) -> { boolean value = (boolean) o; edit().putBoolean("checkupdates", value).commit(); @@ -444,12 +443,12 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{ } @Override - public void onResume(){ + public void onResume() { super.onResume(); } @Override - public int T4(){ + public int T4() { return getIdentifier("notification_settings", "string"); } } diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/tgstickers/StickersFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/tgstickers/StickersFragment.java index 7e8e6a4c6..cee954261 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/tgstickers/StickersFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/tgstickers/StickersFragment.java @@ -3,10 +3,9 @@ package ru.vtosters.lite.ui.fragments.tgstickers; import static android.widget.Toast.LENGTH_SHORT; import static android.widget.Toast.makeText; import static ru.vtosters.lite.tgs.TGPref.setTGBotKey; -import static ru.vtosters.lite.utils.Globals.convertDpToPixel; -import static ru.vtosters.lite.utils.Globals.getIdentifier; -import static ru.vtosters.lite.utils.Themes.getAccentColor; -import static ru.vtosters.lite.utils.Themes.getAlertStyle; +import static ru.vtosters.lite.utils.AndroidUtils.dp2px; +import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier; +import static ru.vtosters.lite.utils.ThemesUtils.getAccentColor; import android.app.AlertDialog; import android.app.ProgressDialog; @@ -43,9 +42,9 @@ import ru.vtosters.lite.tgs.TGPref; import ru.vtosters.lite.ui.PreferencesUtil; import ru.vtosters.lite.ui.adapters.StickerPackAdapter; import ru.vtosters.lite.ui.fragments.BaseToolbarFragment; -import ru.vtosters.lite.utils.Globals; +import ru.vtosters.lite.utils.AndroidUtils; -public class StickersFragment extends BaseToolbarFragment{ +public class StickersFragment extends BaseToolbarFragment { public final static String ACTION_RELOAD = "com.vtosters.lite.action.RELOAD_TGS_LIST"; @@ -58,9 +57,9 @@ public class StickersFragment extends BaseToolbarFragment{ private RecyclerView mRecycler; private StickerPackAdapter mAdapter; private boolean movePending = false; - private final BroadcastReceiver mReceiver = new BroadcastReceiver(){ + private final BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override - public void onReceive(Context context, Intent intent){ + public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(ACTION_RELOAD)) { if (mAdapter != null) { try { @@ -81,7 +80,7 @@ public class StickersFragment extends BaseToolbarFragment{ }; @Override - protected void onCreateMenu(Menu menu){ + protected void onCreateMenu(Menu menu) { var item = menu.add(0, 0, 0, ""); item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); item.setIcon(getResources().getDrawable(getIdentifier("ic_settings_24", "drawable"))); @@ -90,12 +89,12 @@ public class StickersFragment extends BaseToolbarFragment{ } @Override - public boolean onOptionsItemSelected(MenuItem arg0){ + public boolean onOptionsItemSelected(MenuItem arg0) { openMenu(null); return true; } - private void openMenu(String toast){ + private void openMenu(String toast) { if (toast != null) { makeText(getContext(), toast, LENGTH_SHORT).show(); } @@ -105,7 +104,7 @@ public class StickersFragment extends BaseToolbarFragment{ } @Override - public void onCreate(@Nullable Bundle savedInstanceState){ + public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); getContext().registerReceiver(mReceiver, new IntentFilter(ACTION_RELOAD)); @@ -114,7 +113,7 @@ public class StickersFragment extends BaseToolbarFragment{ } @Override - public View onCreateContent(@NonNull LayoutInflater inflater, @Nullable Bundle bundle){ + public View onCreateContent(@NonNull LayoutInflater inflater, @Nullable Bundle bundle) { setTitle(getIdentifier("vtltgs", "string")); FrameLayout layout = new FrameLayout(getContext()); @@ -132,7 +131,7 @@ public class StickersFragment extends BaseToolbarFragment{ FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(-2, -2); params.gravity = Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL; - params.setMargins(0, 0, 0, convertDpToPixel(12f)); + params.setMargins(0, 0, 0, dp2px(12f)); layout.addView(mAddStickerPack, params); return layout; @@ -140,27 +139,27 @@ public class StickersFragment extends BaseToolbarFragment{ @Override - public void onViewCreated(View arg0, Bundle arg1){ + public void onViewCreated(View arg0, Bundle arg1) { super.onViewCreated(arg0, arg1); } @Override - public void onDestroyView(){ + public void onDestroyView() { super.onDestroyView(); getContext().unregisterReceiver(mReceiver); } - private void fabClick(){ + private void fabClick() { int method = TGPref.getTGConnectMethod(); if (method == -1) { - openMenu(Globals.getString("stickersconnection")); + openMenu(AndroidUtils.getString("stickersconnection")); return; } initGrabber(); if (method == TYPE_SOCKS) { if (TGPref.getTGProxyIP() == null) { - openMenu(Globals.getString("stickersproxy1")); + openMenu(AndroidUtils.getString("stickersproxy1")); } } else if (method == TYPE_DIRECT) { final Runnable callback = () -> { @@ -173,12 +172,12 @@ public class StickersFragment extends BaseToolbarFragment{ linearLayout.addView(editText); editText.getLayoutParams().width = ViewGroup.LayoutParams.MATCH_PARENT; ViewGroup.MarginLayoutParams margin = ((ViewGroup.MarginLayoutParams) editText.getLayoutParams()); - margin.setMargins(convertDpToPixel(24f), 0, convertDpToPixel(24f), 0); + margin.setMargins(dp2px(24f), 0, dp2px(24f), 0); editText.setLayoutParams(margin); var dlg = new AlertDialog.Builder(getContext()); - dlg.setTitle(Globals.getString("stickershelp1")); - dlg.setMessage(Globals.getString("stickershelp2")); + dlg.setTitle(AndroidUtils.getString("stickershelp1")); + dlg.setMessage(AndroidUtils.getString("stickershelp2")); dlg.setView(linearLayout); dlg.setPositiveButton(android.R.string.ok, (dialog, which) -> { String pack = editText.getText().toString(); @@ -199,7 +198,7 @@ public class StickersFragment extends BaseToolbarFragment{ } } - private void initGrabber(){ + private void initGrabber() { int method = TGPref.getTGConnectMethod(); if (method == TYPE_DIRECT) { TelegramStickersGrabber.USE_PROXY = false; @@ -220,7 +219,7 @@ public class StickersFragment extends BaseToolbarFragment{ TelegramStickersGrabber.updateURLs(); } - private void enterBotKey(Runnable r){ + private void enterBotKey(Runnable r) { LinearLayout linearLayout = new LinearLayout(getContext()); final EditText editText = new EditText(getContext()); @@ -230,25 +229,25 @@ public class StickersFragment extends BaseToolbarFragment{ linearLayout.addView(editText); editText.getLayoutParams().width = ViewGroup.LayoutParams.MATCH_PARENT; ViewGroup.MarginLayoutParams margin = ((ViewGroup.MarginLayoutParams) editText.getLayoutParams()); - margin.setMargins(convertDpToPixel(24f), 0, convertDpToPixel(24f), 0); + margin.setMargins(dp2px(24f), 0, dp2px(24f), 0); editText.setLayoutParams(margin); AlertDialog alert = new AlertDialog.Builder(getContext()) - .setTitle(Globals.getString("stickersapi8")) - .setMessage(Globals.getString("stickersapi9") + - Globals.getString("stickersapi10")).setPositiveButton(android.R.string.ok, null) + .setTitle(AndroidUtils.getString("stickersapi8")) + .setMessage(AndroidUtils.getString("stickersapi9") + + AndroidUtils.getString("stickersapi10")).setPositiveButton(android.R.string.ok, null) .create(); var dlg = new AlertDialog.Builder(getContext()); - dlg.setTitle(Globals.getString("stickersapi5")); - dlg.setMessage(Globals.getString("stickersapi6")); + dlg.setTitle(AndroidUtils.getString("stickersapi5")); + dlg.setMessage(AndroidUtils.getString("stickersapi6")); dlg.setView(linearLayout); dlg.setPositiveButton(android.R.string.ok, (dialog, which) -> { setTGBotKey(editText.getText().toString()); if (r != null) r.run(); }); dlg.setNegativeButton(android.R.string.cancel, null) - .setNeutralButton(Globals.getString("stickersapi7"), + .setNeutralButton(AndroidUtils.getString("stickersapi7"), (dialog, which) -> alert.show()); var alerts = dlg.create(); @@ -259,22 +258,22 @@ public class StickersFragment extends BaseToolbarFragment{ alerts.getButton(DialogInterface.BUTTON_NEGATIVE).setTextColor(getAccentColor()); } - private void checkApiKey(Runnable callback){ + private void checkApiKey(Runnable callback) { mGrabber.setBotApiKey(TGPref.getTGBotKey()); var context = getContext(); final ProgressDialog progressDialog = new ProgressDialog(context); progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); - progressDialog.setMessage(Globals.getString("stickersapi1")); + progressDialog.setMessage(AndroidUtils.getString("stickersapi1")); progressDialog.show(); - mGrabber.checkKey(new TelegramStickersGrabber.KeyCheckListener(){ + mGrabber.checkKey(new TelegramStickersGrabber.KeyCheckListener() { @Override - public void onKeyChecked(boolean ok){ + public void onKeyChecked(boolean ok) { progressDialog.dismiss(); if (!ok) { - makeText(context, Globals.getString("stickersapi2"), LENGTH_SHORT).show(); + makeText(context, AndroidUtils.getString("stickersapi2"), LENGTH_SHORT).show(); setTGBotKey(null); return; } @@ -284,19 +283,19 @@ public class StickersFragment extends BaseToolbarFragment{ } @Override - public void onNetError(){ + public void onNetError() { progressDialog.dismiss(); new AlertDialog.Builder(context) - .setMessage(Globals.getString("stickersapi3")) + .setMessage(AndroidUtils.getString("stickersapi3")) .setNegativeButton(android.R.string.cancel, null) - .setPositiveButton(Globals.getString("stickersapi4"), (arg0, arg1) -> checkApiKey(callback)) + .setPositiveButton(AndroidUtils.getString("stickersapi4"), (arg0, arg1) -> checkApiKey(callback)) .create() .show(); } }); } - private String parsePack(String pack){ + private String parsePack(String pack) { if (pack.startsWith("https://t.me/addstickers/")) { pack = pack.substring(25); } else if (pack.startsWith("https://telegram.me/addstickers/")) { diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/tgstickers/StickersPreferencesFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/tgstickers/StickersPreferencesFragment.java index 0365409d9..da082d584 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/tgstickers/StickersPreferencesFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/tgstickers/StickersPreferencesFragment.java @@ -1,6 +1,6 @@ package ru.vtosters.lite.ui.fragments.tgstickers; -import static ru.vtosters.lite.utils.Globals.getIdentifier; +import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier; import android.os.Bundle; @@ -11,28 +11,28 @@ import com.vtosters.lite.general.fragments.MaterialPreferenceToolbarFragment; import ru.vtosters.lite.tgs.TGPref; import ru.vtosters.lite.tgs.TGRoot; import ru.vtosters.lite.ui.PreferencesUtil; -import ru.vtosters.lite.utils.Globals; +import ru.vtosters.lite.utils.AndroidUtils; -public class StickersPreferencesFragment extends MaterialPreferenceToolbarFragment{ +public class StickersPreferencesFragment extends MaterialPreferenceToolbarFragment { @Override - public void onCreate(Bundle bundle){ + public void onCreate(Bundle bundle) { super.onCreate(bundle); int vtosterXml = getIdentifier("empty", "xml"); addPreferencesFromResource(vtosterXml); - PreferencesUtil.addPreferenceCategory(this, Globals.getString("sprefsstickers")); - PreferencesUtil.addPreference(this, "", Globals.getString("sprefsdelkey"), "", null, preference -> { + PreferencesUtil.addPreferenceCategory(this, AndroidUtils.getString("sprefsstickers")); + PreferencesUtil.addPreference(this, "", AndroidUtils.getString("sprefsdelkey"), "", null, preference -> { TGPref.setTGBotKey(null); - ToastUtils.a(Globals.getString("sprefsdelkey2")); + ToastUtils.a(AndroidUtils.getString("sprefsdelkey2")); return false; }); - PreferencesUtil.addPreferenceCategory(this, Globals.getString("sprefsnetwork")); - PreferencesUtil.addListPreference(this, "VTGS:CM", "0", Globals.getString("sprefsctype"), new CharSequence[] { - Globals.getString("ctypedirect"), Globals.getString("ctypesocks") - }, new String[] { + PreferencesUtil.addPreferenceCategory(this, AndroidUtils.getString("sprefsnetwork")); + PreferencesUtil.addListPreference(this, "VTGS:CM", "0", AndroidUtils.getString("sprefsctype"), new CharSequence[]{ + AndroidUtils.getString("ctypedirect"), AndroidUtils.getString("ctypesocks") + }, new String[]{ "0", "2" }); @@ -46,22 +46,22 @@ public class StickersPreferencesFragment extends MaterialPreferenceToolbarFragme return true; }); - PreferencesUtil.addPreferenceCategory(this, Globals.getString("ssocks")); + PreferencesUtil.addPreferenceCategory(this, AndroidUtils.getString("ssocks")); - PreferencesUtil.addEditTextPreference(this, "tg_proxy_host", Globals.getString("ssockshost"), (preference, o) -> { + PreferencesUtil.addEditTextPreference(this, "tg_proxy_host", AndroidUtils.getString("ssockshost"), (preference, o) -> { TGPref.setTGProxyIP((String) o); return true; }); - PreferencesUtil.addEditTextPreference(this, "tg_proxy_port", Globals.getString("ssocksport"), (preference, o) -> { + PreferencesUtil.addEditTextPreference(this, "tg_proxy_port", AndroidUtils.getString("ssocksport"), (preference, o) -> { try { TGPref.setTGProxyPort(Integer.parseInt((String) o)); return true; } catch (Exception e) { - ToastUtils.a(Globals.getString("ssockswport")); + ToastUtils.a(AndroidUtils.getString("ssockswport")); return false; } }); - PreferencesUtil.addMaterialSwitchPreference(this, "tg_proxy_auth", Globals.getString("ssocksauth"), "", null, false, (preference, o) -> { + PreferencesUtil.addMaterialSwitchPreference(this, "tg_proxy_auth", AndroidUtils.getString("ssocksauth"), "", null, false, (preference, o) -> { boolean value = (boolean) o; findPreference("tg_proxy_login").setEnabled(value); // findPreference("tg_proxy_login").setEnabled(value); @@ -70,11 +70,11 @@ public class StickersPreferencesFragment extends MaterialPreferenceToolbarFragme TGPref.setTGProxyPassEnabled(value); return true; }); - PreferencesUtil.addEditTextPreference(this, "tg_proxy_login", Globals.getString("ssockslogin"), (preference, o) -> { + PreferencesUtil.addEditTextPreference(this, "tg_proxy_login", AndroidUtils.getString("ssockslogin"), (preference, o) -> { TGPref.setTGProxyUserPass((String) o, TGPref.getTGProxyPass()); return true; }); - PreferencesUtil.addEditTextPreference(this, "tg_proxy_pass", Globals.getString("ssockspass"), (preference, o) -> { + PreferencesUtil.addEditTextPreference(this, "tg_proxy_pass", AndroidUtils.getString("ssockspass"), (preference, o) -> { TGPref.setTGProxyUserPass(TGPref.getTGProxyUser(), (String) o); return true; }); @@ -84,7 +84,7 @@ public class StickersPreferencesFragment extends MaterialPreferenceToolbarFragme } @Override - public int T4(){ + public int T4() { return getIdentifier("vtltgs", "string"); } } diff --git a/app/src/main/java/ru/vtosters/lite/ui/items/DockBarTab.java b/app/src/main/java/ru/vtosters/lite/ui/items/DockBarTab.java index afa72f446..be1e00f98 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/items/DockBarTab.java +++ b/app/src/main/java/ru/vtosters/lite/ui/items/DockBarTab.java @@ -2,7 +2,7 @@ package ru.vtosters.lite.ui.items; import com.vk.core.fragments.FragmentImpl; -public class DockBarTab{ +public class DockBarTab { public String tag; public int iconID; @@ -15,7 +15,7 @@ public class DockBarTab{ int iconID, int titleID, int resID, - Class fragmentClass){ + Class fragmentClass) { this.tag = tag; this.iconID = iconID; this.titleID = titleID; @@ -28,7 +28,7 @@ public class DockBarTab{ int iconID, int titleID, int resID, - Class fragmentClass){ + Class fragmentClass) { return new DockBarTab(tag, iconID, titleID, resID, fragmentClass); } } diff --git a/app/src/main/java/ru/vtosters/lite/ui/vkui/MenuBuilder.java b/app/src/main/java/ru/vtosters/lite/ui/vkui/MenuBuilder.java index ef1078915..70fd6fc18 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/vkui/MenuBuilder.java +++ b/app/src/main/java/ru/vtosters/lite/ui/vkui/MenuBuilder.java @@ -1,8 +1,8 @@ package ru.vtosters.lite.ui.vkui; import static ru.vtosters.lite.foaf.FoafBase.loadAndShow; -import static ru.vtosters.lite.utils.Globals.getUserID; -import static ru.vtosters.lite.utils.Globals.sendToast; +import static ru.vtosters.lite.utils.AccountManagerUtils.getUserID; +import static ru.vtosters.lite.utils.AndroidUtils.sendToast; import android.content.ClipData; import android.content.ClipboardManager; @@ -26,13 +26,13 @@ import kotlin.Unit; import kotlin.jvm.b.Functions; import ru.vtosters.lite.utils.RenameTool; -public class MenuBuilder{ +public class MenuBuilder { private static Field apView; private static Field pfambObject; private static Field cfambObject; private static Method apMethod; - static{ + static { try { apView = ActionsPopup.b.class.getDeclaredField("g"); apView.setAccessible(true); @@ -50,7 +50,7 @@ public class MenuBuilder{ } } - public static void injectAP(final ProfileFragmentActionsMenuBuilder mb, final ActionsPopup.b builder){ + public static void injectAP(final ProfileFragmentActionsMenuBuilder mb, final ActionsPopup.b builder) { try { final ExtendedUserProfile eup = (ExtendedUserProfile) pfambObject.get(mb); final Context ctx = ((View) Objects.requireNonNull(apView.get(builder))).getContext(); @@ -75,7 +75,7 @@ public class MenuBuilder{ } } - public static void injectAP(final CommunityFragmentActionsMenuBuilder mb, final ActionsPopup.b builder){ + public static void injectAP(final CommunityFragmentActionsMenuBuilder mb, final ActionsPopup.b builder) { try { final ExtendedCommunityProfile ecp = (ExtendedCommunityProfile) cfambObject.get(mb); final Context ctx = ((View) apView.get(builder)).getContext(); @@ -95,7 +95,7 @@ public class MenuBuilder{ } } - public static void copy(Context ctx, String txt){ + public static void copy(Context ctx, String txt) { ClipboardManager clipboard = (ClipboardManager) ctx.getSystemService(Context.CLIPBOARD_SERVICE); ClipData clip = ClipData.newPlainText("MBH-ST", txt); clipboard.setPrimaryClip(clip); @@ -103,7 +103,7 @@ public class MenuBuilder{ sendToast("Скопировано!"); } - public static void addItem(final ActionsPopup.b builder, final String title, final Functions onClick) throws InvocationTargetException, IllegalAccessException{ + public static void addItem(final ActionsPopup.b builder, final String title, final Functions onClick) throws InvocationTargetException, IllegalAccessException { apMethod.invoke(builder, title, null, onClick); } } \ No newline at end of file diff --git a/app/src/main/java/ru/vtosters/lite/ui/vkui/ModalBottomSheetWrapper.java b/app/src/main/java/ru/vtosters/lite/ui/vkui/ModalBottomSheetWrapper.java index 215d0db7f..8fc82e479 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/vkui/ModalBottomSheetWrapper.java +++ b/app/src/main/java/ru/vtosters/lite/ui/vkui/ModalBottomSheetWrapper.java @@ -1,41 +1,39 @@ package ru.vtosters.lite.ui.vkui; -import static ru.vtosters.lite.utils.Globals.*; -import static ru.vtosters.lite.utils.Globals.getString; -import static ru.vtosters.lite.utils.Themes.getTextAttr; +import static ru.vtosters.lite.utils.AndroidUtils.dp2px; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; +import static ru.vtosters.lite.utils.AndroidUtils.getString; +import static ru.vtosters.lite.utils.ThemesUtils.getTextAttr; import android.annotation.SuppressLint; import android.app.Activity; -import android.graphics.Typeface; import android.view.View; import android.widget.LinearLayout; import android.widget.TextView; import com.vk.core.dialogs.bottomsheet.ModalBottomSheet; -import ru.vtosters.lite.utils.Globals; - -public class ModalBottomSheetWrapper{ +public class ModalBottomSheetWrapper { public final ModalBottomSheet.a builder; - public ModalBottomSheetWrapper(Activity activity){ + public ModalBottomSheetWrapper(Activity activity) { builder = new ModalBottomSheet.a(activity); } - public ModalBottomSheetWrapper setTitle(String title){ + public ModalBottomSheetWrapper setTitle(String title) { builder.d(title); return this; } @SuppressLint("SetTextI18n") - public ModalBottomSheetWrapper setUpdateInfoView(String changelog){ - var context = getContext(); + public ModalBottomSheetWrapper setUpdateInfoView(String changelog) { + var context = getGlobalContext(); var container = new LinearLayout(context); var changelogView = new TextView(context); container.setOrientation(LinearLayout.VERTICAL); - changelogView.setPadding(0, convertDpToPixel(8), 0, 0); + changelogView.setPadding(0, dp2px(8), 0, 0); changelogView.setText(getString("changelog") + ": \n" + changelog); changelogView.setTextColor(getTextAttr()); container.addView(changelogView, new LinearLayout.LayoutParams(-1, -2)); @@ -48,7 +46,7 @@ public class ModalBottomSheetWrapper{ public ModalBottomSheetWrapper setClickableMessage( String text, Runnable callback - ){ + ) { builder.a(text, listener -> callback.run()); return this; } @@ -56,21 +54,21 @@ public class ModalBottomSheetWrapper{ public ModalBottomSheetWrapper setPositiveButton( String text, Runnable callback - ){ + ) { builder.a(text, kostil -> callback.run()); return this; } - public ModalBottomSheetWrapper setView(View view){ + public ModalBottomSheetWrapper setView(View view) { builder.a(view); return this; } - public ModalBottomSheet show(){ + public ModalBottomSheet show() { return builder.a(""); } - public ModalBottomSheet show(boolean isCancellable){ + public ModalBottomSheet show(boolean isCancellable) { var sheet = builder.a(""); sheet.setCancelable(isCancellable); return sheet; diff --git a/app/src/main/java/ru/vtosters/lite/ui/vkui/VBottomSheetBuilder.java b/app/src/main/java/ru/vtosters/lite/ui/vkui/VBottomSheetBuilder.java index e384a563b..dfafff93d 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/vkui/VBottomSheetBuilder.java +++ b/app/src/main/java/ru/vtosters/lite/ui/vkui/VBottomSheetBuilder.java @@ -1,4 +1,5 @@ package ru.vtosters.lite.ui.vkui; + import android.app.Activity; import android.os.Handler; import android.os.Looper; @@ -6,8 +7,8 @@ import android.view.View; import androidx.annotation.Nullable; -public class VBottomSheetBuilder{ - public static void show(Activity activity, VBSContent content){ +public class VBottomSheetBuilder { + public static void show(Activity activity, VBSContent content) { ModalBottomSheetWrapper builder = new ModalBottomSheetWrapper(activity); builder.setView(content.view); @@ -22,23 +23,23 @@ public class VBottomSheetBuilder{ builder.show(); // Build+Show } - public static class VBSContent{ + public static class VBSContent { public String title; @Nullable public View view; public VBSButton button; - public VBSContent(String title, @Nullable View view, VBSButton button){ + public VBSContent(String title, @Nullable View view, VBSButton button) { this.title = title; this.view = view; this.button = button; } - public static class VBSButton{ + public static class VBSButton { public String title; public Runnable action; - public VBSButton(String title, Runnable action){ + public VBSButton(String title, Runnable action) { this.title = title; this.action = action; } diff --git a/app/src/main/java/ru/vtosters/lite/ui/wallpapers/ConvolutionMatrix.java b/app/src/main/java/ru/vtosters/lite/ui/wallpapers/ConvolutionMatrix.java index 2fc6f915a..1e195f190 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/wallpapers/ConvolutionMatrix.java +++ b/app/src/main/java/ru/vtosters/lite/ui/wallpapers/ConvolutionMatrix.java @@ -1,19 +1,20 @@ package ru.vtosters.lite.ui.wallpapers; + import android.graphics.Bitmap; import android.graphics.Color; -public class ConvolutionMatrix{ +public class ConvolutionMatrix { public static final int SIZE = 3; public double[][] Matrix; public double Factor = 1; public double Offset = 1; - public ConvolutionMatrix(int size){ + public ConvolutionMatrix(int size) { Matrix = new double[size][size]; } - public static Bitmap computeConvolution3x3(Bitmap src, ConvolutionMatrix matrix){ + public static Bitmap computeConvolution3x3(Bitmap src, ConvolutionMatrix matrix) { int width = src.getWidth(); int height = src.getHeight(); Bitmap result = Bitmap.createBitmap(width, height, src.getConfig()); @@ -80,7 +81,7 @@ public class ConvolutionMatrix{ return result; } - public void setAll(double value){ + public void setAll(double value) { for (int x = 0; x < SIZE; ++x) { for (int y = 0; y < SIZE; ++y) { Matrix[x][y] = value; @@ -88,7 +89,7 @@ public class ConvolutionMatrix{ } } - public void applyConfig(double[][] config){ + public void applyConfig(double[][] config) { for (int x = 0; x < SIZE; ++x) { for (int y = 0; y < SIZE; ++y) { Matrix[x][y] = config[x][y]; diff --git a/app/src/main/java/ru/vtosters/lite/ui/wallpapers/ImageFilters.java b/app/src/main/java/ru/vtosters/lite/ui/wallpapers/ImageFilters.java index e0cbbcf6a..d88f9ee78 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/wallpapers/ImageFilters.java +++ b/app/src/main/java/ru/vtosters/lite/ui/wallpapers/ImageFilters.java @@ -1,6 +1,7 @@ package ru.vtosters.lite.ui.wallpapers; -import static ru.vtosters.lite.utils.Globals.getPreferences; -import static ru.vtosters.lite.utils.Globals.getResources; + +import static ru.vtosters.lite.utils.AndroidUtils.getPreferences; +import static ru.vtosters.lite.utils.AndroidUtils.getResources; import android.graphics.Bitmap; import android.graphics.Canvas; @@ -16,14 +17,14 @@ import com.vk.medianative.MediaNative; import java.util.Random; -public class ImageFilters{ +public class ImageFilters { public static final double PI = 3.14159d; public static final double HALF_CIRCLE_DEGREE = 180d; public static final double RANGE = 256d; public static final int COLOR_MIN = 0x00; public static final int COLOR_MAX = 0xFF; - public static Drawable getFilteredDrawable(Drawable orig){ + public static Drawable getFilteredDrawable(Drawable orig) { if (orig == null) return null; if (!(orig instanceof BitmapDrawable)) return orig; Bitmap instance = ((BitmapDrawable) orig).getBitmap().copy(Bitmap.Config.ARGB_8888, true); @@ -55,7 +56,7 @@ public class ImageFilters{ return new BitmapDrawable(getResources(), instance); } - public static Drawable getBlurredWallpaper(Drawable orig, int radius){ + public static Drawable getBlurredWallpaper(Drawable orig, int radius) { try { if (orig == null) return null; if (!(orig instanceof BitmapDrawable)) return orig; // we need only BitmapDrawable @@ -68,7 +69,7 @@ public class ImageFilters{ } } - public static Drawable getMosaic(Drawable orig){ + public static Drawable getMosaic(Drawable orig) { int scale = 100; if (orig == null) return null; @@ -76,7 +77,7 @@ public class ImageFilters{ Bitmap instance = ((BitmapDrawable) orig).getBitmap().copy(Bitmap.Config.ARGB_8888, true); String radius = getPreferences().getString("msg_mosaic", "disabled"); - switch(radius) { + switch (radius) { case "high": scale = 25; break; @@ -93,12 +94,12 @@ public class ImageFilters{ return new BitmapDrawable(getResources(), mosaicBitmap); } - public static Drawable getDimmed(Drawable orig){ + public static Drawable getDimmed(Drawable orig) { if (orig == null) return null; if (!(orig instanceof BitmapDrawable)) return orig; Bitmap instance = ((BitmapDrawable) orig).getBitmap().copy(Bitmap.Config.ARGB_8888, true); String radius = getPreferences().getString("msg_dim", "disabled"); - switch(radius) { + switch (radius) { case "dim_black": darken(instance); case "dim_white": @@ -107,7 +108,7 @@ public class ImageFilters{ return new BitmapDrawable(getResources(), instance); } - public static Drawable getMonochrome(Drawable orig){ + public static Drawable getMonochrome(Drawable orig) { if (orig == null) return null; if (!(orig instanceof BitmapDrawable)) return orig; Bitmap instance = ((BitmapDrawable) orig).getBitmap().copy(Bitmap.Config.ARGB_8888, true); @@ -128,7 +129,7 @@ public class ImageFilters{ return new BitmapDrawable(getResources(), bwBitmap); } - private static void darken(Bitmap bm){ + private static void darken(Bitmap bm) { Canvas canvas = new Canvas(bm); Paint p = new Paint(Color.RED); ColorFilter filter = new LightingColorFilter(0xFF7F7F7F, 0x00000000); // darken @@ -136,7 +137,7 @@ public class ImageFilters{ canvas.drawBitmap(bm, new Matrix(), p); } - private static void lighten(Bitmap bm){ + private static void lighten(Bitmap bm) { Canvas canvas = new Canvas(bm); Paint p = new Paint(Color.RED); ColorFilter filter = new LightingColorFilter(0xFFFFFFFF, 0x00222222); // lighten @@ -144,7 +145,7 @@ public class ImageFilters{ canvas.drawBitmap(bm, new Matrix(), p); } - public static Bitmap applyInvertEffect(Bitmap src){ + public static Bitmap applyInvertEffect(Bitmap src) { // create new bitmap with the same settings as source bitmap Bitmap bmOut = Bitmap.createBitmap(src.getWidth(), src.getHeight(), src.getConfig()); // color info @@ -174,7 +175,7 @@ public class ImageFilters{ return bmOut; } - public static Bitmap applySepiaEffect(Bitmap src){ + public static Bitmap applySepiaEffect(Bitmap src) { // image size int width = src.getWidth(); int height = src.getHeight(); @@ -211,8 +212,8 @@ public class ImageFilters{ return bmOut; } - public static Bitmap applyEmbossEffect(Bitmap src){ - double[][] EmbossConfig = new double[][] { + public static Bitmap applyEmbossEffect(Bitmap src) { + double[][] EmbossConfig = new double[][]{ {-1, 0, -1}, {0, 4, 0}, {-1, 0, -1} @@ -224,7 +225,7 @@ public class ImageFilters{ return ConvolutionMatrix.computeConvolution3x3(src, convMatrix); } - public static Bitmap applyEngraveEffect(Bitmap src){ + public static Bitmap applyEngraveEffect(Bitmap src) { ConvolutionMatrix convMatrix = new ConvolutionMatrix(3); convMatrix.setAll(0); convMatrix.Matrix[0][0] = -2; @@ -234,7 +235,7 @@ public class ImageFilters{ return ConvolutionMatrix.computeConvolution3x3(src, convMatrix); } - public static Bitmap applyFleaEffect(Bitmap source){ + public static Bitmap applyFleaEffect(Bitmap source) { // get image size int width = source.getWidth(); int height = source.getHeight(); @@ -263,7 +264,7 @@ public class ImageFilters{ return bmOut; } - public static Bitmap applySnowEffect(Bitmap source){ + public static Bitmap applySnowEffect(Bitmap source) { // get image size int width = source.getWidth(); int height = source.getHeight(); @@ -296,7 +297,7 @@ public class ImageFilters{ return bmOut; } - public Bitmap applyDecreaseColorDepthEffect(Bitmap src, int bitOffset){ + public Bitmap applyDecreaseColorDepthEffect(Bitmap src, int bitOffset) { // get image size int width = src.getWidth(); int height = src.getHeight(); @@ -339,7 +340,7 @@ public class ImageFilters{ return bmOut; } - public Bitmap applyContrastEffect(Bitmap src, double value){ + public Bitmap applyContrastEffect(Bitmap src, double value) { // image size int width = src.getWidth(); int height = src.getHeight(); @@ -391,7 +392,7 @@ public class ImageFilters{ return bmOut; } - public Bitmap applyBrightnessEffect(Bitmap src, int value){ + public Bitmap applyBrightnessEffect(Bitmap src, int value) { // image size int width = src.getWidth(); int height = src.getHeight(); @@ -442,8 +443,8 @@ public class ImageFilters{ return bmOut; } - public Bitmap applyGaussianBlurEffect(Bitmap src){ - double[][] GaussianBlurConfig = new double[][] { + public Bitmap applyGaussianBlurEffect(Bitmap src) { + double[][] GaussianBlurConfig = new double[][]{ {1, 2, 1}, {2, 4, 2}, {1, 2, 1} @@ -455,8 +456,8 @@ public class ImageFilters{ return ConvolutionMatrix.computeConvolution3x3(src, convMatrix); } - public Bitmap applySharpenEffect(Bitmap src, double weight){ - double[][] SharpConfig = new double[][] { + public Bitmap applySharpenEffect(Bitmap src, double weight) { + double[][] SharpConfig = new double[][]{ {0, -2, 0}, {-2, weight, -2}, {0, -2, 0} @@ -467,8 +468,8 @@ public class ImageFilters{ return ConvolutionMatrix.computeConvolution3x3(src, convMatrix); } - public Bitmap applyMeanRemovalEffect(Bitmap src){ - double[][] MeanRemovalConfig = new double[][] { + public Bitmap applyMeanRemovalEffect(Bitmap src) { + double[][] MeanRemovalConfig = new double[][]{ {-1, -1, -1}, {-1, 9, -1}, {-1, -1, -1} @@ -480,7 +481,7 @@ public class ImageFilters{ return ConvolutionMatrix.computeConvolution3x3(src, convMatrix); } - public Bitmap applySmoothEffect(Bitmap src, double value){ + public Bitmap applySmoothEffect(Bitmap src, double value) { ConvolutionMatrix convMatrix = new ConvolutionMatrix(3); convMatrix.setAll(1); convMatrix.Matrix[1][1] = value; @@ -489,7 +490,7 @@ public class ImageFilters{ return ConvolutionMatrix.computeConvolution3x3(src, convMatrix); } - public Bitmap applyBoostEffect(Bitmap src, int type, float percent){ + public Bitmap applyBoostEffect(Bitmap src, int type, float percent) { int width = src.getWidth(); int height = src.getHeight(); Bitmap bmOut = Bitmap.createBitmap(width, height, src.getConfig()); @@ -520,7 +521,7 @@ public class ImageFilters{ return bmOut; } - public Bitmap applyTintEffect(Bitmap src, int degree){ + public Bitmap applyTintEffect(Bitmap src, int degree) { int width = src.getWidth(); int height = src.getHeight(); @@ -564,7 +565,7 @@ public class ImageFilters{ return outBitmap; } - public Bitmap applyBlackFilter(Bitmap source){ + public Bitmap applyBlackFilter(Bitmap source) { // get image size int width = source.getWidth(); int height = source.getHeight(); @@ -597,7 +598,7 @@ public class ImageFilters{ return bmOut; } - public Bitmap applyShadingFilter(Bitmap source, int shadingColor){ + public Bitmap applyShadingFilter(Bitmap source, int shadingColor) { // get image size int width = source.getWidth(); int height = source.getHeight(); @@ -621,7 +622,7 @@ public class ImageFilters{ return bmOut; } - public Bitmap applySaturationFilter(Bitmap source, int level){ + public Bitmap applySaturationFilter(Bitmap source, int level) { // get image size int width = source.getWidth(); int height = source.getHeight(); @@ -651,7 +652,7 @@ public class ImageFilters{ return bmOut; } - public Bitmap applyHueFilter(Bitmap source, int level){ + public Bitmap applyHueFilter(Bitmap source, int level) { // get image size int width = source.getWidth(); int height = source.getHeight(); diff --git a/app/src/main/java/ru/vtosters/lite/ui/wallpapers/WallpaperMenuFragment.java b/app/src/main/java/ru/vtosters/lite/ui/wallpapers/WallpaperMenuFragment.java index fc1b3c908..dfe8fbbfb 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/wallpapers/WallpaperMenuFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/wallpapers/WallpaperMenuFragment.java @@ -1,13 +1,14 @@ package ru.vtosters.lite.ui.wallpapers; + import static ru.vtosters.lite.ui.wallpapers.WallpapersHooks.getDimmingSummary; import static ru.vtosters.lite.ui.wallpapers.WallpapersHooks.getMosaicSummary; import static ru.vtosters.lite.ui.wallpapers.WallpapersHooks.getRadiusSummary; import static ru.vtosters.lite.ui.wallpapers.WallpapersHooks.getWallpaperFile; import static ru.vtosters.lite.ui.wallpapers.WallpapersHooks.removeWallpaper; import static ru.vtosters.lite.ui.wallpapers.WallpapersHooks.requestUpdateWallpaper; +import static ru.vtosters.lite.utils.AndroidUtils.edit; +import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier; import static ru.vtosters.lite.utils.CacheUtils.deleteCache; -import static ru.vtosters.lite.utils.Globals.edit; -import static ru.vtosters.lite.utils.Globals.getIdentifier; import static ru.vtosters.lite.utils.Preferences.getBoolValue; import static ru.vtosters.lite.utils.Preferences.hasVerification; @@ -31,15 +32,15 @@ import java.io.OutputStream; import ru.vtosters.lite.ui.PreferencesUtil; -public class WallpaperMenuFragment extends MaterialPreferenceToolbarFragment{ +public class WallpaperMenuFragment extends MaterialPreferenceToolbarFragment { private WallpaperPreferences mWPPreviewPref; - public static void copyStream(InputStream copyFrom, OutputStream copyTo) throws IOException{ + public static void copyStream(InputStream copyFrom, OutputStream copyTo) throws IOException { byte[] buffer = new byte[1024]; int length; - while((length = copyFrom.read(buffer)) > 0) { + while ((length = copyFrom.read(buffer)) > 0) { copyTo.write(buffer, 0, length); } @@ -49,7 +50,7 @@ public class WallpaperMenuFragment extends MaterialPreferenceToolbarFragment{ } @Override - public void onCreate(Bundle bundle){ + public void onCreate(Bundle bundle) { super.onCreate(bundle); int vtosterXml = getIdentifier("empty", "xml"); @@ -85,22 +86,22 @@ public class WallpaperMenuFragment extends MaterialPreferenceToolbarFragment{ }); } - PreferencesUtil.addListPreference(this, "msg_blur_radius", "disabled", "Размытие фона сообщений", new CharSequence[] { + PreferencesUtil.addListPreference(this, "msg_blur_radius", "disabled", "Размытие фона сообщений", new CharSequence[]{ "Отключено", "Низкое (15px)", "Среднее (25px)", "Высокое (50px)" - }, new String[] { + }, new String[]{ "disabled", "low", "med", "high" }); - PreferencesUtil.addListPreference(this, "msg_dim", "off", "Затемнение изображения", new CharSequence[] { + PreferencesUtil.addListPreference(this, "msg_dim", "off", "Затемнение изображения", new CharSequence[]{ "Отключено", "Затемнить", "Осветлить" - }, new String[] { + }, new String[]{ "off", "dim_black", "dim_white" }); - PreferencesUtil.addListPreference(this, "msg_mosaic", "disabled", "Мозаика", new CharSequence[] { + PreferencesUtil.addListPreference(this, "msg_mosaic", "disabled", "Мозаика", new CharSequence[]{ "Отключено", "Низкое", "Среднее", "Высокое" - }, new String[] { + }, new String[]{ "disabled", "low", "med", "high" }); @@ -196,7 +197,7 @@ public class WallpaperMenuFragment extends MaterialPreferenceToolbarFragment{ } @Override - public void onActivityResult(int i, int i1, @Nullable Intent intent){ + public void onActivityResult(int i, int i1, @Nullable Intent intent) { super.onActivityResult(i, i1, intent); if (intent == null || intent.getData() == null) @@ -219,7 +220,7 @@ public class WallpaperMenuFragment extends MaterialPreferenceToolbarFragment{ } } - private void removeStickCache(){ + private void removeStickCache() { SharedPreferences prefs2 = getContext().getSharedPreferences("stickers_storage", Context.MODE_PRIVATE); prefs2.edit().clear().apply(); deleteCache(); @@ -227,7 +228,7 @@ public class WallpaperMenuFragment extends MaterialPreferenceToolbarFragment{ } @Override - public int T4(){ + public int T4() { return getIdentifier("wallpapers", "string"); } } \ No newline at end of file diff --git a/app/src/main/java/ru/vtosters/lite/ui/wallpapers/WallpaperPreferences.java b/app/src/main/java/ru/vtosters/lite/ui/wallpapers/WallpaperPreferences.java index 60ef41966..58b326bab 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/wallpapers/WallpaperPreferences.java +++ b/app/src/main/java/ru/vtosters/lite/ui/wallpapers/WallpaperPreferences.java @@ -2,8 +2,8 @@ package ru.vtosters.lite.ui.wallpapers; import static ru.vtosters.lite.ui.wallpapers.WallpapersHooks.getWallpaper; import static ru.vtosters.lite.ui.wallpapers.WallpapersHooks.getWallpaperFile; -import static ru.vtosters.lite.utils.Globals.convertDpToPixel; -import static ru.vtosters.lite.utils.Globals.getIdentifier; +import static ru.vtosters.lite.utils.AndroidUtils.dp2px; +import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier; import android.content.Context; import android.graphics.drawable.Drawable; @@ -45,7 +45,7 @@ public class WallpaperPreferences extends Preference { super.onBindViewHolder(preferenceViewHolder); mRecyclerView = (RecyclerView) preferenceViewHolder.findViewById(getIdentifier("install_btn_container", "id")); - mRecyclerView.setPadding(0, convertDpToPixel(8), 0, 0); + mRecyclerView.setPadding(0, dp2px(8), 0, 0); mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext())); mRecyclerView.setAdapter((mAdapter = new MessagesPreviewAdapter())); mRecyclerView.setClickable(false); diff --git a/app/src/main/java/ru/vtosters/lite/ui/wallpapers/WallpapersHooks.java b/app/src/main/java/ru/vtosters/lite/ui/wallpapers/WallpapersHooks.java index 6a6b7a973..d6d7978de 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/wallpapers/WallpapersHooks.java +++ b/app/src/main/java/ru/vtosters/lite/ui/wallpapers/WallpapersHooks.java @@ -1,12 +1,13 @@ package ru.vtosters.lite.ui.wallpapers; + import static com.vk.im.engine.h.im_bg_chat; import static ru.vtosters.lite.ui.wallpapers.ImageFilters.getBlurredWallpaper; import static ru.vtosters.lite.ui.wallpapers.ImageFilters.getDimmed; import static ru.vtosters.lite.ui.wallpapers.ImageFilters.getFilteredDrawable; import static ru.vtosters.lite.ui.wallpapers.ImageFilters.getMonochrome; import static ru.vtosters.lite.ui.wallpapers.ImageFilters.getMosaic; -import static ru.vtosters.lite.utils.Globals.getContext; -import static ru.vtosters.lite.utils.Globals.getPreferences; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; +import static ru.vtosters.lite.utils.AndroidUtils.getPreferences; import static ru.vtosters.lite.utils.Preferences.hasVerification; import android.graphics.drawable.Drawable; @@ -15,17 +16,17 @@ import android.widget.ImageView; import java.io.File; -public class WallpapersHooks{ +public class WallpapersHooks { private static File mWallpaperFile; private static Drawable mWallpaper; private static boolean mUpdateWallpaperRequested = true; - public static File getWallpaperFile(){ - return mWallpaperFile == null ? mWallpaperFile = new File(getContext().getFilesDir(), "wallpaper.png") : mWallpaperFile; + public static File getWallpaperFile() { + return mWallpaperFile == null ? mWallpaperFile = new File(getGlobalContext().getFilesDir(), "wallpaper.png") : mWallpaperFile; } - public static void setBg(View view){ + public static void setBg(View view) { if (getWallpaper() != null) { ((ImageView) view).setImageDrawable(getWallpaper()); // set picture to background return; @@ -34,14 +35,14 @@ public class WallpapersHooks{ ((ImageView) view).setColorFilter(im_bg_chat); // set default bg color } - public static String getWallpaperUrl(){ + public static String getWallpaperUrl() { if (getWallpaperFile().exists()) return getWallpaperFile().getAbsolutePath(); else return "default"; } - public static Drawable getWallpaper(){ + public static Drawable getWallpaper() { if (mWallpaper == null || mUpdateWallpaperRequested) { if (!getPreferences().getString("msg_blur_radius", "disabled").equals("disabled")) { mWallpaper = getBlurredWallpaper(Drawable.createFromPath(getWallpaperUrl()), getRadius()); @@ -70,13 +71,13 @@ public class WallpapersHooks{ return mWallpaper; } - public static void requestUpdateWallpaper(){ + public static void requestUpdateWallpaper() { mUpdateWallpaperRequested = true; } - private static int getRadius(){ + private static int getRadius() { String radius = getPreferences().getString("msg_blur_radius", "disabled"); - switch(radius) { + switch (radius) { case "low": return 8; case "med": @@ -86,9 +87,9 @@ public class WallpapersHooks{ } } - public static String getRadiusSummary(){ + public static String getRadiusSummary() { String radius = getPreferences().getString("msg_blur_radius", "disabled"); - switch(radius) { + switch (radius) { case "low": return "Низкое"; case "med": @@ -100,9 +101,9 @@ public class WallpapersHooks{ } } - public static String getDimmingSummary(){ + public static String getDimmingSummary() { String radius = getPreferences().getString("msg_dim", "disabled"); - switch(radius) { + switch (radius) { case "dim_black": return "Затемнить"; case "dim_white": @@ -112,9 +113,9 @@ public class WallpapersHooks{ } } - public static String getMosaicSummary(){ + public static String getMosaicSummary() { String radius = getPreferences().getString("msg_mosaic", "disabled"); - switch(radius) { + switch (radius) { case "low": return "Низкое"; case "med": @@ -127,7 +128,7 @@ public class WallpapersHooks{ } - public static void removeWallpaper(){ + public static void removeWallpaper() { getWallpaperFile().delete(); } } diff --git a/app/src/main/java/ru/vtosters/lite/utils/About.java b/app/src/main/java/ru/vtosters/lite/utils/About.java index 8239eb79f..623583bdd 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/About.java +++ b/app/src/main/java/ru/vtosters/lite/utils/About.java @@ -1,8 +1,8 @@ package ru.vtosters.lite.utils; -import static ru.vtosters.lite.utils.Globals.getApplicationName; -import static ru.vtosters.lite.utils.Globals.getContext; -import static ru.vtosters.lite.utils.Globals.getIdentifier; +import static ru.vtosters.lite.utils.AndroidUtils.getApplicationName; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; +import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier; import static ru.vtosters.lite.utils.Preferences.VERSIONNAME; import static ru.vtosters.lite.utils.Preferences.isValidSignature; import static ru.vtosters.lite.utils.Preferences.oldabout; @@ -17,8 +17,8 @@ import java.io.IOException; import java.util.List; import java.util.Scanner; -public class About{ - public static void injectAbout(List list){ +public class About { + public static void injectAbout(List list) { list.clear(); list.add(new Items1()); @@ -44,18 +44,18 @@ public class About{ list.add(new Items(8, getIdentifier("sett_debug", "string"))); } - public static String getBuildNumber(){ - return getBuild(getContext(), "version.properties"); + public static String getBuildNumber() { + return getBuild(getGlobalContext(), "version.properties"); } - public static String getCommitLink(){ - return "https://git.maki.su/gdlbo/lite/commit/" + getBuild(getContext(), "version.properties"); // https://github.com/vtosters/lite/commit/ github repo + public static String getCommitLink() { + return "https://git.maki.su/gdlbo/lite/commit/" + getBuild(getGlobalContext(), "version.properties"); // https://github.com/vtosters/lite/commit/ github repo } - public static String getBuild(Context context, String name){ + public static String getBuild(Context context, String name) { try { Scanner scanner = new Scanner(context.getAssets().open(name)); - while(scanner.hasNextLine()) { + while (scanner.hasNextLine()) { String line = scanner.findInLine("VERSION_BUILD=.+"); if (line != null) return line.replace("VERSION_BUILD=", ""); @@ -67,7 +67,7 @@ public class About{ return "0000000"; } - public static String getAppVersion() throws IOException{ + public static String getAppVersion() throws IOException { var appver = isValidSignature() ? VERSIONNAME : "Dev"; return getApplicationName() + " " + appver + " | " + getBuildNumber(); } diff --git a/app/src/main/java/ru/vtosters/lite/utils/AccountManagerUtils.java b/app/src/main/java/ru/vtosters/lite/utils/AccountManagerUtils.java new file mode 100644 index 000000000..74d4d94a8 --- /dev/null +++ b/app/src/main/java/ru/vtosters/lite/utils/AccountManagerUtils.java @@ -0,0 +1,65 @@ +package ru.vtosters.lite.utils; + +import com.vk.dto.user.UserProfile; +import com.vk.im.ui.providers.audiomsg.ImAudioMsgPlayerProvider; +import com.vk.im.ui.providers.audiomsg.PlayerActionSources; +import com.vtosters.lite.api.ExtendedUserProfile; +import com.vtosters.lite.auth.VKAccountManager; +import com.vtosters.lite.im.ImEngineProvider; + +public class AccountManagerUtils { + + public static int getUserId() { + return VKAccountManager.d().D0(); + } // Current UserId + + public static boolean isVKTester() { + return VKAccountManager.d().i(); + } // is vk tester + + public static String getUserSecret() { + return VKAccountManager.d().l0(); + } + + public static String getUserToken() { + return VKAccountManager.d().b(); + } + + public static String getUsername() { + return VKAccountManager.d().Z(); + } + + public static String getUserPhoto() { + return VKAccountManager.d().d0(); + } + + public static String getUserFirstName(UserProfile userProfile) { + return userProfile.c; + } + + public static String getUserLastName(UserProfile userProfile) { + return userProfile.e; + } + + public static String getGroupName(UserProfile userProfile) { + return userProfile.d; + } + + public static int getUserID(UserProfile userProfile) { + return userProfile.b; + } // UserId Profile via userProfile + + public static int getUserID(ExtendedUserProfile extendedUserProfile) { + return getUserID(fromEup(extendedUserProfile)); + } // UserId Profile via extendedUserProfile + + public static UserProfile fromEup(ExtendedUserProfile extendedUserProfile) { + return extendedUserProfile.a; + } + + public static void reloadMSG() { + ImEngineProvider.b().a(); + ImAudioMsgPlayerProvider.b().e(PlayerActionSources.a); + ImAudioMsgPlayerProvider.b().d(PlayerActionSources.a); + } // Delete and reload msg cache +} diff --git a/app/src/main/java/ru/vtosters/lite/utils/AndroidUtils.java b/app/src/main/java/ru/vtosters/lite/utils/AndroidUtils.java new file mode 100644 index 000000000..3523ca688 --- /dev/null +++ b/app/src/main/java/ru/vtosters/lite/utils/AndroidUtils.java @@ -0,0 +1,118 @@ +package ru.vtosters.lite.utils; + +import static ru.vtosters.lite.hooks.DateHook.getLocale; +import static ru.vtosters.lite.utils.Preferences.preferences; +import static ru.vtosters.lite.utils.ThemesUtils.isDarkTheme; + +import android.content.Context; +import android.content.SharedPreferences; +import android.content.res.Resources; +import android.os.Build; +import android.preference.PreferenceManager; +import android.util.Log; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.annotation.StringRes; + +import java.util.Locale; + +public class AndroidUtils { + + public static SharedPreferences getDefaultPrefs() { + if (preferences == null) + preferences = PreferenceManager.getDefaultSharedPreferences(getGlobalContext()); + return preferences; + } + + public static SharedPreferences getPreferences() { + return PreferenceManager.getDefaultSharedPreferences(getGlobalContext()); + } + + public static String getPrefsValue(String pref) { + return getPreferences().getString(pref, ""); + } // Get pref value as string + + public static SharedPreferences.Editor edit() { + return PreferenceManager.getDefaultSharedPreferences(getGlobalContext()).edit(); + } // Edit SharedPreferences + + @NonNull + public static Context getGlobalContext() { + try { + return (Context) ReflectionUtils.invokeStaticMethod("android.app.AppGlobals", "getInitialApplication"); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } // Getting the global context through reflection to use context on application initialization + + public static Resources getResources() { + return getGlobalContext().getResources(); + } + + public static int getIdentifier(String name, String type) { + try { + return getResources().getIdentifier(name, type, getGlobalContext().getPackageName()); + } catch (Exception e) { + Log.d("VTLite", "Not found " + name + "as type " + type); + e.printStackTrace(); + } + return 0; + } // Get res id + + public static String getString(String resourcename) { + return getGlobalContext().getString(getIdentifier(resourcename, "string")); + } // Get string via getIdentifier + + public static String getStringDate(@StringRes int i, Object... objArr) { + return getGlobalContext().getString(i, objArr); + } + + public static String getPackageName() { + return getGlobalContext().getPackageName(); + } + + public static String getApplicationName() { + return getGlobalContext().getApplicationInfo().loadLabel(getGlobalContext().getPackageManager()).toString(); + } + + public static Context setDefaultLocale(Context context) { + Locale locale = new Locale(getLocale()); + Locale.setDefault(locale); + + var resources = context.getResources(); + var configuration = resources.getConfiguration(); + + if (Build.VERSION.SDK_INT >= 24) { + configuration.setLocale(locale); + configuration.setLayoutDirection(locale); + return context.createConfigurationContext(configuration); + } + + configuration.locale = locale; + configuration.setLayoutDirection(locale); + resources.updateConfiguration(configuration, resources.getDisplayMetrics()); + + edit().putBoolean("isdark", isDarkTheme()).commit(); + + return context; + } // Language changer and BaseContext injector + + public static float[] getCenterScreenCoords() { + int width = getResources().getDisplayMetrics().widthPixels; + int height = getResources().getDisplayMetrics().heightPixels; + + int centerWidth = width / 2; + int centerHeight = height / 2; + return new float[]{centerWidth, centerHeight}; + } + + public static int dp2px(float f) { + return (int) (f * ((float) getResources().getDisplayMetrics().densityDpi / 160.0f)); + } + + public static void sendToast(String text) { + Toast.makeText(getGlobalContext(), text, Toast.LENGTH_SHORT).show(); + } +} \ No newline at end of file diff --git a/app/src/main/java/ru/vtosters/lite/utils/Base64Utils.java b/app/src/main/java/ru/vtosters/lite/utils/Base64Utils.java index a0162a4ca..4f3e1c039 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/Base64Utils.java +++ b/app/src/main/java/ru/vtosters/lite/utils/Base64Utils.java @@ -5,13 +5,13 @@ import android.util.Base64; /* *Extension of Base64 class for decoding/encoding with flag NO_PADDING */ -public class Base64Utils{ +public class Base64Utils { - public static String decode(String base){ + public static String decode(String base) { return new String(Base64.decode(base, Base64.NO_PADDING)); } - public static String encode(String base){ + public static String encode(String base) { return Base64.encodeToString(base.getBytes(), Base64.NO_PADDING); } } diff --git a/app/src/main/java/ru/vtosters/lite/utils/CacheUtils.java b/app/src/main/java/ru/vtosters/lite/utils/CacheUtils.java index d427673bd..bbd97a85b 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/CacheUtils.java +++ b/app/src/main/java/ru/vtosters/lite/utils/CacheUtils.java @@ -1,55 +1,31 @@ package ru.vtosters.lite.utils; -import static ru.vtosters.lite.utils.Globals.getContext; -import static ru.vtosters.lite.utils.Globals.sendToast; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; +import static ru.vtosters.lite.utils.AndroidUtils.sendToast; import static ru.vtosters.lite.utils.Preferences.dev; import static ru.vtosters.lite.utils.Preferences.getSizeForDelete; import android.annotation.SuppressLint; -import java.io.File; import java.text.CharacterIterator; import java.text.StringCharacterIterator; -import java.util.Objects; -public class CacheUtils{ +public class CacheUtils { private static CacheUtils sInstance = new CacheUtils(); public long size = 0; - public static CacheUtils getInstance(){ + public static CacheUtils getInstance() { if (sInstance == null) sInstance = new CacheUtils(); return sInstance; } - public static void deleteCache(){ - try { - File dir = getContext().getCacheDir(); - deleteDir(dir); - } catch (Exception e) { - e.printStackTrace(); - } - } - - public static boolean deleteDir(File dir){ - if (dir != null && dir.isDirectory()) { - String[] children = dir.list(); - for (int i = 0; i < Objects.requireNonNull(children).length; i++) { - boolean success = deleteDir(new File(dir, children[i])); - if (!success) { - return false; - } - } - return dir.delete(); - } else if (dir != null && dir.isFile()) { - return dir.delete(); - } else { - return false; - } + public static void deleteCache() { + IOUtils.deleteRecursive(getGlobalContext().getCacheDir()); } @SuppressLint("DefaultLocale") - public static String humanReadableByteCountBin(long bytes){ + public static String humanReadableByteCountBin(long bytes) { long absB = bytes == Long.MIN_VALUE ? Long.MAX_VALUE : Math.abs(bytes); if (absB < 1024) { return bytes + " B"; @@ -64,8 +40,8 @@ public class CacheUtils{ return String.format("%.1f %cB", value / 1024.0, ci.current()); } - public void autoCleaningCache(){ - size = getDirSize(getContext().getCacheDir()); + public void autoCleaningCache() { + size = IOUtils.getDirSize(getGlobalContext().getCacheDir()); if (size >= getSizeForDelete()) { if (dev()) sendToast("Кэш очищен"); @@ -73,16 +49,4 @@ public class CacheUtils{ size = 0; } } - - public long getDirSize(File dir){ - long size = 0; - for (File file : Objects.requireNonNull(dir.listFiles())) { - if (file != null && file.isDirectory()) { - size += getDirSize(file); - } else if (file != null && file.isFile()) { - size += file.length(); - } - } - return size; - } } diff --git a/app/src/main/java/ru/vtosters/lite/utils/DeletedMessagesHandler.java b/app/src/main/java/ru/vtosters/lite/utils/DeletedMessagesHandler.java index a50018f21..3d79533aa 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/DeletedMessagesHandler.java +++ b/app/src/main/java/ru/vtosters/lite/utils/DeletedMessagesHandler.java @@ -1,7 +1,7 @@ package ru.vtosters.lite.utils; -import static ru.vtosters.lite.utils.Globals.getContext; -import static ru.vtosters.lite.utils.Globals.getPrefsValue; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; +import static ru.vtosters.lite.utils.AndroidUtils.getPrefsValue; import static ru.vtosters.lite.utils.Preferences.getBoolValue; import android.annotation.SuppressLint; @@ -25,29 +25,29 @@ import io.requery.android.database.sqlite.SQLiteDatabase; import io.requery.android.database.sqlite.SQLiteOpenHelper; import ru.vtosters.lite.encryption.EncryptProvider; -public class DeletedMessagesHandler{ +public class DeletedMessagesHandler { private static List sDeletedMessagesList = new ArrayList<>(); private static SQLiteDatabase sVKSQLiteDatabase; private static int sBodyIndex = -1; private static DeletedMessagesDBHelper sVTDatabase; - public static void reloadMessagesList(){ + public static void reloadMessagesList() { if (sVTDatabase == null) { sVTDatabase = new DeletedMessagesDBHelper(); } sDeletedMessagesList = new ArrayList<>(sVTDatabase.loadAllMessages()); } - public static void grabVKDatabase(StorageEnvironment storageEnvironment){ + public static void grabVKDatabase(StorageEnvironment storageEnvironment) { sVKSQLiteDatabase = storageEnvironment.a(); } - public static boolean hook(){ + public static boolean hook() { return getBoolValue("undeletemsg", true); } - public static void setBodyDBParser(Msg msg){ + public static void setBodyDBParser(Msg msg) { if (!(msg instanceof MsgFromUser)) return; for (Integer integer : sDeletedMessagesList) { @@ -60,7 +60,7 @@ public class DeletedMessagesHandler{ } } - private static void checkForNestedMsg(List nestedMsgs){ + private static void checkForNestedMsg(List nestedMsgs) { for (NestedMsg nestedMsg : nestedMsgs) { if (!nestedMsg.w0().isEmpty()) checkForNestedMsg(nestedMsg.w0()); @@ -68,17 +68,17 @@ public class DeletedMessagesHandler{ } } - private static void editTextOfMsg(MsgFromUser msgFromUser){ + private static void editTextOfMsg(MsgFromUser msgFromUser) { if (!msgFromUser.f().startsWith(getPrefixUndelete())) { msgFromUser.d(getPrefixUndelete() + EncryptProvider.decryptMessage(msgFromUser)); } } - private static String getPrefixUndelete(){ + private static String getPrefixUndelete() { return getPrefsValue("undeletemsg_prefix_value") + " "; } - public static void updateDialog(MsgDeleteLpTask msgDeleteLpTask) throws NoSuchFieldException, IllegalAccessException{ + public static void updateDialog(MsgDeleteLpTask msgDeleteLpTask) throws NoSuchFieldException, IllegalAccessException { Cursor c = getMessageFromDatabaseById(ReflectionUtils.getObjectField(msgDeleteLpTask.getClass(), "d", msgDeleteLpTask)); if (c == null) return; @@ -91,7 +91,7 @@ public class DeletedMessagesHandler{ imEnvironment.a(str, new OnMsgUpdateEvent(str, cint, localId)); } - public static void hookDeletedMessageId(MsgDeleteLpTask msgDeleteLpTask) throws NoSuchFieldException, IllegalAccessException{ + public static void hookDeletedMessageId(MsgDeleteLpTask msgDeleteLpTask) throws NoSuchFieldException, IllegalAccessException { if (!hook()) return; var field = msgDeleteLpTask.getClass().getDeclaredField("c"); @@ -110,33 +110,33 @@ public class DeletedMessagesHandler{ sVTDatabase.saveDeletedMessage(messageId); } - public static Cursor getMessageFromDatabaseById(int messageId){ + public static Cursor getMessageFromDatabaseById(int messageId) { String query = "SELECT * FROM messages WHERE vk_id = " + messageId; Cursor c = CustomSqliteExtensionsKt.a(sVKSQLiteDatabase, query); if (!c.moveToFirst()) return null; return c; } - public static void deleteMessageFromDB(int messageId){ + public static void deleteMessageFromDB(int messageId) { sVKSQLiteDatabase.execSQL("DELETE FROM messages WHERE vk_id = " + messageId); } - public static class DeletedMessagesDBHelper extends SQLiteOpenHelper{ - public DeletedMessagesDBHelper(){ - super(getContext(), "deleted_msgs", null, 1); + public static class DeletedMessagesDBHelper extends SQLiteOpenHelper { + public DeletedMessagesDBHelper() { + super(getGlobalContext(), "deleted_msgs", null, 1); } @Override - public void onCreate(SQLiteDatabase db){ + public void onCreate(SQLiteDatabase db) { db.execSQL("create table deleted_msgs (id integer primary key, msgId integer)"); } @Override - public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){ + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } - public void saveDeletedMessage(int msgId){ + public void saveDeletedMessage(int msgId) { SQLiteDatabase sqLiteDatabase = getWritableDatabase(); ContentValues contentValues = new ContentValues(); @@ -146,7 +146,7 @@ public class DeletedMessagesHandler{ sqLiteDatabase.close(); } - public List loadAllMessages(){ + public List loadAllMessages() { List msgIdsList = new ArrayList<>(); Cursor cursor = getReadableDatabase().query("deleted_msgs", null, null, null, null, null, null); @@ -155,7 +155,7 @@ public class DeletedMessagesHandler{ do { msgIdsList.add(cursor.getInt(msgIdIndex)); - } while(cursor.moveToNext()); + } while (cursor.moveToNext()); cursor.close(); } diff --git a/app/src/main/java/ru/vtosters/lite/utils/ExternalLinkHandler.java b/app/src/main/java/ru/vtosters/lite/utils/ExternalLinkParser.java similarity index 87% rename from app/src/main/java/ru/vtosters/lite/utils/ExternalLinkHandler.java rename to app/src/main/java/ru/vtosters/lite/utils/ExternalLinkParser.java index 8d694e2e0..d4db55642 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/ExternalLinkHandler.java +++ b/app/src/main/java/ru/vtosters/lite/utils/ExternalLinkParser.java @@ -1,8 +1,8 @@ package ru.vtosters.lite.utils; -import static ru.vtosters.lite.utils.Globals.getContext; -import static ru.vtosters.lite.utils.Globals.isEmpty; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; import static ru.vtosters.lite.utils.Preferences.isEnableExternalOpening; +import static ru.vtosters.lite.utils.StringUtils.isEmpty; import android.app.Activity; import android.app.AlertDialog; @@ -19,7 +19,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -public class ExternalLinkHandler{ +public class ExternalLinkParser { private static final String TAG = "ExternalLinkHandler"; private static final List filters = Arrays.asList( @@ -31,7 +31,7 @@ public class ExternalLinkHandler{ private static final Map qualities = new HashMap<>(); public static boolean parseVideoFile(VideoFile file) { - return parseVideoFile(file, getContext(), isEnableExternalOpening()); + return parseVideoFile(file, getGlobalContext(), isEnableExternalOpening()); } public static boolean parseVideoFile(VideoFile file, Context context) { @@ -72,7 +72,7 @@ public class ExternalLinkHandler{ return true; } - private static boolean checkYoutubeLink(VideoFile file){ + private static boolean checkYoutubeLink(VideoFile file) { if (!isEmpty(file.G)) { for (String filter : filters) { if (file.G.contains(filter)) @@ -91,7 +91,7 @@ public class ExternalLinkHandler{ * this.C = var66.optString("mp4_1440"); * this.D = var66.optString("mp4_2160"); */ - public static boolean checkVkVideo(VideoFile videoFile){ + public static boolean checkVkVideo(VideoFile videoFile) { if (!isEmpty(videoFile.e)) { qualities.put("240", videoFile.e); } @@ -117,7 +117,7 @@ public class ExternalLinkHandler{ return qualities.size() > 0; } - public static boolean startExternalVideo(String url){ + public static boolean startExternalVideo(String url) { try { qualities.clear(); @@ -136,7 +136,7 @@ public class ExternalLinkHandler{ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); } - getContext().startActivity(intent); + getGlobalContext().startActivity(intent); return true; } catch (Exception e) { e.printStackTrace(); @@ -144,8 +144,8 @@ public class ExternalLinkHandler{ return false; } - private static String getMXPlayerPackageName(){ - for (ApplicationInfo info : getContext().getPackageManager().getInstalledApplications(0)) { + private static String getMXPlayerPackageName() { + for (ApplicationInfo info : getGlobalContext().getPackageManager().getInstalledApplications(0)) { String packName = info.packageName; if (packName.equals("com.mxtech.videoplayer.ad") || packName.equals("com.mxtech.videoplayer.pro")) return packName; diff --git a/app/src/main/java/ru/vtosters/lite/utils/Globals.java b/app/src/main/java/ru/vtosters/lite/utils/Globals.java deleted file mode 100644 index ca64ce889..000000000 --- a/app/src/main/java/ru/vtosters/lite/utils/Globals.java +++ /dev/null @@ -1,532 +0,0 @@ -package ru.vtosters.lite.utils; - -import static android.graphics.Bitmap.Config; -import static android.graphics.Bitmap.createBitmap; -import static android.graphics.Bitmap.createScaledBitmap; -import static androidx.core.content.ContextCompat.getDrawable; -import static ru.vtosters.lite.hooks.DateHook.getLocale; -import static ru.vtosters.lite.utils.CacheUtils.getInstance; -import static ru.vtosters.lite.utils.Preferences.checkupdates; -import static ru.vtosters.lite.utils.Preferences.preferences; -import static ru.vtosters.lite.utils.ServerDialog.sendRequest; -import static ru.vtosters.lite.utils.Themes.isDarkTheme; -import static ru.vtosters.lite.utils.Themes.setNeededTheme; - -import android.app.Activity; -import android.app.Application; -import android.app.NotificationChannel; -import android.app.NotificationManager; -import android.content.Context; -import android.content.Intent; -import android.content.SharedPreferences; -import android.content.pm.PackageManager; -import android.content.res.Resources; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.Canvas; -import android.graphics.Path; -import android.graphics.RectF; -import android.graphics.drawable.BitmapDrawable; -import android.graphics.drawable.Drawable; -import android.net.ConnectivityManager; -import android.net.Network; -import android.net.NetworkCapabilities; -import android.os.Build; -import android.os.Bundle; -import android.os.Handler; -import android.os.StrictMode; -import android.preference.PreferenceManager; -import android.telephony.TelephonyManager; -import android.util.Log; -import android.widget.Toast; - -import androidx.annotation.NonNull; -import androidx.annotation.StringRes; - -import com.vk.dto.user.UserProfile; -import com.vk.im.ui.providers.audiomsg.ImAudioMsgPlayerProvider; -import com.vk.im.ui.providers.audiomsg.PlayerActionSources; -import com.vk.navigation.Navigator; -import com.vtosters.lite.VKActivity; -import com.vtosters.lite.api.ExtendedUserProfile; -import com.vtosters.lite.auth.VKAccountManager; -import com.vtosters.lite.im.ImEngineProvider; - -import org.json.JSONException; -import org.json.JSONObject; - -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.lang.reflect.Method; -import java.net.URL; -import java.net.URLConnection; -import java.util.ArrayList; -import java.util.List; -import java.util.Locale; - -import okhttp3.Call; -import okhttp3.Callback; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.Response; -import ru.vtosters.lite.downloaders.notifications.NotificationChannels; -import ru.vtosters.lite.ui.dialogs.DisableBattery; -import ru.vtosters.lite.ui.dialogs.InstallGMS; -import ru.vtosters.lite.ui.dialogs.OTADialog; -import ru.vtosters.lite.ui.dialogs.Start; - -public class Globals{ - private static final int BUFFER_SIZE = 2048; - - private static final List activities = new ArrayList<>(); - - private static final OkHttpClient mClient = new OkHttpClient(); - - public static Bitmap bmp = null; - - public static SharedPreferences getDefprefs(){ - if (preferences == null) - preferences = PreferenceManager.getDefaultSharedPreferences(getContext()); - return preferences; - } - - public static void MainActivityInit(Activity activity){ - setNeededTheme(activity); - ServerDialog.activity = activity; - sendRequest(); - if (checkupdates()) OTADialog.checkUpdates(activity); - Start.alert(activity); - InstallGMS.alert(activity); - DisableBattery.alert(activity); - edit().putBoolean("isdark", isDarkTheme()).commit(); - getInstance().autoCleaningCache(); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - NotificationChannels.createChannels(); - } - - // VKIDProtection.alert(activity); - } - - public static byte[] readFileFully(File file) throws IOException{ - return readFully(new FileInputStream(file)); - } - - public static byte[] readFully(InputStream is) throws IOException{ - ByteArrayOutputStream bos = new ByteArrayOutputStream(); - - byte[] buffer = new byte[BUFFER_SIZE]; - int len; - while((len = is.read(buffer)) > 0) - bos.write(buffer, 0, len); - - return bos.toByteArray(); - } - - public static void writeToFile(File file, String content) throws IOException{ - writeToFile(file, content.getBytes()); - } - - public static void writeToFile(File file, byte[] content) throws IOException{ - FileOutputStream fos = new FileOutputStream(file); - fos.write(content); - } - - public static String getPrefsValue(String pref){ - return getPreferences().getString(pref, ""); - } // Get pref value as string - - public static int getUserId(){ - return VKAccountManager.d().D0(); - } // Current UserId - - public static boolean isVKTester(){ - return VKAccountManager.d().i(); - } // is vk tester - - public static String getUserSecret(){ - return VKAccountManager.d().l0(); - } - - public static String getUserToken(){ - return VKAccountManager.d().b(); - } - - public static String getUsername(){ - return VKAccountManager.d().Z(); - } - - public static String getUserPhoto(){ - return VKAccountManager.d().d0(); - } - - public static SharedPreferences.Editor edit(){ - return PreferenceManager.getDefaultSharedPreferences(getContext()).edit(); - } // Edit SharedPreferences - - public static void reloadMSG(){ - ImEngineProvider.b().a(); - ImAudioMsgPlayerProvider.b().e(PlayerActionSources.a); - ImAudioMsgPlayerProvider.b().d(PlayerActionSources.a); - } // Delete and reload msg cache - - public static int getUserID(UserProfile userProfile){ - return userProfile.b; - } // UserId Profile via userProfile - - public static Bitmap scaleCenterCrop(Bitmap source, int newHeight, int newWidth){ - int sourceWidth = source.getWidth(); - int sourceHeight = source.getHeight(); - - float xScale = (float) newWidth / sourceWidth; - float yScale = (float) newHeight / sourceHeight; - float scale = Math.max(xScale, yScale); - - float scaledWidth = scale * sourceWidth; - float scaledHeight = scale * sourceHeight; - - float left = (newWidth - scaledWidth) / 2; - float top = (newHeight - scaledHeight) / 2; - - RectF targetRect = new RectF(left, top, left + scaledWidth, top + scaledHeight); - - Bitmap dest = Bitmap.createBitmap(newWidth, newHeight, source.getConfig()); - Canvas canvas = new Canvas(dest); - canvas.drawBitmap(source, null, targetRect, null); - - return dest; - } - - public static String getUserFirstName(UserProfile userProfile){ - return userProfile.c; - } - - public static String getUserLastName(UserProfile userProfile){ - return userProfile.e; - } - - public static String getGroupName(UserProfile userProfile){ - return userProfile.d; - } - - public static int getUserID(ExtendedUserProfile extendedUserProfile){ - return getUserID(fromEup(extendedUserProfile)); - } // UserId Profile via extendedUserProfile - - public static UserProfile fromEup(ExtendedUserProfile extendedUserProfile){ - return extendedUserProfile.a; - } - - public static Drawable getDrawableFromUrl(String url, String def, Boolean rounded, Boolean scaled){ - if (!isNetworkConnected()) { - if (def == null) return null; - return getDrawable(getContext(), getIdentifier(def, "drawable")); - } - - if (isNetworkIsSlow()) { - if (def == null) return null; - return getDrawable(getContext(), getIdentifier(def, "drawable")); - } - - try { - StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); - StrictMode.setThreadPolicy(policy); // fix get pic - - var request = new Request.a() - .b(url) - .a(); - mClient.a(request).a(new Callback() { - @Override - public void a(Call call, IOException e) { - Log.e("Error", e.getMessage()); - } - - @Override - public void a(Call call, Response response){ - bmp = BitmapFactory.decodeStream(response.a().a()); - } - }); - - if (bmp == null) { - if (def == null) return null; - return getDrawable(getContext(), getIdentifier(def, "drawable")); - } - - bmp = rounded ? getBitmapClippedCircle(bmp) : bmp; // rounding - - bmp = scaled ? createScaledBitmap(bmp, convertDpToPixel(256), convertDpToPixel(256), true) : bmp; // scaling - - return new BitmapDrawable(getResources(), bmp); // return our drawable - } catch (Exception e) { - if (def == null) return null; // default pic can be null - - return getDrawable(getContext(), getIdentifier(def, "drawable")); // get default drawable via res - } - } - - public static Bitmap getBitmapClippedCircle(Bitmap bitmap){ - final int width = bitmap.getWidth(); - final int height = bitmap.getHeight(); - final Bitmap outputBitmap = createBitmap(width, height, Config.ARGB_8888); - - final Path path = new Path(); - path.addCircle( - (float) (width / 2) - , (float) (height / 2) - , (float) Math.min(width, (height / 2)) - , Path.Direction.CCW); - - final Canvas canvas = new Canvas(outputBitmap); - canvas.clipPath(path); - canvas.drawBitmap(bitmap, 0, 0, null); - return outputBitmap; - } - - public static void restartApplication(){ - Context ctx = getContext(); - PackageManager pm = ctx.getPackageManager(); - - Intent intent = pm.getLaunchIntentForPackage(ctx.getPackageName()); - Intent mainIntent = Intent.makeRestartActivityTask(intent.getComponent()); - ctx.startActivity(mainIntent); - - Runtime.getRuntime().exit(0); - } // Application restart (works on sdk 29+ too) - - public static void restartApplicationWithTimer(){ - Handler handler = new Handler(); - handler.postDelayed(new Runnable(){ - public void run(){ - restartApplication(); - } - }, 500); - } - - public static void restartApplicationInto(Class Class){ - Context ctx = getContext(); - PackageManager pm = ctx.getPackageManager(); - - Intent intent = new Navigator(Class).b(ctx); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - Intent mainIntent = Intent.makeRestartActivityTask(intent.getComponent()); - ctx.startActivity(mainIntent); - - Runtime.getRuntime().exit(0); - } - - @NonNull - public static Context getContext(){ - try { - Class appGlobalsClazz = Class.forName("android.app.AppGlobals"); - Method getInitialApplication = appGlobalsClazz.getDeclaredMethod("getInitialApplication"); - getInitialApplication.setAccessible(true); - return (Context) getInitialApplication.invoke(null); - } catch (Exception e) { - e.printStackTrace(); - } - return null; - } // Getting the global context through reflection to use context on application initialization - - public static boolean isGmsInstalled(){ - try { - getContext().getPackageManager().getPackageInfo("com.google.android.gms", 0); - return true; - } catch (Exception unused) { - return false; - } - } // Google Market Services check - - public static Resources getResources(){ - return getContext().getResources(); - } - - public static int getIdentifier(String name, String type){ - try { - return getResources().getIdentifier(name, type, getContext().getPackageName()); - } catch (Exception e) { - Log.d("VTLite", "Not found " + name + "as type " + type); - e.printStackTrace(); - } - return 0; - } // Get res id - - public static String getString(String resourcename){ - return getContext().getString(getIdentifier(resourcename, "string")); - } // Get string via getIdentifier - - public static String getStringDate(@StringRes int i, Object... objArr){ - return getContext().getString(i, objArr); - } - - public static String getPackageName(){ - return getContext().getPackageName(); - } - - public static int convertDpToPixel(float f){ - return (int) (f * ((float) getResources().getDisplayMetrics().densityDpi / 160.0f)); - } - - public static SharedPreferences getPreferences(){ - return PreferenceManager.getDefaultSharedPreferences(getContext()); - } - - public static void sendToast(String text){ - Toast.makeText(getContext(), text, Toast.LENGTH_SHORT).show(); - } - - public static boolean isEmpty(String str){ - return str == null || str.isEmpty(); - } - - public static boolean isNetworkConnected(){ - ConnectivityManager cm = (ConnectivityManager) getContext().getSystemService(Context.CONNECTIVITY_SERVICE); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - return cm.getActiveNetwork() != null && cm.getNetworkCapabilities(cm.getActiveNetwork()) != null; - } else { - return cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnectedOrConnecting(); - } - } // Network check - - public static boolean isNetworkIsSlow(){ - if (!isNetworkConnected()) return true; - - var isConnectionSucks = false; - var cm = (ConnectivityManager) getContext().getSystemService(Context.CONNECTIVITY_SERVICE); - - if (cm == null) return false; - - NetworkCapabilities nc; - Network[] networks = cm.getAllNetworks(); - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - nc = cm.getNetworkCapabilities(cm.getActiveNetwork()); - } else { - nc = cm.getNetworkCapabilities(networks[0]); - } - - var downSpeed = nc.getLinkDownstreamBandwidthKbps(); - var info = cm.getActiveNetworkInfo(); - - if (info == null) return false; - - if (info.getType() == ConnectivityManager.TYPE_MOBILE) { - switch(info.getSubtype()) { - case TelephonyManager.NETWORK_TYPE_1xRTT: - case TelephonyManager.NETWORK_TYPE_EDGE: - case TelephonyManager.NETWORK_TYPE_CDMA: - case TelephonyManager.NETWORK_TYPE_EVDO_0: - case TelephonyManager.NETWORK_TYPE_EVDO_A: - case TelephonyManager.NETWORK_TYPE_GPRS: - case TelephonyManager.NETWORK_TYPE_HSDPA: - case TelephonyManager.NETWORK_TYPE_UMTS: - case TelephonyManager.NETWORK_TYPE_EHRPD: - return true; - } - } - - if (downSpeed < 2500) { - isConnectionSucks = true; - } - - return isConnectionSucks; - } - - public static void fixGapps() { - if (Build.VERSION.SDK_INT >= 26 && !isGmsInstalled()) { - NotificationManager notificationManager = (NotificationManager) getContext().getSystemService(Context.NOTIFICATION_SERVICE); - - if (notificationManager.getNotificationChannel("audio_playback_channel") == null) { - notificationManager.createNotificationChannel(new NotificationChannel("audio_playback_channel", getResources().getString(getIdentifier("audio_message_play_error", "string")), NotificationManager.IMPORTANCE_LOW)); - } - } - } // Music channels fix - - public static void registerActivities(Application application){ - application.registerActivityLifecycleCallbacks(new Application.ActivityLifecycleCallbacks(){ - @Override // android.app.Application.ActivityLifecycleCallbacks - public void onActivityPaused(Activity activity){ - } - - @Override // android.app.Application.ActivityLifecycleCallbacks - public void onActivityResumed(Activity activity){ - } - - @Override // android.app.Application.ActivityLifecycleCallbacks - public void onActivitySaveInstanceState(Activity activity, Bundle bundle){ - } - - @Override // android.app.Application.ActivityLifecycleCallbacks - public void onActivityStarted(Activity activity){ - } - - @Override // android.app.Application.ActivityLifecycleCallbacks - public void onActivityStopped(Activity activity){ - } - - @Override // android.app.Application.ActivityLifecycleCallbacks - public void onActivityCreated(Activity activity, Bundle bundle){ - if (activity instanceof VKActivity) { - activities.add(activity); - } - } - - @Override // android.app.Application.ActivityLifecycleCallbacks - public void onActivityDestroyed(Activity activity){ - activities.remove(activity); - } - }); - } - - public static Activity getCurrentActivity(){ - if (activities.size() == 0) return null; - else return activities.get(0); - } - - public static String getApplicationName(){ - return getContext().getApplicationInfo().loadLabel(getContext().getPackageManager()).toString(); - } - - public static Context BaseContextLocale(Context context){ - Locale locale = new Locale(getLocale()); - Locale.setDefault(locale); - - var resources = context.getResources(); - var configuration = resources.getConfiguration(); - - if (Build.VERSION.SDK_INT >= 24) { - configuration.setLocale(locale); - configuration.setLayoutDirection(locale); - return context.createConfigurationContext(configuration); - } - - configuration.locale = locale; - configuration.setLayoutDirection(locale); - resources.updateConfiguration(configuration, resources.getDisplayMetrics()); - - edit().putBoolean("isdark", isDarkTheme()).commit(); - - return context; - } // Language changer and BaseContext injector - - public static float[] getCenterScreenCoords(){ - int width = getResources().getDisplayMetrics().widthPixels; - int height = getResources().getDisplayMetrics().heightPixels; - - int centerWidth = width / 2; - int centerHeight = height / 2; - return new float[] {centerWidth, centerHeight}; - } - - int[] toIntArray(List list){ - int[] ret = new int[list.size()]; - int i = 0; - for (Integer e : list) { - /*if (e < 2000000000)*/ - ret[i++] = e; - } - return ret; - } -} diff --git a/app/src/main/java/ru/vtosters/lite/utils/GmsUtils.java b/app/src/main/java/ru/vtosters/lite/utils/GmsUtils.java new file mode 100644 index 000000000..4c601c1cc --- /dev/null +++ b/app/src/main/java/ru/vtosters/lite/utils/GmsUtils.java @@ -0,0 +1,28 @@ +package ru.vtosters.lite.utils; + +import android.app.NotificationChannel; +import android.app.NotificationManager; +import android.content.Context; +import android.os.Build; + +public class GmsUtils { + + public static boolean isGmsInstalled() { + try { + AndroidUtils.getGlobalContext().getPackageManager().getPackageInfo("com.google.android.gms", 0); + return true; + } catch (Exception unused) { + return false; + } + } // Google Market Services check + + public static void fixGapps() { + if (Build.VERSION.SDK_INT >= 26 && !isGmsInstalled()) { + NotificationManager notificationManager = (NotificationManager) AndroidUtils.getGlobalContext().getSystemService(Context.NOTIFICATION_SERVICE); + + if (notificationManager.getNotificationChannel("audio_playback_channel") == null) { + notificationManager.createNotificationChannel(new NotificationChannel("audio_playback_channel", AndroidUtils.getResources().getString(AndroidUtils.getIdentifier("audio_message_play_error", "string")), NotificationManager.IMPORTANCE_LOW)); + } + } + } // Music channels fix +} diff --git a/app/src/main/java/ru/vtosters/lite/utils/StreamUtils.java b/app/src/main/java/ru/vtosters/lite/utils/IOUtils.java similarity index 75% rename from app/src/main/java/ru/vtosters/lite/utils/StreamUtils.java rename to app/src/main/java/ru/vtosters/lite/utils/IOUtils.java index 8fe14d169..a0b7db6e3 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/StreamUtils.java +++ b/app/src/main/java/ru/vtosters/lite/utils/IOUtils.java @@ -21,15 +21,15 @@ import javax.crypto.NoSuchPaddingException; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; -public class StreamUtils{ +public class IOUtils { public static final int BUFFER_SIZE = 0x800; - public static byte[] decodeStream(InputStream encIs, String keyURL) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, InvalidKeyException, IOException{ + public static byte[] decodeStream(InputStream encIs, String keyURL) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, InvalidKeyException, IOException { CipherInputStream cip = new CipherInputStream(encIs, getCipher(keyURL)); return readAllBytes(cip); } - public static Cipher getCipher(String key) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, InvalidKeyException, IOException{ + public static Cipher getCipher(String key) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, InvalidKeyException { Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); Key keySpec = new SecretKeySpec(key.getBytes(), "AES"); // bypassing ecb @@ -40,38 +40,65 @@ public class StreamUtils{ return cipher; } - public static InputStream openStream(String url) throws IOException{ + public static InputStream openStream(String url) throws IOException { URLConnection connection = new URL(url).openConnection(); return connection.getInputStream(); } - public static String readAllLines(File file) throws IOException{ + public static String readAllLines(File file) throws IOException { return readAllLines(new FileInputStream(file)); } - public static String readAllLines(InputStream is) throws IOException{ + public static String readAllLines(InputStream is) throws IOException { return new String(readAllBytes(is), "utf-8"); } - public static byte[] readAllBytes(File file) throws IOException{ + public static byte[] readAllBytes(File file) throws IOException { return readAllBytes(new FileInputStream(file)); } - public static byte[] readAllBytes(InputStream is) throws IOException{ + public static byte[] readAllBytes(InputStream is) throws IOException { ByteArrayOutputStream bos = new ByteArrayOutputStream(); byte[] buffer = new byte[BUFFER_SIZE]; int len; - while((len = is.read(buffer)) > 0) + while ((len = is.read(buffer)) > 0) bos.write(buffer, 0, len); return bos.toByteArray(); } - public static void writeToFile(File file, String content) throws IOException{ + public static void writeToFile(File file, String content) throws IOException { writeToFile(file, content.getBytes(StandardCharsets.UTF_8)); } - public static void writeToFile(File file, byte[] content) throws IOException{ + public static void writeToFile(File file, byte[] content) throws IOException { FileOutputStream fos = new FileOutputStream(file); fos.write(content); } + + public static void deleteRecursive(File f) { + deleteRecursive(f, true); + } + + public static void deleteRecursive(File f, boolean selfDeletion) { + if (f.isDirectory()) { + var fs = f.listFiles(); + if (fs != null) + for (File child : fs) + deleteRecursive(child, true); + } + if (selfDeletion) + f.delete(); + } + + public static long getDirSize(File dir) { + var arr = dir.listFiles(); + if (arr == null || arr.length == 0) + return 0; + + long size = 0; + for (var f : arr) + size += f.isDirectory() ? getDirSize(f) : f.length(); + + return size; + } } diff --git a/app/src/main/java/ru/vtosters/lite/utils/ImageUtils.java b/app/src/main/java/ru/vtosters/lite/utils/ImageUtils.java new file mode 100644 index 000000000..632e800d1 --- /dev/null +++ b/app/src/main/java/ru/vtosters/lite/utils/ImageUtils.java @@ -0,0 +1,126 @@ +package ru.vtosters.lite.utils; + +import static android.graphics.Bitmap.createBitmap; +import static android.graphics.Bitmap.createScaledBitmap; +import static androidx.core.content.ContextCompat.getDrawable; +import static ru.vtosters.lite.utils.ThemesUtils.getAccentColor; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Canvas; +import android.graphics.Path; +import android.graphics.PorterDuff; +import android.graphics.RectF; +import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.Drawable; +import android.os.StrictMode; +import android.util.Log; + +import java.io.IOException; + +import okhttp3.Call; +import okhttp3.Callback; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; + +public class ImageUtils { + + private static OkHttpClient client = new OkHttpClient(); + + public static Bitmap bmp = null; + + public static Drawable getDrawableFromUrl(String url, String def, Boolean rounded, Boolean scaled) { + if (!NetworkUtils.isNetworkConnected()) { + if (def == null) return null; + return getDrawable(AndroidUtils.getGlobalContext(), AndroidUtils.getIdentifier(def, "drawable")); + } + + if (NetworkUtils.isNetworkIsSlow()) { + if (def == null) return null; + return getDrawable(AndroidUtils.getGlobalContext(), AndroidUtils.getIdentifier(def, "drawable")); + } + + try { + StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); + StrictMode.setThreadPolicy(policy); // fix get pic + + var request = new Request.a() + .b(url) + .a(); + client.a(request).a(new Callback() { + @Override + public void a(Call call, IOException e) { + Log.e("Error", e.getMessage()); + } + + @Override + public void a(Call call, Response response) { + bmp = BitmapFactory.decodeStream(response.a().a()); + } + }); + + if (bmp == null) { + if (def == null) return null; + return getDrawable(AndroidUtils.getGlobalContext(), AndroidUtils.getIdentifier(def, "drawable")); + } + + bmp = rounded ? getBitmapClippedCircle(bmp) : bmp; // rounding + + bmp = scaled ? createScaledBitmap(bmp, AndroidUtils.dp2px(256), AndroidUtils.dp2px(256), true) : bmp; // scaling + + return new BitmapDrawable(AndroidUtils.getResources(), bmp); // return our drawable + } catch (Exception e) { + if (def == null) return null; // default pic can be null + + return getDrawable(AndroidUtils.getGlobalContext(), AndroidUtils.getIdentifier(def, "drawable")); // get default drawable via res + } + } + + public static Bitmap scaleCenterCrop(Bitmap source, int newHeight, int newWidth) { + int sourceWidth = source.getWidth(); + int sourceHeight = source.getHeight(); + + float xScale = (float) newWidth / sourceWidth; + float yScale = (float) newHeight / sourceHeight; + float scale = Math.max(xScale, yScale); + + float scaledWidth = scale * sourceWidth; + float scaledHeight = scale * sourceHeight; + + float left = (newWidth - scaledWidth) / 2; + float top = (newHeight - scaledHeight) / 2; + + RectF targetRect = new RectF(left, top, left + scaledWidth, top + scaledHeight); + + Bitmap dest = Bitmap.createBitmap(newWidth, newHeight, source.getConfig()); + Canvas canvas = new Canvas(dest); + canvas.drawBitmap(source, null, targetRect, null); + + return dest; + } + + public static Bitmap getBitmapClippedCircle(Bitmap bitmap) { + final int width = bitmap.getWidth(); + final int height = bitmap.getHeight(); + final Bitmap outputBitmap = createBitmap(width, height, Bitmap.Config.ARGB_8888); + + final Path path = new Path(); + path.addCircle( + (float) (width / 2), + (float) (height / 2), + (float) Math.min(width, (height / 2)), + Path.Direction.CCW); + + final Canvas canvas = new Canvas(outputBitmap); + canvas.clipPath(path); + canvas.drawBitmap(bitmap, 0, 0, null); + return outputBitmap; + } + + public static Drawable setTint(Context ctx, Drawable d) { + d.setColorFilter(getAccentColor(), PorterDuff.Mode.SRC_ATOP); + return d; + } +} diff --git a/app/src/main/java/ru/vtosters/lite/utils/LayoutHelper.java b/app/src/main/java/ru/vtosters/lite/utils/LayoutUtils.java similarity index 95% rename from app/src/main/java/ru/vtosters/lite/utils/LayoutHelper.java rename to app/src/main/java/ru/vtosters/lite/utils/LayoutUtils.java index 7ca7a42fd..718b66fa1 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/LayoutHelper.java +++ b/app/src/main/java/ru/vtosters/lite/utils/LayoutUtils.java @@ -4,7 +4,7 @@ import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.RelativeLayout; -public class LayoutHelper { +public class LayoutUtils { public static int MATCH_PARENT = -1; public static int FILL_PARENT = -1; diff --git a/app/src/main/java/ru/vtosters/lite/utils/LifecycleUtils.java b/app/src/main/java/ru/vtosters/lite/utils/LifecycleUtils.java new file mode 100644 index 000000000..47882cba5 --- /dev/null +++ b/app/src/main/java/ru/vtosters/lite/utils/LifecycleUtils.java @@ -0,0 +1,91 @@ +package ru.vtosters.lite.utils; + +import android.app.Activity; +import android.app.Application; +import android.content.Context; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.os.Bundle; +import android.os.Handler; + +import com.vk.navigation.Navigator; +import com.vtosters.lite.VKActivity; + +import java.util.ArrayList; +import java.util.List; + +public class LifecycleUtils { + private static final List activities = new ArrayList<>(); + + public static void registerActivities(Application application) { + application.registerActivityLifecycleCallbacks(new Application.ActivityLifecycleCallbacks() { + @Override // android.app.Application.ActivityLifecycleCallbacks + public void onActivityPaused(Activity activity) { + } + + @Override // android.app.Application.ActivityLifecycleCallbacks + public void onActivityResumed(Activity activity) { + } + + @Override // android.app.Application.ActivityLifecycleCallbacks + public void onActivitySaveInstanceState(Activity activity, Bundle bundle) { + } + + @Override // android.app.Application.ActivityLifecycleCallbacks + public void onActivityStarted(Activity activity) { + } + + @Override // android.app.Application.ActivityLifecycleCallbacks + public void onActivityStopped(Activity activity) { + } + + @Override // android.app.Application.ActivityLifecycleCallbacks + public void onActivityCreated(Activity activity, Bundle bundle) { + if (activity instanceof VKActivity) { + activities.add(activity); + } + } + + @Override // android.app.Application.ActivityLifecycleCallbacks + public void onActivityDestroyed(Activity activity) { + activities.remove(activity); + } + }); + } + + public static Activity getCurrentActivity() { + return activities.size() > 0 ? activities.get(0) : null; + } + + public static void restartApplication() { + Context ctx = AndroidUtils.getGlobalContext(); + PackageManager pm = ctx.getPackageManager(); + + Intent intent = pm.getLaunchIntentForPackage(ctx.getPackageName()); + Intent mainIntent = Intent.makeRestartActivityTask(intent.getComponent()); + ctx.startActivity(mainIntent); + + Runtime.getRuntime().exit(0); + } // Application restart (works on sdk 29+ too) + + public static void restartApplicationWithTimer() { + Handler handler = new Handler(); + handler.postDelayed(new Runnable() { + public void run() { + restartApplication(); + } + }, 500); + } + + public static void restartApplicationInto(Class Class) { + Context ctx = AndroidUtils.getGlobalContext(); + PackageManager pm = ctx.getPackageManager(); + + Intent intent = new Navigator(Class).b(ctx); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + Intent mainIntent = Intent.makeRestartActivityTask(intent.getComponent()); + ctx.startActivity(mainIntent); + + Runtime.getRuntime().exit(0); + } +} diff --git a/app/src/main/java/ru/vtosters/lite/utils/Multithreading.java b/app/src/main/java/ru/vtosters/lite/utils/Multithreading.java deleted file mode 100644 index de0c22f53..000000000 --- a/app/src/main/java/ru/vtosters/lite/utils/Multithreading.java +++ /dev/null @@ -1,12 +0,0 @@ -package ru.vtosters.lite.utils; -import android.os.Handler; -import android.os.Looper; - -public class Multithreading{ - private static final Handler ui = new Handler(Looper.getMainLooper()); - - public static void runOnUi(Runnable run){ - ui.post(run); - } - -} diff --git a/app/src/main/java/ru/vtosters/lite/utils/NetworkUtils.java b/app/src/main/java/ru/vtosters/lite/utils/NetworkUtils.java new file mode 100644 index 000000000..c23b5c9ba --- /dev/null +++ b/app/src/main/java/ru/vtosters/lite/utils/NetworkUtils.java @@ -0,0 +1,64 @@ +package ru.vtosters.lite.utils; + +import android.content.Context; +import android.net.ConnectivityManager; +import android.net.Network; +import android.net.NetworkCapabilities; +import android.os.Build; +import android.telephony.TelephonyManager; + +public class NetworkUtils { + + public static boolean isNetworkConnected() { + ConnectivityManager cm = (ConnectivityManager) AndroidUtils.getGlobalContext().getSystemService(Context.CONNECTIVITY_SERVICE); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + return cm.getActiveNetwork() != null && cm.getNetworkCapabilities(cm.getActiveNetwork()) != null; + } else { + return cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnectedOrConnecting(); + } + } // Network check + + public static boolean isNetworkIsSlow() { + if (!isNetworkConnected()) return true; + + var isConnectionSucks = false; + var cm = (ConnectivityManager) AndroidUtils.getGlobalContext().getSystemService(Context.CONNECTIVITY_SERVICE); + + if (cm == null) return false; + + NetworkCapabilities nc; + Network[] networks = cm.getAllNetworks(); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + nc = cm.getNetworkCapabilities(cm.getActiveNetwork()); + } else { + nc = cm.getNetworkCapabilities(networks[0]); + } + + var downSpeed = nc.getLinkDownstreamBandwidthKbps(); + var info = cm.getActiveNetworkInfo(); + + if (info == null) return false; + + if (info.getType() == ConnectivityManager.TYPE_MOBILE) { + switch (info.getSubtype()) { + case TelephonyManager.NETWORK_TYPE_1xRTT: + case TelephonyManager.NETWORK_TYPE_EDGE: + case TelephonyManager.NETWORK_TYPE_CDMA: + case TelephonyManager.NETWORK_TYPE_EVDO_0: + case TelephonyManager.NETWORK_TYPE_EVDO_A: + case TelephonyManager.NETWORK_TYPE_GPRS: + case TelephonyManager.NETWORK_TYPE_HSDPA: + case TelephonyManager.NETWORK_TYPE_UMTS: + case TelephonyManager.NETWORK_TYPE_EHRPD: + return true; + } + } + + if (downSpeed < 2500) { + isConnectionSucks = true; + } + + return isConnectionSucks; + } +} diff --git a/app/src/main/java/ru/vtosters/lite/utils/Newsfeed.java b/app/src/main/java/ru/vtosters/lite/utils/NewsFeedFiltersUtils.java similarity index 96% rename from app/src/main/java/ru/vtosters/lite/utils/Newsfeed.java rename to app/src/main/java/ru/vtosters/lite/utils/NewsFeedFiltersUtils.java index 80af020f5..322a399f7 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/Newsfeed.java +++ b/app/src/main/java/ru/vtosters/lite/utils/NewsFeedFiltersUtils.java @@ -1,7 +1,7 @@ package ru.vtosters.lite.utils; -import static ru.vtosters.lite.utils.Globals.getContext; -import static ru.vtosters.lite.utils.Globals.getPrefsValue; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; +import static ru.vtosters.lite.utils.AndroidUtils.getPrefsValue; import static ru.vtosters.lite.utils.Preferences.ads; import static ru.vtosters.lite.utils.Preferences.adsgroup; import static ru.vtosters.lite.utils.Preferences.authorsrecomm; @@ -25,7 +25,7 @@ import java.util.Scanner; import ru.vtosters.lite.hooks.JsonInjectors; -public class Newsfeed { +public class NewsFeedFiltersUtils { public static List mFilters; public static List mFiltersLinks; @@ -53,7 +53,7 @@ public class Newsfeed { public static void getFilter(String boolname, String filename, List list) { if (getBoolValue(boolname, true)) { try { - var scanner = new Scanner(getContext().getAssets().open(filename)); + var scanner = new Scanner(getGlobalContext().getAssets().open(filename)); while (scanner.hasNextLine()) { var line = scanner.nextLine(); if (!line.isEmpty()) diff --git a/app/src/main/java/ru/vtosters/lite/utils/OTAHelper.java b/app/src/main/java/ru/vtosters/lite/utils/OTAUtils.java similarity index 85% rename from app/src/main/java/ru/vtosters/lite/utils/OTAHelper.java rename to app/src/main/java/ru/vtosters/lite/utils/OTAUtils.java index 364a64113..ff579e2b0 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/OTAHelper.java +++ b/app/src/main/java/ru/vtosters/lite/utils/OTAUtils.java @@ -13,7 +13,7 @@ import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; -public class OTAHelper{ +public class OTAUtils { private static final String LATEST_RELEASE_URL = "https://api.github.com/repositories/473685743/releases/latest"; private static final String LATEST_RELEASE_COMMIT_URL = "https://api.github.com/repositories/473685743/git/ref/tags/%s"; @@ -22,24 +22,24 @@ public class OTAHelper{ private JSONObject mReleaseJson; private JSONObject mCommitJson; - public OTAHelper(OTAListener listener){ + public OTAUtils(OTAListener listener) { this.mListener = listener; } - public void loadData(){ + public void loadData() { Request release = new Request.a() .b(LATEST_RELEASE_URL) .a(); - mClient.a(release).a(new Callback(){ + mClient.a(release).a(new Callback() { @Override - public void a(Call call, IOException e){ + public void a(Call call, IOException e) { Log.d("OTAHelper", "Error while getting latest release info: " + e); mListener.onUpdateCanceled(); } @Override - public void a(Call call, Response response) throws IOException{ + public void a(Call call, Response response) throws IOException { try { setData(response); } catch (JSONException | NullPointerException e) { @@ -50,7 +50,7 @@ public class OTAHelper{ }); } - void setData(Response response) throws IOException, JSONException{ + void setData(Response response) throws IOException, JSONException { mReleaseJson = new JSONObject(response.a().g()); String tag = mReleaseJson.getString("tag_name"); @@ -58,15 +58,15 @@ public class OTAHelper{ .b(String.format(LATEST_RELEASE_COMMIT_URL, tag)) .a(); - mClient.a(commit).a(new Callback(){ + mClient.a(commit).a(new Callback() { @Override - public void a(Call call, IOException e){ + public void a(Call call, IOException e) { Log.d("OTAHelper", "Error while getting latest commit info: " + e); mListener.onUpdateCanceled(); } @Override - public void a(Call call, Response response) throws IOException{ + public void a(Call call, Response response) throws IOException { try { mCommitJson = new JSONObject(response.a().g()); if (isNewVersion()) @@ -80,7 +80,7 @@ public class OTAHelper{ }); } - public boolean isNewVersion(){ + public boolean isNewVersion() { try { String commitSHA = mCommitJson.getJSONObject("object").getString("sha"); return !commitSHA.startsWith(About.getBuildNumber()); @@ -89,7 +89,7 @@ public class OTAHelper{ } } - public String getNewVersionName(){ + public String getNewVersionName() { try { return mReleaseJson.getString("name"); } catch (JSONException e) { @@ -97,7 +97,7 @@ public class OTAHelper{ } } - public String getUpdateDescription(){ + public String getUpdateDescription() { try { return mReleaseJson.getString("body"); } catch (JSONException e) { @@ -105,7 +105,7 @@ public class OTAHelper{ } } - public String getDownloadUrl(){ + public String getDownloadUrl() { try { return mReleaseJson.getJSONArray("assets") .getJSONObject(0) @@ -115,7 +115,7 @@ public class OTAHelper{ } } - public interface OTAListener{ + public interface OTAListener { void onUpdateApplied(); diff --git a/app/src/main/java/ru/vtosters/lite/utils/Preferences.java b/app/src/main/java/ru/vtosters/lite/utils/Preferences.java index d643a916c..68ecf8566 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/Preferences.java +++ b/app/src/main/java/ru/vtosters/lite/utils/Preferences.java @@ -1,21 +1,18 @@ package ru.vtosters.lite.utils; import static java.lang.Long.MAX_VALUE; -import static ru.vtosters.lite.f0x1d.VTVerifications.isPrometheus; -import static ru.vtosters.lite.f0x1d.VTVerifications.isVerified; +import static ru.vtosters.lite.utils.AndroidUtils.edit; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; +import static ru.vtosters.lite.utils.AndroidUtils.getPrefsValue; import static ru.vtosters.lite.utils.CacheUtils.getInstance; import static ru.vtosters.lite.utils.DeletedMessagesHandler.reloadMessagesList; -import static ru.vtosters.lite.utils.Globals.edit; -import static ru.vtosters.lite.utils.Globals.fixGapps; -import static ru.vtosters.lite.utils.Globals.getContext; -import static ru.vtosters.lite.utils.Globals.getPrefsValue; -import static ru.vtosters.lite.utils.Globals.getUserId; -import static ru.vtosters.lite.utils.Globals.registerActivities; -import static ru.vtosters.lite.utils.Newsfeed.setupFilters; -import static ru.vtosters.lite.utils.Proxy.setProxy; +import static ru.vtosters.lite.utils.NewsFeedFiltersUtils.setupFilters; +import static ru.vtosters.lite.utils.ProxyUtils.setProxy; import static ru.vtosters.lite.utils.SignatureChecker.validateAppSignature; -import static ru.vtosters.lite.utils.Themes.isDarkTheme; -import static ru.vtosters.lite.utils.Themes.systemThemeChanger; +import static ru.vtosters.lite.utils.ThemesUtils.isDarkTheme; +import static ru.vtosters.lite.utils.ThemesUtils.systemThemeChanger; +import static ru.vtosters.lite.utils.VTVerifications.isPrometheus; +import static ru.vtosters.lite.utils.VTVerifications.isVerified; import android.app.Application; import android.content.Context; @@ -30,21 +27,21 @@ import java.security.NoSuchAlgorithmException; import ru.vtosters.lite.ui.fragments.VTSettings; -public class Preferences{ - public static SharedPreferences preferences = getContext().getSharedPreferences("com.vtosters.lite_preferences", Context.MODE_PRIVATE); +public class Preferences { + public static SharedPreferences preferences = getGlobalContext().getSharedPreferences("com.vtosters.lite_preferences", Context.MODE_PRIVATE); public static String VERSIONNAME = "Beta"; - public static void init(Application application) throws Exception{ + public static void init(Application application) throws Exception { setupFilters(); - fixGapps(); + GmsUtils.fixGapps(); setProxy(); reloadMessagesList(); - registerActivities(application); + LifecycleUtils.registerActivities(application); systemThemeChanger(null); getInstance().autoCleaningCache(); } // VK Init - public static void forceOffline(){ + public static void forceOffline() { setupFilters(); getInstance().autoCleaningCache(); edit().putBoolean("isdark", isDarkTheme()).commit(); @@ -54,280 +51,280 @@ public class Preferences{ } } - public static boolean getBoolValue(String key, Boolean value){ + public static boolean getBoolValue(String key, Boolean value) { if (preferences == null) { - preferences = PreferenceManager.getDefaultSharedPreferences(getContext()); + preferences = PreferenceManager.getDefaultSharedPreferences(getGlobalContext()); } return preferences.getBoolean(key, value); } // Set bool by default and get value - public static SharedPreferences getPrefsFromFile(String filename){ - return getContext().getSharedPreferences(filename, Context.MODE_PRIVATE); + public static SharedPreferences getPrefsFromFile(String filename) { + return getGlobalContext().getSharedPreferences(filename, Context.MODE_PRIVATE); } - public static boolean opusmodule(){ + public static boolean opusmodule() { return getBoolValue("opusmodule", true); } - public static boolean DoNotUseOldIcons(){ + public static boolean DoNotUseOldIcons() { return true; } - public static boolean systemtheme(){ + public static boolean systemtheme() { return false; //getBoolValue("systemtheme", true) && VERSION.SDK_INT >= 28; } - public static boolean authorsrecomm(){ + public static boolean authorsrecomm() { return getBoolValue("authorsrecomm", false); } - public static boolean captions(){ + public static boolean captions() { return getBoolValue("captions", false); } - public static boolean copyright_post(){ + public static boolean copyright_post() { return getBoolValue("copyright_post", false); } - public static boolean default_ad_list(){ + public static boolean default_ad_list() { return getBoolValue("default_ad_list", false); } - public static boolean shitposting(){ + public static boolean shitposting() { return getBoolValue("shitposting", false); } - public static boolean friendsrecomm(){ + public static boolean friendsrecomm() { return getBoolValue("friendsrecomm", false); } - public static boolean ads(){ + public static boolean ads() { return getBoolValue("__dbg_no_ads", true); } - public static boolean adsgroup(){ + public static boolean adsgroup() { return getBoolValue("adsgroup", true); } - public static boolean vkme(){ + public static boolean vkme() { return getBoolValue("vkme", false); } - public static boolean adsslider(){ + public static boolean adsslider() { return getBoolValue("__dbg_no_slider_ads", true); } - public static boolean adsstories(){ + public static boolean adsstories() { return getBoolValue("adsstories", true); } - public static boolean videofeed(){ + public static boolean videofeed() { return getBoolValue("__dbg_disable_video_feed", false); } - public static boolean alteremoji(boolean istablet){ + public static boolean alteremoji(boolean istablet) { return alteremojipref() ? alteremojipref() : istablet; } - public static boolean alteremojipref(){ + public static boolean alteremojipref() { return getBoolValue("alteremoji", false); } - public static boolean awayphp(){ + public static boolean awayphp() { return getBoolValue("awayphp", true); } - public static boolean musicFixNew(){ + public static boolean musicFixNew() { return getBoolValue("musicFixNew", true); } - public static boolean foaf(){ + public static boolean foaf() { return getBoolValue("foaf", false); } - public static Class useNewSettings(){ + public static Class useNewSettings() { boolean bool = getBoolValue("useNewSettings", true); return bool ? VTSettings.class : SettingsListFragment.class; } - public static boolean VKUI_INJ(){ + public static boolean VKUI_INJ() { return getBoolValue("VKUI_INJ", true); } - public static boolean calls(){ + public static boolean calls() { return getBoolValue("calls", false); } - public static boolean globalUsersOnline(){ + public static boolean globalUsersOnline() { return getBoolValue("globalUsersOnline", false); } - public static boolean dev(){ + public static boolean dev() { return getBoolValue("dev", false); } - public static boolean devmenu(){ + public static boolean devmenu() { return getBoolValue("devmenu", false); } - public static boolean dnr(){ + public static boolean dnr() { return getBoolValue("dnr", true); } - public static boolean dnt(){ + public static boolean dnt() { return getBoolValue("dnt", true); } - public static boolean dockcounter(){ + public static boolean dockcounter() { return getBoolValue("dockcounter", true); } - public static boolean feedcache(){ + public static boolean feedcache() { return getBoolValue("feedcache", true); } - public static boolean superapp(){ + public static boolean superapp() { return getBoolValue("superapp", true); } - public static boolean vkpay(){ + public static boolean vkpay() { return getBoolValue("vkpay", true); } - public static boolean miniapps(){ + public static boolean miniapps() { return getBoolValue("miniapps", true); } - public static boolean friendsblock(){ + public static boolean friendsblock() { return getBoolValue("friendsblock", false); } - public static boolean dockbar_accent(){ + public static boolean dockbar_accent() { return getBoolValue("dockbar_accent", true); } - public static boolean milkshake(){ + public static boolean milkshake() { return getBoolValue("milkshake", true); } - public static boolean musicnewcatalog(){ + public static boolean musicnewcatalog() { return getBoolValue("musicnewcatalog", true); } - public static boolean videoewcatalog(){ + public static boolean videoewcatalog() { return getBoolValue("videoewcatalog", true); } - public static boolean postsredesign(){ + public static boolean postsredesign() { return getBoolValue("postsredesign", true); } - public static boolean returnnorifs(){ + public static boolean returnnorifs() { return getBoolValue("returnnorifs", false); } - public static boolean gcmfix(){ + public static boolean gcmfix() { return getBoolValue("gcmfix", true) && isValidSignature(); } - public static boolean hasMusicSubscription(){ + public static boolean hasMusicSubscription() { return getBoolValue("hasMusicSubscription", true); } - public static boolean isEnableExternalOpening(){ + public static boolean isEnableExternalOpening() { return getBoolValue("isEnableExternalOpening", false); } - public static boolean isMusicRestricted(){ + public static boolean isMusicRestricted() { return getBoolValue("isMusicRestricted", true); } - public static boolean navbar(){ + public static boolean navbar() { return getBoolValue("navbar", true); } - public static boolean offline(){ + public static boolean offline() { return getBoolValue("offline", false); } - public static boolean oldabout(){ + public static boolean oldabout() { return getBoolValue("oldabout", false); } - public static boolean postsrecomm(){ + public static boolean postsrecomm() { return getBoolValue("postsrecomm", false); } - public static boolean refsfilter(){ + public static boolean refsfilter() { return getBoolValue("refsfilter", false); } - public static boolean setoffline(){ + public static boolean setoffline() { return getBoolValue("setoffline", false); } - public static boolean shortinfo(){ + public static boolean shortinfo() { return getBoolValue("shortinfo", true); } - public static boolean shortlinkfilter(){ + public static boolean shortlinkfilter() { return getBoolValue("shortlinkfilter", false); } - public static boolean shortpost(){ + public static boolean shortpost() { return getBoolValue("shortpost", true); } - public static boolean showmenu(){ + public static boolean showmenu() { return getBoolValue("showmenu", false); } - public static boolean ssl(){ + public static boolean ssl() { return getBoolValue("ssl", true); } - public static boolean stories(){ + public static boolean stories() { return getBoolValue("stories", true); } - public static boolean swipe(){ + public static boolean swipe() { return getBoolValue("swipe", true); } - public static boolean systememoji(){ + public static boolean systememoji() { return getBoolValue("systememoji", false); } - public static boolean vksans(){ + public static boolean vksans() { return getBoolValue("vksans", false); } - public static boolean voice(){ + public static boolean voice() { return getBoolValue("voice", true); } - public static int getMsgCount(int orig){ + public static int getMsgCount(int orig) { String customvalue = getPrefsValue("msgcount"); return customvalue.isEmpty() ? orig : Integer.parseInt(customvalue); } - public static boolean color_grishka(){ + public static boolean color_grishka() { return getBoolValue("color_grishka", true); } - public static boolean vkme_notifs(){ + public static boolean vkme_notifs() { return getBoolValue("vkme_notifs", false); } - public static boolean podcastcatalog(){ + public static boolean podcastcatalog() { return getBoolValue("podcastcatalog", false); } - public static boolean checkupdates(){ + public static boolean checkupdates() { return getBoolValue("checkupdates", true) && isValidSignature(); } - public static boolean isValidSignature(){ + public static boolean isValidSignature() { try { return validateAppSignature(); } catch (PackageManager.NameNotFoundException | NoSuchAlgorithmException e) { @@ -336,20 +333,20 @@ public class Preferences{ return false; } - public static boolean disableSettingsSumms(){ + public static boolean disableSettingsSumms() { return getBoolValue("disableSettingsSumms", false); } - public static boolean hasVerification(){ - return isVerified(getUserId()); + public static boolean hasVerification() { + return isVerified(AccountManagerUtils.getUserId()); } - public static boolean hasSpecialVerif(){ - return isPrometheus(getUserId()); + public static boolean hasSpecialVerif() { + return isPrometheus(AccountManagerUtils.getUserId()); } - public static long getSizeForDelete(){ - switch(getPrefsValue("clearcache")) { + public static long getSizeForDelete() { + switch (getPrefsValue("clearcache")) { case "100mb": return 104857600L; case "500mb": @@ -365,7 +362,7 @@ public class Preferences{ } } - public static int compress(int origquality){ + public static int compress(int origquality) { if (!getBoolValue("compressPhotos", true)) { return 100; } diff --git a/app/src/main/java/ru/vtosters/lite/utils/ProfileHide.java b/app/src/main/java/ru/vtosters/lite/utils/ProfileHider.java similarity index 84% rename from app/src/main/java/ru/vtosters/lite/utils/ProfileHide.java rename to app/src/main/java/ru/vtosters/lite/utils/ProfileHider.java index bf57501d0..afb74feb5 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/ProfileHide.java +++ b/app/src/main/java/ru/vtosters/lite/utils/ProfileHider.java @@ -1,9 +1,9 @@ package ru.vtosters.lite.utils; -import static ru.vtosters.lite.utils.Globals.getContext; -import static ru.vtosters.lite.utils.Globals.getIdentifier; -import static ru.vtosters.lite.utils.Globals.getUserID; -import static ru.vtosters.lite.utils.Globals.getUserId; +import static ru.vtosters.lite.utils.AccountManagerUtils.getUserID; +import static ru.vtosters.lite.utils.AccountManagerUtils.getUserId; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; +import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier; import android.util.Log; @@ -20,13 +20,12 @@ import java.util.HashMap; import okhttp3.OkHttpClient; import okhttp3.Request; -import ru.vtosters.lite.f0x1d.VTVerifications; // Jesus cries -public class ProfileHide{ - private static final OkHttpClient mClient = new OkHttpClient(); +public class ProfileHider { + private static final OkHttpClient client = new OkHttpClient(); - public static void injectMap(HashMap hashMap){ + public static void injectMap(HashMap hashMap) { if (VTVerifications.isServiceAccount(getUserId())) { hashMap.put(100, makeSecond( "service_account_admin_100_info", @@ -46,7 +45,7 @@ public class ProfileHide{ } } - private static UserPresenter.a.a makeSecond(String stringRes, String colorRes, String drawableRes){ + private static UserPresenter.a.a makeSecond(String stringRes, String colorRes, String drawableRes) { return new UserPresenter.a.a( getIdentifier(stringRes, "string"), getIdentifier(colorRes, "color"), @@ -54,14 +53,14 @@ public class ProfileHide{ ); } - public static void fetchInfo(ExtendedUserProfile extendedUserProfile){ + public static void fetchInfo(ExtendedUserProfile extendedUserProfile) { int userID = getUserID(extendedUserProfile.a); if (VTVerifications.isServiceAccount(userID)) { Request request = new Request.a() .b("https://sf.vknext.net/block_text?user_id=" + userID) .a(); try { - JSONObject payload = new JSONObject(mClient.a(request) + JSONObject payload = new JSONObject(client.a(request) .execute() .c() .a() @@ -80,7 +79,7 @@ public class ProfileHide{ } } - public static String getInfo(ExtendedUserProfile extendedUserProfile){ + public static String getInfo(ExtendedUserProfile extendedUserProfile) { int userID = getUserID(extendedUserProfile); if (VTVerifications.isServiceAccount(userID)) { try { @@ -93,6 +92,6 @@ public class ProfileHide{ e.printStackTrace(); } } - return getContext().getString(UserPresenter.q0.a(userID)); + return getGlobalContext().getString(UserPresenter.q0.a(userID)); } } diff --git a/app/src/main/java/ru/vtosters/lite/utils/Proxy.java b/app/src/main/java/ru/vtosters/lite/utils/ProxyUtils.java similarity index 89% rename from app/src/main/java/ru/vtosters/lite/utils/Proxy.java rename to app/src/main/java/ru/vtosters/lite/utils/ProxyUtils.java index 822b87d9e..081a87482 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/Proxy.java +++ b/app/src/main/java/ru/vtosters/lite/utils/ProxyUtils.java @@ -1,8 +1,8 @@ package ru.vtosters.lite.utils; import static java.lang.System.clearProperty; -import static ru.vtosters.lite.utils.Globals.getContext; -import static ru.vtosters.lite.utils.Globals.getPrefsValue; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; +import static ru.vtosters.lite.utils.AndroidUtils.getPrefsValue; import android.annotation.SuppressLint; import android.content.Context; @@ -12,10 +12,9 @@ import android.util.Log; import java.lang.reflect.Field; import java.lang.reflect.Method; -import java.util.Properties; -public class Proxy{ - public static String getApi(){ +public class ProxyUtils { + public static String getApi() { var proxyapi = getPrefsValue("proxyapi"); if (apiproxy() & !proxyapi.isEmpty()) { @@ -25,14 +24,14 @@ public class Proxy{ return "api.vk.com"; } - public static Boolean isZaboronaEnabled(){ + public static Boolean isZaboronaEnabled() { return getPrefsValue("proxy").equals("zaborona"); } private static void setProxyRefl() { Log.d("Proxy", "Setting proxy..."); try { - var context = getContext().getApplicationContext(); + var context = getGlobalContext().getApplicationContext(); Class applicationClass = Class.forName("android.app.Application"); @SuppressLint("DiscouragedPrivateApi") @SuppressWarnings("JavaReflectionMemberAccess") Field mLoadedApkField = applicationClass.getDeclaredField("mLoadedApk"); @@ -148,57 +147,57 @@ public class Proxy{ clearProperty("socksPortHost"); } // Reset all except https - private static String proxyHostHTTP(){ + private static String proxyHostHTTP() { var string = getPrefsValue("proxyHostHTTP"); return string.isEmpty() ? "192.168.0.1" : string; } - private static String proxyHostHTTPS(){ + private static String proxyHostHTTPS() { var string = getPrefsValue("proxyHostHTTPS"); return string.isEmpty() ? "192.168.0.1" : string; } - private static String proxyHostSocks(){ + private static String proxyHostSocks() { var string = getPrefsValue("proxyHostSocks"); return string.isEmpty() ? "192.168.0.1" : string; } - private static String proxyPortHTTP(){ + private static String proxyPortHTTP() { var string = getPrefsValue("proxyPortHTTP"); return string.isEmpty() ? "8888" : string; } - private static String proxyPortHTTPS(){ + private static String proxyPortHTTPS() { var string = getPrefsValue("proxyPortHTTPS"); return string.isEmpty() ? "8888" : string; } - private static String proxyPortSocks(){ + private static String proxyPortSocks() { var string = getPrefsValue("proxyPortSocks"); return string.isEmpty() ? "8888" : string; } - private static String proxyUserHTTP(){ + private static String proxyUserHTTP() { var string = getPrefsValue("proxyUserHTTP"); return string.isEmpty() ? "" : string; } - private static String proxyUserHTTPS(){ + private static String proxyUserHTTPS() { var string = getPrefsValue("proxyUserHTTPS"); return string.isEmpty() ? "" : string; } - private static String proxyPassHTTP(){ + private static String proxyPassHTTP() { var string = getPrefsValue("proxyPassHTTP"); return string.isEmpty() ? "" : string; } - private static String proxyPassHTTPS(){ + private static String proxyPassHTTPS() { String string = getPrefsValue("proxyPassHTTPS"); return string.isEmpty() ? "" : string; } - public static boolean apiproxy(){ + public static boolean apiproxy() { return getPrefsValue("proxy").equals("apiproxy"); } } diff --git a/app/src/main/java/ru/vtosters/lite/utils/ReflectionUtils.java b/app/src/main/java/ru/vtosters/lite/utils/ReflectionUtils.java index 458b38025..d4e64a44d 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/ReflectionUtils.java +++ b/app/src/main/java/ru/vtosters/lite/utils/ReflectionUtils.java @@ -5,13 +5,13 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Modifier; -public class ReflectionUtils{ +public class ReflectionUtils { /** * Gets a class with specific name. * Supports smali type (Lpackage/Class;) */ - public static Class getClass(String name) throws ClassNotFoundException{ + public static Class getClass(String name) throws ClassNotFoundException { if (name.contains(";")) name = name.substring(1, name.length() - 1).replace("/", "."); return Class.forName(name); @@ -20,13 +20,13 @@ public class ReflectionUtils{ /** * Gets a declared field with specific name. **/ - public static Field getDeclaredField(Class clz, String fieldName) throws NoSuchFieldException{ + public static Field getDeclaredField(Class clz, String fieldName) throws NoSuchFieldException { Field field = clz.getDeclaredField(fieldName); field.setAccessible(true); return field; } - public static Field getDeclaredField(String className, String fieldName) throws NoSuchFieldException, ClassNotFoundException{ + public static Field getDeclaredField(String className, String fieldName) throws NoSuchFieldException, ClassNotFoundException { Field field = getClass(className).getDeclaredField(fieldName); field.setAccessible(true); return field; @@ -35,13 +35,13 @@ public class ReflectionUtils{ /** * Gets a field with specific name. **/ - public static Field getField(Class clz, String fieldName) throws NoSuchFieldException{ + public static Field getField(Class clz, String fieldName) throws NoSuchFieldException { Field field = clz.getField(fieldName); field.setAccessible(true); return field; } - public static Field getField(String className, String fieldName) throws NoSuchFieldException, ClassNotFoundException{ + public static Field getField(String className, String fieldName) throws NoSuchFieldException, ClassNotFoundException { Field field = getClass(className).getField(fieldName); field.setAccessible(true); return field; @@ -50,7 +50,7 @@ public class ReflectionUtils{ /** * Gets a non-static field value */ - public static T getObjectField(Class clz, String fieldName, Object instance) throws NoSuchFieldException, IllegalAccessException{ + public static T getObjectField(Class clz, String fieldName, Object instance) throws NoSuchFieldException, IllegalAccessException { Field field; try { field = clz.getField(fieldName); @@ -60,7 +60,7 @@ public class ReflectionUtils{ return (T) field.get(instance); } - public static T getObjectField(String className, String fieldName, Object instance) throws NoSuchFieldException, IllegalAccessException, ClassNotFoundException{ + public static T getObjectField(String className, String fieldName, Object instance) throws NoSuchFieldException, IllegalAccessException, ClassNotFoundException { Field field; try { field = getField(className, fieldName); @@ -73,7 +73,7 @@ public class ReflectionUtils{ /** * Sets a value for non-static field */ - public static void setObjectField(Class clz, String fieldName, Object instance, Object value) throws NoSuchFieldException, IllegalAccessException{ + public static void setObjectField(Class clz, String fieldName, Object instance, Object value) throws NoSuchFieldException, IllegalAccessException { Field field; try { field = clz.getField(fieldName); @@ -83,7 +83,7 @@ public class ReflectionUtils{ field.set(instance, value); } - public static void setObjectField(String className, String fieldName, Object instance, Object value) throws NoSuchFieldException, IllegalAccessException, ClassNotFoundException{ + public static void setObjectField(String className, String fieldName, Object instance, Object value) throws NoSuchFieldException, IllegalAccessException, ClassNotFoundException { Field field; try { field = getField(className, fieldName); @@ -96,7 +96,7 @@ public class ReflectionUtils{ /** * Unlocks modifying of field */ - private static void unlockField(Field field) throws NoSuchFieldException{ + private static void unlockField(Field field) throws NoSuchFieldException { Field accessFlagsFld = getDeclaredField(Field.class, "accessFlags"); try { int accessFlags = accessFlagsFld.getInt(field); @@ -109,7 +109,7 @@ public class ReflectionUtils{ /** * Unlocks modifying of non-static field and sets a value for it */ - public static void setObjectFinalField(Class clz, String fieldName, Object instance, Object value) throws NoSuchFieldException, IllegalAccessException{ + public static void setObjectFinalField(Class clz, String fieldName, Object instance, Object value) throws NoSuchFieldException, IllegalAccessException { Field field; try { field = clz.getField(fieldName); @@ -123,7 +123,7 @@ public class ReflectionUtils{ field.set(instance, value); } - public static void setObjectFinalField(String className, String fieldName, Object instance, Object value) throws NoSuchFieldException, IllegalAccessException, ClassNotFoundException{ + public static void setObjectFinalField(String className, String fieldName, Object instance, Object value) throws NoSuchFieldException, IllegalAccessException, ClassNotFoundException { Field field; try { field = getField(className, fieldName); @@ -140,7 +140,7 @@ public class ReflectionUtils{ /** * Sets a value for static field */ - public static void setObjectStaticField(Class clz, String fieldName, Object value) throws NoSuchFieldException, IllegalAccessException{ + public static void setObjectStaticField(Class clz, String fieldName, Object value) throws NoSuchFieldException, IllegalAccessException { Field field; try { field = clz.getField(fieldName); @@ -150,7 +150,7 @@ public class ReflectionUtils{ field.set(null, value); } - public static void setObjectStaticField(String className, String fieldName, Object value) throws NoSuchFieldException, IllegalAccessException, ClassNotFoundException{ + public static void setObjectStaticField(String className, String fieldName, Object value) throws NoSuchFieldException, IllegalAccessException, ClassNotFoundException { Field field; try { field = getField(className, fieldName); @@ -163,7 +163,7 @@ public class ReflectionUtils{ /** * Unlocks modifying of non-static field and sets a value for it */ - public static void setObjectFinalStaticField(Class clz, String fieldName, Object value) throws NoSuchFieldException, IllegalAccessException{ + public static void setObjectFinalStaticField(Class clz, String fieldName, Object value) throws NoSuchFieldException, IllegalAccessException { Field field; try { field = clz.getField(fieldName); @@ -177,7 +177,7 @@ public class ReflectionUtils{ field.set(null, value); } - public static void setObjectFinalStaticField(String className, String fieldName, Object value) throws NoSuchFieldException, IllegalAccessException, ClassNotFoundException{ + public static void setObjectFinalStaticField(String className, String fieldName, Object value) throws NoSuchFieldException, IllegalAccessException, ClassNotFoundException { Field field; try { field = getField(className, fieldName); @@ -194,7 +194,7 @@ public class ReflectionUtils{ /** * Gets a static field value */ - public static T getObjectField(Class clz, String fieldName) throws NoSuchFieldException, IllegalAccessException{ + public static T getObjectField(Class clz, String fieldName) throws NoSuchFieldException, IllegalAccessException { Field field; try { field = clz.getField(fieldName); @@ -207,19 +207,19 @@ public class ReflectionUtils{ /** * Gets a method with specific name. **/ - public static Method getMethod(Class clz, String methodName, Class... parameterTypes) throws NoSuchMethodException{ + public static Method getMethod(Class clz, String methodName, Class... parameterTypes) throws NoSuchMethodException { Method method = clz.getMethod(methodName, parameterTypes); method.setAccessible(true); return method; } - public static Method getMethod(String className, String methodName, Class... parameterTypes) throws ClassNotFoundException, NoSuchMethodException{ + public static Method getMethod(String className, String methodName, Class... parameterTypes) throws ClassNotFoundException, NoSuchMethodException { Method method = getClass(className).getMethod(methodName, parameterTypes); method.setAccessible(true); return method; } - public static Method getMethod(Class clz, String methodName, Object... parameters) throws NoSuchMethodException{ + public static Method getMethod(Class clz, String methodName, Object... parameters) throws NoSuchMethodException { Class[] parameterTypes = new Class[parameters.length]; for (int i = 0; i < parameters.length; i++) { parameterTypes[i] = parameters[i].getClass(); @@ -229,7 +229,7 @@ public class ReflectionUtils{ return method; } - public static Method getMethod(String className, String methodName, Object... parameters) throws ClassNotFoundException, NoSuchMethodException{ + public static Method getMethod(String className, String methodName, Object... parameters) throws ClassNotFoundException, NoSuchMethodException { Class[] parameterTypes = new Class[parameters.length]; for (int i = 0; i < parameters.length; i++) { parameterTypes[i] = parameters[i].getClass(); @@ -242,19 +242,19 @@ public class ReflectionUtils{ /** * Gets a declared method with specific name. **/ - public static Method getDeclaredMethod(Class clz, String methodName, Class... parameterTypes) throws NoSuchMethodException{ + public static Method getDeclaredMethod(Class clz, String methodName, Class... parameterTypes) throws NoSuchMethodException { Method method = clz.getDeclaredMethod(methodName, parameterTypes); method.setAccessible(true); return method; } - public static Method getDeclaredMethod(String className, String methodName, Class... parameterTypes) throws ClassNotFoundException, NoSuchMethodException{ + public static Method getDeclaredMethod(String className, String methodName, Class... parameterTypes) throws ClassNotFoundException, NoSuchMethodException { Method method = getClass(className).getDeclaredMethod(methodName, parameterTypes); method.setAccessible(true); return method; } - public static Method getDeclaredMethod(Class clz, String methodName, Object... parameters) throws NoSuchMethodException{ + public static Method getDeclaredMethod(Class clz, String methodName, Object... parameters) throws NoSuchMethodException { Class[] parameterTypes = new Class[parameters.length]; for (int i = 0; i < parameters.length; i++) { parameterTypes[i] = parameters[i].getClass(); @@ -264,7 +264,7 @@ public class ReflectionUtils{ return method; } - public static Method getDeclaredMethod(String className, String methodName, Object... parameters) throws ClassNotFoundException, NoSuchMethodException{ + public static Method getDeclaredMethod(String className, String methodName, Object... parameters) throws ClassNotFoundException, NoSuchMethodException { Class[] parameterTypes = new Class[parameters.length]; for (int i = 0; i < parameters.length; i++) { parameterTypes[i] = parameters[i].getClass(); @@ -277,7 +277,7 @@ public class ReflectionUtils{ /** * Invokes a non-static method */ - public static T invokeMethod(Class clz, String methodName, Object instance, Class[] parameterTypes, Object... parameters) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException{ + public static T invokeMethod(Class clz, String methodName, Object instance, Class[] parameterTypes, Object... parameters) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { Method method; try { method = getMethod(clz, methodName, parameterTypes); @@ -287,7 +287,7 @@ public class ReflectionUtils{ return (T) method.invoke(instance, parameters); } - public static T invokeMethod(String className, String methodName, Object instance, Class[] parameterTypes, Object... parameters) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, ClassNotFoundException{ + public static T invokeMethod(String className, String methodName, Object instance, Class[] parameterTypes, Object... parameters) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, ClassNotFoundException { Method method; try { method = getMethod(className, methodName, parameterTypes); @@ -297,7 +297,7 @@ public class ReflectionUtils{ return (T) method.invoke(instance, parameters); } - public static T invokeMethod(Class clz, String methodName, Object instance, Object... parameters) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException{ + public static T invokeMethod(Class clz, String methodName, Object instance, Object... parameters) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { Class[] parameterTypes = new Class[parameters.length]; for (int i = 0; i < parameters.length; i++) { parameterTypes[i] = parameters[i].getClass(); @@ -311,7 +311,7 @@ public class ReflectionUtils{ return (T) method.invoke(instance, parameters); } - public static T invokeMethod(String className, String methodName, Object instance, Object... parameters) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, ClassNotFoundException{ + public static T invokeMethod(String className, String methodName, Object instance, Object... parameters) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, ClassNotFoundException { Class[] parameterTypes = new Class[parameters.length]; for (int i = 0; i < parameters.length; i++) { parameterTypes[i] = parameters[i].getClass(); @@ -328,7 +328,7 @@ public class ReflectionUtils{ /** * Invokes a static method */ - public static T invokeStaticMethod(Class clz, String methodName, Class[] parameterTypes, Object... parameters) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException{ + public static T invokeStaticMethod(Class clz, String methodName, Class[] parameterTypes, Object... parameters) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { Method method; try { method = getMethod(clz, methodName, parameterTypes); @@ -338,7 +338,7 @@ public class ReflectionUtils{ return (T) method.invoke(null, parameters); } - public static T invokeStaticMethod(String className, String methodName, Class[] parameterTypes, Object... parameters) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, ClassNotFoundException{ + public static T invokeStaticMethod(String className, String methodName, Class[] parameterTypes, Object... parameters) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, ClassNotFoundException { Method method; try { method = getMethod(className, methodName, parameterTypes); @@ -348,7 +348,7 @@ public class ReflectionUtils{ return (T) method.invoke(null, parameters); } - public static T invokeStaticMethod(Class clz, String methodName, Object... parameters) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException{ + public static T invokeStaticMethod(Class clz, String methodName, Object... parameters) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { Class[] parameterTypes = new Class[parameters.length]; for (int i = 0; i < parameters.length; i++) { parameterTypes[i] = parameters[i].getClass(); @@ -362,7 +362,7 @@ public class ReflectionUtils{ return (T) method.invoke(null, parameters); } - public static T invokeStaticMethod(String className, String methodName, Object... parameters) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, ClassNotFoundException{ + public static T invokeStaticMethod(String className, String methodName, Object... parameters) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, ClassNotFoundException { Class[] parameterTypes = new Class[parameters.length]; for (int i = 0; i < parameters.length; i++) { parameterTypes[i] = parameters[i].getClass(); diff --git a/app/src/main/java/ru/vtosters/lite/utils/RenameTool.java b/app/src/main/java/ru/vtosters/lite/utils/RenameTool.java index ca833020e..8fc20d77e 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/RenameTool.java +++ b/app/src/main/java/ru/vtosters/lite/utils/RenameTool.java @@ -1,18 +1,13 @@ package ru.vtosters.lite.utils; + import static ru.vtosters.lite.ui.PreferencesUtil.getSTextColor; -import static ru.vtosters.lite.utils.Globals.convertDpToPixel; -import static ru.vtosters.lite.utils.Globals.fromEup; -import static ru.vtosters.lite.utils.Globals.getContext; -import static ru.vtosters.lite.utils.Globals.getGroupName; -import static ru.vtosters.lite.utils.Globals.getResources; -import static ru.vtosters.lite.utils.Globals.getUserFirstName; -import static ru.vtosters.lite.utils.Globals.getUserID; -import static ru.vtosters.lite.utils.Globals.getUserId; -import static ru.vtosters.lite.utils.Globals.getUserLastName; -import static ru.vtosters.lite.utils.Globals.sendToast; -import static ru.vtosters.lite.utils.Themes.getAccentColor; -import static ru.vtosters.lite.utils.Themes.getAlertStyle; -import static ru.vtosters.lite.utils.Themes.getTextAttr; +import static ru.vtosters.lite.utils.AndroidUtils.dp2px; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; +import static ru.vtosters.lite.utils.AndroidUtils.getResources; +import static ru.vtosters.lite.utils.AndroidUtils.sendToast; +import static ru.vtosters.lite.utils.ThemesUtils.getAccentColor; +import static ru.vtosters.lite.utils.ThemesUtils.getAlertStyle; +import static ru.vtosters.lite.utils.ThemesUtils.getTextAttr; import android.content.Context; import android.content.DialogInterface; @@ -41,7 +36,7 @@ import java.lang.reflect.Field; import java.net.URLDecoder; import java.net.URLEncoder; -public class RenameTool{ +public class RenameTool { private static final int DB_VERSION = 2; private static final String COLUMN_NAME = "name"; @@ -56,15 +51,15 @@ public class RenameTool{ private static RenameTool.DbHelper helperInstance; private static boolean updateRequested = true; - protected static RenameTool.DbHelper getHelper(){ + protected static RenameTool.DbHelper getHelper() { if (helperInstance == null) { - helperInstance = new RenameTool.DbHelper(getContext()); + helperInstance = new RenameTool.DbHelper(getGlobalContext()); } return helperInstance; } - public static String getCurrentModifiedUser(){ - Cursor rawQuery = getHelper().getReadableDatabase().rawQuery(String.format("SELECT * FROM %s WHERE %s=%s", TABLE_NAME, COLUMN_VKID, getCurrentUserID()), new String[0]); + public static String getCurrentModifiedUser() { + Cursor rawQuery = getHelper().getReadableDatabase().rawQuery(String.format("SELECT * FROM %s WHERE %s=%s", TABLE_NAME, COLUMN_VKID, AccountManagerUtils.getUserId()), new String[0]); if (rawQuery.moveToFirst()) { try { String decode = URLDecoder.decode(rawQuery.getString(rawQuery.getColumnIndexOrThrow(COLUMN_FIRSTNAME)), "UTF-8"); @@ -78,11 +73,7 @@ public class RenameTool{ return null; } - private static int getCurrentUserID(){ - return getUserId(); - } - - public static void injectIntoJson(JSONObject obj) throws JSONException{ + public static void injectIntoJson(JSONObject obj) throws JSONException { int i = obj.getInt("id"); if (updateRequested) { reloadDB(); @@ -93,7 +84,7 @@ public class RenameTool{ obj.put(COLUMN_FIRSTNAME, user.first).put(COLUMN_LASTNAME, user.second); } - public static void injectIntoJsonGroup(JSONObject obj) throws JSONException{ + public static void injectIntoJsonGroup(JSONObject obj) throws JSONException { int i = obj.getInt("id"); if (updateRequested) { @@ -106,13 +97,13 @@ public class RenameTool{ } // Reload all values from DB - private static void reloadDB(){ + private static void reloadDB() { renamedGroups.clear(); renamedUsers.clear(); updateRequested = false; try (Cursor cursor = getHelper().getReadableDatabase().rawQuery(String.format("SELECT * FROM %s", TABLE_NAME), new String[0])) { - while(cursor.moveToNext()) { + while (cursor.moveToNext()) { String firstName = URLDecoder.decode(cursor.getString(cursor.getColumnIndexOrThrow(COLUMN_FIRSTNAME)), "UTF-8"); String lastName = URLDecoder.decode(cursor.getString(cursor.getColumnIndexOrThrow(COLUMN_LASTNAME)), "UTF-8"); int vkID = cursor.getInt(cursor.getColumnIndexOrThrow(COLUMN_VKID)); @@ -123,7 +114,7 @@ public class RenameTool{ } try (Cursor cursor = getHelper().getReadableDatabase().rawQuery(String.format("SELECT * FROM %s", TABLE_NAME_GROUP), new String[0])) { - while(cursor.moveToNext()) { + while (cursor.moveToNext()) { String name = URLDecoder.decode(cursor.getString(cursor.getColumnIndexOrThrow(COLUMN_NAME)), "UTF-8"); int vkID = cursor.getInt(cursor.getColumnIndexOrThrow(COLUMN_VKID)); renamedGroups.put(vkID, name); @@ -133,7 +124,7 @@ public class RenameTool{ } } - public static void injectIntoChat(User u){ + public static void injectIntoChat(User u) { int id = u.getId(); if (updateRequested) { reloadDB(); @@ -146,7 +137,7 @@ public class RenameTool{ setObject(u, "J", user.second); } - public static void setObject(User instance, String name, Object obj){ + public static void setObject(User instance, String name, Object obj) { try { Field f = User.class.getDeclaredField(name); f.setAccessible(true); @@ -156,7 +147,7 @@ public class RenameTool{ } } - public static void createDialog(ExtendedUserProfile eup, final Context ctx){ + public static void createDialog(ExtendedUserProfile eup, final Context ctx) { LinearLayout linearLayout = new LinearLayout(ctx); linearLayout.setOrientation(LinearLayout.VERTICAL); @@ -168,7 +159,7 @@ public class RenameTool{ linearLayout.addView(fn); fn.getLayoutParams().width = ViewGroup.LayoutParams.MATCH_PARENT; ViewGroup.MarginLayoutParams margin = ((ViewGroup.MarginLayoutParams) fn.getLayoutParams()); - margin.setMargins(convertDpToPixel(20f), 0, convertDpToPixel(20f), 0); + margin.setMargins(dp2px(20f), 0, dp2px(20f), 0); fn.setLayoutParams(margin); final EditText ln = new EditText(ctx); @@ -180,11 +171,11 @@ public class RenameTool{ ln.getLayoutParams().width = ViewGroup.LayoutParams.MATCH_PARENT; ln.setLayoutParams(margin); - final UserProfile profile = fromEup(eup); - fn.setText(getUserFirstName(profile)); - ln.setText(getUserLastName(profile)); + final UserProfile profile = AccountManagerUtils.fromEup(eup); + fn.setText(AccountManagerUtils.getUserFirstName(profile)); + ln.setText(AccountManagerUtils.getUserLastName(profile)); - int id = getUserID(profile); + int id = AccountManagerUtils.getUserID(profile); AlertDialog.Builder builder = new AlertDialog.Builder(ctx, getAlertStyle()); builder.setTitle("Смена имени"); @@ -201,7 +192,7 @@ public class RenameTool{ writableDatabase.execSQL(String.format("INSERT INTO %s (%s, %s, %s) VALUES (%s, '%s', '%s')", TABLE_NAME, COLUMN_VKID, COLUMN_FIRSTNAME, COLUMN_LASTNAME, id, URLEncoder.encode(firstName, "UTF-8"), URLEncoder.encode(lastName, "UTF-8"))); } updateRequested = true; - if (id == getCurrentUserID()) { + if (id == AccountManagerUtils.getUserId()) { ctx.sendBroadcast(new Intent("com.vkontakte.android.USER_NAME_CHANGED")); } ctx.sendBroadcast(new Intent("com.vkontakte.android.ACTION_PROFILE_UPDATED").putExtra("uid", id)); @@ -213,7 +204,7 @@ public class RenameTool{ }); if (isChangedName(id)) builder.setNeutralButton("Сбросить", (dialog, which) -> { getHelper().getWritableDatabase().execSQL(String.format("DELETE FROM %s WHERE %s='%s'", TABLE_NAME, COLUMN_VKID, id)); - if (id == getCurrentUserID()) { + if (id == AccountManagerUtils.getUserId()) { ctx.sendBroadcast(new Intent("com.vkontakte.android.USER_NAME_CHANGED")); } updateRequested = true; @@ -229,7 +220,7 @@ public class RenameTool{ alert.getButton(DialogInterface.BUTTON_NEUTRAL).setTextColor(getResources().getColor(com.vtosters.lite.R.color.red)); } - public static void createDialogGroup(ExtendedCommunityProfile eup, final Context ctx){ + public static void createDialogGroup(ExtendedCommunityProfile eup, final Context ctx) { LinearLayout linearLayout = new LinearLayout(ctx); linearLayout.setOrientation(LinearLayout.VERTICAL); @@ -241,13 +232,13 @@ public class RenameTool{ linearLayout.addView(fn); fn.getLayoutParams().width = ViewGroup.LayoutParams.MATCH_PARENT; ViewGroup.MarginLayoutParams margin = ((ViewGroup.MarginLayoutParams) fn.getLayoutParams()); - margin.setMargins(convertDpToPixel(20f), 0, convertDpToPixel(20f), 0); + margin.setMargins(dp2px(20f), 0, dp2px(20f), 0); fn.setLayoutParams(margin); - final UserProfile profile = fromEup(eup); - fn.setText(getGroupName(profile)); + final UserProfile profile = AccountManagerUtils.fromEup(eup); + fn.setText(AccountManagerUtils.getGroupName(profile)); - int fid = getUserID(profile); + int fid = AccountManagerUtils.getUserID(profile); if (fid < 0) fid = -fid; final int id = fid; @@ -285,29 +276,29 @@ public class RenameTool{ alert.getButton(DialogInterface.BUTTON_NEUTRAL).setTextColor(getResources().getColor(com.vtosters.lite.R.color.red)); } - public static boolean isChangedName(int uid){ + public static boolean isChangedName(int uid) { return renamedUsers.get(uid) != null; } - public static boolean isChangedNameGroup(int uid){ + public static boolean isChangedNameGroup(int uid) { return renamedGroups.get(uid) != null; } - public static boolean isIdInList(UserProfile profile){ + public static boolean isIdInList(UserProfile profile) { return true; } - private static class DbHelper extends SQLiteOpenHelper{ - public DbHelper(Context context){ + private static class DbHelper extends SQLiteOpenHelper { + public DbHelper(Context context) { super(context, DB_NAME, null, DB_VERSION); } - public void onCreate(SQLiteDatabase db){ + public void onCreate(SQLiteDatabase db) { db.execSQL(String.format("CREATE TABLE %s (%s INTEGER PRIMARY KEY AUTOINCREMENT, %s INTEGER, %s TEXT)", TABLE_NAME_GROUP, "_id", COLUMN_VKID, COLUMN_NAME)); db.execSQL(String.format("CREATE TABLE %s (%s INTEGER PRIMARY KEY AUTOINCREMENT, %s INTEGER, %s TEXT, %s TEXT)", TABLE_NAME, "_id", COLUMN_VKID, COLUMN_FIRSTNAME, COLUMN_LASTNAME)); } - public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){ + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { if (newVersion == 2) { db.execSQL(String.format("CREATE TABLE %s (%s INTEGER PRIMARY KEY AUTOINCREMENT, %s INTEGER, %s TEXT)", TABLE_NAME_GROUP, "_id", COLUMN_VKID, COLUMN_NAME)); } diff --git a/app/src/main/java/ru/vtosters/lite/utils/SSFS.java b/app/src/main/java/ru/vtosters/lite/utils/SSFS.java deleted file mode 100644 index d1b1fe6bf..000000000 --- a/app/src/main/java/ru/vtosters/lite/utils/SSFS.java +++ /dev/null @@ -1,45 +0,0 @@ -package ru.vtosters.lite.utils; - -import static ru.vtosters.lite.hooks.DateHook.getLocale; -import static ru.vtosters.lite.utils.About.getBuildNumber; -import static ru.vtosters.lite.utils.Globals.getPrefsValue; -import static ru.vtosters.lite.utils.Globals.getUserSecret; -import static ru.vtosters.lite.utils.Globals.getUserToken; -import static ru.vtosters.lite.utils.Preferences.dev; -import static ru.vtosters.lite.utils.Preferences.vksans; -import static ru.vtosters.lite.utils.Proxy.apiproxy; -import static ru.vtosters.lite.utils.Themes.isDarkTheme; - -public class SSFS{ - public static String getSSFSLink(){ - return SSFSDomain() + "?token=" + getUserToken() + "&vt_dark=" + getDarkVKUI() + "&vt_amoled=" + getAmoledVKUI() + "&secret=" + getUserSecret() + "&proxy=" + getUserProxy() + "&lang=" + getLocale() + "&vt=1&vksans=" + isVKSansEnabled() + "&vt_version=" + getBuildNumber() + "&vt_debug=" + isDEVModEnabled(); - } - - public static String SSFSDomain(){ - String string = getPrefsValue("ssfscustom"); - - if (!string.isEmpty()) return string; - - return "https://vtsf.vknext.net"; - } - - public static String getDarkVKUI(){ - return isDarkTheme() ? "1" : "0"; - } - - public static String getAmoledVKUI(){ - return getPrefsValue("darktheme").equals("amoled") && isDarkTheme() ? "1" : "0"; - } - - public static String getUserProxy(){ - return apiproxy() ? "1" : "0"; - } - - public static String isVKSansEnabled(){ - return vksans() ? "1" : "0"; - } - - public static String isDEVModEnabled(){ - return dev() ? "1" : "0"; - } -} diff --git a/app/src/main/java/ru/vtosters/lite/utils/SSFSUtils.java b/app/src/main/java/ru/vtosters/lite/utils/SSFSUtils.java new file mode 100644 index 000000000..aa6973966 --- /dev/null +++ b/app/src/main/java/ru/vtosters/lite/utils/SSFSUtils.java @@ -0,0 +1,52 @@ +package ru.vtosters.lite.utils; + +import static ru.vtosters.lite.hooks.DateHook.getLocale; +import static ru.vtosters.lite.utils.About.getBuildNumber; +import static ru.vtosters.lite.utils.AndroidUtils.getPrefsValue; +import static ru.vtosters.lite.utils.Preferences.dev; +import static ru.vtosters.lite.utils.Preferences.vksans; +import static ru.vtosters.lite.utils.ProxyUtils.apiproxy; +import static ru.vtosters.lite.utils.ThemesUtils.isDarkTheme; + +public class SSFSUtils { + public static String getSSFSLink() { + return SSFSDomain() + + "?token=" + AccountManagerUtils.getUserToken() + + "&vt_dark=" + getDarkVKUI() + + "&vt_amoled=" + getAmoledVKUI() + + "&secret=" + AccountManagerUtils.getUserSecret() + + "&proxy=" + getUserProxy() + + "&lang=" + getLocale() + + "&vt=1&vksans=" + isVKSansEnabled() + + "&vt_version=" + getBuildNumber() + + "&vt_debug=" + isDEVModEnabled(); + } + + public static String SSFSDomain() { + String string = getPrefsValue("ssfscustom"); + + if (!string.isEmpty()) return string; + + return "https://vtsf.vknext.net"; + } + + public static String getDarkVKUI() { + return isDarkTheme() ? "1" : "0"; + } + + public static String getAmoledVKUI() { + return getPrefsValue("darktheme").equals("amoled") && isDarkTheme() ? "1" : "0"; + } + + public static String getUserProxy() { + return apiproxy() ? "1" : "0"; + } + + public static String isVKSansEnabled() { + return vksans() ? "1" : "0"; + } + + public static String isDEVModEnabled() { + return dev() ? "1" : "0"; + } +} diff --git a/app/src/main/java/ru/vtosters/lite/utils/SignatureChecker.java b/app/src/main/java/ru/vtosters/lite/utils/SignatureChecker.java index 51c41d5f4..c85c93042 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/SignatureChecker.java +++ b/app/src/main/java/ru/vtosters/lite/utils/SignatureChecker.java @@ -2,8 +2,8 @@ package ru.vtosters.lite.utils; import static android.content.pm.PackageManager.GET_SIGNATURES; import static android.content.pm.PackageManager.NameNotFoundException; -import static ru.vtosters.lite.utils.Globals.getContext; -import static ru.vtosters.lite.utils.Globals.getPackageName; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; +import static ru.vtosters.lite.utils.AndroidUtils.getPackageName; import android.annotation.SuppressLint; import android.content.pm.PackageInfo; @@ -12,17 +12,17 @@ import android.content.pm.Signature; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; -public class SignatureChecker{ +public class SignatureChecker { private static final String APP_SIGNATURE = "QzNFQTI3Q0ExNEJENzJFM0U2QUUyMDM0OTdCNDQ0NUFEQUMxRjk0NQ=="; - public static String getSHA1(byte[] sig) throws NoSuchAlgorithmException{ + public static String getSHA1(byte[] sig) throws NoSuchAlgorithmException { MessageDigest digest = MessageDigest.getInstance("SHA1"); digest.update(sig); byte[] hashtext = digest.digest(); return bytesToHex(hashtext); } - public static String bytesToHex(byte[] bytes){ + public static String bytesToHex(byte[] bytes) { final char[] hexArray = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; char[] hexChars = new char[bytes.length * 2]; @@ -35,8 +35,8 @@ public class SignatureChecker{ return new String(hexChars); } - public static boolean validateAppSignature() throws NameNotFoundException, NoSuchAlgorithmException{ - @SuppressLint("PackageManagerGetSignatures") PackageInfo packageInfo = getContext().getPackageManager().getPackageInfo(getPackageName(), GET_SIGNATURES); + public static boolean validateAppSignature() throws NameNotFoundException, NoSuchAlgorithmException { + @SuppressLint("PackageManagerGetSignatures") PackageInfo packageInfo = getGlobalContext().getPackageManager().getPackageInfo(getPackageName(), GET_SIGNATURES); for (Signature signature : packageInfo.signatures) { String sha1 = getSHA1(signature.toByteArray()); return Base64Utils.decode(APP_SIGNATURE).equals(sha1); diff --git a/app/src/main/java/ru/vtosters/lite/utils/StringUtils.java b/app/src/main/java/ru/vtosters/lite/utils/StringUtils.java new file mode 100644 index 000000000..6ffae0fcb --- /dev/null +++ b/app/src/main/java/ru/vtosters/lite/utils/StringUtils.java @@ -0,0 +1,8 @@ +package ru.vtosters.lite.utils; + +public class StringUtils { + + public static boolean isEmpty(String str) { + return str == null || str.isEmpty(); + } +} diff --git a/app/src/main/java/ru/vtosters/lite/utils/Themes.java b/app/src/main/java/ru/vtosters/lite/utils/ThemesUtils.java similarity index 71% rename from app/src/main/java/ru/vtosters/lite/utils/Themes.java rename to app/src/main/java/ru/vtosters/lite/utils/ThemesUtils.java index bb17b5b82..9cda8659e 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/Themes.java +++ b/app/src/main/java/ru/vtosters/lite/utils/ThemesUtils.java @@ -1,15 +1,13 @@ package ru.vtosters.lite.utils; -import static android.graphics.Color.parseColor; import static android.view.View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR; import static ru.vtosters.lite.hooks.VKUIHook.isLoaded; import static ru.vtosters.lite.ui.wallpapers.WallpapersHooks.getWallpaper; -import static ru.vtosters.lite.utils.Globals.edit; -import static ru.vtosters.lite.utils.Globals.getCenterScreenCoords; -import static ru.vtosters.lite.utils.Globals.getCurrentActivity; -import static ru.vtosters.lite.utils.Globals.getIdentifier; -import static ru.vtosters.lite.utils.Globals.getPrefsValue; -import static ru.vtosters.lite.utils.Globals.getResources; +import static ru.vtosters.lite.utils.AndroidUtils.edit; +import static ru.vtosters.lite.utils.AndroidUtils.getCenterScreenCoords; +import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier; +import static ru.vtosters.lite.utils.AndroidUtils.getPrefsValue; +import static ru.vtosters.lite.utils.AndroidUtils.getResources; import static ru.vtosters.lite.utils.Preferences.color_grishka; import static ru.vtosters.lite.utils.Preferences.dockbar_accent; import static ru.vtosters.lite.utils.Preferences.milkshake; @@ -45,17 +43,17 @@ import com.vtosters.lite.data.ThemeTracker; import java.util.Arrays; import java.util.List; -public class Themes{ +public class ThemesUtils { public static List accentColors = Arrays.asList( "5692d7", "528bcc", "7aa0cc", "518bcc", "6296d0", "2f68aa", "638ebf", "5181b8", "71aaeb", "4774a8", "5baaf4", "4186c8", "add3ff", "4774a8", "718198", "5a9eff", "99a2ad", "74a2d6", "e9eef3", "dfe3e7", "eff1f3", "5c9ce6", "4986cc", "4680c2" ); - public static void applyTheme(VKTheme theme){ - VKThemeHelper.theme(theme, getCurrentActivity(), getCenterScreenCoords()); + public static void applyTheme(VKTheme theme) { + VKThemeHelper.theme(theme, LifecycleUtils.getCurrentActivity(), getCenterScreenCoords()); } // Apply VKTheme and ImTheme (hard applying without dynamic theme changing) - public static void setTheme(VKTheme theme, Activity activity){ - if (activity == null) activity = getCurrentActivity(); + public static void setTheme(VKTheme theme, Activity activity) { + if (activity == null) activity = LifecycleUtils.getCurrentActivity(); VKThemeHelper.theme(theme, activity, getCenterScreenCoords()); ThemeTracker.a(); isLoaded = false; @@ -63,8 +61,8 @@ public class Themes{ WebCachePreloader.e(); } // apply changed theme - public static void setThemeFL(VKTheme theme, Activity activity, float[] fl){ - if (activity == null) activity = getCurrentActivity(); + public static void setThemeFL(VKTheme theme, Activity activity, float[] fl) { + if (activity == null) activity = LifecycleUtils.getCurrentActivity(); VKThemeHelper.theme(theme, activity, fl); ThemeTracker.a(); isLoaded = false; @@ -72,126 +70,126 @@ public class Themes{ WebCachePreloader.e(); } - public static boolean isDarkTheme(){ + public static boolean isDarkTheme() { return VKThemeHelper.r(); } - public static int getAccentColor(){ + public static int getAccentColor() { return getColorFromAttr(getAttrId("accent")); } // Color accent - public static int getTextAttr(){ + public static int getTextAttr() { return getColorFromAttr(getAttrId("text_primary")); } // Text Primary color - public static int getSTextAttr(){ + public static int getSTextAttr() { return getColorFromAttr(getAttrId("text_secondary")); } // Text Secondary color - public static int getTabbarBackground(){ + public static int getTabbarBackground() { return getColorFromAttr(getAttrId("tabbar_background")); } // Tabbar/Navbar background - public static int getBackgroundContent(){ + public static int getBackgroundContent() { return getColorFromAttr(getAttrId("background_content")); } // Background color in app - public static int getBackgroundPage(){ + public static int getBackgroundPage() { return getColorFromAttr(getAttrId("background_page")); } // Background color in app - public static int getHeaderBackground(){ + public static int getHeaderBackground() { return getColorFromAttr(getAttrId("header_background")); } // Toolbar/Header background - public static int getHeaderText(){ + public static int getHeaderText() { return getColorFromAttr(getAttrId("header_text")); } // Header/Toolbar color text - public static int getAmoledTheme(){ + public static int getAmoledTheme() { return getIdentifier("BaseAmoledStyle", "style"); } // Get Amoled theme id - public static int picFix(){ + public static int picFix() { return getIdentifier("ActionBarThemeFix", "style"); } // Fix tabbar color in photo viewer - public static int getAmoledImTheme(){ + public static int getAmoledImTheme() { return getIdentifier("VkIm.Theme.VkApp.Amoled", "style"); } // Get Amoled theme id for messages - public static int getAmoledMeTheme(){ + public static int getAmoledMeTheme() { return getIdentifier("VkIm.Theme.VkMe.Amoled", "style"); } // Get Amoled theme id for messages with rounded msg - public static int getAttrId(String attr){ + public static int getAttrId(String attr) { return getIdentifier(attr, "attr"); } - public static void setBarTheme(View getview){ + public static void setBarTheme(View getview) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { getview.setSystemUiVisibility(getNeededColorNavbar() | getNeededColorStatusbar()); } } // Set white/dark statusbar/navbar icons - public static int getNeededColorStatusbar(){ + public static int getNeededColorStatusbar() { return !isDarkTheme() && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S ? 8192 : 0; } - public static int getNeededColorNavbar(){ + public static int getNeededColorNavbar() { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.O ? isDarkTheme() ? SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR : 0 : 0; } - public static int getDarkThemeRes(){ + public static int getDarkThemeRes() { if (getPrefsValue("darktheme").equals("amoled")) { return isMilkshake() ? getIdentifier("VkMilkAmoledStyle", "style") : getIdentifier("VkAmoledStyle", "style"); } return isMilkshake() ? R.style.VkMilkDarkStyle : R.style.VkDarkStyle; } // Return needed res theme - public static VKTheme getDarkTheme(){ + public static VKTheme getDarkTheme() { return isMilkshake() ? VKTheme.VKAPP_MILK_DARK : VKTheme.VKAPP_DARK; } // Return needed theme for theme changer - public static VKTheme getLightTheme(){ + public static VKTheme getLightTheme() { return isMilkshake() ? VKTheme.VKAPP_MILK_LIGHT : VKTheme.VKAPP_LIGHT; } // Return needed theme for theme changer - public static int getColorFromAttr(int attr){ + public static int getColorFromAttr(int attr) { return VKThemeHelper.d(attr); } // Get needed attr color - public static boolean isAndroidMonet(){ + public static boolean isAndroidMonet() { return color_grishka() && Build.VERSION.SDK_INT >= 31; } - public static void colorWriteBar(View view){ + public static void colorWriteBar(View view) { if (!navbar()) return; view.setBackgroundColor(getTabbarBackground()); } - public static boolean isMilkshake(){ + public static boolean isMilkshake() { return MilkshakeHelper.e(); } - public static boolean isColorRefAccented(int color){ - for (int accent : new int[] {R.color.accent_blue, R.color.azure_A400, R.color.blue, R.color.blue_200, R.color.blue_200_muted, R.color.blue_300, R.color.blue_400, R.color.cool_blue, R.color.cornflower_blue, R.color.cornflower_blue_two, R.color.dot_unread, R.color.fave_promo_btn_pressed, R.color.header_blue, R.color.vkim_ripple_dark, R.color.colorAccent, R.color.light_blue, R.color.light_blue_gray, R.color.live_emoji_butt_hide, R.color.music_action_button_blue, R.color.name, R.color.picker_blue, R.color.picker_blue_pressed, R.color.picker_tab_bg_selected, R.color.picker_tab_text_selected, R.color.sharing_blue_btn_normal, R.color.sharing_blue_btn_pressed, R.color.sky_300, R.color.text_blue, R.color.tip_background, R.color.tw__blue_default, R.color.tw__blue_pressed, R.color.vkim_msg_sending_ic, R.color.vkim_playing_drawable_rect, R.color.white_blue32}) { + public static boolean isColorRefAccented(int color) { + for (int accent : new int[]{R.color.accent_blue, R.color.azure_A400, R.color.blue, R.color.blue_200, R.color.blue_200_muted, R.color.blue_300, R.color.blue_400, R.color.cool_blue, R.color.cornflower_blue, R.color.cornflower_blue_two, R.color.dot_unread, R.color.fave_promo_btn_pressed, R.color.header_blue, R.color.vkim_ripple_dark, R.color.colorAccent, R.color.light_blue, R.color.light_blue_gray, R.color.live_emoji_butt_hide, R.color.music_action_button_blue, R.color.name, R.color.picker_blue, R.color.picker_blue_pressed, R.color.picker_tab_bg_selected, R.color.picker_tab_text_selected, R.color.sharing_blue_btn_normal, R.color.sharing_blue_btn_pressed, R.color.sky_300, R.color.text_blue, R.color.tip_background, R.color.tw__blue_default, R.color.tw__blue_pressed, R.color.vkim_msg_sending_ic, R.color.vkim_playing_drawable_rect, R.color.white_blue32}) { if (color == accent) return true; } return false; } // Accent colors - public static void themeMonetToolbar(ImageButton imageButton, Toolbar toolbar){ + public static void themeMonetToolbar(ImageButton imageButton, Toolbar toolbar) { imageButton.setImageTintList(ColorStateList.valueOf(getHeaderText())); toolbar.setElevation(0.0f); } - public static Drawable recolorDrawable(Drawable drawable){ + public static Drawable recolorDrawable(Drawable drawable) { if (drawable == null) return null; return new RecoloredDrawable(drawable, getAccentColor()); } // Recolor drawable to accent color - public static Drawable recolorVKIconMenu(Drawable drawable){ + public static Drawable recolorVKIconMenu(Drawable drawable) { int accent = getHeaderText(); if (drawable == null) return null; @@ -202,7 +200,7 @@ public class Themes{ } // Recolor vk icon to accent color - public static Drawable recolorDrawableToolbar(Drawable drawable){ + public static Drawable recolorDrawableToolbar(Drawable drawable) { if (drawable == null) return null; if (!isAndroidMonet()) return drawable; @@ -211,14 +209,14 @@ public class Themes{ } // Recolor toolbar drawable to accent color @SuppressLint("UseCompatLoadingForDrawables") - public static Drawable recolorDrawableInt(int drawable){ + public static Drawable recolorDrawableInt(int drawable) { if (!isAndroidMonet()) return getResources().getDrawable(drawable); @SuppressLint("UseCompatLoadingForDrawables") Drawable res = getResources().getDrawable(drawable); return new RecoloredDrawable(res, getAccentColor()); } // Get res drawable via id and coloring to accent - public static ColorStateList recolorCSL(ColorStateList colorStateList){ + public static ColorStateList recolorCSL(ColorStateList colorStateList) { if (colorStateList == null) return null; if (!isAndroidMonet()) return colorStateList; @@ -227,7 +225,7 @@ public class Themes{ } // Recolor ColorStateList to accent color @SuppressLint("UseCompatLoadingForColorStateLists") - public static ColorStateList themeCSL(Context context, int color){ + public static ColorStateList themeCSL(Context context, int color) { if (isColorRefAccented(color) && isAndroidMonet()) { return ColorStateList.valueOf(getAccentColor()); } @@ -241,17 +239,17 @@ public class Themes{ } try { - int unsel = csl.getColorForState(new int[] {-android.R.attr.state_selected}, Color.BLACK); - int sel = csl.getColorForState(new int[] {android.R.attr.state_selected}, Color.BLACK); + int unsel = csl.getColorForState(new int[]{-android.R.attr.state_selected}, Color.BLACK); + int sel = csl.getColorForState(new int[]{android.R.attr.state_selected}, Color.BLACK); boolean isUnselAccent = isAccentedColor(unsel); boolean isSelAccent = isAccentedColor(sel); if (isUnselAccent || isSelAccent) { - return new ColorStateList(new int[][] { - new int[] {android.R.attr.state_selected}, new int[] {-android.R.attr.state_selected} - }, new int[] {isSelAccent ? getAccentColor() : sel, isUnselAccent ? getAccentColor() : unsel}); + return new ColorStateList(new int[][]{ + new int[]{android.R.attr.state_selected}, new int[]{-android.R.attr.state_selected} + }, new int[]{isSelAccent ? getAccentColor() : sel, isUnselAccent ? getAccentColor() : unsel}); } return csl; @@ -262,7 +260,7 @@ public class Themes{ } } // Recolor ColorStateList - public static int darken(int color, float by){ + public static int darken(int color, float by) { float[] hsl = new float[3]; ColorUtils.colorToHSL(color, hsl); hsl[2] -= by; @@ -270,106 +268,106 @@ public class Themes{ return ColorUtils.HSLToColor(hsl); } - public static int lighten(int color, float factor){ + public static int lighten(int color, float factor) { int red = (int) ((Color.red(color) * (1 - factor) / 255 + factor) * 255); int green = (int) ((Color.green(color) * (1 - factor) / 255 + factor) * 255); int blue = (int) ((Color.blue(color) * (1 - factor) / 255 + factor) * 255); return Color.argb(Color.alpha(color), red, green, blue); } - public static int fixTextColor(int resid){ + public static int fixTextColor(int resid) { if (resid == R.color.music_action_button_gray || resid == R.color.cool_grey || resid == R.color.accent_blue) { return isDarkTheme() ? R.color.white : R.color.cool_grey; } return resid; } - public static int halfAlpha(int src){ + public static int halfAlpha(int src) { return ColorUtils.setAlphaComponent(src, 169); } - public static boolean isAccentedColor(ColorStateList target){ + public static boolean isAccentedColor(ColorStateList target) { return target != null && isAccentedColor(target.getDefaultColor()); } - public static boolean isAccentedColor(int target){ + public static boolean isAccentedColor(int target) { return accentColors.contains(hex(target).toLowerCase()); } - public static int getColor(Context context, int i){ + public static int getColor(Context context, int i) { if (isColorRefAccented(i) && isAndroidMonet()) { return getAccentColor(); } return context.getColor(i); } // Android Support color injector + accent color checker - public static int getColor2(int i){ + public static int getColor2(int i) { if (isColorRefAccented(i) && isAndroidMonet()) { return getAccentColor(); } return getResources().getColor(i); } // Android Support color injector + accent color checker - public static int getAlertStyle(){ + public static int getAlertStyle() { if (isDarkTheme()) return R.style.Theme_MaterialComponents_Dialog_Alert; return R.style.Theme_MaterialComponents_Light_Dialog_Alert; } - public static String getBackgroundStickers(){ + public static String getBackgroundStickers() { if (getWallpaper() != null) { return "images_with_background"; } return "images"; } - public static VKTheme getCurrentTheme(){ + public static VKTheme getCurrentTheme() { return VKThemeHelper.l(); } - public static void setNeededTheme(Activity activity){ + public static void setNeededTheme(Activity activity) { if (milkshake()) { - if (getCurrentTheme() == VKTheme.VKAPP_LIGHT){ + if (getCurrentTheme() == VKTheme.VKAPP_LIGHT) { setTheme(VKTheme.VKAPP_MILK_LIGHT, activity); } - if (getCurrentTheme() == VKTheme.VKAPP_DARK){ + if (getCurrentTheme() == VKTheme.VKAPP_DARK) { setTheme(VKTheme.VKAPP_MILK_DARK, activity); } } else { - if (getCurrentTheme() == VKTheme.VKAPP_MILK_LIGHT){ + if (getCurrentTheme() == VKTheme.VKAPP_MILK_LIGHT) { setTheme(VKTheme.VKAPP_LIGHT, activity); } - if (getCurrentTheme() == VKTheme.VKAPP_MILK_DARK){ + if (getCurrentTheme() == VKTheme.VKAPP_MILK_DARK) { setTheme(VKTheme.VKAPP_DARK, activity); } } } - public static void setNavbarColor(Window window, int i){ + public static void setNavbarColor(Window window, int i) { if (navbar()) { window.setNavigationBarColor(getTabbarBackground()); window.getDecorView().setSystemUiVisibility(getNeededColorNavbar()); } } - public static String hex(int i){ + public static String hex(int i) { return String.format("#%06X", Integer.valueOf(i & 16777215)); } // Get color as hex string - public static int getNavigationHeight(int Default){ + public static int getNavigationHeight(int Default) { int VKME = R.dimen.design_bottom_sheet_peek_height_min; return vkme() ? VKME : Default; } - public static int getNavigationWidth(int Default){ + public static int getNavigationWidth(int Default) { int VKME = R.dimen.app_minimumsize_h; return vkme() ? VKME : Default; } - public static ColorStateList getCSTDock(){ + public static ColorStateList getCSTDock() { return new ColorStateList( new int[][]{ new int[]{android.R.attr.state_checked}, @@ -382,7 +380,7 @@ public class Themes{ ); } - public static void systemThemeChanger(Activity activity){ // ded + public static void systemThemeChanger(Activity activity) { // ded boolean isDarkTheme = isDarkTheme(); if (!isDarkTheme) { @@ -397,7 +395,7 @@ public class Themes{ } int currentNightMode = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK; - switch(currentNightMode) { + switch (currentNightMode) { case Configuration.UI_MODE_NIGHT_UNDEFINED: case Configuration.UI_MODE_NIGHT_NO: edit().putBoolean("isdark", false).commit(); @@ -410,7 +408,7 @@ public class Themes{ } } - private void getCurrentThemeID(VKTheme paramVKTheme){ + private void getCurrentThemeID(VKTheme paramVKTheme) { Preference.b("vk_theme_helper", "current_theme", paramVKTheme.getId()); } } diff --git a/app/src/main/java/ru/vtosters/lite/f0x1d/VTVerifications.java b/app/src/main/java/ru/vtosters/lite/utils/VTVerifications.java similarity index 79% rename from app/src/main/java/ru/vtosters/lite/f0x1d/VTVerifications.java rename to app/src/main/java/ru/vtosters/lite/utils/VTVerifications.java index aea7a1e67..f724108cd 100644 --- a/app/src/main/java/ru/vtosters/lite/f0x1d/VTVerifications.java +++ b/app/src/main/java/ru/vtosters/lite/utils/VTVerifications.java @@ -1,4 +1,4 @@ -package ru.vtosters.lite.f0x1d; +package ru.vtosters.lite.utils; import static ru.vtosters.lite.utils.Preferences.getBoolValue; @@ -23,19 +23,18 @@ import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; -import ru.vtosters.lite.utils.Globals; -public class VTVerifications{ +public class VTVerifications { public static final List sVerifications = new ArrayList<>(); public static final List sPrometheuses = new ArrayList<>(); public static final List sDevelopers = new ArrayList<>(); public static final List sServiceAccounts = new ArrayList<>(); private static final OkHttpClient sClient = new OkHttpClient(); - public static void load(Context context){ + public static void load(Context context) { var prefs = context.getSharedPreferences("vt_another_data", 0); - if (!Globals.isNetworkConnected() && prefs.contains("ids")) { + if (!NetworkUtils.isNetworkConnected() && prefs.contains("ids")) { parseJson(prefs.getString("ids", "[]")); return; } @@ -45,10 +44,10 @@ public class VTVerifications{ .a(RequestBody.a(MediaType.b("application/json; charset=UTF-8"), "{\"types\":[0,228,404,1337]}")) .a(); - sClient.a(request).a(new Callback(){ + sClient.a(request).a(new Callback() { @Override - public void a(Call call, Response response){ + public void a(Call call, Response response) { try { var payload = response.a().g(); parseJson(payload); @@ -61,7 +60,7 @@ public class VTVerifications{ } @Override - public void a(Call call, IOException e){ + public void a(Call call, IOException e) { Log.d("VTVerifications", "" + e); } @@ -74,7 +73,7 @@ public class VTVerifications{ * 404 - Developer * 1337 - Service account */ - private static void parseJson(String payload){ + private static void parseJson(String payload) { try { var json = new JSONObject(payload); processIds(json.optJSONArray("0"), sVerifications); @@ -86,7 +85,7 @@ public class VTVerifications{ } } - private static void processIds(JSONArray jsonIds, List member){ + private static void processIds(JSONArray jsonIds, List member) { if (jsonIds == null || jsonIds.length() == 0) return; @@ -94,27 +93,27 @@ public class VTVerifications{ member.add(jsonIds.optInt(i)); } - public static boolean isVerified(int id){ + public static boolean isVerified(int id) { return sVerifications.contains(id); } - public static boolean isPrometheus(int id){ + public static boolean isPrometheus(int id) { return sPrometheuses.contains(id); } - public static boolean isDeveloper(int id){ + public static boolean isDeveloper(int id) { return sDevelopers.contains(id); } - public static boolean isServiceAccount(int id){ + public static boolean isServiceAccount(int id) { return sServiceAccounts.contains(id); } - public static boolean vtverif(){ + public static boolean vtverif() { return getBoolValue("VT_Verification", true); } - private static int getId(JSONObject json){ + private static int getId(JSONObject json) { var id = json.optInt("id", 0); if (!json.optString(NavigatorKeys.e).equals("group") && !json.optString(NavigatorKeys.e).equals("page") || json.optString(NavigatorKeys.e).isEmpty()) @@ -123,7 +122,7 @@ public class VTVerifications{ return -id; } - public static boolean isVerified(JSONObject jSONObject){ + public static boolean isVerified(JSONObject jSONObject) { if (jSONObject.optInt("verified", 0) == 1) { return true; } @@ -135,7 +134,7 @@ public class VTVerifications{ return isVerified(getId(jSONObject)); } - public static boolean hasPrometheus(JSONObject jSONObject){ + public static boolean hasPrometheus(JSONObject jSONObject) { if (jSONObject.optInt("trending", 0) == 1) { return true; } @@ -147,7 +146,7 @@ public class VTVerifications{ return isPrometheus(getId(jSONObject)); } - public static boolean hasDeveloper(JSONObject jSONObject){ + public static boolean hasDeveloper(JSONObject jSONObject) { if (!getBoolValue("VT_Dev", true)) { return false; } @@ -155,7 +154,7 @@ public class VTVerifications{ return isDeveloper(getId(jSONObject)); } - public static VerifyInfo VerifyInfo(JSONObject jSONObject){ + public static VerifyInfo VerifyInfo(JSONObject jSONObject) { return new VerifyInfo(isVerified(jSONObject), hasPrometheus(jSONObject)); } } diff --git a/smali/AndroidManifest.xml b/smali/AndroidManifest.xml index 328b8224d..99fa5b4b9 100644 --- a/smali/AndroidManifest.xml +++ b/smali/AndroidManifest.xml @@ -188,6 +188,10 @@ android:name="com.vk.core.util.AppRecreate$ProcessPhoenix" android:process=":phoenix" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> + + - + \ No newline at end of file diff --git a/smali/smali_classes2/com/vk/attachpicker/PhotoVideoAttachActivity.smali b/smali/smali_classes2/com/vk/attachpicker/PhotoVideoAttachActivity.smali index 2d8ef8b3d..16478916b 100644 --- a/smali/smali_classes2/com/vk/attachpicker/PhotoVideoAttachActivity.smali +++ b/smali/smali_classes2/com/vk/attachpicker/PhotoVideoAttachActivity.smali @@ -846,7 +846,7 @@ invoke-virtual {v8, v4}, Landroid/view/Window;->setStatusBarColor(I)V - invoke-static {v8, v4}, Lru/vtosters/lite/utils/Themes;->setNavbarColor(Landroid/view/Window;I)V + invoke-static {v8, v4}, Lru/vtosters/lite/utils/ThemesUtils;->setNavbarColor(Landroid/view/Window;I)V .line 37 :cond_3 diff --git a/smali/smali_classes2/com/vk/auth/base/BaseAuthFragment.smali b/smali/smali_classes2/com/vk/auth/base/BaseAuthFragment.smali index 950e71696..78f23ee07 100644 --- a/smali/smali_classes2/com/vk/auth/base/BaseAuthFragment.smali +++ b/smali/smali_classes2/com/vk/auth/base/BaseAuthFragment.smali @@ -188,7 +188,7 @@ .line 13 invoke-virtual {v0, v1}, Landroid/view/Window;->setStatusBarColor(I)V - invoke-static {v0, v1}, Lru/vtosters/lite/utils/Themes;->setNavbarColor(Landroid/view/Window;I)V + invoke-static {v0, v1}, Lru/vtosters/lite/utils/ThemesUtils;->setNavbarColor(Landroid/view/Window;I)V const/4 v1, 0x0 @@ -223,7 +223,7 @@ .line 15 invoke-virtual {v0, p1}, Landroid/view/Window;->setNavigationBarColor(I)V - invoke-static {v0, p1}, Lru/vtosters/lite/utils/Themes;->setNavbarColor(Landroid/view/Window;I)V + invoke-static {v0, p1}, Lru/vtosters/lite/utils/ThemesUtils;->setNavbarColor(Landroid/view/Window;I)V .line 16 new-instance v1, Landroid/graphics/drawable/ColorDrawable; diff --git a/smali/smali_classes2/com/vk/common/links/LinkProcessorKt.smali b/smali/smali_classes2/com/vk/common/links/LinkProcessorKt.smali index 08170a70c..4eb99f299 100644 --- a/smali/smali_classes2/com/vk/common/links/LinkProcessorKt.smali +++ b/smali/smali_classes2/com/vk/common/links/LinkProcessorKt.smali @@ -5670,7 +5670,7 @@ if-eqz v11, :cond_231 - invoke-static {}, Lru/vtosters/lite/utils/Globals;->getContext()Landroid/content/Context; + invoke-static {}, Lru/vtosters/lite/utils/AndroidUtils;->getGlobalContext()Landroid/content/Context; move-result-object v1 @@ -5720,7 +5720,7 @@ if-eqz v11, :cond_232 - invoke-static {}, Lru/vtosters/lite/utils/Globals;->getContext()Landroid/content/Context; + invoke-static {}, Lru/vtosters/lite/utils/AndroidUtils;->getGlobalContext()Landroid/content/Context; move-result-object v1 @@ -5770,7 +5770,7 @@ if-eqz v11, :cond_233 - invoke-static {}, Lru/vtosters/lite/utils/Globals;->getContext()Landroid/content/Context; + invoke-static {}, Lru/vtosters/lite/utils/AndroidUtils;->getGlobalContext()Landroid/content/Context; move-result-object v1 @@ -5820,7 +5820,7 @@ if-eqz v11, :cond_234 - invoke-static {}, Lru/vtosters/lite/utils/Globals;->getContext()Landroid/content/Context; + invoke-static {}, Lru/vtosters/lite/utils/AndroidUtils;->getGlobalContext()Landroid/content/Context; move-result-object v1 @@ -5870,7 +5870,7 @@ if-eqz v11, :cond_235 - invoke-static {}, Lru/vtosters/lite/utils/Globals;->getContext()Landroid/content/Context; + invoke-static {}, Lru/vtosters/lite/utils/AndroidUtils;->getGlobalContext()Landroid/content/Context; move-result-object v1 @@ -5920,7 +5920,7 @@ if-eqz v11, :cond_236 - invoke-static {}, Lru/vtosters/lite/utils/Globals;->getContext()Landroid/content/Context; + invoke-static {}, Lru/vtosters/lite/utils/AndroidUtils;->getGlobalContext()Landroid/content/Context; move-result-object v1 @@ -5970,7 +5970,7 @@ if-eqz v11, :cond_237 - invoke-static {}, Lru/vtosters/lite/utils/Globals;->getContext()Landroid/content/Context; + invoke-static {}, Lru/vtosters/lite/utils/AndroidUtils;->getGlobalContext()Landroid/content/Context; move-result-object v1 @@ -6020,7 +6020,7 @@ if-eqz v11, :cond_238 - invoke-static {}, Lru/vtosters/lite/utils/Globals;->getContext()Landroid/content/Context; + invoke-static {}, Lru/vtosters/lite/utils/AndroidUtils;->getGlobalContext()Landroid/content/Context; move-result-object v1 @@ -6070,7 +6070,7 @@ if-eqz v11, :cond_260 - invoke-static {}, Lru/vtosters/lite/utils/Globals;->getContext()Landroid/content/Context; + invoke-static {}, Lru/vtosters/lite/utils/AndroidUtils;->getGlobalContext()Landroid/content/Context; move-result-object v1 diff --git a/smali/smali_classes2/com/vk/common/links/OpenFunctionsKt.smali b/smali/smali_classes2/com/vk/common/links/OpenFunctionsKt.smali index 06c60aec1..8b2578c9f 100644 --- a/smali/smali_classes2/com/vk/common/links/OpenFunctionsKt.smali +++ b/smali/smali_classes2/com/vk/common/links/OpenFunctionsKt.smali @@ -1427,7 +1427,7 @@ .method public static final a(Landroid/content/Context;Lcom/vk/dto/common/VideoFile;Ljava/lang/String;Lcom/vk/libvideo/ad/AdsDataProvider;Ljava/lang/String;Lcom/vk/statistic/Statistic;ZLcom/vk/common/links/OpenCallback;Ljava/lang/Integer;)V .locals 14 - invoke-static {p1, p0}, Lru/vtosters/lite/utils/ExternalLinkHandler;->parseVideoFile(Lcom/vk/dto/common/VideoFile;Landroid/content/Context;)Z + invoke-static {p1, p0}, Lru/vtosters/lite/utils/ExternalLinkParser;->parseVideoFile(Lcom/vk/dto/common/VideoFile;Landroid/content/Context;)Z move-result v9 diff --git a/smali/smali_classes2/com/vk/core/extensions/ActivityExt.smali b/smali/smali_classes2/com/vk/core/extensions/ActivityExt.smali index 89144a2cb..cd835448f 100644 --- a/smali/smali_classes2/com/vk/core/extensions/ActivityExt.smali +++ b/smali/smali_classes2/com/vk/core/extensions/ActivityExt.smali @@ -96,7 +96,7 @@ :cond_0 invoke-virtual {p0, p1}, Landroid/view/Window;->setStatusBarColor(I)V - invoke-static {p0, p1}, Lru/vtosters/lite/utils/Themes;->setNavbarColor(Landroid/view/Window;I)V + invoke-static {p0, p1}, Lru/vtosters/lite/utils/ThemesUtils;->setNavbarColor(Landroid/view/Window;I)V :cond_1 return-void @@ -159,7 +159,7 @@ :goto_0 invoke-virtual {p0, p1}, Landroid/view/Window;->setNavigationBarColor(I)V - invoke-static {p0, p1}, Lru/vtosters/lite/utils/Themes;->setNavbarColor(Landroid/view/Window;I)V + invoke-static {p0, p1}, Lru/vtosters/lite/utils/ThemesUtils;->setNavbarColor(Landroid/view/Window;I)V :cond_1 return-void @@ -224,7 +224,7 @@ invoke-virtual {p0, p2}, Landroid/view/Window;->setStatusBarColor(I)V - invoke-static {p0, p2}, Lru/vtosters/lite/utils/Themes;->setNavbarColor(Landroid/view/Window;I)V + invoke-static {p0, p2}, Lru/vtosters/lite/utils/ThemesUtils;->setNavbarColor(Landroid/view/Window;I)V .line 20 invoke-static {}, Lcom/vk/core/util/OsUtil;->b()Z diff --git a/smali/smali_classes2/com/vk/core/tips/TipTextWindow.smali b/smali/smali_classes2/com/vk/core/tips/TipTextWindow.smali index a1c49f20e..516764c59 100644 --- a/smali/smali_classes2/com/vk/core/tips/TipTextWindow.smali +++ b/smali/smali_classes2/com/vk/core/tips/TipTextWindow.smali @@ -620,7 +620,7 @@ .line 31 invoke-virtual {p1, v0}, Landroid/view/Window;->setStatusBarColor(I)V - invoke-static {p1, v0}, Lru/vtosters/lite/utils/Themes;->setNavbarColor(Landroid/view/Window;I)V + invoke-static {p1, v0}, Lru/vtosters/lite/utils/ThemesUtils;->setNavbarColor(Landroid/view/Window;I)V .line 32 iget-boolean v0, p0, Lcom/vk/core/tips/TipTextWindow;->l:Z diff --git a/smali/smali_classes2/com/vk/core/ui/themes/VKTheme.smali b/smali/smali_classes2/com/vk/core/ui/themes/VKTheme.smali index 11df1049f..79631ef4b 100644 --- a/smali/smali_classes2/com/vk/core/ui/themes/VKTheme.smali +++ b/smali/smali_classes2/com/vk/core/ui/themes/VKTheme.smali @@ -89,7 +89,7 @@ .line 2 sget v18, Lb/h/g/e;->VkDarkStyle:I - invoke-static {}, Lru/vtosters/lite/utils/Themes;->getDarkThemeRes()I + invoke-static {}, Lru/vtosters/lite/utils/ThemesUtils;->getDarkThemeRes()I move-result v18 @@ -199,7 +199,7 @@ .line 6 sget v10, Lb/h/g/e;->VkMilkDarkStyle:I - invoke-static {}, Lru/vtosters/lite/utils/Themes;->getDarkThemeRes()I + invoke-static {}, Lru/vtosters/lite/utils/ThemesUtils;->getDarkThemeRes()I move-result v10 diff --git a/smali/smali_classes2/com/vk/core/ui/themes/VKThemeHelper.smali b/smali/smali_classes2/com/vk/core/ui/themes/VKThemeHelper.smali index 4b1f52c6d..a1bba8508 100644 --- a/smali/smali_classes2/com/vk/core/ui/themes/VKThemeHelper.smali +++ b/smali/smali_classes2/com/vk/core/ui/themes/VKThemeHelper.smali @@ -979,7 +979,7 @@ invoke-virtual {p0, p1}, Landroid/view/Window;->setNavigationBarColor(I)V - invoke-static {p0, p1}, Lru/vtosters/lite/utils/Themes;->setNavbarColor(Landroid/view/Window;I)V + invoke-static {p0, p1}, Lru/vtosters/lite/utils/ThemesUtils;->setNavbarColor(Landroid/view/Window;I)V return-void @@ -1001,7 +1001,7 @@ .line 70 invoke-virtual {p0, p1}, Landroid/view/Window;->setNavigationBarColor(I)V - invoke-static {p0, p1}, Lru/vtosters/lite/utils/Themes;->setNavbarColor(Landroid/view/Window;I)V + invoke-static {p0, p1}, Lru/vtosters/lite/utils/ThemesUtils;->setNavbarColor(Landroid/view/Window;I)V const/4 p0, 0x1 diff --git a/smali/smali_classes2/com/vk/core/view/FitSystemWindowsFragmentWrapperFrameLayout.smali b/smali/smali_classes2/com/vk/core/view/FitSystemWindowsFragmentWrapperFrameLayout.smali index 96c2c2aa8..5df8a85dc 100644 --- a/smali/smali_classes2/com/vk/core/view/FitSystemWindowsFragmentWrapperFrameLayout.smali +++ b/smali/smali_classes2/com/vk/core/view/FitSystemWindowsFragmentWrapperFrameLayout.smali @@ -153,7 +153,7 @@ .line 15 invoke-virtual {v0, p3}, Landroid/view/Window;->setStatusBarColor(I)V - invoke-static {v0, p3}, Lru/vtosters/lite/utils/Themes;->setNavbarColor(Landroid/view/Window;I)V + invoke-static {v0, p3}, Lru/vtosters/lite/utils/ThemesUtils;->setNavbarColor(Landroid/view/Window;I)V :cond_2 return-void diff --git a/smali/smali_classes2/com/vk/dto/common/VerifyInfo$b.smali b/smali/smali_classes2/com/vk/dto/common/VerifyInfo$b.smali index 00fd78d5b..767788930 100644 --- a/smali/smali_classes2/com/vk/dto/common/VerifyInfo$b.smali +++ b/smali/smali_classes2/com/vk/dto/common/VerifyInfo$b.smali @@ -125,7 +125,7 @@ .method public final a(Lorg/json/JSONObject;)Lcom/vk/dto/common/VerifyInfo; .locals 4 - invoke-static {p1}, Lru/vtosters/lite/f0x1d/VTVerifications;->VerifyInfo(Lorg/json/JSONObject;)Lcom/vk/dto/common/VerifyInfo; + invoke-static {p1}, Lru/vtosters/lite/utils/VTVerifications;->VerifyInfo(Lorg/json/JSONObject;)Lcom/vk/dto/common/VerifyInfo; move-result-object p1 diff --git a/smali/smali_classes2/com/vk/dto/common/VerifyInfo.smali b/smali/smali_classes2/com/vk/dto/common/VerifyInfo.smali index 2df3d7683..f7b200d32 100644 --- a/smali/smali_classes2/com/vk/dto/common/VerifyInfo.smali +++ b/smali/smali_classes2/com/vk/dto/common/VerifyInfo.smali @@ -178,19 +178,19 @@ .method public final b(Lorg/json/JSONObject;)Lcom/vk/dto/common/VerifyInfo; .locals 3 - invoke-static {p1}, Lru/vtosters/lite/f0x1d/VTVerifications;->isVerified(Lorg/json/JSONObject;)Z + invoke-static {p1}, Lru/vtosters/lite/utils/VTVerifications;->isVerified(Lorg/json/JSONObject;)Z move-result v1 iput-boolean v1, p0, Lcom/vk/dto/common/VerifyInfo;->a:Z - invoke-static {p1}, Lru/vtosters/lite/f0x1d/VTVerifications;->hasPrometheus(Lorg/json/JSONObject;)Z + invoke-static {p1}, Lru/vtosters/lite/utils/VTVerifications;->hasPrometheus(Lorg/json/JSONObject;)Z move-result v0 iput-boolean v0, p0, Lcom/vk/dto/common/VerifyInfo;->b:Z - invoke-static {p1}, Lru/vtosters/lite/f0x1d/VTVerifications;->hasDeveloper(Lorg/json/JSONObject;)Z + invoke-static {p1}, Lru/vtosters/lite/utils/VTVerifications;->hasDeveloper(Lorg/json/JSONObject;)Z move-result v0 diff --git a/smali/smali_classes2/com/vk/dto/stickers/StickerItem$b.smali b/smali/smali_classes2/com/vk/dto/stickers/StickerItem$b.smali index 2e919eafc..2b603e1ba 100644 --- a/smali/smali_classes2/com/vk/dto/stickers/StickerItem$b.smali +++ b/smali/smali_classes2/com/vk/dto/stickers/StickerItem$b.smali @@ -47,7 +47,7 @@ const-string v0, "images" - invoke-static {}, Lru/vtosters/lite/utils/Themes;->getBackgroundStickers()Ljava/lang/String; + invoke-static {}, Lru/vtosters/lite/utils/ThemesUtils;->getBackgroundStickers()Ljava/lang/String; move-result-object v0 diff --git a/smali/smali_classes2/com/vk/extensions/ActivityExt.smali b/smali/smali_classes2/com/vk/extensions/ActivityExt.smali index c6a0772fd..8949bf9f6 100644 --- a/smali/smali_classes2/com/vk/extensions/ActivityExt.smali +++ b/smali/smali_classes2/com/vk/extensions/ActivityExt.smali @@ -223,7 +223,7 @@ invoke-virtual {p0, p1}, Landroid/view/Window;->setStatusBarColor(I)V - invoke-static {p0, p1}, Lru/vtosters/lite/utils/Themes;->setNavbarColor(Landroid/view/Window;I)V + invoke-static {p0, p1}, Lru/vtosters/lite/utils/ThemesUtils;->setNavbarColor(Landroid/view/Window;I)V .line 6 :cond_0 diff --git a/smali/smali_classes3/com/vk/im/engine/internal/api_parsers/AttachApiParser.smali b/smali/smali_classes3/com/vk/im/engine/internal/api_parsers/AttachApiParser.smali index da8aae49e..14d6e4c53 100644 --- a/smali/smali_classes3/com/vk/im/engine/internal/api_parsers/AttachApiParser.smali +++ b/smali/smali_classes3/com/vk/im/engine/internal/api_parsers/AttachApiParser.smali @@ -4015,7 +4015,7 @@ const-string v4, "images" - invoke-static {}, Lru/vtosters/lite/utils/Themes;->getBackgroundStickers()Ljava/lang/String; + invoke-static {}, Lru/vtosters/lite/utils/ThemesUtils;->getBackgroundStickers()Ljava/lang/String; move-result-object v4 diff --git a/smali/smali_classes3/com/vk/im/engine/internal/api_parsers/LpAttachApiParser.smali b/smali/smali_classes3/com/vk/im/engine/internal/api_parsers/LpAttachApiParser.smali index 12843c2f4..e618a8cfb 100644 --- a/smali/smali_classes3/com/vk/im/engine/internal/api_parsers/LpAttachApiParser.smali +++ b/smali/smali_classes3/com/vk/im/engine/internal/api_parsers/LpAttachApiParser.smali @@ -622,7 +622,7 @@ const-string v4, "images" - invoke-static {}, Lru/vtosters/lite/utils/Themes;->getBackgroundStickers()Ljava/lang/String; + invoke-static {}, Lru/vtosters/lite/utils/ThemesUtils;->getBackgroundStickers()Ljava/lang/String; move-result-object v4 diff --git a/smali/smali_classes3/com/vk/im/ui/components/dialogs_header/impl/vk/VkDialogsHeaderVc$1.smali b/smali/smali_classes3/com/vk/im/ui/components/dialogs_header/impl/vk/VkDialogsHeaderVc$1.smali index 8113ca8db..8edb3859d 100644 --- a/smali/smali_classes3/com/vk/im/ui/components/dialogs_header/impl/vk/VkDialogsHeaderVc$1.smali +++ b/smali/smali_classes3/com/vk/im/ui/components/dialogs_header/impl/vk/VkDialogsHeaderVc$1.smali @@ -58,7 +58,7 @@ const-string v1, "msgupdate" - invoke-static {v1, v0}, Lru/vtosters/lite/utils/Globals;->getIdentifier(Ljava/lang/String;Ljava/lang/String;)I + invoke-static {v1, v0}, Lru/vtosters/lite/utils/AndroidUtils;->getIdentifier(Ljava/lang/String;Ljava/lang/String;)I move-result v0 diff --git a/smali/smali_classes3/com/vk/im/ui/components/dialogs_header/impl/vk/VkDialogsHeaderVc.smali b/smali/smali_classes3/com/vk/im/ui/components/dialogs_header/impl/vk/VkDialogsHeaderVc.smali index 6fb7e16cd..98cffc1e1 100644 --- a/smali/smali_classes3/com/vk/im/ui/components/dialogs_header/impl/vk/VkDialogsHeaderVc.smali +++ b/smali/smali_classes3/com/vk/im/ui/components/dialogs_header/impl/vk/VkDialogsHeaderVc.smali @@ -260,7 +260,7 @@ .locals 0 .line 1 - invoke-static {}, Lru/vtosters/lite/utils/Globals;->reloadMSG()V + invoke-static {}, Lru/vtosters/lite/utils/AccountManagerUtils;->reloadMSG()V return-void .end method diff --git a/smali/smali_classes3/com/vk/im/ui/components/dialogs_list/vc_impl/VhDialog.smali b/smali/smali_classes3/com/vk/im/ui/components/dialogs_list/vc_impl/VhDialog.smali index 24a5dcee7..4887c045b 100644 --- a/smali/smali_classes3/com/vk/im/ui/components/dialogs_list/vc_impl/VhDialog.smali +++ b/smali/smali_classes3/com/vk/im/ui/components/dialogs_list/vc_impl/VhDialog.smali @@ -1466,7 +1466,7 @@ if-eqz p1, :cond_1 .line 181 - invoke-static {}, Lru/vtosters/lite/f0x1d/VTVerifications;->vtverif()Z + invoke-static {}, Lru/vtosters/lite/utils/VTVerifications;->vtverif()Z move-result p2 @@ -1476,7 +1476,7 @@ move-result p2 - invoke-static {p2}, Lru/vtosters/lite/f0x1d/VTVerifications;->isVerified(I)Z + invoke-static {p2}, Lru/vtosters/lite/utils/VTVerifications;->isVerified(I)Z move-result v0 @@ -1485,7 +1485,7 @@ goto :goto_51 :cond_45 - invoke-static {}, Lru/vtosters/lite/f0x1d/VTVerifications;->vtverif()Z + invoke-static {}, Lru/vtosters/lite/utils/VTVerifications;->vtverif()Z move-result p2 @@ -1495,7 +1495,7 @@ move-result p2 - invoke-static {p2}, Lru/vtosters/lite/f0x1d/VTVerifications;->isVerified(I)Z + invoke-static {p2}, Lru/vtosters/lite/utils/VTVerifications;->isVerified(I)Z move-result v0 diff --git a/smali/smali_classes3/com/vk/im/ui/components/viewcontrollers/dialog_header/info/IconFormatter.smali b/smali/smali_classes3/com/vk/im/ui/components/viewcontrollers/dialog_header/info/IconFormatter.smali index cb2b3f5fa..0de550cdb 100644 --- a/smali/smali_classes3/com/vk/im/ui/components/viewcontrollers/dialog_header/info/IconFormatter.smali +++ b/smali/smali_classes3/com/vk/im/ui/components/viewcontrollers/dialog_header/info/IconFormatter.smali @@ -125,7 +125,7 @@ if-eqz p1, :cond_1 - invoke-static {}, Lru/vtosters/lite/f0x1d/VTVerifications;->vtverif()Z + invoke-static {}, Lru/vtosters/lite/utils/VTVerifications;->vtverif()Z move-result p2 @@ -135,7 +135,7 @@ move-result p2 - invoke-static {p2}, Lru/vtosters/lite/f0x1d/VTVerifications;->isVerified(I)Z + invoke-static {p2}, Lru/vtosters/lite/utils/VTVerifications;->isVerified(I)Z move-result v0 @@ -144,7 +144,7 @@ goto :goto_0 :cond_45 - invoke-static {}, Lru/vtosters/lite/f0x1d/VTVerifications;->vtverif()Z + invoke-static {}, Lru/vtosters/lite/utils/VTVerifications;->vtverif()Z move-result p2 @@ -154,7 +154,7 @@ move-result p2 - invoke-static {p2}, Lru/vtosters/lite/f0x1d/VTVerifications;->isVerified(I)Z + invoke-static {p2}, Lru/vtosters/lite/utils/VTVerifications;->isVerified(I)Z move-result v0 diff --git a/smali/smali_classes3/com/vk/libvideo/dialogs/BaseAnimationDialog.smali b/smali/smali_classes3/com/vk/libvideo/dialogs/BaseAnimationDialog.smali index 0da469f7d..f4f4081f1 100644 --- a/smali/smali_classes3/com/vk/libvideo/dialogs/BaseAnimationDialog.smali +++ b/smali/smali_classes3/com/vk/libvideo/dialogs/BaseAnimationDialog.smali @@ -357,7 +357,7 @@ invoke-virtual {v0, v1}, Landroid/view/Window;->setStatusBarColor(I)V - invoke-static {v0, v1}, Lru/vtosters/lite/utils/Themes;->setNavbarColor(Landroid/view/Window;I)V + invoke-static {v0, v1}, Lru/vtosters/lite/utils/ThemesUtils;->setNavbarColor(Landroid/view/Window;I)V :cond_2 return-void diff --git a/smali/smali_classes3/com/vk/menu/MenuUtils.smali b/smali/smali_classes3/com/vk/menu/MenuUtils.smali index 06560e3cb..b26221f4a 100644 --- a/smali/smali_classes3/com/vk/menu/MenuUtils.smali +++ b/smali/smali_classes3/com/vk/menu/MenuUtils.smali @@ -2834,7 +2834,7 @@ if-eqz v0, :cond_0 - invoke-static {}, Lru/vtosters/lite/utils/Globals;->getContext()Landroid/content/Context; + invoke-static {}, Lru/vtosters/lite/utils/AndroidUtils;->getGlobalContext()Landroid/content/Context; move-result-object v1 diff --git a/smali/smali_classes3/com/vk/music/AudioPlayerActivity.smali b/smali/smali_classes3/com/vk/music/AudioPlayerActivity.smali index 5f0f365d4..e536c1034 100644 --- a/smali/smali_classes3/com/vk/music/AudioPlayerActivity.smali +++ b/smali/smali_classes3/com/vk/music/AudioPlayerActivity.smali @@ -164,7 +164,7 @@ invoke-virtual {v0, v1}, Landroid/view/Window;->setStatusBarColor(I)V - invoke-static {v0, v1}, Lru/vtosters/lite/utils/Themes;->setNavbarColor(Landroid/view/Window;I)V + invoke-static {v0, v1}, Lru/vtosters/lite/utils/ThemesUtils;->setNavbarColor(Landroid/view/Window;I)V .line 9 :cond_2 diff --git a/smali/smali_classes3/com/vk/navigation/NavigationDelegateBottom.smali b/smali/smali_classes3/com/vk/navigation/NavigationDelegateBottom.smali index 04bb3f4fa..b11ebf359 100644 --- a/smali/smali_classes3/com/vk/navigation/NavigationDelegateBottom.smali +++ b/smali/smali_classes3/com/vk/navigation/NavigationDelegateBottom.smali @@ -411,7 +411,7 @@ const v0, 0x7f070067 - invoke-static {v0}, Lru/vtosters/lite/utils/Themes;->getNavigationHeight(I)I + invoke-static {v0}, Lru/vtosters/lite/utils/ThemesUtils;->getNavigationHeight(I)I move-result v0 @@ -2495,7 +2495,7 @@ :goto_2 invoke-virtual {v1, v3}, Landroid/view/Window;->setStatusBarColor(I)V - invoke-static {v1, v3}, Lru/vtosters/lite/utils/Themes;->setNavbarColor(Landroid/view/Window;I)V + invoke-static {v1, v3}, Lru/vtosters/lite/utils/ThemesUtils;->setNavbarColor(Landroid/view/Window;I)V .line 46 instance-of v1, p1, Lcom/vk/navigation/b0/FragmentWithCustomNavigationBar; diff --git a/smali/smali_classes3/com/vk/navigation/SpecialEventsNavigationDelegate.smali b/smali/smali_classes3/com/vk/navigation/SpecialEventsNavigationDelegate.smali index d0c463027..f2dae6f35 100644 --- a/smali/smali_classes3/com/vk/navigation/SpecialEventsNavigationDelegate.smali +++ b/smali/smali_classes3/com/vk/navigation/SpecialEventsNavigationDelegate.smali @@ -254,7 +254,7 @@ const v3, 0x7f070067 - invoke-static {v3}, Lru/vtosters/lite/utils/Themes;->getNavigationHeight(I)I + invoke-static {v3}, Lru/vtosters/lite/utils/ThemesUtils;->getNavigationHeight(I)I move-result v3 @@ -398,7 +398,7 @@ const v2, 0x7f070067 - invoke-static {v2}, Lru/vtosters/lite/utils/Themes;->getNavigationHeight(I)I + invoke-static {v2}, Lru/vtosters/lite/utils/ThemesUtils;->getNavigationHeight(I)I move-result v2 @@ -666,7 +666,7 @@ const v2, 0x7f070067 - invoke-static {v2}, Lru/vtosters/lite/utils/Themes;->getNavigationHeight(I)I + invoke-static {v2}, Lru/vtosters/lite/utils/ThemesUtils;->getNavigationHeight(I)I move-result v2 diff --git a/smali/smali_classes3/com/vk/newsfeed/holders/attachments/comments/VideoThumbnailHolder.smali b/smali/smali_classes3/com/vk/newsfeed/holders/attachments/comments/VideoThumbnailHolder.smali index 3c47b63fb..fd848f7bc 100644 --- a/smali/smali_classes3/com/vk/newsfeed/holders/attachments/comments/VideoThumbnailHolder.smali +++ b/smali/smali_classes3/com/vk/newsfeed/holders/attachments/comments/VideoThumbnailHolder.smali @@ -377,7 +377,7 @@ move-result-object v1 - invoke-static {v1, v0}, Lru/vtosters/lite/utils/ExternalLinkHandler;->parseVideoFile(Lcom/vk/dto/common/VideoFile;Landroid/app/Activity;)Z + invoke-static {v1, v0}, Lru/vtosters/lite/utils/ExternalLinkParser;->parseVideoFile(Lcom/vk/dto/common/VideoFile;Landroid/app/Activity;)Z move-result v4 diff --git a/smali/smali_classes3/com/vk/newsfeed/posting/attachments/PostingAttachActivity.smali b/smali/smali_classes3/com/vk/newsfeed/posting/attachments/PostingAttachActivity.smali index b1eed7254..96ede65c1 100644 --- a/smali/smali_classes3/com/vk/newsfeed/posting/attachments/PostingAttachActivity.smali +++ b/smali/smali_classes3/com/vk/newsfeed/posting/attachments/PostingAttachActivity.smali @@ -561,7 +561,7 @@ invoke-virtual {p1, v0}, Landroid/view/Window;->setStatusBarColor(I)V - invoke-static {p1, v0}, Lru/vtosters/lite/utils/Themes;->setNavbarColor(Landroid/view/Window;I)V + invoke-static {p1, v0}, Lru/vtosters/lite/utils/ThemesUtils;->setNavbarColor(Landroid/view/Window;I)V .line 14 invoke-virtual {p0}, Landroid/app/Activity;->getWindow()Landroid/view/Window; diff --git a/smali/smali_classes4/com/vk/profile/adapter/items/c0/StubMessageItem$c.smali b/smali/smali_classes4/com/vk/profile/adapter/items/c0/StubMessageItem$c.smali index c014e0ed0..1ed4a39ac 100644 --- a/smali/smali_classes4/com/vk/profile/adapter/items/c0/StubMessageItem$c.smali +++ b/smali/smali_classes4/com/vk/profile/adapter/items/c0/StubMessageItem$c.smali @@ -18,7 +18,7 @@ .method public constructor (Landroid/content/Context;Lcom/vtosters/lite/api/ExtendedUserProfile;Z)V .locals 2 - invoke-static {p2}, Lru/vtosters/lite/utils/ProfileHide;->getInfo(Lcom/vtosters/lite/api/ExtendedUserProfile;)Ljava/lang/String; + invoke-static {p2}, Lru/vtosters/lite/utils/ProfileHider;->getInfo(Lcom/vtosters/lite/api/ExtendedUserProfile;)Ljava/lang/String; move-result-object p1 diff --git a/smali/smali_classes4/com/vk/profile/presenter/UserPresenter.smali b/smali/smali_classes4/com/vk/profile/presenter/UserPresenter.smali index 0d8872324..42803d69c 100644 --- a/smali/smali_classes4/com/vk/profile/presenter/UserPresenter.smali +++ b/smali/smali_classes4/com/vk/profile/presenter/UserPresenter.smali @@ -143,7 +143,7 @@ move-result-object v0 - invoke-static {v0}, Lru/vtosters/lite/utils/ProfileHide;->injectMap(Ljava/util/HashMap;)V + invoke-static {v0}, Lru/vtosters/lite/utils/ProfileHider;->injectMap(Ljava/util/HashMap;)V sput-object v0, Lcom/vk/profile/presenter/UserPresenter;->p0:Ljava/util/HashMap; diff --git a/smali/smali_classes4/com/vk/socialgraph/init/BaseSocialGraphInitFragment.smali b/smali/smali_classes4/com/vk/socialgraph/init/BaseSocialGraphInitFragment.smali index 573c692e4..f73ffb746 100644 --- a/smali/smali_classes4/com/vk/socialgraph/init/BaseSocialGraphInitFragment.smali +++ b/smali/smali_classes4/com/vk/socialgraph/init/BaseSocialGraphInitFragment.smali @@ -144,7 +144,7 @@ .line 5 invoke-virtual {v0, v1}, Landroid/view/Window;->setStatusBarColor(I)V - invoke-static {v0, v1}, Lru/vtosters/lite/utils/Themes;->setNavbarColor(Landroid/view/Window;I)V + invoke-static {v0, v1}, Lru/vtosters/lite/utils/ThemesUtils;->setNavbarColor(Landroid/view/Window;I)V const/4 v0, 0x0 diff --git a/smali/smali_classes4/com/vk/socialgraph/list/SocialGraphFriendsFragment.smali b/smali/smali_classes4/com/vk/socialgraph/list/SocialGraphFriendsFragment.smali index 2334c89e1..8e6d709ce 100644 --- a/smali/smali_classes4/com/vk/socialgraph/list/SocialGraphFriendsFragment.smali +++ b/smali/smali_classes4/com/vk/socialgraph/list/SocialGraphFriendsFragment.smali @@ -183,7 +183,7 @@ .line 6 invoke-virtual {v0, v1}, Landroid/view/Window;->setStatusBarColor(I)V - invoke-static {v0, v1}, Lru/vtosters/lite/utils/Themes;->setNavbarColor(Landroid/view/Window;I)V + invoke-static {v0, v1}, Lru/vtosters/lite/utils/ThemesUtils;->setNavbarColor(Landroid/view/Window;I)V const/4 v0, 0x0 diff --git a/smali/smali_classes4/com/vk/stickers/StickerLongtapWindow.smali b/smali/smali_classes4/com/vk/stickers/StickerLongtapWindow.smali index 2dd3d907e..fb0d79fb8 100644 --- a/smali/smali_classes4/com/vk/stickers/StickerLongtapWindow.smali +++ b/smali/smali_classes4/com/vk/stickers/StickerLongtapWindow.smali @@ -304,7 +304,7 @@ invoke-virtual {v0, v1}, Landroid/view/Window;->setStatusBarColor(I)V - invoke-static {v0, v1}, Lru/vtosters/lite/utils/Themes;->setNavbarColor(Landroid/view/Window;I)V + invoke-static {v0, v1}, Lru/vtosters/lite/utils/ThemesUtils;->setNavbarColor(Landroid/view/Window;I)V :cond_0 const/4 v0, 0x0 @@ -375,7 +375,7 @@ :goto_0 invoke-virtual {v0, v2}, Landroid/view/Window;->setStatusBarColor(I)V - invoke-static {v0, v2}, Lru/vtosters/lite/utils/Themes;->setNavbarColor(Landroid/view/Window;I)V + invoke-static {v0, v2}, Lru/vtosters/lite/utils/ThemesUtils;->setNavbarColor(Landroid/view/Window;I)V const/4 v0, 0x1 diff --git a/smali/smali_classes4/com/vk/wall/thread/CommentThreadFragment.smali b/smali/smali_classes4/com/vk/wall/thread/CommentThreadFragment.smali index df3da9883..172faf4ef 100644 --- a/smali/smali_classes4/com/vk/wall/thread/CommentThreadFragment.smali +++ b/smali/smali_classes4/com/vk/wall/thread/CommentThreadFragment.smali @@ -1165,7 +1165,7 @@ invoke-virtual {v0, v1}, Landroid/view/Window;->setStatusBarColor(I)V - invoke-static {v0, v1}, Lru/vtosters/lite/utils/Themes;->setNavbarColor(Landroid/view/Window;I)V + invoke-static {v0, v1}, Lru/vtosters/lite/utils/ThemesUtils;->setNavbarColor(Landroid/view/Window;I)V .line 4 :cond_0 diff --git a/smali/smali_classes4/com/vk/webapp/p/a/StatusNavBarUtils.smali b/smali/smali_classes4/com/vk/webapp/p/a/StatusNavBarUtils.smali index 055789fc3..efbeb1738 100644 --- a/smali/smali_classes4/com/vk/webapp/p/a/StatusNavBarUtils.smali +++ b/smali/smali_classes4/com/vk/webapp/p/a/StatusNavBarUtils.smali @@ -196,7 +196,7 @@ :cond_0 invoke-virtual {p1, p2}, Landroid/view/Window;->setStatusBarColor(I)V - invoke-static {p1, p2}, Lru/vtosters/lite/utils/Themes;->setNavbarColor(Landroid/view/Window;I)V + invoke-static {p1, p2}, Lru/vtosters/lite/utils/ThemesUtils;->setNavbarColor(Landroid/view/Window;I)V :cond_1 return-void @@ -263,7 +263,7 @@ :goto_0 invoke-virtual {p1, p2}, Landroid/view/Window;->setNavigationBarColor(I)V - invoke-static {p1, p2}, Lru/vtosters/lite/utils/Themes;->setNavbarColor(Landroid/view/Window;I)V + invoke-static {p1, p2}, Lru/vtosters/lite/utils/ThemesUtils;->setNavbarColor(Landroid/view/Window;I)V :cond_1 return-void diff --git a/smali/smali_classes4/com/vtosters/lite/MainActivity.smali b/smali/smali_classes4/com/vtosters/lite/MainActivity.smali index 795e530c7..4ac204b67 100644 --- a/smali/smali_classes4/com/vtosters/lite/MainActivity.smali +++ b/smali/smali_classes4/com/vtosters/lite/MainActivity.smali @@ -358,7 +358,7 @@ invoke-static {p0}, Lru/vtosters/lite/f0x1d/Crashreporter;->init(Landroid/app/Activity;)V - invoke-static {p0}, Lru/vtosters/lite/f0x1d/VTVerifications;->load(Landroid/content/Context;)V + invoke-static {p0}, Lru/vtosters/lite/utils/VTVerifications;->load(Landroid/content/Context;)V .line 2 invoke-virtual {p0}, Landroid/app/Activity;->isTaskRoot()Z @@ -415,7 +415,7 @@ .line 7 :cond_0 - invoke-static {p0}, Lru/vtosters/lite/utils/Globals;->MainActivityInit(Landroid/app/Activity;)V + invoke-static {p0}, Lru/vtosters/lite/hooks/MainActivityInjector;->inject(Landroid/app/Activity;)V invoke-virtual {p0}, Landroid/app/Activity;->getWindow()Landroid/view/Window; diff --git a/smali/smali_classes4/com/vtosters/lite/TabletDialogActivity.smali b/smali/smali_classes4/com/vtosters/lite/TabletDialogActivity.smali index b24a8206b..3c2bbff77 100644 --- a/smali/smali_classes4/com/vtosters/lite/TabletDialogActivity.smali +++ b/smali/smali_classes4/com/vtosters/lite/TabletDialogActivity.smali @@ -791,7 +791,7 @@ invoke-virtual {v0, v1}, Landroid/view/Window;->setStatusBarColor(I)V - invoke-static {v0, v1}, Lru/vtosters/lite/utils/Themes;->setNavbarColor(Landroid/view/Window;I)V + invoke-static {v0, v1}, Lru/vtosters/lite/utils/ThemesUtils;->setNavbarColor(Landroid/view/Window;I)V .line 3 :cond_0 @@ -841,7 +841,7 @@ invoke-virtual {p1, v0}, Landroid/view/Window;->setStatusBarColor(I)V - invoke-static {p1, v0}, Lru/vtosters/lite/utils/Themes;->setNavbarColor(Landroid/view/Window;I)V + invoke-static {p1, v0}, Lru/vtosters/lite/utils/ThemesUtils;->setNavbarColor(Landroid/view/Window;I)V :cond_0 return-void diff --git a/smali/smali_classes4/com/vtosters/lite/VKActivity.smali b/smali/smali_classes4/com/vtosters/lite/VKActivity.smali index 061eaf1ca..f102143d9 100644 --- a/smali/smali_classes4/com/vtosters/lite/VKActivity.smali +++ b/smali/smali_classes4/com/vtosters/lite/VKActivity.smali @@ -309,7 +309,7 @@ invoke-virtual {p1, v0}, Landroid/view/Window;->setStatusBarColor(I)V - invoke-static {p1, v0}, Lru/vtosters/lite/utils/Themes;->setNavbarColor(Landroid/view/Window;I)V + invoke-static {p1, v0}, Lru/vtosters/lite/utils/ThemesUtils;->setNavbarColor(Landroid/view/Window;I)V :cond_0 return-void @@ -350,7 +350,7 @@ invoke-virtual {p1, v0}, Landroid/view/Window;->setStatusBarColor(I)V - invoke-static {p1, v0}, Lru/vtosters/lite/utils/Themes;->setNavbarColor(Landroid/view/Window;I)V + invoke-static {p1, v0}, Lru/vtosters/lite/utils/ThemesUtils;->setNavbarColor(Landroid/view/Window;I)V :cond_0 return-void diff --git a/smali/smali_classes4/com/vtosters/lite/ViewUtils.smali b/smali/smali_classes4/com/vtosters/lite/ViewUtils.smali index 3845ff6ed..0a79a9fdf 100644 --- a/smali/smali_classes4/com/vtosters/lite/ViewUtils.smali +++ b/smali/smali_classes4/com/vtosters/lite/ViewUtils.smali @@ -747,7 +747,7 @@ .line 66 invoke-virtual {p0, p1}, Landroid/view/Window;->setStatusBarColor(I)V - invoke-static {p0, p1}, Lru/vtosters/lite/utils/Themes;->setNavbarColor(Landroid/view/Window;I)V + invoke-static {p0, p1}, Lru/vtosters/lite/utils/ThemesUtils;->setNavbarColor(Landroid/view/Window;I)V :try_end_0 .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 diff --git a/smali/smali_classes4/com/vtosters/lite/api/execute/GetFullUserProfile.smali b/smali/smali_classes4/com/vtosters/lite/api/execute/GetFullUserProfile.smali index 378c2f794..cf4de57eb 100644 --- a/smali/smali_classes4/com/vtosters/lite/api/execute/GetFullUserProfile.smali +++ b/smali/smali_classes4/com/vtosters/lite/api/execute/GetFullUserProfile.smali @@ -154,7 +154,7 @@ iput v4, v2, Lcom/vk/dto/user/UserProfile;->b:I - invoke-static {v0}, Lru/vtosters/lite/utils/ProfileHide;->fetchInfo(Lcom/vtosters/lite/api/ExtendedUserProfile;)V + invoke-static {v0}, Lru/vtosters/lite/utils/ProfileHider;->fetchInfo(Lcom/vtosters/lite/api/ExtendedUserProfile;)V .line 3 iget-object v2, v0, Lcom/vtosters/lite/api/ExtendedUserProfile;->a:Lcom/vk/dto/user/UserProfile; diff --git a/smali/smali_classes4/com/vtosters/lite/attachments/AttachmentUtils.smali b/smali/smali_classes4/com/vtosters/lite/attachments/AttachmentUtils.smali index 507948dce..f40a02f47 100644 --- a/smali/smali_classes4/com/vtosters/lite/attachments/AttachmentUtils.smali +++ b/smali/smali_classes4/com/vtosters/lite/attachments/AttachmentUtils.smali @@ -983,7 +983,7 @@ :pswitch_8 const-string v0, "images" - invoke-static {}, Lru/vtosters/lite/utils/Themes;->getBackgroundStickers()Ljava/lang/String; + invoke-static {}, Lru/vtosters/lite/utils/ThemesUtils;->getBackgroundStickers()Ljava/lang/String; move-result-object v0 diff --git a/smali/smali_classes4/com/vtosters/lite/fragments/messages/chat/vc/MsgSendVc.smali b/smali/smali_classes4/com/vtosters/lite/fragments/messages/chat/vc/MsgSendVc.smali index 6bd278494..f279d1439 100644 --- a/smali/smali_classes4/com/vtosters/lite/fragments/messages/chat/vc/MsgSendVc.smali +++ b/smali/smali_classes4/com/vtosters/lite/fragments/messages/chat/vc/MsgSendVc.smali @@ -5664,7 +5664,7 @@ iput-object p1, p0, Lcom/vtosters/lite/fragments/messages/chat/vc/MsgSendVc;->D:Lcom/vk/im/ui/views/WriteBarDisabled; - invoke-static {p1}, Lru/vtosters/lite/utils/Themes;->colorWriteBar(Landroid/view/View;)V + invoke-static {p1}, Lru/vtosters/lite/utils/ThemesUtils;->colorWriteBar(Landroid/view/View;)V .line 15 iget-object p1, p0, Lcom/vtosters/lite/fragments/messages/chat/vc/MsgSendVc;->C:Landroid/view/View; @@ -5685,7 +5685,7 @@ iput-object p1, p0, Lcom/vtosters/lite/fragments/messages/chat/vc/MsgSendVc;->B:Lcom/vtosters/lite/ui/WriteBar; - invoke-static {p1}, Lru/vtosters/lite/utils/Themes;->colorWriteBar(Landroid/view/View;)V + invoke-static {p1}, Lru/vtosters/lite/utils/ThemesUtils;->colorWriteBar(Landroid/view/View;)V .line 16 iget-object p1, p0, Lcom/vtosters/lite/fragments/messages/chat/vc/MsgSendVc;->B:Lcom/vtosters/lite/ui/WriteBar; diff --git a/smali/smali_classes4/com/vtosters/lite/fragments/messages/chat_invite/accept/ChatInviteActivity.smali b/smali/smali_classes4/com/vtosters/lite/fragments/messages/chat_invite/accept/ChatInviteActivity.smali index 69857a722..0340a75d8 100644 --- a/smali/smali_classes4/com/vtosters/lite/fragments/messages/chat_invite/accept/ChatInviteActivity.smali +++ b/smali/smali_classes4/com/vtosters/lite/fragments/messages/chat_invite/accept/ChatInviteActivity.smali @@ -84,7 +84,7 @@ invoke-virtual {p1, v0}, Landroid/view/Window;->setStatusBarColor(I)V - invoke-static {p1, v0}, Lru/vtosters/lite/utils/Themes;->setNavbarColor(Landroid/view/Window;I)V + invoke-static {p1, v0}, Lru/vtosters/lite/utils/ThemesUtils;->setNavbarColor(Landroid/view/Window;I)V return-void .end method diff --git a/smali/smali_classes4/com/vtosters/lite/general/fragments/WebViewFragment.smali b/smali/smali_classes4/com/vtosters/lite/general/fragments/WebViewFragment.smali index af80fd4a0..d405868a8 100644 --- a/smali/smali_classes4/com/vtosters/lite/general/fragments/WebViewFragment.smali +++ b/smali/smali_classes4/com/vtosters/lite/general/fragments/WebViewFragment.smali @@ -312,7 +312,7 @@ .end method .method private T(Ljava/lang/String;)V - .locals 1 + .locals 9 .line 1 invoke-static {p1}, Lcom/vk/webapp/fragments/VkPayFragment;->P(Ljava/lang/String;)Z diff --git a/smali/smali_classes5/com/vtosters/lite/ui/bottomnavigation/BottomNavigationMenuView.smali b/smali/smali_classes5/com/vtosters/lite/ui/bottomnavigation/BottomNavigationMenuView.smali index df9cb7773..5737a434e 100644 --- a/smali/smali_classes5/com/vtosters/lite/ui/bottomnavigation/BottomNavigationMenuView.smali +++ b/smali/smali_classes5/com/vtosters/lite/ui/bottomnavigation/BottomNavigationMenuView.smali @@ -125,7 +125,7 @@ const p2, 0x7f070060 - invoke-static {p2}, Lru/vtosters/lite/utils/Themes;->getNavigationWidth(I)I + invoke-static {p2}, Lru/vtosters/lite/utils/ThemesUtils;->getNavigationWidth(I)I move-result p2 @@ -138,7 +138,7 @@ const p2, 0x7f070061 - invoke-static {p2}, Lru/vtosters/lite/utils/Themes;->getNavigationWidth(I)I + invoke-static {p2}, Lru/vtosters/lite/utils/ThemesUtils;->getNavigationWidth(I)I move-result p2 @@ -147,7 +147,7 @@ const p2, 0x7f070067 - invoke-static {p2}, Lru/vtosters/lite/utils/Themes;->getNavigationHeight(I)I + invoke-static {p2}, Lru/vtosters/lite/utils/ThemesUtils;->getNavigationHeight(I)I move-result p2 diff --git a/smali/smali_classes5/com/vtosters/lite/ui/holder/video/VideoSimpleHolder.smali b/smali/smali_classes5/com/vtosters/lite/ui/holder/video/VideoSimpleHolder.smali index 4c9475533..da1e3715d 100644 --- a/smali/smali_classes5/com/vtosters/lite/ui/holder/video/VideoSimpleHolder.smali +++ b/smali/smali_classes5/com/vtosters/lite/ui/holder/video/VideoSimpleHolder.smali @@ -1326,7 +1326,7 @@ check-cast v0, Landroid/app/Activity; - invoke-static {v2, v0}, Lru/vtosters/lite/utils/ExternalLinkHandler;->parseVideoFile(Lcom/vk/dto/common/VideoFile;Landroid/app/Activity;)Z + invoke-static {v2, v0}, Lru/vtosters/lite/utils/ExternalLinkParser;->parseVideoFile(Lcom/vk/dto/common/VideoFile;Landroid/app/Activity;)Z move-result v3 diff --git a/smali/smali_classes5/com/vtosters/lite/ui/layout/ExpandableBarLayout.smali b/smali/smali_classes5/com/vtosters/lite/ui/layout/ExpandableBarLayout.smali index abd9a39f6..b4cedfb03 100644 --- a/smali/smali_classes5/com/vtosters/lite/ui/layout/ExpandableBarLayout.smali +++ b/smali/smali_classes5/com/vtosters/lite/ui/layout/ExpandableBarLayout.smali @@ -87,7 +87,7 @@ const v0, 0x7f070067 - invoke-static {v0}, Lru/vtosters/lite/utils/Themes;->getNavigationHeight(I)I + invoke-static {v0}, Lru/vtosters/lite/utils/ThemesUtils;->getNavigationHeight(I)I move-result v0 @@ -161,7 +161,7 @@ const p2, 0x7f070067 - invoke-static {p2}, Lru/vtosters/lite/utils/Themes;->getNavigationHeight(I)I + invoke-static {p2}, Lru/vtosters/lite/utils/ThemesUtils;->getNavigationHeight(I)I move-result p2 @@ -235,7 +235,7 @@ const p2, 0x7f070067 - invoke-static {p2}, Lru/vtosters/lite/utils/Themes;->getNavigationHeight(I)I + invoke-static {p2}, Lru/vtosters/lite/utils/ThemesUtils;->getNavigationHeight(I)I move-result p2 @@ -312,7 +312,7 @@ const p2, 0x7f070067 - invoke-static {p2}, Lru/vtosters/lite/utils/Themes;->getNavigationHeight(I)I + invoke-static {p2}, Lru/vtosters/lite/utils/ThemesUtils;->getNavigationHeight(I)I move-result p2 diff --git a/smali/smali_classes5/ru/mail/libverify/notifications/h.smali b/smali/smali_classes5/ru/mail/libverify/notifications/h.smali index f57a44b18..4f4b57cd4 100644 --- a/smali/smali_classes5/ru/mail/libverify/notifications/h.smali +++ b/smali/smali_classes5/ru/mail/libverify/notifications/h.smali @@ -434,7 +434,7 @@ invoke-virtual {v0, p3}, Landroid/view/Window;->setStatusBarColor(I)V - invoke-static {v0, p3}, Lru/vtosters/lite/utils/Themes;->setNavbarColor(Landroid/view/Window;I)V + invoke-static {v0, p3}, Lru/vtosters/lite/utils/ThemesUtils;->setNavbarColor(Landroid/view/Window;I)V goto :goto_0