From ad970d097a7c82aa40263f7f7c94df58ebc7f88c Mon Sep 17 00:00:00 2001 From: gdlbo <41114720+gdlbo@users.noreply.github.com> Date: Sat, 1 Jul 2023 16:38:42 +0300 Subject: [PATCH] auto refactor code --- .../libvkx/client/LibVKXClient.java | 2 +- .../gmscore/tools/apk/arsc/ArscBlamer.java | 56 +-- .../apk/arsc/BinaryResourceConfiguration.java | 461 +++++++++--------- .../apk/arsc/BinaryResourceIdentifier.java | 12 +- .../tools/apk/arsc/BinaryResourceString.java | 36 +- .../tools/apk/arsc/BinaryResourceValue.java | 156 +++--- .../devrel/gmscore/tools/apk/arsc/Chunk.java | 242 +++++---- .../gmscore/tools/apk/arsc/LibraryChunk.java | 12 +- .../gmscore/tools/apk/arsc/PackageChunk.java | 28 +- .../tools/apk/arsc/ResourceTableChunk.java | 11 +- .../tools/apk/arsc/StringPoolChunk.java | 24 +- .../gmscore/tools/apk/arsc/TypeChunk.java | 114 +++-- .../gmscore/tools/apk/arsc/TypeSpecChunk.java | 2 +- .../gmscore/tools/apk/arsc/UnknownChunk.java | 2 +- .../gmscore/tools/apk/arsc/XmlAttribute.java | 24 +- .../gmscore/tools/apk/arsc/XmlCdataChunk.java | 2 +- .../gmscore/tools/apk/arsc/XmlChunk.java | 2 +- .../tools/apk/arsc/XmlEndElementChunk.java | 2 +- .../tools/apk/arsc/XmlNamespaceEndChunk.java | 2 +- .../apk/arsc/XmlNamespaceStartChunk.java | 2 +- .../tools/apk/arsc/XmlStartElementChunk.java | 2 +- .../java/com/vk/api/audio/AudioGetLyrics.java | 2 +- .../com/vk/api/gifts/GiftGetByStickerId.java | 20 +- .../vk/core/drawable/RecoloredDrawable.java | 18 +- .../com/vk/core/utils/VerifyInfoHelper.java | 104 ++-- .../DialogGetMentionSuggestionCmd.java | 50 +- .../common/DialogActionsHelper.java | 6 +- .../ui/components/common/MsgActionHelper.java | 4 +- .../msg_list/adapter/VhBindArgs.java | 166 ++----- .../adapter/msgparts/MsgPartCallHolder.java | 6 +- .../msg_list/adapter/vh/VhMsg.java | 194 +++----- .../vk/im/ui/q/h/e/MentionsController.java | 53 +- .../im/ui/views/avatars/StoryBorderView.java | 88 ++-- .../com/vk/music/view/x/LyricsHolder.java | 2 +- .../community/CommunityBorderedImageView.java | 18 +- .../com/vk/sharing/view/TargetImageView.java | 82 ++-- .../details/StickerDetailsAdapter.java | 38 +- .../vk/stories/view/StoryCircleImageView.java | 2 +- .../BottomNavigationItemView.java | 16 +- .../main/java/ru/vtosters/hooks/GcmHook.java | 2 +- .../java/ru/vtosters/hooks/NewsfeedHook.java | 4 +- .../java/ru/vtosters/hooks/RenameHook.java | 2 - .../ru/vtosters/hooks/other/ThemesUtils.java | 2 - .../ru/vtosters/hooks/ssfs/BannerHook.java | 1 - .../vtosters/lite/music/TransportStream.java | 2 +- .../ru/vtosters/lite/music/VKM3UParser.java | 3 +- .../catalog/inject/CatalogJsonInjector.java | 2 +- .../lite/themes/utils/ArscEditor.java | 49 +- .../lite/ui/adapters/CategorizedAdapter.java | 26 +- .../ui/components/DockBarEditorManager.java | 128 ++--- .../ui/fragments/DataSettingsFragment.java | 18 +- .../lite/ui/fragments/OtherFragment.java | 20 - .../ru/vtosters/lite/ui/items/DockBarTab.java | 8 +- .../vtosters/lite/ui/items/SuperAppItem.java | 12 +- .../ru/vtosters/lite/ui/vkui/MenuBuilder.java | 1 - .../lite/ui/wallpapers/WallpapersHooks.java | 4 - 56 files changed, 1054 insertions(+), 1293 deletions(-) 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 2232550d1..f95a535dd 100644 --- a/app/src/main/java/bruhcollective/itaysonlab/libvkx/client/LibVKXClient.java +++ b/app/src/main/java/bruhcollective/itaysonlab/libvkx/client/LibVKXClient.java @@ -10,9 +10,9 @@ import com.vk.music.common.MusicPlaybackLaunchContext; import java.util.ArrayList; import java.util.List; -import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; import static ru.vtosters.hooks.other.Preferences.getBoolValue; import static ru.vtosters.hooks.other.Preferences.isValidSignature; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; public class LibVKXClient { @SuppressLint("StaticFieldLeak") diff --git a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/ArscBlamer.java b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/ArscBlamer.java index df22f8e98..2956a77a4 100644 --- a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/ArscBlamer.java +++ b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/ArscBlamer.java @@ -59,26 +59,22 @@ public class ArscBlamer { * Maps type chunk entries to blamed resources. */ private final Multimap typeEntryToBlame = HashMultimap.create(); - - /** - * Maps resources to the type chunk entries they reference. - */ - private Multimap resourceEntries; - - /** - * Maps resources which have no base config to the type chunk entries they reference. - */ - private Multimap baselessKeys; - - /** - * Contains all of the type chunks in {@link #resourceTable}. - */ - private List typeChunks; - /** * This is the {@link ResourceTableChunk} inside of the resources.arsc file in the APK. */ private final ResourceTableChunk resourceTable; + /** + * Maps resources to the type chunk entries they reference. + */ + private Multimap resourceEntries; + /** + * Maps resources which have no base config to the type chunk entries they reference. + */ + private Multimap baselessKeys; + /** + * Contains all of the type chunks in {@link #resourceTable}. + */ + private List typeChunks; /** * Creates a new {@link ArscBlamer}. @@ -90,6 +86,14 @@ public class ArscBlamer { this.stringToBlame = createEntryListArray(resourceTable.getStringPool().getStringCount()); } + private static List[] createEntryListArray(int size) { + ArrayListResourceEntry[] result = new ArrayListResourceEntry[size]; + for (int i = 0; i < size; ++i) { + result[i] = new ArrayListResourceEntry(); + } + return result; + } + /** * Generates blame mappings. */ @@ -257,14 +261,6 @@ public class ArscBlamer { return false; } - private static List[] createEntryListArray(int size) { - ArrayListResourceEntry[] result = new ArrayListResourceEntry[size]; - for (int i = 0; i < size; ++i) { - result[i] = new ArrayListResourceEntry(); - } - return result; - } - /** * Allows creation of concrete parameterized type arr {@link ArscBlamer#createEntryListArray}. */ @@ -283,6 +279,12 @@ public class ArscBlamer { private final String typeName; private final String entryName; + private ResourceEntry(String packageName, String typeName, String entryName) { + this.packageName = packageName; + this.typeName = typeName; + this.entryName = entryName; + } + static ResourceEntry create(TypeChunk.Entry entry) { PackageChunk packageChunk = Preconditions.checkNotNull(entry.parent().getPackageChunk()); String packageName = packageChunk.getPackageName(); @@ -291,12 +293,6 @@ public class ArscBlamer { return new ResourceEntry(packageName, typeName, entryName); } - private ResourceEntry(String packageName, String typeName, String entryName) { - this.packageName = packageName; - this.typeName = typeName; - this.entryName = entryName; - } - public String packageName() { return packageName; } diff --git a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/BinaryResourceConfiguration.java b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/BinaryResourceConfiguration.java index 922871833..06a50e176 100644 --- a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/BinaryResourceConfiguration.java +++ b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/BinaryResourceConfiguration.java @@ -31,6 +31,148 @@ import static java.nio.charset.StandardCharsets.US_ASCII; * Describes a particular resource configuration. */ public class BinaryResourceConfiguration implements SerializableResource { + /** + * The below constants are from android.content.res.Configuration. + */ + private static final int DENSITY_DPI_UNDEFINED = 0; + private static final int DENSITY_DPI_LDPI = 120; + private static final int DENSITY_DPI_MDPI = 160; + private static final int DENSITY_DPI_TVDPI = 213; + private static final int DENSITY_DPI_HDPI = 240; + private static final int DENSITY_DPI_XHDPI = 320; + private static final int DENSITY_DPI_XXHDPI = 480; + private static final int DENSITY_DPI_XXXHDPI = 640; + private static final int DENSITY_DPI_ANY = 0xFFFE; + private static final int DENSITY_DPI_NONE = 0xFFFF; + private static final Map DENSITY_DPI_VALUES = + ImmutableMap.builder() + .put(DENSITY_DPI_UNDEFINED, "") + .put(DENSITY_DPI_LDPI, "ldpi") + .put(DENSITY_DPI_MDPI, "mdpi") + .put(DENSITY_DPI_TVDPI, "tvdpi") + .put(DENSITY_DPI_HDPI, "hdpi") + .put(DENSITY_DPI_XHDPI, "xhdpi") + .put(DENSITY_DPI_XXHDPI, "xxhdpi") + .put(DENSITY_DPI_XXXHDPI, "xxxhdpi") + .put(DENSITY_DPI_ANY, "anydpi") + .put(DENSITY_DPI_NONE, "nodpi") + .build(); + private static final int KEYBOARD_NOKEYS = 1; + private static final int KEYBOARD_QWERTY = 2; + private static final int KEYBOARD_12KEY = 3; + private static final Map KEYBOARD_VALUES = ImmutableMap.of( + KEYBOARD_NOKEYS, "nokeys", + KEYBOARD_QWERTY, "qwerty", + KEYBOARD_12KEY, "12key"); + private static final int KEYBOARDHIDDEN_MASK = 0x03; + private static final int KEYBOARDHIDDEN_NO = 1; + private static final int KEYBOARDHIDDEN_YES = 2; + private static final int KEYBOARDHIDDEN_SOFT = 3; + private static final Map KEYBOARDHIDDEN_VALUES = ImmutableMap.of( + KEYBOARDHIDDEN_NO, "keysexposed", + KEYBOARDHIDDEN_YES, "keyshidden", + KEYBOARDHIDDEN_SOFT, "keyssoft"); + private static final int NAVIGATION_NONAV = 1; + private static final int NAVIGATION_DPAD = 2; + private static final int NAVIGATION_TRACKBALL = 3; + private static final int NAVIGATION_WHEEL = 4; + private static final Map NAVIGATION_VALUES = ImmutableMap.of( + NAVIGATION_NONAV, "nonav", + NAVIGATION_DPAD, "dpad", + NAVIGATION_TRACKBALL, "trackball", + NAVIGATION_WHEEL, "wheel"); + private static final int NAVIGATIONHIDDEN_MASK = 0x0C; + private static final int NAVIGATIONHIDDEN_NO = 0x04; + private static final int NAVIGATIONHIDDEN_YES = 0x08; + private static final Map NAVIGATIONHIDDEN_VALUES = ImmutableMap.of( + NAVIGATIONHIDDEN_NO, "navexposed", + NAVIGATIONHIDDEN_YES, "navhidden"); + private static final int ORIENTATION_PORTRAIT = 0x01; + private static final int ORIENTATION_LANDSCAPE = 0x02; + private static final Map ORIENTATION_VALUES = ImmutableMap.of( + ORIENTATION_PORTRAIT, "port", + ORIENTATION_LANDSCAPE, "land"); + private static final int SCREENLAYOUT_LAYOUTDIR_MASK = 0xC0; + private static final int SCREENLAYOUT_LAYOUTDIR_LTR = 0x40; + private static final int SCREENLAYOUT_LAYOUTDIR_RTL = 0x80; + private static final Map SCREENLAYOUT_LAYOUTDIR_VALUES = ImmutableMap.of( + SCREENLAYOUT_LAYOUTDIR_LTR, "ldltr", + SCREENLAYOUT_LAYOUTDIR_RTL, "ldrtl"); + private static final int SCREENLAYOUT_LONG_MASK = 0x30; + private static final int SCREENLAYOUT_LONG_NO = 0x10; + private static final int SCREENLAYOUT_LONG_YES = 0x20; + private static final Map SCREENLAYOUT_LONG_VALUES = ImmutableMap.of( + SCREENLAYOUT_LONG_NO, "notlong", + SCREENLAYOUT_LONG_YES, "long"); + private static final int SCREENLAYOUT_ROUND_MASK = 0x03; + private static final int SCREENLAYOUT_ROUND_NO = 0x01; + private static final int SCREENLAYOUT_ROUND_YES = 0x02; + private static final Map SCREENLAYOUT_ROUND_VALUES = ImmutableMap.of( + SCREENLAYOUT_ROUND_NO, "notround", + SCREENLAYOUT_ROUND_YES, "round"); + private static final int SCREENLAYOUT_SIZE_MASK = 0x0F; + private static final int SCREENLAYOUT_SIZE_SMALL = 0x01; + private static final int SCREENLAYOUT_SIZE_NORMAL = 0x02; + private static final int SCREENLAYOUT_SIZE_LARGE = 0x03; + private static final int SCREENLAYOUT_SIZE_XLARGE = 0x04; + private static final Map SCREENLAYOUT_SIZE_VALUES = ImmutableMap.of( + SCREENLAYOUT_SIZE_SMALL, "small", + SCREENLAYOUT_SIZE_NORMAL, "normal", + SCREENLAYOUT_SIZE_LARGE, "large", + SCREENLAYOUT_SIZE_XLARGE, "xlarge"); + private static final int TOUCHSCREEN_NOTOUCH = 1; + private static final int TOUCHSCREEN_FINGER = 3; + private static final Map TOUCHSCREEN_VALUES = ImmutableMap.of( + TOUCHSCREEN_NOTOUCH, "notouch", + TOUCHSCREEN_FINGER, "finger"); + private static final int UI_MODE_NIGHT_MASK = 0x30; + private static final int UI_MODE_NIGHT_NO = 0x10; + private static final int UI_MODE_NIGHT_YES = 0x20; + private static final Map UI_MODE_NIGHT_VALUES = ImmutableMap.of( + UI_MODE_NIGHT_NO, "notnight", + UI_MODE_NIGHT_YES, "night"); + private static final int UI_MODE_TYPE_MASK = 0x0F; + private static final int UI_MODE_TYPE_DESK = 0x02; + private static final int UI_MODE_TYPE_CAR = 0x03; + private static final int UI_MODE_TYPE_TELEVISION = 0x04; + private static final int UI_MODE_TYPE_APPLIANCE = 0x05; + private static final int UI_MODE_TYPE_WATCH = 0x06; + private static final int UI_MODE_TYPE_VR_HEADSET = 0x07; + // start - miui + private static final int UI_MODE_TYPE_GODZILLAUI = 0x0b; + private static final int UI_MODE_TYPE_SMALLUI = 0x0c; + private static final int UI_MODE_TYPE_MEDIUMUI = 0x0d; + private static final int UI_MODE_TYPE_LARGEUI = 0x0e; + private static final int UI_MODE_TYPE_HUGEUI = 0x0f; + private static final Map UI_MODE_TYPE_VALUES = + ImmutableMap.builder() + .put(UI_MODE_TYPE_DESK, "desk") + .put(UI_MODE_TYPE_CAR, "car") + .put(UI_MODE_TYPE_TELEVISION, "television") + .put(UI_MODE_TYPE_APPLIANCE, "appliance") + .put(UI_MODE_TYPE_WATCH, "watch") + .put(UI_MODE_TYPE_VR_HEADSET, "vrheadset") + .put(UI_MODE_TYPE_GODZILLAUI, "godzillaui") + .put(UI_MODE_TYPE_SMALLUI, "smallui") + .put(UI_MODE_TYPE_MEDIUMUI, "mediumui") + .put(UI_MODE_TYPE_LARGEUI, "largeui") + .put(UI_MODE_TYPE_HUGEUI, "hugeui").build(); + /** + * The minimum size in bytes that this configuration must be to contain screen config info. + */ + private static final int SCREEN_CONFIG_MIN_SIZE = 32; + /** + * The minimum size in bytes that this configuration must be to contain screen dp info. + */ + private static final int SCREEN_DP_MIN_SIZE = 36; + /** + * The minimum size in bytes that this configuration must be to contain locale info. + */ + private static final int LOCALE_MIN_SIZE = 48; + /** + * The minimum size in bytes that this config must be to contain the screenConfig extension. + */ + private static final int SCREEN_CONFIG_EXTENSION_MIN_SIZE = 52; private final int size; private final int mcc; private final int mnc; @@ -53,9 +195,60 @@ public class BinaryResourceConfiguration implements SerializableResource { private final int screenHeightDp; private final byte[] localeScript; private final byte[] localeVariant; + // end - miui private final int screenLayout2; private final byte[] unknown; + private BinaryResourceConfiguration(int size, + int mcc, + int mnc, + byte[] language, + byte[] region, + int orientation, + int touchscreen, + int density, + int keyboard, + int navigation, + int inputFlags, + int screenWidth, + int screenHeight, + int sdkVersion, + int minorVersion, + int screenLayout, + int uiMode, + int smallestScreenWidthDp, + int screenWidthDp, + int screenHeightDp, + byte[] localeScript, + byte[] localeVariant, + int screenLayout2, + byte[] unknown) { + this.size = size; + this.mcc = mcc; + this.mnc = mnc; + this.language = language; + this.region = region; + this.orientation = orientation; + this.touchscreen = touchscreen; + this.density = density; + this.keyboard = keyboard; + this.navigation = navigation; + this.inputFlags = inputFlags; + this.screenWidth = screenWidth; + this.screenHeight = screenHeight; + this.sdkVersion = sdkVersion; + this.minorVersion = minorVersion; + this.screenLayout = screenLayout; + this.uiMode = uiMode; + this.smallestScreenWidthDp = smallestScreenWidthDp; + this.screenWidthDp = screenWidthDp; + this.screenHeightDp = screenHeightDp; + this.localeScript = localeScript; + this.localeVariant = localeVariant; + this.screenLayout2 = screenLayout2; + this.unknown = unknown; + } + static BinaryResourceConfiguration create(ByteBuffer buffer) { int startPosition = buffer.position(); // The starting buffer position to calculate bytes read. int size = buffer.getInt(); @@ -121,245 +314,6 @@ public class BinaryResourceConfiguration implements SerializableResource { screenHeightDp, localeScript, localeVariant, screenLayout2, unknown); } - private BinaryResourceConfiguration(int size, - int mcc, - int mnc, - byte[] language, - byte[] region, - int orientation, - int touchscreen, - int density, - int keyboard, - int navigation, - int inputFlags, - int screenWidth, - int screenHeight, - int sdkVersion, - int minorVersion, - int screenLayout, - int uiMode, - int smallestScreenWidthDp, - int screenWidthDp, - int screenHeightDp, - byte[] localeScript, - byte[] localeVariant, - int screenLayout2, - byte[] unknown) { - this.size = size; - this.mcc = mcc; - this.mnc = mnc; - this.language = language; - this.region = region; - this.orientation = orientation; - this.touchscreen = touchscreen; - this.density = density; - this.keyboard = keyboard; - this.navigation = navigation; - this.inputFlags = inputFlags; - this.screenWidth = screenWidth; - this.screenHeight = screenHeight; - this.sdkVersion = sdkVersion; - this.minorVersion = minorVersion; - this.screenLayout = screenLayout; - this.uiMode = uiMode; - this.smallestScreenWidthDp = smallestScreenWidthDp; - this.screenWidthDp = screenWidthDp; - this.screenHeightDp = screenHeightDp; - this.localeScript = localeScript; - this.localeVariant = localeVariant; - this.screenLayout2 = screenLayout2; - this.unknown = unknown; - } - - /** - * The different types of configs that can be present in a {@link BinaryResourceConfiguration}. - */ - public enum Type { - MCC, - MNC, - LANGUAGE_STRING, - REGION_STRING, - SCREEN_LAYOUT_DIRECTION, - SMALLEST_SCREEN_WIDTH_DP, - SCREEN_WIDTH_DP, - SCREEN_HEIGHT_DP, - SCREEN_LAYOUT_SIZE, - SCREEN_LAYOUT_LONG, - SCREEN_LAYOUT_ROUND, - ORIENTATION, - UI_MODE_TYPE, - UI_MODE_NIGHT, - DENSITY_DPI, - TOUCHSCREEN, - KEYBOARD_HIDDEN, - KEYBOARD, - NAVIGATION_HIDDEN, - NAVIGATION, - SDK_VERSION - } - - /** - * The below constants are from android.content.res.Configuration. - */ - private static final int DENSITY_DPI_UNDEFINED = 0; - private static final int DENSITY_DPI_LDPI = 120; - private static final int DENSITY_DPI_MDPI = 160; - private static final int DENSITY_DPI_TVDPI = 213; - private static final int DENSITY_DPI_HDPI = 240; - private static final int DENSITY_DPI_XHDPI = 320; - private static final int DENSITY_DPI_XXHDPI = 480; - private static final int DENSITY_DPI_XXXHDPI = 640; - private static final int DENSITY_DPI_ANY = 0xFFFE; - private static final int DENSITY_DPI_NONE = 0xFFFF; - private static final Map DENSITY_DPI_VALUES = - ImmutableMap.builder() - .put(DENSITY_DPI_UNDEFINED, "") - .put(DENSITY_DPI_LDPI, "ldpi") - .put(DENSITY_DPI_MDPI, "mdpi") - .put(DENSITY_DPI_TVDPI, "tvdpi") - .put(DENSITY_DPI_HDPI, "hdpi") - .put(DENSITY_DPI_XHDPI, "xhdpi") - .put(DENSITY_DPI_XXHDPI, "xxhdpi") - .put(DENSITY_DPI_XXXHDPI, "xxxhdpi") - .put(DENSITY_DPI_ANY, "anydpi") - .put(DENSITY_DPI_NONE, "nodpi") - .build(); - - private static final int KEYBOARD_NOKEYS = 1; - private static final int KEYBOARD_QWERTY = 2; - private static final int KEYBOARD_12KEY = 3; - private static final Map KEYBOARD_VALUES = ImmutableMap.of( - KEYBOARD_NOKEYS, "nokeys", - KEYBOARD_QWERTY, "qwerty", - KEYBOARD_12KEY, "12key"); - - private static final int KEYBOARDHIDDEN_MASK = 0x03; - private static final int KEYBOARDHIDDEN_NO = 1; - private static final int KEYBOARDHIDDEN_YES = 2; - private static final int KEYBOARDHIDDEN_SOFT = 3; - private static final Map KEYBOARDHIDDEN_VALUES = ImmutableMap.of( - KEYBOARDHIDDEN_NO, "keysexposed", - KEYBOARDHIDDEN_YES, "keyshidden", - KEYBOARDHIDDEN_SOFT, "keyssoft"); - - private static final int NAVIGATION_NONAV = 1; - private static final int NAVIGATION_DPAD = 2; - private static final int NAVIGATION_TRACKBALL = 3; - private static final int NAVIGATION_WHEEL = 4; - private static final Map NAVIGATION_VALUES = ImmutableMap.of( - NAVIGATION_NONAV, "nonav", - NAVIGATION_DPAD, "dpad", - NAVIGATION_TRACKBALL, "trackball", - NAVIGATION_WHEEL, "wheel"); - - private static final int NAVIGATIONHIDDEN_MASK = 0x0C; - private static final int NAVIGATIONHIDDEN_NO = 0x04; - private static final int NAVIGATIONHIDDEN_YES = 0x08; - private static final Map NAVIGATIONHIDDEN_VALUES = ImmutableMap.of( - NAVIGATIONHIDDEN_NO, "navexposed", - NAVIGATIONHIDDEN_YES, "navhidden"); - - private static final int ORIENTATION_PORTRAIT = 0x01; - private static final int ORIENTATION_LANDSCAPE = 0x02; - private static final Map ORIENTATION_VALUES = ImmutableMap.of( - ORIENTATION_PORTRAIT, "port", - ORIENTATION_LANDSCAPE, "land"); - - private static final int SCREENLAYOUT_LAYOUTDIR_MASK = 0xC0; - private static final int SCREENLAYOUT_LAYOUTDIR_LTR = 0x40; - private static final int SCREENLAYOUT_LAYOUTDIR_RTL = 0x80; - private static final Map SCREENLAYOUT_LAYOUTDIR_VALUES = ImmutableMap.of( - SCREENLAYOUT_LAYOUTDIR_LTR, "ldltr", - SCREENLAYOUT_LAYOUTDIR_RTL, "ldrtl"); - - private static final int SCREENLAYOUT_LONG_MASK = 0x30; - private static final int SCREENLAYOUT_LONG_NO = 0x10; - private static final int SCREENLAYOUT_LONG_YES = 0x20; - private static final Map SCREENLAYOUT_LONG_VALUES = ImmutableMap.of( - SCREENLAYOUT_LONG_NO, "notlong", - SCREENLAYOUT_LONG_YES, "long"); - - private static final int SCREENLAYOUT_ROUND_MASK = 0x03; - private static final int SCREENLAYOUT_ROUND_NO = 0x01; - private static final int SCREENLAYOUT_ROUND_YES = 0x02; - private static final Map SCREENLAYOUT_ROUND_VALUES = ImmutableMap.of( - SCREENLAYOUT_ROUND_NO, "notround", - SCREENLAYOUT_ROUND_YES, "round"); - - private static final int SCREENLAYOUT_SIZE_MASK = 0x0F; - private static final int SCREENLAYOUT_SIZE_SMALL = 0x01; - private static final int SCREENLAYOUT_SIZE_NORMAL = 0x02; - private static final int SCREENLAYOUT_SIZE_LARGE = 0x03; - private static final int SCREENLAYOUT_SIZE_XLARGE = 0x04; - private static final Map SCREENLAYOUT_SIZE_VALUES = ImmutableMap.of( - SCREENLAYOUT_SIZE_SMALL, "small", - SCREENLAYOUT_SIZE_NORMAL, "normal", - SCREENLAYOUT_SIZE_LARGE, "large", - SCREENLAYOUT_SIZE_XLARGE, "xlarge"); - - private static final int TOUCHSCREEN_NOTOUCH = 1; - private static final int TOUCHSCREEN_FINGER = 3; - private static final Map TOUCHSCREEN_VALUES = ImmutableMap.of( - TOUCHSCREEN_NOTOUCH, "notouch", - TOUCHSCREEN_FINGER, "finger"); - - private static final int UI_MODE_NIGHT_MASK = 0x30; - private static final int UI_MODE_NIGHT_NO = 0x10; - private static final int UI_MODE_NIGHT_YES = 0x20; - private static final Map UI_MODE_NIGHT_VALUES = ImmutableMap.of( - UI_MODE_NIGHT_NO, "notnight", - UI_MODE_NIGHT_YES, "night"); - - private static final int UI_MODE_TYPE_MASK = 0x0F; - private static final int UI_MODE_TYPE_DESK = 0x02; - private static final int UI_MODE_TYPE_CAR = 0x03; - private static final int UI_MODE_TYPE_TELEVISION = 0x04; - private static final int UI_MODE_TYPE_APPLIANCE = 0x05; - private static final int UI_MODE_TYPE_WATCH = 0x06; - private static final int UI_MODE_TYPE_VR_HEADSET = 0x07; - - // start - miui - private static final int UI_MODE_TYPE_GODZILLAUI = 0x0b; - private static final int UI_MODE_TYPE_SMALLUI = 0x0c; - private static final int UI_MODE_TYPE_MEDIUMUI = 0x0d; - private static final int UI_MODE_TYPE_LARGEUI = 0x0e; - private static final int UI_MODE_TYPE_HUGEUI = 0x0f; - // end - miui - - private static final Map UI_MODE_TYPE_VALUES = - ImmutableMap.builder() - .put(UI_MODE_TYPE_DESK, "desk") - .put(UI_MODE_TYPE_CAR, "car") - .put(UI_MODE_TYPE_TELEVISION, "television") - .put(UI_MODE_TYPE_APPLIANCE, "appliance") - .put(UI_MODE_TYPE_WATCH, "watch") - .put(UI_MODE_TYPE_VR_HEADSET, "vrheadset") - .put(UI_MODE_TYPE_GODZILLAUI, "godzillaui") - .put(UI_MODE_TYPE_SMALLUI, "smallui") - .put(UI_MODE_TYPE_MEDIUMUI, "mediumui") - .put(UI_MODE_TYPE_LARGEUI, "largeui") - .put(UI_MODE_TYPE_HUGEUI, "hugeui").build(); - - /** - * The minimum size in bytes that this configuration must be to contain screen config info. - */ - private static final int SCREEN_CONFIG_MIN_SIZE = 32; - - /** - * The minimum size in bytes that this configuration must be to contain screen dp info. - */ - private static final int SCREEN_DP_MIN_SIZE = 36; - - /** - * The minimum size in bytes that this configuration must be to contain locale info. - */ - private static final int LOCALE_MIN_SIZE = 48; - - /** - * The minimum size in bytes that this config must be to contain the screenConfig extension. - */ - private static final int SCREEN_CONFIG_EXTENSION_MIN_SIZE = 52; - /** * The number of bytes that this resource configuration takes up. */ @@ -708,7 +662,7 @@ public class BinaryResourceConfiguration implements SerializableResource { Map result = new LinkedHashMap<>(); // Preserve order for #toString(). result.put(Type.MCC, mcc() != 0 ? "mcc" + mcc() : ""); result.put(Type.MNC, mnc() != 0 ? "mnc" + mnc() : ""); - result.put(Type.LANGUAGE_STRING, !languageString().isEmpty() ? "" + languageString() : ""); + result.put(Type.LANGUAGE_STRING, !languageString().isEmpty() ? languageString() : ""); result.put(Type.REGION_STRING, !regionString().isEmpty() ? "r" + regionString() : ""); result.put(Type.SCREEN_LAYOUT_DIRECTION, getOrDefault(SCREENLAYOUT_LAYOUTDIR_VALUES, screenLayoutDirection(), "")); @@ -742,4 +696,31 @@ public class BinaryResourceConfiguration implements SerializableResource { V value = map.get(key); return value != null ? value : defaultValue; } + + /** + * The different types of configs that can be present in a {@link BinaryResourceConfiguration}. + */ + public enum Type { + MCC, + MNC, + LANGUAGE_STRING, + REGION_STRING, + SCREEN_LAYOUT_DIRECTION, + SMALLEST_SCREEN_WIDTH_DP, + SCREEN_WIDTH_DP, + SCREEN_HEIGHT_DP, + SCREEN_LAYOUT_SIZE, + SCREEN_LAYOUT_LONG, + SCREEN_LAYOUT_ROUND, + ORIENTATION, + UI_MODE_TYPE, + UI_MODE_NIGHT, + DENSITY_DPI, + TOUCHSCREEN, + KEYBOARD_HIDDEN, + KEYBOARD, + NAVIGATION_HIDDEN, + NAVIGATION, + SDK_VERSION + } } diff --git a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/BinaryResourceIdentifier.java b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/BinaryResourceIdentifier.java index 32a61cf60..6f97d7cf5 100644 --- a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/BinaryResourceIdentifier.java +++ b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/BinaryResourceIdentifier.java @@ -49,6 +49,12 @@ public class BinaryResourceIdentifier { private final int typeId; private final int entryId; + private BinaryResourceIdentifier(int packageId, int typeId, int entryId) { + this.packageId = packageId; + this.typeId = typeId; + this.entryId = entryId; + } + /** * Returns a {@link BinaryResourceIdentifier} from a {@code resourceId} of the form 0xpptteeee. */ @@ -69,12 +75,6 @@ public class BinaryResourceIdentifier { return new BinaryResourceIdentifier(packageId, typeId, entryId); } - private BinaryResourceIdentifier(int packageId, int typeId, int entryId) { - this.packageId = packageId; - this.typeId = typeId; - this.entryId = entryId; - } - /** * The (1-based) id of the {@link PackageChunk} containing this resource. */ diff --git a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/BinaryResourceString.java b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/BinaryResourceString.java index 3fe721a60..23196cca7 100644 --- a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/BinaryResourceString.java +++ b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/BinaryResourceString.java @@ -31,24 +31,6 @@ import static java.nio.charset.StandardCharsets.UTF_8; */ public final class BinaryResourceString { - /** - * Type of {@link BinaryResourceString} to encode / decode. - */ - public enum Type { - UTF8(UTF_8), - UTF16(UTF_16LE); - - private final Charset charset; - - Type(Charset charset) { - this.charset = charset; - } - - public Charset charset() { - return charset; - } - } - private BinaryResourceString() { } // Private constructor @@ -166,4 +148,22 @@ public final class BinaryResourceString { } return length; } + + /** + * Type of {@link BinaryResourceString} to encode / decode. + */ + public enum Type { + UTF8(UTF_8), + UTF16(UTF_16LE); + + private final Charset charset; + + Type(Charset charset) { + this.charset = charset; + } + + public Charset charset() { + return charset; + } + } } diff --git a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/BinaryResourceValue.java b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/BinaryResourceValue.java index 50e8d9e44..64a992352 100644 --- a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/BinaryResourceValue.java +++ b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/BinaryResourceValue.java @@ -31,6 +31,78 @@ import java.util.Objects; */ public class BinaryResourceValue implements SerializableResource { + /** + * The serialized size in bytes of a {@link BinaryResourceValue}. + */ + public static final int SIZE = 8; + public int size; + public Type type; + public int data; + public BinaryResourceValue(int size, Type type, int data) { + this.size = size; + this.type = type; + this.data = data; + } + + public static BinaryResourceValue create(ByteBuffer buffer) { + int size = (buffer.getShort() & 0xFFFF); + buffer.get(); // Unused + Type type = Type.fromCode(buffer.get()); + int data = buffer.getInt(); + return new BinaryResourceValue(size, type, data); + } + + /** + * The length in bytes of this value. + */ + public int size() { + return size; + } + + /** + * The raw data type of this value. + */ + public Type type() { + return type; + } + + /** + * The actual 4-byte value; interpretation of the value depends on {@code dataType}. + */ + public int data() { + return data; + } + + @Override + public byte[] toByteArray() { + return toByteArray(false); + } + + @Override + public byte[] toByteArray(boolean shrink) { + ByteBuffer buffer = ByteBuffer.allocate(SIZE).order(ByteOrder.LITTLE_ENDIAN); + buffer.putShort((short) size()); + buffer.put((byte) 0); // Unused + buffer.put(type().code()); + buffer.putInt(data()); + return buffer.array(); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + BinaryResourceValue that = (BinaryResourceValue) o; + return size == that.size && + data == that.data && + type == that.type; + } + + @Override + public int hashCode() { + return Objects.hash(size, type, data); + } + /** * Resource type codes. */ @@ -100,8 +172,6 @@ public class BinaryResourceValue implements SerializableResource { */ INT_COLOR_RGB4(0x1f); - private final byte code; - private static final Map FROM_BYTE; static { @@ -112,90 +182,18 @@ public class BinaryResourceValue implements SerializableResource { FROM_BYTE = builder.build(); } + private final byte code; + Type(int code) { this.code = UnsignedBytes.checkedCast(code); } - public byte code() { - return code; - } - public static Type fromCode(byte code) { return Preconditions.checkNotNull(FROM_BYTE.get(code), "Unknown resource type: %s", code); } - } - /** - * The serialized size in bytes of a {@link BinaryResourceValue}. - */ - public static final int SIZE = 8; - - public int size; - public Type type; - public int data; - - public static BinaryResourceValue create(ByteBuffer buffer) { - int size = (buffer.getShort() & 0xFFFF); - buffer.get(); // Unused - Type type = Type.fromCode(buffer.get()); - int data = buffer.getInt(); - return new BinaryResourceValue(size, type, data); - } - - public BinaryResourceValue(int size, Type type, int data) { - this.size = size; - this.type = type; - this.data = data; - } - - /** - * The length in bytes of this value. - */ - public int size() { - return size; - } - - /** - * The raw data type of this value. - */ - public Type type() { - return type; - } - - /** - * The actual 4-byte value; interpretation of the value depends on {@code dataType}. - */ - public int data() { - return data; - } - - @Override - public byte[] toByteArray() { - return toByteArray(false); - } - - @Override - public byte[] toByteArray(boolean shrink) { - ByteBuffer buffer = ByteBuffer.allocate(SIZE).order(ByteOrder.LITTLE_ENDIAN); - buffer.putShort((short) size()); - buffer.put((byte) 0); // Unused - buffer.put(type().code()); - buffer.putInt(data()); - return buffer.array(); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - BinaryResourceValue that = (BinaryResourceValue) o; - return size == that.size && - data == that.data && - type == that.type; - } - - @Override - public int hashCode() { - return Objects.hash(size, type, data); + public byte code() { + return code; + } } } diff --git a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/Chunk.java b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/Chunk.java index 665b8cd06..f31e4692d 100644 --- a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/Chunk.java +++ b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/Chunk.java @@ -35,86 +35,36 @@ import java.util.Map; */ public abstract class Chunk implements SerializableResource { - /** - * Types of chunks that can exist. - */ - public enum Type { - NULL(0x0000), - STRING_POOL(0x0001), - TABLE(0x0002), - XML(0x0003), - XML_START_NAMESPACE(0x0100), - XML_END_NAMESPACE(0x0101), - XML_START_ELEMENT(0x0102), - XML_END_ELEMENT(0x0103), - XML_CDATA(0x0104), - XML_RESOURCE_MAP(0x0180), - TABLE_PACKAGE(0x0200), - TABLE_TYPE(0x0201), - TABLE_TYPE_SPEC(0x0202), - TABLE_LIBRARY(0x0203); - - private final short code; - - private static final Map FROM_SHORT; - - static { - Builder builder = ImmutableMap.builder(); - for (Type type : values()) { - builder.put(type.code(), type); - } - FROM_SHORT = builder.build(); - } - - Type(int code) { - this.code = Shorts.checkedCast(code); - } - - public short code() { - return code; - } - - public static Type fromCode(short code) { - return Preconditions.checkNotNull(FROM_SHORT.get(code), "Unknown chunk type: %s", code); - } - } - /** * The byte boundary to pad chunks on. */ public static final int PAD_BOUNDARY = 4; - /** * The number of bytes in every chunk that describes chunk type, header size, and chunk size. */ public static final int METADATA_SIZE = 8; - /** * The offset in bytes, from the start of the chunk, where the chunk size can be found. */ private static final int CHUNK_SIZE_OFFSET = 4; - + /** + * Size of the chunk header in bytes. + */ + protected final int headerSize; + /** + * headerSize + dataSize. The total size of this chunk. + */ + protected final int chunkSize; + /** + * Offset of this chunk from the start of the file. + */ + protected final int offset; /** * The parent to this chunk, if any. */ @Nullable private final Chunk parent; - /** - * Size of the chunk header in bytes. - */ - protected final int headerSize; - - /** - * headerSize + dataSize. The total size of this chunk. - */ - protected final int chunkSize; - - /** - * Offset of this chunk from the start of the file. - */ - protected final int offset; - protected Chunk(ByteBuffer buffer, @Nullable Chunk parent) { this.parent = parent; offset = buffer.position() - 2; @@ -122,6 +72,74 @@ public abstract class Chunk implements SerializableResource { chunkSize = buffer.getInt(); } + /** + * Creates a new chunk whose contents start at {@code buffer}'s current position. + * + * @param buffer A buffer positioned at the start of a chunk. + * @return new chunk + */ + public static Chunk newInstance(ByteBuffer buffer) { + return newInstance(buffer, null); + } + + /** + * Creates a new chunk whose contents start at {@code buffer}'s current position. + * + * @param buffer A buffer positioned at the start of a chunk. + * @param parent The parent to this chunk (or null if there's no parent). + * @return new chunk + */ + public static Chunk newInstance(ByteBuffer buffer, @Nullable Chunk parent) { + Chunk result; + Type type = Type.fromCode(buffer.getShort()); + switch (type) { + case STRING_POOL: + result = new StringPoolChunk(buffer, parent); + break; + case TABLE: + result = new ResourceTableChunk(buffer, parent); + break; + case XML: + result = new XmlChunk(buffer, parent); + break; + case XML_START_NAMESPACE: + result = new XmlNamespaceStartChunk(buffer, parent); + break; + case XML_END_NAMESPACE: + result = new XmlNamespaceEndChunk(buffer, parent); + break; + case XML_START_ELEMENT: + result = new XmlStartElementChunk(buffer, parent); + break; + case XML_END_ELEMENT: + result = new XmlEndElementChunk(buffer, parent); + break; + case XML_CDATA: + result = new XmlCdataChunk(buffer, parent); + break; + case XML_RESOURCE_MAP: + result = new XmlResourceMapChunk(buffer, parent); + break; + case TABLE_PACKAGE: + result = new PackageChunk(buffer, parent); + break; + case TABLE_TYPE: + result = new TypeChunk(buffer, parent); + break; + case TABLE_TYPE_SPEC: + result = new TypeSpecChunk(buffer, parent); + break; + case TABLE_LIBRARY: + result = new LibraryChunk(buffer, parent); + break; + default: + result = new UnknownChunk(buffer, parent); + } + result.init(buffer); + result.seekToEndOfChunk(buffer); + return result; + } + /** * Finishes initialization of a chunk. This should be called immediately after the constructor. * This is separate from the constructor so that the header of a chunk can be fully initialized @@ -256,70 +274,46 @@ public abstract class Chunk implements SerializableResource { } /** - * Creates a new chunk whose contents start at {@code buffer}'s current position. - * - * @param buffer A buffer positioned at the start of a chunk. - * @return new chunk + * Types of chunks that can exist. */ - public static Chunk newInstance(ByteBuffer buffer) { - return newInstance(buffer, null); - } + public enum Type { + NULL(0x0000), + STRING_POOL(0x0001), + TABLE(0x0002), + XML(0x0003), + XML_START_NAMESPACE(0x0100), + XML_END_NAMESPACE(0x0101), + XML_START_ELEMENT(0x0102), + XML_END_ELEMENT(0x0103), + XML_CDATA(0x0104), + XML_RESOURCE_MAP(0x0180), + TABLE_PACKAGE(0x0200), + TABLE_TYPE(0x0201), + TABLE_TYPE_SPEC(0x0202), + TABLE_LIBRARY(0x0203); - /** - * Creates a new chunk whose contents start at {@code buffer}'s current position. - * - * @param buffer A buffer positioned at the start of a chunk. - * @param parent The parent to this chunk (or null if there's no parent). - * @return new chunk - */ - public static Chunk newInstance(ByteBuffer buffer, @Nullable Chunk parent) { - Chunk result; - Type type = Type.fromCode(buffer.getShort()); - switch (type) { - case STRING_POOL: - result = new StringPoolChunk(buffer, parent); - break; - case TABLE: - result = new ResourceTableChunk(buffer, parent); - break; - case XML: - result = new XmlChunk(buffer, parent); - break; - case XML_START_NAMESPACE: - result = new XmlNamespaceStartChunk(buffer, parent); - break; - case XML_END_NAMESPACE: - result = new XmlNamespaceEndChunk(buffer, parent); - break; - case XML_START_ELEMENT: - result = new XmlStartElementChunk(buffer, parent); - break; - case XML_END_ELEMENT: - result = new XmlEndElementChunk(buffer, parent); - break; - case XML_CDATA: - result = new XmlCdataChunk(buffer, parent); - break; - case XML_RESOURCE_MAP: - result = new XmlResourceMapChunk(buffer, parent); - break; - case TABLE_PACKAGE: - result = new PackageChunk(buffer, parent); - break; - case TABLE_TYPE: - result = new TypeChunk(buffer, parent); - break; - case TABLE_TYPE_SPEC: - result = new TypeSpecChunk(buffer, parent); - break; - case TABLE_LIBRARY: - result = new LibraryChunk(buffer, parent); - break; - default: - result = new UnknownChunk(buffer, parent); + private static final Map FROM_SHORT; + + static { + Builder builder = ImmutableMap.builder(); + for (Type type : values()) { + builder.put(type.code(), type); + } + FROM_SHORT = builder.build(); + } + + private final short code; + + Type(int code) { + this.code = Shorts.checkedCast(code); + } + + public static Type fromCode(short code) { + return Preconditions.checkNotNull(FROM_SHORT.get(code), "Unknown chunk type: %s", code); + } + + public short code() { + return code; } - result.init(buffer); - result.seekToEndOfChunk(buffer); - return result; } } diff --git a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/LibraryChunk.java b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/LibraryChunk.java index 4a31546f4..946604172 100644 --- a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/LibraryChunk.java +++ b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/LibraryChunk.java @@ -43,7 +43,7 @@ public final class LibraryChunk extends Chunk { */ private final List entries = new ArrayList<>(); - protected LibraryChunk(ByteBuffer buffer, @Nullable Chunk parent) { + LibraryChunk(ByteBuffer buffer, @Nullable Chunk parent) { super(buffer, parent); entryCount = buffer.getInt(); } @@ -98,17 +98,17 @@ public final class LibraryChunk extends Chunk { private final int packageId; private final String packageName; + private Entry(int packageId, String packageName) { + this.packageId = packageId; + this.packageName = packageName; + } + static Entry create(ByteBuffer buffer, int offset) { int packageId = buffer.getInt(offset); String packageName = PackageUtils.readPackageName(buffer, offset + 4); return new Entry(packageId, packageName); } - private Entry(int packageId, String packageName) { - this.packageId = packageId; - this.packageName = packageName; - } - /** * The id assigned to the shared library at build time. */ diff --git a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/PackageChunk.java b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/PackageChunk.java index 9ede60266..6eb495f1d 100644 --- a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/PackageChunk.java +++ b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/PackageChunk.java @@ -43,58 +43,48 @@ public final class PackageChunk extends ChunkWithChunks { * Offset in bytes, from the start of the chunk, where {@code keyStringsOffset} can be found. */ private static final int KEY_OFFSET_OFFSET = 276; - - /** - * The package id if this is a base package, or 0 if not a base package. - */ - private int id; - - /** - * The name of the package. - */ - private String packageName; - /** * The offset (from {@code offset}) in the original buffer where type strings start. */ private final int typeStringsOffset; - /** * The index into the type string pool of the last public type. */ private final int lastPublicType; - /** * An offset to the string pool that contains the key strings for this package. */ private final int keyStringsOffset; - /** * The index into the key string pool of the last public key. */ private final int lastPublicKey; - /** * An offset to the type ID(s). This is undocumented in the original code. */ private final int typeIdOffset; - /** * Contains a mapping of a type index to its {@link TypeSpecChunk}. */ private final Map typeSpecs = new HashMap<>(); - /** * Contains a mapping of a type index to all of the {@link TypeChunk} with that index. */ private final Multimap types = ArrayListMultimap.create(); - + /** + * The package id if this is a base package, or 0 if not a base package. + */ + private int id; + /** + * The name of the package. + */ + private String packageName; /** * May contain a library chunk for mapping dynamic references to resolved references. */ private Optional libraryChunk = Optional.empty(); - protected PackageChunk(ByteBuffer buffer, @Nullable Chunk parent) { + PackageChunk(ByteBuffer buffer, @Nullable Chunk parent) { super(buffer, parent); id = buffer.getInt(); packageName = PackageUtils.readPackageName(buffer, buffer.position()); diff --git a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/ResourceTableChunk.java b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/ResourceTableChunk.java index b6dffd660..1644b74bb 100644 --- a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/ResourceTableChunk.java +++ b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/ResourceTableChunk.java @@ -36,17 +36,16 @@ import java.util.Map; */ public final class ResourceTableChunk extends ChunkWithChunks { + /** + * The packages contained in this resource table. + */ + private final Map packages = new HashMap<>(); /** * A string pool containing all string resource values in the entire resource table. */ private StringPoolChunk stringPool; - /** - * The packages contained in this resource table. - */ - private final Map packages = new HashMap<>(); - - protected ResourceTableChunk(ByteBuffer buffer, @Nullable Chunk parent) { + ResourceTableChunk(ByteBuffer buffer, @Nullable Chunk parent) { super(buffer, parent); // packageCount. We ignore this, because we already know how many chunks we have. Preconditions.checkState(buffer.getInt() >= 1, "ResourceTableChunk package count was < 1."); diff --git a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/StringPoolChunk.java b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/StringPoolChunk.java index 28b7f5907..61ee5aa60 100644 --- a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/StringPoolChunk.java +++ b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/StringPoolChunk.java @@ -89,7 +89,7 @@ public final class StringPoolChunk extends Chunk { */ private boolean isOriginalDeduped = false; - protected StringPoolChunk(ByteBuffer buffer, @Nullable Chunk parent) { + StringPoolChunk(ByteBuffer buffer, @Nullable Chunk parent) { super(buffer, parent); stringCount = buffer.getInt(); styleCount = buffer.getInt(); @@ -310,6 +310,10 @@ public final class StringPoolChunk extends Chunk { static final int RES_STRING_POOL_SPAN_END = 0xFFFFFFFF; private final List spans; + private StringPoolStyle(List spans) { + this.spans = spans; + } + static StringPoolStyle create(ByteBuffer buffer, int offset, StringPoolChunk parent) { Builder spans = ImmutableList.builder(); int nameIndex = buffer.getInt(offset); @@ -321,10 +325,6 @@ public final class StringPoolChunk extends Chunk { return new StringPoolStyle(spans.build()); } - private StringPoolStyle(List spans) { - this.spans = spans; - } - @Override public byte[] toByteArray() throws IOException { return toByteArray(false); @@ -384,13 +384,6 @@ public final class StringPoolChunk extends Chunk { private final int stop; private final StringPoolChunk parent; - static StringPoolSpan create(ByteBuffer buffer, int offset, StringPoolChunk parent) { - int nameIndex = buffer.getInt(offset); - int start = buffer.getInt(offset + 4); - int stop = buffer.getInt(offset + 8); - return new StringPoolSpan(nameIndex, start, stop, parent); - } - private StringPoolSpan(int nameIndex, int start, int stop, StringPoolChunk parent) { this.nameIndex = nameIndex; this.start = start; @@ -398,6 +391,13 @@ public final class StringPoolChunk extends Chunk { this.parent = parent; } + static StringPoolSpan create(ByteBuffer buffer, int offset, StringPoolChunk parent) { + int nameIndex = buffer.getInt(offset); + int start = buffer.getInt(offset + 4); + int stop = buffer.getInt(offset + 8); + return new StringPoolSpan(nameIndex, start, stop, parent); + } + @Override public final byte[] toByteArray() { return toByteArray(false); diff --git a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/TypeChunk.java b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/TypeChunk.java index 1030df262..66cf7182b 100644 --- a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/TypeChunk.java +++ b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/TypeChunk.java @@ -52,18 +52,16 @@ public final class TypeChunk extends Chunk { * The offset (from {@code offset}) in the original buffer where {@code entries} start. */ private final int entriesStart; - + /** + * A sparse list of resource entries defined by this chunk. + */ + private final Map entries = new TreeMap<>(); /** * The resource configuration that these resource entries correspond to. */ private BinaryResourceConfiguration configuration; - /** - * A sparse list of resource entries defined by this chunk. - */ - private final Map entries = new TreeMap<>(); - - protected TypeChunk(ByteBuffer buffer, @Nullable Chunk parent) { + TypeChunk(ByteBuffer buffer, @Nullable Chunk parent) { super(buffer, parent); id = UnsignedBytes.toInt(buffer.get()); buffer.position(buffer.position() + 3); // Skip 3 bytes for packing @@ -176,13 +174,13 @@ public final class TypeChunk extends Chunk { } } - protected String getString(int index) { + private String getString(int index) { ResourceTableChunk resourceTable = getResourceTableChunk(); Preconditions.checkNotNull(resourceTable, "%s has no resource table.", getClass()); return resourceTable.getStringPool().getString(index); } - protected String getKeyName(int index) { + private String getKeyName(int index) { PackageChunk packageChunk = getPackageChunk(); Preconditions.checkNotNull(packageChunk, "%s has no parent package.", getClass()); StringPoolChunk keyPool = packageChunk.getKeyStringPool(); @@ -190,7 +188,7 @@ public final class TypeChunk extends Chunk { return keyPool.getString(index); } - protected void updateKey(int index, String value) { + private void updateKey(int index, String value) { PackageChunk packageChunk = getPackageChunk(); Preconditions.checkNotNull(packageChunk, "%s has no parent package.", getClass()); StringPoolChunk keyPool = packageChunk.getKeyStringPool(); @@ -293,10 +291,10 @@ public final class TypeChunk extends Chunk { private final int headerSize; private final int flags; private final int keyIndex; - private BinaryResourceValue value; - private Map values; private final int parentEntry; private final TypeChunk parent; + private BinaryResourceValue value; + private final Map values; private Entry(int headerSize, int flags, @@ -314,6 +312,52 @@ public final class TypeChunk extends Chunk { this.parent = parent; } + /** + * Creates a new {@link Entry} whose contents start at the 0-based position in + * {@code buffer} given by a 4-byte value read from {@code buffer} and then added to + * {@code baseOffset}. If the value read from {@code buffer} is equal to {@link #NO_ENTRY}, then + * null is returned as there is no resource at that position. + * + *

Otherwise, this position is parsed and returned as an {@link Entry}. + * + * @param buffer A buffer positioned at an offset to an {@link Entry}. + * @param baseOffset Offset that must be added to the value at {@code buffer}'s position. + * @param parent The {@link TypeChunk} that this resource entry belongs to. + * @return New {@link Entry} or null if there is no resource at this location. + */ + @Nullable + public static Entry create(ByteBuffer buffer, int baseOffset, TypeChunk parent) { + int offset = buffer.getInt(); + if (offset == NO_ENTRY) { + return null; + } + int position = buffer.position(); + buffer.position(baseOffset + offset); // Set buffer position to resource entry start + Entry result = newInstance(buffer, parent); + buffer.position(position); // Restore buffer position + return result; + } + + @Nullable + private static Entry newInstance(ByteBuffer buffer, TypeChunk parent) { + int headerSize = buffer.getShort() & 0xFFFF; + int flags = buffer.getShort() & 0xFFFF; + int keyIndex = buffer.getInt(); + BinaryResourceValue value = null; + Map values = new LinkedHashMap<>(); + int parentEntry = 0; + if ((flags & FLAG_COMPLEX) != 0) { + parentEntry = buffer.getInt(); + int valueCount = buffer.getInt(); + for (int i = 0; i < valueCount; ++i) { + values.put(buffer.getInt(), BinaryResourceValue.create(buffer)); + } + } else { + value = BinaryResourceValue.create(buffer); + } + return new Entry(headerSize, flags, keyIndex, value, values, parentEntry, parent); + } + /** * Number of bytes in the header of the {@link Entry}. */ @@ -422,52 +466,6 @@ public final class TypeChunk extends Chunk { return (flags() & FLAG_COMPLEX) != 0; } - /** - * Creates a new {@link Entry} whose contents start at the 0-based position in - * {@code buffer} given by a 4-byte value read from {@code buffer} and then added to - * {@code baseOffset}. If the value read from {@code buffer} is equal to {@link #NO_ENTRY}, then - * null is returned as there is no resource at that position. - * - *

Otherwise, this position is parsed and returned as an {@link Entry}. - * - * @param buffer A buffer positioned at an offset to an {@link Entry}. - * @param baseOffset Offset that must be added to the value at {@code buffer}'s position. - * @param parent The {@link TypeChunk} that this resource entry belongs to. - * @return New {@link Entry} or null if there is no resource at this location. - */ - @Nullable - public static Entry create(ByteBuffer buffer, int baseOffset, TypeChunk parent) { - int offset = buffer.getInt(); - if (offset == NO_ENTRY) { - return null; - } - int position = buffer.position(); - buffer.position(baseOffset + offset); // Set buffer position to resource entry start - Entry result = newInstance(buffer, parent); - buffer.position(position); // Restore buffer position - return result; - } - - @Nullable - private static Entry newInstance(ByteBuffer buffer, TypeChunk parent) { - int headerSize = buffer.getShort() & 0xFFFF; - int flags = buffer.getShort() & 0xFFFF; - int keyIndex = buffer.getInt(); - BinaryResourceValue value = null; - Map values = new LinkedHashMap<>(); - int parentEntry = 0; - if ((flags & FLAG_COMPLEX) != 0) { - parentEntry = buffer.getInt(); - int valueCount = buffer.getInt(); - for (int i = 0; i < valueCount; ++i) { - values.put(buffer.getInt(), BinaryResourceValue.create(buffer)); - } - } else { - value = BinaryResourceValue.create(buffer); - } - return new Entry(headerSize, flags, keyIndex, value, values, parentEntry, parent); - } - @Override public final byte[] toByteArray() { return toByteArray(false); diff --git a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/TypeSpecChunk.java b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/TypeSpecChunk.java index c12922b8d..55c6464ed 100644 --- a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/TypeSpecChunk.java +++ b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/TypeSpecChunk.java @@ -39,7 +39,7 @@ public final class TypeSpecChunk extends Chunk { */ private final int[] resources; - protected TypeSpecChunk(ByteBuffer buffer, @Nullable Chunk parent) { + TypeSpecChunk(ByteBuffer buffer, @Nullable Chunk parent) { super(buffer, parent); id = UnsignedBytes.toInt(buffer.get()); buffer.position(buffer.position() + 3); // Skip 3 bytes for packing diff --git a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/UnknownChunk.java b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/UnknownChunk.java index 0d07c3199..5bdf015a6 100644 --- a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/UnknownChunk.java +++ b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/UnknownChunk.java @@ -34,7 +34,7 @@ public final class UnknownChunk extends Chunk { private final byte[] payload; - protected UnknownChunk(ByteBuffer buffer, @Nullable Chunk parent) { + UnknownChunk(ByteBuffer buffer, @Nullable Chunk parent) { super(buffer, parent); type = Type.fromCode(buffer.getShort(offset)); diff --git a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/XmlAttribute.java b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/XmlAttribute.java index f3d696834..5b02b89c9 100644 --- a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/XmlAttribute.java +++ b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/XmlAttribute.java @@ -36,6 +36,18 @@ public class XmlAttribute implements SerializableResource { private final BinaryResourceValue typedValue; private final XmlNodeChunk parent; + private XmlAttribute(int namespaceIndex, + int nameIndex, + int rawValueIndex, + BinaryResourceValue typedValue, + XmlNodeChunk parent) { + this.namespaceIndex = namespaceIndex; + this.nameIndex = nameIndex; + this.rawValueIndex = rawValueIndex; + this.typedValue = typedValue; + this.parent = parent; + } + /** * Creates a new {@link XmlAttribute} based on the bytes at the current {@code buffer} position. * @@ -50,18 +62,6 @@ public class XmlAttribute implements SerializableResource { return new XmlAttribute(namespace, name, rawValue, typedValue, parent); } - private XmlAttribute(int namespaceIndex, - int nameIndex, - int rawValueIndex, - BinaryResourceValue typedValue, - XmlNodeChunk parent) { - this.namespaceIndex = namespaceIndex; - this.nameIndex = nameIndex; - this.rawValueIndex = rawValueIndex; - this.typedValue = typedValue; - this.parent = parent; - } - /** * A string reference to the namespace URI, or -1 if not present. */ diff --git a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/XmlCdataChunk.java b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/XmlCdataChunk.java index 2f961cb35..f6af250d0 100644 --- a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/XmlCdataChunk.java +++ b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/XmlCdataChunk.java @@ -37,7 +37,7 @@ public final class XmlCdataChunk extends XmlNodeChunk { */ private final BinaryResourceValue binaryResourceValue; - protected XmlCdataChunk(ByteBuffer buffer, @Nullable Chunk parent) { + XmlCdataChunk(ByteBuffer buffer, @Nullable Chunk parent) { super(buffer, parent); rawValue = buffer.getInt(); binaryResourceValue = BinaryResourceValue.create(buffer); diff --git a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/XmlChunk.java b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/XmlChunk.java index 9c55bd42a..1d1867b92 100644 --- a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/XmlChunk.java +++ b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/XmlChunk.java @@ -28,7 +28,7 @@ import java.nio.ByteBuffer; */ public final class XmlChunk extends ChunkWithChunks { - protected XmlChunk(ByteBuffer buffer, @Nullable Chunk parent) { + XmlChunk(ByteBuffer buffer, @Nullable Chunk parent) { super(buffer, parent); } diff --git a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/XmlEndElementChunk.java b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/XmlEndElementChunk.java index f3020eeb8..e8b9837ed 100644 --- a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/XmlEndElementChunk.java +++ b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/XmlEndElementChunk.java @@ -37,7 +37,7 @@ public final class XmlEndElementChunk extends XmlNodeChunk { */ private final int name; - protected XmlEndElementChunk(ByteBuffer buffer, @Nullable Chunk parent) { + XmlEndElementChunk(ByteBuffer buffer, @Nullable Chunk parent) { super(buffer, parent); namespace = buffer.getInt(); name = buffer.getInt(); diff --git a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/XmlNamespaceEndChunk.java b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/XmlNamespaceEndChunk.java index 49f70957d..14dab122f 100644 --- a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/XmlNamespaceEndChunk.java +++ b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/XmlNamespaceEndChunk.java @@ -25,7 +25,7 @@ import java.nio.ByteBuffer; */ public final class XmlNamespaceEndChunk extends XmlNamespaceChunk { - protected XmlNamespaceEndChunk(ByteBuffer buffer, @Nullable Chunk parent) { + XmlNamespaceEndChunk(ByteBuffer buffer, @Nullable Chunk parent) { super(buffer, parent); } diff --git a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/XmlNamespaceStartChunk.java b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/XmlNamespaceStartChunk.java index 1fbd23383..dcf5b8133 100644 --- a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/XmlNamespaceStartChunk.java +++ b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/XmlNamespaceStartChunk.java @@ -25,7 +25,7 @@ import java.nio.ByteBuffer; */ public final class XmlNamespaceStartChunk extends XmlNamespaceChunk { - protected XmlNamespaceStartChunk(ByteBuffer buffer, @Nullable Chunk parent) { + XmlNamespaceStartChunk(ByteBuffer buffer, @Nullable Chunk parent) { super(buffer, parent); } diff --git a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/XmlStartElementChunk.java b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/XmlStartElementChunk.java index d219dec23..75073d279 100644 --- a/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/XmlStartElementChunk.java +++ b/app/src/main/java/com/google/devrel/gmscore/tools/apk/arsc/XmlStartElementChunk.java @@ -71,7 +71,7 @@ public final class XmlStartElementChunk extends XmlNodeChunk { */ private final List attributes = new ArrayList<>(); - protected XmlStartElementChunk(ByteBuffer buffer, @Nullable Chunk parent) { + XmlStartElementChunk(ByteBuffer buffer, @Nullable Chunk parent) { super(buffer, parent); namespace = buffer.getInt(); name = buffer.getInt(); diff --git a/app/src/main/java/com/vk/api/audio/AudioGetLyrics.java b/app/src/main/java/com/vk/api/audio/AudioGetLyrics.java index b6a1d8d6f..9df599cb2 100644 --- a/app/src/main/java/com/vk/api/audio/AudioGetLyrics.java +++ b/app/src/main/java/com/vk/api/audio/AudioGetLyrics.java @@ -6,9 +6,9 @@ import com.vk.api.base.ApiRequest; import com.vk.dto.music.MusicTrack; import com.vk.log.L; import org.json.JSONObject; +import ru.vtosters.hooks.other.Preferences; import ru.vtosters.lite.music.Genius; import ru.vtosters.lite.utils.AndroidUtils; -import ru.vtosters.hooks.other.Preferences; import java.util.ArrayList; diff --git a/app/src/main/java/com/vk/api/gifts/GiftGetByStickerId.java b/app/src/main/java/com/vk/api/gifts/GiftGetByStickerId.java index dfa535f88..df60d0535 100644 --- a/app/src/main/java/com/vk/api/gifts/GiftGetByStickerId.java +++ b/app/src/main/java/com/vk/api/gifts/GiftGetByStickerId.java @@ -7,16 +7,6 @@ import org.json.JSONException; import org.json.JSONObject; public class GiftGetByStickerId extends ApiRequest { - public static class a { - public final int a; - public final CatalogedGift b; - - public a(int i, CatalogedGift catalogedGift) { - this.a = i; - this.b = catalogedGift; - } - } - public GiftGetByStickerId(Context context, int i) { super("execute.getGiftByStickerId"); b("sticker_id", i); @@ -30,4 +20,14 @@ public class GiftGetByStickerId extends ApiRequest { return new a(jSONObject2.optInt("balance"), new CatalogedGift(jSONObject2.getJSONObject("gift"))); } + + public static class a { + public final int a; + public final CatalogedGift b; + + public a(int i, CatalogedGift catalogedGift) { + this.a = i; + this.b = catalogedGift; + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/vk/core/drawable/RecoloredDrawable.java b/app/src/main/java/com/vk/core/drawable/RecoloredDrawable.java index bd60ee6b6..dfeb4779b 100644 --- a/app/src/main/java/com/vk/core/drawable/RecoloredDrawable.java +++ b/app/src/main/java/com/vk/core/drawable/RecoloredDrawable.java @@ -27,6 +27,15 @@ public class RecoloredDrawable extends Drawable implements Drawable.Callback { onStateChange(new int[0]); } + public RecoloredDrawable(Drawable drawable, int i) { + this(drawable, new ColorStateList(new int[][]{new int[0]}, new int[]{i})); + } + + public RecoloredDrawable() { + this.c = 255; + this.d = 255; + } + public void a(int i) { a(new ColorStateList(new int[][]{new int[0]}, new int[]{i})); } @@ -120,13 +129,4 @@ public class RecoloredDrawable extends Drawable implements Drawable.Callback { public Drawable a() { return this.drawable; } - - public RecoloredDrawable(Drawable drawable, int i) { - this(drawable, new ColorStateList(new int[][]{new int[0]}, new int[]{i})); - } - - public RecoloredDrawable() { - this.c = 255; - this.d = 255; - } } \ No newline at end of file diff --git a/app/src/main/java/com/vk/core/utils/VerifyInfoHelper.java b/app/src/main/java/com/vk/core/utils/VerifyInfoHelper.java index f32c281df..9a5781a64 100644 --- a/app/src/main/java/com/vk/core/utils/VerifyInfoHelper.java +++ b/app/src/main/java/com/vk/core/utils/VerifyInfoHelper.java @@ -21,6 +21,13 @@ public final class VerifyInfoHelper { public static final VerifyInfoHelper h; public static int devIcon = R.drawable.ic_favorite_16; + static { + h = new VerifyInfoHelper(); + } + + private VerifyInfoHelper() { + } + public static Integer enumSwitchMapping(VerifyInfoHelper.ColorTheme color) { return switch (color) { case normal -> 1; @@ -30,18 +37,47 @@ public final class VerifyInfoHelper { }; } - public enum ColorTheme { - white, - normal, - light, - ultraLight + public static Drawable b(VerifyInfoHelper verifyInfoHelper, boolean z, boolean z2, boolean dev, Context context, ColorTheme colorTheme, int i, Object obj) { + if ((i & 8) != 0) { + colorTheme = ColorTheme.normal; + } + return verifyInfoHelper.b(z, z2, dev, context, colorTheme); } - static { - h = new VerifyInfoHelper(); + public static Drawable b(VerifyInfoHelper verifyInfoHelper, VerifyInfo verifyInfo, Context context, ColorTheme colorTheme, int i, Object obj) { + return b(verifyInfoHelper, verifyInfo.u1(), verifyInfo.t1(), verifyInfo.dev(), context, colorTheme, i, obj); } - private VerifyInfoHelper() { + public static Drawable b(VerifyInfoHelper verifyInfoHelper, boolean z, boolean z2, Context context, ColorTheme colorTheme, int i, Object obj) { + return b(verifyInfoHelper, z, z2, false, context, colorTheme, i, obj); + } + + public static Drawable a(VerifyInfoHelper verifyInfoHelper, VerifyInfo verifyInfo, Context context, ColorTheme colorTheme, int i, Object obj) { + if ((i & 4) != 0) { + colorTheme = ColorTheme.normal; + } + return verifyInfoHelper.b(verifyInfo, context, colorTheme); + } + + public static Drawable a(VerifyInfoHelper verifyInfoHelper, boolean z, boolean z2, boolean dev, Context context, ColorTheme colorTheme, int i, Object obj) { + if ((i & 8) != 0) { + colorTheme = ColorTheme.normal; + } + return verifyInfoHelper.a(z, z2, dev, context, colorTheme); + } + + public static Drawable a(VerifyInfoHelper verifyInfoHelper, boolean z, boolean z2, Context context, ColorTheme colorTheme, int i, Object obj) { + return a(verifyInfoHelper, z, z2, false, context, colorTheme, i, obj); + } + + public static void a(VerifyInfoHelper verifyInfoHelper, TextView textView, VerifyInfo verifyInfo, boolean z, ColorTheme colorTheme, int i, Object obj) { + if ((i & 4) != 0) { + z = false; + } + if ((i & 8) != 0) { + colorTheme = ColorTheme.normal; + } + verifyInfoHelper.a(textView, verifyInfo, z, colorTheme); } private int a() { @@ -89,7 +125,6 @@ public final class VerifyInfoHelper { return b(this, z, z2, false, context, null, 8, null); } - public int b(ColorTheme colorTheme) { return a(colorTheme); } @@ -104,7 +139,6 @@ public final class VerifyInfoHelper { }; } - public Drawable b(Context context, VerifyInfo verifyInfo) { if (verifyInfo.dev()) { return new RecoloredDrawable(ContextCompat.getDrawable(context, devIcon), c(ColorTheme.normal)); @@ -123,21 +157,6 @@ public final class VerifyInfoHelper { return b(verifyInfo.u1(), verifyInfo.t1(), verifyInfo.dev(), context, colorTheme); } - public static Drawable b(VerifyInfoHelper verifyInfoHelper, boolean z, boolean z2, boolean dev, Context context, ColorTheme colorTheme, int i, Object obj) { - if ((i & 8) != 0) { - colorTheme = ColorTheme.normal; - } - return verifyInfoHelper.b(z, z2, dev, context, colorTheme); - } - - public static Drawable b(VerifyInfoHelper verifyInfoHelper, VerifyInfo verifyInfo, Context context, ColorTheme colorTheme, int i, Object obj) { - return b(verifyInfoHelper, verifyInfo.u1(), verifyInfo.t1(), verifyInfo.dev(), context, colorTheme, i, obj); - } - - public static Drawable b(VerifyInfoHelper verifyInfoHelper, boolean z, boolean z2, Context context, ColorTheme colorTheme, int i, Object obj) { - return b(verifyInfoHelper, z, z2, false, context, colorTheme, i, obj); - } - public Drawable a(Context context, VerifyInfo verifyInfo) { if (verifyInfo.dev()) { return new RecoloredDrawable(ContextCompat.getDrawable(context, devIcon), c(ColorTheme.normal)); @@ -181,28 +200,10 @@ public final class VerifyInfoHelper { return new RecoloredDrawable(ContextCompat.getDrawable(context, i), c2); } - public static Drawable a(VerifyInfoHelper verifyInfoHelper, VerifyInfo verifyInfo, Context context, ColorTheme colorTheme, int i, Object obj) { - if ((i & 4) != 0) { - colorTheme = ColorTheme.normal; - } - return verifyInfoHelper.b(verifyInfo, context, colorTheme); - } - public Drawable a(VerifyInfo verifyInfo, Context context, ColorTheme colorTheme) { return a(verifyInfo.u1(), verifyInfo.t1(), verifyInfo.dev(), context, colorTheme); } - public static Drawable a(VerifyInfoHelper verifyInfoHelper, boolean z, boolean z2, boolean dev, Context context, ColorTheme colorTheme, int i, Object obj) { - if ((i & 8) != 0) { - colorTheme = ColorTheme.normal; - } - return verifyInfoHelper.a(z, z2, dev, context, colorTheme); - } - - public static Drawable a(VerifyInfoHelper verifyInfoHelper, boolean z, boolean z2, Context context, ColorTheme colorTheme, int i, Object obj) { - return a(verifyInfoHelper, z, z2, false, context, colorTheme, i, obj); - } - public Drawable a(boolean z, boolean z2, Context context, ColorTheme colorTheme) { return a(z, z2, false, context, colorTheme); } @@ -230,16 +231,6 @@ public final class VerifyInfoHelper { return new RecoloredDrawable(ContextCompat.getDrawable(context, i), c2); } - public static void a(VerifyInfoHelper verifyInfoHelper, TextView textView, VerifyInfo verifyInfo, boolean z, ColorTheme colorTheme, int i, Object obj) { - if ((i & 4) != 0) { - z = false; - } - if ((i & 8) != 0) { - colorTheme = ColorTheme.normal; - } - verifyInfoHelper.a(textView, verifyInfo, z, colorTheme); - } - public void a(TextView textView, VerifyInfo verifyInfo, boolean z, ColorTheme colorTheme) { Drawable drawable; Context context = textView.getContext(); @@ -267,4 +258,11 @@ public final class VerifyInfoHelper { } ViewExtKt.p(imageView); } + + public enum ColorTheme { + white, + normal, + light, + ultraLight + } } \ No newline at end of file diff --git a/app/src/main/java/com/vk/im/engine/commands/dialogs/DialogGetMentionSuggestionCmd.java b/app/src/main/java/com/vk/im/engine/commands/dialogs/DialogGetMentionSuggestionCmd.java index 644415d33..18b59bb6e 100644 --- a/app/src/main/java/com/vk/im/engine/commands/dialogs/DialogGetMentionSuggestionCmd.java +++ b/app/src/main/java/com/vk/im/engine/commands/dialogs/DialogGetMentionSuggestionCmd.java @@ -31,30 +31,6 @@ public final class DialogGetMentionSuggestionCmd extends BaseImEngineCmd implements Comparator { - List a; - - a(List list) { - this.a = list; - } - - @Override // java.util.Comparator - /* renamed from: a */ - public int compare(Member member, Member member2) { - int indexOf = this.a.indexOf(member); - int indexOf2 = this.a.indexOf(member2); - int i = indexOf; - if (indexOf < 0) { - i = Integer.MAX_VALUE; - } - int i2 = indexOf2; - if (indexOf2 < 0) { - i2 = Integer.MAX_VALUE; - } - return Intrinsics.a(i, i2); - } - } - public DialogGetMentionSuggestionCmd(int i, String str, Source source, boolean z, Object obj) { this.f2365b = i; this.c = str; @@ -150,7 +126,7 @@ public final class DialogGetMentionSuggestionCmd extends BaseImEngineCmd a2; Source source; if (ImDialogsUtils.d(this.f2365b) != PeerType.CHAT) { - return new Suggestion((EntityValue) null, (ProfilesInfo) null); + return new Suggestion(null, null); } Member Z = imEnvironment.Z(); int d = imEnvironment.a0().n().d(); @@ -235,4 +211,28 @@ public final class DialogGetMentionSuggestionCmd extends BaseImEngineCmd implements Comparator { + List a; + + a(List list) { + this.a = list; + } + + @Override // java.util.Comparator + /* renamed from: a */ + public int compare(Member member, Member member2) { + int indexOf = this.a.indexOf(member); + int indexOf2 = this.a.indexOf(member2); + int i = indexOf; + if (indexOf < 0) { + i = Integer.MAX_VALUE; + } + int i2 = indexOf2; + if (indexOf2 < 0) { + i2 = Integer.MAX_VALUE; + } + return Intrinsics.a(i, i2); + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/vk/im/ui/components/common/DialogActionsHelper.java b/app/src/main/java/com/vk/im/ui/components/common/DialogActionsHelper.java index ab52f7655..b4e113155 100644 --- a/app/src/main/java/com/vk/im/ui/components/common/DialogActionsHelper.java +++ b/app/src/main/java/com/vk/im/ui/components/common/DialogActionsHelper.java @@ -19,7 +19,7 @@ import java.util.List; public final class DialogActionsHelper { public static final DialogActionsHelper a = new DialogActionsHelper(); - public final List a(ImConfig imConfig, Dialog dialog, ProfilesSimpleInfo profilesSimpleInfo) { + public List a(ImConfig imConfig, Dialog dialog, ProfilesSimpleInfo profilesSimpleInfo) { if (dialog != null && profilesSimpleInfo != null) { long b2 = TimeProvider.f.b(); ChatSettings z1 = dialog.z1(); @@ -84,7 +84,7 @@ public final class DialogActionsHelper { return new ArrayList<>(); } - public final List a(Dialog dialog, ProfilesSimpleInfo profilesSimpleInfo) { + public List a(Dialog dialog, ProfilesSimpleInfo profilesSimpleInfo) { long b2 = TimeProvider.f.b(); Profile profile = profilesSimpleInfo.get(dialog.getId()); @@ -138,7 +138,7 @@ public final class DialogActionsHelper { return arrayList; } - public final boolean a(Dialog dialog) { + public boolean a(Dialog dialog) { if (dialog.V1() || !dialog.y1()) { return false; } diff --git a/app/src/main/java/com/vk/im/ui/components/common/MsgActionHelper.java b/app/src/main/java/com/vk/im/ui/components/common/MsgActionHelper.java index 438d192a4..a32e89e70 100644 --- a/app/src/main/java/com/vk/im/ui/components/common/MsgActionHelper.java +++ b/app/src/main/java/com/vk/im/ui/components/common/MsgActionHelper.java @@ -16,11 +16,11 @@ import java.util.List; public final class MsgActionHelper { public static final MsgActionHelper a = new MsgActionHelper(); - public final List a(ImEngine imEngine, Dialog dialog, Collection collection) { + public List a(ImEngine imEngine, Dialog dialog, Collection collection) { return a(imEngine != null ? imEngine.g() : null, dialog, collection); } - public final List a(ImConfig imConfig, Dialog dialog, Collection collection) { + public List a(ImConfig imConfig, Dialog dialog, Collection collection) { if (imConfig != null && dialog != null && collection != null) { MsgPermissionHelper.a aVar = new MsgPermissionHelper.a(imConfig, dialog, collection); ArrayList arrayList = new ArrayList<>(); diff --git a/app/src/main/java/com/vk/im/ui/components/viewcontrollers/msg_list/adapter/VhBindArgs.java b/app/src/main/java/com/vk/im/ui/components/viewcontrollers/msg_list/adapter/VhBindArgs.java index 8d8bb9e30..4bc07d663 100644 --- a/app/src/main/java/com/vk/im/ui/components/viewcontrollers/msg_list/adapter/VhBindArgs.java +++ b/app/src/main/java/com/vk/im/ui/components/viewcontrollers/msg_list/adapter/VhBindArgs.java @@ -74,11 +74,7 @@ public class VhBindArgs { private boolean L() { boolean var1; - if (this.K() <= this.m && !TimeProvider.f.c()) { - var1 = false; - } else { - var1 = true; - } + var1 = this.K() > this.m || TimeProvider.f.c(); return var1; } @@ -109,11 +105,7 @@ public class VhBindArgs { public boolean B() { AdapterEntry var1 = this.a; boolean var2; - if (var1 != null && var1.c()) { - var2 = true; - } else { - var2 = false; - } + var2 = var1 != null && var1.c(); return var2; } @@ -121,11 +113,7 @@ public class VhBindArgs { public boolean C() { AdapterEntry var1 = this.a; boolean var2; - if (var1 != null && var1.c() && this.a.c.getLocalId() == this.b.c.getLocalId()) { - var2 = true; - } else { - var2 = false; - } + var2 = var1 != null && var1.c() && this.a.c.getLocalId() == this.b.c.getLocalId(); return var2; } @@ -133,11 +121,7 @@ public class VhBindArgs { public boolean D() { AdapterEntry var1 = this.a; boolean var2; - if (var1 != null && var1.a == 83) { - var2 = true; - } else { - var2 = false; - } + var2 = var1 != null && var1.a == 83; return var2; } @@ -145,11 +129,7 @@ public class VhBindArgs { public boolean E() { Msg var1 = this.b.c; boolean var2; - if (var1 instanceof MsgFromUser && ((MsgFromUser) var1).i2()) { - var2 = true; - } else { - var2 = false; - } + var2 = var1 instanceof MsgFromUser && ((MsgFromUser) var1).i2(); return var2; } @@ -157,11 +137,7 @@ public class VhBindArgs { public boolean F() { Msg var1 = this.b.c; boolean var2; - if (var1 instanceof MsgFromUser && ((MsgFromUser) var1).F0()) { - var2 = true; - } else { - var2 = false; - } + var2 = var1 instanceof MsgFromUser && ((MsgFromUser) var1).F0(); return var2; } @@ -169,11 +145,7 @@ public class VhBindArgs { public boolean G() { AdapterEntry var1 = this.b; boolean var2; - if (var1 != null && var1.a == 51) { - var2 = true; - } else { - var2 = false; - } + var2 = var1 != null && var1.a == 51; return var2; } @@ -186,11 +158,7 @@ public class VhBindArgs { long var1 = this.K(); long var3 = this.m; boolean var5; - if (var1 > var3 && var1 < var3 * 2L) { - var5 = true; - } else { - var5 = false; - } + var5 = var1 > var3 && var1 < var3 * 2L; return var5; } @@ -206,18 +174,10 @@ public class VhBindArgs { MsgFromUser var7 = (MsgFromUser) var1; Msg var3 = this.a.c; boolean var4; - if (var3 != null && var3.d() == MsgSyncState.DONE) { - var4 = true; - } else { - var4 = false; - } + var4 = var3 != null && var3.d() == MsgSyncState.DONE; boolean var5; - if (this.o == ImBgSyncState.CONNECTED) { - var5 = true; - } else { - var5 = false; - } + var5 = this.o == ImBgSyncState.CONNECTED; boolean var6 = var2; if (!var7.H0()) { @@ -242,7 +202,7 @@ public class VhBindArgs { byte var2 = 0; int var3 = var2; if (var1) { - AttachAudioMsg var4 = (AttachAudioMsg) ((MsgFromUser) this.b.c).c(AttachAudioMsg.class, false); + AttachAudioMsg var4 = ((MsgFromUser) this.b.c).c(AttachAudioMsg.class, false); var3 = var2; if (var4 != null) { var3 = var4.f(); @@ -267,11 +227,7 @@ public class VhBindArgs { public boolean c() { Msg var1 = this.b.c; boolean var2; - if (var1 instanceof MsgFromUser && ((MsgFromUser) var1).I0()) { - var2 = true; - } else { - var2 = false; - } + var2 = var1 instanceof MsgFromUser && ((MsgFromUser) var1).I0(); return var2; } @@ -279,22 +235,14 @@ public class VhBindArgs { public boolean d() { Msg var1 = this.b.c; boolean var2; - if (var1 instanceof WithUserContent && ((WithUserContent) var1).D0() != null) { - var2 = true; - } else { - var2 = false; - } + var2 = var1 instanceof WithUserContent && ((WithUserContent) var1).D0() != null; return var2; } public boolean e() { boolean var1; - if (this.b.i > 0) { - var1 = true; - } else { - var1 = false; - } + var1 = this.b.i > 0; return var1; } @@ -317,11 +265,7 @@ public class VhBindArgs { public boolean g() { Msg var1 = this.b.c; boolean var2; - if (var1 instanceof MsgFromUser && ((MsgFromUser) var1).G0()) { - var2 = true; - } else { - var2 = false; - } + var2 = var1 instanceof MsgFromUser && ((MsgFromUser) var1).G0(); return var2; } @@ -329,33 +273,21 @@ public class VhBindArgs { public boolean h() { Msg var1 = this.b.c; boolean var2; - if (var1 instanceof MsgFromUser && ((MsgFromUser) var1).Z1()) { - var2 = true; - } else { - var2 = false; - } + var2 = var1 instanceof MsgFromUser && ((MsgFromUser) var1).Z1(); return var2; } public boolean i() { boolean var1; - if (this.j && !this.u() && !this.l()) { - var1 = true; - } else { - var1 = false; - } + var1 = this.j && !this.u() && !this.l(); return var1; } public boolean j() { boolean var1; - if (!this.j || this.u() || this.B() && this.A() && !this.a.c.H1()) { - var1 = false; - } else { - var1 = true; - } + var1 = this.j && !this.u() && (!this.B() || !this.A() || this.a.c.H1()); return var1; } @@ -363,11 +295,7 @@ public class VhBindArgs { public boolean k() { Dialog var1 = this.e; boolean var2; - if (var1 != null && var1.U1()) { - var2 = true; - } else { - var2 = false; - } + var2 = var1 != null && var1.U1(); return var2; } @@ -375,11 +303,7 @@ public class VhBindArgs { public boolean l() { Dialog var1 = this.e; boolean var2; - if (var1 != null && var1.V1()) { - var2 = true; - } else { - var2 = false; - } + var2 = var1 != null && var1.V1(); return var2; } @@ -387,11 +311,7 @@ public class VhBindArgs { public boolean m() { Dialog var1 = this.e; boolean var2; - if (var1 != null && var1.W1()) { - var2 = true; - } else { - var2 = false; - } + var2 = var1 != null && var1.W1(); return var2; } @@ -404,11 +324,7 @@ public class VhBindArgs { public boolean o() { AdapterEntry var1 = this.b; boolean var2; - if (var1 != null && var1.a == 101) { - var2 = true; - } else { - var2 = false; - } + var2 = var1 != null && var1.a == 101; return var2; } @@ -416,11 +332,7 @@ public class VhBindArgs { public boolean p() { Msg var1 = this.b.c; boolean var2; - if (var1 != null && var1.G1()) { - var2 = true; - } else { - var2 = false; - } + var2 = var1 != null && var1.G1(); return var2; } @@ -443,11 +355,7 @@ public class VhBindArgs { public boolean r() { Msg var1 = this.b.c; boolean var2; - if (var1 instanceof MsgFromUser && ((MsgFromUser) var1).e2()) { - var2 = true; - } else { - var2 = false; - } + var2 = var1 instanceof MsgFromUser && ((MsgFromUser) var1).e2(); return var2; } @@ -488,27 +396,19 @@ public class VhBindArgs { public boolean v() { IntSet var1 = this.r; boolean var2; - if (var1 != null && var1.a(this.b.c.getLocalId())) { - var2 = true; - } else { - var2 = false; - } + var2 = var1 != null && var1.a(this.b.c.getLocalId()); return var2; } public boolean w() { - return this.z() ^ true; + return !this.z(); } public boolean x() { AdapterEntry var1 = this.c; boolean var2; - if (var1 != null && var1.a == 100) { - var2 = true; - } else { - var2 = false; - } + var2 = var1 != null && var1.a == 100; return var2; } @@ -516,11 +416,7 @@ public class VhBindArgs { public boolean y() { AdapterEntry var1 = this.c; boolean var2; - if (var1 != null && var1.a == 96) { - var2 = true; - } else { - var2 = false; - } + var2 = var1 != null && var1.a == 96; return var2; } @@ -528,11 +424,7 @@ public class VhBindArgs { public boolean z() { AdapterEntry var1 = this.c; boolean var2; - if (var1 != null && var1.c() && this.c.c.getLocalId() == this.b.c.getLocalId()) { - var2 = true; - } else { - var2 = false; - } + var2 = var1 != null && var1.c() && this.c.c.getLocalId() == this.b.c.getLocalId(); return var2; } diff --git a/app/src/main/java/com/vk/im/ui/components/viewcontrollers/msg_list/adapter/msgparts/MsgPartCallHolder.java b/app/src/main/java/com/vk/im/ui/components/viewcontrollers/msg_list/adapter/msgparts/MsgPartCallHolder.java index 28e6faff4..1253c540f 100644 --- a/app/src/main/java/com/vk/im/ui/components/viewcontrollers/msg_list/adapter/msgparts/MsgPartCallHolder.java +++ b/app/src/main/java/com/vk/im/ui/components/viewcontrollers/msg_list/adapter/msgparts/MsgPartCallHolder.java @@ -46,7 +46,7 @@ public final class MsgPartCallHolder extends MsgPartHolderBase { this.G = new StringBuilder(); } - private final void a(Msg var1) { + private void a(Msg var1) { this.G.setLength(0); MsgTimeFormatter var2 = this.F; Context var3 = this.C; @@ -55,7 +55,7 @@ public final class MsgPartCallHolder extends MsgPartHolderBase { this.H.setTimeText(this.G); } - private final void a(boolean var1) { + private void a(boolean var1) { MsgPartIconTwoRowView var2 = this.H; int var3; if (var1) { @@ -67,7 +67,7 @@ public final class MsgPartCallHolder extends MsgPartHolderBase { var2.setIcon(var3); } - private final void a(boolean var1, AttachCall var2) { + private void a(boolean var1, AttachCall var2) { boolean var3 = !var1; if (var2.h() == CallState.ERROR) { this.H.setSubtitleText(m.vkim_msg_list_call_error); diff --git a/app/src/main/java/com/vk/im/ui/components/viewcontrollers/msg_list/adapter/vh/VhMsg.java b/app/src/main/java/com/vk/im/ui/components/viewcontrollers/msg_list/adapter/vh/VhMsg.java index 808a9d02d..e3627a332 100644 --- a/app/src/main/java/com/vk/im/ui/components/viewcontrollers/msg_list/adapter/vh/VhMsg.java +++ b/app/src/main/java/com/vk/im/ui/components/viewcontrollers/msg_list/adapter/vh/VhMsg.java @@ -56,46 +56,6 @@ public class VhMsg extends VhBase implements SwipeToReplyItemTouchCallback.b { private static final int[][] j0; private static final int[][] k0; private static final int[][] l0; - private final MsgPartHolderBase B; - private final MsgPartHolderBindArgs C = new MsgPartHolderBindArgs(); - private final Rect D = new Rect(); - private final Rect E = new Rect(); - private final Rect F = new Rect(); - private final Rect G = new Rect(); - private ColorDrawable H; - private final int I; - private final int J; - private final int K; - private final int L; - private final int M; - private Drawable N; - private Drawable O; - private BombView P; - private BombView.d Q; - private int R; - private int S; - private final DisplayNameFormatter T = new DisplayNameFormatter(); - private final StringBuilder U = new StringBuilder(); - private final StringBuilder V = new StringBuilder(); - private final String W; - private final String X; - private final String Y; - private boolean Z; - private BubbleColors a0; - private final FluidHorizontalLayout b; - @ColorInt - private int b0; - private final AvatarView c; - private MsgListAdapterCallback c0; - private final Space d; - private Msg d0; - private final MsgBubbleView e; - private Dialog e0; - private final MsgStatusView f; - private int f0; - private final ImageView g; - private h g0 = new h(); - private final Space h; static { int[] var0 = new int[]{0, 0, 0, 0}; @@ -119,18 +79,59 @@ public class VhMsg extends VhBase implements SwipeToReplyItemTouchCallback.b { l0 = new int[][]{var0, {4, 4, 0, 0, 0, 2, 8, 0}, var1, var2, {4, 0, 0, 0, 0, 2, 8, 0}, {0, 0, 0, 0, 0, 2, 8, 0}, {4, 4, 0, 0, 0, 2, 8, 0}, {0, 0, 0, 0, 0, 0, 0, 0}}; } + private final MsgPartHolderBase B; + private final MsgPartHolderBindArgs C = new MsgPartHolderBindArgs(); + private final Rect D = new Rect(); + private final Rect E = new Rect(); + private final Rect F = new Rect(); + private final Rect G = new Rect(); + private final int I; + private final int J; + private final int K; + private final int L; + private final int M; + private final DisplayNameFormatter T = new DisplayNameFormatter(); + private final StringBuilder U = new StringBuilder(); + private final StringBuilder V = new StringBuilder(); + private final String W; + private final String X; + private final String Y; + private final FluidHorizontalLayout b; + private final AvatarView c; + private final Space d; + private final MsgBubbleView e; + private final MsgStatusView f; + private final ImageView g; + private final Space h; + private final ColorDrawable H; + private Drawable N; + private Drawable O; + private final BombView P; + private final BombView.d Q; + private final int R; + private final int S; + private boolean Z; + private BubbleColors a0; + @ColorInt + private int b0; + private MsgListAdapterCallback c0; + private Msg d0; + private Dialog e0; + private int f0; + private final h g0 = new h(); + public VhMsg(View itemView, MsgPartHolderBase vhBase) { super(itemView); Context context = itemView.getContext(); LayoutInflater var4 = LayoutInflater.from(context); this.b = (FluidHorizontalLayout) itemView; - this.c = (AvatarView) itemView.findViewById(com.vk.im.ui.h.avatar); - this.d = (Space) itemView.findViewById(com.vk.im.ui.h.avatar_space); - this.e = (MsgBubbleView) itemView.findViewById(com.vk.im.ui.h.bubble); - this.f = (MsgStatusView) itemView.findViewById(com.vk.im.ui.h.status); - this.g = (ImageView) itemView.findViewById(com.vk.im.ui.h.vkim_channel_share); - this.h = (Space) itemView.findViewById(com.vk.im.ui.h.status_space); - this.P = (BombView) itemView.findViewById(com.vk.im.ui.h.bomb); + this.c = itemView.findViewById(com.vk.im.ui.h.avatar); + this.d = itemView.findViewById(com.vk.im.ui.h.avatar_space); + this.e = itemView.findViewById(com.vk.im.ui.h.bubble); + this.f = itemView.findViewById(com.vk.im.ui.h.status); + this.g = itemView.findViewById(com.vk.im.ui.h.vkim_channel_share); + this.h = itemView.findViewById(com.vk.im.ui.h.status_space); + this.P = itemView.findViewById(com.vk.im.ui.h.bomb); this.B = vhBase; this.H = new ColorDrawable(context.getResources().getColor(com.vk.im.ui.d.msg_search_selection)); this.I = ContextExtKt.b(context, com.vk.im.ui.e.msg_bubble_max_width); @@ -203,6 +204,10 @@ public class VhMsg extends VhBase implements SwipeToReplyItemTouchCallback.b { }; } + public static VhMsg a(LayoutInflater var0, ViewGroup var1, MsgPartHolderBase var2) { + return new VhMsg(var0.inflate(j.vkim_msg_list_item_msg_from_user, var1, false), var2); + } + private int a(Style var1, Style var2, boolean var3) { int var4; if (var3) { @@ -283,20 +288,15 @@ public class VhMsg extends VhBase implements SwipeToReplyItemTouchCallback.b { case 103: return VhMsg.Style.EMPTY; default: - StringBuilder var3 = new StringBuilder(); - var3.append("Unknown viewType: "); - var3.append(var1); - throw new IllegalArgumentException(var3.toString()); + String var3 = "Unknown viewType: " + + var1; + throw new IllegalArgumentException(var3); } } return VhMsg.Style.TWO_LINE; } - public static VhMsg a(LayoutInflater var0, ViewGroup var1, MsgPartHolderBase var2) { - return new VhMsg(var0.inflate(j.vkim_msg_list_item_msg_from_user, var1, false), var2); - } - private void a(VhBindArgs args, Rect rect) { Style var3 = this.a(args.b); boolean var4 = args.b.f(); @@ -411,11 +411,7 @@ public class VhMsg extends VhBase implements SwipeToReplyItemTouchCallback.b { Msg var10 = var5.c; var9 = var6; if (var10 != null) { - if (var10.v1() == args.g.t1()) { - var9 = true; - } else { - var9 = false; - } + var9 = var10.v1() == args.g.t1(); if (var10.O1()) { int var12 = var10.d().ordinal(); @@ -433,11 +429,7 @@ public class VhMsg extends VhBase implements SwipeToReplyItemTouchCallback.b { b = args.I(); } } else { - if (var10.C1() <= args.i) { - var6 = true; - } else { - var6 = false; - } + var6 = var10.C1() <= args.i; if (!var6 && !var9) { var11 = MsgStatus.UNREAD; @@ -575,18 +567,14 @@ public class VhMsg extends VhBase implements SwipeToReplyItemTouchCallback.b { partArgs.o = args.n; partArgs.s = args.v(); partArgs.t = args.q; - partArgs.u = var4.b() ^ true; + partArgs.u = !var4.b(); boolean var5; - if (var3.i > 0) { - var5 = true; - } else { - var5 = false; - } + var5 = var3.i > 0; partArgs.v = var5; partArgs.w = args.k; partArgs.x = args.l; - partArgs.y = this.Z ^ true; + partArgs.y = !this.Z; partArgs.z = args.s; partArgs.A = args.t; partArgs.l = this.b0; @@ -671,7 +659,7 @@ public class VhMsg extends VhBase implements SwipeToReplyItemTouchCallback.b { private void f(VhBindArgs args) { Msg var2 = args.b.c; if (var2 != null) { - this.P.setStateListener((BombView.d) null); + this.P.setStateListener(null); if (var2.M1() && !var2.E1()) { this.P.setVisibility(View.GONE); } else { @@ -810,24 +798,12 @@ public class VhMsg extends VhBase implements SwipeToReplyItemTouchCallback.b { this.e.setFwdPadding(this.D); this.e.setContentPadding(this.E); boolean var7; - if (args.b.a == 83) { - var7 = true; - } else { - var7 = false; - } + var7 = args.b.a == 83; boolean var5; - if (args.a.a == 83) { - var5 = true; - } else { - var5 = false; - } + var5 = args.a.a == 83; - if (!args.F() || !var7 && !var5) { - var5 = true; - } else { - var5 = false; - } + var5 = !args.F() || !var7 && !var5; MsgBubbleView var8 = this.e; boolean var6 = var4; @@ -904,18 +880,10 @@ public class VhMsg extends VhBase implements SwipeToReplyItemTouchCallback.b { return false; } else { boolean var5; - if (var2.a == 50) { - var5 = true; - } else { - var5 = false; - } + var5 = var2.a == 50; boolean var6; - if (!args.z() && var2.i == 0) { - var6 = true; - } else { - var6 = false; - } + var6 = !args.z() && var2.i == 0; if (var5 || var6 || args.y() || args.x()) { var4 = true; @@ -934,11 +902,7 @@ public class VhMsg extends VhBase implements SwipeToReplyItemTouchCallback.b { private boolean u(int var1) { boolean var2; - if (var1 != 2 && var1 != 3) { - var2 = false; - } else { - var2 = true; - } + var2 = var1 == 2 || var1 == 3; return var2; } @@ -960,9 +924,7 @@ public class VhMsg extends VhBase implements SwipeToReplyItemTouchCallback.b { Msg var1 = this.d0; if (var1 != null) { Dialog var2 = this.e0; - if (var2 != null && MsgPermissionHelper.b.a(var2, var1)) { - return true; - } + return var2 != null && MsgPermissionHelper.b.a(var2, var1); } } return false; @@ -997,11 +959,7 @@ public class VhMsg extends VhBase implements SwipeToReplyItemTouchCallback.b { public void a(VhBindArgs args) { boolean var2; - if (VKThemeHelper.l() == VKTheme.VKAPP_LIGHT) { - var2 = true; - } else { - var2 = false; - } + var2 = VKThemeHelper.l() == VKTheme.VKAPP_LIGHT; this.Z = var2; AdapterEntry var3 = args.b; @@ -1062,11 +1020,7 @@ public class VhMsg extends VhBase implements SwipeToReplyItemTouchCallback.b { public boolean f0() { boolean var1; - if (this.f0 == 100) { - var1 = true; - } else { - var1 = false; - } + var1 = this.f0 == 100; return var1; } @@ -1083,7 +1037,7 @@ public class VhMsg extends VhBase implements SwipeToReplyItemTouchCallback.b { this.B.c(var1); } - private static enum Style { + private enum Style { BUTTON(6), EMPTY(7), FWD_SENDER(4), @@ -1095,14 +1049,14 @@ public class VhMsg extends VhBase implements SwipeToReplyItemTouchCallback.b { public final int index; - private Style(int var3) { + Style(int var3) { this.index = var3; } } private class h implements Functions { - private int a; - private Runnable b; + private final int a; + private final Runnable b; private h() { this.a = Screen.a(12); diff --git a/app/src/main/java/com/vk/im/ui/q/h/e/MentionsController.java b/app/src/main/java/com/vk/im/ui/q/h/e/MentionsController.java index 007fadc4c..7a085ca84 100644 --- a/app/src/main/java/com/vk/im/ui/q/h/e/MentionsController.java +++ b/app/src/main/java/com/vk/im/ui/q/h/e/MentionsController.java @@ -26,30 +26,23 @@ import com.vtosters.lite.R; public final class MentionsController { private final RichEditText a; - + private final ImEngine mImEngine; + private final View j; + private final b k; private boolean state; private CoordinatorLayout mCoordinatorLayout; private VkBottomSheetBehavior mBottomSheetBehavior; private boolean e; - private DialogMentionComponent mDialogMentionComponent; - private MentionsManager mMentionsManager; - private final ImEngine mImEngine; - private int i; - private final View j; - private final b k; - - public interface b { - boolean c(); - - boolean d(); - } + private final DialogMentionComponent mDialogMentionComponent; + private final MentionsManager mMentionsManager; + private final int i; public MentionsController(ImEngine imEngine, int i, View view, b bVar) { this.mImEngine = imEngine; this.i = i; this.j = view; this.k = bVar; - this.a = (RichEditText) this.j.findViewById(R.id.writebar_edit); + this.a = this.j.findViewById(R.id.writebar_edit); this.mMentionsManager = new MentionsManager(this.a, new MentionSuggestionsSupplier() { @Override @@ -71,7 +64,7 @@ public final class MentionsController { @Override public void b() { - MentionsController.this.mDialogMentionComponent.a(0, (String) null); + MentionsController.this.mDialogMentionComponent.a(0, null); MentionsController.this.g(); } }); @@ -92,18 +85,18 @@ public final class MentionsController { }); } - public final void g() { + public void g() { this.e = false; j(); } - private final void h() { + private void h() { if (this.state) { return; } View inflate = ((ViewStub) this.j.findViewById(R.id.mentions_container_stub)).inflate(); - ViewGroup viewGroup = (ViewGroup) inflate.findViewById(R.id.mentions_container); - viewGroup.addView(this.mDialogMentionComponent.a(viewGroup, (Bundle) null)); + ViewGroup viewGroup = inflate.findViewById(R.id.mentions_container); + viewGroup.addView(this.mDialogMentionComponent.a(viewGroup, null)); this.mCoordinatorLayout = inflate.findViewById(R.id.mentions_cl); this.mBottomSheetBehavior = (VkBottomSheetBehavior) ((CoordinatorLayout.LayoutParams) viewGroup.getLayoutParams()).getBehavior(); this.mBottomSheetBehavior.a(new VkBottomSheetBehavior.b() { @@ -120,12 +113,12 @@ public final class MentionsController { this.state = true; } - public final void i() { + public void i() { this.e = true; j(); } - public final void j() { + public void j() { if (this.k.d()) { Context context = this.j.getContext(); Activity f = ContextExtKt.f(context); @@ -139,27 +132,33 @@ public final class MentionsController { } } - public final void a() { + public void a() { this.mDialogMentionComponent.g(); } - public final void b() { + public void b() { this.mDialogMentionComponent.h(); } - public final b c() { + public b c() { return this.k; } - public final int d() { + public int d() { return this.i; } - public final void e() { + public void e() { this.mDialogMentionComponent.q(); } - public final void f() { + public void f() { this.mDialogMentionComponent.r(); } + + public interface b { + boolean c(); + + boolean d(); + } } \ No newline at end of file diff --git a/app/src/main/java/com/vk/im/ui/views/avatars/StoryBorderView.java b/app/src/main/java/com/vk/im/ui/views/avatars/StoryBorderView.java index 27ceffa88..8fb4e48ab 100644 --- a/app/src/main/java/com/vk/im/ui/views/avatars/StoryBorderView.java +++ b/app/src/main/java/com/vk/im/ui/views/avatars/StoryBorderView.java @@ -12,15 +12,15 @@ import android.view.ViewGroup; import com.vk.im.ui.o; public class StoryBorderView extends View { - private boolean B; private final Paint a; + private final int g; + private final int h; + private boolean B; private LinearGradient f15747b; private int f15748c; private int f15749d; private int f15750e; private int f15751f; - private final int g; - private final int h; public StoryBorderView(Context context) { this(context, null, 0, 6); @@ -34,10 +34,32 @@ public class StoryBorderView extends View { this(context, (i2 & 2) != 0 ? null : attributeSet, (i2 & 4) != 0 ? 0 : i); } + public StoryBorderView(Context context, AttributeSet attributeSet, int i) { + super(context, attributeSet, i); + Paint paint = new Paint(); + paint.setAntiAlias(true); + paint.setStyle(Paint.Style.STROKE); + this.a = paint; + TypedArray obtainStyledAttributes = context.obtainStyledAttributes(attributeSet, o.StoryBorderView); + setBorderColor(obtainStyledAttributes.getInt(o.StoryBorderView_vkim_borderColor, 0)); + this.g = obtainStyledAttributes.getInt(o.StoryBorderView_vkim_borderGradientStartColor, 0); + this.h = obtainStyledAttributes.getInt(o.StoryBorderView_vkim_borderGradientEndColor, 0); + setBorderWidth(obtainStyledAttributes.getDimensionPixelSize(o.StoryBorderView_vkim_borderWidth, 0)); + obtainStyledAttributes.recycle(); + } + public int getBorderColor() { return this.f15749d; } + public void setBorderColor(int i) { + if (this.f15749d != i) { + this.f15749d = i; + this.a.setColor(i); + invalidate(); + } + } + public int getBorderGradientEndColor() { return this.h; } @@ -50,14 +72,33 @@ public class StoryBorderView extends View { return this.f15750e; } + public void setBorderWidth(int i) { + if (this.f15750e != i) { + this.f15750e = i; + this.a.setStrokeWidth(i); + invalidate(); + } + } + public int getPadding() { return this.f15751f; } + public void setPadding(int i) { + if (this.f15751f != i) { + this.f15751f = i; + setPadding(i, i, i, i); + } + } + public int getViewSize() { return this.f15748c; } + public void setViewSize(int i) { + this.f15748c = i; + } + @Override protected void onDraw(Canvas canvas) { canvas.drawOval(getPaddingLeft(), getPaddingTop(), getWidth() - getPaddingRight(), getHeight() - getPaddingBottom(), this.a); @@ -69,22 +110,6 @@ public class StoryBorderView extends View { setMeasuredDimension(i3, i3); } - public void setBorderColor(int i) { - if (this.f15749d != i) { - this.f15749d = i; - this.a.setColor(i); - invalidate(); - } - } - - public void setBorderWidth(int i) { - if (this.f15750e != i) { - this.f15750e = i; - this.a.setStrokeWidth(i); - invalidate(); - } - } - @Override public void setLayoutParams(ViewGroup.LayoutParams layoutParams) { super.setLayoutParams(layoutParams); @@ -108,29 +133,4 @@ public class StoryBorderView extends View { invalidate(); } } - - public void setPadding(int i) { - if (this.f15751f != i) { - this.f15751f = i; - setPadding(i, i, i, i); - } - } - - public void setViewSize(int i) { - this.f15748c = i; - } - - public StoryBorderView(Context context, AttributeSet attributeSet, int i) { - super(context, attributeSet, i); - Paint paint = new Paint(); - paint.setAntiAlias(true); - paint.setStyle(Paint.Style.STROKE); - this.a = paint; - TypedArray obtainStyledAttributes = context.obtainStyledAttributes(attributeSet, o.StoryBorderView); - setBorderColor(obtainStyledAttributes.getInt(o.StoryBorderView_vkim_borderColor, 0)); - this.g = obtainStyledAttributes.getInt(o.StoryBorderView_vkim_borderGradientStartColor, 0); - this.h = obtainStyledAttributes.getInt(o.StoryBorderView_vkim_borderGradientEndColor, 0); - setBorderWidth(obtainStyledAttributes.getDimensionPixelSize(o.StoryBorderView_vkim_borderWidth, 0)); - obtainStyledAttributes.recycle(); - } } \ No newline at end of file diff --git a/app/src/main/java/com/vk/music/view/x/LyricsHolder.java b/app/src/main/java/com/vk/music/view/x/LyricsHolder.java index 3d72f3a4d..7ae66f0c5 100644 --- a/app/src/main/java/com/vk/music/view/x/LyricsHolder.java +++ b/app/src/main/java/com/vk/music/view/x/LyricsHolder.java @@ -23,8 +23,8 @@ import com.vtosters.lite.R; import com.vtosters.lite.ViewUtils; import com.vtosters.lite.ui.MusicErrorViewHelper; import com.vtosters.lite.ui.holder.RecyclerHolder; -import ru.vtosters.lite.music.Genius; import ru.vtosters.hooks.other.Preferences; +import ru.vtosters.lite.music.Genius; import java.util.Objects; import java.util.concurrent.atomic.AtomicBoolean; diff --git a/app/src/main/java/com/vk/profile/ui/community/CommunityBorderedImageView.java b/app/src/main/java/com/vk/profile/ui/community/CommunityBorderedImageView.java index bfcd7f239..fa8d30cc5 100644 --- a/app/src/main/java/com/vk/profile/ui/community/CommunityBorderedImageView.java +++ b/app/src/main/java/com/vk/profile/ui/community/CommunityBorderedImageView.java @@ -36,37 +36,37 @@ public final class CommunityBorderedImageView extends BorderedCircleImageView im public CommunityBorderedImageView(Context context, AttributeSet attributeSet, int i) { super(context, attributeSet, i); - this.g0 = VKThemeHelper.d((int) R.attr.accent); - this.h0 = ContextExtKt.a(context, (int) R.color.gray_200); + this.g0 = VKThemeHelper.d(R.attr.accent); + this.h0 = ContextExtKt.a(context, R.color.gray_200); this.i0 = new PorterDuffColorFilter(this.g0, PorterDuff.Mode.SRC_IN); this.j0 = new PorterDuffColorFilter(this.h0, PorterDuff.Mode.SRC_IN); } - public final void c(int unread, int read) { // get unread and read resid + public void c(int unread, int read) { // get unread and read resid this.unread = unread; this.read = read; this.T = BitmapFactory.decodeResource(getResources(), this.unread); } - public final int getPrimaryColor() { + public int getPrimaryColor() { return this.g0; } - public final void setPrimaryColor(int i) { + public void setPrimaryColor(int i) { this.g0 = i; this.i0 = new PorterDuffColorFilter(i, PorterDuff.Mode.SRC_IN); } - public final int getWasViewedColor() { + public int getWasViewedColor() { return this.h0; } - public final void setWasViewedColor(int i) { + public void setWasViewedColor(int i) { this.h0 = i; this.j0 = new PorterDuffColorFilter(i, PorterDuff.Mode.SRC_IN); } - public final void o() { + public void o() { this.f0 = false; l(); } @@ -79,7 +79,7 @@ public final class CommunityBorderedImageView extends BorderedCircleImageView im } } - public final void setStoryContainer(StoriesContainer storiesContainer) { + public void setStoryContainer(StoriesContainer storiesContainer) { if (storiesContainer.L1()) { this.f0 = true; m(); diff --git a/app/src/main/java/com/vk/sharing/view/TargetImageView.java b/app/src/main/java/com/vk/sharing/view/TargetImageView.java index a4f0fa842..821bfef82 100644 --- a/app/src/main/java/com/vk/sharing/view/TargetImageView.java +++ b/app/src/main/java/com/vk/sharing/view/TargetImageView.java @@ -30,14 +30,14 @@ public class TargetImageView extends VKMultiImageView { private static final int I = Screen.a(2); private final int B; private final int C; + private final RectF f21629d; + private final Paint f21630e; + private final RectF g; + private final Paint h; private Drawable D; private String[] F; private int G; - private final RectF f21629d; - private final Paint f21630e; private Canvas f21631f; - private final RectF g; - private final Paint h; public TargetImageView(Context context, Drawable d) { this(context, null, 0, 6); @@ -51,6 +51,43 @@ public class TargetImageView extends VKMultiImageView { this(context, (i2 & 2) != 0 ? null : attributeSet, (i2 & 4) != 0 ? 0 : i); } + public TargetImageView(Context context, AttributeSet attributeSet, int i) { + super(context, attributeSet, i); + this.f21629d = new RectF(); + Paint paint = new Paint(); + paint.setAntiAlias(true); + paint.setDither(true); + paint.setFilterBitmap(true); + this.f21630e = paint; + this.g = new RectF(); + Paint paint2 = new Paint(); + paint2.setAntiAlias(true); + paint2.setStrokeWidth(I); + paint2.setStyle(Paint.Style.STROKE); + this.h = paint2; + this.B = getAccentColor(); + this.C = this.B; + Drawable c2 = ContextExtKt.c(context, R.drawable.ic_check_circle_composite_24_full); + if (c2 != null) { + this.D = c2; + this.F = new String[4]; + int i2 = I * 2; + setPadding(i2, i2, i2, i2); + if (attributeSet != null) { + TypedArray obtainStyledAttributes = context.obtainStyledAttributes(attributeSet, a0.TargetImageView); + setSelected(obtainStyledAttributes.getBoolean(0, false)); + obtainStyledAttributes.recycle(); + } + Drawable drawable = ContextCompat.getDrawable(context, R.drawable.user_placeholder); + for (int i3 = 0; i3 <= 3; i3++) { + a(); + DraweeHolder a3 = this.a.a(i3); + a3.b().e(drawable); + } + setScaleType(ScalingUtils.b.o); + } + } + private void e() { int i = this.G; for (int i2 = 0; i2 < i; i2++) { @@ -251,41 +288,4 @@ public class TargetImageView extends VKMultiImageView { drawable.setBounds(i - drawable.getIntrinsicWidth(), i2 - this.D.getIntrinsicHeight(), i, i2); f(); } - - public TargetImageView(Context context, AttributeSet attributeSet, int i) { - super(context, attributeSet, i); - this.f21629d = new RectF(); - Paint paint = new Paint(); - paint.setAntiAlias(true); - paint.setDither(true); - paint.setFilterBitmap(true); - this.f21630e = paint; - this.g = new RectF(); - Paint paint2 = new Paint(); - paint2.setAntiAlias(true); - paint2.setStrokeWidth(I); - paint2.setStyle(Paint.Style.STROKE); - this.h = paint2; - this.B = getAccentColor(); - this.C = this.B; - Drawable c2 = ContextExtKt.c(context, R.drawable.ic_check_circle_composite_24_full); - if (c2 != null) { - this.D = c2; - this.F = new String[4]; - int i2 = I * 2; - setPadding(i2, i2, i2, i2); - if (attributeSet != null) { - TypedArray obtainStyledAttributes = context.obtainStyledAttributes(attributeSet, a0.TargetImageView); - setSelected(obtainStyledAttributes.getBoolean(0, false)); - obtainStyledAttributes.recycle(); - } - Drawable drawable = ContextCompat.getDrawable(context, R.drawable.user_placeholder); - for (int i3 = 0; i3 <= 3; i3++) { - a(); - DraweeHolder a3 = this.a.a(i3); - a3.b().e(drawable); - } - setScaleType(ScalingUtils.b.o); - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/vk/stickers/details/StickerDetailsAdapter.java b/app/src/main/java/com/vk/stickers/details/StickerDetailsAdapter.java index 3aacdbe50..59a35f315 100644 --- a/app/src/main/java/com/vk/stickers/details/StickerDetailsAdapter.java +++ b/app/src/main/java/com/vk/stickers/details/StickerDetailsAdapter.java @@ -104,6 +104,25 @@ public final class StickerDetailsAdapter extends RecyclerView.Adapter>>) () -> StoryCircleImageView.this.a(list)); + pipelineDraweeControllerBuilder.a(() -> StoryCircleImageView.this.a(list)); return; } pipelineDraweeControllerBuilder.b(null); 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 3582163d4..c9a572e17 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 @@ -35,16 +35,16 @@ public class BottomNavigationItemView extends FrameLayout implements MenuView.It private final View mCounterContainer; private final TextView mCounter; private final View mDot; + private final int mMargin; + private final float mSmallScale; + private final ImageView mIcon; + private final ImageView mActionIcon; private int mItemPos; private MenuItemImpl mItemData; private ColorStateList mColorStateList; - private final int mMargin; - private final float mSmallScale; private boolean mShiftingModeEnabled; private boolean mIconsModeEnabled; private boolean mStaticModeEnabled; - private final ImageView mIcon; - private final ImageView mActionIcon; public BottomNavigationItemView(@NonNull Context context) { this(context, null); @@ -101,6 +101,10 @@ public class BottomNavigationItemView extends FrameLayout implements MenuView.It return this.mItemPos; } + public void setItemPosition(int pos) { + this.mItemPos = pos; + } + @SuppressLint("RestrictedApi") public void initialize(MenuItemImpl impl, int i) { this.mItemData = impl; @@ -310,10 +314,6 @@ public class BottomNavigationItemView extends FrameLayout implements MenuView.It ViewCompat.setBackground(this, resId != 0 ? ContextCompat.getDrawable(this.getContext(), resId) : null); } - public void setItemPosition(int pos) { - this.mItemPos = pos; - } - public void setShiftingMode(boolean var1) { this.mShiftingModeEnabled = var1; } diff --git a/app/src/main/java/ru/vtosters/hooks/GcmHook.java b/app/src/main/java/ru/vtosters/hooks/GcmHook.java index 2f70a4dc5..28c15efc4 100644 --- a/app/src/main/java/ru/vtosters/hooks/GcmHook.java +++ b/app/src/main/java/ru/vtosters/hooks/GcmHook.java @@ -22,7 +22,7 @@ public class GcmHook { private static final String agent = String.format("Android-GCM/1.5 (%s %s)", Build.MODEL, Build.MODEL); private static KeyPair pair; private static int rid = 0; - + static { genNewKey(); } diff --git a/app/src/main/java/ru/vtosters/hooks/NewsfeedHook.java b/app/src/main/java/ru/vtosters/hooks/NewsfeedHook.java index dae6244ed..9f082c81a 100644 --- a/app/src/main/java/ru/vtosters/hooks/NewsfeedHook.java +++ b/app/src/main/java/ru/vtosters/hooks/NewsfeedHook.java @@ -6,7 +6,9 @@ import androidx.recyclerview.widget.RecyclerView; import com.vk.core.preference.Preference; import com.vk.discover.DiscoverItemDecorator; -import java.util.*; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; import static java.lang.Long.MAX_VALUE; import static ru.vtosters.hooks.other.Preferences.*; diff --git a/app/src/main/java/ru/vtosters/hooks/RenameHook.java b/app/src/main/java/ru/vtosters/hooks/RenameHook.java index 3cc51575c..0d5133fd6 100644 --- a/app/src/main/java/ru/vtosters/hooks/RenameHook.java +++ b/app/src/main/java/ru/vtosters/hooks/RenameHook.java @@ -1,9 +1,7 @@ package ru.vtosters.hooks; -import androidx.core.util.Pair; import org.json.JSONException; import org.json.JSONObject; -import ru.vtosters.lite.utils.RenameTool; public class RenameHook { public static void injectIntoJson(JSONObject obj) throws JSONException { diff --git a/app/src/main/java/ru/vtosters/hooks/other/ThemesUtils.java b/app/src/main/java/ru/vtosters/hooks/other/ThemesUtils.java index 220b19fdf..0c57384c0 100644 --- a/app/src/main/java/ru/vtosters/hooks/other/ThemesUtils.java +++ b/app/src/main/java/ru/vtosters/hooks/other/ThemesUtils.java @@ -16,12 +16,10 @@ import android.webkit.WebView; import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; -import androidx.appcompat.app.AppCompatDelegate; import androidx.core.content.ContextCompat; import androidx.core.graphics.ColorUtils; import com.vk.articles.preload.WebCachePreloader; import com.vk.core.drawable.RecoloredDrawable; -import com.vk.core.preference.Preference; import com.vk.core.ui.themes.MilkshakeHelper; import com.vk.core.ui.themes.VKTheme; import com.vk.core.ui.themes.VKThemeHelper; diff --git a/app/src/main/java/ru/vtosters/hooks/ssfs/BannerHook.java b/app/src/main/java/ru/vtosters/hooks/ssfs/BannerHook.java index 0487d1a1b..78ffe82d1 100644 --- a/app/src/main/java/ru/vtosters/hooks/ssfs/BannerHook.java +++ b/app/src/main/java/ru/vtosters/hooks/ssfs/BannerHook.java @@ -1,7 +1,6 @@ package ru.vtosters.hooks.ssfs; import com.vk.core.dialogs.alert.VkAlertDialog; -import org.json.JSONException; import org.json.JSONObject; import ru.vtosters.hooks.other.Preferences; import ru.vtosters.lite.ssfs.ImBanner; 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 62b68c8a8..2bc3609f8 100644 --- a/app/src/main/java/ru/vtosters/lite/music/TransportStream.java +++ b/app/src/main/java/ru/vtosters/lite/music/TransportStream.java @@ -4,8 +4,8 @@ import android.text.TextUtils; public class TransportStream { - private String mKeyUri; private final String mMediaSegmentUri; + private String mKeyUri; private String mMediaSegmentName; public TransportStream(String baseURI, String mediaSegmentName) { 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 835a3e728..a95b583a1 100644 --- a/app/src/main/java/ru/vtosters/lite/music/VKM3UParser.java +++ b/app/src/main/java/ru/vtosters/lite/music/VKM3UParser.java @@ -15,10 +15,9 @@ public class VKM3UParser { //Playlist types static public int PLAYLIST_TYPE_VOD = 0; static public int PLAYLIST_TYPE_EVENT = 1; - + private final String mData; //region Extended M3U global extensions public List mTransportStreams = new ArrayList<>(); - private final String mData; /** * @see EXT-X-VERSION **/ diff --git a/app/src/main/java/ru/vtosters/lite/music/catalog/inject/CatalogJsonInjector.java b/app/src/main/java/ru/vtosters/lite/music/catalog/inject/CatalogJsonInjector.java index bf572e7fc..328542dce 100644 --- a/app/src/main/java/ru/vtosters/lite/music/catalog/inject/CatalogJsonInjector.java +++ b/app/src/main/java/ru/vtosters/lite/music/catalog/inject/CatalogJsonInjector.java @@ -19,8 +19,8 @@ import ru.vtosters.lite.utils.AndroidUtils; import java.io.IOException; import static ru.vtosters.hooks.DateHook.getLocale; -import static ru.vtosters.hooks.other.Preferences.getBoolValue; import static ru.vtosters.hooks.GroupsCatalogInjector.injectIntoCatalog; +import static ru.vtosters.hooks.other.Preferences.getBoolValue; import static ru.vtosters.lite.music.cache.helpers.PlaylistHelper.*; import static ru.vtosters.lite.proxy.ProxyUtils.getApi; import static ru.vtosters.lite.utils.AccountManagerUtils.getUserId; diff --git a/app/src/main/java/ru/vtosters/lite/themes/utils/ArscEditor.java b/app/src/main/java/ru/vtosters/lite/themes/utils/ArscEditor.java index fc96719e5..2b3b65236 100644 --- a/app/src/main/java/ru/vtosters/lite/themes/utils/ArscEditor.java +++ b/app/src/main/java/ru/vtosters/lite/themes/utils/ArscEditor.java @@ -1,29 +1,25 @@ package ru.vtosters.lite.themes.utils; -import com.google.devrel.gmscore.tools.apk.arsc.*; +import com.google.devrel.gmscore.tools.apk.arsc.BinaryResourceFile; +import com.google.devrel.gmscore.tools.apk.arsc.BinaryResourceValue; +import com.google.devrel.gmscore.tools.apk.arsc.ResourceTableChunk; public class ArscEditor { - public static void changeColors(BinaryResourceFile arsc,int[] colorIds,int color) { - for(var chunk:arsc.getChunks()) - { - final var resTableChunk=(ResourceTableChunk)chunk; - for(var packageChunk:resTableChunk.getPackages()) - { - for(var typeChunk:packageChunk.getTypeChunks("color")) - { - for(var entry:typeChunk.getEntries().entrySet()) - { - final var value=entry.getValue(); - if(value.isComplex())continue; - final var binValue=value.value(); - if(!isColorResourceValue(binValue))continue; - final var resId=packageChunk.getId()<<24|typeChunk.getId()<<16|entry.getKey(); - for(var colodId:colorIds) - { - if(resId==colodId) - { - binValue.data=color; + public static void changeColors(BinaryResourceFile arsc, int[] colorIds, int color) { + for (var chunk : arsc.getChunks()) { + final var resTableChunk = (ResourceTableChunk) chunk; + for (var packageChunk : resTableChunk.getPackages()) { + for (var typeChunk : packageChunk.getTypeChunks("color")) { + for (var entry : typeChunk.getEntries().entrySet()) { + final var value = entry.getValue(); + if (value.isComplex()) continue; + final var binValue = value.value(); + if (!isColorResourceValue(binValue)) continue; + final var resId = packageChunk.getId() << 24 | typeChunk.getId() << 16 | entry.getKey(); + for (var colodId : colorIds) { + if (resId == colodId) { + binValue.data = color; break; } } @@ -33,11 +29,10 @@ public class ArscEditor { } } - private static boolean isColorResourceValue(BinaryResourceValue value) - { - return value.type==BinaryResourceValue.Type.INT_COLOR_ARGB8 - ||value.type==BinaryResourceValue.Type.INT_COLOR_RGB8 - ||value.type==BinaryResourceValue.Type.INT_COLOR_ARGB4 - ||value.type==BinaryResourceValue.Type.INT_COLOR_RGB4; + private static boolean isColorResourceValue(BinaryResourceValue value) { + return value.type == BinaryResourceValue.Type.INT_COLOR_ARGB8 + || value.type == BinaryResourceValue.Type.INT_COLOR_RGB8 + || value.type == BinaryResourceValue.Type.INT_COLOR_ARGB4 + || value.type == BinaryResourceValue.Type.INT_COLOR_RGB4; } } 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 933552b61..f34830bc3 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 @@ -36,7 +36,7 @@ public class CategorizedAdapter extends RecyclerView.Adapter mSelectedItems; private final List mDisabledItems; private final List mUnmovedItems; - final private List< T > mExceptions=new ArrayList<>(); + final private List mExceptions = new ArrayList<>(); private final IViewHolderBinder mBinder; // Min and max counts @@ -50,8 +50,7 @@ public class CategorizedAdapter extends RecyclerView.Adapter extends RecyclerView.Adapter { - if((getTabType(toPosition) == DISABLED_STATE + if ((getTabType(toPosition) == DISABLED_STATE && mSelectedItems.size() == mMinSelectedItems)) return false; - if (getItemViewType(toPosition) == CATEGORY_TITLE) - { - if(mExceptions.size()>0) - { - int q=0; - for(var ex:mExceptions) - if(mSelectedItems.contains(ex))++q; - if(q==1)return false; + if (getItemViewType(toPosition) == CATEGORY_TITLE) { + if (mExceptions.size() > 0) { + int q = 0; + for (var ex : mExceptions) + if (mSelectedItems.contains(ex)) ++q; + if (q == 1) return false; } - mDisabledItems.add(0,mSelectedItems.remove(fromPosition-1)); - } - else Collections.swap(mSelectedItems, fromPosition - 1, toPosition - 1); + mDisabledItems.add(0, mSelectedItems.remove(fromPosition - 1)); + } else Collections.swap(mSelectedItems, fromPosition - 1, toPosition - 1); } case DISABLED_STATE -> { if (getTabType(toPosition) == SELECTED_STATE 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 0bfb7972b..708a00e0b 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 @@ -59,70 +59,6 @@ public class DockBarEditorManager { : sInstance; } - private void init() { - if (vkme()) { - mSelectedTabs.add(getTabByTag("tab_settings")); - if (vkme_notifs()) { - if (milkshake()) { - mSelectedTabs.add(getTabByTag("tab_feedback")); - } else { - mSelectedTabs.add(getTabByTag("tab_friends")); - } - } - mSelectedTabs.add(getTabByTag("tab_messages")); - mSelectedTabs.add(getTabByTag("tab_profile")); - return; - } - - checkOldConfig(); - - var selectedTabsTags = getPreferences() - .getString("dockbar_tabs", - "tab_news,tab_superapps,tab_messages,tab_friends,tab_profile") - .split(","); - parseSelectedTabs(selectedTabsTags); - } - - private void checkOldConfig() { - File config = new File(getGlobalContext().getFilesDir(), "dockbar.json"); - if (config.exists()) config.deleteOnExit(); - } - - private void parseSelectedTabs(String[] selectedTabsTags) { - var allTags = new ArrayList<>(ALL_TAGS); - - for (String tag : selectedTabsTags) { - mSelectedTabs.add(getTabByTag(tag)); - allTags.remove(tag); - } - - for (String tag : allTags) { - mDisabledTabs.add(getTabByTag(tag)); - } - } - - public void save() { - var sb = new StringBuilder(); - for (DockBarTab tab : mSelectedTabs) - sb.append(tab.tag).append(","); - getPreferences().edit().putString("dockbar_tabs", sb.toString()).commit(); - } - - public void reset() { - Preferences.getPreferences() - .edit() - .putString("dockbar_tabs", "tab_news,tab_superapps,tab_messages,tab_friends,tab_profile") - .commit(); - } - - public List getSelectedTabs() { - return mSelectedTabs; - } - - public List getDisabledTabs() { - return mDisabledTabs; - } - public static DockBarTab getTabByTag(String tag) { return switch (tag) { case "tab_news" -> DockBarTab.valuesOf( @@ -235,4 +171,68 @@ public class DockBarEditorManager { useNewSettings()); }; } + + private void init() { + if (vkme()) { + mSelectedTabs.add(getTabByTag("tab_settings")); + if (vkme_notifs()) { + if (milkshake()) { + mSelectedTabs.add(getTabByTag("tab_feedback")); + } else { + mSelectedTabs.add(getTabByTag("tab_friends")); + } + } + mSelectedTabs.add(getTabByTag("tab_messages")); + mSelectedTabs.add(getTabByTag("tab_profile")); + return; + } + + checkOldConfig(); + + var selectedTabsTags = getPreferences() + .getString("dockbar_tabs", + "tab_news,tab_superapps,tab_messages,tab_friends,tab_profile") + .split(","); + parseSelectedTabs(selectedTabsTags); + } + + private void checkOldConfig() { + File config = new File(getGlobalContext().getFilesDir(), "dockbar.json"); + if (config.exists()) config.deleteOnExit(); + } + + private void parseSelectedTabs(String[] selectedTabsTags) { + var allTags = new ArrayList<>(ALL_TAGS); + + for (String tag : selectedTabsTags) { + mSelectedTabs.add(getTabByTag(tag)); + allTags.remove(tag); + } + + for (String tag : allTags) { + mDisabledTabs.add(getTabByTag(tag)); + } + } + + public void save() { + var sb = new StringBuilder(); + for (DockBarTab tab : mSelectedTabs) + sb.append(tab.tag).append(","); + getPreferences().edit().putString("dockbar_tabs", sb.toString()).commit(); + } + + public void reset() { + Preferences.getPreferences() + .edit() + .putString("dockbar_tabs", "tab_news,tab_superapps,tab_messages,tab_friends,tab_profile") + .commit(); + } + + public List getSelectedTabs() { + return mSelectedTabs; + } + + public List getDisabledTabs() { + return mDisabledTabs; + } } diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/DataSettingsFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/DataSettingsFragment.java index 9d7d99723..daad894c3 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/DataSettingsFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/DataSettingsFragment.java @@ -168,12 +168,18 @@ public class DataSettingsFragment extends TrackedMaterialPreferenceToolbarFragme var pref = Preferences.getPreferences().getString("autoclearcache", "Default"); switch (pref) { - case "Default" -> findPreference("autoclearcache_btn").setSummary(requireContext().getString(com.vtosters.lite.R.string.cache_disabled)); - case "100mb" -> findPreference("autoclearcache_btn").setSummary(requireContext().getString(com.vtosters.lite.R.string.cache_100mb)); - case "500mb" -> findPreference("autoclearcache_btn").setSummary(requireContext().getString(com.vtosters.lite.R.string.cache_500mb)); - case "1gb" -> findPreference("autoclearcache_btn").setSummary(requireContext().getString(com.vtosters.lite.R.string.cache_1gb)); - case "2gb" -> findPreference("autoclearcache_btn").setSummary(requireContext().getString(com.vtosters.lite.R.string.cache_2gb)); - case "5gb" -> findPreference("autoclearcache_btn").setSummary(requireContext().getString(com.vtosters.lite.R.string.cache_5gb)); + case "Default" -> + findPreference("autoclearcache_btn").setSummary(requireContext().getString(com.vtosters.lite.R.string.cache_disabled)); + case "100mb" -> + findPreference("autoclearcache_btn").setSummary(requireContext().getString(com.vtosters.lite.R.string.cache_100mb)); + case "500mb" -> + findPreference("autoclearcache_btn").setSummary(requireContext().getString(com.vtosters.lite.R.string.cache_500mb)); + case "1gb" -> + findPreference("autoclearcache_btn").setSummary(requireContext().getString(com.vtosters.lite.R.string.cache_1gb)); + case "2gb" -> + findPreference("autoclearcache_btn").setSummary(requireContext().getString(com.vtosters.lite.R.string.cache_2gb)); + case "5gb" -> + findPreference("autoclearcache_btn").setSummary(requireContext().getString(com.vtosters.lite.R.string.cache_5gb)); } PreferenceFragmentUtils.addPreferenceCategory(getPreferenceScreen(), AndroidUtils.getString("accounts")); 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 327c8242f..200bc51a8 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 @@ -1,35 +1,16 @@ package ru.vtosters.lite.ui.fragments; -import android.annotation.SuppressLint; import android.app.Activity; import android.content.*; import android.os.Bundle; -import android.util.TypedValue; -import android.webkit.WebView; -import android.widget.RadioButton; -import android.widget.RadioGroup; import android.widget.Toast; -import androidx.appcompat.view.ContextThemeWrapper; -import b.h.g.m.FileUtils; import com.vk.auth.api.VKAccount; -import com.vk.core.dialogs.alert.VkAlertDialog; import com.vk.core.util.ToastUtils; -import com.vk.im.engine.ImEngine1; -import com.vk.im.engine.ImEngineExt; -import com.vk.im.ui.providers.audiomsg.ImAudioMsgPlayerProvider; -import com.vk.im.ui.providers.audiomsg.PlayerActionSources; -import com.vk.imageloader.VKImageLoader; -import com.vk.media.player.cache.AutoPlayCacheHolder; -import com.vk.mediastore.MediaStorage; import com.vk.pushes.PushSubscriber; -import com.vk.stickers.Stickers; import com.vtosters.lite.R; import com.vtosters.lite.auth.VKAccountManager; -import com.vtosters.lite.im.ImEngineProvider; import ru.vtosters.hooks.GmsHook; -import ru.vtosters.hooks.SwitchHook; import ru.vtosters.hooks.other.Preferences; -import ru.vtosters.hooks.other.ThemesUtils; import ru.vtosters.lite.deviceinfo.DeviceInfoCollector; import ru.vtosters.lite.ssfs.UsersList; import ru.vtosters.lite.ui.activities.VKAdminTokenActivity; @@ -148,7 +129,6 @@ public class OtherFragment extends TrackedMaterialPreferenceToolbarFragment { } - private void copyText(String src) { var manager = (ClipboardManager) requireContext().getSystemService(Context.CLIPBOARD_SERVICE); manager.setPrimaryClip(ClipData.newPlainText("MBH-ST", src)); 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 66f7e8ed4..a3610fbc9 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,8 +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; @@ -34,8 +33,7 @@ public class DockBarTab } @Override - public boolean equals(Object arg) - { - return this.id==((DockBarTab)arg).id; + public boolean equals(Object arg) { + return this.id == ((DockBarTab) arg).id; } } diff --git a/app/src/main/java/ru/vtosters/lite/ui/items/SuperAppItem.java b/app/src/main/java/ru/vtosters/lite/ui/items/SuperAppItem.java index 4ad31d802..066efe832 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/items/SuperAppItem.java +++ b/app/src/main/java/ru/vtosters/lite/ui/items/SuperAppItem.java @@ -1,9 +1,6 @@ package ru.vtosters.lite.ui.items; -import ru.vtosters.lite.ui.adapters.CategorizedAdapter; - -public class SuperAppItem -{ +public class SuperAppItem { public String type; public String title; @@ -18,9 +15,8 @@ public class SuperAppItem } @Override - public boolean equals(Object arg) - { - var item=(SuperAppItem)arg; - return this.type.equals(item.type)&&this.title.equals(item.title); + public boolean equals(Object arg) { + var item = (SuperAppItem) arg; + return this.type.equals(item.type) && this.title.equals(item.title); } } 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 56fb8e178..1a7f1c382 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 @@ -18,7 +18,6 @@ import ru.vtosters.hooks.other.Preferences; import ru.vtosters.lite.foaf.FoafBase; import ru.vtosters.lite.utils.AccountManagerUtils; import ru.vtosters.lite.utils.AndroidUtils; -import ru.vtosters.lite.utils.RenameTool; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; 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 7e939d193..fb80ca22f 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 @@ -5,12 +5,8 @@ import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.Build; -import android.view.View; -import android.widget.ImageView; -import com.vk.im.engine.h; import com.vtosters.lite.R; import ru.vtosters.hooks.other.Preferences; -import ru.vtosters.hooks.other.ThemesUtils; import ru.vtosters.lite.utils.AndroidUtils; import vigo.sdk.Log;