From d374d4875dd5551b899e2f7c22eab915c4ab9559 Mon Sep 17 00:00:00 2001 From: xaxtix Date: Wed, 8 Mar 2023 11:27:18 +0400 Subject: [PATCH] update to 9.5.0 --- TMessagesProj/build.gradle | 2 +- TMessagesProj/jni/tgnet/ApiScheme.cpp | 22 +- TMessagesProj/jni/tgnet/ApiScheme.h | 11 +- .../jni/tgnet/ConnectionsManager.cpp | 4 + .../org_telegram_messenger_voip_Instance.cpp | 13 +- .../jni/voip/tgcalls/v2/InstanceV2Impl.cpp | 4 +- .../audio_device/android/audio_track_jni.cc | 2 +- TMessagesProj/src/main/AndroidManifest.xml | 6 + TMessagesProj/src/main/assets/arctic.attheme | 17 - .../src/main/assets/bluebubbles.attheme | 11 - .../src/main/assets/darkblue.attheme | 31 - TMessagesProj/src/main/assets/day.attheme | 20 - TMessagesProj/src/main/assets/night.attheme | 31 - .../telegram/messenger/AndroidUtilities.java | 48 +- .../messenger/AnimatedFileDrawableStream.java | 3 +- .../telegram/messenger/ApplicationLoader.java | 6 - .../messenger/AutoDeleteMediaTask.java | 3 - .../org/telegram/messenger/BuildVars.java | 4 +- .../messenger/CacheByChatsController.java | 8 +- .../messenger/ContactsController.java | 80 +- .../messenger/DatabaseMigrationHelper.java | 6 + .../java/org/telegram/messenger/Fetcher.java | 9 +- .../telegram/messenger/FileLoadOperation.java | 16 +- .../org/telegram/messenger/FileLoader.java | 65 +- .../messenger/FileLoaderPriorityQueue.java | 1 - .../telegram/messenger/FilePathDatabase.java | 72 +- .../telegram/messenger/FlagSecureReason.java | 83 + .../org/telegram/messenger/ImageLoader.java | 56 +- .../java/org/telegram/messenger/LiteMode.java | 347 ++- .../telegram/messenger/LocaleController.java | 71 +- .../telegram/messenger/MediaController.java | 24 +- .../messenger/MediaDataController.java | 108 +- .../org/telegram/messenger/MessageObject.java | 5 +- .../messenger/MessagesController.java | 2197 ++++++++------- .../telegram/messenger/MessagesStorage.java | 53 +- .../org/telegram/messenger/NativeLoader.java | 4 + .../messenger/NotificationCenter.java | 1 + .../messenger/NotificationsController.java | 5 +- .../SaveToGallerySettingsHelper.java | 2 +- .../messenger/SendMessagesHelper.java | 4 +- .../org/telegram/messenger/SharedConfig.java | 34 +- .../messenger/TranslateController.java | 2 +- .../org/telegram/messenger/Utilities.java | 9 - .../telegram/messenger/camera/CameraView.java | 96 +- .../org/telegram/messenger/voip/Instance.java | 15 +- .../telegram/messenger/voip/VoIPService.java | 94 +- .../main/java/org/telegram/tgnet/TLRPC.java | 612 ++++- .../ui/ActionBar/ActionBarLayout.java | 4 +- .../ui/ActionBar/ActionBarMenuItem.java | 27 +- .../ui/ActionBar/ActionBarMenuSlider.java | 265 +- .../ui/ActionBar/ActionBarMenuSubItem.java | 4 +- .../ui/ActionBar/ActionBarPopupWindow.java | 34 +- .../ui/ActionBar/AdjustPanLayoutHelper.java | 7 - .../telegram/ui/ActionBar/AlertDialog.java | 22 +- .../telegram/ui/ActionBar/BottomSheet.java | 10 +- .../ui/ActionBar/DrawerLayoutContainer.java | 12 +- .../ui/ActionBar/INavigationLayout.java | 7 +- .../telegram/ui/ActionBar/SimpleTextView.java | 7 + .../java/org/telegram/ui/ActionBar/Theme.java | 375 +-- .../ui/ActionBar/ThemeDescription.java | 3 - .../org/telegram/ui/ActionIntroActivity.java | 1 - .../telegram/ui/Adapters/ContactsAdapter.java | 28 +- .../ui/Adapters/DialogsSearchAdapter.java | 2 +- .../telegram/ui/Adapters/MentionsAdapter.java | 37 +- .../org/telegram/ui/CacheControlActivity.java | 18 +- .../org/telegram/ui/CachedMediaLayout.java | 4 +- .../java/org/telegram/ui/CallLogActivity.java | 2 +- .../org/telegram/ui/CameraScanActivity.java | 2 +- .../telegram/ui/Cells/ChatMessageCell.java | 52 +- .../telegram/ui/Cells/ContextLinkCell.java | 17 +- .../org/telegram/ui/Cells/DialogCell.java | 39 +- .../telegram/ui/Cells/DrawerActionCell.java | 1 + .../telegram/ui/Cells/DrawerProfileCell.java | 14 +- .../telegram/ui/Cells/GroupCallUserCell.java | 6 + .../ui/Cells/GroupCreateUserCell.java | 4 +- .../ui/Cells/PhotoAttachCameraCell.java | 5 + .../telegram/ui/Cells/SharedDocumentCell.java | 8 +- .../ui/Cells/SharedPhotoVideoCell.java | 1 + .../telegram/ui/Cells/StickerEmojiCell.java | 1 + .../org/telegram/ui/Cells/StickerSetCell.java | 9 +- .../java/org/telegram/ui/Cells/TextCell.java | 68 +- .../ui/Cells/ThemesHorizontalListCell.java | 16 +- .../telegram/ui/ChannelAdminLogActivity.java | 19 - .../java/org/telegram/ui/ChatActivity.java | 330 ++- .../org/telegram/ui/ChatLinkActivity.java | 2 +- .../telegram/ui/ChatRightsEditActivity.java | 2 +- .../org/telegram/ui/ChatUsersActivity.java | 100 +- .../org/telegram/ui/ChooseSpeedLayout.java | 90 +- .../org/telegram/ui/CodeFieldContainer.java | 5 + .../telegram/ui/Components/AlertsCreator.java | 54 +- .../ui/Components/AnimatedEmojiDrawable.java | 13 +- .../ui/Components/AnimatedTextView.java | 13 +- .../ui/Components/AudioPlayerAlert.java | 103 +- .../ui/Components/AutoDeletePopupWrapper.java | 2 +- .../ui/Components/BatteryDrawable.java | 192 ++ .../telegram/ui/Components/BlobDrawable.java | 14 +- .../ui/Components/BotWebViewContainer.java | 24 + .../Components/BotWebViewMenuContainer.java | 45 + .../ui/Components/BotWebViewSheet.java | 119 +- .../org/telegram/ui/Components/Bulletin.java | 25 +- .../ui/Components/BulletinFactory.java | 64 +- .../telegram/ui/Components/CacheChart.java | 3 +- .../ui/Components/ChatActivityEnterView.java | 67 +- .../ui/Components/ChatAttachAlert.java | 60 +- .../ChatAttachAlertPhotoLayout.java | 87 +- .../ui/Components/ChatAvatarContainer.java | 6 + .../ChatNotificationsPopupWrapper.java | 2 +- .../ChatScrimPopupContainerLayout.java | 1 + .../org/telegram/ui/Components/CheckBox2.java | 4 +- .../telegram/ui/Components/CounterView.java | 50 +- .../Components/CustomPhoneKeyboardView.java | 17 + .../ui/Components/EditTextBoldCursor.java | 5 +- .../telegram/ui/Components/EditTextEmoji.java | 37 +- .../org/telegram/ui/Components/EmojiView.java | 20 +- .../ui/Components/FlickerLoadingView.java | 2 +- .../FloatingDebug/FloatingDebugView.java | 7 - .../ui/Components/Forum/ForumUtilities.java | 2 +- .../ui/Components/FragmentContextView.java | 170 +- .../FragmentContextViewWavesDrawable.java | 76 +- .../ui/Components/GroupCreateSpan.java | 4 +- .../telegram/ui/Components/ImageUpdater.java | 2 +- .../ui/Components/InstantCameraView.java | 20 +- .../ui/Components/LineBlobDrawable.java | 6 + .../ui/Components/LinkSpanDrawable.java | 2 +- .../telegram/ui/Components/MediaActivity.java | 5 +- .../Components/MemberRequestsBottomSheet.java | 5 - .../ui/Components/MentionsContainerView.java | 10 +- .../Components/MessageSeenCheckDrawable.java | 71 + .../Components/OptionsSpeedIconDrawable.java | 151 ++ .../OverlayActionBarLayoutDialog.java | 10 +- .../Paint/Views/LPhotoPaintView.java | 55 +- .../PhotoViewerCaptionEnterView.java | 6 +- .../ui/Components/PopupAudioView.java | 2 +- .../ui/Components/PopupSwipeBackLayout.java | 4 +- .../Premium/DoubleLimitsPageView.java | 4 +- .../Components/Premium/LimitPreviewView.java | 9 +- .../Premium/LimitReachedBottomSheet.java | 273 +- .../Components/Premium/PremiumButtonView.java | 36 +- .../Premium/PremiumFeatureBottomSheet.java | 7 +- .../Components/Premium/PremiumGradient.java | 8 + .../ui/Components/ProfileGalleryView.java | 75 +- .../ui/Components/RLottieDrawable.java | 2 +- .../ui/Components/ReactedHeaderView.java | 66 +- .../ui/Components/ReactedUsersListView.java | 121 +- .../ChatSelectionReactionMenuOverlay.java | 4 +- .../Components/ReactionsContainerLayout.java | 12 +- .../ui/Components/ScrollSlidingTabStrip.java | 37 - .../Components/SearchDownloadsContainer.java | 3 +- .../ui/Components/SearchViewPager.java | 2 +- .../telegram/ui/Components/ShareAlert.java | 8 +- .../ui/Components/SpeedIconDrawable.java | 30 +- .../ui/Components/StickerEmptyView.java | 9 +- .../telegram/ui/Components/StickersAlert.java | 2 +- .../ui/Components/ThemeEditorView.java | 2 +- .../ui/Components/UsersAlertBase.java | 10 +- .../telegram/ui/Components/VideoPlayer.java | 9 +- .../ui/Components/VideoTimelineView.java | 17 +- .../ui/Components/voip/DarkTheme.java | 46 - .../ui/Components/voip/VoIPHelper.java | 2 +- .../org/telegram/ui/ContentPreviewViewer.java | 4 +- .../org/telegram/ui/DataSettingsActivity.java | 27 +- .../org/telegram/ui/DataUsage2Activity.java | 2 +- .../org/telegram/ui/DataUsageActivity.java | 2 +- .../telegram/ui/DefaultThemesPreviewCell.java | 111 +- .../ui/Delegates/MemberRequestsDelegate.java | 2 +- .../ui/DialogOrContactPickerActivity.java | 2 +- .../java/org/telegram/ui/DialogsActivity.java | 86 +- .../org/telegram/ui/FilterCreateActivity.java | 4 +- .../org/telegram/ui/FiltersSetupActivity.java | 4 +- .../org/telegram/ui/GroupCreateActivity.java | 20 +- .../telegram/ui/GroupCreateFinalActivity.java | 25 +- .../telegram/ui/InviteContactsActivity.java | 15 +- .../telegram/ui/LNavigation/LNavigation.java | 2369 ----------------- .../telegram/ui/LanguageSelectActivity.java | 4 +- .../java/org/telegram/ui/LaunchActivity.java | 132 +- .../telegram/ui/LiteModeSettingsActivity.java | 550 +++- .../java/org/telegram/ui/LoginActivity.java | 21 +- .../java/org/telegram/ui/LogoutActivity.java | 2 +- .../LongPressListenerWithMovingGesture.java | 22 +- .../org/telegram/ui/ManageLinksActivity.java | 2 +- .../java/org/telegram/ui/MessageSeenView.java | 180 +- .../NotificationsCustomSettingsActivity.java | 2 +- .../ui/NotificationsSettingsActivity.java | 2 +- .../ui/NotificationsSoundActivity.java | 2 +- .../org/telegram/ui/PassportActivity.java | 6 +- .../org/telegram/ui/PaymentFormActivity.java | 2 +- .../telegram/ui/PhotoAlbumPickerActivity.java | 4 +- .../org/telegram/ui/PhotoPickerActivity.java | 10 +- .../ui/PhotoPickerSearchActivity.java | 13 +- .../java/org/telegram/ui/PhotoViewer.java | 71 +- .../telegram/ui/PremiumPreviewFragment.java | 6 +- .../telegram/ui/PrivacySettingsActivity.java | 24 +- .../java/org/telegram/ui/ProfileActivity.java | 369 +-- .../ui/ProfileNotificationsActivity.java | 2 +- .../org/telegram/ui/ProxyListActivity.java | 4 +- .../ui/SelectAnimatedEmojiDialog.java | 2 +- .../org/telegram/ui/SessionBottomSheet.java | 6 +- .../org/telegram/ui/SessionsActivity.java | 4 +- .../org/telegram/ui/StickersActivity.java | 114 +- .../ui/SuggestClearDatabaseBottomSheet.java | 2 +- .../java/org/telegram/ui/ThemeActivity.java | 107 +- .../org/telegram/ui/ThemePreviewActivity.java | 2 +- .../org/telegram/ui/ThemeSetUrlActivity.java | 2 +- .../java/org/telegram/ui/TopicsFragment.java | 5 +- .../ui/TopicsNotifySettingsFragments.java | 2 +- .../ui/TwoStepVerificationActivity.java | 6 +- .../ui/TwoStepVerificationSetupActivity.java | 6 +- .../org/telegram/ui/UsersSelectActivity.java | 6 +- .../telegram/ui/WallpapersListActivity.java | 4 +- .../java/org/telegram/ui/WebviewActivity.java | 4 +- .../webrtc/HardwareVideoEncoderFactory.java | 49 +- .../webrtc/voiceengine/WebRtcAudioTrack.java | 6 +- .../src/main/res/drawable-hdpi/add.png | Bin 89 -> 0 bytes .../main/res/drawable-hdpi/attach_close.png | Bin 319 -> 0 bytes .../main/res/drawable-hdpi/btnshadow.9.png | Bin 195 -> 0 bytes .../res/drawable-hdpi/calls_accept_video.png | Bin 469 -> 0 bytes .../res/drawable-hdpi/calls_accept_voice.png | Bin 691 -> 0 bytes .../src/main/res/drawable-hdpi/calls_back.png | Bin 618 -> 0 bytes .../res/drawable-hdpi/calls_bottomshadow.png | Bin 403 -> 0 bytes .../src/main/res/drawable-hdpi/calls_mute.png | Bin 729 -> 0 bytes .../res/drawable-hdpi/calls_topshadow.png | Bin 804 -> 0 bytes .../res/drawable-hdpi/chats_unarchive.png | Bin 603 -> 0 bytes .../src/main/res/drawable-hdpi/cloud_big.png | Bin 665 -> 0 bytes .../main/res/drawable-hdpi/collapse_up.png | Bin 125 -> 0 bytes .../drawable-hdpi/device_phone_windows.png | Bin 496 -> 0 bytes .../main/res/drawable-hdpi/editor_rotate.png | Bin 843 -> 0 bytes .../res/drawable-hdpi/emoji_tabs_premium.png | Bin 1120 -> 0 bytes .../res/drawable-hdpi/emoji_tabs_recent.png | Bin 1244 -> 0 bytes .../main/res/drawable-hdpi/files_empty.png | Bin 1642 -> 0 bytes .../res/drawable-hdpi/group_ban_empty.png | Bin 716 -> 0 bytes .../main/res/drawable-hdpi/groups_create.png | Bin 1075 -> 0 bytes .../main/res/drawable-hdpi/ic_ab_forward.png | Bin 518 -> 0 bytes .../drawable-hdpi/ic_call_end_white_36dp.png | Bin 821 -> 0 bytes .../ic_chat_bubble_white_24dp.png | Bin 148 -> 0 bytes .../res/drawable-hdpi/ic_masks_recent1.png | Bin 703 -> 0 bytes .../res/drawable-hdpi/ic_masks_sticker1.png | Bin 434 -> 0 bytes .../drawable-hdpi/ic_mic_off_white_24dp.png | Bin 428 -> 0 bytes .../res/drawable-hdpi/ic_share_article.png | Bin 286 -> 0 bytes .../main/res/drawable-hdpi/ic_smiles2_sad.png | Bin 737 -> 0 bytes .../res/drawable-hdpi/inline_video_pause.png | Bin 98 -> 0 bytes .../res/drawable-hdpi/inline_video_play.png | Bin 252 -> 0 bytes .../src/main/res/drawable-hdpi/input_gif.png | Bin 1007 -> 0 bytes .../main/res/drawable-hdpi/input_sticker.png | Bin 1015 -> 0 bytes .../res/drawable-hdpi/location_panel.9.png | Bin 178 -> 0 bytes .../main/res/drawable-hdpi/logo_avatar.png | Bin 1642 -> 0 bytes .../main/res/drawable-hdpi/map_pin_arrow.png | Bin 793 -> 0 bytes .../main/res/drawable-hdpi/media_doc_load.png | Bin 154 -> 0 bytes .../res/drawable-hdpi/media_doc_pause.png | Bin 95 -> 0 bytes .../res/drawable-hdpi/miniplayer_pause.png | Bin 101 -> 0 bytes .../res/drawable-hdpi/miniplayer_play.png | Bin 206 -> 0 bytes .../src/main/res/drawable-hdpi/moon.png | Bin 278 -> 0 bytes .../res/drawable-hdpi/msg2_animations.png | Bin 0 -> 999 bytes .../drawable-hdpi/msg2_archived_stickers.png | Bin 0 -> 1235 bytes .../res/drawable-hdpi/msg2_autodelete.png | Bin 0 -> 901 bytes .../main/res/drawable-hdpi/msg2_battery.png | Bin 0 -> 689 bytes .../main/res/drawable-hdpi/msg2_block2.png | Bin 0 -> 1071 bytes .../src/main/res/drawable-hdpi/msg2_data.png | Bin 0 -> 867 bytes .../main/res/drawable-hdpi/msg2_devices.png | Bin 0 -> 522 bytes .../res/drawable-hdpi/msg2_discussion.png | Bin 0 -> 952 bytes .../src/main/res/drawable-hdpi/msg2_email.png | Bin 0 -> 769 bytes .../main/res/drawable-hdpi/msg2_folder.png | Bin 0 -> 584 bytes .../src/main/res/drawable-hdpi/msg2_help.png | Bin 0 -> 1017 bytes .../main/res/drawable-hdpi/msg2_language.png | Bin 0 -> 1079 bytes .../res/drawable-hdpi/msg2_notifications.png | Bin 0 -> 684 bytes .../res/drawable-hdpi/msg2_permissions.png | Bin 0 -> 961 bytes .../main/res/drawable-hdpi/msg2_policy.png | Bin 0 -> 1150 bytes .../res/drawable-hdpi/msg2_reactions2.png | Bin 0 -> 935 bytes .../main/res/drawable-hdpi/msg2_secret.png | Bin 0 -> 770 bytes .../main/res/drawable-hdpi/msg2_trending.png | Bin 0 -> 1315 bytes .../res/drawable-hdpi/msg_addaccount_all.png | Bin 651 -> 0 bytes .../res/drawable-hdpi/msg_addaccount_base.png | Bin 376 -> 0 bytes .../res/drawable-hdpi/msg_addaccount_text.png | Bin 489 -> 0 bytes .../res/drawable-hdpi/msg_ask_question.png | Bin 1082 -> 0 bytes .../res/drawable-hdpi/msg_autodelete_1h.png | Bin 1002 -> 0 bytes .../main/res/drawable-hdpi/msg_bell_mute.png | Bin 1045 -> 0 bytes .../res/drawable-hdpi/msg_bell_unmute.png | Bin 901 -> 0 bytes .../main/res/drawable-hdpi/msg_bluetooth.png | Bin 843 -> 0 bytes .../main/res/drawable-hdpi/msg_calls_pin.png | Bin 637 -> 0 bytes .../res/drawable-hdpi/msg_calls_unpin.png | Bin 808 -> 0 bytes .../main/res/drawable-hdpi/msg_channel_14.png | Bin 1180 -> 0 bytes .../main/res/drawable-hdpi/msg_channel_hw.png | Bin 855 -> 0 bytes .../main/res/drawable-hdpi/msg_channel_ny.png | Bin 1045 -> 0 bytes .../src/main/res/drawable-hdpi/msg_check.png | Bin 440 -> 0 bytes .../res/drawable-hdpi/msg_check_thick.png | Bin 529 -> 0 bytes .../src/main/res/drawable-hdpi/msg_clock.png | Bin 267 -> 0 bytes .../src/main/res/drawable-hdpi/msg_data.png | Bin 843 -> 0 bytes .../main/res/drawable-hdpi/msg_data_usage.png | Bin 671 -> 0 bytes .../main/res/drawable-hdpi/msg_delete_old.png | Bin 635 -> 0 bytes .../main/res/drawable-hdpi/msg_devices.png | Bin 493 -> 0 bytes .../src/main/res/drawable-hdpi/msg_email.png | Bin 778 -> 0 bytes .../res/drawable-hdpi/msg_emoji_angry.png | Bin 870 -> 0 bytes .../main/res/drawable-hdpi/msg_emoji_back.png | Bin 380 -> 0 bytes .../main/res/drawable-hdpi/msg_emoji_bath.png | Bin 884 -> 0 bytes .../main/res/drawable-hdpi/msg_emoji_busy.png | Bin 682 -> 0 bytes .../res/drawable-hdpi/msg_emoji_dislike.png | Bin 789 -> 0 bytes .../res/drawable-hdpi/msg_emoji_happy.png | Bin 884 -> 0 bytes .../main/res/drawable-hdpi/msg_emoji_hi.png | Bin 1097 -> 0 bytes .../main/res/drawable-hdpi/msg_emoji_home.png | Bin 915 -> 0 bytes .../main/res/drawable-hdpi/msg_emoji_like.png | Bin 813 -> 0 bytes .../main/res/drawable-hdpi/msg_emoji_love.png | Bin 811 -> 0 bytes .../res/drawable-hdpi/msg_emoji_neutral.png | Bin 809 -> 0 bytes .../main/res/drawable-hdpi/msg_emoji_omg.png | Bin 909 -> 0 bytes .../res/drawable-hdpi/msg_emoji_party.png | Bin 1288 -> 0 bytes .../res/drawable-hdpi/msg_emoji_premium.png | Bin 1035 -> 0 bytes .../main/res/drawable-hdpi/msg_emoji_sad.png | Bin 858 -> 0 bytes .../res/drawable-hdpi/msg_emoji_sleep.png | Bin 680 -> 0 bytes .../res/drawable-hdpi/msg_emoji_study.png | Bin 1035 -> 0 bytes .../res/drawable-hdpi/msg_emoji_tongue.png | Bin 1035 -> 0 bytes .../res/drawable-hdpi/msg_emoji_vacation.png | Bin 1127 -> 0 bytes .../main/res/drawable-hdpi/msg_emoji_what.png | Bin 1237 -> 0 bytes .../main/res/drawable-hdpi/msg_emoji_work.png | Bin 576 -> 0 bytes .../res/drawable-hdpi/msg_filled_fragment.png | Bin 773 -> 0 bytes .../src/main/res/drawable-hdpi/msg_folder.png | Bin 613 -> 0 bytes .../res/drawable-hdpi/msg_folder_reorder.png | Bin 678 -> 0 bytes .../res/drawable-hdpi/msg_forward_check.png | Bin 513 -> 0 bytes .../main/res/drawable-hdpi/msg_help_14.png | Bin 1069 -> 0 bytes .../main/res/drawable-hdpi/msg_input_gift.png | Bin 0 -> 834 bytes .../main/res/drawable-hdpi/msg_invite_14.png | Bin 1158 -> 0 bytes .../main/res/drawable-hdpi/msg_limit_2x.png | Bin 866 -> 0 bytes .../src/main/res/drawable-hdpi/msg_list2.png | Bin 304 -> 0 bytes .../res/drawable-hdpi/msg_members_list.png | Bin 994 -> 0 bytes .../res/drawable-hdpi/msg_mini_checks.png | Bin 0 -> 355 bytes .../main/res/drawable-hdpi/msg_more_0_2.png | Bin 810 -> 0 bytes .../main/res/drawable-hdpi/msg_more_0_5.png | Bin 813 -> 0 bytes .../main/res/drawable-hdpi/msg_more_1_5.png | Bin 785 -> 0 bytes .../src/main/res/drawable-hdpi/msg_more_2.png | Bin 781 -> 0 bytes .../main/res/drawable-hdpi/msg_nearby_14.png | Bin 1133 -> 0 bytes .../main/res/drawable-hdpi/msg_nearby_hw.png | Bin 1149 -> 0 bytes .../main/res/drawable-hdpi/msg_newfilter.png | Bin 445 -> 0 bytes .../drawable-hdpi/msg_nightmode_system.png | Bin 1000 -> 0 bytes .../main/res/drawable-hdpi/msg_photo.9.png | Bin 235 -> 0 bytes .../drawable-hdpi/msg_photo_blur_linear.png | Bin 390 -> 0 bytes .../res/drawable-hdpi/msg_photo_blur_off.png | Bin 265 -> 0 bytes .../drawable-hdpi/msg_photo_blur_radial.png | Bin 799 -> 0 bytes .../res/drawable-hdpi/msg_photo_shadow.9.png | Bin 363 -> 0 bytes .../res/drawable-hdpi/msg_premium_lock.png | Bin 773 -> 0 bytes .../main/res/drawable-hdpi/msg_schedule.png | Bin 499 -> 0 bytes .../res/drawable-hdpi/msg_status_edit.png | Bin 1135 -> 0 bytes .../main/res/drawable-hdpi/msg_status_set.png | Bin 1153 -> 0 bytes .../res/drawable-hdpi/msg_storage_path.png | Bin 687 -> 0 bytes .../res/drawable-hdpi/msg_storage_usage.png | Bin 982 -> 0 bytes .../src/main/res/drawable-hdpi/msg_timer.png | Bin 887 -> 0 bytes .../main/res/drawable-hdpi/msg_timer_1h.png | Bin 1217 -> 0 bytes .../main/res/drawable-hdpi/msg_timeredit.png | Bin 1091 -> 0 bytes .../drawable-hdpi/permissions_contacts.png | Bin 460 -> 0 bytes .../src/main/res/drawable-hdpi/photo_w.png | Bin 372 -> 0 bytes .../src/main/res/drawable-hdpi/photocheck.png | Bin 881 -> 0 bytes .../main/res/drawable-hdpi/phototime.9.png | Bin 129 -> 0 bytes .../src/main/res/drawable-hdpi/play_big.png | Bin 1032 -> 0 bytes .../res/drawable-hdpi/play_roundvideo.png | Bin 1229 -> 0 bytes .../res/drawable-hdpi/player_new_next.png | Bin 531 -> 0 bytes .../res/drawable-hdpi/player_new_pause.png | Bin 264 -> 0 bytes .../res/drawable-hdpi/player_new_play.png | Bin 117 -> 0 bytes .../res/drawable-hdpi/player_new_previous.png | Bin 549 -> 0 bytes .../src/main/res/drawable-hdpi/plus.png | Bin 93 -> 0 bytes .../main/res/drawable-hdpi/popup_fixed.9.png | Bin 493 -> 0 bytes .../res/drawable-hdpi/popup_fixed_top.9.png | Bin 273 -> 0 bytes .../src/main/res/drawable-hdpi/regbtn2.9.png | Bin 206 -> 0 bytes .../res/drawable-hdpi/regbtn2_pressed.9.png | Bin 206 -> 0 bytes .../src/main/res/drawable-hdpi/replyvideo.png | Bin 457 -> 0 bytes .../src/main/res/drawable-hdpi/s_pause.png | Bin 149 -> 0 bytes .../src/main/res/drawable-hdpi/s_play.png | Bin 304 -> 0 bytes .../src/main/res/drawable-hdpi/scroll_tip.png | Bin 206 -> 0 bytes .../main/res/drawable-hdpi/search_arrow2.png | Bin 263 -> 0 bytes .../res/drawable-hdpi/settings_noresults.png | Bin 2408 -> 0 bytes .../main/res/drawable-hdpi/sheet_shadow.9.png | Bin 273 -> 0 bytes .../src/main/res/drawable-hdpi/slidearrow.png | Bin 197 -> 0 bytes .../res/drawable-hdpi/stickers_trending1.png | Bin 889 -> 0 bytes .../res/drawable-hdpi/stickers_trending2.png | Bin 275 -> 0 bytes .../res/drawable-hdpi/stickers_trending3.png | Bin 980 -> 0 bytes .../res/drawable-hdpi/switch_to_on1.9.png | Bin 728 -> 0 bytes .../res/drawable-hdpi/switch_to_on2.9.png | Bin 728 -> 0 bytes .../main/res/drawable-hdpi/switch_track.9.png | Bin 321 -> 0 bytes .../main/res/drawable-hdpi/temp_starlarge.png | Bin 4126 -> 0 bytes .../main/res/drawable-hdpi/video_pause1.png | Bin 459 -> 0 bytes .../main/res/drawable-hdpi/video_play1.png | Bin 727 -> 0 bytes .../res/drawable-hdpi/voice_volume_muted.png | Bin 831 -> 0 bytes .../drawable-hdpi/voice_volume_speaker.png | Bin 679 -> 0 bytes .../res/drawable-hdpi/wall_selection.9.png | Bin 98 -> 0 bytes .../main/res/drawable-hdpi/widget_check.png | Bin 409 -> 0 bytes .../main/res/drawable-hdpi/widget_clock.png | Bin 597 -> 0 bytes .../res/drawable-hdpi/widget_halfcheck.png | Bin 474 -> 0 bytes .../main/res/drawable-hdpi/widget_muted.png | Bin 610 -> 0 bytes .../main/res/drawable-hdpi/widget_online.png | Bin 289 -> 0 bytes .../src/main/res/drawable-hdpi/widget_pin.png | Bin 1401 -> 0 bytes .../res/drawable-hdpi/widget_verified.png | Bin 760 -> 0 bytes .../drawable-hdpi/widgets_dark_badgebg.9.png | Bin 1009 -> 0 bytes .../res/drawable-hdpi/widgets_dark_plus.png | Bin 425 -> 0 bytes .../res/drawable-hdpi/widgets_light_plus.png | Bin 404 -> 0 bytes .../src/main/res/drawable-mdpi/add.png | Bin 83 -> 0 bytes .../src/main/res/drawable-mdpi/app_update.png | Bin 211 -> 0 bytes .../main/res/drawable-mdpi/attach_close.png | Bin 207 -> 0 bytes .../main/res/drawable-mdpi/btnshadow.9.png | Bin 177 -> 0 bytes .../res/drawable-mdpi/calls_accept_video.png | Bin 324 -> 0 bytes .../res/drawable-mdpi/calls_accept_voice.png | Bin 491 -> 0 bytes .../src/main/res/drawable-mdpi/calls_back.png | Bin 401 -> 0 bytes .../res/drawable-mdpi/calls_bottomshadow.png | Bin 279 -> 0 bytes .../src/main/res/drawable-mdpi/calls_mute.png | Bin 508 -> 0 bytes .../res/drawable-mdpi/calls_topshadow.png | Bin 414 -> 0 bytes .../res/drawable-mdpi/chats_unarchive.png | Bin 441 -> 0 bytes .../src/main/res/drawable-mdpi/cloud_big.png | Bin 428 -> 0 bytes .../main/res/drawable-mdpi/collapse_up.png | Bin 98 -> 0 bytes .../drawable-mdpi/device_phone_windows.png | Bin 387 -> 0 bytes .../main/res/drawable-mdpi/editor_rotate.png | Bin 553 -> 0 bytes .../res/drawable-mdpi/emoji_tabs_premium.png | Bin 821 -> 0 bytes .../res/drawable-mdpi/emoji_tabs_recent.png | Bin 801 -> 0 bytes .../main/res/drawable-mdpi/files_empty.png | Bin 1018 -> 0 bytes .../res/drawable-mdpi/group_ban_empty.png | Bin 528 -> 0 bytes .../main/res/drawable-mdpi/groups_create.png | Bin 642 -> 0 bytes .../main/res/drawable-mdpi/ic_ab_forward.png | Bin 367 -> 0 bytes .../drawable-mdpi/ic_call_end_white_36dp.png | Bin 593 -> 0 bytes .../ic_chat_bubble_white_24dp.png | Bin 122 -> 0 bytes .../res/drawable-mdpi/ic_masks_recent1.png | Bin 536 -> 0 bytes .../res/drawable-mdpi/ic_masks_sticker1.png | Bin 361 -> 0 bytes .../drawable-mdpi/ic_mic_off_white_24dp.png | Bin 288 -> 0 bytes .../ic_phone_in_talk_white_24dp.png | Bin 325 -> 0 bytes .../res/drawable-mdpi/ic_share_article.png | Bin 195 -> 0 bytes .../main/res/drawable-mdpi/ic_smiles2_sad.png | Bin 454 -> 0 bytes .../res/drawable-mdpi/inline_video_pause.png | Bin 98 -> 0 bytes .../res/drawable-mdpi/inline_video_play.png | Bin 155 -> 0 bytes .../src/main/res/drawable-mdpi/input_gif.png | Bin 562 -> 0 bytes .../main/res/drawable-mdpi/input_sticker.png | Bin 631 -> 0 bytes .../res/drawable-mdpi/location_panel.9.png | Bin 153 -> 0 bytes .../main/res/drawable-mdpi/logo_avatar.png | Bin 1113 -> 0 bytes .../main/res/drawable-mdpi/map_pin_arrow.png | Bin 562 -> 0 bytes .../main/res/drawable-mdpi/media_doc_load.png | Bin 99 -> 0 bytes .../res/drawable-mdpi/media_doc_pause.png | Bin 89 -> 0 bytes .../res/drawable-mdpi/menu_settings_4.png | Bin 694 -> 0 bytes .../res/drawable-mdpi/miniplayer_pause.png | Bin 101 -> 0 bytes .../res/drawable-mdpi/miniplayer_play.png | Bin 168 -> 0 bytes .../src/main/res/drawable-mdpi/moon.png | Bin 221 -> 0 bytes .../res/drawable-mdpi/msg2_animations.png | Bin 0 -> 646 bytes .../drawable-mdpi/msg2_archived_stickers.png | Bin 0 -> 842 bytes .../res/drawable-mdpi/msg2_autodelete.png | Bin 0 -> 666 bytes .../main/res/drawable-mdpi/msg2_battery.png | Bin 0 -> 508 bytes .../main/res/drawable-mdpi/msg2_block2.png | Bin 0 -> 727 bytes .../src/main/res/drawable-mdpi/msg2_data.png | Bin 0 -> 609 bytes .../main/res/drawable-mdpi/msg2_devices.png | Bin 0 -> 430 bytes .../res/drawable-mdpi/msg2_discussion.png | Bin 0 -> 642 bytes .../src/main/res/drawable-mdpi/msg2_email.png | Bin 0 -> 546 bytes .../main/res/drawable-mdpi/msg2_folder.png | Bin 0 -> 461 bytes .../src/main/res/drawable-mdpi/msg2_help.png | Bin 0 -> 668 bytes .../main/res/drawable-mdpi/msg2_language.png | Bin 0 -> 753 bytes .../res/drawable-mdpi/msg2_notifications.png | Bin 0 -> 503 bytes .../res/drawable-mdpi/msg2_permissions.png | Bin 0 -> 640 bytes .../main/res/drawable-mdpi/msg2_policy.png | Bin 0 -> 769 bytes .../res/drawable-mdpi/msg2_reactions2.png | Bin 0 -> 628 bytes .../main/res/drawable-mdpi/msg2_secret.png | Bin 0 -> 577 bytes .../main/res/drawable-mdpi/msg2_trending.png | Bin 0 -> 818 bytes .../res/drawable-mdpi/msg_addaccount_all.png | Bin 496 -> 0 bytes .../res/drawable-mdpi/msg_addaccount_base.png | Bin 301 -> 0 bytes .../res/drawable-mdpi/msg_addaccount_text.png | Bin 392 -> 0 bytes .../res/drawable-mdpi/msg_ask_question.png | Bin 749 -> 0 bytes .../res/drawable-mdpi/msg_autodelete_1h.png | Bin 707 -> 0 bytes .../main/res/drawable-mdpi/msg_bell_mute.png | Bin 696 -> 0 bytes .../res/drawable-mdpi/msg_bell_unmute.png | Bin 629 -> 0 bytes .../main/res/drawable-mdpi/msg_bluetooth.png | Bin 558 -> 0 bytes .../main/res/drawable-mdpi/msg_calls_pin.png | Bin 474 -> 0 bytes .../res/drawable-mdpi/msg_calls_unpin.png | Bin 581 -> 0 bytes .../main/res/drawable-mdpi/msg_channel_14.png | Bin 767 -> 0 bytes .../main/res/drawable-mdpi/msg_channel_hw.png | Bin 600 -> 0 bytes .../main/res/drawable-mdpi/msg_channel_ny.png | Bin 770 -> 0 bytes .../src/main/res/drawable-mdpi/msg_check.png | Bin 339 -> 0 bytes .../res/drawable-mdpi/msg_check_thick.png | Bin 388 -> 0 bytes .../src/main/res/drawable-mdpi/msg_clock.png | Bin 181 -> 0 bytes .../src/main/res/drawable-mdpi/msg_data.png | Bin 605 -> 0 bytes .../main/res/drawable-mdpi/msg_data_usage.png | Bin 455 -> 0 bytes .../main/res/drawable-mdpi/msg_delete_old.png | Bin 456 -> 0 bytes .../main/res/drawable-mdpi/msg_devices.png | Bin 420 -> 0 bytes .../src/main/res/drawable-mdpi/msg_email.png | Bin 557 -> 0 bytes .../res/drawable-mdpi/msg_emoji_angry.png | Bin 618 -> 0 bytes .../main/res/drawable-mdpi/msg_emoji_back.png | Bin 271 -> 0 bytes .../main/res/drawable-mdpi/msg_emoji_bath.png | Bin 641 -> 0 bytes .../main/res/drawable-mdpi/msg_emoji_busy.png | Bin 479 -> 0 bytes .../res/drawable-mdpi/msg_emoji_dislike.png | Bin 561 -> 0 bytes .../res/drawable-mdpi/msg_emoji_happy.png | Bin 614 -> 0 bytes .../main/res/drawable-mdpi/msg_emoji_hi.png | Bin 683 -> 0 bytes .../main/res/drawable-mdpi/msg_emoji_home.png | Bin 627 -> 0 bytes .../main/res/drawable-mdpi/msg_emoji_like.png | Bin 566 -> 0 bytes .../main/res/drawable-mdpi/msg_emoji_love.png | Bin 568 -> 0 bytes .../res/drawable-mdpi/msg_emoji_neutral.png | Bin 567 -> 0 bytes .../main/res/drawable-mdpi/msg_emoji_omg.png | Bin 642 -> 0 bytes .../res/drawable-mdpi/msg_emoji_party.png | Bin 804 -> 0 bytes .../res/drawable-mdpi/msg_emoji_premium.png | Bin 686 -> 0 bytes .../main/res/drawable-mdpi/msg_emoji_sad.png | Bin 596 -> 0 bytes .../res/drawable-mdpi/msg_emoji_sleep.png | Bin 515 -> 0 bytes .../res/drawable-mdpi/msg_emoji_study.png | Bin 670 -> 0 bytes .../res/drawable-mdpi/msg_emoji_tongue.png | Bin 676 -> 0 bytes .../res/drawable-mdpi/msg_emoji_vacation.png | Bin 720 -> 0 bytes .../main/res/drawable-mdpi/msg_emoji_what.png | Bin 747 -> 0 bytes .../main/res/drawable-mdpi/msg_emoji_work.png | Bin 485 -> 0 bytes .../res/drawable-mdpi/msg_filled_fragment.png | Bin 544 -> 0 bytes .../src/main/res/drawable-mdpi/msg_folder.png | Bin 486 -> 0 bytes .../res/drawable-mdpi/msg_folder_reorder.png | Bin 534 -> 0 bytes .../res/drawable-mdpi/msg_forward_check.png | Bin 374 -> 0 bytes .../main/res/drawable-mdpi/msg_help_14.png | Bin 729 -> 0 bytes .../main/res/drawable-mdpi/msg_input_gift.png | Bin 0 -> 607 bytes .../main/res/drawable-mdpi/msg_invite_14.png | Bin 764 -> 0 bytes .../main/res/drawable-mdpi/msg_limit_2x.png | Bin 576 -> 0 bytes .../src/main/res/drawable-mdpi/msg_list2.png | Bin 351 -> 0 bytes .../res/drawable-mdpi/msg_members_list.png | Bin 665 -> 0 bytes .../res/drawable-mdpi/msg_mini_checks.png | Bin 0 -> 284 bytes .../main/res/drawable-mdpi/msg_more_0_2.png | Bin 515 -> 0 bytes .../main/res/drawable-mdpi/msg_more_0_5.png | Bin 523 -> 0 bytes .../main/res/drawable-mdpi/msg_more_1_5.png | Bin 518 -> 0 bytes .../src/main/res/drawable-mdpi/msg_more_2.png | Bin 514 -> 0 bytes .../main/res/drawable-mdpi/msg_nearby_14.png | Bin 737 -> 0 bytes .../main/res/drawable-mdpi/msg_nearby_hw.png | Bin 748 -> 0 bytes .../main/res/drawable-mdpi/msg_newfilter.png | Bin 350 -> 0 bytes .../drawable-mdpi/msg_nightmode_system.png | Bin 678 -> 0 bytes .../main/res/drawable-mdpi/msg_photo.9.png | Bin 204 -> 0 bytes .../drawable-mdpi/msg_photo_blur_linear.png | Bin 294 -> 0 bytes .../res/drawable-mdpi/msg_photo_blur_off.png | Bin 218 -> 0 bytes .../drawable-mdpi/msg_photo_blur_radial.png | Bin 539 -> 0 bytes .../res/drawable-mdpi/msg_photo_shadow.9.png | Bin 282 -> 0 bytes .../res/drawable-mdpi/msg_premium_lock.png | Bin 571 -> 0 bytes .../main/res/drawable-mdpi/msg_schedule.png | Bin 358 -> 0 bytes .../res/drawable-mdpi/msg_status_edit.png | Bin 802 -> 0 bytes .../main/res/drawable-mdpi/msg_status_set.png | Bin 786 -> 0 bytes .../res/drawable-mdpi/msg_storage_path.png | Bin 531 -> 0 bytes .../res/drawable-mdpi/msg_storage_usage.png | Bin 705 -> 0 bytes .../src/main/res/drawable-mdpi/msg_timer.png | Bin 689 -> 0 bytes .../main/res/drawable-mdpi/msg_timer_1h.png | Bin 867 -> 0 bytes .../main/res/drawable-mdpi/msg_timeredit.png | Bin 720 -> 0 bytes .../drawable-mdpi/permissions_contacts.png | Bin 312 -> 0 bytes .../src/main/res/drawable-mdpi/photo_w.png | Bin 241 -> 0 bytes .../src/main/res/drawable-mdpi/photocheck.png | Bin 579 -> 0 bytes .../main/res/drawable-mdpi/phototime.9.png | Bin 106 -> 0 bytes .../src/main/res/drawable-mdpi/play_big.png | Bin 745 -> 0 bytes .../res/drawable-mdpi/play_roundvideo.png | Bin 855 -> 0 bytes .../res/drawable-mdpi/player_new_next.png | Bin 359 -> 0 bytes .../res/drawable-mdpi/player_new_pause.png | Bin 206 -> 0 bytes .../res/drawable-mdpi/player_new_play.png | Bin 367 -> 0 bytes .../res/drawable-mdpi/player_new_previous.png | Bin 382 -> 0 bytes .../src/main/res/drawable-mdpi/plus.png | Bin 87 -> 0 bytes .../main/res/drawable-mdpi/popup_fixed.9.png | Bin 370 -> 0 bytes .../res/drawable-mdpi/popup_fixed_top.9.png | Bin 211 -> 0 bytes .../src/main/res/drawable-mdpi/regbtn2.9.png | Bin 170 -> 0 bytes .../res/drawable-mdpi/regbtn2_pressed.9.png | Bin 170 -> 0 bytes .../src/main/res/drawable-mdpi/replyvideo.png | Bin 270 -> 0 bytes .../src/main/res/drawable-mdpi/s_pause.png | Bin 129 -> 0 bytes .../src/main/res/drawable-mdpi/s_play.png | Bin 248 -> 0 bytes .../src/main/res/drawable-mdpi/scroll_tip.png | Bin 199 -> 0 bytes .../main/res/drawable-mdpi/search_arrow2.png | Bin 204 -> 0 bytes .../res/drawable-mdpi/settings_noresults.png | Bin 1536 -> 0 bytes .../main/res/drawable-mdpi/sheet_shadow.9.png | Bin 181 -> 0 bytes .../src/main/res/drawable-mdpi/slidearrow.png | Bin 107 -> 0 bytes .../res/drawable-mdpi/stickers_trending1.png | Bin 593 -> 0 bytes .../res/drawable-mdpi/stickers_trending2.png | Bin 229 -> 0 bytes .../res/drawable-mdpi/stickers_trending3.png | Bin 664 -> 0 bytes .../res/drawable-mdpi/switch_to_on1.9.png | Bin 444 -> 0 bytes .../res/drawable-mdpi/switch_to_on2.9.png | Bin 444 -> 0 bytes .../main/res/drawable-mdpi/switch_track.9.png | Bin 247 -> 0 bytes .../main/res/drawable-mdpi/temp_starlarge.png | Bin 2529 -> 0 bytes .../main/res/drawable-mdpi/video_pause1.png | Bin 289 -> 0 bytes .../main/res/drawable-mdpi/video_play1.png | Bin 500 -> 0 bytes .../res/drawable-mdpi/voice_volume_muted.png | Bin 595 -> 0 bytes .../drawable-mdpi/voice_volume_speaker.png | Bin 497 -> 0 bytes .../res/drawable-mdpi/wall_selection.9.png | Bin 95 -> 0 bytes .../main/res/drawable-mdpi/widget_check.png | Bin 310 -> 0 bytes .../main/res/drawable-mdpi/widget_clock.png | Bin 447 -> 0 bytes .../res/drawable-mdpi/widget_halfcheck.png | Bin 356 -> 0 bytes .../main/res/drawable-mdpi/widget_muted.png | Bin 436 -> 0 bytes .../main/res/drawable-mdpi/widget_online.png | Bin 229 -> 0 bytes .../src/main/res/drawable-mdpi/widget_pin.png | Bin 921 -> 0 bytes .../res/drawable-mdpi/widget_verified.png | Bin 526 -> 0 bytes .../drawable-mdpi/widgets_dark_badgebg.9.png | Bin 652 -> 0 bytes .../res/drawable-mdpi/widgets_dark_plus.png | Bin 334 -> 0 bytes .../res/drawable-mdpi/widgets_light_plus.png | Bin 343 -> 0 bytes .../res/drawable-night-hdpi/widget_check.png | Bin 403 -> 0 bytes .../res/drawable-night-hdpi/widget_clock.png | Bin 627 -> 0 bytes .../drawable-night-hdpi/widget_halfcheck.png | Bin 482 -> 0 bytes .../res/drawable-night-hdpi/widget_muted.png | Bin 604 -> 0 bytes .../res/drawable-night-hdpi/widget_online.png | Bin 282 -> 0 bytes .../res/drawable-night-hdpi/widget_pin.png | Bin 1465 -> 0 bytes .../drawable-night-hdpi/widget_verified.png | Bin 768 -> 0 bytes .../res/drawable-night-mdpi/widget_check.png | Bin 309 -> 0 bytes .../res/drawable-night-mdpi/widget_clock.png | Bin 473 -> 0 bytes .../drawable-night-mdpi/widget_halfcheck.png | Bin 354 -> 0 bytes .../res/drawable-night-mdpi/widget_muted.png | Bin 456 -> 0 bytes .../res/drawable-night-mdpi/widget_online.png | Bin 228 -> 0 bytes .../res/drawable-night-mdpi/widget_pin.png | Bin 958 -> 0 bytes .../drawable-night-mdpi/widget_verified.png | Bin 537 -> 0 bytes .../res/drawable-night-xhdpi/widget_check.png | Bin 427 -> 0 bytes .../res/drawable-night-xhdpi/widget_clock.png | Bin 888 -> 0 bytes .../drawable-night-xhdpi/widget_halfcheck.png | Bin 558 -> 0 bytes .../res/drawable-night-xhdpi/widget_muted.png | Bin 787 -> 0 bytes .../drawable-night-xhdpi/widget_online.png | Bin 338 -> 0 bytes .../res/drawable-night-xhdpi/widget_pin.png | Bin 2023 -> 0 bytes .../drawable-night-xhdpi/widget_verified.png | Bin 996 -> 0 bytes .../drawable-night-xxhdpi/widget_check.png | Bin 976 -> 0 bytes .../drawable-night-xxhdpi/widget_clock.png | Bin 1340 -> 0 bytes .../widget_halfcheck.png | Bin 1087 -> 0 bytes .../drawable-night-xxhdpi/widget_muted.png | Bin 839 -> 0 bytes .../drawable-night-xxhdpi/widget_online.png | Bin 512 -> 0 bytes .../res/drawable-night-xxhdpi/widget_pin.png | Bin 3248 -> 0 bytes .../drawable-night-xxhdpi/widget_verified.png | Bin 1292 -> 0 bytes .../src/main/res/drawable-xhdpi/add.png | Bin 93 -> 0 bytes .../main/res/drawable-xhdpi/app_update.png | Bin 377 -> 0 bytes .../main/res/drawable-xhdpi/attach_close.png | Bin 363 -> 0 bytes .../main/res/drawable-xhdpi/btnshadow.9.png | Bin 208 -> 0 bytes .../res/drawable-xhdpi/calls_accept_video.png | Bin 576 -> 0 bytes .../res/drawable-xhdpi/calls_accept_voice.png | Bin 882 -> 0 bytes .../main/res/drawable-xhdpi/calls_back.png | Bin 744 -> 0 bytes .../res/drawable-xhdpi/calls_bottomshadow.png | Bin 726 -> 0 bytes .../main/res/drawable-xhdpi/calls_mute.png | Bin 945 -> 0 bytes .../res/drawable-xhdpi/calls_topshadow.png | Bin 1505 -> 0 bytes .../res/drawable-xhdpi/chats_unarchive.png | Bin 788 -> 0 bytes .../src/main/res/drawable-xhdpi/cloud_big.png | Bin 865 -> 0 bytes .../main/res/drawable-xhdpi/collapse_up.png | Bin 125 -> 0 bytes .../drawable-xhdpi/device_phone_windows.png | Bin 618 -> 0 bytes .../main/res/drawable-xhdpi/editor_rotate.png | Bin 1113 -> 0 bytes .../res/drawable-xhdpi/emoji_tabs_premium.png | Bin 1528 -> 0 bytes .../res/drawable-xhdpi/emoji_tabs_recent.png | Bin 1923 -> 0 bytes .../main/res/drawable-xhdpi/files_empty.png | Bin 2118 -> 0 bytes .../res/drawable-xhdpi/group_ban_empty.png | Bin 952 -> 0 bytes .../main/res/drawable-xhdpi/groups_create.png | Bin 1404 -> 0 bytes .../main/res/drawable-xhdpi/ic_ab_forward.png | Bin 712 -> 0 bytes .../drawable-xhdpi/ic_call_end_white_36dp.png | Bin 1034 -> 0 bytes .../ic_chat_bubble_white_24dp.png | Bin 174 -> 0 bytes .../res/drawable-xhdpi/ic_masks_recent1.png | Bin 1118 -> 0 bytes .../res/drawable-xhdpi/ic_masks_sticker1.png | Bin 655 -> 0 bytes .../drawable-xhdpi/ic_mic_off_white_24dp.png | Bin 484 -> 0 bytes .../ic_phone_in_talk_white_24dp.png | Bin 601 -> 0 bytes .../res/drawable-xhdpi/ic_share_article.png | Bin 352 -> 0 bytes .../res/drawable-xhdpi/ic_smiles2_sad.png | Bin 1023 -> 0 bytes .../res/drawable-xhdpi/inline_video_pause.png | Bin 126 -> 0 bytes .../res/drawable-xhdpi/inline_video_play.png | Bin 282 -> 0 bytes .../src/main/res/drawable-xhdpi/input_gif.png | Bin 1340 -> 0 bytes .../main/res/drawable-xhdpi/input_sticker.png | Bin 1466 -> 0 bytes .../res/drawable-xhdpi/location_panel.9.png | Bin 208 -> 0 bytes .../main/res/drawable-xhdpi/logo_avatar.png | Bin 2195 -> 0 bytes .../main/res/drawable-xhdpi/map_pin_arrow.png | Bin 1025 -> 0 bytes .../res/drawable-xhdpi/media_doc_load.png | Bin 157 -> 0 bytes .../res/drawable-xhdpi/media_doc_pause.png | Bin 109 -> 0 bytes .../res/drawable-xhdpi/miniplayer_pause.png | Bin 134 -> 0 bytes .../res/drawable-xhdpi/miniplayer_play.png | Bin 262 -> 0 bytes .../src/main/res/drawable-xhdpi/moon.png | Bin 347 -> 0 bytes .../res/drawable-xhdpi/msg2_animations.png | Bin 0 -> 1507 bytes .../drawable-xhdpi/msg2_archived_stickers.png | Bin 0 -> 1730 bytes .../res/drawable-xhdpi/msg2_autodelete.png | Bin 0 -> 1282 bytes .../main/res/drawable-xhdpi/msg2_battery.png | Bin 0 -> 988 bytes .../main/res/drawable-xhdpi/msg2_block2.png | Bin 0 -> 1434 bytes .../src/main/res/drawable-xhdpi/msg2_data.png | Bin 0 -> 1289 bytes .../main/res/drawable-xhdpi/msg2_devices.png | Bin 0 -> 663 bytes .../res/drawable-xhdpi/msg2_discussion.png | Bin 0 -> 1261 bytes .../main/res/drawable-xhdpi/msg2_email.png | Bin 0 -> 1112 bytes .../main/res/drawable-xhdpi/msg2_folder.png | Bin 0 -> 779 bytes .../src/main/res/drawable-xhdpi/msg2_help.png | Bin 0 -> 1562 bytes .../main/res/drawable-xhdpi/msg2_language.png | Bin 0 -> 1645 bytes .../res/drawable-xhdpi/msg2_notifications.png | Bin 0 -> 927 bytes .../res/drawable-xhdpi/msg2_permissions.png | Bin 0 -> 1288 bytes .../main/res/drawable-xhdpi/msg2_policy.png | Bin 0 -> 1540 bytes .../res/drawable-xhdpi/msg2_reactions2.png | Bin 0 -> 1268 bytes .../main/res/drawable-xhdpi/msg2_secret.png | Bin 0 -> 1069 bytes .../main/res/drawable-xhdpi/msg2_trending.png | Bin 0 -> 1765 bytes .../res/drawable-xhdpi/msg_addaccount_all.png | Bin 873 -> 0 bytes .../drawable-xhdpi/msg_addaccount_base.png | Bin 514 -> 0 bytes .../drawable-xhdpi/msg_addaccount_text.png | Bin 582 -> 0 bytes .../res/drawable-xhdpi/msg_ask_question.png | Bin 1545 -> 0 bytes .../res/drawable-xhdpi/msg_autodelete_1h.png | Bin 1358 -> 0 bytes .../main/res/drawable-xhdpi/msg_bell_mute.png | Bin 1403 -> 0 bytes .../res/drawable-xhdpi/msg_bell_unmute.png | Bin 1225 -> 0 bytes .../main/res/drawable-xhdpi/msg_bluetooth.png | Bin 1094 -> 0 bytes .../main/res/drawable-xhdpi/msg_calls_pin.png | Bin 801 -> 0 bytes .../res/drawable-xhdpi/msg_calls_unpin.png | Bin 1040 -> 0 bytes .../res/drawable-xhdpi/msg_channel_14.png | Bin 1563 -> 0 bytes .../res/drawable-xhdpi/msg_channel_hw.png | Bin 1154 -> 0 bytes .../res/drawable-xhdpi/msg_channel_ny.png | Bin 1425 -> 0 bytes .../src/main/res/drawable-xhdpi/msg_check.png | Bin 531 -> 0 bytes .../res/drawable-xhdpi/msg_check_thick.png | Bin 665 -> 0 bytes .../src/main/res/drawable-xhdpi/msg_clock.png | Bin 371 -> 0 bytes .../src/main/res/drawable-xhdpi/msg_data.png | Bin 1278 -> 0 bytes .../res/drawable-xhdpi/msg_data_usage.png | Bin 887 -> 0 bytes .../res/drawable-xhdpi/msg_delete_old.png | Bin 808 -> 0 bytes .../main/res/drawable-xhdpi/msg_devices.png | Bin 629 -> 0 bytes .../src/main/res/drawable-xhdpi/msg_email.png | Bin 1082 -> 0 bytes .../res/drawable-xhdpi/msg_emoji_angry.png | Bin 1397 -> 0 bytes .../res/drawable-xhdpi/msg_emoji_back.png | Bin 430 -> 0 bytes .../res/drawable-xhdpi/msg_emoji_bath.png | Bin 1221 -> 0 bytes .../res/drawable-xhdpi/msg_emoji_busy.png | Bin 1114 -> 0 bytes .../res/drawable-xhdpi/msg_emoji_dislike.png | Bin 1079 -> 0 bytes .../res/drawable-xhdpi/msg_emoji_happy.png | Bin 1387 -> 0 bytes .../main/res/drawable-xhdpi/msg_emoji_hi.png | Bin 1531 -> 0 bytes .../res/drawable-xhdpi/msg_emoji_home.png | Bin 1190 -> 0 bytes .../res/drawable-xhdpi/msg_emoji_like.png | Bin 1107 -> 0 bytes .../res/drawable-xhdpi/msg_emoji_love.png | Bin 1124 -> 0 bytes .../res/drawable-xhdpi/msg_emoji_neutral.png | Bin 1237 -> 0 bytes .../main/res/drawable-xhdpi/msg_emoji_omg.png | Bin 1439 -> 0 bytes .../res/drawable-xhdpi/msg_emoji_party.png | Bin 1735 -> 0 bytes .../res/drawable-xhdpi/msg_emoji_premium.png | Bin 1412 -> 0 bytes .../main/res/drawable-xhdpi/msg_emoji_sad.png | Bin 1339 -> 0 bytes .../res/drawable-xhdpi/msg_emoji_sleep.png | Bin 886 -> 0 bytes .../res/drawable-xhdpi/msg_emoji_study.png | Bin 1360 -> 0 bytes .../res/drawable-xhdpi/msg_emoji_tongue.png | Bin 1512 -> 0 bytes .../res/drawable-xhdpi/msg_emoji_vacation.png | Bin 1542 -> 0 bytes .../res/drawable-xhdpi/msg_emoji_what.png | Bin 1766 -> 0 bytes .../res/drawable-xhdpi/msg_emoji_work.png | Bin 799 -> 0 bytes .../drawable-xhdpi/msg_filled_fragment.png | Bin 1016 -> 0 bytes .../main/res/drawable-xhdpi/msg_folder.png | Bin 759 -> 0 bytes .../res/drawable-xhdpi/msg_folder_reorder.png | Bin 927 -> 0 bytes .../res/drawable-xhdpi/msg_forward_check.png | Bin 647 -> 0 bytes .../main/res/drawable-xhdpi/msg_help_14.png | Bin 1417 -> 0 bytes .../res/drawable-xhdpi/msg_input_gift.png | Bin 0 -> 1106 bytes .../main/res/drawable-xhdpi/msg_invite_14.png | Bin 1585 -> 0 bytes .../main/res/drawable-xhdpi/msg_limit_2x.png | Bin 1141 -> 0 bytes .../src/main/res/drawable-xhdpi/msg_list2.png | Bin 604 -> 0 bytes .../res/drawable-xhdpi/msg_members_list.png | Bin 1382 -> 0 bytes .../res/drawable-xhdpi/msg_mini_checks.png | Bin 0 -> 408 bytes .../main/res/drawable-xhdpi/msg_more_0_2.png | Bin 1026 -> 0 bytes .../main/res/drawable-xhdpi/msg_more_0_5.png | Bin 1079 -> 0 bytes .../main/res/drawable-xhdpi/msg_more_1_5.png | Bin 1011 -> 0 bytes .../main/res/drawable-xhdpi/msg_more_2.png | Bin 1011 -> 0 bytes .../main/res/drawable-xhdpi/msg_nearby_14.png | Bin 1536 -> 0 bytes .../main/res/drawable-xhdpi/msg_nearby_hw.png | Bin 1480 -> 0 bytes .../main/res/drawable-xhdpi/msg_newfilter.png | Bin 586 -> 0 bytes .../drawable-xhdpi/msg_nightmode_system.png | Bin 1237 -> 0 bytes .../main/res/drawable-xhdpi/msg_photo.9.png | Bin 286 -> 0 bytes .../drawable-xhdpi/msg_photo_blur_linear.png | Bin 608 -> 0 bytes .../res/drawable-xhdpi/msg_photo_blur_off.png | Bin 339 -> 0 bytes .../drawable-xhdpi/msg_photo_blur_radial.png | Bin 1363 -> 0 bytes .../res/drawable-xhdpi/msg_photo_shadow.9.png | Bin 535 -> 0 bytes .../res/drawable-xhdpi/msg_premium_lock.png | Bin 1013 -> 0 bytes .../main/res/drawable-xhdpi/msg_schedule.png | Bin 594 -> 0 bytes .../res/drawable-xhdpi/msg_status_edit.png | Bin 1646 -> 0 bytes .../res/drawable-xhdpi/msg_status_set.png | Bin 1639 -> 0 bytes .../res/drawable-xhdpi/msg_storage_path.png | Bin 915 -> 0 bytes .../res/drawable-xhdpi/msg_storage_usage.png | Bin 1414 -> 0 bytes .../src/main/res/drawable-xhdpi/msg_timer.png | Bin 1382 -> 0 bytes .../main/res/drawable-xhdpi/msg_timer_1h.png | Bin 1835 -> 0 bytes .../main/res/drawable-xhdpi/msg_timeredit.png | Bin 1422 -> 0 bytes .../drawable-xhdpi/permissions_contacts.png | Bin 589 -> 0 bytes .../src/main/res/drawable-xhdpi/photo_w.png | Bin 443 -> 0 bytes .../main/res/drawable-xhdpi/photocheck.png | Bin 1180 -> 0 bytes .../main/res/drawable-xhdpi/phototime.9.png | Bin 138 -> 0 bytes .../src/main/res/drawable-xhdpi/play_big.png | Bin 1733 -> 0 bytes .../res/drawable-xhdpi/play_roundvideo.png | Bin 1696 -> 0 bytes .../res/drawable-xhdpi/player_new_next.png | Bin 657 -> 0 bytes .../res/drawable-xhdpi/player_new_pause.png | Bin 359 -> 0 bytes .../res/drawable-xhdpi/player_new_play.png | Bin 771 -> 0 bytes .../drawable-xhdpi/player_new_previous.png | Bin 689 -> 0 bytes .../src/main/res/drawable-xhdpi/plus.png | Bin 112 -> 0 bytes .../main/res/drawable-xhdpi/popup_fixed.9.png | Bin 694 -> 0 bytes .../res/drawable-xhdpi/popup_fixed_top.9.png | Bin 344 -> 0 bytes .../src/main/res/drawable-xhdpi/regbtn2.9.png | Bin 237 -> 0 bytes .../res/drawable-xhdpi/regbtn2_pressed.9.png | Bin 237 -> 0 bytes .../main/res/drawable-xhdpi/replyvideo.png | Bin 526 -> 0 bytes .../src/main/res/drawable-xhdpi/s_pause.png | Bin 197 -> 0 bytes .../src/main/res/drawable-xhdpi/s_play.png | Bin 422 -> 0 bytes .../main/res/drawable-xhdpi/scroll_tip.png | Bin 356 -> 0 bytes .../main/res/drawable-xhdpi/search_arrow2.png | Bin 335 -> 0 bytes .../res/drawable-xhdpi/settings_noresults.png | Bin 3460 -> 0 bytes .../res/drawable-xhdpi/sheet_shadow.9.png | Bin 346 -> 0 bytes .../main/res/drawable-xhdpi/slidearrow.png | Bin 153 -> 0 bytes .../res/drawable-xhdpi/stickers_trending1.png | Bin 1146 -> 0 bytes .../res/drawable-xhdpi/stickers_trending2.png | Bin 371 -> 0 bytes .../res/drawable-xhdpi/stickers_trending3.png | Bin 1304 -> 0 bytes .../res/drawable-xhdpi/switch_to_on1.9.png | Bin 1034 -> 0 bytes .../res/drawable-xhdpi/switch_to_on2.9.png | Bin 1034 -> 0 bytes .../res/drawable-xhdpi/switch_track.9.png | Bin 437 -> 0 bytes .../res/drawable-xhdpi/temp_starlarge.png | Bin 5726 -> 0 bytes .../main/res/drawable-xhdpi/video_pause1.png | Bin 594 -> 0 bytes .../main/res/drawable-xhdpi/video_play1.png | Bin 1158 -> 0 bytes .../src/main/res/drawable-xhdpi/video_png.png | Bin 181 -> 0 bytes .../res/drawable-xhdpi/voice_volume_muted.png | Bin 1009 -> 0 bytes .../drawable-xhdpi/voice_volume_speaker.png | Bin 849 -> 0 bytes .../res/drawable-xhdpi/wall_selection.9.png | Bin 101 -> 0 bytes .../main/res/drawable-xhdpi/widget_check.png | Bin 428 -> 0 bytes .../main/res/drawable-xhdpi/widget_clock.png | Bin 874 -> 0 bytes .../res/drawable-xhdpi/widget_halfcheck.png | Bin 572 -> 0 bytes .../main/res/drawable-xhdpi/widget_muted.png | Bin 707 -> 0 bytes .../main/res/drawable-xhdpi/widget_online.png | Bin 345 -> 0 bytes .../main/res/drawable-xhdpi/widget_pin.png | Bin 1974 -> 0 bytes .../res/drawable-xhdpi/widget_verified.png | Bin 1007 -> 0 bytes .../drawable-xhdpi/widgets_dark_badgebg.9.png | Bin 1472 -> 0 bytes .../res/drawable-xhdpi/widgets_dark_plus.png | Bin 479 -> 0 bytes .../res/drawable-xhdpi/widgets_light_plus.png | Bin 478 -> 0 bytes .../src/main/res/drawable-xxhdpi/add.png | Bin 112 -> 0 bytes .../main/res/drawable-xxhdpi/attach_close.png | Bin 458 -> 0 bytes .../main/res/drawable-xxhdpi/btnshadow.9.png | Bin 227 -> 0 bytes .../drawable-xxhdpi/calls_accept_video.png | Bin 896 -> 0 bytes .../drawable-xxhdpi/calls_accept_voice.png | Bin 1382 -> 0 bytes .../main/res/drawable-xxhdpi/calls_back.png | Bin 1163 -> 0 bytes .../drawable-xxhdpi/calls_bottomshadow.png | Bin 1488 -> 0 bytes .../main/res/drawable-xxhdpi/calls_mute.png | Bin 1445 -> 0 bytes .../res/drawable-xxhdpi/calls_topshadow.png | Bin 3487 -> 0 bytes .../res/drawable-xxhdpi/chats_unarchive.png | Bin 1192 -> 0 bytes .../main/res/drawable-xxhdpi/cloud_big.png | Bin 1198 -> 0 bytes .../main/res/drawable-xxhdpi/collapse_up.png | Bin 147 -> 0 bytes .../drawable-xxhdpi/device_phone_windows.png | Bin 838 -> 0 bytes .../res/drawable-xxhdpi/editor_rotate.png | Bin 1792 -> 0 bytes .../drawable-xxhdpi/emoji_tabs_premium.png | Bin 2416 -> 0 bytes .../res/drawable-xxhdpi/emoji_tabs_recent.png | Bin 2739 -> 0 bytes .../main/res/drawable-xxhdpi/files_empty.png | Bin 3273 -> 0 bytes .../res/drawable-xxhdpi/group_ban_empty.png | Bin 1360 -> 0 bytes .../res/drawable-xxhdpi/groups_create.png | Bin 1538 -> 0 bytes .../res/drawable-xxhdpi/ic_ab_forward.png | Bin 1086 -> 0 bytes .../ic_call_end_white_36dp.png | Bin 1661 -> 0 bytes .../ic_chat_bubble_white_24dp.png | Bin 246 -> 0 bytes .../res/drawable-xxhdpi/ic_masks_recent1.png | Bin 1452 -> 0 bytes .../drawable-xxhdpi/ic_mic_off_white_24dp.png | Bin 713 -> 0 bytes .../ic_phone_in_talk_white_24dp.png | Bin 881 -> 0 bytes .../res/drawable-xxhdpi/ic_share_article.png | Bin 485 -> 0 bytes .../res/drawable-xxhdpi/ic_smiles2_sad.png | Bin 1451 -> 0 bytes .../drawable-xxhdpi/inline_video_pause.png | Bin 162 -> 0 bytes .../res/drawable-xxhdpi/inline_video_play.png | Bin 425 -> 0 bytes .../main/res/drawable-xxhdpi/input_gif.png | Bin 1656 -> 0 bytes .../res/drawable-xxhdpi/input_sticker.png | Bin 1743 -> 0 bytes .../res/drawable-xxhdpi/location_panel.9.png | Bin 355 -> 0 bytes .../main/res/drawable-xxhdpi/logo_avatar.png | Bin 3327 -> 0 bytes .../res/drawable-xxhdpi/map_pin_arrow.png | Bin 1543 -> 0 bytes .../res/drawable-xxhdpi/media_doc_load.png | Bin 134 -> 0 bytes .../res/drawable-xxhdpi/media_doc_pause.png | Bin 111 -> 0 bytes .../res/drawable-xxhdpi/miniplayer_pause.png | Bin 132 -> 0 bytes .../res/drawable-xxhdpi/miniplayer_play.png | Bin 345 -> 0 bytes .../src/main/res/drawable-xxhdpi/moon.png | Bin 493 -> 0 bytes .../res/drawable-xxhdpi/msg2_animations.png | Bin 0 -> 2175 bytes .../msg2_archived_stickers.png | Bin 0 -> 2402 bytes .../res/drawable-xxhdpi/msg2_autodelete.png | Bin 0 -> 1884 bytes .../main/res/drawable-xxhdpi/msg2_battery.png | Bin 0 -> 1276 bytes .../main/res/drawable-xxhdpi/msg2_block2.png | Bin 0 -> 2107 bytes .../main/res/drawable-xxhdpi/msg2_data.png | Bin 0 -> 1822 bytes .../main/res/drawable-xxhdpi/msg2_devices.png | Bin 0 -> 819 bytes .../res/drawable-xxhdpi/msg2_discussion.png | Bin 0 -> 1758 bytes .../main/res/drawable-xxhdpi/msg2_email.png | Bin 0 -> 1694 bytes .../main/res/drawable-xxhdpi/msg2_folder.png | Bin 0 -> 1006 bytes .../main/res/drawable-xxhdpi/msg2_help.png | Bin 0 -> 2221 bytes .../res/drawable-xxhdpi/msg2_language.png | Bin 0 -> 2300 bytes .../drawable-xxhdpi/msg2_notifications.png | Bin 0 -> 1214 bytes .../res/drawable-xxhdpi/msg2_permissions.png | Bin 0 -> 1773 bytes .../main/res/drawable-xxhdpi/msg2_policy.png | Bin 0 -> 2309 bytes .../res/drawable-xxhdpi/msg2_reactions2.png | Bin 0 -> 1898 bytes .../main/res/drawable-xxhdpi/msg2_secret.png | Bin 0 -> 1357 bytes .../res/drawable-xxhdpi/msg2_trending.png | Bin 0 -> 2572 bytes .../drawable-xxhdpi/msg_addaccount_all.png | Bin 1160 -> 0 bytes .../drawable-xxhdpi/msg_addaccount_base.png | Bin 630 -> 0 bytes .../drawable-xxhdpi/msg_addaccount_text.png | Bin 823 -> 0 bytes .../res/drawable-xxhdpi/msg_ask_question.png | Bin 2128 -> 0 bytes .../res/drawable-xxhdpi/msg_autodelete_1h.png | Bin 1980 -> 0 bytes .../res/drawable-xxhdpi/msg_bell_mute.png | Bin 2039 -> 0 bytes .../res/drawable-xxhdpi/msg_bell_unmute.png | Bin 1774 -> 0 bytes .../res/drawable-xxhdpi/msg_bluetooth.png | Bin 1614 -> 0 bytes .../res/drawable-xxhdpi/msg_calls_pin.png | Bin 1155 -> 0 bytes .../res/drawable-xxhdpi/msg_calls_unpin.png | Bin 1350 -> 0 bytes .../res/drawable-xxhdpi/msg_channel_14.png | Bin 2411 -> 0 bytes .../res/drawable-xxhdpi/msg_channel_hw.png | Bin 1549 -> 0 bytes .../res/drawable-xxhdpi/msg_channel_ny.png | Bin 2027 -> 0 bytes .../main/res/drawable-xxhdpi/msg_check.png | Bin 845 -> 0 bytes .../res/drawable-xxhdpi/msg_check_thick.png | Bin 953 -> 0 bytes .../main/res/drawable-xxhdpi/msg_clock.png | Bin 506 -> 0 bytes .../src/main/res/drawable-xxhdpi/msg_data.png | Bin 1833 -> 0 bytes .../res/drawable-xxhdpi/msg_data_usage.png | Bin 1285 -> 0 bytes .../res/drawable-xxhdpi/msg_delete_old.png | Bin 1022 -> 0 bytes .../main/res/drawable-xxhdpi/msg_devices.png | Bin 774 -> 0 bytes .../main/res/drawable-xxhdpi/msg_email.png | Bin 1495 -> 0 bytes .../res/drawable-xxhdpi/msg_emoji_angry.png | Bin 1972 -> 0 bytes .../res/drawable-xxhdpi/msg_emoji_back.png | Bin 570 -> 0 bytes .../res/drawable-xxhdpi/msg_emoji_bath.png | Bin 1693 -> 0 bytes .../res/drawable-xxhdpi/msg_emoji_busy.png | Bin 1396 -> 0 bytes .../res/drawable-xxhdpi/msg_emoji_dislike.png | Bin 1528 -> 0 bytes .../res/drawable-xxhdpi/msg_emoji_happy.png | Bin 1950 -> 0 bytes .../main/res/drawable-xxhdpi/msg_emoji_hi.png | Bin 2282 -> 0 bytes .../res/drawable-xxhdpi/msg_emoji_home.png | Bin 1689 -> 0 bytes .../res/drawable-xxhdpi/msg_emoji_like.png | Bin 1528 -> 0 bytes .../res/drawable-xxhdpi/msg_emoji_love.png | Bin 1613 -> 0 bytes .../res/drawable-xxhdpi/msg_emoji_neutral.png | Bin 1629 -> 0 bytes .../res/drawable-xxhdpi/msg_emoji_omg.png | Bin 2020 -> 0 bytes .../res/drawable-xxhdpi/msg_emoji_party.png | Bin 2696 -> 0 bytes .../res/drawable-xxhdpi/msg_emoji_premium.png | Bin 2104 -> 0 bytes .../res/drawable-xxhdpi/msg_emoji_sad.png | Bin 1871 -> 0 bytes .../res/drawable-xxhdpi/msg_emoji_sleep.png | Bin 1255 -> 0 bytes .../res/drawable-xxhdpi/msg_emoji_study.png | Bin 2056 -> 0 bytes .../res/drawable-xxhdpi/msg_emoji_tongue.png | Bin 2217 -> 0 bytes .../drawable-xxhdpi/msg_emoji_vacation.png | Bin 2370 -> 0 bytes .../res/drawable-xxhdpi/msg_emoji_what.png | Bin 2660 -> 0 bytes .../res/drawable-xxhdpi/msg_emoji_work.png | Bin 976 -> 0 bytes .../drawable-xxhdpi/msg_filled_fragment.png | Bin 1491 -> 0 bytes .../main/res/drawable-xxhdpi/msg_folder.png | Bin 1023 -> 0 bytes .../drawable-xxhdpi/msg_folder_reorder.png | Bin 1093 -> 0 bytes .../res/drawable-xxhdpi/msg_forward_check.png | Bin 959 -> 0 bytes .../main/res/drawable-xxhdpi/msg_help_14.png | Bin 2029 -> 0 bytes .../res/drawable-xxhdpi/msg_input_gift.png | Bin 0 -> 1460 bytes .../res/drawable-xxhdpi/msg_invite_14.png | Bin 2424 -> 0 bytes .../main/res/drawable-xxhdpi/msg_limit_2x.png | Bin 1674 -> 0 bytes .../main/res/drawable-xxhdpi/msg_list2.png | Bin 549 -> 0 bytes .../res/drawable-xxhdpi/msg_members_list.png | Bin 1787 -> 0 bytes .../res/drawable-xxhdpi/msg_mini_checks.png | Bin 0 -> 514 bytes .../main/res/drawable-xxhdpi/msg_more_0_2.png | Bin 1606 -> 0 bytes .../main/res/drawable-xxhdpi/msg_more_0_5.png | Bin 1672 -> 0 bytes .../main/res/drawable-xxhdpi/msg_more_1_5.png | Bin 1526 -> 0 bytes .../main/res/drawable-xxhdpi/msg_more_2.png | Bin 1607 -> 0 bytes .../res/drawable-xxhdpi/msg_nearby_14.png | Bin 2341 -> 0 bytes .../res/drawable-xxhdpi/msg_nearby_hw.png | Bin 2141 -> 0 bytes .../res/drawable-xxhdpi/msg_newfilter.png | Bin 662 -> 0 bytes .../drawable-xxhdpi/msg_nightmode_system.png | Bin 1954 -> 0 bytes .../main/res/drawable-xxhdpi/msg_photo.9.png | Bin 439 -> 0 bytes .../drawable-xxhdpi/msg_photo_blur_linear.png | Bin 777 -> 0 bytes .../drawable-xxhdpi/msg_photo_blur_off.png | Bin 410 -> 0 bytes .../drawable-xxhdpi/msg_photo_blur_radial.png | Bin 1608 -> 0 bytes .../drawable-xxhdpi/msg_photo_shadow.9.png | Bin 954 -> 0 bytes .../res/drawable-xxhdpi/msg_premium_lock.png | Bin 1545 -> 0 bytes .../main/res/drawable-xxhdpi/msg_schedule.png | Bin 844 -> 0 bytes .../res/drawable-xxhdpi/msg_status_edit.png | Bin 2323 -> 0 bytes .../res/drawable-xxhdpi/msg_status_set.png | Bin 2299 -> 0 bytes .../res/drawable-xxhdpi/msg_storage_path.png | Bin 1221 -> 0 bytes .../res/drawable-xxhdpi/msg_storage_usage.png | Bin 1611 -> 0 bytes .../main/res/drawable-xxhdpi/msg_timer.png | Bin 1945 -> 0 bytes .../main/res/drawable-xxhdpi/msg_timer_1h.png | Bin 2621 -> 0 bytes .../res/drawable-xxhdpi/msg_timeredit.png | Bin 2112 -> 0 bytes .../drawable-xxhdpi/permissions_contacts.png | Bin 879 -> 0 bytes .../src/main/res/drawable-xxhdpi/photo_w.png | Bin 694 -> 0 bytes .../main/res/drawable-xxhdpi/photocheck.png | Bin 2003 -> 0 bytes .../main/res/drawable-xxhdpi/phototime.9.png | Bin 165 -> 0 bytes .../src/main/res/drawable-xxhdpi/play_big.png | Bin 2479 -> 0 bytes .../res/drawable-xxhdpi/play_roundvideo.png | Bin 2684 -> 0 bytes .../res/drawable-xxhdpi/player_new_next.png | Bin 965 -> 0 bytes .../res/drawable-xxhdpi/player_new_pause.png | Bin 559 -> 0 bytes .../res/drawable-xxhdpi/player_new_play.png | Bin 1275 -> 0 bytes .../drawable-xxhdpi/player_new_previous.png | Bin 996 -> 0 bytes .../src/main/res/drawable-xxhdpi/plus.png | Bin 112 -> 0 bytes .../res/drawable-xxhdpi/popup_fixed.9.png | Bin 1006 -> 0 bytes .../res/drawable-xxhdpi/popup_fixed_top.9.png | Bin 457 -> 0 bytes .../main/res/drawable-xxhdpi/regbtn2.9.png | Bin 312 -> 0 bytes .../res/drawable-xxhdpi/regbtn2_pressed.9.png | Bin 313 -> 0 bytes .../main/res/drawable-xxhdpi/replyvideo.png | Bin 787 -> 0 bytes .../src/main/res/drawable-xxhdpi/s_pause.png | Bin 237 -> 0 bytes .../src/main/res/drawable-xxhdpi/s_play.png | Bin 624 -> 0 bytes .../main/res/drawable-xxhdpi/scroll_tip.png | Bin 483 -> 0 bytes .../res/drawable-xxhdpi/search_arrow2.png | Bin 459 -> 0 bytes .../drawable-xxhdpi/settings_noresults.png | Bin 4534 -> 0 bytes .../res/drawable-xxhdpi/sheet_shadow.9.png | Bin 486 -> 0 bytes .../main/res/drawable-xxhdpi/slidearrow.png | Bin 219 -> 0 bytes .../drawable-xxhdpi/stickers_trending1.png | Bin 1598 -> 0 bytes .../drawable-xxhdpi/stickers_trending2.png | Bin 436 -> 0 bytes .../drawable-xxhdpi/stickers_trending3.png | Bin 1615 -> 0 bytes .../res/drawable-xxhdpi/switch_to_on1.9.png | Bin 1657 -> 0 bytes .../res/drawable-xxhdpi/switch_to_on2.9.png | Bin 1657 -> 0 bytes .../res/drawable-xxhdpi/switch_track.9.png | Bin 622 -> 0 bytes .../res/drawable-xxhdpi/temp_starlarge.png | Bin 9526 -> 0 bytes .../main/res/drawable-xxhdpi/video_pause1.png | Bin 1044 -> 0 bytes .../main/res/drawable-xxhdpi/video_play1.png | Bin 1935 -> 0 bytes .../drawable-xxhdpi/voice_volume_muted.png | Bin 1472 -> 0 bytes .../drawable-xxhdpi/voice_volume_speaker.png | Bin 1190 -> 0 bytes .../res/drawable-xxhdpi/wall_selection.9.png | Bin 112 -> 0 bytes .../main/res/drawable-xxhdpi/widget_check.png | Bin 986 -> 0 bytes .../main/res/drawable-xxhdpi/widget_clock.png | Bin 1357 -> 0 bytes .../res/drawable-xxhdpi/widget_halfcheck.png | Bin 1102 -> 0 bytes .../main/res/drawable-xxhdpi/widget_muted.png | Bin 783 -> 0 bytes .../res/drawable-xxhdpi/widget_online.png | Bin 499 -> 0 bytes .../main/res/drawable-xxhdpi/widget_pin.png | Bin 3116 -> 0 bytes .../res/drawable-xxhdpi/widget_verified.png | Bin 1309 -> 0 bytes .../widgets_dark_badgebg.9.png | Bin 1919 -> 0 bytes .../res/drawable-xxhdpi/widgets_dark_plus.png | Bin 623 -> 0 bytes .../drawable-xxhdpi/widgets_light_plus.png | Bin 583 -> 0 bytes .../res/drawable-xxxhdpi/sheet_shadow.9.png | Bin 639 -> 0 bytes .../src/main/res/drawable/catstile.jpg | Bin 31831 -> 0 bytes .../src/main/res/drawable/switch_thumb.xml | 5 - .../src/main/res/raw/auto_night_off.json | 1 + .../src/main/res/raw/speed_fast.json | 1 + .../src/main/res/raw/speed_slow.json | 1 + TMessagesProj/src/main/res/values/strings.xml | 73 +- gradle.properties | 10 +- 962 files changed, 7047 insertions(+), 5882 deletions(-) create mode 100644 TMessagesProj/src/main/java/org/telegram/messenger/FlagSecureReason.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/BatteryDrawable.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/MessageSeenCheckDrawable.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/OptionsSpeedIconDrawable.java delete mode 100644 TMessagesProj/src/main/java/org/telegram/ui/LNavigation/LNavigation.java delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/add.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/attach_close.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/btnshadow.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/calls_accept_video.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/calls_accept_voice.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/calls_back.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/calls_bottomshadow.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/calls_mute.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/calls_topshadow.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/chats_unarchive.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/cloud_big.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/collapse_up.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/device_phone_windows.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/editor_rotate.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/emoji_tabs_premium.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/emoji_tabs_recent.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/files_empty.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/group_ban_empty.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/groups_create.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/ic_ab_forward.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/ic_call_end_white_36dp.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/ic_chat_bubble_white_24dp.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/ic_masks_recent1.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/ic_masks_sticker1.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/ic_mic_off_white_24dp.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/ic_share_article.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/ic_smiles2_sad.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/inline_video_pause.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/inline_video_play.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/input_gif.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/input_sticker.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/location_panel.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/logo_avatar.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/map_pin_arrow.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/media_doc_load.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/media_doc_pause.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/miniplayer_pause.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/miniplayer_play.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/moon.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg2_animations.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg2_archived_stickers.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg2_autodelete.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg2_battery.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg2_block2.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg2_data.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg2_devices.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg2_discussion.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg2_email.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg2_folder.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg2_help.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg2_language.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg2_notifications.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg2_permissions.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg2_policy.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg2_reactions2.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg2_secret.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg2_trending.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_addaccount_all.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_addaccount_base.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_addaccount_text.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_ask_question.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_autodelete_1h.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_bell_mute.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_bell_unmute.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_bluetooth.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_calls_pin.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_calls_unpin.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_channel_14.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_channel_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_channel_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_check.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_check_thick.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/msg_clock.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_data.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_data_usage.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_delete_old.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_devices.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_email.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_angry.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_back.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_bath.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_busy.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_dislike.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_happy.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_hi.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_home.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_like.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_love.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_neutral.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_omg.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_party.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_premium.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_sad.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_sleep.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_study.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_tongue.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_vacation.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_what.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_work.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_filled_fragment.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_folder.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_folder_reorder.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_forward_check.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_help_14.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_input_gift.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_invite_14.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_limit_2x.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_list2.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_members_list.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_mini_checks.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_more_0_2.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_more_0_5.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_more_1_5.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_more_2.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_nearby_14.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_nearby_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_newfilter.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_nightmode_system.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/msg_photo.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_photo_blur_linear.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_photo_blur_off.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_photo_blur_radial.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/msg_photo_shadow.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_premium_lock.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_schedule.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_status_edit.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_status_set.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_storage_path.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_storage_usage.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_timer.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_timer_1h.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/msg_timeredit.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/permissions_contacts.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/photo_w.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/photocheck.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/phototime.9.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/play_big.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/play_roundvideo.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/player_new_next.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/player_new_pause.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/player_new_play.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/player_new_previous.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/plus.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/popup_fixed.9.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/popup_fixed_top.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/regbtn2.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/regbtn2_pressed.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/replyvideo.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/s_pause.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/s_play.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/scroll_tip.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/search_arrow2.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/settings_noresults.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/sheet_shadow.9.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/slidearrow.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/stickers_trending1.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/stickers_trending2.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/stickers_trending3.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/switch_to_on1.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/switch_to_on2.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/switch_track.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/temp_starlarge.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/video_pause1.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/video_play1.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/voice_volume_muted.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/voice_volume_speaker.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/wall_selection.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/widget_check.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/widget_clock.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/widget_halfcheck.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/widget_muted.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/widget_online.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/widget_pin.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/widget_verified.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/widgets_dark_badgebg.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/widgets_dark_plus.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/widgets_light_plus.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/add.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/app_update.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/attach_close.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/btnshadow.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/calls_accept_video.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/calls_accept_voice.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/calls_back.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/calls_bottomshadow.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/calls_mute.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/calls_topshadow.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/chats_unarchive.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/cloud_big.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/collapse_up.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/device_phone_windows.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/editor_rotate.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/emoji_tabs_premium.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/emoji_tabs_recent.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/files_empty.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/group_ban_empty.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/groups_create.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/ic_ab_forward.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/ic_call_end_white_36dp.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/ic_chat_bubble_white_24dp.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/ic_masks_recent1.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/ic_masks_sticker1.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/ic_mic_off_white_24dp.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/ic_phone_in_talk_white_24dp.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/ic_share_article.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/ic_smiles2_sad.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/inline_video_pause.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/inline_video_play.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/input_gif.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/input_sticker.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/location_panel.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/logo_avatar.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/map_pin_arrow.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/media_doc_load.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/media_doc_pause.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/menu_settings_4.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/miniplayer_pause.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/miniplayer_play.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/moon.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg2_animations.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg2_archived_stickers.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg2_autodelete.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg2_battery.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg2_block2.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg2_data.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg2_devices.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg2_discussion.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg2_email.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg2_folder.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg2_help.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg2_language.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg2_notifications.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg2_permissions.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg2_policy.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg2_reactions2.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg2_secret.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg2_trending.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_addaccount_all.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_addaccount_base.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_addaccount_text.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_ask_question.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_autodelete_1h.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_bell_mute.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_bell_unmute.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_bluetooth.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_calls_pin.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_calls_unpin.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_channel_14.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_channel_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_channel_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_check.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_check_thick.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/msg_clock.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_data.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_data_usage.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_delete_old.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_devices.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_email.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_angry.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_back.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_bath.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_busy.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_dislike.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_happy.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_hi.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_home.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_like.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_love.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_neutral.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_omg.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_party.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_premium.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_sad.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_sleep.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_study.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_tongue.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_vacation.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_what.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_work.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_filled_fragment.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_folder.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_folder_reorder.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_forward_check.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_help_14.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_input_gift.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_invite_14.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_limit_2x.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_list2.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_members_list.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_mini_checks.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_more_0_2.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_more_0_5.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_more_1_5.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_more_2.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_nearby_14.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_nearby_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_newfilter.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_nightmode_system.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/msg_photo.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_photo_blur_linear.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_photo_blur_off.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_photo_blur_radial.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/msg_photo_shadow.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_premium_lock.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_schedule.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_status_edit.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_status_set.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_storage_path.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_storage_usage.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_timer.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_timer_1h.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/msg_timeredit.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/permissions_contacts.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/photo_w.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/photocheck.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/phototime.9.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/play_big.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/play_roundvideo.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/player_new_next.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/player_new_pause.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/player_new_play.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/player_new_previous.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/plus.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/popup_fixed.9.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/popup_fixed_top.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/regbtn2.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/regbtn2_pressed.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/replyvideo.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/s_pause.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/s_play.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/scroll_tip.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/search_arrow2.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/settings_noresults.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/sheet_shadow.9.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/slidearrow.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/stickers_trending1.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/stickers_trending2.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/stickers_trending3.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/switch_to_on1.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/switch_to_on2.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/switch_track.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/temp_starlarge.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/video_pause1.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/video_play1.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/voice_volume_muted.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/voice_volume_speaker.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/wall_selection.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/widget_check.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/widget_clock.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/widget_halfcheck.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/widget_muted.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/widget_online.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/widget_pin.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/widget_verified.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/widgets_dark_badgebg.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/widgets_dark_plus.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/widgets_light_plus.png delete mode 100644 TMessagesProj/src/main/res/drawable-night-hdpi/widget_check.png delete mode 100644 TMessagesProj/src/main/res/drawable-night-hdpi/widget_clock.png delete mode 100644 TMessagesProj/src/main/res/drawable-night-hdpi/widget_halfcheck.png delete mode 100644 TMessagesProj/src/main/res/drawable-night-hdpi/widget_muted.png delete mode 100644 TMessagesProj/src/main/res/drawable-night-hdpi/widget_online.png delete mode 100644 TMessagesProj/src/main/res/drawable-night-hdpi/widget_pin.png delete mode 100644 TMessagesProj/src/main/res/drawable-night-hdpi/widget_verified.png delete mode 100644 TMessagesProj/src/main/res/drawable-night-mdpi/widget_check.png delete mode 100644 TMessagesProj/src/main/res/drawable-night-mdpi/widget_clock.png delete mode 100644 TMessagesProj/src/main/res/drawable-night-mdpi/widget_halfcheck.png delete mode 100644 TMessagesProj/src/main/res/drawable-night-mdpi/widget_muted.png delete mode 100644 TMessagesProj/src/main/res/drawable-night-mdpi/widget_online.png delete mode 100644 TMessagesProj/src/main/res/drawable-night-mdpi/widget_pin.png delete mode 100644 TMessagesProj/src/main/res/drawable-night-mdpi/widget_verified.png delete mode 100644 TMessagesProj/src/main/res/drawable-night-xhdpi/widget_check.png delete mode 100644 TMessagesProj/src/main/res/drawable-night-xhdpi/widget_clock.png delete mode 100644 TMessagesProj/src/main/res/drawable-night-xhdpi/widget_halfcheck.png delete mode 100644 TMessagesProj/src/main/res/drawable-night-xhdpi/widget_muted.png delete mode 100644 TMessagesProj/src/main/res/drawable-night-xhdpi/widget_online.png delete mode 100644 TMessagesProj/src/main/res/drawable-night-xhdpi/widget_pin.png delete mode 100644 TMessagesProj/src/main/res/drawable-night-xhdpi/widget_verified.png delete mode 100644 TMessagesProj/src/main/res/drawable-night-xxhdpi/widget_check.png delete mode 100644 TMessagesProj/src/main/res/drawable-night-xxhdpi/widget_clock.png delete mode 100644 TMessagesProj/src/main/res/drawable-night-xxhdpi/widget_halfcheck.png delete mode 100644 TMessagesProj/src/main/res/drawable-night-xxhdpi/widget_muted.png delete mode 100644 TMessagesProj/src/main/res/drawable-night-xxhdpi/widget_online.png delete mode 100644 TMessagesProj/src/main/res/drawable-night-xxhdpi/widget_pin.png delete mode 100644 TMessagesProj/src/main/res/drawable-night-xxhdpi/widget_verified.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/add.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/app_update.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/attach_close.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/btnshadow.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/calls_accept_video.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/calls_accept_voice.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/calls_back.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/calls_bottomshadow.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/calls_mute.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/calls_topshadow.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/chats_unarchive.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/cloud_big.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/collapse_up.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/device_phone_windows.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/editor_rotate.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/emoji_tabs_premium.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/emoji_tabs_recent.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/files_empty.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/group_ban_empty.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/groups_create.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_forward.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/ic_call_end_white_36dp.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/ic_chat_bubble_white_24dp.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/ic_masks_recent1.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/ic_masks_sticker1.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/ic_mic_off_white_24dp.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/ic_phone_in_talk_white_24dp.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/ic_share_article.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/ic_smiles2_sad.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/inline_video_pause.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/inline_video_play.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/input_gif.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/input_sticker.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/location_panel.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/logo_avatar.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/map_pin_arrow.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/media_doc_load.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/media_doc_pause.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/miniplayer_pause.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/miniplayer_play.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/moon.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg2_animations.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg2_archived_stickers.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg2_autodelete.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg2_battery.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg2_block2.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg2_data.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg2_devices.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg2_discussion.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg2_email.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg2_folder.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg2_help.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg2_language.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg2_notifications.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg2_permissions.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg2_policy.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg2_reactions2.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg2_secret.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg2_trending.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_addaccount_all.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_addaccount_base.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_addaccount_text.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_ask_question.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_autodelete_1h.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_bell_mute.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_bell_unmute.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_bluetooth.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_calls_pin.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_calls_unpin.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_channel_14.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_channel_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_channel_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_check.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_check_thick.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/msg_clock.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_data.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_data_usage.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_delete_old.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_devices.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_email.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_angry.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_back.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_bath.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_busy.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_dislike.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_happy.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_hi.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_home.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_like.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_love.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_neutral.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_omg.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_party.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_premium.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_sad.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_sleep.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_study.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_tongue.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_vacation.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_what.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_work.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_filled_fragment.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_folder.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_folder_reorder.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_forward_check.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_help_14.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_input_gift.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_invite_14.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_limit_2x.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_list2.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_members_list.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_mini_checks.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_more_0_2.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_more_0_5.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_more_1_5.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_more_2.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_nearby_14.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_nearby_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_newfilter.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_nightmode_system.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/msg_photo.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_photo_blur_linear.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_photo_blur_off.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_photo_blur_radial.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/msg_photo_shadow.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_premium_lock.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_schedule.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_status_edit.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_status_set.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_storage_path.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_storage_usage.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_timer.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_timer_1h.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/msg_timeredit.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/permissions_contacts.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/photo_w.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/photocheck.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/phototime.9.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/play_big.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/play_roundvideo.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/player_new_next.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/player_new_pause.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/player_new_play.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/player_new_previous.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/plus.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/popup_fixed.9.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/popup_fixed_top.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/regbtn2.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/regbtn2_pressed.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/replyvideo.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/s_pause.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/s_play.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/scroll_tip.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/search_arrow2.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/settings_noresults.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/sheet_shadow.9.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/slidearrow.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/stickers_trending1.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/stickers_trending2.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/stickers_trending3.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/switch_to_on1.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/switch_to_on2.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/switch_track.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/temp_starlarge.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/video_pause1.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/video_play1.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/video_png.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/voice_volume_muted.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/voice_volume_speaker.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/wall_selection.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/widget_check.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/widget_clock.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/widget_halfcheck.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/widget_muted.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/widget_online.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/widget_pin.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/widget_verified.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/widgets_dark_badgebg.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/widgets_dark_plus.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/widgets_light_plus.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/add.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/attach_close.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/btnshadow.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/calls_accept_video.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/calls_accept_voice.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/calls_back.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/calls_bottomshadow.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/calls_mute.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/calls_topshadow.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/chats_unarchive.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/cloud_big.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/collapse_up.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/device_phone_windows.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/editor_rotate.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/emoji_tabs_premium.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/emoji_tabs_recent.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/files_empty.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/group_ban_empty.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/groups_create.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_forward.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/ic_call_end_white_36dp.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/ic_chat_bubble_white_24dp.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/ic_masks_recent1.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/ic_mic_off_white_24dp.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/ic_phone_in_talk_white_24dp.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/ic_share_article.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/ic_smiles2_sad.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/inline_video_pause.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/inline_video_play.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/input_gif.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/input_sticker.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/location_panel.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/logo_avatar.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/map_pin_arrow.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/media_doc_load.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/media_doc_pause.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/miniplayer_pause.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/miniplayer_play.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/moon.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg2_animations.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg2_archived_stickers.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg2_autodelete.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg2_battery.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg2_block2.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg2_data.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg2_devices.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg2_discussion.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg2_email.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg2_folder.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg2_help.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg2_language.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg2_notifications.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg2_permissions.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg2_policy.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg2_reactions2.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg2_secret.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg2_trending.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_addaccount_all.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_addaccount_base.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_addaccount_text.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_ask_question.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_autodelete_1h.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_bell_mute.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_bell_unmute.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_bluetooth.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_calls_pin.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_calls_unpin.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_channel_14.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_channel_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_channel_ny.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_check.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_check_thick.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/msg_clock.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_data.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_data_usage.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_delete_old.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_devices.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_email.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_angry.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_back.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_bath.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_busy.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_dislike.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_happy.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_hi.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_home.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_like.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_love.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_neutral.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_omg.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_party.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_premium.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_sad.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_sleep.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_study.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_tongue.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_vacation.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_what.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_work.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_filled_fragment.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_folder.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_folder_reorder.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_forward_check.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_help_14.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_input_gift.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_invite_14.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_limit_2x.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_list2.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_members_list.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_mini_checks.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_more_0_2.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_more_0_5.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_more_1_5.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_more_2.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_nearby_14.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_nearby_hw.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_newfilter.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_nightmode_system.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/msg_photo.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_photo_blur_linear.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_photo_blur_off.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_photo_blur_radial.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/msg_photo_shadow.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_premium_lock.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_schedule.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_status_edit.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_status_set.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_storage_path.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_storage_usage.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_timer.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_timer_1h.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/msg_timeredit.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/permissions_contacts.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/photo_w.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/photocheck.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/phototime.9.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/play_big.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/play_roundvideo.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/player_new_next.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/player_new_pause.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/player_new_play.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/player_new_previous.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/plus.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/popup_fixed.9.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/popup_fixed_top.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/regbtn2.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/regbtn2_pressed.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/replyvideo.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/s_pause.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/s_play.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/scroll_tip.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/search_arrow2.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/settings_noresults.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/sheet_shadow.9.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/slidearrow.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/stickers_trending1.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/stickers_trending2.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/stickers_trending3.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/switch_to_on1.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/switch_to_on2.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/switch_track.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/temp_starlarge.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/video_pause1.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/video_play1.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/voice_volume_muted.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/voice_volume_speaker.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/wall_selection.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/widget_check.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/widget_clock.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/widget_halfcheck.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/widget_muted.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/widget_online.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/widget_pin.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/widget_verified.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/widgets_dark_badgebg.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/widgets_dark_plus.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/widgets_light_plus.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxxhdpi/sheet_shadow.9.png delete mode 100644 TMessagesProj/src/main/res/drawable/catstile.jpg delete mode 100644 TMessagesProj/src/main/res/drawable/switch_thumb.xml create mode 100644 TMessagesProj/src/main/res/raw/auto_night_off.json create mode 100644 TMessagesProj/src/main/res/raw/speed_fast.json create mode 100644 TMessagesProj/src/main/res/raw/speed_slow.json diff --git a/TMessagesProj/build.gradle b/TMessagesProj/build.gradle index fe38847ed..3384e6267 100644 --- a/TMessagesProj/build.gradle +++ b/TMessagesProj/build.gradle @@ -17,7 +17,7 @@ configurations.all { } dependencies { - implementation 'androidx.core:core:1.6.0' + implementation 'androidx.core:core:1.9.0' implementation 'androidx.palette:palette:1.0.0' implementation 'androidx.exifinterface:exifinterface:1.3.3' implementation 'androidx.dynamicanimation:dynamicanimation:1.0.0' diff --git a/TMessagesProj/jni/tgnet/ApiScheme.cpp b/TMessagesProj/jni/tgnet/ApiScheme.cpp index d4e687b48..98a69b5a8 100644 --- a/TMessagesProj/jni/tgnet/ApiScheme.cpp +++ b/TMessagesProj/jni/tgnet/ApiScheme.cpp @@ -196,19 +196,19 @@ void TL_config::readParams(NativeByteBuffer *stream, int32_t instanceNum, bool & notify_default_delay_ms = stream->readInt32(&error); push_chat_period_ms = stream->readInt32(&error); push_chat_limit = stream->readInt32(&error); - saved_gifs_limit = stream->readInt32(&error); + // saved_gifs_limit = stream->readInt32(&error); edit_time_limit = stream->readInt32(&error); revoke_time_limit = stream->readInt32(&error); revoke_pm_time_limit = stream->readInt32(&error); rating_e_decay = stream->readInt32(&error); stickers_recent_limit = stream->readInt32(&error); - stickers_faved_limit = stream->readInt32(&error); + // stickers_faved_limit = stream->readInt32(&error); channels_read_media_period = stream->readInt32(&error); if ((flags & 1) != 0) { tmp_sessions = stream->readInt32(&error); } - pinned_dialogs_count_max = stream->readInt32(&error); - pinned_infolder_count_max = stream->readInt32(&error); + // pinned_dialogs_count_max = stream->readInt32(&error); + // pinned_infolder_count_max = stream->readInt32(&error); call_receive_timeout_ms = stream->readInt32(&error); call_ring_timeout_ms = stream->readInt32(&error); call_connect_timeout_ms = stream->readInt32(&error); @@ -244,6 +244,9 @@ void TL_config::readParams(NativeByteBuffer *stream, int32_t instanceNum, bool & if ((flags & 32768) != 0) { reactions_default = std::unique_ptr(Reaction::TLdeserialize(stream, stream->readUint32(&error), instanceNum, error)); } + if ((flags & 65536) != 0) { + autologin_token = stream->readString(&error); + } } void TL_config::serializeToStream(NativeByteBuffer *stream) { @@ -271,19 +274,19 @@ void TL_config::serializeToStream(NativeByteBuffer *stream) { stream->writeInt32(notify_default_delay_ms); stream->writeInt32(push_chat_period_ms); stream->writeInt32(push_chat_limit); - stream->writeInt32(saved_gifs_limit); + // stream->writeInt32(saved_gifs_limit); stream->writeInt32(edit_time_limit); stream->writeInt32(revoke_time_limit); stream->writeInt32(revoke_pm_time_limit); stream->writeInt32(rating_e_decay); stream->writeInt32(stickers_recent_limit); - stream->writeInt32(stickers_faved_limit); + // stream->writeInt32(stickers_faved_limit); stream->writeInt32(channels_read_media_period); if ((flags & 1) != 0) { stream->writeInt32(tmp_sessions); } - stream->writeInt32(pinned_dialogs_count_max); - stream->writeInt32(pinned_infolder_count_max); + // stream->writeInt32(pinned_dialogs_count_max); + // stream->writeInt32(pinned_infolder_count_max); stream->writeInt32(call_receive_timeout_ms); stream->writeInt32(call_ring_timeout_ms); stream->writeInt32(call_connect_timeout_ms); @@ -319,6 +322,9 @@ void TL_config::serializeToStream(NativeByteBuffer *stream) { if ((flags & 32768) != 0 && reactions_default != nullptr) { reactions_default->serializeToStream(stream); } + if ((flags & 65536) != 0) { + stream->writeString(autologin_token); + } } TLObject *TL_help_getConfig::deserializeResponse(NativeByteBuffer *stream, uint32_t constructor, int32_t instanceNum, bool &error) { diff --git a/TMessagesProj/jni/tgnet/ApiScheme.h b/TMessagesProj/jni/tgnet/ApiScheme.h index 77a8da911..60a9bf309 100644 --- a/TMessagesProj/jni/tgnet/ApiScheme.h +++ b/TMessagesProj/jni/tgnet/ApiScheme.h @@ -105,7 +105,7 @@ public: class TL_config : public TLObject { public: - static const uint32_t constructor = 0x232566ac; + static const uint32_t constructor = 0xcc1a241e; int32_t flags; int32_t date; @@ -125,17 +125,17 @@ public: int32_t notify_default_delay_ms; int32_t push_chat_period_ms; int32_t push_chat_limit; - int32_t saved_gifs_limit; + // int32_t saved_gifs_limit; int32_t edit_time_limit; int32_t revoke_time_limit; int32_t revoke_pm_time_limit; int32_t rating_e_decay; int32_t stickers_recent_limit; - int32_t stickers_faved_limit; + // int32_t stickers_faved_limit; int32_t channels_read_media_period; int32_t tmp_sessions; - int32_t pinned_dialogs_count_max; - int32_t pinned_infolder_count_max; + // int32_t pinned_dialogs_count_max; + // int32_t pinned_infolder_count_max; int32_t call_receive_timeout_ms; int32_t call_ring_timeout_ms; int32_t call_connect_timeout_ms; @@ -153,6 +153,7 @@ public: int32_t lang_pack_version; int32_t base_lang_pack_version; std::unique_ptr reactions_default; + std::string autologin_token; static TL_config *TLdeserialize(NativeByteBuffer *stream, uint32_t constructor, int32_t instanceNum, bool &error); void readParams(NativeByteBuffer *stream, int32_t instanceNum, bool &error); diff --git a/TMessagesProj/jni/tgnet/ConnectionsManager.cpp b/TMessagesProj/jni/tgnet/ConnectionsManager.cpp index f5a3563ff..d512cb78d 100644 --- a/TMessagesProj/jni/tgnet/ConnectionsManager.cpp +++ b/TMessagesProj/jni/tgnet/ConnectionsManager.cpp @@ -1770,6 +1770,7 @@ int32_t ConnectionsManager::sendRequestInternal(TLObject *object, onCompleteFunc request->rpcRequest = wrapInLayer(object, getDatacenterWithId(datacenterId), request); auto cancelledIterator = tokensToBeCancelled.find(request->requestToken); if (cancelledIterator != tokensToBeCancelled.end()) { + if (LOGS_ENABLED) DEBUG_D("(3) request is cancelled before sending, token %d", request->requestToken); tokensToBeCancelled.erase(cancelledIterator); delete request; return request->requestToken; @@ -1801,6 +1802,7 @@ int32_t ConnectionsManager::sendRequest(TLObject *object, onCompleteFunc onCompl request->rpcRequest = wrapInLayer(object, getDatacenterWithId(datacenterId), request); auto cancelledIterator = tokensToBeCancelled.find(request->requestToken); if (cancelledIterator != tokensToBeCancelled.end()) { + if (LOGS_ENABLED) DEBUG_D("(1) request is cancelled before sending, token %d", requestToken); tokensToBeCancelled.erase(cancelledIterator); delete request; } @@ -1847,6 +1849,7 @@ void ConnectionsManager::sendRequest(TLObject *object, onCompleteFunc onComplete if (LOGS_ENABLED) DEBUG_D("send request wrapped %p - %s", request->rpcRequest.get(), typeid(*(request->rpcRequest.get())).name()); auto cancelledIterator = tokensToBeCancelled.find(request->requestToken); if (cancelledIterator != tokensToBeCancelled.end()) { + if (LOGS_ENABLED) DEBUG_D("(2) request is cancelled before sending, token %d", requestToken); tokensToBeCancelled.erase(cancelledIterator); delete request; return; @@ -1981,6 +1984,7 @@ bool ConnectionsManager::cancelRequestInternal(int32_t token, int64_t messageId, } if (token != 0 && connectionState == ConnectionStateWaitingForNetwork) { + if (LOGS_ENABLED) DEBUG_D("request is tried to be cancelled, but it does not even exist, token %d", token); tokensToBeCancelled.insert(token); } diff --git a/TMessagesProj/jni/voip/org_telegram_messenger_voip_Instance.cpp b/TMessagesProj/jni/voip/org_telegram_messenger_voip_Instance.cpp index d2ace30a3..311a2ce00 100644 --- a/TMessagesProj/jni/voip/org_telegram_messenger_voip_Instance.cpp +++ b/TMessagesProj/jni/voip/org_telegram_messenger_voip_Instance.cpp @@ -726,6 +726,7 @@ JNIEXPORT jlong JNICALL Java_org_telegram_messenger_voip_NativeInstance_makeNati bool isRtc = endpointObject.getBooleanField("isRtc"); if (isRtc) { RtcServer rtcServer; + rtcServer.id = static_cast(endpointObject.getIntField("reflectorId")); rtcServer.host = tgvoip::jni::JavaStringToStdString(env, endpointObject.getStringField("ipv4")); rtcServer.port = static_cast(endpointObject.getIntField("port")); rtcServer.login = tgvoip::jni::JavaStringToStdString(env, endpointObject.getStringField("username")); @@ -733,6 +734,16 @@ JNIEXPORT jlong JNICALL Java_org_telegram_messenger_voip_NativeInstance_makeNati rtcServer.isTurn = endpointObject.getBooleanField("turn"); descriptor.rtcServers.push_back(std::move(rtcServer)); } else { + RtcServer rtcServer; + rtcServer.id = static_cast(endpointObject.getIntField("reflectorId")); + rtcServer.host = tgvoip::jni::JavaStringToStdString(env, endpointObject.getStringField("ipv4")); + rtcServer.port = static_cast(endpointObject.getIntField("port")); + rtcServer.login = tgvoip::jni::JavaStringToStdString(env, endpointObject.getStringField("username")); + rtcServer.password = tgvoip::jni::JavaStringToStdString(env, endpointObject.getStringField("password")); + rtcServer.isTurn = true; + rtcServer.isTcp = endpointObject.getBooleanField("tcp"); + descriptor.rtcServers.push_back(std::move(rtcServer)); + Endpoint endpoint; endpoint.endpointId = endpointObject.getLongField("id"); endpoint.host = EndpointHost{tgvoip::jni::JavaStringToStdString(env, endpointObject.getStringField("ipv4")), tgvoip::jni::JavaStringToStdString(env, endpointObject.getStringField("ipv6"))}; @@ -744,7 +755,7 @@ JNIEXPORT jlong JNICALL Java_org_telegram_messenger_voip_NativeInstance_makeNati memcpy(endpoint.peerTag, peerTagBytes, 16); env->ReleaseByteArrayElements(peerTag, peerTagBytes, JNI_ABORT); } - descriptor.endpoints.push_back(std::move(endpoint)); + descriptor.endpoints.push_back(std::move(endpoint)); } } diff --git a/TMessagesProj/jni/voip/tgcalls/v2/InstanceV2Impl.cpp b/TMessagesProj/jni/voip/tgcalls/v2/InstanceV2Impl.cpp index 92bb98cee..59170a4b4 100644 --- a/TMessagesProj/jni/voip/tgcalls/v2/InstanceV2Impl.cpp +++ b/TMessagesProj/jni/voip/tgcalls/v2/InstanceV2Impl.cpp @@ -1087,7 +1087,9 @@ public: beginQualityTimer(0); beginLogTimer(0); - + NativeNetworkingImpl::State initialNetworkState; + initialNetworkState.isReadyToSendData = false; + onNetworkStateUpdated(initialNetworkState); } void beginQualityTimer(int delayMs) { diff --git a/TMessagesProj/jni/voip/webrtc/modules/audio_device/android/audio_track_jni.cc b/TMessagesProj/jni/voip/webrtc/modules/audio_device/android/audio_track_jni.cc index 5afa1ec25..2b78653c2 100644 --- a/TMessagesProj/jni/voip/webrtc/modules/audio_device/android/audio_track_jni.cc +++ b/TMessagesProj/jni/voip/webrtc/modules/audio_device/android/audio_track_jni.cc @@ -176,7 +176,7 @@ int32_t AudioTrackJni::StartPlayout() { int32_t AudioTrackJni::StopPlayout() { RTC_LOG(LS_INFO) << "StopPlayout"; RTC_DCHECK(thread_checker_.IsCurrent()); - if (!initialized_ || !playing_) { + if (!initialized_ || !playing_ || j_audio_track_ == nullptr) { return 0; } if (!j_audio_track_->StopPlayout()) { diff --git a/TMessagesProj/src/main/AndroidManifest.xml b/TMessagesProj/src/main/AndroidManifest.xml index 663a81606..3eefbc963 100644 --- a/TMessagesProj/src/main/AndroidManifest.xml +++ b/TMessagesProj/src/main/AndroidManifest.xml @@ -109,6 +109,7 @@ + + + + + + > flagSecureReasons = new HashMap<>(); - - // Sets FLAG_SECURE to true, until it gets unregistered (when returned callback is run) - // Useful for having multiple reasons to have this flag on. - public static Runnable registerFlagSecure(Window window) { - final long reasonId = (long) (Math.random() * 999999999); - final ArrayList reasonIds; - if (flagSecureReasons.containsKey(window)) { - reasonIds = flagSecureReasons.get(window); - } else { - reasonIds = new ArrayList<>(); - flagSecureReasons.put(window, reasonIds); - } - reasonIds.add(reasonId); - updateFlagSecure(window); - return () -> { - reasonIds.remove(reasonId); - updateFlagSecure(window); - }; - } - - private static void updateFlagSecure(Window window) { - if (Build.VERSION.SDK_INT >= 23) { - if (window == null) { - return; - } - final boolean value = flagSecureReasons.containsKey(window) && flagSecureReasons.get(window).size() > 0; - try { - if (value) { - window.addFlags(WindowManager.LayoutParams.FLAG_SECURE); - } else { - window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE); - } - } catch (Exception ignore) { - } - } - } - public static void openSharing(BaseFragment fragment, String url) { if (fragment == null || fragment.getParentActivity() == null) { return; diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/AnimatedFileDrawableStream.java b/TMessagesProj/src/main/java/org/telegram/messenger/AnimatedFileDrawableStream.java index 34d40c122..55c2fa564 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/AnimatedFileDrawableStream.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/AnimatedFileDrawableStream.java @@ -50,8 +50,9 @@ public class AnimatedFileDrawableStream implements FileLoadOperationStream { debugReportSend = true; if (BuildVars.DEBUG_PRIVATE_VERSION) { throw new RuntimeException("infinity stream reading!!!"); + } else { + FileLog.e(new RuntimeException("infinity stream reading!!!")); } - FileLog.e(new RuntimeException("infinity stream reading!!!")); } return 0; } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/ApplicationLoader.java b/TMessagesProj/src/main/java/org/telegram/messenger/ApplicationLoader.java index 194ff0ca7..f056db780 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/ApplicationLoader.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/ApplicationLoader.java @@ -10,9 +10,7 @@ package org.telegram.messenger; import android.annotation.SuppressLint; import android.app.Activity; -import android.app.AlarmManager; import android.app.Application; -import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; @@ -297,10 +295,6 @@ public class ApplicationLoader extends Application { } } else { applicationContext.stopService(new Intent(applicationContext, NotificationsService.class)); - - PendingIntent pintent = PendingIntent.getService(applicationContext, 0, new Intent(applicationContext, NotificationsService.class), PendingIntent.FLAG_MUTABLE); - AlarmManager alarm = (AlarmManager)applicationContext.getSystemService(Context.ALARM_SERVICE); - alarm.cancel(pintent); } } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/AutoDeleteMediaTask.java b/TMessagesProj/src/main/java/org/telegram/messenger/AutoDeleteMediaTask.java index 564960213..ec678d6c1 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/AutoDeleteMediaTask.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/AutoDeleteMediaTask.java @@ -138,9 +138,6 @@ public class AutoDeleteMediaTask { if (totalSize > maxCacheSize) { ArrayList allFiles = new ArrayList<>(); for (int a = 0; a < paths.size(); a++) { - if (paths.keyAt(a) == FileLoader.MEDIA_DIR_CACHE) { - continue; - } File dir = paths.valueAt(a); fillFilesRecursive(dir, allFiles); } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/BuildVars.java b/TMessagesProj/src/main/java/org/telegram/messenger/BuildVars.java index 5c6aa3c46..31601358e 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/BuildVars.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/BuildVars.java @@ -24,8 +24,8 @@ public class BuildVars { public static boolean USE_CLOUD_STRINGS = true; public static boolean CHECK_UPDATES = true; public static boolean NO_SCOPED_STORAGE = Build.VERSION.SDK_INT <= 29; - public static int BUILD_VERSION = 3164; - public static String BUILD_VERSION_STRING = "9.4.9"; + public static int BUILD_VERSION = 3195; + public static String BUILD_VERSION_STRING = "9.5.0"; public static int APP_ID = 4; public static String APP_HASH = "014b35b6184100b085b0d0572f9b5103"; diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/CacheByChatsController.java b/TMessagesProj/src/main/java/org/telegram/messenger/CacheByChatsController.java index a74be4ff6..57ab33340 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/CacheByChatsController.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/CacheByChatsController.java @@ -61,16 +61,16 @@ public class CacheByChatsController { public static long getDaysInSeconds(int keepMedia) { long seconds; - if (keepMedia == CacheByChatsController.KEEP_MEDIA_FOREVER) { - seconds = Long.MAX_VALUE; - } else if (keepMedia == CacheByChatsController.KEEP_MEDIA_ONE_WEEK) { + if (keepMedia == CacheByChatsController.KEEP_MEDIA_ONE_WEEK) { seconds = 60L * 60L * 24L * 7L; } else if (keepMedia == CacheByChatsController.KEEP_MEDIA_ONE_MONTH) { seconds = 60L * 60L * 24L * 30L; } else if (keepMedia == CacheByChatsController.KEEP_MEDIA_ONE_DAY) { seconds = 60L * 60L * 24L; - } else { //one min + } else if (keepMedia == CacheByChatsController.KEEP_MEDIA_ONE_MINUTE && BuildVars.DEBUG_PRIVATE_VERSION) { //one min seconds = 60L; + } else { + seconds = Long.MAX_VALUE; } return seconds; } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/ContactsController.java b/TMessagesProj/src/main/java/org/telegram/messenger/ContactsController.java index 0c16fd10c..ae006b92c 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/ContactsController.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/ContactsController.java @@ -35,10 +35,13 @@ import org.telegram.tgnet.ConnectionsManager; import org.telegram.tgnet.TLRPC; import org.telegram.ui.Components.Bulletin; +import java.text.CollationKey; +import java.text.Collator; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; +import java.util.Locale; import java.util.concurrent.ConcurrentHashMap; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -121,6 +124,47 @@ public class ContactsController extends BaseController { } } + private static Locale cachedCollatorLocale; + private static Collator cachedCollator; + public static Collator getLocaleCollator() { + if (cachedCollator == null || cachedCollatorLocale != Locale.getDefault()) { + try { + cachedCollator = Collator.getInstance(cachedCollatorLocale = Locale.getDefault()); + cachedCollator.setStrength(Collator.SECONDARY); + } catch (Exception e) { + FileLog.e(e, true); + } + } + if (cachedCollator == null) { + try { + cachedCollator = Collator.getInstance(); + cachedCollator.setStrength(Collator.SECONDARY); + } catch (Exception e) { + FileLog.e(e, true); + } + } + if (cachedCollator == null) { + cachedCollator = new Collator() { + @Override + public int compare(String source, String target) { + if (source == null || target == null) { + return 0; + } + return source.compareTo(target); + } + @Override + public CollationKey getCollationKey(String source) { + return null; + } + @Override + public int hashCode() { + return 0; + } + }; + } + return cachedCollator; + } + public static class Contact { public int contact_id; public String key; @@ -1523,12 +1567,13 @@ public class ContactsController extends BaseController { getMessagesStorage().putContacts(contactsArr, from != 2); } + final Collator collator = getLocaleCollator(); Collections.sort(contactsArr, (tl_contact, tl_contact2) -> { TLRPC.User user1 = usersDict.get(tl_contact.user_id); TLRPC.User user2 = usersDict.get(tl_contact2.user_id); String name1 = UserObject.getFirstName(user1); String name2 = UserObject.getFirstName(user2); - return name1.compareTo(name2); + return collator.compare(name1, name2); }); final ConcurrentHashMap contactsDictionary = new ConcurrentHashMap<>(20, 1.0f, 2); @@ -1598,7 +1643,7 @@ public class ContactsController extends BaseController { } else if (cv2 == '#') { return -1; } - return s.compareTo(s2); + return collator.compare(s, s2); }); Collections.sort(sortedSectionsArrayMutual, (s, s2) -> { @@ -1609,7 +1654,7 @@ public class ContactsController extends BaseController { } else if (cv2 == '#') { return -1; } - return s.compareTo(s2); + return collator.compare(s, s2); }); AndroidUtilities.runOnUIThread(() -> { @@ -1712,6 +1757,7 @@ public class ContactsController extends BaseController { arrayList.add(user); } } + final Collator collator = getLocaleCollator(); for (ArrayList arrayList : phoneBookSectionsDictFinal.values()) { Collections.sort(arrayList, (o1, o2) -> { String name1; @@ -1744,7 +1790,7 @@ public class ContactsController extends BaseController { name2 = ""; } - return name1.compareTo(name2); + return collator.compare(name1, name2); }); } Collections.sort(phoneBookSectionsArrayFinal, (s, s2) -> { @@ -1755,7 +1801,7 @@ public class ContactsController extends BaseController { } else if (cv2 == '#') { return -1; } - return s.compareTo(s2); + return collator.compare(s, s2); }); AndroidUtilities.runOnUIThread(() -> { phoneBookSectionsArray = phoneBookSectionsArrayFinal; @@ -1794,29 +1840,31 @@ public class ContactsController extends BaseController { sortedPhoneBookContacts.add(value); } + final Collator collator = getLocaleCollator(); Collections.sort(sortedPhoneBookContacts, (contact, contact2) -> { - String toComapre1 = contact.first_name; - if (toComapre1.length() == 0) { - toComapre1 = contact.last_name; + String toCompare1 = contact.first_name; + if (toCompare1.length() == 0) { + toCompare1 = contact.last_name; } - String toComapre2 = contact2.first_name; - if (toComapre2.length() == 0) { - toComapre2 = contact2.last_name; + String toCompare2 = contact2.first_name; + if (toCompare2.length() == 0) { + toCompare2 = contact2.last_name; } - return toComapre1.compareTo(toComapre2); + return collator.compare(toCompare1, toCompare2); }); phoneBookContacts = sortedPhoneBookContacts; } private void buildContactsSectionsArrays(boolean sort) { + final Collator collator = getLocaleCollator(); if (sort) { Collections.sort(contacts, (tl_contact, tl_contact2) -> { TLRPC.User user1 = getMessagesController().getUser(tl_contact.user_id); TLRPC.User user2 = getMessagesController().getUser(tl_contact2.user_id); String name1 = UserObject.getFirstName(user1); String name2 = UserObject.getFirstName(user2); - return name1.compareTo(name2); + return collator.compare(name1, name2); }); } @@ -1860,7 +1908,7 @@ public class ContactsController extends BaseController { } else if (cv2 == '#') { return -1; } - return s.compareTo(s2); + return collator.compare(s, s2); }); usersSectionsDict = sectionsDict; @@ -2723,6 +2771,10 @@ public class ContactsController extends BaseController { } } + public static String formatName(TLRPC.User user) { + return formatName(user.first_name, user.last_name, 0); + } + public static String formatName(String firstName, String lastName) { return formatName(firstName, lastName, 0); } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/DatabaseMigrationHelper.java b/TMessagesProj/src/main/java/org/telegram/messenger/DatabaseMigrationHelper.java index 86046f6ec..b16f186ea 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/DatabaseMigrationHelper.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/DatabaseMigrationHelper.java @@ -1228,6 +1228,12 @@ public class DatabaseMigrationHelper { version = 112; } + if (version == 112) { + database.executeFast("CREATE TABLE app_config(data BLOB)").stepThis().dispose(); + database.executeFast("PRAGMA user_version = 113").stepThis().dispose(); + version = 113; + } + return version; } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/Fetcher.java b/TMessagesProj/src/main/java/org/telegram/messenger/Fetcher.java index 44aa1f90a..9db4bd018 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/Fetcher.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/Fetcher.java @@ -21,7 +21,11 @@ public abstract class Fetcher { // Implement this function } - private long requestRemotelyTimeout = 4 * 60 * 1000; + protected boolean useCache(Args arguments) { + return true; + } + + private final long requestRemotelyTimeout = 4 * 60 * 1000; private HashMap, R> cachedResults; private HashMap, ArrayList>> loadingCallbacks; @@ -74,6 +78,9 @@ public abstract class Fetcher { } private void cacheResult(Pair key, R result) { + if (!useCache(key.second)) { + return; + } if (cachedResults == null) { cachedResults = new HashMap<>(); } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java index 6e7f49f09..1c7b899a3 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java @@ -46,6 +46,7 @@ public class FileLoadOperation { } protected static class RequestInfo { + public long requestStartTime; private int requestToken; private long offset; private TLRPC.TL_upload_file response; @@ -138,7 +139,7 @@ public class FileLoadOperation { private volatile int state = stateIdle; private volatile boolean paused; private long downloadedBytes; - private long totalBytesCount; + public long totalBytesCount; private long bytesCountPadding; private long streamStartOffset; private long streamPriorityStartOffset; @@ -1210,7 +1211,7 @@ public class FileLoadOperation { for (int a = 0; a < requestInfos.size(); a++) { RequestInfo requestInfo = requestInfos.get(a); if (requestInfo.requestToken != 0) { - ConnectionsManager.getInstance(currentAccount).cancelRequest(requestInfo.requestToken, false); + ConnectionsManager.getInstance(currentAccount).cancelRequest(requestInfo.requestToken, true); } } } @@ -1418,7 +1419,7 @@ public class FileLoadOperation { } Utilities.stageQueue.postRunnable(() -> { if (BuildVars.LOGS_ENABLED) { - FileLog.d("finished downloading file to " + cacheFileFinal + " time = " + (System.currentTimeMillis() - startTime)); + FileLog.d("finished downloading file to " + cacheFileFinal + " time = " + (System.currentTimeMillis() - startTime) + " dc = " + datacenterId + " size = " + AndroidUtilities.formatFileSize(totalBytesCount)); } if (increment) { if (currentType == ConnectionsManager.FileTypeAudio) { @@ -2064,10 +2065,17 @@ public class FileLoadOperation { } } requestInfo.forceSmallChunk = forceSmallChunk; + if (BuildVars.LOGS_ENABLED) { + requestInfo.requestStartTime = System.currentTimeMillis(); + } + int datacenterId = isCdn ? cdnDatacenterId : this.datacenterId; requestInfo.requestToken = ConnectionsManager.getInstance(currentAccount).sendRequestSync(request, (response, error) -> { if (!requestInfos.contains(requestInfo)) { return; } + if (BuildVars.LOGS_ENABLED) { + FileLog.d("debug_loading: " + request.getClass().getSimpleName() + " time=" + (System.currentTimeMillis() - requestInfo.requestStartTime) + " dcId=" + datacenterId + " cdn=" + isCdn + " connectionType=" + connectionType + " " + isLast); + } if (requestInfo == priorityRequestInfo) { if (BuildVars.DEBUG_VERSION) { FileLog.d("frame get request completed " + priorityRequestInfo.offset); @@ -2177,7 +2185,7 @@ public class FileLoadOperation { } processRequestResult(requestInfo, error); } - }, null, null, flags, isCdn ? cdnDatacenterId : datacenterId, connectionType, isLast); + }, null, null, flags, datacenterId, connectionType, isLast); requestsCount++; } } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoader.java b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoader.java index f78a8498d..0bb64731b 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoader.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoader.java @@ -146,10 +146,13 @@ public class FileLoader extends BaseController { public static final int IMAGE_TYPE_SVG_WHITE = 4; public static final int IMAGE_TYPE_THEME_PREVIEW = 5; - private final FileLoaderPriorityQueue largeFilesQueue = new FileLoaderPriorityQueue("large files queue", 2); - private final FileLoaderPriorityQueue filesQueue = new FileLoaderPriorityQueue("files queue", 3); - private final FileLoaderPriorityQueue imagesQueue = new FileLoaderPriorityQueue("imagesQueue queue", 6); - private final FileLoaderPriorityQueue audioQueue = new FileLoaderPriorityQueue("audioQueue queue", 3); +// private final FileLoaderPriorityQueue largeFilesQueue = new FileLoaderPriorityQueue("large files queue", 2); +// private final FileLoaderPriorityQueue filesQueue = new FileLoaderPriorityQueue("files queue", 3); +// private final FileLoaderPriorityQueue imagesQueue = new FileLoaderPriorityQueue("imagesQueue queue", 6); +// private final FileLoaderPriorityQueue audioQueue = new FileLoaderPriorityQueue("audioQueue queue", 3); + + private final FileLoaderPriorityQueue[] smallFilesQueue = new FileLoaderPriorityQueue[5]; + private final FileLoaderPriorityQueue[] largeFilesQueue = new FileLoaderPriorityQueue[5]; public final static long DEFAULT_MAX_FILE_SIZE = 1024L * 1024L * 2000L; public final static long DEFAULT_MAX_FILE_SIZE_PREMIUM = DEFAULT_MAX_FILE_SIZE * 2L; @@ -159,16 +162,16 @@ public class FileLoader extends BaseController { private volatile static DispatchQueue fileLoaderQueue = new DispatchQueue("fileUploadQueue"); private final FilePathDatabase filePathDatabase; - private LinkedList uploadOperationQueue = new LinkedList<>(); - private LinkedList uploadSmallOperationQueue = new LinkedList<>(); - private ConcurrentHashMap uploadOperationPaths = new ConcurrentHashMap<>(); - private ConcurrentHashMap uploadOperationPathsEnc = new ConcurrentHashMap<>(); + private final LinkedList uploadOperationQueue = new LinkedList<>(); + private final LinkedList uploadSmallOperationQueue = new LinkedList<>(); + private final ConcurrentHashMap uploadOperationPaths = new ConcurrentHashMap<>(); + private final ConcurrentHashMap uploadOperationPathsEnc = new ConcurrentHashMap<>(); private int currentUploadOperationsCount = 0; private int currentUploadSmallOperationsCount = 0; - private ConcurrentHashMap loadOperationPaths = new ConcurrentHashMap<>(); - private ConcurrentHashMap loadOperationPathsUI = new ConcurrentHashMap<>(10, 1, 2); + private final ConcurrentHashMap loadOperationPaths = new ConcurrentHashMap<>(); + private final ConcurrentHashMap loadOperationPathsUI = new ConcurrentHashMap<>(10, 1, 2); private HashMap uploadSizes = new HashMap<>(); private HashMap loadingVideos = new HashMap<>(); @@ -199,6 +202,11 @@ public class FileLoader extends BaseController { public FileLoader(int instance) { super(instance); filePathDatabase = new FilePathDatabase(instance); + for (int i = 0; i < smallFilesQueue.length; i++) { + smallFilesQueue[i] = new FileLoaderPriorityQueue("smallFilesQueue dc" + (i + 1), 5); + largeFilesQueue[i] = new FileLoaderPriorityQueue("largeFilesQueue dc" + (i + 1), 2); + } + dumpFilesQueue(); } public static void setMediaDirs(SparseArray dirs) { @@ -660,7 +668,7 @@ public class FileLoader extends BaseController { FileLoadOperation operation = loadOperationPaths.get(fileName); if (BuildVars.LOGS_ENABLED) { - FileLog.d("checkFile operation fileName=" + fileName + " documentName=" + getDocumentFileName(document) + " operation=" + operation + " priority=" + priority); + FileLog.d("checkFile operation fileName=" + fileName + " documentName=" + getDocumentFileName(document) + " operation=" + operation + " priority=" + priority + " account=" + currentAccount); } priority = getPriorityValue(priority); @@ -723,17 +731,19 @@ public class FileLoader extends BaseController { } } FileLoaderPriorityQueue loaderQueue; - if (type == MEDIA_DIR_AUDIO) { - loaderQueue = audioQueue; - } else if (secureDocument != null || location != null && (imageLocation == null || imageLocation.imageType != IMAGE_TYPE_ANIMATION) || MessageObject.isImageWebDocument(webDocument) || MessageObject.isStickerDocument(document) || MessageObject.isAnimatedStickerDocument(document, true) || MessageObject.isVideoStickerDocument(document)) { - loaderQueue = imagesQueue; + int index = Utilities.clamp(operation.getDatacenterId() - 1, 4, 0); + if (operation.totalBytesCount > 20 * 1024 * 1024) { + loaderQueue = largeFilesQueue[index]; } else { - if (document == null || document.size > 20 * 1024 * 1024) { - loaderQueue = largeFilesQueue; - } else { - loaderQueue = filesQueue; - } + loaderQueue = smallFilesQueue[index]; } +// if (type == MEDIA_DIR_AUDIO) { +// loaderQueue = audioQueue; +// } else if (secureDocument != null || location != null && (imageLocation == null || imageLocation.imageType != IMAGE_TYPE_ANIMATION) || MessageObject.isImageWebDocument(webDocument) || MessageObject.isStickerDocument(document) || MessageObject.isAnimatedStickerDocument(document, true) || MessageObject.isVideoStickerDocument(document)) { +// loaderQueue = imagesQueue; +// } else { + +// } String storeFileName = fileName; @@ -1666,4 +1676,19 @@ public class FileLoader extends BaseController { } return l; } + + Runnable dumpFilesQueueRunnable = () -> { + for (int i = 0; i < smallFilesQueue.length; i++) { + FileLog.d("download queue: dc" + (i + 1) + " small_operations=" + smallFilesQueue[i].allOperations.size() + " large_operations=" + largeFilesQueue[i].allOperations.size()); + } + dumpFilesQueue(); + }; + + public void dumpFilesQueue() { + if (!BuildVars.LOGS_ENABLED) { + return; + } + fileLoaderQueue.cancelRunnable(dumpFilesQueueRunnable); + fileLoaderQueue.postRunnable(dumpFilesQueueRunnable, 10_000); + } } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoaderPriorityQueue.java b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoaderPriorityQueue.java index d70d1b3a1..d83429089 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoaderPriorityQueue.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoaderPriorityQueue.java @@ -11,7 +11,6 @@ public class FileLoaderPriorityQueue { String name; ArrayList allOperations = new ArrayList<>(); - ArrayList activeOperations = new ArrayList<>(); private int PRIORITY_VALUE_MAX = (1 << 20); private int PRIORITY_VALUE_NORMAL = (1 << 16); diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/FilePathDatabase.java b/TMessagesProj/src/main/java/org/telegram/messenger/FilePathDatabase.java index 67318700f..ae104ca77 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/FilePathDatabase.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/FilePathDatabase.java @@ -17,7 +17,7 @@ import java.util.concurrent.CountDownLatch; public class FilePathDatabase { - private final DispatchQueue dispatchQueue; + private DispatchQueue dispatchQueue; private final int currentAccount; private SQLiteDatabase database; @@ -32,13 +32,10 @@ public class FilePathDatabase { public final static int MESSAGE_TYPE_VIDEO_MESSAGE = 0; private final FileMeta metaTmp = new FileMeta(); + boolean databaseCreated; public FilePathDatabase(int currentAccount) { this.currentAccount = currentAccount; - dispatchQueue = new DispatchQueue("files_database_queue_" + currentAccount); - dispatchQueue.postRunnable(() -> { - createDatabase(0, false); - }); } public void createDatabase(int tryCount, boolean fromBackup) { @@ -152,8 +149,8 @@ public class FilePathDatabase { public String getPath(long documentId, int dc, int type, boolean useQueue) { if (useQueue) { - if (BuildVars.DEBUG_VERSION) { - if (dispatchQueue.getHandler() != null && Thread.currentThread() == dispatchQueue.getHandler().getLooper().getThread()) { + if (BuildVars.DEBUG_PRIVATE_VERSION) { + if (dispatchQueue != null && dispatchQueue.getHandler() != null && Thread.currentThread() == dispatchQueue.getHandler().getLooper().getThread()) { throw new RuntimeException("Error, lead to infinity loop"); } } @@ -161,7 +158,8 @@ public class FilePathDatabase { CountDownLatch syncLatch = new CountDownLatch(1); String[] res = new String[1]; - dispatchQueue.postRunnable(() -> { + postRunnable(() -> { + ensureDatabaseCreated(); if (database != null) { SQLiteCursor cursor = null; try { @@ -212,11 +210,33 @@ public class FilePathDatabase { } } + private void ensureDatabaseCreated() { + if (!databaseCreated) { + if (!NativeLoader.loaded()) { + int tryCount = 0; + while (!NativeLoader.loaded()) { + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + tryCount++; + if (tryCount > 5) { + break; + } + } + } + createDatabase(0, false); + databaseCreated = true; + } + } + public void putPath(long id, int dc, int type, String path) { - dispatchQueue.postRunnable(() -> { + postRunnable(() -> { if (BuildVars.DEBUG_VERSION) { FileLog.d("put file path id=" + id + " dc=" + dc + " type=" + type + " path=" + path); } + ensureDatabaseCreated(); if (database == null) { return; } @@ -260,7 +280,8 @@ public class FilePathDatabase { CountDownLatch syncLatch = new CountDownLatch(1); long time = System.currentTimeMillis(); - dispatchQueue.postRunnable(() -> { + postRunnable(() -> { + ensureDatabaseCreated(); try { for (int i = 0; i < arrayListFinal.size(); i++) { MessageObject messageObject = arrayListFinal.get(i); @@ -288,7 +309,8 @@ public class FilePathDatabase { } public void clear() { - dispatchQueue.postRunnable(() -> { + postRunnable(() -> { + ensureDatabaseCreated(); try { database.executeFast("DELETE FROM paths WHERE 1").stepThis().dispose(); database.executeFast("DELETE FROM paths_by_dialog_id WHERE 1").stepThis().dispose(); @@ -301,7 +323,8 @@ public class FilePathDatabase { public boolean hasAnotherRefOnFile(String path) { CountDownLatch syncLatch = new CountDownLatch(1); boolean[] res = new boolean[]{false}; - dispatchQueue.postRunnable(() -> { + postRunnable(() -> { + ensureDatabaseCreated(); try { SQLiteCursor cursor = database.queryFinalized("SELECT document_id FROM paths WHERE path = '" + path + "'"); if (cursor.next()) { @@ -325,7 +348,8 @@ public class FilePathDatabase { if (file == null || fileMeta == null) { return; } - dispatchQueue.postRunnable(() -> { + postRunnable(() -> { + ensureDatabaseCreated(); SQLitePreparedStatement state = null; try { state = database.executeFast("REPLACE INTO paths_by_dialog_id VALUES(?, ?, ?, ?)"); @@ -381,12 +405,14 @@ public class FilePathDatabase { } public DispatchQueue getQueue() { + ensureQueueExist(); return dispatchQueue; } public void removeFiles(List filesToRemove) { - dispatchQueue.postRunnable(() -> { + postRunnable(() -> { try { + ensureDatabaseCreated(); database.beginTransaction(); for (int i = 0; i < filesToRemove.size(); i++) { database.executeFast("DELETE FROM paths_by_dialog_id WHERE path = '" + shield(filesToRemove.get(i).file.getPath()) + "'").stepThis().dispose(); @@ -402,8 +428,9 @@ public class FilePathDatabase { public LongSparseArray> lookupFiles(ArrayList keepMediaFiles) { CountDownLatch syncLatch = new CountDownLatch(1); LongSparseArray> filesByDialogId = new LongSparseArray<>(); - dispatchQueue.postRunnable(() -> { + postRunnable(() -> { try { + ensureDatabaseCreated(); FileMeta fileMetaTmp = new FileMeta(); for (int i = 0; i < keepMediaFiles.size(); i++) { FileMeta fileMeta = getFileDialogId(keepMediaFiles.get(i).file, fileMetaTmp); @@ -429,6 +456,21 @@ public class FilePathDatabase { return filesByDialogId; } + private void postRunnable(Runnable runnable) { + ensureQueueExist(); + dispatchQueue.postRunnable(runnable); + } + + private void ensureQueueExist() { + if (dispatchQueue == null) { + synchronized (this) { + if (dispatchQueue == null) { + dispatchQueue = new DispatchQueue("files_database_queue_" + currentAccount); + } + } + } + } + public static class PathData { public final long id; public final int dc; diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/FlagSecureReason.java b/TMessagesProj/src/main/java/org/telegram/messenger/FlagSecureReason.java new file mode 100644 index 000000000..e13b1c1e6 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/messenger/FlagSecureReason.java @@ -0,0 +1,83 @@ +package org.telegram.messenger; + +import android.view.Window; +import android.view.WindowManager; + +import java.util.HashMap; + +public class FlagSecureReason { + + private static HashMap currentSecureReasons; + + private Window window; + private FlagSecureCondition condition; + + public FlagSecureReason(Window window, FlagSecureCondition condition) { + this.window = window; + this.condition = condition; + } + + private boolean attached = false; + private boolean value = false; + + public void invalidate() { + boolean newValue = attached && condition != null && condition.run(); + if (newValue != value) { + update((value = newValue) ? +1 : -1); + } + } + + public void attach() { + if (attached) { + return; + } + attached = true; + invalidate(); + } + + public void detach() { + if (!attached) { + return; + } + attached = false; + invalidate(); + } + + private void update(int add) { + if (currentSecureReasons == null) { + currentSecureReasons = new HashMap<>(); + } + + Integer count = currentSecureReasons.get(window); + int newCount = Math.max(0, (count == null ? 0 : count) + add); + if (newCount <= 0) { + currentSecureReasons.remove(window); + } else { + currentSecureReasons.put(window, newCount); + } + + updateWindowSecure(window); + } + + private static void updateWindowSecure(Window window) { + if (window == null) { + return; + } + + if (isSecuredNow(window)) { + window.addFlags(WindowManager.LayoutParams.FLAG_SECURE); + } else { + window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE); + } + } + + public static boolean isSecuredNow(Window window) { + return currentSecureReasons != null && currentSecureReasons.get(window) != null; + } + + + public interface FlagSecureCondition { + boolean run(); + } + +} diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/ImageLoader.java b/TMessagesProj/src/main/java/org/telegram/messenger/ImageLoader.java index fd66b1127..574ccb041 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/ImageLoader.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/ImageLoader.java @@ -30,6 +30,7 @@ import android.provider.MediaStore; import android.text.TextUtils; import android.util.SparseArray; +import androidx.annotation.RequiresApi; import androidx.exifinterface.media.ExifInterface; import org.json.JSONArray; @@ -1420,7 +1421,7 @@ public class ImageLoader { } } if (image == null) { - if (useNativeWebpLoader) { + if (useNativeWebpLoader && secureDocumentKey == null) { RandomAccessFile file = new RandomAccessFile(cacheFileFinal, "r"); ByteBuffer buffer = file.getChannel().map(FileChannel.MapMode.READ_ONLY, 0, cacheFileFinal.length()); @@ -1432,8 +1433,11 @@ public class ImageLoader { Utilities.loadWebpImage(image, buffer, buffer.limit(), null, !opts.inPurgeable); file.close(); } else { + String DEBUG_TAG = "secured_document_image"; try { - + if (secureDocumentKey != null || cacheImage.encryptionKeyPath != null) { + FileLog.d( DEBUG_TAG + " try get image from secured document " + secureDocumentKey + " encryption path " + cacheImage.encryptionKeyPath); + } RandomAccessFile f = new RandomAccessFile(cacheFileFinal, "r"); int len = (int) f.length(); int offset = 0; @@ -1457,16 +1461,27 @@ public class ImageLoader { } else if (inEncryptedFile) { EncryptedFileInputStream.decryptBytesWithKeyFile(data, 0, len, cacheImage.encryptionKeyPath); } + if (secureDocumentKey != null || cacheImage.encryptionKeyPath != null) { + FileLog.d(DEBUG_TAG + " check error " + error); + } if (!error) { image = BitmapFactory.decodeByteArray(data, offset, len, opts); + if (secureDocumentKey != null || cacheImage.encryptionKeyPath != null) { + FileLog.d( DEBUG_TAG + " image " + image); + } } } catch (Throwable e) { - + FileLog.e(e); } if (image == null) { FileInputStream is; - if (inEncryptedFile) { + if (secureDocumentKey != null || cacheImage.encryptionKeyPath != null) { + FileLog.d(DEBUG_TAG + " try get image from stream "); + } + if (secureDocumentKey != null) { + is = new EncryptedFileInputStream(cacheFileFinal, secureDocumentKey); + } else if (inEncryptedFile) { is = new EncryptedFileInputStream(cacheFileFinal, cacheImage.encryptionKeyPath); } else { is = new FileInputStream(cacheFileFinal); @@ -1489,10 +1504,23 @@ public class ImageLoader { } catch (Throwable ignore) { } - is.getChannel().position(0); + if (secureDocumentKey != null || cacheImage.encryptionKeyPath != null) { + is.close(); + if (secureDocumentKey != null) { + is = new EncryptedFileInputStream(cacheFileFinal, secureDocumentKey); + } else if (inEncryptedFile) { + is = new EncryptedFileInputStream(cacheFileFinal, cacheImage.encryptionKeyPath); + } + } else { + is.getChannel().position(0); + } } image = BitmapFactory.decodeStream(is, null, opts); is.close(); + + if (secureDocumentKey != null || cacheImage.encryptionKeyPath != null) { + FileLog.d(DEBUG_TAG + " image2 " + image); + } } } } @@ -2229,7 +2257,7 @@ public class ImageLoader { File newPath; try { if (ApplicationLoader.applicationContext.getExternalMediaDirs().length > 0) { - publicMediaDir = ApplicationLoader.applicationContext.getExternalMediaDirs()[0]; + publicMediaDir = getPublicStorageDir(); publicMediaDir = new File(publicMediaDir, "Telegram"); publicMediaDir.mkdirs(); } @@ -2368,6 +2396,20 @@ public class ImageLoader { return mediaDirs; } + @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) + private File getPublicStorageDir() { + File publicMediaDir = ApplicationLoader.applicationContext.getExternalMediaDirs()[0]; + if (!TextUtils.isEmpty(SharedConfig.storageCacheDir)) { + for (int i = 0; i < ApplicationLoader.applicationContext.getExternalMediaDirs().length; i++) { + File f = ApplicationLoader.applicationContext.getExternalMediaDirs()[i]; + if (f != null && f.getPath().startsWith(SharedConfig.storageCacheDir)) { + publicMediaDir = ApplicationLoader.applicationContext.getExternalMediaDirs()[i]; + } + } + } + return publicMediaDir; + } + private boolean canMoveFiles(File from, File to, int type) { RandomAccessFile file = null; try { @@ -2571,7 +2613,7 @@ public class ImageLoader { } } } - }, imageReceiver.getFileLoadingPriority() == FileLoader.PRIORITY_LOW ? 0 : 1); + }); } public BitmapDrawable getImageFromMemory(TLObject fileLocation, String httpUrl, String filter) { diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/LiteMode.java b/TMessagesProj/src/main/java/org/telegram/messenger/LiteMode.java index fa11f4f23..7773d36c5 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/LiteMode.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/LiteMode.java @@ -3,8 +3,22 @@ package org.telegram.messenger; import android.content.Context; import android.content.SharedPreferences; +import android.os.BatteryManager; import android.os.Build; import android.os.PowerManager; +import android.util.SparseArray; +import android.util.SparseIntArray; + +import androidx.annotation.RequiresApi; +import androidx.core.math.MathUtils; + +import org.telegram.tgnet.TLRPC; +import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.Components.AnimatedEmojiDrawable; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.Iterator; import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Components.AnimatedEmojiDrawable; @@ -15,48 +29,59 @@ public class LiteMode { public static final int FLAG_ANIMATED_STICKERS_CHAT = 2; public static final int FLAGS_ANIMATED_STICKERS = FLAG_ANIMATED_STICKERS_KEYBOARD | FLAG_ANIMATED_STICKERS_CHAT; - public static final int FLAG_ANIMATED_EMOJI_KEYBOARD = 4; - public static final int FLAG_ANIMATED_EMOJI_REACTIONS = 8; - public static final int FLAG_ANIMATED_EMOJI_CHAT = 16; + public static final int FLAG_ANIMATED_EMOJI_KEYBOARD_PREMIUM = 4; + public static final int FLAG_ANIMATED_EMOJI_KEYBOARD_NOT_PREMIUM = 16384; + public static final int FLAG_ANIMATED_EMOJI_KEYBOARD = FLAG_ANIMATED_EMOJI_KEYBOARD_PREMIUM | FLAG_ANIMATED_EMOJI_KEYBOARD_NOT_PREMIUM; + public static final int FLAG_ANIMATED_EMOJI_REACTIONS_PREMIUM = 8; + public static final int FLAG_ANIMATED_EMOJI_REACTIONS_NOT_PREMIUM = 8192; + public static final int FLAG_ANIMATED_EMOJI_REACTIONS = FLAG_ANIMATED_EMOJI_REACTIONS_PREMIUM | FLAG_ANIMATED_EMOJI_REACTIONS_NOT_PREMIUM; + public static final int FLAG_ANIMATED_EMOJI_CHAT_PREMIUM = 16; + public static final int FLAG_ANIMATED_EMOJI_CHAT_NOT_PREMIUM = 4096; + public static final int FLAG_ANIMATED_EMOJI_CHAT = FLAG_ANIMATED_EMOJI_CHAT_PREMIUM | FLAG_ANIMATED_EMOJI_CHAT_NOT_PREMIUM; public static final int FLAGS_ANIMATED_EMOJI = FLAG_ANIMATED_EMOJI_KEYBOARD | FLAG_ANIMATED_EMOJI_REACTIONS | FLAG_ANIMATED_EMOJI_CHAT; public static final int FLAG_CHAT_BACKGROUND = 32; public static final int FLAG_CHAT_FORUM_TWOCOLUMN = 64; public static final int FLAG_CHAT_SPOILER = 128; public static final int FLAG_CHAT_BLUR = 256; - public static final int FLAGS_CHAT = FLAG_CHAT_BACKGROUND | FLAG_CHAT_FORUM_TWOCOLUMN | FLAG_CHAT_SPOILER | FLAG_CHAT_BLUR; + public static final int FLAG_CHAT_SCALE = 32768; + public static final int FLAGS_CHAT = FLAG_CHAT_BACKGROUND | FLAG_CHAT_FORUM_TWOCOLUMN | FLAG_CHAT_SPOILER | FLAG_CHAT_BLUR | FLAG_CHAT_SCALE; public static final int FLAG_CALLS_ANIMATIONS = 512; public static final int FLAG_AUTOPLAY_VIDEOS = 1024; public static final int FLAG_AUTOPLAY_GIFS = 2048; - public static final int ENABLED = ( + public static int PRESET_LOW = ( + FLAG_ANIMATED_EMOJI_CHAT_PREMIUM | + FLAG_AUTOPLAY_GIFS + ); // 2064 + public static int PRESET_MEDIUM = ( FLAGS_ANIMATED_STICKERS | - FLAGS_ANIMATED_EMOJI | - FLAGS_CHAT | - FLAG_CALLS_ANIMATIONS - ); - - public static final int PRESET_LOW = 0; - public static final int PRESET_MEDIUM = ( + FLAG_ANIMATED_EMOJI_KEYBOARD_PREMIUM | + FLAG_ANIMATED_EMOJI_REACTIONS_PREMIUM | + FLAG_ANIMATED_EMOJI_CHAT | + FLAG_CHAT_FORUM_TWOCOLUMN | + FLAG_CHAT_BLUR | + FLAG_CALLS_ANIMATIONS | + FLAG_AUTOPLAY_VIDEOS | + FLAG_AUTOPLAY_GIFS + ); // 8031 + public static int PRESET_HIGH = ( FLAGS_ANIMATED_STICKERS | FLAGS_ANIMATED_EMOJI | FLAGS_CHAT | FLAG_CALLS_ANIMATIONS | FLAG_AUTOPLAY_VIDEOS | FLAG_AUTOPLAY_GIFS - ); - public static final int PRESET_HIGH = ( - FLAGS_ANIMATED_STICKERS | - FLAGS_ANIMATED_EMOJI | - FLAGS_CHAT | - FLAG_CALLS_ANIMATIONS | - FLAG_AUTOPLAY_VIDEOS | - FLAG_AUTOPLAY_GIFS - ); - public static final int PRESET_POWER_SAVER = PRESET_LOW; + ); // 65535 + public static int PRESET_POWER_SAVER = 0; - private static boolean powerSaverEnabled; + private static int BATTERY_LOW = 10; + private static int BATTERY_MEDIUM = 10; + private static int BATTERY_HIGH = 10; + + private static int powerSaverLevel; + private static boolean lastPowerSaverApplied; private static int value; private static boolean loaded; @@ -68,20 +93,49 @@ public class LiteMode { public static int getValue(boolean ignorePowerSaving) { if (!loaded) { loadPreference(); - loaded = true; } -// if (!ignorePowerSaving && powerSaverEnabled && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { -// // TODO: cache this value for some time, because this could be executed every draw -// PowerManager powerManager = (PowerManager) ApplicationLoader.applicationContext.getSystemService(Context.POWER_SERVICE); -// if (powerManager != null && powerManager.isPowerSaveMode()) { -// return PRESET_POWER_SAVER; -// } -// } + if (!ignorePowerSaving && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + if (getBatteryLevel() <= powerSaverLevel && powerSaverLevel > 0) { + if (!lastPowerSaverApplied) { + onPowerSaverApplied(lastPowerSaverApplied = true); + } + return PRESET_POWER_SAVER; + } + if (lastPowerSaverApplied) { + onPowerSaverApplied(lastPowerSaverApplied = false); + } + } return value; } + private static int lastBatteryLevelCached = -1; + private static long lastBatteryLevelChecked; + + @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) + public static int getBatteryLevel() { + if (lastBatteryLevelCached < 0 || System.currentTimeMillis() - lastBatteryLevelChecked > 1000 * 12) { + BatteryManager batteryManager = (BatteryManager) ApplicationLoader.applicationContext.getSystemService(Context.BATTERY_SERVICE); + if (batteryManager != null) { + lastBatteryLevelCached = batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY); + lastBatteryLevelChecked = System.currentTimeMillis(); + } + } + return lastBatteryLevelCached; + } + + private static int preprocessFlag(int flag) { + if (flag == FLAG_ANIMATED_EMOJI_KEYBOARD) { + return UserConfig.hasPremiumOnAccounts() ? FLAG_ANIMATED_EMOJI_KEYBOARD_PREMIUM : FLAG_ANIMATED_EMOJI_KEYBOARD_NOT_PREMIUM; + } else if (flag == FLAG_ANIMATED_EMOJI_REACTIONS) { + return UserConfig.hasPremiumOnAccounts() ? FLAG_ANIMATED_EMOJI_REACTIONS_PREMIUM : FLAG_ANIMATED_EMOJI_REACTIONS_NOT_PREMIUM; + } else if (flag == FLAG_ANIMATED_EMOJI_CHAT) { + return UserConfig.hasPremiumOnAccounts() ? FLAG_ANIMATED_EMOJI_CHAT_PREMIUM : FLAG_ANIMATED_EMOJI_CHAT_NOT_PREMIUM; + } + return flag; + } + public static boolean isEnabled(int flag) { - return (getValue() & flag) > 0; + return (getValue() & preprocessFlag(flag)) > 0; } public static boolean isEnabledSetting(int flag) { @@ -93,90 +147,177 @@ public class LiteMode { } public static void toggleFlag(int flag, boolean enabled) { - setAllFlags(enabled ? getValue() | flag : getValue() & ~flag); + setAllFlags(enabled ? getValue(true) | flag : getValue(true) & ~flag); } public static void setAllFlags(int flags) { - int changedFlags = ~getValue() & flags; + // in settings it is already handled. would you handle it? 🫵 + // onFlagsUpdate(value, flags); + value = flags; + savePreference(); + } + + public static void updatePresets(TLRPC.TL_jsonObject json) { + for (int i = 0; i < json.value.size(); ++i) { + TLRPC.TL_jsonObjectValue kv = json.value.get(i); + if ("settings_mask".equals(kv.key) && kv.value instanceof TLRPC.TL_jsonArray) { + ArrayList array = ((TLRPC.TL_jsonArray) kv.value).value; + try { + PRESET_LOW = (int) ((TLRPC.TL_jsonNumber) array.get(0)).value; + PRESET_MEDIUM = (int) ((TLRPC.TL_jsonNumber) array.get(1)).value; + PRESET_HIGH = (int) ((TLRPC.TL_jsonNumber) array.get(2)).value; + } catch (Exception e) { + FileLog.e(e); + } + } else if ("battery_low".equals(kv.key) && kv.value instanceof TLRPC.TL_jsonArray) { + ArrayList array = ((TLRPC.TL_jsonArray) kv.value).value; + try { + BATTERY_LOW = (int) ((TLRPC.TL_jsonNumber) array.get(0)).value; + BATTERY_MEDIUM = (int) ((TLRPC.TL_jsonNumber) array.get(1)).value; + BATTERY_HIGH = (int) ((TLRPC.TL_jsonNumber) array.get(2)).value; + } catch (Exception e) { + FileLog.e(e); + } + } + } + loadPreference(); + } + + public static void loadPreference() { + int defaultValue = PRESET_HIGH, batteryDefaultValue = BATTERY_HIGH; + if (SharedConfig.getDevicePerformanceClass() == SharedConfig.PERFORMANCE_CLASS_LOW) { + defaultValue = PRESET_LOW; + batteryDefaultValue = BATTERY_LOW; + } else if (SharedConfig.getDevicePerformanceClass() == SharedConfig.PERFORMANCE_CLASS_AVERAGE) { + defaultValue = PRESET_MEDIUM; + batteryDefaultValue = BATTERY_MEDIUM; + } + + final SharedPreferences preferences = MessagesController.getGlobalMainSettings(); + if (!preferences.contains("lite_mode2")) { + if (preferences.contains("lite_mode")) { + defaultValue = preferences.getInt("lite_mode", defaultValue); + if (defaultValue == 4095) { + defaultValue = PRESET_HIGH; + } + } else { + if (preferences.contains("light_mode")) { + boolean prevLiteModeEnabled = (preferences.getInt("light_mode", SharedConfig.getDevicePerformanceClass() == SharedConfig.PERFORMANCE_CLASS_LOW ? 1 : 0) & 1) > 0; + if (prevLiteModeEnabled) { + defaultValue = PRESET_LOW; + } else { + defaultValue = PRESET_HIGH; + } + } + // migrate settings + if (preferences.contains("loopStickers")) { + boolean loopStickers = preferences.getBoolean("loopStickers", true); + if (loopStickers) { + defaultValue |= FLAG_ANIMATED_STICKERS_CHAT; + } else { + defaultValue &= ~FLAG_ANIMATED_STICKERS_CHAT; + } + } + if (preferences.contains("autoplay_video")) { + boolean autoplayVideo = preferences.getBoolean("autoplay_video", true) || preferences.getBoolean("autoplay_video_liteforce", false); + if (autoplayVideo) { + defaultValue |= FLAG_AUTOPLAY_VIDEOS; + } else { + defaultValue &= ~FLAG_AUTOPLAY_VIDEOS; + } + } + if (preferences.contains("autoplay_gif")) { + boolean autoplayGif = preferences.getBoolean("autoplay_gif", true); + if (autoplayGif) { + defaultValue |= FLAG_AUTOPLAY_GIFS; + } else { + defaultValue &= ~FLAG_AUTOPLAY_GIFS; + } + } + if (preferences.contains("chatBlur")) { + boolean chatBlur = preferences.getBoolean("chatBlur", true); + if (chatBlur) { + defaultValue |= FLAG_CHAT_BLUR; + } else { + defaultValue &= ~FLAG_CHAT_BLUR; + } + } + } + } + + int prevValue = value; + value = preferences.getInt("lite_mode2", defaultValue); + if (loaded) { + onFlagsUpdate(prevValue, value); + } + powerSaverLevel = preferences.getInt("lite_mode_battery_level", batteryDefaultValue); + loaded = true; + } + + public static void savePreference() { + MessagesController.getGlobalMainSettings().edit().putInt("lite_mode", value).putInt("lite_mode_battery_level", powerSaverLevel).apply(); + } + + public static int getPowerSaverLevel() { + if (!loaded) { + loadPreference(); + } + return powerSaverLevel; + } + + public static void setPowerSaverLevel(int value) { + powerSaverLevel = MathUtils.clamp(value, 0, 100); + savePreference(); + + // check power saver applied + getValue(false); + } + + public static boolean isPowerSaverApplied() { + getValue(false); + return lastPowerSaverApplied; + } + + private static void onPowerSaverApplied(boolean powerSaverApplied) { + if (powerSaverApplied) { + onFlagsUpdate(getValue(true), PRESET_POWER_SAVER); + } else { + onFlagsUpdate(PRESET_POWER_SAVER, getValue(true)); + } + if (onPowerSaverAppliedListeners != null) { + AndroidUtilities.runOnUIThread(() -> { + Iterator> i = onPowerSaverAppliedListeners.iterator(); + while (i.hasNext()) { + Utilities.Callback callback = i.next(); + if (callback != null) { + callback.run(powerSaverApplied); + } + } + }); + } + } + + private static void onFlagsUpdate(int oldValue, int newValue) { + int changedFlags = ~oldValue & newValue; if ((changedFlags & FLAGS_ANIMATED_EMOJI) > 0) { AnimatedEmojiDrawable.updateAll(); } if ((changedFlags & FLAG_CHAT_BACKGROUND) > 0) { Theme.reloadWallpaper(); } - value = flags; - savePreference(); } - public static void loadPreference() { - int defaultValue = PRESET_HIGH; - if (SharedConfig.getDevicePerformanceClass() == SharedConfig.PERFORMANCE_CLASS_LOW) { - defaultValue = PRESET_LOW; - } else if (SharedConfig.getDevicePerformanceClass() == SharedConfig.PERFORMANCE_CLASS_AVERAGE) { - defaultValue = PRESET_MEDIUM; + private static HashSet> onPowerSaverAppliedListeners; + public static void addOnPowerSaverAppliedListener(Utilities.Callback listener) { + if (onPowerSaverAppliedListeners == null) { + onPowerSaverAppliedListeners = new HashSet<>(); } + onPowerSaverAppliedListeners.add(listener); + } - final SharedPreferences preferences = MessagesController.getGlobalMainSettings(); - if (!preferences.contains("lite_mode")) { - if (preferences.contains("light_mode")) { - boolean prevLiteModeEnabled = (preferences.getInt("light_mode", SharedConfig.getDevicePerformanceClass() == SharedConfig.PERFORMANCE_CLASS_LOW ? 1 : 0) & 1) > 0; - if (prevLiteModeEnabled) { - defaultValue = PRESET_LOW; - } else { - defaultValue = PRESET_HIGH; - } - } - // migrate settings - if (preferences.contains("loopStickers")) { - boolean loopStickers = preferences.getBoolean("loopStickers", true); - if (loopStickers) { - defaultValue |= FLAG_ANIMATED_STICKERS_CHAT; - } else { - defaultValue &= ~FLAG_ANIMATED_STICKERS_CHAT; - } - } - if (preferences.contains("autoplay_video")) { - boolean autoplayVideo = preferences.getBoolean("autoplay_video", true); - boolean autoplayVideoForce = preferences.getBoolean("autoplay_video_liteforce", false); - if (autoplayVideo || autoplayVideoForce) { - defaultValue |= FLAG_AUTOPLAY_VIDEOS; - } else { - defaultValue &= ~FLAG_AUTOPLAY_VIDEOS; - } - } - if (preferences.contains("autoplay_gif")) { - boolean autoplayGif = preferences.getBoolean("autoplay_gif", true); - if (autoplayGif) { - defaultValue |= FLAG_AUTOPLAY_GIFS; - } else { - defaultValue &= ~FLAG_AUTOPLAY_GIFS; - } - } - if (preferences.contains("chatBlur")) { - boolean chatBlur = preferences.getBoolean("chatBlur", true); - if (chatBlur) { - defaultValue |= FLAG_CHAT_BLUR; - } else { - defaultValue &= ~FLAG_CHAT_BLUR; - } - } + public static void removeOnPowerSaverAppliedListener(Utilities.Callback listener) { + if (onPowerSaverAppliedListeners != null) { + onPowerSaverAppliedListeners.remove(listener); } - - value = preferences.getInt("lite_mode", defaultValue); - powerSaverEnabled = preferences.getBoolean("lite_mode_power_saver", true); - } - - public static void savePreference() { - MessagesController.getGlobalMainSettings().edit().putInt("lite_mode", value).putBoolean("lite_mode_power_saver", powerSaverEnabled).apply(); - } - - - public static boolean isPowerSaverEnabled() { - return powerSaverEnabled; - } - - public static void setPowerSaverEnabled(boolean enabled) { - powerSaverEnabled = enabled; - savePreference(); } } \ No newline at end of file diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/LocaleController.java b/TMessagesProj/src/main/java/org/telegram/messenger/LocaleController.java index 3b1124374..a156a98c4 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/LocaleController.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/LocaleController.java @@ -483,7 +483,7 @@ public class LocaleController { langCode = langCode.replace("-", "_"); } if (langCode == null || currentLocaleInfo != null && (langCode.equals(currentLocaleInfo.shortName) || langCode.equals(currentLocaleInfo.baseLangCode))) { - applyRemoteLanguage(currentLocaleInfo, langCode, force, force, currentAccount, onDone); + applyRemoteLanguage(currentLocaleInfo, langCode, force, currentAccount, onDone); } } @@ -493,11 +493,11 @@ public class LocaleController { } if (currentLocaleInfo.hasBaseLang()) { if (currentLocaleInfo.baseVersion < baseVersion) { - applyRemoteLanguage(currentLocaleInfo, currentLocaleInfo.baseLangCode, false, false, currentAccount, null); + applyRemoteLanguage(currentLocaleInfo, currentLocaleInfo.baseLangCode, false, currentAccount, null); } } if (currentLocaleInfo.version < version) { - applyRemoteLanguage(currentLocaleInfo, currentLocaleInfo.shortName, false, false, currentAccount, null); + applyRemoteLanguage(currentLocaleInfo, currentLocaleInfo.shortName, false, currentAccount, null); } } @@ -654,7 +654,7 @@ public class LocaleController { saveOtherLanguages(); } localeValues = stringMap; - applyLanguage(localeInfo, true, false, true, false, false, currentAccount, null); + applyLanguage(localeInfo, true, false, true, false, currentAccount, null); return true; } } catch (Exception e) { @@ -849,10 +849,10 @@ public class LocaleController { } public int applyLanguage(LocaleInfo localeInfo, boolean override, boolean init, final int currentAccount) { - return applyLanguage(localeInfo, override, init, false, false, false, currentAccount, null); + return applyLanguage(localeInfo, override, init, false, false, currentAccount, null); } - public int applyLanguage(final LocaleInfo localeInfo, boolean override, boolean init, boolean fromFile, boolean force, boolean forceFullDifference, final int currentAccount, Runnable onDone) { + public int applyLanguage(final LocaleInfo localeInfo, boolean override, boolean init, boolean fromFile, boolean force, final int currentAccount, Runnable onDone) { if (localeInfo == null) { return 0; } @@ -881,13 +881,13 @@ public class LocaleController { boolean isLoadingRemote = false; if ((localeInfo.isRemote() || localeInfo.isUnofficial()) && (force || !pathToFile.exists() || hasBase && !pathToBaseFile.exists())) { if (BuildVars.LOGS_ENABLED) { - FileLog.d("reload locale because one of file doesn't exist" + pathToFile + " " + pathToBaseFile); + FileLog.d("reload locale because one of file doesn't exist " + pathToFile + " " + pathToBaseFile); } isLoadingRemote = true; if (init) { - AndroidUtilities.runOnUIThread(() -> applyRemoteLanguage(localeInfo, null, true, forceFullDifference, currentAccount, onDone)); + AndroidUtilities.runOnUIThread(() -> applyRemoteLanguage(localeInfo, null, true, currentAccount, onDone)); } else { - requestId = applyRemoteLanguage(localeInfo, null, true, forceFullDifference, currentAccount, onDone); + requestId = applyRemoteLanguage(localeInfo, null, true, currentAccount, onDone); } } try { @@ -944,10 +944,13 @@ public class LocaleController { ApplicationLoader.applicationContext.getResources().updateConfiguration(config, ApplicationLoader.applicationContext.getResources().getDisplayMetrics()); changingConfiguration = false; if (reloadLastFile) { + if (BuildVars.LOGS_ENABLED) { + FileLog.d("reload locale because one of file is corrupted " + pathToFile + " " + pathToBaseFile); + } if (init) { - AndroidUtilities.runOnUIThread(() -> reloadCurrentRemoteLocale(currentAccount, null, force, null)); + AndroidUtilities.runOnUIThread(() -> reloadCurrentRemoteLocale(currentAccount, null, true, null)); } else { - reloadCurrentRemoteLocale(currentAccount, null, force, null); + reloadCurrentRemoteLocale(currentAccount, null, true, null); } reloadLastFile = false; } @@ -1585,6 +1588,31 @@ public class LocaleController { return "LOC_ERR"; } + public static String formatSeenDate(long date) { + try { + date *= 1000; + Calendar rightNow = Calendar.getInstance(); + int day = rightNow.get(Calendar.DAY_OF_YEAR); + int year = rightNow.get(Calendar.YEAR); + rightNow.setTimeInMillis(date); + int dateDay = rightNow.get(Calendar.DAY_OF_YEAR); + int dateYear = rightNow.get(Calendar.YEAR); + + if (dateDay == day && year == dateYear) { + return LocaleController.formatString("TodayAtFormattedWithToday", R.string.TodayAtFormattedWithToday, getInstance().formatterDay.format(new Date(date))); + } else if (dateDay + 1 == day && year == dateYear) { + return LocaleController.formatString("YesterdayAtFormatted", R.string.YesterdayAtFormatted, getInstance().formatterDay.format(new Date(date))); + } else if (Math.abs(System.currentTimeMillis() - date) < 31536000000L) { + return LocaleController.formatString("formatDateAtTime", R.string.formatDateAtTime, getInstance().formatterDayMonth.format(new Date(date)), getInstance().formatterDay.format(new Date(date))); + } else { + return LocaleController.formatString("formatDateAtTime", R.string.formatDateAtTime, getInstance().formatterYear.format(new Date(date)), getInstance().formatterDay.format(new Date(date))); + } + } catch (Exception e) { + FileLog.e(e); + } + return "LOC_ERR"; + } + public static String formatDateCallLog(long date) { try { date *= 1000; @@ -2094,8 +2122,10 @@ public class LocaleController { try { final HashMap values; if (difference.from_version == 0) { + FileLog.d("saveRemoteLocaleStrings: difference is straight from the beginning"); values = new HashMap<>(); } else { + FileLog.d("saveRemoteLocaleStrings: difference is from version " + difference.from_version + " ours " + localeInfo.version + " (base version " + localeInfo.baseLangCode + ")"); values = getLocaleFileStrings(finalFile, true); } for (int a = 0; a < difference.strings.size(); a++) { @@ -2113,9 +2143,7 @@ public class LocaleController { values.remove(string.key); } } - if (BuildVars.LOGS_ENABLED) { - FileLog.d("save locale file to " + finalFile); - } + FileLog.d("save locale file to " + finalFile); BufferedWriter writer = new BufferedWriter(new FileWriter(finalFile)); writer.write("\n"); writer.write("\n"); @@ -2129,6 +2157,7 @@ public class LocaleController { if (hasBase) { valuesToSet.putAll(getLocaleFileStrings(localeInfo.getPathToFile())); } + FileLog.d("saved locale file to " + finalFile); AndroidUtilities.runOnUIThread(() -> { if (type == 0) { localeInfo.version = difference.version; @@ -2177,6 +2206,8 @@ public class LocaleController { config.locale = currentLocale; ApplicationLoader.applicationContext.getResources().updateConfiguration(config, ApplicationLoader.applicationContext.getResources().getDisplayMetrics()); changingConfiguration = false; + } else { + FileLog.d("saveRemoteLocaleStrings: currentLocaleInfo != localeInfo, do nothing"); } } catch (Exception e) { FileLog.e(e); @@ -2188,8 +2219,8 @@ public class LocaleController { onDone.run(); } }); - } catch (Exception ignore) { - + } catch (Exception e) { + FileLog.e(e); } } @@ -2272,11 +2303,11 @@ public class LocaleController { }, ConnectionsManager.RequestFlagWithoutLogin); } - private int applyRemoteLanguage(LocaleInfo localeInfo, String langCode, boolean force, boolean forceFullDifference, final int currentAccount, Runnable onDone) { + private int applyRemoteLanguage(LocaleInfo localeInfo, String langCode, boolean force, final int currentAccount, Runnable onDone) { if (localeInfo == null || !localeInfo.isRemote() && !localeInfo.isUnofficial()) { return 0; } - FileLog.d("applyRemoteLanguage " + langCode + " force=" + force + " forceFullDifference=" + forceFullDifference + " currentAccount=" + currentAccount); + FileLog.d("applyRemoteLanguage " + langCode + " force=" + force + " currentAccount=" + currentAccount); int[] requested = new int[1], received = new int[1]; requested[0] = received[0] = 0; Runnable onPartlyDone = () -> { @@ -2286,7 +2317,7 @@ public class LocaleController { } }; if (localeInfo.hasBaseLang() && (langCode == null || langCode.equals(localeInfo.baseLangCode))) { - if (localeInfo.baseVersion != 0 && !forceFullDifference) { + if (localeInfo.baseVersion != 0 && !force) { if (localeInfo.hasBaseLang()) { FileLog.d("applyRemoteLanguage getDifference of base"); TLRPC.TL_langpack_getDifference req = new TLRPC.TL_langpack_getDifference(); @@ -2315,7 +2346,7 @@ public class LocaleController { } } if (langCode == null || langCode.equals(localeInfo.shortName)) { - if (localeInfo.version != 0 && !forceFullDifference) { + if (localeInfo.version != 0 && !force) { FileLog.d("applyRemoteLanguage getDifference"); TLRPC.TL_langpack_getDifference req = new TLRPC.TL_langpack_getDifference(); req.from_version = localeInfo.version; diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/MediaController.java b/TMessagesProj/src/main/java/org/telegram/messenger/MediaController.java index adddadf32..ff2e0223a 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/MediaController.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/MediaController.java @@ -1628,8 +1628,8 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, if (raisedToBack == minCount || accelerometerVertical) { lastAccelerometerDetected = System.currentTimeMillis(); } - if (proximityTouched && (raisedToBack == minCount || accelerometerVertical || System.currentTimeMillis() - lastAccelerometerDetected < 60) && !NotificationsController.audioManager.isWiredHeadsetOn() && !VoIPService.isAnyKindOfCallActive()) { - if (playingMessageObject == null && recordStartRunnable == null && recordingAudio == null && !PhotoViewer.getInstance().isVisible() && ApplicationLoader.isScreenOn && !inputFieldHasText && allowStartRecord && raiseChat != null && !callInProgress) { + if (proximityTouched && (raisedToBack == minCount || accelerometerVertical || System.currentTimeMillis() - lastAccelerometerDetected < 60) && !NotificationsController.audioManager.isWiredHeadsetOn() && !NotificationsController.audioManager.isBluetoothA2dpOn() && !VoIPService.isAnyKindOfCallActive()) { + if (SharedConfig.raiseToSpeak && playingMessageObject == null && recordStartRunnable == null && recordingAudio == null && !PhotoViewer.getInstance().isVisible() && ApplicationLoader.isScreenOn && !inputFieldHasText && allowStartRecord && raiseChat != null && !callInProgress) { if (!raiseToEarRecord) { if (BuildVars.LOGS_ENABLED) { FileLog.d("start record"); @@ -1667,7 +1667,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, countLess = 0; } else if (proximityTouched && ((accelerometerSensor == null || linearSensor == null) && gravitySensor == null) && !VoIPService.isAnyKindOfCallActive()) { if (playingMessageObject != null && !ApplicationLoader.mainInterfacePaused && (playingMessageObject.isVoice() || playingMessageObject.isRoundVideo())) { - if (!useFrontSpeaker && !NotificationsController.audioManager.isWiredHeadsetOn()) { + if (!useFrontSpeaker && !NotificationsController.audioManager.isWiredHeadsetOn() && !NotificationsController.audioManager.isBluetoothA2dpOn()) { if (BuildVars.LOGS_ENABLED) { FileLog.d("start listen by proximity only"); } @@ -2434,7 +2434,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, } public void setVoiceMessagesPlaylist(ArrayList playlist, boolean unread) { - voiceMessagesPlaylist = playlist; + voiceMessagesPlaylist = playlist != null ? new ArrayList<>(playlist) : null; if (voiceMessagesPlaylist != null) { voiceMessagesPlaylistUnread = unread; voiceMessagesPlaylistMap = new SparseArray<>(); @@ -2594,9 +2594,9 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, } } if (audioPlayer != null) { - audioPlayer.setPlaybackSpeed(speed); + audioPlayer.setPlaybackSpeed(Math.round(speed * 10f) / 10f); } else if (videoPlayer != null) { - videoPlayer.setPlaybackSpeed(speed); + videoPlayer.setPlaybackSpeed(Math.round(speed * 10f) / 10f); } MessagesController.getGlobalMainSettings().edit() .putFloat(music ? "musicPlaybackSpeed" : "playbackSpeed", speed) @@ -2768,12 +2768,13 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, isPaused = false; lastProgress = 0; + MessageObject oldMessageObject = playingMessageObject; playingMessageObject = messageObject; if (!SharedConfig.raiseToSpeak) { startRaiseToEarSensors(raiseChat); } startProgressTimer(playingMessageObject); - NotificationCenter.getInstance(messageObject.currentAccount).postNotificationName(NotificationCenter.messagePlayingDidStart, messageObject); + NotificationCenter.getInstance(messageObject.currentAccount).postNotificationName(NotificationCenter.messagePlayingDidStart, messageObject, oldMessageObject); /*try { if (playingMessageObject.audioProgress != 0) { @@ -2943,6 +2944,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, MessagesController.getInstance(messageObject.currentAccount).markMessageContentAsRead(messageObject); } boolean notify = !playMusicAgain; + MessageObject oldMessageObject = playingMessageObject; if (playingMessageObject != null) { notify = false; if (!playMusicAgain) { @@ -3148,7 +3150,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, if (messageObject.isRoundVideo()) { videoPlayer.setStreamType(useFrontSpeaker ? AudioManager.STREAM_VOICE_CALL : AudioManager.STREAM_MUSIC); if (Math.abs(currentPlaybackSpeed - 1.0f) > 0.001f) { - videoPlayer.setPlaybackSpeed(currentPlaybackSpeed); + videoPlayer.setPlaybackSpeed(Math.round(currentPlaybackSpeed * 10f) / 10f); } if (messageObject.forceSeekTo >= 0) { @@ -3257,7 +3259,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, shouldSavePositionForCurrentAudio = name; } if (Math.abs(currentPlaybackSpeed - 1.0f) > 0.001f) { - audioPlayer.setPlaybackSpeed(currentPlaybackSpeed); + audioPlayer.setPlaybackSpeed(Math.round(currentPlaybackSpeed * 10f) / 10f); } audioInfo = null; clearPlaylist(); @@ -3276,7 +3278,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, } shouldSavePositionForCurrentAudio = name; if (Math.abs(currentMusicPlaybackSpeed - 1.0f) > 0.001f) { - audioPlayer.setPlaybackSpeed(currentMusicPlaybackSpeed); + audioPlayer.setPlaybackSpeed(Math.round(currentMusicPlaybackSpeed * 10f) / 10f); } } } @@ -3326,7 +3328,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, // proximityWakeLock.acquire(); } startProgressTimer(playingMessageObject); - NotificationCenter.getInstance(messageObject.currentAccount).postNotificationName(NotificationCenter.messagePlayingDidStart, messageObject); + NotificationCenter.getInstance(messageObject.currentAccount).postNotificationName(NotificationCenter.messagePlayingDidStart, messageObject, oldMessageObject); if (videoPlayer != null) { try { diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/MediaDataController.java b/TMessagesProj/src/main/java/org/telegram/messenger/MediaDataController.java index 0e9342937..2a573dc8e 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/MediaDataController.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/MediaDataController.java @@ -5455,35 +5455,41 @@ public class MediaDataController extends BaseController { if (ids == null) { continue; } - SQLiteCursor cursor; - if (scheduled) { - cursor = getMessagesStorage().getDatabase().queryFinalized(String.format(Locale.US, "SELECT data, mid, date, uid FROM scheduled_messages_v2 WHERE mid IN(%s) AND uid = %d", TextUtils.join(",", ids), dialogId)); - } else { - cursor = getMessagesStorage().getDatabase().queryFinalized(String.format(Locale.US, "SELECT data, mid, date, uid FROM messages_v2 WHERE mid IN(%s) AND uid = %d", TextUtils.join(",", ids), dialogId)); - } - while (cursor.next()) { - NativeByteBuffer data = cursor.byteBufferValue(0); - if (data != null) { - TLRPC.Message message = TLRPC.Message.TLdeserialize(data, data.readInt32(false), false); - message.readAttachPath(data, getUserConfig().clientUserId); - data.reuse(); - message.id = cursor.intValue(1); - message.date = cursor.intValue(2); - message.dialog_id = dialogId; - MessagesStorage.addUsersAndChatsFromMessage(message, usersToLoad, chatsToLoad, null); - result.add(message); + for (int i = 0; i < 2; i++) { + if (i == 1 && !scheduled) { + continue; + } + boolean findInScheduled = i == 1; + SQLiteCursor cursor; + if (findInScheduled) { + cursor = getMessagesStorage().getDatabase().queryFinalized(String.format(Locale.US, "SELECT data, mid, date, uid FROM scheduled_messages_v2 WHERE mid IN(%s) AND uid = %d", TextUtils.join(",", ids), dialogId)); + } else { + cursor = getMessagesStorage().getDatabase().queryFinalized(String.format(Locale.US, "SELECT data, mid, date, uid FROM messages_v2 WHERE mid IN(%s) AND uid = %d", TextUtils.join(",", ids), dialogId)); + } + while (cursor.next()) { + NativeByteBuffer data = cursor.byteBufferValue(0); + if (data != null) { + TLRPC.Message message = TLRPC.Message.TLdeserialize(data, data.readInt32(false), false); + message.readAttachPath(data, getUserConfig().clientUserId); + data.reuse(); + message.id = cursor.intValue(1); + message.date = cursor.intValue(2); + message.dialog_id = dialogId; + MessagesStorage.addUsersAndChatsFromMessage(message, usersToLoad, chatsToLoad, null); + result.add(message); - long channelId = message.peer_id != null ? message.peer_id.channel_id : 0; - ArrayList mids = dialogReplyMessagesIds.get(channelId); - if (mids != null) { - mids.remove((Integer) message.id); - if (mids.isEmpty()) { - dialogReplyMessagesIds.remove(channelId); + long channelId = message.peer_id != null ? message.peer_id.channel_id : 0; + ArrayList mids = dialogReplyMessagesIds.get(channelId); + if (mids != null) { + mids.remove((Integer) message.id); + if (mids.isEmpty()) { + dialogReplyMessagesIds.remove(channelId); + } } } } + cursor.dispose(); } - cursor.dispose(); } if (!usersToLoad.isEmpty()) { @@ -5506,15 +5512,55 @@ public class MediaDataController extends BaseController { TLRPC.messages_Messages messagesRes = (TLRPC.messages_Messages) response; for (int i = 0; i < messagesRes.messages.size(); i++) { TLRPC.Message message = messagesRes.messages.get(i); - if (message.dialog_id == 0) { - message.dialog_id = dialogId; + if (message instanceof TLRPC.TL_messageEmpty) { + messagesRes.messages.remove(i); + i--; } } - MessageObject.fixMessagePeer(messagesRes.messages, channelId); - ImageLoader.saveMessagesThumbs(messagesRes.messages); - broadcastReplyMessages(messagesRes.messages, replyMessageOwners, messagesRes.users, messagesRes.chats, dialogId, false); - getMessagesStorage().putUsersAndChats(messagesRes.users, messagesRes.chats, true, true); - saveReplyMessages(replyMessageOwners, messagesRes.messages, scheduled); + if (messagesRes.messages.size() < req.id.size()) { + TLObject req2; + if (channelId != 0) { + TLRPC.TL_channels_getMessages reqInner = new TLRPC.TL_channels_getMessages(); + reqInner.channel = getMessagesController().getInputChannel(channelId); + reqInner.id = req.id; + req2 = reqInner; + } else { + TLRPC.TL_messages_getMessages reqInner = new TLRPC.TL_messages_getMessages(); + reqInner.id = req.id; + req2 = reqInner; + } + getConnectionsManager().sendRequest(req2, (response2, error2) -> { + if (error == null) { + TLRPC.messages_Messages messagesRes2 = (TLRPC.messages_Messages) response2; + messagesRes.messages.addAll(messagesRes2.messages); + messagesRes.users.addAll(messagesRes2.users); + messagesRes.chats.addAll(messagesRes2.chats); + for (int i = 0; i < messagesRes.messages.size(); i++) { + TLRPC.Message message = messagesRes.messages.get(i); + if (message.dialog_id == 0) { + message.dialog_id = dialogId; + } + } + MessageObject.fixMessagePeer(messagesRes.messages, channelId); + ImageLoader.saveMessagesThumbs(messagesRes.messages); + broadcastReplyMessages(messagesRes.messages, replyMessageOwners, messagesRes.users, messagesRes.chats, dialogId, false); + getMessagesStorage().putUsersAndChats(messagesRes.users, messagesRes.chats, true, true); + saveReplyMessages(replyMessageOwners, messagesRes.messages, scheduled); + } + }); + } else { + for (int i = 0; i < messagesRes.messages.size(); i++) { + TLRPC.Message message = messagesRes.messages.get(i); + if (message.dialog_id == 0) { + message.dialog_id = dialogId; + } + } + MessageObject.fixMessagePeer(messagesRes.messages, channelId); + ImageLoader.saveMessagesThumbs(messagesRes.messages); + broadcastReplyMessages(messagesRes.messages, replyMessageOwners, messagesRes.users, messagesRes.chats, dialogId, false); + getMessagesStorage().putUsersAndChats(messagesRes.users, messagesRes.chats, true, true); + saveReplyMessages(replyMessageOwners, messagesRes.messages, scheduled); + } } if (callback != null) { AndroidUtilities.runOnUIThread(callback); diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/MessageObject.java b/TMessagesProj/src/main/java/org/telegram/messenger/MessageObject.java index b365371e4..6da7e0025 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/MessageObject.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/MessageObject.java @@ -179,6 +179,7 @@ public class MessageObject { public String sponsoredChatInviteHash; public boolean sponsoredShowPeerPhoto; public boolean sponsoredRecommended; + public String sponsoredInfo, sponsoredAdditionalInfo; public TLRPC.TL_forumTopic replyToForumTopic; // used only for reply message in view all messages @@ -3410,7 +3411,7 @@ public class MessageObject { messageText = LocaleController.formatString("MessageLifetimeRemoved", R.string.MessageLifetimeRemoved, UserObject.getFirstName(fromUser)); } } - } else if (messageOwner.action instanceof TLRPC.TL_messageActionAttachMenuBotAllowed) { + } else if (messageOwner.action instanceof TLRPC.TL_messageActionAttachMenuBotAllowed || messageOwner.action instanceof TLRPC.TL_messageActionBotAllowed && ((TLRPC.TL_messageActionBotAllowed) messageOwner.action).attach_menu) { messageText = LocaleController.getString(R.string.ActionAttachMenuBotAllowed); } else if (messageOwner.action instanceof TLRPC.TL_messageActionRequestedPeer) { TLRPC.Peer peer = ((TLRPC.TL_messageActionRequestedPeer) messageOwner.action).peer; @@ -6088,7 +6089,7 @@ public class MessageObject { } public static boolean canAutoplayAnimatedSticker(TLRPC.Document document) { - return (isAnimatedStickerDocument(document, true) || isVideoStickerDocument(document)) && SharedConfig.getDevicePerformanceClass() != SharedConfig.PERFORMANCE_CLASS_LOW && LiteMode.isEnabled(LiteMode.FLAG_ANIMATED_STICKERS_CHAT); + return (isAnimatedStickerDocument(document, true) || isVideoStickerDocument(document)) && SharedConfig.getDevicePerformanceClass() != SharedConfig.PERFORMANCE_CLASS_LOW && LiteMode.isEnabled(LiteMode.FLAG_ANIMATED_STICKERS_KEYBOARD); } public static boolean isMaskDocument(TLRPC.Document document) { diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/MessagesController.java b/TMessagesProj/src/main/java/org/telegram/messenger/MessagesController.java index 4a35b7924..fb28272cd 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/MessagesController.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/MessagesController.java @@ -27,6 +27,7 @@ import android.os.SystemClock; import android.telephony.TelephonyManager; import android.text.TextUtils; import android.util.Base64; +import android.util.Log; import android.util.SparseArray; import android.util.SparseBooleanArray; import android.util.SparseIntArray; @@ -37,6 +38,7 @@ import androidx.core.app.NotificationManagerCompat; import androidx.core.util.Consumer; import org.telegram.SQLite.SQLiteCursor; +import org.telegram.SQLite.SQLiteDatabase; import org.telegram.SQLite.SQLiteException; import org.telegram.SQLite.SQLitePreparedStatement; import org.telegram.messenger.browser.Browser; @@ -61,6 +63,7 @@ import org.telegram.ui.Components.BulletinFactory; import org.telegram.ui.Components.ImageUpdater; import org.telegram.ui.Components.JoinCallAlert; import org.telegram.ui.Components.MotionBackgroundDrawable; +import org.telegram.ui.Components.Premium.LimitReachedBottomSheet; import org.telegram.ui.Components.SwipeGestureSettingsView; import org.telegram.ui.Components.TranscribeButton; import org.telegram.ui.DialogsActivity; @@ -283,6 +286,88 @@ public class MessagesController extends BaseController implements NotificationCe private Theme.OverrideWallpaperInfo uploadingWallpaperInfo; private boolean loadingAppConfig; + private Fetcher appConfigFetcher = new Fetcher() { + @Override + protected void getRemote(int currentAccount, Integer arguments, long hash, Utilities.Callback3 onResult) { + TLRPC.TL_help_getAppConfig req = new TLRPC.TL_help_getAppConfig(); + req.hash = (int) hash; + getConnectionsManager().sendRequest(req, (res, err) -> { + if (res instanceof TLRPC.TL_help_appConfigNotModified) { + onResult.run(true, null, 0L); + } else if (res instanceof TLRPC.TL_help_appConfig) { + onResult.run(false, (TLRPC.TL_help_appConfig) res, (long) ((TLRPC.TL_help_appConfig) res).hash); + } else { + FileLog.e("getting appconfig error " + (err != null ? err.code + " " + err.text : "")); + onResult.run(false, null, 0L); + } + }); + } + + @Override + protected void getLocal(int currentAccount, Integer arguments, Utilities.Callback2 onResult) { + getMessagesStorage().getStorageQueue().postRunnable(() -> { + SQLiteCursor cursor = null; + try { + SQLiteDatabase database = MessagesStorage.getInstance(currentAccount).getDatabase(); + if (database != null) { + TLRPC.help_AppConfig maybeResult = null; + cursor = database.queryFinalized("SELECT data FROM app_config"); + if (cursor.next()) { + NativeByteBuffer data = cursor.byteBufferValue(0); + if (data != null) { + maybeResult = TLRPC.help_AppConfig.TLdeserialize(data, data.readInt32(false), true); + data.reuse(); + } + } + + if (maybeResult instanceof TLRPC.TL_help_appConfig) { + TLRPC.TL_help_appConfig result = (TLRPC.TL_help_appConfig) maybeResult; + onResult.run((long) result.hash, result); + } else { + onResult.run(0L, null); + } + } + } catch (Exception e) { + FileLog.e(e); + onResult.run(0L, null); + } finally { + if (cursor != null) { + cursor.dispose(); + } + } + }); + } + + @Override + protected void setLocal(int currentAccount, Integer arguments, TLRPC.TL_help_appConfig data, long hash) { + MessagesStorage.getInstance(currentAccount).getStorageQueue().postRunnable(() -> { + try { + SQLiteDatabase database = MessagesStorage.getInstance(currentAccount).getDatabase(); + if (database != null) { + if (data == null) { + database.executeFast("DELETE FROM app_config").stepThis().dispose(); + } else { + SQLitePreparedStatement state = database.executeFast("REPLACE INTO app_config VALUES(?)"); + state.requery(); + NativeByteBuffer buffer = new NativeByteBuffer(data.getObjectSize()); + data.serializeToStream(buffer); + state.bindByteBuffer(1, buffer); + state.step(); + buffer.reuse(); + state.dispose(); + } + } + } catch (Exception e) { + FileLog.e(e); + } + }); + } + + @Override + protected boolean useCache(Integer arguments) { + return false; + } + }; public boolean enableJoined; public String linkPrefix; @@ -302,8 +387,8 @@ public class MessagesController extends BaseController implements NotificationCe public int callRingTimeout; public int callConnectTimeout; public int callPacketTimeout; - public int maxPinnedDialogsCount; - public int maxFolderPinnedDialogsCount; + public int maxFolderPinnedDialogsCountDefault; + public int maxFolderPinnedDialogsCountPremium; public int mapProvider; public int availableMapProviders; public int updateCheckDelay; @@ -323,6 +408,7 @@ public class MessagesController extends BaseController implements NotificationCe public float animatedEmojisZoom; public boolean filtersEnabled; public boolean getfileExperimentalParams; + public boolean collectDeviceStats; public boolean showFiltersTooltip; public String venueSearchBot; public String gifSearchBot; @@ -358,6 +444,8 @@ public class MessagesController extends BaseController implements NotificationCe public int savedGifsLimitPremium; public int stickersFavedLimitDefault; public int stickersFavedLimitPremium; + public int maxPinnedDialogsCountDefault; + public int maxPinnedDialogsCountPremium; public int dialogFiltersLimitDefault; public int dialogFiltersLimitPremium; public int dialogFiltersChatsLimitDefault; @@ -404,6 +492,8 @@ public class MessagesController extends BaseController implements NotificationCe private CacheByChatsController cacheByChatsController; private TranslateController translateController; public boolean uploadMarkupVideo; + public boolean giftAttachMenuIcon; + public boolean giftTextFieldIcon; public void getNextReactionMention(long dialogId, int topicId, int count, Consumer callback) { final MessagesStorage messagesStorage = getMessagesStorage(); @@ -1084,8 +1174,8 @@ public class MessagesController extends BaseController implements NotificationCe callConnectTimeout = mainPreferences.getInt("callConnectTimeout", 30000); callPacketTimeout = mainPreferences.getInt("callPacketTimeout", 10000); updateCheckDelay = mainPreferences.getInt("updateCheckDelay", 24 * 60 * 60); - maxPinnedDialogsCount = mainPreferences.getInt("maxPinnedDialogsCount", 5); - maxFolderPinnedDialogsCount = mainPreferences.getInt("maxFolderPinnedDialogsCount", 100); + maxFolderPinnedDialogsCountDefault = mainPreferences.getInt("maxFolderPinnedDialogsCountDefault", 100); + maxFolderPinnedDialogsCountPremium = mainPreferences.getInt("maxFolderPinnedDialogsCountPremium", 100); maxMessageLength = mainPreferences.getInt("maxMessageLength", 4096); maxCaptionLength = mainPreferences.getInt("maxCaptionLength", 1024); mapProvider = mainPreferences.getInt("mapProvider", 0); @@ -1137,6 +1227,10 @@ public class MessagesController extends BaseController implements NotificationCe savedGifsLimitPremium = mainPreferences.getInt("savedGifsLimitPremium", 400); stickersFavedLimitDefault = mainPreferences.getInt("stickersFavedLimitDefault", 5); stickersFavedLimitPremium = mainPreferences.getInt("stickersFavedLimitPremium", 200); + maxPinnedDialogsCountDefault = mainPreferences.getInt("maxPinnedDialogsCountDefault", 5); + maxPinnedDialogsCountPremium = mainPreferences.getInt("maxPinnedDialogsCountPremium", 5); + maxPinnedDialogsCountDefault = mainPreferences.getInt("maxPinnedDialogsCountDefault", 5); + maxPinnedDialogsCountPremium = mainPreferences.getInt("maxPinnedDialogsCountPremium", 5); dialogFiltersLimitDefault = mainPreferences.getInt("dialogFiltersLimitDefault", 10); dialogFiltersLimitPremium = mainPreferences.getInt("dialogFiltersLimitPremium", 20); dialogFiltersChatsLimitDefault = mainPreferences.getInt("dialogFiltersChatsLimitDefault", 100); @@ -1164,6 +1258,8 @@ public class MessagesController extends BaseController implements NotificationCe telegramAntispamGroupSizeMin = mainPreferences.getInt("telegramAntispamGroupSizeMin", 100); hiddenMembersGroupSizeMin = mainPreferences.getInt("hiddenMembersGroupSizeMin", 100); uploadMarkupVideo = mainPreferences.getBoolean("uploadMarkupVideo", true); + giftAttachMenuIcon = mainPreferences.getBoolean("giftAttachMenuIcon", false); + giftTextFieldIcon = mainPreferences.getBoolean("giftTextFieldIcon", false); BuildVars.GOOGLE_AUTH_CLIENT_ID = mainPreferences.getString("googleAuthClientId", BuildVars.GOOGLE_AUTH_CLIENT_ID); Set currencySet = mainPreferences.getStringSet("directPaymentsCurrency", null); @@ -1295,9 +1391,7 @@ public class MessagesController extends BaseController implements NotificationCe } if (BuildVars.DEBUG_VERSION) { - AndroidUtilities.runOnUIThread(() -> { - loadAppConfig(); - }, 2000); + AndroidUtilities.runOnUIThread(this::loadAppConfig, 2000); } topicsController = new TopicsController(num); @@ -1763,6 +1857,41 @@ public class MessagesController extends BaseController implements NotificationCe }); } + private boolean loggedStorageDir; + public void logStorageDir() { + if (collectDeviceStats && !loggedStorageDir) { + ArrayList storageDirs = AndroidUtilities.getRootDirs(); + if (storageDirs.isEmpty()) { + return; + } + + String dir = storageDirs.get(0).getAbsolutePath(); + if (!TextUtils.isEmpty(SharedConfig.storageCacheDir)) { + for (int a = 0, N = storageDirs.size(); a < N; a++) { + String path = storageDirs.get(a).getAbsolutePath(); + if (path.startsWith(SharedConfig.storageCacheDir)) { + dir = path; + break; + } + } + } + final boolean value = dir.contains("/storage/emulated/"); + + TLRPC.TL_help_saveAppLog req = new TLRPC.TL_help_saveAppLog(); + TLRPC.TL_inputAppEvent event = new TLRPC.TL_inputAppEvent(); + event.time = getConnectionsManager().getCurrentTime(); + event.type = "android_sdcard_exists"; + TLRPC.TL_jsonBool bool = new TLRPC.TL_jsonBool(); + bool.value = value; + event.data = bool; + event.peer = value ? 1 : 0; + req.events.add(event); + + getConnectionsManager().sendRequest(req, (response, error) -> {}); + loggedStorageDir = true; + } + } + public void selectDialogFilter(DialogFilter filter, int index) { if (selectedDialogFilter[index] == filter) { return; @@ -1845,939 +1974,1016 @@ public class MessagesController extends BaseController implements NotificationCe return; } loadingAppConfig = true; - TLRPC.TL_help_getAppConfig req = new TLRPC.TL_help_getAppConfig(); - getConnectionsManager().sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(() -> { - if (response instanceof TLRPC.TL_jsonObject) { - SharedPreferences.Editor editor = mainPreferences.edit(); - boolean changed = false; - boolean keelAliveChanged = false; - resetAppConfig(); - TLRPC.TL_jsonObject object = (TLRPC.TL_jsonObject) response; - for (int a = 0, N = object.value.size(); a < N; a++) { - TLRPC.TL_jsonObjectValue value = object.value.get(a); - switch (value.key) { - case "upload_markup_video": { - if (value.value instanceof TLRPC.TL_jsonBool) { - if (uploadMarkupVideo != ((TLRPC.TL_jsonBool) value.value).value) { - uploadMarkupVideo = ((TLRPC.TL_jsonBool) value.value).value; - editor.putBoolean("uploadMarkupVideo", uploadMarkupVideo); - changed = true; - } - } - break; - } - case "login_google_oauth_client_id": { - if (value.value instanceof TLRPC.TL_jsonString) { - String str = ((TLRPC.TL_jsonString) value.value).value; - if (!Objects.equals(BuildVars.GOOGLE_AUTH_CLIENT_ID, str)) { - BuildVars.GOOGLE_AUTH_CLIENT_ID = str; - editor.putString("googleAuthClientId", BuildVars.GOOGLE_AUTH_CLIENT_ID); - changed = true; - } - } - break; - } - case "premium_playmarket_direct_currency_list": { - if (value.value instanceof TLRPC.TL_jsonArray) { - TLRPC.TL_jsonArray arr = (TLRPC.TL_jsonArray) value.value; - HashSet currencySet = new HashSet<>(); - for (TLRPC.JSONValue el : arr.value) { - if (el instanceof TLRPC.TL_jsonString) { - TLRPC.TL_jsonString currencyEl = (TLRPC.TL_jsonString) el; - String currency = currencyEl.value; - currencySet.add(currency); - } - } - - if (!(directPaymentsCurrency.containsAll(currencySet) && currencySet.containsAll(directPaymentsCurrency))) { - directPaymentsCurrency.clear(); - directPaymentsCurrency.addAll(currencySet); - editor.putStringSet("directPaymentsCurrency", currencySet); - changed = true; - - NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.billingProductDetailsUpdated); - } - } - break; - } - case "premium_purchase_blocked": { - if (value.value instanceof TLRPC.TL_jsonBool) { - if (premiumLocked != ((TLRPC.TL_jsonBool) value.value).value) { - premiumLocked = ((TLRPC.TL_jsonBool) value.value).value; - editor.putBoolean("premiumLocked", premiumLocked); - changed = true; - } - } - break; - } - case "premium_bot_username": { - if (value.value instanceof TLRPC.TL_jsonString) { - String string = ((TLRPC.TL_jsonString) value.value).value; - if (!string.equals(premiumBotUsername)) { - premiumBotUsername = string; - editor.putString("premiumBotUsername", premiumBotUsername); - changed = true; - } - } - break; - } - case "premium_invoice_slug": { - if (value.value instanceof TLRPC.TL_jsonString) { - String string = ((TLRPC.TL_jsonString) value.value).value; - if (!string.equals(premiumInvoiceSlug)) { - premiumInvoiceSlug = string; - editor.putString("premiumInvoiceSlug", premiumInvoiceSlug); - changed = true; - } - } - break; - } - case "premium_promo_order": { - if (value.value instanceof TLRPC.TL_jsonArray) { - TLRPC.TL_jsonArray order = (TLRPC.TL_jsonArray) value.value; - changed = savePremiumFeaturesPreviewOrder(editor, order.value); - } - break; - } - case "emojies_animated_zoom": { - if (value.value instanceof TLRPC.TL_jsonNumber) { - TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; - if (animatedEmojisZoom != number.value) { - animatedEmojisZoom = (float) number.value; - editor.putFloat("animatedEmojisZoom", animatedEmojisZoom); - changed = true; - } - } - break; - } - case "getfile_experimental_params": { - if (value.value instanceof TLRPC.TL_jsonBool) { - TLRPC.TL_jsonBool bool = (TLRPC.TL_jsonBool) value.value; - if (bool.value != getfileExperimentalParams) { - getfileExperimentalParams = bool.value; - editor.putBoolean("getfileExperimentalParams", getfileExperimentalParams); - changed = true; - } - } - break; - } - case "dialog_filters_enabled": { - if (value.value instanceof TLRPC.TL_jsonBool) { - TLRPC.TL_jsonBool bool = (TLRPC.TL_jsonBool) value.value; - if (bool.value != filtersEnabled) { - filtersEnabled = bool.value; - editor.putBoolean("filtersEnabled", filtersEnabled); - changed = true; - } - } - break; - } - case "dialog_filters_tooltip": { - if (value.value instanceof TLRPC.TL_jsonBool) { - TLRPC.TL_jsonBool bool = (TLRPC.TL_jsonBool) value.value; - if (bool.value != showFiltersTooltip) { - showFiltersTooltip = bool.value; - editor.putBoolean("showFiltersTooltip", showFiltersTooltip); - changed = true; - getNotificationCenter().postNotificationName(NotificationCenter.filterSettingsUpdated); - } - } - break; - } - case "youtube_pip": { - if (value.value instanceof TLRPC.TL_jsonString) { - TLRPC.TL_jsonString string = (TLRPC.TL_jsonString) value.value; - if (!string.value.equals(youtubePipType)) { - youtubePipType = string.value; - editor.putString("youtubePipType", youtubePipType); - changed = true; - } - } - break; - } - case "background_connection": { - if (value.value instanceof TLRPC.TL_jsonBool) { - TLRPC.TL_jsonBool bool = (TLRPC.TL_jsonBool) value.value; - if (bool.value != backgroundConnection) { - backgroundConnection = bool.value; - editor.putBoolean("backgroundConnection", backgroundConnection); - changed = true; - keelAliveChanged = true; - } - } - break; - } - case "keep_alive_service": { - if (value.value instanceof TLRPC.TL_jsonBool) { - TLRPC.TL_jsonBool bool = (TLRPC.TL_jsonBool) value.value; - if (bool.value != keepAliveService) { - keepAliveService = bool.value; - editor.putBoolean("keepAliveService", keepAliveService); - changed = true; - keelAliveChanged = true; - } - } - break; - } - case "qr_login_camera": { - if (value.value instanceof TLRPC.TL_jsonBool) { - TLRPC.TL_jsonBool bool = (TLRPC.TL_jsonBool) value.value; - if (bool.value != qrLoginCamera) { - qrLoginCamera = bool.value; - editor.putBoolean("qrLoginCamera", qrLoginCamera); - changed = true; - } - } - break; - } - case "save_gifs_with_stickers": { - if (value.value instanceof TLRPC.TL_jsonBool) { - TLRPC.TL_jsonBool bool = (TLRPC.TL_jsonBool) value.value; - if (bool.value != saveGifsWithStickers) { - saveGifsWithStickers = bool.value; - editor.putBoolean("saveGifsWithStickers", saveGifsWithStickers); - changed = true; - } - } - break; - } - case "url_auth_domains": { - HashSet newDomains = new HashSet<>(); - if (value.value instanceof TLRPC.TL_jsonArray) { - TLRPC.TL_jsonArray array = (TLRPC.TL_jsonArray) value.value; - for (int b = 0, N2 = array.value.size(); b < N2; b++) { - TLRPC.JSONValue val = array.value.get(b); - if (val instanceof TLRPC.TL_jsonString) { - TLRPC.TL_jsonString string = (TLRPC.TL_jsonString) val; - newDomains.add(string.value); - } - } - } - if (!authDomains.equals(newDomains)) { - authDomains = newDomains; - editor.putStringSet("authDomains", authDomains); - changed = true; - } - break; - } - case "autologin_domains": { - HashSet newDomains = new HashSet<>(); - if (value.value instanceof TLRPC.TL_jsonArray) { - TLRPC.TL_jsonArray array = (TLRPC.TL_jsonArray) value.value; - for (int b = 0, N2 = array.value.size(); b < N2; b++) { - TLRPC.JSONValue val = array.value.get(b); - if (val instanceof TLRPC.TL_jsonString) { - TLRPC.TL_jsonString string = (TLRPC.TL_jsonString) val; - newDomains.add(string.value); - } - } - } - if (!autologinDomains.equals(newDomains)) { - autologinDomains = newDomains; - editor.putStringSet("autologinDomains", autologinDomains); - changed = true; - } - break; - } - case "autologin_token": { - if (value.value instanceof TLRPC.TL_jsonString) { - TLRPC.TL_jsonString string = (TLRPC.TL_jsonString) value.value; - if (!string.value.equals(autologinToken)) { - autologinToken = string.value; - editor.putString("autologinToken", autologinToken); - changed = true; - } - } - break; - } - case "emojies_send_dice": { - HashSet newEmojies = new HashSet<>(); - if (value.value instanceof TLRPC.TL_jsonArray) { - TLRPC.TL_jsonArray array = (TLRPC.TL_jsonArray) value.value; - for (int b = 0, N2 = array.value.size(); b < N2; b++) { - TLRPC.JSONValue val = array.value.get(b); - if (val instanceof TLRPC.TL_jsonString) { - TLRPC.TL_jsonString string = (TLRPC.TL_jsonString) val; - newEmojies.add(string.value.replace("\uFE0F", "")); - } - } - } - if (!diceEmojies.equals(newEmojies)) { - diceEmojies = newEmojies; - editor.putStringSet("diceEmojies", diceEmojies); - changed = true; - } - break; - } - case "gif_search_emojies": { - ArrayList newEmojies = new ArrayList<>(); - if (value.value instanceof TLRPC.TL_jsonArray) { - TLRPC.TL_jsonArray array = (TLRPC.TL_jsonArray) value.value; - for (int b = 0, N2 = array.value.size(); b < N2; b++) { - TLRPC.JSONValue val = array.value.get(b); - if (val instanceof TLRPC.TL_jsonString) { - TLRPC.TL_jsonString string = (TLRPC.TL_jsonString) val; - newEmojies.add(string.value.replace("\uFE0F", "")); - } - } - } - if (!gifSearchEmojies.equals(newEmojies)) { - gifSearchEmojies = newEmojies; - SerializedData serializedData = new SerializedData(); - serializedData.writeInt32(gifSearchEmojies.size()); - for (int b = 0, N2 = gifSearchEmojies.size(); b < N2; b++) { - serializedData.writeString(gifSearchEmojies.get(b)); - } - editor.putString("gifSearchEmojies", Base64.encodeToString(serializedData.toByteArray(), Base64.DEFAULT)); - serializedData.cleanup(); - changed = true; - } - break; - } - case "emojies_send_dice_success": { - try { - HashMap newEmojies = new HashMap<>(); - if (value.value instanceof TLRPC.TL_jsonObject) { - TLRPC.TL_jsonObject jsonObject = (TLRPC.TL_jsonObject) value.value; - for (int b = 0, N2 = jsonObject.value.size(); b < N2; b++) { - TLRPC.TL_jsonObjectValue val = jsonObject.value.get(b); - if (val.value instanceof TLRPC.TL_jsonObject) { - TLRPC.TL_jsonObject jsonObject2 = (TLRPC.TL_jsonObject) val.value; - int n = Integer.MAX_VALUE; - int f = Integer.MAX_VALUE; - for (int c = 0, N3 = jsonObject2.value.size(); c < N3; c++) { - TLRPC.TL_jsonObjectValue val2 = jsonObject2.value.get(c); - if (val2.value instanceof TLRPC.TL_jsonNumber) { - if ("value".equals(val2.key)) { - n = (int) ((TLRPC.TL_jsonNumber) val2.value).value; - } else if ("frame_start".equals(val2.key)) { - f = (int) ((TLRPC.TL_jsonNumber) val2.value).value; - } - } - } - if (f != Integer.MAX_VALUE && n != Integer.MAX_VALUE) { - newEmojies.put(val.key.replace("\uFE0F", ""), new DiceFrameSuccess(f, n)); - } - } - } - } - if (!diceSuccess.equals(newEmojies)) { - diceSuccess = newEmojies; - SerializedData serializedData = new SerializedData(); - serializedData.writeInt32(diceSuccess.size()); - for (HashMap.Entry entry : diceSuccess.entrySet()) { - serializedData.writeString(entry.getKey()); - DiceFrameSuccess frameSuccess = entry.getValue(); - serializedData.writeInt32(frameSuccess.frame); - serializedData.writeInt32(frameSuccess.num); - } - editor.putString("diceSuccess", Base64.encodeToString(serializedData.toByteArray(), Base64.DEFAULT)); - serializedData.cleanup(); - changed = true; - } - } catch (Exception e) { - FileLog.e(e); - } - break; - } - case "autoarchive_setting_available": { - if (value.value instanceof TLRPC.TL_jsonBool) { - TLRPC.TL_jsonBool bool = (TLRPC.TL_jsonBool) value.value; - if (bool.value != autoarchiveAvailable) { - autoarchiveAvailable = bool.value; - editor.putBoolean("autoarchiveAvailable", autoarchiveAvailable); - changed = true; - } - } - break; - } - case "groupcall_video_participants_max": { - if (value.value instanceof TLRPC.TL_jsonNumber) { - TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; - if (number.value != groupCallVideoMaxParticipants) { - groupCallVideoMaxParticipants = (int) number.value; - editor.putInt("groipCallVideoMaxParticipants", groupCallVideoMaxParticipants); - changed = true; - } - } - break; - } - case "chat_read_mark_size_threshold": { - if (value.value instanceof TLRPC.TL_jsonNumber) { - TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; - if (number.value != chatReadMarkSizeThreshold) { - chatReadMarkSizeThreshold = (int) number.value; - editor.putInt("chatReadMarkSizeThreshold", chatReadMarkSizeThreshold); - changed = true; - } - } - break; - } - case "chat_read_mark_expire_period": { - if (value.value instanceof TLRPC.TL_jsonNumber) { - TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; - if (number.value != chatReadMarkExpirePeriod) { - chatReadMarkExpirePeriod = (int) number.value; - editor.putInt("chatReadMarkExpirePeriod", chatReadMarkExpirePeriod); - changed = true; - } - } - break; - } - case "inapp_update_check_delay": { - if (value.value instanceof TLRPC.TL_jsonNumber) { - TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; - if (number.value != updateCheckDelay) { - updateCheckDelay = (int) number.value; - editor.putInt("updateCheckDelay", updateCheckDelay); - changed = true; - } - } else if (value.value instanceof TLRPC.TL_jsonString) { - TLRPC.TL_jsonString number = (TLRPC.TL_jsonString) value.value; - int delay = Utilities.parseInt(number.value); - if (delay != updateCheckDelay) { - updateCheckDelay = delay; - editor.putInt("updateCheckDelay", updateCheckDelay); - changed = true; - } - } - break; - } - case "round_video_encoding": { - if (value.value instanceof TLRPC.TL_jsonObject) { - TLRPC.TL_jsonObject jsonObject = (TLRPC.TL_jsonObject) value.value; - for (int b = 0, N2 = jsonObject.value.size(); b < N2; b++) { - TLRPC.TL_jsonObjectValue value2 = jsonObject.value.get(b); - switch (value2.key) { - case "diameter": { - if (value2.value instanceof TLRPC.TL_jsonNumber) { - TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value2.value; - if (number.value != roundVideoSize) { - roundVideoSize = (int) number.value; - editor.putInt("roundVideoSize", roundVideoSize); - changed = true; - } - } - break; - } - case "video_bitrate": { - if (value2.value instanceof TLRPC.TL_jsonNumber) { - TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value2.value; - if (number.value != roundVideoBitrate) { - roundVideoBitrate = (int) number.value; - editor.putInt("roundVideoBitrate", roundVideoBitrate); - changed = true; - } - } - break; - } - case "audio_bitrate": { - if (value2.value instanceof TLRPC.TL_jsonNumber) { - TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value2.value; - if (number.value != roundAudioBitrate) { - roundAudioBitrate = (int) number.value; - editor.putInt("roundAudioBitrate", roundAudioBitrate); - changed = true; - } - } - break; - } - } - } - } - break; - } - case "stickers_emoji_suggest_only_api": { - if (value.value instanceof TLRPC.TL_jsonBool) { - TLRPC.TL_jsonBool bool = (TLRPC.TL_jsonBool) value.value; - if (bool.value != suggestStickersApiOnly) { - suggestStickersApiOnly = bool.value; - editor.putBoolean("suggestStickersApiOnly", suggestStickersApiOnly); - changed = true; - } - } - break; - } - case "export_regex": { - HashSet newExport = new HashSet<>(); - if (value.value instanceof TLRPC.TL_jsonArray) { - TLRPC.TL_jsonArray array = (TLRPC.TL_jsonArray) value.value; - for (int b = 0, N2 = array.value.size(); b < N2; b++) { - TLRPC.JSONValue val = array.value.get(b); - if (val instanceof TLRPC.TL_jsonString) { - TLRPC.TL_jsonString string = (TLRPC.TL_jsonString) val; - newExport.add(string.value); - } - } - } - if (!exportUri.equals(newExport)) { - exportUri = newExport; - editor.putStringSet("exportUri2", exportUri); - changed = true; - } - break; - } - case "export_group_urls": { - HashSet newExport = new HashSet<>(); - if (value.value instanceof TLRPC.TL_jsonArray) { - TLRPC.TL_jsonArray array = (TLRPC.TL_jsonArray) value.value; - for (int b = 0, N2 = array.value.size(); b < N2; b++) { - TLRPC.JSONValue val = array.value.get(b); - if (val instanceof TLRPC.TL_jsonString) { - TLRPC.TL_jsonString string = (TLRPC.TL_jsonString) val; - newExport.add(string.value); - } - } - } - if (!exportGroupUri.equals(newExport)) { - exportGroupUri = newExport; - editor.putStringSet("exportGroupUri", exportGroupUri); - changed = true; - } - break; - } - case "export_private_urls": { - HashSet newExport = new HashSet<>(); - if (value.value instanceof TLRPC.TL_jsonArray) { - TLRPC.TL_jsonArray array = (TLRPC.TL_jsonArray) value.value; - for (int b = 0, N2 = array.value.size(); b < N2; b++) { - TLRPC.JSONValue val = array.value.get(b); - if (val instanceof TLRPC.TL_jsonString) { - TLRPC.TL_jsonString string = (TLRPC.TL_jsonString) val; - newExport.add(string.value); - } - } - } - if (!exportPrivateUri.equals(newExport)) { - exportPrivateUri = newExport; - editor.putStringSet("exportPrivateUri", exportPrivateUri); - changed = true; - } - break; - } - case "pending_suggestions": { - HashSet newSuggestions = new HashSet<>(); - if (value.value instanceof TLRPC.TL_jsonArray) { - TLRPC.TL_jsonArray array = (TLRPC.TL_jsonArray) value.value; - for (int b = 0, N2 = array.value.size(); b < N2; b++) { - TLRPC.JSONValue val = array.value.get(b); - if (val instanceof TLRPC.TL_jsonString) { - TLRPC.TL_jsonString string = (TLRPC.TL_jsonString) val; - newSuggestions.add(string.value); - } - } - } - if (!pendingSuggestions.equals(newSuggestions)) { - pendingSuggestions = newSuggestions; - editor.putStringSet("pendingSuggestions", pendingSuggestions); - getNotificationCenter().postNotificationName(NotificationCenter.newSuggestionsAvailable); - changed = true; - } - break; - } - case "emojies_sounds": { - try { - HashMap newEmojies = new HashMap<>(); - if (value.value instanceof TLRPC.TL_jsonObject) { - TLRPC.TL_jsonObject jsonObject = (TLRPC.TL_jsonObject) value.value; - for (int b = 0, N2 = jsonObject.value.size(); b < N2; b++) { - TLRPC.TL_jsonObjectValue val = jsonObject.value.get(b); - if (val.value instanceof TLRPC.TL_jsonObject) { - TLRPC.TL_jsonObject jsonObject2 = (TLRPC.TL_jsonObject) val.value; - long i = 0; - long ah = 0; - String fr = null; - for (int c = 0, N3 = jsonObject2.value.size(); c < N3; c++) { - TLRPC.TL_jsonObjectValue val2 = jsonObject2.value.get(c); - if (val2.value instanceof TLRPC.TL_jsonString) { - if ("id".equals(val2.key)) { - i = Utilities.parseLong(((TLRPC.TL_jsonString) val2.value).value); - } else if ("access_hash".equals(val2.key)) { - ah = Utilities.parseLong(((TLRPC.TL_jsonString) val2.value).value); - } else if ("file_reference_base64".equals(val2.key)) { - fr = ((TLRPC.TL_jsonString) val2.value).value; - } - } - } - if (i != 0 && ah != 0 && fr != null) { - newEmojies.put(val.key.replace("\uFE0F", ""), new EmojiSound(i, ah, fr)); - } - } - } - } - if (!emojiSounds.equals(newEmojies)) { - emojiSounds = newEmojies; - SerializedData serializedData = new SerializedData(); - serializedData.writeInt32(emojiSounds.size()); - for (HashMap.Entry entry : emojiSounds.entrySet()) { - serializedData.writeString(entry.getKey()); - EmojiSound emojiSound = entry.getValue(); - serializedData.writeInt64(emojiSound.id); - serializedData.writeInt64(emojiSound.accessHash); - serializedData.writeByteArray(emojiSound.fileReference); - } - editor.putString("emojiSounds", Base64.encodeToString(serializedData.toByteArray(), Base64.DEFAULT)); - serializedData.cleanup(); - changed = true; - } - } catch (Exception e) { - FileLog.e(e); - } - break; - } - case "ringtone_size_max": { - if (value.value instanceof TLRPC.TL_jsonNumber) { - TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; - if (number.value != ringtoneSizeMax) { - ringtoneSizeMax = (int) number.value; - editor.putInt("ringtoneSizeMax", ringtoneSizeMax); - changed = true; - } - } - break; - } - case "ringtone_duration_max": { - if (value.value instanceof TLRPC.TL_jsonNumber) { - TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; - if (number.value != ringtoneDurationMax) { - ringtoneDurationMax = (int) number.value; - editor.putInt("ringtoneDurationMax", ringtoneDurationMax); - changed = true; - } - } - break; - } - case "channels_limit_default": { - if (value.value instanceof TLRPC.TL_jsonNumber) { - TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; - if (number.value != channelsLimitDefault) { - channelsLimitDefault = (int) number.value; - editor.putInt("channelsLimitDefault", channelsLimitDefault); - changed = true; - } - } - break; - } - case "channels_limit_premium": { - if (value.value instanceof TLRPC.TL_jsonNumber) { - TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; - if (number.value != channelsLimitPremium) { - channelsLimitPremium = (int) number.value; - editor.putInt("channelsLimitPremium", channelsLimitPremium); - changed = true; - } - } - break; - } - case "saved_gifs_limit_default": { - if (value.value instanceof TLRPC.TL_jsonNumber) { - TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; - if (number.value != savedGifsLimitDefault) { - savedGifsLimitDefault = (int) number.value; - editor.putInt("savedGifsLimitDefault", savedGifsLimitDefault); - changed = true; - } - } - break; - } - case "saved_gifs_limit_premium": { - if (value.value instanceof TLRPC.TL_jsonNumber) { - TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; - if (number.value != savedGifsLimitPremium) { - savedGifsLimitPremium = (int) number.value; - editor.putInt("savedGifsLimitPremium", savedGifsLimitPremium); - changed = true; - } - } - break; - } - case "stickers_faved_limit_default": { - if (value.value instanceof TLRPC.TL_jsonNumber) { - TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; - if (number.value != stickersFavedLimitDefault) { - stickersFavedLimitDefault = (int) number.value; - editor.putInt("stickersFavedLimitDefault", stickersFavedLimitDefault); - changed = true; - } - } - break; - } - case "stickers_faved_limit_premium": { - if (value.value instanceof TLRPC.TL_jsonNumber) { - TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; - if (number.value != stickersFavedLimitPremium) { - stickersFavedLimitPremium = (int) number.value; - editor.putInt("stickersFavedLimitPremium", stickersFavedLimitPremium); - changed = true; - } - } - break; - } - case "dialog_filters_limit_default": { - if (value.value instanceof TLRPC.TL_jsonNumber) { - TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; - if (number.value != dialogFiltersLimitDefault) { - dialogFiltersLimitDefault = (int) number.value; - editor.putInt("dialogFiltersLimitDefault", dialogFiltersLimitDefault); - changed = true; - } - } - break; - } - case "dialog_filters_limit_premium": { - if (value.value instanceof TLRPC.TL_jsonNumber) { - TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; - if (number.value != dialogFiltersLimitPremium) { - dialogFiltersLimitPremium = (int) number.value; - editor.putInt("dialogFiltersLimitPremium", dialogFiltersLimitPremium); - changed = true; - } - } - break; - } - case "dialog_filters_chats_limit_default": { - if (value.value instanceof TLRPC.TL_jsonNumber) { - TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; - if (number.value != dialogFiltersChatsLimitDefault) { - dialogFiltersChatsLimitDefault = (int) number.value; - editor.putInt("dialogFiltersChatsLimitDefault", dialogFiltersChatsLimitDefault); - changed = true; - } - } - break; - } - case "dialog_filters_chats_limit_premium": { - if (value.value instanceof TLRPC.TL_jsonNumber) { - TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; - if (number.value != dialogFiltersChatsLimitPremium) { - dialogFiltersChatsLimitPremium = (int) number.value; - editor.putInt("dialogFiltersChatsLimitPremium", dialogFiltersChatsLimitPremium); - changed = true; - } - } - break; - } - case "dialog_filters_pinned_limit_default": { - if (value.value instanceof TLRPC.TL_jsonNumber) { - TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; - if (number.value != dialogFiltersPinnedLimitDefault) { - dialogFiltersPinnedLimitDefault = (int) number.value; - editor.putInt("dialogFiltersPinnedLimitDefault", dialogFiltersPinnedLimitDefault); - changed = true; - } - } - break; - } - case "dialog_filters_pinned_limit_premium": { - if (value.value instanceof TLRPC.TL_jsonNumber) { - TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; - if (number.value != dialogFiltersPinnedLimitPremium) { - dialogFiltersPinnedLimitPremium = (int) number.value; - editor.putInt("dialogFiltersPinnedLimitPremium", dialogFiltersPinnedLimitPremium); - changed = true; - } - } - break; - } - case "upload_max_fileparts_default": { - if (value.value instanceof TLRPC.TL_jsonNumber) { - TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; - if (number.value != uploadMaxFileParts) { - uploadMaxFileParts = (int) number.value; - editor.putInt("uploadMaxFileParts", uploadMaxFileParts); - changed = true; - } - } - break; - } - case "upload_max_fileparts_premium": { - if (value.value instanceof TLRPC.TL_jsonNumber) { - TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; - if (number.value != uploadMaxFilePartsPremium) { - uploadMaxFilePartsPremium = (int) number.value; - editor.putInt("uploadMaxFilePartsPremium", uploadMaxFilePartsPremium); - changed = true; - } - } - break; - } - case "channels_public_limit_default": { - if (value.value instanceof TLRPC.TL_jsonNumber) { - TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; - if (number.value != publicLinksLimitDefault) { - publicLinksLimitDefault = (int) number.value; - editor.putInt("publicLinksLimit", publicLinksLimitDefault); - changed = true; - } - } - break; - } - case "channels_public_limit_premium": { - if (value.value instanceof TLRPC.TL_jsonNumber) { - TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; - if (number.value != publicLinksLimitPremium) { - publicLinksLimitPremium = (int) number.value; - editor.putInt("publicLinksLimitPremium", publicLinksLimitPremium); - changed = true; - } - } - break; - } - case "caption_length_limit_default": { - if (value.value instanceof TLRPC.TL_jsonNumber) { - TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; - if (number.value != captionLengthLimitDefault) { - captionLengthLimitDefault = (int) number.value; - editor.putInt("captionLengthLimitDefault", captionLengthLimitDefault); - changed = true; - } - } - break; - } - case "caption_length_limit_premium": { - if (value.value instanceof TLRPC.TL_jsonNumber) { - TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; - if (number.value != captionLengthLimitPremium) { - captionLengthLimitPremium = (int) number.value; - editor.putInt("captionLengthLimitPremium", captionLengthLimitPremium); - changed = true; - } - } - break; - } - case "about_length_limit_default": { - if (value.value instanceof TLRPC.TL_jsonNumber) { - TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; - if (number.value != aboutLengthLimitDefault) { - aboutLengthLimitDefault = (int) number.value; - editor.putInt("aboutLengthLimitDefault", aboutLengthLimitDefault); - changed = true; - } - } - break; - } - case "about_length_limit_premium": { - if (value.value instanceof TLRPC.TL_jsonNumber) { - TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; - if (number.value != aboutLengthLimitPremium) { - aboutLengthLimitPremium = (int) number.value; - editor.putInt("aboutLengthLimitPremium", aboutLengthLimitPremium); - changed = true; - } - } - break; - } - case "reactions_user_max_default": { - if (value.value instanceof TLRPC.TL_jsonNumber) { - TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; - if (number.value != reactionsUserMaxDefault) { - reactionsUserMaxDefault = (int) number.value; - editor.putInt("reactionsUserMaxDefault", reactionsUserMaxDefault); - changed = true; - } - } - break; - } - case "reactions_user_max_premium": { - if (value.value instanceof TLRPC.TL_jsonNumber) { - TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; - if (number.value != reactionsUserMaxPremium) { - reactionsUserMaxPremium = (int) number.value; - editor.putInt("reactionsUserMaxPremium", reactionsUserMaxPremium); - changed = true; - } - } - break; - } - case "reactions_in_chat_max": { - if (value.value instanceof TLRPC.TL_jsonNumber) { - TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; - if (number.value != reactionsInChatMax) { - reactionsInChatMax = (int) number.value; - editor.putInt("reactionsInChatMax", reactionsInChatMax); - changed = true; - } - } - break; - } - case "forum_upgrade_participants_min": { - if (value.value instanceof TLRPC.TL_jsonNumber) { - TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; - if (number.value != forumUpgradeParticipantsMin) { - forumUpgradeParticipantsMin = (int) number.value; - editor.putInt("forumUpgradeParticipantsMin", forumUpgradeParticipantsMin); - changed = true; - } - } - break; - } - case "topics_pinned_limit": { - if (value.value instanceof TLRPC.TL_jsonNumber) { - TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; - if (number.value != topicsPinnedLimit) { - topicsPinnedLimit = (int) number.value; - editor.putInt("topicsPinnedLimit", topicsPinnedLimit); - changed = true; - } - } - break; - } - case "telegram_antispam_user_id": { - if (value.value instanceof TLRPC.TL_jsonString) { - TLRPC.TL_jsonString string = (TLRPC.TL_jsonString) value.value; - try { - long number = Long.parseLong(string.value); - if (number != telegramAntispamUserId) { - telegramAntispamUserId = number; - editor.putLong("telegramAntispamUserId", telegramAntispamUserId); - changed = true; - } - } catch (Exception e) { - FileLog.e(e); - } - } - break; - } - case "telegram_antispam_group_size_min": { - if (value.value instanceof TLRPC.TL_jsonNumber) { - TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; - if (number.value != telegramAntispamGroupSizeMin) { - telegramAntispamGroupSizeMin = (int) number.value; - editor.putInt("telegramAntispamGroupSizeMin", telegramAntispamGroupSizeMin); - changed = true; - } - } - break; - } - case "hidden_members_group_size_min": { - if (value.value instanceof TLRPC.TL_jsonNumber) { - TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; - if (number.value != hiddenMembersGroupSizeMin) { - hiddenMembersGroupSizeMin = (int) number.value; - editor.putInt("hiddenMembersGroupSizeMin", hiddenMembersGroupSizeMin); - changed = true; - } - } - break; - } - } - } - if (changed) { - editor.apply(); - } - if (keelAliveChanged) { - ApplicationLoader.startPushService(); - ConnectionsManager connectionsManager = getConnectionsManager(); - connectionsManager.setPushConnectionEnabled(connectionsManager.isPushConnectionEnabled()); - } + appConfigFetcher.fetch(currentAccount, 0, config -> AndroidUtilities.runOnUIThread(() -> { + if (config != null && config.config instanceof TLRPC.TL_jsonObject) { + applyAppConfig((TLRPC.TL_jsonObject) config.config); } loadingAppConfig = false; })); } + private void applyAppConfig(TLRPC.TL_jsonObject object) { + SharedPreferences.Editor editor = mainPreferences.edit(); + boolean changed = false; + boolean keelAliveChanged = false; + resetAppConfig(); + TLRPC.TL_jsonObject liteAppOptions = null; + for (int a = 0, N = object.value.size(); a < N; a++) { + TLRPC.TL_jsonObjectValue value = object.value.get(a); + switch (value.key) { + case "premium_gift_text_field_icon": { + if (value.value instanceof TLRPC.TL_jsonBool) { + if (giftTextFieldIcon != ((TLRPC.TL_jsonBool) value.value).value) { + giftTextFieldIcon = ((TLRPC.TL_jsonBool) value.value).value; + editor.putBoolean("giftTextFieldIcon", giftTextFieldIcon); + changed = true; + + NotificationCenter.getInstance(currentAccount).postNotificationName(NotificationCenter.didUpdatePremiumGiftFieldIcon); + } + } + break; + } + case "premium_gift_attach_menu_icon": { + if (value.value instanceof TLRPC.TL_jsonBool) { + if (giftAttachMenuIcon != ((TLRPC.TL_jsonBool) value.value).value) { + giftAttachMenuIcon = ((TLRPC.TL_jsonBool) value.value).value; + editor.putBoolean("giftAttachMenuIcon", giftAttachMenuIcon); + changed = true; + } + } + break; + } + case "lite_app_options": { + if (value.value instanceof TLRPC.TL_jsonObject) { + liteAppOptions = (TLRPC.TL_jsonObject) value.value; + } + break; + } + case "lite_device_class": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + int performanceClass = (int) ((TLRPC.TL_jsonNumber) value.value).value; + if (performanceClass > 0) { + SharedConfig.overrideDevicePerformanceClass(performanceClass - 1); + } + } + break; + } + case "upload_markup_video": { + if (value.value instanceof TLRPC.TL_jsonBool) { + if (uploadMarkupVideo != ((TLRPC.TL_jsonBool) value.value).value) { + uploadMarkupVideo = ((TLRPC.TL_jsonBool) value.value).value; + editor.putBoolean("uploadMarkupVideo", uploadMarkupVideo); + changed = true; + } + } + break; + } + case "login_google_oauth_client_id": { + if (value.value instanceof TLRPC.TL_jsonString) { + String str = ((TLRPC.TL_jsonString) value.value).value; + if (!Objects.equals(BuildVars.GOOGLE_AUTH_CLIENT_ID, str)) { + BuildVars.GOOGLE_AUTH_CLIENT_ID = str; + editor.putString("googleAuthClientId", BuildVars.GOOGLE_AUTH_CLIENT_ID); + changed = true; + } + } + break; + } + case "premium_playmarket_direct_currency_list": { + if (value.value instanceof TLRPC.TL_jsonArray) { + TLRPC.TL_jsonArray arr = (TLRPC.TL_jsonArray) value.value; + HashSet currencySet = new HashSet<>(); + for (TLRPC.JSONValue el : arr.value) { + if (el instanceof TLRPC.TL_jsonString) { + TLRPC.TL_jsonString currencyEl = (TLRPC.TL_jsonString) el; + String currency = currencyEl.value; + currencySet.add(currency); + } + } + + if (!(directPaymentsCurrency.containsAll(currencySet) && currencySet.containsAll(directPaymentsCurrency))) { + directPaymentsCurrency.clear(); + directPaymentsCurrency.addAll(currencySet); + editor.putStringSet("directPaymentsCurrency", currencySet); + changed = true; + + NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.billingProductDetailsUpdated); + } + } + break; + } + case "premium_purchase_blocked": { + if (value.value instanceof TLRPC.TL_jsonBool) { + if (premiumLocked != ((TLRPC.TL_jsonBool) value.value).value) { + premiumLocked = ((TLRPC.TL_jsonBool) value.value).value; + editor.putBoolean("premiumLocked", premiumLocked); + changed = true; + } + } + break; + } + case "premium_bot_username": { + if (value.value instanceof TLRPC.TL_jsonString) { + String string = ((TLRPC.TL_jsonString) value.value).value; + if (!string.equals(premiumBotUsername)) { + premiumBotUsername = string; + editor.putString("premiumBotUsername", premiumBotUsername); + changed = true; + } + } + break; + } + case "premium_invoice_slug": { + if (value.value instanceof TLRPC.TL_jsonString) { + String string = ((TLRPC.TL_jsonString) value.value).value; + if (!string.equals(premiumInvoiceSlug)) { + premiumInvoiceSlug = string; + editor.putString("premiumInvoiceSlug", premiumInvoiceSlug); + changed = true; + } + } + break; + } + case "premium_promo_order": { + if (value.value instanceof TLRPC.TL_jsonArray) { + TLRPC.TL_jsonArray order = (TLRPC.TL_jsonArray) value.value; + changed = savePremiumFeaturesPreviewOrder(editor, order.value); + } + break; + } + case "emojies_animated_zoom": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (animatedEmojisZoom != number.value) { + animatedEmojisZoom = (float) number.value; + editor.putFloat("animatedEmojisZoom", animatedEmojisZoom); + changed = true; + } + } + break; + } + case "getfile_experimental_params": { + if (value.value instanceof TLRPC.TL_jsonBool) { + TLRPC.TL_jsonBool bool = (TLRPC.TL_jsonBool) value.value; + if (bool.value != getfileExperimentalParams) { + getfileExperimentalParams = bool.value; + editor.putBoolean("getfileExperimentalParams", getfileExperimentalParams); + changed = true; + } + } + break; + } + case "dialog_filters_enabled": { + if (value.value instanceof TLRPC.TL_jsonBool) { + TLRPC.TL_jsonBool bool = (TLRPC.TL_jsonBool) value.value; + if (bool.value != filtersEnabled) { + filtersEnabled = bool.value; + editor.putBoolean("filtersEnabled", filtersEnabled); + changed = true; + } + } + break; + } + case "dialog_filters_tooltip": { + if (value.value instanceof TLRPC.TL_jsonBool) { + TLRPC.TL_jsonBool bool = (TLRPC.TL_jsonBool) value.value; + if (bool.value != showFiltersTooltip) { + showFiltersTooltip = bool.value; + editor.putBoolean("showFiltersTooltip", showFiltersTooltip); + changed = true; + getNotificationCenter().postNotificationName(NotificationCenter.filterSettingsUpdated); + } + } + break; + } + case "youtube_pip": { + if (value.value instanceof TLRPC.TL_jsonString) { + TLRPC.TL_jsonString string = (TLRPC.TL_jsonString) value.value; + if (!string.value.equals(youtubePipType)) { + youtubePipType = string.value; + editor.putString("youtubePipType", youtubePipType); + changed = true; + } + } + break; + } + case "background_connection": { + if (value.value instanceof TLRPC.TL_jsonBool) { + TLRPC.TL_jsonBool bool = (TLRPC.TL_jsonBool) value.value; + if (bool.value != backgroundConnection) { + backgroundConnection = bool.value; + editor.putBoolean("backgroundConnection", backgroundConnection); + changed = true; + keelAliveChanged = true; + } + } + break; + } + case "keep_alive_service": { + if (value.value instanceof TLRPC.TL_jsonBool) { + TLRPC.TL_jsonBool bool = (TLRPC.TL_jsonBool) value.value; + if (bool.value != keepAliveService) { + keepAliveService = bool.value; + editor.putBoolean("keepAliveService", keepAliveService); + changed = true; + keelAliveChanged = true; + } + } + break; + } + case "qr_login_camera": { + if (value.value instanceof TLRPC.TL_jsonBool) { + TLRPC.TL_jsonBool bool = (TLRPC.TL_jsonBool) value.value; + if (bool.value != qrLoginCamera) { + qrLoginCamera = bool.value; + editor.putBoolean("qrLoginCamera", qrLoginCamera); + changed = true; + } + } + break; + } + case "save_gifs_with_stickers": { + if (value.value instanceof TLRPC.TL_jsonBool) { + TLRPC.TL_jsonBool bool = (TLRPC.TL_jsonBool) value.value; + if (bool.value != saveGifsWithStickers) { + saveGifsWithStickers = bool.value; + editor.putBoolean("saveGifsWithStickers", saveGifsWithStickers); + changed = true; + } + } + break; + } + case "url_auth_domains": { + HashSet newDomains = new HashSet<>(); + if (value.value instanceof TLRPC.TL_jsonArray) { + TLRPC.TL_jsonArray array = (TLRPC.TL_jsonArray) value.value; + for (int b = 0, N2 = array.value.size(); b < N2; b++) { + TLRPC.JSONValue val = array.value.get(b); + if (val instanceof TLRPC.TL_jsonString) { + TLRPC.TL_jsonString string = (TLRPC.TL_jsonString) val; + newDomains.add(string.value); + } + } + } + if (!authDomains.equals(newDomains)) { + authDomains = newDomains; + editor.putStringSet("authDomains", authDomains); + changed = true; + } + break; + } + case "autologin_domains": { + HashSet newDomains = new HashSet<>(); + if (value.value instanceof TLRPC.TL_jsonArray) { + TLRPC.TL_jsonArray array = (TLRPC.TL_jsonArray) value.value; + for (int b = 0, N2 = array.value.size(); b < N2; b++) { + TLRPC.JSONValue val = array.value.get(b); + if (val instanceof TLRPC.TL_jsonString) { + TLRPC.TL_jsonString string = (TLRPC.TL_jsonString) val; + newDomains.add(string.value); + } + } + } + if (!autologinDomains.equals(newDomains)) { + autologinDomains = newDomains; + editor.putStringSet("autologinDomains", autologinDomains); + changed = true; + } + break; + } + case "autologin_token": { + if (value.value instanceof TLRPC.TL_jsonString) { + TLRPC.TL_jsonString string = (TLRPC.TL_jsonString) value.value; + if (!string.value.equals(autologinToken)) { + autologinToken = string.value; + editor.putString("autologinToken", autologinToken); + changed = true; + } + } + break; + } + case "emojies_send_dice": { + HashSet newEmojies = new HashSet<>(); + if (value.value instanceof TLRPC.TL_jsonArray) { + TLRPC.TL_jsonArray array = (TLRPC.TL_jsonArray) value.value; + for (int b = 0, N2 = array.value.size(); b < N2; b++) { + TLRPC.JSONValue val = array.value.get(b); + if (val instanceof TLRPC.TL_jsonString) { + TLRPC.TL_jsonString string = (TLRPC.TL_jsonString) val; + newEmojies.add(string.value.replace("\uFE0F", "")); + } + } + } + if (!diceEmojies.equals(newEmojies)) { + diceEmojies = newEmojies; + editor.putStringSet("diceEmojies", diceEmojies); + changed = true; + } + break; + } + case "gif_search_emojies": { + ArrayList newEmojies = new ArrayList<>(); + if (value.value instanceof TLRPC.TL_jsonArray) { + TLRPC.TL_jsonArray array = (TLRPC.TL_jsonArray) value.value; + for (int b = 0, N2 = array.value.size(); b < N2; b++) { + TLRPC.JSONValue val = array.value.get(b); + if (val instanceof TLRPC.TL_jsonString) { + TLRPC.TL_jsonString string = (TLRPC.TL_jsonString) val; + newEmojies.add(string.value.replace("\uFE0F", "")); + } + } + } + if (!gifSearchEmojies.equals(newEmojies)) { + gifSearchEmojies = newEmojies; + SerializedData serializedData = new SerializedData(); + serializedData.writeInt32(gifSearchEmojies.size()); + for (int b = 0, N2 = gifSearchEmojies.size(); b < N2; b++) { + serializedData.writeString(gifSearchEmojies.get(b)); + } + editor.putString("gifSearchEmojies", Base64.encodeToString(serializedData.toByteArray(), Base64.DEFAULT)); + serializedData.cleanup(); + changed = true; + } + break; + } + case "emojies_send_dice_success": { + try { + HashMap newEmojies = new HashMap<>(); + if (value.value instanceof TLRPC.TL_jsonObject) { + TLRPC.TL_jsonObject jsonObject = (TLRPC.TL_jsonObject) value.value; + for (int b = 0, N2 = jsonObject.value.size(); b < N2; b++) { + TLRPC.TL_jsonObjectValue val = jsonObject.value.get(b); + if (val.value instanceof TLRPC.TL_jsonObject) { + TLRPC.TL_jsonObject jsonObject2 = (TLRPC.TL_jsonObject) val.value; + int n = Integer.MAX_VALUE; + int f = Integer.MAX_VALUE; + for (int c = 0, N3 = jsonObject2.value.size(); c < N3; c++) { + TLRPC.TL_jsonObjectValue val2 = jsonObject2.value.get(c); + if (val2.value instanceof TLRPC.TL_jsonNumber) { + if ("value".equals(val2.key)) { + n = (int) ((TLRPC.TL_jsonNumber) val2.value).value; + } else if ("frame_start".equals(val2.key)) { + f = (int) ((TLRPC.TL_jsonNumber) val2.value).value; + } + } + } + if (f != Integer.MAX_VALUE && n != Integer.MAX_VALUE) { + newEmojies.put(val.key.replace("\uFE0F", ""), new DiceFrameSuccess(f, n)); + } + } + } + } + if (!diceSuccess.equals(newEmojies)) { + diceSuccess = newEmojies; + SerializedData serializedData = new SerializedData(); + serializedData.writeInt32(diceSuccess.size()); + for (HashMap.Entry entry : diceSuccess.entrySet()) { + serializedData.writeString(entry.getKey()); + DiceFrameSuccess frameSuccess = entry.getValue(); + serializedData.writeInt32(frameSuccess.frame); + serializedData.writeInt32(frameSuccess.num); + } + editor.putString("diceSuccess", Base64.encodeToString(serializedData.toByteArray(), Base64.DEFAULT)); + serializedData.cleanup(); + changed = true; + } + } catch (Exception e) { + FileLog.e(e); + } + break; + } + case "autoarchive_setting_available": { + if (value.value instanceof TLRPC.TL_jsonBool) { + TLRPC.TL_jsonBool bool = (TLRPC.TL_jsonBool) value.value; + if (bool.value != autoarchiveAvailable) { + autoarchiveAvailable = bool.value; + editor.putBoolean("autoarchiveAvailable", autoarchiveAvailable); + changed = true; + } + } + break; + } + case "groupcall_video_participants_max": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != groupCallVideoMaxParticipants) { + groupCallVideoMaxParticipants = (int) number.value; + editor.putInt("groipCallVideoMaxParticipants", groupCallVideoMaxParticipants); + changed = true; + } + } + break; + } + case "chat_read_mark_size_threshold": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != chatReadMarkSizeThreshold) { + chatReadMarkSizeThreshold = (int) number.value; + editor.putInt("chatReadMarkSizeThreshold", chatReadMarkSizeThreshold); + changed = true; + } + } + break; + } + case "chat_read_mark_expire_period": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != chatReadMarkExpirePeriod) { + chatReadMarkExpirePeriod = (int) number.value; + editor.putInt("chatReadMarkExpirePeriod", chatReadMarkExpirePeriod); + changed = true; + } + } + break; + } + case "inapp_update_check_delay": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != updateCheckDelay) { + updateCheckDelay = (int) number.value; + editor.putInt("updateCheckDelay", updateCheckDelay); + changed = true; + } + } else if (value.value instanceof TLRPC.TL_jsonString) { + TLRPC.TL_jsonString number = (TLRPC.TL_jsonString) value.value; + int delay = Utilities.parseInt(number.value); + if (delay != updateCheckDelay) { + updateCheckDelay = delay; + editor.putInt("updateCheckDelay", updateCheckDelay); + changed = true; + } + } + break; + } + case "round_video_encoding": { + if (value.value instanceof TLRPC.TL_jsonObject) { + TLRPC.TL_jsonObject jsonObject = (TLRPC.TL_jsonObject) value.value; + for (int b = 0, N2 = jsonObject.value.size(); b < N2; b++) { + TLRPC.TL_jsonObjectValue value2 = jsonObject.value.get(b); + switch (value2.key) { + case "diameter": { + if (value2.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value2.value; + if (number.value != roundVideoSize) { + roundVideoSize = (int) number.value; + editor.putInt("roundVideoSize", roundVideoSize); + changed = true; + } + } + break; + } + case "video_bitrate": { + if (value2.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value2.value; + if (number.value != roundVideoBitrate) { + roundVideoBitrate = (int) number.value; + editor.putInt("roundVideoBitrate", roundVideoBitrate); + changed = true; + } + } + break; + } + case "audio_bitrate": { + if (value2.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value2.value; + if (number.value != roundAudioBitrate) { + roundAudioBitrate = (int) number.value; + editor.putInt("roundAudioBitrate", roundAudioBitrate); + changed = true; + } + } + break; + } + } + } + } + break; + } + case "stickers_emoji_suggest_only_api": { + if (value.value instanceof TLRPC.TL_jsonBool) { + TLRPC.TL_jsonBool bool = (TLRPC.TL_jsonBool) value.value; + if (bool.value != suggestStickersApiOnly) { + suggestStickersApiOnly = bool.value; + editor.putBoolean("suggestStickersApiOnly", suggestStickersApiOnly); + changed = true; + } + } + break; + } + case "export_regex": { + HashSet newExport = new HashSet<>(); + if (value.value instanceof TLRPC.TL_jsonArray) { + TLRPC.TL_jsonArray array = (TLRPC.TL_jsonArray) value.value; + for (int b = 0, N2 = array.value.size(); b < N2; b++) { + TLRPC.JSONValue val = array.value.get(b); + if (val instanceof TLRPC.TL_jsonString) { + TLRPC.TL_jsonString string = (TLRPC.TL_jsonString) val; + newExport.add(string.value); + } + } + } + if (!exportUri.equals(newExport)) { + exportUri = newExport; + editor.putStringSet("exportUri2", exportUri); + changed = true; + } + break; + } + case "export_group_urls": { + HashSet newExport = new HashSet<>(); + if (value.value instanceof TLRPC.TL_jsonArray) { + TLRPC.TL_jsonArray array = (TLRPC.TL_jsonArray) value.value; + for (int b = 0, N2 = array.value.size(); b < N2; b++) { + TLRPC.JSONValue val = array.value.get(b); + if (val instanceof TLRPC.TL_jsonString) { + TLRPC.TL_jsonString string = (TLRPC.TL_jsonString) val; + newExport.add(string.value); + } + } + } + if (!exportGroupUri.equals(newExport)) { + exportGroupUri = newExport; + editor.putStringSet("exportGroupUri", exportGroupUri); + changed = true; + } + break; + } + case "export_private_urls": { + HashSet newExport = new HashSet<>(); + if (value.value instanceof TLRPC.TL_jsonArray) { + TLRPC.TL_jsonArray array = (TLRPC.TL_jsonArray) value.value; + for (int b = 0, N2 = array.value.size(); b < N2; b++) { + TLRPC.JSONValue val = array.value.get(b); + if (val instanceof TLRPC.TL_jsonString) { + TLRPC.TL_jsonString string = (TLRPC.TL_jsonString) val; + newExport.add(string.value); + } + } + } + if (!exportPrivateUri.equals(newExport)) { + exportPrivateUri = newExport; + editor.putStringSet("exportPrivateUri", exportPrivateUri); + changed = true; + } + break; + } + case "pending_suggestions": { + HashSet newSuggestions = new HashSet<>(); + if (value.value instanceof TLRPC.TL_jsonArray) { + TLRPC.TL_jsonArray array = (TLRPC.TL_jsonArray) value.value; + for (int b = 0, N2 = array.value.size(); b < N2; b++) { + TLRPC.JSONValue val = array.value.get(b); + if (val instanceof TLRPC.TL_jsonString) { + TLRPC.TL_jsonString string = (TLRPC.TL_jsonString) val; + newSuggestions.add(string.value); + } + } + } + if (!pendingSuggestions.equals(newSuggestions)) { + pendingSuggestions = newSuggestions; + editor.putStringSet("pendingSuggestions", pendingSuggestions); + getNotificationCenter().postNotificationName(NotificationCenter.newSuggestionsAvailable); + changed = true; + } + break; + } + case "emojies_sounds": { + try { + HashMap newEmojies = new HashMap<>(); + if (value.value instanceof TLRPC.TL_jsonObject) { + TLRPC.TL_jsonObject jsonObject = (TLRPC.TL_jsonObject) value.value; + for (int b = 0, N2 = jsonObject.value.size(); b < N2; b++) { + TLRPC.TL_jsonObjectValue val = jsonObject.value.get(b); + if (val.value instanceof TLRPC.TL_jsonObject) { + TLRPC.TL_jsonObject jsonObject2 = (TLRPC.TL_jsonObject) val.value; + long i = 0; + long ah = 0; + String fr = null; + for (int c = 0, N3 = jsonObject2.value.size(); c < N3; c++) { + TLRPC.TL_jsonObjectValue val2 = jsonObject2.value.get(c); + if (val2.value instanceof TLRPC.TL_jsonString) { + if ("id".equals(val2.key)) { + i = Utilities.parseLong(((TLRPC.TL_jsonString) val2.value).value); + } else if ("access_hash".equals(val2.key)) { + ah = Utilities.parseLong(((TLRPC.TL_jsonString) val2.value).value); + } else if ("file_reference_base64".equals(val2.key)) { + fr = ((TLRPC.TL_jsonString) val2.value).value; + } + } + } + if (i != 0 && ah != 0 && fr != null) { + newEmojies.put(val.key.replace("\uFE0F", ""), new EmojiSound(i, ah, fr)); + } + } + } + } + if (!emojiSounds.equals(newEmojies)) { + emojiSounds = newEmojies; + SerializedData serializedData = new SerializedData(); + serializedData.writeInt32(emojiSounds.size()); + for (HashMap.Entry entry : emojiSounds.entrySet()) { + serializedData.writeString(entry.getKey()); + EmojiSound emojiSound = entry.getValue(); + serializedData.writeInt64(emojiSound.id); + serializedData.writeInt64(emojiSound.accessHash); + serializedData.writeByteArray(emojiSound.fileReference); + } + editor.putString("emojiSounds", Base64.encodeToString(serializedData.toByteArray(), Base64.DEFAULT)); + serializedData.cleanup(); + changed = true; + } + } catch (Exception e) { + FileLog.e(e); + } + break; + } + case "ringtone_size_max": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != ringtoneSizeMax) { + ringtoneSizeMax = (int) number.value; + editor.putInt("ringtoneSizeMax", ringtoneSizeMax); + changed = true; + } + } + break; + } + case "ringtone_duration_max": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != ringtoneDurationMax) { + ringtoneDurationMax = (int) number.value; + editor.putInt("ringtoneDurationMax", ringtoneDurationMax); + changed = true; + } + } + break; + } + case "channels_limit_default": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != channelsLimitDefault) { + channelsLimitDefault = (int) number.value; + editor.putInt("channelsLimitDefault", channelsLimitDefault); + changed = true; + } + } + break; + } + case "channels_limit_premium": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != channelsLimitPremium) { + channelsLimitPremium = (int) number.value; + editor.putInt("channelsLimitPremium", channelsLimitPremium); + changed = true; + } + } + break; + } + case "saved_gifs_limit_default": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != savedGifsLimitDefault) { + savedGifsLimitDefault = (int) number.value; + editor.putInt("savedGifsLimitDefault", savedGifsLimitDefault); + changed = true; + } + } + break; + } + case "saved_gifs_limit_premium": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != savedGifsLimitPremium) { + savedGifsLimitPremium = (int) number.value; + editor.putInt("savedGifsLimitPremium", savedGifsLimitPremium); + changed = true; + } + } + break; + } + case "stickers_faved_limit_default": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != stickersFavedLimitDefault) { + stickersFavedLimitDefault = (int) number.value; + editor.putInt("stickersFavedLimitDefault", stickersFavedLimitDefault); + changed = true; + } + } + break; + } + case "stickers_faved_limit_premium": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != stickersFavedLimitPremium) { + stickersFavedLimitPremium = (int) number.value; + editor.putInt("stickersFavedLimitPremium", stickersFavedLimitPremium); + changed = true; + } + } + break; + } + case "pinned_dialogs_count_max_default": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != maxPinnedDialogsCountDefault) { + maxPinnedDialogsCountDefault = (int) number.value; + editor.putInt("maxPinnedDialogsCountDefault", maxPinnedDialogsCountDefault); + changed = true; + } + } + break; + } + case "pinned_dialogs_count_max_premium": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != maxPinnedDialogsCountPremium) { + maxPinnedDialogsCountPremium = (int) number.value; + editor.putInt("maxPinnedDialogsCountPremium", maxPinnedDialogsCountPremium); + changed = true; + } + } + break; + } + case "dialog_filters_limit_default": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != dialogFiltersLimitDefault) { + dialogFiltersLimitDefault = (int) number.value; + editor.putInt("dialogFiltersLimitDefault", dialogFiltersLimitDefault); + changed = true; + } + } + break; + } + case "dialog_filters_limit_premium": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != dialogFiltersLimitPremium) { + dialogFiltersLimitPremium = (int) number.value; + editor.putInt("dialogFiltersLimitPremium", dialogFiltersLimitPremium); + changed = true; + } + } + break; + } + case "dialog_filters_chats_limit_default": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != dialogFiltersChatsLimitDefault) { + dialogFiltersChatsLimitDefault = (int) number.value; + editor.putInt("dialogFiltersChatsLimitDefault", dialogFiltersChatsLimitDefault); + changed = true; + } + } + break; + } + case "dialog_filters_chats_limit_premium": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != dialogFiltersChatsLimitPremium) { + dialogFiltersChatsLimitPremium = (int) number.value; + editor.putInt("dialogFiltersChatsLimitPremium", dialogFiltersChatsLimitPremium); + changed = true; + } + } + break; + } + case "dialog_filters_pinned_limit_default": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != dialogFiltersPinnedLimitDefault) { + dialogFiltersPinnedLimitDefault = (int) number.value; + editor.putInt("dialogFiltersPinnedLimitDefault", dialogFiltersPinnedLimitDefault); + changed = true; + } + } + break; + } + case "dialog_filters_pinned_limit_premium": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != dialogFiltersPinnedLimitPremium) { + dialogFiltersPinnedLimitPremium = (int) number.value; + editor.putInt("dialogFiltersPinnedLimitPremium", dialogFiltersPinnedLimitPremium); + changed = true; + } + } + break; + } + case "upload_max_fileparts_default": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != uploadMaxFileParts) { + uploadMaxFileParts = (int) number.value; + editor.putInt("uploadMaxFileParts", uploadMaxFileParts); + changed = true; + } + } + break; + } + case "upload_max_fileparts_premium": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != uploadMaxFilePartsPremium) { + uploadMaxFilePartsPremium = (int) number.value; + editor.putInt("uploadMaxFilePartsPremium", uploadMaxFilePartsPremium); + changed = true; + } + } + break; + } + case "channels_public_limit_default": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != publicLinksLimitDefault) { + publicLinksLimitDefault = (int) number.value; + editor.putInt("publicLinksLimit", publicLinksLimitDefault); + changed = true; + } + } + break; + } + case "channels_public_limit_premium": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != publicLinksLimitPremium) { + publicLinksLimitPremium = (int) number.value; + editor.putInt("publicLinksLimitPremium", publicLinksLimitPremium); + changed = true; + } + } + break; + } + case "caption_length_limit_default": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != captionLengthLimitDefault) { + captionLengthLimitDefault = (int) number.value; + editor.putInt("captionLengthLimitDefault", captionLengthLimitDefault); + changed = true; + } + } + break; + } + case "caption_length_limit_premium": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != captionLengthLimitPremium) { + captionLengthLimitPremium = (int) number.value; + editor.putInt("captionLengthLimitPremium", captionLengthLimitPremium); + changed = true; + } + } + break; + } + case "about_length_limit_default": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != aboutLengthLimitDefault) { + aboutLengthLimitDefault = (int) number.value; + editor.putInt("aboutLengthLimitDefault", aboutLengthLimitDefault); + changed = true; + } + } + break; + } + case "about_length_limit_premium": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != aboutLengthLimitPremium) { + aboutLengthLimitPremium = (int) number.value; + editor.putInt("aboutLengthLimitPremium", aboutLengthLimitPremium); + changed = true; + } + } + break; + } + case "reactions_user_max_default": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != reactionsUserMaxDefault) { + reactionsUserMaxDefault = (int) number.value; + editor.putInt("reactionsUserMaxDefault", reactionsUserMaxDefault); + changed = true; + } + } + break; + } + case "reactions_user_max_premium": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != reactionsUserMaxPremium) { + reactionsUserMaxPremium = (int) number.value; + editor.putInt("reactionsUserMaxPremium", reactionsUserMaxPremium); + changed = true; + } + } + break; + } + case "reactions_in_chat_max": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != reactionsInChatMax) { + reactionsInChatMax = (int) number.value; + editor.putInt("reactionsInChatMax", reactionsInChatMax); + changed = true; + } + } + break; + } + case "forum_upgrade_participants_min": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != forumUpgradeParticipantsMin) { + forumUpgradeParticipantsMin = (int) number.value; + editor.putInt("forumUpgradeParticipantsMin", forumUpgradeParticipantsMin); + changed = true; + } + } + break; + } + case "topics_pinned_limit": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != topicsPinnedLimit) { + topicsPinnedLimit = (int) number.value; + editor.putInt("topicsPinnedLimit", topicsPinnedLimit); + changed = true; + } + } + break; + } + case "telegram_antispam_user_id": { + if (value.value instanceof TLRPC.TL_jsonString) { + TLRPC.TL_jsonString string = (TLRPC.TL_jsonString) value.value; + try { + long number = Long.parseLong(string.value); + if (number != telegramAntispamUserId) { + telegramAntispamUserId = number; + editor.putLong("telegramAntispamUserId", telegramAntispamUserId); + changed = true; + } + } catch (Exception e) { + FileLog.e(e); + } + } + break; + } + case "telegram_antispam_group_size_min": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != telegramAntispamGroupSizeMin) { + telegramAntispamGroupSizeMin = (int) number.value; + editor.putInt("telegramAntispamGroupSizeMin", telegramAntispamGroupSizeMin); + changed = true; + } + } + break; + } + case "hidden_members_group_size_min": { + if (value.value instanceof TLRPC.TL_jsonNumber) { + TLRPC.TL_jsonNumber number = (TLRPC.TL_jsonNumber) value.value; + if (number.value != hiddenMembersGroupSizeMin) { + hiddenMembersGroupSizeMin = (int) number.value; + editor.putInt("hiddenMembersGroupSizeMin", hiddenMembersGroupSizeMin); + changed = true; + } + } + break; + } + case "android_collect_device_stats": { + if (value.value instanceof TLRPC.TL_jsonBool) { + TLRPC.TL_jsonBool bool = (TLRPC.TL_jsonBool) value.value; + if (bool.value != collectDeviceStats) { + collectDeviceStats = bool.value; + changed = true; + } + } + break; + } + } + } + if (changed) { + editor.apply(); + } + if (liteAppOptions != null) { + LiteMode.updatePresets(liteAppOptions); + } + if (keelAliveChanged) { + ApplicationLoader.startPushService(); + ConnectionsManager connectionsManager = getConnectionsManager(); + connectionsManager.setPushConnectionEnabled(connectionsManager.isPushConnectionEnabled()); + } + logStorageDir(); + } + private void resetAppConfig() { getfileExperimentalParams = false; - mainPreferences.edit().remove("getfileExperimentalParams"); + collectDeviceStats = false; + mainPreferences.edit().remove("getfileExperimentalParams").apply(); } private boolean savePremiumFeaturesPreviewOrder(SharedPreferences.Editor editor, ArrayList value) { @@ -2851,6 +3057,7 @@ public class MessagesController extends BaseController implements NotificationCe public void updateConfig(final TLRPC.TL_config config) { AndroidUtilities.runOnUIThread(() -> { + // TODO: receive those removed parameters from appconfig getDownloadController().loadAutoDownloadConfig(false); loadAppConfig(); remoteConfigLoaded = true; @@ -2858,9 +3065,9 @@ public class MessagesController extends BaseController implements NotificationCe maxGroupCount = config.chat_size_max; maxEditTime = config.edit_time_limit; ratingDecay = config.rating_e_decay; - maxRecentGifsCount = config.saved_gifs_limit; +// maxRecentGifsCount = config.saved_gifs_limit; maxRecentStickersCount = config.stickers_recent_limit; - maxFaveStickersCount = config.stickers_faved_limit; +// maxFaveStickersCount = config.stickers_faved_limit; revokeTimeLimit = config.revoke_time_limit; revokeTimePmLimit = config.revoke_pm_time_limit; canRevokePmInbox = config.revoke_pm_inbox; @@ -2878,8 +3085,8 @@ public class MessagesController extends BaseController implements NotificationCe callRingTimeout = config.call_ring_timeout_ms; callConnectTimeout = config.call_connect_timeout_ms; callPacketTimeout = config.call_packet_timeout_ms; - maxPinnedDialogsCount = config.pinned_dialogs_count_max; - maxFolderPinnedDialogsCount = config.pinned_infolder_count_max; +// maxPinnedDialogsCount = config.pinned_dialogs_count_max; +// maxFolderPinnedDialogsCount = config.pinned_infolder_count_max; maxMessageLength = config.message_length_max; maxCaptionLength = config.caption_length_max; preloadFeaturedStickers = config.preload_featured_stickers; @@ -2962,8 +3169,9 @@ public class MessagesController extends BaseController implements NotificationCe editor.putInt("callConnectTimeout", callConnectTimeout); editor.putInt("callPacketTimeout", callPacketTimeout); editor.putString("linkPrefix", linkPrefix); - editor.putInt("maxPinnedDialogsCount", maxPinnedDialogsCount); - editor.putInt("maxFolderPinnedDialogsCount", maxFolderPinnedDialogsCount); +// editor.putInt("maxPinnedDialogsCount", maxPinnedDialogsCount); + editor.putInt("maxFolderPinnedDialogsCountDefault", maxFolderPinnedDialogsCountDefault); + editor.putInt("maxFolderPinnedDialogsCountPremium", maxFolderPinnedDialogsCountPremium); editor.putInt("maxMessageLength", maxMessageLength); editor.putInt("maxCaptionLength", maxCaptionLength); editor.putBoolean("preloadFeaturedStickers", preloadFeaturedStickers); @@ -5214,13 +5422,27 @@ public class MessagesController extends BaseController implements NotificationCe } }, 1000); } else { + if (error != null && "USER_PRIVACY_RESTRICTED".equals(error.text) && ChatObject.canUserDoAdminAction(chat, ChatObject.ACTION_INVITE)) { + AndroidUtilities.runOnUIThread(() -> { + BaseFragment lastFragment = LaunchActivity.getLastFragment(); + if (lastFragment != null && lastFragment.getParentActivity() != null) { + LimitReachedBottomSheet restricterdUsersBottomSheet = new LimitReachedBottomSheet(lastFragment, lastFragment.getParentActivity(), LimitReachedBottomSheet.TYPE_ADD_MEMBERS_RESTRICTED, currentAccount); + ArrayList users = new ArrayList(); + users.add(user); + restricterdUsersBottomSheet.setRestrictedUsers(chat, users); + restricterdUsersBottomSheet.show(); + } + onError.run(error); + }); + return; + } AndroidUtilities.runOnUIThread(() -> AlertsCreator.processError(currentAccount, error, parentFragment, req, isChannel)); if (onError != null) { AndroidUtilities.runOnUIThread(() -> onError.run(error)); } } }; - if (chat.megagroup && addingNew || !TextUtils.isEmpty(botHash)) { + if ((!user.bot || !ChatObject.isChannelAndNotMegaGroup(chat)) && addingNew) { addUserToChat(chatId, user, 0, botHash, parentFragment, true, () -> getConnectionsManager().sendRequest(req, requestDelegate), onError); } else { getConnectionsManager().sendRequest(req, requestDelegate); @@ -7826,8 +8048,7 @@ public class MessagesController extends BaseController implements NotificationCe if (BuildVars.LOGS_ENABLED) { FileLog.d("process time = " + (SystemClock.elapsedRealtime() - startProcessTime) + " file time = " + fileProcessTime + " for dialog = " + dialogId); } - - Runnable uiThread = () -> { + AndroidUtilities.runOnUIThread(() -> { putUsers(messagesRes.users, isCache); putChats(messagesRes.chats, isCache); @@ -7874,12 +8095,7 @@ public class MessagesController extends BaseController implements NotificationCe if (!webpagesToReload.isEmpty()) { reloadWebPages(dialogId, webpagesToReload, mode == 1); } - }; - if (loadIndex == 1) { - ApplicationLoader.applicationHandler.postAtFrontOfQueue(uiThread); - } else { - ApplicationLoader.applicationHandler.post(uiThread); - } + }); } public void loadHintDialogs() { @@ -10353,6 +10569,7 @@ public class MessagesController extends BaseController implements NotificationCe putChats(updates.chats, false); if (updates.chats != null && !updates.chats.isEmpty()) { getNotificationCenter().postNotificationName(NotificationCenter.chatDidCreated, updates.chats.get(0).id); + AlertsCreator.checkRestrictedInviteUsers(currentAccount, updates.chats.get(0), updates); } else { getNotificationCenter().postNotificationName(NotificationCenter.chatDidFailCreate); } @@ -10530,6 +10747,10 @@ public class MessagesController extends BaseController implements NotificationCe return; } processUpdates((TLRPC.Updates) response, false); + AndroidUtilities.runOnUIThread(() -> { + AlertsCreator.checkRestrictedInviteUsers(currentAccount, getChat(chatId), (TLRPC.Updates) response); + }); + }); } @@ -10743,6 +10964,81 @@ public class MessagesController extends BaseController implements NotificationCe public boolean run(TLRPC.TL_error error); } + public void addUsersToChat(TLRPC.Chat currentChat, BaseFragment baseFragment, ArrayList users, int fwdCount, Consumer onAddUser, Consumer onRestricted, Runnable onComplete) { + final int count = users.size(); + final int[] processed = new int[1]; + final ArrayList userRestrictedPrivacy = new ArrayList<>(); + processed[0] = 0; + final Runnable showUserRestrictedPrivacyAlert = () -> { + AndroidUtilities.runOnUIThread(() ->{ + BaseFragment lastFragment = LaunchActivity.getLastFragment(); + if (lastFragment != null && lastFragment.getParentActivity() != null) { +// if (ChatObject.canUserDoAdminAction(currentChat, ChatObject.ACTION_INVITE)) { + LimitReachedBottomSheet restricterdUsersBottomSheet = new LimitReachedBottomSheet(lastFragment, lastFragment.getParentActivity(), LimitReachedBottomSheet.TYPE_ADD_MEMBERS_RESTRICTED, currentAccount); + restricterdUsersBottomSheet.setRestrictedUsers(currentChat, userRestrictedPrivacy); + restricterdUsersBottomSheet.show(); +// } else { +// CharSequence title, description; +// if (userRestrictedPrivacy.size() == 1) { +// if (count > 1) { +// title = LocaleController.getString("InviteToGroupErrorTitleAUser", R.string.InviteToGroupErrorTitleAUser); +// } else { +// title = LocaleController.getString("InviteToGroupErrorTitleThisUser", R.string.InviteToGroupErrorTitleThisUser); +// } +// description = AndroidUtilities.replaceTags(LocaleController.formatString("InviteToGroupErrorMessageSingle", R.string.InviteToGroupErrorMessageSingle, UserObject.getFirstName(userRestrictedPrivacy.get(0)))); +// } else if (userRestrictedPrivacy.size() == 2) { +// title = LocaleController.getString("InviteToGroupErrorTitleSomeUsers", R.string.InviteToGroupErrorTitleSomeUsers); +// description = AndroidUtilities.replaceTags(LocaleController.formatString("InviteToGroupErrorMessageDouble", R.string.InviteToGroupErrorMessageDouble, UserObject.getFirstName(userRestrictedPrivacy.get(0)), UserObject.getFirstName(userRestrictedPrivacy.get(1)))); +// } else if (userRestrictedPrivacy.size() == count) { +// title = LocaleController.getString("InviteToGroupErrorTitleTheseUsers", R.string.InviteToGroupErrorTitleTheseUsers); +// description = LocaleController.getString("InviteToGroupErrorMessageMultipleAll", R.string.InviteToGroupErrorMessageMultipleAll); +// } else { +// title = LocaleController.getString("InviteToGroupErrorTitleSomeUsers", R.string.InviteToGroupErrorTitleSomeUsers); +// description = LocaleController.getString("InviteToGroupErrorMessageMultipleSome", R.string.InviteToGroupErrorMessageMultipleSome); +// } +// new AlertDialog.Builder(lastFragment.getParentActivity()) +// .setTitle(title) +// .setMessage(description) +// .setPositiveButton(LocaleController.getString("OK", R.string.OK), null) +// .show(); +// } + } + }, 200); + }; + long chatId = currentChat.id; + for (int a = 0; a < count; a++) { + final TLRPC.User user = users.get(a); + addUserToChat(chatId, user, fwdCount, null, baseFragment, false, () -> { + if (onAddUser != null) { + onAddUser.accept(user); + } + processed[0]++; + if (processed[0] >= count) { + if (userRestrictedPrivacy.size() > 0) { + showUserRestrictedPrivacyAlert.run(); + } + if (onComplete != null) { + onComplete.run(); + } + } + }, err -> { + processed[0]++; + boolean privacyRestricted; + if (privacyRestricted = err != null && "USER_PRIVACY_RESTRICTED".equals(err.text)) { + userRestrictedPrivacy.add(user); + } + if (processed[0] >= count && userRestrictedPrivacy.size() > 0) { + showUserRestrictedPrivacyAlert.run(); + } + if (onRestricted != null) { + onRestricted.accept(user); + } + return !privacyRestricted; + }); + putUser(user, false); + } + } + public void addUserToChat(long chatId, TLRPC.User user, int forwardCount, String botHash, BaseFragment fragment, boolean ignoreIfAlreadyExists, Runnable onFinishRunnable, ErrorDelegate onError) { if (user == null) { if (onError != null) { @@ -10841,6 +11137,9 @@ public class MessagesController extends BaseController implements NotificationCe if (!hasJoinMessage && inputUser instanceof TLRPC.TL_inputUserSelf) { generateJoinMessage(chatId, true); } + AndroidUtilities.runOnUIThread(() -> { + AlertsCreator.checkRestrictedInviteUsers(currentAccount, getChat(chatId), (TLRPC.Updates) response); + }); AndroidUtilities.runOnUIThread(() -> loadFullChat(chatId, 0, true), 1000); } if (isChannel && inputUser instanceof TLRPC.TL_inputUserSelf) { @@ -15999,6 +16298,8 @@ public class MessagesController extends BaseController implements NotificationCe messageObject.sponsoredChatInviteHash = sponsoredMessage.chat_invite_hash; messageObject.sponsoredRecommended = sponsoredMessage.recommended; messageObject.sponsoredShowPeerPhoto = sponsoredMessage.show_peer_photo; + messageObject.sponsoredInfo = sponsoredMessage.sponsor_info; + messageObject.sponsoredAdditionalInfo = sponsoredMessage.additional_info; result.add(messageObject); } } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/MessagesStorage.java b/TMessagesProj/src/main/java/org/telegram/messenger/MessagesStorage.java index 40bf665f8..282c524f4 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/MessagesStorage.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/MessagesStorage.java @@ -94,7 +94,7 @@ public class MessagesStorage extends BaseController { } } - public final static int LAST_DB_VERSION = 112; + public final static int LAST_DB_VERSION = 113; private boolean databaseMigrationInProgress; public boolean showClearDatabaseAlert; private LongSparseIntArray dialogIsForum = new LongSparseIntArray(); @@ -646,6 +646,7 @@ public class MessagesStorage extends BaseController { database.executeFast("CREATE INDEX IF NOT EXISTS reaction_mentions_topics_did ON reaction_mentions_topics(dialog_id, topic_id);").stepThis().dispose(); database.executeFast("CREATE TABLE emoji_groups(type INTEGER PRIMARY KEY, data BLOB)").stepThis().dispose(); + database.executeFast("CREATE TABLE app_config(data BLOB)").stepThis().dispose(); database.executeFast("PRAGMA user_version = " + MessagesStorage.LAST_DB_VERSION).stepThis().dispose(); @@ -3203,34 +3204,40 @@ public class MessagesStorage extends BaseController { } SQLiteCursor cursor = null; try { - if (scheduled) { - cursor = database.queryFinalized(String.format(Locale.US, "SELECT data, mid, date, uid FROM scheduled_messages_v2 WHERE mid IN(%s) AND uid = %d", TextUtils.join(",", ids), dialogId)); - } else { - cursor = database.queryFinalized(String.format(Locale.US, "SELECT data, mid, date, uid FROM messages_v2 WHERE mid IN(%s) AND uid = %d", TextUtils.join(",", ids), dialogId)); - } - while (cursor.next()) { - NativeByteBuffer data = cursor.byteBufferValue(0); - if (data != null) { - TLRPC.Message message = TLRPC.Message.TLdeserialize(data, data.readInt32(false), false); - message.readAttachPath(data, getUserConfig().clientUserId); - data.reuse(); - message.id = cursor.intValue(1); - message.date = cursor.intValue(2); - message.dialog_id = cursor.longValue(3); + for (int i = 0; i < 2; i++) { + if (i == 1 && !scheduled) { + continue; + } + boolean findInScheduled = i == 1; + if (findInScheduled) { + cursor = database.queryFinalized(String.format(Locale.US, "SELECT data, mid, date, uid FROM scheduled_messages_v2 WHERE mid IN(%s) AND uid = %d", TextUtils.join(",", ids), dialogId)); + } else { + cursor = database.queryFinalized(String.format(Locale.US, "SELECT data, mid, date, uid FROM messages_v2 WHERE mid IN(%s) AND uid = %d", TextUtils.join(",", ids), dialogId)); + } + while (cursor.next()) { + NativeByteBuffer data = cursor.byteBufferValue(0); + if (data != null) { + TLRPC.Message message = TLRPC.Message.TLdeserialize(data, data.readInt32(false), false); + message.readAttachPath(data, getUserConfig().clientUserId); + data.reuse(); + message.id = cursor.intValue(1); + message.date = cursor.intValue(2); + message.dialog_id = cursor.longValue(3); - addUsersAndChatsFromMessage(message, usersToLoad, chatsToLoad, null); + addUsersAndChatsFromMessage(message, usersToLoad, chatsToLoad, null); - ArrayList arrayList = owners.get(message.id); - if (arrayList != null) { - for (int a = 0, N = arrayList.size(); a < N; a++) { - TLRPC.Message m = arrayList.get(a); - m.replyMessage = message; - MessageObject.getDialogId(message); + ArrayList arrayList = owners.get(message.id); + if (arrayList != null) { + for (int a = 0, N = arrayList.size(); a < N; a++) { + TLRPC.Message m = arrayList.get(a); + m.replyMessage = message; + MessageObject.getDialogId(message); + } } } } + cursor.dispose(); } - cursor.dispose(); } catch (Exception e) { throw e; } finally { diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/NativeLoader.java b/TMessagesProj/src/main/java/org/telegram/messenger/NativeLoader.java index 44edd86ce..ed0ca7d69 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/NativeLoader.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/NativeLoader.java @@ -210,5 +210,9 @@ public class NativeLoader { } private static native void init(String path, boolean enable); + + public static boolean loaded() { + return nativeLoaded; + } //public static native void crash(); } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/NotificationCenter.java b/TMessagesProj/src/main/java/org/telegram/messenger/NotificationCenter.java index eca99b6e0..71d6efe63 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/NotificationCenter.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/NotificationCenter.java @@ -209,6 +209,7 @@ public class NotificationCenter { public static final int updateBotMenuButton = totalEvents++; public static final int didUpdatePremiumGiftStickers = totalEvents++; + public static final int didUpdatePremiumGiftFieldIcon = totalEvents++; //global public static final int pushMessagesUpdated = totalEvents++; diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/NotificationsController.java b/TMessagesProj/src/main/java/org/telegram/messenger/NotificationsController.java index b364d8845..3affcbbd0 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/NotificationsController.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/NotificationsController.java @@ -744,9 +744,6 @@ public class NotificationsController extends BaseController { boolean updated = false; for (int a = 0, N = editedMessages.size(); a < N; a++) { long dialogId = editedMessages.keyAt(a); - if (pushDialogs.indexOfKey(dialogId) < 0) { - continue; - } ArrayList messages = editedMessages.valueAt(a); for (int b = 0, N2 = messages.size(); b < N2; b++) { MessageObject messageObject = messages.get(b); @@ -3416,7 +3413,7 @@ public class NotificationsController extends BaseController { if (sound != null) { notificationChannel.setSound(sound, builder.build()); } else { - notificationChannel.setSound(null, null); + // notificationChannel.setSound(null, null); } if (BuildVars.LOGS_ENABLED) { FileLog.d("create new channel " + channelId); diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/SaveToGallerySettingsHelper.java b/TMessagesProj/src/main/java/org/telegram/messenger/SaveToGallerySettingsHelper.java index db21c206d..80c7cfe97 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/SaveToGallerySettingsHelper.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/SaveToGallerySettingsHelper.java @@ -169,7 +169,7 @@ public class SaveToGallerySettingsHelper { private boolean needSave(FilePathDatabase.FileMeta meta, MessageObject messageObject, int currentAccount) { LongSparseArray exceptions = UserConfig.getInstance(currentAccount).getSaveGalleryExceptions(type); DialogException exception = exceptions.get(meta.dialogId); - if (messageObject != null && messageObject.isOutOwner()) { + if (messageObject != null && (messageObject.isOutOwner() || messageObject.isSecretMedia())) { return false; } boolean isVideo = (messageObject != null && messageObject.isVideo()) || meta.messageType == MessageObject.TYPE_VIDEO; diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/SendMessagesHelper.java b/TMessagesProj/src/main/java/org/telegram/messenger/SendMessagesHelper.java index 85fd1f3ae..65dedf55e 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/SendMessagesHelper.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/SendMessagesHelper.java @@ -3624,7 +3624,7 @@ public class SendMessagesHelper extends BaseController implements NotificationCe } params.put("ve", ve); } - if (encryptedChat != null && document.dc_id > 0 && !MessageObject.isStickerDocument(document) && !MessageObject.isAnimatedStickerDocument(document, true)) { + if (encryptedChat != null && document.dc_id > 0 && !MessageObject.isStickerDocument(document) && !MessageObject.isAnimatedStickerDocument(document, true) && !MessageObject.isGifDocument(document)) { newMsg.attachPath = FileLoader.getInstance(currentAccount).getPathToAttach(document).toString(); } else { newMsg.attachPath = path; @@ -6016,7 +6016,7 @@ public class SendMessagesHelper extends BaseController implements NotificationCe } } - if (newMsg.attachPath != null && newMsg.attachPath.startsWith(FileLoader.getDirectory(FileLoader.MEDIA_DIR_CACHE).getAbsolutePath())) { + if (newMsg.attachPath != null && newMsg.attachPath.startsWith(FileLoader.getDirectory(FileLoader.MEDIA_DIR_CACHE).getAbsolutePath()) && !MessageObject.isGifDocument(sentMessage.media.document)) { File cacheFile = new File(newMsg.attachPath); File cacheFile2 = FileLoader.getInstance(currentAccount).getPathToAttach(sentMessage.media.document, sentMessage.media.ttl_seconds != 0); if (!cacheFile.renameTo(cacheFile2)) { diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/SharedConfig.java b/TMessagesProj/src/main/java/org/telegram/messenger/SharedConfig.java index 2bf4d9d6e..3b0dbaa40 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/SharedConfig.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/SharedConfig.java @@ -109,7 +109,6 @@ public class SharedConfig { public static boolean stickersReorderingHintUsed; public static boolean disableVoiceAudioEffects; public static boolean forceDisableTabletMode; - public static boolean useLNavigation; public static boolean updateStickersOrderOnSend = true; private static int lastLocalId = -210000; @@ -137,11 +136,9 @@ public class SharedConfig { public static boolean streamAllVideo = false; public static boolean streamMkv = false; public static boolean saveStreamMedia = true; - public static boolean smoothKeyboard = true; public static boolean pauseMusicOnRecord = false; public static boolean noiseSupression; - public static boolean noStatusBar = true; - public static boolean forceRtmpStream; + public static final boolean noStatusBar = true; public static boolean debugWebView; public static boolean sortContactsByName; public static boolean sortFilesByName; @@ -347,7 +344,6 @@ public class SharedConfig { editor = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Context.MODE_PRIVATE).edit(); editor.putBoolean("hasEmailLogin", hasEmailLogin); - editor.putBoolean("useLNavigation", useLNavigation); editor.putBoolean("floatingDebugActive", isFloatingDebugActive); editor.putBoolean("record_via_sco", recordViaSco); editor.apply(); @@ -469,7 +465,6 @@ public class SharedConfig { useSystemEmoji = preferences.getBoolean("useSystemEmoji", false); streamMedia = preferences.getBoolean("streamMedia", true); saveStreamMedia = preferences.getBoolean("saveStreamMedia", true); - smoothKeyboard = preferences.getBoolean("smoothKeyboard2", true); pauseMusicOnRecord = preferences.getBoolean("pauseMusicOnRecord", false); forceDisableTabletMode = preferences.getBoolean("forceDisableTabletMode", false); streamAllVideo = preferences.getBoolean("streamAllVideo", BuildVars.DEBUG_VERSION); @@ -486,8 +481,6 @@ public class SharedConfig { archiveHidden = preferences.getBoolean("archiveHidden", false); distanceSystemType = preferences.getInt("distanceSystemType", 0); keepMedia = preferences.getInt("keep_media", CacheByChatsController.KEEP_MEDIA_ONE_MONTH); - noStatusBar = preferences.getBoolean("noStatusBar", true); - forceRtmpStream = preferences.getBoolean("forceRtmpStream", false); debugWebView = preferences.getBoolean("debugWebView", false); lastKeepMediaCheckTime = preferences.getInt("lastKeepMediaCheckTime", 0); lastLogsCheckTime = preferences.getInt("lastLogsCheckTime", 0); @@ -508,7 +501,6 @@ public class SharedConfig { fastScrollHintCount = preferences.getInt("fastScrollHintCount", 3); dontAskManageStorage = preferences.getBoolean("dontAskManageStorage", false); hasEmailLogin = preferences.getBoolean("hasEmailLogin", false); - useLNavigation = preferences.getBoolean("useLNavigation", false); isFloatingDebugActive = preferences.getBoolean("floatingDebugActive", false); updateStickersOrderOnSend = preferences.getBoolean("updateStickersOrderOnSend", true); @@ -839,14 +831,6 @@ public class SharedConfig { editor.commit(); } - public static void toggleForceRTMPStream() { - forceRtmpStream = !forceRtmpStream; - SharedPreferences preferences = MessagesController.getGlobalMainSettings(); - SharedPreferences.Editor editor = preferences.edit(); - editor.putBoolean("forceRtmpStream", forceRtmpStream); - editor.apply(); - } - public static void toggleDebugWebView() { debugWebView = !debugWebView; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { @@ -858,14 +842,6 @@ public class SharedConfig { editor.apply(); } - public static void toggleNoStatusBar() { - noStatusBar = !noStatusBar; - SharedPreferences preferences = MessagesController.getGlobalMainSettings(); - SharedPreferences.Editor editor = preferences.edit(); - editor.putBoolean("noStatusBar", noStatusBar); - editor.commit(); - } - public static void toggleLoopStickers() { LiteMode.toggleFlag(LiteMode.FLAG_ANIMATED_STICKERS_CHAT); } @@ -1046,14 +1022,6 @@ public class SharedConfig { editor.commit(); } - public static void toggleSmoothKeyboard() { - smoothKeyboard = !smoothKeyboard; - SharedPreferences preferences = MessagesController.getGlobalMainSettings(); - SharedPreferences.Editor editor = preferences.edit(); - editor.putBoolean("smoothKeyboard2", smoothKeyboard); - editor.commit(); - } - public static void togglePauseMusicOnRecord() { pauseMusicOnRecord = !pauseMusicOnRecord; SharedPreferences preferences = MessagesController.getGlobalMainSettings(); diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/TranslateController.java b/TMessagesProj/src/main/java/org/telegram/messenger/TranslateController.java index 4cc29f8be..ae5bde9a4 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/TranslateController.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/TranslateController.java @@ -620,7 +620,7 @@ public class TranslateController extends BaseController { pendingLanguageChecks.add(hash); - Utilities.getStageQueue().postRunnable(() -> { + Utilities.stageQueue.postRunnable(() -> { LanguageDetector.detectLanguage(messageObject.messageOwner.message, lng -> AndroidUtilities.runOnUIThread(() -> { String detectedLanguage = lng; if (detectedLanguage == null) { diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/Utilities.java b/TMessagesProj/src/main/java/org/telegram/messenger/Utilities.java index daecf4c59..8c047dc78 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/Utilities.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/Utilities.java @@ -33,7 +33,6 @@ public class Utilities { public static Random fastRandom = new Xoroshiro128PlusRandom(random.nextLong()); public static volatile DispatchQueue stageQueue = new DispatchQueue("stageQueue"); - public static volatile DispatchQueue stageQueue2 = new DispatchQueue("stageQueue2"); public static volatile DispatchQueue globalQueue = new DispatchQueue("globalQueue"); public static volatile DispatchQueue cacheClearQueue = new DispatchQueue("cacheClearQueue"); public static volatile DispatchQueue searchQueue = new DispatchQueue("searchQueue"); @@ -41,14 +40,6 @@ public class Utilities { public static volatile DispatchQueue themeQueue = new DispatchQueue("themeQueue"); public static volatile DispatchQueue externalNetworkQueue = new DispatchQueue("externalNetworkQueue"); - private static final Object lock = new Object(); - private static volatile int stageQueueI = 0; - public static DispatchQueue getStageQueue() { - synchronized (lock) { - return stageQueueI++ % 2 == 0 ? stageQueue : stageQueue2; - } - } - private final static String RANDOM_STRING_CHARS = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; final protected static char[] hexArray = "0123456789ABCDEF".toCharArray(); diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/camera/CameraView.java b/TMessagesProj/src/main/java/org/telegram/messenger/camera/CameraView.java index def52eaf4..812602c83 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/camera/CameraView.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/camera/CameraView.java @@ -41,6 +41,7 @@ import android.os.Looper; import android.os.Message; import android.os.VibrationEffect; import android.os.Vibrator; +import android.util.Log; import android.view.Gravity; import android.view.HapticFeedbackConstants; import android.view.Surface; @@ -50,6 +51,7 @@ import android.view.animation.DecelerateInterpolator; import android.widget.FrameLayout; import android.widget.ImageView; +import androidx.annotation.NonNull; import androidx.core.graphics.ColorUtils; import org.telegram.messenger.AndroidUtilities; @@ -60,6 +62,7 @@ import org.telegram.messenger.SharedConfig; import org.telegram.messenger.Utilities; import org.telegram.messenger.video.MP4Builder; import org.telegram.messenger.video.Mp4Movie; +import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Components.CubicBezierInterpolator; import org.telegram.ui.Components.InstantCameraView; import org.telegram.ui.Components.LayoutHelper; @@ -88,6 +91,7 @@ public class CameraView extends FrameLayout implements TextureView.SurfaceTextur private Size pictureSize; CameraInfo info; private boolean mirror; + private boolean lazy; private TextureView textureView; private ImageView blurredStubView; private CameraSession cameraSession; @@ -99,6 +103,7 @@ public class CameraView extends FrameLayout implements TextureView.SurfaceTextur private Matrix txform = new Matrix(); private Matrix matrix = new Matrix(); private int focusAreaSize; + private Drawable thumbDrawable; private boolean useMaxPreview; @@ -250,11 +255,18 @@ public class CameraView extends FrameLayout implements TextureView.SurfaceTextur } public CameraView(Context context, boolean frontface) { + this(context, frontface, false); + } + + public CameraView(Context context, boolean frontface, boolean lazy) { super(context, null); initialFrontface = isFrontface = frontface; textureView = new TextureView(context); - textureView.setSurfaceTextureListener(this); - addView(textureView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.CENTER)); + if (!(this.lazy = lazy)) { + initTexture(); + } + + setWillNotDraw(!lazy); blurredStubView = new ImageView(context); addView(blurredStubView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.CENTER)); @@ -266,6 +278,17 @@ public class CameraView extends FrameLayout implements TextureView.SurfaceTextur innerPaint.setColor(0x7fffffff); } + private boolean textureInited = false; + public void initTexture() { + if (textureInited) { + return; + } + + textureView.setSurfaceTextureListener(this); + addView(textureView, 0, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.CENTER)); + textureInited = true; + } + public void setOptimizeForBarcode(boolean value) { optimizeForBarcode = value; if (cameraSession != null) { @@ -273,6 +296,40 @@ public class CameraView extends FrameLayout implements TextureView.SurfaceTextur } } + Rect bounds = new Rect(); + + @Override + protected void onDraw(Canvas canvas) { + if (thumbDrawable != null) { + bounds.set(0, 0, getMeasuredWidth(), getMeasuredHeight()); + int W = thumbDrawable.getIntrinsicWidth(), H = thumbDrawable.getIntrinsicHeight(); + float scale = 1f / Math.min(W / (float) Math.max(1, bounds.width()), H / (float) Math.max(1, bounds.height())); + thumbDrawable.setBounds( + (int) (bounds.centerX() - W * scale / 2f), + (int) (bounds.centerY() - H * scale / 2f), + (int) (bounds.centerX() + W * scale / 2f), + (int) (bounds.centerY() + H * scale / 2f) + ); + thumbDrawable.draw(canvas); + } + super.onDraw(canvas); + } + + @Override + protected boolean verifyDrawable(@NonNull Drawable who) { + return who == thumbDrawable || super.verifyDrawable(who); + } + + public void setThumbDrawable(Drawable drawable) { + if (thumbDrawable != null) { + thumbDrawable.setCallback(null); + } + thumbDrawable = drawable; + if (thumbDrawable != null) { + thumbDrawable.setCallback(this); + } + } + private int measurementsCount = 0; @Override protected void onAttachedToWindow() { @@ -477,6 +534,39 @@ public class CameraView extends FrameLayout implements TextureView.SurfaceTextur delegate.onCameraInit(); } inited = true; + if (lazy) { + textureView.setAlpha(0); + showTexture(true, true); + } + } + } + + private ValueAnimator textureViewAnimator; + public void showTexture(boolean show, boolean animated) { + if (textureView == null) { + return; + } + + if (textureViewAnimator != null) { + textureViewAnimator.cancel(); + textureViewAnimator = null; + } + if (animated) { + textureViewAnimator = ValueAnimator.ofFloat(textureView.getAlpha(), show ? 1 : 0); + textureViewAnimator.addUpdateListener(anm -> { + final float t = (float) anm.getAnimatedValue(); + textureView.setAlpha(t); + }); + textureViewAnimator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + textureView.setAlpha(show ? 1 : 0); + textureViewAnimator = null; + } + }); + textureViewAnimator.start(); + } else { + textureView.setAlpha(show ? 1 : 0); } } @@ -500,7 +590,7 @@ public class CameraView extends FrameLayout implements TextureView.SurfaceTextur }; private void checkPreviewMatrix() { - if (previewSize == null) { + if (previewSize == null || textureView == null) { return; } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/voip/Instance.java b/TMessagesProj/src/main/java/org/telegram/messenger/voip/Instance.java index 8d570e8c9..1015db015 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/voip/Instance.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/voip/Instance.java @@ -1,5 +1,7 @@ package org.telegram.messenger.voip; +import com.google.android.exoplayer2.util.Util; + import org.json.JSONException; import org.json.JSONObject; import org.telegram.messenger.ApplicationLoader; @@ -203,6 +205,7 @@ public final class Instance { public final String username; public final String password; public final boolean tcp; + public int reflectorId; public Endpoint(boolean isRtc, long id, String ipv4, String ipv6, int port, int type, byte[] peerTag, boolean turn, boolean stun, String username, String password, boolean tcp) { this.isRtc = isRtc; @@ -214,8 +217,16 @@ public final class Instance { this.peerTag = peerTag; this.turn = turn; this.stun = stun; - this.username = username; - this.password = password; + if (isRtc) { + this.username = username; + this.password = password; + } else if (peerTag != null) { + this.username = "reflector"; + this.password = Util.toHexString(peerTag); + } else { + this.username = null; + this.password = null; + } this.tcp = tcp; } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/voip/VoIPService.java b/TMessagesProj/src/main/java/org/telegram/messenger/voip/VoIPService.java index 7a2a12289..d754508c5 100755 --- a/TMessagesProj/src/main/java/org/telegram/messenger/voip/VoIPService.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/voip/VoIPService.java @@ -43,6 +43,8 @@ import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.media.AudioAttributes; +import android.media.AudioDeviceCallback; +import android.media.AudioDeviceInfo; import android.media.AudioFormat; import android.media.AudioManager; import android.media.AudioTrack; @@ -57,7 +59,9 @@ import android.net.NetworkInfo; import android.net.Uri; import android.os.Build; import android.os.Bundle; +import android.os.Handler; import android.os.IBinder; +import android.os.Looper; import android.os.PowerManager; import android.os.SystemClock; import android.os.Vibrator; @@ -133,6 +137,8 @@ import java.lang.reflect.Method; import java.math.BigInteger; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; +import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; @@ -319,6 +325,9 @@ public class VoIPService extends Service implements SensorEventListener, AudioMa AudioManager am = (AudioManager) getSystemService(AUDIO_SERVICE); am.abandonAudioFocus(VoIPService.this); am.unregisterMediaButtonEventReceiver(new ComponentName(VoIPService.this, VoIPMediaButtonReceiver.class)); + if (audioDeviceCallback != null) { + am.unregisterAudioDeviceCallback(audioDeviceCallback); + } if (!USE_CONNECTION_SERVICE && sharedInstance == null) { if (isBtHeadsetConnected) { am.stopBluetoothSco(); @@ -375,6 +384,8 @@ public class VoIPService extends Service implements SensorEventListener, AudioMa } }; + private AudioDeviceCallback audioDeviceCallback; + private BroadcastReceiver receiver = new BroadcastReceiver() { @Override @@ -2355,9 +2366,23 @@ public class VoIPService extends Service implements SensorEventListener, AudioMa final boolean forceTcp = preferences.getBoolean("dbg_force_tcp_in_calls", false); final int endpointType = forceTcp ? Instance.ENDPOINT_TYPE_TCP_RELAY : Instance.ENDPOINT_TYPE_UDP_RELAY; final Instance.Endpoint[] endpoints = new Instance.Endpoint[privateCall.connections.size()]; + ArrayList reflectorIds = new ArrayList<>(); for (int i = 0; i < endpoints.length; i++) { final TLRPC.PhoneConnection connection = privateCall.connections.get(i); endpoints[i] = new Instance.Endpoint(connection instanceof TLRPC.TL_phoneConnectionWebrtc, connection.id, connection.ip, connection.ipv6, connection.port, endpointType, connection.peer_tag, connection.turn, connection.stun, connection.username, connection.password, connection.tcp); + if (connection instanceof TLRPC.TL_phoneConnection) { + reflectorIds.add(((TLRPC.TL_phoneConnection) connection).id); + } + } + if (!reflectorIds.isEmpty()) { + Collections.sort(reflectorIds); + HashMap reflectorIdMapping = new HashMap<>(); + for (int i = 0; i < reflectorIds.size(); i++) { + reflectorIdMapping.put(reflectorIds.get(i), i + 1); + } + for (int i = 0; i < endpoints.length; i++) { + endpoints[i].reflectorId = reflectorIdMapping.getOrDefault(endpoints[i].id, 0); + } } if (forceTcp) { AndroidUtilities.runOnUIThread(() -> Toast.makeText(VoIPService.this, "This call uses TCP which will degrade its quality.", Toast.LENGTH_SHORT).show()); @@ -3072,6 +3097,9 @@ public class VoIPService extends Service implements SensorEventListener, AudioMa } catch (Exception e) { FileLog.e(e); } + if (audioDeviceCallback != null) { + am.unregisterAudioDeviceCallback(audioDeviceCallback); + } if (hasAudioFocus) { am.abandonAudioFocus(this); } @@ -3473,33 +3501,31 @@ public class VoIPService extends Service implements SensorEventListener, AudioMa registerReceiver(receiver, filter); fetchBluetoothDeviceName(); - am.registerMediaButtonEventReceiver(new ComponentName(this, VoIPMediaButtonReceiver.class)); - - if (!USE_CONNECTION_SERVICE && btAdapter != null && btAdapter.isEnabled()) { + if (audioDeviceCallback == null) { try { - MediaRouter mr = (MediaRouter) getSystemService(Context.MEDIA_ROUTER_SERVICE); - if (Build.VERSION.SDK_INT < 24) { - int headsetState = btAdapter.getProfileConnectionState(BluetoothProfile.HEADSET); - updateBluetoothHeadsetState(headsetState == BluetoothProfile.STATE_CONNECTED); - for (StateListener l : stateListeners) { - l.onAudioSettingsChanged(); + audioDeviceCallback = new AudioDeviceCallback() { + @Override + public void onAudioDevicesAdded(AudioDeviceInfo[] addedDevices) { + checkUpdateBluetoothHeadset(); } - } else { - MediaRouter.RouteInfo ri = mr.getSelectedRoute(MediaRouter.ROUTE_TYPE_LIVE_AUDIO); - if (ri.getDeviceType() == MediaRouter.RouteInfo.DEVICE_TYPE_BLUETOOTH) { - int headsetState = btAdapter.getProfileConnectionState(BluetoothProfile.HEADSET); - updateBluetoothHeadsetState(headsetState == BluetoothProfile.STATE_CONNECTED); - for (StateListener l : stateListeners) { - l.onAudioSettingsChanged(); - } - } else { - updateBluetoothHeadsetState(false); + + @Override + public void onAudioDevicesRemoved(AudioDeviceInfo[] removedDevices) { + checkUpdateBluetoothHeadset(); } - } + }; } catch (Throwable e) { + //java.lang.NoClassDefFoundError on some devices FileLog.e(e); + audioDeviceCallback = null; } } + if (audioDeviceCallback != null) { + am.registerAudioDeviceCallback(audioDeviceCallback, new Handler(Looper.getMainLooper())); + } + am.registerMediaButtonEventReceiver(new ComponentName(this, VoIPMediaButtonReceiver.class)); + + checkUpdateBluetoothHeadset(); } catch (Exception x) { if (BuildVars.LOGS_ENABLED) { FileLog.e("error initializing voip controller", x); @@ -3520,6 +3546,34 @@ public class VoIPService extends Service implements SensorEventListener, AudioMa } } + private void checkUpdateBluetoothHeadset() { + if (!USE_CONNECTION_SERVICE && btAdapter != null && btAdapter.isEnabled()) { + try { + MediaRouter mr = (MediaRouter) getSystemService(Context.MEDIA_ROUTER_SERVICE); + if (Build.VERSION.SDK_INT < 24) { + int headsetState = btAdapter.getProfileConnectionState(BluetoothProfile.HEADSET); + updateBluetoothHeadsetState(headsetState == BluetoothProfile.STATE_CONNECTED); + for (StateListener l : stateListeners) { + l.onAudioSettingsChanged(); + } + } else { + MediaRouter.RouteInfo ri = mr.getSelectedRoute(MediaRouter.ROUTE_TYPE_LIVE_AUDIO); + if (ri.getDeviceType() == MediaRouter.RouteInfo.DEVICE_TYPE_BLUETOOTH) { + int headsetState = btAdapter.getProfileConnectionState(BluetoothProfile.HEADSET); + updateBluetoothHeadsetState(headsetState == BluetoothProfile.STATE_CONNECTED); + for (StateListener l : stateListeners) { + l.onAudioSettingsChanged(); + } + } else { + updateBluetoothHeadsetState(false); + } + } + } catch (Throwable e) { + FileLog.e(e); + } + } + } + private void loadResources() { if (Build.VERSION.SDK_INT >= 21) { WebRtcAudioTrack.setAudioTrackUsageAttribute(AudioAttributes.USAGE_VOICE_COMMUNICATION); diff --git a/TMessagesProj/src/main/java/org/telegram/tgnet/TLRPC.java b/TMessagesProj/src/main/java/org/telegram/tgnet/TLRPC.java index 64faaa7c8..f9647c377 100644 --- a/TMessagesProj/src/main/java/org/telegram/tgnet/TLRPC.java +++ b/TMessagesProj/src/main/java/org/telegram/tgnet/TLRPC.java @@ -71,7 +71,7 @@ public class TLRPC { public static final int MESSAGE_FLAG_HAS_BOT_ID = 0x00000800; public static final int MESSAGE_FLAG_EDITED = 0x00008000; - public static final int LAYER = 152; + public static final int LAYER = 155; public static class TL_stats_megagroupStats extends TLObject { public static int constructor = 0xef7ff916; @@ -2510,9 +2510,6 @@ public class TLRPC { record_video_active = (flags & 2048) != 0; rtmp_stream = (flags & 4096) != 0; listeners_hidden = (flags & 8192) != 0; - if (SharedConfig.forceRtmpStream) { - rtmp_stream = true; - } id = stream.readInt64(exception); access_hash = stream.readInt64(exception); participants_count = stream.readInt32(exception); @@ -2683,13 +2680,18 @@ public class TLRPC { public boolean unread; public Peer peer_id; public Reaction reaction; + public int date; + public boolean dateIsSeen; //custom public static MessagePeerReaction TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { MessagePeerReaction result = null; switch (constructor) { - case 0xb156fe9c: + case 0x8c79b63c: result = new TL_messagePeerReaction(); break; + case 0xb156fe9c: + result = new TL_messagePeerReaction_layer154(); + break; case 0x51b67eff: result = new TL_messagePeerReaction_layer144(); break; @@ -2708,6 +2710,29 @@ public class TLRPC { } public static class TL_messagePeerReaction extends MessagePeerReaction { + public static int constructor = 0x8c79b63c; + + public void readParams(AbstractSerializedData stream, boolean exception) { + flags = stream.readInt32(exception); + big = (flags & 1) != 0; + unread = (flags & 2) != 0; + peer_id = Peer.TLdeserialize(stream, stream.readInt32(exception), exception); + date = stream.readInt32(exception); + reaction = Reaction.TLdeserialize(stream, stream.readInt32(exception), exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + flags = big ? (flags | 1) : (flags &~ 1); + flags = unread ? (flags | 2) : (flags &~ 2); + stream.writeInt32(flags); + peer_id.serializeToStream(stream); + stream.writeInt32(date); + reaction.serializeToStream(stream); + } + } + + public static class TL_messagePeerReaction_layer154 extends MessagePeerReaction { public static int constructor = 0xb156fe9c; public void readParams(AbstractSerializedData stream, boolean exception) { @@ -7164,6 +7189,37 @@ public class TLRPC { } } + public static class TL_readParticipantDate extends TLObject { + public static int constructor = 0x4a4ff172; + + public long user_id; + public int date; + + public static TL_readParticipantDate TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { + if (TL_readParticipantDate.constructor != constructor) { + if (exception) { + throw new RuntimeException(String.format("can't parse magic %x in TL_readParticipantDate", constructor)); + } else { + return null; + } + } + TL_readParticipantDate result = new TL_readParticipantDate(); + result.readParams(stream, exception); + return result; + } + + public void readParams(AbstractSerializedData stream, boolean exception) { + user_id = stream.readInt64(exception); + date = stream.readInt32(exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + stream.writeInt64(user_id); + stream.writeInt32(date); + } + } + public static class TL_statsGroupTopInviter extends TLObject { public static int constructor = 0x535f779d; @@ -9500,6 +9556,54 @@ public class TLRPC { } } + public static abstract class help_AppConfig extends TLObject { + + public static help_AppConfig TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { + help_AppConfig result = null; + switch (constructor) { + case 0xdd18782e: + result = new TL_help_appConfig(); + break; + case 0x7cde641d: + result = new TL_help_appConfigNotModified(); + break; + } + if (result == null && exception) { + throw new RuntimeException(String.format("can't parse magic %x in help_AppConfig", constructor)); + } + if (result != null) { + result.readParams(stream, exception); + } + return result; + } + } + + public static class TL_help_appConfig extends help_AppConfig { + public static int constructor = 0xdd18782e; + + public int hash; + public JSONValue config; + + public void readParams(AbstractSerializedData stream, boolean exception) { + hash = stream.readInt32(exception); + config = JSONValue.TLdeserialize(stream, stream.readInt32(exception), exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + stream.writeInt32(hash); + config.serializeToStream(stream); + } + } + + public static class TL_help_appConfigNotModified extends help_AppConfig { + public static int constructor = 0x7cde641d; + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + } + } + public static abstract class messages_DhConfig extends TLObject { public byte[] random; public int g; @@ -24391,6 +24495,9 @@ public class TLRPC { result = new TL_messageActionChatEditTitle(); break; case 0xabe9affe: + result = new TL_messageActionBotAllowed_layer153(); + break; + case 0xc516d679: result = new TL_messageActionBotAllowed(); break; case 0x96163f56: @@ -24641,7 +24748,7 @@ public class TLRPC { } public static class TL_messages_getMessageReadParticipants extends TLObject { - public static int constructor = 0x2c6f97b7; + public static int constructor = 0x31c1c44f; public InputPeer peer; public int msg_id; @@ -24650,7 +24757,11 @@ public class TLRPC { Vector vector = new Vector(); int size = stream.readInt32(exception); for (int a = 0; a < size; a++) { - vector.objects.add(stream.readInt64(exception)); + TL_readParticipantDate object = TL_readParticipantDate.TLdeserialize(stream, stream.readInt32(exception), exception); + if (object == null) { + return vector; + } + vector.objects.add(object); } return vector; } @@ -25312,6 +25423,37 @@ public class TLRPC { } public static class TL_messageActionBotAllowed extends MessageAction { + public static int constructor = 0xc516d679; + + public boolean attach_menu; + public String domain; + public BotApp app; + + public void readParams(AbstractSerializedData stream, boolean exception) { + flags = stream.readInt32(exception); + attach_menu = (flags & 2) != 0; + if ((flags & 1) != 0) { + domain = stream.readString(exception); + } + if ((flags & 4) != 0) { + app = BotApp.TLdeserialize(stream, stream.readInt32(exception), exception); + } + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + flags = attach_menu ? (flags | 2) : (flags &~ 2); + stream.writeInt32(flags); + if ((flags & 1) != 0) { + stream.writeString(domain); + } + if ((flags & 4) != 0) { + app.serializeToStream(stream); + } + } + } + + public static class TL_messageActionBotAllowed_layer153 extends MessageAction { public static int constructor = 0xabe9affe; public String domain; @@ -31343,6 +31485,9 @@ public class TLRPC { case 0x20529438: result = new TL_updateUser(); break; + case 0xccf08ad6: + result = new TL_updateGroupInvitePrivacyForbidden(); + break; case 0x17b7a20b: result = new TL_updateAttachMenuBots(); break; @@ -36206,17 +36351,15 @@ public class TLRPC { } } + public static class TL_config extends TLObject { - public static int constructor = 0x232566ac; + public static int constructor = 0xcc1a241e; public int flags; - public boolean phonecalls_enabled; public boolean default_p2p_contacts; public boolean preload_featured_stickers; - public boolean ignore_phone_entities; public boolean revoke_pm_inbox; public boolean blocked_mode; - public boolean pfs_enabled; public boolean force_try_ipv6; public int date; public int expires; @@ -36235,17 +36378,13 @@ public class TLRPC { public int notify_default_delay_ms; public int push_chat_period_ms; public int push_chat_limit; - public int saved_gifs_limit; public int edit_time_limit; public int revoke_time_limit; public int revoke_pm_time_limit; public int rating_e_decay; public int stickers_recent_limit; - public int stickers_faved_limit; public int channels_read_media_period; public int tmp_sessions; - public int pinned_dialogs_count_max; - public int pinned_infolder_count_max; public int call_receive_timeout_ms; public int call_ring_timeout_ms; public int call_connect_timeout_ms; @@ -36263,6 +36402,7 @@ public class TLRPC { public int lang_pack_version; public int base_lang_pack_version; public Reaction reactions_default; + public String autologin_token; public static TL_config TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { if (TL_config.constructor != constructor) { @@ -36279,13 +36419,10 @@ public class TLRPC { public void readParams(AbstractSerializedData stream, boolean exception) { flags = stream.readInt32(exception); - phonecalls_enabled = (flags & 2) != 0; default_p2p_contacts = (flags & 8) != 0; preload_featured_stickers = (flags & 16) != 0; - ignore_phone_entities = (flags & 32) != 0; revoke_pm_inbox = (flags & 64) != 0; blocked_mode = (flags & 256) != 0; - pfs_enabled = (flags & 8192) != 0; force_try_ipv6 = (flags & 16384) != 0; date = stream.readInt32(exception); expires = stream.readInt32(exception); @@ -36318,19 +36455,15 @@ public class TLRPC { notify_default_delay_ms = stream.readInt32(exception); push_chat_period_ms = stream.readInt32(exception); push_chat_limit = stream.readInt32(exception); - saved_gifs_limit = stream.readInt32(exception); edit_time_limit = stream.readInt32(exception); revoke_time_limit = stream.readInt32(exception); revoke_pm_time_limit = stream.readInt32(exception); rating_e_decay = stream.readInt32(exception); stickers_recent_limit = stream.readInt32(exception); - stickers_faved_limit = stream.readInt32(exception); channels_read_media_period = stream.readInt32(exception); if ((flags & 1) != 0) { tmp_sessions = stream.readInt32(exception); } - pinned_dialogs_count_max = stream.readInt32(exception); - pinned_infolder_count_max = stream.readInt32(exception); call_receive_timeout_ms = stream.readInt32(exception); call_ring_timeout_ms = stream.readInt32(exception); call_connect_timeout_ms = stream.readInt32(exception); @@ -36366,17 +36499,17 @@ public class TLRPC { if ((flags & 32768) != 0) { reactions_default = Reaction.TLdeserialize(stream, stream.readInt32(exception), exception); } + if ((flags & 65536) != 0) { + autologin_token = stream.readString(exception); + } } public void serializeToStream(AbstractSerializedData stream) { stream.writeInt32(constructor); - flags = phonecalls_enabled ? (flags | 2) : (flags &~ 2); flags = default_p2p_contacts ? (flags | 8) : (flags &~ 8); flags = preload_featured_stickers ? (flags | 16) : (flags &~ 16); - flags = ignore_phone_entities ? (flags | 32) : (flags &~ 32); flags = revoke_pm_inbox ? (flags | 64) : (flags &~ 64); flags = blocked_mode ? (flags | 256) : (flags &~ 256); - flags = pfs_enabled ? (flags | 8192) : (flags &~ 8192); flags = force_try_ipv6 ? (flags | 16384) : (flags &~ 16384); stream.writeInt32(flags); stream.writeInt32(date); @@ -36401,19 +36534,15 @@ public class TLRPC { stream.writeInt32(notify_default_delay_ms); stream.writeInt32(push_chat_period_ms); stream.writeInt32(push_chat_limit); - stream.writeInt32(saved_gifs_limit); stream.writeInt32(edit_time_limit); stream.writeInt32(revoke_time_limit); stream.writeInt32(revoke_pm_time_limit); stream.writeInt32(rating_e_decay); stream.writeInt32(stickers_recent_limit); - stream.writeInt32(stickers_faved_limit); stream.writeInt32(channels_read_media_period); if ((flags & 1) != 0) { stream.writeInt32(tmp_sessions); } - stream.writeInt32(pinned_dialogs_count_max); - stream.writeInt32(pinned_infolder_count_max); stream.writeInt32(call_receive_timeout_ms); stream.writeInt32(call_ring_timeout_ms); stream.writeInt32(call_connect_timeout_ms); @@ -36449,6 +36578,9 @@ public class TLRPC { if ((flags & 32768) != 0) { reactions_default.serializeToStream(stream); } + if ((flags & 65536) != 0) { + stream.writeString(autologin_token); + } } } @@ -37076,6 +37208,7 @@ public class TLRPC { public ArrayList results = new ArrayList<>(); public int cache_time; public ArrayList users = new ArrayList<>(); + public TL_inlineBotWebView switch_webview; public static messages_BotResults TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { messages_BotResults result = null; @@ -37084,6 +37217,9 @@ public class TLRPC { result = new TL_messages_botResults_layer71(); break; case 0x947ca848: + result = new TL_messages_botResults_layer153(); + break; + case 0xe021f2f6: result = new TL_messages_botResults(); break; } @@ -37097,7 +37233,7 @@ public class TLRPC { } } - public static class TL_messages_botResults_layer71 extends TL_messages_botResults { + public static class TL_messages_botResults_layer71 extends TL_messages_botResults_layer153 { public static int constructor = 0xccd3563d; @@ -37151,6 +37287,99 @@ public class TLRPC { } public static class TL_messages_botResults extends messages_BotResults { + public static int constructor = 0xe021f2f6; + + + public static TL_messages_botResults TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { + if (TL_messages_botResults.constructor != constructor) { + if (exception) { + throw new RuntimeException(String.format("can't parse magic %x in TL_messages_botResults", constructor)); + } else { + return null; + } + } + TL_messages_botResults result = new TL_messages_botResults(); + result.readParams(stream, exception); + return result; + } + + public void readParams(AbstractSerializedData stream, boolean exception) { + flags = stream.readInt32(exception); + gallery = (flags & 1) != 0; + query_id = stream.readInt64(exception); + if ((flags & 2) != 0) { + next_offset = stream.readString(exception); + } + if ((flags & 4) != 0) { + switch_pm = TL_inlineBotSwitchPM.TLdeserialize(stream, stream.readInt32(exception), exception); + } + if ((flags & 8) != 0) { + switch_webview = TL_inlineBotWebView.TLdeserialize(stream, stream.readInt32(exception), exception); + } + int magic = stream.readInt32(exception); + if (magic != 0x1cb5c415) { + if (exception) { + throw new RuntimeException(String.format("wrong Vector magic, got %x", magic)); + } + return; + } + int count = stream.readInt32(exception); + for (int a = 0; a < count; a++) { + BotInlineResult object = BotInlineResult.TLdeserialize(stream, stream.readInt32(exception), exception); + if (object == null) { + return; + } + results.add(object); + } + cache_time = stream.readInt32(exception); + magic = stream.readInt32(exception); + if (magic != 0x1cb5c415) { + if (exception) { + throw new RuntimeException(String.format("wrong Vector magic, got %x", magic)); + } + return; + } + count = stream.readInt32(exception); + for (int a = 0; a < count; a++) { + User object = User.TLdeserialize(stream, stream.readInt32(exception), exception); + if (object == null) { + return; + } + users.add(object); + } + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + flags = gallery ? (flags | 1) : (flags &~ 1); + stream.writeInt32(flags); + stream.writeInt64(query_id); + if ((flags & 2) != 0) { + stream.writeString(next_offset); + } + if ((flags & 4) != 0) { + switch_pm.serializeToStream(stream); + } + if ((flags & 8) != 0) { + switch_webview.serializeToStream(stream); + } + stream.writeInt32(0x1cb5c415); + int count = results.size(); + stream.writeInt32(count); + for (int a = 0; a < count; a++) { + results.get(a).serializeToStream(stream); + } + stream.writeInt32(cache_time); + stream.writeInt32(0x1cb5c415); + count = users.size(); + stream.writeInt32(count); + for (int a = 0; a < count; a++) { + users.get(a).serializeToStream(stream); + } + } + } + + public static class TL_messages_botResults_layer153 extends messages_BotResults { public static int constructor = 0x947ca848; @@ -38016,9 +38245,11 @@ public class TLRPC { } public static class TL_sponsoredMessage extends TLObject { - public static int constructor = 0x3a836df8; + public static int constructor = 0xfc25b828; public int flags; + public boolean recommended; + public boolean show_peer_photo; public byte[] random_id; public Peer from_id; public ChatInvite chat_invite; @@ -38027,8 +38258,8 @@ public class TLRPC { public String start_param; public String message; public ArrayList entities = new ArrayList<>(); - public boolean recommended; - public boolean show_peer_photo; + public String sponsor_info; + public String additional_info; public static TL_sponsoredMessage TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { if (TL_sponsoredMessage.constructor != constructor) { @@ -38081,6 +38312,12 @@ public class TLRPC { entities.add(object); } } + if ((flags & 128) != 0) { + sponsor_info = stream.readString(exception); + } + if ((flags & 256) != 0) { + additional_info = stream.readString(exception); + } } public void serializeToStream(AbstractSerializedData stream) { @@ -38113,6 +38350,12 @@ public class TLRPC { entities.get(a).serializeToStream(stream); } } + if ((flags & 128) != 0) { + stream.writeString(sponsor_info); + } + if ((flags & 256) != 0) { + stream.writeString(additional_info); + } } } @@ -52586,18 +52829,21 @@ public class TLRPC { } public static class TL_help_getAppConfig extends TLObject { - public static int constructor = 0x98914110; + public static int constructor = 0x61e3f854; + public int hash; public TLObject deserializeResponse(AbstractSerializedData stream, int constructor, boolean exception) { - return JSONValue.TLdeserialize(stream, constructor, exception); + return help_AppConfig.TLdeserialize(stream, constructor, exception); } public void serializeToStream(AbstractSerializedData stream) { stream.writeInt32(constructor); + stream.writeInt32(hash); } } + public static class TL_help_saveAppLog extends TLObject { public static int constructor = 0x6f02f748; @@ -64240,10 +64486,59 @@ public class TLRPC { } } + public static class TL_messages_getBotApp extends TLObject { + public static int constructor = 0x34fdc5c3; + + public InputBotApp app; + public long hash; + + public TLObject deserializeResponse(AbstractSerializedData stream, int constructor, boolean exception) { + return TL_messages_botApp.TLdeserialize(stream, constructor, exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + app.serializeToStream(stream); + stream.writeInt64(hash); + } + } + + public static class TL_messages_requestAppWebView extends TLObject { + public static int constructor = 0x8c5a3b3c; + + public int flags; + public boolean write_allowed; + public InputPeer peer; + public InputBotApp app; + public String start_param; + public TL_dataJSON theme_params; + public String platform; + + public TLObject deserializeResponse(AbstractSerializedData stream, int constructor, boolean exception) { + return TL_appWebViewResultUrl.TLdeserialize(stream, constructor, exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + flags = write_allowed ? (flags | 1) : (flags &~ 1); + stream.writeInt32(flags); + peer.serializeToStream(stream); + app.serializeToStream(stream); + if ((flags & 2) != 0) { + stream.writeString(start_param); + } + if ((flags & 4) != 0) { + theme_params.serializeToStream(stream); + } + stream.writeString(platform); + } + } + public static class TL_messages_requestSimpleWebView extends TLObject { public static int constructor = 0x299bec8e; public int flags; + public boolean from_switch_webview; public InputUser bot; public String url; public TL_dataJSON theme_params; @@ -64255,6 +64550,7 @@ public class TLRPC { public void serializeToStream(AbstractSerializedData stream) { stream.writeInt32(constructor); + flags = from_switch_webview ? (flags | 2) : (flags &~ 2); stream.writeInt32(flags); bot.serializeToStream(stream); stream.writeString(url); @@ -64793,6 +65089,237 @@ public class TLRPC { } } + public static abstract class InputBotApp extends TLObject { + + public static InputBotApp TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { + InputBotApp result = null; + switch (constructor) { + case 0xa920bd7a: + result = new TL_inputBotAppID(); + break; + case 0x908c0407: + result = new TL_inputBotAppShortName(); + break; + } + if (result == null && exception) { + throw new RuntimeException(String.format("can't parse magic %x in InputBotApp", constructor)); + } + if (result != null) { + result.readParams(stream, exception); + } + return result; + } + } + + public static class TL_inputBotAppID extends InputBotApp { + public static int constructor = 0xa920bd7a; + + public long id; + public long access_hash; + + public void readParams(AbstractSerializedData stream, boolean exception) { + id = stream.readInt64(exception); + access_hash = stream.readInt64(exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + stream.writeInt64(id); + stream.writeInt64(access_hash); + } + } + + public static class TL_inputBotAppShortName extends InputBotApp { + public static int constructor = 0x908c0407; + + public InputUser bot_id; + public String short_name; + + public void readParams(AbstractSerializedData stream, boolean exception) { + bot_id = InputUser.TLdeserialize(stream, stream.readInt32(exception), exception); + short_name = stream.readString(exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + bot_id.serializeToStream(stream); + stream.writeString(short_name); + } + } + + public static abstract class BotApp extends TLObject { + public int flags; + public long id; + public long access_hash; + public String short_name; + public String title; + public String description; + public Photo photo; + public Document document; + public long hash; + + public static BotApp TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { + BotApp result = null; + switch (constructor) { + case 0x5da674b7: + result = new TL_botAppNotModified(); + break; + case 0x95fcd1d6: + result = new TL_botApp(); + break; + } + if (result == null && exception) { + throw new RuntimeException(String.format("can't parse magic %x in BotApp", constructor)); + } + if (result != null) { + result.readParams(stream, exception); + } + return result; + } + } + + public static class TL_botAppNotModified extends BotApp { + public static int constructor = 0x5da674b7; + + + public void readParams(AbstractSerializedData stream, boolean exception) { + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + } + } + + public static class TL_botApp extends BotApp { + public static int constructor = 0x95fcd1d6; + + + public void readParams(AbstractSerializedData stream, boolean exception) { + flags = stream.readInt32(exception); + id = stream.readInt64(exception); + access_hash = stream.readInt64(exception); + short_name = stream.readString(exception); + title = stream.readString(exception); + description = stream.readString(exception); + photo = Photo.TLdeserialize(stream, stream.readInt32(exception), exception); + if ((flags & 1) != 0) { + document = Document.TLdeserialize(stream, stream.readInt32(exception), exception); + } + hash = stream.readInt64(exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + stream.writeInt32(flags); + stream.writeInt64(id); + stream.writeInt64(access_hash); + stream.writeString(short_name); + stream.writeString(title); + stream.writeString(description); + photo.serializeToStream(stream); + if ((flags & 1) != 0) { + document.serializeToStream(stream); + } + stream.writeInt64(hash); + } + } + + public static class TL_messages_botApp extends TLObject { + public static int constructor = 0xeb50adf5; + + public int flags; + public boolean inactive; + public boolean request_write_access; + public BotApp app; + + public static TL_messages_botApp TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { + if (TL_messages_botApp.constructor != constructor) { + if (exception) { + throw new RuntimeException(String.format("can't parse magic %x in TL_messages_botApp", constructor)); + } else { + return null; + } + } + TL_messages_botApp result = new TL_messages_botApp(); + result.readParams(stream, exception); + return result; + } + + public void readParams(AbstractSerializedData stream, boolean exception) { + flags = stream.readInt32(exception); + inactive = (flags & 1) != 0; + request_write_access = (flags & 2) != 0; + app = BotApp.TLdeserialize(stream, stream.readInt32(exception), exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + flags = inactive ? (flags | 1) : (flags &~ 1); + flags = request_write_access ? (flags | 2) : (flags &~ 2); + stream.writeInt32(flags); + app.serializeToStream(stream); + } + } + + public static class TL_appWebViewResultUrl extends TLObject { + public static int constructor = 0x3c1b4f0d; + + public String url; + + public static TL_appWebViewResultUrl TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { + if (TL_appWebViewResultUrl.constructor != constructor) { + if (exception) { + throw new RuntimeException(String.format("can't parse magic %x in TL_appWebViewResultUrl", constructor)); + } else { + return null; + } + } + TL_appWebViewResultUrl result = new TL_appWebViewResultUrl(); + result.readParams(stream, exception); + return result; + } + + public void readParams(AbstractSerializedData stream, boolean exception) { + url = stream.readString(exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + stream.writeString(url); + } + } + + public static class TL_inlineBotWebView extends TLObject { + public static int constructor = 0xb57295d5; + + public String text; + public String url; + + public static TL_inlineBotWebView TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { + if (TL_inlineBotWebView.constructor != constructor) { + if (exception) { + throw new RuntimeException(String.format("can't parse magic %x in TL_inlineBotWebView", constructor)); + } else { + return null; + } + } + TL_inlineBotWebView result = new TL_inlineBotWebView(); + result.readParams(stream, exception); + return result; + } + + public void readParams(AbstractSerializedData stream, boolean exception) { + text = stream.readString(exception); + url = stream.readString(exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + stream.writeString(text); + stream.writeString(url); + } + } + public static abstract class account_SavedRingtone extends TLObject { public static account_SavedRingtone TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { @@ -66432,6 +66959,21 @@ public class TLRPC { } } + public static class TL_updateGroupInvitePrivacyForbidden extends Update { + public static int constructor = 0xccf08ad6; + + public long user_id; + + public void readParams(AbstractSerializedData stream, boolean exception) { + user_id = stream.readInt64(exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + stream.writeInt64(user_id); + } + } + //functions public static class Vector extends TLObject { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarLayout.java b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarLayout.java index 85953e70d..43395608c 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarLayout.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarLayout.java @@ -1436,7 +1436,7 @@ public class ActionBarLayout extends FrameLayout implements INavigationLayout, F } }; } - AndroidUtilities.runOnUIThread(waitingForKeyboardCloseRunnable, SharedConfig.smoothKeyboard ? 250 : 200); + AndroidUtilities.runOnUIThread(waitingForKeyboardCloseRunnable, 250); } else if (fragment.needDelayOpenAnimation()) { delayedOpenAnimationRunnable = new Runnable() { @Override @@ -2384,7 +2384,7 @@ public class ActionBarLayout extends FrameLayout implements INavigationLayout, F } @Override - public ViewGroup getOverlayContainerView() { + public FrameLayout getOverlayContainerView() { return this; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenuItem.java b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenuItem.java index 932293df7..bdd491ecc 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenuItem.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenuItem.java @@ -49,6 +49,7 @@ import android.widget.FrameLayout; import android.widget.HorizontalScrollView; import android.widget.ImageView; import android.widget.LinearLayout; +import android.widget.PopupWindow; import android.widget.TextView; import androidx.annotation.Nullable; @@ -60,6 +61,7 @@ import org.telegram.messenger.LocaleController; import org.telegram.messenger.NotificationCenter; import org.telegram.messenger.R; import org.telegram.messenger.UserConfig; +import org.telegram.messenger.Utilities; import org.telegram.tgnet.TLRPC; import org.telegram.ui.Adapters.FiltersView; import org.telegram.ui.Components.BackupImageView; @@ -184,6 +186,7 @@ public class ActionBarMenuItem extends FrameLayout { private ArrayList currentSearchFilters = new ArrayList<>(); private int selectedFilterIndex = -1; private int notificationIndex = -1; + private float dimMenu; private float transitionOffset; private View showSubMenuFrom; @@ -702,7 +705,7 @@ public class ActionBarMenuItem extends FrameLayout { linearLayout.setOrientation(LinearLayout.VERTICAL); FrameLayout frameLayout = new FrameLayout(getContext()); frameLayout.setAlpha(0f); - frameLayout.animate().alpha(1f).setDuration(100).start(); + frameLayout.animate().alpha(1f).setDuration(100).setStartDelay(popupLayout.shownFromBottom ? 165 : 0).start(); if (topView.getParent() instanceof ViewGroup) { ((ViewGroup) topView.getParent()).removeView(topView); } @@ -713,7 +716,7 @@ public class ActionBarMenuItem extends FrameLayout { } frameLayout.addView(topView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); linearLayout.addView(frameLayout, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); - linearLayout.addView(popupLayout, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, 0, 0, -AndroidUtilities.dp(4), 0, 0)); + linearLayout.addView(popupLayout, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, 0, 0, -10, 0, 0)); container = linearLayout; popupLayout.setTopView(frameLayout); } @@ -760,11 +763,29 @@ public class ActionBarMenuItem extends FrameLayout { popupLayout.getSwipeBack().closeForeground(false); } popupWindow.startAnimation(); + if (dimMenu > 0) { + popupWindow.dimBehind(dimMenu); + } } + + public void setDimMenu(float dimAmount) { + dimMenu = dimAmount; + } + public void toggleSubMenu() { toggleSubMenu(null, null); } + public void setOnMenuDismiss(Utilities.Callback onMenuDismiss) { + if (popupWindow != null) { + popupWindow.setOnDismissListener(() -> { + if (onMenuDismiss != null) { + onMenuDismiss.run(processedPopupClick); + } + }); + } + } + public void openSearch(boolean openKeyboard) { checkCreateSearchField(); if (searchContainer == null || searchContainer.getVisibility() == VISIBLE || parentMenu == null) { @@ -1433,7 +1454,7 @@ public class ActionBarMenuItem extends FrameLayout { } }); - searchField.setImeOptions(EditorInfo.IME_FLAG_NO_FULLSCREEN | EditorInfo.IME_ACTION_SEARCH); + searchField.setImeOptions(EditorInfo.IME_FLAG_NO_FULLSCREEN | EditorInfo.IME_ACTION_SEARCH | EditorInfo.IME_FLAG_NAVIGATE_PREVIOUS | EditorInfo.IME_FLAG_NAVIGATE_NEXT); searchField.setTextIsSelectable(false); searchField.setHighlightColor(getThemedColor(Theme.key_chat_inTextSelectionHighlight)); searchField.setHandlesColor(getThemedColor(Theme.key_chat_TextSelectionCursor)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenuSlider.java b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenuSlider.java index 967596f0f..703685c53 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenuSlider.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenuSlider.java @@ -11,29 +11,47 @@ import android.graphics.Bitmap; import android.graphics.BitmapShader; import android.graphics.Canvas; import android.graphics.Color; +import android.graphics.ColorFilter; import android.graphics.ColorMatrix; import android.graphics.ColorMatrixColorFilter; import android.graphics.LinearGradient; import android.graphics.Matrix; import android.graphics.Paint; +import android.graphics.PorterDuff; +import android.graphics.PorterDuffColorFilter; import android.graphics.Shader; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; +import android.os.Bundle; +import android.text.TextUtils; import android.util.Pair; +import android.view.Gravity; import android.view.MotionEvent; +import android.view.View; import android.view.ViewConfiguration; +import android.view.accessibility.AccessibilityNodeInfo; import android.widget.FrameLayout; +import androidx.annotation.NonNull; +import androidx.core.graphics.ColorUtils; import androidx.core.math.MathUtils; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.LiteMode; +import org.telegram.messenger.LocaleController; +import org.telegram.messenger.R; import org.telegram.messenger.SharedConfig; import org.telegram.messenger.Utilities; import org.telegram.ui.Components.AnimatedFloat; +import org.telegram.ui.Components.AnimatedTextView; import org.telegram.ui.Components.CubicBezierInterpolator; +import org.telegram.ui.Components.FloatSeekBarAccessibilityDelegate; +import org.telegram.ui.Components.LayoutHelper; import org.telegram.ui.Components.MotionBackgroundDrawable; +import org.telegram.ui.Components.SeekBarAccessibilityDelegate; +import org.telegram.ui.Components.SeekBarView; +import org.telegram.ui.Components.SpeedIconDrawable; public class ActionBarMenuSlider extends FrameLayout { @@ -42,6 +60,8 @@ public class ActionBarMenuSlider extends FrameLayout { private float value = .5f; private Utilities.Callback2 onValueChange; + private AnimatedTextView.AnimatedTextDrawable textDrawable; + private AnimatedFloat blurBitmapAlpha = new AnimatedFloat(1, this, 0, 320, CubicBezierInterpolator.EASE_OUT_QUINT); private Bitmap blurBitmap; private BitmapShader blurBitmapShader; @@ -49,17 +69,19 @@ public class ActionBarMenuSlider extends FrameLayout { private int[] location = new int[2]; - private float roundRadiusDp = 6f; - private boolean drawShadow; + private float roundRadiusDp = 0; + private boolean drawShadow, drawBlur; - private Theme.ResourcesProvider resourcesProvider; + protected Theme.ResourcesProvider resourcesProvider; private Paint shadowPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + private Paint backgroundPaint = new Paint(Paint.ANTI_ALIAS_FLAG); private Paint blurPaint = new Paint(Paint.ANTI_ALIAS_FLAG); private Paint brightenBlurPaint = new Paint(Paint.ANTI_ALIAS_FLAG); private Paint darkenBlurPaint = new Paint(Paint.ANTI_ALIAS_FLAG); private Paint pseudoBlurPaint = new Paint(Paint.ANTI_ALIAS_FLAG); private Paint fillPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + private boolean backgroundDark; private boolean blurIsInChat = true; @@ -72,24 +94,49 @@ public class ActionBarMenuSlider extends FrameLayout { this(context, null); } + @Override + public boolean onInterceptTouchEvent(MotionEvent ev) { + return false; + } + public ActionBarMenuSlider(Context context, Theme.ResourcesProvider resourcesProvider) { super(context); this.resourcesProvider = resourcesProvider; setWillNotDraw(false); + textDrawable = new AnimatedTextView.AnimatedTextDrawable(false, true, true) { + @Override + public void invalidateSelf() { + ActionBarMenuSlider.this.invalidate(); + } + }; + textDrawable.setCallback(this); + textDrawable.setTypeface(AndroidUtilities.getTypeface(AndroidUtilities.TYPEFACE_ROBOTO_MEDIUM)); + textDrawable.setAnimationProperties(.3f, 0, 165, CubicBezierInterpolator.EASE_OUT_QUINT); + textDrawable.setTextSize(AndroidUtilities.dpf2(14)); + textDrawable.getPaint().setStyle(Paint.Style.FILL_AND_STROKE); + textDrawable.getPaint().setStrokeWidth(AndroidUtilities.dpf2(.3f)); + textDrawable.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); + shadowPaint.setColor(Color.TRANSPARENT); shadowPaint.setShadowLayer(dpf2(1.33f), 0, dpf2(.33f), 0x3f000000); - setDrawShadow(true); ColorMatrix colorMatrix = new ColorMatrix(); AndroidUtilities.adjustSaturationColorMatrix(colorMatrix, -0.4f); AndroidUtilities.adjustBrightnessColorMatrix(colorMatrix, .1f); pseudoBlurPaint.setColorFilter(new ColorMatrixColorFilter(colorMatrix)); + backgroundPaint.setColor(Theme.getColor(Theme.key_actionBarDefaultSubmenuBackground, resourcesProvider)); + backgroundDark = AndroidUtilities.computePerceivedBrightness(backgroundPaint.getColor()) <= 0.721f; + textDrawable.setTextColor(backgroundDark ? 0xffffffff : 0xff000000); darkenBlurPaint.setColor(Theme.multAlpha(0xff000000, .025f)); brightenBlurPaint.setColor(Theme.multAlpha(0xffffffff, .35f)); } + public float getValue() { + return value; + } + private ValueAnimator valueAnimator; public void setValue(float value, boolean animated) { @@ -98,11 +145,13 @@ public class ActionBarMenuSlider extends FrameLayout { valueAnimator = null; } + value = MathUtils.clamp(value, 0, 1); + if (!animated) { - this.value = MathUtils.clamp(value, 0, 1); + this.value = value; invalidate(); } else { - final float newValue = MathUtils.clamp(value, 0, 1); + final float newValue = value; valueAnimator = ValueAnimator.ofFloat(this.value, newValue); valueAnimator.addUpdateListener(anm -> { ActionBarMenuSlider.this.value = (float) anm.getAnimatedValue(); @@ -120,6 +169,31 @@ public class ActionBarMenuSlider extends FrameLayout { valueAnimator.setDuration(220); valueAnimator.start(); } + + String stringValue = getStringValue(value); + if (stringValue != null && !TextUtils.equals(textDrawable.getText(), stringValue)) { + textDrawable.cancelAnimation(); + textDrawable.setText(stringValue, true); + } + fillPaint.setColor(getColorValue(value)); + } + + public void setBackgroundColor(int color) { + backgroundPaint.setColor(color); + backgroundDark = AndroidUtilities.computePerceivedBrightness(backgroundPaint.getColor()) <= 0.721f; + textDrawable.setTextColor(backgroundDark ? 0xffffffff : 0xff000000); + } + + public void setTextColor(int color) { + textDrawable.setTextColor(color); + } + + protected String getStringValue(float value) { + return null; + } + + protected int getColorValue(float value) { + return Color.WHITE; } private void updateValue(float value, boolean isFinal) { @@ -140,6 +214,11 @@ public class ActionBarMenuSlider extends FrameLayout { invalidate(); } + public void setDrawBlur(boolean draw) { + drawBlur = draw; + invalidate(); + } + public void setRoundRadiusDp(float roundRadiusDp) { this.roundRadiusDp = roundRadiusDp; invalidate(); @@ -169,10 +248,10 @@ public class ActionBarMenuSlider extends FrameLayout { @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - super.onMeasure(MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(widthMeasureSpec) + getPaddingRight() + getPaddingLeft(), MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(dp(44) + getPaddingTop() + getPaddingBottom(), MeasureSpec.EXACTLY)); + super.onMeasure(drawShadow ? MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(widthMeasureSpec) + getPaddingRight() + getPaddingLeft(), MeasureSpec.EXACTLY) : widthMeasureSpec, MeasureSpec.makeMeasureSpec(dp(44) + getPaddingTop() + getPaddingBottom(), MeasureSpec.EXACTLY)); final boolean canDoBlur = SharedConfig.getDevicePerformanceClass() >= SharedConfig.PERFORMANCE_CLASS_HIGH && LiteMode.isEnabled(LiteMode.FLAG_CHAT_BLUR); - if (blurBitmap == null && !preparingBlur && canDoBlur) { + if (drawBlur && blurBitmap == null && !preparingBlur && canDoBlur) { this.prepareBlur.run(); // removeCallbacks(this.prepareBlur); // post(this.prepareBlur); @@ -220,40 +299,65 @@ public class ActionBarMenuSlider extends FrameLayout { canvas.drawRoundRect(AndroidUtilities.rectTmp, dp(roundRadiusDp), dp(roundRadiusDp), shadowPaint); } - final float blurAlpha = blurBitmapAlpha.set(blurBitmap != null ? 1 : 0); - if (blurAlpha < 1f) { - if (pseudoBlurMatrix == null || pseudoBlurWidth != (int) AndroidUtilities.rectTmp.width()) { - if (pseudoBlurMatrix == null) { - pseudoBlurMatrix = new Matrix(); - } else { - pseudoBlurMatrix.reset(); + if (drawBlur) { + final float blurAlpha = blurBitmapAlpha.set(blurBitmap != null ? 1 : 0); + if (blurAlpha < 1f) { + if (pseudoBlurMatrix == null || pseudoBlurWidth != (int) AndroidUtilities.rectTmp.width()) { + if (pseudoBlurMatrix == null) { + pseudoBlurMatrix = new Matrix(); + } else { + pseudoBlurMatrix.reset(); + } + pseudoBlurMatrix.postScale(pseudoBlurWidth = (int) AndroidUtilities.rectTmp.width(), 1); + pseudoBlurGradient.setLocalMatrix(pseudoBlurMatrix); } - pseudoBlurMatrix.postScale(pseudoBlurWidth = (int) AndroidUtilities.rectTmp.width(), 1); - pseudoBlurGradient.setLocalMatrix(pseudoBlurMatrix); + + pseudoBlurPaint.setAlpha((int) (0xFF * (1f - blurAlpha))); + canvas.drawRoundRect(AndroidUtilities.rectTmp, dp(roundRadiusDp), dp(roundRadiusDp), pseudoBlurPaint); } - pseudoBlurPaint.setAlpha((int) (0xFF * (1f - blurAlpha))); - canvas.drawRoundRect(AndroidUtilities.rectTmp, dp(roundRadiusDp), dp(roundRadiusDp), pseudoBlurPaint); + if (blurBitmap != null && value < 1 && blurAlpha > 0) { + blurPaint.setAlpha((int) (0xFF * blurAlpha)); + canvas.drawRoundRect(AndroidUtilities.rectTmp, dp(roundRadiusDp), dp(roundRadiusDp), blurPaint); + } + + canvas.drawRoundRect(AndroidUtilities.rectTmp, dp(roundRadiusDp), dp(roundRadiusDp), brightenBlurPaint); + canvas.drawRoundRect(AndroidUtilities.rectTmp, dp(roundRadiusDp), dp(roundRadiusDp), darkenBlurPaint); + + fillPaint.setColor(Color.WHITE); + } else { + canvas.drawRoundRect(AndroidUtilities.rectTmp, dp(roundRadiusDp), dp(roundRadiusDp), backgroundPaint); } - if (blurBitmap != null && value < 1 && blurAlpha > 0) { - blurPaint.setAlpha((int) (0xFF * blurAlpha)); - canvas.drawRoundRect(AndroidUtilities.rectTmp, dp(roundRadiusDp), dp(roundRadiusDp), blurPaint); + if (!backgroundDark) { + drawText(canvas, false); } - canvas.drawRoundRect(AndroidUtilities.rectTmp, dp(roundRadiusDp), dp(roundRadiusDp), brightenBlurPaint); - canvas.drawRoundRect(AndroidUtilities.rectTmp, dp(roundRadiusDp), dp(roundRadiusDp), darkenBlurPaint); - -// fillPaint.setColor(Theme.getColor(Theme.key_actionBarDefaultSubmenuBackground, resourcesProvider)); - fillPaint.setColor(Color.WHITE); if (value < 1) { canvas.save(); canvas.clipRect(getPaddingLeft(), getPaddingTop(), getPaddingLeft() + (getWidth() - getPaddingLeft() - getPaddingRight()) * value, getHeight() - getPaddingBottom()); } canvas.drawRoundRect(AndroidUtilities.rectTmp, dp(roundRadiusDp), dp(roundRadiusDp), fillPaint); + + if (!backgroundDark) { + drawText(canvas, true); + } + if (value < 1) { canvas.restore(); } + + if (backgroundDark) { + drawText(canvas, false); + } + } + + private ColorFilter whiteColorFilter; + + private void drawText(Canvas canvas, boolean white) { + textDrawable.setColorFilter(white ? (whiteColorFilter == null ? whiteColorFilter = new PorterDuffColorFilter(Color.WHITE, PorterDuff.Mode.SRC_IN) : whiteColorFilter) : null); + textDrawable.setBounds(getPaddingLeft() + dp(20), getMeasuredHeight() / 2, getMeasuredWidth() - getPaddingRight() - dp(20), getMeasuredHeight() / 2); + textDrawable.draw(canvas); } private Pair getBitmapGradientColors(Bitmap bitmap) { @@ -331,13 +435,11 @@ public class ActionBarMenuSlider extends FrameLayout { fromX = x; fromValue = value; tapStart = System.currentTimeMillis(); - return true; } else if (action == MotionEvent.ACTION_MOVE || action == MotionEvent.ACTION_UP) { if (action == MotionEvent.ACTION_UP) { dragging = false; if (System.currentTimeMillis() - tapStart < ViewConfiguration.getTapTimeout()) { final float value = (x - getPaddingLeft()) / (getWidth() - getPaddingLeft() - getPaddingRight()); -// setValue(value, true); if (onValueChange != null) { onValueChange.run(value, true); } @@ -346,9 +448,110 @@ public class ActionBarMenuSlider extends FrameLayout { } final float value = fromValue + (x - fromX) / Math.max(1, getWidth() - getPaddingLeft() - getPaddingRight()); updateValue(value, !dragging); - return true; } - return super.onTouchEvent(event); + return true; + } + + public static class SpeedSlider extends ActionBarMenuSlider { + + private final SeekBarAccessibilityDelegate seekBarAccessibilityDelegate; + + public static final float MIN_SPEED = 0.2f; + public static final float MAX_SPEED = 2.5f; + + public SpeedSlider(Context context, Theme.ResourcesProvider resourcesProvider) { + super(context, resourcesProvider); + + setFocusable(true); + setFocusableInTouchMode(true); + + setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_YES); + setAccessibilityDelegate(seekBarAccessibilityDelegate = new FloatSeekBarAccessibilityDelegate(false) { + @Override + public float getProgress() { + return getSpeed(); + } + + @Override + public void setProgress(float progress) { + setSpeed(progress, true); + } + + @Override + protected float getMinValue() { + return MIN_SPEED; + } + + @Override + protected float getMaxValue() { + return MAX_SPEED; + } + + @Override + protected float getDelta() { + return 0.2f; + } + + @Override + public CharSequence getContentDescription(View host) { + return SpeedIconDrawable.formatNumber(getSpeed()) + "x " + LocaleController.getString("AccDescrSpeedSlider", R.string.AccDescrSpeedSlider); + } + }); + } + + @Override + public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { + super.onInitializeAccessibilityNodeInfo(info); + seekBarAccessibilityDelegate.onInitializeAccessibilityNodeInfoInternal(this, info); + } + + @Override + public boolean performAccessibilityAction(int action, Bundle arguments) { + return super.performAccessibilityAction(action, arguments) || seekBarAccessibilityDelegate.performAccessibilityActionInternal(this, action, arguments); + } + + public float getSpeed(float value) { + return MIN_SPEED + (MAX_SPEED - MIN_SPEED) * value; + } + + public float getSpeed() { + return getSpeed(getValue()); + } + + public void setSpeed(float speed, boolean animated) { + setValue((speed - MIN_SPEED) / (MAX_SPEED - MIN_SPEED), animated); + } + + @Override + protected String getStringValue(float value) { + return SpeedIconDrawable.formatNumber(MIN_SPEED + value * (MAX_SPEED - MIN_SPEED)) + "x"; + } + + @Override + protected int getColorValue(float value) { + final float speed = MIN_SPEED + value * (MAX_SPEED - MIN_SPEED); +// if (speed <= 0.3f) { +// return Theme.getColor(Theme.key_color_red, resourcesProvider); +// } else if (speed <= 0.5f) { +// return ColorUtils.blendARGB( +// Theme.getColor(Theme.key_color_red, resourcesProvider), +// Theme.getColor(Theme.key_color_yellow, resourcesProvider), +// (speed - 0.3f) / (0.5f - 0.3f) +// ); +// } else if (speed <= 1f) { +// return ColorUtils.blendARGB( +// Theme.getColor(Theme.key_color_yellow, resourcesProvider), +// Theme.getColor(Theme.key_color_lightblue, resourcesProvider), +// MathUtils.clamp((speed - 0.5f) / (1f - 0.5f), 0, 1) +// ); +// } else { + return ColorUtils.blendARGB( + Theme.getColor(Theme.key_color_lightblue, resourcesProvider), + Theme.getColor(Theme.key_color_blue, resourcesProvider), + MathUtils.clamp((speed - 1f) / (2f - 1f), 0, 1) + ); +// } + } } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenuSubItem.java b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenuSubItem.java index 03f13920b..79c5d1659 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenuSubItem.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenuSubItem.java @@ -257,9 +257,7 @@ public class ActionBarMenuSubItem extends FrameLayout { } void updateBackground() { - int topBackgroundRadius = top ? 6 : 0; - int bottomBackgroundRadius = bottom ? 6 : 0; - setBackground(Theme.createRadSelectorDrawable(selectorColor, topBackgroundRadius, bottomBackgroundRadius)); + setBackground(Theme.createRadSelectorDrawable(selectorColor, top ? 6 : 0, bottom ? 6 : 0)); } private int getThemedColor(String key) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarPopupWindow.java b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarPopupWindow.java index 02522538a..e4ce660e3 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarPopupWindow.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarPopupWindow.java @@ -21,7 +21,6 @@ import android.graphics.PorterDuffColorFilter; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.os.Build; -import android.util.Log; import android.view.Gravity; import android.view.KeyEvent; import android.view.View; @@ -106,7 +105,7 @@ public class ActionBarPopupWindow extends PopupWindow { private boolean startAnimationPending = false; private int backAlpha = 255; private int lastStartedChild = 0; - private boolean shownFromBottom; + public boolean shownFromBottom; private boolean animationEnabled = allowAnimation; private ArrayList itemAnimators; private HashMap positions = new HashMap<>(); @@ -295,16 +294,6 @@ public class ActionBarPopupWindow extends PopupWindow { } } - public void translateChildrenAfter(int index, float ty) { - subtractBackgroundHeight = (int) -ty; - for (int i = index + 1; i < linearLayout.getChildCount(); ++i) { - View child = linearLayout.getChildAt(i); - if (child != null) { - child.setTranslationY(ty); - } - } - } - @Keep public void setBackScaleY(float value) { if (backScaleY != value) { @@ -728,12 +717,16 @@ public class ActionBarPopupWindow extends PopupWindow { } public void dimBehind() { + dimBehind(0.2f); + } + + public void dimBehind(float amount) { View container = getContentView().getRootView(); Context context = getContentView().getContext(); WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); WindowManager.LayoutParams p = (WindowManager.LayoutParams) container.getLayoutParams(); p.flags |= WindowManager.LayoutParams.FLAG_DIM_BEHIND; - p.dimAmount = 0.2f; + p.dimAmount = amount; wm.updateViewLayout(container, p); } @@ -1050,21 +1043,20 @@ public class ActionBarPopupWindow extends PopupWindow { public static class GapView extends FrameLayout { - Theme.ResourcesProvider resourcesProvider; - String colorKey; - Drawable shadowDrawable; public GapView(Context context, Theme.ResourcesProvider resourcesProvider) { this(context, resourcesProvider, Theme.key_actionBarDefaultSubmenuSeparator); } - public GapView(Context context, Theme.ResourcesProvider resourcesProvider, String colorKey) { + public GapView(Context context, int color, int shadowColor) { super(context); - this.resourcesProvider = resourcesProvider; - this.colorKey = colorKey; - this.shadowDrawable = Theme.getThemedDrawable(getContext(), R.drawable.greydivider, Theme.key_windowBackgroundGrayShadow, resourcesProvider); - setBackgroundColor(Theme.getColor(colorKey, resourcesProvider)); + this.shadowDrawable = Theme.getThemedDrawable(getContext(), R.drawable.greydivider, shadowColor); + setBackgroundColor(color); + } + + public GapView(Context context, Theme.ResourcesProvider resourcesProvider, String colorKey) { + this(context, Theme.getColor(colorKey, resourcesProvider), Theme.getColor(Theme.key_windowBackgroundGrayShadow, resourcesProvider)); } public void setColor(int color) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/AdjustPanLayoutHelper.java b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/AdjustPanLayoutHelper.java index 488be4d69..0152ce2a5 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/AdjustPanLayoutHelper.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/AdjustPanLayoutHelper.java @@ -86,10 +86,6 @@ public class AdjustPanLayoutHelper { ViewTreeObserver.OnPreDrawListener onPreDrawListener = new ViewTreeObserver.OnPreDrawListener() { @Override public boolean onPreDraw() { - if (!SharedConfig.smoothKeyboard) { - onDetach(); - return true; - } int contentHeight = parent.getHeight(); if (contentHeight - startOffset() == previousHeight - previousStartOffset || contentHeight == previousHeight || animator != null) { if (animator == null) { @@ -280,9 +276,6 @@ public class AdjustPanLayoutHelper { } public void onAttach() { - if (!SharedConfig.smoothKeyboard) { - return; - } onDetach(); Context context = parent.getContext(); Activity activity = getActivity(context); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/AlertDialog.java b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/AlertDialog.java index 1dd3a6776..261db0432 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/AlertDialog.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/AlertDialog.java @@ -75,7 +75,6 @@ import java.util.Map; public class AlertDialog extends Dialog implements Drawable.Callback, NotificationCenter.NotificationCenterDelegate { public static final int ALERT_TYPE_MESSAGE = 0; - public static final int ALERT_TYPE_SPINNER_DETAIL = 1; // not used? public static final int ALERT_TYPE_LOADING = 2; public static final int ALERT_TYPE_SPINNER = 3; @@ -200,7 +199,7 @@ public class AlertDialog extends Dialog implements Drawable.Callback, Notificati public void redPositive() { TextView button = (TextView) getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(getThemedColor(Theme.key_dialogTextRed2)); + button.setTextColor(getThemedColor(Theme.key_dialogTextRed)); } } @@ -279,7 +278,7 @@ public class AlertDialog extends Dialog implements Drawable.Callback, Notificati backgroundPaddings = new Rect(); if (progressStyle != ALERT_TYPE_SPINNER || blurredBackground) { shadowDrawable = context.getResources().getDrawable(R.drawable.popup_fixed_alert3).mutate(); - blurOpacity = progressStyle == ALERT_TYPE_SPINNER ? 0.55f : (isDark ? 0.80f : 0.97f); + blurOpacity = progressStyle == ALERT_TYPE_SPINNER ? 0.55f : (isDark ? 0.80f : 0.985f); shadowDrawable.setColorFilter(new PorterDuffColorFilter(backgroundColor, PorterDuff.Mode.MULTIPLY)); shadowDrawable.getPadding(backgroundPaddings); } @@ -736,18 +735,7 @@ public class AlertDialog extends Dialog implements Drawable.Callback, Notificati messageTextView.setEnabled(false); } messageTextView.setGravity((topAnimationIsNew ? Gravity.CENTER_HORIZONTAL : LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP); - if (progressViewStyle == ALERT_TYPE_SPINNER_DETAIL) { - progressViewContainer = new FrameLayout(getContext()); - containerView.addView(progressViewContainer, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 44, Gravity.LEFT | Gravity.TOP, 23, title == null ? 24 : 0, 23, 24)); - - RadialProgressView progressView = new RadialProgressView(getContext(), resourcesProvider); - progressView.setProgressColor(getThemedColor(Theme.key_dialogProgressCircle)); - progressViewContainer.addView(progressView, LayoutHelper.createFrame(44, 44, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP)); - - messageTextView.setLines(1); - messageTextView.setEllipsize(TextUtils.TruncateAt.END); - progressViewContainer.addView(messageTextView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.CENTER_VERTICAL, (LocaleController.isRTL ? 0 : 62), 0, (LocaleController.isRTL ? 62 : 0), 0)); - } else if (progressViewStyle == ALERT_TYPE_LOADING) { + if (progressViewStyle == ALERT_TYPE_LOADING) { containerView.addView(messageTextView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, 24, title == null ? 19 : 0, 24, 20)); lineProgressView = new LineProgressView(getContext()); @@ -1225,10 +1213,6 @@ public class AlertDialog extends Dialog implements Drawable.Callback, Notificati } } - public void setProgressStyle(int style) { - progressViewStyle = style; - } - public void setDismissDialogByButtons(boolean value) { dismissDialogByButtons = value; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/BottomSheet.java b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/BottomSheet.java index f7d9af4d5..b5f3c056d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/BottomSheet.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/BottomSheet.java @@ -466,11 +466,6 @@ public class BottomSheet extends Dialog { } } - @Override - public void requestLayout() { - super.requestLayout(); - } - @Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) { layoutCount--; @@ -1100,7 +1095,8 @@ public class BottomSheet extends Dialog { containerView.setClipChildren(false); container.setClipToPadding(false); container.setClipChildren(false); - containerView.addView(customView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, customViewGravity, 0, -backgroundPaddingTop + topOffset, 0, 0)); + containerView.addView(customView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, customViewGravity, 0, topOffset, 0, 0)); + ((ViewGroup.MarginLayoutParams) customView.getLayoutParams()).topMargin = -backgroundPaddingTop + AndroidUtilities.dp(topOffset); } else { containerView.addView(customView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, customViewGravity, 0, topOffset, 0, 0)); } @@ -1239,7 +1235,7 @@ public class BottomSheet extends Dialog { } public int getBackgroundPaddingTop() { - return backgroundPaddingTop; + return backgroundPaddingTop ; } public void setAllowDrawContent(boolean value) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/DrawerLayoutContainer.java b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/DrawerLayoutContainer.java index e011b5da9..026f4f1f9 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/DrawerLayoutContainer.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/DrawerLayoutContainer.java @@ -40,6 +40,8 @@ import androidx.annotation.Keep; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import com.google.android.gms.vision.Frame; + import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.BuildVars; import org.telegram.messenger.FileLog; @@ -50,7 +52,7 @@ public class DrawerLayoutContainer extends FrameLayout { private static final int MIN_DRAWER_MARGIN = 64; - private ViewGroup drawerLayout; + private FrameLayout drawerLayout; private INavigationLayout parentActionBarLayout; private boolean maybeStartTracking; @@ -174,7 +176,7 @@ public class DrawerLayoutContainer extends FrameLayout { return 0; } - public void setDrawerLayout(ViewGroup layout) { + public void setDrawerLayout(FrameLayout layout) { drawerLayout = layout; addView(drawerLayout); drawerLayout.setVisibility(INVISIBLE); @@ -303,7 +305,7 @@ public class DrawerLayoutContainer extends FrameLayout { return scrimOpacity; } - public View getDrawerLayout() { + public FrameLayout getDrawerLayout() { return drawerLayout; } @@ -318,6 +320,10 @@ public class DrawerLayoutContainer extends FrameLayout { closeDrawer(false); } + public INavigationLayout getParentActionBarLayout() { + return parentActionBarLayout; + } + public void openStatusSelect() { } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/INavigationLayout.java b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/INavigationLayout.java index de6fbcd08..a62ad5c6a 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/INavigationLayout.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/INavigationLayout.java @@ -8,10 +8,9 @@ import android.graphics.drawable.Drawable; import android.view.Menu; import android.view.View; import android.view.ViewGroup; +import android.widget.FrameLayout; -import org.telegram.messenger.SharedConfig; import org.telegram.ui.Components.BackButtonMenu; -import org.telegram.ui.LNavigation.LNavigation; import java.util.ArrayList; import java.util.HashMap; @@ -49,7 +48,7 @@ public interface INavigationLayout { void expandPreviewFragment(); void finishPreviewFragment(); void setFragmentPanTranslationOffset(int offset); - ViewGroup getOverlayContainerView(); + FrameLayout getOverlayContainerView(); void setHighlightActionButtons(boolean highlight); float getCurrentPreviewFragmentAlpha(); void drawCurrentPreviewFragment(Canvas canvas, Drawable foregroundDrawable); @@ -77,7 +76,7 @@ public interface INavigationLayout { void setPulledDialogs(List pulledDialogs); static INavigationLayout newLayout(Context context) { - return SharedConfig.useLNavigation ? new LNavigation(context) : new ActionBarLayout(context); + return new ActionBarLayout(context); } default void removeFragmentFromStack(BaseFragment fragment) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/SimpleTextView.java b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/SimpleTextView.java index 2e7555f69..c69dcaafc 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/SimpleTextView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/SimpleTextView.java @@ -32,6 +32,8 @@ import android.view.MotionEvent; import android.view.View; import android.view.accessibility.AccessibilityNodeInfo; +import androidx.annotation.NonNull; + import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.Emoji; import org.telegram.messenger.LocaleController; @@ -538,6 +540,11 @@ public class SimpleTextView extends View implements Drawable.Callback { } } + @Override + protected boolean verifyDrawable(@NonNull Drawable who) { + return who == rightDrawable || who == leftDrawable || super.verifyDrawable(who); + } + public void replaceTextWithDrawable(Drawable drawable, String replacedText) { if (replacedDrawable == drawable) { return; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/Theme.java b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/Theme.java index 85ca8e83f..8530e8f20 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/Theme.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/Theme.java @@ -65,6 +65,8 @@ import android.util.LongSparseArray; import android.util.SparseArray; import android.util.StateSet; import android.view.View; +import android.widget.FrameLayout; +import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -99,6 +101,8 @@ import org.telegram.tgnet.SerializedData; import org.telegram.tgnet.TLRPC; import org.telegram.ui.Components.AudioVisualizerDrawable; import org.telegram.ui.Components.BackgroundGradientDrawable; +import org.telegram.ui.Components.Bulletin; +import org.telegram.ui.Components.BulletinFactory; import org.telegram.ui.Components.ChoosingStickerStatusDrawable; import org.telegram.ui.Components.CombinedDrawable; import org.telegram.ui.Components.FragmentContextViewWavesDrawable; @@ -117,6 +121,7 @@ import org.telegram.ui.Components.StatusDrawable; import org.telegram.ui.Components.ThemeEditorView; import org.telegram.ui.Components.TypingDotsDrawable; import org.telegram.ui.RoundVideoProgressShadow; +import org.telegram.ui.ThemeActivity; import java.io.File; import java.io.FileInputStream; @@ -757,6 +762,10 @@ public class Theme { } if (invalidatePath || overrideRoundRadius != 0) { path.rewind(); + int heightHalf = (bounds.height() - padding) >> 1; + if (rad > heightHalf) { + rad = heightHalf; + } if (isOut) { if (drawFullBubble || currentType == TYPE_PREVIEW || paintToUse != null || drawFullBottom) { if (currentType == TYPE_MEDIA) { @@ -1489,7 +1498,6 @@ public class Theme { currentColors.put(key_chat_outInstant, textColor); currentColors.put(key_chat_outInstantSelected, textColor); currentColors.put(key_chat_outPreviewInstantText, textColor); - currentColors.put(key_chat_outPreviewInstantSelectedText, textColor); currentColors.put(key_chat_outViews, textColor); currentColors.put(key_chat_outViewsSelected, textColor); @@ -3030,7 +3038,6 @@ public class Theme { public static Paint chat_docBackPaint; public static Paint chat_deleteProgressPaint; - public static Paint chat_botProgressPaint; public static Paint chat_urlPaint; public static Paint chat_outUrlPaint; public static Paint chat_textSearchSelectionPaint; @@ -3183,8 +3190,7 @@ public class Theme { public static RLottieDrawable[] chat_attachButtonDrawables = new RLottieDrawable[6]; public static Drawable[] chat_locationDrawable = new Drawable[2]; public static Drawable[] chat_contactDrawable = new Drawable[2]; - public static Drawable[][] chat_fileStatesDrawable = new Drawable[10][2]; - public static Drawable[][] chat_photoStatesDrawables = new Drawable[13][2]; + public static Drawable[][] chat_fileStatesDrawable = new Drawable[5][2]; public static Drawable calllog_msgCallUpRedDrawable; public static Drawable calllog_msgCallUpGreenDrawable; @@ -3205,10 +3211,8 @@ public class Theme { public static final String key_dialogTextLink = "dialogTextLink"; public static final String key_dialogLinkSelection = "dialogLinkSelection"; public static final String key_dialogTextRed = "dialogTextRed"; - public static final String key_dialogTextRed2 = "dialogTextRed2"; public static final String key_dialogTextBlue = "dialogTextBlue"; public static final String key_dialogTextBlue2 = "dialogTextBlue2"; - public static final String key_dialogTextBlue3 = "dialogTextBlue3"; public static final String key_dialogTextBlue4 = "dialogTextBlue4"; public static final String key_dialogTextGray = "dialogTextGray"; public static final String key_dialogTextGray2 = "dialogTextGray2"; @@ -3224,11 +3228,8 @@ public class Theme { public static final String key_dialogScrollGlow = "dialogScrollGlow"; public static final String key_dialogRoundCheckBox = "dialogRoundCheckBox"; public static final String key_dialogRoundCheckBoxCheck = "dialogRoundCheckBoxCheck"; - public static final String key_dialogBadgeBackground = "dialogBadgeBackground"; - public static final String key_dialogBadgeText = "dialogBadgeText"; public static final String key_dialogRadioBackground = "dialogRadioBackground"; public static final String key_dialogRadioBackgroundChecked = "dialogRadioBackgroundChecked"; - public static final String key_dialogProgressCircle = "dialogProgressCircle"; public static final String key_dialogLineProgress = "dialogLineProgress"; public static final String key_dialogLineProgressBackground = "dialogLineProgressBackground"; public static final String key_dialogButton = "dialogButton"; @@ -3278,8 +3279,6 @@ public class Theme { public static final String key_windowBackgroundWhiteRedText3 = "windowBackgroundWhiteRedText3"; public static final String key_windowBackgroundWhiteRedText4 = "windowBackgroundWhiteRedText4"; public static final String key_windowBackgroundWhiteRedText5 = "windowBackgroundWhiteRedText5"; - public static final String key_windowBackgroundWhiteRedText6 = "windowBackgroundWhiteRedText6"; - public static final String key_windowBackgroundWhiteYellowText = "windowBackgroundWhiteYellowText"; public static final String key_windowBackgroundWhiteGrayText = "windowBackgroundWhiteGrayText"; public static final String key_windowBackgroundWhiteGrayText2 = "windowBackgroundWhiteGrayText2"; public static final String key_windowBackgroundWhiteGrayText3 = "windowBackgroundWhiteGrayText3"; @@ -3288,7 +3287,6 @@ public class Theme { public static final String key_windowBackgroundWhiteGrayText6 = "windowBackgroundWhiteGrayText6"; public static final String key_windowBackgroundWhiteGrayText7 = "windowBackgroundWhiteGrayText7"; public static final String key_windowBackgroundWhiteGrayText8 = "windowBackgroundWhiteGrayText8"; - public static final String key_windowBackgroundWhiteGrayLine = "windowBackgroundWhiteGrayLine"; public static final String key_windowBackgroundWhiteBlackText = "windowBackgroundWhiteBlackText"; public static final String key_windowBackgroundWhiteHintText = "windowBackgroundWhiteHintText"; public static final String key_windowBackgroundWhiteValueText = "windowBackgroundWhiteValueText"; @@ -3385,7 +3383,6 @@ public class Theme { public static final String key_actionBarDefaultSelector = "actionBarDefaultSelector"; public static final String key_actionBarWhiteSelector = "actionBarWhiteSelector"; public static final String key_actionBarDefaultIcon = "actionBarDefaultIcon"; - public static final String key_actionBarTipBackground = "actionBarTipBackground"; public static final String key_actionBarActionModeDefault = "actionBarActionModeDefault"; public static final String key_actionBarActionModeDefaultTop = "actionBarActionModeDefaultTop"; public static final String key_actionBarActionModeDefaultIcon = "actionBarActionModeDefaultIcon"; @@ -3419,7 +3416,6 @@ public class Theme { public static final String key_chats_nameArchived = "chats_nameArchived"; public static final String key_chats_secretName = "chats_secretName"; public static final String key_chats_secretIcon = "chats_secretIcon"; - public static final String key_chats_nameIcon = "chats_nameIcon"; public static final String key_chats_pinnedIcon = "chats_pinnedIcon"; public static final String key_chats_archiveBackground = "chats_archiveBackground"; public static final String key_chats_archivePinBackground = "chats_archivePinBackground"; @@ -3458,21 +3454,14 @@ public class Theme { public static final String key_chats_menuPhoneCats = "chats_menuPhoneCats"; public static final String key_chats_menuTopBackgroundCats = "chats_menuTopBackgroundCats"; public static final String key_chats_menuTopBackground = "chats_menuTopBackground"; - public static final String key_chats_menuCloud = "chats_menuCloud"; - public static final String key_chats_menuCloudBackgroundCats = "chats_menuCloudBackgroundCats"; public static final String key_chats_actionIcon = "chats_actionIcon"; public static final String key_chats_actionBackground = "chats_actionBackground"; public static final String key_chats_actionPressedBackground = "chats_actionPressedBackground"; - public static final String key_chats_actionUnreadIcon = "chats_actionUnreadIcon"; - public static final String key_chats_actionUnreadBackground = "chats_actionUnreadBackground"; - public static final String key_chats_actionUnreadPressedBackground = "chats_actionUnreadPressedBackground"; public static final String key_chats_archivePullDownBackground = "chats_archivePullDownBackground"; public static final String key_chats_archivePullDownBackgroundActive = "chats_archivePullDownBackgroundActive"; public static final String key_chats_tabUnreadActiveBackground = "chats_tabUnreadActiveBackground"; public static final String key_chats_tabUnreadUnactiveBackground = "chats_tabUnreadUnactiveBackground"; - public static final String key_chat_attachMediaBanBackground = "chat_attachMediaBanBackground"; - public static final String key_chat_attachMediaBanText = "chat_attachMediaBanText"; public static final String key_chat_attachCheckBoxCheck = "chat_attachCheckBoxCheck"; public static final String key_chat_attachCheckBoxBackground = "chat_attachCheckBoxBackground"; public static final String key_chat_attachPhotoBackground = "chat_attachPhotoBackground"; @@ -3488,23 +3477,18 @@ public class Theme { public static final String key_chat_inPollWrongAnswer = "chat_inPollWrongAnswer"; public static final String key_chat_outPollWrongAnswer = "chat_outPollWrongAnswer"; + public static final String key_chat_attachIcon = "chat_attachIcon"; public static final String key_chat_attachGalleryBackground = "chat_attachGalleryBackground"; - public static final String key_chat_attachGalleryIcon = "chat_attachGalleryIcon"; public static final String key_chat_attachGalleryText = "chat_attachGalleryText"; public static final String key_chat_attachAudioBackground = "chat_attachAudioBackground"; - public static final String key_chat_attachAudioIcon = "chat_attachAudioIcon"; public static final String key_chat_attachAudioText = "chat_attachAudioText"; public static final String key_chat_attachFileBackground = "chat_attachFileBackground"; - public static final String key_chat_attachFileIcon = "chat_attachFileIcon"; public static final String key_chat_attachFileText = "chat_attachFileText"; public static final String key_chat_attachContactBackground = "chat_attachContactBackground"; - public static final String key_chat_attachContactIcon = "chat_attachContactIcon"; public static final String key_chat_attachContactText = "chat_attachContactText"; public static final String key_chat_attachLocationBackground = "chat_attachLocationBackground"; - public static final String key_chat_attachLocationIcon = "chat_attachLocationIcon"; public static final String key_chat_attachLocationText = "chat_attachLocationText"; public static final String key_chat_attachPollBackground = "chat_attachPollBackground"; - public static final String key_chat_attachPollIcon = "chat_attachPollIcon"; public static final String key_chat_attachPollText = "chat_attachPollText"; public static final String key_chat_status = "chat_status"; @@ -3572,12 +3556,9 @@ public class Theme { public static final String key_chat_previewGameText = "chat_previewGameText"; public static final String key_chat_inPreviewInstantText = "chat_inPreviewInstantText"; public static final String key_chat_outPreviewInstantText = "chat_outPreviewInstantText"; - public static final String key_chat_inPreviewInstantSelectedText = "chat_inPreviewInstantSelectedText"; - public static final String key_chat_outPreviewInstantSelectedText = "chat_outPreviewInstantSelectedText"; public static final String key_chat_secretTimeText = "chat_secretTimeText"; public static final String key_chat_stickerNameText = "chat_stickerNameText"; public static final String key_chat_botButtonText = "chat_botButtonText"; - public static final String key_chat_botProgress = "chat_botProgress"; public static final String key_chat_inForwardedNameText = "chat_inForwardedNameText"; public static final String key_chat_outForwardedNameText = "chat_outForwardedNameText"; public static final String key_chat_inPsaNameText = "chat_inPsaNameText"; @@ -3683,7 +3664,6 @@ public class Theme { public static final String key_chat_messagePanelVoiceLock = "key_chat_messagePanelVoiceLock"; public static final String key_chat_messagePanelVoiceLockBackground = "key_chat_messagePanelVoiceLockBackground"; public static final String key_chat_messagePanelVoiceLockShadow = "key_chat_messagePanelVoiceLockShadow"; - public static final String key_chat_messagePanelVideoFrame = "chat_messagePanelVideoFrame"; public static final String key_chat_topPanelBackground = "chat_topPanelBackground"; public static final String key_chat_topPanelClose = "chat_topPanelClose"; public static final String key_chat_topPanelLine = "chat_topPanelLine"; @@ -3696,33 +3676,20 @@ public class Theme { public static final String key_chat_outLoader = "chat_outLoader"; public static final String key_chat_outLoaderSelected = "chat_outLoaderSelected"; public static final String key_chat_inLoaderPhoto = "chat_inLoaderPhoto"; - public static final String key_chat_inLoaderPhotoSelected = "chat_inLoaderPhotoSelected"; - public static final String key_chat_inLoaderPhotoIcon = "chat_inLoaderPhotoIcon"; - public static final String key_chat_inLoaderPhotoIconSelected = "chat_inLoaderPhotoIconSelected"; - public static final String key_chat_outLoaderPhoto = "chat_outLoaderPhoto"; - public static final String key_chat_outLoaderPhotoSelected = "chat_outLoaderPhotoSelected"; - public static final String key_chat_outLoaderPhotoIcon = "chat_outLoaderPhotoIcon"; - public static final String key_chat_outLoaderPhotoIconSelected = "chat_outLoaderPhotoIconSelected"; public static final String key_chat_mediaLoaderPhoto = "chat_mediaLoaderPhoto"; public static final String key_chat_mediaLoaderPhotoSelected = "chat_mediaLoaderPhotoSelected"; public static final String key_chat_mediaLoaderPhotoIcon = "chat_mediaLoaderPhotoIcon"; public static final String key_chat_mediaLoaderPhotoIconSelected = "chat_mediaLoaderPhotoIconSelected"; public static final String key_chat_inLocationBackground = "chat_inLocationBackground"; public static final String key_chat_inLocationIcon = "chat_inLocationIcon"; - public static final String key_chat_outLocationBackground = "chat_outLocationBackground"; public static final String key_chat_outLocationIcon = "chat_outLocationIcon"; public static final String key_chat_inContactBackground = "chat_inContactBackground"; public static final String key_chat_inContactIcon = "chat_inContactIcon"; public static final String key_chat_outContactBackground = "chat_outContactBackground"; public static final String key_chat_outContactIcon = "chat_outContactIcon"; - public static final String key_chat_inFileIcon = "chat_inFileIcon"; - public static final String key_chat_inFileSelectedIcon = "chat_inFileSelectedIcon"; - public static final String key_chat_outFileIcon = "chat_outFileIcon"; - public static final String key_chat_outFileSelectedIcon = "chat_outFileSelectedIcon"; public static final String key_chat_replyPanelIcons = "chat_replyPanelIcons"; public static final String key_chat_replyPanelClose = "chat_replyPanelClose"; public static final String key_chat_replyPanelName = "chat_replyPanelName"; - public static final String key_chat_replyPanelMessage = "chat_replyPanelMessage"; public static final String key_chat_replyPanelLine = "chat_replyPanelLine"; public static final String key_chat_searchPanelIcons = "chat_searchPanelIcons"; public static final String key_chat_searchPanelText = "chat_searchPanelText"; @@ -3735,21 +3702,16 @@ public class Theme { public static final String key_chat_unreadMessagesStartBackground = "chat_unreadMessagesStartBackground"; public static final String key_chat_inlineResultIcon = "chat_inlineResultIcon"; public static final String key_chat_emojiPanelBackground = "chat_emojiPanelBackground"; - public static final String key_chat_emojiPanelBadgeBackground = "chat_emojiPanelBadgeBackground"; - public static final String key_chat_emojiPanelBadgeText = "chat_emojiPanelBadgeText"; public static final String key_chat_emojiSearchBackground = "chat_emojiSearchBackground"; public static final String key_chat_emojiSearchIcon = "chat_emojiSearchIcon"; public static final String key_chat_emojiPanelShadowLine = "chat_emojiPanelShadowLine"; public static final String key_chat_emojiPanelEmptyText = "chat_emojiPanelEmptyText"; public static final String key_chat_emojiPanelIcon = "chat_emojiPanelIcon"; - public static final String key_chat_emojiPanelIconSelector = "chat_emojiPanelIconSelector"; public static final String key_chat_emojiBottomPanelIcon = "chat_emojiBottomPanelIcon"; public static final String key_chat_emojiPanelIconSelected = "chat_emojiPanelIconSelected"; public static final String key_chat_emojiPanelStickerPackSelector = "chat_emojiPanelStickerPackSelector"; public static final String key_chat_emojiPanelStickerPackSelectorLine = "chat_emojiPanelStickerPackSelectorLine"; public static final String key_chat_emojiPanelBackspace = "chat_emojiPanelBackspace"; - public static final String key_chat_emojiPanelMasksIcon = "chat_emojiPanelMasksIcon"; - public static final String key_chat_emojiPanelMasksIconSelected = "chat_emojiPanelMasksIconSelected"; public static final String key_chat_emojiPanelTrendingTitle = "chat_emojiPanelTrendingTitle"; public static final String key_chat_emojiPanelStickerSetName = "chat_emojiPanelStickerSetName"; public static final String key_chat_emojiPanelStickerSetNameHighlight = "chat_emojiPanelStickerSetNameHighlight"; @@ -3774,15 +3736,11 @@ public class Theme { public static final String key_chat_gifSaveHintText = "chat_gifSaveHintText"; public static final String key_chat_gifSaveHintBackground = "chat_gifSaveHintBackground"; public static final String key_chat_goDownButton = "chat_goDownButton"; - public static final String key_chat_goDownButtonShadow = "chat_goDownButtonShadow"; public static final String key_chat_goDownButtonIcon = "chat_goDownButtonIcon"; public static final String key_chat_goDownButtonCounter = "chat_goDownButtonCounter"; public static final String key_chat_goDownButtonCounterBackground = "chat_goDownButtonCounterBackground"; - public static final String key_chat_secretTimerBackground = "chat_secretTimerBackground"; - public static final String key_chat_secretTimerText = "chat_secretTimerText"; public static final String key_chat_outTextSelectionHighlight = "chat_outTextSelectionHighlight"; public static final String key_chat_inTextSelectionHighlight = "chat_inTextSelectionHighlight"; - public static final String key_chat_recordedVoiceHighlight = "key_chat_recordedVoiceHighlight"; public static final String key_chat_TextSelectionCursor = "chat_TextSelectionCursor"; public static final String key_chat_outTextSelectionCursor = "chat_outTextSelectionCursor"; public static final String key_chat_inBubbleLocationPlaceholder = "chat_inBubbleLocationPlaceholder"; @@ -3792,9 +3750,7 @@ public class Theme { public static final String key_voipgroup_listSelector = "voipgroup_listSelector"; public static final String key_voipgroup_inviteMembersBackground = "voipgroup_inviteMembersBackground"; public static final String key_voipgroup_actionBar = "voipgroup_actionBar"; - public static final String key_voipgroup_emptyView = "voipgroup_emptyView"; public static final String key_voipgroup_actionBarItems = "voipgroup_actionBarItems"; - public static final String key_voipgroup_actionBarSubtitle = "voipgroup_actionBarSubtitle"; public static final String key_voipgroup_actionBarItemsSelector = "voipgroup_actionBarItemsSelector"; public static final String key_voipgroup_actionBarUnscrolled = "voipgroup_actionBarUnscrolled"; public static final String key_voipgroup_listViewBackgroundUnscrolled = "voipgroup_listViewBackgroundUnscrolled"; @@ -3827,7 +3783,6 @@ public class Theme { public static final String key_voipgroup_disabledButtonActive = "voipgroup_disabledButtonActive"; public static final String key_voipgroup_disabledButtonActiveScrolled = "voipgroup_disabledButtonActiveScrolled"; public static final String key_voipgroup_connectingProgress = "voipgroup_connectingProgress"; - public static final String key_voipgroup_blueText = "voipgroup_blueText"; public static final String key_voipgroup_scrollUp = "voipgroup_scrollUp"; public static final String key_voipgroup_searchPlaceholder = "voipgroup_searchPlaceholder"; public static final String key_voipgroup_searchBackground = "voipgroup_searchBackground"; @@ -3877,7 +3832,6 @@ public class Theme { public static final String key_sharedMedia_linkPlaceholder = "sharedMedia_linkPlaceholder"; public static final String key_sharedMedia_linkPlaceholderText = "sharedMedia_linkPlaceholderText"; public static final String key_sharedMedia_photoPlaceholder = "sharedMedia_photoPlaceholder"; - public static final String key_sharedMedia_actionMode = "sharedMedia_actionMode"; public static final String key_featuredStickers_addedIcon = "featuredStickers_addedIcon"; public static final String key_featuredStickers_buttonProgress = "featuredStickers_buttonProgress"; @@ -3890,7 +3844,6 @@ public class Theme { public static final String key_stickers_menu = "stickers_menu"; public static final String key_stickers_menuSelector = "stickers_menuSelector"; - public static final String key_changephoneinfo_image = "changephoneinfo_image"; public static final String key_changephoneinfo_image2 = "changephoneinfo_image2"; public static final String key_groupcreate_hintText = "groupcreate_hintText"; @@ -3907,11 +3860,6 @@ public class Theme { public static final String key_login_progressInner = "login_progressInner"; public static final String key_login_progressOuter = "login_progressOuter"; - public static final String key_musicPicker_checkbox = "musicPicker_checkbox"; - public static final String key_musicPicker_checkboxCheck = "musicPicker_checkboxCheck"; - public static final String key_musicPicker_buttonBackground = "musicPicker_buttonBackground"; - public static final String key_musicPicker_buttonIcon = "musicPicker_buttonIcon"; - public static final String key_picker_enabledButton = "picker_enabledButton"; public static final String key_picker_disabledButton = "picker_disabledButton"; public static final String key_picker_badge = "picker_badge"; @@ -3948,41 +3896,14 @@ public class Theme { public static final String key_sheet_scrollUp = "key_sheet_scrollUp"; public static final String key_sheet_other = "key_sheet_other"; - public static final String key_wallet_blackBackground = "wallet_blackBackground"; - public static final String key_wallet_graySettingsBackground = "wallet_graySettingsBackground"; - public static final String key_wallet_grayBackground = "wallet_grayBackground"; - public static final String key_wallet_whiteBackground = "wallet_whiteBackground"; - public static final String key_wallet_blackBackgroundSelector = "wallet_blackBackgroundSelector"; - public static final String key_wallet_whiteText = "wallet_whiteText"; - public static final String key_wallet_blackText = "wallet_blackText"; - public static final String key_wallet_statusText = "wallet_statusText"; - public static final String key_wallet_grayText = "wallet_grayText"; - public static final String key_wallet_grayText2 = "wallet_grayText2"; - public static final String key_wallet_greenText = "wallet_greenText"; - public static final String key_wallet_redText = "wallet_redText"; - public static final String key_wallet_dateText = "wallet_dateText"; - public static final String key_wallet_commentText = "wallet_commentText"; - public static final String key_wallet_releaseBackground = "wallet_releaseBackground"; - public static final String key_wallet_pullBackground = "wallet_pullBackground"; - public static final String key_wallet_buttonBackground = "wallet_buttonBackground"; - public static final String key_wallet_buttonPressedBackground = "wallet_buttonPressedBackground"; - public static final String key_wallet_buttonText = "wallet_buttonText"; - public static final String key_wallet_addressConfirmBackground = "wallet_addressConfirmBackground"; - //ununsed - public static final String key_chat_outBroadcast = "chat_outBroadcast"; - public static final String key_chat_mediaBroadcast = "chat_mediaBroadcast"; - - public static final String key_player_actionBar = "player_actionBar"; public static final String key_player_actionBarSelector = "player_actionBarSelector"; public static final String key_player_actionBarTitle = "player_actionBarTitle"; - public static final String key_player_actionBarTop = "player_actionBarTop"; public static final String key_player_actionBarSubtitle = "player_actionBarSubtitle"; public static final String key_player_actionBarItems = "player_actionBarItems"; public static final String key_player_background = "player_background"; public static final String key_player_time = "player_time"; public static final String key_player_progressBackground = "player_progressBackground"; - public static final String key_player_progressBackground2 = "player_progressBackground2"; public static final String key_player_progressCachedBackground = "key_player_progressCachedBackground"; public static final String key_player_progress = "player_progress"; public static final String key_player_button = "player_button"; @@ -3994,35 +3915,31 @@ public class Theme { public static final String key_statisticChartActiveLine = "statisticChartActiveLine"; public static final String key_statisticChartInactivePickerChart = "statisticChartInactivePickerChart"; public static final String key_statisticChartActivePickerChart = "statisticChartActivePickerChart"; - public static final String key_statisticChartPopupBackground = "statisticChartPopupBackground"; public static final String key_statisticChartRipple = "statisticChartRipple"; public static final String key_statisticChartBackZoomColor = "statisticChartBackZoomColor"; - public static final String key_statisticChartCheckboxInactive = "statisticChartCheckboxInactive"; - public static final String key_statisticChartNightIconColor = "statisticChartNightIconColor"; public static final String key_statisticChartChevronColor = "statisticChartChevronColor"; - public static final String key_statisticChartHighlightColor = "statisticChartHighlightColor"; - public final static String key_statisticChartLine_blue = "statisticChartLine_blue"; - public final static String key_statisticChartLine_green = "statisticChartLine_green"; - public final static String key_statisticChartLine_red = "statisticChartLine_red"; - public final static String key_statisticChartLine_golden = "statisticChartLine_golden"; - public final static String key_statisticChartLine_lightblue = "statisticChartLine_lightblue"; - public final static String key_statisticChartLine_lightgreen = "statisticChartLine_lightgreen"; - public final static String key_statisticChartLine_orange = "statisticChartLine_orange"; - public final static String key_statisticChartLine_indigo = "statisticChartLine_indigo"; - public final static String key_statisticChartLine_purple = "statisticChartLine_purple"; - public final static String key_statisticChartLine_cyan = "statisticChartLine_cyan"; - public final static String key_statisticChartLineEmpty = "statisticChartLineEmpty"; + public static final String key_statisticChartLine_blue = "statisticChartLine_blue"; + public static final String key_statisticChartLine_green = "statisticChartLine_green"; + public static final String key_statisticChartLine_red = "statisticChartLine_red"; + public static final String key_statisticChartLine_golden = "statisticChartLine_golden"; + public static final String key_statisticChartLine_lightblue = "statisticChartLine_lightblue"; + public static final String key_statisticChartLine_lightgreen = "statisticChartLine_lightgreen"; + public static final String key_statisticChartLine_orange = "statisticChartLine_orange"; + public static final String key_statisticChartLine_indigo = "statisticChartLine_indigo"; + public static final String key_statisticChartLine_purple = "statisticChartLine_purple"; + public static final String key_statisticChartLine_cyan = "statisticChartLine_cyan"; + public static final String key_statisticChartLineEmpty = "statisticChartLineEmpty"; - public final static String key_color_lightblue = "color_lightblue"; - public final static String key_color_blue = "color_blue"; - public final static String key_color_green = "color_green"; - public final static String key_color_lightgreen = "color_lightgreen"; - public final static String key_color_red = "color_red"; - public final static String key_color_orange = "color_orange"; - public final static String key_color_yellow = "color_yellow"; - public final static String key_color_purple = "color_purple"; - public final static String key_color_cyan = "color_cyan"; - public final static String[] keys_colors = { key_color_lightblue, key_color_blue, key_color_green, key_color_lightgreen, key_color_red, key_color_orange, key_color_yellow, key_color_purple, key_color_cyan }; + public static final String key_color_lightblue = "color_lightblue"; + public static final String key_color_blue = "color_blue"; + public static final String key_color_green = "color_green"; + public static final String key_color_lightgreen = "color_lightgreen"; + public static final String key_color_red = "color_red"; + public static final String key_color_orange = "color_orange"; + public static final String key_color_yellow = "color_yellow"; + public static final String key_color_purple = "color_purple"; + public static final String key_color_cyan = "color_cyan"; + public static final String[] keys_colors = { key_color_lightblue, key_color_blue, key_color_green, key_color_lightgreen, key_color_red, key_color_orange, key_color_yellow, key_color_purple, key_color_cyan }; public static final String key_chat_outReactionButtonBackground = "chat_outReactionButtonBackground"; public static final String key_chat_inReactionButtonBackground = "chat_inReactionButtonBackground"; @@ -4142,10 +4059,8 @@ public class Theme { defaultColors.put(key_dialogTextLink, 0xff2678b6); defaultColors.put(key_dialogLinkSelection, 0x3362a9e3); defaultColors.put(key_dialogTextRed, 0xffcd5a5a); - defaultColors.put(key_dialogTextRed2, 0xffde3a3a); defaultColors.put(key_dialogTextBlue, 0xff2f8cc9); defaultColors.put(key_dialogTextBlue2, 0xff3a95d5); - defaultColors.put(key_dialogTextBlue3, 0xff3ec1f9); defaultColors.put(key_dialogTextBlue4, 0xff19a7e8); defaultColors.put(key_dialogTextGray, 0xff348bc1); defaultColors.put(key_dialogTextGray2, 0xff757575); @@ -4164,7 +4079,6 @@ public class Theme { defaultColors.put(key_dialogCheckboxSquareDisabled, 0xffb0b0b0); defaultColors.put(key_dialogRadioBackground, 0xffb3b3b3); defaultColors.put(key_dialogRadioBackgroundChecked, 0xff37a9f0); - defaultColors.put(key_dialogProgressCircle, 0xff0A0D0F); defaultColors.put(key_dialogLineProgress, 0xff527da3); defaultColors.put(key_dialogLineProgressBackground, 0xffdbdbdb); defaultColors.put(key_dialogButton, 0xff4991cc); @@ -4172,8 +4086,6 @@ public class Theme { defaultColors.put(key_dialogScrollGlow, 0xfff5f6f7); defaultColors.put(key_dialogRoundCheckBox, 0xff4cb4f5); defaultColors.put(key_dialogRoundCheckBoxCheck, 0xffffffff); - defaultColors.put(key_dialogBadgeBackground, 0xff3ec1f9); - defaultColors.put(key_dialogBadgeText, 0xffffffff); defaultColors.put(key_dialogCameraIcon, 0xffffffff); defaultColors.put(key_dialog_inlineProgressBackground, 0xf6f0f2f5); defaultColors.put(key_dialog_inlineProgress, 0xff6b7378); @@ -4212,8 +4124,6 @@ public class Theme { defaultColors.put(key_windowBackgroundWhiteRedText3, 0xffd24949); defaultColors.put(key_windowBackgroundWhiteRedText4, 0xffcf3030); defaultColors.put(key_windowBackgroundWhiteRedText5, 0xffed3939); - defaultColors.put(key_windowBackgroundWhiteRedText6, 0xffff6666); - defaultColors.put(key_windowBackgroundWhiteYellowText, 0xffD87B29); defaultColors.put(key_windowBackgroundWhiteGrayText, 0xff838c96); defaultColors.put(key_windowBackgroundWhiteGrayText2, 0xff82868a); defaultColors.put(key_windowBackgroundWhiteGrayText3, 0xff999999); @@ -4222,7 +4132,6 @@ public class Theme { defaultColors.put(key_windowBackgroundWhiteGrayText6, 0xff757575); defaultColors.put(key_windowBackgroundWhiteGrayText7, 0xffc6c6c6); defaultColors.put(key_windowBackgroundWhiteGrayText8, 0xff6d6d72); - defaultColors.put(key_windowBackgroundWhiteGrayLine, 0xffdbdbdb); defaultColors.put(key_windowBackgroundWhiteBlackText, 0xff222222); defaultColors.put(key_windowBackgroundWhiteHintText, 0xffa8a8a8); defaultColors.put(key_windowBackgroundWhiteValueText, 0xff3a95d5); @@ -4344,7 +4253,6 @@ public class Theme { defaultColors.put(key_chats_nameArchived, 0xff525252); defaultColors.put(key_chats_secretName, 0xff00a60e); defaultColors.put(key_chats_secretIcon, 0xff19b126); - defaultColors.put(key_chats_nameIcon, 0xff242424); defaultColors.put(key_chats_pinnedIcon, 0xffa8a8a8); defaultColors.put(key_chats_message, 0xff8b8d8f); defaultColors.put(key_chats_messageArchived, 0xff919191); @@ -4375,20 +4283,13 @@ public class Theme { defaultColors.put(key_chats_menuName, 0xffffffff); defaultColors.put(key_chats_menuPhone, 0xffffffff); defaultColors.put(key_chats_menuPhoneCats, 0xffc2e5ff); - defaultColors.put(key_chats_menuCloud, 0xffffffff); - defaultColors.put(key_chats_menuCloudBackgroundCats, 0xff427ba9); defaultColors.put(key_chats_actionIcon, 0xffffffff); defaultColors.put(key_chats_actionBackground, 0xff65a9e0); defaultColors.put(key_chats_actionPressedBackground, 0xff569dd6); - defaultColors.put(key_chats_actionUnreadIcon, 0xff737373); - defaultColors.put(key_chats_actionUnreadBackground, 0xffffffff); - defaultColors.put(key_chats_actionUnreadPressedBackground, 0xfff2f2f2); defaultColors.put(key_chats_menuTopBackgroundCats, 0xff598fba); defaultColors.put(key_chats_archivePullDownBackground, 0xffc6c9cc); defaultColors.put(key_chats_archivePullDownBackgroundActive, 0xff66a9e0); - defaultColors.put(key_chat_attachMediaBanBackground, 0xff464646); - defaultColors.put(key_chat_attachMediaBanText, 0xffffffff); defaultColors.put(key_chat_attachCheckBoxCheck, 0xffffffff); defaultColors.put(key_chat_attachCheckBoxBackground, 0xff39b2f7); defaultColors.put(key_chat_attachPhotoBackground, 0x0c000000); @@ -4399,24 +4300,19 @@ public class Theme { defaultColors.put(key_chat_attachPermissionText, 0xff6f777a); defaultColors.put(key_chat_attachEmptyImage, 0xffcccccc); + defaultColors.put(key_chat_attachIcon, 0xffffffff); defaultColors.put(key_chat_attachGalleryBackground, 0xff459df5); defaultColors.put(key_chat_attachGalleryText, 0xff2e8de9); - defaultColors.put(key_chat_attachGalleryIcon, 0xffffffff); defaultColors.put(key_chat_attachAudioBackground, 0xffeb6060); defaultColors.put(key_chat_attachAudioText, 0xffde4747); - defaultColors.put(key_chat_attachAudioIcon, 0xffffffff); defaultColors.put(key_chat_attachFileBackground, 0xff34b9f1); defaultColors.put(key_chat_attachFileText, 0xff14a8e4); - defaultColors.put(key_chat_attachFileIcon, 0xffffffff); defaultColors.put(key_chat_attachContactBackground, 0xfff2c04b); defaultColors.put(key_chat_attachContactText, 0xffdfa000); - defaultColors.put(key_chat_attachContactIcon, 0xffffffff); defaultColors.put(key_chat_attachLocationBackground, 0xff60c255); defaultColors.put(key_chat_attachLocationText, 0xff3cab2f); - defaultColors.put(key_chat_attachLocationIcon, 0xffffffff); defaultColors.put(key_chat_attachPollBackground, 0xfff2c04b); defaultColors.put(key_chat_attachPollText, 0xffdfa000); - defaultColors.put(key_chat_attachPollIcon, 0xffffffff); defaultColors.put(key_chat_inPollCorrectAnswer, 0xff60c255); defaultColors.put(key_chat_outPollCorrectAnswer, 0xff60c255); @@ -4479,12 +4375,9 @@ public class Theme { defaultColors.put(key_chat_previewGameText, 0xffffffff); defaultColors.put(key_chat_inPreviewInstantText, 0xff3a8ccf); defaultColors.put(key_chat_outPreviewInstantText, 0xff55ab4f); - defaultColors.put(key_chat_inPreviewInstantSelectedText, 0xff3079b5); - defaultColors.put(key_chat_outPreviewInstantSelectedText, 0xff489943); defaultColors.put(key_chat_secretTimeText, 0xffe4e2e0); defaultColors.put(key_chat_stickerNameText, 0xffffffff); defaultColors.put(key_chat_botButtonText, 0xffffffff); - defaultColors.put(key_chat_botProgress, 0xffffffff); defaultColors.put(key_chat_inForwardedNameText, 0xff3886c7); defaultColors.put(key_chat_outForwardedNameText, 0xff55ab4f); defaultColors.put(key_chat_inPsaNameText, 0xff5a9c39); @@ -4576,21 +4469,16 @@ public class Theme { defaultColors.put(key_chat_outLinkSelectBackground, 0x3362a9e3); defaultColors.put(key_chat_textSelectBackground, 0x6662a9e3); defaultColors.put(key_chat_emojiPanelBackground, 0xfff0f2f5); - defaultColors.put(key_chat_emojiPanelBadgeBackground, 0xff4da6ea); - defaultColors.put(key_chat_emojiPanelBadgeText, 0xffffffff); defaultColors.put(key_chat_emojiSearchBackground, 0xffe5e9ee); defaultColors.put(key_chat_emojiSearchIcon, 0xff94a1af); defaultColors.put(key_chat_emojiPanelShadowLine, 0x12000000); defaultColors.put(key_chat_emojiPanelEmptyText, 0xff949ba1); defaultColors.put(key_chat_emojiPanelIcon, 0xff9da4ab); - defaultColors.put(key_chat_emojiPanelIconSelector, 0x0b000000); defaultColors.put(key_chat_emojiBottomPanelIcon, 0xff8c9197); defaultColors.put(key_chat_emojiPanelIconSelected, 0xff5E6976); defaultColors.put(key_chat_emojiPanelStickerPackSelector, 0xffe2e5e7); defaultColors.put(key_chat_emojiPanelStickerPackSelectorLine, 0xff56abf0); defaultColors.put(key_chat_emojiPanelBackspace, 0xff8c9197); - defaultColors.put(key_chat_emojiPanelMasksIcon, 0xffffffff); - defaultColors.put(key_chat_emojiPanelMasksIconSelected, 0xff62bfe8); defaultColors.put(key_chat_emojiPanelTrendingTitle, 0xff222222); defaultColors.put(key_chat_emojiPanelStickerSetName, 0xff828b94); defaultColors.put(key_chat_emojiPanelStickerSetNameHighlight, 0xff278ddb); @@ -4602,20 +4490,13 @@ public class Theme { defaultColors.put(key_chat_unreadMessagesStartArrowIcon, 0xffa2b5c7); defaultColors.put(key_chat_unreadMessagesStartText, 0xff5695cc); defaultColors.put(key_chat_unreadMessagesStartBackground, 0xffffffff); - defaultColors.put(key_chat_inFileIcon, 0xffa2b5c7); - defaultColors.put(key_chat_inFileSelectedIcon, 0xff87b6c5); - defaultColors.put(key_chat_outFileIcon, 0xff85bf78); - defaultColors.put(key_chat_outFileSelectedIcon, 0xff85bf78); defaultColors.put(key_chat_inLocationBackground, 0xffebf0f5); defaultColors.put(key_chat_inLocationIcon, 0xffa2b5c7); - defaultColors.put(key_chat_outLocationBackground, 0xffdaf5c3); defaultColors.put(key_chat_outLocationIcon, 0xff87bf78); defaultColors.put(key_chat_inContactBackground, 0xff72b5e8); defaultColors.put(key_chat_inContactIcon, 0xffffffff); defaultColors.put(key_chat_outContactBackground, 0xff78c272); defaultColors.put(key_chat_outContactIcon, 0xffefffde); - defaultColors.put(key_chat_outBroadcast, 0xff46aa36); - defaultColors.put(key_chat_mediaBroadcast, 0xffffffff); defaultColors.put(key_chat_searchPanelIcons, 0xff676a6f); defaultColors.put(key_chat_searchPanelText, 0xff676a6f); defaultColors.put(key_chat_secretChatStatusText, 0xff7f7f7f); @@ -4624,7 +4505,6 @@ public class Theme { defaultColors.put(key_chat_replyPanelIcons, 0xff57a8e6); defaultColors.put(key_chat_replyPanelClose, 0xff8e959b); defaultColors.put(key_chat_replyPanelName, 0xff3a8ccf); - defaultColors.put(key_chat_replyPanelMessage, 0xff222222); defaultColors.put(key_chat_replyPanelLine, 0xffe8e8e8); defaultColors.put(key_chat_messagePanelBackground, 0xffffffff); defaultColors.put(key_chat_messagePanelText, 0xff000000); @@ -4638,7 +4518,6 @@ public class Theme { defaultColors.put(key_chat_recordedVoiceProgress, 0xffB1DEFF); defaultColors.put(key_chat_recordedVoiceProgressInner, 0xffffffff); defaultColors.put(key_chat_recordVoiceCancel, 0xff3A95D4); - defaultColors.put(key_chat_recordedVoiceHighlight, 0x64ffffff); defaultColors.put(key_chat_messagePanelSend, 0xff62b0eb); defaultColors.put(key_chat_messagePanelVoiceLock, 0xffa4a4a4); defaultColors.put(key_chat_messagePanelVoiceLockBackground, 0xffffffff); @@ -4648,7 +4527,6 @@ public class Theme { defaultColors.put(key_chat_gifSaveHintText, 0xffffffff); defaultColors.put(key_chat_gifSaveHintBackground, 0xcc111111); defaultColors.put(key_chat_goDownButton, 0xffffffff); - defaultColors.put(key_chat_goDownButtonShadow, 0xff000000); defaultColors.put(key_chat_goDownButtonIcon, 0xff8e959b); defaultColors.put(key_chat_goDownButtonCounter, 0xffffffff); defaultColors.put(key_chat_goDownButtonCounterBackground, 0xff4da2e8); @@ -4670,19 +4548,10 @@ public class Theme { defaultColors.put(key_chat_outLoader, 0xff78c272); defaultColors.put(key_chat_outLoaderSelected, 0xff6ab564); defaultColors.put(key_chat_inLoaderPhoto, 0xffa2b8c8); - defaultColors.put(key_chat_inLoaderPhotoSelected, 0xffa2b5c7); - defaultColors.put(key_chat_inLoaderPhotoIcon, 0xfffcfcfc); - defaultColors.put(key_chat_inLoaderPhotoIconSelected, 0xffebf0f5); - defaultColors.put(key_chat_outLoaderPhoto, 0xff85bf78); - defaultColors.put(key_chat_outLoaderPhotoSelected, 0xff7db870); - defaultColors.put(key_chat_outLoaderPhotoIcon, 0xffdaf5c3); - defaultColors.put(key_chat_outLoaderPhotoIconSelected, 0xffc0e8a4); defaultColors.put(key_chat_mediaLoaderPhoto, 0x66000000); defaultColors.put(key_chat_mediaLoaderPhotoSelected, 0x7f000000); defaultColors.put(key_chat_mediaLoaderPhotoIcon, 0xffffffff); defaultColors.put(key_chat_mediaLoaderPhotoIconSelected, 0xffd9d9d9); - defaultColors.put(key_chat_secretTimerBackground, 0xcc3e648e); - defaultColors.put(key_chat_secretTimerText, 0xffffffff); defaultColors.put(key_chat_serviceBackgroundSelector, 0x20ffffff); defaultColors.put(key_profile_creatorIcon, 0xff3a95d5); @@ -4699,16 +4568,13 @@ public class Theme { defaultColors.put(key_profile_tabSelectedLine, 0xff4fa6e9); defaultColors.put(key_profile_tabSelector, 0x0f000000); - defaultColors.put(key_player_actionBar, 0xffffffff); defaultColors.put(key_player_actionBarSelector, 0x0f000000); defaultColors.put(key_player_actionBarTitle, 0xff2f3438); - defaultColors.put(key_player_actionBarTop, 0x99000000); defaultColors.put(key_player_actionBarSubtitle, 0xff8a8a8a); defaultColors.put(key_player_actionBarItems, 0xff8a8a8a); defaultColors.put(key_player_background, 0xffffffff); defaultColors.put(key_player_time, 0xff8c9296); defaultColors.put(key_player_progressBackground, 0xffEBEDF0); - defaultColors.put(key_player_progressBackground2, 0xffCCD3DB); defaultColors.put(key_player_progressCachedBackground, 0xffC5DCF0); defaultColors.put(key_player_progress, 0xff54AAEB); defaultColors.put(key_player_button, 0xff333333); @@ -4767,7 +4633,6 @@ public class Theme { defaultColors.put(key_sharedMedia_linkPlaceholder, 0xfff0f3f5); defaultColors.put(key_sharedMedia_linkPlaceholderText, 0xffb7bec3); defaultColors.put(key_sharedMedia_photoPlaceholder, 0xffedf3f7); - defaultColors.put(key_sharedMedia_actionMode, 0xff4687b3); defaultColors.put(key_checkbox, 0xff5ec245); defaultColors.put(key_checkboxCheck, 0xffffffff); @@ -4776,7 +4641,6 @@ public class Theme { defaultColors.put(key_stickers_menu, 0xffb6bdc5); defaultColors.put(key_stickers_menuSelector, 0x0f000000); - defaultColors.put(key_changephoneinfo_image, 0xffb8bfc5); defaultColors.put(key_changephoneinfo_image2, 0xff50a7ea); defaultColors.put(key_groupcreate_hintText, 0xffa1aab3); @@ -4793,10 +4657,6 @@ public class Theme { defaultColors.put(key_login_progressInner, 0xffe1eaf2); defaultColors.put(key_login_progressOuter, 0xff62a0d0); - defaultColors.put(key_musicPicker_checkbox, 0xff29b6f7); - defaultColors.put(key_musicPicker_checkboxCheck, 0xffffffff); - defaultColors.put(key_musicPicker_buttonBackground, 0xff5cafea); - defaultColors.put(key_musicPicker_buttonIcon, 0xffffffff); defaultColors.put(key_picker_enabledButton, 0xff19a7e8); defaultColors.put(key_picker_disabledButton, 0xff999999); defaultColors.put(key_picker_badge, 0xff29b6f7); @@ -4808,26 +4668,6 @@ public class Theme { defaultColors.put(key_undo_cancelColor, 0xff85caff); defaultColors.put(key_undo_infoColor, 0xffffffff); - defaultColors.put(key_wallet_blackBackground, 0xff000000); - defaultColors.put(key_wallet_graySettingsBackground, 0xfff0f0f0); - defaultColors.put(key_wallet_grayBackground, 0xff292929); - defaultColors.put(key_wallet_whiteBackground, 0xffffffff); - defaultColors.put(key_wallet_blackBackgroundSelector, 0x40ffffff); - defaultColors.put(key_wallet_whiteText, 0xffffffff); - defaultColors.put(key_wallet_blackText, 0xff222222); - defaultColors.put(key_wallet_statusText, 0xff808080); - defaultColors.put(key_wallet_grayText, 0xff777777); - defaultColors.put(key_wallet_grayText2, 0xff666666); - defaultColors.put(key_wallet_greenText, 0xff37a818); - defaultColors.put(key_wallet_redText, 0xffdb4040); - defaultColors.put(key_wallet_dateText, 0xff999999); - defaultColors.put(key_wallet_commentText, 0xff999999); - defaultColors.put(key_wallet_releaseBackground, 0xff307cbb); - defaultColors.put(key_wallet_pullBackground, 0xff212121); - defaultColors.put(key_wallet_buttonBackground, 0xff47a1e6); - defaultColors.put(key_wallet_buttonPressedBackground, 0xff2b8cd6); - defaultColors.put(key_wallet_buttonText, 0xffffffff); - defaultColors.put(key_wallet_addressConfirmBackground, 0x0d000000); defaultColors.put(key_chat_outTextSelectionHighlight, 0x2E3F9923); defaultColors.put(key_chat_inTextSelectionHighlight, 0x5062A9E3); defaultColors.put(key_chat_TextSelectionCursor, 0xFF419FE8); @@ -4845,11 +4685,7 @@ public class Theme { defaultColors.put(key_statisticChartRipple, 0x2c7e9db7); defaultColors.put(key_statisticChartBackZoomColor, 0xff108BE3); - defaultColors.put(key_statisticChartCheckboxInactive, 0xffBDBDBD); - defaultColors.put(key_statisticChartNightIconColor, 0xff8E8E93); defaultColors.put(key_statisticChartChevronColor, 0xffD2D5D7); - defaultColors.put(key_statisticChartHighlightColor, 0x20ececec); - defaultColors.put(key_statisticChartPopupBackground,0xffffffff); defaultColors.put(key_statisticChartLine_blue, 0xff327FE5); defaultColors.put(key_statisticChartLine_green, 0xff61C752); @@ -4862,7 +4698,6 @@ public class Theme { defaultColors.put(key_statisticChartLine_purple, 0xff9F79E8); defaultColors.put(key_statisticChartLine_cyan, 0xff40D0CA); defaultColors.put(key_statisticChartLineEmpty, 0xFFEEEEEE); - defaultColors.put(key_actionBarTipBackground, 0xFF446F94); defaultColors.put(key_color_blue, 0xff327FE5); defaultColors.put(key_color_green, 0xff61C752); @@ -4902,9 +4737,7 @@ public class Theme { defaultColors.put(key_voipgroup_lastSeenTextUnscrolled, 0xff858D94); defaultColors.put(key_voipgroup_mutedIconUnscrolled, 0xff7E868C); defaultColors.put(key_voipgroup_actionBar, 0xff0F1317); - defaultColors.put(key_voipgroup_emptyView, 0xff1A1D21); defaultColors.put(key_voipgroup_actionBarItems, 0xffffffff); - defaultColors.put(key_voipgroup_actionBarSubtitle, 0xff8A8A8A); defaultColors.put(key_voipgroup_actionBarItemsSelector, 0x1eBADBFF); defaultColors.put(key_voipgroup_mutedByAdminIcon, 0xffFF7070); defaultColors.put(key_voipgroup_mutedIcon, 0xff6F7980); @@ -4981,15 +4814,11 @@ public class Theme { fallbackKeys.put(key_chat_outMediaIcon, key_chat_outBubble); fallbackKeys.put(key_chat_inMediaIconSelected, key_chat_inBubbleSelected); fallbackKeys.put(key_chat_outMediaIconSelected, key_chat_outBubbleSelected); - fallbackKeys.put(key_chats_actionUnreadIcon, key_profile_actionIcon); - fallbackKeys.put(key_chats_actionUnreadBackground, key_profile_actionBackground); - fallbackKeys.put(key_chats_actionUnreadPressedBackground, key_profile_actionPressedBackground); fallbackKeys.put(key_dialog_inlineProgressBackground, key_windowBackgroundGray); fallbackKeys.put(key_dialog_inlineProgress, key_chats_menuItemIcon); fallbackKeys.put(key_groupcreate_spanDelete, key_chats_actionIcon); fallbackKeys.put(key_sharedMedia_photoPlaceholder, key_windowBackgroundGray); fallbackKeys.put(key_chat_attachPollBackground, key_chat_attachAudioBackground); - fallbackKeys.put(key_chat_attachPollIcon, key_chat_attachAudioIcon); fallbackKeys.put(key_chats_onlineCircle, key_windowBackgroundWhiteBlueText); fallbackKeys.put(key_windowBackgroundWhiteBlueButton, key_windowBackgroundWhiteValueText); fallbackKeys.put(key_windowBackgroundWhiteBlueIcon, key_windowBackgroundWhiteValueText); @@ -5011,7 +4840,6 @@ public class Theme { fallbackKeys.put(key_chat_emojiSearchIcon, key_chat_emojiPanelIcon); fallbackKeys.put(key_chat_emojiPanelStickerSetNameHighlight, key_windowBackgroundWhiteBlueText4); fallbackKeys.put(key_chat_emojiPanelStickerPackSelectorLine, key_chat_emojiPanelIconSelected); - fallbackKeys.put(key_sharedMedia_actionMode, key_actionBarDefault); fallbackKeys.put(key_sheet_scrollUp, key_chat_emojiPanelStickerPackSelector); fallbackKeys.put(key_sheet_other, key_player_actionBarItems); fallbackKeys.put(key_dialogSearchBackground, key_chat_emojiPanelStickerPackSelector); @@ -5022,7 +4850,6 @@ public class Theme { fallbackKeys.put(key_dialogFloatingButtonPressed, key_dialogRoundCheckBox); fallbackKeys.put(key_dialogFloatingIcon, key_dialogRoundCheckBoxCheck); fallbackKeys.put(key_dialogShadowLine, key_chat_emojiPanelShadowLine); - fallbackKeys.put(key_chat_emojiPanelIconSelector, key_listSelector); fallbackKeys.put(key_actionBarDefaultArchived, key_actionBarDefault); fallbackKeys.put(key_actionBarDefaultArchivedSelector, key_actionBarDefaultSelector); fallbackKeys.put(key_actionBarDefaultArchivedIcon, key_actionBarDefaultIcon); @@ -5084,13 +4911,11 @@ public class Theme { fallbackKeys.put(key_chat_outPollCorrectAnswer, key_chat_attachLocationBackground); fallbackKeys.put(key_chat_inPollWrongAnswer, key_chat_attachAudioBackground); fallbackKeys.put(key_chat_outPollWrongAnswer, key_chat_attachAudioBackground); - fallbackKeys.put(key_windowBackgroundWhiteYellowText, key_avatar_nameInMessageOrange); fallbackKeys.put(key_profile_tabText, key_windowBackgroundWhiteGrayText); fallbackKeys.put(key_profile_tabSelectedText, key_windowBackgroundWhiteBlueHeader); fallbackKeys.put(key_profile_tabSelectedLine, key_windowBackgroundWhiteBlueHeader); fallbackKeys.put(key_profile_tabSelector, key_listSelector); - fallbackKeys.put(key_statisticChartPopupBackground, key_dialogBackground); fallbackKeys.put(key_chat_attachGalleryText, key_chat_attachGalleryBackground); fallbackKeys.put(key_chat_attachAudioText, key_chat_attachAudioBackground); @@ -5162,7 +4987,6 @@ public class Theme { themeAccentExclusionKeys.add(key_voipgroup_searchBackground); themeAccentExclusionKeys.add(key_voipgroup_leaveCallMenu); themeAccentExclusionKeys.add(key_voipgroup_scrollUp); - themeAccentExclusionKeys.add(key_voipgroup_blueText); themeAccentExclusionKeys.add(key_voipgroup_soundButton); themeAccentExclusionKeys.add(key_voipgroup_soundButtonActive); themeAccentExclusionKeys.add(key_voipgroup_soundButtonActiveScrolled); @@ -5182,9 +5006,7 @@ public class Theme { themeAccentExclusionKeys.add(key_voipgroup_lastSeenTextUnscrolled); themeAccentExclusionKeys.add(key_voipgroup_mutedIconUnscrolled); themeAccentExclusionKeys.add(key_voipgroup_actionBar); - themeAccentExclusionKeys.add(key_voipgroup_emptyView); themeAccentExclusionKeys.add(key_voipgroup_actionBarItems); - themeAccentExclusionKeys.add(key_voipgroup_actionBarSubtitle); themeAccentExclusionKeys.add(key_voipgroup_actionBarItemsSelector); themeAccentExclusionKeys.add(key_voipgroup_mutedByAdminIcon); themeAccentExclusionKeys.add(key_voipgroup_mutedIcon); @@ -5244,7 +5066,6 @@ public class Theme { myMessagesColorKeys.add(key_chat_outInstant); myMessagesColorKeys.add(key_chat_outInstantSelected); myMessagesColorKeys.add(key_chat_outPreviewInstantText); - myMessagesColorKeys.add(key_chat_outPreviewInstantSelectedText); myMessagesColorKeys.add(key_chat_outForwardedNameText); myMessagesColorKeys.add(key_chat_outViaBotNameText); myMessagesColorKeys.add(key_chat_outReplyLine); @@ -5284,17 +5105,9 @@ public class Theme { myMessagesColorKeys.add(key_chat_outVenueInfoSelectedText); myMessagesColorKeys.add(key_chat_outLoader); myMessagesColorKeys.add(key_chat_outLoaderSelected); - myMessagesColorKeys.add(key_chat_outLoaderPhoto); - myMessagesColorKeys.add(key_chat_outLoaderPhotoSelected); - myMessagesColorKeys.add(key_chat_outLoaderPhotoIcon); - myMessagesColorKeys.add(key_chat_outLoaderPhotoIconSelected); - myMessagesColorKeys.add(key_chat_outLocationBackground); myMessagesColorKeys.add(key_chat_outLocationIcon); myMessagesColorKeys.add(key_chat_outContactBackground); myMessagesColorKeys.add(key_chat_outContactIcon); - myMessagesColorKeys.add(key_chat_outFileIcon); - myMessagesColorKeys.add(key_chat_outFileSelectedIcon); - myMessagesColorKeys.add(key_chat_outBroadcast); myMessagesColorKeys.add(key_chat_messageTextOut); myMessagesColorKeys.add(key_chat_messageLinkOut); @@ -9211,9 +9024,6 @@ public class Theme { chat_docNamePaint.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); chat_docBackPaint = new Paint(Paint.ANTI_ALIAS_FLAG); chat_deleteProgressPaint = new Paint(Paint.ANTI_ALIAS_FLAG); - chat_botProgressPaint = new Paint(Paint.ANTI_ALIAS_FLAG); - chat_botProgressPaint.setStrokeCap(Paint.Cap.ROUND); - chat_botProgressPaint.setStyle(Paint.Style.STROKE); chat_locationTitlePaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); chat_locationTitlePaint.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); chat_locationAddressPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); @@ -9460,39 +9270,6 @@ public class Theme { chat_fileStatesDrawable[3][1] = createCircleDrawableWithIcon(AndroidUtilities.dp(44), R.drawable.msg_round_file_s); chat_fileStatesDrawable[4][0] = createCircleDrawableWithIcon(AndroidUtilities.dp(44), R.drawable.msg_round_cancel_m); chat_fileStatesDrawable[4][1] = createCircleDrawableWithIcon(AndroidUtilities.dp(44), R.drawable.msg_round_cancel_m); - chat_fileStatesDrawable[5][0] = createCircleDrawableWithIcon(AndroidUtilities.dp(44), R.drawable.msg_round_play_m); - chat_fileStatesDrawable[5][1] = createCircleDrawableWithIcon(AndroidUtilities.dp(44), R.drawable.msg_round_play_m); - chat_fileStatesDrawable[6][0] = createCircleDrawableWithIcon(AndroidUtilities.dp(44), R.drawable.msg_round_pause_m); - chat_fileStatesDrawable[6][1] = createCircleDrawableWithIcon(AndroidUtilities.dp(44), R.drawable.msg_round_pause_m); - chat_fileStatesDrawable[7][0] = createCircleDrawableWithIcon(AndroidUtilities.dp(44), R.drawable.msg_round_load_m); - chat_fileStatesDrawable[7][1] = createCircleDrawableWithIcon(AndroidUtilities.dp(44), R.drawable.msg_round_load_m); - chat_fileStatesDrawable[8][0] = createCircleDrawableWithIcon(AndroidUtilities.dp(44), R.drawable.msg_round_file_s); - chat_fileStatesDrawable[8][1] = createCircleDrawableWithIcon(AndroidUtilities.dp(44), R.drawable.msg_round_file_s); - chat_fileStatesDrawable[9][0] = createCircleDrawableWithIcon(AndroidUtilities.dp(44), R.drawable.msg_round_cancel_m); - chat_fileStatesDrawable[9][1] = createCircleDrawableWithIcon(AndroidUtilities.dp(44), R.drawable.msg_round_cancel_m); - - chat_photoStatesDrawables[0][0] = createCircleDrawableWithIcon(AndroidUtilities.dp(48), R.drawable.msg_round_load_m); - chat_photoStatesDrawables[0][1] = createCircleDrawableWithIcon(AndroidUtilities.dp(48), R.drawable.msg_round_load_m); - chat_photoStatesDrawables[1][0] = createCircleDrawableWithIcon(AndroidUtilities.dp(48), R.drawable.msg_round_cancel_m); - chat_photoStatesDrawables[1][1] = createCircleDrawableWithIcon(AndroidUtilities.dp(48), R.drawable.msg_round_cancel_m); - chat_photoStatesDrawables[2][0] = createCircleDrawableWithIcon(AndroidUtilities.dp(48), R.drawable.msg_round_gif_m); - chat_photoStatesDrawables[2][1] = createCircleDrawableWithIcon(AndroidUtilities.dp(48), R.drawable.msg_round_gif_m); - chat_photoStatesDrawables[3][0] = createCircleDrawableWithIcon(AndroidUtilities.dp(48), R.drawable.msg_round_play_m); - chat_photoStatesDrawables[3][1] = createCircleDrawableWithIcon(AndroidUtilities.dp(48), R.drawable.msg_round_play_m); - - chat_photoStatesDrawables[4][0] = chat_photoStatesDrawables[4][1] = resources.getDrawable(R.drawable.burn); - chat_photoStatesDrawables[5][0] = chat_photoStatesDrawables[5][1] = resources.getDrawable(R.drawable.circle); - chat_photoStatesDrawables[6][0] = chat_photoStatesDrawables[6][1] = resources.getDrawable(R.drawable.photocheck); - - chat_photoStatesDrawables[7][0] = createCircleDrawableWithIcon(AndroidUtilities.dp(48), R.drawable.msg_round_load_m); - chat_photoStatesDrawables[7][1] = createCircleDrawableWithIcon(AndroidUtilities.dp(48), R.drawable.msg_round_load_m); - chat_photoStatesDrawables[8][0] = createCircleDrawableWithIcon(AndroidUtilities.dp(48), R.drawable.msg_round_cancel_m); - chat_photoStatesDrawables[8][1] = createCircleDrawableWithIcon(AndroidUtilities.dp(48), R.drawable.msg_round_cancel_m); - - chat_photoStatesDrawables[10][0] = createCircleDrawableWithIcon(AndroidUtilities.dp(48), R.drawable.msg_round_load_m); - chat_photoStatesDrawables[10][1] = createCircleDrawableWithIcon(AndroidUtilities.dp(48), R.drawable.msg_round_load_m); - chat_photoStatesDrawables[11][0] = createCircleDrawableWithIcon(AndroidUtilities.dp(48), R.drawable.msg_round_cancel_m); - chat_photoStatesDrawables[11][1] = createCircleDrawableWithIcon(AndroidUtilities.dp(48), R.drawable.msg_round_cancel_m); chat_contactDrawable[0] = createCircleDrawableWithIcon(AndroidUtilities.dp(44), R.drawable.msg_contact); chat_contactDrawable[1] = createCircleDrawableWithIcon(AndroidUtilities.dp(44), R.drawable.msg_contact); @@ -9580,8 +9357,7 @@ public class Theme { applyChatTheme(fontsOnly, false); } - if (!fontsOnly && chat_botProgressPaint != null) { - chat_botProgressPaint.setStrokeWidth(AndroidUtilities.dp(2)); + if (!fontsOnly && chat_infoPaint != null) { chat_infoPaint.setTextSize(AndroidUtilities.dp(12)); chat_stickerCommentCountPaint.setTextSize(AndroidUtilities.dp(11)); chat_docNamePaint.setTextSize(AndroidUtilities.dp(15)); @@ -9630,24 +9406,24 @@ public class Theme { if (a == 0) { chat_attachButtonDrawables[a].setLayerColor("Color_Mount.**", getNonAnimatedColor(key_chat_attachGalleryBackground)); chat_attachButtonDrawables[a].setLayerColor("Color_PhotoShadow.**", getNonAnimatedColor(key_chat_attachGalleryBackground)); - chat_attachButtonDrawables[a].setLayerColor("White_Photo.**", getNonAnimatedColor(key_chat_attachGalleryIcon)); - chat_attachButtonDrawables[a].setLayerColor("White_BackPhoto.**", getNonAnimatedColor(key_chat_attachGalleryIcon)); + chat_attachButtonDrawables[a].setLayerColor("White_Photo.**", getNonAnimatedColor(key_chat_attachIcon)); + chat_attachButtonDrawables[a].setLayerColor("White_BackPhoto.**", getNonAnimatedColor(key_chat_attachIcon)); } else if (a == 1) { - chat_attachButtonDrawables[a].setLayerColor("White_Play1.**", getNonAnimatedColor(key_chat_attachAudioIcon)); - chat_attachButtonDrawables[a].setLayerColor("White_Play2.**", getNonAnimatedColor(key_chat_attachAudioIcon)); + chat_attachButtonDrawables[a].setLayerColor("White_Play1.**", getNonAnimatedColor(key_chat_attachIcon)); + chat_attachButtonDrawables[a].setLayerColor("White_Play2.**", getNonAnimatedColor(key_chat_attachIcon)); } else if (a == 2) { chat_attachButtonDrawables[a].setLayerColor("Color_Corner.**", getNonAnimatedColor(key_chat_attachFileBackground)); - chat_attachButtonDrawables[a].setLayerColor("White_List.**", getNonAnimatedColor(key_chat_attachFileIcon)); + chat_attachButtonDrawables[a].setLayerColor("White_List.**", getNonAnimatedColor(key_chat_attachIcon)); } else if (a == 3) { - chat_attachButtonDrawables[a].setLayerColor("White_User1.**", getNonAnimatedColor(key_chat_attachContactIcon)); - chat_attachButtonDrawables[a].setLayerColor("White_User2.**", getNonAnimatedColor(key_chat_attachContactIcon)); + chat_attachButtonDrawables[a].setLayerColor("White_User1.**", getNonAnimatedColor(key_chat_attachIcon)); + chat_attachButtonDrawables[a].setLayerColor("White_User2.**", getNonAnimatedColor(key_chat_attachIcon)); } else if (a == 4) { chat_attachButtonDrawables[a].setLayerColor("Color_Oval.**", getNonAnimatedColor(key_chat_attachLocationBackground)); - chat_attachButtonDrawables[a].setLayerColor("White_Pin.**", getNonAnimatedColor(key_chat_attachLocationIcon)); + chat_attachButtonDrawables[a].setLayerColor("White_Pin.**", getNonAnimatedColor(key_chat_attachIcon)); } else if (a == 5) { - chat_attachButtonDrawables[a].setLayerColor("White_Column 1.**", getNonAnimatedColor(key_chat_attachPollIcon)); - chat_attachButtonDrawables[a].setLayerColor("White_Column 2.**", getNonAnimatedColor(key_chat_attachPollIcon)); - chat_attachButtonDrawables[a].setLayerColor("White_Column 3.**", getNonAnimatedColor(key_chat_attachPollIcon)); + chat_attachButtonDrawables[a].setLayerColor("White_Column 1.**", getNonAnimatedColor(key_chat_attachIcon)); + chat_attachButtonDrawables[a].setLayerColor("White_Column 2.**", getNonAnimatedColor(key_chat_attachIcon)); + chat_attachButtonDrawables[a].setLayerColor("White_Column 3.**", getNonAnimatedColor(key_chat_attachIcon)); } chat_attachButtonDrawables[a].commitApplyLayerColors(); } @@ -9665,7 +9441,6 @@ public class Theme { chat_botButtonPaint.setColor(getColor(key_chat_botButtonText)); chat_urlPaint.setColor(getColor(key_chat_linkSelectBackground)); chat_outUrlPaint.setColor(getColor(key_chat_outLinkSelectBackground)); - chat_botProgressPaint.setColor(getColor(key_chat_botProgress)); chat_deleteProgressPaint.setColor(getColor(key_chat_secretTimeText)); chat_textSearchSelectionPaint.setColor(getColor(key_chat_textSelectBackground)); chat_msgErrorPaint.setColor(getColor(key_chat_sentError)); @@ -9760,30 +9535,10 @@ public class Theme { } for (int a = 0; a < 5; a++) { - setCombinedDrawableColor(chat_fileStatesDrawable[a][0], getColor(key_chat_outLoader), false); - setCombinedDrawableColor(chat_fileStatesDrawable[a][0], getColor(key_chat_outMediaIcon), true); - setCombinedDrawableColor(chat_fileStatesDrawable[a][1], getColor(key_chat_outLoaderSelected), false); - setCombinedDrawableColor(chat_fileStatesDrawable[a][1], getColor(key_chat_outMediaIconSelected), true); - setCombinedDrawableColor(chat_fileStatesDrawable[5 + a][0], getColor(key_chat_inLoader), false); - setCombinedDrawableColor(chat_fileStatesDrawable[5 + a][0], getColor(key_chat_inMediaIcon), true); - setCombinedDrawableColor(chat_fileStatesDrawable[5 + a][1], getColor(key_chat_inLoaderSelected), false); - setCombinedDrawableColor(chat_fileStatesDrawable[5 + a][1], getColor(key_chat_inMediaIconSelected), true); - } - for (int a = 0; a < 4; a++) { - setCombinedDrawableColor(chat_photoStatesDrawables[a][0], getColor(key_chat_mediaLoaderPhoto), false); - setCombinedDrawableColor(chat_photoStatesDrawables[a][0], getColor(key_chat_mediaLoaderPhotoIcon), true); - setCombinedDrawableColor(chat_photoStatesDrawables[a][1], getColor(key_chat_mediaLoaderPhotoSelected), false); - setCombinedDrawableColor(chat_photoStatesDrawables[a][1], getColor(key_chat_mediaLoaderPhotoIconSelected), true); - } - for (int a = 0; a < 2; a++) { - setCombinedDrawableColor(chat_photoStatesDrawables[7 + a][0], getColor(key_chat_outLoaderPhoto), false); - setCombinedDrawableColor(chat_photoStatesDrawables[7 + a][0], getColor(key_chat_outLoaderPhotoIcon), true); - setCombinedDrawableColor(chat_photoStatesDrawables[7 + a][1], getColor(key_chat_outLoaderPhotoSelected), false); - setCombinedDrawableColor(chat_photoStatesDrawables[7 + a][1], getColor(key_chat_outLoaderPhotoIconSelected), true); - setCombinedDrawableColor(chat_photoStatesDrawables[10 + a][0], getColor(key_chat_inLoaderPhoto), false); - setCombinedDrawableColor(chat_photoStatesDrawables[10 + a][0], getColor(key_chat_inLoaderPhotoIcon), true); - setCombinedDrawableColor(chat_photoStatesDrawables[10 + a][1], getColor(key_chat_inLoaderPhotoSelected), false); - setCombinedDrawableColor(chat_photoStatesDrawables[10 + a][1], getColor(key_chat_inLoaderPhotoIconSelected), true); + setCombinedDrawableColor(chat_fileStatesDrawable[a][0], getColor(key_chat_inLoader), false); + setCombinedDrawableColor(chat_fileStatesDrawable[a][0], getColor(key_chat_inMediaIcon), true); + setCombinedDrawableColor(chat_fileStatesDrawable[a][1], getColor(key_chat_inLoaderSelected), false); + setCombinedDrawableColor(chat_fileStatesDrawable[a][1], getColor(key_chat_inMediaIconSelected), true); } setCombinedDrawableColor(chat_contactDrawable[0], getColor(key_chat_inContactBackground), false); @@ -11123,6 +10878,38 @@ public class Theme { return false; } + public static void turnOffAutoNight(BaseFragment fragment) { + turnOffAutoNight(fragment != null ? fragment.getLayoutContainer() : null, () -> { + INavigationLayout nav = fragment != null ? fragment.getParentLayout() : null; + if (nav != null) { + nav.presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_NIGHT)); + } + }); + } + + public static void turnOffAutoNight(FrameLayout container, Runnable openSettings) { + if (selectedAutoNightType != AUTO_NIGHT_TYPE_NONE) { + if (container != null && openSettings != null) { + try { + BulletinFactory.of(container, null).createSimpleBulletin( + R.raw.auto_night_off, + selectedAutoNightType == AUTO_NIGHT_TYPE_SYSTEM ? + LocaleController.getString("AutoNightSystemModeOff", R.string.AutoNightSystemModeOff) : + LocaleController.getString("AutoNightModeOff", R.string.AutoNightModeOff), + LocaleController.getString("Settings", R.string.Settings), + Bulletin.DURATION_PROLONG, + openSettings + ).show(); + } catch (Exception e) { + FileLog.e(e); + } + } + selectedAutoNightType = AUTO_NIGHT_TYPE_NONE; + saveAutoNightThemeConfig(); + cancelAutoNightThemeCallbacks(); + } + } + public static Paint DEBUG_RED = new Paint(); static { DEBUG_RED.setColor(0xffff0000); } public static Paint DEBUG_BLUE = new Paint(); static { DEBUG_BLUE.setColor(0xff0000ff); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ThemeDescription.java b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ThemeDescription.java index d8228686e..84c154e7d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ThemeDescription.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ThemeDescription.java @@ -341,9 +341,6 @@ public class ThemeDescription { ((ActionBar) viewToInvalidate).setPopupBackgroundColor(color, false); } } - if (viewToInvalidate instanceof VideoTimelineView) { - ((VideoTimelineView) viewToInvalidate).setColor(color); - } if (viewToInvalidate instanceof EmptyTextProgressView) { if ((changeFlags & FLAG_TEXTCOLOR) != 0) { ((EmptyTextProgressView) viewToInvalidate).setTextColor(color); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ActionIntroActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ActionIntroActivity.java index e9c5883af..eac3e8509 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionIntroActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionIntroActivity.java @@ -920,7 +920,6 @@ public class ActionIntroActivity extends BaseFragment implements LocationControl themeDescriptions.add(new ThemeDescription(desctiptionLines[4], ThemeDescription.FLAG_TEXTCOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteBlackText)); themeDescriptions.add(new ThemeDescription(desctiptionLines[5], ThemeDescription.FLAG_TEXTCOLOR, null, null, null, null, Theme.key_windowBackgroundWhiteBlackText)); - themeDescriptions.add(new ThemeDescription(null, ThemeDescription.FLAG_TEXTCOLOR, null, null, new Drawable[]{drawable1}, null, Theme.key_changephoneinfo_image)); themeDescriptions.add(new ThemeDescription(null, ThemeDescription.FLAG_TEXTCOLOR, null, null, new Drawable[]{drawable2}, null, Theme.key_changephoneinfo_image2)); return themeDescriptions; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/ContactsAdapter.java b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/ContactsAdapter.java index 1ef84f6fc..3d7dd115c 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/ContactsAdapter.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/ContactsAdapter.java @@ -77,9 +77,13 @@ public class ContactsAdapter extends RecyclerListView.SectionsAdapter { disableSections = value; } + public static final int SORT_TYPE_NONE = 0; + public static final int SORT_TYPE_BY_NAME = 1; + public static final int SORT_TYPE_BY_TIME = 2; + public void setSortType(int value, boolean force) { sortType = value; - if (sortType == 2) { + if (sortType == SORT_TYPE_BY_TIME) { if (onlineContacts == null || force) { onlineContacts = new ArrayList<>(ContactsController.getInstance(currentAccount).contacts); long selfId = UserConfig.getInstance(currentAccount).clientUserId; @@ -173,7 +177,7 @@ public class ContactsAdapter extends RecyclerListView.SectionsAdapter { if (section == 0) { return null; } else { - if (sortType == 2) { + if (sortType == SORT_TYPE_BY_TIME) { if (section == 1) { if (position < onlineContacts.size()) { return MessagesController.getInstance(currentAccount).getUser(onlineContacts.get(position).user_id); @@ -221,7 +225,7 @@ public class ContactsAdapter extends RecyclerListView.SectionsAdapter { if (isEmpty) { return false; } - if (sortType == 2) { + if (sortType == SORT_TYPE_BY_TIME) { if (section == 1) { return row < onlineContacts.size(); } @@ -240,7 +244,7 @@ public class ContactsAdapter extends RecyclerListView.SectionsAdapter { public int getSectionCount() { int count; isEmpty = false; - if (sortType == 2) { + if (sortType == SORT_TYPE_BY_TIME) { count = 1; isEmpty = onlineContacts.isEmpty(); } else { @@ -293,7 +297,7 @@ public class ContactsAdapter extends RecyclerListView.SectionsAdapter { if (isEmpty) { return 1; } - if (sortType == 2) { + if (sortType == SORT_TYPE_BY_TIME) { if (section == 1) { return onlineContacts.isEmpty() ? 0 : onlineContacts.size() + 1; } @@ -324,7 +328,7 @@ public class ContactsAdapter extends RecyclerListView.SectionsAdapter { view = new LetterSectionCell(mContext); } LetterSectionCell cell = (LetterSectionCell) view; - if (sortType == 2 || disableSections || isEmpty) { + if (sortType == SORT_TYPE_BY_TIME || disableSections || isEmpty) { cell.setLetter(""); } else { if (onlyUsers != 0 && !isAdmin) { @@ -412,9 +416,9 @@ public class ContactsAdapter extends RecyclerListView.SectionsAdapter { switch (holder.getItemViewType()) { case 0: UserCell userCell = (UserCell) holder.itemView; - userCell.setAvatarPadding(sortType == 2 || disableSections ? 6 : 58); + userCell.setAvatarPadding(sortType == SORT_TYPE_BY_TIME || disableSections ? 6 : 58); ArrayList arr; - if (sortType == 2) { + if (sortType == SORT_TYPE_BY_TIME) { arr = onlineContacts; } else { HashMap> usersSectionsDict = onlyUsers == 2 ? ContactsController.getInstance(currentAccount).usersMutualSectionsDict : ContactsController.getInstance(currentAccount).usersSectionsDict; @@ -471,9 +475,9 @@ public class ContactsAdapter extends RecyclerListView.SectionsAdapter { break; case 2: GraySectionCell sectionCell = (GraySectionCell) holder.itemView; - if (sortType == 0) { + if (sortType == SORT_TYPE_NONE) { sectionCell.setText(LocaleController.getString("Contacts", R.string.Contacts)); - } else if (sortType == 1) { + } else if (sortType == SORT_TYPE_BY_NAME) { sectionCell.setText(LocaleController.getString("SortedByName", R.string.SortedByName)); } else { sectionCell.setText(LocaleController.getString("SortedByLastSeen", R.string.SortedByLastSeen)); @@ -509,7 +513,7 @@ public class ContactsAdapter extends RecyclerListView.SectionsAdapter { if (isEmpty) { return 4; } - if (sortType == 2) { + if (sortType == SORT_TYPE_BY_TIME) { if (section == 1) { return position < onlineContacts.size() ? 0 : 3; } @@ -526,7 +530,7 @@ public class ContactsAdapter extends RecyclerListView.SectionsAdapter { @Override public String getLetter(int position) { - if (sortType == 2 || isEmpty) { + if (sortType == SORT_TYPE_BY_TIME || isEmpty) { return null; } ArrayList sortedUsersSectionsArray = onlyUsers == 2 ? ContactsController.getInstance(currentAccount).sortedUsersMutualSectionsArray : ContactsController.getInstance(currentAccount).sortedUsersSectionsArray; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/DialogsSearchAdapter.java b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/DialogsSearchAdapter.java index aa96322e9..6f76667e9 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/DialogsSearchAdapter.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/DialogsSearchAdapter.java @@ -906,7 +906,7 @@ public class DialogsSearchAdapter extends RecyclerListView.SelectionAdapter { } } - if (resentSearchAvailable()) { + if (resentSearchAvailable() && !(obj instanceof TLRPC.EncryptedChat)) { boolean foundInRecent = false; if (delegate != null && delegate.getSearchForumDialogId() == dialogId) { foundInRecent = true; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/MentionsAdapter.java b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/MentionsAdapter.java index 0d2481b4d..34cdd8313 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/MentionsAdapter.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/MentionsAdapter.java @@ -92,6 +92,7 @@ public class MentionsAdapter extends RecyclerListView.SelectionAdapter implement private ArrayList searchResultCommandsUsers; private ArrayList searchResultBotContext; private TLRPC.TL_inlineBotSwitchPM searchResultBotContextSwitch; + private TLRPC.TL_inlineBotWebView searchResultBotWebViewSwitch; private MentionsAdapterDelegate delegate; private LongSparseArray botInfo; private int resultStartPosition; @@ -197,6 +198,10 @@ public class MentionsAdapter extends RecyclerListView.SelectionAdapter implement } } + public TLRPC.User getFoundContextBot() { + return foundContextBot; + } + @Override public void didReceivedNotification(int id, int account, final Object... args) { if (id == NotificationCenter.fileLoaded || id == NotificationCenter.fileLoadFailed) { @@ -477,6 +482,10 @@ public class MentionsAdapter extends RecyclerListView.SelectionAdapter implement return searchResultBotContextSwitch; } + public TLRPC.TL_inlineBotWebView getBotWebViewSwitch() { + return searchResultBotWebViewSwitch; + } + public long getContextBotId() { return foundContextBot != null ? foundContextBot.id : 0; } @@ -731,6 +740,9 @@ public class MentionsAdapter extends RecyclerListView.SelectionAdapter implement if (searchResultBotContextSwitch == null) { searchResultBotContextSwitch = res.switch_pm; } + if (searchResultBotWebViewSwitch == null) { + searchResultBotWebViewSwitch = res.switch_webview; + } for (int a = 0; a < res.results.size(); a++) { TLRPC.BotInlineResult result = res.results.get(a); if (!(result.document instanceof TLRPC.TL_document) && !(result.photo instanceof TLRPC.TL_photo) && !"game".equals(result.type) && result.content == null && result.send_message instanceof TLRPC.TL_botInlineMessageMediaAuto) { @@ -762,9 +774,9 @@ public class MentionsAdapter extends RecyclerListView.SelectionAdapter implement searchResultSuggestions = null; searchResultCommandsHelp = null; searchResultCommandsUsers = null; - delegate.needChangePanelVisibility(!searchResultBotContext.isEmpty() || searchResultBotContextSwitch != null); + delegate.needChangePanelVisibility(!searchResultBotContext.isEmpty() || searchResultBotContextSwitch != null || searchResultBotWebViewSwitch != null); if (added) { - boolean hasTop = searchResultBotContextSwitch != null; + boolean hasTop = searchResultBotContextSwitch != null || searchResultBotWebViewSwitch != null; notifyItemChanged(searchResultBotContext.size() - res.results.size() + (hasTop ? 1 : 0) - 1); notifyItemRangeInserted(searchResultBotContext.size() - res.results.size() + (hasTop ? 1 : 0), res.results.size()); } else { @@ -1225,7 +1237,7 @@ public class MentionsAdapter extends RecyclerListView.SelectionAdapter implement for (int a = 0; a < res.participants.size(); a++) { TLRPC.ChannelParticipant participant = res.participants.get(a); long peerId = MessageObject.getPeerId(participant.peer); - if (searchResultUsernamesMap.indexOfKey(peerId) >= 0 || !isSearchingMentions && peerId == currentUserId) { + if (searchResultUsernamesMap.indexOfKey(peerId) >= 0 || peerId == 0 && searchResultUsernamesMap.indexOfKey(currentUserId) >= 0 || !isSearchingMentions && (peerId == currentUserId || peerId == 0)) { continue; } if (peerId >= 0) { @@ -1388,7 +1400,7 @@ public class MentionsAdapter extends RecyclerListView.SelectionAdapter implement if (stickers != null) { return stickers.size(); } else if (searchResultBotContext != null) { - return searchResultBotContext.size() + (searchResultBotContextSwitch != null ? 1 : 0); + return searchResultBotContext.size() + (searchResultBotContextSwitch != null || searchResultBotWebViewSwitch != null ? 1 : 0); } else if (searchResultUsernames != null) { return searchResultUsernames.size(); } else if (searchResultHashtags != null) { @@ -1413,6 +1425,7 @@ public class MentionsAdapter extends RecyclerListView.SelectionAdapter implement searchResultBotContext.clear(); } searchResultBotContextSwitch = null; + searchResultBotWebViewSwitch = null; if (searchResultUsernames != null) { searchResultUsernames.clear(); } @@ -1435,7 +1448,7 @@ public class MentionsAdapter extends RecyclerListView.SelectionAdapter implement } else if (foundContextBot != null && !inlineMediaEnabled) { return 3; } else if (searchResultBotContext != null) { - if (position == 0 && searchResultBotContextSwitch != null) { + if (position == 0 && (searchResultBotContextSwitch != null || searchResultBotWebViewSwitch != null)) { return 2; } return 1; @@ -1449,7 +1462,7 @@ public class MentionsAdapter extends RecyclerListView.SelectionAdapter implement } public int getItemPosition(int i) { - if (searchResultBotContext != null && searchResultBotContextSwitch != null) { + if (searchResultBotContext != null && (searchResultBotContextSwitch != null || searchResultBotWebViewSwitch != null)) { i--; } return i; @@ -1463,7 +1476,13 @@ public class MentionsAdapter extends RecyclerListView.SelectionAdapter implement if (stickers != null) { return i >= 0 && i < stickers.size() ? stickers.get(i).sticker : null; } else if (searchResultBotContext != null) { - if (searchResultBotContextSwitch != null) { + if (searchResultBotWebViewSwitch != null) { + if (i == 0) { + return searchResultBotWebViewSwitch; + } else { + i--; + } + } else if (searchResultBotContextSwitch != null) { if (i == 0) { return searchResultBotContextSwitch; } else { @@ -1585,10 +1604,10 @@ public class MentionsAdapter extends RecyclerListView.SelectionAdapter implement } } } else if (searchResultBotContext != null) { - boolean hasTop = searchResultBotContextSwitch != null; + boolean hasTop = searchResultBotContextSwitch != null || searchResultBotWebViewSwitch != null; if (holder.getItemViewType() == 2) { if (hasTop) { - ((BotSwitchCell) holder.itemView).setText(searchResultBotContextSwitch.text); + ((BotSwitchCell) holder.itemView).setText(searchResultBotContextSwitch != null ? searchResultBotContextSwitch.text : searchResultBotWebViewSwitch.text); } } else { if (hasTop) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/CacheControlActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/CacheControlActivity.java index d3de2d394..be1ae3445 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/CacheControlActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/CacheControlActivity.java @@ -1112,7 +1112,7 @@ public class CacheControlActivity extends BaseFragment implements NotificationCe ActionBarMenuItem otherItem = actionBar.createMenu().addItem(other_id, R.drawable.ic_ab_other); clearDatabaseItem = otherItem.addSubItem(clear_database_id, R.drawable.msg_delete, LocaleController.getString("ClearLocalDatabase", R.string.ClearLocalDatabase)); clearDatabaseItem.setIconColor(Theme.getColor(Theme.key_dialogRedIcon)); - clearDatabaseItem.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + clearDatabaseItem.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); updateDatabaseItemSize(); listAdapter = new ListAdapter(context); @@ -1253,7 +1253,7 @@ public class CacheControlActivity extends BaseFragment implements NotificationCe showDialog(dialog); TextView button = (TextView) dialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } @@ -1423,7 +1423,7 @@ public class CacheControlActivity extends BaseFragment implements NotificationCe showDialog(alertDialog); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } @@ -1759,8 +1759,17 @@ public class CacheControlActivity extends BaseFragment implements NotificationCe protected boolean verifyDrawable(@NonNull Drawable who) { return who == valueTextView || who == textView || super.verifyDrawable(who); } + + @Override + public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { + super.onInitializeAccessibilityNodeInfo(info); + info.setClassName("android.widget.Button"); + } }; button.setBackground(Theme.AdaptiveRipple.filledRect(Theme.key_featuredStickers_addButton, 8)); + button.setFocusable(true); + button.setFocusableInTouchMode(true); + button.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_YES); if (LocaleController.isRTL) { rtlTextView = new TextView(context); @@ -1810,6 +1819,8 @@ public class CacheControlActivity extends BaseFragment implements NotificationCe valueTextView.setText(size <= 0 ? "" : AndroidUtilities.formatFileSize(size)); setDisabled(size <= 0); button.invalidate(); + + button.setContentDescription(TextUtils.concat(textView.getText(), "\t", valueTextView.getText())); } public void setDisabled(boolean disabled) { @@ -2362,7 +2373,6 @@ public class CacheControlActivity extends BaseFragment implements NotificationCe arrayList.add(new ThemeDescription(listView, 0, new Class[]{StorageUsageView.class}, new String[]{"telegramCacheTextView"}, null, null, null, Theme.key_windowBackgroundWhiteGrayText)); arrayList.add(new ThemeDescription(listView, 0, new Class[]{StorageUsageView.class}, new String[]{"freeSizeTextView"}, null, null, null, Theme.key_windowBackgroundWhiteGrayText)); arrayList.add(new ThemeDescription(listView, 0, new Class[]{StorageUsageView.class}, new String[]{"calculationgTextView"}, null, null, null, Theme.key_windowBackgroundWhiteGrayText)); - arrayList.add(new ThemeDescription(listView, 0, new Class[]{StorageUsageView.class}, new String[]{"paintProgress2"}, null, null, null, Theme.key_player_progressBackground2)); arrayList.add(new ThemeDescription(listView, 0, new Class[]{SlideChooseView.class}, null, null, null, Theme.key_switchTrack)); arrayList.add(new ThemeDescription(listView, 0, new Class[]{SlideChooseView.class}, null, null, null, Theme.key_switchTrackChecked)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/CachedMediaLayout.java b/TMessagesProj/src/main/java/org/telegram/ui/CachedMediaLayout.java index 45536e48b..2c25433fc 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/CachedMediaLayout.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/CachedMediaLayout.java @@ -99,9 +99,9 @@ public class CachedMediaLayout extends FrameLayout implements NestedSizeNotifier this.parentFragment = parentFragment; int CacheTabChats; - allPages[PAGE_TYPE_CHATS] = new Page(LocaleController.getString("Chats", R.string.Chats), PAGE_TYPE_CHATS, new DialogsAdapter()); + allPages[PAGE_TYPE_CHATS] = new Page(LocaleController.getString("FilterChats", R.string.FilterChats), PAGE_TYPE_CHATS, new DialogsAdapter()); allPages[PAGE_TYPE_MEDIA] = new Page(LocaleController.getString("MediaTab", R.string.MediaTab), PAGE_TYPE_MEDIA, new MediaAdapter()); - allPages[PAGE_TYPE_DOCUMENTS] = new Page(LocaleController.getString("Files", R.string.Files), PAGE_TYPE_DOCUMENTS, new DocumentsAdapter()); + allPages[PAGE_TYPE_DOCUMENTS] = new Page(LocaleController.getString("SharedFilesTab2", R.string.SharedFilesTab2), PAGE_TYPE_DOCUMENTS, new DocumentsAdapter()); allPages[PAGE_TYPE_MUSIC] = new Page(LocaleController.getString("Music", R.string.Music), PAGE_TYPE_MUSIC, new MusicAdapter()); // allPages[PAGE_TYPE_VOICE] = new Page(LocaleController.getString("Voice", R.string.Voice), PAGE_TYPE_VOICE, new VoiceAdapter()); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/CallLogActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/CallLogActivity.java index c332f1515..4816620af 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/CallLogActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/CallLogActivity.java @@ -625,7 +625,7 @@ public class CallLogActivity extends BaseFragment implements NotificationCenter. showDialog(alertDialog); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/CameraScanActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/CameraScanActivity.java index 5b85fb68c..676458d93 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/CameraScanActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/CameraScanActivity.java @@ -473,7 +473,7 @@ public class CameraScanActivity extends BaseFragment { actionBar.setTitleColor(0xffffffff); actionBar.setItemsColor(0xffffffff, false); actionBar.setItemsBackgroundColor(0x22ffffff, false); - viewGroup.setBackgroundColor(Theme.getColor(Theme.key_wallet_blackBackground)); + viewGroup.setBackgroundColor(0xFF000000); viewGroup.addView(actionBar); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMessageCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMessageCell.java index 01642a9c1..ec7ca5b62 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMessageCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMessageCell.java @@ -53,7 +53,6 @@ import android.text.TextUtils; import android.text.style.CharacterStyle; import android.text.style.ClickableSpan; import android.text.style.URLSpan; -import android.util.Log; import android.util.Property; import android.util.SparseArray; import android.util.StateSet; @@ -65,6 +64,7 @@ import android.view.View; import android.view.ViewConfiguration; import android.view.ViewGroup; import android.view.ViewStructure; +import android.view.Window; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityManager; import android.view.accessibility.AccessibilityNodeInfo; @@ -90,6 +90,7 @@ import org.telegram.messenger.DownloadController; import org.telegram.messenger.Emoji; import org.telegram.messenger.FileLoader; import org.telegram.messenger.FileLog; +import org.telegram.messenger.FlagSecureReason; import org.telegram.messenger.ImageLoader; import org.telegram.messenger.ImageLocation; import org.telegram.messenger.ImageReceiver; @@ -246,7 +247,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate } post(() -> { avatarDrawable.setInfo(currentUser); - avatarImage.setForUserOrChat(currentUser, avatarDrawable, null, true, VectorAvatarThumbDrawable.TYPE_SMALL); + avatarImage.setForUserOrChat(currentUser, avatarDrawable, null, LiteMode.isEnabled(LiteMode.FLAGS_CHAT), VectorAvatarThumbDrawable.TYPE_SMALL); }); } else if (currentChat != null) { if (currentChat.photo != null) { @@ -1200,7 +1201,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate private AnimatedFloat roundVideoPlayPipFloat = new AnimatedFloat(this, 200, CubicBezierInterpolator.EASE_OUT); private Paint roundVideoPipPaint; - private Runnable unregisterFlagSecure; + private FlagSecureReason flagSecure; private Runnable diceFinishCallback = new Runnable() { @Override @@ -3924,9 +3925,8 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate reactionsLayoutInBubble.onDetachFromWindow(); statusDrawableAnimationInProgress = false; - if (unregisterFlagSecure != null) { - unregisterFlagSecure.run(); - unregisterFlagSecure = null; + if (flagSecure != null) { + flagSecure.detach(); } if (topicButton != null) { topicButton.onDetached(this); @@ -4001,6 +4001,9 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate toSeekBarProgress = showSeekbar ? 1f : 0f; } reactionsLayoutInBubble.onAttachToWindow(); + if (flagSecure != null) { + flagSecure.attach(); + } updateFlagSecure(); if (currentMessageObject != null && currentMessageObject.type == MessageObject.TYPE_EXTENDED_MEDIA_PREVIEW && unlockLayout != null) { @@ -6562,8 +6565,13 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate } } } else if (messageObject.isAnimatedEmoji()) { - if (messageObject.emojiAnimatedSticker == null && messageObject.emojiAnimatedStickerId != null) { - filter = String.format(Locale.US, "%d_%d_nr_messageId=%d", w, h, messageObject.stableId); + if (!LiteMode.isEnabled(LiteMode.FLAG_ANIMATED_EMOJI_CHAT)) { + filter = String.format(Locale.US, "%d_%d_nr_messageId=%d" + messageObject.emojiAnimatedStickerColor, w, h, messageObject.stableId); + thumb = DocumentObject.getCircleThumb(.4f, Theme.key_chat_serviceBackground, resourcesProvider, 0.65f); + photoImage.setAutoRepeat(3); + messageObject.loadAnimatedEmojiDocument(); + } else if (messageObject.emojiAnimatedSticker == null && messageObject.emojiAnimatedStickerId != null) { + filter = String.format(Locale.US, "%d_%d_nr_messageId=%d" + messageObject.emojiAnimatedStickerColor, w, h, messageObject.stableId); thumb = DocumentObject.getCircleThumb(.4f, Theme.key_chat_serviceBackground, resourcesProvider, 0.65f); photoImage.setAutoRepeat(1); messageObject.loadAnimatedEmojiDocument(); @@ -7835,13 +7843,18 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate } private void updateFlagSecure() { - boolean flagSecure = currentMessageObject != null && currentMessageObject.messageOwner != null && (currentMessageObject.messageOwner.noforwards || currentMessageObject.hasRevealedExtendedMedia()); - Activity activity = AndroidUtilities.findActivity(getContext()); - if (flagSecure && unregisterFlagSecure == null && activity != null) { - unregisterFlagSecure = AndroidUtilities.registerFlagSecure(activity.getWindow()); - } else if (!flagSecure && unregisterFlagSecure != null) { - unregisterFlagSecure.run(); - unregisterFlagSecure = null; + if (flagSecure == null) { + Activity activity = AndroidUtilities.findActivity(getContext()); + Window window = activity == null ? null : activity.getWindow(); + if (window != null) { + flagSecure = new FlagSecureReason(window, () -> currentMessageObject != null && currentMessageObject.messageOwner != null && (currentMessageObject.messageOwner.noforwards || currentMessageObject.hasRevealedExtendedMedia())); + if (attachedToWindow) { + flagSecure.attach(); + } + } + } + if (flagSecure != null) { + flagSecure.invalidate(); } } @@ -8241,7 +8254,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate (!currentMessageObject.isOutOwner() || currentMessageObject.isSent()) && ( UserConfig.getInstance(currentAccount).isPremium() || - !MessagesController.getInstance(currentAccount).didPressTranscribeButtonEnough() && ( + !MessagesController.getInstance(currentAccount).didPressTranscribeButtonEnough() && !currentMessageObject.isOutOwner() && ( currentMessageObject.messageOwner != null && currentMessageObject.messageOwner.voiceTranscriptionForce || currentMessageObject.getDuration() >= 60 ) && !MessagesController.getInstance(currentAccount).premiumLocked @@ -13787,6 +13800,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate if (currentNameStatusDrawable != null && drawNameLayout && nameLayout != null) { int color; + float nameX, nameY; if (currentMessageObject.shouldDrawWithoutBackground()) { color = getThemedColor(Theme.key_chat_stickerNameText); if (currentMessageObject.isOutOwner()) { @@ -13798,9 +13812,9 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate nameX -= nameOffsetX; } else { if (mediaBackground || currentMessageObject.isOutOwner()) { - nameX = backgroundDrawableLeft + transitionParams.deltaLeft + AndroidUtilities.dp(11) - nameOffsetX + getExtraTextX(); + nameX = backgroundDrawableLeft + transitionParams.deltaLeft + AndroidUtilities.dp(11) + getExtraTextX(); } else { - nameX = backgroundDrawableLeft + transitionParams.deltaLeft + AndroidUtilities.dp(!mediaBackground && drawPinnedBottom ? 11 : 17) - nameOffsetX + getExtraTextX(); + nameX = backgroundDrawableLeft + transitionParams.deltaLeft + AndroidUtilities.dp(!mediaBackground && drawPinnedBottom ? 11 : 17) + getExtraTextX(); } if (currentUser != null) { if (currentBackgroundDrawable != null && currentBackgroundDrawable.hasGradient()) { @@ -13841,7 +13855,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate } currentNameStatusDrawable.setBounds( (int) (Math.abs(nx) + nameLayoutWidth + AndroidUtilities.dp(2)), - (int) nameY + nameLayout.getHeight() / 2 - AndroidUtilities.dp(10), + (int) (nameY + nameLayout.getHeight() / 2 - AndroidUtilities.dp(10)), (int) (Math.abs(nx) + nameLayoutWidth + AndroidUtilities.dp(22)), (int) (nameY + nameLayout.getHeight() / 2 + AndroidUtilities.dp(10)) ); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ContextLinkCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ContextLinkCell.java index f04af8990..05bcdad97 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ContextLinkCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ContextLinkCell.java @@ -36,11 +36,13 @@ import org.telegram.messenger.FileLog; import org.telegram.messenger.ImageLoader; import org.telegram.messenger.ImageLocation; import org.telegram.messenger.ImageReceiver; +import org.telegram.messenger.LiteMode; import org.telegram.messenger.LocaleController; import org.telegram.messenger.MediaController; import org.telegram.messenger.MessageObject; import org.telegram.messenger.MessagesController; import org.telegram.messenger.R; +import org.telegram.messenger.SharedConfig; import org.telegram.messenger.SvgHelper; import org.telegram.messenger.UserConfig; import org.telegram.messenger.Utilities; @@ -321,6 +323,10 @@ public class ContextLinkCell extends FrameLayout implements DownloadController.F width = (int) (w / (h / (float) AndroidUtilities.dp(80))); if (documentAttachType == DOCUMENT_ATTACH_TYPE_GIF) { currentPhotoFilterThumb = currentPhotoFilter = String.format(Locale.US, "%d_%d_b", (int) (width / AndroidUtilities.density), 80); + if (!SharedConfig.isAutoplayGifs()) { + currentPhotoFilterThumb += "_firstframe"; + currentPhotoFilter += "_firstframe"; + } } else { currentPhotoFilter = String.format(Locale.US, "%d_%d", (int) (width / AndroidUtilities.density), 80); currentPhotoFilterThumb = currentPhotoFilter + "_b"; @@ -334,13 +340,13 @@ public class ContextLinkCell extends FrameLayout implements DownloadController.F if (documentAttach != null) { TLRPC.VideoSize thumb = MessageObject.getDocumentVideoThumb(documentAttach); if (thumb != null) { - linkImageView.setImage(ImageLocation.getForDocument(thumb, documentAttach), "100_100", ImageLocation.getForDocument(currentPhotoObject, documentAttach), currentPhotoFilter, -1, ext, parentObject, 1); + linkImageView.setImage(ImageLocation.getForDocument(thumb, documentAttach), "100_100" + (!SharedConfig.isAutoplayGifs() ? "_firstframe" : ""), ImageLocation.getForDocument(currentPhotoObject, documentAttach), currentPhotoFilter, -1, ext, parentObject, 1); } else { ImageLocation location = ImageLocation.getForDocument(documentAttach); if (isForceGif) { location.imageType = FileLoader.IMAGE_TYPE_ANIMATION; } - linkImageView.setImage(location, "100_100", ImageLocation.getForDocument(currentPhotoObject, documentAttach), currentPhotoFilter, documentAttach.size, ext, parentObject, 0); + linkImageView.setImage(location, "100_100" + (!SharedConfig.isAutoplayGifs() ? "_firstframe" : ""), ImageLocation.getForDocument(currentPhotoObject, documentAttach), currentPhotoFilter, documentAttach.size, ext, parentObject, 0); } } else if (webFile != null) { linkImageView.setImage(ImageLocation.getForWebFile(webFile), "100_100", ImageLocation.getForPhoto(currentPhotoObject, photoAttach), currentPhotoFilter, -1, ext, parentObject, 1); @@ -372,6 +378,13 @@ public class ContextLinkCell extends FrameLayout implements DownloadController.F linkImageView.setImage(ImageLocation.getForPath(urlLocation), currentPhotoFilter, ImageLocation.getForPhoto(currentPhotoObjectThumb, photoAttach), currentPhotoFilterThumb, -1, ext, parentObject, 1); } } + if (SharedConfig.isAutoplayGifs()) { + linkImageView.setAllowStartAnimation(true); + linkImageView.startAnimation(); + } else { + linkImageView.setAllowStartAnimation(false); + linkImageView.stopAnimation(); + } drawLinkImageView = true; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/DialogCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DialogCell.java index cbfe3af10..740d52f2b 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/DialogCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DialogCell.java @@ -391,6 +391,7 @@ public class DialogCell extends BaseCell { private int messageTop; private int messageLeft; + private int buttonLeft; private int typingLeft; private StaticLayout messageLayout; private StaticLayout typingLayout; @@ -1817,11 +1818,11 @@ public class DialogCell extends BaseCell { messageWidth = getMeasuredWidth() - AndroidUtilities.dp(messagePaddingStart + 21); if (LocaleController.isRTL) { - typingLeft = messageLeft = messageNameLeft = AndroidUtilities.dp(16); + buttonLeft = typingLeft = messageLeft = messageNameLeft = AndroidUtilities.dp(16); avatarLeft = getMeasuredWidth() - AndroidUtilities.dp(66); thumbLeft = avatarLeft - AndroidUtilities.dp(13 + 18); } else { - typingLeft = messageLeft = messageNameLeft = AndroidUtilities.dp(messagePaddingStart + 6); + buttonLeft = typingLeft = messageLeft = messageNameLeft = AndroidUtilities.dp(messagePaddingStart + 6); avatarLeft = AndroidUtilities.dp(10); thumbLeft = avatarLeft + AndroidUtilities.dp(56 + 13); } @@ -1840,11 +1841,11 @@ public class DialogCell extends BaseCell { messageWidth = getMeasuredWidth() - AndroidUtilities.dp(messagePaddingStart + 23 - (LocaleController.isRTL ? 0 : 12)); if (LocaleController.isRTL) { - typingLeft = messageLeft = messageNameLeft = AndroidUtilities.dp(22); + buttonLeft = typingLeft = messageLeft = messageNameLeft = AndroidUtilities.dp(22); avatarLeft = getMeasuredWidth() - AndroidUtilities.dp(64); thumbLeft = avatarLeft - AndroidUtilities.dp(11 + (thumbsCount * (thumbSize + 2) - 2)); } else { - typingLeft = messageLeft = messageNameLeft = AndroidUtilities.dp(messagePaddingStart + 4); + buttonLeft = typingLeft = messageLeft = messageNameLeft = AndroidUtilities.dp(messagePaddingStart + 4); avatarLeft = AndroidUtilities.dp(10); thumbLeft = avatarLeft + AndroidUtilities.dp(56 + 11); } @@ -2069,7 +2070,7 @@ public class DialogCell extends BaseCell { } else { if (thumbsCount > 0) { messageWidth += AndroidUtilities.dp((thumbsCount * (thumbSize + 2) - 2) + 5); - if (LocaleController.isRTL) { + if (LocaleController.isRTL && !isForumCell()) { messageLeft -= AndroidUtilities.dp((thumbsCount * (thumbSize + 2) - 2) + 5); } } @@ -2115,6 +2116,8 @@ public class DialogCell extends BaseCell { nameMuteLeft = (int) (nameLeft + (nameWidth - widthpx - left) - AndroidUtilities.dp(24)); } else if (drawScam != 0) { nameMuteLeft = (int) (nameLeft + (nameWidth - widthpx) - AndroidUtilities.dp(6) - (drawScam == 1 ? Theme.dialogs_scamDrawable : Theme.dialogs_fakeDrawable).getIntrinsicWidth()); + } else { + nameMuteLeft = 0; } if (left == 0) { if (widthpx < nameWidth) { @@ -2200,6 +2203,16 @@ public class DialogCell extends BaseCell { messageLeft -= left; } } + if (buttonLayout != null) { + int lineCount = buttonLayout.getLineCount(); + if (lineCount > 0) { + left = Integer.MAX_VALUE; + for (int a = 0; a < lineCount; a++) { + left = Math.min(left, buttonLayout.getLineLeft(a)); + } + buttonLeft -= left; + } + } if (typingLayout != null) { int lineCount = typingLayout.getLineCount(); if (lineCount > 0) { @@ -2235,6 +2248,7 @@ public class DialogCell extends BaseCell { private void updateThumbsPosition() { if (thumbsCount > 0) { StaticLayout layout = isForumCell() ? buttonLayout : messageLayout; + int left = isForumCell() ? buttonLeft : messageLeft; if (layout == null) { return; } @@ -2255,7 +2269,7 @@ public class DialogCell extends BaseCell { offset += AndroidUtilities.dp(3); } for (int i = 0; i < thumbsCount; ++i) { - thumbImage[i].setImageX(messageLeft + offset + AndroidUtilities.dp((thumbSize + 2) * i)); + thumbImage[i].setImageX(left + offset + AndroidUtilities.dp((thumbSize + 2) * i)); } } } @@ -2513,6 +2527,7 @@ public class DialogCell extends BaseCell { public boolean update(int mask, boolean animated) { boolean requestLayout = false; + boolean rebuildLayout = false; boolean oldIsForumCell = isForumCell(); drawAvatarSelector = false; ttlPeriod = 0; @@ -2735,7 +2750,6 @@ public class DialogCell extends BaseCell { dialogMuted = isDialogCell && MessagesController.getInstance(currentAccount).isDialogMuted(currentDialogId, getTopicId()); } - dialogId = currentDialogId; } @@ -2877,7 +2891,7 @@ public class DialogCell extends BaseCell { avatarImage.setRoundRadius(chat != null && chat.forum && currentDialogFolderId == 0 && !useFromUserAsAvatar ? AndroidUtilities.dp(16) : AndroidUtilities.dp(28)); } if (!isTopic && (getMeasuredWidth() != 0 || getMeasuredHeight() != 0)) { - buildLayout(); + rebuildLayout = true; } else { //requestLayout(); } @@ -2893,6 +2907,9 @@ public class DialogCell extends BaseCell { if (isForumCell() != oldIsForumCell) { requestLayout = true; } + if (rebuildLayout) { + buildLayout(); + } return requestLayout; } @@ -3410,14 +3427,14 @@ public class DialogCell extends BaseCell { if (!buttonCreated) { canvasButton.rewind(); if (topMessageTopicEndIndex != topMessageTopicStartIndex && topMessageTopicEndIndex > 0) { - AndroidUtilities.rectTmp.set(messageLeft + AndroidUtilities.dp(2), messageTop, messageLeft + messageLayout.getPrimaryHorizontal(Math.min(messageLayout.getText().length(), topMessageTopicEndIndex)) - AndroidUtilities.dp(3), buttonTop - AndroidUtilities.dp(4)); + AndroidUtilities.rectTmp.set(messageLeft + AndroidUtilities.dp(2) + messageLayout.getPrimaryHorizontal(0), messageTop, messageLeft + messageLayout.getPrimaryHorizontal(Math.min(messageLayout.getText().length(), topMessageTopicEndIndex)) - AndroidUtilities.dp(3), buttonTop - AndroidUtilities.dp(4)); AndroidUtilities.rectTmp.inset(-AndroidUtilities.dp(8), -AndroidUtilities.dp(4)); if (AndroidUtilities.rectTmp.right > AndroidUtilities.rectTmp.left) { canvasButton.addRect(AndroidUtilities.rectTmp); } } - AndroidUtilities.rectTmp.set(messageLeft + AndroidUtilities.dp(2), buttonTop + AndroidUtilities.dp(2), messageLeft + buttonLayout.getLineWidth(0) + AndroidUtilities.dp(12), buttonTop + buttonLayout.getHeight()); + AndroidUtilities.rectTmp.set(buttonLeft + AndroidUtilities.dp(2), buttonTop + AndroidUtilities.dp(2), buttonLeft + buttonLayout.getLineWidth(0) + AndroidUtilities.dp(12), buttonTop + buttonLayout.getHeight()); AndroidUtilities.rectTmp.inset(-AndroidUtilities.dp(8), -AndroidUtilities.dp(3)); canvasButton.addRect(AndroidUtilities.rectTmp); } @@ -3429,7 +3446,7 @@ public class DialogCell extends BaseCell { } - canvas.translate(messageLeft - buttonLayout.getLineLeft(0), buttonTop); + canvas.translate(buttonLeft, buttonTop); if (!spoilers2.isEmpty()) { try { canvas.save(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/DrawerActionCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DrawerActionCell.java index 02b3a5a1c..e76f511a9 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/DrawerActionCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DrawerActionCell.java @@ -139,6 +139,7 @@ public class DrawerActionCell extends FrameLayout { @Override public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfo(info); + info.setClassName("android.widget.Button"); info.addAction(AccessibilityNodeInfo.ACTION_CLICK); info.addAction(AccessibilityNodeInfo.ACTION_LONG_CLICK); info.setText(textView.getText()); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/DrawerProfileCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DrawerProfileCell.java index d1e2897a3..e57152ffd 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/DrawerProfileCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DrawerProfileCell.java @@ -226,13 +226,15 @@ public class DrawerProfileCell extends FrameLayout implements NotificationCenter sunDrawable.setCustomEndFrame(0); } darkThemeView.playAnimation(); - if (Theme.selectedAutoNightType != Theme.AUTO_NIGHT_TYPE_NONE) { - Toast.makeText(getContext(), LocaleController.getString("AutoNightModeOff", R.string.AutoNightModeOff), Toast.LENGTH_SHORT).show(); - Theme.selectedAutoNightType = Theme.AUTO_NIGHT_TYPE_NONE; - Theme.saveAutoNightThemeConfig(); - Theme.cancelAutoNightThemeCallbacks(); - } switchTheme(themeInfo, toDark); + + if (drawerLayoutContainer != null ) { + FrameLayout layout = drawerLayoutContainer.getParent() instanceof FrameLayout ? (FrameLayout) drawerLayoutContainer.getParent() : null; + Theme.turnOffAutoNight(layout, () -> { + drawerLayoutContainer.closeDrawer(false); + drawerLayoutContainer.presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_NIGHT)); + }); + } }); darkThemeView.setOnLongClickListener(e -> { if (drawerLayoutContainer != null) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/GroupCallUserCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/GroupCallUserCell.java index 97f5e2710..449d6d575 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/GroupCallUserCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/GroupCallUserCell.java @@ -433,6 +433,9 @@ public class GroupCallUserCell extends FrameLayout { if (animatorSet != null) { animatorSet.cancel(); } + if (rightDrawable != null) { + rightDrawable.detach(); + } } public boolean isSelfUser() { @@ -538,6 +541,9 @@ public class GroupCallUserCell extends FrameLayout { protected void onAttachedToWindow() { super.onAttachedToWindow(); applyParticipantChanges(false); + if (rightDrawable != null) { + rightDrawable.attach(); + } } public TLRPC.TL_groupCallParticipant getParticipant() { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/GroupCreateUserCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/GroupCreateUserCell.java index a539862f3..7fb4ff6a7 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/GroupCreateUserCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/GroupCreateUserCell.java @@ -264,11 +264,11 @@ public class GroupCreateUserCell extends FrameLayout { } avatarImageView.getLayoutParams().width = avatarImageView.getLayoutParams().height = AndroidUtilities.dp(46); if (checkBox != null) { - ((LayoutParams) checkBox.getLayoutParams()).topMargin = AndroidUtilities.dp(33) + padding; + ((LayoutParams) checkBox.getLayoutParams()).topMargin = AndroidUtilities.dp(29) + padding; if (LocaleController.isRTL) { ((LayoutParams) checkBox.getLayoutParams()).rightMargin = AndroidUtilities.dp(39) + padding; } else { - ((LayoutParams) checkBox.getLayoutParams()).leftMargin = AndroidUtilities.dp(40) + padding; + ((LayoutParams) checkBox.getLayoutParams()).leftMargin = AndroidUtilities.dp(45) + padding; } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/PhotoAttachCameraCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/PhotoAttachCameraCell.java index 1362d9951..06a0e6a72 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/PhotoAttachCameraCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/PhotoAttachCameraCell.java @@ -14,6 +14,7 @@ import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; +import android.graphics.drawable.Drawable; import android.widget.FrameLayout; import android.widget.ImageView; @@ -91,6 +92,10 @@ public class PhotoAttachCameraCell extends FrameLayout { } } + public Drawable getDrawable() { + return backgroundView.getDrawable(); + } + protected int getThemedColor(String key) { Integer color = resourcesProvider != null ? resourcesProvider.getColor(key) : null; return color != null ? color : Theme.getColor(key); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/SharedDocumentCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/SharedDocumentCell.java index c21af8923..1a05d833d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/SharedDocumentCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/SharedDocumentCell.java @@ -280,16 +280,16 @@ public class SharedDocumentCell extends FrameLayout implements DownloadControlle String backKey; if (resId == R.drawable.files_storage) { backKey = Theme.key_chat_attachLocationBackground; - iconKey = Theme.key_chat_attachLocationIcon; + iconKey = Theme.key_chat_attachIcon; } else if (resId == R.drawable.files_gallery) { backKey = Theme.key_chat_attachContactBackground; - iconKey = Theme.key_chat_attachContactIcon; + iconKey = Theme.key_chat_attachIcon; } else if (resId == R.drawable.files_music) { backKey = Theme.key_chat_attachAudioBackground; - iconKey = Theme.key_chat_attachAudioIcon; + iconKey = Theme.key_chat_attachIcon; } else if (resId == R.drawable.files_internal) { backKey = Theme.key_chat_attachGalleryBackground; - iconKey = Theme.key_chat_attachGalleryIcon; + iconKey = Theme.key_chat_attachIcon; } else { backKey = Theme.key_files_folderIconBackground; iconKey = Theme.key_files_folderIcon; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/SharedPhotoVideoCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/SharedPhotoVideoCell.java index f272177bf..cbfcce71c 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/SharedPhotoVideoCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/SharedPhotoVideoCell.java @@ -30,6 +30,7 @@ import android.widget.TextView; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.DownloadController; import org.telegram.messenger.ImageLocation; +import org.telegram.messenger.LiteMode; import org.telegram.messenger.LocaleController; import org.telegram.messenger.MessageObject; import org.telegram.messenger.ApplicationLoader; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/StickerEmojiCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/StickerEmojiCell.java index ab80aaccd..1dcb8686f 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/StickerEmojiCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/StickerEmojiCell.java @@ -26,6 +26,7 @@ import org.telegram.messenger.Emoji; import org.telegram.messenger.FileLoader; import org.telegram.messenger.ImageLocation; import org.telegram.messenger.ImageReceiver; +import org.telegram.messenger.LiteMode; import org.telegram.messenger.LocaleController; import org.telegram.messenger.MediaDataController; import org.telegram.messenger.MessageObject; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/StickerSetCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/StickerSetCell.java index 13fb08876..b7e30b4fa 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/StickerSetCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/StickerSetCell.java @@ -91,12 +91,7 @@ public class StickerSetCell extends FrameLayout { imageView.setLayerNum(1); addView(imageView, LayoutHelper.createFrame(40, 40, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, LocaleController.isRTL ? 0 : 13, 9, LocaleController.isRTL ? 13 : 0, 0)); - if (option == 2) { - progressView = new RadialProgressView(getContext()); - progressView.setProgressColor(Theme.getColor(Theme.key_dialogProgressCircle)); - progressView.setSize(AndroidUtilities.dp(30)); - addView(progressView, LayoutHelper.createFrame(48, 48, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, LocaleController.isRTL ? 0 : 12, 5, LocaleController.isRTL ? 12 : 0, 0)); - } else if (option != 0) { + if (option != 0) { optionsButton = new ImageView(context); optionsButton.setFocusable(false); optionsButton.setScaleType(ImageView.ScaleType.CENTER); @@ -548,7 +543,7 @@ public class StickerSetCell extends FrameLayout { public void updateRightMargin() { sideButtons.measure(MeasureSpec.makeMeasureSpec(999999, MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(58), MeasureSpec.EXACTLY)); - final int margin = sideButtons.getMeasuredWidth(); + final int margin = AndroidUtilities.dp(26) + sideButtons.getMeasuredWidth(); if (LocaleController.isRTL) { ((MarginLayoutParams) textView.getLayoutParams()).leftMargin = margin; ((MarginLayoutParams) valueTextView.getLayoutParams()).leftMargin = margin; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCell.java index 80090400e..3df76b612 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCell.java @@ -56,6 +56,7 @@ public class TextCell extends FrameLayout { private float loadingProgress; private float drawLoadingProgress; + private int lastWidth; public TextCell(Context context) { this(context, 23, false, false, null); @@ -165,6 +166,11 @@ public class TextCell extends FrameLayout { int width = MeasureSpec.getSize(widthMeasureSpec); int height = AndroidUtilities.dp(heightDp); + if (lastWidth != 0 && lastWidth != width && valueText != null) { + valueTextView.setText(TextUtils.ellipsize(valueText, valueTextView.getPaint(), AndroidUtilities.displaySize.x / 2.5f, TextUtils.TruncateAt.END), false); + } + lastWidth = width; + int valueWidth; if (prioritizeTitleOverValue) { textView.measure(MeasureSpec.makeMeasureSpec(width - AndroidUtilities.dp(71 + leftPadding), MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(20), MeasureSpec.EXACTLY)); @@ -175,7 +181,7 @@ public class TextCell extends FrameLayout { valueTextView.measure(MeasureSpec.makeMeasureSpec(width - AndroidUtilities.dp(leftPadding), LocaleController.isRTL ? MeasureSpec.AT_MOST : MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(20), MeasureSpec.EXACTLY)); valueSpoilersTextView.measure(MeasureSpec.makeMeasureSpec(width - AndroidUtilities.dp(leftPadding), LocaleController.isRTL ? MeasureSpec.AT_MOST : MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(20), MeasureSpec.EXACTLY)); valueWidth = Math.max(valueTextView.width(), valueSpoilersTextView.getTextWidth()); - textView.measure(MeasureSpec.makeMeasureSpec(width - AndroidUtilities.dp(71 + leftPadding) - valueWidth, MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(20), MeasureSpec.EXACTLY)); + textView.measure(MeasureSpec.makeMeasureSpec(Math.max(0, width - AndroidUtilities.dp(71 + leftPadding) - valueWidth), MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(20), MeasureSpec.EXACTLY)); subtitleView.measure(MeasureSpec.makeMeasureSpec(width - AndroidUtilities.dp(71 + leftPadding) - valueWidth, MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(20), MeasureSpec.EXACTLY)); } if (imageView.getVisibility() == VISIBLE) { @@ -204,7 +210,7 @@ public class TextCell extends FrameLayout { int width = right - left; int viewTop = (height - Math.max(valueSpoilersTextView.getTextHeight(), valueTextView.getTextHeight())) / 2; - int viewLeft = LocaleController.isRTL ? AndroidUtilities.dp(leftPadding) : 0; + int viewLeft = LocaleController.isRTL ? AndroidUtilities.dp(leftPadding) : width - valueTextView.getMeasuredWidth() - AndroidUtilities.dp(leftPadding); if (prioritizeTitleOverValue && !LocaleController.isRTL) { viewLeft = width - valueTextView.getMeasuredWidth() - AndroidUtilities.dp(leftPadding); } @@ -257,10 +263,12 @@ public class TextCell extends FrameLayout { } } + private CharSequence valueText; + public void setText(String text, boolean divider) { imageLeft = 21; textView.setText(text); - valueTextView.setText(null, false); + valueTextView.setText(valueText = null, false); imageView.setVisibility(GONE); valueTextView.setVisibility(GONE); valueSpoilersTextView.setVisibility(GONE); @@ -273,7 +281,7 @@ public class TextCell extends FrameLayout { imageLeft = 21; offsetFromImage = 71; textView.setText(text); - valueTextView.setText(null, false); + valueTextView.setText(valueText = null, false); imageView.setImageResource(resId); imageView.setVisibility(VISIBLE); valueTextView.setVisibility(GONE); @@ -288,7 +296,7 @@ public class TextCell extends FrameLayout { imageLeft = 21; offsetFromImage = 71; textView.setText(text); - valueTextView.setText(null, false); + valueTextView.setText(valueText = null, false); setColorfulIcon(color, resId); valueTextView.setVisibility(GONE); valueImageView.setVisibility(GONE); @@ -300,7 +308,7 @@ public class TextCell extends FrameLayout { offsetFromImage = 68; imageLeft = 18; textView.setText(text); - valueTextView.setText(null, false); + valueTextView.setText(valueText = null, false); imageView.setColorFilter(null); if (drawable instanceof RLottieDrawable) { imageView.setAnimation((RLottieDrawable) drawable); @@ -331,7 +339,7 @@ public class TextCell extends FrameLayout { imageLeft = 21; offsetFromImage = 71; textView.setText(text); - valueTextView.setText(value, animated); + valueTextView.setText(TextUtils.ellipsize(valueText = value, valueTextView.getPaint(), AndroidUtilities.displaySize.x / 2.5f, TextUtils.TruncateAt.END), animated); valueTextView.setVisibility(VISIBLE); valueSpoilersTextView.setVisibility(GONE); imageView.setVisibility(GONE); @@ -347,7 +355,7 @@ public class TextCell extends FrameLayout { imageLeft = 21; offsetFromImage = 71; textView.setText(text); - valueTextView.setText(value, animated); + valueTextView.setText(TextUtils.ellipsize(valueText = value, valueTextView.getPaint(), AndroidUtilities.displaySize.x / 2.5f, TextUtils.TruncateAt.END), animated); valueTextView.setVisibility(VISIBLE); valueSpoilersTextView.setVisibility(GONE); setColorfulIcon(color, resId); @@ -359,6 +367,26 @@ public class TextCell extends FrameLayout { } } + public void setTextAndSpoilersValueAndIcon(String text, CharSequence value, int resId, boolean divider) { + imageLeft = 21; + offsetFromImage = 71; + textView.setText(text); + valueSpoilersTextView.setVisibility(VISIBLE); + valueSpoilersTextView.setText(value); + valueTextView.setVisibility(GONE); + valueImageView.setVisibility(GONE); + imageView.setVisibility(VISIBLE); + imageView.setTranslationX(0); + imageView.setTranslationY(0); + imageView.setPadding(0, AndroidUtilities.dp(7), 0, 0); + imageView.setImageResource(resId); + needDivider = divider; + setWillNotDraw(!needDivider); + if (checkBox != null) { + checkBox.setVisibility(GONE); + } + } + public void setTextAndSpoilersValueAndColorfulIcon(String text, CharSequence value, int resId, int color, boolean divider) { imageLeft = 21; offsetFromImage = 71; @@ -383,7 +411,7 @@ public class TextCell extends FrameLayout { imageLeft = 21; offsetFromImage = 71; textView.setText(text); - valueTextView.setText(value, animated); + valueTextView.setText(TextUtils.ellipsize(valueText = value, valueTextView.getPaint(), AndroidUtilities.displaySize.x / 2.5f, TextUtils.TruncateAt.END), animated); valueTextView.setVisibility(VISIBLE); valueSpoilersTextView.setVisibility(GONE); valueImageView.setVisibility(GONE); @@ -465,7 +493,7 @@ public class TextCell extends FrameLayout { imageLeft = 21; offsetFromImage = 71; textView.setText(text); - valueTextView.setText(null, false); + valueTextView.setText(valueText = null, false); valueImageView.setVisibility(VISIBLE); valueImageView.setImageDrawable(drawable); valueTextView.setVisibility(GONE); @@ -489,12 +517,26 @@ public class TextCell extends FrameLayout { @Override public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfo(info); - final CharSequence text = textView.getText(); + CharSequence text = textView.getText(); if (!TextUtils.isEmpty(text)) { final CharSequence valueText = valueTextView.getText(); if (!TextUtils.isEmpty(valueText)) { - info.setText(text + ": " + valueText); - } else { + text = TextUtils.concat(text, ": ", valueText); + } + } + if (checkBox != null) { + info.setClassName("android.widget.Switch"); + info.setCheckable(true); + info.setChecked(checkBox.isChecked()); + StringBuilder sb = new StringBuilder(); + sb.append(textView.getText()); + if (!TextUtils.isEmpty(valueTextView.getText())) { + sb.append('\n'); + sb.append(valueTextView.getText()); + } + info.setContentDescription(sb); + } else { + if (!TextUtils.isEmpty(text)) { info.setText(text); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ThemesHorizontalListCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ThemesHorizontalListCell.java index 51f11f923..b70989d10 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ThemesHorizontalListCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ThemesHorizontalListCell.java @@ -77,6 +77,7 @@ public class ThemesHorizontalListCell extends RecyclerListView implements Notifi private ArrayList defaultThemes; private int currentType; private int prevCount; + private BaseFragment fragment; private class ThemesListAdapter extends RecyclerListView.SelectionAdapter { @@ -683,12 +684,13 @@ public class ThemesHorizontalListCell extends RecyclerListView implements Notifi } } - public ThemesHorizontalListCell(Context context, int type, ArrayList def, ArrayList custom) { + public ThemesHorizontalListCell(Context context, BaseFragment fragment, int type, ArrayList def, ArrayList custom) { super(context); customThemes = custom; defaultThemes = def; currentType = type; + this.fragment = fragment; if (type == ThemeActivity.THEME_TYPE_OTHER) { setBackgroundColor(Theme.getColor(Theme.key_dialogBackground)); @@ -731,7 +733,9 @@ public class ThemesHorizontalListCell extends RecyclerListView implements Notifi return; } if (themeInfo.info.document == null) { - presentFragment(new ThemeSetUrlActivity(themeInfo, null, true)); + if (fragment != null) { + fragment.presentFragment(new ThemeSetUrlActivity(themeInfo, null, true)); + } return; } } @@ -764,6 +768,10 @@ public class ThemesHorizontalListCell extends RecyclerListView implements Notifi } } EmojiThemes.saveCustomTheme(themeInfo, themeInfo.currentAccentId); + + if (currentType != ThemeActivity.THEME_TYPE_NIGHT) { + Theme.turnOffAutoNight(fragment); + } } public void setDrawDivider(boolean draw) { @@ -889,10 +897,6 @@ public class ThemesHorizontalListCell extends RecyclerListView implements Notifi } - protected void presentFragment(BaseFragment fragment) { - - } - protected void updateRows() { } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChannelAdminLogActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChannelAdminLogActivity.java index 6dbe23469..8fc922c7c 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChannelAdminLogActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChannelAdminLogActivity.java @@ -3126,12 +3126,9 @@ public class ChannelAdminLogActivity extends BaseFragment implements Notificatio themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, Theme.chat_gamePaint, null, null, Theme.key_chat_previewGameText)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_inPreviewInstantText)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_outPreviewInstantText)); - themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_inPreviewInstantSelectedText)); - themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_outPreviewInstantSelectedText)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, Theme.chat_deleteProgressPaint, null, null, Theme.key_chat_secretTimeText)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_stickerNameText)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, Theme.chat_botButtonPaint, null, null, Theme.key_chat_botButtonText)); - themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, Theme.chat_botProgressPaint, null, null, Theme.key_chat_botProgress)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_inForwardedNameText)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_outForwardedNameText)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_inViaBotNameText)); @@ -3219,25 +3216,12 @@ public class ChannelAdminLogActivity extends BaseFragment implements Notificatio themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_inMediaIcon)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_inLoaderSelected)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_inMediaIconSelected)); - themeDescriptions.add(new ThemeDescription(chatListView, ThemeDescription.FLAG_BACKGROUNDFILTER, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[0][0], Theme.chat_photoStatesDrawables[1][0], Theme.chat_photoStatesDrawables[2][0], Theme.chat_photoStatesDrawables[3][0]}, null, Theme.key_chat_mediaLoaderPhoto)); - themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[0][0], Theme.chat_photoStatesDrawables[1][0], Theme.chat_photoStatesDrawables[2][0], Theme.chat_photoStatesDrawables[3][0]}, null, Theme.key_chat_mediaLoaderPhotoIcon)); - themeDescriptions.add(new ThemeDescription(chatListView, ThemeDescription.FLAG_BACKGROUNDFILTER, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[0][1], Theme.chat_photoStatesDrawables[1][1], Theme.chat_photoStatesDrawables[2][1], Theme.chat_photoStatesDrawables[3][1]}, null, Theme.key_chat_mediaLoaderPhotoSelected)); - themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[0][1], Theme.chat_photoStatesDrawables[1][1], Theme.chat_photoStatesDrawables[2][1], Theme.chat_photoStatesDrawables[3][1]}, null, Theme.key_chat_mediaLoaderPhotoIconSelected)); - themeDescriptions.add(new ThemeDescription(chatListView, ThemeDescription.FLAG_BACKGROUNDFILTER, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[7][0], Theme.chat_photoStatesDrawables[8][0]}, null, Theme.key_chat_outLoaderPhoto)); - themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[7][0], Theme.chat_photoStatesDrawables[8][0]}, null, Theme.key_chat_outLoaderPhotoIcon)); - themeDescriptions.add(new ThemeDescription(chatListView, ThemeDescription.FLAG_BACKGROUNDFILTER, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[7][1], Theme.chat_photoStatesDrawables[8][1]}, null, Theme.key_chat_outLoaderPhotoSelected)); - themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[7][1], Theme.chat_photoStatesDrawables[8][1]}, null, Theme.key_chat_outLoaderPhotoIconSelected)); - themeDescriptions.add(new ThemeDescription(chatListView, ThemeDescription.FLAG_BACKGROUNDFILTER, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[10][0], Theme.chat_photoStatesDrawables[11][0]}, null, Theme.key_chat_inLoaderPhoto)); - themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[10][0], Theme.chat_photoStatesDrawables[11][0]}, null, Theme.key_chat_inLoaderPhotoIcon)); - themeDescriptions.add(new ThemeDescription(chatListView, ThemeDescription.FLAG_BACKGROUNDFILTER, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[10][1], Theme.chat_photoStatesDrawables[11][1]}, null, Theme.key_chat_inLoaderPhotoSelected)); - themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[10][1], Theme.chat_photoStatesDrawables[11][1]}, null, Theme.key_chat_inLoaderPhotoIconSelected)); themeDescriptions.add(new ThemeDescription(chatListView, ThemeDescription.FLAG_BACKGROUNDFILTER, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_contactDrawable[0]}, null, Theme.key_chat_inContactBackground)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_contactDrawable[0]}, null, Theme.key_chat_inContactIcon)); themeDescriptions.add(new ThemeDescription(chatListView, ThemeDescription.FLAG_BACKGROUNDFILTER, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_contactDrawable[1]}, null, Theme.key_chat_outContactBackground)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_contactDrawable[1]}, null, Theme.key_chat_outContactIcon)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_inLocationBackground)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_locationDrawable[0]}, null, Theme.key_chat_inLocationIcon)); - themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_outLocationBackground)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_locationDrawable[1]}, null, Theme.key_chat_outLocationIcon)); themeDescriptions.add(new ThemeDescription(bottomOverlayChat, 0, null, Theme.chat_composeBackgroundPaint, null, null, Theme.key_chat_messagePanelBackground)); @@ -3256,9 +3240,6 @@ public class ChannelAdminLogActivity extends BaseFragment implements Notificatio themeDescriptions.add(new ThemeDescription(progressView2, ThemeDescription.FLAG_SERVICEBACKGROUND, null, null, null, null, Theme.key_chat_serviceBackground)); themeDescriptions.add(new ThemeDescription(emptyView, ThemeDescription.FLAG_SERVICEBACKGROUND, null, null, null, null, Theme.key_chat_serviceBackground)); - themeDescriptions.add(new ThemeDescription(avatarContainer != null ? avatarContainer.getTimeItem() : null, 0, null, null, null, null, Theme.key_chat_secretTimerBackground)); - themeDescriptions.add(new ThemeDescription(avatarContainer != null ? avatarContainer.getTimeItem() : null, 0, null, null, null, null, Theme.key_chat_secretTimerText)); - themeDescriptions.add(new ThemeDescription(undoView, ThemeDescription.FLAG_BACKGROUNDFILTER, null, null, null, null, Theme.key_undo_background)); themeDescriptions.add(new ThemeDescription(undoView, 0, new Class[]{UndoView.class}, new String[]{"undoImageView"}, null, null, null, Theme.key_undo_cancelColor)); themeDescriptions.add(new ThemeDescription(undoView, 0, new Class[]{UndoView.class}, new String[]{"undoTextView"}, null, null, null, Theme.key_undo_cancelColor)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java index d257ff0bb..dddbbde8d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java @@ -131,6 +131,7 @@ import org.telegram.messenger.Emoji; import org.telegram.messenger.EmojiData; import org.telegram.messenger.FileLoader; import org.telegram.messenger.FileLog; +import org.telegram.messenger.FlagSecureReason; import org.telegram.messenger.ForwardingMessagesParams; import org.telegram.messenger.ImageLocation; import org.telegram.messenger.ImageReceiver; @@ -203,6 +204,7 @@ import org.telegram.ui.Components.BlurBehindDrawable; import org.telegram.ui.Components.BluredView; import org.telegram.ui.Components.BlurredFrameLayout; import org.telegram.ui.Components.BotCommandsMenuView; +import org.telegram.ui.Components.BotWebViewSheet; import org.telegram.ui.Components.Bulletin; import org.telegram.ui.Components.BulletinFactory; import org.telegram.ui.Components.ChatActivityEnterTopView; @@ -295,7 +297,6 @@ import org.telegram.ui.Components.ViewHelper; import org.telegram.ui.Components.spoilers.SpoilerEffect; import org.telegram.ui.Components.voip.VoIPHelper; import org.telegram.ui.Delegates.ChatActivityMemberRequestsDelegate; -import org.telegram.ui.LNavigation.LNavigation; import java.io.BufferedWriter; import java.io.File; @@ -525,8 +526,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not private boolean showPinBulletin; private int pinBullerinTag; protected boolean openKeyboardOnAttachMenuClose; - private Runnable unregisterFlagSecurePasscode; - private Runnable unregisterFlagSecureNoforwards; + private FlagSecureReason flagSecure; private boolean isFullyVisible; private MessageObject hintMessageObject; @@ -692,7 +692,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not private SparseArray repliesMessagesDict = new SparseArray<>(); private SparseArray> replyMessageOwners = new SparseArray<>(); private HashMap> messagesByDays = new HashMap<>(); - public ArrayList messages = new ArrayList(); + public ArrayList messages = new ArrayList<>(); private SparseArray waitingForReplies = new SparseArray<>(); private LongSparseArray> polls = new LongSparseArray<>(); private LongSparseArray groupedMessagesMap = new LongSparseArray<>(); @@ -739,6 +739,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not skeletonOutlinePaint.setStrokeWidth(AndroidUtilities.dp(1)); } + private String inlineQueryForInput; private boolean premiumInvoiceBot; private boolean showScrollToMessageError; private int startLoadFromMessageId; @@ -2033,6 +2034,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not attachMenuBotStartCommand = arguments.getString("attach_bot_start_command", null); inlineReturn = arguments.getLong("inline_return", 0); String inlineQuery = arguments.getString("inline_query"); + inlineQueryForInput = arguments.getString("inline_query_input"); premiumInvoiceBot = arguments.getBoolean("premium_bot", false); startLoadFromMessageId = arguments.getInt("message_id", 0); startLoadFromDate = arguments.getInt("start_from_date", 0); @@ -2615,13 +2617,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not MediaController.getInstance().stopMediaObserver(); } - if (unregisterFlagSecureNoforwards != null) { - unregisterFlagSecureNoforwards.run(); - unregisterFlagSecureNoforwards = null; - } - if (unregisterFlagSecurePasscode != null) { - unregisterFlagSecurePasscode.run(); - unregisterFlagSecurePasscode = null; + if (flagSecure != null) { + flagSecure.detach(); } if (currentUser != null) { getMessagesController().cancelLoadFullUser(currentUser.id); @@ -5926,6 +5923,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not sendBotInlineResult(result, true, 0); } } + } else if (object instanceof TLRPC.TL_inlineBotWebView) { + processInlineBotWebView((TLRPC.TL_inlineBotWebView) object); } else if (object instanceof TLRPC.TL_inlineBotSwitchPM) { processInlineBotContextPM((TLRPC.TL_inlineBotSwitchPM) object); } else if (object instanceof MediaDataController.KeywordResult) { @@ -5963,6 +5962,10 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (getParentActivity() == null || !mentionContainer.getAdapter().isLongClickEnabled()) { return false; } + if (position == 0 || mentionContainer.getAdapter().isBannedInline()) { + return false; + } + position--; Object object = mentionContainer.getAdapter().getItem(position); if (object instanceof String) { if (mentionContainer.getAdapter().isBotCommands()) { @@ -6000,7 +6003,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not drawable = Theme.createCircleDrawable(AndroidUtilities.dp(42), getThemedColor(Theme.key_chat_goDownButton)); } Drawable shadowDrawable = context.getResources().getDrawable(R.drawable.pagedown_shadow).mutate(); - shadowDrawable.setColorFilter(new PorterDuffColorFilter(getThemedColor(Theme.key_chat_goDownButtonShadow), PorterDuff.Mode.MULTIPLY)); + shadowDrawable.setColorFilter(new PorterDuffColorFilter(0xff000000, PorterDuff.Mode.MULTIPLY)); CombinedDrawable combinedDrawable = new CombinedDrawable(shadowDrawable, drawable, 0, 0); combinedDrawable.setIconSize(AndroidUtilities.dp(42), AndroidUtilities.dp(42)); drawable = combinedDrawable; @@ -6055,7 +6058,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not drawable = Theme.createCircleDrawable(AndroidUtilities.dp(42), getThemedColor(Theme.key_chat_goDownButton)); } shadowDrawable = context.getResources().getDrawable(R.drawable.pagedown_shadow).mutate(); - shadowDrawable.setColorFilter(new PorterDuffColorFilter(getThemedColor(Theme.key_chat_goDownButtonShadow), PorterDuff.Mode.MULTIPLY)); + shadowDrawable.setColorFilter(new PorterDuffColorFilter(0xff000000, PorterDuff.Mode.MULTIPLY)); combinedDrawable = new CombinedDrawable(shadowDrawable, drawable, 0, 0); combinedDrawable.setIconSize(AndroidUtilities.dp(42), AndroidUtilities.dp(42)); drawable = combinedDrawable; @@ -6131,7 +6134,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not drawable = Theme.createCircleDrawable(AndroidUtilities.dp(42), getThemedColor(Theme.key_chat_goDownButton)); } shadowDrawable = context.getResources().getDrawable(R.drawable.pagedown_shadow).mutate(); - shadowDrawable.setColorFilter(new PorterDuffColorFilter(getThemedColor(Theme.key_chat_goDownButtonShadow), PorterDuff.Mode.MULTIPLY)); + shadowDrawable.setColorFilter(new PorterDuffColorFilter(0xff000000, PorterDuff.Mode.MULTIPLY)); combinedDrawable = new CombinedDrawable(shadowDrawable, drawable, 0, 0); combinedDrawable.setIconSize(AndroidUtilities.dp(42), AndroidUtilities.dp(42)); drawable = combinedDrawable; @@ -6377,6 +6380,10 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not chatActivityEnterView.updateBotWebView(false); chatActivityEnterView.setMinimumHeight(AndroidUtilities.dp(51)); chatActivityEnterView.setAllowStickersAndGifs(true, true, currentEncryptedChat == null || AndroidUtilities.getPeerLayerVersion(currentEncryptedChat.layer) >= 46); + if (inlineQueryForInput != null) { + chatActivityEnterView.setFieldText(inlineQueryForInput); + inlineQueryForInput = null; + } if (inPreviewMode) { chatActivityEnterView.setVisibility(View.INVISIBLE); } @@ -6846,12 +6853,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not chatScrollHelper.setScrollListener(this::invalidateMessagesVisiblePart); chatScrollHelper.setAnimationCallback(chatScrollHelperCallback); - if (currentEncryptedChat != null && (SharedConfig.passcodeHash.length() == 0 || SharedConfig.allowScreenCapture)) { - unregisterFlagSecurePasscode = AndroidUtilities.registerFlagSecure(getParentActivity().getWindow()); - } - if (getMessagesController().isChatNoForwards(currentChat)) { - unregisterFlagSecureNoforwards = AndroidUtilities.registerFlagSecure(getParentActivity().getWindow()); - } + flagSecure = new FlagSecureReason(getParentActivity().getWindow(), () -> currentEncryptedChat != null || SharedConfig.passcodeHash.length() > 0 && !SharedConfig.allowScreenCapture || getMessagesController().isChatNoForwards(currentChat)); + if (oldMessage != null) { chatActivityEnterView.setFieldText(oldMessage); } @@ -7271,16 +7274,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not long chatId = chatInfo.id; InviteMembersBottomSheet bottomSheet = new InviteMembersBottomSheet(getContext(), currentAccount, users, chatInfo.id, ChatActivity.this, themeDelegate); bottomSheet.setDelegate((users1, fwdCount) -> { - int N = users1.size(); - int[] finished = new int[1]; - for (int a = 0; a < N; a++) { - TLRPC.User user = users1.get(a); - getMessagesController().addUserToChat(chatId, user, fwdCount, null, ChatActivity.this, () -> { - if (++finished[0] == N) { - BulletinFactory.of(ChatActivity.this).createUsersAddedBulletin(users1, currentChat).show(); - } - }); - } + getMessagesController().addUsersToChat(currentChat, ChatActivity.this, users1, fwdCount, null, null, null); getMessagesController().hidePeerSettingsBar(dialog_id, currentUser, currentChat); updateTopPanel(true); updateInfoTopView(true); @@ -8409,7 +8403,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not showDialog(dialog); TextView button = (TextView) dialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(getThemedColor(Theme.key_dialogTextRed2)); + button.setTextColor(getThemedColor(Theme.key_dialogTextRed)); } } @@ -9258,6 +9252,13 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } + public void processInlineBotWebView(TLRPC.TL_inlineBotWebView object) { + BotWebViewSheet webViewSheet = new BotWebViewSheet(getContext(), getResourceProvider()); + webViewSheet.setParentActivity(getParentActivity()); + webViewSheet.requestWebView(currentAccount, currentUser != null ? currentUser.id : currentChat.id, mentionContainer.getAdapter().getFoundContextBot().id, object.text, object.url, BotWebViewSheet.TYPE_SIMPLE_WEB_VIEW_BUTTON, 0, false, BotWebViewSheet.FLAG_FROM_INLINE_SWITCH); + webViewSheet.show(); + } + public void processInlineBotContextPM(TLRPC.TL_inlineBotSwitchPM object) { if (object == null || mentionContainer == null) { return; @@ -11664,7 +11665,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } public void updateMessagesVisiblePart(boolean inLayout) { - if (chatListView == null) { + if (chatListView == null || fragmentView == null) { return; } int count = chatListView.getChildCount(); @@ -13537,7 +13538,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not int size = ((ExtendedGridLayoutManager) layoutManager).getRowsCount(widthSize); int maxHeight = size * 102; if (mentionContainer.getAdapter().isBotContext()) { - if (mentionContainer.getAdapter().getBotContextSwitch() != null) { + if (mentionContainer.getAdapter().getBotContextSwitch() != null || mentionContainer.getAdapter().getBotWebViewSwitch() != null) { maxHeight += 34; } } @@ -13547,7 +13548,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not int size = mentionContainer.getAdapter().getLastItemCount(); int maxHeight = 0; if (mentionContainer.getAdapter().isBotContext()) { - if (mentionContainer.getAdapter().getBotContextSwitch() != null) { + if (mentionContainer.getAdapter().getBotContextSwitch() != null || mentionContainer.getAdapter().getBotWebViewSwitch() != null) { maxHeight += 36; size -= 1; } @@ -13625,9 +13626,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } else { paddingBottom = keyboardSize <= AndroidUtilities.dp(20) && !AndroidUtilities.isInMultiwindow && !inBubbleMode ? chatActivityEnterView.getEmojiPadding() : 0; } - if (!SharedConfig.smoothKeyboard) { - setBottomClip(paddingBottom); - } for (int i = 0; i < count; i++) { final View child = getChildAt(i); @@ -13818,6 +13816,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not suggestEmojiPanel.forceClose(); } } else { + createEmptyView(); if (currentEncryptedChat == null || bigEmptyView == null) { bottomOverlay.setVisibility(View.INVISIBLE); if (suggestEmojiPanel != null && chatActivityEnterView != null && chatActivityEnterView.hasText()) { @@ -14965,7 +14964,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not object.viewX = coords[0]; object.viewY = coords[1] - (Build.VERSION.SDK_INT >= 21 ? 0 : AndroidUtilities.statusBarHeight); object.parentView = chatListView; - object.animatingImageView = !SharedConfig.smoothKeyboard && pagedownButton != null && pagedownButton.getTag() != null && view instanceof ChatMessageCell ? animatingImageView : null; + object.animatingImageView = null; object.imageReceiver = imageReceiver; if (needPreview) { object.thumb = imageReceiver.getBitmapSafe(); @@ -15123,7 +15122,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } private boolean isSkeletonVisible() { - if (justCreatedTopic || justCreatedChat || currentUser != null || chatListView == null || !SharedConfig.animationsEnabled() || !LiteMode.isEnabled(LiteMode.FLAG_CHAT_BACKGROUND)) { + if (justCreatedTopic || justCreatedChat || currentUser != null || chatListView == null || !SharedConfig.animationsEnabled() || !LiteMode.isEnabled(LiteMode.FLAGS_CHAT)) { return false; } int childHeight = 0; @@ -15497,6 +15496,12 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } firstLoading = false; + AndroidUtilities.runOnUIThread(() -> { + getNotificationCenter().runDelayedNotifications(); + resumeDelayedFragmentAnimation(); + AndroidUtilities.cancelRunOnUIThread(fragmentTransitionRunnable); + fragmentTransitionRunnable.run(); + }); } if (isThreadChat() && !isTopic && (load_type == 2 || load_type == 3) && !isCache) { @@ -16243,16 +16248,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } chatWasReset = false; - - if (isFirstLoading) { - AndroidUtilities.runOnUIThread(() -> { - resumeDelayedFragmentAnimation(); - - AndroidUtilities.cancelRunOnUIThread(fragmentTransitionRunnable); - fragmentTransitionRunnable.run(); - getNotificationCenter().runDelayedNotifications(); - }); - } } else if (id == NotificationCenter.invalidateMotionBackground) { if (chatListView != null) { chatListView.invalidateViews(); @@ -16361,18 +16356,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (chatActivityEnterView != null) { chatActivityEnterView.setDialogId(dialog_id, currentAccount); } - - if (currentEncryptedChat != null && SharedConfig.passcodeHash.length() == 0 && !SharedConfig.allowScreenCapture && unregisterFlagSecurePasscode == null) { - unregisterFlagSecurePasscode = AndroidUtilities.registerFlagSecure(getParentActivity().getWindow()); - } - if (fwdChanged) { - boolean value = getMessagesController().isChatNoForwards(currentChat); - if (!value && unregisterFlagSecureNoforwards != null) { - unregisterFlagSecureNoforwards.run(); - unregisterFlagSecureNoforwards = null; - } else if (value && unregisterFlagSecureNoforwards == null) { - unregisterFlagSecureNoforwards = AndroidUtilities.registerFlagSecure(getParentActivity().getWindow()); - } + if (flagSecure != null) { + flagSecure.invalidate(); } } if (avatarContainer != null && updateSubtitle) { @@ -17074,6 +17059,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } else if (id == NotificationCenter.messagePlayingDidStart) { MessageObject messageObject = (MessageObject) args[0]; + MessageObject oldPlayingObject = (MessageObject) args[1]; if (messageObject.eventId != 0) { return; } @@ -17082,7 +17068,19 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if ((messageObject.isRoundVideo() || messageObject.isVideo()) && fragmentView != null && fragmentView.getParent() != null) { if (!messageObject.isVoiceTranscriptionOpen()) { MediaController.getInstance().setTextureView(createTextureView(true), aspectRatioFrameLayout, videoPlayerContainer, true); - updateTextureViewPosition(true, true); + boolean needScroll = false; + if (oldPlayingObject != null) { + int index1 = messages.indexOf(oldPlayingObject); + int index2 = messages.indexOf(messageObject); + if (index1 >= 0 && index2 >= 0 && Math.abs(index1 - index2) < 5) { + needScroll = true; + } + } + updateTextureViewPosition(true, needScroll); + if (!needScroll) { + checkTextureViewPosition = true; + updateMessagesVisiblePart(false); + } } else { MediaController.getInstance().setTextureView(createTextureView(true), aspectRatioFrameLayout, videoPlayerContainer, true); } @@ -17985,6 +17983,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not checkThemeEmoticon(); if (chatActivityEnterView != null) { chatActivityEnterView.checkChannelRights(); + chatActivityEnterView.updateGiftButton(true); } if (headerItem != null) { showAudioCallAsIcon = userInfo.phone_calls_available && !inPreviewMode; @@ -18963,7 +18962,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } } - if (messageObject.wasJustSent && (getUserConfig().isPremium() || messageObject.isAnimatedAnimatedEmoji()) && !(SharedConfig.getDevicePerformanceClass() == SharedConfig.PERFORMANCE_CLASS_LOW || !LiteMode.isEnabled(LiteMode.FLAG_ANIMATED_STICKERS_CHAT))) { + if (messageObject.wasJustSent && (getUserConfig().isPremium() || messageObject.isAnimatedAnimatedEmoji()) && !(SharedConfig.getDevicePerformanceClass() == SharedConfig.PERFORMANCE_CLASS_LOW || !LiteMode.isEnabled(messageObject.isAnimatedAnimatedEmoji() ? LiteMode.FLAG_ANIMATED_EMOJI_CHAT : LiteMode.FLAG_ANIMATED_STICKERS_CHAT))) { messageObject.forcePlayEffect = true; } } @@ -20133,6 +20132,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not progressDialogCurrent.cancel(); progressDialogCurrent = null; } + + flagSecure.detach(); } public void saveKeyboardPositionBeforeTransition() { @@ -20203,9 +20204,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not @Override public void onTransitionAnimationEnd(boolean isOpen, boolean backward) { super.onTransitionAnimationEnd(isOpen, backward); - if (getParentLayout() instanceof LNavigation && ((LNavigation) getParentLayout()).doShowOpenChat()) { - Toast.makeText(getParentActivity(), "Opened chat fragment in " + (System.currentTimeMillis() - startMs) + "ms", Toast.LENGTH_SHORT).show(); - } if (isOpen) { if (backward) { if (showPinBulletin && pinBulletin != null) { @@ -20362,7 +20360,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not openAttachBotLayout(user.id, attachMenuBotStartCommand); } else { AttachBotIntroTopView introTopView = new AttachBotIntroTopView(getParentActivity()); - introTopView.setColor(Theme.getColor(Theme.key_chat_attachContactIcon)); + introTopView.setColor(Theme.getColor(Theme.key_chat_attachIcon)); introTopView.setBackgroundColor(Theme.getColor(Theme.key_dialogTopBackground)); introTopView.setAttachBot(attachMenuBot); @@ -22471,6 +22469,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not pullingDownOffset = 0; chatListView.invalidate(); } + + flagSecure.attach(); } public float getPullingDownOffset() { @@ -23199,7 +23199,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not final ArrayList options = new ArrayList<>(); View optionsView = null; - if (AndroidUtilities.isAccessibilityScreenReaderEnabled() && message.messageOwner != null && message.messageOwner.from_id.user_id != getUserConfig().clientUserId) { + if (AndroidUtilities.isAccessibilityScreenReaderEnabled() && message.messageOwner != null && message.messageOwner.from_id != null && message.messageOwner.from_id.user_id != getUserConfig().clientUserId) { items.add(LocaleController.getString(R.string.OpenProfile)); options.add(OPTION_OPEN_PROFILE); icons.add(R.drawable.msg_user_search); @@ -23745,10 +23745,11 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } else { isReactionsAvailable = !message.isSecretMedia() && !isSecretChat() && !isInScheduleMode() && message.isReactionsAvailable() && (chatInfo != null && !(chatInfo.available_reactions instanceof TLRPC.TL_chatReactionsNone) || (chatInfo == null && !ChatObject.isChannel(currentChat)) || currentUser != null) && !availableReacts.isEmpty(); } - boolean showMessageSeen = !isReactionsViewAvailable && !isInScheduleMode() && currentChat != null && message.isOutOwner() && message.isSent() && !message.isEditing() && !message.isSending() && !message.isSendError() && !message.isContentUnread() && !message.isUnread() && (ConnectionsManager.getInstance(currentAccount).getCurrentTime() - message.messageOwner.date < getMessagesController().chatReadMarkExpirePeriod) && (ChatObject.isMegagroup(currentChat) || !ChatObject.isChannel(currentChat)) && chatInfo != null && chatInfo.participants_count <= getMessagesController().chatReadMarkSizeThreshold && !(message.messageOwner.action instanceof TLRPC.TL_messageActionChatJoinedByRequest) && (v instanceof ChatMessageCell); + boolean showMessageSeen = !isReactionsViewAvailable && !isInScheduleMode() && currentChat != null && message.isOutOwner() && message.isSent() && !message.isEditing() && !message.isSending() && !message.isSendError() && !message.isContentUnread() && !message.isUnread() && (ConnectionsManager.getInstance(currentAccount).getCurrentTime() - message.messageOwner.date < getMessagesController().chatReadMarkExpirePeriod) && (ChatObject.isMegagroup(currentChat) || !ChatObject.isChannel(currentChat)) && !ChatObject.isForum(currentChat) && chatInfo != null && chatInfo.participants_count <= getMessagesController().chatReadMarkSizeThreshold && !(message.messageOwner.action instanceof TLRPC.TL_messageActionChatJoinedByRequest) && (v instanceof ChatMessageCell); + boolean showSponsorInfo = selectedObject != null && selectedObject.isSponsored() && (selectedObject.sponsoredInfo != null || selectedObject.sponsoredAdditionalInfo != null); int flags = 0; - if (isReactionsViewAvailable || showMessageSeen) { + if (isReactionsViewAvailable || showMessageSeen || showSponsorInfo) { flags |= ActionBarPopupWindow.ActionBarPopupWindowLayout.FLAG_USE_SWIPEBACK; } @@ -23776,7 +23777,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not ReactedUsersListView.ContainerLinerLayout linearLayout = new ReactedUsersListView.ContainerLinerLayout(contentView.getContext()); linearLayout.hasHeader = hasHeader; linearLayout.setOrientation(LinearLayout.VERTICAL); - linearLayout.setLayoutParams(new FrameLayout.LayoutParams(AndroidUtilities.dp(200), AndroidUtilities.dp(6 * 48 + (hasHeader ? 44 * 2 + 8 : 44)) + (!hasHeader ? 1 : 0))); + linearLayout.setLayoutParams(new FrameLayout.LayoutParams(AndroidUtilities.dp(200), AndroidUtilities.dp(6 * ReactedUsersListView.ITEM_HEIGHT_DP + (hasHeader ? 44 * 2 + 8 : 44)) + (!hasHeader ? 1 : 0))); ActionBarMenuSubItem backCell = new ActionBarMenuSubItem(getParentActivity(), true, false, themeDelegate); backCell.setItemHeight(44); backCell.setTextAndIcon(LocaleController.getString("Back", R.string.Back), R.drawable.msg_arrow_back); @@ -23952,9 +23953,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not }); linearLayout.addView(pager, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 0, 1f)); } else { - View gap = new FrameLayout(contentView.getContext()); - gap.setBackgroundColor(getThemedColor(Theme.key_actionBarDefaultSubmenuSeparator)); - linearLayout.addView(gap, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 8)); + linearLayout.addView(new ActionBarPopupWindow.GapView(contentView.getContext(), themeDelegate), LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 8)); reactedUsersListView = new ReactedUsersListView(contentView.getContext(), themeDelegate, currentAccount, message, null, false) .setSeenUsers(reactedView.getSeenUsers()) @@ -24015,6 +24014,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not RecyclerListView listView2 = finalMessageSeenView.createListView(); backContainer.addView(cell); linearLayout.addView(backContainer); + linearLayout.addView(new ActionBarPopupWindow.GapView(contentView.getContext(), themeDelegate), LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 8)); backContainer.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { @@ -24030,7 +24030,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (scrimPopupWindow == null || finalMessageSeenView.users.isEmpty()) { return; } - if (finalMessageSeenView.users.size() == 1) { + if (finalMessageSeenView.users.size() == 1 && (finalMessageSeenView.dates.size() <= 0 || finalMessageSeenView.dates.get(0) <= 0)) { TLRPC.User user = finalMessageSeenView.users.get(0); if (user == null) { return; @@ -24043,8 +24043,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not return; } - int totalHeight = contentView.getHeightWithKeyboard(); - if (SharedConfig.messageSeenHintCount > 0 && contentView.getKeyboardHeight() < AndroidUtilities.dp(20)) { messageSeenPrivacyBulletin = BulletinFactory.of(Bulletin.BulletinWindow.make(getContext()), themeDelegate).createErrorBulletin(AndroidUtilities.replaceTags(LocaleController.getString("MessageSeenTooltipMessage", R.string.MessageSeenTooltipMessage))); messageSeenPrivacyBulletin.setDuration(4000); @@ -24065,6 +24063,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (user == null) { return; } + closeMenu(true); Bundle args = new Bundle(); args.putLong("user_id", user.id); ProfileActivity fragment = new ProfileActivity(args); @@ -24203,38 +24202,127 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } final boolean translateButtonEnabled = MessagesController.getInstance(currentAccount).getTranslateController().isContextTranslateEnabled(); - scrimPopupWindowItems = new ActionBarMenuSubItem[items.size() + (selectedObject != null && selectedObject.isSponsored() ? 1 : 0)]; - for (int a = 0, N = items.size(); a < N; a++) { - if (a == 0 && selectedObject != null && selectedObject.isSponsored()) { + if (selectedObject != null && selectedObject.isSponsored()) { + if (selectedObject.sponsoredInfo != null || selectedObject.sponsoredAdditionalInfo != null) { + LinearLayout linearLayout = new LinearLayout(getParentActivity()); + linearLayout.setOrientation(LinearLayout.VERTICAL); + + ActionBarMenuSubItem backCell = new ActionBarMenuSubItem(getParentActivity(), true, false, themeDelegate); + backCell.setItemHeight(44); + backCell.setTextAndIcon(LocaleController.getString("Back", R.string.Back), R.drawable.msg_arrow_back); + backCell.getTextView().setPadding(LocaleController.isRTL ? 0 : AndroidUtilities.dp(40), 0, LocaleController.isRTL ? AndroidUtilities.dp(40) : 0, 0); + backCell.setOnClickListener(v1 -> popupLayout.getSwipeBack().closeForeground()); + linearLayout.addView(backCell, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); + + linearLayout.addView(new ActionBarPopupWindow.GapView(contentView.getContext(), themeDelegate), LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 8)); + + if (selectedObject.sponsoredInfo != null) { + TextView textView = new TextView(getParentActivity()); + textView.setTextColor(getThemedColor(Theme.key_actionBarDefaultSubmenuItem)); + textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); + textView.setPadding(AndroidUtilities.dp(18), AndroidUtilities.dp(10), AndroidUtilities.dp(18), AndroidUtilities.dp(10)); + textView.setMaxWidth(AndroidUtilities.dp(300)); + textView.setText(selectedObject.sponsoredInfo); + textView.setBackground(Theme.createRadSelectorDrawable(getThemedColor(Theme.key_listSelector), 0, selectedObject.sponsoredAdditionalInfo == null ? 6 : 0)); + textView.setOnClickListener(e -> { + if (AndroidUtilities.addToClipboard(selectedObject.sponsoredInfo)) { + BulletinFactory.of(Bulletin.BulletinWindow.make(getParentActivity()), themeDelegate).createCopyBulletin(LocaleController.getString("TextCopied", R.string.TextCopied)).show(); + } + }); + linearLayout.addView(textView, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); + } + + if (selectedObject.sponsoredInfo != null && selectedObject.sponsoredAdditionalInfo != null) { + FrameLayout separator = new FrameLayout(getParentActivity()); + separator.setBackgroundColor(getThemedColor(Theme.key_divider)); + LinearLayout.LayoutParams params = LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 1); + params.height = 1; + linearLayout.addView(separator, params); + } + + if (selectedObject.sponsoredAdditionalInfo != null) { + TextView textView = new TextView(getParentActivity()); + textView.setTextColor(getThemedColor(Theme.key_actionBarDefaultSubmenuItem)); + textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); + textView.setPadding(AndroidUtilities.dp(18), AndroidUtilities.dp(10), AndroidUtilities.dp(18), AndroidUtilities.dp(10)); + textView.setMaxWidth(AndroidUtilities.dp(300)); + textView.setText(selectedObject.sponsoredAdditionalInfo); + textView.setBackground(Theme.createRadSelectorDrawable(getThemedColor(Theme.key_listSelector), 0, 6)); + textView.setOnClickListener(e -> { + if (AndroidUtilities.addToClipboard(selectedObject.sponsoredAdditionalInfo)) { + BulletinFactory.of(Bulletin.BulletinWindow.make(getParentActivity()), themeDelegate).createCopyBulletin(LocaleController.getString("TextCopied", R.string.TextCopied)).show(); + } + }); + linearLayout.addView(textView, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); + } + + final int foregroundIndex = popupLayout.addViewToSwipeBack(linearLayout); + ActionBarMenuSubItem cell = new ActionBarMenuSubItem(getParentActivity(), true, true, themeDelegate); - cell.setTextAndIcon(LocaleController.getString("SponsoredMessageInfo", R.string.SponsoredMessageInfo), R.drawable.msg_info); - cell.setItemHeight(56); - cell.setTag(R.id.width_tag, 240); - cell.setMultiline(); - scrimPopupWindowItems[scrimPopupWindowItems.length - 1] = cell; + cell.setTextAndIcon(LocaleController.getString("SponsoredMessageSponsor", R.string.SponsoredMessageSponsor), R.drawable.msg_channel); popupLayout.addView(cell); cell.setOnClickListener(v1 -> { if (contentView == null || getParentActivity() == null) { return; } - BottomSheet.Builder builder = new BottomSheet.Builder(contentView.getContext()); - builder.setCustomView(new SponsoredMessageInfoView(getParentActivity(), themeDelegate)); - builder.show(); + popupLayout.getSwipeBack().openForeground(foregroundIndex); }); - - View gap = new View(getParentActivity()); - gap.setMinimumWidth(AndroidUtilities.dp(196)); - gap.setTag(1000); - gap.setTag(R.id.object_tag, 1); - popupLayout.addView(gap); - LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) cell.getLayoutParams(); - if (LocaleController.isRTL) { - layoutParams.gravity = Gravity.RIGHT; - } - layoutParams.width = LayoutHelper.MATCH_PARENT; - layoutParams.height = AndroidUtilities.dp(6); - gap.setLayoutParams(layoutParams); + popupLayout.addView(new ActionBarPopupWindow.GapView(contentView.getContext(), themeDelegate), LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 8)); } + + FrameLayout sponsoredAbout = new FrameLayout(getParentActivity()) { + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + } + }; + sponsoredAbout.setMinimumHeight(AndroidUtilities.dp(56)); + sponsoredAbout.setBackground(Theme.createRadSelectorDrawable(getThemedColor(Theme.key_dialogButtonSelector), popupLayout.getItemsCount() <= 0 ? 6 : 0, 0)); + sponsoredAbout.setPadding(AndroidUtilities.dp(18), 0, AndroidUtilities.dp(18), 0); + + ImageView infoImage = new ImageView(getParentActivity()); + infoImage.setScaleType(ImageView.ScaleType.CENTER); + infoImage.setColorFilter(new PorterDuffColorFilter(getThemedColor(Theme.key_actionBarDefaultSubmenuItemIcon), PorterDuff.Mode.MULTIPLY)); + infoImage.setImageResource(R.drawable.msg_info); + sponsoredAbout.addView(infoImage, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, 40, Gravity.CENTER_VERTICAL | (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT))); + + TextView infoText = new TextView(getParentActivity()) { + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + if (MeasureSpec.getMode(widthMeasureSpec) == MeasureSpec.AT_MOST && getLayout() != null) { + Layout layout = getLayout(); + int width = 0; + for (int i = 0; i < layout.getLineCount(); ++i) { + width = Math.max(width, (int) layout.getLineWidth(i)); + } + widthMeasureSpec = MeasureSpec.makeMeasureSpec(getPaddingLeft() + width + getPaddingRight(), MeasureSpec.EXACTLY); + } + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + } + }; + infoText.setMaxLines(3); + infoText.setGravity(Gravity.LEFT); + infoText.setEllipsize(TextUtils.TruncateAt.END); + infoText.setTextColor(getThemedColor(Theme.key_actionBarDefaultSubmenuItem)); + infoText.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); + infoText.setMaxWidth(AndroidUtilities.dp(240)); + infoText.setText(LocaleController.getString("SponsoredMessageInfo", R.string.SponsoredMessageInfo).replace('\n', ' ')); + infoText.setPadding(LocaleController.isRTL ? 0 : AndroidUtilities.dp(43), 0, LocaleController.isRTL ? AndroidUtilities.dp(43) : 0, 0); + sponsoredAbout.addView(infoText, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.CENTER_VERTICAL)); + + popupLayout.addView(sponsoredAbout); + sponsoredAbout.setOnClickListener(v1 -> { + if (contentView == null || getParentActivity() == null) { + return; + } + BottomSheet.Builder builder = new BottomSheet.Builder(contentView.getContext()); + builder.setCustomView(new SponsoredMessageInfoView(getParentActivity(), themeDelegate)); + builder.show(); + }); + popupLayout.addView(new ActionBarPopupWindow.GapView(contentView.getContext(), themeDelegate), LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 8)); + } + scrimPopupWindowItems = new ActionBarMenuSubItem[items.size()]; + for (int a = 0, N = items.size(); a < N; a++) { ActionBarMenuSubItem cell = new ActionBarMenuSubItem(getParentActivity(), a == 0, a == N - 1, themeDelegate); cell.setMinimumWidth(AndroidUtilities.dp(200)); cell.setTextAndIcon(items.get(a), icons.get(a)); @@ -30145,12 +30233,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, Theme.chat_gamePaint, null, null, Theme.key_chat_previewGameText)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_inPreviewInstantText)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_outPreviewInstantText)); - themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_inPreviewInstantSelectedText)); - themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_outPreviewInstantSelectedText)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, Theme.chat_deleteProgressPaint, null, null, Theme.key_chat_secretTimeText)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_stickerNameText)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, getThemedPaint(Theme.key_paint_chatBotButton), null, null, Theme.key_chat_botButtonText)); - themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, Theme.chat_botProgressPaint, null, null, Theme.key_chat_botProgress)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, getThemedPaint(Theme.key_paint_chatTimeBackground), null, null, Theme.key_chat_mediaTimeBackground)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_inForwardedNameText)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_outForwardedNameText)); @@ -30250,27 +30335,12 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_inMediaIcon)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_inLoaderSelected)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_inMediaIconSelected)); - themeDescriptions.add(new ThemeDescription(chatListView, ThemeDescription.FLAG_BACKGROUNDFILTER, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[0][0], Theme.chat_photoStatesDrawables[1][0], Theme.chat_photoStatesDrawables[2][0], Theme.chat_photoStatesDrawables[3][0]}, null, Theme.key_chat_mediaLoaderPhoto)); - themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[0][0], Theme.chat_photoStatesDrawables[1][0], Theme.chat_photoStatesDrawables[2][0], Theme.chat_photoStatesDrawables[3][0]}, null, Theme.key_chat_mediaLoaderPhotoIcon)); - themeDescriptions.add(new ThemeDescription(chatListView, ThemeDescription.FLAG_BACKGROUNDFILTER, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[0][1], Theme.chat_photoStatesDrawables[1][1], Theme.chat_photoStatesDrawables[2][1], Theme.chat_photoStatesDrawables[3][1]}, null, Theme.key_chat_mediaLoaderPhotoSelected)); - themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[0][1], Theme.chat_photoStatesDrawables[1][1], Theme.chat_photoStatesDrawables[2][1], Theme.chat_photoStatesDrawables[3][1]}, null, Theme.key_chat_mediaLoaderPhotoIconSelected)); - themeDescriptions.add(new ThemeDescription(chatListView, ThemeDescription.FLAG_BACKGROUNDFILTER, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[7][0], Theme.chat_photoStatesDrawables[8][0]}, null, Theme.key_chat_outLoaderPhoto)); - themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[7][0], Theme.chat_photoStatesDrawables[8][0]}, null, Theme.key_chat_outLoaderPhotoIcon)); - themeDescriptions.add(new ThemeDescription(chatListView, ThemeDescription.FLAG_BACKGROUNDFILTER, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[7][1], Theme.chat_photoStatesDrawables[8][1]}, null, Theme.key_chat_outLoaderPhotoSelected)); - themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[7][1], Theme.chat_photoStatesDrawables[8][1]}, null, Theme.key_chat_outLoaderPhotoIconSelected)); - themeDescriptions.add(new ThemeDescription(chatListView, ThemeDescription.FLAG_BACKGROUNDFILTER, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[10][0], Theme.chat_photoStatesDrawables[11][0]}, null, Theme.key_chat_inLoaderPhoto)); - themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[10][0], Theme.chat_photoStatesDrawables[11][0]}, null, Theme.key_chat_inLoaderPhotoIcon)); - themeDescriptions.add(new ThemeDescription(chatListView, ThemeDescription.FLAG_BACKGROUNDFILTER, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[10][1], Theme.chat_photoStatesDrawables[11][1]}, null, Theme.key_chat_inLoaderPhotoSelected)); - themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[10][1], Theme.chat_photoStatesDrawables[11][1]}, null, Theme.key_chat_inLoaderPhotoIconSelected)); - themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[12][0]}, null, Theme.key_chat_inFileIcon)); - themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_photoStatesDrawables[12][1]}, null, Theme.key_chat_inFileSelectedIcon)); themeDescriptions.add(new ThemeDescription(chatListView, ThemeDescription.FLAG_BACKGROUNDFILTER, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_contactDrawable[0]}, null, Theme.key_chat_inContactBackground)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_contactDrawable[0]}, null, Theme.key_chat_inContactIcon)); themeDescriptions.add(new ThemeDescription(chatListView, ThemeDescription.FLAG_BACKGROUNDFILTER, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_contactDrawable[1]}, null, Theme.key_chat_outContactBackground)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_contactDrawable[1]}, null, Theme.key_chat_outContactIcon)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_inLocationBackground)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_locationDrawable[0]}, null, Theme.key_chat_inLocationIcon)); - themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_outLocationBackground)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, new Drawable[]{Theme.chat_locationDrawable[1]}, null, Theme.key_chat_outLocationIcon)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_inPollCorrectAnswer)); themeDescriptions.add(new ThemeDescription(chatListView, 0, new Class[]{ChatMessageCell.class}, null, null, null, Theme.key_chat_outPollCorrectAnswer)); @@ -30327,7 +30397,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not themeDescriptions.add(new ThemeDescription(chatActivityEnterView, ThemeDescription.FLAG_USEBACKGROUNDDRAWABLE | ThemeDescription.FLAG_DRAWABLESELECTEDSTATE, new Class[]{ChatActivityEnterView.class}, new String[]{"attachButton"}, null, null, null, Theme.key_listSelector)); // themeDescriptions.add(new ThemeDescription(chatActivityEnterView, 0, new Class[]{ChatActivityEnterView.class}, new String[]{"audioSendButton"}, null, null, null, Theme.key_chat_messagePanelIcons)); // themeDescriptions.add(new ThemeDescription(chatActivityEnterView, 0, new Class[]{ChatActivityEnterView.class}, new String[]{"videoSendButton"}, null, null, null, Theme.key_chat_messagePanelIcons)); - themeDescriptions.add(new ThemeDescription(chatActivityEnterView, 0, new Class[]{ChatActivityEnterView.class}, new String[]{"notifyButton"}, null, null, null, Theme.key_chat_messagePanelVideoFrame)); themeDescriptions.add(new ThemeDescription(chatActivityEnterView, ThemeDescription.FLAG_USEBACKGROUNDDRAWABLE | ThemeDescription.FLAG_DRAWABLESELECTEDSTATE, new Class[]{ChatActivityEnterView.class}, new String[]{"notifyButton"}, null, null, null, Theme.key_listSelector)); themeDescriptions.add(new ThemeDescription(chatActivityEnterView, 0, new Class[]{ChatActivityEnterView.class}, new String[]{"videoTimelineView"}, null, null, null, Theme.key_chat_messagePanelSend)); //themeDescriptions.add(new ThemeDescription(chatActivityEnterView, ThemeDescription.FLAG_IMAGECOLOR, new Class[]{ChatActivityEnterView.class}, new String[]{"doneButtonImage"}, null, null, null, Theme.key_chat_messagePanelBackground)); @@ -30363,8 +30432,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not themeDescriptions.add(new ThemeDescription(chatActivityEnterView != null ? chatActivityEnterView.getEmojiView() : null, 0, new Class[]{EmojiView.class}, null, null, null, selectedBackgroundDelegate, Theme.key_chat_emojiPanelBackspace)); themeDescriptions.add(new ThemeDescription(chatActivityEnterView != null ? chatActivityEnterView.getEmojiView() : null, 0, new Class[]{EmojiView.class}, null, null, null, selectedBackgroundDelegate, Theme.key_chat_emojiPanelTrendingTitle)); themeDescriptions.add(new ThemeDescription(chatActivityEnterView != null ? chatActivityEnterView.getEmojiView() : null, 0, new Class[]{EmojiView.class}, null, null, null, selectedBackgroundDelegate, Theme.key_chat_emojiPanelTrendingDescription)); - themeDescriptions.add(new ThemeDescription(chatActivityEnterView != null ? chatActivityEnterView.getEmojiView() : null, 0, new Class[]{EmojiView.class}, null, null, null, selectedBackgroundDelegate, Theme.key_chat_emojiPanelBadgeText)); - themeDescriptions.add(new ThemeDescription(chatActivityEnterView != null ? chatActivityEnterView.getEmojiView() : null, 0, new Class[]{EmojiView.class}, null, null, null, selectedBackgroundDelegate, Theme.key_chat_emojiPanelBadgeBackground)); themeDescriptions.add(new ThemeDescription(chatActivityEnterView != null ? chatActivityEnterView.getEmojiView() : null, 0, new Class[]{EmojiView.class}, null, null, null, selectedBackgroundDelegate, Theme.key_chat_emojiBottomPanelIcon)); themeDescriptions.add(new ThemeDescription(chatActivityEnterView != null ? chatActivityEnterView.getEmojiView() : null, 0, new Class[]{EmojiView.class}, null, null, null, selectedBackgroundDelegate, Theme.key_chat_emojiSearchIcon)); themeDescriptions.add(new ThemeDescription(chatActivityEnterView != null ? chatActivityEnterView.getEmojiView() : null, 0, new Class[]{EmojiView.class}, null, null, null, selectedBackgroundDelegate, Theme.key_chat_emojiPanelStickerSetNameHighlight)); @@ -30483,8 +30550,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not themeDescriptions.add(new ThemeDescription(gifHintTextView, ThemeDescription.FLAG_BACKGROUNDFILTER, null, null, null, null, Theme.key_chat_gifSaveHintBackground)); themeDescriptions.add(new ThemeDescription(gifHintTextView, ThemeDescription.FLAG_TEXTCOLOR, null, null, null, null, Theme.key_chat_gifSaveHintText)); - themeDescriptions.add(new ThemeDescription(null, 0, null, null, null, selectedBackgroundDelegate, Theme.key_chat_attachMediaBanBackground)); - themeDescriptions.add(new ThemeDescription(null, 0, null, null, null, selectedBackgroundDelegate, Theme.key_chat_attachMediaBanText)); themeDescriptions.add(new ThemeDescription(noSoundHintView, ThemeDescription.FLAG_TEXTCOLOR, new Class[]{HintView.class}, new String[]{"textView"}, null, null, null, Theme.key_chat_gifSaveHintText)); themeDescriptions.add(new ThemeDescription(noSoundHintView, ThemeDescription.FLAG_IMAGECOLOR, new Class[]{HintView.class}, new String[]{"imageView"}, null, null, null, Theme.key_chat_gifSaveHintText)); @@ -30496,39 +30561,34 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not themeDescriptions.add(new ThemeDescription(pagedownButtonCounter, ThemeDescription.FLAG_BACKGROUNDFILTER, null, null, null, null, Theme.key_chat_goDownButtonCounterBackground)); themeDescriptions.add(new ThemeDescription(pagedownButtonCounter, ThemeDescription.FLAG_TEXTCOLOR, null, null, null, null, Theme.key_chat_goDownButtonCounter)); themeDescriptions.add(new ThemeDescription(pagedownButtonImage, ThemeDescription.FLAG_BACKGROUNDFILTER, null, null, null, null, Theme.key_chat_goDownButton)); - themeDescriptions.add(new ThemeDescription(pagedownButtonImage, ThemeDescription.FLAG_BACKGROUNDFILTER | ThemeDescription.FLAG_DRAWABLESELECTEDSTATE, null, null, null, null, Theme.key_chat_goDownButtonShadow)); themeDescriptions.add(new ThemeDescription(pagedownButtonImage, ThemeDescription.FLAG_IMAGECOLOR, null, null, null, null, Theme.key_chat_goDownButtonIcon)); themeDescriptions.add(new ThemeDescription(mentiondownButtonCounter, ThemeDescription.FLAG_BACKGROUNDFILTER, null, null, null, null, Theme.key_chat_goDownButtonCounterBackground)); themeDescriptions.add(new ThemeDescription(mentiondownButtonCounter, ThemeDescription.FLAG_TEXTCOLOR, null, null, null, null, Theme.key_chat_goDownButtonCounter)); themeDescriptions.add(new ThemeDescription(mentiondownButtonImage, ThemeDescription.FLAG_BACKGROUNDFILTER, null, null, null, null, Theme.key_chat_goDownButton)); - themeDescriptions.add(new ThemeDescription(mentiondownButtonImage, ThemeDescription.FLAG_BACKGROUNDFILTER | ThemeDescription.FLAG_DRAWABLESELECTEDSTATE, null, null, null, null, Theme.key_chat_goDownButtonShadow)); themeDescriptions.add(new ThemeDescription(mentiondownButtonImage, ThemeDescription.FLAG_IMAGECOLOR, null, null, null, null, Theme.key_chat_goDownButtonIcon)); - themeDescriptions.add(new ThemeDescription(avatarContainer != null ? avatarContainer.getTimeItem() : null, 0, null, null, null, null, Theme.key_chat_secretTimerBackground)); - themeDescriptions.add(new ThemeDescription(avatarContainer != null ? avatarContainer.getTimeItem() : null, 0, null, null, null, null, Theme.key_chat_secretTimerText)); - themeDescriptions.add(new ThemeDescription(floatingDateView, 0, null, null, null, null, Theme.key_chat_serviceText)); themeDescriptions.add(new ThemeDescription(floatingDateView, 0, null, null, null, null, Theme.key_chat_serviceBackground)); themeDescriptions.add(new ThemeDescription(infoTopView, 0, null, null, null, null, Theme.key_chat_serviceText)); themeDescriptions.add(new ThemeDescription(infoTopView, 0, null, null, null, null, Theme.key_chat_serviceBackground)); - themeDescriptions.add(new ThemeDescription(null, 0, null, null, null, selectedBackgroundDelegate, Theme.key_chat_attachGalleryIcon)); + themeDescriptions.add(new ThemeDescription(null, 0, null, null, null, selectedBackgroundDelegate, Theme.key_chat_attachIcon)); themeDescriptions.add(new ThemeDescription(null, 0, null, null, null, selectedBackgroundDelegate, Theme.key_chat_attachGalleryBackground)); themeDescriptions.add(new ThemeDescription(null, 0, null, null, null, selectedBackgroundDelegate, Theme.key_chat_attachGalleryText)); - themeDescriptions.add(new ThemeDescription(null, 0, null, null, null, selectedBackgroundDelegate, Theme.key_chat_attachAudioIcon)); + themeDescriptions.add(new ThemeDescription(null, 0, null, null, null, selectedBackgroundDelegate, Theme.key_chat_attachIcon)); themeDescriptions.add(new ThemeDescription(null, 0, null, null, null, selectedBackgroundDelegate, Theme.key_chat_attachAudioBackground)); themeDescriptions.add(new ThemeDescription(null, 0, null, null, null, selectedBackgroundDelegate, Theme.key_chat_attachAudioText)); - themeDescriptions.add(new ThemeDescription(null, 0, null, null, null, selectedBackgroundDelegate, Theme.key_chat_attachFileIcon)); + themeDescriptions.add(new ThemeDescription(null, 0, null, null, null, selectedBackgroundDelegate, Theme.key_chat_attachIcon)); themeDescriptions.add(new ThemeDescription(null, 0, null, null, null, selectedBackgroundDelegate, Theme.key_chat_attachFileBackground)); themeDescriptions.add(new ThemeDescription(null, 0, null, null, null, selectedBackgroundDelegate, Theme.key_chat_attachFileText)); - themeDescriptions.add(new ThemeDescription(null, 0, null, null, null, selectedBackgroundDelegate, Theme.key_chat_attachContactIcon)); + themeDescriptions.add(new ThemeDescription(null, 0, null, null, null, selectedBackgroundDelegate, Theme.key_chat_attachIcon)); themeDescriptions.add(new ThemeDescription(null, 0, null, null, null, selectedBackgroundDelegate, Theme.key_chat_attachContactBackground)); themeDescriptions.add(new ThemeDescription(null, 0, null, null, null, selectedBackgroundDelegate, Theme.key_chat_attachContactText)); - themeDescriptions.add(new ThemeDescription(null, 0, null, null, null, selectedBackgroundDelegate, Theme.key_chat_attachLocationIcon)); + themeDescriptions.add(new ThemeDescription(null, 0, null, null, null, selectedBackgroundDelegate, Theme.key_chat_attachIcon)); themeDescriptions.add(new ThemeDescription(null, 0, null, null, null, selectedBackgroundDelegate, Theme.key_chat_attachLocationBackground)); themeDescriptions.add(new ThemeDescription(null, 0, null, null, null, selectedBackgroundDelegate, Theme.key_chat_attachLocationText)); - themeDescriptions.add(new ThemeDescription(null, 0, null, null, null, selectedBackgroundDelegate, Theme.key_chat_attachPollIcon)); + themeDescriptions.add(new ThemeDescription(null, 0, null, null, null, selectedBackgroundDelegate, Theme.key_chat_attachIcon)); themeDescriptions.add(new ThemeDescription(null, 0, null, null, null, selectedBackgroundDelegate, Theme.key_chat_attachPollBackground)); themeDescriptions.add(new ThemeDescription(null, 0, null, null, null, selectedBackgroundDelegate, Theme.key_chat_attachPollText)); themeDescriptions.add(new ThemeDescription(null, 0, null, null, new Drawable[]{Theme.chat_attachEmptyDrawable}, null, Theme.key_chat_attachEmptyImage)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatLinkActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatLinkActivity.java index b6a144b84..8e151648b 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatLinkActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatLinkActivity.java @@ -465,7 +465,7 @@ public class ChatLinkActivity extends BaseFragment implements NotificationCenter showDialog(dialog); TextView button = (TextView) dialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatRightsEditActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatRightsEditActivity.java index 9e2f0ddbe..394369094 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatRightsEditActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatRightsEditActivity.java @@ -1020,7 +1020,7 @@ public class ChatRightsEditActivity extends BaseFragment { }), ConnectionsManager.RequestFlagWithoutLogin); } else if (error.text.equals("CHANNELS_TOO_MUCH")) { if (getParentActivity() != null && !AccountInstance.getInstance(currentAccount).getUserConfig().isPremium()) { - showDialog(new LimitReachedBottomSheet(this, getParentActivity(), LimitReachedBottomSheet.TYPE_TO_MANY_COMMUNITIES, currentAccount)); + showDialog(new LimitReachedBottomSheet(this, getParentActivity(), LimitReachedBottomSheet.TYPE_TO0_MANY_COMMUNITIES, currentAccount)); } else { presentFragment(new TooManyCommunitiesActivity(TooManyCommunitiesActivity.TYPE_EDIT)); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatUsersActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatUsersActivity.java index c404ae3c9..09abbaa09 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatUsersActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatUsersActivity.java @@ -34,7 +34,6 @@ import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import org.telegram.messenger.AndroidUtilities; -import org.telegram.messenger.ApplicationLoader; import org.telegram.messenger.BotWebViewVibrationEffect; import org.telegram.messenger.ChatObject; import org.telegram.messenger.FileLog; @@ -859,79 +858,34 @@ public class ChatUsersActivity extends BaseFragment implements NotificationCente if (fragment.getParentActivity() == null) { return; } - final int count = users.size(); - final int[] processed = new int[1]; - final ArrayList userRestrictedPrivacy = new ArrayList<>(); - processed[0] = 0; - final Runnable showUserRestrictedPrivacyAlert = () -> { - CharSequence title, description; - if (userRestrictedPrivacy.size() == 1) { - if (count > 1) { - title = LocaleController.getString("InviteToGroupErrorTitleAUser", R.string.InviteToGroupErrorTitleAUser); + getMessagesController().addUsersToChat(currentChat, ChatUsersActivity.this, users, fwdCount, user -> { + ChatUsersActivity.DiffCallback savedState = saveState(); + ArrayList array = contactsMap != null && contactsMap.size() != 0 ? contacts : participants; + LongSparseArray map = contactsMap != null && contactsMap.size() != 0 ? contactsMap : participantsMap; + if (map.get(user.id) == null) { + if (ChatObject.isChannel(currentChat)) { + TLRPC.TL_channelParticipant channelParticipant1 = new TLRPC.TL_channelParticipant(); + channelParticipant1.inviter_id = getUserConfig().getClientUserId(); + channelParticipant1.peer = new TLRPC.TL_peerUser(); + channelParticipant1.peer.user_id = user.id; + channelParticipant1.date = getConnectionsManager().getCurrentTime(); + array.add(0, channelParticipant1); + map.put(user.id, channelParticipant1); } else { - title = LocaleController.getString("InviteToGroupErrorTitleThisUser", R.string.InviteToGroupErrorTitleThisUser); + TLRPC.ChatParticipant participant = new TLRPC.TL_chatParticipant(); + participant.user_id = user.id; + participant.inviter_id = getUserConfig().getClientUserId(); + array.add(0, participant); + map.put(user.id, participant); } - description = AndroidUtilities.replaceTags(LocaleController.formatString("InviteToGroupErrorMessageSingle", R.string.InviteToGroupErrorMessageSingle, UserObject.getFirstName(userRestrictedPrivacy.get(0)))); - } else if (userRestrictedPrivacy.size() == 2) { - title = LocaleController.getString("InviteToGroupErrorTitleSomeUsers", R.string.InviteToGroupErrorTitleSomeUsers); - description = AndroidUtilities.replaceTags(LocaleController.formatString("InviteToGroupErrorMessageDouble", R.string.InviteToGroupErrorMessageDouble, UserObject.getFirstName(userRestrictedPrivacy.get(0)), UserObject.getFirstName(userRestrictedPrivacy.get(1)))); - } else if (userRestrictedPrivacy.size() == count) { - title = LocaleController.getString("InviteToGroupErrorTitleTheseUsers", R.string.InviteToGroupErrorTitleTheseUsers); - description = LocaleController.getString("InviteToGroupErrorMessageMultipleAll", R.string.InviteToGroupErrorMessageMultipleAll); - } else { - title = LocaleController.getString("InviteToGroupErrorTitleSomeUsers", R.string.InviteToGroupErrorTitleSomeUsers); - description = LocaleController.getString("InviteToGroupErrorMessageMultipleSome", R.string.InviteToGroupErrorMessageMultipleSome); } - new AlertDialog.Builder(fragment.getParentActivity()) - .setTitle(title) - .setMessage(description) - .setPositiveButton(LocaleController.getString("OK", R.string.OK), null) - .show(); - }; - for (int a = 0; a < count; a++) { - final TLRPC.User user = users.get(a); - getMessagesController().addUserToChat(chatId, user, fwdCount, null, ChatUsersActivity.this, false, () -> { - processed[0]++; - if (processed[0] >= count && userRestrictedPrivacy.size() > 0) { - showUserRestrictedPrivacyAlert.run(); - } - DiffCallback savedState = saveState(); - ArrayList array = contactsMap != null && contactsMap.size() != 0 ? contacts : participants; - LongSparseArray map = contactsMap != null && contactsMap.size() != 0 ? contactsMap : participantsMap; - if (map.get(user.id) == null) { - if (ChatObject.isChannel(currentChat)) { - TLRPC.TL_channelParticipant channelParticipant1 = new TLRPC.TL_channelParticipant(); - channelParticipant1.inviter_id = getUserConfig().getClientUserId(); - channelParticipant1.peer = new TLRPC.TL_peerUser(); - channelParticipant1.peer.user_id = user.id; - channelParticipant1.date = getConnectionsManager().getCurrentTime(); - array.add(0, channelParticipant1); - map.put(user.id, channelParticipant1); - } else { - TLRPC.ChatParticipant participant = new TLRPC.TL_chatParticipant(); - participant.user_id = user.id; - participant.inviter_id = getUserConfig().getClientUserId(); - array.add(0, participant); - map.put(user.id, participant); - } - } - if (array == participants) { - sortAdmins(participants); - } - updateListAnimated(savedState); - }, err -> { - processed[0]++; - boolean privacyRestricted; - if (privacyRestricted = err != null && "USER_PRIVACY_RESTRICTED".equals(err.text)) { - userRestrictedPrivacy.add(user); - } - if (processed[0] >= count && userRestrictedPrivacy.size() > 0) { - showUserRestrictedPrivacyAlert.run(); - } - return !privacyRestricted; - }); - getMessagesController().putUser(user, false); - } + if (array == participants) { + sortAdmins(participants); + } + updateListAnimated(savedState); + }, user -> { + + }, null); } @Override @@ -1804,7 +1758,7 @@ public class ChatUsersActivity extends BaseFragment implements NotificationCente AlertDialog alertDialog = builder.create(); showDialog(alertDialog); if (hasRemove) { - alertDialog.setItemColor(items.size() - 1, Theme.getColor(Theme.key_dialogTextRed2), Theme.getColor(Theme.key_dialogRedIcon)); + alertDialog.setItemColor(items.size() - 1, Theme.getColor(Theme.key_dialogTextRed), Theme.getColor(Theme.key_dialogRedIcon)); } } else { CharSequence[] items; @@ -1947,7 +1901,7 @@ public class ChatUsersActivity extends BaseFragment implements NotificationCente AlertDialog alertDialog = builder.create(); showDialog(alertDialog); if (type == TYPE_ADMIN) { - alertDialog.setItemColor(items.length - 1, Theme.getColor(Theme.key_dialogTextRed2), Theme.getColor(Theme.key_dialogRedIcon)); + alertDialog.setItemColor(items.length - 1, Theme.getColor(Theme.key_dialogTextRed), Theme.getColor(Theme.key_dialogRedIcon)); } } return true; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChooseSpeedLayout.java b/TMessagesProj/src/main/java/org/telegram/ui/ChooseSpeedLayout.java index b4a3160d3..de2350010 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChooseSpeedLayout.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChooseSpeedLayout.java @@ -1,17 +1,34 @@ package org.telegram.ui; import android.content.Context; +import android.view.Gravity; +import android.view.View; +import android.widget.FrameLayout; +import android.widget.LinearLayout; +import androidx.core.graphics.ColorUtils; +import androidx.core.math.MathUtils; + +import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.LocaleController; +import org.telegram.messenger.MediaController; import org.telegram.messenger.R; import org.telegram.ui.ActionBar.ActionBarMenuItem; +import org.telegram.ui.ActionBar.ActionBarMenuSlider; import org.telegram.ui.ActionBar.ActionBarMenuSubItem; import org.telegram.ui.ActionBar.ActionBarPopupWindow; +import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.Components.LayoutHelper; import org.telegram.ui.Components.PopupSwipeBackLayout; +import org.telegram.ui.Components.SpeedIconDrawable; public class ChooseSpeedLayout { ActionBarPopupWindow.ActionBarPopupWindowLayout speedSwipeBackLayout; + ActionBarMenuSlider.SpeedSlider slider; + + private static final float MIN_SPEED = 0.2f; + private static final float MAX_SPEED = 2.5f; ActionBarMenuSubItem[] speedItems = new ActionBarMenuSubItem[5]; public ChooseSpeedLayout(Context context, PopupSwipeBackLayout swipeBackLayout, Callback callback) { @@ -25,10 +42,55 @@ public class ChooseSpeedLayout { backItem.setColors(0xfffafafa, 0xfffafafa); backItem.setSelectorColor(0x0fffffff); + FrameLayout gap = new FrameLayout(context) { + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + } + }; + gap.setMinimumWidth(AndroidUtilities.dp(196)); + gap.setBackgroundColor(0xff181818); + speedSwipeBackLayout.addView(gap); + LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) gap.getLayoutParams(); + if (LocaleController.isRTL) { + layoutParams.gravity = Gravity.RIGHT; + } + layoutParams.width = LayoutHelper.MATCH_PARENT; + layoutParams.height = AndroidUtilities.dp(8); + gap.setLayoutParams(layoutParams); + + slider = new ActionBarMenuSlider.SpeedSlider(context, null); + slider.setMinimumWidth(AndroidUtilities.dp(196)); + slider.setDrawShadow(false); + slider.setBackgroundColor(0xff222222); + slider.setTextColor(0xffffffff); + slider.setOnValueChange((value, isFinal) -> { + final float speed = MIN_SPEED + (MAX_SPEED - MIN_SPEED) * value; + callback.onSpeedSelected(speed, isFinal, false); + }); + speedSwipeBackLayout.addView(slider, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 44)); + + gap = new FrameLayout(context) { + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + } + }; + gap.setMinimumWidth(AndroidUtilities.dp(196)); + gap.setBackgroundColor(0xff181818); + speedSwipeBackLayout.addView(gap); + layoutParams = (LinearLayout.LayoutParams) gap.getLayoutParams(); + if (LocaleController.isRTL) { + layoutParams.gravity = Gravity.RIGHT; + } + layoutParams.width = LayoutHelper.MATCH_PARENT; + layoutParams.height = AndroidUtilities.dp(8); + gap.setLayoutParams(layoutParams); + ActionBarMenuSubItem item = ActionBarMenuItem.addItem(speedSwipeBackLayout, R.drawable.msg_speed_0_2, LocaleController.getString("SpeedVerySlow", R.string.SpeedVerySlow), false, null); item.setColors(0xfffafafa, 0xfffafafa); item.setOnClickListener((view) -> { - callback.onSpeedSelected(0.25f); + callback.onSpeedSelected(0.2f, true, true); }); item.setSelectorColor(0x0fffffff); speedItems[0] = item; @@ -36,7 +98,7 @@ public class ChooseSpeedLayout { item = ActionBarMenuItem.addItem(speedSwipeBackLayout, R.drawable.msg_speed_slow, LocaleController.getString("SpeedSlow", R.string.SpeedSlow), false, null); item.setColors(0xfffafafa, 0xfffafafa); item.setOnClickListener((view) -> { - callback.onSpeedSelected(0.5f); + callback.onSpeedSelected(0.5f, true, true); }); item.setSelectorColor(0x0fffffff); speedItems[1] = item; @@ -44,7 +106,7 @@ public class ChooseSpeedLayout { item = ActionBarMenuItem.addItem(speedSwipeBackLayout, R.drawable.msg_speed_normal, LocaleController.getString("SpeedNormal", R.string.SpeedNormal), false, null); item.setColors(0xfffafafa, 0xfffafafa); item.setOnClickListener((view) -> { - callback.onSpeedSelected(1f); + callback.onSpeedSelected(1f, true, true); }); item.setSelectorColor(0x0fffffff); speedItems[2] = item; @@ -52,7 +114,7 @@ public class ChooseSpeedLayout { item = ActionBarMenuItem.addItem(speedSwipeBackLayout, R.drawable.msg_speed_fast, LocaleController.getString("SpeedFast", R.string.SpeedFast), false, null); item.setColors(0xfffafafa, 0xfffafafa); item.setOnClickListener((view) -> { - callback.onSpeedSelected(1.5f); + callback.onSpeedSelected(1.5f, true, true); }); item.setSelectorColor(0x0fffffff); speedItems[3] = item; @@ -60,27 +122,31 @@ public class ChooseSpeedLayout { item = ActionBarMenuItem.addItem(speedSwipeBackLayout, R.drawable.msg_speed_superfast, LocaleController.getString("SpeedVeryFast", R.string.SpeedVeryFast), false, null); item.setColors(0xfffafafa, 0xfffafafa); item.setOnClickListener((view) -> { - callback.onSpeedSelected(2f); + callback.onSpeedSelected(2f, true, true); }); item.setSelectorColor(0x0fffffff); speedItems[4] = item; } - public void update(float currentVideoSpeed) { + public void update(float currentVideoSpeed, boolean isFinal) { for (int a = 0; a < speedItems.length; a++) { - if (a == 0 && Math.abs(currentVideoSpeed - 0.25f) < 0.001f || - a == 1 && Math.abs(currentVideoSpeed - 0.5f) < 0.001f || - a == 2 && Math.abs(currentVideoSpeed - 1.0f) < 0.001f || - a == 3 && Math.abs(currentVideoSpeed - 1.5f) < 0.001f || - a == 4 && Math.abs(currentVideoSpeed - 2.0f) < 0.001f) { + if (isFinal && ( + a == 0 && Math.abs(currentVideoSpeed - 0.2f) < 0.01f || + a == 1 && Math.abs(currentVideoSpeed - 0.5f) < 0.1f || + a == 2 && Math.abs(currentVideoSpeed - 1.0f) < 0.1f || + a == 3 && Math.abs(currentVideoSpeed - 1.5f) < 0.1f || + a == 4 && Math.abs(currentVideoSpeed - 2.0f) < 0.1f + )) { speedItems[a].setColors(0xff6BB6F9, 0xff6BB6F9); } else { speedItems[a].setColors(0xfffafafa, 0xfffafafa); } } + + slider.setSpeed(currentVideoSpeed, true); } public interface Callback { - void onSpeedSelected(float speed); + void onSpeedSelected(float speed, boolean isFinal, boolean closeMenu); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/CodeFieldContainer.java b/TMessagesProj/src/main/java/org/telegram/ui/CodeFieldContainer.java index 7ba8c92e7..3271e21bd 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/CodeFieldContainer.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/CodeFieldContainer.java @@ -109,6 +109,11 @@ public class CodeFieldContainer extends LinearLayout { public void setNumbersCount(int length, int currentType) { if (codeField == null || codeField.length != length) { + if (codeField != null) { + for (CodeNumberField f : codeField) { + removeView(f); + } + } codeField = new CodeNumberField[length]; for (int a = 0; a < length; a++) { final int num = a; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/AlertsCreator.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/AlertsCreator.java index fd30afb15..5c5b9c943 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/AlertsCreator.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/AlertsCreator.java @@ -293,7 +293,7 @@ public class AlertsCreator { request instanceof TLRPC.TL_phone_inviteToGroupCall) { if (fragment != null && error.text.equals("CHANNELS_TOO_MUCH")) { if (fragment.getParentActivity() != null) { - fragment.showDialog(new LimitReachedBottomSheet(fragment, fragment.getParentActivity(), LimitReachedBottomSheet.TYPE_TO_MANY_COMMUNITIES, currentAccount)); + fragment.showDialog(new LimitReachedBottomSheet(fragment, fragment.getParentActivity(), LimitReachedBottomSheet.TYPE_TO0_MANY_COMMUNITIES, currentAccount)); } else { if (request instanceof TLRPC.TL_channels_joinChannel || request instanceof TLRPC.TL_channels_inviteToChannel) { fragment.presentFragment(new TooManyCommunitiesActivity(TooManyCommunitiesActivity.TYPE_JOIN)); @@ -312,7 +312,7 @@ public class AlertsCreator { } else if (request instanceof TLRPC.TL_messages_createChat) { if (error.text.equals("CHANNELS_TOO_MUCH")) { if (fragment.getParentActivity() != null) { - fragment.showDialog(new LimitReachedBottomSheet(fragment, fragment.getParentActivity(), LimitReachedBottomSheet.TYPE_TO_MANY_COMMUNITIES, currentAccount)); + fragment.showDialog(new LimitReachedBottomSheet(fragment, fragment.getParentActivity(), LimitReachedBottomSheet.TYPE_TO0_MANY_COMMUNITIES, currentAccount)); } else { fragment.presentFragment(new TooManyCommunitiesActivity(TooManyCommunitiesActivity.TYPE_CREATE)); } @@ -325,7 +325,7 @@ public class AlertsCreator { } else if (request instanceof TLRPC.TL_channels_createChannel) { if (error.text.equals("CHANNELS_TOO_MUCH")) { if (fragment.getParentActivity() != null) { - fragment.showDialog(new LimitReachedBottomSheet(fragment, fragment.getParentActivity(), LimitReachedBottomSheet.TYPE_TO_MANY_COMMUNITIES, currentAccount)); + fragment.showDialog(new LimitReachedBottomSheet(fragment, fragment.getParentActivity(), LimitReachedBottomSheet.TYPE_TO0_MANY_COMMUNITIES, currentAccount)); } else { fragment.presentFragment(new TooManyCommunitiesActivity(TooManyCommunitiesActivity.TYPE_CREATE)); } @@ -420,7 +420,7 @@ public class AlertsCreator { showSimpleAlert(fragment, LocaleController.getString("JoinToGroupErrorFull", R.string.JoinToGroupErrorFull)); } else if (error.text.equals("CHANNELS_TOO_MUCH")) { if (fragment.getParentActivity() != null) { - fragment.showDialog(new LimitReachedBottomSheet(fragment, fragment.getParentActivity(), LimitReachedBottomSheet.TYPE_TO_MANY_COMMUNITIES, currentAccount)); + fragment.showDialog(new LimitReachedBottomSheet(fragment, fragment.getParentActivity(), LimitReachedBottomSheet.TYPE_TO0_MANY_COMMUNITIES, currentAccount)); } else { fragment.presentFragment(new TooManyCommunitiesActivity(TooManyCommunitiesActivity.TYPE_JOIN)); } @@ -628,7 +628,7 @@ public class AlertsCreator { localeInfo.pathToFile = "unofficial"; } } - LocaleController.getInstance().applyLanguage(localeInfo, true, false, false, true, true, UserConfig.selectedAccount, null); + LocaleController.getInstance().applyLanguage(localeInfo, true, false, false, true, UserConfig.selectedAccount, null); activity.rebuildAllFragments(true); }); builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); @@ -838,7 +838,7 @@ public class AlertsCreator { fragment.showDialog(dialog); TextView button = (TextView) dialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } @@ -927,7 +927,7 @@ public class AlertsCreator { fragment.showDialog(dialog); TextView button = (TextView) dialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } @@ -1681,7 +1681,7 @@ public class AlertsCreator { fragment.showDialog(alertDialog); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } @@ -1792,7 +1792,7 @@ public class AlertsCreator { fragment.showDialog(alertDialog); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } @@ -2253,6 +2253,36 @@ public class AlertsCreator { return popupWindow; } + public static void checkRestrictedInviteUsers(int currentAccount, TLRPC.Chat currentChat, TLRPC.Updates updates) { + if (updates == null || updates.updates == null || currentChat == null) { + return; + } + ArrayList arrayList = null; + for (int i = 0; i < updates.updates.size(); i++) { + if (updates.updates.get(i) instanceof TLRPC.TL_updateGroupInvitePrivacyForbidden) { + TLRPC.TL_updateGroupInvitePrivacyForbidden restrictedUpdate = (TLRPC.TL_updateGroupInvitePrivacyForbidden) updates.updates.get(i); + TLRPC.User user = MessagesController.getInstance(currentAccount).getUser(restrictedUpdate.user_id); + if (user != null) { + if (arrayList == null) { + arrayList = new ArrayList<>(); + } + arrayList.add(user); + } + } + } + if (arrayList != null) { + ArrayList finalArrayList = arrayList; + AndroidUtilities.runOnUIThread(() -> { + BaseFragment lastFragment = LaunchActivity.getLastFragment(); + if (lastFragment != null && lastFragment.getParentActivity() != null) { + LimitReachedBottomSheet restricterdUsersBottomSheet = new LimitReachedBottomSheet(lastFragment, lastFragment.getParentActivity(), LimitReachedBottomSheet.TYPE_ADD_MEMBERS_RESTRICTED, currentAccount); + restricterdUsersBottomSheet.setRestrictedUsers(currentChat, finalArrayList); + restricterdUsersBottomSheet.show(); + } + }, 200); + } + } + public interface BlockDialogCallback { void run(boolean report, boolean delete); } @@ -2311,7 +2341,7 @@ public class AlertsCreator { fragment.showDialog(alertDialog); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } @@ -5481,7 +5511,7 @@ public class AlertsCreator { fragment.showDialog(dialog); TextView button = (TextView) dialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } @@ -5492,7 +5522,7 @@ public class AlertsCreator { Context context = fragment.getParentActivity(); final EditTextBoldCursor editText = new EditTextBoldCursor(context); editText.setBackground(null); - editText.setLineColors(Theme.getColor(Theme.key_dialogInputField), Theme.getColor(Theme.key_dialogInputFieldActivated), Theme.getColor(Theme.key_dialogTextRed2)); + editText.setLineColors(Theme.getColor(Theme.key_dialogInputField), Theme.getColor(Theme.key_dialogInputFieldActivated), Theme.getColor(Theme.key_dialogTextRed)); AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle(LocaleController.getString("NewTheme", R.string.NewTheme)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/AnimatedEmojiDrawable.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/AnimatedEmojiDrawable.java index 9882fae43..c91221cbf 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/AnimatedEmojiDrawable.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/AnimatedEmojiDrawable.java @@ -73,7 +73,7 @@ public class AnimatedEmojiDrawable extends Drawable { public int rawDrawIndex; private static SparseArray> globalEmojiCache; - private boolean LOG_MEMORY_LEAK = false; + private static boolean LOG_MEMORY_LEAK = false; @NonNull public static AnimatedEmojiDrawable make(int account, int cacheType, long documentId) { @@ -477,7 +477,7 @@ public class AnimatedEmojiDrawable extends Drawable { imageReceiver.setUniqKeyPrefix(cacheType + "_"); } imageReceiver.setVideoThumbIsSame(true); - boolean onlyStaticPreview = SharedConfig.getDevicePerformanceClass() == SharedConfig.PERFORMANCE_CLASS_LOW && cacheType == CACHE_TYPE_ALERT_PREVIEW_TAB_STRIP || (cacheType == CACHE_TYPE_KEYBOARD || cacheType == CACHE_TYPE_ALERT_PREVIEW) && !LiteMode.isEnabled(LiteMode.FLAG_ANIMATED_EMOJI_KEYBOARD); + boolean onlyStaticPreview = SharedConfig.getDevicePerformanceClass() == SharedConfig.PERFORMANCE_CLASS_LOW && cacheType == CACHE_TYPE_ALERT_PREVIEW_TAB_STRIP || cacheType == CACHE_TYPE_KEYBOARD && !LiteMode.isEnabled(LiteMode.FLAG_ANIMATED_EMOJI_KEYBOARD) || cacheType == CACHE_TYPE_ALERT_PREVIEW && !LiteMode.isEnabled(LiteMode.FLAG_ANIMATED_EMOJI_REACTIONS); if (cacheType == CACHE_TYPE_ALERT_PREVIEW_STATIC) { onlyStaticPreview = true; } @@ -714,13 +714,13 @@ public class AnimatedEmojiDrawable extends Drawable { attachedDrawable = new ArrayList<>(); } if (attached) { - attachedCount--; - attachedDrawable.remove(this); - } else { attachedCount++; attachedDrawable.add(this); + } else { + attachedCount--; + attachedDrawable.remove(this); } - Log.d("animatedDrable", "attached count " + attachedCount); + Log.d("animatedDrawable", "attached count " + attachedCount); } } @@ -1194,6 +1194,7 @@ public class AnimatedEmojiDrawable extends Drawable { if (secondParent != null) { secondParent.invalidate(); } + invalidateSelf(); } public void setSecondParent(View secondParent) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/AnimatedTextView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/AnimatedTextView.java index 8baeaeb91..109605c9d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/AnimatedTextView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/AnimatedTextView.java @@ -382,6 +382,10 @@ public class AnimatedTextView extends View { return currentWidth; } + public float getAnimateToWidth() { + return currentWidth; + } + public float getHeight() { return currentHeight; } @@ -715,7 +719,7 @@ public class AnimatedTextView extends View { } private AnimatedTextDrawable drawable; - private int lastMaxWidth; + private int lastMaxWidth, maxWidth; private CharSequence toSetText; private boolean toSetMoveDown; @@ -739,10 +743,17 @@ public class AnimatedTextView extends View { }); } + public void setMaxWidth(int width) { + maxWidth = width; + } + @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int width = MeasureSpec.getSize(widthMeasureSpec); int height = MeasureSpec.getSize(heightMeasureSpec); + if (maxWidth > 0) { + width = Math.min(width, maxWidth); + } if (lastMaxWidth != width && getLayoutParams().width != 0) { drawable.setBounds(getPaddingLeft(), getPaddingTop(), width - getPaddingRight(), height - getPaddingBottom()); setText(drawable.getText(), false); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/AudioPlayerAlert.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/AudioPlayerAlert.java index 36d8070ba..6a014cbcc 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/AudioPlayerAlert.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/AudioPlayerAlert.java @@ -85,6 +85,7 @@ import org.telegram.tgnet.TLRPC; import org.telegram.ui.ActionBar.ActionBar; import org.telegram.ui.ActionBar.ActionBarMenu; import org.telegram.ui.ActionBar.ActionBarMenuItem; +import org.telegram.ui.ActionBar.ActionBarMenuSlider; import org.telegram.ui.ActionBar.ActionBarMenuSubItem; import org.telegram.ui.ActionBar.AlertDialog; import org.telegram.ui.ActionBar.BaseFragment; @@ -129,6 +130,9 @@ public class AudioPlayerAlert extends BottomSheet implements NotificationCenter. private SeekBarView seekBarView; private SimpleTextView timeTextView; private ActionBarMenuItem playbackSpeedButton; + private SpeedIconDrawable speedIcon; + private ActionBarMenuSlider.SpeedSlider speedSlider; + private boolean slidingSpeed; private ActionBarMenuSubItem[] speedItems = new ActionBarMenuSubItem[6]; private TextView durationTextView; private ActionBarMenuItem repeatButton; @@ -183,15 +187,7 @@ public class AudioPlayerAlert extends BottomSheet implements NotificationCenter. private boolean wasLight; private final static float[] speeds = new float[] { - .5f, 1f, 1.2f, 1.5f, 1.65f, 1.8f - }; - private final static int[] speedIcons = new int[] { - R.drawable.voice_mini_0_5, - R.drawable.voice_mini_1_0, - R.drawable.voice_mini_1_2, - R.drawable.voice_mini_1_5, - R.drawable.voice_mini_1_7, - R.drawable.voice_mini_2_0 + .5f, 1f, 1.2f, 1.5f, 1.7f, 2f }; private final Runnable forwardSeek = new Runnable() { @@ -439,7 +435,7 @@ public class AudioPlayerAlert extends BottomSheet implements NotificationCenter. containerView.invalidate(); } }; - actionBar.setBackgroundColor(getThemedColor(Theme.key_player_actionBar)); + actionBar.setBackgroundColor(getThemedColor(Theme.key_dialogBackground)); actionBar.setBackButtonImage(R.drawable.ic_ab_back); actionBar.setItemsColor(getThemedColor(Theme.key_player_actionBarTitle), false); actionBar.setItemsBackgroundColor(getThemedColor(Theme.key_player_actionBarSelector), false); @@ -694,7 +690,15 @@ public class AudioPlayerAlert extends BottomSheet implements NotificationCenter. MediaController.getInstance().setPlaybackSpeed(true, speeds[id]); updatePlaybackButton(true); }); - final float[] toggleSpeeds = new float[] { 1.0F, 1.5F, 1.8F }; + playbackSpeedButton.setIcon(speedIcon = new SpeedIconDrawable(true)); + final float[] toggleSpeeds = new float[] { 1.0F, 1.5F, 2F }; + speedSlider = new ActionBarMenuSlider.SpeedSlider(getContext(), resourcesProvider); + speedSlider.setRoundRadiusDp(6); + speedSlider.setDrawShadow(true); + speedSlider.setOnValueChange((value, isFinal) -> { + slidingSpeed = !isFinal; + MediaController.getInstance().setPlaybackSpeed(true, speedSlider.getSpeed(value)); + }); speedItems[0] = playbackSpeedButton.addSubItem(0, R.drawable.msg_speed_slow, LocaleController.getString("SpeedSlow", R.string.SpeedSlow)); speedItems[1] = playbackSpeedButton.addSubItem(1, R.drawable.msg_speed_normal, LocaleController.getString("SpeedNormal", R.string.SpeedNormal)); speedItems[2] = playbackSpeedButton.addSubItem(2, R.drawable.msg_speed_medium, LocaleController.getString("SpeedMedium", R.string.SpeedMedium)); @@ -705,6 +709,7 @@ public class AudioPlayerAlert extends BottomSheet implements NotificationCenter. playbackSpeedButton.setPadding(0, 1, 0, 0); } playbackSpeedButton.setAdditionalXOffset(AndroidUtilities.dp(8)); + playbackSpeedButton.setAdditionalYOffset(-AndroidUtilities.dp(400)); playbackSpeedButton.setShowedFromBottom(true); playerLayout.addView(playbackSpeedButton, LayoutHelper.createFrame(36, 36, Gravity.TOP | Gravity.RIGHT, 0, 86, 20, 0)); playbackSpeedButton.setOnClickListener(v -> { @@ -721,9 +726,17 @@ public class AudioPlayerAlert extends BottomSheet implements NotificationCenter. index = 0; } MediaController.getInstance().setPlaybackSpeed(true, toggleSpeeds[index]); + + checkSpeedHint(); }); playbackSpeedButton.setOnLongClickListener(view -> { - playbackSpeedButton.toggleSubMenu(); + final float speed = MediaController.getInstance().getPlaybackSpeed(true); + speedSlider.setSpeed(speed, false); + speedSlider.setBackgroundColor(Theme.getColor(Theme.key_actionBarDefaultSubmenuBackground, resourcesProvider)); + updatePlaybackButton(false); + playbackSpeedButton.setDimMenu(.15f); + playbackSpeedButton.toggleSubMenu(speedSlider, null); + MessagesController.getGlobalNotificationsSettings().edit().putInt("speedhint", -15).apply(); return true; }); updatePlaybackButton(false); @@ -1351,6 +1364,45 @@ public class AudioPlayerAlert extends BottomSheet implements NotificationCenter. } } + private HintView speedHintView; + private long lastPlaybackClick; + + private void checkSpeedHint() { + final long now = System.currentTimeMillis(); + if (now - lastPlaybackClick > 300) { + int hintValue = MessagesController.getGlobalNotificationsSettings().getInt("speedhint", 0); + hintValue++; + if (hintValue > 2) { + hintValue = -10; + } + MessagesController.getGlobalNotificationsSettings().edit().putInt("speedhint", hintValue).apply(); + if (hintValue >= 0) { + showSpeedHint(); + } + } + lastPlaybackClick = now; + } + + private void showSpeedHint() { + if (containerView != null) { + speedHintView = new HintView(getContext(), 5, false) { + @Override + public void setVisibility(int visibility) { + super.setVisibility(visibility); + if (visibility != View.VISIBLE) { + try { + ((ViewGroup) getParent()).removeView(this); + } catch (Exception e) {} + } + } + }; + speedHintView.setExtraTranslationY(AndroidUtilities.dp(6)); + speedHintView.setText(LocaleController.getString("SpeedHint")); + playerLayout.addView(speedHintView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.TOP, 0, 0, 6, 0)); + speedHintView.showForView(playbackSpeedButton, true); + } + } + private void updateSubMenu() { setMenuItemChecked(shuffleListItem, SharedConfig.shuffleMusic); setMenuItemChecked(reverseOrderItem, SharedConfig.playOrderReversed); @@ -1359,7 +1411,7 @@ public class AudioPlayerAlert extends BottomSheet implements NotificationCenter. } private boolean equals(float a, float b) { - return Math.abs(a - b) < 0.001f; + return Math.abs(a - b) < 0.05f; } private void updatePlaybackButton(boolean animated) { @@ -1367,20 +1419,15 @@ public class AudioPlayerAlert extends BottomSheet implements NotificationCenter. return; } float currentPlaybackSpeed = MediaController.getInstance().getPlaybackSpeed(true); - int index = -1; - for (int i = 0; i < speeds.length; ++i) { - if (equals(speeds[i], currentPlaybackSpeed)) { - index = i; - break; - } - } - if (index >= 0) { - playbackSpeedButton.setIcon(speedIcons[index], animated); - } + speedIcon.setValue(currentPlaybackSpeed, animated); + speedSlider.setSpeed(currentPlaybackSpeed, animated); updateColors(); + boolean isFinal = !slidingSpeed; + slidingSpeed = false; + for (int a = 0; a < speedItems.length; a++) { - if (equals(currentPlaybackSpeed, speeds[a])) { + if (isFinal && equals(currentPlaybackSpeed, speeds[a])) { speedItems[a].setColors(getThemedColor(Theme.key_featuredStickers_addButtonPressed), getThemedColor(Theme.key_featuredStickers_addButtonPressed)); } else { speedItems[a].setColors(getThemedColor(Theme.key_actionBarDefaultSubmenuItem), getThemedColor(Theme.key_actionBarDefaultSubmenuItem)); @@ -1392,9 +1439,11 @@ public class AudioPlayerAlert extends BottomSheet implements NotificationCenter. if (playbackSpeedButton != null) { float currentPlaybackSpeed = MediaController.getInstance().getPlaybackSpeed(true); final int color = getThemedColor(!equals(currentPlaybackSpeed, 1.0f) ? Theme.key_featuredStickers_addButtonPressed : Theme.key_inappPlayerClose); - playbackSpeedButton.setIconColor(color); + if (speedIcon != null) { + speedIcon.setColor(color); + } if (Build.VERSION.SDK_INT >= 21) { - playbackSpeedButton.setBackgroundDrawable(Theme.createSelectorDrawable(color & 0x19ffffff, 1, AndroidUtilities.dp(14))); + playbackSpeedButton.setBackground(Theme.createSelectorDrawable(color & 0x19ffffff, 1, AndroidUtilities.dp(14))); } } } @@ -2262,7 +2311,7 @@ public class AudioPlayerAlert extends BottomSheet implements NotificationCenter. optionsButton.redrawPopup(getThemedColor(Theme.key_actionBarDefaultSubmenuBackground)); }; - themeDescriptions.add(new ThemeDescription(actionBar, ThemeDescription.FLAG_BACKGROUND, null, null, null, null, Theme.key_player_actionBar)); + themeDescriptions.add(new ThemeDescription(actionBar, ThemeDescription.FLAG_BACKGROUND, null, null, null, null, Theme.key_dialogBackground)); themeDescriptions.add(new ThemeDescription(actionBar, ThemeDescription.FLAG_AB_ITEMSCOLOR, null, null, null, delegate, Theme.key_player_actionBarTitle)); themeDescriptions.add(new ThemeDescription(actionBar, ThemeDescription.FLAG_AB_TITLECOLOR, null, null, null, null, Theme.key_player_actionBarTitle)); themeDescriptions.add(new ThemeDescription(actionBar, ThemeDescription.FLAG_AB_SUBTITLECOLOR, null, null, null, null, Theme.key_player_actionBarTitle)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/AutoDeletePopupWrapper.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/AutoDeletePopupWrapper.java index 0c3ad1450..0409725fa 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/AutoDeletePopupWrapper.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/AutoDeletePopupWrapper.java @@ -72,7 +72,7 @@ public class AutoDeletePopupWrapper { callback.setAutoDeleteHistory(0, UndoView.ACTION_AUTO_DELETE_OFF); }); if (type != TYPE_GROUP_CREATE) { - disableItem.setColors(Theme.getColor(Theme.key_dialogTextRed2), Theme.getColor(Theme.key_dialogTextRed2)); + disableItem.setColors(Theme.getColor(Theme.key_dialogTextRed), Theme.getColor(Theme.key_dialogTextRed)); } if (type != TYPE_GROUP_CREATE) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/BatteryDrawable.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/BatteryDrawable.java new file mode 100644 index 000000000..3253d9074 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/BatteryDrawable.java @@ -0,0 +1,192 @@ +package org.telegram.ui.Components; + +import static org.telegram.messenger.AndroidUtilities.dp; +import static org.telegram.messenger.AndroidUtilities.dpf2; + +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.ValueAnimator; +import android.graphics.Canvas; +import android.graphics.ColorFilter; +import android.graphics.Paint; +import android.graphics.PixelFormat; +import android.graphics.RectF; +import android.graphics.drawable.Drawable; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +public class BatteryDrawable extends Drawable { + + private Paint paintReference; + private Paint strokePaint = new Paint(Paint.ANTI_ALIAS_FLAG); + private Paint connectorPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + private Paint fillPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + + private float scale = 1f, translateY = 0; + private float fillValue = 1f; + + private RectF rectTmp = new RectF(); + + public BatteryDrawable() { + strokePaint.setStyle(Paint.Style.STROKE); + } + + public BatteryDrawable(float value) { + this(); + setFillValue(value, false); + } + + public BatteryDrawable(float value, int color) { + this(); + setFillValue(value, false); + setColor(color); + } + + public BatteryDrawable(float value, int color, int fillColor) { + this(); + setFillValue(value, false); + setColor(color, fillColor); + } + + public BatteryDrawable(float value, int color, int fillColor, float scale) { + this(); + setFillValue(value, false); + setColor(color, fillColor); + setScale(scale); + } + + public void setScale(float scale) { + this.scale = scale; + invalidateSelf(); + } + + public void setColor(int color) { + setColor(color, color); + } + + public void setColor(int color, int fillColor) { + strokePaint.setColor(color); + connectorPaint.setColor(color); + fillPaint.setColor(fillColor); + } + + private ValueAnimator fillValueAnimator; + + public void setFillValue(float newValue, boolean animated) { + final float value = Math.max(Math.min(newValue, 1), 0); + + if (fillValueAnimator != null) { + fillValueAnimator.cancel(); + fillValueAnimator = null; + } + + if (!animated) { + fillValue = value; + invalidateSelf(); + } else { + fillValueAnimator = ValueAnimator.ofFloat(fillValue, value); + fillValueAnimator.addUpdateListener(anm -> { + fillValue = (float) anm.getAnimatedValue(); + invalidateSelf(); + }); + fillValueAnimator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + fillValue = value; + invalidateSelf(); + } + }); + fillValueAnimator.setInterpolator(CubicBezierInterpolator.EASE_OUT_QUINT); + fillValueAnimator.setDuration(200); + fillValueAnimator.start(); + } + } + + public void colorFromPaint(Paint paintReference) { + this.paintReference = paintReference; + } + + @Override + public void draw(@NonNull Canvas canvas) { + if (getBounds() == null) { + return; + } + + final int x = getBounds().left, y = getBounds().top + (int) translateY; + final int w = getBounds().width(), h = getBounds().height(); + final int cx = getBounds().centerX(), cy = getBounds().centerY() + (int) translateY; + + if (paintReference != null) { + setColor(paintReference.getColor()); + } + + if (scale != 1) { + canvas.save(); + canvas.scale(scale, scale, cx, cy); + } + + strokePaint.setStrokeWidth(dpf2(1.1f)); + + rectTmp.set( + x + (w - dpf2(16.33f)) / 2f - dpf2(1.33f), + y + (h - dpf2(10.33f)) / 2f, + x + (w + dpf2(16.33f)) / 2f - dpf2(1.33f), + y + (h + dpf2(10.33f)) / 2f + ); + canvas.drawRoundRect(rectTmp, dpf2(2.33f), dpf2(2.33f), strokePaint); + + rectTmp.set( + x + (w - dpf2(13f)) / 2f - dpf2(1.66f), + y + (h - dpf2(7.33f)) / 2f, + x + (w - dpf2(13f)) / 2f - dpf2(1.66f) + Math.max(dpf2(1.1f), fillValue * dpf2(13)), + y + (h + dpf2(7.33f)) / 2f + ); + canvas.drawRoundRect(rectTmp, dpf2(0.83f), dpf2(0.83f), fillPaint); + + rectTmp.set( + x + (w + dpf2(17.5f) - dpf2(4.66f)) / 2f, + cy - dpf2(2.65f), + x + (w + dpf2(17.5f) + dpf2(4.66f)) / 2f, + cy + dpf2(2.65f) + ); + canvas.drawArc(rectTmp, -90, 180, false, connectorPaint); + + if (scale != 1) { + canvas.restore(); + } + } + + public void setTranslationY(float translateY) { + this.translateY = translateY; + } + + @Override + public void setAlpha(int alpha) { + strokePaint.setAlpha(alpha); + connectorPaint.setAlpha(alpha); + fillPaint.setAlpha(alpha); + } + + @Override + public void setColorFilter(@Nullable ColorFilter colorFilter) { + strokePaint.setColorFilter(colorFilter); + connectorPaint.setColorFilter(colorFilter); + fillPaint.setColorFilter(colorFilter); + } + + @Override + public int getOpacity() { + return PixelFormat.TRANSPARENT; + } + + @Override + public int getIntrinsicWidth() { + return dp(24 * scale); + } + + @Override + public int getIntrinsicHeight() { + return dp(24 * scale); + } +} \ No newline at end of file diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/BlobDrawable.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/BlobDrawable.java index 789d0165e..743d114c1 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/BlobDrawable.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/BlobDrawable.java @@ -59,7 +59,13 @@ public class BlobDrawable { private final Matrix m = new Matrix(); + private final int liteFlag; + public BlobDrawable(int n) { + this(n, LiteMode.FLAG_CALLS_ANIMATIONS); + } + + public BlobDrawable(int n, int liteFlag) { N = n; L = (float) ((4.0 / 3.0) * Math.tan(Math.PI / (2 * N))); radius = new float[n]; @@ -75,6 +81,8 @@ public class BlobDrawable { generateBlob(radiusNext, angleNext, i); progress[i] = 0; } + + this.liteFlag = liteFlag; } private void generateBlob(float[] radius, float[] angle, int i) { @@ -86,7 +94,7 @@ public class BlobDrawable { } public void update(float amplitude, float speedScale) { - if (!LiteMode.isEnabled(LiteMode.FLAG_CALLS_ANIMATIONS)) { + if (!LiteMode.isEnabled(liteFlag)) { return; } for (int i = 0; i < N; i++) { @@ -101,7 +109,7 @@ public class BlobDrawable { } public void draw(float cX, float cY, Canvas canvas, Paint paint) { - if (!LiteMode.isEnabled(LiteMode.FLAG_CALLS_ANIMATIONS)) { + if (!LiteMode.isEnabled(liteFlag)) { return; } path.reset(); @@ -172,7 +180,7 @@ public class BlobDrawable { public void setValue(float value, boolean isBig) { animateToAmplitude = value; - if (!LiteMode.isEnabled(LiteMode.FLAG_CALLS_ANIMATIONS)) { + if (!LiteMode.isEnabled(liteFlag)) { return; } if (isBig) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/BotWebViewContainer.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/BotWebViewContainer.java index c60b9fa39..d6a54c0c2 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/BotWebViewContainer.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/BotWebViewContainer.java @@ -939,6 +939,21 @@ public class BotWebViewContainer extends FrameLayout implements NotificationCent delegate.onCloseRequested(null); break; } + case "web_app_switch_inline_query": { + try { + JSONObject jsonObject = new JSONObject(eventData); + List types = new ArrayList<>(); + JSONArray arr = jsonObject.getJSONArray("chat_types"); + for (int i = 0; i < arr.length(); i++) { + types.add(arr.getString(i)); + } + + delegate.onWebAppSwitchInlineQuery(botUser, jsonObject.getString("query"), types); + } catch (JSONException e) { + FileLog.e(e); + } + break; + } case "web_app_read_text_from_clipboard": { try { JSONObject jsonObject = new JSONObject(eventData); @@ -1489,6 +1504,15 @@ public class BotWebViewContainer extends FrameLayout implements NotificationCent */ void onWebAppExpand(); + /** + * Called when web apps requests to switch to inline mode picker + * + * @param botUser Bot user + * @param query Inline query + * @param chatTypes Chat types + */ + void onWebAppSwitchInlineQuery(TLRPC.User botUser, String query, List chatTypes); + /** * Called when web app attempts to open invoice * diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/BotWebViewMenuContainer.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/BotWebViewMenuContainer.java index d417ec40e..d4da96fc1 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/BotWebViewMenuContainer.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/BotWebViewMenuContainer.java @@ -8,6 +8,7 @@ import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.os.Build; +import android.os.Bundle; import android.text.Editable; import android.view.Gravity; import android.view.MotionEvent; @@ -24,12 +25,14 @@ import androidx.recyclerview.widget.ChatListItemAnimator; import org.json.JSONObject; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.ContactsController; +import org.telegram.messenger.DialogObject; import org.telegram.messenger.FileLog; import org.telegram.messenger.LocaleController; import org.telegram.messenger.MessageObject; import org.telegram.messenger.MessagesController; import org.telegram.messenger.NotificationCenter; import org.telegram.messenger.R; +import org.telegram.messenger.UserObject; import org.telegram.tgnet.ConnectionsManager; import org.telegram.tgnet.TLObject; import org.telegram.tgnet.TLRPC; @@ -38,10 +41,13 @@ import org.telegram.ui.ActionBar.ActionBarMenu; import org.telegram.ui.ActionBar.ActionBarMenuItem; import org.telegram.ui.ActionBar.ActionBarMenuSubItem; import org.telegram.ui.ActionBar.AlertDialog; +import org.telegram.ui.ActionBar.INavigationLayout; import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.ChatActivity; +import org.telegram.ui.DialogsActivity; import org.telegram.ui.PaymentFormActivity; +import java.util.List; import java.util.Locale; import java.util.Objects; @@ -197,6 +203,45 @@ public class BotWebViewMenuContainer extends FrameLayout implements Notification swipeContainer.stickTo(-swipeContainer.getOffsetY() + swipeContainer.getTopActionBarOffsetY()); } + @Override + public void onWebAppSwitchInlineQuery(TLRPC.User botUser, String query, List chatTypes) { + if (chatTypes.isEmpty()) { + parentEnterView.setFieldText("@" + UserObject.getPublicUsername(botUser) + " " + query); + dismiss(); + } else { + Bundle args = new Bundle(); + args.putInt("dialogsType", DialogsActivity.DIALOGS_TYPE_START_ATTACH_BOT); + args.putBoolean("onlySelect", true); + + args.putBoolean("allowGroups", chatTypes.contains("groups")); + args.putBoolean("allowUsers", chatTypes.contains("users")); + args.putBoolean("allowChannels", chatTypes.contains("channels")); + args.putBoolean("allowBots", chatTypes.contains("bots")); + + DialogsActivity dialogsActivity = new DialogsActivity(args); + dialogsActivity.setDelegate((fragment, dids, message1, param, topicsFragment) -> { + long did = dids.get(0).dialogId; + + Bundle args1 = new Bundle(); + args1.putBoolean("scrollToTopOnResume", true); + if (DialogObject.isEncryptedDialog(did)) { + args1.putInt("enc_id", DialogObject.getEncryptedChatId(did)); + } else if (DialogObject.isUserDialog(did)) { + args1.putLong("user_id", did); + } else { + args1.putLong("chat_id", -did); + } + args1.putString("inline_query_input", "@" + UserObject.getPublicUsername(botUser) + " " + query); + + if (MessagesController.getInstance(currentAccount).checkCanOpenChat(args1, fragment)) { + fragment.presentFragment(new INavigationLayout.NavigationParams(new ChatActivity(args1)).setRemoveLast(true)); + } + return true; + }); + parentEnterView.getParentFragment().presentFragment(dialogsActivity); + } + } + @Override public void onWebAppOpenInvoice(String slug, TLObject response) { ChatActivity parentFragment = parentEnterView.getParentFragment(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/BotWebViewSheet.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/BotWebViewSheet.java index b08af4de5..526b6c384 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/BotWebViewSheet.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/BotWebViewSheet.java @@ -14,6 +14,7 @@ import android.graphics.Paint; import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Bundle; +import android.text.TextUtils; import android.util.TypedValue; import android.view.Gravity; import android.view.MotionEvent; @@ -34,6 +35,7 @@ import androidx.dynamicanimation.animation.SpringForce; import org.json.JSONObject; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.ContactsController; +import org.telegram.messenger.DialogObject; import org.telegram.messenger.FileLog; import org.telegram.messenger.LocaleController; import org.telegram.messenger.MessagesController; @@ -50,23 +52,29 @@ import org.telegram.ui.ActionBar.ActionBarMenuItem; import org.telegram.ui.ActionBar.ActionBarMenuSubItem; import org.telegram.ui.ActionBar.AlertDialog; import org.telegram.ui.ActionBar.BaseFragment; +import org.telegram.ui.ActionBar.INavigationLayout; import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.ChatActivity; +import org.telegram.ui.DialogsActivity; import org.telegram.ui.LaunchActivity; import org.telegram.ui.PaymentFormActivity; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; +import java.util.List; import java.util.Locale; public class BotWebViewSheet extends Dialog implements NotificationCenter.NotificationCenterDelegate { - public final static int TYPE_WEB_VIEW_BUTTON = 0, TYPE_SIMPLE_WEB_VIEW_BUTTON = 1, TYPE_BOT_MENU_BUTTON = 2; + public final static int TYPE_WEB_VIEW_BUTTON = 0, TYPE_SIMPLE_WEB_VIEW_BUTTON = 1, TYPE_BOT_MENU_BUTTON = 2, TYPE_WEB_VIEW_BOT_APP = 3; + + public final static int FLAG_FROM_INLINE_SWITCH = 1; @Retention(RetentionPolicy.SOURCE) @IntDef(value = { TYPE_WEB_VIEW_BUTTON, TYPE_SIMPLE_WEB_VIEW_BUTTON, - TYPE_BOT_MENU_BUTTON + TYPE_BOT_MENU_BUTTON, + TYPE_WEB_VIEW_BOT_APP }) public @interface WebViewType {} @@ -298,6 +306,66 @@ public class BotWebViewSheet extends Dialog implements NotificationCenter.Notifi swipeContainer.stickTo(-swipeContainer.getOffsetY() + swipeContainer.getTopActionBarOffsetY()); } + @Override + public void onWebAppSwitchInlineQuery(TLRPC.User botUser, String query, List chatTypes) { + if (chatTypes.isEmpty()) { + if (parentActivity instanceof LaunchActivity) { + BaseFragment lastFragment = ((LaunchActivity) parentActivity).getActionBarLayout().getLastFragment(); + if (lastFragment instanceof ChatActivity) { + ((ChatActivity) lastFragment).getChatActivityEnterView().setFieldText("@" + UserObject.getPublicUsername(botUser) + " " + query); + dismiss(); + } + } + } else { + Bundle args = new Bundle(); + args.putInt("dialogsType", DialogsActivity.DIALOGS_TYPE_START_ATTACH_BOT); + args.putBoolean("onlySelect", true); + + args.putBoolean("allowGroups", chatTypes.contains("groups")); + args.putBoolean("allowUsers", chatTypes.contains("users")); + args.putBoolean("allowChannels", chatTypes.contains("channels")); + args.putBoolean("allowBots", chatTypes.contains("bots")); + + DialogsActivity dialogsActivity = new DialogsActivity(args); + AndroidUtilities.hideKeyboard(frameLayout); + OverlayActionBarLayoutDialog overlayActionBarLayoutDialog = new OverlayActionBarLayoutDialog(context, resourcesProvider); + dialogsActivity.setDelegate((fragment, dids, message1, param, topicsFragment) -> { + long did = dids.get(0).dialogId; + + Bundle args1 = new Bundle(); + args1.putBoolean("scrollToTopOnResume", true); + if (DialogObject.isEncryptedDialog(did)) { + args1.putInt("enc_id", DialogObject.getEncryptedChatId(did)); + } else if (DialogObject.isUserDialog(did)) { + args1.putLong("user_id", did); + } else { + args1.putLong("chat_id", -did); + } + args1.putString("inline_query_input", "@" + UserObject.getPublicUsername(botUser) + " " + query); + + if (parentActivity instanceof LaunchActivity) { + BaseFragment lastFragment = ((LaunchActivity) parentActivity).getActionBarLayout().getLastFragment(); + if (MessagesController.getInstance(currentAccount).checkCanOpenChat(args1, lastFragment)) { + overlayActionBarLayoutDialog.dismiss(); + + dismissed = true; + AndroidUtilities.cancelRunOnUIThread(pollRunnable); + + webViewContainer.destroyWebView(); + NotificationCenter.getInstance(currentAccount).removeObserver(BotWebViewSheet.this, NotificationCenter.webViewResultSent); + NotificationCenter.getGlobalInstance().removeObserver(BotWebViewSheet.this, NotificationCenter.didSetNewTheme); + BotWebViewSheet.super.dismiss(); + + lastFragment.presentFragment(new INavigationLayout.NavigationParams(new ChatActivity(args1)).setRemoveLast(true)); + } + } + return true; + }); + overlayActionBarLayoutDialog.show(); + overlayActionBarLayoutDialog.addFragment(dialogsActivity); + } + } + @Override public void onSetupMainButton(boolean isVisible, boolean isActive, String text, int color, int textColor, boolean isProgressVisible) { mainButton.setClickable(isActive); @@ -674,7 +742,19 @@ public class BotWebViewSheet extends Dialog implements NotificationCenter.Notifi } } + public void requestWebView(int currentAccount, long peerId, long botId, String buttonText, String buttonUrl, @WebViewType int type, int replyToMsgId, boolean silent, int flags) { + requestWebView(currentAccount, peerId, botId, buttonText, buttonUrl, type, replyToMsgId, silent, null, null, false, null, null, flags); + } + public void requestWebView(int currentAccount, long peerId, long botId, String buttonText, String buttonUrl, @WebViewType int type, int replyToMsgId, boolean silent) { + requestWebView(currentAccount, peerId, botId, buttonText, buttonUrl, type, replyToMsgId, silent, null, null, false, null, null, 0); + } + + public void requestWebView(int currentAccount, long peerId, long botId, String buttonText, String buttonUrl, @WebViewType int type, int replyToMsgId, boolean silent, BaseFragment lastFragment, TLRPC.BotApp app, boolean allowWrite, String startParam, TLRPC.User botUser) { + requestWebView(currentAccount, peerId, botId, buttonText, buttonUrl, type, replyToMsgId, silent, lastFragment, app, allowWrite, startParam, botUser, 0); + } + + public void requestWebView(int currentAccount, long peerId, long botId, String buttonText, String buttonUrl, @WebViewType int type, int replyToMsgId, boolean silent, BaseFragment lastFragment, TLRPC.BotApp app, boolean allowWrite, String startParam, TLRPC.User botUser, int flags) { this.currentAccount = currentAccount; this.peerId = peerId; this.botId = botId; @@ -773,6 +853,7 @@ public class BotWebViewSheet extends Dialog implements NotificationCenter.Notifi } case TYPE_SIMPLE_WEB_VIEW_BUTTON: { TLRPC.TL_messages_requestSimpleWebView req = new TLRPC.TL_messages_requestSimpleWebView(); + req.from_switch_webview = (flags & FLAG_FROM_INLINE_SWITCH) != 0; req.bot = MessagesController.getInstance(currentAccount).getInputUser(botId); req.platform = "android"; if (hasThemeParams) { @@ -826,6 +907,40 @@ public class BotWebViewSheet extends Dialog implements NotificationCenter.Notifi NotificationCenter.getInstance(currentAccount).addObserver(this, NotificationCenter.webViewResultSent); break; } + case TYPE_WEB_VIEW_BOT_APP: { + TLRPC.TL_messages_requestAppWebView req = new TLRPC.TL_messages_requestAppWebView(); + TLRPC.TL_inputBotAppID botApp = new TLRPC.TL_inputBotAppID(); + botApp.id = app.id; + botApp.access_hash = app.access_hash; + + req.app = botApp; + req.write_allowed = allowWrite; + req.platform = "android"; + req.peer = lastFragment instanceof ChatActivity ? ((ChatActivity) lastFragment).getCurrentUser() != null ? MessagesController.getInputPeer(((ChatActivity) lastFragment).getCurrentUser()) : MessagesController.getInputPeer(((ChatActivity) lastFragment).getCurrentChat()) + : MessagesController.getInputPeer(botUser); + + if (!TextUtils.isEmpty(startParam)) { + req.start_param = startParam; + req.flags |= 2; + } + + if (hasThemeParams) { + req.theme_params = new TLRPC.TL_dataJSON(); + req.theme_params.data = themeParams; + req.flags |= 4; + } + + ConnectionsManager.getInstance(currentAccount).sendRequest(req, (response2, error2) -> AndroidUtilities.runOnUIThread(() -> { + if (error2 == null) { + TLRPC.TL_appWebViewResultUrl result = (TLRPC.TL_appWebViewResultUrl) response2; + queryId = 0; + webViewContainer.loadUrl(currentAccount, result.url); + swipeContainer.setWebView(webViewContainer.getWebView()); + + AndroidUtilities.runOnUIThread(pollRunnable, POLL_PERIOD); + } + }), ConnectionsManager.RequestFlagInvokeAfter | ConnectionsManager.RequestFlagFailOnServerErrors); + } } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Bulletin.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Bulletin.java index dbd789cc2..647eaed27 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/Bulletin.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Bulletin.java @@ -181,8 +181,9 @@ public class Bulletin { } } - public void setDuration(int duration) { + public Bulletin setDuration(int duration) { this.duration = duration; + return this; } public Bulletin show() { @@ -1111,6 +1112,7 @@ public class Bulletin { public final BackupImageView imageView; public final TextView titleTextView; public final TextView subtitleTextView; + private final LinearLayout linearLayout; public TwoLineLayout(@NonNull Context context, Theme.ResourcesProvider resourcesProvider) { super(context, resourcesProvider); @@ -1119,7 +1121,7 @@ public class Bulletin { addView(imageView = new BackupImageView(context), LayoutHelper.createFrameRelatively(29, 29, Gravity.START | Gravity.CENTER_VERTICAL, 12, 12, 12, 12)); - final LinearLayout linearLayout = new LinearLayout(context); + linearLayout = new LinearLayout(context); linearLayout.setOrientation(LinearLayout.VERTICAL); addView(linearLayout, LayoutHelper.createFrameRelatively(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.START | Gravity.CENTER_VERTICAL, 54, 8, 12, 8)); @@ -1143,6 +1145,11 @@ public class Bulletin { public CharSequence getAccessibilityText() { return titleTextView.getText() + ".\n" + subtitleTextView.getText(); } + + public void hideImage() { + imageView.setVisibility(GONE); + ((MarginLayoutParams) linearLayout.getLayoutParams()).setMarginStart(AndroidUtilities.dp(12)); + } } public static class TwoLineLottieLayout extends ButtonLayout { @@ -1150,6 +1157,7 @@ public class Bulletin { public final RLottieImageView imageView; public final LinkSpanDrawable.LinksTextView titleTextView; public final LinkSpanDrawable.LinksTextView subtitleTextView; + private final LinearLayout linearLayout; private final int textColor; @@ -1165,7 +1173,7 @@ public class Bulletin { final int undoInfoColor = getThemedColor(Theme.key_undo_infoColor); final int undoLinkColor = getThemedColor(Theme.key_undo_cancelColor); - final LinearLayout linearLayout = new LinearLayout(context); + linearLayout = new LinearLayout(context); linearLayout.setOrientation(LinearLayout.VERTICAL); addView(linearLayout, LayoutHelper.createFrameRelatively(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.START | Gravity.CENTER_VERTICAL, 52, 8, 8, 8)); @@ -1206,6 +1214,11 @@ public class Bulletin { public CharSequence getAccessibilityText() { return titleTextView.getText() + ".\n" + subtitleTextView.getText(); } + + public void hideImage() { + imageView.setVisibility(GONE); + ((MarginLayoutParams) linearLayout.getLayoutParams()).setMarginStart(AndroidUtilities.dp(10)); + } } public static class LottieLayout extends ButtonLayout { @@ -1690,7 +1703,11 @@ public class Bulletin { @Override public void removeView(View child) { super.removeView(child); - BulletinWindow.this.dismiss(); + try { + BulletinWindow.this.dismiss(); + } catch (Exception ignore) { + + } removeDelegate(container); } }, diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/BulletinFactory.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/BulletinFactory.java index b5399fd4a..13c80b63b 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/BulletinFactory.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/BulletinFactory.java @@ -14,6 +14,7 @@ import android.view.HapticFeedbackConstants; import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; +import android.widget.ImageView; import androidx.annotation.CheckResult; import androidx.annotation.NonNull; @@ -35,6 +36,7 @@ import org.telegram.messenger.Utilities; import org.telegram.tgnet.TLRPC; import org.telegram.ui.ActionBar.BaseFragment; import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.LaunchActivity; import org.telegram.ui.PremiumPreviewFragment; import java.util.ArrayList; @@ -57,6 +59,14 @@ public final class BulletinFactory { public static final int ICON_TYPE_NOT_FOUND = 0; public static final int ICON_TYPE_WARNING = 1; + public static BulletinFactory global() { + BaseFragment baseFragment = LaunchActivity.getLastFragment(); + if (baseFragment == null) { + return null; + } + return BulletinFactory.of(baseFragment); + } + public enum FileType { PHOTO("PhotoSavedHint", R.string.PhotoSavedHint, Icon.SAVED_TO_GALLERY), @@ -175,6 +185,15 @@ public final class BulletinFactory { return createSimpleBulletin(iconRawId, text, button, text.length() < 20 ? Bulletin.DURATION_SHORT : Bulletin.DURATION_LONG, onButtonClick); } + public Bulletin createSimpleBulletin(int iconRawId, CharSequence text, CharSequence subtext, CharSequence button, Runnable onButtonClick) { + final Bulletin.TwoLineLottieLayout layout = new Bulletin.TwoLineLottieLayout(getContext(), resourcesProvider); + layout.setAnimation(iconRawId, 36, 36); + layout.titleTextView.setText(text); + layout.subtitleTextView.setText(subtext); + layout.setButton(new Bulletin.UndoButton(getContext(), true, resourcesProvider).setText(button).setUndoAction(onButtonClick)); + return create(layout, Bulletin.DURATION_PROLONG); + } + public Bulletin createSimpleBulletin(int iconRawId, CharSequence text, CharSequence button, int duration, Runnable onButtonClick) { final Bulletin.LottieLayout layout = new Bulletin.LottieLayout(getContext(), resourcesProvider); layout.setAnimation(iconRawId, 36, 36); @@ -197,6 +216,49 @@ public final class BulletinFactory { return create(layout, Bulletin.DURATION_LONG); } + public Bulletin createSimpleBulletin(Drawable drawable, CharSequence text) { + final Bulletin.LottieLayout layout = new Bulletin.LottieLayout(getContext(), resourcesProvider); + layout.imageView.setImageDrawable(drawable); + layout.textView.setText(text); + layout.textView.setSingleLine(false); + layout.textView.setMaxLines(2); + return create(layout, Bulletin.DURATION_LONG); + } + + public Bulletin createSimpleBulletin(Drawable drawable, CharSequence text, CharSequence subtitle) { + final Bulletin.TwoLineLottieLayout layout = new Bulletin.TwoLineLottieLayout(getContext(), resourcesProvider); + layout.imageView.setImageDrawable(drawable); + layout.titleTextView.setText(text); + layout.subtitleTextView.setText(subtitle); + return create(layout, Bulletin.DURATION_LONG); + } + + public Bulletin createSimpleBulletin(CharSequence text, CharSequence subtitle) { + final Bulletin.TwoLineLottieLayout layout = new Bulletin.TwoLineLottieLayout(getContext(), resourcesProvider); + layout.hideImage(); + layout.titleTextView.setText(text); + layout.subtitleTextView.setText(subtitle); + return create(layout, Bulletin.DURATION_PROLONG); + } + + public Bulletin createSimpleBulletin(Drawable drawable, CharSequence text, CharSequence subtitle, String button, Runnable onButtonClick) { + final Bulletin.TwoLineLottieLayout layout = new Bulletin.TwoLineLottieLayout(getContext(), resourcesProvider); + layout.imageView.setImageDrawable(drawable); + layout.titleTextView.setText(text); + layout.subtitleTextView.setText(subtitle); + layout.setButton(new Bulletin.UndoButton(getContext(), true, resourcesProvider).setText(button).setUndoAction(onButtonClick)); + return create(layout, Bulletin.DURATION_LONG); + } + + public Bulletin createSimpleBulletin(CharSequence text, CharSequence subtitle, String button, Runnable onButtonClick) { + final Bulletin.TwoLineLottieLayout layout = new Bulletin.TwoLineLottieLayout(getContext(), resourcesProvider); + layout.hideImage(); + layout.titleTextView.setText(text); + layout.subtitleTextView.setText(subtitle); + layout.setButton(new Bulletin.UndoButton(getContext(), true, resourcesProvider).setText(button).setUndoAction(onButtonClick)); + return create(layout, Bulletin.DURATION_PROLONG); + } + public Bulletin createUndoBulletin(CharSequence text, Runnable onUndo, Runnable onAction) { final Bulletin.LottieLayout layout = new Bulletin.LottieLayout(getContext(), resourcesProvider); layout.textView.setText(text); @@ -282,7 +344,7 @@ public final class BulletinFactory { if (ChatObject.isChannelAndNotMegaGroup(chat)) { text = AndroidUtilities.replaceTags(LocaleController.formatPluralString("AddedMembersToChannel", users.size())); } else { - text = AndroidUtilities.replaceTags(LocaleController.formatPluralString("AddedMembersToGroup", users.size())); + text = AndroidUtilities.replaceTags(LocaleController.formatPluralString("AddedSubscribersToChannel", users.size())); } } return createUsersBulletin(users, text); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/CacheChart.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/CacheChart.java index 383932f3d..b5e132054 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/CacheChart.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/CacheChart.java @@ -28,6 +28,7 @@ import android.view.View; import com.google.zxing.common.detector.MathUtils; import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.LiteMode; import org.telegram.messenger.R; import org.telegram.messenger.SvgHelper; import org.telegram.ui.ActionBar.Theme; @@ -248,7 +249,7 @@ public class CacheChart extends View { float innerRadius, float outerRadius, float textAlpha, float alpha ) { - if (alpha <= 0) { + if (alpha <= 0 || !LiteMode.isEnabled(LiteMode.FLAGS_CHAT)) { return; } long now = System.currentTimeMillis(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatActivityEnterView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatActivityEnterView.java index 193f781ce..2fe7d1992 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatActivityEnterView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatActivityEnterView.java @@ -109,6 +109,7 @@ import org.telegram.messenger.ContactsController; import org.telegram.messenger.DialogObject; import org.telegram.messenger.Emoji; import org.telegram.messenger.FileLog; +import org.telegram.messenger.LiteMode; import org.telegram.messenger.LocaleController; import org.telegram.messenger.MediaController; import org.telegram.messenger.MediaDataController; @@ -141,6 +142,7 @@ import org.telegram.ui.ActionBar.SimpleTextView; import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.BasePermissionsActivity; import org.telegram.ui.ChatActivity; +import org.telegram.ui.Components.Premium.GiftPremiumBottomSheet; import org.telegram.ui.Components.Premium.PremiumFeatureBottomSheet; import org.telegram.ui.ContentPreviewViewer; import org.telegram.ui.DialogsActivity; @@ -458,6 +460,8 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific private ImageView notifyButton; @Nullable private ImageView scheduledButton; + @Nullable + private ImageView giftButton; private boolean scheduleButtonHidden; private AnimatorSet scheduledButtonAnimation; @Nullable @@ -556,8 +560,6 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific private MessageObject pendingMessageObject; private TLRPC.KeyboardButton pendingLocationButton; - private boolean configAnimationsEnabled; - private boolean waitingForKeyboardOpen; private boolean waitingForKeyboardOpenAfterAnimation; private boolean wasSendTyping; @@ -899,8 +901,8 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific public float iconScale; - BlobDrawable tinyWaveDrawable = new BlobDrawable(11); - BlobDrawable bigWaveDrawable = new BlobDrawable(12); + BlobDrawable tinyWaveDrawable = new BlobDrawable(11, LiteMode.FLAGS_CHAT); + BlobDrawable bigWaveDrawable = new BlobDrawable(12, LiteMode.FLAGS_CHAT); private Drawable tooltipBackground; private Drawable tooltipBackgroundArrow; @@ -1231,7 +1233,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific radius = radius + AndroidUtilities.dp(16) * progressToSeekbarStep1; radius *= (1f - exitProgress2); - if (configAnimationsEnabled && exitTransition > 0.6f) { + if (LiteMode.isEnabled(LiteMode.FLAGS_CHAT) && exitTransition > 0.6f) { circleAlpha = Math.max(0, 1f - (exitTransition - 0.6f) / 0.4f); } } @@ -1291,7 +1293,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific } } - if (configAnimationsEnabled) { + if (LiteMode.isEnabled(LiteMode.FLAGS_CHAT)) { tinyWaveDrawable.minRadius = AndroidUtilities.dp(47); tinyWaveDrawable.maxRadius = AndroidUtilities.dp(47) + AndroidUtilities.dp(15) * BlobDrawable.FORM_SMALL_MAX; @@ -1309,7 +1311,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific lastUpdateTime = System.currentTimeMillis(); float slideToCancelProgress1 = slideToCancelProgress > 0.7f ? 1f : slideToCancelProgress / 0.7f; - if (configAnimationsEnabled && progressToSeekbarStep2 != 1 && exitProgress2 < 0.4f && slideToCancelProgress1 > 0 && !canceledByGesture) { + if (LiteMode.isEnabled(LiteMode.FLAGS_CHAT) && progressToSeekbarStep2 != 1 && exitProgress2 < 0.4f && slideToCancelProgress1 > 0 && !canceledByGesture) { if (showWaves && wavesEnterAnimation != 1f) { wavesEnterAnimation += 0.04f; if (wavesEnterAnimation > 1f) { @@ -1796,7 +1798,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific this.drawBlur = false; this.isChat = isChat; - smoothKeyboard = isChat && SharedConfig.smoothKeyboard && !AndroidUtilities.isInMultiwindow && (fragment == null || !fragment.isInBubbleMode()); + smoothKeyboard = isChat && !AndroidUtilities.isInMultiwindow && (fragment == null || !fragment.isInBubbleMode()); dotPaint = new Paint(Paint.ANTI_ALIAS_FLAG); dotPaint.setColor(getThemedColor(Theme.key_chat_emojiPanelNewTrending)); setFocusable(true); @@ -1818,6 +1820,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific NotificationCenter.getInstance(currentAccount).addObserver(this, NotificationCenter.sendingMessagesChanged); NotificationCenter.getInstance(currentAccount).addObserver(this, NotificationCenter.audioRecordTooShort); NotificationCenter.getInstance(currentAccount).addObserver(this, NotificationCenter.updateBotMenuButton); + NotificationCenter.getInstance(currentAccount).addObserver(this, NotificationCenter.didUpdatePremiumGiftFieldIcon); NotificationCenter.getGlobalInstance().addObserver(this, NotificationCenter.emojiLoaded); parentActivity = context; @@ -1829,7 +1832,6 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific sizeNotifierLayout.setDelegate(this); SharedPreferences preferences = MessagesController.getGlobalMainSettings(); sendByEnter = preferences.getBoolean("send_by_enter", false); - configAnimationsEnabled = preferences.getBoolean("view_animations", true); textFieldContainer = new FrameLayout(context) { @Override @@ -2058,7 +2060,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific if (hasRecordVideo) { calledRecordRunnable = false; recordAudioVideoRunnableStarted = true; - AndroidUtilities.runOnUIThread(recordAudioVideoRunnable, 150); + AndroidUtilities.runOnUIThread(recordAudioVideoRunnable, Math.max(150, ViewConfiguration.getLongPressTimeout())); } else { recordAudioVideoRunnable.run(); } @@ -2437,6 +2439,24 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific }); } + private void createGiftButton() { + if (giftButton != null || parentFragment == null) { + return; + } + + giftButton = new ImageView(getContext()); + giftButton.setImageResource(R.drawable.msg_input_gift); + giftButton.setColorFilter(new PorterDuffColorFilter(getThemedColor(Theme.key_chat_messagePanelIcons), PorterDuff.Mode.MULTIPLY)); + giftButton.setVisibility(GONE); + giftButton.setContentDescription(LocaleController.getString(R.string.GiftPremium)); + giftButton.setScaleType(ImageView.ScaleType.CENTER); + if (Build.VERSION.SDK_INT >= 21) { + giftButton.setBackground(Theme.createSelectorDrawable(getThemedColor(Theme.key_listSelector))); + } + attachLayout.addView(giftButton, 0, LayoutHelper.createFrame(48, 48, Gravity.BOTTOM | Gravity.RIGHT)); + giftButton.setOnClickListener(v -> new GiftPremiumBottomSheet(getParentFragment(), getParentFragment().getCurrentUser()).show()); + } + private void createBotButton() { if (botButton != null) { return; @@ -2612,7 +2632,6 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific }); videoTimelineView = new VideoTimelineView(getContext()); - videoTimelineView.setColor(getThemedColor(Theme.key_chat_messagePanelVideoFrame)); videoTimelineView.setRoundFrames(true); videoTimelineView.setDelegate(new VideoTimelineView.VideoTimelineViewDelegate() { @Override @@ -3141,7 +3160,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific } public void forceSmoothKeyboard(boolean smoothKeyboard) { - this.smoothKeyboard = smoothKeyboard && SharedConfig.smoothKeyboard && !AndroidUtilities.isInMultiwindow && (parentFragment == null || !parentFragment.isInBubbleMode()); + this.smoothKeyboard = smoothKeyboard && !AndroidUtilities.isInMultiwindow && (parentFragment == null || !parentFragment.isInBubbleMode()); } protected void onLineCountChanged(int oldLineCount, int newLineCount) { @@ -4531,6 +4550,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.sendingMessagesChanged); NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.audioRecordTooShort); NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.updateBotMenuButton); + NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.didUpdatePremiumGiftFieldIcon); NotificationCenter.getGlobalInstance().removeObserver(this, NotificationCenter.emojiLoaded); if (emojiView != null) { emojiView.onDestroy(); @@ -4709,6 +4729,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific } updateScheduleButton(false); + updateGiftButton(false); checkRoundVideo(); checkChannelRights(); updateFieldHint(false); @@ -7387,6 +7408,19 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific return null; } + public void updateGiftButton(boolean animated) { + boolean visible = !MessagesController.getInstance(currentAccount).premiumLocked && MessagesController.getInstance(currentAccount).giftAttachMenuIcon && + MessagesController.getInstance(currentAccount).giftTextFieldIcon && getParentFragment() != null && getParentFragment().getCurrentUser() != null && !BuildVars.IS_BILLING_UNAVAILABLE && + !getParentFragment().getCurrentUser().self && !getParentFragment().getCurrentUser().premium && getParentFragment().getCurrentUserInfo() != null && !getParentFragment().getCurrentUserInfo().premium_gifts.isEmpty(); + + if (!visible && giftButton == null) { + return; + } + createGiftButton(); + + AndroidUtilities.updateViewVisibilityAnimated(giftButton, visible, 1f, animated); + } + public void updateScheduleButton(boolean animated) { boolean notifyVisible = false; if (DialogObject.isChatDialog(dialog_id)) { @@ -8636,13 +8670,6 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific } botKeyboardViewVisible = false; } - if (sizeNotifierLayout != null) { - if (!SharedConfig.smoothKeyboard && show == 0) { - emojiPadding = 0; - sizeNotifierLayout.requestLayout(); - onWindowSizeChanged(); - } - } updateBotButton(true); } @@ -9233,6 +9260,8 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific updateBotButton(false); } + } else if (id == NotificationCenter.didUpdatePremiumGiftFieldIcon) { + updateGiftButton(true); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlert.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlert.java index 5d9625b8c..f081b592c 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlert.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlert.java @@ -70,6 +70,7 @@ import androidx.recyclerview.widget.RecyclerView; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.ChatObject; import org.telegram.messenger.ContactsController; +import org.telegram.messenger.DialogObject; import org.telegram.messenger.DocumentObject; import org.telegram.messenger.Emoji; import org.telegram.messenger.ImageLocation; @@ -95,10 +96,12 @@ import org.telegram.ui.ActionBar.AdjustPanLayoutHelper; import org.telegram.ui.ActionBar.AlertDialog; import org.telegram.ui.ActionBar.BaseFragment; import org.telegram.ui.ActionBar.BottomSheet; +import org.telegram.ui.ActionBar.INavigationLayout; import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.ActionBar.ThemeDescription; import org.telegram.ui.BasePermissionsActivity; import org.telegram.ui.ChatActivity; +import org.telegram.ui.DialogsActivity; import org.telegram.ui.LaunchActivity; import org.telegram.ui.PassportActivity; import org.telegram.ui.PaymentFormActivity; @@ -229,6 +232,53 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N } } + @Override + public void onWebAppSwitchInlineQuery(TLRPC.User botUser, String query, List chatTypes) { + if (chatTypes.isEmpty()) { + if (baseFragment instanceof ChatActivity) { + ((ChatActivity) baseFragment).getChatActivityEnterView().setFieldText("@" + UserObject.getPublicUsername(botUser) + " " + query); + } + dismiss(true); + } else { + Bundle args = new Bundle(); + args.putInt("dialogsType", DialogsActivity.DIALOGS_TYPE_START_ATTACH_BOT); + args.putBoolean("onlySelect", true); + + args.putBoolean("allowGroups", chatTypes.contains("groups")); + args.putBoolean("allowUsers", chatTypes.contains("users")); + args.putBoolean("allowChannels", chatTypes.contains("channels")); + args.putBoolean("allowBots", chatTypes.contains("bots")); + + DialogsActivity dialogsActivity = new DialogsActivity(args); + OverlayActionBarLayoutDialog overlayActionBarLayoutDialog = new OverlayActionBarLayoutDialog(getContext(), resourcesProvider); + dialogsActivity.setDelegate((fragment, dids, message1, param, topicsFragment) -> { + long did = dids.get(0).dialogId; + + Bundle args1 = new Bundle(); + args1.putBoolean("scrollToTopOnResume", true); + if (DialogObject.isEncryptedDialog(did)) { + args1.putInt("enc_id", DialogObject.getEncryptedChatId(did)); + } else if (DialogObject.isUserDialog(did)) { + args1.putLong("user_id", did); + } else { + args1.putLong("chat_id", -did); + } + args1.putString("inline_query_input", "@" + UserObject.getPublicUsername(botUser) + " " + query); + + BaseFragment lastFragment = baseFragment; + if (MessagesController.getInstance(currentAccount).checkCanOpenChat(args1, lastFragment)) { + overlayActionBarLayoutDialog.dismiss(); + dismiss(true); + + lastFragment.presentFragment(new INavigationLayout.NavigationParams(new ChatActivity(args1)).setRemoveLast(true)); + } + return true; + }); + overlayActionBarLayoutDialog.show(); + overlayActionBarLayoutDialog.addFragment(dialogsActivity); + } + } + @Override public void onSetupMainButton(boolean isVisible, boolean isActive, String text, int color, int textColor, boolean isProgressVisible) { if (currentAttachLayout != webViewLayout || !webViewLayout.isBotButtonAvailable()) { @@ -1069,7 +1119,7 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N } imageView.setSize(AndroidUtilities.dp(28), AndroidUtilities.dp(28)); - imageView.setColorFilter(new PorterDuffColorFilter(getThemedColor(Theme.key_chat_attachContactIcon), PorterDuff.Mode.SRC_IN)); + imageView.setColorFilter(new PorterDuffColorFilter(getThemedColor(Theme.key_chat_attachIcon), PorterDuff.Mode.SRC_IN)); attachMenuBot = bot; selector.setVisibility(GONE); updateMargins(); @@ -1259,7 +1309,7 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N setMeasuredDimension(widthSize, heightSize); widthSize -= backgroundPaddingLeft * 2; - int keyboardSize = SharedConfig.smoothKeyboard ? 0 : measureKeyboardHeight(); + int keyboardSize = 0; if (!commentTextView.isWaitingForKeyboardOpen() && keyboardSize <= AndroidUtilities.dp(20) && !commentTextView.isPopupShowing() && !commentTextView.isAnimatePopupClosing()) { ignoreLayout = true; commentTextView.hideEmojiView(); @@ -1268,7 +1318,7 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N if (keyboardSize <= AndroidUtilities.dp(20)) { int paddingBottom; - if (SharedConfig.smoothKeyboard && keyboardVisible) { + if (keyboardVisible) { paddingBottom = 0; } else { paddingBottom = commentTextView.getEmojiPadding(); @@ -1326,7 +1376,7 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N int keyboardSize = measureKeyboardHeight(); int paddingBottom = getPaddingBottom(); - if (SharedConfig.smoothKeyboard && keyboardVisible) { + if (keyboardVisible) { paddingBottom += 0; } else { paddingBottom += keyboardSize <= AndroidUtilities.dp(20) && !AndroidUtilities.isInMultiwindow && !AndroidUtilities.isTablet() ? commentTextView.getEmojiPadding() : 0; @@ -4220,7 +4270,7 @@ public class ChatAttachAlert extends BottomSheet implements NotificationCenter.N dialog.show(); TextView button = (TextView) dialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(getThemedColor(Theme.key_dialogTextRed2)); + button.setTextColor(getThemedColor(Theme.key_dialogTextRed)); } return; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlertPhotoLayout.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlertPhotoLayout.java index f8b3e2858..c8da7a9fb 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlertPhotoLayout.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlertPhotoLayout.java @@ -8,6 +8,8 @@ package org.telegram.ui.Components; +import static android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON; + import android.Manifest; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; @@ -20,11 +22,13 @@ import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; +import android.graphics.Color; import android.graphics.Outline; import android.graphics.Paint; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; import android.graphics.Rect; +import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.hardware.Camera; import android.media.MediaMetadataRetriever; @@ -33,6 +37,7 @@ import android.os.Build; import android.provider.MediaStore; import android.provider.Settings; import android.text.TextUtils; +import android.util.Log; import android.util.TypedValue; import android.view.Gravity; import android.view.KeyEvent; @@ -63,6 +68,7 @@ import org.telegram.messenger.ChatObject; import org.telegram.messenger.FileLoader; import org.telegram.messenger.FileLog; import org.telegram.messenger.ImageReceiver; +import org.telegram.messenger.LiteMode; import org.telegram.messenger.LocaleController; import org.telegram.messenger.MediaController; import org.telegram.messenger.MediaDataController; @@ -1775,7 +1781,11 @@ public class ChatAttachAlertPhotoLayout extends ChatAttachAlert.AttachAlertLayou } if (!(parentAlert.baseFragment instanceof ChatActivity) || !((ChatActivity) parentAlert.baseFragment).isSecretChat()) { for (int a = 0, size = cameraPhotos.size(); a < size; a++) { - AndroidUtilities.addMediaToGallery(((MediaController.PhotoEntry) cameraPhotos.get(a)).path); + MediaController.PhotoEntry entry = (MediaController.PhotoEntry) cameraPhotos.get(a); + if (entry.ttl > 0) { + continue; + } + AndroidUtilities.addMediaToGallery(entry.path); } } parentAlert.applyCaption(); @@ -1973,9 +1983,10 @@ public class ChatAttachAlertPhotoLayout extends ChatAttachAlert.AttachAlertLayou boolean cameraExpanded; private void openCamera(boolean animated) { - if (cameraView == null || cameraInitAnimation != null || !cameraView.isInited() || parentAlert.isDismissed()) { + if (cameraView == null || cameraInitAnimation != null || parentAlert.isDismissed()) { return; } + cameraView.initTexture(); if (parentAlert.avatarPicker == 2 || parentAlert.baseFragment instanceof ChatActivity) { tooltipTextView.setVisibility(VISIBLE); } else { @@ -2000,9 +2011,12 @@ public class ChatAttachAlertPhotoLayout extends ChatAttachAlert.AttachAlertLayou animateCameraValues[2] = itemSize; additionCloseCameraY = 0; cameraExpanded = true; - cameraView.setFpsLimit(-1); + if (cameraView != null) { + cameraView.setFpsLimit(-1); + } AndroidUtilities.hideKeyboard(this); AndroidUtilities.setLightNavigationBar(parentAlert.getWindow(), false); + parentAlert.getWindow().addFlags(FLAG_KEEP_SCREEN_ON); if (animated) { setCameraOpenProgress(0); cameraAnimationInProgress = true; @@ -2027,10 +2041,12 @@ public class ChatAttachAlertPhotoLayout extends ChatAttachAlert.AttachAlertLayou public void onAnimationEnd(Animator animator) { NotificationCenter.getInstance(parentAlert.currentAccount).onAnimationFinish(animationIndex); cameraAnimationInProgress = false; - if (Build.VERSION.SDK_INT >= 21 && cameraView != null) { - cameraView.invalidateOutline(); - } else if (cameraView != null) { - cameraView.invalidate(); + if (cameraView != null) { + if (Build.VERSION.SDK_INT >= 21) { + cameraView.invalidateOutline(); + } else { + cameraView.invalidate(); + } } if (cameraOpened) { parentAlert.delegate.onCameraOpened(); @@ -2053,15 +2069,21 @@ public class ChatAttachAlertPhotoLayout extends ChatAttachAlert.AttachAlertLayou } } parentAlert.delegate.onCameraOpened(); - if (Build.VERSION.SDK_INT >= 21) { + if (cameraView != null && Build.VERSION.SDK_INT >= 21) { cameraView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_FULLSCREEN); } } cameraOpened = true; - cameraView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); + if (cameraView != null) { + cameraView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); + } if (Build.VERSION.SDK_INT >= 19) { gridView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS); } + + if (!LiteMode.isEnabled(LiteMode.FLAGS_CHAT) && cameraView != null && cameraView.isInited()) { + cameraView.showTexture(true, animated); + } } public void loadGalleryPhotos() { @@ -2081,7 +2103,8 @@ public class ChatAttachAlertPhotoLayout extends ChatAttachAlert.AttachAlertLayou return; } if (cameraView == null) { - cameraView = new CameraView(parentAlert.baseFragment.getParentActivity(), parentAlert.openWithFrontFaceCamera) { + final boolean lazy = !LiteMode.isEnabled(LiteMode.FLAGS_CHAT); + cameraView = new CameraView(parentAlert.baseFragment.getParentActivity(), parentAlert.openWithFrontFaceCamera, lazy) { Bulletin.Delegate bulletinDelegate = new Bulletin.Delegate() { @Override @@ -2120,6 +2143,9 @@ public class ChatAttachAlertPhotoLayout extends ChatAttachAlert.AttachAlertLayou Bulletin.removeDelegate(cameraView); } }; + if (cameraCell != null && lazy) { + cameraView.setThumbDrawable(cameraCell.getDrawable()); + } cameraView.setRecordFile(AndroidUtilities.generateVideoPath(parentAlert.baseFragment instanceof ChatActivity && ((ChatActivity) parentAlert.baseFragment).isSecretChat())); cameraView.setFocusable(true); cameraView.setFpsLimit(30); @@ -2450,12 +2476,15 @@ public class ChatAttachAlertPhotoLayout extends ChatAttachAlert.AttachAlertLayou public void onAnimationEnd(Animator animator) { NotificationCenter.getInstance(parentAlert.currentAccount).onAnimationFinish(animationIndex); cameraExpanded = false; + parentAlert.getWindow().clearFlags(FLAG_KEEP_SCREEN_ON); setCameraOpenProgress(0f); cameraAnimationInProgress = false; - if (Build.VERSION.SDK_INT >= 21 && cameraView != null) { - cameraView.invalidateOutline(); - } else if (cameraView != null){ - cameraView.invalidate(); + if (cameraView != null) { + if (Build.VERSION.SDK_INT >= 21) { + cameraView.invalidateOutline(); + } else { + cameraView.invalidate(); + } } cameraOpened = false; @@ -2480,6 +2509,7 @@ public class ChatAttachAlertPhotoLayout extends ChatAttachAlert.AttachAlertLayou animatorSet.start(); } else { cameraExpanded = false; + parentAlert.getWindow().clearFlags(FLAG_KEEP_SCREEN_ON); setCameraOpenProgress(0f); animateCameraValues[0] = 0; setCameraOpenProgress(0); @@ -2498,15 +2528,23 @@ public class ChatAttachAlertPhotoLayout extends ChatAttachAlert.AttachAlertLayou } } cameraOpened = false; - cameraView.setFpsLimit(30); - if (Build.VERSION.SDK_INT >= 21) { - cameraView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); + if (cameraView != null) { + cameraView.setFpsLimit(30); + if (Build.VERSION.SDK_INT >= 21) { + cameraView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); + } } } - cameraView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_AUTO); + if (cameraView != null) { + cameraView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_AUTO); + } if (Build.VERSION.SDK_INT >= 19) { gridView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_AUTO); } + + if (!LiteMode.isEnabled(LiteMode.FLAGS_CHAT) && cameraView != null) { + cameraView.showTexture(false, animated); + } } float animationClipTop; @@ -2547,21 +2585,18 @@ public class ChatAttachAlertPhotoLayout extends ChatAttachAlert.AttachAlertLayou float fromScaleY = startHeight / endHeight; float fromScaleX = startWidth/ endWidth; - float scaleOffsetX = 0; - float scaleOffsetY = 0; - if (cameraExpanded) { cameraViewW = (int) endWidth; cameraViewH = (int) endHeight; - float s = fromScale * (1f - value) + value; + final float s = fromScale * (1f - value) + value; cameraView.getTextureView().setScaleX(s); cameraView.getTextureView().setScaleY(s); - float sX = fromScaleX * (1f - value) + value; - float sY = fromScaleY * (1f - value) + value; + final float sX = fromScaleX * (1f - value) + value; + final float sY = fromScaleY * (1f - value) + value; - scaleOffsetY = (1 - sY) * endHeight / 2; - scaleOffsetX = (1 - sX) * endWidth / 2; + final float scaleOffsetY = (1 - sY) * endHeight / 2; + final float scaleOffsetX = (1 - sX) * endWidth / 2; cameraView.setTranslationX(fromX * (1f - value) + toX * value - scaleOffsetX); cameraView.setTranslationY(fromY * (1f - value) + toY * value - scaleOffsetY); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAvatarContainer.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAvatarContainer.java index 5f51b5e75..a3ca79bbd 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAvatarContainer.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAvatarContainer.java @@ -996,6 +996,9 @@ public class ChatAvatarContainer extends FrameLayout implements NotificationCent currentConnectionState = ConnectionsManager.getInstance(currentAccount).getConnectionState(); updateCurrentConnectionState(); } + if (emojiStatusDrawable != null) { + emojiStatusDrawable.attach(); + } } @Override @@ -1005,6 +1008,9 @@ public class ChatAvatarContainer extends FrameLayout implements NotificationCent NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.didUpdateConnectionState); NotificationCenter.getGlobalInstance().removeObserver(this, NotificationCenter.emojiLoaded); } + if (emojiStatusDrawable != null) { + emojiStatusDrawable.detach(); + } } @Override diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatNotificationsPopupWrapper.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatNotificationsPopupWrapper.java index 08bb94e29..68157cad0 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatNotificationsPopupWrapper.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatNotificationsPopupWrapper.java @@ -171,7 +171,7 @@ public class ChatNotificationsPopupWrapper { int color; if (muted) { muteUnmuteButton.setTextAndIcon(LocaleController.getString("UnmuteNotifications", R.string.UnmuteNotifications), R.drawable.msg_unmute); - color = Theme.getColor(Theme.key_wallet_greenText); + color = Theme.getColor(Theme.key_windowBackgroundWhiteGreenText2); soundToggle.setVisibility(View.GONE); } else { muteUnmuteButton.setTextAndIcon(LocaleController.getString("MuteNotifications", R.string.MuteNotifications), R.drawable.msg_mute); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatScrimPopupContainerLayout.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatScrimPopupContainerLayout.java index 84036f8c3..839af67bb 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatScrimPopupContainerLayout.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatScrimPopupContainerLayout.java @@ -107,6 +107,7 @@ public class ChatScrimPopupContainerLayout extends LinearLayout { } else { super.onMeasure(widthMeasureSpec, heightMeasureSpec); } + maxHeight = getMeasuredHeight(); } private void updatePopupTranslation() { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/CheckBox2.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/CheckBox2.java index 29342743d..b2fd95340 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/CheckBox2.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/CheckBox2.java @@ -118,9 +118,9 @@ public class CheckBox2 extends View { @Override public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfo(info); - info.setClassName(CheckBox.class.getName()); - info.setChecked(isChecked()); + info.setClassName("android.widget.Switch"); info.setCheckable(true); + info.setChecked(isChecked()); } public void setIcon(int icon) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/CounterView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/CounterView.java index d4c43797e..dcba7af66 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/CounterView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/CounterView.java @@ -45,7 +45,7 @@ public class CounterView extends View { } - public void setColors(String textKey, String circleKey){ + public void setColors(String textKey, String circleKey) { counterDrawable.textColorKey = textKey; counterDrawable.circleColorKey = circleKey; } @@ -73,6 +73,7 @@ public class CounterView extends View { private final static int ANIMATION_TYPE_OUT = 1; private final static int ANIMATION_TYPE_REPLACE = 2; public boolean shortFormat; + public float circleScale = 1f; int animationType = -1; @@ -103,6 +104,7 @@ public class CounterView extends View { public int gravity = Gravity.CENTER; float countLeft; float x; + public float radius = 11.5f; private boolean reverseAnimation; public float horizontalPadding; @@ -143,13 +145,23 @@ public class CounterView extends View { private void drawInternal(Canvas canvas) { - float countTop = (lastH - AndroidUtilities.dp(23)) / 2f; + float size = radius * 2; + float countTop = (lastH - AndroidUtilities.dp(size)) / 2f; updateX(countWidth); - rectF.set(x, countTop, x + countWidth + AndroidUtilities.dp(11), countTop + AndroidUtilities.dp(23)); + rectF.set(x, countTop, x + countWidth + AndroidUtilities.dp(radius - 0.5f), countTop + AndroidUtilities.dp(size)); if (circlePaint != null && drawBackground) { - canvas.drawRoundRect(rectF, 11.5f * AndroidUtilities.density, 11.5f * AndroidUtilities.density, circlePaint); + boolean needRestore = false; + if (circleScale != 1f) { + canvas.save(); + canvas.scale(circleScale, circleScale, rectF.centerX(), rectF.centerY()); + needRestore = true; + } + canvas.drawRoundRect(rectF, radius * AndroidUtilities.density, radius * AndroidUtilities.density, circlePaint); if (addServiceGradient && Theme.hasGradientService()) { - canvas.drawRoundRect(rectF, 11.5f * AndroidUtilities.density, 11.5f * AndroidUtilities.density, Theme.chat_actionBackgroundGradientDarkenPaint); + canvas.drawRoundRect(rectF, radius * AndroidUtilities.density, radius * AndroidUtilities.density, Theme.chat_actionBackgroundGradientDarkenPaint); + } + if (needRestore) { + canvas.restore(); } } if (countLayout != null) { @@ -307,7 +319,7 @@ public class CounterView extends View { progressHalf = 1f; } - float countTop = (lastH - AndroidUtilities.dp(23)) / 2f; + float countTop = (lastH - AndroidUtilities.dp(radius * 2)) / 2f; float countWidth; if (this.countWidth == this.countWidthOld) { countWidth = this.countWidth; @@ -325,15 +337,24 @@ public class CounterView extends View { } } - rectF.set(x, countTop, x + countWidth + AndroidUtilities.dp(11), countTop + AndroidUtilities.dp(23)); + rectF.set(x, countTop, x + countWidth + AndroidUtilities.dp(radius - 0.5f), countTop + AndroidUtilities.dp(radius * 2)); canvas.save(); canvas.scale(scale, scale, rectF.centerX(), rectF.centerY()); + boolean needRestore = false; + if (circleScale != 1f) { + needRestore = true; + canvas.save(); + canvas.scale(circleScale, circleScale, rectF.centerX(), rectF.centerY()); + } if (drawBackground && circlePaint != null) { - canvas.drawRoundRect(rectF, 11.5f * AndroidUtilities.density, 11.5f * AndroidUtilities.density, circlePaint); + canvas.drawRoundRect(rectF, radius * AndroidUtilities.density, radius * AndroidUtilities.density, circlePaint); if (addServiceGradient && Theme.hasGradientService()) { - canvas.drawRoundRect(rectF, 11.5f * AndroidUtilities.density, 11.5f * AndroidUtilities.density, Theme.chat_actionBackgroundGradientDarkenPaint); + canvas.drawRoundRect(rectF, radius * AndroidUtilities.density, radius * AndroidUtilities.density, Theme.chat_actionBackgroundGradientDarkenPaint); } } + if (needRestore) { + canvas.restore(); + } canvas.clipRect(rectF); boolean increment = reverseAnimation != countAnimationIncrement; @@ -378,14 +399,14 @@ public class CounterView extends View { if (countChangeProgress != 1f) { if (animationType == ANIMATION_TYPE_IN || animationType == ANIMATION_TYPE_OUT) { updateX(countWidth); - float countTop = (lastH - AndroidUtilities.dp(23)) / 2f; + float countTop = (lastH - AndroidUtilities.dp(radius * 2)) / 2f; rectF.set(x, countTop, x + countWidth + AndroidUtilities.dp(11), countTop + AndroidUtilities.dp(23)); } else { float progressHalf = countChangeProgress * 2; if (progressHalf > 1f) { progressHalf = 1f; } - float countTop = (lastH - AndroidUtilities.dp(23)) / 2f; + float countTop = (lastH - AndroidUtilities.dp(radius * 2)) / 2f; float countWidth; if (this.countWidth == this.countWidthOld) { countWidth = this.countWidth; @@ -397,7 +418,7 @@ public class CounterView extends View { } } else { updateX(countWidth); - float countTop = (lastH - AndroidUtilities.dp(23)) / 2f; + float countTop = (lastH - AndroidUtilities.dp(radius * 2)) / 2f; rectF.set(x, countTop, x + countWidth + AndroidUtilities.dp(11), countTop + AndroidUtilities.dp(23)); } } @@ -436,6 +457,10 @@ public class CounterView extends View { Integer color = resourcesProvider != null ? resourcesProvider.getColor(key) : null; return color != null ? color : Theme.getColor(key); } + + public int getWidth() { + return currentCount == 0 ? 0 : (countWidth + AndroidUtilities.dp(radius - 0.5f)); + } } public float getEnterProgress() { @@ -453,4 +478,5 @@ public class CounterView extends View { public boolean isInOutAnimation() { return counterDrawable.animationType == CounterDrawable.ANIMATION_TYPE_IN || counterDrawable.animationType == CounterDrawable.ANIMATION_TYPE_OUT; } + } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/CustomPhoneKeyboardView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/CustomPhoneKeyboardView.java index f59d0ddf3..fccfd0e23 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/CustomPhoneKeyboardView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/CustomPhoneKeyboardView.java @@ -35,9 +35,12 @@ public class CustomPhoneKeyboardView extends ViewGroup { private EditText editText; private View[] views = new View[12]; + private View viewToFindFocus; + private boolean dispatchBackWhenEmpty; private boolean runningLongClick; private Runnable onBackButton = () -> { + checkFindEditText(); if (editText == null || editText.length() == 0 && !dispatchBackWhenEmpty) return; performHapticFeedback(HapticFeedbackConstants.KEYBOARD_TAP, HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING); @@ -100,6 +103,7 @@ public class CustomPhoneKeyboardView extends ViewGroup { String num = String.valueOf(i != 10 ? i + 1 : 0); views[i] = new NumberButtonView(context, num, symbols); views[i].setOnClickListener(v -> { + checkFindEditText(); if (editText == null) return; performHapticFeedback(HapticFeedbackConstants.KEYBOARD_TAP, HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING); @@ -186,6 +190,19 @@ public class CustomPhoneKeyboardView extends ViewGroup { }); } + public void setViewToFindFocus(View viewToFindFocus) { + this.viewToFindFocus = viewToFindFocus; + } + + public void checkFindEditText() { + if (editText == null && viewToFindFocus != null) { + View focus = viewToFindFocus.findFocus(); + if (focus instanceof EditText) { + editText = (EditText) focus; + } + } + } + public void setEditText(EditText editText) { this.editText = editText; dispatchBackWhenEmpty = false; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/EditTextBoldCursor.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/EditTextBoldCursor.java index 94bc96d17..887451f19 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/EditTextBoldCursor.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/EditTextBoldCursor.java @@ -447,12 +447,15 @@ public class EditTextBoldCursor extends EditTextEffects { invalidate(); } - public void setHintVisible(boolean value) { + public void setHintVisible(boolean value, boolean animated) { if (hintVisible == value) { return; } hintLastUpdateTime = System.currentTimeMillis(); hintVisible = value; + if (!animated) { + hintAlpha = hintVisible ? 1f : 0; + } invalidate(); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/EditTextEmoji.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/EditTextEmoji.java index ab084ed9d..abdd2fbfb 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/EditTextEmoji.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/EditTextEmoji.java @@ -334,7 +334,7 @@ public class EditTextEmoji extends FrameLayout implements NotificationCenter.Not showPopup(0); } if (byBackButton) { - if (SharedConfig.smoothKeyboard && emojiView != null && emojiView.getVisibility() == View.VISIBLE && !waitingForKeyboardOpen) { + if (emojiView != null && emojiView.getVisibility() == View.VISIBLE && !waitingForKeyboardOpen) { int height = emojiView.getMeasuredHeight(); ValueAnimator animator = ValueAnimator.ofFloat(0, height); animator.addUpdateListener(animation -> { @@ -433,24 +433,23 @@ public class EditTextEmoji extends FrameLayout implements NotificationCenter.Not } if (!keyboardVisible && !emojiWasVisible) { - if (SharedConfig.smoothKeyboard) { - ValueAnimator animator = ValueAnimator.ofFloat(emojiPadding, 0); - animator.addUpdateListener(animation -> { - float v = (float) animation.getAnimatedValue(); - emojiView.setTranslationY(v); - bottomPanelTranslationY(v); - }); - animator.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - emojiView.setTranslationY(0); - bottomPanelTranslationY(0); - } - }); - animator.setDuration(AdjustPanLayoutHelper.keyboardDuration); - animator.setInterpolator(AdjustPanLayoutHelper.keyboardInterpolator); - animator.start(); - } + ValueAnimator animator = ValueAnimator.ofFloat(emojiPadding, 0); + animator.addUpdateListener(animation -> { + float v = (float) animation.getAnimatedValue(); + emojiView.setTranslationY(v); + bottomPanelTranslationY(v); + }); + animator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + emojiView.setTranslationY(0); + bottomPanelTranslationY(0); + } + }); + animator.setDuration(AdjustPanLayoutHelper.keyboardDuration); + animator.setInterpolator(AdjustPanLayoutHelper.keyboardInterpolator); + animator.start(); + } } else { if (emojiButton != null) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/EmojiView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/EmojiView.java index ca56eb60d..c6460039d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/EmojiView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/EmojiView.java @@ -131,6 +131,7 @@ import org.telegram.ui.Components.ListView.RecyclerListViewWithOverlayDraw; import org.telegram.ui.Components.Premium.PremiumButtonView; import org.telegram.ui.Components.Premium.PremiumGradient; import org.telegram.ui.ContentPreviewViewer; +import org.telegram.ui.StickersActivity; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -2380,6 +2381,23 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific AndroidUtilities.runOnUIThread(checkExpandStickerTabsRunnable, 1500); sendReorder(); updateStickerTabs(true); + + if (SharedConfig.updateStickersOrderOnSend) { + SharedConfig.toggleUpdateStickersOrderOnSend(); + if (fragment != null) { + BulletinFactory.of(fragment).createSimpleBulletin( + R.raw.filter_reorder, + LocaleController.getString("DynamicPackOrderOff", R.string.DynamicPackOrderOff), + LocaleController.getString("DynamicPackOrderOffInfo", R.string.DynamicPackOrderOffInfo), + LocaleController.getString("Settings"), + () -> fragment.presentFragment(new StickersActivity(MediaDataController.TYPE_IMAGE, null)) + ).show(); + } else if (bulletinContainer != null) { + BulletinFactory.of(bulletinContainer, EmojiView.this.resourcesProvider).createSimpleBulletin(R.raw.filter_reorder, LocaleController.getString("DynamicPackOrderOff", R.string.DynamicPackOrderOff), LocaleController.getString("DynamicPackOrderOffInfo", R.string.DynamicPackOrderOffInfo)).show(); + } else { + return; + } + } } private void swapListElements(List list, int index1, int index2) { @@ -6415,7 +6433,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific alertDialog.show(); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/FlickerLoadingView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/FlickerLoadingView.java index 011733813..ab95d7b6e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/FlickerLoadingView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/FlickerLoadingView.java @@ -821,7 +821,7 @@ public class FlickerLoadingView extends View { return AndroidUtilities.dp(107); case REACTED_TYPE_WITH_EMOJI_HINT: case REACTED_TYPE: - return AndroidUtilities.dp(48); + return AndroidUtilities.dp(ReactedUsersListView.ITEM_HEIGHT_DP); case LIMIT_REACHED_GROUPS: return AndroidUtilities.dp(58); case LIMIT_REACHED_LINKS: diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/FloatingDebug/FloatingDebugView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/FloatingDebug/FloatingDebugView.java index c4b27b6e1..1bf4067bc 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/FloatingDebug/FloatingDebugView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/FloatingDebug/FloatingDebugView.java @@ -489,13 +489,6 @@ public class FloatingDebugView extends FrameLayout implements NotificationCenter Toast.makeText(getContext(), LocaleController.getString(SharedConfig.debugWebView ? R.string.DebugMenuWebViewDebugEnabled : R.string.DebugMenuWebViewDebugDisabled), Toast.LENGTH_SHORT).show(); })); } - items.add(new FloatingDebugController.DebugItem(LocaleController.getString(SharedConfig.useLNavigation ? R.string.AltNavigationDisable : R.string.AltNavigationEnable), () -> { - SharedConfig.useLNavigation = !SharedConfig.useLNavigation; - SharedConfig.saveConfig(); - if (getContext() instanceof Activity) { - ((Activity) getContext()).recreate(); - } - })); items.add(new FloatingDebugController.DebugItem(Theme.isCurrentThemeDark() ? "Switch to day theme" : "Switch to dark theme", () -> { boolean toDark; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Forum/ForumUtilities.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Forum/ForumUtilities.java index 26f24d1c1..894383b31 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/Forum/ForumUtilities.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Forum/ForumUtilities.java @@ -228,7 +228,7 @@ public class ForumUtilities { AnimatedEmojiSpan span; sb.setSpan(span = new AnimatedEmojiSpan(forumTopic.icon_emoji_id, .95f, paint == null ? null : paint.getFontMetricsInt()), 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); span.top = true; - span.cacheType = AnimatedEmojiDrawable.CACHE_TYPE_EMOJI_STATUS; + span.cacheType = AnimatedEmojiDrawable.CACHE_TYPE_ALERT_PREVIEW_STATIC; } else { sb.append(" "); Drawable drawable = ForumUtilities.createTopicDrawable(forumTopic); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/FragmentContextView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/FragmentContextView.java index d445fcf43..4aaff9386 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/FragmentContextView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/FragmentContextView.java @@ -45,16 +45,22 @@ import android.view.accessibility.AccessibilityNodeInfo; import android.widget.Button; import android.widget.FrameLayout; import android.widget.ImageView; +import android.widget.LinearLayout; import android.widget.TextView; import androidx.annotation.IntDef; import androidx.annotation.Keep; +import androidx.core.graphics.ColorUtils; +import androidx.core.math.MathUtils; + +import com.google.android.gms.vision.Frame; import org.telegram.messenger.AccountInstance; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.ChatObject; import org.telegram.messenger.ContactsController; import org.telegram.messenger.DialogObject; +import org.telegram.messenger.LiteMode; import org.telegram.messenger.LocaleController; import org.telegram.messenger.LocationController; import org.telegram.messenger.MediaController; @@ -123,16 +129,14 @@ public class FragmentContextView extends FrameLayout implements NotificationCent private RLottieDrawable muteDrawable; private ImageView closeButton; private ActionBarMenuItem playbackSpeedButton; - private final float MIN_SPEED = 0.3f; - private final float MAX_SPEED = 2.5f; private SpeedIconDrawable speedIcon; - private ActionBarMenuSlider speedSlider; - private AnimatedTextView speedSliderText; + private ActionBarMenuSlider.SpeedSlider speedSlider; private ActionBarMenuItem.Item[] speedItems = new ActionBarMenuItem.Item[6]; private FrameLayout silentButton; private ImageView silentButtonImage; private FragmentContextView additionalContextView; private TextView joinButton; + private int joinButtonWidth; private CellFlickerDrawable joinButtonFlicker; private boolean isMuted; @@ -208,7 +212,7 @@ public class FragmentContextView extends FrameLayout implements NotificationCent private boolean checkImportAfterAnimation; private final static float[] speeds = new float[] { - .5f, 1f, 1.2f, 1.5f, 1.65f, 2f + .5f, 1f, 1.2f, 1.5f, 1.7f, 2f }; @Override @@ -429,6 +433,33 @@ public class FragmentContextView extends FrameLayout implements NotificationCent joinButtonFlicker.setParentWidth(getWidth()); } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + updateJoinButtonWidth(getMeasuredWidth()); + } + + @Override + public void setVisibility(int visibility) { + super.setVisibility(visibility); + if (visibility != View.VISIBLE) { + updateJoinButtonWidth(0); + joinButtonWidth = 0; + } + } + + private void updateJoinButtonWidth(int width) { + if (joinButtonWidth != width) { + titleTextView.setPadding( + titleTextView.getPaddingLeft(), + titleTextView.getPaddingTop(), + titleTextView.getPaddingRight() - joinButtonWidth + width, + titleTextView.getPaddingBottom() + ); + joinButtonWidth = width; + } + } }; joinButton.setText(LocaleController.getString("VoipChatJoin", R.string.VoipChatJoin)); joinButton.setTextColor(getThemedColor(Theme.key_featuredStickers_buttonText)); @@ -632,7 +663,7 @@ public class FragmentContextView extends FrameLayout implements NotificationCent builder.show(); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(getThemedColor(Theme.key_dialogTextRed2)); + button.setTextColor(getThemedColor(Theme.key_dialogTextRed)); } } else { MediaController.getInstance().cleanupPlayer(true, true); @@ -720,7 +751,7 @@ public class FragmentContextView extends FrameLayout implements NotificationCent }); } - private long lastPlaybackClick; + private boolean slidingSpeed; private void createPlaybackSpeedButton() { if (playbackSpeedButton != null) { @@ -740,25 +771,18 @@ public class FragmentContextView extends FrameLayout implements NotificationCent float oldSpeed = MediaController.getInstance().getPlaybackSpeed(isMusic), newSpeed = speeds[id]; MediaController.getInstance().setPlaybackSpeed(isMusic, newSpeed); if (oldSpeed != newSpeed) { - playbackSpeedChanged(oldSpeed, newSpeed); + playbackSpeedChanged(false, oldSpeed, newSpeed); } }); - speedIcon = new SpeedIconDrawable(true); - playbackSpeedButton.setIcon(speedIcon); + playbackSpeedButton.setIcon(speedIcon = new SpeedIconDrawable(true)); final float[] toggleSpeeds = new float[] { 1.0F, 1.5F, 2F }; - speedSlider = new ActionBarMenuSlider(getContext(), resourcesProvider); + speedSlider = new ActionBarMenuSlider.SpeedSlider(getContext(), resourcesProvider); + speedSlider.setRoundRadiusDp(6); + speedSlider.setDrawShadow(true); speedSlider.setOnValueChange((value, isFinal) -> { - final float speed = MIN_SPEED + (MAX_SPEED - MIN_SPEED) * value; - MediaController.getInstance().setPlaybackSpeed(isMusic, speed); + slidingSpeed = !isFinal; + MediaController.getInstance().setPlaybackSpeed(isMusic, speedSlider.getSpeed(value)); }); - speedSliderText = new AnimatedTextView(getContext(), false, true, true); - speedSliderText.setTypeface(AndroidUtilities.getTypeface(AndroidUtilities.TYPEFACE_ROBOTO_MEDIUM)); - speedSliderText.setTextColor(0xff000000); - speedSliderText.setAnimationProperties(.3f, 0, 165, CubicBezierInterpolator.EASE_OUT_QUINT); - speedSliderText.setTextSize(AndroidUtilities.dpf2(14)); - speedSliderText.getPaint().setStyle(Paint.Style.FILL_AND_STROKE); - speedSliderText.getPaint().setStrokeWidth(AndroidUtilities.dpf2(.3f)); - speedSlider.addView(speedSliderText, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_VERTICAL | (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT), 20, 0, 20, 0)); speedItems[0] = playbackSpeedButton.lazilyAddSubItem(0, R.drawable.msg_speed_slow, LocaleController.getString("SpeedSlow", R.string.SpeedSlow)); speedItems[1] = playbackSpeedButton.lazilyAddSubItem(1, R.drawable.msg_speed_normal, LocaleController.getString("SpeedNormal", R.string.SpeedNormal)); speedItems[2] = playbackSpeedButton.lazilyAddSubItem(2, R.drawable.msg_speed_medium, LocaleController.getString("SpeedMedium", R.string.SpeedMedium)); @@ -786,35 +810,49 @@ public class FragmentContextView extends FrameLayout implements NotificationCent } newSpeed = toggleSpeeds[index]; MediaController.getInstance().setPlaybackSpeed(isMusic, newSpeed); - playbackSpeedChanged(currentPlaybackSpeed, newSpeed); + playbackSpeedChanged(true, currentPlaybackSpeed, newSpeed); - final long now = System.currentTimeMillis(); - if (now - lastPlaybackClick > 400) { - int hintValue = MessagesController.getGlobalNotificationsSettings().getInt("speedhint", 2); - hintValue--; - if (hintValue < -10) { - hintValue = 2; - } - MessagesController.getGlobalNotificationsSettings().edit().putInt("speedhint", hintValue).apply(); - if (hintValue >= 0) { - showSpeedHint(); - } - } - lastPlaybackClick = now; + checkSpeedHint(); }); playbackSpeedButton.setOnLongClickListener(view -> { final float speed = MediaController.getInstance().getPlaybackSpeed(isMusic); - speedSlider.setValue((speed - MIN_SPEED) / (MAX_SPEED - MIN_SPEED), false); + speedSlider.setSpeed(speed, false); + speedSlider.setBackgroundColor(Theme.getColor(Theme.key_actionBarDefaultSubmenuBackground, resourcesProvider)); speedSlider.invalidateBlur(fragment instanceof ChatActivity); playbackSpeedButton.redrawPopup(Theme.getColor(Theme.key_actionBarDefaultSubmenuBackground)); playbackSpeedButton.updateColor(); + updatePlaybackButton(false); + playbackSpeedButton.setDimMenu(.3f); playbackSpeedButton.toggleSubMenu(speedSlider, null); + playbackSpeedButton.setOnMenuDismiss(byButton -> { + if (!byButton) { + playbackSpeedChanged(false, speed, MediaController.getInstance().getPlaybackSpeed(isMusic)); + } + }); + MessagesController.getGlobalNotificationsSettings().edit().putInt("speedhint", -15).apply(); return true; }); updatePlaybackButton(false); } private HintView speedHintView; + private long lastPlaybackClick; + + private void checkSpeedHint() { + final long now = System.currentTimeMillis(); + if (now - lastPlaybackClick > 300) { + int hintValue = MessagesController.getGlobalNotificationsSettings().getInt("speedhint", 0); + hintValue++; + if (hintValue > 2) { + hintValue = -10; + } + MessagesController.getGlobalNotificationsSettings().edit().putInt("speedhint", hintValue).apply(); + if (hintValue >= 0) { + showSpeedHint(); + } + } + lastPlaybackClick = now; + } private void showSpeedHint() { if (fragment != null && fragment.getFragmentView() instanceof ViewGroup) { @@ -829,7 +867,7 @@ public class FragmentContextView extends FrameLayout implements NotificationCent } } }; - speedHintView.setExtraTranslationY(AndroidUtilities.dp(64 + 22)); + speedHintView.setExtraTranslationY(AndroidUtilities.dp(64 + 8)); speedHintView.setText(LocaleController.getString("SpeedHint")); MarginLayoutParams params = new MarginLayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); params.rightMargin = AndroidUtilities.dp(3); @@ -840,7 +878,7 @@ public class FragmentContextView extends FrameLayout implements NotificationCent public void onPanTranslationUpdate(float y) { if (speedHintView != null) { - speedHintView.setExtraTranslationY(AndroidUtilities.dp(64 + 22) + y); + speedHintView.setExtraTranslationY(AndroidUtilities.dp(64 + 8) + y); } } @@ -852,25 +890,18 @@ public class FragmentContextView extends FrameLayout implements NotificationCent speedIcon.setValue(currentPlaybackSpeed, animated); updateColors(); + boolean isFinal = !slidingSpeed; + slidingSpeed = false; + for (int a = 0; a < speedItems.length; a++) { - if (equals(currentPlaybackSpeed, speeds[a])) { + if (isFinal && Math.abs(currentPlaybackSpeed - speeds[a]) < 0.05f) { speedItems[a].setColors(getThemedColor(Theme.key_featuredStickers_addButtonPressed), getThemedColor(Theme.key_featuredStickers_addButtonPressed)); } else { speedItems[a].setColors(getThemedColor(Theme.key_actionBarDefaultSubmenuItem), getThemedColor(Theme.key_actionBarDefaultSubmenuItem)); } } - speedSlider.setValue((currentPlaybackSpeed - MIN_SPEED) / (MAX_SPEED - MIN_SPEED), animated); - if (speedSliderText != null) { - float roundedSpeed = Math.round(currentPlaybackSpeed * 10f) / 10f; - String text; - text = String.format("%s", roundedSpeed); - text += "x"; - if (!TextUtils.equals(text, speedSliderText.getText())) { - speedSliderText.cancelAnimation(); - speedSliderText.setText(text); - } - } + speedSlider.setSpeed(currentPlaybackSpeed, animated); } public void updateColors() { @@ -953,36 +984,39 @@ public class FragmentContextView extends FrameLayout implements NotificationCent } private boolean equals(float a, float b) { - return Math.abs(Math.round(a * 10f) / 10f - Math.round(b * 10f) / 10f) < 0.001f; + return Math.abs(a - b) < 0.05f; } - private void playbackSpeedChanged(float oldValue, float newValue) { + private void playbackSpeedChanged(boolean byTap, float oldValue, float newValue) { if (equals(oldValue, newValue)) { return; } final String text; final int resId; - boolean reverse = false; - if (equals(newValue, 1f)) { + if (Math.abs(newValue - 1f) < 0.05f) { if (oldValue < newValue) { return; } text = LocaleController.getString("AudioSpeedNormal", R.string.AudioSpeedNormal); - resId = R.raw.speed_2to1; - } else if (equals(newValue, 1.5f)) { - text = LocaleController.getString("AudioSpeedMedium", R.string.AudioSpeedMedium); + if (Math.abs(oldValue - 2f) < 0.05f) { + resId = R.raw.speed_2to1; + } else if (newValue < oldValue) { + resId = R.raw.speed_slow; + } else { + resId = R.raw.speed_fast; + } + } else if (byTap && equals(newValue, 1.5f) && equals(oldValue, 1f)) { + text = LocaleController.formatString("AudioSpeedCustom", R.string.AudioSpeedCustom, SpeedIconDrawable.formatNumber(newValue)); resId = R.raw.speed_1to15; - } else if (equals(newValue, 1.8f)) { + } else if (byTap && equals(newValue, 2f) && equals(oldValue, 1.5f)) { text = LocaleController.getString("AudioSpeedFast", R.string.AudioSpeedFast); resId = R.raw.speed_15to2; } else { - return; + text = LocaleController.formatString("AudioSpeedCustom", R.string.AudioSpeedCustom, SpeedIconDrawable.formatNumber(newValue)); + resId = newValue < 1 ? R.raw.speed_slow : R.raw.speed_fast; } Bulletin bulletin = BulletinFactory.of(fragment).createSimpleBulletin(resId, text); - if (reverse) { - ((Bulletin.LottieLayout) bulletin.getLayout()).imageView.setReverse(); - } bulletin.show(); } @@ -1111,7 +1145,7 @@ public class FragmentContextView extends FrameLayout implements NotificationCent textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15); } titleTextView.setTag(Theme.key_inappPlayerPerformer); - titleTextView.setPadding(0, 0, 0, 0); + titleTextView.setPadding(0, 0, joinButtonWidth, 0); importingImageView.setVisibility(GONE); importingImageView.stopAnimation(); @@ -1182,7 +1216,7 @@ public class FragmentContextView extends FrameLayout implements NotificationCent joinButton.setVisibility(GONE); titleTextView.setLayoutParams(LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER, 0, 0, 0, 2)); - titleTextView.setPadding(AndroidUtilities.dp(112), 0, AndroidUtilities.dp(112), 0); + titleTextView.setPadding(AndroidUtilities.dp(112), 0, AndroidUtilities.dp(112) + joinButtonWidth, 0); if (playbackSpeedButton != null) { playbackSpeedButton.setVisibility(GONE); playbackSpeedButton.setTag(null); @@ -1755,7 +1789,7 @@ public class FragmentContextView extends FrameLayout implements NotificationCent playbackSpeedButton.setAlpha(1.0f); playbackSpeedButton.setEnabled(true); } - titleTextView.setPadding(0, 0, AndroidUtilities.dp(44), 0); + titleTextView.setPadding(0, 0, AndroidUtilities.dp(44) + joinButtonWidth, 0); stringBuilder = new SpannableStringBuilder(String.format("%s %s", messageObject.getMusicAuthor(), messageObject.getMusicTitle())); for (int i = 0; i < 2; i++) { @@ -1773,15 +1807,15 @@ public class FragmentContextView extends FrameLayout implements NotificationCent if (messageObject.getDuration() >= 10 * 60) { playbackSpeedButton.setAlpha(1.0f); playbackSpeedButton.setEnabled(true); - titleTextView.setPadding(0, 0, AndroidUtilities.dp(44), 0); + titleTextView.setPadding(0, 0, AndroidUtilities.dp(44) + joinButtonWidth, 0); updatePlaybackButton(false); } else { playbackSpeedButton.setAlpha(0.0f); playbackSpeedButton.setEnabled(false); - titleTextView.setPadding(0, 0, 0, 0); + titleTextView.setPadding(0, 0, joinButtonWidth, 0); } } else { - titleTextView.setPadding(0, 0, 0, 0); + titleTextView.setPadding(0, 0, joinButtonWidth, 0); } stringBuilder = new SpannableStringBuilder(String.format("%s - %s", messageObject.getMusicAuthor(), messageObject.getMusicTitle())); for (int i = 0; i < 2; i++) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/FragmentContextViewWavesDrawable.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/FragmentContextViewWavesDrawable.java index ab2db19ca..42c355f18 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/FragmentContextViewWavesDrawable.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/FragmentContextViewWavesDrawable.java @@ -10,8 +10,11 @@ import android.graphics.Shader; import android.os.SystemClock; import android.view.View; +import androidx.core.graphics.ColorUtils; + import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.ChatObject; +import org.telegram.messenger.LiteMode; import org.telegram.messenger.Utilities; import org.telegram.messenger.voip.VoIPService; import org.telegram.tgnet.TLRPC; @@ -69,7 +72,7 @@ public class FragmentContextViewWavesDrawable { return; } long dt = 0; - boolean rippleTransition = currentState != null && previousState != null && ((currentState.currentState == MUTE_BUTTON_STATE_MUTE && previousState.currentState == MUTE_BUTTON_STATE_UNMUTE) || (previousState.currentState == MUTE_BUTTON_STATE_MUTE && currentState.currentState == MUTE_BUTTON_STATE_UNMUTE)); + boolean rippleTransition = currentState != null && previousState != null && ((currentState.currentState == MUTE_BUTTON_STATE_MUTE && previousState.currentState == MUTE_BUTTON_STATE_UNMUTE) || (previousState.currentState == MUTE_BUTTON_STATE_MUTE && currentState.currentState == MUTE_BUTTON_STATE_UNMUTE)); if (update) { long newTime = SystemClock.elapsedRealtime(); @@ -155,37 +158,13 @@ public class FragmentContextViewWavesDrawable { lineBlobDrawable2.update(amplitude, 0.7f); } -// if (rippleTransition) { -// paint.setAlpha(76); -// canvas.save(); -// float cx = right - AndroidUtilities.dp(18); -// float r = (right - left) * 1.1f * progressToState; -// float offset = (float) Math.sqrt(r * r - (bottom - top) * (bottom - top)); -// if (i == 0) { -// if (cx - offset > left) { -// canvas.clipRect(left, top - AndroidUtilities.dp(20), cx - offset, bottom); -// float top1 = AndroidUtilities.dp(6) * amplitude2; -// float top2 = AndroidUtilities.dp(6) * amplitude2; -// lineBlobDrawable1.draw(left, top - top1, right, bottom, canvas, paint, top, progress); -// lineBlobDrawable2.draw(left, top - top2, right, bottom, canvas, paint, top, progress); -// } -// } else { -// if (cx - offset > left) { -// canvas.clipRect(cx - offset, top - AndroidUtilities.dp(20), right, bottom); -// } -// float top1 = AndroidUtilities.dp(6) * amplitude2; -// float top2 = AndroidUtilities.dp(6) * amplitude2; -// lineBlobDrawable1.draw(left, top - top1, right, bottom, canvas, paint, top, progress); -// lineBlobDrawable2.draw(left, top - top2, right, bottom, canvas, paint, top, progress); -// } -// canvas.restore(); -// } else { + if (LiteMode.isEnabled(LiteMode.FLAG_CALLS_ANIMATIONS)) { paint.setAlpha((int) (76 * alpha)); float top1 = AndroidUtilities.dp(6) * amplitude2; float top2 = AndroidUtilities.dp(6) * amplitude2; lineBlobDrawable1.draw(left, top - top1, right, bottom, canvas, paint, top, progress); lineBlobDrawable2.draw(left, top - top2, right, bottom, canvas, paint, top, progress); - //} + } if (i == 1 && rippleTransition) { paint.setAlpha(255); @@ -209,37 +188,6 @@ public class FragmentContextViewWavesDrawable { lineBlobDrawable.draw(left, top, right, bottom, canvas, paint, top, progress); } } - -// if (Build.VERSION.SDK_INT > 21 && parentView != null && (parentView.isPressed() || pressedRemoveProgress != 0)) { -// if (parentView.isPressed()) { -// pressedRemoveProgress = 1f; -// } -// if (pressedProgress != 1f) { -// pressedProgress += 16f / 150f; -// if (pressedProgress > 1f) { -// pressedProgress = 1f; -// } -// } else if (!parentView.isPressed() && pressedRemoveProgress != 0) { -// pressedRemoveProgress -= 16f / 150f; -// if (pressedRemoveProgress < 0) { -// pressedRemoveProgress = 0; -// pressedProgress = 0; -// } -// } -// rect.set(left, top - AndroidUtilities.dp(20), right, bottom); -// canvas.saveLayerAlpha(rect, 255, Canvas.ALL_SAVE_FLAG); -// Theme.getColor(Theme.key_listSelector); -// selectedPaint.setColor(ColorUtils.setAlphaComponent(Color.BLACK, (int) (16 * pressedRemoveProgress))); -// -// float hotspotX = left + parentView.hotspotX; -// float rad = Math.max(right - hotspotX, hotspotX - left) * 0.8f; -// canvas.drawCircle(hotspotX, top + parentView.hotspotY, rad * 1.3f * CubicBezierInterpolator.DEFAULT.getInterpolation(pressedProgress), selectedPaint); -// -// lineBlobDrawable.path.toggleInverseFillType(); -// canvas.drawPath(lineBlobDrawable.path, xRefP); -// lineBlobDrawable.path.toggleInverseFillType(); -// canvas.restore(); -// } } float pressedProgress; @@ -333,6 +281,7 @@ public class FragmentContextViewWavesDrawable { private float time; public Shader shader; + public int averageColor; private final Matrix matrix = new Matrix(); private final int currentState; @@ -428,7 +377,16 @@ public class FragmentContextViewWavesDrawable { public void setToPaint(Paint paint) { if (currentState == MUTE_BUTTON_STATE_UNMUTE || currentState == MUTE_BUTTON_STATE_MUTE || currentState == MUTE_BUTTON_STATE_MUTED_BY_ADMIN) { - paint.setShader(shader); + if (!LiteMode.isEnabled(LiteMode.FLAG_CALLS_ANIMATIONS)) { + paint.setShader(null); + if (currentState == MUTE_BUTTON_STATE_MUTED_BY_ADMIN) { + paint.setColor(ColorUtils.blendARGB(ColorUtils.blendARGB(color1, color2, 0.5f), color3, 0.5f)); + } else { + paint.setColor(ColorUtils.blendARGB(color1, color2, 0.5f)); + } + } else { + paint.setShader(shader); + } } else { paint.setShader(null); paint.setColor(Theme.getColor(Theme.key_voipgroup_topPanelGray)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/GroupCreateSpan.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/GroupCreateSpan.java index c4e684681..0618a5a63 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/GroupCreateSpan.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/GroupCreateSpan.java @@ -275,7 +275,9 @@ public class GroupCreateSpan extends View { rect.set(0, 0, getMeasuredWidth(), AndroidUtilities.dp(32)); backPaint.setColor(Color.argb(colors[6] + (int) ((colors[7] - colors[6]) * progress), colors[0] + (int) ((colors[1] - colors[0]) * progress), colors[2] + (int) ((colors[3] - colors[2]) * progress), colors[4] + (int) ((colors[5] - colors[4]) * progress))); canvas.drawRoundRect(rect, AndroidUtilities.dp(16), AndroidUtilities.dp(16), backPaint); - imageReceiver.draw(canvas); + if (progress != 1f) { + imageReceiver.draw(canvas); + } if (progress != 0) { int color = avatarDrawable.getColor(); float alpha = Color.alpha(color) / 255.0f; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ImageUpdater.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ImageUpdater.java index 88d3e0c92..26d1988d4 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ImageUpdater.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ImageUpdater.java @@ -308,7 +308,7 @@ public class ImageUpdater implements NotificationCenter.NotificationCenterDelega sheet.setOnHideListener(onDismiss); parentFragment.showDialog(sheet); if (hasAvatar) { - sheet.setItemColor(items.size() - 1, Theme.getColor(Theme.key_dialogTextRed2), Theme.getColor(Theme.key_dialogRedIcon)); + sheet.setItemColor(items.size() - 1, Theme.getColor(Theme.key_dialogTextRed), Theme.getColor(Theme.key_dialogRedIcon)); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/InstantCameraView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/InstantCameraView.java index 1856d2cd6..6add4480f 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/InstantCameraView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/InstantCameraView.java @@ -36,6 +36,7 @@ import android.hardware.Camera; import android.media.AudioFormat; import android.media.AudioManager; import android.media.AudioRecord; +import android.media.AudioTimestamp; import android.media.MediaCodec; import android.media.MediaCodecInfo; import android.media.MediaFormat; @@ -64,6 +65,7 @@ import android.view.animation.DecelerateInterpolator; import android.widget.FrameLayout; import android.widget.ImageView; +import androidx.annotation.RequiresApi; import androidx.core.content.ContextCompat; import androidx.core.graphics.ColorUtils; @@ -1737,11 +1739,15 @@ public class InstantCameraView extends FrameLayout implements NotificationCenter private Runnable recorderRunnable = new Runnable() { + @RequiresApi(api = Build.VERSION_CODES.N) @Override public void run() { long audioPresentationTimeUs = -1; int readResult; boolean done = false; + AudioTimestamp audioTimestamp = new AudioTimestamp(); + boolean shouldUseTimestamp = Build.VERSION.SDK_INT >= Build.VERSION_CODES.N; + while (!done) { if (!running && audioRecorder.getRecordingState() != AudioRecord.RECORDSTATE_STOPPED) { try { @@ -1762,14 +1768,13 @@ public class InstantCameraView extends FrameLayout implements NotificationCenter buffer.lastWroteBuffer = 0; buffer.results = AudioBufferInfo.MAX_SAMPLES; for (int a = 0; a < AudioBufferInfo.MAX_SAMPLES; a++) { - if (audioPresentationTimeUs == -1) { + if (audioPresentationTimeUs == -1 && !shouldUseTimestamp) { audioPresentationTimeUs = System.nanoTime() / 1000; } ByteBuffer byteBuffer = buffer.buffer[a]; byteBuffer.rewind(); readResult = audioRecorder.read(byteBuffer, 2048); - if (readResult > 0 && a % 2 == 0) { byteBuffer.limit(readResult); double s = 0; @@ -1788,10 +1793,17 @@ public class InstantCameraView extends FrameLayout implements NotificationCenter } break; } - buffer.offset[a] = audioPresentationTimeUs; + if (shouldUseTimestamp) { + audioRecorder.getTimestamp(audioTimestamp, AudioTimestamp.TIMEBASE_MONOTONIC); + buffer.offset[a] = audioTimestamp.nanoTime / 1000; + } else { + buffer.offset[a] = audioPresentationTimeUs; + } buffer.read[a] = readResult; int bufferDurationUs = 1000000 * readResult / audioSampleRate / 2; - audioPresentationTimeUs += bufferDurationUs; + if (!shouldUseTimestamp) { + audioPresentationTimeUs += bufferDurationUs; + } } if (buffer.results >= 0 || buffer.last) { if (!running && buffer.results < AudioBufferInfo.MAX_SAMPLES) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/LineBlobDrawable.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/LineBlobDrawable.java index 7b4a67415..787cb45f4 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/LineBlobDrawable.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/LineBlobDrawable.java @@ -7,6 +7,7 @@ import android.graphics.Paint; import android.graphics.Path; import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.LiteMode; import java.util.Random; @@ -60,6 +61,11 @@ public class LineBlobDrawable { } public void draw(float left, float top, float right, float bottom, Canvas canvas, Paint paint, float pinnedTop, float progressToPinned) { + if (!LiteMode.isEnabled(LiteMode.FLAG_CALLS_ANIMATIONS)) { + canvas.drawRect(left, top, right, bottom, paint); + return; + } + path.reset(); path.moveTo(right, bottom); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/LinkSpanDrawable.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/LinkSpanDrawable.java index f9fb86e09..2121c112b 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/LinkSpanDrawable.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/LinkSpanDrawable.java @@ -63,7 +63,7 @@ public class LinkSpanDrawable { private final float selectionAlpha = 0.2f; private final float rippleAlpha = 0.8f; - private final boolean isLite = !LiteMode.isEnabled(LiteMode.FLAG_CHAT_BACKGROUND); + private final boolean isLite = !LiteMode.isEnabled(LiteMode.FLAGS_CHAT); public LinkSpanDrawable(S span, Theme.ResourcesProvider resourcesProvider, float touchX, float touchY) { this(span, resourcesProvider, touchX, touchY, true); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/MediaActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/MediaActivity.java index 372598701..11885b692 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/MediaActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/MediaActivity.java @@ -27,7 +27,6 @@ import org.telegram.messenger.LocaleController; import org.telegram.messenger.MediaDataController; import org.telegram.messenger.MessagesController; import org.telegram.messenger.R; -import org.telegram.messenger.SharedConfig; import org.telegram.tgnet.TLObject; import org.telegram.tgnet.TLRPC; import org.telegram.ui.ActionBar.ActionBar; @@ -221,9 +220,7 @@ public class MediaActivity extends BaseFragment implements SharedMediaLayout.Sha @Override protected void onSearchStateChanged(boolean expanded) { - if (SharedConfig.smoothKeyboard) { - AndroidUtilities.removeAdjustResize(getParentActivity(), classGuid); - } + AndroidUtilities.removeAdjustResize(getParentActivity(), classGuid); AndroidUtilities.updateViewVisibilityAnimated(avatarContainer, !expanded, 0.95f, true); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/MemberRequestsBottomSheet.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/MemberRequestsBottomSheet.java index 102662253..6023ee22d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/MemberRequestsBottomSheet.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/MemberRequestsBottomSheet.java @@ -88,11 +88,6 @@ public class MemberRequestsBottomSheet extends UsersAlertBase { return delegate.isNeedRestoreList; } - @Override - protected boolean isAllowSelectChildAtPosition(float x, float y) { - return y >= scrollOffsetY + frameLayout.getMeasuredHeight(); - } - @Override protected void setTranslationY(int newOffset) { super.setTranslationY(newOffset); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/MentionsContainerView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/MentionsContainerView.java index 135f169f6..0a29ae632 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/MentionsContainerView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/MentionsContainerView.java @@ -83,7 +83,7 @@ public class MentionsContainerView extends BlurredFrameLayout { } else { i--; } - if (adapter.getBotContextSwitch() != null) { + if (adapter.getBotContextSwitch() != null || adapter.getBotWebViewSwitch() != null) { i++; } size.width = 0; @@ -134,7 +134,7 @@ public class MentionsContainerView extends BlurredFrameLayout { @Override protected int getFlowItemCount() { - if (adapter.getBotContextSwitch() != null) { + if (adapter.getBotContextSwitch() != null || adapter.getBotWebViewSwitch() != null) { return getItemCount() - 2; } return super.getFlowItemCount() - 1; @@ -154,7 +154,7 @@ public class MentionsContainerView extends BlurredFrameLayout { } else if (object instanceof TLRPC.Document) { return 20; } else { - if (adapter.getBotContextSwitch() != null) { + if (adapter.getBotContextSwitch() != null || adapter.getBotWebViewSwitch() != null) { position--; } return gridLayoutManager.getSpanSizeForItem(position); @@ -292,7 +292,7 @@ public class MentionsContainerView extends BlurredFrameLayout { @Override public void dispatchDraw(Canvas canvas) { boolean reversed = isReversed(); - boolean topPadding = (adapter.isStickers() || adapter.isBotContext()) && adapter.isMediaLayout() && adapter.getBotContextSwitch() == null; + boolean topPadding = (adapter.isStickers() || adapter.isBotContext()) && adapter.isMediaLayout() && adapter.getBotContextSwitch() == null && adapter.getBotWebViewSwitch() == null; containerPadding = AndroidUtilities.dp(2 + (topPadding ? 2 : 0)); float r = AndroidUtilities.dp(4); @@ -552,7 +552,7 @@ public class MentionsContainerView extends BlurredFrameLayout { position--; if (adapter.isStickers()) { return; - } else if (adapter.getBotContextSwitch() != null) { + } else if (adapter.getBotContextSwitch() != null || adapter.getBotWebViewSwitch() != null) { if (position == 0) { return; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/MessageSeenCheckDrawable.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/MessageSeenCheckDrawable.java new file mode 100644 index 000000000..2506b974c --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/MessageSeenCheckDrawable.java @@ -0,0 +1,71 @@ +package org.telegram.ui.Components; + +import android.content.Context; +import android.graphics.PorterDuff; +import android.graphics.PorterDuffColorFilter; +import android.graphics.drawable.Drawable; +import android.text.SpannableStringBuilder; +import android.text.Spanned; +import android.text.style.DynamicDrawableSpan; +import android.text.style.ImageSpan; +import android.util.Log; + +import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.R; +import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.Cells.DialogCell; + +public class MessageSeenCheckDrawable { + + private CharSequence lastSpanned; + private int lastColor; + private Drawable drawable; + private float lastDensity; + + private int resId; + private String colorKey; + + private int w = -1, h = -1; + private float oy = 4.66f; + + public MessageSeenCheckDrawable(int resId, String colorKey) { + this.resId = resId; + this.colorKey = colorKey; + } + + public MessageSeenCheckDrawable(int resId, String colorKey, int w, int h) { + this(resId, colorKey); + this.w = w; + this.h = h; + } + + public MessageSeenCheckDrawable(int resId, String colorKey, int w, int h, float oy) { + this(resId, colorKey); + this.w = w; + this.h = h; + this.oy = oy; + } + + public CharSequence getSpanned(Context context) { + if (lastSpanned != null && drawable != null && AndroidUtilities.density == lastDensity) { + if (lastColor != Theme.getColor(colorKey)) { + drawable.setColorFilter(new PorterDuffColorFilter(lastColor = Theme.getColor(colorKey), PorterDuff.Mode.SRC_IN)); + } + return lastSpanned; + } + if (context == null) { + return null; + } + SpannableStringBuilder str = new SpannableStringBuilder("v "); + lastDensity = AndroidUtilities.density; + drawable = context.getResources().getDrawable(resId).mutate(); + drawable.setColorFilter(new PorterDuffColorFilter(lastColor = Theme.getColor(colorKey), PorterDuff.Mode.SRC_IN)); + final int w = this.w <= 0 ? drawable.getIntrinsicWidth() : AndroidUtilities.dp(this.w); + final int h = this.h <= 0 ? drawable.getIntrinsicHeight() : AndroidUtilities.dp(this.h); + final int oy = AndroidUtilities.dp(this.oy); + drawable.setBounds(0, oy, w, oy + h); + str.setSpan(new ImageSpan(drawable, DynamicDrawableSpan.ALIGN_CENTER), 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + str.setSpan(new DialogCell.FixedWidthSpan(AndroidUtilities.dp(2)), 1, 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + return lastSpanned = str; + } +} \ No newline at end of file diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/OptionsSpeedIconDrawable.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/OptionsSpeedIconDrawable.java new file mode 100644 index 000000000..75822d437 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/OptionsSpeedIconDrawable.java @@ -0,0 +1,151 @@ +package org.telegram.ui.Components; + + +import static org.telegram.messenger.AndroidUtilities.dp; +import static org.telegram.messenger.AndroidUtilities.dpf2; + +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.ColorFilter; +import android.graphics.Paint; +import android.graphics.PixelFormat; +import android.graphics.PorterDuff; +import android.graphics.PorterDuffXfermode; +import android.graphics.Xfermode; +import android.graphics.drawable.Drawable; +import android.text.TextUtils; +import android.view.Gravity; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import org.telegram.messenger.AndroidUtilities; + +public class OptionsSpeedIconDrawable extends Drawable { + + private Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); + + private final Drawable.Callback callback = new Callback() { + @Override + public void invalidateDrawable(@NonNull Drawable who) { + OptionsSpeedIconDrawable.this.invalidateSelf(); + } + @Override + public void scheduleDrawable(@NonNull Drawable who, @NonNull Runnable what, long when) { + OptionsSpeedIconDrawable.this.scheduleSelf(what, when); + } + @Override + public void unscheduleDrawable(@NonNull Drawable who, @NonNull Runnable what) { + OptionsSpeedIconDrawable.this.unscheduleSelf(what); + } + }; + + private AnimatedTextView.AnimatedTextDrawable textDrawable; + private boolean textDrawableVisible; + private AnimatedFloat textDrawableAlpha = new AnimatedFloat(this::invalidateSelf, 250, CubicBezierInterpolator.EASE_OUT_QUINT); + + public OptionsSpeedIconDrawable() { + paint.setColor(Color.WHITE); + } + + public void setSpeed(Float speed, boolean animated) { + if (speed == null && textDrawable == null) { + return; + } + if (textDrawable == null) { + textDrawable = new AnimatedTextView.AnimatedTextDrawable(); + textDrawable.setCallback(callback); + textDrawable.setAnimationProperties(.3f, 0, 165, CubicBezierInterpolator.EASE_OUT_QUINT); + textDrawable.setGravity(Gravity.CENTER_HORIZONTAL); + textDrawable.setTypeface(AndroidUtilities.getTypeface(AndroidUtilities.TYPEFACE_ROBOTO_MEDIUM)); + textDrawable.setTextSize(dp(7)); + textDrawable.setTextColor(0xFFFFFFFF); + textDrawable.getPaint().setStyle(Paint.Style.FILL_AND_STROKE); + textDrawable.getPaint().setStrokeWidth(dpf2(.1f)); + textDrawable.getPaint().setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT)); + } + if (speed == null) { + textDrawable.cancelAnimation(); + textDrawable.setText("", animated); + textDrawableVisible = false; + } else { + String string = SpeedIconDrawable.formatNumber(speed); + if (string.length() <= 1) { + string += "X"; + } + if (!TextUtils.equals(string, textDrawable.getText())) { + textDrawable.cancelAnimation(); + textDrawable.setText(string, animated); + textDrawableVisible = !TextUtils.isEmpty(string); + } + } + invalidateSelf(); + } + + @Override + public void draw(@NonNull Canvas canvas) { + if (getBounds() == null) { + return; + } + + int cx = getBounds().centerX(), cy = getBounds().centerY(); + + canvas.drawCircle(cx, cy - dpf2(6), dpf2(2), paint); + canvas.drawCircle(cx, cy, dpf2(2), paint); + canvas.drawCircle(cx, cy + dpf2(6), dpf2(2), paint); + + if (textDrawable != null) { + canvas.save(); + + int tcx = cx - dp(11.6f), tcy = cy + dp(4); + + float alpha = textDrawableAlpha.set(textDrawableVisible ? 1 : 0); + int wasAlpha = paint.getAlpha(); + if (alpha < 1) { + paint.setAlpha((int) (0xFF * alpha)); + } + + AndroidUtilities.rectTmp.set( + tcx - dpf2(1.5f) - textDrawable.getCurrentWidth() / 2f, + tcy - dpf2(4), + tcx + dpf2(1.5f) + textDrawable.getCurrentWidth() / 2f, + tcy + dpf2(5) + ); + canvas.drawRoundRect(AndroidUtilities.rectTmp, dpf2(2), dpf2(2), paint); + + canvas.save(); + textDrawable.setBounds(tcx, tcy, tcx, tcy); + textDrawable.draw(canvas); + canvas.restore(); + + paint.setAlpha(wasAlpha); + + canvas.restore(); + } + } + + @Override + public void setAlpha(int alpha) { + paint.setAlpha(alpha); + } + + @Override + public void setColorFilter(@Nullable ColorFilter colorFilter) { + paint.setColorFilter(colorFilter); + } + + @Override + public int getOpacity() { + return PixelFormat.TRANSPARENT; + } + + @Override + public int getIntrinsicWidth() { + return dp(45); + } + + @Override + public int getIntrinsicHeight() { + return dp(45); + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/OverlayActionBarLayoutDialog.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/OverlayActionBarLayoutDialog.java index cd6244648..06468b634 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/OverlayActionBarLayoutDialog.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/OverlayActionBarLayoutDialog.java @@ -176,13 +176,21 @@ public class OverlayActionBarLayoutDialog extends Dialog implements INavigationL @Override public void onRebuildAllFragments(INavigationLayout layout, boolean last) {} - private static final class EmptyFragment extends BaseFragment { + private final class EmptyFragment extends BaseFragment { @Override public View createView(Context context) { + hasOwnBackground = true; actionBar.setAddToContainer(false); View v = new View(context); v.setBackgroundColor(Color.TRANSPARENT); return v; } + + @Override + public void onTransitionAnimationEnd(boolean isOpen, boolean backward) { + if (isOpen && backward) { + dismiss(); + } + } } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Paint/Views/LPhotoPaintView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Paint/Views/LPhotoPaintView.java index e66e5f243..f5c8d1723 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/Paint/Views/LPhotoPaintView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Paint/Views/LPhotoPaintView.java @@ -1378,7 +1378,7 @@ public class LPhotoPaintView extends SizeNotifierFrameLayoutPhoto implements IPh measureChild(topLayout, widthMeasureSpec, heightMeasureSpec); ignoreLayout = false; - int keyboardSize = SharedConfig.smoothKeyboard ? 0 : measureKeyboardHeight(); + int keyboardSize = 0; if (!waitingForKeyboardOpen && keyboardSize <= AndroidUtilities.dp(20) && !emojiViewVisible && !isAnimatePopupClosing) { ignoreLayout = true; hideEmojiView(); @@ -2907,37 +2907,36 @@ public class LPhotoPaintView extends SizeNotifierFrameLayoutPhoto implements IPh onWindowSizeChanged(); if (!emojiWasVisible) { - if (SharedConfig.smoothKeyboard) { - if (keyboardVisible) { - translateBottomPanelAfterResize = true; - weightChooserView.startPanTransition(AndroidUtilities.displaySize.y, AndroidUtilities.displaySize.y - emojiPadding); + if (keyboardVisible) { + translateBottomPanelAfterResize = true; + weightChooserView.startPanTransition(AndroidUtilities.displaySize.y, AndroidUtilities.displaySize.y - emojiPadding); // weightChooserView.updatePanTransition(0, 1); // weightChooserView.stopPanTransition(); - } else { - ValueAnimator animator = ValueAnimator.ofFloat(emojiPadding, 0); - weightChooserView.startPanTransition(AndroidUtilities.displaySize.y, AndroidUtilities.displaySize.y - emojiPadding); - animator.addUpdateListener(animation -> { - float v = (float) animation.getAnimatedValue(); - emojiView.setTranslationY(v); + } else { + ValueAnimator animator = ValueAnimator.ofFloat(emojiPadding, 0); + weightChooserView.startPanTransition(AndroidUtilities.displaySize.y, AndroidUtilities.displaySize.y - emojiPadding); + animator.addUpdateListener(animation -> { + float v = (float) animation.getAnimatedValue(); + emojiView.setTranslationY(v); + if (!ignore) { + bottomPanelTranslationY(v, 1f - v / emojiPadding); + } + }); + animator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + emojiView.setTranslationY(0); if (!ignore) { - bottomPanelTranslationY(v, 1f - v / emojiPadding); + bottomPanelTranslationY(0, 1); } - }); - animator.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - emojiView.setTranslationY(0); - if (!ignore) { - bottomPanelTranslationY(0, 1); - } - weightChooserView.stopPanTransition(); - } - }); - animator.setDuration(AdjustPanLayoutHelper.keyboardDuration); - animator.setInterpolator(AdjustPanLayoutHelper.keyboardInterpolator); - animator.start(); - } + weightChooserView.stopPanTransition(); + } + }); + animator.setDuration(AdjustPanLayoutHelper.keyboardDuration); + animator.setInterpolator(AdjustPanLayoutHelper.keyboardInterpolator); + animator.start(); } + } } else { ChatActivityEnterViewAnimatedIconView emojiButton = textOptionsView.getEmojiButton(); @@ -2970,7 +2969,7 @@ public class LPhotoPaintView extends SizeNotifierFrameLayoutPhoto implements IPh showEmojiPopup(0); } if (byBackButton) { - if (SharedConfig.smoothKeyboard && emojiView != null && emojiView.getVisibility() == View.VISIBLE && !waitingForKeyboardOpen) { + if (emojiView != null && emojiView.getVisibility() == View.VISIBLE && !waitingForKeyboardOpen) { int height = emojiView.getMeasuredHeight(); ValueAnimator animator = ValueAnimator.ofFloat(0, height); final boolean ignore = bottomPanelIgnoreOnce; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/PhotoViewerCaptionEnterView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/PhotoViewerCaptionEnterView.java index ea970e856..8b30deb19 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/PhotoViewerCaptionEnterView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/PhotoViewerCaptionEnterView.java @@ -823,7 +823,7 @@ public class PhotoViewerCaptionEnterView extends FrameLayout implements Notifica emojiIconDrawable.setIcon(R.drawable.input_smile, true); } if (sizeNotifierLayout != null) { - if (animated && SharedConfig.smoothKeyboard && show == 0 && emojiView != null) { + if (animated && show == 0 && emojiView != null) { ValueAnimator animator = ValueAnimator.ofFloat(emojiPadding, 0); float animateFrom = emojiPadding; popupAnimating = true; @@ -857,10 +857,6 @@ public class PhotoViewerCaptionEnterView extends FrameLayout implements Notifica emojiView.setVisibility(GONE); } emojiPadding = 0; - } else { - if (!SharedConfig.smoothKeyboard && emojiView != null) { - emojiView.setVisibility(GONE); - } } sizeNotifierLayout.requestLayout(); onWindowSizeChanged(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/PopupAudioView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/PopupAudioView.java index ee9cc32dd..daf0a6159 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/PopupAudioView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/PopupAudioView.java @@ -151,7 +151,7 @@ public class PopupAudioView extends BaseCell implements SeekBar.SeekBarDelegate, } canvas.restore(); - int state = buttonState + 5; + int state = buttonState; timePaint.setColor(0xffa1aab3); Drawable buttonDrawable = Theme.chat_fileStatesDrawable[state][buttonPressed]; int side = AndroidUtilities.dp(36); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/PopupSwipeBackLayout.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/PopupSwipeBackLayout.java index c1b166ea0..8e893f9ef 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/PopupSwipeBackLayout.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/PopupSwipeBackLayout.java @@ -10,6 +10,7 @@ import android.graphics.Paint; import android.graphics.Path; import android.graphics.Rect; import android.graphics.RectF; +import android.util.Log; import android.util.SparseIntArray; import android.view.GestureDetector; import android.view.Gravity; @@ -25,6 +26,7 @@ import androidx.core.view.GestureDetectorCompat; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.NotificationCenter; import org.telegram.messenger.UserConfig; +import org.telegram.ui.ActionBar.ActionBarMenuSlider; import org.telegram.ui.ActionBar.ActionBarPopupWindow; import org.telegram.ui.ActionBar.Theme; @@ -432,7 +434,7 @@ public class PopupSwipeBackLayout extends FrameLayout { */ private boolean isDisallowedView(MotionEvent e, View v) { v.getHitRect(hitRect); - if (hitRect.contains((int) e.getX(), (int) e.getY()) && v.canScrollHorizontally(-1)) + if (hitRect.contains((int) e.getX(), (int) e.getY()) && (v.canScrollHorizontally(-1) || v instanceof ActionBarMenuSlider)) return true; if (v instanceof ViewGroup) { ViewGroup vg = (ViewGroup) v; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/DoubleLimitsPageView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/DoubleLimitsPageView.java index 58d48b769..a645375e8 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/DoubleLimitsPageView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/DoubleLimitsPageView.java @@ -44,7 +44,9 @@ public class DoubleLimitsPageView extends FrameLayout implements PagerHeaderView public void setOffset(float translationX) { float progress = Math.abs(translationX / getMeasuredWidth()); if (progress == 1f) { - recyclerListView.scrollToPosition(0); + if (recyclerListView.findViewHolderForAdapterPosition(0) == null || recyclerListView.findViewHolderForAdapterPosition(0).itemView.getTop() != recyclerListView.getPaddingTop()) { + recyclerListView.scrollToPosition(0); + } } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/LimitPreviewView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/LimitPreviewView.java index 959474c7d..84cc7ad26 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/LimitPreviewView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/LimitPreviewView.java @@ -272,6 +272,13 @@ public class LimitPreviewView extends LinearLayout { limitIcon.setText(spannableStringBuilder); } premiumCount.setText("4 GB"); + } else if (type == LimitReachedBottomSheet.TYPE_ADD_MEMBERS_RESTRICTED) { + if (limitIcon != null) { + SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(); + spannableStringBuilder.append("d").setSpan(new ColoredImageSpan(icon), 0, 1, 0); + limitIcon.setText(spannableStringBuilder); + } + premiumCount.setText(""); } } @@ -368,7 +375,7 @@ public class LimitPreviewView extends LinearLayout { h = getMeasuredHeight(); PremiumGradient.getInstance().updateMainGradientMatrix(0, 0, LimitPreviewView.this.getMeasuredWidth(), LimitPreviewView.this.getMeasuredHeight(), getGlobalXOffset() - getX(), -getTop()); AndroidUtilities.rectTmp.set(0, AndroidUtilities.dp(3), getMeasuredWidth(), h - AndroidUtilities.dp(3)); - canvas.drawRoundRect(AndroidUtilities.rectTmp, h / 2f, h / 2f, PremiumGradient.getInstance().getMainGradientPaint()); + canvas.drawRoundRect(AndroidUtilities.rectTmp, h / 2f, h / 2f, PremiumGradient.getInstance().getPremiumLocakedPaint()); } else { if (invalidatePath) { invalidatePath = false; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/LimitReachedBottomSheet.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/LimitReachedBottomSheet.java index 8e782a14a..e4df0e463 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/LimitReachedBottomSheet.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/LimitReachedBottomSheet.java @@ -19,9 +19,11 @@ import androidx.recyclerview.widget.RecyclerView; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.ChatObject; +import org.telegram.messenger.ContactsController; import org.telegram.messenger.LocaleController; import org.telegram.messenger.MessagesController; import org.telegram.messenger.R; +import org.telegram.messenger.SendMessagesHelper; import org.telegram.messenger.UserConfig; import org.telegram.tgnet.ConnectionsManager; import org.telegram.tgnet.TLRPC; @@ -33,6 +35,7 @@ import org.telegram.ui.Cells.GroupCreateUserCell; import org.telegram.ui.Cells.HeaderCell; import org.telegram.ui.Cells.ShadowSectionCell; import org.telegram.ui.Components.BottomSheetWithRecyclerListView; +import org.telegram.ui.Components.BulletinFactory; import org.telegram.ui.Components.FlickerLoadingView; import org.telegram.ui.Components.LayoutHelper; import org.telegram.ui.Components.RecyclerItemsEnterAnimator; @@ -48,7 +51,7 @@ public class LimitReachedBottomSheet extends BottomSheetWithRecyclerListView { public static final int TYPE_PUBLIC_LINKS = 2; public static final int TYPE_FOLDERS = 3; public static final int TYPE_CHATS_IN_FOLDER = 4; - public static final int TYPE_TO_MANY_COMMUNITIES = 5; + public static final int TYPE_TO0_MANY_COMMUNITIES = 5; public static final int TYPE_LARGE_FILE = 6; public static final int TYPE_ACCOUNTS = 7; @@ -56,11 +59,16 @@ public class LimitReachedBottomSheet extends BottomSheetWithRecyclerListView { public static final int TYPE_GIFS = 9; public static final int TYPE_STICKERS = 10; + + public static final int TYPE_ADD_MEMBERS_RESTRICTED = 11; + private boolean canSendLink; + private TLRPC.TL_webPage linkPreview; + public static String limitTypeToServerString(int type) { switch (type) { case TYPE_PIN_DIALOGS: return "double_limits__dialog_pinned"; - case TYPE_TO_MANY_COMMUNITIES: + case TYPE_TO0_MANY_COMMUNITIES: return "double_limits__channels"; case TYPE_PUBLIC_LINKS: return "double_limits__channels_public"; @@ -88,15 +96,18 @@ public class LimitReachedBottomSheet extends BottomSheetWithRecyclerListView { int dividerRow = -1; int chatsTitleRow = -1; int chatStartRow = -1; + int chatEndRow = -1; int loadingRow = -1; + int emptyViewDividerRow = -1; public boolean parentIsChannel; private int currentValue = -1; LimitPreviewView limitPreviewView; - HashSet selectedChats = new HashSet<>(); + HashSet selectedChats = new HashSet<>(); private ArrayList inactiveChats = new ArrayList<>(); private ArrayList inactiveChatsSignatures = new ArrayList<>(); + private ArrayList restrictedUsers = new ArrayList<>(); PremiumButtonView premiumButtonView; public Runnable onSuccessRunnable; @@ -107,17 +118,19 @@ public class LimitReachedBottomSheet extends BottomSheetWithRecyclerListView { View divider; LimitParams limitParams; private boolean isVeryLargeFile; + private TLRPC.Chat fromChat; public LimitReachedBottomSheet(BaseFragment fragment, Context context, int type, int currentAccount) { super(fragment, false, hasFixedSize(type)); fixNavigationBar(); parentFragment = fragment; this.type = type; + updateTitle(); this.currentAccount = currentAccount; updateRows(); if (type == TYPE_PUBLIC_LINKS) { loadAdminedChannels(); - } else if (type == TYPE_TO_MANY_COMMUNITIES) { + } else if (type == TYPE_TO0_MANY_COMMUNITIES) { loadInactiveChannels(); } updatePremiumButtonText(); @@ -135,7 +148,9 @@ public class LimitReachedBottomSheet extends BottomSheetWithRecyclerListView { @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); - canvas.drawRect(0, 0, getMeasuredWidth(), 1, Theme.dividerPaint); + if (chatEndRow - chatStartRow > 1) { + canvas.drawRect(0, 0, getMeasuredWidth(), 1, Theme.dividerPaint); + } } }; divider.setBackgroundColor(Theme.getColor(Theme.key_dialogBackground)); @@ -155,14 +170,17 @@ public class LimitReachedBottomSheet extends BottomSheetWithRecyclerListView { adminedChannelCell.setChecked(selectedChats.contains(chat), true); updateButton(); } else if (view instanceof GroupCreateUserCell) { - GroupCreateUserCell cell = (GroupCreateUserCell) view; - TLRPC.Chat chat = (TLRPC.Chat) cell.getObject(); - if (selectedChats.contains(chat)) { - selectedChats.remove(chat); - } else { - selectedChats.add(chat); + if (!canSendLink && type == TYPE_ADD_MEMBERS_RESTRICTED) { + return; } - cell.setChecked(selectedChats.contains(chat), true); + GroupCreateUserCell cell = (GroupCreateUserCell) view; + Object object = cell.getObject(); + if (selectedChats.contains(object)) { + selectedChats.remove(object); + } else { + selectedChats.add(object); + } + cell.setChecked(selectedChats.contains(object), true); updateButton(); } }); @@ -172,6 +190,9 @@ public class LimitReachedBottomSheet extends BottomSheetWithRecyclerListView { return false; }); premiumButtonView.buttonLayout.setOnClickListener(v -> { + if (type == TYPE_ADD_MEMBERS_RESTRICTED) { + return; + } if (UserConfig.getInstance(currentAccount).isPremium() || MessagesController.getInstance(currentAccount).premiumLocked || isVeryLargeFile) { dismiss(); return; @@ -189,18 +210,57 @@ public class LimitReachedBottomSheet extends BottomSheetWithRecyclerListView { dismiss(); }); premiumButtonView.overlayTextView.setOnClickListener(v -> { + if (type == TYPE_ADD_MEMBERS_RESTRICTED) { + if (selectedChats.isEmpty()) { + dismiss(); + return; + } + sendInviteMessages(); + return; + } if (selectedChats.isEmpty()) { return; } if (type == TYPE_PUBLIC_LINKS) { revokeSelectedLinks(); - } else if (type == TYPE_TO_MANY_COMMUNITIES) { + } else if (type == TYPE_TO0_MANY_COMMUNITIES) { leaveFromSelectedGroups(); } }); enterAnimator = new RecyclerItemsEnterAnimator(recyclerListView, true); } + private void sendInviteMessages() { + for (Object obj : selectedChats) { + TLRPC.User user = (TLRPC.User) obj; + TLRPC.ChatFull chatFull = MessagesController.getInstance(currentAccount).getChatFull(fromChat.id); + String link; + if (fromChat.username != null) { + link = "@" + fromChat.username; + } else { + link = chatFull.exported_invite.link; + } + TLRPC.TL_webPage webPage = null; + SendMessagesHelper.getInstance(currentAccount).sendMessage(link, user.id, null, null, linkPreview, false, null, null, null, false, 0, null, false); + } + AndroidUtilities.runOnUIThread(() -> { + BulletinFactory factory = BulletinFactory.global(); + if (factory != null) { + if (selectedChats.size() == 1) { + TLRPC.User user = (TLRPC.User) selectedChats.iterator().next(); + factory.createSimpleBulletin(R.raw.voip_invite, + AndroidUtilities.replaceTags(LocaleController.formatString("InviteLinkSentSingle", R.string.InviteLinkSentSingle, ContactsController.formatName(user))) + ).show(); + } else { + factory.createSimpleBulletin(R.raw.voip_invite, + AndroidUtilities.replaceTags(LocaleController.formatPluralString("InviteLinkSent", selectedChats.size(), selectedChats.size())) + ).show(); + } + } + }); + dismiss(); + } + public void updatePremiumButtonText() { if (UserConfig.getInstance(currentAccount).isPremium() || MessagesController.getInstance(currentAccount).premiumLocked || isVeryLargeFile) { premiumButtonView.buttonTextView.setText(LocaleController.getString(R.string.OK)); @@ -213,7 +273,10 @@ public class LimitReachedBottomSheet extends BottomSheetWithRecyclerListView { private void leaveFromSelectedGroups() { TLRPC.User currentUser = MessagesController.getInstance(currentAccount).getUser(UserConfig.getInstance(currentAccount).getClientUserId()); - ArrayList chats = new ArrayList<>(selectedChats); + ArrayList chats = new ArrayList<>(); + for (Object obj : selectedChats) { + chats.add((TLRPC.Chat) obj); + } AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); builder.setTitle(LocaleController.formatPluralString("LeaveCommunities", chats.size())); if (chats.size() == 1) { @@ -235,21 +298,34 @@ public class LimitReachedBottomSheet extends BottomSheetWithRecyclerListView { alertDialog.show(); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } private void updateButton() { - if (selectedChats.size() > 0) { - String str = null; - if (type == TYPE_PUBLIC_LINKS) { - str = LocaleController.formatPluralString("RevokeLinks", selectedChats.size()); - } else if (type == TYPE_TO_MANY_COMMUNITIES) { - str = LocaleController.formatPluralString("LeaveCommunities", selectedChats.size()); + if (type == TYPE_ADD_MEMBERS_RESTRICTED) { + premiumButtonView.checkCounterView(); + if (!canSendLink) { + premiumButtonView.setOverlayText(LocaleController.getString("Close", R.string.Close), true, true); + } else if (selectedChats.size() > 0) { + premiumButtonView.setOverlayText(LocaleController.getString("SendInviteLink", R.string.SendInviteLink), true, true); + } else { + premiumButtonView.setOverlayText(LocaleController.getString("ActionSkip", R.string.ActionSkip), true, true); } - premiumButtonView.setOverlayText(str, true, true); + premiumButtonView.counterView.setCount(selectedChats.size(), true); + premiumButtonView.invalidate(); } else { - premiumButtonView.clearOverlayText(); + if (selectedChats.size() > 0) { + String str = null; + if (type == TYPE_PUBLIC_LINKS) { + str = LocaleController.formatPluralString("RevokeLinks", selectedChats.size()); + } else if (type == TYPE_TO0_MANY_COMMUNITIES) { + str = LocaleController.formatPluralString("LeaveCommunities", selectedChats.size()); + } + premiumButtonView.setOverlayText(str, true, true); + } else { + premiumButtonView.clearOverlayText(); + } } } @@ -262,6 +338,9 @@ public class LimitReachedBottomSheet extends BottomSheetWithRecyclerListView { @Override public CharSequence getTitle() { + if (type == TYPE_ADD_MEMBERS_RESTRICTED) { + return LocaleController.getString("ChannelInviteViaLink", R.string.ChannelInviteViaLink); + } return LocaleController.getString("LimitReached", R.string.LimitReached); } @@ -270,6 +349,9 @@ public class LimitReachedBottomSheet extends BottomSheetWithRecyclerListView { return new RecyclerListView.SelectionAdapter() { @Override public boolean isEnabled(RecyclerView.ViewHolder holder) { + if (type == TYPE_ADD_MEMBERS_RESTRICTED && !canSendLink) { + return false; + } return holder.getItemViewType() == 1 || holder.getItemViewType() == 4; } @@ -312,6 +394,14 @@ public class LimitReachedBottomSheet extends BottomSheetWithRecyclerListView { flickerLoadingView.setItemsCount(10); view = flickerLoadingView; break; + case 6: + view = new View(getContext()) { + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(16), MeasureSpec.EXACTLY)); + } + }; + break; } view.setLayoutParams(new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); return new RecyclerListView.Holder(view); @@ -320,11 +410,18 @@ public class LimitReachedBottomSheet extends BottomSheetWithRecyclerListView { @Override public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { if (holder.getItemViewType() == 4) { - TLRPC.Chat chat = inactiveChats.get(position - chatStartRow); GroupCreateUserCell cell = (GroupCreateUserCell) holder.itemView; - String signature = inactiveChatsSignatures.get(position - chatStartRow); - cell.setObject(chat, chat.title, signature, true); - cell.setChecked(selectedChats.contains(chat), false); + if (type == TYPE_TO0_MANY_COMMUNITIES) { + TLRPC.Chat chat = inactiveChats.get(position - chatStartRow); + String signature = inactiveChatsSignatures.get(position - chatStartRow); + cell.setObject(chat, chat.title, signature, position != chatEndRow - 1f); + cell.setChecked(selectedChats.contains(chat), false); + } else if (type == TYPE_ADD_MEMBERS_RESTRICTED) { + TLRPC.User user = restrictedUsers.get(position - chatStartRow); + String signature = LocaleController.formatUserStatus(currentAccount, user, null, null); + cell.setObject(user, ContactsController.formatName(user.first_name, user.last_name), signature, position != chatEndRow - 1f); + cell.setChecked(selectedChats.contains(user), false); + } } else if (holder.getItemViewType() == 1) { TLRPC.Chat chat = chats.get(position - chatStartRow); AdminedChannelCell adminedChannelCell = (AdminedChannelCell) holder.itemView; @@ -333,7 +430,17 @@ public class LimitReachedBottomSheet extends BottomSheetWithRecyclerListView { adminedChannelCell.setChecked(selectedChats.contains(chat), oldChat == chat); } else if (holder.getItemViewType() == 3) { HeaderCell headerCell = (HeaderCell) holder.itemView; - if (type == TYPE_PUBLIC_LINKS) { + if (type == TYPE_ADD_MEMBERS_RESTRICTED) { + if (canSendLink) { + headerCell.setText(LocaleController.getString("ChannelInviteViaLink", R.string.ChannelInviteViaLink)); + } else { + if (restrictedUsers.size() == 1) { + headerCell.setText(LocaleController.getString("ChannelInviteViaLinkRestricted2", R.string.ChannelInviteViaLinkRestricted2)); + } else { + headerCell.setText(LocaleController.getString("ChannelInviteViaLinkRestricted3", R.string.ChannelInviteViaLinkRestricted3)); + } + } + } else if (type == TYPE_PUBLIC_LINKS) { headerCell.setText(LocaleController.getString("YourPublicCommunities", R.string.YourPublicCommunities)); } else { headerCell.setText(LocaleController.getString("LastActiveCommunities", R.string.LastActiveCommunities)); @@ -351,8 +458,10 @@ public class LimitReachedBottomSheet extends BottomSheetWithRecyclerListView { return 3; } else if (loadingRow == position) { return 5; + } else if (emptyViewDividerRow == position) { + return 6; } - if (type == TYPE_TO_MANY_COMMUNITIES) { + if (type == TYPE_TO0_MANY_COMMUNITIES || type == TYPE_ADD_MEMBERS_RESTRICTED) { return 4; } else { return 1; @@ -375,6 +484,35 @@ public class LimitReachedBottomSheet extends BottomSheetWithRecyclerListView { updatePremiumButtonText(); } + public void setRestrictedUsers(TLRPC.Chat chat, ArrayList userRestrictedPrivacy) { + fromChat = chat; + canSendLink = ChatObject.canUserDoAdminAction(chat, ChatObject.ACTION_INVITE); + restrictedUsers = new ArrayList<>(userRestrictedPrivacy); + selectedChats.clear(); + if (canSendLink) { + selectedChats.addAll(restrictedUsers); + } + updateRows(); + updateButton(); + + TLRPC.ChatFull chatFull = MessagesController.getInstance(currentAccount).getChatFull(fromChat.id); + String link; + if (fromChat.username == null && chatFull != null) { + link = chatFull.exported_invite.link; + + TLRPC.TL_messages_getWebPage webPagePreview = new TLRPC.TL_messages_getWebPage(); + webPagePreview.url = link; + ConnectionsManager.getInstance(currentAccount).sendRequest(webPagePreview,(response, error) -> AndroidUtilities.runOnUIThread(() -> { + if (response != null) { + if (response instanceof TLRPC.TL_webPage) { + linkPreview = (TLRPC.TL_webPage) response; + } + } + })); + } + + } + private class HeaderView extends LinearLayout { @@ -388,10 +526,43 @@ public class LimitReachedBottomSheet extends BottomSheetWithRecyclerListView { int icon = limitParams.icon; String descriptionStr; boolean premiumLocked = MessagesController.getInstance(currentAccount).premiumLocked; - if (premiumLocked) { - descriptionStr = limitParams.descriptionStrLocked; + if (type == TYPE_ADD_MEMBERS_RESTRICTED) { + premiumLocked = true; + if (!canSendLink) { + if (ChatObject.isChannelAndNotMegaGroup(fromChat)) { + if (restrictedUsers.size() == 1) { + descriptionStr = LocaleController.formatString("InviteChannelRestrictedUsers2One", R.string.InviteChannelRestrictedUsers2One, ContactsController.formatName(restrictedUsers.get(0))); + } else { + descriptionStr = LocaleController.formatPluralString("InviteChannelRestrictedUsers2", restrictedUsers.size(), restrictedUsers.size()); + } + } else { + if (restrictedUsers.size() == 1) { + descriptionStr = LocaleController.formatString("InviteRestrictedUsers2One", R.string.InviteRestrictedUsers2One, ContactsController.formatName(restrictedUsers.get(0))); + } else { + descriptionStr = LocaleController.formatPluralString("InviteRestrictedUsers2", restrictedUsers.size(), restrictedUsers.size()); + } + } + } else { + if (ChatObject.isChannelAndNotMegaGroup(fromChat)) { + if (restrictedUsers.size() == 1) { + descriptionStr = LocaleController.formatString("InviteChannelRestrictedUsersOne", R.string.InviteChannelRestrictedUsersOne, ContactsController.formatName(restrictedUsers.get(0))); + } else { + descriptionStr = LocaleController.formatPluralString("InviteChannelRestrictedUsers", restrictedUsers.size(), restrictedUsers.size()); + } + } else { + if (restrictedUsers.size() == 1) { + descriptionStr = LocaleController.formatString("InviteRestrictedUsersOne", R.string.InviteRestrictedUsersOne, ContactsController.formatName(restrictedUsers.get(0))); + } else { + descriptionStr = LocaleController.formatPluralString("InviteRestrictedUsers", restrictedUsers.size(), restrictedUsers.size()); + } + } + } } else { - descriptionStr = (UserConfig.getInstance(currentAccount).isPremium() || isVeryLargeFile) ? limitParams.descriptionStrPremium : limitParams.descriptionStr; + if (premiumLocked) { + descriptionStr = limitParams.descriptionStrLocked; + } else { + descriptionStr = (UserConfig.getInstance(currentAccount).isPremium() || isVeryLargeFile) ? limitParams.descriptionStrPremium : limitParams.descriptionStr; + } } int defaultLimit = limitParams.defaultLimit; int premiumLimit = limitParams.premiumLimit; @@ -452,7 +623,7 @@ public class LimitReachedBottomSheet extends BottomSheetWithRecyclerListView { } } - if (type == TYPE_PUBLIC_LINKS || type == TYPE_TO_MANY_COMMUNITIES) { + if (type == TYPE_PUBLIC_LINKS || type == TYPE_TO0_MANY_COMMUNITIES) { limitPreviewView.setDelayedAnimation(); } @@ -461,14 +632,20 @@ public class LimitReachedBottomSheet extends BottomSheetWithRecyclerListView { TextView title = new TextView(context); title.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); - if (type == TYPE_LARGE_FILE) { + if (type == TYPE_ADD_MEMBERS_RESTRICTED) { + if (canSendLink) { + title.setText(LocaleController.getString("ChannelInviteViaLink", R.string.ChannelInviteViaLink)); + } else { + title.setText(LocaleController.getString("ChannelInviteViaLinkRestricted", R.string.ChannelInviteViaLinkRestricted)); + } + } else if (type == TYPE_LARGE_FILE) { title.setText(LocaleController.getString("FileTooLarge", R.string.FileTooLarge)); } else { title.setText(LocaleController.getString("LimitReached", R.string.LimitReached)); } title.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20); title.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); - addView(title, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_HORIZONTAL, 0, 22, 0, 10)); + addView(title, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_HORIZONTAL, 0, premiumLocked ? 8 : 22, 0, 10)); TextView description = new TextView(context); description.setText(AndroidUtilities.replaceTags(descriptionStr)); @@ -509,7 +686,7 @@ public class LimitReachedBottomSheet extends BottomSheetWithRecyclerListView { limitParams.descriptionStr = LocaleController.formatString("LimitReachedChatInFolders", R.string.LimitReachedChatInFolders, limitParams.defaultLimit, limitParams.premiumLimit); limitParams.descriptionStrPremium = LocaleController.formatString("LimitReachedChatInFoldersPremium", R.string.LimitReachedChatInFoldersPremium, limitParams.premiumLimit); limitParams.descriptionStrLocked = LocaleController.formatString("LimitReachedChatInFoldersLocked", R.string.LimitReachedChatInFoldersLocked, limitParams.defaultLimit); - } else if (type == TYPE_TO_MANY_COMMUNITIES) { + } else if (type == TYPE_TO0_MANY_COMMUNITIES) { limitParams.defaultLimit = MessagesController.getInstance(currentAccount).channelsLimitDefault; limitParams.premiumLimit = MessagesController.getInstance(currentAccount).channelsLimitPremium; limitParams.icon = R.drawable.msg_limit_groups; @@ -530,6 +707,13 @@ public class LimitReachedBottomSheet extends BottomSheetWithRecyclerListView { limitParams.descriptionStr = LocaleController.formatString("LimitReachedAccounts", R.string.LimitReachedAccounts, limitParams.defaultLimit, limitParams.premiumLimit); limitParams.descriptionStrPremium = LocaleController.formatString("LimitReachedAccountsPremium", R.string.LimitReachedAccountsPremium, limitParams.premiumLimit); limitParams.descriptionStrLocked = LocaleController.formatString("LimitReachedAccountsPremium", R.string.LimitReachedAccountsPremium, limitParams.defaultLimit); + } else if (type == TYPE_ADD_MEMBERS_RESTRICTED) { + limitParams.defaultLimit = 0; + limitParams.premiumLimit = 0; + limitParams.icon = R.drawable.msg_limit_links; + limitParams.descriptionStr = LocaleController.formatString("LimitReachedAccounts", R.string.LimitReachedAccounts, limitParams.defaultLimit, limitParams.premiumLimit); + limitParams.descriptionStrPremium = ""; + limitParams.descriptionStrLocked = ""; } return limitParams; } @@ -573,7 +757,9 @@ public class LimitReachedBottomSheet extends BottomSheetWithRecyclerListView { rowCount = 0; dividerRow = -1; chatStartRow = -1; + chatEndRow = -1; loadingRow = -1; + emptyViewDividerRow = -1; headerRow = rowCount++; if (!hasFixedSize(type)) { dividerRow = rowCount++; @@ -582,11 +768,17 @@ public class LimitReachedBottomSheet extends BottomSheetWithRecyclerListView { loadingRow = rowCount++; } else { chatStartRow = rowCount; - if (type == TYPE_TO_MANY_COMMUNITIES) { + if (type == TYPE_ADD_MEMBERS_RESTRICTED) { + rowCount += restrictedUsers.size(); + } else if (type == TYPE_TO0_MANY_COMMUNITIES) { rowCount += inactiveChats.size(); } else { rowCount += chats.size(); } + chatEndRow = rowCount; + if (chatEndRow - chatStartRow > 1) { + emptyViewDividerRow = rowCount++; + } } } notifyDataSetChanged(); @@ -594,7 +786,10 @@ public class LimitReachedBottomSheet extends BottomSheetWithRecyclerListView { private void revokeSelectedLinks() { - final ArrayList channels = new ArrayList<>(selectedChats); + final ArrayList channels = new ArrayList<>(); + for (Object obj : selectedChats) { + chats.add((TLRPC.Chat) obj); + } revokeLinks(channels); } @@ -634,7 +829,7 @@ public class LimitReachedBottomSheet extends BottomSheetWithRecyclerListView { alertDialog.show(); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumButtonView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumButtonView.java index b4583c07a..198901b40 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumButtonView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumButtonView.java @@ -21,7 +21,9 @@ import androidx.core.graphics.ColorUtils; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.BuildVars; import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.Components.AnimatedFloat; import org.telegram.ui.Components.AnimatedTextView; +import org.telegram.ui.Components.CounterView; import org.telegram.ui.Components.CubicBezierInterpolator; import org.telegram.ui.Components.LayoutHelper; import org.telegram.ui.Components.RLottieImageView; @@ -34,7 +36,7 @@ public class PremiumButtonView extends FrameLayout { private float progress; private boolean inc; public AnimatedTextView buttonTextView; - public TextView overlayTextView; + public AnimatedTextView overlayTextView; private int radius; private boolean showOverlay; @@ -51,6 +53,7 @@ public class PremiumButtonView extends FrameLayout { private boolean isButtonTextSet; private boolean isFlickerDisabled; + CounterView counterView; public PremiumButtonView(@NonNull Context context, boolean createOverlayTextView) { this(context, AndroidUtilities.dp(8), createOverlayTextView); @@ -85,12 +88,13 @@ public class PremiumButtonView extends FrameLayout { addView(buttonLayout); if (createOverlayTextView) { - overlayTextView = new TextView(context); + overlayTextView = new AnimatedTextView(context, true, true, true); overlayTextView.setPadding(AndroidUtilities.dp(34), 0, AndroidUtilities.dp(34), 0); overlayTextView.setGravity(Gravity.CENTER); overlayTextView.setTextColor(Theme.getColor(Theme.key_featuredStickers_buttonText)); - overlayTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); + overlayTextView.setTextSize(AndroidUtilities.dp(14)); overlayTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + overlayTextView.getDrawable().setAllowCancel(true); overlayTextView.setBackground(Theme.createSimpleSelectorRoundRectDrawable(AndroidUtilities.dp(8), Color.TRANSPARENT, ColorUtils.setAlphaComponent(Color.WHITE, 120))); addView(overlayTextView); @@ -106,6 +110,9 @@ public class PremiumButtonView extends FrameLayout { return buttonTextView; } + AnimatedFloat counterOffset = new AnimatedFloat(this); + AnimatedFloat counterOffset2 = new AnimatedFloat(this); + @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); @@ -113,6 +120,16 @@ public class PremiumButtonView extends FrameLayout { @Override protected void dispatchDraw(Canvas canvas) { + if (counterView != null) { + counterOffset.set((counterView.counterDrawable.getWidth() * 0.85f + AndroidUtilities.dp(3)) / 2f); + counterOffset2.set(getMeasuredWidth() / 2f + (overlayTextView.getDrawable().getWidth()) / 2f + AndroidUtilities.dp(3)); + overlayTextView.setTranslationX(-counterOffset.get()); + counterView.setTranslationX(counterOffset2.get() - counterOffset.get()); + } else { + if (overlayTextView != null) { + overlayTextView.setTranslationX(0); + } + } AndroidUtilities.rectTmp.set(0, 0, getMeasuredWidth(), getMeasuredHeight()); if (overlayProgress != 1f || !drawOverlayColor) { if (inc) { @@ -157,7 +174,7 @@ public class PremiumButtonView extends FrameLayout { public void setOverlayText(String text, boolean drawOverlayColor, boolean animated) { showOverlay = true; this.drawOverlayColor = drawOverlayColor; - overlayTextView.setText(text); + overlayTextView.setText(text, animated); updateOverlay(animated); } @@ -254,4 +271,15 @@ public class PremiumButtonView extends FrameLayout { buttonTextView.setText(text, animated); buttonLayout.setOnClickListener(clickListener); } + + public void checkCounterView() { + if (counterView == null) { + counterView = new CounterView(getContext(), null); + counterView.setGravity(Gravity.LEFT); + counterView.setColors(Theme.key_featuredStickers_addButton, Theme.key_featuredStickers_buttonText); + counterView.counterDrawable.circleScale = 0.8f; + setClipChildren(false); + addView(counterView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 24, Gravity.CENTER_VERTICAL)); + } + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumFeatureBottomSheet.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumFeatureBottomSheet.java index 7e4ca9198..2e93e82a6 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumFeatureBottomSheet.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumFeatureBottomSheet.java @@ -136,6 +136,7 @@ public class PremiumFeatureBottomSheet extends BottomSheet implements Notificati PremiumPreviewFragment.PremiumFeatureData featureData = premiumFeatures.get(selectedPosition); + setApplyTopPadding(false); setApplyBottomPadding(false); useBackgroundTopPadding = false; PremiumGradient.PremiumGradientTools gradientTools = new PremiumGradient.PremiumGradientTools(Theme.key_premiumGradientBottomSheet1, Theme.key_premiumGradientBottomSheet2, Theme.key_premiumGradientBottomSheet3, null); @@ -289,7 +290,9 @@ public class PremiumFeatureBottomSheet extends BottomSheet implements Notificati if (localGradientAlpha != gradientAlpha) { gradientAlpha = localGradientAlpha; content.invalidate(); - checkTopOffset(); + AndroidUtilities.runOnUIThread(() -> { + checkTopOffset(); + }); } } @@ -380,7 +383,7 @@ public class PremiumFeatureBottomSheet extends BottomSheet implements Notificati @Override protected void dispatchDraw(Canvas canvas) { - shadowDrawable.setBounds(0, topCurrentOffset - backgroundPaddingTop + AndroidUtilities.dp(2), getMeasuredWidth(), getMeasuredHeight()); + shadowDrawable.setBounds(0, topCurrentOffset + backgroundPaddingTop - AndroidUtilities.dp(2) + 1, getMeasuredWidth(), getMeasuredHeight()); shadowDrawable.draw(canvas); super.dispatchDraw(canvas); if (actionBar != null && actionBar.getVisibility() == View.VISIBLE && actionBar.getAlpha() != 0) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumGradient.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumGradient.java index 87825cb9e..441bafe95 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumGradient.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Premium/PremiumGradient.java @@ -101,6 +101,14 @@ public class PremiumGradient { mainGradient.gradientMatrix(x, y, width, height, xOffset, yOffset); } + public Paint getPremiumLocakedPaint() { + if (lockedPremiumPaint == null) { + lockedPremiumPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + } + lockedPremiumPaint.setColor(Theme.getColor(Theme.key_featuredStickers_addButton)); + return lockedPremiumPaint; + } + public static class InternalDrawable extends BitmapDrawable { public int[] colors; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ProfileGalleryView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ProfileGalleryView.java index 8b513a2d1..e16c91e41 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ProfileGalleryView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ProfileGalleryView.java @@ -67,6 +67,8 @@ public class ProfileGalleryView extends CircularViewPager implements Notificatio float[] radii = new float[8]; private ImageLocation prevImageLocation; + private ImageLocation prevThumbLocation; + private VectorAvatarThumbDrawable prevVectorAvatarThumbDrawable; private ArrayList videoFileNames = new ArrayList<>(); private ArrayList thumbsFileNames = new ArrayList<>(); private ArrayList photos = new ArrayList<>(); @@ -110,6 +112,10 @@ public class ProfileGalleryView extends CircularViewPager implements Notificatio return null; } + public void clearPrevImages() { + prevImageLocation = null; + } + private static class Item { boolean isActiveVideo; private View textureViewStubView; @@ -526,6 +532,8 @@ public class ProfileGalleryView extends CircularViewPager implements Notificatio return false; } prevImageLocation = imageLocation; + prevThumbLocation = thumbLocation; + prevVectorAvatarThumbDrawable = vectorAvatar; thumbsFileNames.add(null); videoFileNames.add(null); imagesLocations.add(imageLocation); @@ -536,7 +544,7 @@ public class ProfileGalleryView extends CircularViewPager implements Notificatio imagesLocationsSizes.add(-1); imagesUploadProgress.add(null); getAdapter().notifyDataSetChanged(); - // resetCurrentItem(); + resetCurrentItem(); return true; } @@ -801,6 +809,9 @@ public class ProfileGalleryView extends CircularViewPager implements Notificatio if (did == dialogId && parentClassGuid == guid && adapter != null) { boolean fromCache = (Boolean) args[2]; ArrayList arrayList = new ArrayList<>((ArrayList) args[4]); + if (arrayList.isEmpty() && fromCache) { + return; + } customAvatarIndex = -1; fallbackPhotoIndex = -1; @@ -891,30 +902,42 @@ public class ProfileGalleryView extends CircularViewPager implements Notificatio } ImageLocation location = ImageLocation.getForPhoto(sizeFull, photo); if (location != null) { - imagesLocations.add(location); - thumbsFileNames.add(FileLoader.getAttachFileName(sizeThumb instanceof TLRPC.TL_photoStrippedSize ? sizeFull : sizeThumb)); - thumbsLocations.add(ImageLocation.getForPhoto(sizeThumb, photo)); + if (prevImageLocation != null && prevImageLocation.photoId == location.photoId) { + thumbsFileNames.add(null); + videoFileNames.add(null); + imagesLocations.add(prevImageLocation); + thumbsLocations.add(prevThumbLocation); + vectorAvatars.add(prevVectorAvatarThumbDrawable); + videoLocations.add(null); + photos.add(null); + imagesLocationsSizes.add(-1); + imagesUploadProgress.add(null); + } else { + imagesLocations.add(location); + thumbsFileNames.add(FileLoader.getAttachFileName(sizeThumb instanceof TLRPC.TL_photoStrippedSize ? sizeFull : sizeThumb)); + thumbsLocations.add(ImageLocation.getForPhoto(sizeThumb, photo)); - if (!photo.video_sizes.isEmpty()) { - final TLRPC.VideoSize videoSize = FileLoader.getClosestVideoSizeWithSize(photo.video_sizes, 1000); - final TLRPC.VideoSize vectorMarkupVideoSize = FileLoader.getVectorMarkupVideoSize(photo); - if (vectorMarkupVideoSize != null) { - vectorAvatars.add(new VectorAvatarThumbDrawable(vectorMarkupVideoSize, user != null && user.premium, VectorAvatarThumbDrawable.TYPE_PROFILE)); + if (!photo.video_sizes.isEmpty()) { + final TLRPC.VideoSize videoSize = FileLoader.getClosestVideoSizeWithSize(photo.video_sizes, 1000); + final TLRPC.VideoSize vectorMarkupVideoSize = FileLoader.getVectorMarkupVideoSize(photo); + if (vectorMarkupVideoSize != null) { + vectorAvatars.add(new VectorAvatarThumbDrawable(vectorMarkupVideoSize, user != null && user.premium, VectorAvatarThumbDrawable.TYPE_PROFILE)); + videoLocations.add(null); + videoFileNames.add(null); + } else { + vectorAvatars.add(null); + videoLocations.add(ImageLocation.getForPhoto(videoSize, photo)); + videoFileNames.add(FileLoader.getAttachFileName(videoSize)); + } + } else { videoLocations.add(null); videoFileNames.add(null); - } else { vectorAvatars.add(null); - videoLocations.add(ImageLocation.getForPhoto(videoSize, photo)); - videoFileNames.add(FileLoader.getAttachFileName(videoSize)); } - } else { - videoLocations.add(null); - videoFileNames.add(null); - vectorAvatars.add(null); + photos.add(photo); + imagesLocationsSizes.add(sizeFull.size); + imagesUploadProgress.add(null); } - photos.add(photo); - imagesLocationsSizes.add(sizeFull.size); - imagesUploadProgress.add(null); } } } @@ -1203,12 +1226,15 @@ public class ProfileGalleryView extends CircularViewPager implements Notificatio return; } forceResetPosition = true; - adapter.notifyDataSetChanged(); reset(); this.dialogId = dialogId; - if (dialogId != 0) { - MessagesController.getInstance(currentAccount).loadDialogPhotos(dialogId, 80, 0, true, parentClassGuid); - } +// if (dialogId != 0) { +// MessagesController.getInstance(currentAccount).loadDialogPhotos(dialogId, 80, 0, true, parentClassGuid); +// } + } + + public long getDialogId() { + return dialogId; } private void reset() { @@ -1221,7 +1247,10 @@ public class ProfileGalleryView extends CircularViewPager implements Notificatio imagesLocationsSizes.clear(); imagesUploadProgress.clear(); adapter.notifyDataSetChanged(); + setCurrentItem(0 , false); + selectedPage = 0; uploadingImageLocation = null; + prevImageLocation = null; } public void setRoundRadius(int topRadius, int bottomRadius) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/RLottieDrawable.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/RLottieDrawable.java index ba05e7a6b..316ffb6af 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/RLottieDrawable.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/RLottieDrawable.java @@ -822,7 +822,7 @@ public class RLottieDrawable extends BitmapDrawable implements Animatable, Bitma } protected void invalidateInternal() { - for (int i = 0; i < parentViews.size(); i++) { + for (int i = 0, N = parentViews.size(); i < N; i++) { parentViews.get(i).invalidate(); } if (masterParent != null) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ReactedHeaderView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ReactedHeaderView.java index bb7e9c956..ab1a25ff3 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ReactedHeaderView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ReactedHeaderView.java @@ -5,6 +5,7 @@ import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; import android.graphics.drawable.Drawable; import android.text.TextUtils; +import android.util.Pair; import android.util.TypedValue; import android.view.Gravity; import android.view.View; @@ -40,15 +41,15 @@ public class ReactedHeaderView extends FrameLayout { private int currentAccount; private boolean ignoreLayout; - private List seenUsers = new ArrayList<>(); - private List users = new ArrayList<>(); + private List seenUsers = new ArrayList<>(); + private List users = new ArrayList<>(); private long dialogId; private MessageObject message; private int fixedWidth; private boolean isLoaded; - private Consumer> seenCallback; + private Consumer> seenCallback; public ReactedHeaderView(@NonNull Context context, int currentAccount, MessageObject message, long dialogId) { super(context); @@ -90,10 +91,23 @@ public class ReactedHeaderView extends FrameLayout { setBackground(Theme.getSelectorDrawable(false)); } - public void setSeenCallback(Consumer> seenCallback) { + public void setSeenCallback(Consumer> seenCallback) { this.seenCallback = seenCallback; } + public static class UserSeen { + public TLRPC.User user; + public int date = 0; + + public UserSeen(TLRPC.User user) { + this.user = user; + } + public UserSeen(TLRPC.User user, int date) { + this.user = user; + this.date = date; + } + } + @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); @@ -112,29 +126,43 @@ public class ReactedHeaderView extends FrameLayout { ConnectionsManager.getInstance(currentAccount).sendRequest(req, (response, error) -> { if (response instanceof TLRPC.Vector) { List usersToRequest = new ArrayList<>(); + List dates = new ArrayList<>(); TLRPC.Vector v = (TLRPC.Vector) response; for (Object obj : v.objects) { if (obj instanceof Long) { long l = (long) obj; - if (fromId != l) + if (fromId != l) { usersToRequest.add(l); + dates.add(0); + } + } else if (obj instanceof TLRPC.TL_readParticipantDate) { + long userId = ((TLRPC.TL_readParticipantDate) obj).user_id; + int date = ((TLRPC.TL_readParticipantDate) obj).date; + if (fromId != userId) { + usersToRequest.add(userId); + dates.add(date); + } } } usersToRequest.add(fromId); + dates.add(0); - List usersRes = new ArrayList<>(); + List usersRes = new ArrayList<>(); Runnable callback = () -> { seenUsers.addAll(usersRes); - for (TLRPC.User u : usersRes) { + for (UserSeen p : usersRes) { boolean hasSame = false; for (int i = 0; i < users.size(); i++) { - if (users.get(i).id == u.id) { + if (users.get(i).user.id == p.user.id) { hasSame = true; + if (p.date > 0) { + users.get(i).date = p.date; + } break; } } if (!hasSame) { - users.add(u); + users.add(p); } } if (seenCallback != null) @@ -153,8 +181,10 @@ public class ReactedHeaderView extends FrameLayout { for (int i = 0; i < users.users.size(); i++) { TLRPC.User user = users.users.get(i); MessagesController.getInstance(currentAccount).putUser(user, false); - if (!user.self && usersToRequest.contains(user.id)) - usersRes.add(user); + int index = usersToRequest.indexOf(user.id); + if (!user.self && index >= 0) { + usersRes.add(new UserSeen(user, dates.get(index))); + } } } callback.run(); @@ -168,8 +198,10 @@ public class ReactedHeaderView extends FrameLayout { for (int i = 0; i < chatFull.users.size(); i++) { TLRPC.User user = chatFull.users.get(i); MessagesController.getInstance(currentAccount).putUser(user, false); - if (!user.self && usersToRequest.contains(user.id)) - usersRes.add(user); + int index = usersToRequest.indexOf(user.id); + if (!user.self && index >= 0) { + usersRes.add(new UserSeen(user, dates.get(index))); + } } } callback.run(); @@ -234,13 +266,13 @@ public class ReactedHeaderView extends FrameLayout { if (message.messageOwner.from_id != null && u.id != message.messageOwner.from_id.user_id) { boolean hasSame = false; for (int i = 0; i < users.size(); i++) { - if (users.get(i).id == u.id) { + if (users.get(i).user.id == u.id) { hasSame = true; break; } } if (!hasSame) { - users.add(u); + users.add(new UserSeen(u, 0)); } } } @@ -251,7 +283,7 @@ public class ReactedHeaderView extends FrameLayout { }, ConnectionsManager.RequestFlagInvokeAfter); } - public List getSeenUsers() { + public List getSeenUsers() { return seenUsers; } @@ -259,7 +291,7 @@ public class ReactedHeaderView extends FrameLayout { setEnabled(users.size() > 0); for (int i = 0; i < 3; i++) { if (i < users.size()) { - avatarsImageView.setObject(i, currentAccount, users.get(i)); + avatarsImageView.setObject(i, currentAccount, users.get(i).user); } else { avatarsImageView.setObject(i, currentAccount, null); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ReactedUsersListView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ReactedUsersListView.java index 8b97b51d4..370b6685d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ReactedUsersListView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ReactedUsersListView.java @@ -8,7 +8,10 @@ import android.content.Context; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.os.Build; +import android.text.TextUtils; +import android.util.Log; import android.util.LongSparseArray; +import android.util.Pair; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; @@ -47,7 +50,7 @@ import java.util.List; public class ReactedUsersListView extends FrameLayout { public final static int VISIBLE_ITEMS = 6; - public final static int ITEM_HEIGHT_DP = 48; + public final static int ITEM_HEIGHT_DP = 50; private final static int USER_VIEW_TYPE = 0; private final static int CUSTOM_EMOJI_VIEW_TYPE = 1; @@ -93,7 +96,7 @@ public class ReactedUsersListView extends FrameLayout { updateHeight(); } }; - LinearLayoutManager llm = new LinearLayoutManager(context); + final LinearLayoutManager llm = new LinearLayoutManager(context); listView.setLayoutManager(llm); if (addPadding) { listView.setPadding(0, 0, 0, AndroidUtilities.dp(8)); @@ -110,7 +113,7 @@ public class ReactedUsersListView extends FrameLayout { View view = null; switch (viewType) { case USER_VIEW_TYPE: - view = new ReactedUserHolderView(context); + view = new ReactedUserHolderView(currentAccount, context); break; default: case CUSTOM_EMOJI_VIEW_TYPE: @@ -199,17 +202,34 @@ public class ReactedUsersListView extends FrameLayout { } @SuppressLint("NotifyDataSetChanged") - public ReactedUsersListView setSeenUsers(List users) { + public ReactedUsersListView setSeenUsers(List users) { + if (userReactions != null && !userReactions.isEmpty()) { + for (ReactedHeaderView.UserSeen p : users) { + TLRPC.User user = p.user; + if (user != null && p.date > 0) { + for (int i = 0; i < userReactions.size(); ++i) { + TLRPC.MessagePeerReaction react = userReactions.get(i); + if (react != null && react.date <= 0 && react.peer_id.user_id == user.id) { + react.date = p.date; + react.dateIsSeen = true; + break; + } + } + } + } + } List nr = new ArrayList<>(users.size()); - for (TLRPC.User u : users) { - ArrayList userReactions = peerReactionMap.get(u.id); + for (ReactedHeaderView.UserSeen p : users) { + ArrayList userReactions = peerReactionMap.get(p.user.id); if (userReactions != null) { continue; } TLRPC.TL_messagePeerReaction r = new TLRPC.TL_messagePeerReaction(); r.reaction = null; r.peer_id = new TLRPC.TL_peerUser(); - r.peer_id.user_id = u.id; + r.peer_id.user_id = p.user.id; + r.date = p.date; + r.dateIsSeen = true; userReactions = new ArrayList<>(); userReactions.add(r); peerReactionMap.put(MessageObject.getPeerId(r.peer_id), userReactions); @@ -219,7 +239,7 @@ public class ReactedUsersListView extends FrameLayout { onlySeenNow = true; } userReactions.addAll(nr); - Collections.sort(userReactions, Comparator.comparingInt(o -> o.reaction != null ? 0 : 1)); + Collections.sort(userReactions, Comparator.comparingInt(o -> o.date <= 0 || o.reaction != null ? Integer.MIN_VALUE : -o.date)); adapter.notifyDataSetChanged(); updateHeight(); @@ -288,8 +308,7 @@ public class ReactedUsersListView extends FrameLayout { updateCustomReactionsButton(); } - Collections.sort(userReactions, Comparator.comparingInt(o -> o.reaction != null ? 0 : 1)); - + Collections.sort(userReactions, Comparator.comparingInt(o -> o.date <= 0 || o.reaction != null ? Integer.MIN_VALUE : -o.date)); adapter.notifyDataSetChanged(); @@ -367,20 +386,28 @@ public class ReactedUsersListView extends FrameLayout { return filter == null ? 100 : 50; } - private final class ReactedUserHolderView extends FrameLayout { + private static final class ReactedUserHolderView extends FrameLayout { + int currentAccount; + BackupImageView avatarView; SimpleTextView titleView; + SimpleTextView subtitleView; BackupImageView reactView; AvatarDrawable avatarDrawable = new AvatarDrawable(); View overlaySelectorView; + AnimatedEmojiDrawable.SwapAnimatedEmojiDrawable rightDrawable; - ReactedUserHolderView(@NonNull Context context) { + private static final MessageSeenCheckDrawable seenDrawable = new MessageSeenCheckDrawable(R.drawable.msg_mini_checks, Theme.key_windowBackgroundWhiteGrayText); + private static final MessageSeenCheckDrawable reactDrawable = new MessageSeenCheckDrawable(R.drawable.msg_reactions, Theme.key_windowBackgroundWhiteGrayText, 16, 16, 5.66f); + + ReactedUserHolderView(int currentAccount, @NonNull Context context) { super(context); - setLayoutParams(new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, AndroidUtilities.dp(48))); + this.currentAccount = currentAccount; + setLayoutParams(new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, AndroidUtilities.dp(ITEM_HEIGHT_DP))); avatarView = new BackupImageView(context); - avatarView.setRoundRadius(AndroidUtilities.dp(32)); - addView(avatarView, LayoutHelper.createFrameRelatively(36, 36, Gravity.START | Gravity.CENTER_VERTICAL, 8, 0, 0, 0)); + avatarView.setRoundRadius(AndroidUtilities.dp(34)); + addView(avatarView, LayoutHelper.createFrameRelatively(34, 34, Gravity.START | Gravity.CENTER_VERTICAL, 10, 0, 0, 0)); titleView = new SimpleTextView(context) { @Override @@ -394,10 +421,21 @@ public class ReactedUsersListView extends FrameLayout { titleView.setTextColor(Theme.getColor(Theme.key_actionBarDefaultSubmenuItem)); titleView.setEllipsizeByGradient(true); titleView.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_NO); - titleView.setPadding(0, AndroidUtilities.dp(12), 0, AndroidUtilities.dp(12)); titleView.setRightPadding(AndroidUtilities.dp(30)); titleView.setTranslationX(LocaleController.isRTL ? AndroidUtilities.dp(30) : 0); - addView(titleView, LayoutHelper.createFrameRelatively(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.FILL_HORIZONTAL | Gravity.CENTER_VERTICAL, 58, 0, 12, 0)); + addView(titleView, LayoutHelper.createFrameRelatively(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.FILL_HORIZONTAL | Gravity.TOP, 55, 5.33f, 12, 0)); + + rightDrawable = new AnimatedEmojiDrawable.SwapAnimatedEmojiDrawable(this, AndroidUtilities.dp(18)); + titleView.setDrawablePadding(AndroidUtilities.dp(3)); + titleView.setRightDrawable(rightDrawable); + + subtitleView = new SimpleTextView(context); + subtitleView.setTextSize(13); + subtitleView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText)); + subtitleView.setEllipsizeByGradient(true); + subtitleView.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_NO); + subtitleView.setTranslationX(LocaleController.isRTL ? AndroidUtilities.dp(30) : 0); + addView(subtitleView, LayoutHelper.createFrameRelatively(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.FILL_HORIZONTAL | Gravity.TOP, 55, 19f, 20, 0)); reactView = new BackupImageView(context); addView(reactView, LayoutHelper.createFrameRelatively(24, 24, Gravity.END | Gravity.CENTER_VERTICAL, 0, 0, 12, 0)); @@ -412,14 +450,24 @@ public class ReactedUsersListView extends FrameLayout { if (u == null) { return; } + + Long documentId = UserObject.getEmojiStatusDocumentId(u); + if (documentId == null) { + rightDrawable.set((Drawable) null, false); + } else { + rightDrawable.set(documentId, false); + } + avatarDrawable.setInfo(u); titleView.setText(UserObject.getUserName(u)); + Drawable thumb = avatarDrawable; if (u.photo != null && u.photo.strippedBitmap != null) { thumb = u.photo.strippedBitmap; } avatarView.setImage(ImageLocation.getForUser(u, ImageLocation.TYPE_SMALL), "50_50", thumb, u); + String contentDescription; boolean hasReactImage = false; if (reaction.reaction != null) { ReactionsLayoutInBubble.VisibleReaction visibleReaction = ReactionsLayoutInBubble.VisibleReaction.fromTLReaction(reaction.reaction); @@ -438,13 +486,32 @@ public class ReactedUsersListView extends FrameLayout { reactView.setAnimatedEmojiDrawable(drawable); hasReactImage = true; } - setContentDescription(LocaleController.formatString("AccDescrReactedWith", R.string.AccDescrReactedWith, UserObject.getUserName(u), visibleReaction.emojicon != null ? visibleReaction.emojicon : reaction.reaction)); + contentDescription = LocaleController.formatString("AccDescrReactedWith", R.string.AccDescrReactedWith, UserObject.getUserName(u), visibleReaction.emojicon != null ? visibleReaction.emojicon : reaction.reaction); } else { reactView.setImageDrawable(null); - setContentDescription(LocaleController.formatString("AccDescrPersonHasSeen", R.string.AccDescrPersonHasSeen, UserObject.getUserName(u))); + contentDescription = LocaleController.formatString("AccDescrPersonHasSeen", R.string.AccDescrPersonHasSeen, UserObject.getUserName(u)); } + + if (reaction.date != 0) { + contentDescription += " " + LocaleController.formatSeenDate(reaction.date); + } + setContentDescription(contentDescription); + + if (reaction.date != 0) { + subtitleView.setVisibility(View.VISIBLE); + CharSequence icon = reaction.dateIsSeen ? seenDrawable.getSpanned(getContext()) : reactDrawable.getSpanned(getContext()); + subtitleView.setText(TextUtils.concat(icon, LocaleController.formatSeenDate(reaction.date))); + subtitleView.setTranslationY(!reaction.dateIsSeen ? AndroidUtilities.dp(-1) : 0); + titleView.setTranslationY(0); + } else { + subtitleView.setVisibility(View.GONE); + titleView.setTranslationY(AndroidUtilities.dp(9)); + } + titleView.setRightPadding(AndroidUtilities.dp(hasReactImage ? 30 : 0)); titleView.setTranslationX(hasReactImage && LocaleController.isRTL ? AndroidUtilities.dp(30) : 0); + ((MarginLayoutParams) subtitleView.getLayoutParams()).rightMargin = AndroidUtilities.dp(hasReactImage && !LocaleController.isRTL ? 12 + 24 : 12); + subtitleView.setTranslationX(hasReactImage && LocaleController.isRTL ? AndroidUtilities.dp(30) : 0); } @Override @@ -457,6 +524,22 @@ public class ReactedUsersListView extends FrameLayout { super.onInitializeAccessibilityNodeInfo(info); info.setEnabled(true); } + + @Override + protected void onAttachedToWindow() { + super.onAttachedToWindow(); + if (rightDrawable != null) { + rightDrawable.attach(); + } + } + + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + if (rightDrawable != null) { + rightDrawable.detach(); + } + } } public ReactedUsersListView setOnProfileSelectedListener(OnProfileSelectedListener onProfileSelectedListener) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/Reactions/ChatSelectionReactionMenuOverlay.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/Reactions/ChatSelectionReactionMenuOverlay.java index 2529d8a52..28298b7cd 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/Reactions/ChatSelectionReactionMenuOverlay.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/Reactions/ChatSelectionReactionMenuOverlay.java @@ -112,7 +112,9 @@ public class ChatSelectionReactionMenuOverlay extends FrameLayout { public void onReactionClicked(View view, ReactionsLayoutInBubble.VisibleReaction visibleReaction, boolean longpress, boolean addToRecent) { parentFragment.selectReaction(currentPrimaryObject, reactionsContainerLayout, view, 0, 0, visibleReaction, false, longpress, addToRecent); AndroidUtilities.runOnUIThread(() -> { - reactionsContainerLayout.dismissParent(true); + if (reactionsContainerLayout != null) { + reactionsContainerLayout.dismissParent(true); + } hideMenu(); }); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ReactionsContainerLayout.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ReactionsContainerLayout.java index c92f29983..e41654f2e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ReactionsContainerLayout.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ReactionsContainerLayout.java @@ -969,7 +969,7 @@ public class ReactionsContainerLayout extends FrameLayout implements Notificatio } } } else { - if (BuildVars.DEBUG_VERSION) { + if (BuildVars.DEBUG_PRIVATE_VERSION) { throw new RuntimeException("Unknown chat reactions type: " + reactionsChat.available_reactions); } } @@ -1163,7 +1163,7 @@ public class ReactionsContainerLayout extends FrameLayout implements Notificatio alertDialog.show(); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } @@ -1591,6 +1591,14 @@ public class ReactionsContainerLayout extends FrameLayout implements Notificatio } } + @Override + public boolean dispatchTouchEvent(MotionEvent ev) { + if (getAlpha() < 0.5f) { + return false; + } + return super.dispatchTouchEvent(ev); + } + @Override public void setAlpha(float alpha) { if (getAlpha() != alpha && alpha == 0) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ScrollSlidingTabStrip.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ScrollSlidingTabStrip.java index ac5e5469f..98dd272e1 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ScrollSlidingTabStrip.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ScrollSlidingTabStrip.java @@ -277,43 +277,6 @@ public class ScrollSlidingTabStrip extends HorizontalScrollView { futureTabsPositions.put(index, view); } - public TextView addIconTabWithCounter(int id, Drawable drawable) { - String key = "textTab" + id; - final int position = tabCount++; - - FrameLayout tab = (FrameLayout) prevTypes.get(key); - TextView textView; - if (tab != null) { - textView = (TextView) tab.getChildAt(1); - checkViewIndex(key, tab, position); - } else { - tab = new FrameLayout(getContext()); - tab.setFocusable(true); - tabsContainer.addView(tab, position); - - ImageView imageView = new ImageView(getContext()); - imageView.setImageDrawable(drawable); - imageView.setScaleType(ImageView.ScaleType.CENTER); - tab.setOnClickListener(v -> delegate.onPageSelected((Integer) v.getTag(R.id.index_tag))); - tab.addView(imageView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); - - textView = new TextView(getContext()); - textView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); - textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 12); - textView.setTextColor(getThemedColor(Theme.key_chat_emojiPanelBadgeText)); - textView.setGravity(Gravity.CENTER); - textView.setBackgroundDrawable(Theme.createRoundRectDrawable(AndroidUtilities.dp(9), getThemedColor(Theme.key_chat_emojiPanelBadgeBackground))); - textView.setMinWidth(AndroidUtilities.dp(18)); - textView.setPadding(AndroidUtilities.dp(5), 0, AndroidUtilities.dp(5), AndroidUtilities.dp(1)); - tab.addView(textView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, 18, Gravity.TOP | Gravity.LEFT, 26, 6, 0, 0)); - } - tab.setTag(R.id.index_tag, position); - tab.setSelected(position == currentPosition); - - tabTypes.put(key, tab); - return textView; - } - public FrameLayout addIconTab(int id, Drawable drawable) { String key = "tab" + id; final int position = tabCount++; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/SearchDownloadsContainer.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/SearchDownloadsContainer.java index fd8babbed..17d16234a 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/SearchDownloadsContainer.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/SearchDownloadsContainer.java @@ -302,7 +302,8 @@ public class SearchDownloadsContainer extends FrameLayout implements Notificatio } for (int i = 0; i < recentLoadingFilesTmp.size(); i++) { - if (FileLoader.getDocumentFileName(recentLoadingFilesTmp.get(i).getDocument()).toLowerCase().contains(q)) { + String documentName = FileLoader.getDocumentFileName(recentLoadingFilesTmp.get(i).getDocument()); + if (documentName != null && documentName.toLowerCase().contains(q)) { MessageObject messageObject = new MessageObject(currentAccount, recentLoadingFilesTmp.get(i).messageOwner, false, false); messageObject.mediaExists = recentLoadingFilesTmp.get(i).mediaExists; messageObject.setQuery(searchQuery); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/SearchViewPager.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/SearchViewPager.java index 421793879..d38b1dc7f 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/SearchViewPager.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/SearchViewPager.java @@ -500,7 +500,7 @@ public class SearchViewPager extends ViewPagerFixed implements FilteredSearchVie AlertDialog alertDialog = builder.show(); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } else if (id == speedItemId) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ShareAlert.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ShareAlert.java index b5d87a252..90a485861 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ShareAlert.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ShareAlert.java @@ -682,7 +682,7 @@ public class ShareAlert extends BottomSheet implements NotificationCenter.Notifi ignoreLayout = false; } fullHeight = contentSize >= totalHeight; - topOffset = (fullHeight || !SharedConfig.smoothKeyboard) ? 0 : totalHeight - contentSize; + topOffset = fullHeight ? 0 : totalHeight - contentSize; ignoreLayout = true; checkCurrentList(false); ignoreLayout = false; @@ -697,7 +697,7 @@ public class ShareAlert extends BottomSheet implements NotificationCenter.Notifi widthSize -= backgroundPaddingLeft * 2; - int keyboardSize = SharedConfig.smoothKeyboard ? 0 : measureKeyboardHeight(); + int keyboardSize = 0; if (!commentTextView.isWaitingForKeyboardOpen() && keyboardSize <= AndroidUtilities.dp(20) && !commentTextView.isPopupShowing() && !commentTextView.isAnimatePopupClosing()) { ignoreLayout = true; commentTextView.hideEmojiView(); @@ -708,7 +708,7 @@ public class ShareAlert extends BottomSheet implements NotificationCenter.Notifi if (keyboardSize <= AndroidUtilities.dp(20)) { if (!AndroidUtilities.isInMultiwindow) { int paddingBottom; - if (SharedConfig.smoothKeyboard && keyboardVisible) { + if (keyboardVisible) { paddingBottom = 0; } else { paddingBottom = commentTextView.getEmojiPadding(); @@ -762,7 +762,7 @@ public class ShareAlert extends BottomSheet implements NotificationCenter.Notifi int keyboardSize = measureKeyboardHeight(); int paddingBottom; - if (SharedConfig.smoothKeyboard && keyboardVisible) { + if (keyboardVisible) { paddingBottom = 0; } else { paddingBottom = keyboardSize <= AndroidUtilities.dp(20) && !AndroidUtilities.isInMultiwindow && !AndroidUtilities.isTablet() ? commentTextView.getEmojiPadding() : 0; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/SpeedIconDrawable.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/SpeedIconDrawable.java index b75a2e6e5..11c4fca4c 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/SpeedIconDrawable.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/SpeedIconDrawable.java @@ -6,12 +6,19 @@ import android.graphics.Paint; import android.graphics.PixelFormat; import android.graphics.drawable.Drawable; import android.text.TextUtils; +import android.util.Log; import android.view.Gravity; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.LocaleController; +import org.telegram.messenger.R; + +import java.text.DecimalFormat; +import java.text.DecimalFormatSymbols; +import java.util.Locale; public class SpeedIconDrawable extends Drawable { @@ -54,15 +61,26 @@ public class SpeedIconDrawable extends Drawable { } } - public void setValue(float value, boolean animated) { - float roundedValue = Math.round(value * 10F) / 10F; - String text; +// private static Locale decimalFormatLocale; +// private static DecimalFormat decimalFormat; + public static String formatNumber(float value) { + final float precision = Math.abs(value - .25f) < 0.001f && false ? 100F : 10F; + float roundedValue = Math.round(value * precision) / precision; if (roundedValue == (long) roundedValue) { - text = String.format("%d", (long) roundedValue); + return "" + (long) roundedValue; } else { - text = String.format("%s", roundedValue); + return "" + roundedValue; } - text += "X"; +// if (decimalFormat == null || decimalFormatLocale != Locale.getDefault()) { +// DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance(decimalFormatLocale = Locale.getDefault()); +// symbols.setDecimalSeparator('.'); +// decimalFormat = new DecimalFormat("###,##0.0", symbols); +// } +// return decimalFormat.format(value); + } + + public void setValue(float value, boolean animated) { + String text = formatNumber(value) + "X"; if (!animated || !TextUtils.equals(textDrawable.getText(), text)) { textDrawable.cancelAnimation(); textDrawable.setText(text, animated); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/StickerEmptyView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/StickerEmptyView.java index 63b520f5f..2784390c5 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/StickerEmptyView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/StickerEmptyView.java @@ -15,6 +15,7 @@ import androidx.annotation.NonNull; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.DocumentObject; import org.telegram.messenger.ImageLocation; +import org.telegram.messenger.LiteMode; import org.telegram.messenger.MediaDataController; import org.telegram.messenger.NotificationCenter; import org.telegram.messenger.SvgHelper; @@ -79,7 +80,9 @@ public class StickerEmptyView extends FrameLayout implements NotificationCenter. public void setVisibility(int visibility) { if (getVisibility() == View.GONE && visibility == View.VISIBLE) { setSticker(); - stickerView.getImageReceiver().startAnimation(); + if (LiteMode.isEnabled(LiteMode.FLAGS_ANIMATED_STICKERS)) { + stickerView.getImageReceiver().startAnimation(); + } } else if (visibility == View.GONE) { stickerView.getImageReceiver().clearImage(); } @@ -235,6 +238,10 @@ public class StickerEmptyView extends FrameLayout implements NotificationCenter. imageFilter = "130_130"; } + if (!LiteMode.isEnabled(LiteMode.FLAGS_ANIMATED_STICKERS)) { + imageFilter += "_firstframe"; + } + if (document != null) { SvgHelper.SvgDrawable svgThumb = DocumentObject.getSvgThumb(document.thumbs, colorKey1, 0.2f); if (svgThumb != null) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/StickersAlert.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/StickersAlert.java index 86db403bb..183779a52 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/StickersAlert.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/StickersAlert.java @@ -1252,7 +1252,7 @@ public class StickersAlert extends BottomSheet implements NotificationCenter.Not EditTextBoldCursor editText = new EditTextBoldCursor(context); editText.setBackground(null); - editText.setLineColors(Theme.getColor(Theme.key_dialogInputField), Theme.getColor(Theme.key_dialogInputFieldActivated), Theme.getColor(Theme.key_dialogTextRed2)); + editText.setLineColors(Theme.getColor(Theme.key_dialogInputField), Theme.getColor(Theme.key_dialogInputFieldActivated), Theme.getColor(Theme.key_dialogTextRed)); editText.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); editText.setTextColor(getThemedColor(Theme.key_dialogTextBlack)); editText.setMaxLines(1); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ThemeEditorView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ThemeEditorView.java index a089dd300..00436d5b3 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ThemeEditorView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ThemeEditorView.java @@ -344,7 +344,7 @@ public class ThemeEditorView { colorEditText[a].setCursorWidth(1.5f); colorEditText[a].setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); colorEditText[a].setBackground(null); - colorEditText[a].setLineColors(Theme.getColor(Theme.key_dialogInputField), Theme.getColor(Theme.key_dialogInputFieldActivated), Theme.getColor(Theme.key_dialogTextRed2)); + colorEditText[a].setLineColors(Theme.getColor(Theme.key_dialogInputField), Theme.getColor(Theme.key_dialogInputFieldActivated), Theme.getColor(Theme.key_dialogTextRed)); colorEditText[a].setMaxLines(1); colorEditText[a].setTag(a); colorEditText[a].setGravity(Gravity.CENTER); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/UsersAlertBase.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/UsersAlertBase.java index 60ea5042a..0094c5be7 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/UsersAlertBase.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/UsersAlertBase.java @@ -117,10 +117,6 @@ public class UsersAlertBase extends BottomSheet { containerView.addView(emptyView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.LEFT | Gravity.TOP, 0, 58 + 4, 0, 0)); listView = new RecyclerListView(context) { - @Override - protected boolean allowSelectChildAtPosition(float x, float y) { - return isAllowSelectChildAtPosition(x, y); - } @Override public void setTranslationY(float translationY) { @@ -194,10 +190,6 @@ public class UsersAlertBase extends BottomSheet { return new ContainerView(context); } - protected boolean isAllowSelectChildAtPosition(float x, float y) { - return y >= AndroidUtilities.dp(58) + (Build.VERSION.SDK_INT >= 21 ? AndroidUtilities.statusBarHeight : 0); - } - protected void updateColorKeys() { } @@ -246,7 +238,7 @@ public class UsersAlertBase extends BottomSheet { @Override public boolean dispatchTouchEvent(MotionEvent event) { MotionEvent e = MotionEvent.obtain(event); - e.setLocation(e.getRawX(), e.getRawY() - containerView.getTranslationY()); + e.setLocation(e.getRawX(), e.getRawY() - listView.getMeasuredHeight()); if (e.getAction() == MotionEvent.ACTION_UP) { e.setAction(MotionEvent.ACTION_CANCEL); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/VideoPlayer.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/VideoPlayer.java index 244072203..e254b82c2 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/VideoPlayer.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/VideoPlayer.java @@ -24,19 +24,24 @@ import androidx.annotation.Nullable; import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.DefaultLoadControl; import com.google.android.exoplayer2.DefaultRenderersFactory; +import com.google.android.exoplayer2.ExoPlaybackException; import com.google.android.exoplayer2.ExoPlayer; import com.google.android.exoplayer2.MediaItem; import com.google.android.exoplayer2.PlaybackException; import com.google.android.exoplayer2.PlaybackParameters; import com.google.android.exoplayer2.Player; +import com.google.android.exoplayer2.Renderer; +import com.google.android.exoplayer2.SimpleExoPlayer; import com.google.android.exoplayer2.analytics.AnalyticsListener; import com.google.android.exoplayer2.audio.AudioAttributes; import com.google.android.exoplayer2.audio.AudioCapabilities; import com.google.android.exoplayer2.audio.AudioProcessor; +import com.google.android.exoplayer2.audio.AudioRendererEventListener; import com.google.android.exoplayer2.audio.AudioSink; import com.google.android.exoplayer2.audio.DefaultAudioSink; import com.google.android.exoplayer2.audio.TeeAudioProcessor; import com.google.android.exoplayer2.mediacodec.MediaCodecRenderer; +import com.google.android.exoplayer2.mediacodec.MediaCodecSelector; import com.google.android.exoplayer2.source.LoopingMediaSource; import com.google.android.exoplayer2.source.MediaSource; import com.google.android.exoplayer2.source.ProgressiveMediaSource; @@ -47,6 +52,7 @@ import com.google.android.exoplayer2.trackselection.DefaultTrackSelector; import com.google.android.exoplayer2.trackselection.MappingTrackSelector; import com.google.android.exoplayer2.upstream.DataSource; import com.google.android.exoplayer2.upstream.DefaultAllocator; +import com.google.android.exoplayer2.upstream.DefaultBandwidthMeter; import com.google.android.exoplayer2.video.SurfaceNotValidException; import com.google.android.exoplayer2.video.VideoListener; import com.google.android.exoplayer2.video.VideoSize; @@ -58,6 +64,7 @@ import org.telegram.messenger.NotificationCenter; import org.telegram.messenger.secretmedia.ExtendedDefaultDataSourceFactory; import java.nio.ByteBuffer; +import java.util.ArrayList; @SuppressLint("NewApi") public class VideoPlayer implements Player.Listener, VideoListener, AnalyticsListener, NotificationCenter.NotificationCenterDelegate { @@ -492,7 +499,7 @@ public class VideoPlayer implements Player.Listener, VideoListener, AnalyticsLis return player != null && lastReportedPlaybackState == ExoPlayer.STATE_BUFFERING; } - public void setStreamType(int type) { + public void setStreamType(int type) { if (player != null) { player.setAudioAttributes(new AudioAttributes.Builder() .setUsage(type == AudioManager.STREAM_VOICE_CALL ? C.USAGE_VOICE_COMMUNICATION : C.USAGE_MEDIA) diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/VideoTimelineView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/VideoTimelineView.java index dd57e9093..0912ec649 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/VideoTimelineView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/VideoTimelineView.java @@ -40,9 +40,8 @@ public class VideoTimelineView extends View { private long videoLength; private float progressLeft; private float progressRight = 1; - private Paint paint; - private Paint paint2; - private Paint backgroundGrayPaint; + private final Paint paint2 = new Paint(); + private final Paint backgroundGrayPaint = new Paint(); private boolean pressedLeft; private boolean pressedRight; private float pressDx; @@ -69,7 +68,6 @@ public class VideoTimelineView extends View { private TimeHintView timeHintView; Paint thumbPaint = new Paint(Paint.ANTI_ALIAS_FLAG); - Paint thumbRipplePaint = new Paint(Paint.ANTI_ALIAS_FLAG); public void setKeyframes(ArrayList keyframes) { this.keyframes.clear(); @@ -85,14 +83,9 @@ public class VideoTimelineView extends View { public VideoTimelineView(Context context) { super(context); - paint = new Paint(Paint.ANTI_ALIAS_FLAG); - paint.setColor(0xffffffff); - paint2 = new Paint(); paint2.setColor(0x7f000000); - backgroundGrayPaint = new Paint(); - thumbPaint.setColor(Color.WHITE); thumbPaint.setStrokeWidth(AndroidUtilities.dpf2(2f)); thumbPaint.setStyle(Paint.Style.STROKE); @@ -103,7 +96,6 @@ public class VideoTimelineView extends View { public void updateColors() { backgroundGrayPaint.setColor(Theme.getColor(Theme.key_windowBackgroundGray)); - thumbRipplePaint.setColor(Theme.getColor(Theme.key_chat_recordedVoiceHighlight)); roundCornersSize = 0; if (timeHintView != null) { timeHintView.updateColors(); @@ -254,11 +246,6 @@ public class VideoTimelineView extends View { return false; } - public void setColor(int color) { - paint.setColor(color); - invalidate(); - } - public void setVideoPath(String path) { destroy(); mediaMetadataRetriever = new MediaMetadataRetriever(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/voip/DarkTheme.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/voip/DarkTheme.java index a0d460188..c75e2379e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/voip/DarkTheme.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/voip/DarkTheme.java @@ -18,8 +18,6 @@ public class DarkTheme{ switch(key){ case "avatar_subtitleInProfilePink": return 0xFF8A8A8A; - case "chat_secretTimerBackground": - return 0xB61E1E1E; case "chat_emojiPanelTrendingDescription": return 0xFF717171; case "chat_inFileBackground": @@ -32,16 +30,12 @@ public class DarkTheme{ return 0xFF828282; case "chat_inTimeText": return 0xD98091A0; - case "avatar_backgroundGroupCreateSpanBlue": - return 0xFF2D5E8C; case "windowBackgroundGray": return 0xFF0D0D0D; case "windowBackgroundWhiteGreenText2": return 0xFF42C366; case "chat_emojiPanelBackspace": return 0xFF727272; - case "chat_outPreviewInstantSelectedText": - return 0xFFFFFFFF; case "chat_inBubble": return 0xFF253442; case "chat_outFileInfoSelectedText": @@ -106,22 +100,14 @@ public class DarkTheme{ return 0xFF282E33; case "chat_messageTextIn": return 0xFFFAFAFA; - case "chat_outLoaderPhoto": - return 0xFF3872A4; - case "chat_outFileIcon": - return 0xFF37729C; case "chat_serviceBackgroundSelected": return 0x60495154; case "inappPlayerBackground": return 0xD82B2B2B; case "chat_topPanelLine": return 0xFF5680A9; - case "player_actionBar": - return 0xFF1C1C1C; case "chat_outFileInfoText": return 0xFFAACFEE; - case "chat_outLoaderPhotoIcon": - return 0xFF72A5D0; case "chat_unreadMessagesStartArrowIcon": return 0xFF5A6B7A; case "chat_outAudioProgress": @@ -136,8 +122,6 @@ public class DarkTheme{ return 0xFFFAFAFA; case "chat_outAudioTitleText": return 0xFFD1EBFF; - case "chat_inLoaderPhotoSelected": - return 0xFF1C4063; case "inappPlayerPerformer": return 0xFFFAFAFA; case "actionBarActionModeDefaultTop": @@ -152,28 +136,18 @@ public class DarkTheme{ return 0xFF6CB55B; case "chat_outAudioSeekbarFill": return 0xFFC4E1F7; - case "player_placeholder": - return 0xFF2B2B2B; case "chat_inReplyNameText": return 0xFF55A2DB; case "chat_messagePanelIcons": return 0xFF696969; case "graySection": return 0xFF222222; - case "chats_nameIcon": - return 0xFFDDDDDD; case "avatar_backgroundActionBarViolet": return 0xFF212426; - case "chat_emojiPanelIconSelector": - return 0xFF5598DB; - case "chat_replyPanelMessage": - return 0xFF939393; case "chat_outPreviewInstantText": return 0xFFD1EBFF; case "chat_emojiPanelTrendingTitle": return 0xFFF4F4F4; - case "chat_inPreviewInstantSelectedText": - return 0xFF56A2DB; case "chat_inFileInfoSelectedText": return 0xFFA9CFEE; case "avatar_subtitleInProfileRed": @@ -198,8 +172,6 @@ public class DarkTheme{ return 0xFFFFFFFF; case "chat_outTimeSelectedText": return 0xFFFFFFFF; - case "chat_outFileSelectedIcon": - return 0xFF2B83CB; case "chats_secretIcon": return 0xFF71D756; case "dialogIcon": @@ -234,8 +206,6 @@ public class DarkTheme{ return 0xFFFFFFFF; case "avatar_actionBarSelectorGreen": return 0xFF495154; - case "chat_inFileIcon": - return 0xFF233442; case "chat_inAudioTitleText": return 0xFF56A3DB; case "chat_inAudioDurationSelectedText": @@ -314,8 +284,6 @@ public class DarkTheme{ return 0x6628323D; case "windowBackgroundWhiteGrayText2": return 0xFF797979; - case "chat_inFileSelectedIcon": - return 0xFF1A4063; case "profile_actionIcon": return 0xFFFFFFFF; case "chat_secretChatStatusText": @@ -398,12 +366,8 @@ public class DarkTheme{ return 0xFF549CDD; case "chat_outInstantSelected": return 0xFFFFFFFF; - case "chat_outLoaderPhotoIconSelected": - return 0xFFFFFFFF; case "chat_outAudioSeekbar": return 0x9672A5D0; - case "chat_inLoaderPhotoIcon": - return 0xFF596F80; case "windowBackgroundWhiteRedText5": return 0xFFFF4C56; case "avatar_actionBarSelectorViolet": @@ -420,8 +384,6 @@ public class DarkTheme{ return 0xFF5EA4E0; case "chat_inMenu": return 0x795C6F80; - case "player_seekBarBackground": - return 0x47525252; case "chats_sentClock": return 0xFF6082BD; case "chat_messageLinkOut": @@ -446,18 +408,12 @@ public class DarkTheme{ return 0x11FFFFFF; case "chat_goDownButtonIcon": return 0xFFE4E4E4; - case "chats_menuCloudBackgroundCats": - return 0xFF549CDD; - case "chat_inLoaderPhotoIconSelected": - return 0xFFA9CFEE; case "windowBackgroundWhiteBlueText4": return 0xFF4A8FCD; case "chat_inContactNameText": return 0xFF56A3DB; case "chat_topPanelTitle": return 0xFF55A3DB; - case "chat_outLoaderPhotoSelected": - return 0xFF3672A4; case "avatar_actionBarSelectorPink": return 0xFF495154; case "chat_outContactNameText": @@ -502,8 +458,6 @@ public class DarkTheme{ return 0xFF515151; case "chat_inFileProgress": return 0xFF5D6F80; - case "chat_outLocationBackground": - return 0xFFA0DCF5; case "chats_muteIcon": return 0xFF5B5B5B; case "groupcreate_spanText": diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/voip/VoIPHelper.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/voip/VoIPHelper.java index 245164214..ac5cec906 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/voip/VoIPHelper.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/voip/VoIPHelper.java @@ -491,7 +491,7 @@ public class VoIPHelper { commentBox.setTextColor(Theme.getColor(Theme.key_dialogTextBlack)); commentBox.setHintTextColor(Theme.getColor(Theme.key_dialogTextHint)); commentBox.setBackground(null); - commentBox.setLineColors(Theme.getColor(Theme.key_dialogInputField), Theme.getColor(Theme.key_dialogInputFieldActivated), Theme.getColor(Theme.key_dialogTextRed2)); + commentBox.setLineColors(Theme.getColor(Theme.key_dialogInputField), Theme.getColor(Theme.key_dialogInputFieldActivated), Theme.getColor(Theme.key_dialogTextRed)); commentBox.setPadding(0, AndroidUtilities.dp(4), 0, AndroidUtilities.dp(4)); commentBox.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); commentBox.setVisibility(View.GONE); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ContentPreviewViewer.java b/TMessagesProj/src/main/java/org/telegram/ui/ContentPreviewViewer.java index 84f45730b..b7db929c5 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ContentPreviewViewer.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ContentPreviewViewer.java @@ -419,7 +419,7 @@ public class ContentPreviewViewer { ActionBarMenuSubItem item = ActionBarMenuItem.addItem(i == 0, i == items.size() - 1, previewMenu, icons.get(i), items.get(i), false, resourcesProvider); if (actions.get(i) == 4) { item.setIconColor(getThemedColor(Theme.key_dialogRedIcon)); - item.setTextColor(getThemedColor(Theme.key_dialogTextRed2)); + item.setTextColor(getThemedColor(Theme.key_dialogTextRed)); } item.setTag(i); item.setOnClickListener(onItemClickListener); @@ -553,7 +553,7 @@ public class ContentPreviewViewer { item.setOnClickListener(onItemClickListener); if (canDelete && i == items.size() - 1) { - item.setColors(getThemedColor(Theme.key_dialogTextRed2), getThemedColor(Theme.key_dialogRedIcon)); + item.setColors(getThemedColor(Theme.key_dialogTextRed), getThemedColor(Theme.key_dialogRedIcon)); } } popupWindow = new ActionBarPopupWindow(previewMenu, LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/DataSettingsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/DataSettingsActivity.java index cf569b09e..e811014a8 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/DataSettingsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/DataSettingsActivity.java @@ -43,6 +43,7 @@ import org.telegram.ui.ActionBar.BaseFragment; import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.ActionBar.ThemeDescription; import org.telegram.ui.Cells.HeaderCell; +import org.telegram.ui.Cells.LanguageCell; import org.telegram.ui.Cells.NotificationsCheckCell; import org.telegram.ui.Cells.RadioColorCell; import org.telegram.ui.Cells.ShadowSectionCell; @@ -84,10 +85,10 @@ public class DataSettingsActivity extends BaseFragment { private int enableAllStreamRow; private int enableMkvRow; private int enableAllStreamInfoRow; - private int autoplayHeaderRow; - private int autoplayGifsRow; - private int autoplayVideoRow; - private int autoplaySectionRow; + private int autoplayHeaderRow = -1; + private int autoplayGifsRow = -1; + private int autoplayVideoRow = -1; + private int autoplaySectionRow = -1; private int callsSectionRow; private int useLessDataForCallsRow; private int quickRepliesRow; @@ -142,10 +143,10 @@ public class DataSettingsActivity extends BaseFragment { saveToGalleryChannelsRow = rowCount++; saveToGalleryDividerRow = rowCount++; - autoplayHeaderRow = rowCount++; - autoplayGifsRow = rowCount++; - autoplayVideoRow = rowCount++; - autoplaySectionRow = rowCount++; +// autoplayHeaderRow = rowCount++; +// autoplayGifsRow = rowCount++; +// autoplayVideoRow = rowCount++; +// autoplaySectionRow = rowCount++; streamSectionRow = rowCount++; enableStreamRow = rowCount++; if (BuildVars.DEBUG_VERSION) { @@ -381,7 +382,7 @@ public class DataSettingsActivity extends BaseFragment { showDialog(dialog); TextView button = (TextView) dialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } else if (position == storageUsageRow) { presentFragment(new CacheControlActivity()); @@ -455,11 +456,11 @@ public class DataSettingsActivity extends BaseFragment { for (int a = 0, N = storageDirs.size(); a < N; a++) { String storageDir = storageDirs.get(a).getAbsolutePath(); - RadioColorCell cell = new RadioColorCell(context); + LanguageCell cell = new LanguageCell(context); cell.setPadding(AndroidUtilities.dp(4), 0, AndroidUtilities.dp(4), 0); cell.setTag(a); - cell.setCheckColor(Theme.getColor(Theme.key_radioBackground), Theme.getColor(Theme.key_dialogRadioBackgroundChecked)); - cell.setTextAndValue(storageDir, storageDir.startsWith(dir)); + cell.setValue(storageDir.contains("/storage/emulated/") ? LocaleController.getString("InternalStorage", R.string.InternalStorage) : LocaleController.getString("SdCard", R.string.SdCard), storageDir); + cell.setLanguageSelected(storageDir.startsWith(dir), false); linearLayout.addView(cell); cell.setOnClickListener(v -> { SharedConfig.storageCacheDir = storageDir; @@ -514,7 +515,7 @@ public class DataSettingsActivity extends BaseFragment { showDialog(alertDialog); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } }); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/DataUsage2Activity.java b/TMessagesProj/src/main/java/org/telegram/ui/DataUsage2Activity.java index 85ae7afdc..6cd8c8243 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/DataUsage2Activity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/DataUsage2Activity.java @@ -252,7 +252,7 @@ public class DataUsage2Activity extends BaseFragment { showDialog(dialog); TextView button = (TextView) dialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } }); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/DataUsageActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/DataUsageActivity.java index 92752bf25..3f078d9de 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/DataUsageActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/DataUsageActivity.java @@ -483,7 +483,7 @@ public class DataUsageActivity extends BaseFragment { showDialog(dialog); TextView button = (TextView) dialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } }); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/DefaultThemesPreviewCell.java b/TMessagesProj/src/main/java/org/telegram/ui/DefaultThemesPreviewCell.java index c7893a761..7793fed94 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/DefaultThemesPreviewCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/DefaultThemesPreviewCell.java @@ -129,6 +129,7 @@ public class DefaultThemesPreviewCell extends LinearLayout { editor.commit(); } + Theme.turnOffAutoNight(parentFragment); }); progressView = new FlickerLoadingView(getContext(), null); @@ -206,64 +207,69 @@ public class DefaultThemesPreviewCell extends LinearLayout { pos[0] += dayNightCell.getImageView().getMeasuredWidth() / 2; pos[1] += dayNightCell.getImageView().getMeasuredHeight() / 2 + AndroidUtilities.dp(3); - NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.needSetDayNightTheme, themeInfo, false, pos, -1, toDark, dayNightCell.getImageView(), dayNightCell); - updateDayNightMode(); - updateSelectedPosition(); + Runnable then = () -> { + updateDayNightMode(); + updateSelectedPosition(); - int iconNewColor = Theme.getColor(Theme.key_windowBackgroundWhiteBlueText4); - darkThemeDrawable.setColorFilter(new PorterDuffColorFilter(iconNewColor, PorterDuff.Mode.SRC_IN)); - ValueAnimator valueAnimator = ValueAnimator.ofFloat(0, 1f); - valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { - @Override - public void onAnimationUpdate(ValueAnimator valueAnimator) { - int iconColor = ColorUtils.blendARGB(iconOldColor, iconNewColor, (float) valueAnimator.getAnimatedValue()); - darkThemeDrawable.setColorFilter(new PorterDuffColorFilter(iconColor, PorterDuff.Mode.SRC_IN)); - } - }); - valueAnimator.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - darkThemeDrawable.setColorFilter(new PorterDuffColorFilter(iconNewColor, PorterDuff.Mode.SRC_IN)); - super.onAnimationEnd(animation); - } - }); - valueAnimator.setDuration(350); - valueAnimator.start(); - - int navBarNewColor = Theme.getColor(Theme.key_windowBackgroundGray); - final Window window = context instanceof Activity ? ((Activity) context).getWindow() : null; - if (window != null) { - if (navBarAnimator != null && navBarAnimator.isRunning()) { - navBarAnimator.cancel(); - } - final int navBarFromColor = navBarAnimator != null && navBarAnimator.isRunning() ? navBarColor : navBarOldColor; - navBarAnimator = ValueAnimator.ofFloat(0, 1); - final float startDelay = toDark ? 50 : 200, duration = 150, fullDuration = 350; - navBarAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { + int iconNewColor = Theme.getColor(Theme.key_windowBackgroundWhiteBlueText4); + darkThemeDrawable.setColorFilter(new PorterDuffColorFilter(iconNewColor, PorterDuff.Mode.SRC_IN)); + ValueAnimator valueAnimator = ValueAnimator.ofFloat(0, 1f); + valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator valueAnimator) { - float t = Math.max(0, Math.min(1, ((float) valueAnimator.getAnimatedValue() * fullDuration - startDelay) / duration)); - navBarColor = ColorUtils.blendARGB(navBarFromColor, navBarNewColor, t); - AndroidUtilities.setNavigationBarColor(window, navBarColor, false); - AndroidUtilities.setLightNavigationBar(window, AndroidUtilities.computePerceivedBrightness(navBarColor) >= 0.721f); + int iconColor = ColorUtils.blendARGB(iconOldColor, iconNewColor, (float) valueAnimator.getAnimatedValue()); + darkThemeDrawable.setColorFilter(new PorterDuffColorFilter(iconColor, PorterDuff.Mode.SRC_IN)); } }); - navBarAnimator.addListener(new AnimatorListenerAdapter() { + valueAnimator.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { - AndroidUtilities.setNavigationBarColor(window, navBarNewColor, false); - AndroidUtilities.setLightNavigationBar(window, AndroidUtilities.computePerceivedBrightness(navBarNewColor) >= 0.721f); + darkThemeDrawable.setColorFilter(new PorterDuffColorFilter(iconNewColor, PorterDuff.Mode.SRC_IN)); + super.onAnimationEnd(animation); } }); - navBarAnimator.setDuration((long) fullDuration); - navBarAnimator.start(); - } + valueAnimator.setDuration(350); + valueAnimator.start(); - if (Theme.isCurrentThemeDay()) { - dayNightCell.setTextAndIcon(LocaleController.getString("SettingsSwitchToNightMode", R.string.SettingsSwitchToNightMode), darkThemeDrawable, true); - } else { - dayNightCell.setTextAndIcon(LocaleController.getString("SettingsSwitchToDayMode", R.string.SettingsSwitchToDayMode), darkThemeDrawable, true); - } + int navBarNewColor = Theme.getColor(Theme.key_windowBackgroundGray); + final Window window = context instanceof Activity ? ((Activity) context).getWindow() : null; + if (window != null) { + if (navBarAnimator != null && navBarAnimator.isRunning()) { + navBarAnimator.cancel(); + } + final int navBarFromColor = navBarAnimator != null && navBarAnimator.isRunning() ? navBarColor : navBarOldColor; + navBarAnimator = ValueAnimator.ofFloat(0, 1); + final float startDelay = toDark ? 50 : 200, duration = 150, fullDuration = 350; + navBarAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { + @Override + public void onAnimationUpdate(ValueAnimator valueAnimator) { + float t = Math.max(0, Math.min(1, ((float) valueAnimator.getAnimatedValue() * fullDuration - startDelay) / duration)); + navBarColor = ColorUtils.blendARGB(navBarFromColor, navBarNewColor, t); + AndroidUtilities.setNavigationBarColor(window, navBarColor, false); + AndroidUtilities.setLightNavigationBar(window, AndroidUtilities.computePerceivedBrightness(navBarColor) >= 0.721f); + } + }); + navBarAnimator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + AndroidUtilities.setNavigationBarColor(window, navBarNewColor, false); + AndroidUtilities.setLightNavigationBar(window, AndroidUtilities.computePerceivedBrightness(navBarNewColor) >= 0.721f); + } + }); + navBarAnimator.setDuration((long) fullDuration); + navBarAnimator.start(); + } + + if (Theme.isCurrentThemeDay()) { + dayNightCell.setTextAndIcon(LocaleController.getString("SettingsSwitchToNightMode", R.string.SettingsSwitchToNightMode), darkThemeDrawable, true); + } else { + dayNightCell.setTextAndIcon(LocaleController.getString("SettingsSwitchToDayMode", R.string.SettingsSwitchToDayMode), darkThemeDrawable, true); + } + + Theme.turnOffAutoNight(parentFragment); + }; + + NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.needSetDayNightTheme, themeInfo, false, pos, -1, toDark, dayNightCell.getImageView(), dayNightCell, then); } }); @@ -431,15 +437,6 @@ public class DefaultThemesPreviewCell extends LinearLayout { } NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.needSetDayNightTheme, themeInfo, false, null, -1); } - //updateRows(); - - int count = getChildCount(); -// for (int a = 0; a < count; a++) { -// View child = getChildAt(a); -// if (child instanceof ThemesHorizontalListCell.InnerThemeView) { -// ((ThemesHorizontalListCell.InnerThemeView) child).updateCurrentThemeCheck(); -// } -// } } public void updateColors() { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Delegates/MemberRequestsDelegate.java b/TMessagesProj/src/main/java/org/telegram/ui/Delegates/MemberRequestsDelegate.java index 2e09f7a8c..8451b58cc 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Delegates/MemberRequestsDelegate.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Delegates/MemberRequestsDelegate.java @@ -739,7 +739,7 @@ public class MemberRequestsDelegate implements MemberRequestCell.OnClickListener popupLayout.addView(sendMsgCell); ActionBarMenuSubItem dismissCell = new ActionBarMenuSubItem(context, false, true); - dismissCell.setColors(Theme.getColor(Theme.key_dialogTextRed2, resourcesProvider), Theme.getColor(Theme.key_dialogRedIcon, resourcesProvider)); + dismissCell.setColors(Theme.getColor(Theme.key_dialogTextRed, resourcesProvider), Theme.getColor(Theme.key_dialogRedIcon, resourcesProvider)); dismissCell.setSelectorColor(Theme.getColor(Theme.key_dialogButtonSelector, resourcesProvider)); dismissCell.setTextAndIcon(LocaleController.getString("DismissRequest", R.string.DismissRequest), R.drawable.msg_remove); dismissCell.setOnClickListener((v) -> { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/DialogOrContactPickerActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/DialogOrContactPickerActivity.java index c1218a734..afed1c94b 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/DialogOrContactPickerActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/DialogOrContactPickerActivity.java @@ -638,7 +638,7 @@ public class DialogOrContactPickerActivity extends BaseFragment { showDialog(dialog); TextView button = (TextView) dialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/DialogsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/DialogsActivity.java index 009fc5d52..81696aeaa 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/DialogsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/DialogsActivity.java @@ -868,7 +868,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. inputFieldHeight = 0; } - if (SharedConfig.smoothKeyboard && commentView.isPopupShowing()) { + if (commentView.isPopupShowing()) { fragmentView.setTranslationY(0); for (int a = 0; a < viewPages.length; a++) { if (viewPages[a] != null) { @@ -1320,9 +1320,11 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. blurCanvas.translate(viewPages[i].getX(), viewPages[i].getY() + viewPages[i].listView.getY() + child.getY()); if (child instanceof DialogCell) { DialogCell cell = (DialogCell) child; - cell.drawingForBlur = true; - cell.draw(blurCanvas); - cell.drawingForBlur = false; + if (!(cell.isFolderCell() && SharedConfig.archiveHidden)) { + cell.drawingForBlur = true; + cell.draw(blurCanvas); + cell.drawingForBlur = false; + } } else { child.draw(blurCanvas); } @@ -2841,7 +2843,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. showDialog(alertDialog); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } @@ -3790,7 +3792,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. showDialog(dialog); TextView button = (TextView) dialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } @@ -3819,7 +3821,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. showDialog(dialog); TextView button = (TextView) dialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } @@ -5824,31 +5826,6 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. } } - @Override - public void onBecomeFullyVisible() { - super.onBecomeFullyVisible(); - if (SharedConfig.useLNavigation) { - if (viewPages != null) { - for (int a = 0; a < viewPages.length; a++) { - if (viewPages[a].dialogsType == 0 && viewPages[a].archivePullViewState == ARCHIVE_ITEM_STATE_HIDDEN && viewPages[a].layoutManager.findFirstVisibleItemPosition() == 0 && hasHiddenArchive()) { - viewPages[a].layoutManager.scrollToPositionWithOffset(1, (int) actionBar.getTranslationY()); - } - if (a == 0) { - viewPages[a].dialogsAdapter.resume(); - } else { - viewPages[a].dialogsAdapter.pause(); - } - } - } - if (searchIsShowed) { - AndroidUtilities.requestAdjustResize(getParentActivity(), classGuid); - } - updateVisibleRows(0, false); - updateProxyButton(false, true); - checkSuggestClearDatabase(); - } - } - @Override public void setInPreviewMode(boolean value) { super.setInPreviewMode(value); @@ -5981,7 +5958,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. if (!show && filterTabsView != null && canShowFilterTabsView) { filterTabsView.setVisibility(View.VISIBLE); } - final boolean budget = SharedConfig.getDevicePerformanceClass() == SharedConfig.PERFORMANCE_CLASS_LOW || !LiteMode.isEnabled(LiteMode.FLAG_CHAT_BACKGROUND); + final boolean budget = SharedConfig.getDevicePerformanceClass() == SharedConfig.PERFORMANCE_CLASS_LOW || !LiteMode.isEnabled(LiteMode.FLAG_CHAT_SCALE); if (animated) { if (show) { searchViewPager.setVisibility(View.VISIBLE); @@ -6291,7 +6268,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. if (dialogsHintCell != null) { dialogsHintCell.setAlpha(1f - progress); } - final boolean budget = SharedConfig.getDevicePerformanceClass() == SharedConfig.PERFORMANCE_CLASS_LOW || !LiteMode.isEnabled(LiteMode.FLAG_CHAT_BACKGROUND); + final boolean budget = SharedConfig.getDevicePerformanceClass() == SharedConfig.PERFORMANCE_CLASS_LOW || !LiteMode.isEnabled(LiteMode.FLAG_CHAT_SCALE); if (full) { if (viewPages[0] != null) { if (progress < 1f) { @@ -6633,7 +6610,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. if (getMessagesController().checkCanOpenChat(args, DialogsActivity.this)) { TLRPC.Chat chat = getMessagesController().getChat(-dialogId); if (chat != null && chat.forum && topicId == 0) { - if (SharedConfig.getDevicePerformanceClass() == SharedConfig.PERFORMANCE_CLASS_LOW || !LiteMode.isEnabled(LiteMode.FLAG_CHAT_FORUM_TWOCOLUMN)) { + if (!LiteMode.isEnabled(LiteMode.FLAG_CHAT_FORUM_TWOCOLUMN)) { presentFragment(new TopicsFragment(args)); } else { if (!canOpenInRightSlidingView) { @@ -6728,7 +6705,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. showDialog(alertDialog); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } return true; } @@ -7031,9 +7008,17 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. if (containsFilter && filter != null) { maxPinnedCount = 100 - filter.alwaysShow.size(); } else if (folderId != 0 || filter != null) { - maxPinnedCount = getMessagesController().maxFolderPinnedDialogsCount; + if (getUserConfig().isPremium()) { + maxPinnedCount = getMessagesController().maxFolderPinnedDialogsCountPremium; + } else { + maxPinnedCount = getMessagesController().maxFolderPinnedDialogsCountDefault; + } } else { - maxPinnedCount = getMessagesController().maxPinnedDialogsCount; + if (getUserConfig().isPremium()) { + maxPinnedCount = getMessagesController().maxPinnedDialogsCountPremium; + } else { + maxPinnedCount = getMessagesController().maxPinnedDialogsCountDefault; + } } hasPinAction[0] = !(newPinnedSecretCount + pinnedSecretCount > maxPinnedCount || newPinnedCount + pinnedCount - alreadyAdded > maxPinnedCount); } @@ -7439,7 +7424,11 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. if (containsFilter) { maxPinnedCount = 100 - filter.alwaysShow.size(); } else if (folderId != 0 || filter != null) { - maxPinnedCount = getMessagesController().maxFolderPinnedDialogsCount; + if (UserConfig.getInstance(currentAccount).isPremium()) { + maxPinnedCount = getMessagesController().maxFolderPinnedDialogsCountPremium; + } else { + maxPinnedCount = getMessagesController().maxFolderPinnedDialogsCountDefault; + } } else { maxPinnedCount = getUserConfig().isPremium() ? getMessagesController().dialogFiltersPinnedLimitPremium : getMessagesController().dialogFiltersPinnedLimitDefault; } @@ -7495,7 +7484,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. showDialog(alertDialog); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } return; } else if (action == block && alert) { @@ -10130,7 +10119,6 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. arrayList.add(new ThemeDescription(sideMenu, 0, new Class[]{DrawerProfileCell.class}, null, null, null, Theme.key_chats_menuName)); arrayList.add(new ThemeDescription(sideMenu, 0, new Class[]{DrawerProfileCell.class}, null, null, null, Theme.key_chats_menuPhone)); arrayList.add(new ThemeDescription(sideMenu, 0, new Class[]{DrawerProfileCell.class}, null, null, null, Theme.key_chats_menuPhoneCats)); - arrayList.add(new ThemeDescription(sideMenu, 0, new Class[]{DrawerProfileCell.class}, null, null, null, Theme.key_chats_menuCloudBackgroundCats)); arrayList.add(new ThemeDescription(sideMenu, 0, new Class[]{DrawerProfileCell.class}, null, null, null, Theme.key_chat_serviceBackground)); arrayList.add(new ThemeDescription(sideMenu, 0, new Class[]{DrawerProfileCell.class}, null, null, null, Theme.key_chats_menuTopShadow)); arrayList.add(new ThemeDescription(sideMenu, 0, new Class[]{DrawerProfileCell.class}, null, null, null, Theme.key_chats_menuTopShadowCats)); @@ -10200,10 +10188,8 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. arrayList.add(new ThemeDescription(null, 0, null, null, null, null, Theme.key_dialogLinkSelection)); arrayList.add(new ThemeDescription(null, 0, null, null, null, null, Theme.key_dialogTextBlue)); arrayList.add(new ThemeDescription(null, 0, null, null, null, null, Theme.key_dialogTextBlue2)); - arrayList.add(new ThemeDescription(null, 0, null, null, null, null, Theme.key_dialogTextBlue3)); arrayList.add(new ThemeDescription(null, 0, null, null, null, null, Theme.key_dialogTextBlue4)); arrayList.add(new ThemeDescription(null, 0, null, null, null, null, Theme.key_dialogTextRed)); - arrayList.add(new ThemeDescription(null, 0, null, null, null, null, Theme.key_dialogTextRed2)); arrayList.add(new ThemeDescription(null, 0, null, null, null, null, Theme.key_dialogTextGray)); arrayList.add(new ThemeDescription(null, 0, null, null, null, null, Theme.key_dialogTextGray2)); arrayList.add(new ThemeDescription(null, 0, null, null, null, null, Theme.key_dialogTextGray3)); @@ -10219,14 +10205,11 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. arrayList.add(new ThemeDescription(null, 0, null, null, null, null, Theme.key_dialogCheckboxSquareDisabled)); arrayList.add(new ThemeDescription(null, 0, null, null, null, null, Theme.key_dialogRadioBackground)); arrayList.add(new ThemeDescription(null, 0, null, null, null, null, Theme.key_dialogRadioBackgroundChecked)); - arrayList.add(new ThemeDescription(null, 0, null, null, null, null, Theme.key_dialogProgressCircle)); arrayList.add(new ThemeDescription(null, 0, null, null, null, null, Theme.key_dialogButton)); arrayList.add(new ThemeDescription(null, 0, null, null, null, null, Theme.key_dialogButtonSelector)); arrayList.add(new ThemeDescription(null, 0, null, null, null, null, Theme.key_dialogScrollGlow)); arrayList.add(new ThemeDescription(null, 0, null, null, null, null, Theme.key_dialogRoundCheckBox)); arrayList.add(new ThemeDescription(null, 0, null, null, null, null, Theme.key_dialogRoundCheckBoxCheck)); - arrayList.add(new ThemeDescription(null, 0, null, null, null, null, Theme.key_dialogBadgeBackground)); - arrayList.add(new ThemeDescription(null, 0, null, null, null, null, Theme.key_dialogBadgeText)); arrayList.add(new ThemeDescription(null, 0, null, null, null, null, Theme.key_dialogLineProgress)); arrayList.add(new ThemeDescription(null, 0, null, null, null, null, Theme.key_dialogLineProgressBackground)); arrayList.add(new ThemeDescription(null, 0, null, null, null, null, Theme.key_dialogGrayLine)); @@ -10243,10 +10226,8 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. arrayList.add(new ThemeDescription(null, 0, null, null, null, null, Theme.key_sheet_scrollUp)); arrayList.add(new ThemeDescription(null, 0, null, null, null, null, Theme.key_sheet_other)); - arrayList.add(new ThemeDescription(null, 0, null, null, null, null, Theme.key_player_actionBar)); arrayList.add(new ThemeDescription(null, 0, null, null, null, null, Theme.key_player_actionBarSelector)); arrayList.add(new ThemeDescription(null, 0, null, null, null, null, Theme.key_player_actionBarTitle)); - arrayList.add(new ThemeDescription(null, 0, null, null, null, null, Theme.key_player_actionBarTop)); arrayList.add(new ThemeDescription(null, 0, null, null, null, null, Theme.key_player_actionBarSubtitle)); arrayList.add(new ThemeDescription(null, 0, null, null, null, null, Theme.key_player_actionBarItems)); arrayList.add(new ThemeDescription(null, 0, null, null, null, null, Theme.key_player_background)); @@ -10266,7 +10247,6 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. // arrayList.add(new ThemeDescription(commentView, ThemeDescription.FLAG_IMAGECOLOR, new Class[]{ChatActivityEnterView.class}, new String[]{"sendButton"}, null, null, null, Theme.key_chat_messagePanelSend)); } - arrayList.add(new ThemeDescription(null, 0, null, null, null, cellDelegate, Theme.key_actionBarTipBackground)); arrayList.add(new ThemeDescription(null, 0, null, null, null, cellDelegate, Theme.key_windowBackgroundWhiteBlackText)); arrayList.add(new ThemeDescription(null, 0, null, null, null, cellDelegate, Theme.key_player_time)); arrayList.add(new ThemeDescription(null, 0, null, null, null, cellDelegate, Theme.key_chat_messagePanelCursor)); @@ -10369,7 +10349,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. } private void setFragmentIsSliding(boolean sliding) { - if (SharedConfig.getDevicePerformanceClass() <= SharedConfig.PERFORMANCE_CLASS_AVERAGE || !LiteMode.isEnabled(LiteMode.FLAG_CHAT_BACKGROUND)) { + if (SharedConfig.getDevicePerformanceClass() <= SharedConfig.PERFORMANCE_CLASS_AVERAGE || !LiteMode.isEnabled(LiteMode.FLAG_CHAT_SCALE)) { return; } if (sliding) { @@ -10418,7 +10398,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. @Override public void onSlideProgress(boolean isOpen, float progress) { - if (SharedConfig.getDevicePerformanceClass() <= SharedConfig.PERFORMANCE_CLASS_LOW || !LiteMode.isEnabled(LiteMode.FLAG_CHAT_BACKGROUND)) { + if (SharedConfig.getDevicePerformanceClass() <= SharedConfig.PERFORMANCE_CLASS_LOW) { return; } if (isSlideBackTransition && slideBackTransitionAnimator == null) { @@ -10427,11 +10407,11 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. } private void setSlideTransitionProgress(float progress) { - if (SharedConfig.getDevicePerformanceClass() <= SharedConfig.PERFORMANCE_CLASS_LOW || !LiteMode.isEnabled(LiteMode.FLAG_CHAT_BACKGROUND)) { + if (SharedConfig.getDevicePerformanceClass() <= SharedConfig.PERFORMANCE_CLASS_LOW) { return; } - slideFragmentLite = SharedConfig.getDevicePerformanceClass() <= SharedConfig.PERFORMANCE_CLASS_AVERAGE; + slideFragmentLite = SharedConfig.getDevicePerformanceClass() <= SharedConfig.PERFORMANCE_CLASS_AVERAGE || !LiteMode.isEnabled(LiteMode.FLAG_CHAT_SCALE); slideFragmentProgress = progress; if (fragmentView != null) { fragmentView.invalidate(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/FilterCreateActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/FilterCreateActivity.java index 3e51fc802..9f10ed116 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/FilterCreateActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/FilterCreateActivity.java @@ -389,7 +389,7 @@ public class FilterCreateActivity extends BaseFragment { showDialog(alertDialog); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } else if (position == nameRow) { PollEditTextCell cell = (PollEditTextCell) view; @@ -547,7 +547,7 @@ public class FilterCreateActivity extends BaseFragment { showDialog(alertDialog); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/FiltersSetupActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/FiltersSetupActivity.java index e8e4f2870..1e28cf548 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/FiltersSetupActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/FiltersSetupActivity.java @@ -706,13 +706,13 @@ public class FiltersSetupActivity extends BaseFragment implements NotificationCe showDialog(alertDialog); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } }); final AlertDialog dialog = builder1.create(); showDialog(dialog); - dialog.setItemColor(items.length - 1, Theme.getColor(Theme.key_dialogTextRed2), Theme.getColor(Theme.key_dialogRedIcon)); + dialog.setItemColor(items.length - 1, Theme.getColor(Theme.key_dialogTextRed), Theme.getColor(Theme.key_dialogRedIcon)); }); view = filterCell; break; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java index e86de5f44..6cca46e84 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java @@ -281,8 +281,8 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen allSpans.add(span); selectedContacts.put(span.getUid(), span); - editText.setHintVisible(false); - if (currentAnimation != null) { + editText.setHintVisible(false, TextUtils.isEmpty(editText.getText())); + if (currentAnimation != null && currentAnimation.isRunning()) { currentAnimation.setupEndValues(); currentAnimation.cancel(); } @@ -327,7 +327,7 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen animationStarted = false; editText.setAllowDrawCursor(true); if (allSpans.isEmpty()) { - editText.setHintVisible(true); + editText.setHintVisible(true, true); } } }); @@ -404,7 +404,11 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen allSpans.clear(); selectedContacts.clear(); currentDeletingSpan = null; - doneButtonVisible = chatType == ChatObject.CHAT_TYPE_CHANNEL; + if (chatType == ChatObject.CHAT_TYPE_CHANNEL) { + doneButtonVisible = true; + } else { + doneButtonVisible = !addToGroup; + } actionBar.setBackButtonImage(R.drawable.ic_ab_back); actionBar.setAllowOverlayTitle(true); @@ -810,7 +814,7 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen } frameLayout.addView(floatingButton); floatingButton.setOnClickListener(v -> onDonePressed(true)); - if (chatType != ChatObject.CHAT_TYPE_CHANNEL) { + if (!doneButtonVisible) { floatingButton.setVisibility(View.INVISIBLE); floatingButton.setScaleX(0.0f); floatingButton.setScaleY(0.0f); @@ -963,7 +967,7 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen } private boolean onDonePressed(boolean alert) { - if (selectedContacts.size() == 0 && chatType != ChatObject.CHAT_TYPE_CHANNEL) { + if (selectedContacts.size() == 0 && (chatType != ChatObject.CHAT_TYPE_CHANNEL && addToGroup)) { return false; } if (alert && addToGroup) { @@ -1034,7 +1038,7 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen args2.putBoolean("just_created_chat", true); presentFragment(new ChatActivity(args2), true); } else { - if (!doneButtonVisible || selectedContacts.size() == 0) { + if (!doneButtonVisible) { return false; } if (addToGroup) { @@ -1091,7 +1095,7 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen } } } - if (chatType != ChatObject.CHAT_TYPE_CHANNEL) { + if (chatType != ChatObject.CHAT_TYPE_CHANNEL && addToGroup) { if (doneButtonVisible && allSpans.isEmpty()) { if (currentDoneButtonAnimation != null) { currentDoneButtonAnimation.cancel(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateFinalActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateFinalActivity.java index 7dfdc44d6..9f75b700d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateFinalActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateFinalActivity.java @@ -68,6 +68,7 @@ import org.telegram.ui.Components.BackupImageView; import org.telegram.ui.Components.CombinedDrawable; import org.telegram.ui.Components.ContextProgressView; import org.telegram.ui.Components.EditTextEmoji; +import org.telegram.ui.Components.FillLastLinearLayoutManager; import org.telegram.ui.Components.ImageUpdater; import org.telegram.ui.Components.LayoutHelper; import org.telegram.ui.Components.ListView.AdapterWithDiffUtils; @@ -127,6 +128,7 @@ public class GroupCreateFinalActivity extends BaseFragment implements Notificati private int ttlPeriod; private final static int done_button = 1; + private FillLastLinearLayoutManager linearLayoutManager; public interface GroupCreateFinalActivityDelegate { void didStartChatCreation(); @@ -537,9 +539,10 @@ public class GroupCreateFinalActivity extends BaseFragment implements Notificati editText.setFilters(inputFilters); editTextContainer.addView(editText, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_VERTICAL, LocaleController.isRTL ? 5 : 96, 0, LocaleController.isRTL ? 96 : 5, 0)); - LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false); listView = new RecyclerListView(context); + linearLayoutManager = new FillLastLinearLayoutManager(context, LinearLayoutManager.VERTICAL, listView); + listView.setAdapter(adapter = new GroupCreateAdapter(context)); listView.setLayoutManager(linearLayoutManager); listView.setVerticalScrollBarEnabled(false); @@ -925,6 +928,7 @@ public class GroupCreateFinalActivity extends BaseFragment implements Notificati private final static int VIEW_TYPE_AUTO_DELETE = 4; private final static int VIEW_TYPE_TEXT_INFO_CELL = 5; private final static int VIEW_TYPE_TOPICS = 6; + private final static int VIEW_TYPE_LAST_EMPTY_VIEW = 7; ArrayList items = new ArrayList<>(); @@ -948,11 +952,14 @@ public class GroupCreateFinalActivity extends BaseFragment implements Notificati items.add(new InnerItem(VIEW_TYPE_TEXT_SETTINGS)); items.add(new InnerItem(VIEW_TYPE_SHADOW_SECTION_CELL)); } - items.add(new InnerItem(VIEW_TYPE_HEADER_CELL)); - usersStartRow = items.size(); - for (int i = 0; i < selectedContacts.size(); i++) { - items.add(new InnerItem(VIEW_TYPE_USER_CELL)); + if (selectedContacts.size() > 0) { + items.add(new InnerItem(VIEW_TYPE_HEADER_CELL)); + usersStartRow = items.size(); + for (int i = 0; i < selectedContacts.size(); i++) { + items.add(new InnerItem(VIEW_TYPE_USER_CELL)); + } } + items.add(new InnerItem(VIEW_TYPE_LAST_EMPTY_VIEW)); super.notifyDataSetChanged(); } @@ -992,7 +999,7 @@ public class GroupCreateFinalActivity extends BaseFragment implements Notificati break; case VIEW_TYPE_TEXT_INFO_CELL: view = new TextInfoPrivacyCell(context); - Drawable drawable = Theme.getThemedDrawable(context, R.drawable.greydivider, Theme.key_windowBackgroundGrayShadow); + Drawable drawable = Theme.getThemedDrawable(context, selectedContacts.size() == 0 ? R.drawable.greydivider_bottom : R.drawable.greydivider, Theme.key_windowBackgroundGrayShadow); CombinedDrawable combinedDrawable = new CombinedDrawable(new ColorDrawable(Theme.getColor(Theme.key_windowBackgroundGray)), drawable); combinedDrawable.setFullsize(true); view.setBackgroundDrawable(combinedDrawable); @@ -1004,6 +1011,12 @@ public class GroupCreateFinalActivity extends BaseFragment implements Notificati default: view = new TextSettingsCell(context); break; + case VIEW_TYPE_LAST_EMPTY_VIEW: + view = new View(context); + if (selectedContacts.isEmpty()) { + view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundGray)); + } + break; } return new RecyclerListView.Holder(view); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/InviteContactsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/InviteContactsActivity.java index 47c789f12..6357380b6 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/InviteContactsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/InviteContactsActivity.java @@ -17,12 +17,9 @@ import android.content.Intent; import android.graphics.Canvas; import android.graphics.Rect; import android.net.Uri; -import androidx.annotation.Keep; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - import android.text.Editable; import android.text.InputType; +import android.text.TextUtils; import android.text.TextWatcher; import android.util.TypedValue; import android.view.ActionMode; @@ -39,6 +36,10 @@ import android.widget.LinearLayout; import android.widget.ScrollView; import android.widget.TextView; +import androidx.annotation.Keep; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.ContactsController; import org.telegram.messenger.FileLog; @@ -210,7 +211,7 @@ public class InviteContactsActivity extends BaseFragment implements Notification allSpans.add(span); selectedContacts.put(span.getKey(), span); - editText.setHintVisible(false); + editText.setHintVisible(false, TextUtils.isEmpty(editText.getText())); if (currentAnimation != null) { currentAnimation.setupEndValues(); currentAnimation.cancel(); @@ -241,7 +242,7 @@ public class InviteContactsActivity extends BaseFragment implements Notification allSpans.remove(span); span.setOnClickListener(null); - if (currentAnimation != null) { + if (currentAnimation != null && currentAnimation.isRunning()) { currentAnimation.setupEndValues(); currentAnimation.cancel(); } @@ -256,7 +257,7 @@ public class InviteContactsActivity extends BaseFragment implements Notification animationStarted = false; editText.setAllowDrawCursor(true); if (allSpans.isEmpty()) { - editText.setHintVisible(true); + editText.setHintVisible(true, true); } } }); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LNavigation/LNavigation.java b/TMessagesProj/src/main/java/org/telegram/ui/LNavigation/LNavigation.java deleted file mode 100644 index 002e96514..000000000 --- a/TMessagesProj/src/main/java/org/telegram/ui/LNavigation/LNavigation.java +++ /dev/null @@ -1,2369 +0,0 @@ -package org.telegram.ui.LNavigation; - -import android.animation.Animator; -import android.animation.AnimatorListenerAdapter; -import android.animation.AnimatorSet; -import android.animation.ValueAnimator; -import android.annotation.SuppressLint; -import android.app.Activity; -import android.content.Context; -import android.content.Intent; -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.graphics.Color; -import android.graphics.Paint; -import android.graphics.Path; -import android.graphics.Rect; -import android.graphics.drawable.ColorDrawable; -import android.graphics.drawable.Drawable; -import android.os.Build; -import android.util.AttributeSet; -import android.view.GestureDetector; -import android.view.Gravity; -import android.view.HapticFeedbackConstants; -import android.view.KeyEvent; -import android.view.Menu; -import android.view.MotionEvent; -import android.view.View; -import android.view.ViewConfiguration; -import android.view.ViewGroup; -import android.widget.FrameLayout; -import android.widget.LinearLayout; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.core.graphics.ColorUtils; -import androidx.core.math.MathUtils; -import androidx.core.view.GestureDetectorCompat; -import androidx.dynamicanimation.animation.FloatValueHolder; -import androidx.dynamicanimation.animation.SpringAnimation; -import androidx.dynamicanimation.animation.SpringForce; -import androidx.viewpager.widget.ViewPager; - -import org.telegram.messenger.AndroidUtilities; -import org.telegram.messenger.ImageLoader; -import org.telegram.messenger.LocaleController; -import org.telegram.messenger.MessagesController; -import org.telegram.messenger.R; -import org.telegram.messenger.Utilities; -import org.telegram.ui.ActionBar.ActionBar; -import org.telegram.ui.ActionBar.ActionBarMenuSubItem; -import org.telegram.ui.ActionBar.ActionBarPopupWindow; -import org.telegram.ui.ActionBar.AlertDialog; -import org.telegram.ui.ActionBar.BaseFragment; -import org.telegram.ui.ActionBar.BottomSheet; -import org.telegram.ui.ActionBar.DrawerLayoutContainer; -import org.telegram.ui.ActionBar.INavigationLayout; -import org.telegram.ui.ActionBar.MenuDrawable; -import org.telegram.ui.ActionBar.Theme; -import org.telegram.ui.ActionBar.ThemeDescription; -import org.telegram.ui.Cells.CheckBoxCell; -import org.telegram.ui.Components.BackButtonMenu; -import org.telegram.ui.Components.FloatingDebug.FloatingDebugController; -import org.telegram.ui.Components.FloatingDebug.FloatingDebugProvider; -import org.telegram.ui.Components.GroupCallPip; -import org.telegram.ui.Components.LayoutHelper; -import org.telegram.ui.Components.SeekBarView; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Locale; - -public class LNavigation extends FrameLayout implements INavigationLayout, FloatingDebugProvider { - private final static boolean ALLOW_OPEN_STIFFNESS_CONTROL = false; - private final static boolean USE_ACTIONBAR_CROSSFADE = false; - private static float SPRING_STIFFNESS = 1000f; - private static float SPRING_DAMPING_RATIO = 1f; - private final static float SPRING_STIFFNESS_PREVIEW = 650f; - private final static float SPRING_STIFFNESS_PREVIEW_OUT = 800f; - private final static float SPRING_STIFFNESS_PREVIEW_EXPAND = 750f; - private final static float SPRING_MULTIPLIER = 1000f; - private List pulledDialogs = new ArrayList<>(); - - /** - * Temp rect to calculate if it's ignored view - */ - private Rect ignoreRect = new Rect(); - - /** - * Temp path for clipping - */ - private Path path = new Path(); - - /** - * Darker paint - */ - private Paint dimmPaint = new Paint(Paint.ANTI_ALIAS_FLAG); - - /** - * Flag if we should remove extra height for action bar - */ - private boolean removeActionBarExtraHeight; - - /** - * Current fragment stack - */ - private List fragmentStack = new ArrayList<>(); - - /** - * Unmodifiable fragment stack for {@link LNavigation#getFragmentStack()} - */ - private List unmodifiableFragmentStack = Collections.unmodifiableList(fragmentStack); - - /** - * Delegate for this view - */ - private INavigationLayoutDelegate delegate; - - /** - * A listener when fragment stack is being changed - */ - private Runnable onFragmentStackChangedListener; - - /** - * Drawer layout container (For the swipe-back-to-drawer feature) - */ - private DrawerLayoutContainer drawerLayoutContainer; - - /** - * Currently running spring animation - */ - private SpringAnimation currentSpringAnimation; - - /** - * Overlay layout for containers like shared ActionBar - */ - private FrameLayout overlayLayout; - - /** - * Current swipe progress - */ - private float swipeProgress; - - /** - * Start scroll offset - */ - private float startScroll; - - /** - * Header shadow drawable - */ - private Drawable headerShadowDrawable; - - /** - * Front view shadow drawable - */ - private Drawable layerShadowDrawable; - - /** - * Gesture detector for scroll - */ - private GestureDetectorCompat gestureDetector; - - /** - * If there's currently scroll in progress - */ - private boolean isSwipeInProgress; - - /** - * If swipe back should be disallowed - */ - private boolean isSwipeDisallowed; - - /** - * If set, should be canceled if trying to open another fragment - */ - private Runnable delayedPresentAnimation; - - /** - * If navigation is used in bubble mode - */ - private boolean isInBubbleMode; - - /** - * If device is currently showing action mode over our ActionBar - */ - private boolean isInActionMode; - - /** - * If menu buttons in preview should be highlighted - */ - private boolean highlightActionButtons = false; - - /** - * Custom animation in progress - */ - private AnimatorSet customAnimation; - - /** - * Preview fragment's menu - */ - private ActionBarPopupWindow.ActionBarPopupWindowLayout previewMenu; - - /** - * A blurred snapshot of background fragment - */ - private Bitmap blurredBackFragmentForPreview; - - /** - * Snapshot of a small preview fragment - */ - private Bitmap previewFragmentSnapshot; - - /** - * Bounds of small preview fragment - */ - private Rect previewFragmentRect = new Rect(); - - /** - * Preview expand progress - */ - private float previewExpandProgress; - - /** - * Paint for blurred snapshot - */ - private Paint blurPaint = new Paint(Paint.DITHER_FLAG | Paint.ANTI_ALIAS_FLAG); - - /** - * Back button drawable - */ - private MenuDrawable menuDrawable = new MenuDrawable(MenuDrawable.TYPE_DEFAULT); - - /** - * View that captured current touch input - */ - private View touchCapturedView; - - /** - * Flag if layout was portrait - */ - private boolean wasPortrait; - - /** - * Callback after preview fragment is opened - */ - private Runnable previewOpenCallback; - - /** - * Flag if navigation view should disappear when last fragment closes - */ - private boolean useAlphaAnimations; - - /** - * Background view for tablets - */ - private View backgroundView; - - /** - * Flag that indicates that user can press button of the preview menu - */ - private boolean allowToPressByHover; - - /** - * Flag if menu hover should be allowed (Only first time opening preview) - */ - private boolean isFirstHoverAllowed; - - // TODO: Split theme logic to another component - private ValueAnimator themeAnimator; - private StartColorsProvider startColorsProvider = new StartColorsProvider(); - private Theme.MessageDrawable messageDrawableOutStart; - private Theme.MessageDrawable messageDrawableOutMediaStart; - private ThemeAnimationSettings.onAnimationProgress animationProgressListener; - private ArrayList themeAnimatorDelegate = new ArrayList<>(); - private ArrayList presentingFragmentDescriptions; - - private float themeAnimationValue; - private ArrayList> themeAnimatorDescriptions = new ArrayList<>(); - private ArrayList animateStartColors = new ArrayList<>(); - private ArrayList animateEndColors = new ArrayList<>(); - - private int fromBackgroundColor; - - private LinearLayout stiffnessControl; - private CheckBoxCell openChatCheckbox; - - private String titleOverlayTitle; - private int titleOverlayTitleId; - private Runnable titleOverlayAction; - - public LNavigation(@NonNull Context context) { - this(context, null); - } - - public LNavigation(@NonNull Context context, @Nullable AttributeSet attrs) { - super(context, attrs); - - overlayLayout = new FrameLayout(context); - addView(overlayLayout); - - headerShadowDrawable = getResources().getDrawable(R.drawable.header_shadow).mutate(); - layerShadowDrawable = getResources().getDrawable(R.drawable.layer_shadow).mutate(); - - dimmPaint.setColor(0x7a000000); - setWillNotDraw(false); - - menuDrawable.setRoundCap(); - - int touchSlop = ViewConfiguration.get(context).getScaledTouchSlop(); - gestureDetector = new GestureDetectorCompat(context, new GestureDetector.SimpleOnGestureListener() { - @Override - public boolean onDown(MotionEvent e) { - return true; - } - - @Override - public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { - if (highlightActionButtons && !allowToPressByHover && isFirstHoverAllowed && isInPreviewMode() && (Math.abs(distanceX) >= touchSlop || Math.abs(distanceY) >= touchSlop) && !isSwipeInProgress && previewMenu != null) { - allowToPressByHover = true; - } - - if (allowToPressByHover && previewMenu != null && (previewMenu.getSwipeBack() == null || previewMenu.getSwipeBack().isForegroundOpen())) { - for (int i = 0; i < previewMenu.getItemsCount(); ++i) { - ActionBarMenuSubItem button = (ActionBarMenuSubItem) previewMenu.getItemAt(i); - if (button != null) { - Drawable ripple = button.getBackground(); - button.getGlobalVisibleRect(AndroidUtilities.rectTmp2); - boolean shouldBeEnabled = AndroidUtilities.rectTmp2.contains((int) e2.getX(), (int) e2.getY()), enabled = ripple.getState().length == 2; - if (shouldBeEnabled != enabled) { - ripple.setState(shouldBeEnabled ? new int[]{android.R.attr.state_pressed, android.R.attr.state_enabled} : new int[]{}); - if (shouldBeEnabled && Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) { - try { - button.performHapticFeedback(HapticFeedbackConstants.TEXT_HANDLE_MOVE, HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING); - } catch (Exception ignore) {} - } - } - } - } - } - - if (!isSwipeInProgress && !isSwipeDisallowed) { - if (Math.abs(distanceX) >= Math.abs(distanceY) * 1.5f && distanceX <= -touchSlop && !isIgnoredView(getForegroundView(), e2, ignoreRect) && - getLastFragment() != null && getLastFragment().canBeginSlide() && getLastFragment().isSwipeBackEnabled(e2) && fragmentStack.size() >= 2 && !isInActionMode && - !isInPreviewMode()) { - isSwipeInProgress = true; - - startScroll = swipeProgress - MathUtils.clamp((e2.getX() - e1.getX()) / getWidth(), 0, 1); - - if (getParentActivity().getCurrentFocus() != null) { - AndroidUtilities.hideKeyboard(getParentActivity().getCurrentFocus()); - } - - if (getBackgroundView() != null) { - getBackgroundView().setVisibility(VISIBLE); - } - getLastFragment().prepareFragmentToSlide(true, true); - getLastFragment().onBeginSlide(); - BaseFragment bgFragment = getBackgroundFragment(); - if (bgFragment != null) { - bgFragment.setPaused(false); - bgFragment.prepareFragmentToSlide(false, true); - bgFragment.onBeginSlide(); - } - - MotionEvent e = MotionEvent.obtain(0, 0, MotionEvent.ACTION_CANCEL, 0, 0, 0); - for (int i = 0; i < getChildCount(); i++) { - getChildAt(i).dispatchTouchEvent(e); - } - e.recycle(); - - invalidateActionBars(); - } else { - isSwipeDisallowed = true; - } - } - - if (isSwipeInProgress) { - swipeProgress = MathUtils.clamp(startScroll + (e2.getX() - e1.getX()) / getWidth(), 0, 1); - invalidateTranslation(); - } - return isSwipeInProgress; - } - - @Override - public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { - if (isSwipeInProgress) { - if (velocityX >= 800) { - closeLastFragment(true, false, velocityX / 15f); - clearTouchFlags(); - return true; - } - } - return false; - } - }); - gestureDetector.setIsLongpressEnabled(false); - - stiffnessControl = new LinearLayout(context); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - stiffnessControl.setElevation(AndroidUtilities.dp(12)); - } - stiffnessControl.setOrientation(LinearLayout.VERTICAL); - stiffnessControl.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); - - TextView titleView = new TextView(context); - titleView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); - titleView.setGravity(Gravity.CENTER); - titleView.setText(String.format(Locale.ROOT, "Stiffness: %f", SPRING_STIFFNESS)); - stiffnessControl.addView(titleView, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 36)); - - SeekBarView seekBarView = new SeekBarView(context); - seekBarView.setReportChanges(true); - seekBarView.setDelegate(new SeekBarView.SeekBarViewDelegate() { - @Override - public void onSeekBarDrag(boolean stop, float progress) { - titleView.setText(String.format(Locale.ROOT, "Stiffness: %f", 500f + progress * 1000f)); - if (stop) { - SPRING_STIFFNESS = 500f + progress * 1000f; - } - } - - @Override - public void onSeekBarPressed(boolean pressed) { - - } - }); - seekBarView.setProgress((SPRING_STIFFNESS - 500f) / 1000f); - stiffnessControl.addView(seekBarView, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 38)); - - TextView dampingTitle = new TextView(context); - dampingTitle.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); - dampingTitle.setGravity(Gravity.CENTER); - dampingTitle.setText(String.format(Locale.ROOT, "Damping ratio: %f", SPRING_DAMPING_RATIO)); - stiffnessControl.addView(dampingTitle, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 36)); - - seekBarView = new SeekBarView(context); - seekBarView.setReportChanges(true); - seekBarView.setDelegate(new SeekBarView.SeekBarViewDelegate() { - @Override - public void onSeekBarDrag(boolean stop, float progress) { - dampingTitle.setText(String.format(Locale.ROOT, "Damping ratio: %f", 0.2f + progress * 0.8f)); - if (stop) { - SPRING_DAMPING_RATIO = 0.2f + progress * 0.8f; - } - } - - @Override - public void onSeekBarPressed(boolean pressed) { - - } - }); - seekBarView.setProgress((SPRING_DAMPING_RATIO - 0.2f) / 0.8f); - stiffnessControl.addView(seekBarView, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 38)); - - openChatCheckbox = new CheckBoxCell(context, 1); - openChatCheckbox.setText("Show chat open measurement", null, false, false); - openChatCheckbox.setOnClickListener(v -> openChatCheckbox.setChecked(!openChatCheckbox.isChecked(), true)); - stiffnessControl.addView(openChatCheckbox, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 36)); - - stiffnessControl.setVisibility(GONE); - overlayLayout.addView(stiffnessControl, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.BOTTOM)); - } - - @Override - public void addView(View child, int index, ViewGroup.LayoutParams params) { - if (getChildCount() >= 3) { - throw new IllegalStateException("LNavigation must have no more than 3 child views!"); - } - - super.addView(child, index, params); - } - - public boolean doShowOpenChat() { - return openChatCheckbox.isChecked(); - } - - public LinearLayout getStiffnessControl() { - return stiffnessControl; - } - - @Override - public void requestDisallowInterceptTouchEvent(boolean disallowIntercept) { - super.requestDisallowInterceptTouchEvent(disallowIntercept); - - if (disallowIntercept && isSwipeInProgress) { - isSwipeInProgress = false; - onReleaseTouch(); - } - isSwipeDisallowed = disallowIntercept; - } - - private void animateReset() { - BaseFragment fragment = getLastFragment(); - BaseFragment bgFragment = getBackgroundFragment(); - if (fragment == null) { - return; - } - - fragment.onTransitionAnimationStart(true, true); - - FloatValueHolder valueHolder = new FloatValueHolder(swipeProgress * SPRING_MULTIPLIER); - currentSpringAnimation = new SpringAnimation(valueHolder) - .setSpring(new SpringForce(0f) - .setStiffness(SPRING_STIFFNESS) - .setDampingRatio(SPRING_DAMPING_RATIO)); - currentSpringAnimation.addUpdateListener((animation, value, velocity) -> { - swipeProgress = value / SPRING_MULTIPLIER; - invalidateTranslation(); - fragment.onTransitionAnimationProgress(true, 1f - swipeProgress); - }); - Runnable onEnd = ()->{ - fragment.onTransitionAnimationEnd(true, true); - fragment.prepareFragmentToSlide(true, false); - - swipeProgress = 0f; - invalidateTranslation(); - if (getBackgroundView() != null) { - getBackgroundView().setVisibility(GONE); - } - - fragment.onBecomeFullyVisible(); - if (bgFragment != null) { - bgFragment.setPaused(true); - bgFragment.onBecomeFullyHidden(); - bgFragment.prepareFragmentToSlide(false, false); - } - - currentSpringAnimation = null; - invalidateActionBars(); - }; - currentSpringAnimation.addEndListener((animation, canceled, value, velocity) -> { - if (animation == currentSpringAnimation) { - onEnd.run(); - } - }); - if (swipeProgress != 0f) { - currentSpringAnimation.start(); - } else { - onEnd.run(); - } - } - - private void invalidateActionBars() { - if (getLastFragment() != null && getLastFragment().getActionBar() != null) { - getLastFragment().getActionBar().invalidate(); - } - if (getBackgroundFragment() != null && getBackgroundFragment().getActionBar() != null) { - getBackgroundFragment().getActionBar().invalidate(); - } - } - - private boolean processTouchEvent(MotionEvent ev) { - int act = ev.getActionMasked(); - if (isTransitionAnimationInProgress()) { - return true; - } - - if (!gestureDetector.onTouchEvent(ev)) { - switch (act) { - case MotionEvent.ACTION_DOWN: - break; - case MotionEvent.ACTION_CANCEL: - case MotionEvent.ACTION_UP: - if (isFirstHoverAllowed && !allowToPressByHover) { - clearTouchFlags(); - } else if (allowToPressByHover && previewMenu != null) { - for (int i = 0; i < previewMenu.getItemsCount(); ++i) { - ActionBarMenuSubItem button = (ActionBarMenuSubItem) previewMenu.getItemAt(i); - if (button != null) { - button.getGlobalVisibleRect(AndroidUtilities.rectTmp2); - boolean shouldBeEnabled = AndroidUtilities.rectTmp2.contains((int) ev.getX(), (int) ev.getY()); - if (shouldBeEnabled) { - button.performClick(); - } - } - } - - clearTouchFlags(); - } else if (isSwipeInProgress) { - clearTouchFlags(); - onReleaseTouch(); - } else if (isSwipeDisallowed) { - clearTouchFlags(); - } - return false; - } - } - return isSwipeInProgress; - } - - private void onReleaseTouch() { - if (swipeProgress < 0.5f) { - animateReset(); - } else { - closeLastFragment(true, false); - } - } - - private void clearTouchFlags() { - isSwipeDisallowed = false; - isSwipeInProgress = false; - allowToPressByHover = false; - isFirstHoverAllowed = false; - } - - @SuppressLint("ClickableViewAccessibility") - @Override - public boolean onTouchEvent(MotionEvent event) { - processTouchEvent(event); - - return true; - } - - @Override - public boolean dispatchTouchEvent(MotionEvent ev) { - if (processTouchEvent(ev) && touchCapturedView == null) { - return true; - } - - if (getChildCount() < 1) { - return false; - } - - if (getForegroundView() != null) { - View capturedView = touchCapturedView; - View fg = getForegroundView(); - ev.offsetLocation(-getPaddingLeft(), -getPaddingTop()); - boolean overlay = overlayLayout.dispatchTouchEvent(ev) || capturedView == overlayLayout; - if (overlay) { - if (ev.getAction() == MotionEvent.ACTION_DOWN) { - touchCapturedView = overlayLayout; - - MotionEvent e = MotionEvent.obtain(0, 0, MotionEvent.ACTION_CANCEL, 0, 0, 0); - for (int i = 0; i < getChildCount() - 1; i++) { - getChildAt(i).dispatchTouchEvent(e); - } - e.recycle(); - } - } - if (ev.getAction() == MotionEvent.ACTION_UP || ev.getAction() == MotionEvent.ACTION_CANCEL) { - touchCapturedView = null; - } - if (overlay) { - return true; - } - if (capturedView != null) { - return capturedView.dispatchTouchEvent(ev) || ev.getActionMasked() == MotionEvent.ACTION_DOWN; - } - - boolean foreground = fg.dispatchTouchEvent(ev); - if (foreground) { - if (ev.getAction() == MotionEvent.ACTION_DOWN) { - touchCapturedView = fg; - } - } - return foreground || ev.getActionMasked() == MotionEvent.ACTION_DOWN; - } - return super.dispatchTouchEvent(ev); - } - - @Override - public boolean hasIntegratedBlurInPreview() { - return true; - } - - @Override - public boolean presentFragment(NavigationParams params) { - BaseFragment fragment = params.fragment; - if (!params.isFromDelay && (fragment == null || checkTransitionAnimation() || delegate != null && params.checkPresentFromDelegate && - !delegate.needPresentFragment(this, params) || !fragment.onFragmentCreate() || delayedPresentAnimation != null)) { - return false; - } - - if (!fragmentStack.isEmpty() && getChildCount() < 2) { - rebuildFragments(REBUILD_FLAG_REBUILD_LAST); - } - - if (getParentActivity().getCurrentFocus() != null) { - AndroidUtilities.hideKeyboard(getParentActivity().getCurrentFocus()); - } - - if (!params.isFromDelay) { - fragment.setInPreviewMode(params.preview); - if (previewMenu != null) { - if (previewMenu.getParent() != null) { - ((ViewGroup) previewMenu.getParent()).removeView(previewMenu); - } - } - previewMenu = params.menuView; - fragment.setInMenuMode(previewMenu != null); - fragment.setParentLayout(this); - } - boolean animate = params.preview || MessagesController.getGlobalMainSettings().getBoolean("view_animations", true) && - !params.noAnimation && (useAlphaAnimations || fragmentStack.size() >= 1); - - BaseFragment prevFragment = params.isFromDelay ? getBackgroundFragment() : getLastFragment(); - Runnable onFragmentOpened = ()->{ - if (params.removeLast && prevFragment != null) { - removeFragmentFromStack(prevFragment); - } - invalidateActionBars(); - }; - if (animate) { - if (!params.isFromDelay) { - if (params.preview) { - View bgView = getForegroundView(); - if (bgView != null) { - float scaleFactor = 8; - int w = (int) (bgView.getMeasuredWidth() / scaleFactor); - int h = (int) (bgView.getMeasuredHeight() / scaleFactor); - Bitmap bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); - Canvas canvas = new Canvas(bitmap); - canvas.scale(1.0f / scaleFactor, 1.0f / scaleFactor); - canvas.drawColor(Theme.getColor(Theme.key_windowBackgroundWhite)); - bgView.draw(canvas); - Utilities.stackBlurBitmap(bitmap, Math.max(8, Math.max(w, h) / 150)); - blurredBackFragmentForPreview = bitmap; - } - - if (getParent() != null) { - getParent().requestDisallowInterceptTouchEvent(true); - } - isFirstHoverAllowed = true; - } - - FragmentHolderView holderView = onCreateHolderView(fragment); - if (params.preview) { - MarginLayoutParams layoutParams = (MarginLayoutParams) holderView.getLayoutParams(); - layoutParams.leftMargin = layoutParams.topMargin = layoutParams.rightMargin = layoutParams.bottomMargin = AndroidUtilities.dp(8); - - if (previewMenu != null) { - previewMenu.measure(MeasureSpec.makeMeasureSpec(getWidth(), MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec((int) (getHeight() * 0.5f), MeasureSpec.AT_MOST)); - layoutParams = (MarginLayoutParams) fragment.getFragmentView().getLayoutParams(); - layoutParams.bottomMargin += AndroidUtilities.dp(8) + previewMenu.getMeasuredHeight(); - - if (LocaleController.isRTL) { - previewMenu.setTranslationX(getWidth() - previewMenu.getMeasuredWidth() - AndroidUtilities.dp(8)); - } else { - previewMenu.setTranslationX(-AndroidUtilities.dp(8)); - } - previewMenu.setTranslationY(getHeight() - AndroidUtilities.dp(24) - previewMenu.getMeasuredHeight()); - holderView.addView(previewMenu, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT), 0, 0, 0, 8)); - } else { - layoutParams.topMargin += AndroidUtilities.dp(52); - } - - holderView.setOnClickListener(v -> finishPreviewFragment()); - } - addView(holderView, getChildCount() - 1); - fragmentStack.add(fragment); - notifyFragmentStackChanged(); - fragment.setPaused(false); - - swipeProgress = 1f; - invalidateTranslation(); - } - - if (fragment.needDelayOpenAnimation() && !params.delayDone) { - AndroidUtilities.runOnUIThread(delayedPresentAnimation = ()->{ - delayedPresentAnimation = null; - - params.isFromDelay = true; - params.delayDone = true; - presentFragment(params); - }, 200); - return true; - } - - fragment.onTransitionAnimationStart(true, false); - if (prevFragment != null) { - prevFragment.onTransitionAnimationStart(false, false); - } - - customAnimation = fragment.onCustomTransitionAnimation(true, ()-> { - customAnimation = null; - fragment.onTransitionAnimationEnd(true, false); - if (prevFragment != null) { - prevFragment.onTransitionAnimationEnd(false, false); - } - - swipeProgress = 0f; - invalidateTranslation(); - if (getBackgroundView() != null) { - getBackgroundView().setVisibility(GONE); - } - - fragment.onBecomeFullyVisible(); - if (prevFragment != null) { - prevFragment.onBecomeFullyHidden(); - } - onFragmentOpened.run(); - - }); - if (customAnimation != null) { - getForegroundView().setTranslationX(0); - return true; - } - - invalidateActionBars(); - FloatValueHolder valueHolder = new FloatValueHolder(SPRING_MULTIPLIER); - currentSpringAnimation = new SpringAnimation(valueHolder) - .setSpring(new SpringForce(0f) - .setStiffness(params.preview ? SPRING_STIFFNESS_PREVIEW : SPRING_STIFFNESS) - .setDampingRatio(params.preview ? 0.6f : SPRING_DAMPING_RATIO)); - currentSpringAnimation.addUpdateListener((animation, value, velocity) -> { - swipeProgress = value / SPRING_MULTIPLIER; - invalidateTranslation(); - fragment.onTransitionAnimationProgress(true, 1f - swipeProgress); - }); - currentSpringAnimation.addEndListener((animation, canceled, value, velocity) -> { - if (animation == currentSpringAnimation) { - fragment.onTransitionAnimationEnd(true, false); - if (prevFragment != null) { - prevFragment.onTransitionAnimationEnd(false, false); - } - - swipeProgress = 0f; - invalidateTranslation(); - if (!params.preview && getBackgroundView() != null) { - getBackgroundView().setVisibility(GONE); - } - - fragment.onBecomeFullyVisible(); - if (prevFragment != null) { - prevFragment.onBecomeFullyHidden(); - prevFragment.setPaused(true); - } - onFragmentOpened.run(); - - currentSpringAnimation = null; - - if (params.preview && previewOpenCallback != null) { - previewOpenCallback.run(); - } - previewOpenCallback = null; - } - }); - currentSpringAnimation.start(); - } else if (!params.preview) { - if (fragment.needDelayOpenAnimation() && !params.delayDone && params.needDelayWithoutAnimation) { - AndroidUtilities.runOnUIThread(delayedPresentAnimation = ()->{ - delayedPresentAnimation = null; - - params.isFromDelay = true; - params.delayDone = true; - presentFragment(params); - }, 200); - return true; - } - addFragmentToStack(fragment, -1, true); - onFragmentOpened.run(); - } - - return true; - } - - /** - * Invalidates current fragment and action bar translation - */ - private void invalidateTranslation() { - if (useAlphaAnimations && fragmentStack.size() == 1) { - backgroundView.setAlpha(1f - swipeProgress); - setAlpha(1f - swipeProgress); - return; - } - - FragmentHolderView bgView = getBackgroundView(); - FragmentHolderView fgView = getForegroundView(); - - boolean preview = isInPreviewMode(); - - float widthNoPaddings = getWidth() - getPaddingLeft() - getPaddingRight(); - float heightNoPadding = getHeight() - getPaddingTop() - getPaddingBottom(); - if (preview) { - if (bgView != null) { - bgView.setTranslationX(0); - bgView.invalidate(); - } - if (fgView != null) { - fgView.setPivotX(widthNoPaddings / 2f); - fgView.setPivotY(heightNoPadding / 2f); - - fgView.setTranslationX(0); - fgView.setTranslationY(0); - - float scale = 0.5f + (1f - swipeProgress) * 0.5f; - fgView.setScaleX(scale); - fgView.setScaleY(scale); - fgView.setAlpha(1f - Math.max(swipeProgress, 0f)); - - fgView.invalidate(); - } - } else { - if (bgView != null) { - bgView.setTranslationX(-(1f - swipeProgress) * 0.35f * widthNoPaddings); - } - if (fgView != null) { - fgView.setTranslationX(swipeProgress * widthNoPaddings); - } - } - invalidate(); - - try { - if (bgView != null && fgView != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - int navColor = ColorUtils.blendARGB(fgView.fragment.getNavigationBarColor(), bgView.fragment.getNavigationBarColor(), swipeProgress); - getParentActivity().getWindow().setNavigationBarColor(navColor); - AndroidUtilities.setLightNavigationBar(getParentActivity().getWindow(), AndroidUtilities.computePerceivedBrightness(navColor) > 0.721f); - } - } catch (Exception ignore) {} - - if (getLastFragment() != null) { - getLastFragment().onSlideProgressFront(false, swipeProgress); - } - if (getBackgroundFragment() != null) { - getBackgroundFragment().onSlideProgress(false, swipeProgress); - } - } - - @Override - public List onGetDebugItems() { - List items = new ArrayList<>(); - BaseFragment fragment = getLastFragment(); - if (fragment != null) { - if (fragment instanceof FloatingDebugProvider) { - items.addAll(((FloatingDebugProvider) fragment).onGetDebugItems()); - } - observeDebugItemsFromView(items, fragment.getFragmentView()); - } - if (ALLOW_OPEN_STIFFNESS_CONTROL) { - items.add(new FloatingDebugController.DebugItem(LocaleController.getString(R.string.DebugAltNavigation))); - items.add(new FloatingDebugController.DebugItem(LocaleController.getString(R.string.DebugAltNavigationToggleControls), () -> getStiffnessControl().setVisibility(getStiffnessControl().getVisibility() == VISIBLE ? GONE : VISIBLE))); - } - return items; - } - - private void observeDebugItemsFromView(List items, View v) { - if (v instanceof FloatingDebugProvider) { - items.addAll(((FloatingDebugProvider) v).onGetDebugItems()); - } - if (v instanceof ViewGroup) { - ViewGroup vg = (ViewGroup) v; - for (int i = 0; i < vg.getChildCount(); i++) { - observeDebugItemsFromView(items, vg.getChildAt(i)); - } - } - } - - - private FragmentHolderView getForegroundView() { - if (getChildCount() >= 2) { - return (FragmentHolderView) getChildAt(getChildCount() >= 3 ? 1 : 0); - } - return null; - } - - private FragmentHolderView getBackgroundView() { - if (getChildCount() >= 3) { - return (FragmentHolderView) getChildAt(0); - } - return null; - } - - @Override - public boolean checkTransitionAnimation() { - return isTransitionAnimationInProgress(); - } - - @Override - public boolean addFragmentToStack(BaseFragment fragment, int position) { - return addFragmentToStack(fragment, position, false); - } - - public boolean addFragmentToStack(BaseFragment fragment, int position, boolean fromPresent) { - if (!fromPresent && (delegate != null && !delegate.needAddFragmentToStack(fragment, this) || !fragment.onFragmentCreate())) { - return false; - } - if (!fragmentStack.isEmpty() && getChildCount() < 2) { - rebuildFragments(REBUILD_FLAG_REBUILD_LAST); - } - fragment.setParentLayout(this); - if (position < 0 || position >= fragmentStack.size()) { - BaseFragment lastFragment = getLastFragment(); - if (lastFragment != null) { - lastFragment.setPaused(true); - lastFragment.onTransitionAnimationStart(false, true); - lastFragment.onTransitionAnimationEnd(false, true); - lastFragment.onBecomeFullyHidden(); - } - - fragmentStack.add(fragment); - notifyFragmentStackChanged(); - - FragmentHolderView holderView = onCreateHolderView(fragment); - addView(holderView, getChildCount() - 1); - - fragment.setPaused(false); - fragment.onTransitionAnimationStart(true, false); - fragment.onTransitionAnimationEnd(true, false); - fragment.onBecomeFullyVisible(); - - if (getBackgroundView() != null) { - getBackgroundView().setVisibility(GONE); - } - getForegroundView().setVisibility(VISIBLE); - } else { - fragmentStack.add(position, fragment); - notifyFragmentStackChanged(); - - if (position == fragmentStack.size() - 2) { - FragmentHolderView holderView = onCreateHolderView(fragment); - addView(holderView, getChildCount() - 2); - getBackgroundView().setVisibility(GONE); - getForegroundView().setVisibility(VISIBLE); - } - } - invalidateTranslation(); - return true; - } - - private FragmentHolderView onCreateHolderView(BaseFragment fragment) { - FragmentHolderView holderView; - if (getChildCount() >= 3) { - holderView = getBackgroundView(); - } else { - holderView = new FragmentHolderView(getContext()); - } - holderView.setFragment(fragment); - if (holderView.getParent() != null) { - holderView.setVisibility(VISIBLE); - removeView(holderView); - } - holderView.setOnClickListener(null); - resetViewProperties(holderView); - resetViewProperties(fragment.getFragmentView()); - if (fragment.getActionBar() != null) { - fragment.getActionBar().setTitleOverlayText(titleOverlayTitle, titleOverlayTitleId, titleOverlayAction); - } - return holderView; - } - - private void resetViewProperties(View v) { - if (v == null) { - return; - } - - v.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); - v.setAlpha(1f); - v.setPivotX(0); - v.setPivotY(0); - v.setScaleX(1); - v.setScaleY(1); - v.setTranslationX(0); - v.setTranslationY(0); - } - - /** - * Called to notify ImageLoader and listeners about fragments stack changed - */ - private void notifyFragmentStackChanged() { - if (onFragmentStackChangedListener != null) { - onFragmentStackChangedListener.run(); - } - if (useAlphaAnimations) { - if (fragmentStack.isEmpty()) { - setVisibility(GONE); - backgroundView.setVisibility(GONE); - } else { - setVisibility(VISIBLE); - backgroundView.setVisibility(VISIBLE); - } - if (drawerLayoutContainer != null) { - drawerLayoutContainer.setAllowOpenDrawer(fragmentStack.isEmpty(), false); - } - } - ImageLoader.getInstance().onFragmentStackChanged(); - } - - @Override - public void removeFragmentFromStack(BaseFragment fragment, boolean immediate) { - int i = fragmentStack.indexOf(fragment); - if (i == -1) { - return; - } - - int wasSize = fragmentStack.size(); - - fragment.setRemovingFromStack(true); - fragment.onFragmentDestroy(); - fragment.setParentLayout(null); - fragmentStack.remove(i); - notifyFragmentStackChanged(); - - if (i == wasSize - 1) { - BaseFragment newLastFragment = getLastFragment(); - if (newLastFragment != null) { - newLastFragment.setPaused(false); - newLastFragment.onBecomeFullyVisible(); - } - - FragmentHolderView holderView = getForegroundView(); - if (holderView != null) { - removeView(holderView); - resetViewProperties(holderView); - } - - if (getForegroundView() != null) { - getForegroundView().setVisibility(VISIBLE); - } - - if (fragmentStack.size() >= 2) { - BaseFragment bgFragment = getBackgroundFragment(); - bgFragment.setParentLayout(this); - if (holderView != null) { - holderView.setFragment(bgFragment); - } else { - holderView = onCreateHolderView(bgFragment); - } - bgFragment.onBecomeFullyHidden(); - holderView.setVisibility(GONE); - addView(holderView, getChildCount() - 2); - } - } else if (i == wasSize - 2) { - FragmentHolderView holderView = getBackgroundView(); - if (holderView != null) { - removeView(holderView); - resetViewProperties(holderView); - } - - if (fragmentStack.size() >= 2) { - BaseFragment bgFragment = getBackgroundFragment(); - bgFragment.setParentLayout(this); - if (holderView != null) { - holderView.setFragment(bgFragment); - } else { - holderView = onCreateHolderView(bgFragment); - } - bgFragment.onBecomeFullyHidden(); - holderView.setVisibility(GONE); - addView(holderView, getChildCount() - 2); - } - } - - invalidateTranslation(); - } - - @Override - public List getFragmentStack() { - return unmodifiableFragmentStack; - } - - @Override - public void setFragmentStack(List fragmentStack) { - this.fragmentStack = fragmentStack; - unmodifiableFragmentStack = Collections.unmodifiableList(fragmentStack); - } - - @Override - public void showLastFragment() { - rebuildFragments(REBUILD_FLAG_REBUILD_LAST); - } - - @Override - public void rebuildFragments(int flags) { - if (currentSpringAnimation != null && currentSpringAnimation.isRunning()) { - currentSpringAnimation.addEndListener((animation, canceled, value, velocity) -> AndroidUtilities.runOnUIThread(()-> rebuildFragments(flags))); - return; - } else if (customAnimation != null && customAnimation.isRunning()) { - customAnimation.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - AndroidUtilities.runOnUIThread(()-> rebuildFragments(flags)); - } - }); - return; - } - if (fragmentStack.isEmpty()) { - while (getChildCount() > 1) { - removeViewAt(0); - } - return; - } - - boolean rebuildLast = (flags & REBUILD_FLAG_REBUILD_LAST) != 0; - boolean rebuildBeforeLast = (flags & REBUILD_FLAG_REBUILD_ONLY_LAST) == 0 || rebuildLast && (getBackgroundView() != null && getBackgroundView().fragment != getBackgroundFragment() || getForegroundView() != null && getForegroundView().fragment == getLastFragment()); - - if (rebuildBeforeLast) { - if (getChildCount() >= 3) { - View child = getChildAt(0); - if (child instanceof FragmentHolderView) { - ((FragmentHolderView) child).fragment.setPaused(true); - } - removeViewAt(0); - } - } - if (rebuildLast) { - if (getChildCount() >= 2) { - View child = getChildAt(0); - if (child instanceof FragmentHolderView) { - ((FragmentHolderView) child).fragment.setPaused(true); - } - removeViewAt(0); - } - } - for (int i = rebuildBeforeLast ? 0 : fragmentStack.size() - 1; i < fragmentStack.size() - (rebuildLast ? 0 : 1); i++) { - BaseFragment fragment = fragmentStack.get(i); - fragment.clearViews(); - fragment.setParentLayout(this); - FragmentHolderView holderView = new FragmentHolderView(getContext()); - holderView.setFragment(fragment); - - if (i >= fragmentStack.size() - 2) { - addView(holderView, getChildCount() - 1); - } - } - if (delegate != null) { - delegate.onRebuildAllFragments(this, rebuildLast); - } - if (getLastFragment() != null) { - getLastFragment().setPaused(false); - } - } - - @Override - public void setDelegate(INavigationLayoutDelegate delegate) { - this.delegate = delegate; - } - - @Override - public boolean isActionBarInCrossfade() { - boolean crossfadeNoFragments = USE_ACTIONBAR_CROSSFADE && !isInPreviewMode() && (isSwipeInProgress() || isTransitionAnimationInProgress()) && customAnimation == null; - return crossfadeNoFragments && getLastFragment() != null && getLastFragment().isActionBarCrossfadeEnabled() && getBackgroundFragment() != null && getBackgroundFragment().isActionBarCrossfadeEnabled(); - } - - @Override - public void draw(Canvas canvas) { - boolean crossfade = isActionBarInCrossfade(); - if (useAlphaAnimations) { - canvas.save(); - path.rewind(); - AndroidUtilities.rectTmp.set(getPaddingLeft(), getPaddingTop(), getWidth() - getPaddingRight(), getHeight() - getPaddingBottom()); - path.addRoundRect(AndroidUtilities.rectTmp, AndroidUtilities.dp(12), AndroidUtilities.dp(12), Path.Direction.CW); - canvas.clipPath(path); - } - super.draw(canvas); - - if (!isInPreviewMode() && !(useAlphaAnimations && fragmentStack.size() <= 1) && (isSwipeInProgress() || isTransitionAnimationInProgress()) && swipeProgress != 0) { - int top = getPaddingTop(); - if (crossfade) { - top += AndroidUtilities.lerp(getBackgroundFragment().getActionBar().getHeight(), getLastFragment().getActionBar().getHeight(), 1f - swipeProgress); - } - int widthNoPaddings = getWidth() - getPaddingLeft() - getPaddingRight(); - dimmPaint.setAlpha((int) (0x7a * (1f - swipeProgress))); - canvas.drawRect(getPaddingLeft(), top, widthNoPaddings * swipeProgress + getPaddingLeft(), getHeight() - getPaddingBottom(), dimmPaint); - - layerShadowDrawable.setAlpha((int) (0xFF * (1f - swipeProgress))); - layerShadowDrawable.setBounds((int) (widthNoPaddings * swipeProgress - layerShadowDrawable.getIntrinsicWidth()) + getPaddingLeft(), top, (int) (widthNoPaddings * swipeProgress) + getPaddingLeft(), getHeight() - getPaddingBottom()); - layerShadowDrawable.draw(canvas); - } - if (useAlphaAnimations) { - canvas.restore(); - } - - if (previewFragmentSnapshot != null) { - canvas.save(); - path.rewind(); - AndroidUtilities.rectTmp.set(previewFragmentRect.left * (1f - previewExpandProgress), previewFragmentRect.top * (1f - previewExpandProgress), AndroidUtilities.lerp(previewFragmentRect.right, getWidth(), previewExpandProgress), AndroidUtilities.lerp(previewFragmentRect.bottom, getHeight(), previewExpandProgress)); - path.addRoundRect(AndroidUtilities.rectTmp, AndroidUtilities.dp(8), AndroidUtilities.dp(8), Path.Direction.CW); - canvas.clipPath(path); - - canvas.translate(previewFragmentRect.left * (1f - previewExpandProgress), previewFragmentRect.top * (1f - previewExpandProgress)); - canvas.scale(AndroidUtilities.lerp(1f, (float) getWidth() / previewFragmentRect.width(), previewExpandProgress), AndroidUtilities.lerp(1f, (float) getHeight() / previewFragmentRect.height(), previewExpandProgress)); - blurPaint.setAlpha((int) (0xFF * (1f - Math.min(1f, previewExpandProgress)))); - canvas.drawBitmap(previewFragmentSnapshot, 0, 0, blurPaint); - canvas.restore(); - } - - if (crossfade) { - BaseFragment foregroundFragment = getLastFragment(); - BaseFragment backgroundFragment = getBackgroundFragment(); - - ActionBar fgActionBar = foregroundFragment.getActionBar(); - ActionBar bgActionBar = backgroundFragment.getActionBar(); - - boolean useBackDrawable = false; - boolean backDrawableReverse = false; - Float backDrawableForcedProgress = null; - - if (backgroundFragment.getBackButtonState() == BackButtonState.MENU && foregroundFragment.getBackButtonState() == BackButtonState.BACK) { - useBackDrawable = true; - backDrawableReverse = false; - } else if (backgroundFragment.getBackButtonState() == BackButtonState.BACK && foregroundFragment.getBackButtonState() == BackButtonState.MENU) { - useBackDrawable = true; - backDrawableReverse = true; - } else if (backgroundFragment.getBackButtonState() == BackButtonState.BACK && foregroundFragment.getBackButtonState() == BackButtonState.BACK) { - useBackDrawable = true; - backDrawableForcedProgress = 0f; - } else if (backgroundFragment.getBackButtonState() == BackButtonState.MENU && foregroundFragment.getBackButtonState() == BackButtonState.MENU) { - useBackDrawable = true; - backDrawableForcedProgress = 1f; - } - - AndroidUtilities.rectTmp.set(0, 0, getWidth(), bgActionBar.getY() + bgActionBar.getHeight()); - canvas.saveLayerAlpha(AndroidUtilities.rectTmp, (int) (swipeProgress * 0xFF), Canvas.ALL_SAVE_FLAG); - bgActionBar.onDrawCrossfadeBackground(canvas); - canvas.restore(); - - canvas.saveLayerAlpha(AndroidUtilities.rectTmp, (int) ((1 - swipeProgress) * 0xFF), Canvas.ALL_SAVE_FLAG); - fgActionBar.onDrawCrossfadeBackground(canvas); - canvas.restore(); - - if (useBackDrawable) { - AndroidUtilities.rectTmp.set(0, 0, getWidth(), bgActionBar.getY() + bgActionBar.getHeight()); - float progress = backDrawableForcedProgress != null ? backDrawableForcedProgress : swipeProgress; - float bgAlpha = 1f - (bgActionBar.getY() / -(bgActionBar.getHeight() - AndroidUtilities.statusBarHeight)); - float fgAlpha = 1f - (fgActionBar.getY() / -(fgActionBar.getHeight() - AndroidUtilities.statusBarHeight)); - canvas.saveLayerAlpha(AndroidUtilities.rectTmp, (int) (AndroidUtilities.lerp(bgAlpha, fgAlpha, 1f - swipeProgress) * 0xFF), Canvas.ALL_SAVE_FLAG); - canvas.translate(AndroidUtilities.dp(16) - AndroidUtilities.dp(1) * (1f - progress), AndroidUtilities.dp(16) + (fgActionBar.getOccupyStatusBar() ? AndroidUtilities.statusBarHeight : 0)); - menuDrawable.setRotation(backDrawableReverse ? progress : 1f - progress, false); - menuDrawable.draw(canvas); - canvas.restore(); - } - - AndroidUtilities.rectTmp.set(0, AndroidUtilities.statusBarHeight, getWidth(), bgActionBar.getY() + bgActionBar.getHeight()); - canvas.saveLayerAlpha(AndroidUtilities.rectTmp, (int) (swipeProgress * 0xFF), Canvas.ALL_SAVE_FLAG); - canvas.translate(0, bgActionBar.getY()); - bgActionBar.onDrawCrossfadeContent(canvas, false, useBackDrawable, swipeProgress); - canvas.restore(); - - canvas.saveLayerAlpha(AndroidUtilities.rectTmp, (int) ((1 - swipeProgress) * 0xFF), Canvas.ALL_SAVE_FLAG); - canvas.translate(0, fgActionBar.getY()); - fgActionBar.onDrawCrossfadeContent(canvas, true, useBackDrawable, swipeProgress); - canvas.restore(); - } - } - - @Override - public void resumeDelayedFragmentAnimation() { - if (delayedPresentAnimation != null) { - AndroidUtilities.cancelRunOnUIThread(delayedPresentAnimation); - delayedPresentAnimation.run(); - } - } - - @Override - public void setUseAlphaAnimations(boolean useAlphaAnimations) { - this.useAlphaAnimations = useAlphaAnimations; - } - - @Override - public void setBackgroundView(View backgroundView) { - this.backgroundView = backgroundView; - } - - @Override - public void closeLastFragment(boolean animated, boolean forceNoAnimation) { - closeLastFragment(animated, forceNoAnimation, 0); - } - - public void closeLastFragment(boolean animated, boolean forceNoAnimation, float velocityX) { - BaseFragment fragment = getLastFragment(); - if (fragment != null && fragment.closeLastFragment()) { - return; - } - if (fragmentStack.isEmpty() || checkTransitionAnimation() || delegate != null && !delegate.needCloseLastFragment(this)) { - return; - } - - boolean animate = animated && !forceNoAnimation && MessagesController.getGlobalMainSettings().getBoolean("view_animations", true) && (useAlphaAnimations || fragmentStack.size() >= 2); - if (animate) { - AndroidUtilities.hideKeyboard(this); - - BaseFragment lastFragment = getLastFragment(); - - BaseFragment newLastFragment = getBackgroundFragment(); - - if (getBackgroundView() != null) { - getBackgroundView().setVisibility(VISIBLE); - } - - lastFragment.onTransitionAnimationStart(false, true); - if (newLastFragment != null) { - newLastFragment.setPaused(false); - } - - if (swipeProgress == 0) { - customAnimation = lastFragment.onCustomTransitionAnimation(false, () -> { - onCloseAnimationEnd(lastFragment, newLastFragment); - - customAnimation = null; - }); - if (customAnimation != null) { - getForegroundView().setTranslationX(0); - if (getBackgroundView() != null) { - getBackgroundView().setTranslationX(0); - } - return; - } - } - - FloatValueHolder valueHolder = new FloatValueHolder(swipeProgress * SPRING_MULTIPLIER); - currentSpringAnimation = new SpringAnimation(valueHolder) - .setSpring(new SpringForce(SPRING_MULTIPLIER) - .setStiffness(isInPreviewMode() ? SPRING_STIFFNESS_PREVIEW_OUT : SPRING_STIFFNESS) - .setDampingRatio(SPRING_DAMPING_RATIO)); - if (velocityX != 0) { - currentSpringAnimation.setStartVelocity(velocityX); - } - currentSpringAnimation.addUpdateListener((animation, value, velocity) -> { - swipeProgress = value / SPRING_MULTIPLIER; - invalidateTranslation(); - lastFragment.onTransitionAnimationProgress(false, swipeProgress); - - if (newLastFragment != null) { - lastFragment.onTransitionAnimationProgress(true, swipeProgress); - } - }); - currentSpringAnimation.addEndListener((animation, canceled, value, velocity) -> { - if (animation == currentSpringAnimation) { - onCloseAnimationEnd(lastFragment, newLastFragment); - - currentSpringAnimation = null; - } - }); - currentSpringAnimation.start(); - } else { - swipeProgress = 0f; - removeFragmentFromStack(getLastFragment()); - } - } - - private void onCloseAnimationEnd(BaseFragment lastFragment, BaseFragment newLastFragment) { - lastFragment.setPaused(true); - lastFragment.setRemovingFromStack(true); - lastFragment.onTransitionAnimationEnd(false, true); - lastFragment.prepareFragmentToSlide(true, false); - lastFragment.onBecomeFullyHidden(); - lastFragment.onFragmentDestroy(); - lastFragment.setParentLayout(null); - fragmentStack.remove(lastFragment); - notifyFragmentStackChanged(); - - FragmentHolderView holderView = getForegroundView(); - if (holderView != null) { - holderView.setFragment(null); - removeView(holderView); - resetViewProperties(holderView); - } - - if (newLastFragment != null) { - newLastFragment.prepareFragmentToSlide(false, false); - newLastFragment.onTransitionAnimationEnd(true, true); - newLastFragment.onBecomeFullyVisible(); - } - - if (fragmentStack.size() >= 2) { - BaseFragment prevFragment = getBackgroundFragment(); - prevFragment.setParentLayout(this); - - if (holderView == null) { - holderView = onCreateHolderView(prevFragment); - } else { - holderView.setFragment(prevFragment); - } - holderView.setVisibility(GONE); - addView(holderView, getChildCount() - 2); - } - swipeProgress = 0f; - invalidateTranslation(); - - previewMenu = null; - if (blurredBackFragmentForPreview != null) { - blurredBackFragmentForPreview.recycle(); - blurredBackFragmentForPreview = null; - } - previewOpenCallback = null; - invalidateActionBars(); - } - - @Override - public DrawerLayoutContainer getDrawerLayoutContainer() { - return drawerLayoutContainer; - } - - @Override - public void setDrawerLayoutContainer(DrawerLayoutContainer drawerLayoutContainer) { - this.drawerLayoutContainer = drawerLayoutContainer; - } - - @Override - public void setRemoveActionBarExtraHeight(boolean removeExtraHeight) { - this.removeActionBarExtraHeight = removeExtraHeight; - } - - private ActionBar getCurrentActionBar() { - return getLastFragment() != null ? getLastFragment().getActionBar() : null; - } - - @Override - public void setTitleOverlayText(String title, int titleId, Runnable action) { - titleOverlayTitle = title; - titleOverlayTitleId = titleId; - titleOverlayAction = action; - for (BaseFragment fragment : fragmentStack) { - if (fragment.getActionBar() != null) { - fragment.getActionBar().setTitleOverlayText(title, titleId, action); - } - } - } - - private void addStartDescriptions(ArrayList descriptions) { - if (descriptions == null) { - return; - } - themeAnimatorDescriptions.add(descriptions); - int[] startColors = new int[descriptions.size()]; - animateStartColors.add(startColors); - for (int a = 0, N = descriptions.size(); a < N; a++) { - ThemeDescription description = descriptions.get(a); - startColors[a] = description.getSetColor(); - ThemeDescription.ThemeDescriptionDelegate delegate = description.setDelegateDisabled(); - if (delegate != null && !themeAnimatorDelegate.contains(delegate)) { - themeAnimatorDelegate.add(delegate); - } - } - } - - private void addEndDescriptions(ArrayList descriptions) { - if (descriptions == null) { - return; - } - int[] endColors = new int[descriptions.size()]; - animateEndColors.add(endColors); - for (int a = 0, N = descriptions.size(); a < N; a++) { - endColors[a] = descriptions.get(a).getSetColor(); - } - } - - @Override - public void animateThemedValues(ThemeAnimationSettings settings, Runnable onDone) { - if (themeAnimator != null) { - themeAnimator.cancel(); - themeAnimator = null; - } - int fragmentCount = settings.onlyTopFragment ? 1 : fragmentStack.size(); - Runnable next = () -> { - boolean startAnimation = false; - for (int i = 0; i < fragmentCount; i++) { - BaseFragment fragment; - if (i == 0) { - fragment = getLastFragment(); - } else { - if (!isInPreviewMode() && !isPreviewOpenAnimationInProgress() || fragmentStack.size() <= 1) { - continue; - } - fragment = fragmentStack.get(fragmentStack.size() - 2); - } - if (fragment != null) { - startAnimation = true; - if (settings.resourcesProvider != null) { - if (messageDrawableOutStart == null) { - messageDrawableOutStart = new Theme.MessageDrawable(Theme.MessageDrawable.TYPE_TEXT, true, false, startColorsProvider); - messageDrawableOutStart.isCrossfadeBackground = true; - messageDrawableOutMediaStart = new Theme.MessageDrawable(Theme.MessageDrawable.TYPE_MEDIA, true, false, startColorsProvider); - messageDrawableOutMediaStart.isCrossfadeBackground = true; - } - startColorsProvider.saveColors(settings.resourcesProvider); - } - ArrayList descriptions = fragment.getThemeDescriptions(); - addStartDescriptions(descriptions); - if (fragment.getVisibleDialog() instanceof BottomSheet) { - BottomSheet sheet = (BottomSheet) fragment.getVisibleDialog(); - addStartDescriptions(sheet.getThemeDescriptions()); - } else if (fragment.getVisibleDialog() instanceof AlertDialog) { - AlertDialog dialog = (AlertDialog) fragment.getVisibleDialog(); - addStartDescriptions(dialog.getThemeDescriptions()); - } - if (i == 0) { - if (settings.afterStartDescriptionsAddedRunnable != null) { - settings.afterStartDescriptionsAddedRunnable.run(); - } - } - addEndDescriptions(descriptions); - if (fragment.getVisibleDialog() instanceof BottomSheet) { - addEndDescriptions(((BottomSheet) fragment.getVisibleDialog()).getThemeDescriptions()); - } else if (fragment.getVisibleDialog() instanceof AlertDialog) { - addEndDescriptions(((AlertDialog) fragment.getVisibleDialog()).getThemeDescriptions()); - } - } - } - if (startAnimation) { - if (!settings.onlyTopFragment) { - int count = fragmentStack.size() - (isInPreviewMode() || isPreviewOpenAnimationInProgress() ? 2 : 1); - boolean needRebuild = false; - for (int i = 0; i < count; i++) { - BaseFragment fragment = fragmentStack.get(i); - fragment.clearViews(); - fragment.setParentLayout(this); - - if (i == fragmentStack.size() - 1) { - if (getForegroundView() != null) { - getForegroundView().setFragment(fragment); - } else { - needRebuild = true; - } - } else if (i == fragmentStack.size() - 2) { - if (getBackgroundView() != null) { - getBackgroundView().setFragment(fragment); - } else { - needRebuild = true; - } - } - } - if (needRebuild) { - rebuildFragments(REBUILD_FLAG_REBUILD_LAST); - } - } - if (settings.instant) { - setThemeAnimationValue(1.0f); - themeAnimatorDescriptions.clear(); - animateStartColors.clear(); - animateEndColors.clear(); - themeAnimatorDelegate.clear(); - presentingFragmentDescriptions = null; - if (settings.afterAnimationRunnable != null) { - settings.afterAnimationRunnable.run(); - } - if (onDone != null) { - onDone.run(); - } - return; - } - Theme.setAnimatingColor(true); - if (settings.beforeAnimationRunnable != null) { - settings.beforeAnimationRunnable.run(); - } - animationProgressListener = settings.animationProgress; - if (animationProgressListener != null) { - animationProgressListener.setProgress(0); - } - fromBackgroundColor = getBackground() instanceof ColorDrawable ? ((ColorDrawable) getBackground()).getColor() : 0; - themeAnimator = ValueAnimator.ofFloat(0, 1).setDuration(settings.duration); - themeAnimator.addUpdateListener(animation -> setThemeAnimationValue((float) animation.getAnimatedValue())); - themeAnimator.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - if (animation.equals(themeAnimator)) { - themeAnimatorDescriptions.clear(); - animateStartColors.clear(); - animateEndColors.clear(); - themeAnimatorDelegate.clear(); - Theme.setAnimatingColor(false); - presentingFragmentDescriptions = null; - themeAnimator = null; - if (settings.afterAnimationRunnable != null) { - settings.afterAnimationRunnable.run(); - } - } - } - - @Override - public void onAnimationCancel(Animator animation) { - if (animation.equals(themeAnimator)) { - themeAnimatorDescriptions.clear(); - animateStartColors.clear(); - animateEndColors.clear(); - themeAnimatorDelegate.clear(); - Theme.setAnimatingColor(false); - presentingFragmentDescriptions = null; - themeAnimator = null; - if (settings.afterAnimationRunnable != null) { - settings.afterAnimationRunnable.run(); - } - } - } - }); - themeAnimator.start(); - } - if (onDone != null) { - onDone.run(); - } - }; - if (fragmentCount >= 1 && settings.applyTheme) { - if (settings.accentId != -1 && settings.theme != null) { - settings.theme.setCurrentAccentId(settings.accentId); - Theme.saveThemeAccents(settings.theme, true, false, true, false); - } - if (onDone == null) { - Theme.applyTheme(settings.theme, settings.nightTheme); - next.run(); - } else { - Theme.applyThemeInBackground(settings.theme, settings.nightTheme, () -> AndroidUtilities.runOnUIThread(next)); - } - } else { - next.run(); - } - } - - private void setThemeAnimationValue(float value) { - themeAnimationValue = value; - for (int j = 0, N = themeAnimatorDescriptions.size(); j < N; j++) { - ArrayList descriptions = themeAnimatorDescriptions.get(j); - int[] startColors = animateStartColors.get(j); - int[] endColors = animateEndColors.get(j); - int rE, gE, bE, aE, rS, gS, bS, aS, a, r, g, b; - for (int i = 0, N2 = descriptions.size(); i < N2; i++) { - rE = Color.red(endColors[i]); - gE = Color.green(endColors[i]); - bE = Color.blue(endColors[i]); - aE = Color.alpha(endColors[i]); - - rS = Color.red(startColors[i]); - gS = Color.green(startColors[i]); - bS = Color.blue(startColors[i]); - aS = Color.alpha(startColors[i]); - - a = Math.min(255, (int) (aS + (aE - aS) * value)); - r = Math.min(255, (int) (rS + (rE - rS) * value)); - g = Math.min(255, (int) (gS + (gE - gS) * value)); - b = Math.min(255, (int) (bS + (bE - bS) * value)); - int color = Color.argb(a, r, g, b); - ThemeDescription description = descriptions.get(i); - description.setAnimatedColor(color); - description.setColor(color, false, false); - } - } - for (int j = 0, N = themeAnimatorDelegate.size(); j < N; j++) { - ThemeDescription.ThemeDescriptionDelegate delegate = themeAnimatorDelegate.get(j); - if (delegate != null) { - delegate.didSetColor(); - delegate.onAnimationProgress(value); - } - } - if (presentingFragmentDescriptions != null) { - for (int i = 0, N = presentingFragmentDescriptions.size(); i < N; i++) { - ThemeDescription description = presentingFragmentDescriptions.get(i); - String key = description.getCurrentKey(); - description.setColor(Theme.getColor(key), false, false); - } - } - if (animationProgressListener != null) { - animationProgressListener.setProgress(value); - } - if (delegate != null) { - delegate.onThemeProgress(value); - } - } - - @Override - public float getThemeAnimationValue() { - return themeAnimationValue; - } - - @Override - public void setFragmentStackChangedListener(Runnable onFragmentStackChanged) { - this.onFragmentStackChangedListener = onFragmentStackChanged; - } - - @Override - public boolean isTransitionAnimationInProgress() { - return currentSpringAnimation != null || customAnimation != null; - } - - @Override - public boolean isInPassivePreviewMode() { - return (isInPreviewMode() && previewMenu == null) || isTransitionAnimationInProgress(); - } - - @Override - public void setInBubbleMode(boolean bubbleMode) { - this.isInBubbleMode = bubbleMode; - } - - @Override - public boolean isInBubbleMode() { - return isInBubbleMode; - } - - @Override - public boolean isInPreviewMode() { - return getLastFragment() != null && getLastFragment().isInPreviewMode() || blurredBackFragmentForPreview != null; - } - - @Override - public boolean isPreviewOpenAnimationInProgress() { - return isInPreviewMode() && isTransitionAnimationInProgress(); - } - - @Override - public void movePreviewFragment(float dy) { - if (!isInPreviewMode() || previewMenu != null || isTransitionAnimationInProgress() || getForegroundView() == null) { - return; - } - float currentTranslation = getForegroundView().getTranslationY(); - float nextTranslation = -dy; - if (nextTranslation > 0) { - nextTranslation = 0; - } else if (nextTranslation < -AndroidUtilities.dp(60)) { - nextTranslation = 0; - expandPreviewFragment(); - } - if (currentTranslation != nextTranslation) { - getForegroundView().setTranslationY(nextTranslation); - invalidate(); - } - } - - @Override - public void expandPreviewFragment() { - if (!isInPreviewMode() || isTransitionAnimationInProgress() || fragmentStack.isEmpty()) { - return; - } - - try { - performHapticFeedback(HapticFeedbackConstants.KEYBOARD_TAP, HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING); - } catch (Exception ignored) {} - - BaseFragment fragment = getLastFragment(); - View bgView = getBackgroundView(); - View fgView = getForegroundView(); - View fragmentView = fragment.getFragmentView(); - previewFragmentRect.set(fragmentView.getLeft(), fragmentView.getTop(), fragmentView.getRight(), fragmentView.getBottom()); - previewFragmentSnapshot = AndroidUtilities.snapshotView(fgView); - - resetViewProperties(fgView); - resetViewProperties(fragment.getFragmentView()); - fragment.setInPreviewMode(false); - swipeProgress = 0f; - invalidateTranslation(); - - float fromMenuY; - if (previewMenu != null) { - fromMenuY = previewMenu.getTranslationY(); - } else { - fromMenuY = 0; - } - - FloatValueHolder valueHolder = new FloatValueHolder(0); - currentSpringAnimation = new SpringAnimation(valueHolder) - .setSpring(new SpringForce(SPRING_MULTIPLIER) - .setStiffness(SPRING_STIFFNESS_PREVIEW_EXPAND) - .setDampingRatio(0.6f)); - currentSpringAnimation.addUpdateListener((animation, value, velocity) -> { - previewExpandProgress = value / SPRING_MULTIPLIER; - bgView.invalidate(); - - fgView.setPivotX(previewFragmentRect.centerX()); - fgView.setPivotY(previewFragmentRect.centerY()); - fgView.setScaleX(AndroidUtilities.lerp(previewFragmentRect.width() / (float) fgView.getWidth(), 1f, previewExpandProgress)); - fgView.setScaleY(AndroidUtilities.lerp(previewFragmentRect.height() / (float) fgView.getHeight(), 1f, previewExpandProgress)); - fgView.invalidate(); - - if (previewMenu != null) { - previewMenu.setTranslationY(AndroidUtilities.lerp(fromMenuY, getHeight(), previewExpandProgress)); - } - - invalidate(); - }); - currentSpringAnimation.addEndListener((animation, canceled, value, velocity) -> { - if (animation == currentSpringAnimation) { - currentSpringAnimation = null; - fragment.onPreviewOpenAnimationEnd(); - - previewFragmentSnapshot.recycle(); - previewFragmentSnapshot = null; - - if (blurredBackFragmentForPreview != null) { - blurredBackFragmentForPreview.recycle(); - blurredBackFragmentForPreview = null; - } - - if (previewMenu != null && previewMenu.getParent() != null) { - ((ViewGroup) previewMenu.getParent()).removeView(previewMenu); - } - previewMenu = null; - previewOpenCallback = null; - previewExpandProgress = 0; - - if (getBackgroundView() != null) { - getBackgroundView().setVisibility(GONE); - } - } - }); - currentSpringAnimation.start(); - } - - @Override - public void finishPreviewFragment() { - if (isInPreviewMode()) { - Runnable callback = () -> { - if (delayedPresentAnimation != null) { - AndroidUtilities.cancelRunOnUIThread(delayedPresentAnimation); - delayedPresentAnimation = null; - } - - closeLastFragment(); - }; - if (!isTransitionAnimationInProgress()) { - callback.run(); - } else { - previewOpenCallback = callback; - } - } - } - - @Override - public void setFragmentPanTranslationOffset(int offset) { - FragmentHolderView holderView = getForegroundView(); - if (holderView != null) { - holderView.setFragmentPanTranslationOffset(offset); - } - } - - @Override - public ViewGroup getOverlayContainerView() { - return overlayLayout; - } - - @Override - public void setHighlightActionButtons(boolean highlightActionButtons) { - this.highlightActionButtons = highlightActionButtons; - } - - @Override - public float getCurrentPreviewFragmentAlpha() { - return isInPreviewMode() ? getForegroundView().getAlpha() : 0f; - } - - @Override - protected boolean drawChild(Canvas canvas, View child, long drawingTime) { - int index = indexOfChild(child); - if (drawerLayoutContainer != null && drawerLayoutContainer.isDrawCurrentPreviewFragmentAbove() && isInPreviewMode() && index == 1) { - drawerLayoutContainer.invalidate(); - return false; - } - - boolean clipBackground = getChildCount() >= 3 && index == 0 && customAnimation == null && !isInPreviewMode(); - if (clipBackground) { - canvas.save(); - AndroidUtilities.rectTmp.set(getPaddingLeft(), getPaddingTop(), getPaddingLeft() + (getWidth() - getPaddingLeft() - getPaddingRight()) * swipeProgress, getHeight() - getPaddingBottom()); - canvas.clipRect(AndroidUtilities.rectTmp); - } - if (index == 1 && isInPreviewMode()) { - drawPreviewDrawables(canvas, (ViewGroup) child); - } - boolean draw = super.drawChild(canvas, child, drawingTime); - if (index == 0 && isInPreviewMode() && blurredBackFragmentForPreview != null) { - canvas.save(); - - if (previewFragmentSnapshot != null) { - blurPaint.setAlpha((int) (0xFF * (1f - Math.min(previewExpandProgress, 1f)))); - } else { - blurPaint.setAlpha((int) (0xFF * (1f - Math.max(swipeProgress, 0f)))); - } - - canvas.scale(child.getWidth() / (float)blurredBackFragmentForPreview.getWidth(), child.getHeight() / (float)blurredBackFragmentForPreview.getHeight()); - canvas.drawBitmap(blurredBackFragmentForPreview, 0, 0, blurPaint); - canvas.restore(); - } - if (clipBackground) { - canvas.restore(); - } - return draw; - } - - @Override - public void drawCurrentPreviewFragment(Canvas canvas, Drawable foregroundDrawable) { - if (isInPreviewMode()) { - FragmentHolderView v = getForegroundView(); - drawPreviewDrawables(canvas, v); - if (v.getAlpha() < 1f) { - canvas.saveLayerAlpha(0, 0, getWidth(), getHeight(), (int) (v.getAlpha() * 255), Canvas.ALL_SAVE_FLAG); - } else { - canvas.save(); - } - canvas.concat(v.getMatrix()); - MarginLayoutParams params = (MarginLayoutParams) v.getLayoutParams(); - canvas.translate(params.leftMargin, params.topMargin); - path.rewind(); - AndroidUtilities.rectTmp.set(0, previewExpandProgress != 0 ? 0 : AndroidUtilities.statusBarHeight, v.getWidth(), v.getHeight()); - path.addRoundRect(AndroidUtilities.rectTmp, AndroidUtilities.dp(8), AndroidUtilities.dp(8), Path.Direction.CW); - canvas.clipPath(path); - v.draw(canvas); - if (foregroundDrawable != null) { - View child = v.getChildAt(0); - if (child != null) { - MarginLayoutParams lp = (MarginLayoutParams) child.getLayoutParams(); - Rect rect = new Rect(); - child.getLocalVisibleRect(rect); - rect.offset(lp.leftMargin, lp.topMargin); - rect.top += Build.VERSION.SDK_INT >= 21 ? AndroidUtilities.statusBarHeight - 1 : 0; - foregroundDrawable.setAlpha((int) (v.getAlpha() * 255)); - foregroundDrawable.setBounds(rect); - foregroundDrawable.draw(canvas); - } - } - canvas.restore(); - } - } - - private void drawPreviewDrawables(Canvas canvas, ViewGroup containerView) { - View view = containerView.getChildAt(0); - if (view != null) { - MarginLayoutParams params = (MarginLayoutParams) containerView.getLayoutParams(); - - float alpha = 1f - Math.max(swipeProgress, 0); - if (previewFragmentSnapshot != null) { - alpha = 1f - Math.min(previewExpandProgress, 1f); - } - canvas.drawColor(Color.argb((int)(0x2e * alpha), 0, 0, 0)); - if (previewMenu == null) { - int width = AndroidUtilities.dp(32), height = width / 2; - int x = (getMeasuredWidth() - width) / 2; - int y = (int) (params.topMargin + containerView.getTranslationY() - AndroidUtilities.dp(12 + (Build.VERSION.SDK_INT < 21 ? 20 : 0))); - Theme.moveUpDrawable.setAlpha((int) (alpha * 0xFF)); - Theme.moveUpDrawable.setBounds(x, y, x + width, y + height); - Theme.moveUpDrawable.draw(canvas); - } - } - } - - @Override - public void drawHeaderShadow(Canvas canvas, int alpha, int y) { - if (headerShadowDrawable != null) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - if (headerShadowDrawable.getAlpha() != alpha) { - headerShadowDrawable.setAlpha(alpha); - } - } else { - headerShadowDrawable.setAlpha(alpha); - } - headerShadowDrawable.setBounds(0, y, getMeasuredWidth(), y + headerShadowDrawable.getIntrinsicHeight()); - headerShadowDrawable.draw(canvas); - } - } - - @Override - public boolean isSwipeInProgress() { - return isSwipeInProgress; - } - - @Override - public void onPause() { - BaseFragment fragment = getLastFragment(); - if (fragment != null) { - fragment.setPaused(true); - } - } - - @Override - public void onResume() { - BaseFragment fragment = getLastFragment(); - if (fragment != null) { - fragment.setPaused(false); - } - } - - @Override - public void onUserLeaveHint() { - BaseFragment fragment = getLastFragment(); - if (fragment != null) { - fragment.onUserLeaveHint(); - } - } - - @Override - public void onLowMemory() { - for (BaseFragment fragment : fragmentStack) { - fragment.onLowMemory(); - } - } - - @Override - public void onBackPressed() { - if (isSwipeInProgress() || checkTransitionAnimation() || fragmentStack.isEmpty()) { - return; - } - if (GroupCallPip.onBackPressed()) { - return; - } - if (getCurrentActionBar() != null && !getCurrentActionBar().isActionModeShowed() && getCurrentActionBar().isSearchFieldVisible()) { - getCurrentActionBar().closeSearchField(); - return; - } - BaseFragment lastFragment = getLastFragment(); - if (lastFragment.onBackPressed()) { - closeLastFragment(true); - } - } - - @Override - public boolean extendActionMode(Menu menu) { - BaseFragment lastFragment = getLastFragment(); - return lastFragment != null && lastFragment.extendActionMode(menu); - } - - @Override - public void onActionModeStarted(Object mode) { - if (getCurrentActionBar() != null) { - getCurrentActionBar().setVisibility(GONE); - } - isInActionMode = true; - } - - @Override - public void onActionModeFinished(Object mode) { - if (getCurrentActionBar() != null) { - getCurrentActionBar().setVisibility(VISIBLE); - } - isInActionMode = false; - } - - @Override - public void startActivityForResult(Intent intent, int requestCode) { - Activity parentActivity = getParentActivity(); - if (parentActivity == null) { - return; - } - // Maybe reset current animation? - - if (intent != null) { - parentActivity.startActivityForResult(intent, requestCode); - } - } - - @Override - public Theme.MessageDrawable getMessageDrawableOutStart() { - return messageDrawableOutStart; - } - - @Override - public Theme.MessageDrawable getMessageDrawableOutMediaStart() { - return messageDrawableOutMediaStart; - } - - @Override - public List getPulledDialogs() { - return pulledDialogs; - } - - @Override - public void setPulledDialogs(List pulledDialogs) { - this.pulledDialogs = pulledDialogs; - } - - @Override - public boolean onKeyUp(int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_MENU && !checkTransitionAnimation() && !isSwipeInProgress() && getCurrentActionBar() != null) { - getCurrentActionBar().onMenuButtonPressed(); - } - return super.onKeyUp(keyCode, event); - } - - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - super.onMeasure(widthMeasureSpec, heightMeasureSpec); - - int width = MeasureSpec.getSize(widthMeasureSpec); - int height = MeasureSpec.getSize(heightMeasureSpec); - - boolean isPortrait = height > width; - if (wasPortrait != isPortrait && isInPreviewMode()) { - finishPreviewFragment(); - } - wasPortrait = isPortrait; - } - - private final class FragmentHolderView extends FrameLayout { - private BaseFragment fragment; - private int fragmentPanTranslationOffset; - private Paint backgroundPaint = new Paint(); - private int backgroundColor; - - public FragmentHolderView(@NonNull Context context) { - super(context); - setWillNotDraw(false); - } - - public void invalidateBackgroundColor() { - if (fragment == null || fragment.hasOwnBackground()) { - setBackground(null); - } else { - setBackgroundColor(fragment.getThemedColor(Theme.key_windowBackgroundWhite)); - } - } - - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - int width = MeasureSpec.getSize(widthMeasureSpec); - int height = MeasureSpec.getSize(heightMeasureSpec); - - int actionBarHeight = 0; - for (int i = 0; i < getChildCount(); i++) { - View child = getChildAt(i); - if (child instanceof ActionBar) { - child.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); - actionBarHeight = child.getMeasuredHeight(); - } - } - for (int i = 0; i < getChildCount(); i++) { - View child = getChildAt(i); - if (!(child instanceof ActionBar)) { - if (child.getFitsSystemWindows()) { - measureChildWithMargins(child, widthMeasureSpec, 0, heightMeasureSpec, 0); - } else { - measureChildWithMargins(child, widthMeasureSpec, 0, heightMeasureSpec, actionBarHeight); - } - } - } - setMeasuredDimension(width, height); - } - - @Override - protected void onLayout(boolean changed, int left, int top, int right, int bottom) { - int actionBarHeight = 0; - for (int i = 0; i < getChildCount(); i++) { - View child = getChildAt(i); - if (child instanceof ActionBar) { - child.layout(0, 0, child.getMeasuredWidth(), child.getMeasuredHeight()); - actionBarHeight = child.getMeasuredHeight(); - } - } - for (int i = 0; i < getChildCount(); i++) { - View child = getChildAt(i); - if (!(child instanceof ActionBar)) { - FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) child.getLayoutParams(); - if (child.getFitsSystemWindows()) { - child.layout(layoutParams.leftMargin, layoutParams.topMargin, layoutParams.leftMargin + child.getMeasuredWidth(), layoutParams.topMargin + child.getMeasuredHeight()); - } else { - child.layout(layoutParams.leftMargin, layoutParams.topMargin + actionBarHeight, layoutParams.leftMargin + child.getMeasuredWidth(), layoutParams.topMargin + actionBarHeight + child.getMeasuredHeight()); - } - } - } - } - - public void setFragmentPanTranslationOffset(int fragmentPanTranslationOffset) { - this.fragmentPanTranslationOffset = fragmentPanTranslationOffset; - invalidate(); - } - - @Override - protected void onDraw(Canvas canvas) { - super.onDraw(canvas); - if (fragmentPanTranslationOffset != 0) { - int color = Theme.getColor(Theme.key_windowBackgroundWhite); - if (backgroundColor != color) { - backgroundPaint.setColor(backgroundColor = Theme.getColor(Theme.key_windowBackgroundWhite)); - } - canvas.drawRect(0, getMeasuredHeight() - fragmentPanTranslationOffset - 3, getMeasuredWidth(), getMeasuredHeight(), backgroundPaint); - } - } - - @Override - protected void dispatchDraw(Canvas canvas) { - super.dispatchDraw(canvas); - fragment.drawOverlay(canvas, this); - } - - @Override - protected boolean drawChild(Canvas canvas, View child, long drawingTime) { - if (child instanceof ActionBar) { - return super.drawChild(canvas, child, drawingTime); - } else { - int actionBarHeight = 0; - int actionBarY = 0; - int childCount = getChildCount(); - for (int i = 0; i < childCount; i++) { - View view = getChildAt(i); - if (view == child) { - continue; - } - if (view instanceof ActionBar && view.getVisibility() == VISIBLE) { - if (((ActionBar) view).getCastShadows()) { - actionBarHeight = (int) (view.getMeasuredHeight() * view.getScaleY()); - actionBarY = (int) view.getY(); - } - break; - } - } - - boolean clipRoundForeground = indexOfChild(child) == 0 && fragment.isInPreviewMode(); - if (clipRoundForeground) { - canvas.save(); - path.rewind(); - AndroidUtilities.rectTmp.set(child.getLeft(), child.getTop() + AndroidUtilities.statusBarHeight, child.getRight(), child.getBottom()); - path.addRoundRect(AndroidUtilities.rectTmp, AndroidUtilities.dp(8), AndroidUtilities.dp(8), Path.Direction.CW); - canvas.clipPath(path); - } - boolean result = super.drawChild(canvas, child, drawingTime); - if (clipRoundForeground) { - canvas.restore(); - } - if (actionBarHeight != 0 && headerShadowDrawable != null) { - headerShadowDrawable.setBounds(0, actionBarY + actionBarHeight, getMeasuredWidth(), actionBarY + actionBarHeight + headerShadowDrawable.getIntrinsicHeight()); - headerShadowDrawable.draw(canvas); - } - return result; - } - } - - public void setFragment(BaseFragment fragment) { - this.fragment = fragment; - fragmentPanTranslationOffset = 0; - invalidate(); - - removeAllViews(); - - if (fragment == null || getContext() == null) { - invalidateBackgroundColor(); - return; - } - - View v = fragment.getFragmentView(); - if (v == null) { - v = fragment.createView(getContext()); - fragment.setFragmentView(v); - } - if (v != null && v.getParent() instanceof ViewGroup) { - ((ViewGroup) v.getParent()).removeView(v); - } - addView(v); - - if (removeActionBarExtraHeight) { - fragment.getActionBar().setOccupyStatusBar(false); - } - if (fragment.getActionBar() != null && fragment.getActionBar().shouldAddToContainer()) { - ViewGroup parent = (ViewGroup) fragment.getActionBar().getParent(); - if (parent != null) { - parent.removeView(fragment.getActionBar()); - } - addView(fragment.getActionBar()); - } - - invalidateBackgroundColor(); - } - } - - private boolean isIgnoredView(ViewGroup root, MotionEvent e, Rect rect) { - if (root == null) return false; - for (int i = 0; i < root.getChildCount(); i++) { - View ch = root.getChildAt(i); - if (isIgnoredView0(ch, e, rect)) { - return true; - } - - if (ch instanceof ViewGroup) { - if (isIgnoredView((ViewGroup) ch, e, rect)) { - return true; - } - } - } - return isIgnoredView0(root, e, rect); - } - - private boolean isIgnoredView0(View v, MotionEvent e, Rect rect) { - v.getGlobalVisibleRect(rect); - if (v.getVisibility() != View.VISIBLE || !rect.contains((int)e.getX(), (int)e.getY())) { - return false; - } - - if (v instanceof ViewPager) { - ViewPager vp = (ViewPager) v; - return vp.getCurrentItem() != 0; - } - - return v.canScrollHorizontally(-1) || v instanceof SeekBarView; - } -} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LanguageSelectActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LanguageSelectActivity.java index 9ae65f337..b5b50a121 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LanguageSelectActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LanguageSelectActivity.java @@ -260,7 +260,7 @@ public class LanguageSelectActivity extends BaseFragment implements Notification if (!sameLang) { progressDialog.showDelayed(500); } - int reqId = LocaleController.getInstance().applyLanguage(localeInfo, true, false, false, true, true, currentAccount, () -> { + int reqId = LocaleController.getInstance().applyLanguage(localeInfo, true, false, false, true, currentAccount, () -> { progressDialog.dismiss(); if (!sameLang) { AndroidUtilities.runOnUIThread(() -> { @@ -344,7 +344,7 @@ public class LanguageSelectActivity extends BaseFragment implements Notification showDialog(alertDialog); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } catch (Exception e) { FileLog.e(e); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java index e34535483..d1e102f76 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java @@ -27,6 +27,7 @@ import android.content.res.Configuration; import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.Canvas; +import android.graphics.Color; import android.graphics.LinearGradient; import android.graphics.Matrix; import android.graphics.Paint; @@ -104,6 +105,7 @@ import org.telegram.messenger.FileLog; import org.telegram.messenger.FingerprintController; import org.telegram.messenger.GenericProvider; import org.telegram.messenger.ImageLoader; +import org.telegram.messenger.LiteMode; import org.telegram.messenger.LocaleController; import org.telegram.messenger.LocationController; import org.telegram.messenger.MediaController; @@ -146,7 +148,9 @@ import org.telegram.ui.Components.AnimatedEmojiDrawable; import org.telegram.ui.Components.AppIconBulletinLayout; import org.telegram.ui.Components.AttachBotIntroTopView; import org.telegram.ui.Components.AudioPlayerAlert; +import org.telegram.ui.Components.BatteryDrawable; import org.telegram.ui.Components.BlockingUpdateView; +import org.telegram.ui.Components.BotWebViewSheet; import org.telegram.ui.Components.Bulletin; import org.telegram.ui.Components.BulletinFactory; import org.telegram.ui.Components.CubicBezierInterpolator; @@ -737,6 +741,7 @@ public class LaunchActivity extends BasePermissionsActivity implements INavigati NotificationCenter.getGlobalInstance().addObserver(this, NotificationCenter.appUpdateAvailable); NotificationCenter.getGlobalInstance().addObserver(this, NotificationCenter.requestPermissions); NotificationCenter.getInstance(currentAccount).addObserver(this, NotificationCenter.currentUserPremiumStatusChanged); + LiteMode.addOnPowerSaverAppliedListener(this::onPowerSaver); if (actionBarLayout.getFragmentStack().isEmpty()) { if (!UserConfig.getInstance(currentAccount).isClientActivated()) { actionBarLayout.addFragmentToStack(getClientNotActivatedFragment()); @@ -1937,6 +1942,8 @@ public class LaunchActivity extends BasePermissionsActivity implements INavigati String emoji = null; HashMap auth = null; String unsupportedUrl = null; + String botAppMaybe = null; + String startApp = null; String botUser = null; String botChat = null; String botChannel = null; @@ -2136,6 +2143,7 @@ public class LaunchActivity extends BasePermissionsActivity implements INavigati } else if (path.startsWith("contact/")) { contactToken = path.substring(8); } else if (path.length() >= 1) { + botAppMaybe = null; ArrayList segments = new ArrayList<>(data.getPathSegments()); if (segments.size() > 0 && segments.get(0).equals("s")) { segments.remove(0); @@ -2143,8 +2151,14 @@ public class LaunchActivity extends BasePermissionsActivity implements INavigati if (segments.size() > 0) { username = segments.get(0); if (segments.size() > 1) { - messageId = Utilities.parseInt(segments.get(1)); - if (messageId == 0) { + botAppMaybe = segments.get(1); + startApp = data.getQueryParameter("startapp"); + try { + messageId = Utilities.parseInt(segments.get(1)); + if (messageId == 0) { + messageId = null; + } + } catch (NumberFormatException ignored) { messageId = null; } } @@ -2205,6 +2219,8 @@ public class LaunchActivity extends BasePermissionsActivity implements INavigati username = username.substring(1); } } + botAppMaybe = data.getQueryParameter("appname"); + startApp = data.getQueryParameter("startapp"); if ("telegrampassport".equals(username)) { username = null; auth = new HashMap<>(); @@ -2577,7 +2593,7 @@ public class LaunchActivity extends BasePermissionsActivity implements INavigati if (message != null && message.startsWith("@")) { message = " " + message; } - runLinkRequest(intentAccount[0], username, group, sticker, emoji, botUser, botChat, botChannel, botChatAdminParams, message, contactToken, hasUrl, messageId, channelId, threadId, commentId, game, auth, lang, unsupportedUrl, code, login, wallPaper, inputInvoiceSlug, theme, voicechat, livestream, 0, videoTimestamp, setAsAttachBot, attachMenuBotToOpen, attachMenuBotChoose, progress); + runLinkRequest(intentAccount[0], username, group, sticker, emoji, botUser, botChat, botChannel, botChatAdminParams, message, contactToken, hasUrl, messageId, channelId, threadId, commentId, game, auth, lang, unsupportedUrl, code, login, wallPaper, inputInvoiceSlug, theme, voicechat, livestream, 0, videoTimestamp, setAsAttachBot, attachMenuBotToOpen, attachMenuBotChoose, botAppMaybe, startApp, progress); } else { try (Cursor cursor = getContentResolver().query(intent.getData(), null, null, null, null)) { if (cursor != null) { @@ -3358,9 +3374,11 @@ public class LaunchActivity extends BasePermissionsActivity implements INavigati final String setAsAttachBot, final String attachMenuBotToOpen, final String attachMenuBotChoose, + final String botAppMaybe, + final String botAppStartParam, final Browser.Progress progress) { if (state == 0 && ChatActivity.SCROLL_DEBUG_DELAY && progress != null) { - Runnable runnable = () -> runLinkRequest(intentAccount, username, group, sticker, emoji, botUser, botChat, botChannel, botChatAdminParams, message, contactToken, hasUrl, messageId, channelId, threadId, commentId, game, auth, lang, unsupportedUrl, code, loginToken, wallPaper, inputInvoiceSlug, theme, voicechat, livestream, 1, videoTimestamp, setAsAttachBot, attachMenuBotToOpen, attachMenuBotChoose, progress); + Runnable runnable = () -> runLinkRequest(intentAccount, username, group, sticker, emoji, botUser, botChat, botChannel, botChatAdminParams, message, contactToken, hasUrl, messageId, channelId, threadId, commentId, game, auth, lang, unsupportedUrl, code, loginToken, wallPaper, inputInvoiceSlug, theme, voicechat, livestream, 1, videoTimestamp, setAsAttachBot, attachMenuBotToOpen, attachMenuBotChoose, botAppMaybe, botAppStartParam, progress); progress.init(); progress.onCancel(() -> AndroidUtilities.cancelRunOnUIThread(runnable)); AndroidUtilities.runOnUIThread(runnable, 7500); @@ -3370,7 +3388,7 @@ public class LaunchActivity extends BasePermissionsActivity implements INavigati if (account != intentAccount) { switchToAccount(account, true); } - runLinkRequest(account, username, group, sticker, emoji, botUser, botChat, botChannel, botChatAdminParams, message, contactToken, hasUrl, messageId, channelId, threadId, commentId, game, auth, lang, unsupportedUrl, code, loginToken, wallPaper, inputInvoiceSlug, theme, voicechat, livestream, 1, videoTimestamp, setAsAttachBot, attachMenuBotToOpen, attachMenuBotChoose, progress); + runLinkRequest(account, username, group, sticker, emoji, botUser, botChat, botChannel, botChatAdminParams, message, contactToken, hasUrl, messageId, channelId, threadId, commentId, game, auth, lang, unsupportedUrl, code, loginToken, wallPaper, inputInvoiceSlug, theme, voicechat, livestream, 1, videoTimestamp, setAsAttachBot, attachMenuBotToOpen, attachMenuBotChoose, botAppMaybe, botAppStartParam, progress); }).show(); return; } else if (code != null) { @@ -3482,6 +3500,66 @@ public class LaunchActivity extends BasePermissionsActivity implements INavigati MessagesController.getInstance(intentAccount).putUsers(res.users, false); MessagesController.getInstance(intentAccount).putChats(res.chats, false); MessagesStorage.getInstance(intentAccount).putUsersAndChats(res.users, res.chats, false, true); + + if (!TextUtils.isEmpty(botAppMaybe)) { + TLRPC.User user = MessagesController.getInstance(intentAccount).getUser(res.peer.user_id); + if (user != null && user.bot) { + TLRPC.TL_messages_getBotApp getBotApp = new TLRPC.TL_messages_getBotApp(); + TLRPC.TL_inputBotAppShortName app = new TLRPC.TL_inputBotAppShortName(); + app.bot_id = MessagesController.getInstance(currentAccount).getInputUser(user); + app.short_name = botAppMaybe; + getBotApp.app = app; + ConnectionsManager.getInstance(currentAccount).sendRequest(getBotApp, (response1, error1) -> { + if (error1 != null) { + AndroidUtilities.runOnUIThread(()-> runLinkRequest(currentAccount, username, group, sticker, emoji, botUser, botChat, botChannel, botChatAdminParams, message, contactToken, hasUrl, messageId, channelId, threadId, commentId, game, auth, lang, unsupportedUrl, code, loginToken, wallPaper, inputInvoiceSlug, theme, voicechat, livestream, state, videoTimestamp, setAsAttachBot, attachMenuBotToOpen, attachMenuBotChoose, null, null, progress)); + } else { + TLRPC.TL_messages_botApp botApp = (TLRPC.TL_messages_botApp) response1; + AndroidUtilities.runOnUIThread(()->{ + dismissLoading.run(); + + AtomicBoolean allowWrite = new AtomicBoolean(); + BaseFragment lastFragment = mainFragmentsStack.get(mainFragmentsStack.size() - 1); + Runnable loadBotSheet = ()->{ + BotWebViewSheet sheet = new BotWebViewSheet(LaunchActivity.this, lastFragment.getResourceProvider()); + sheet.setParentActivity(LaunchActivity.this); + sheet.requestWebView(currentAccount, user.id, user.id, null, null, BotWebViewSheet.TYPE_WEB_VIEW_BOT_APP, 0, false, lastFragment, botApp.app, allowWrite.get(), botAppStartParam, user); + sheet.show(); + }; + + if (botApp.inactive) { + AlertDialog.Builder builder = new AlertDialog.Builder(LaunchActivity.this) + .setTopAnimation(R.raw.permission_request_apk, AlertsCreator.PERMISSIONS_REQUEST_TOP_ICON_SIZE, false, Theme.getColor(Theme.key_dialogTopBackground)) + .setMessage(AndroidUtilities.replaceTags(LocaleController.formatString(R.string.BotStartAppPermission, botApp.app.title, UserObject.getUserName(user)))) + .setPositiveButton(LocaleController.getString(R.string.Start), (dialog, which) -> loadBotSheet.run()) + .setNegativeButton(LocaleController.getString(R.string.Cancel), null); + + if (botApp.request_write_access) { + allowWrite.set(true); + + CheckBoxCell cell = new CheckBoxCell(LaunchActivity.this, 5, lastFragment.getResourceProvider()); + cell.setBackground(Theme.getSelectorDrawable(false)); + cell.setMultiline(true); + cell.setText(AndroidUtilities.replaceTags(LocaleController.formatString("OpenUrlOption2", R.string.OpenUrlOption2, UserObject.getUserName(user))), "", true, false); + cell.setPadding(LocaleController.isRTL ? AndroidUtilities.dp(16) : AndroidUtilities.dp(8), 0, LocaleController.isRTL ? AndroidUtilities.dp(8) : AndroidUtilities.dp(16), 0); + cell.setOnClickListener(v -> { + boolean allow = !cell.isChecked(); + cell.setChecked(allow, true); + allowWrite.set(allow); + }); + + builder.setView(cell); + } + builder.show(); + } else { + loadBotSheet.run(); + } + }); + } + }); + return; + } + } + if (setAsAttachBot != null && attachMenuBotToOpen == null) { TLRPC.User user = MessagesController.getInstance(intentAccount).getUser(res.peer.user_id); if (user != null && user.bot) { @@ -3557,7 +3635,7 @@ public class LaunchActivity extends BasePermissionsActivity implements INavigati } } else { AttachBotIntroTopView introTopView = new AttachBotIntroTopView(LaunchActivity.this); - introTopView.setColor(Theme.getColor(Theme.key_chat_attachContactIcon)); + introTopView.setColor(Theme.getColor(Theme.key_chat_attachIcon)); introTopView.setBackgroundColor(Theme.getColor(Theme.key_dialogTopBackground)); introTopView.setAttachBot(attachMenuBot); @@ -4873,7 +4951,10 @@ public class LaunchActivity extends BasePermissionsActivity implements INavigati if (visibleDialog == localeDialog) { try { String shorname = LocaleController.getInstance().getCurrentLocaleInfo().shortName; - Toast.makeText(LaunchActivity.this, getStringForLanguageAlert(shorname.equals("en") ? englishLocaleStrings : systemLocaleStrings, "ChangeLanguageLater", R.string.ChangeLanguageLater), Toast.LENGTH_LONG).show(); + BulletinFactory.of(Bulletin.BulletinWindow.make(LaunchActivity.this), null).createSimpleBulletin( + R.raw.msg_translate, + getStringForLanguageAlert(shorname.equals("en") ? englishLocaleStrings : systemLocaleStrings, "ChangeLanguageLater", R.string.ChangeLanguageLater) + ).setDuration(Bulletin.DURATION_PROLONG).show(); } catch (Exception e) { FileLog.e(e); } @@ -5188,6 +5269,26 @@ public class LaunchActivity extends BasePermissionsActivity implements INavigati NotificationCenter.getGlobalInstance().removeObserver(this, NotificationCenter.showBulletin); NotificationCenter.getGlobalInstance().removeObserver(this, NotificationCenter.appUpdateAvailable); NotificationCenter.getGlobalInstance().removeObserver(this, NotificationCenter.requestPermissions); + + LiteMode.removeOnPowerSaverAppliedListener(this::onPowerSaver); + } + + private void onPowerSaver(boolean applied) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP || actionBarLayout == null || !applied || LiteMode.getPowerSaverLevel() >= 100) { + return; + } + BaseFragment lastFragment = actionBarLayout.getLastFragment(); + if (lastFragment == null || lastFragment instanceof LiteModeSettingsActivity) { + return; + } + int percent = LiteMode.getBatteryLevel(); + BulletinFactory.of(lastFragment).createSimpleBulletin( + new BatteryDrawable(percent / 100F, Color.WHITE, lastFragment.getThemedColor(Theme.key_dialogSwipeRemove), 1.3f), + LocaleController.getString("LowPowerEnabledTitle", R.string.LowPowerEnabledTitle), + LocaleController.formatString("LowPowerEnabledSubtitle", R.string.LowPowerEnabledSubtitle, String.format("%d%%", percent)), + LocaleController.getString("Disable", R.string.Disable), + () -> presentFragment(new LiteModeSettingsActivity()) + ).setDuration(Bulletin.DURATION_PROLONG).show(); } public void presentFragment(INavigationLayout.NavigationParams params) { @@ -6056,13 +6157,13 @@ public class LaunchActivity extends BasePermissionsActivity implements INavigati switch (type) { case Bulletin.TYPE_NAME_CHANGED: { long peerId = (long) args[1]; - String text = peerId > 0 ? LocaleController.getString("YourNameChanged", R.string.YourNameChanged) : LocaleController.getString("CannelTitleChanged", R.string.ChannelTitleChanged); + String text = peerId > 0 ? LocaleController.getString("YourNameChanged", R.string.YourNameChanged) : LocaleController.getString("ChannelTitleChanged", R.string.ChannelTitleChanged); (container != null ? BulletinFactory.of(container, null) : BulletinFactory.of(fragment)).createErrorBulletin(text).show(); break; } case Bulletin.TYPE_BIO_CHANGED: { long peerId = (long) args[1]; - String text = peerId > 0 ? LocaleController.getString("YourBioChanged", R.string.YourBioChanged) : LocaleController.getString("CannelDescriptionChanged", R.string.ChannelDescriptionChanged); + String text = peerId > 0 ? LocaleController.getString("YourBioChanged", R.string.YourBioChanged) : LocaleController.getString("ChannelDescriptionChanged", R.string.ChannelDescriptionChanged); (container != null ? BulletinFactory.of(container, null) : BulletinFactory.of(fragment)).createErrorBulletin(text).show(); break; } @@ -6274,6 +6375,7 @@ public class LaunchActivity extends BasePermissionsActivity implements INavigati private boolean checkFreeDiscSpaceShown; private long alreadyShownFreeDiscSpaceAlertForced; + private long lastSpaceAlert; private static LaunchActivity staticInstanceForAlerts; private void checkFreeDiscSpace(final int force) { staticInstanceForAlerts = this; @@ -6288,7 +6390,7 @@ public class LaunchActivity extends BasePermissionsActivity implements INavigati } try { SharedPreferences preferences = MessagesController.getGlobalMainSettings(); - if (force == 2 || force == 1 && Math.abs(alreadyShownFreeDiscSpaceAlertForced - System.currentTimeMillis()) > 1000 * 60 * 4 || Math.abs(preferences.getLong("last_space_check", 0) - System.currentTimeMillis()) >= 3 * 24 * 3600 * 1000) { + if ((force == 2 || force == 1) && Math.abs(alreadyShownFreeDiscSpaceAlertForced - System.currentTimeMillis()) > 1000 * 60 * 4 || Math.abs(preferences.getLong("last_space_check", 0) - System.currentTimeMillis()) >= 3 * 24 * 3600 * 1000) { File path = FileLoader.getDirectory(FileLoader.MEDIA_DIR_CACHE); if (path == null) { return; @@ -6833,7 +6935,7 @@ public class LaunchActivity extends BasePermissionsActivity implements INavigati } } try { - super.dispatchKeyEvent(event); + return super.dispatchKeyEvent(event); } catch (Exception e) { FileLog.e(e); } @@ -7118,4 +7220,12 @@ public class LaunchActivity extends BasePermissionsActivity implements INavigati } drawerLayoutAdapter.notifyDataSetChanged(); } + + public static BaseFragment getLastFragment() { + if (instance != null && instance.getActionBarLayout() != null) { + return instance.getActionBarLayout().getLastFragment(); + } + return null; + } + } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LiteModeSettingsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LiteModeSettingsActivity.java index 3cf1e89c2..d78fa847e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LiteModeSettingsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LiteModeSettingsActivity.java @@ -1,32 +1,59 @@ package org.telegram.ui; +import static org.telegram.messenger.AndroidUtilities.dp; +import static org.telegram.messenger.AndroidUtilities.dpf2; + +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.ValueAnimator; import android.content.Context; import android.content.SharedPreferences; import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.ColorFilter; +import android.graphics.Paint; +import android.graphics.Path; +import android.graphics.PixelFormat; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; +import android.graphics.RectF; +import android.graphics.drawable.ColorDrawable; +import android.graphics.drawable.Drawable; import android.os.Build; +import android.text.SpannableString; +import android.text.SpannableStringBuilder; +import android.text.Spanned; import android.text.TextUtils; +import android.text.style.DynamicDrawableSpan; +import android.text.style.ImageSpan; import android.util.TypedValue; import android.view.Gravity; +import android.view.HapticFeedbackConstants; import android.view.View; import android.view.ViewGroup; +import android.view.accessibility.AccessibilityNodeInfo; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.graphics.ColorUtils; import androidx.recyclerview.widget.DefaultItemAnimator; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.google.android.exoplayer2.extractor.mkv.MatroskaExtractor; +import com.google.zxing.common.detector.MathUtils; + import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.LiteMode; import org.telegram.messenger.LocaleController; import org.telegram.messenger.MessagesController; import org.telegram.messenger.R; import org.telegram.messenger.SharedConfig; +import org.telegram.messenger.Utilities; import org.telegram.ui.ActionBar.ActionBar; import org.telegram.ui.ActionBar.BaseFragment; import org.telegram.ui.ActionBar.Theme; @@ -36,15 +63,22 @@ import org.telegram.ui.Cells.TextCheckCell; import org.telegram.ui.Cells.TextInfoPrivacyCell; import org.telegram.ui.Components.AnimatedEmojiDrawable; import org.telegram.ui.Components.AnimatedTextView; +import org.telegram.ui.Components.BatteryDrawable; +import org.telegram.ui.Components.Bulletin; +import org.telegram.ui.Components.BulletinFactory; import org.telegram.ui.Components.CheckBox2; import org.telegram.ui.Components.CubicBezierInterpolator; import org.telegram.ui.Components.LayoutHelper; import org.telegram.ui.Components.ListView.AdapterWithDiffUtils; import org.telegram.ui.Components.RecyclerListView; +import org.telegram.ui.Components.SeekBarView; import org.telegram.ui.Components.SlideChooseView; +import org.telegram.ui.Components.SlideView; +import org.telegram.ui.Components.SpannableStringLight; import org.telegram.ui.Components.Switch; import java.util.ArrayList; +import java.util.Locale; public class LiteModeSettingsActivity extends BaseFragment { @@ -54,6 +88,8 @@ public class LiteModeSettingsActivity extends BaseFragment { LinearLayoutManager layoutManager; Adapter adapter; + Bulletin restrictBulletin; + @Override public View createView(Context context) { actionBar.setBackButtonImage(R.drawable.ic_ab_back); @@ -88,7 +124,11 @@ public class LiteModeSettingsActivity extends BaseFragment { final Item item = items.get(position); if (item.viewType == VIEW_TYPE_SWITCH || item.viewType == VIEW_TYPE_CHECKBOX) { - if (item.viewType == VIEW_TYPE_SWITCH && item.getFlagsCount() > 1 && (LocaleController.isRTL ? x > AndroidUtilities.dp(19 + 37 + 19) : x < view.getMeasuredWidth() - AndroidUtilities.dp(19 + 37 + 19))) { + if (LiteMode.isPowerSaverApplied()) { + restrictBulletin = BulletinFactory.of(this).createSimpleBulletin(new BatteryDrawable(.1f, Color.WHITE, Theme.getColor(Theme.key_dialogSwipeRemove), 1.3f), LocaleController.getString("LiteBatteryRestricted", R.string.LiteBatteryRestricted)).show(); + return; + } + if (item.viewType == VIEW_TYPE_SWITCH && item.getFlagsCount() > 1 && (LocaleController.isRTL ? x > dp(19 + 37 + 19) : x < view.getMeasuredWidth() - dp(19 + 37 + 19))) { int index = getExpandedIndex(item.flags); if (index != -1) { expanded[index] = !expanded[index]; @@ -109,12 +149,8 @@ public class LiteModeSettingsActivity extends BaseFragment { SharedConfig.setAnimationsEnabled(!animations); editor.commit(); ((TextCell) view).setChecked(!animations); - } else if (item.type == SWITCH_TYPE_LOW_BATTERY) { - LiteMode.setPowerSaverEnabled(!LiteMode.isPowerSaverEnabled()); - ((TextCell) view).setChecked(LiteMode.isPowerSaverEnabled()); } } - }); fragmentView = contentView; @@ -124,6 +160,20 @@ public class LiteModeSettingsActivity extends BaseFragment { return fragmentView; } + @Override + public void onBecomeFullyVisible() { + super.onBecomeFullyVisible(); + LiteMode.addOnPowerSaverAppliedListener(onPowerAppliedChange); + } + + @Override + public void onBecomeFullyHidden() { + super.onBecomeFullyHidden(); + LiteMode.removeOnPowerSaverAppliedListener(onPowerAppliedChange); + } + + private Utilities.Callback onPowerAppliedChange = applied -> updateValues(); + private boolean[] expanded = new boolean[3]; private int getExpandedIndex(int flags) { if (flags == LiteMode.FLAGS_ANIMATED_STICKERS) { @@ -145,17 +195,24 @@ public class LiteModeSettingsActivity extends BaseFragment { oldItems.addAll(items); items.clear(); - items.add(Item.asHeader(LocaleController.getString("LitePresetTitle"))); - items.add(Item.asSlider()); - items.add(Item.asInfo(LocaleController.getString("LitePresetInfo"))); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + items.add(Item.asSlider()); + items.add(Item.asInfo( + LiteMode.getPowerSaverLevel() <= 0 ? + LocaleController.getString(R.string.LiteBatteryInfoDisabled) : + LiteMode.getPowerSaverLevel() >= 100 ? + LocaleController.getString(R.string.LiteBatteryInfoEnabled) : + LocaleController.formatString(R.string.LiteBatteryInfoBelow, String.format("%d%%", LiteMode.getPowerSaverLevel())) + )); + } items.add(Item.asHeader(LocaleController.getString("LiteOptionsTitle"))); - items.add(Item.asSwitch(R.drawable.msg2_sticker, LocaleController.getString("AnimatedStickers", R.string.AnimatedStickers), LiteMode.FLAGS_ANIMATED_STICKERS)); + items.add(Item.asSwitch(R.drawable.msg2_sticker, LocaleController.getString("LiteOptionsStickers", R.string.LiteOptionsStickers), LiteMode.FLAGS_ANIMATED_STICKERS)); if (expanded[0]) { items.add(Item.asCheckbox(LocaleController.getString("LiteOptionsAutoplayKeyboard"), LiteMode.FLAG_ANIMATED_STICKERS_KEYBOARD)); items.add(Item.asCheckbox(LocaleController.getString("LiteOptionsAutoplayChat"), LiteMode.FLAG_ANIMATED_STICKERS_CHAT)); } - items.add(Item.asSwitch(R.drawable.msg2_smile_status, LocaleController.getString("PremiumPreviewEmoji", R.string.PremiumPreviewEmoji), LiteMode.FLAGS_ANIMATED_EMOJI)); + items.add(Item.asSwitch(R.drawable.msg2_smile_status, LocaleController.getString("LiteOptionsEmoji", R.string.LiteOptionsEmoji), LiteMode.FLAGS_ANIMATED_EMOJI)); if (expanded[1]) { items.add(Item.asCheckbox(LocaleController.getString("LiteOptionsAutoplayKeyboard"), LiteMode.FLAG_ANIMATED_EMOJI_KEYBOARD)); items.add(Item.asCheckbox(LocaleController.getString("LiteOptionsAutoplayReactions"), LiteMode.FLAG_ANIMATED_EMOJI_REACTIONS)); @@ -167,6 +224,7 @@ public class LiteModeSettingsActivity extends BaseFragment { items.add(Item.asCheckbox(LocaleController.getString("LiteOptionsTopics"), LiteMode.FLAG_CHAT_FORUM_TWOCOLUMN)); items.add(Item.asCheckbox(LocaleController.getString("LiteOptionsSpoiler"), LiteMode.FLAG_CHAT_SPOILER)); items.add(Item.asCheckbox(LocaleController.getString("LiteOptionsBlur"), LiteMode.FLAG_CHAT_BLUR)); + items.add(Item.asCheckbox(LocaleController.getString("LiteOptionsScale"), LiteMode.FLAG_CHAT_SCALE)); } items.add(Item.asSwitch(R.drawable.msg2_call_earpiece, LocaleController.getString("LiteOptionsCalls"), LiteMode.FLAG_CALLS_ANIMATIONS)); items.add(Item.asSwitch(R.drawable.msg2_videocall, LocaleController.getString("LiteOptionsAutoplayVideo"), LiteMode.FLAG_AUTOPLAY_VIDEOS)); @@ -176,12 +234,26 @@ public class LiteModeSettingsActivity extends BaseFragment { items.add(Item.asSwitch(LocaleController.getString("LiteSmoothTransitions"), SWITCH_TYPE_SMOOTH_TRANSITIONS)); items.add(Item.asInfo(LocaleController.getString("LiteSmoothTransitionsInfo"))); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - items.add(Item.asSwitch(LocaleController.getString("LitePowerSaver"), SWITCH_TYPE_LOW_BATTERY)); - items.add(Item.asInfo(LocaleController.getString("LitePowerSaverInfo"))); + adapter.setItems(oldItems, items); + } + + private void updateInfo() { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { + return; } - adapter.setItems(oldItems, items); + if (items.isEmpty()) { + updateItems(); + } else if (items.size() >= 2) { + items.set(1, Item.asInfo( + LiteMode.getPowerSaverLevel() <= 0 ? + LocaleController.getString(R.string.LiteBatteryInfoDisabled) : + LiteMode.getPowerSaverLevel() >= 100 ? + LocaleController.getString(R.string.LiteBatteryInfoEnabled) : + LocaleController.formatString(R.string.LiteBatteryInfoBelow, String.format("%d%%", LiteMode.getPowerSaverLevel())) + )); + adapter.notifyItemChanged(1); + } } private void updateValues() { @@ -201,66 +273,13 @@ public class LiteModeSettingsActivity extends BaseFragment { if (item.viewType == VIEW_TYPE_SWITCH || item.viewType == VIEW_TYPE_CHECKBOX) { ((SwitchCell) child).update(item); } else if (item.viewType == VIEW_TYPE_SLIDER) { - updateSlider((SlideChooseView) child); + ((PowerSaverSlider) child).update(); } } - } - private int customIndex = -1; - private int lastCustomSettings; - - private String[] optionsArray; - private String[] optionsArrayFull; - - private void updateSlider(SlideChooseView slideChooseView) { - int selectedPreset = -1; - if (LiteMode.getValue() == LiteMode.PRESET_LOW) { - selectedPreset = 0; - } else if (LiteMode.getValue() == LiteMode.PRESET_MEDIUM) { - selectedPreset = 1; - } else if (LiteMode.getValue() == LiteMode.PRESET_HIGH) { - selectedPreset = 2; - } - if (selectedPreset != -1) { - customIndex = -1; - if (optionsArray == null) { - optionsArray = new String[] { - LocaleController.getString("AutoDownloadLow", R.string.AutoDownloadLow), - LocaleController.getString("AutoDownloadMedium", R.string.AutoDownloadMedium), - LocaleController.getString("AutoDownloadHigh", R.string.AutoDownloadHigh) - }; - } - slideChooseView.setOptions(selectedPreset, optionsArray); - } else if (Integer.bitCount(LiteMode.getValue()) <= Integer.bitCount(LiteMode.PRESET_MEDIUM)) { - customIndex = 1; - lastCustomSettings = LiteMode.getValue(); - if (optionsArrayFull == null) { - optionsArrayFull = new String[] { - LocaleController.getString("AutoDownloadLow", R.string.AutoDownloadLow), - LocaleController.getString("AutoDownloadCustom", R.string.AutoDownloadCustom), - LocaleController.getString("AutoDownloadMedium", R.string.AutoDownloadMedium), - LocaleController.getString("AutoDownloadHigh", R.string.AutoDownloadHigh) - }; - } else { - optionsArrayFull[1] = LocaleController.getString("AutoDownloadCustom", R.string.AutoDownloadCustom); - optionsArrayFull[2] = LocaleController.getString("AutoDownloadMedium", R.string.AutoDownloadMedium); - } - slideChooseView.setOptions(1, optionsArrayFull); - } else { - customIndex = 2; - lastCustomSettings = LiteMode.getValue(); - if (optionsArrayFull == null) { - optionsArrayFull = new String[] { - LocaleController.getString("AutoDownloadLow", R.string.AutoDownloadLow), - LocaleController.getString("AutoDownloadMedium", R.string.AutoDownloadMedium), - LocaleController.getString("AutoDownloadCustom", R.string.AutoDownloadCustom), - LocaleController.getString("AutoDownloadHigh", R.string.AutoDownloadHigh) - }; - } else { - optionsArrayFull[1] = LocaleController.getString("AutoDownloadMedium", R.string.AutoDownloadMedium); - optionsArrayFull[2] = LocaleController.getString("AutoDownloadCustom", R.string.AutoDownloadCustom); - } - slideChooseView.setOptions(2, optionsArrayFull); + if (restrictBulletin != null && !LiteMode.isPowerSaverApplied()) { + restrictBulletin.hide(); + restrictBulletin = null; } } @@ -272,7 +291,6 @@ public class LiteModeSettingsActivity extends BaseFragment { private static final int VIEW_TYPE_SWITCH2 = 5; private static final int SWITCH_TYPE_SMOOTH_TRANSITIONS = 0; - private static final int SWITCH_TYPE_LOW_BATTERY = 1; private class Adapter extends AdapterWithDiffUtils { @@ -285,23 +303,8 @@ public class LiteModeSettingsActivity extends BaseFragment { view = new HeaderCell(context); view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); } else if (viewType == VIEW_TYPE_SLIDER) { - SlideChooseView slideChooseView = new SlideChooseView(context); - slideChooseView.setCallback(which -> { - if (which == customIndex) { - LiteMode.setAllFlags(lastCustomSettings); - updateValues(); - } else if (which == 0) { - LiteMode.setAllFlags(LiteMode.PRESET_LOW); - updateValues(); - } else if (which == 1 && (customIndex < 0 || customIndex > 1) || which == 2 && customIndex == 1) { - LiteMode.setAllFlags(LiteMode.PRESET_MEDIUM); - updateValues(); - } else if (which == (customIndex < 0 ? 2 : 3)) { - LiteMode.setAllFlags(LiteMode.PRESET_HIGH); - updateValues(); - } - }); - view = slideChooseView; + PowerSaverSlider powerSaverSlider = new PowerSaverSlider(context); + view = powerSaverSlider; view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite)); } else if (viewType == VIEW_TYPE_INFO) { view = new TextInfoPrivacyCell(context); @@ -326,8 +329,9 @@ public class LiteModeSettingsActivity extends BaseFragment { HeaderCell headerCell = (HeaderCell) holder.itemView; headerCell.setText(item.text); } else if (viewType == VIEW_TYPE_SLIDER) { - SlideChooseView slideChooseView = (SlideChooseView) holder.itemView; - updateSlider(slideChooseView); + PowerSaverSlider powerSaverSlider = (PowerSaverSlider) holder.itemView; + powerSaverSlider.update(); +// updateSlider(slideChooseView); } else if (viewType == VIEW_TYPE_INFO) { TextInfoPrivacyCell textInfoPrivacyCell = (TextInfoPrivacyCell) holder.itemView; if (TextUtils.isEmpty(item.text)) { @@ -341,9 +345,9 @@ public class LiteModeSettingsActivity extends BaseFragment { if (top && bottom) { textInfoPrivacyCell.setBackground(Theme.getThemedDrawable(getContext(), R.drawable.greydivider, Theme.key_windowBackgroundGrayShadow)); } else if (top) { - textInfoPrivacyCell.setBackground(Theme.getThemedDrawable(getContext(), R.drawable.greydivider_top, Theme.key_windowBackgroundGrayShadow)); - } else if (bottom) { textInfoPrivacyCell.setBackground(Theme.getThemedDrawable(getContext(), R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow)); + } else if (bottom) { + textInfoPrivacyCell.setBackground(Theme.getThemedDrawable(getContext(), R.drawable.greydivider_top, Theme.key_windowBackgroundGrayShadow)); } else { textInfoPrivacyCell.setBackground(null); } @@ -357,8 +361,6 @@ public class LiteModeSettingsActivity extends BaseFragment { SharedPreferences preferences = MessagesController.getGlobalMainSettings(); boolean animations = preferences.getBoolean("view_animations", true); textCell.setTextAndCheck(item.text, animations, false); - } else if (item.type == SWITCH_TYPE_LOW_BATTERY) { - textCell.setTextAndCheck(item.text, LiteMode.isPowerSaverEnabled(), false); } } } @@ -404,17 +406,26 @@ public class LiteModeSettingsActivity extends BaseFragment { imageView.setVisibility(View.GONE); addView(imageView, LayoutHelper.createFrame(24, 24, Gravity.CENTER_VERTICAL | (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT), 20, 0, 20, 0)); - textView = new TextView(context); + textView = new TextView(context) { + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + if (MeasureSpec.getMode(widthMeasureSpec) == MeasureSpec.AT_MOST) { + widthMeasureSpec = MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(widthMeasureSpec) - AndroidUtilities.dp(52), MeasureSpec.AT_MOST); + } + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + } + }; textView.setLines(1); textView.setSingleLine(true); textView.setEllipsize(TextUtils.TruncateAt.END); textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); textView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); + textView.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); countTextView = new AnimatedTextView(context, false, true, true); countTextView.setAnimationProperties(.35f, 0, 200, CubicBezierInterpolator.EASE_OUT_QUINT); countTextView.setTypeface(AndroidUtilities.getTypeface(AndroidUtilities.TYPEFACE_ROBOTO_MEDIUM)); - countTextView.setTextSize(AndroidUtilities.dp(14)); + countTextView.setTextSize(dp(14)); countTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); arrowView = new ImageView(context); @@ -424,10 +435,17 @@ public class LiteModeSettingsActivity extends BaseFragment { textViewLayout = new LinearLayout(context); textViewLayout.setOrientation(LinearLayout.HORIZONTAL); - textViewLayout.addView(textView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_VERTICAL)); - textViewLayout.addView(countTextView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_VERTICAL, 6, 0, 0, 0)); - textViewLayout.addView(arrowView, LayoutHelper.createLinear(16, 16, Gravity.CENTER_VERTICAL, 2, 0, 0, 0)); - addView(textViewLayout, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_VERTICAL | (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT), 64, 0, 64, 0)); + textViewLayout.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); + if (LocaleController.isRTL) { + textViewLayout.addView(arrowView, LayoutHelper.createLinear(16, 16, 0, Gravity.CENTER_VERTICAL, 0, 0, 6, 0)); + textViewLayout.addView(countTextView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, 0, Gravity.CENTER_VERTICAL, 0, 0, 6, 0)); + textViewLayout.addView(textView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_VERTICAL)); + } else { + textViewLayout.addView(textView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_VERTICAL)); + textViewLayout.addView(countTextView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, 0, Gravity.CENTER_VERTICAL, 6, 0, 0, 0)); + textViewLayout.addView(arrowView, LayoutHelper.createLinear(16, 16, 0, Gravity.CENTER_VERTICAL, 2, 0, 0, 0)); + } + addView(textViewLayout, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_VERTICAL | (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT), 64, 0, 8, 0)); switchView = new Switch(context); switchView.setVisibility(GONE); @@ -441,13 +459,34 @@ public class LiteModeSettingsActivity extends BaseFragment { checkBoxView.setDrawBackgroundAsArc(10); checkBoxView.setVisibility(GONE); addView(checkBoxView, LayoutHelper.createFrame(21, 21, Gravity.CENTER_VERTICAL | (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT), LocaleController.isRTL ? 0 : 64, 0, LocaleController.isRTL ? 64 : 0, 0)); + + setFocusable(true); + } + + private boolean disabled; + public void setDisabled(boolean disabled, boolean animated) { + if (this.disabled != disabled) { + this.disabled = disabled; + if (animated) { + imageView.animate().alpha(disabled ? .5f : 1f).setDuration(220).start(); + textViewLayout.animate().alpha(disabled ? .5f : 1f).setDuration(220).start(); + switchView.animate().alpha(disabled ? .5f : 1f).setDuration(220).start(); + checkBoxView.animate().alpha(disabled ? .5f : 1f).setDuration(220).start(); + } else { + imageView.setAlpha(disabled ? .5f : 1f); + textViewLayout.setAlpha(disabled ? .5f : 1f); + switchView.setAlpha(disabled ? .5f : 1f); + checkBoxView.setAlpha(disabled ? .5f : 1f); + } + setEnabled(!disabled); + } } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure( MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.EXACTLY), - MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(50), MeasureSpec.EXACTLY) + MeasureSpec.makeMeasureSpec(dp(50), MeasureSpec.EXACTLY) ); } @@ -457,8 +496,8 @@ public class LiteModeSettingsActivity extends BaseFragment { imageView.setVisibility(VISIBLE); imageView.setImageResource(item.iconResId); textView.setText(item.text); - if (item.getFlagsCount() > 1) { - countTextView.setText(String.format("%d/%d", Integer.bitCount(LiteMode.getValue() & item.flags), item.getFlagsCount()), false); + if (containing = item.getFlagsCount() > 1) { + updateCount(item, false); countTextView.setVisibility(VISIBLE); arrowView.setVisibility(VISIBLE); } else { @@ -467,52 +506,331 @@ public class LiteModeSettingsActivity extends BaseFragment { } textView.setTranslationX(0); switchView.setVisibility(VISIBLE); - switchView.setChecked(LiteMode.isEnabledSetting(item.flags), false); + switchView.setChecked(LiteMode.isEnabled(item.flags), false); needLine = item.getFlagsCount() > 1; } else { checkBoxView.setVisibility(VISIBLE); - checkBoxView.setChecked(LiteMode.isEnabledSetting(item.flags), false); + checkBoxView.setChecked(LiteMode.isEnabled(item.flags), false); imageView.setVisibility(GONE); switchView.setVisibility(GONE); countTextView.setVisibility(GONE); arrowView.setVisibility(GONE); textView.setText(item.text); - textView.setTranslationX(AndroidUtilities.dp(41)); + textView.setTranslationX(dp(41) * (LocaleController.isRTL ? -2.2f : 1)); + containing = false; needLine = false; } + ((MarginLayoutParams) textViewLayout.getLayoutParams()).rightMargin = AndroidUtilities.dp(item.viewType == VIEW_TYPE_SWITCH ? (LocaleController.isRTL ? 64 : 75) + 4 : 8); + setWillNotDraw(!((needDivider = divider) || needLine)); + setDisabled(LiteMode.isPowerSaverApplied(), false); } public void update(Item item) { if (item.viewType == VIEW_TYPE_SWITCH) { - if (item.getFlagsCount() > 1) { - countTextView.setText(String.format("%d/%d", Integer.bitCount(LiteMode.getValue() & item.flags), item.getFlagsCount()), true); + if (containing = item.getFlagsCount() > 1) { + updateCount(item, true); int index = getExpandedIndex(item.flags); arrowView.clearAnimation(); arrowView.animate().rotation(index >= 0 && expanded[index] ? 180 : 0).setInterpolator(CubicBezierInterpolator.EASE_OUT_QUINT).setDuration(240).start(); } - switchView.setChecked(LiteMode.isEnabledSetting(item.flags), true); + switchView.setChecked(LiteMode.isEnabled(item.flags), true); } else { - checkBoxView.setChecked(LiteMode.isEnabledSetting(item.flags), true); + checkBoxView.setChecked(LiteMode.isEnabled(item.flags), true); } + + setDisabled(LiteMode.isPowerSaverApplied(), true); + } + + private boolean containing; + private int enabled, all; + + private void updateCount(Item item, boolean animated) { + enabled = preprocessFlagsCount(LiteMode.getValue(true) & item.flags); + all = preprocessFlagsCount(item.flags); + countTextView.setText(String.format("%d/%d", enabled, all), animated && !LocaleController.isRTL); + } + + private int preprocessFlagsCount(int flags) { + int count = Integer.bitCount(flags); + count += ((flags & LiteMode.FLAG_ANIMATED_EMOJI_CHAT_NOT_PREMIUM) > 0 ? -1 : 0) + ((flags & LiteMode.FLAG_ANIMATED_EMOJI_CHAT_PREMIUM) > 0 ? -1 : 0) + ((flags & LiteMode.FLAG_ANIMATED_EMOJI_CHAT) > 0 ? +1 : 0); + count += ((flags & LiteMode.FLAG_ANIMATED_EMOJI_REACTIONS_NOT_PREMIUM) > 0 ? -1 : 0) + ((flags & LiteMode.FLAG_ANIMATED_EMOJI_REACTIONS_PREMIUM) > 0 ? -1 : 0) + ((flags & LiteMode.FLAG_ANIMATED_EMOJI_REACTIONS) > 0 ? +1 : 0); + count += ((flags & LiteMode.FLAG_ANIMATED_EMOJI_KEYBOARD_NOT_PREMIUM) > 0 ? -1 : 0) + ((flags & LiteMode.FLAG_ANIMATED_EMOJI_KEYBOARD_PREMIUM) > 0 ? -1 : 0) + ((flags & LiteMode.FLAG_ANIMATED_EMOJI_KEYBOARD) > 0 ? +1 : 0); + return count; } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); if (LocaleController.isRTL) { - - } else { if (needLine) { - float x = getMeasuredWidth() - AndroidUtilities.dp(19 + 37 + 19); - canvas.drawRect(x - AndroidUtilities.dp(0.66f), (getMeasuredHeight() - AndroidUtilities.dp(20)) / 2f, x, (getMeasuredHeight() + AndroidUtilities.dp(20)) / 2f, Theme.dividerPaint); + float x = dp(19 + 37 + 19); + canvas.drawRect(x - dp(0.66f), (getMeasuredHeight() - dp(20)) / 2f, x, (getMeasuredHeight() + dp(20)) / 2f, Theme.dividerPaint); } if (needDivider) { - canvas.drawLine(AndroidUtilities.dp(64), getMeasuredHeight() - 1, getMeasuredWidth(), getMeasuredHeight() - 1, Theme.dividerPaint); + canvas.drawLine(getMeasuredWidth() - dp(64) + (textView.getTranslationX() < 0 ? dp(-32) : 0), getMeasuredHeight() - 1, 0, getMeasuredHeight() - 1, Theme.dividerPaint); + } + } else { + if (needLine) { + float x = getMeasuredWidth() - dp(19 + 37 + 19); + canvas.drawRect(x - dp(0.66f), (getMeasuredHeight() - dp(20)) / 2f, x, (getMeasuredHeight() + dp(20)) / 2f, Theme.dividerPaint); + } + if (needDivider) { + canvas.drawLine(dp(64) + textView.getTranslationX(), getMeasuredHeight() - 1, getMeasuredWidth(), getMeasuredHeight() - 1, Theme.dividerPaint); } } } + + @Override + public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { + super.onInitializeAccessibilityNodeInfo(info); + info.setClassName("android.widget.Switch"); + info.setCheckable(true); + if (checkBoxView.getVisibility() == View.VISIBLE) { + info.setChecked(checkBoxView.isChecked()); + } else { + info.setChecked(switchView.isChecked()); + } + StringBuilder sb = new StringBuilder(); + sb.append(textView.getText()); + if (containing) { + sb.append('\n'); + sb.append(LocaleController.formatString("Of", R.string.Of, enabled, all)); + } + info.setContentDescription(sb); + } + } + + private class PowerSaverSlider extends FrameLayout { + + BatteryDrawable batteryIcon; + SpannableStringBuilder batteryText; + + LinearLayout headerLayout; + TextView headerTextView; + AnimatedTextView headerOnView; + FrameLayout valuesView; + TextView leftTextView; + AnimatedTextView middleTextView; + TextView rightTextView; + SeekBarView seekBarView; + + public PowerSaverSlider(Context context) { + super(context); + + headerLayout = new LinearLayout(context); + headerLayout.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); + + headerTextView = new TextView(context); + headerTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15); + headerTextView.setTypeface(AndroidUtilities.getTypeface(AndroidUtilities.TYPEFACE_ROBOTO_MEDIUM)); + headerTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlueHeader)); + headerTextView.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); + headerTextView.setText(LocaleController.getString("LiteBatteryTitle")); + headerLayout.addView(headerTextView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_VERTICAL)); + + headerOnView = new AnimatedTextView(context, true, false, false) { + Drawable backgroundDrawable = Theme.createRoundRectDrawable(AndroidUtilities.dp(4), Theme.multAlpha(Theme.getColor(Theme.key_windowBackgroundWhiteBlueHeader), 0.15f)); + + @Override + protected void onDraw(Canvas canvas) { + backgroundDrawable.setBounds(0, 0, (int) (getPaddingLeft() + getDrawable().getCurrentWidth() + getPaddingRight()), getMeasuredHeight()); + backgroundDrawable.draw(canvas); + + super.onDraw(canvas); + } + }; + headerOnView.setTypeface(AndroidUtilities.getTypeface(AndroidUtilities.TYPEFACE_ROBOTO_MEDIUM)); + headerOnView.setPadding(AndroidUtilities.dp(5.33f), AndroidUtilities.dp(2), AndroidUtilities.dp(5.33f), AndroidUtilities.dp(2)); + headerOnView.setTextSize(AndroidUtilities.dp(12)); + headerOnView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlueHeader)); + headerLayout.addView(headerOnView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, 17, Gravity.CENTER_VERTICAL, 6, 1, 0, 0)); + + addView(headerLayout, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.TOP | Gravity.FILL_HORIZONTAL, 21, 17, 21, 0)); + + seekBarView = new SeekBarView(context, true, null); + seekBarView.setReportChanges(true); + seekBarView.setDelegate(new SeekBarView.SeekBarViewDelegate() { + @Override + public void onSeekBarDrag(boolean stop, float progress) { + int newValue = Math.round(progress * 100F); + if (newValue != LiteMode.getPowerSaverLevel()) { + LiteMode.setPowerSaverLevel(newValue); + updateValues(); + updateInfo(); + + if (newValue <= 0 || newValue >= 100) { + try { + performHapticFeedback(HapticFeedbackConstants.KEYBOARD_TAP, HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING); + } catch (Exception e) {} + } + } + } + @Override + public void onSeekBarPressed(boolean pressed) {} + @Override + public CharSequence getContentDescription() { + return " "; + } + }); + seekBarView.setProgress(LiteMode.getPowerSaverLevel() / 100F); + addView(seekBarView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 38 + 6, Gravity.TOP, 6, 68, 6, 0)); + + valuesView = new FrameLayout(context); + + leftTextView = new TextView(context); + leftTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 13); + leftTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText)); + leftTextView.setGravity(Gravity.LEFT); + leftTextView.setText(LocaleController.getString("LiteBatteryDisabled", R.string.LiteBatteryDisabled)); + valuesView.addView(leftTextView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.CENTER_VERTICAL)); + + middleTextView = new AnimatedTextView(context, false, true, true) { + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + int fullWidth = MeasureSpec.getSize(widthMeasureSpec); + if (fullWidth <= 0) { + fullWidth = AndroidUtilities.displaySize.x - dp(20); + } + float leftTextViewWidth = leftTextView.getPaint().measureText(leftTextView.getText().toString()); + float rightTextViewWidth = rightTextView.getPaint().measureText(rightTextView.getText().toString()); + super.onMeasure(MeasureSpec.makeMeasureSpec((int) (fullWidth - leftTextViewWidth - rightTextViewWidth), MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(dp(24), MeasureSpec.EXACTLY)); + } + }; + middleTextView.setAnimationProperties(.45f, 0, 240, CubicBezierInterpolator.EASE_OUT_QUINT); + middleTextView.setGravity(Gravity.CENTER_HORIZONTAL); + middleTextView.setTextSize(dp(13)); + middleTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlueText)); + valuesView.addView(middleTextView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER)); + + batteryText = new SpannableStringBuilder("b"); + batteryIcon = new BatteryDrawable(); + batteryIcon.colorFromPaint(middleTextView.getPaint()); + batteryIcon.setTranslationY(dp(1.5f)); + batteryIcon.setBounds(dp(3), dp(-20), dp(20 + 3), 0); + batteryText.setSpan(new ImageSpan(batteryIcon, DynamicDrawableSpan.ALIGN_BOTTOM), 0, batteryText.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + + rightTextView = new TextView(context); + rightTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 13); + rightTextView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText)); + rightTextView.setGravity(Gravity.RIGHT); + rightTextView.setText(LocaleController.getString("LiteBatteryEnabled", R.string.LiteBatteryEnabled)); + valuesView.addView(rightTextView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.RIGHT | Gravity.CENTER_VERTICAL)); + + addView(valuesView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.TOP | Gravity.FILL_HORIZONTAL, 21, 52, 21, 0)); + + update(); + } + + public void update() { + final int percent = LiteMode.getPowerSaverLevel(); + + middleTextView.cancelAnimation(); + if (percent <= 0) { + middleTextView.setText(LocaleController.getString("LiteBatteryAlwaysDisabled", R.string.LiteBatteryAlwaysDisabled), !LocaleController.isRTL); + } else if (percent >= 100) { + middleTextView.setText(LocaleController.getString("LiteBatteryAlwaysEnabled", R.string.LiteBatteryAlwaysEnabled), !LocaleController.isRTL); + } else { + batteryIcon.setFillValue(percent / 100F, true); + middleTextView.setText(AndroidUtilities.replaceCharSequence("%s", LocaleController.getString("LiteBatteryWhenBelow", R.string.LiteBatteryWhenBelow), TextUtils.concat(String.format("%d%% ", Math.round(percent)), batteryText)), !LocaleController.isRTL); + } + + headerOnView.setText((LiteMode.isPowerSaverApplied() ? LocaleController.getString("LiteBatteryEnabled", R.string.LiteBatteryEnabled) : LocaleController.getString("LiteBatteryDisabled", R.string.LiteBatteryDisabled)).toUpperCase()); + updateHeaderOnVisibility(percent > 0 && percent < 100); + + updateOnActive(percent >= 100); + updateOffActive(percent <= 0); + } + + private boolean headerOnVisible; + private void updateHeaderOnVisibility(boolean visible) { + if (visible != headerOnVisible) { + headerOnVisible = visible; + headerOnView.clearAnimation(); + headerOnView.animate().alpha(visible ? 1f : 0f).setInterpolator(CubicBezierInterpolator.EASE_OUT_QUINT).setDuration(220).start(); + } + } + + private float onActiveT; + private ValueAnimator onActiveAnimator; + private void updateOnActive(boolean active) { + final float activeT = active ? 1f : 0f; + if (onActiveT != activeT) { + onActiveT = activeT; + + if (onActiveAnimator != null) { + onActiveAnimator.cancel(); + onActiveAnimator = null; + } + + onActiveAnimator = ValueAnimator.ofFloat(onActiveT, activeT); + onActiveAnimator.addUpdateListener(anm -> { + rightTextView.setTextColor(ColorUtils.blendARGB( + Theme.getColor(Theme.key_windowBackgroundWhiteGrayText), + Theme.getColor(Theme.key_windowBackgroundWhiteBlueText), + onActiveT = (float) anm.getAnimatedValue() + )); + }); + onActiveAnimator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + rightTextView.setTextColor(ColorUtils.blendARGB( + Theme.getColor(Theme.key_windowBackgroundWhiteGrayText), + Theme.getColor(Theme.key_windowBackgroundWhiteBlueText), + onActiveT = (float) activeT + )); + } + }); + onActiveAnimator.setInterpolator(CubicBezierInterpolator.EASE_OUT_QUINT); + onActiveAnimator.setDuration(320); + onActiveAnimator.start(); + } + } + + private float offActiveT; + private ValueAnimator offActiveAnimator; + private void updateOffActive(boolean active) { + final float activeT = active ? 1f : 0f; + if (offActiveT != activeT) { + offActiveT = activeT; + + if (offActiveAnimator != null) { + offActiveAnimator.cancel(); + offActiveAnimator = null; + } + + offActiveAnimator = ValueAnimator.ofFloat(offActiveT, activeT); + offActiveAnimator.addUpdateListener(anm -> { + leftTextView.setTextColor(ColorUtils.blendARGB( + Theme.getColor(Theme.key_windowBackgroundWhiteGrayText), + Theme.getColor(Theme.key_windowBackgroundWhiteBlueText), + offActiveT = (float) anm.getAnimatedValue() + )); + }); + offActiveAnimator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + leftTextView.setTextColor(ColorUtils.blendARGB( + Theme.getColor(Theme.key_windowBackgroundWhiteGrayText), + Theme.getColor(Theme.key_windowBackgroundWhiteBlueText), + offActiveT = (float) activeT + )); + } + }); + offActiveAnimator.setInterpolator(CubicBezierInterpolator.EASE_OUT_QUINT); + offActiveAnimator.setDuration(320); + offActiveAnimator.start(); + } + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure( + MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.EXACTLY), + MeasureSpec.makeMeasureSpec(dp(112), MeasureSpec.EXACTLY) + ); + } } private static class Item extends AdapterWithDiffUtils.Item { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LoginActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LoginActivity.java index 100fda427..aaa6c8194 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LoginActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LoginActivity.java @@ -565,6 +565,7 @@ public class LoginActivity extends BaseFragment { }; keyboardLinearLayout.addView(slideViewsContainer, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 0, 1f)); keyboardView = new CustomPhoneKeyboardView(context); + keyboardView.setViewToFindFocus(slideViewsContainer); keyboardLinearLayout.addView(keyboardView, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, CustomPhoneKeyboardView.KEYBOARD_HEIGHT_DP)); views[VIEW_PHONE_INPUT] = new PhoneView(context); @@ -3994,7 +3995,9 @@ public class LoginActivity extends BaseFragment { if (currentType == AUTH_TYPE_MESSAGE) { setProblemTextVisible(true); timeText.setVisibility(GONE); - problemText.setVisibility(VISIBLE); + if (problemText != null) { + problemText.setVisibility(VISIBLE); + } } else if (currentType == AUTH_TYPE_FLASH_CALL && (nextType == AUTH_TYPE_CALL || nextType == AUTH_TYPE_SMS)) { setProblemTextVisible(false); timeText.setVisibility(VISIBLE); @@ -4016,7 +4019,9 @@ public class LoginActivity extends BaseFragment { timeText.setText(LocaleController.formatString("CallAvailableIn", R.string.CallAvailableIn, 2, 0)); setProblemTextVisible(time < 1000); timeText.setVisibility(time < 1000 ? GONE : VISIBLE); - problemText.setVisibility(time < 1000 ? VISIBLE : GONE); + if (problemText != null) { + problemText.setVisibility(time < 1000 ? VISIBLE : GONE); + } SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE); String hash = preferences.getString("sms_hash", null); @@ -4039,11 +4044,15 @@ public class LoginActivity extends BaseFragment { timeText.setText(LocaleController.formatString("SmsAvailableIn", R.string.SmsAvailableIn, 2, 0)); setProblemTextVisible(time < 1000); timeText.setVisibility(time < 1000 ? GONE : VISIBLE); - problemText.setVisibility(time < 1000 ? VISIBLE : GONE); + if (problemText != null) { + problemText.setVisibility(time < 1000 ? VISIBLE : GONE); + } createTimer(); } else { timeText.setVisibility(GONE); - problemText.setVisibility(VISIBLE); + if (problemText != null) { + problemText.setVisibility(VISIBLE); + } setProblemTextVisible(false); createCodeTimer(); } @@ -4095,7 +4104,9 @@ public class LoginActivity extends BaseFragment { if (codeTime <= 1000) { setProblemTextVisible(true); timeText.setVisibility(GONE); - problemText.setVisibility(VISIBLE); + if (problemText != null) { + problemText.setVisibility(VISIBLE); + } destroyCodeTimer(); } }); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LogoutActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LogoutActivity.java index 7298eb728..3caabf11c 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LogoutActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LogoutActivity.java @@ -167,7 +167,7 @@ public class LogoutActivity extends BaseFragment { AlertDialog alertDialog = builder.create(); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } return alertDialog; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LongPressListenerWithMovingGesture.java b/TMessagesProj/src/main/java/org/telegram/ui/LongPressListenerWithMovingGesture.java index cc54bb0a7..6d450a8d6 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LongPressListenerWithMovingGesture.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LongPressListenerWithMovingGesture.java @@ -5,6 +5,7 @@ import android.os.Build; import android.view.MotionEvent; import android.view.View; +import org.telegram.messenger.AndroidUtilities; import org.telegram.ui.ActionBar.ActionBarPopupWindow; import org.telegram.ui.Components.GestureDetector2; @@ -15,7 +16,7 @@ public class LongPressListenerWithMovingGesture implements View.OnTouchListener ActionBarPopupWindow submenu; Rect rect = new Rect(); boolean subItemClicked; - + boolean tapConfirmedOrCanceled; GestureDetector2 gestureDetector2 = new GestureDetector2(new GestureDetector2.OnGestureListener() { @Override public boolean onDown(MotionEvent e) { @@ -54,8 +55,13 @@ public class LongPressListenerWithMovingGesture implements View.OnTouchListener @Override public boolean onSingleTapUp(MotionEvent e) { + if (tapConfirmedOrCanceled) { + return false; + } if (view != null) { view.callOnClick(); + tapConfirmedOrCanceled = true; + return true; } return false; } @@ -85,9 +91,16 @@ public class LongPressListenerWithMovingGesture implements View.OnTouchListener gestureDetector2.setIsLongpressEnabled(true); } + float startFromX; + float startFromY; @Override public boolean onTouch(View v, MotionEvent event) { view = v; + if (event.getAction() == MotionEvent.ACTION_DOWN) { + startFromX = event.getX(); + startFromY = event.getY(); + tapConfirmedOrCanceled = false; + } gestureDetector2.onTouchEvent(event); if (submenu != null && !subItemClicked && event.getAction() == MotionEvent.ACTION_MOVE) { view.getLocationOnScreen(location); @@ -123,7 +136,12 @@ public class LongPressListenerWithMovingGesture implements View.OnTouchListener } } } - if (event.getAction() == MotionEvent.ACTION_UP && !subItemClicked) { + if (event.getAction() == MotionEvent.ACTION_MOVE && Math.abs(event.getX() - startFromX) > AndroidUtilities.touchSlop * 2 || Math.abs(event.getY() - startFromY) > AndroidUtilities.touchSlop * 2) { + tapConfirmedOrCanceled = true; + view.setPressed(false); + view.setSelected(false); + } + if (event.getAction() == MotionEvent.ACTION_UP && !subItemClicked && !tapConfirmedOrCanceled) { if (selectedMenuView != null) { selectedMenuView.callOnClick(); subItemClicked = true; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ManageLinksActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ManageLinksActivity.java index d45ac1951..c8ed2ae00 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ManageLinksActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ManageLinksActivity.java @@ -1121,7 +1121,7 @@ public class ManageLinksActivity extends BaseFragment { AlertDialog alert = builder.create(); builder.show(); if (redLastItem) { - alert.setItemColor(items.size() - 1, Theme.getColor(Theme.key_dialogTextRed2), Theme.getColor(Theme.key_dialogRedIcon)); + alert.setItemColor(items.size() - 1, Theme.getColor(Theme.key_dialogTextRed), Theme.getColor(Theme.key_dialogRedIcon)); } }); optionsView.setBackground(Theme.createSelectorDrawable(Theme.getColor(Theme.key_listSelector), 1)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/MessageSeenView.java b/TMessagesProj/src/main/java/org/telegram/ui/MessageSeenView.java index d45ab4a82..5e33ed931 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/MessageSeenView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/MessageSeenView.java @@ -1,11 +1,20 @@ package org.telegram.ui; import android.content.Context; +import android.graphics.Canvas; +import android.graphics.ColorFilter; +import android.graphics.PixelFormat; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; import android.graphics.Rect; import android.graphics.drawable.Drawable; +import android.text.SpannableStringBuilder; +import android.text.Spanned; import android.text.TextUtils; +import android.text.style.DynamicDrawableSpan; +import android.text.style.ImageSpan; +import android.util.Log; +import android.util.Pair; import android.util.TypedValue; import android.view.Gravity; import android.view.View; @@ -16,6 +25,7 @@ import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -27,11 +37,15 @@ import org.telegram.messenger.ImageLocation; import org.telegram.messenger.LocaleController; import org.telegram.messenger.MessageObject; import org.telegram.messenger.MessagesController; +import org.telegram.messenger.NotificationCenter; import org.telegram.messenger.R; +import org.telegram.messenger.UserConfig; +import org.telegram.messenger.UserObject; import org.telegram.tgnet.ConnectionsManager; import org.telegram.tgnet.TLRPC; import org.telegram.ui.ActionBar.SimpleTextView; import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.Components.AnimatedEmojiDrawable; import org.telegram.ui.Components.AvatarDrawable; import org.telegram.ui.Components.AvatarsDrawable; import org.telegram.ui.Components.AvatarsImageView; @@ -39,6 +53,7 @@ import org.telegram.ui.Components.BackupImageView; import org.telegram.ui.Components.FlickerLoadingView; import org.telegram.ui.Components.HideViewAfterAnimation; import org.telegram.ui.Components.LayoutHelper; +import org.telegram.ui.Components.MessageSeenCheckDrawable; import org.telegram.ui.Components.RecyclerListView; import java.util.ArrayList; @@ -47,6 +62,7 @@ import java.util.HashMap; public class MessageSeenView extends FrameLayout { ArrayList peerIds = new ArrayList<>(); + ArrayList dates = new ArrayList<>(); public ArrayList users = new ArrayList<>(); AvatarsImageView avatarsImageView; SimpleTextView titleView; @@ -102,16 +118,29 @@ public class MessageSeenView extends FrameLayout { TLRPC.Vector vector = (TLRPC.Vector) response; ArrayList unknownUsers = new ArrayList<>(); HashMap usersLocal = new HashMap<>(); - ArrayList allPeers = new ArrayList<>(); + ArrayList> allPeers = new ArrayList<>(); for (int i = 0, n = vector.objects.size(); i < n; i++) { Object object = vector.objects.get(i); - if (object instanceof Long) { + if (object instanceof TLRPC.TL_readParticipantDate) { + int date = ((TLRPC.TL_readParticipantDate) object).date; + Long peerId = ((TLRPC.TL_readParticipantDate) object).user_id; + if (finalFromId == peerId) { + continue; + } + TLRPC.User user = MessagesController.getInstance(currentAccount).getUser(peerId); + allPeers.add(new Pair<>(peerId, date)); + if (true || user == null) { + unknownUsers.add(peerId); + } else { + usersLocal.put(peerId, user); + } + } else if (object instanceof Long) { Long peerId = (Long) object; if (finalFromId == peerId) { continue; } TLRPC.User user = MessagesController.getInstance(currentAccount).getUser(peerId); - allPeers.add(peerId); + allPeers.add(new Pair<>(peerId, 0)); if (true || user == null) { unknownUsers.add(peerId); } else { @@ -122,8 +151,10 @@ public class MessageSeenView extends FrameLayout { if (unknownUsers.isEmpty()) { for (int i = 0; i < allPeers.size(); i++) { - peerIds.add(allPeers.get(i)); - users.add(usersLocal.get(allPeers.get(i))); + Pair pair = allPeers.get(i); + peerIds.add(pair.first); + dates.add(pair.second); + users.add(usersLocal.get(pair.first)); } updateView(); } else { @@ -142,8 +173,10 @@ public class MessageSeenView extends FrameLayout { usersLocal.put(user.id, user); } for (int i = 0; i < allPeers.size(); i++) { - peerIds.add(allPeers.get(i)); - this.users.add(usersLocal.get(allPeers.get(i))); + Pair pair = allPeers.get(i); + peerIds.add(pair.first); + dates.add(pair.second); + this.users.add(usersLocal.get(pair.first)); } } updateView(); @@ -160,8 +193,10 @@ public class MessageSeenView extends FrameLayout { usersLocal.put(user.id, user); } for (int i = 0; i < allPeers.size(); i++) { - peerIds.add(allPeers.get(i)); - this.users.add(usersLocal.get(allPeers.get(i))); + Pair pair = allPeers.get(i); + peerIds.add(pair.first); + dates.add(pair.second); + this.users.add(usersLocal.get(pair.first)); } } updateView(); @@ -242,14 +277,23 @@ public class MessageSeenView extends FrameLayout { titleView.animate().alpha(1f).setDuration(220).start(); avatarsImageView.animate().alpha(1f).setDuration(220).start(); flickerLoadingView.animate().alpha(0f).setDuration(220).setListener(new HideViewAfterAnimation(flickerLoadingView)).start(); + + if (listView != null && listView.getAdapter() != null) { +// listView.getAdapter().notifyDataSetChanged(); + } } + private RecyclerListView listView; + public RecyclerListView createListView() { - RecyclerListView recyclerListView = new RecyclerListView(getContext()) { + if (listView != null) { + return listView; + } + listView = new RecyclerListView(getContext()) { @Override protected void onMeasure(int widthSpec, int heightSpec) { int height = MeasureSpec.getSize(heightSpec); - int listViewTotalHeight = AndroidUtilities.dp(8) + AndroidUtilities.dp(44) * getAdapter().getItemCount(); + int listViewTotalHeight = AndroidUtilities.dp(4) + AndroidUtilities.dp(50) * getAdapter().getItemCount(); if (listViewTotalHeight > height) { listViewTotalHeight = height; @@ -258,20 +302,17 @@ public class MessageSeenView extends FrameLayout { super.onMeasure(widthSpec, MeasureSpec.makeMeasureSpec(listViewTotalHeight, MeasureSpec.EXACTLY)); } }; - recyclerListView.setLayoutManager(new LinearLayoutManager(getContext())); - recyclerListView.addItemDecoration(new RecyclerView.ItemDecoration() { + listView.setLayoutManager(new LinearLayoutManager(getContext())); + listView.addItemDecoration(new RecyclerView.ItemDecoration() { @Override public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) { int p = parent.getChildAdapterPosition(view); - if (p == 0) { - outRect.top = AndroidUtilities.dp(4); - } if (p == users.size() - 1) { outRect.bottom = AndroidUtilities.dp(4); } } }); - recyclerListView.setAdapter(new RecyclerListView.SelectionAdapter() { + listView.setAdapter(new RecyclerListView.SelectionAdapter() { @Override public boolean isEnabled(RecyclerView.ViewHolder holder) { @@ -281,14 +322,14 @@ public class MessageSeenView extends FrameLayout { @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { UserCell userCell = new UserCell(parent.getContext()); - userCell.setLayoutParams(new RecyclerView.LayoutParams(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); + userCell.setLayoutParams(new RecyclerView.LayoutParams(LayoutHelper.MATCH_PARENT, AndroidUtilities.dp(50))); return new RecyclerListView.Holder(userCell); } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { UserCell cell = (UserCell) holder.itemView; - cell.setUser(users.get(position)); + cell.setUser(users.get(position), dates.get(position)); } @Override @@ -297,48 +338,121 @@ public class MessageSeenView extends FrameLayout { } }); - return recyclerListView; + return listView; } - private static class UserCell extends FrameLayout { + private static class UserCell extends FrameLayout implements NotificationCenter.NotificationCenterDelegate { + + private int currentAccount = UserConfig.selectedAccount; BackupImageView avatarImageView; - TextView nameView; + SimpleTextView nameView; + TextView readView; AvatarDrawable avatarDrawable = new AvatarDrawable(); + AnimatedEmojiDrawable.SwapAnimatedEmojiDrawable rightDrawable; + + TLRPC.User user; + + private static MessageSeenCheckDrawable seenDrawable = new MessageSeenCheckDrawable(R.drawable.msg_mini_checks, Theme.key_windowBackgroundWhiteGrayText); public UserCell(Context context) { super(context); avatarImageView = new BackupImageView(context); - addView(avatarImageView, LayoutHelper.createFrame(32, 32, Gravity.CENTER_VERTICAL, 13, 0, 0, 0)); - avatarImageView.setRoundRadius(AndroidUtilities.dp(16)); - nameView = new TextView(context); - nameView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); - nameView.setLines(1); - nameView.setEllipsize(TextUtils.TruncateAt.END); - nameView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); - addView(nameView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.CENTER_VERTICAL, 59, 0, 13, 0)); + avatarImageView.setRoundRadius(AndroidUtilities.dp(18)); + addView(avatarImageView, LayoutHelper.createFrame(34, 34, Gravity.CENTER_VERTICAL, 10f, 0, 0, 0)); + nameView = new SimpleTextView(context); + nameView.setTextSize(16); + nameView.setEllipsizeByGradient(true); + nameView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); nameView.setTextColor(Theme.getColor(Theme.key_actionBarDefaultSubmenuItem)); + addView(nameView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.TOP, 55, 6.33f, 8, 0)); + + rightDrawable = new AnimatedEmojiDrawable.SwapAnimatedEmojiDrawable(this, AndroidUtilities.dp(18)); + nameView.setDrawablePadding(AndroidUtilities.dp(3)); + nameView.setRightDrawable(rightDrawable); + + readView = new TextView(context); + readView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 13); + readView.setLines(1); + readView.setEllipsize(TextUtils.TruncateAt.END); + readView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); + readView.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText)); + addView(readView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.TOP, 55, 20, 13, 0)); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(44), View.MeasureSpec.EXACTLY)); + super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(50), View.MeasureSpec.EXACTLY)); } - public void setUser(TLRPC.User user) { + public void setUser(TLRPC.User user, int date) { + this.user = user; + updateStatus(false); + if (user != null) { avatarDrawable.setInfo(user); ImageLocation imageLocation = ImageLocation.getForUser(user, ImageLocation.TYPE_SMALL); avatarImageView.setImage(imageLocation, "50_50", avatarDrawable, user); nameView.setText(ContactsController.formatName(user.first_name, user.last_name)); } + + if (date <= 0) { + readView.setVisibility(GONE); + nameView.setTranslationY(AndroidUtilities.dp(9)); + } else { + readView.setText(TextUtils.concat(seenDrawable.getSpanned(getContext()), LocaleController.formatSeenDate(date))); + readView.setVisibility(VISIBLE); + nameView.setTranslationY(0); + } } @Override public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfo(info); - info.setText(LocaleController.formatString("AccDescrPersonHasSeen", R.string.AccDescrPersonHasSeen, nameView.getText())); + String text = LocaleController.formatString("AccDescrPersonHasSeen", R.string.AccDescrPersonHasSeen, nameView.getText()); + if (readView.getVisibility() == VISIBLE) { + text += " " + readView.getText(); + } + info.setText(text); + } + + @Override + public void didReceivedNotification(int id, int account, Object... args) { + if (id == NotificationCenter.userEmojiStatusUpdated) { + TLRPC.User user = (TLRPC.User) args[0]; + if (this.user != null && user != null && this.user.id == user.id) { + this.user = user; + updateStatus(true); + } + } + } + + private void updateStatus(boolean animated) { + Long documentId = UserObject.getEmojiStatusDocumentId(user); + if (documentId == null) { + rightDrawable.set((Drawable) null, animated); + } else { + rightDrawable.set(documentId, animated); + } + } + + @Override + protected void onAttachedToWindow() { + super.onAttachedToWindow(); + if (rightDrawable != null) { + rightDrawable.attach(); + } + NotificationCenter.getInstance(currentAccount).addObserver(this, NotificationCenter.userEmojiStatusUpdated); + } + + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + if (rightDrawable != null) { + rightDrawable.detach(); + } + NotificationCenter.getInstance(currentAccount).removeObserver(this, NotificationCenter.userEmojiStatusUpdated); } } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/NotificationsCustomSettingsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/NotificationsCustomSettingsActivity.java index 74f9a1971..a932572b7 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/NotificationsCustomSettingsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/NotificationsCustomSettingsActivity.java @@ -449,7 +449,7 @@ public class NotificationsCustomSettingsActivity extends BaseFragment implements showDialog(alertDialog); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } else if (position == alertRow) { enabled = getNotificationsController().isGlobalNotificationsEnabled(currentType); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/NotificationsSettingsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/NotificationsSettingsActivity.java index 96b7931b5..4e41bdfc3 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/NotificationsSettingsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/NotificationsSettingsActivity.java @@ -468,7 +468,7 @@ public class NotificationsSettingsActivity extends BaseFragment implements Notif showDialog(alertDialog); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } else if (position == inappSoundRow) { SharedPreferences preferences = MessagesController.getNotificationsSettings(currentAccount); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/NotificationsSoundActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/NotificationsSoundActivity.java index 81710096a..79ac674bc 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/NotificationsSoundActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/NotificationsSoundActivity.java @@ -202,7 +202,7 @@ public class NotificationsSoundActivity extends BaseFragment implements ChatAtta AlertDialog dialog = builder.show(); TextView button = (TextView) dialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2, resourcesProvider)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed, resourcesProvider)); } } else if (id == shareId) { if (selectedTones.size() == 1) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PassportActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/PassportActivity.java index edd7b4e55..a9cf2870a 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PassportActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PassportActivity.java @@ -606,7 +606,7 @@ public class PassportActivity extends BaseFragment implements NotificationCenter DownloadController.getInstance(currentAccount).addLoadingFileObserver(currentSecureDocument.path, this); buttonState = 1; Float progress = ImageLoader.getInstance().getFileProgress(currentSecureDocument.path); - radialProgress.setBackground(Theme.chat_photoStatesDrawables[5][0], true, animated); + radialProgress.setBackground(getResources().getDrawable(R.drawable.circle), true, animated); radialProgress.setProgress(progress != null ? progress : 0, false); invalidate(); } @@ -620,7 +620,7 @@ public class PassportActivity extends BaseFragment implements NotificationCenter DownloadController.getInstance(currentAccount).addLoadingFileObserver(fileName, this); buttonState = 1; Float progress = ImageLoader.getInstance().getFileProgress(fileName); - radialProgress.setBackground(Theme.chat_photoStatesDrawables[5][0], true, animated); + radialProgress.setBackground(getResources().getDrawable(R.drawable.circle), true, animated); radialProgress.setProgress(progress != null ? progress : 0, animated); invalidate(); } @@ -2475,7 +2475,7 @@ public class PassportActivity extends BaseFragment implements NotificationCenter showDialog(alertDialog); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } }); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PaymentFormActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/PaymentFormActivity.java index 1328fb503..d8a88a86d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PaymentFormActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PaymentFormActivity.java @@ -2517,7 +2517,7 @@ public class PaymentFormActivity extends BaseFragment implements NotificationCen showDialog(alertDialog); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(getThemedColor(Theme.key_dialogTextRed2)); + button.setTextColor(getThemedColor(Theme.key_dialogTextRed)); } }); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PhotoAlbumPickerActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/PhotoAlbumPickerActivity.java index 7f11d3c48..f81e31ef4 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PhotoAlbumPickerActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PhotoAlbumPickerActivity.java @@ -202,7 +202,7 @@ public class PhotoAlbumPickerActivity extends BaseFragment implements Notificati setMeasuredDimension(widthSize, heightSize); - int keyboardSize = SharedConfig.smoothKeyboard ? 0 : measureKeyboardHeight(); + int keyboardSize = 0; if (keyboardSize <= AndroidUtilities.dp(20)) { if (!AndroidUtilities.isInMultiwindow) { heightSize -= commentTextView.getEmojiPadding(); @@ -246,7 +246,7 @@ public class PhotoAlbumPickerActivity extends BaseFragment implements Notificati } final int count = getChildCount(); - int keyboardSize = SharedConfig.smoothKeyboard ? 0 : measureKeyboardHeight(); + int keyboardSize = 0; int paddingBottom = keyboardSize <= AndroidUtilities.dp(20) && !AndroidUtilities.isInMultiwindow && !AndroidUtilities.isTablet() ? commentTextView.getEmojiPadding() : 0; setBottomClip(paddingBottom); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PhotoPickerActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/PhotoPickerActivity.java index 9895c7873..c70b157dd 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PhotoPickerActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PhotoPickerActivity.java @@ -633,7 +633,7 @@ public class PhotoPickerActivity extends BaseFragment implements NotificationCen setMeasuredDimension(widthSize, heightSize); int kbHeight = measureKeyboardHeight(); - int keyboardSize = SharedConfig.smoothKeyboard ? 0 : kbHeight; + int keyboardSize = 0; if (keyboardSize <= AndroidUtilities.dp(20)) { if (!AndroidUtilities.isInMultiwindow && commentTextView != null && frameLayout2.getParent() == this) { heightSize -= commentTextView.getEmojiPadding(); @@ -646,7 +646,7 @@ public class PhotoPickerActivity extends BaseFragment implements NotificationCen ignoreLayout = false; } - if (SharedConfig.smoothKeyboard && commentTextView != null && commentTextView.isPopupShowing()) { + if (commentTextView != null && commentTextView.isPopupShowing()) { fragmentView.setTranslationY(0); listView.setTranslationY(0); emptyView.setTranslationY(0); @@ -687,7 +687,7 @@ public class PhotoPickerActivity extends BaseFragment implements NotificationCen } final int count = getChildCount(); - int keyboardSize = SharedConfig.smoothKeyboard ? 0 : measureKeyboardHeight(); + int keyboardSize = 0; int paddingBottom = commentTextView != null && frameLayout2.getParent() == this && keyboardSize <= AndroidUtilities.dp(20) && !AndroidUtilities.isInMultiwindow && !AndroidUtilities.isTablet() ? commentTextView.getEmojiPadding() : 0; setBottomClip(paddingBottom); @@ -815,7 +815,7 @@ public class PhotoPickerActivity extends BaseFragment implements NotificationCen showDialog(dialog); TextView button = (TextView) dialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } return; } @@ -1279,7 +1279,7 @@ public class PhotoPickerActivity extends BaseFragment implements NotificationCen initialSearchString = null; processSearch(searchItem.getSearchField()); } - getParentActivity().getWindow().setSoftInputMode(SharedConfig.smoothKeyboard ? WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN : WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); + getParentActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PhotoPickerSearchActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/PhotoPickerSearchActivity.java index 16590290e..44ebe5770 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PhotoPickerSearchActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PhotoPickerSearchActivity.java @@ -21,10 +21,12 @@ import android.widget.EditText; import android.widget.FrameLayout; import android.widget.TextView; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.LocaleController; import org.telegram.messenger.R; -import org.telegram.messenger.SharedConfig; import org.telegram.ui.ActionBar.ActionBar; import org.telegram.ui.ActionBar.ActionBarMenu; import org.telegram.ui.ActionBar.ActionBarMenuItem; @@ -41,9 +43,6 @@ import org.telegram.ui.Components.SizeNotifierFrameLayout; import java.util.ArrayList; import java.util.HashMap; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - public class PhotoPickerSearchActivity extends BaseFragment { private static class ViewPage extends FrameLayout { @@ -241,7 +240,7 @@ public class PhotoPickerSearchActivity extends BaseFragment { setMeasuredDimension(widthSize, heightSize); measureChildWithMargins(actionBar, widthMeasureSpec, 0, heightMeasureSpec, 0); - int keyboardSize = SharedConfig.smoothKeyboard ? 0 : measureKeyboardHeight(); + int keyboardSize = 0; if (keyboardSize <= AndroidUtilities.dp(20)) { if (!AndroidUtilities.isInMultiwindow) { heightSize -= commentTextView.getEmojiPadding(); @@ -291,7 +290,7 @@ public class PhotoPickerSearchActivity extends BaseFragment { protected void onLayout(boolean changed, int l, int t, int r, int b) { final int count = getChildCount(); - int keyboardSize = SharedConfig.smoothKeyboard ? 0 : measureKeyboardHeight(); + int keyboardSize = 0; int paddingBottom = keyboardSize <= AndroidUtilities.dp(20) && !AndroidUtilities.isInMultiwindow && !AndroidUtilities.isTablet() ? commentTextView.getEmojiPadding() : 0; setBottomClip(paddingBottom); @@ -675,7 +674,7 @@ public class PhotoPickerSearchActivity extends BaseFragment { super.onResume(); if (searchItem != null) { searchItem.openSearch(true); - getParentActivity().getWindow().setSoftInputMode(SharedConfig.smoothKeyboard ? WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN : WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); + getParentActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); } if (imagesSearch != null) { imagesSearch.onResume(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java b/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java index 6761b2d01..fc7c2bd49 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java @@ -211,6 +211,7 @@ import org.telegram.ui.Components.LinkPath; import org.telegram.ui.Components.LinkSpanDrawable; import org.telegram.ui.Components.MediaActivity; import org.telegram.ui.Components.NumberPicker; +import org.telegram.ui.Components.OptionsSpeedIconDrawable; import org.telegram.ui.Components.OtherDocumentPlaceholderDrawable; import org.telegram.ui.Components.Paint.Views.LPhotoPaintView; import org.telegram.ui.Components.PaintingOverlay; @@ -227,6 +228,7 @@ import org.telegram.ui.Components.RadialProgressView; import org.telegram.ui.Components.RecyclerListView; import org.telegram.ui.Components.ShareAlert; import org.telegram.ui.Components.SizeNotifierFrameLayoutPhoto; +import org.telegram.ui.Components.SpeedIconDrawable; import org.telegram.ui.Components.StickersAlert; import org.telegram.ui.Components.TextViewSwitcher; import org.telegram.ui.Components.Tooltip; @@ -320,6 +322,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat private TextView docInfoTextView; private TextView doneButtonFullWidth; private ActionBarMenuItem menuItem; + private OptionsSpeedIconDrawable menuItemIcon; private ActionBarMenuSubItem allMediaItem; private ActionBarMenuSubItem speedItem; private ActionBarPopupWindow.GapView speedGap; @@ -4603,7 +4606,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat showAlertDialog(builder); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(getThemedColor(Theme.key_dialogTextRed2)); + button.setTextColor(getThemedColor(Theme.key_dialogTextRed)); } } else if (id == gallery_menu_share || id == gallery_menu_share2) { onSharePressed(); @@ -4833,14 +4836,14 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat shareItem = menu.addItem(gallery_menu_share2, R.drawable.share); shareItem.setContentDescription(LocaleController.getString("ShareFile", R.string.ShareFile)); - menuItem = menu.addItem(0, R.drawable.ic_ab_other); + menuItem = menu.addItem(0, menuItemIcon = new OptionsSpeedIconDrawable()); + menuItem.setOnMenuDismiss(byClick -> checkProgress(0, false, false)); menuItem.getPopupLayout().swipeBackGravityRight = true; chooseSpeedLayout = new ChooseSpeedLayout(activityContext, menuItem.getPopupLayout().getSwipeBack(), new ChooseSpeedLayout.Callback() { @Override - public void onSpeedSelected(float speed) { - menuItem.toggleSubMenu(); + public void onSpeedSelected(float speed, boolean isFinal, boolean closeMenu) { if (speed != currentVideoSpeed) { currentVideoSpeed = speed; if (currentMessageObject != null) { @@ -4857,7 +4860,10 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if (photoViewerWebView != null) { photoViewerWebView.setPlaybackSpeed(currentVideoSpeed); } - setMenuItemIcon(); + } + setMenuItemIcon(true, isFinal); + if (closeMenu) { + menuItem.toggleSubMenu(); } } }); @@ -4883,7 +4889,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat menuItem.addSubItem(gallery_menu_delete, R.drawable.msg_delete, LocaleController.getString("Delete", R.string.Delete)).setColors(0xfffafafa, 0xfffafafa); menuItem.addSubItem(gallery_menu_cancel_loading, R.drawable.msg_cancel, LocaleController.getString("StopDownload", R.string.StopDownload)).setColors(0xfffafafa, 0xfffafafa); menuItem.redrawPopup(0xf9222222); - setMenuItemIcon(); + setMenuItemIcon(false, true); menuItem.setPopupItemsSelectorColor(0x0fffffff); menuItem.setSubMenuDelegate(new ActionBarMenuItem.ActionBarSubMenuItemDelegate() { @@ -6826,28 +6832,28 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat alert.show(); } - private void setMenuItemIcon() { + private void setMenuItemIcon(boolean animated, boolean isFinal) { if (speedItem.getVisibility() != View.VISIBLE) { - menuItem.setIcon(R.drawable.ic_ab_other); + menuItemIcon.setSpeed(null, animated); return; } - if (Math.abs(currentVideoSpeed - 0.25f) < 0.001f) { - menuItem.setIcon(R.drawable.msg_more_0_2); - speedItem.setSubtext(LocaleController.getString("SpeedVerySlow", R.string.SpeedVerySlow)); - } else if (Math.abs(currentVideoSpeed - 0.5f) < 0.001f) { - menuItem.setIcon(R.drawable.msg_more_0_5); - speedItem.setSubtext(LocaleController.getString("SpeedSlow", R.string.SpeedSlow)); - } else if (Math.abs(currentVideoSpeed - 1.0f) < 0.001f) { - menuItem.setIcon(R.drawable.ic_ab_other); - speedItem.setSubtext(LocaleController.getString("SpeedNormal", R.string.SpeedNormal)); - } else if (Math.abs(currentVideoSpeed - 1.5f) < 0.001f) { - menuItem.setIcon(R.drawable.msg_more_1_5); - speedItem.setSubtext(LocaleController.getString("SpeedFast", R.string.SpeedFast)); - } else { - menuItem.setIcon(R.drawable.msg_more_2); - speedItem.setSubtext(LocaleController.getString("SpeedVeryFast", R.string.SpeedVeryFast)); + menuItemIcon.setSpeed(Math.abs(currentVideoSpeed - 1f) < 0.001f ? null : currentVideoSpeed, animated); + if (isFinal) { + if (Math.abs(currentVideoSpeed - 0.2f) < 0.05f) { + speedItem.setSubtext(LocaleController.getString("VideoSpeedVerySlow", R.string.VideoSpeedVerySlow)); + } else if (Math.abs(currentVideoSpeed - 0.5f) < 0.05f) { + speedItem.setSubtext(LocaleController.getString("VideoSpeedSlow", R.string.VideoSpeedSlow)); + } else if (Math.abs(currentVideoSpeed - 1.0f) < 0.05f) { + speedItem.setSubtext(LocaleController.getString("VideoSpeedNormal", R.string.VideoSpeedNormal)); + } else if (Math.abs(currentVideoSpeed - 1.5f) < 0.05f) { + speedItem.setSubtext(LocaleController.getString("VideoSpeedFast", R.string.VideoSpeedFast)); + } else if (Math.abs(currentVideoSpeed - 2f) < 0.05f) { + speedItem.setSubtext(LocaleController.getString("VideoSpeedVeryFast", R.string.VideoSpeedVeryFast)); + } else { + speedItem.setSubtext(LocaleController.formatString("VideoSpeedCustom", R.string.VideoSpeedCustom, SpeedIconDrawable.formatNumber(currentVideoSpeed) + "x")); + } } - chooseSpeedLayout.update(currentVideoSpeed); + chooseSpeedLayout.update(currentVideoSpeed, isFinal); } public float getCurrentVideoSpeed() { @@ -8631,7 +8637,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat videoPosition = item; } } - if (currentMessageObject.forceSeekTo < 0 && videoPosition != null) { + if (currentMessageObject != null && currentMessageObject.forceSeekTo < 0 && videoPosition != null) { float pos = videoPosition.position; if (pos > 0 && pos < 0.999f) { currentMessageObject.forceSeekTo = pos; @@ -11071,7 +11077,9 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat avatarsArr.clear(); secureDocuments.clear(); imagesArrLocals.clear(); - actionBar.setElevation(0); + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) { + actionBar.setElevation(0); + } for (int a = 0; a < 2; a++) { imagesByIds[a].clear(); imagesByIdsTemp[a].clear(); @@ -11203,7 +11211,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } else { currentVideoSpeed = 1.0f; } - setMenuItemIcon(); + setMenuItemIcon(false, true); boolean noforwards = messageObject != null && (MessagesController.getInstance(currentAccount).isChatNoForwards(messageObject.getChatId()) || (messageObject.messageOwner != null && messageObject.messageOwner.noforwards) || messageObject.hasRevealedExtendedMedia()); if (messageObject != null && messages == null) { @@ -12321,7 +12329,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat currentPageBlock = pageBlock; isVideo = pageBlocksAdapter.isVideo(currentIndex); } - setMenuItemIcon(); + setMenuItemIcon(false, true); if (currentPlaceObject != null) { if (animationInProgress == 0) { @@ -12848,7 +12856,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat photoProgressViews[a].setBackgroundState(PROGRESS_NONE, animated, true); } } - if (a == 0) { + if (a == 0 && !menuItem.isSubMenuShowing()) { if (!existsFinal) { if (!FileLoader.getInstance(currentAccount).isLoadingFile(currentFileNames[a])) { menuItem.hideSubItem(gallery_menu_cancel_loading); @@ -15443,7 +15451,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat progress = progress + (1f - progress) * clippingImageProgress; } float scale = 1f + (1f - Utilities.clamp(progress, 1, 0)) * ZOOM_SCALE; - if (SharedConfig.getDevicePerformanceClass() != SharedConfig.PERFORMANCE_CLASS_HIGH || !LiteMode.isEnabled(LiteMode.FLAG_CHAT_BACKGROUND)) { + if (!LiteMode.isEnabled(LiteMode.FLAG_CHAT_SCALE)) { scale = 1f; } View view = parentFragment.getFragmentView(); @@ -16658,6 +16666,9 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if (animationStartTime != 0 || animationInProgress != 0) { return false; } + if (Math.sqrt(Math.pow(AndroidUtilities.displaySize.x / 2f - e.getX(), 2) + Math.pow((AndroidUtilities.displaySize.y + AndroidUtilities.statusBarHeight) / 2f - e.getY(), 2)) < AndroidUtilities.dp(40)) { + return false; // play button + } if (scale == 1.0f) { float atx = (e.getX() - getContainerViewWidth() / 2) - ((e.getX() - getContainerViewWidth() / 2) - translationX) * (3.0f / scale); float aty = (e.getY() - getContainerViewHeight() / 2) - ((e.getY() - getContainerViewHeight() / 2) - translationY) * (3.0f / scale); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PremiumPreviewFragment.java b/TMessagesProj/src/main/java/org/telegram/ui/PremiumPreviewFragment.java index 26e94fd41..e7b884003 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PremiumPreviewFragment.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PremiumPreviewFragment.java @@ -307,8 +307,8 @@ public class PremiumPreviewFragment extends BaseFragment implements Notification @Override public boolean dispatchTouchEvent(MotionEvent ev) { - float iconX = backgroundView.getX() + backgroundView.imageView.getX(); - float iconY = backgroundView.getY() + backgroundView.imageView.getY(); + float iconX = backgroundView.getX() + backgroundView.imageFrameLayout.getX(); + float iconY = backgroundView.getY() + backgroundView.imageFrameLayout.getY(); AndroidUtilities.rectTmp.set(iconX, iconY, iconX + backgroundView.imageView.getMeasuredWidth(), iconY + backgroundView.imageView.getMeasuredHeight()); if ((AndroidUtilities.rectTmp.contains(ev.getX(), ev.getY()) || iconInterceptedTouch) && !listView.scrollingByUser) { ev.offsetLocation(-iconX, -iconY); @@ -1155,6 +1155,8 @@ public class PremiumPreviewFragment extends BaseFragment implements Notification } }; imageFrameLayout.addView(imageView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); + imageFrameLayout.setClipChildren(false); + setClipChildren(false); titleView = new TextView(context); titleView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 22); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PrivacySettingsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/PrivacySettingsActivity.java index 590aec6c7..5e74d92db 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PrivacySettingsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PrivacySettingsActivity.java @@ -432,7 +432,7 @@ public class PrivacySettingsActivity extends BaseFragment implements Notificatio showDialog(alertDialog); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } else if (position == contactsSuggestRow) { final TextCheckCell cell = (TextCheckCell) view; @@ -456,7 +456,7 @@ public class PrivacySettingsActivity extends BaseFragment implements Notificatio showDialog(alertDialog); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } else { cell.setChecked(newSuggest = true); @@ -544,7 +544,7 @@ public class PrivacySettingsActivity extends BaseFragment implements Notificatio showDialog(alertDialog); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } }); builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); @@ -554,7 +554,7 @@ public class PrivacySettingsActivity extends BaseFragment implements Notificatio showDialog(alertDialog); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } else if (position == passportRow) { presentFragment(new PassportActivity(PassportActivity.TYPE_PASSWORD, 0, "", "", null, null, null, null, null)); @@ -1096,7 +1096,7 @@ public class PrivacySettingsActivity extends BaseFragment implements Notificatio } else { value = LocaleController.getString("PasswordOff", R.string.PasswordOff); } - textCell2.setTextAndValueAndColorfulIcon(LocaleController.getString("AutoDeleteMessages", R.string.AutoDeleteMessages), value, true, R.drawable.msg_filled_autodelete, getThemedColor(Theme.key_color_lightblue), true); + textCell2.setTextAndValueAndIcon(LocaleController.getString("AutoDeleteMessages", R.string.AutoDeleteMessages), value, true, R.drawable.msg2_autodelete, true); } else if (position == sessionsRow) { String count = ""; if (sessionsActivityPreload.getSessionsCount() == 0) { @@ -1109,7 +1109,7 @@ public class PrivacySettingsActivity extends BaseFragment implements Notificatio count = String.format(LocaleController.getInstance().getCurrentLocale(), "%d", sessionsActivityPreload.getSessionsCount()); } getMessagesController().lastKnownSessionsCount = sessionsActivityPreload.getSessionsCount(); - textCell2.setTextAndValueAndColorfulIcon(LocaleController.getString("SessionsTitle", R.string.SessionsTitle), count, true, R.drawable.msg_filled_devices, getThemedColor(Theme.key_color_yellow), false); + textCell2.setTextAndValueAndIcon(LocaleController.getString("SessionsTitle", R.string.SessionsTitle), count, true, R.drawable.msg2_devices, false); } else if (position == emailLoginRow) { CharSequence val = ""; if (currentPassword == null) { @@ -1128,7 +1128,7 @@ public class PrivacySettingsActivity extends BaseFragment implements Notificatio val = spannable; } textCell2.setPrioritizeTitleOverValue(true); - textCell2.setTextAndSpoilersValueAndColorfulIcon(LocaleController.getString(R.string.EmailLogin), val, R.drawable.msg_filled_email, getThemedColor(Theme.key_color_orange), true); + textCell2.setTextAndSpoilersValueAndIcon(LocaleController.getString(R.string.EmailLogin), val, R.drawable.msg2_email, true); } else if (position == passwordRow) { value = ""; if (currentPassword == null) { @@ -1138,17 +1138,17 @@ public class PrivacySettingsActivity extends BaseFragment implements Notificatio } else { value = LocaleController.getString("PasswordOff", R.string.PasswordOff); } - textCell2.setTextAndValueAndColorfulIcon(LocaleController.getString("TwoStepVerification", R.string.TwoStepVerification), value, true, R.drawable.msg_filled_permissions, getThemedColor(Theme.key_color_blue), true); + textCell2.setTextAndValueAndIcon(LocaleController.getString("TwoStepVerification", R.string.TwoStepVerification), value, true, R.drawable.msg2_permissions, true); } else if (position == passcodeRow) { int icon; if (SharedConfig.passcodeHash.length() != 0) { value = LocaleController.getString("PasswordOn", R.string.PasswordOn); - icon = R.drawable.msg_filled_passcode_on; + icon = R.drawable.msg2_secret; } else { value = LocaleController.getString("PasswordOff", R.string.PasswordOff); - icon = R.drawable.msg_filled_passcode_off; + icon = R.drawable.msg2_secret; } - textCell2.setTextAndValueAndColorfulIcon(LocaleController.getString("Passcode", R.string.Passcode), value, true, icon, getThemedColor(Theme.key_color_green), true); + textCell2.setTextAndValueAndIcon(LocaleController.getString("Passcode", R.string.Passcode), value, true, icon, true); } else if (position == blockedRow) { int totalCount = getMessagesController().totalBlockedCount; if (totalCount == 0) { @@ -1159,7 +1159,7 @@ public class PrivacySettingsActivity extends BaseFragment implements Notificatio showLoading = true; value = ""; } - textCell2.setTextAndValueAndColorfulIcon(LocaleController.getString("BlockedUsers", R.string.BlockedUsers), value, true, R.drawable.msg_filled_blocked, getThemedColor(Theme.key_color_red), true); + textCell2.setTextAndValueAndIcon(LocaleController.getString("BlockedUsers", R.string.BlockedUsers), value, true, R.drawable.msg2_block2, true); } textCell2.setDrawLoading(showLoading, loadingLen, animated); break; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java index 2ac6f59b5..aa25a27ad 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java @@ -64,7 +64,6 @@ import android.view.VelocityTracker; import android.view.View; import android.view.ViewGroup; import android.view.ViewTreeObserver; -import android.view.WindowManager; import android.view.accessibility.AccessibilityNodeInfo; import android.view.animation.AccelerateInterpolator; import android.view.animation.DecelerateInterpolator; @@ -457,6 +456,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. private int dataRow; private int chatRow; private int filtersRow; + private int liteModeRow; private int stickersRow; private int devicesRow; private int devicesSectionRow; @@ -1799,7 +1799,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. showDialog(dialog); TextView button = (TextView) dialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(getThemedColor(Theme.key_dialogTextRed2)); + button.setTextColor(getThemedColor(Theme.key_dialogTextRed)); } } } @@ -1849,7 +1849,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. showDialog(dialog); TextView button = (TextView) dialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(getThemedColor(Theme.key_dialogTextRed2)); + button.setTextColor(getThemedColor(Theme.key_dialogTextRed)); } } else if (id == leave_group) { leaveChatPressed(); @@ -1889,7 +1889,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. alertDialog.show(); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } else if (id == edit_channel) { if (isTopic) { @@ -2164,6 +2164,24 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. int position = avatarsViewPager.getRealPosition(); TLRPC.Photo photo = avatarsViewPager.getPhoto(position); TLRPC.UserFull userFull = getUserInfo(); + if (avatar != null && position == 0) { + imageUpdater.cancel(); + if (avatarUploadingRequest != 0) { + getConnectionsManager().cancelRequest(avatarUploadingRequest, true); + } + allowPullingDown = !AndroidUtilities.isTablet() && !isInLandscapeMode && avatarImage.getImageReceiver().hasNotThumb() && !AndroidUtilities.isAccessibilityScreenReaderEnabled(); + avatar = null; + avatarBig = null; + avatarsViewPager.scrolledByUser = true; + avatarsViewPager.removeUploadingImage(uploadingImageLocation); + avatarsViewPager.setCreateThumbFromParent(false); + updateProfileData(true); + showAvatarProgress(false, true); + getNotificationCenter().postNotificationName(NotificationCenter.updateInterfaces, MessagesController.UPDATE_MASK_ALL); + getNotificationCenter().postNotificationName(NotificationCenter.mainUserInfoChanged); + getUserConfig().saveConfig(true); + return; + } if (hasFallbackPhoto && photo != null && userFull != null && userFull.fallback_photo != null && userFull.fallback_photo.id == photo.id) { userFull.fallback_photo = null; userFull.flags &= ~4194304; @@ -2202,7 +2220,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. showDialog(alertDialog); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(getThemedColor(Theme.key_dialogTextRed2)); + button.setTextColor(getThemedColor(Theme.key_dialogTextRed)); } } else if (id == add_photo) { onWriteButtonClick(); @@ -2660,9 +2678,8 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. @Override protected void onSearchStateChanged(boolean expanded) { - if (SharedConfig.smoothKeyboard) { - AndroidUtilities.removeAdjustResize(getParentActivity(), classGuid); - } + AndroidUtilities.removeAdjustResize(getParentActivity(), classGuid); + listView.stopScroll(); avatarContainer2.setPivotY(avatarContainer.getPivotY() + avatarContainer.getMeasuredHeight() / 2f); avatarContainer2.setPivotX(avatarContainer2.getMeasuredWidth() / 2f); @@ -3038,7 +3055,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. AlertDialog dialog = builder.show(); TextView button = (TextView) dialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } if (position == settingsKeyRow) { Bundle args = new Bundle(); @@ -3247,6 +3264,8 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. presentFragment(new FiltersSetupActivity()); } else if (position == stickersRow) { presentFragment(new StickersActivity(MediaDataController.TYPE_IMAGE, null)); + } else if (position == liteModeRow) { + presentFragment(new LiteModeSettingsActivity()); } else if (position == devicesRow) { presentFragment(new SessionsActivity(0)); } else if (position == questionRow) { @@ -3319,17 +3338,12 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. null, BuildVars.DEBUG_PRIVATE_VERSION || BuildVars.isStandaloneApp() ? LocaleController.getString("DebugMenuCheckAppUpdate", R.string.DebugMenuCheckAppUpdate) : null, LocaleController.getString("DebugMenuReadAllDialogs", R.string.DebugMenuReadAllDialogs), - SharedConfig.pauseMusicOnRecord ? LocaleController.getString("DebugMenuDisablePauseMusic", R.string.DebugMenuDisablePauseMusic) : LocaleController.getString("DebugMenuEnablePauseMusic", R.string.DebugMenuEnablePauseMusic), - BuildVars.DEBUG_VERSION && !AndroidUtilities.isTablet() && Build.VERSION.SDK_INT >= 23 ? (SharedConfig.smoothKeyboard ? LocaleController.getString("DebugMenuDisableSmoothKeyboard", R.string.DebugMenuDisableSmoothKeyboard) : LocaleController.getString("DebugMenuEnableSmoothKeyboard", R.string.DebugMenuEnableSmoothKeyboard)) : null, BuildVars.DEBUG_PRIVATE_VERSION ? (SharedConfig.disableVoiceAudioEffects ? "Enable voip audio effects" : "Disable voip audio effects") : null, - Build.VERSION.SDK_INT >= 21 ? (SharedConfig.noStatusBar ? "Show status bar background" : "Hide status bar background") : null, BuildVars.DEBUG_PRIVATE_VERSION ? "Clean app update" : null, BuildVars.DEBUG_PRIVATE_VERSION ? "Reset suggestions" : null, - BuildVars.DEBUG_PRIVATE_VERSION ? LocaleController.getString(SharedConfig.forceRtmpStream ? R.string.DebugMenuDisableForceRtmpStreamFlag : R.string.DebugMenuEnableForceRtmpStreamFlag) : null, BuildVars.DEBUG_PRIVATE_VERSION ? LocaleController.getString(R.string.DebugMenuClearWebViewCache) : null, Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT ? LocaleController.getString(SharedConfig.debugWebView ? R.string.DebugMenuDisableWebViewDebug : R.string.DebugMenuEnableWebViewDebug) : null, (AndroidUtilities.isTabletInternal() && BuildVars.DEBUG_PRIVATE_VERSION) ? (SharedConfig.forceDisableTabletMode ? "Enable tablet mode" : "Disable tablet mode") : null, - LocaleController.getString(SharedConfig.useLNavigation ? R.string.AltNavigationDisable : R.string.AltNavigationEnable), BuildVars.DEBUG_PRIVATE_VERSION ? LocaleController.getString(SharedConfig.isFloatingDebugActive ? R.string.FloatingDebugDisable : R.string.FloatingDebugEnable) : null, BuildVars.DEBUG_PRIVATE_VERSION ? "Force remove premium suggestions" : null, BuildVars.DEBUG_PRIVATE_VERSION ? "Share device info" : null, @@ -3359,7 +3373,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. getMessagesStorage().clearSentMedia(); SharedConfig.setNoSoundHintShowed(false); SharedPreferences.Editor editor = MessagesController.getGlobalMainSettings().edit(); - editor.remove("archivehint").remove("proximityhint").remove("archivehint_l").remove("gifhint").remove("reminderhint").remove("soundHint").remove("themehint").remove("bganimationhint").remove("filterhint").commit(); + editor.remove("archivehint").remove("proximityhint").remove("archivehint_l").remove("speedhint").remove("gifhint").remove("reminderhint").remove("soundHint").remove("themehint").remove("bganimationhint").remove("filterhint").commit(); MessagesController.getEmojiSettings(currentAccount).edit().remove("featured_hidden").remove("emoji_featured_hidden").commit(); SharedConfig.textSelectionHintShows = 0; SharedConfig.lockRecordAudioVideoHint = 0; @@ -3381,42 +3395,24 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } else if (which == 10) { getMessagesStorage().readAllDialogs(-1); } else if (which == 11) { - SharedConfig.togglePauseMusicOnRecord(); - } else if (which == 12) { - SharedConfig.toggleSmoothKeyboard(); - if (SharedConfig.smoothKeyboard && getParentActivity() != null) { - getParentActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); - } - } else if (which == 13) { SharedConfig.toggleDisableVoiceAudioEffects(); - } else if (which == 14) { - SharedConfig.toggleNoStatusBar(); - if (getParentActivity() != null && Build.VERSION.SDK_INT >= 21) { - if (SharedConfig.noStatusBar) { - getParentActivity().getWindow().setStatusBarColor(0); - } else { - getParentActivity().getWindow().setStatusBarColor(0x33000000); - } - } - } else if (which == 15) { + } else if (which == 12) { SharedConfig.pendingAppUpdate = null; SharedConfig.saveConfig(); NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.appUpdateAvailable); - } else if (which == 16) { + } else if (which == 13) { Set suggestions = getMessagesController().pendingSuggestions; suggestions.add("VALIDATE_PHONE_NUMBER"); suggestions.add("VALIDATE_PASSWORD"); getNotificationCenter().postNotificationName(NotificationCenter.newSuggestionsAvailable); - } else if (which == 17) { - SharedConfig.toggleForceRTMPStream(); - } else if (which == 18) { + } else if (which == 14) { ApplicationLoader.applicationContext.deleteDatabase("webview.db"); ApplicationLoader.applicationContext.deleteDatabase("webviewCache.db"); WebStorage.getInstance().deleteAllData(); - } else if (which == 19) { + } else if (which == 15) { SharedConfig.toggleDebugWebView(); Toast.makeText(getParentActivity(), LocaleController.getString(SharedConfig.debugWebView ? R.string.DebugMenuWebViewDebugEnabled : R.string.DebugMenuWebViewDebugDisabled), Toast.LENGTH_SHORT).show(); - } else if (which == 20) { + } else if (which == 16) { SharedConfig.toggleForceDisableTabletMode(); Activity activity = AndroidUtilities.findActivity(context); @@ -3425,13 +3421,10 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. activity.finishAffinity(); // Finishes all activities. activity.startActivity(intent); // Start the launch activity System.exit(0); - } else if (which == 21) { - SharedConfig.useLNavigation = !SharedConfig.useLNavigation; - SharedConfig.saveConfig(); - getParentActivity().recreate(); - } else if (which == 22) { + } else if (which == 17) { FloatingDebugController.setActive((LaunchActivity) getParentActivity(), !FloatingDebugController.isActive()); - } else if (which == 23) { + } else if (which == 18) { + getMessagesController().loadAppConfig(); TLRPC.TL_help_dismissSuggestion req = new TLRPC.TL_help_dismissSuggestion(); req.suggestion = "VALIDATE_PHONE_NUMBER"; req.peer = new TLRPC.TL_inputPeerEmpty(); @@ -3443,7 +3436,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. getMessagesController().loadAppConfig(); }); }); - } else if (which == 24) { + } else if (which == 19) { int androidVersion = Build.VERSION.SDK_INT; int cpuCount = ConnectionsManager.CPU_COUNT; int memoryClass = ((ActivityManager) ApplicationLoader.applicationContext.getSystemService(Context.ACTIVITY_SERVICE)).getMemoryClass(); @@ -3540,7 +3533,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. }, 250); } }); - } else if (which == 25) { + } else if (which == 20) { AlertDialog.Builder builder2 = new AlertDialog.Builder(getParentActivity(), resourcesProvider); builder2.setTitle("Force performance class"); int currentClass = SharedConfig.getDevicePerformanceClass(); @@ -3649,7 +3642,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. showDialog(dialog); TextView button = (TextView) dialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } return true; }); @@ -4769,7 +4762,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. AlertDialog alertDialog = builder.create(); showDialog(alertDialog); if (hasRemove) { - alertDialog.setItemColor(items.size() - 1, getThemedColor(Theme.key_dialogTextRed2), getThemedColor(Theme.key_dialogRedIcon)); + alertDialog.setItemColor(items.size() - 1, getThemedColor(Theme.key_dialogTextRed), getThemedColor(Theme.key_dialogRedIcon)); } } else { if (participant.user_id == getUserConfig().getClientUserId()) { @@ -5439,47 +5432,53 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } fragment.setDelegate((users, fwdCount) -> { HashSet currentParticipants = new HashSet<>(); + ArrayList addedUsers = new ArrayList<>(); if (chatInfo.participants.participants != null) { for (int i = 0; i < chatInfo.participants.participants.size(); i++) { currentParticipants.add(chatInfo.participants.participants.get(i).user_id); } } - int N = users.size(); - int[] finished = new int[1]; - for (int a = 0; a < N; a++) { - TLRPC.User user = users.get(a); - getMessagesController().addUserToChat(chatId, user, fwdCount, null, ProfileActivity.this, () -> { - if (++finished[0] == N) { - if (fragmentView == null || getParentActivity() == null) { - return; - } - BulletinFactory.of(ProfileActivity.this).createUsersAddedBulletin(users, currentChat).show(); + getMessagesController().addUsersToChat(currentChat, ProfileActivity.this, users, fwdCount, user -> { + addedUsers.add(user); + }, restrictedUser -> { + for (int i = 0; i < chatInfo.participants.participants.size(); i++) { + if (chatInfo.participants.participants.get(i).user_id == restrictedUser.id) { + chatInfo.participants.participants.remove(i); + updateListAnimated(true); + break; } - }); - if (!currentParticipants.contains(user.id)) { - if (chatInfo.participants == null) { - chatInfo.participants = new TLRPC.TL_chatParticipants(); - } - if (ChatObject.isChannel(currentChat)) { - TLRPC.TL_chatChannelParticipant channelParticipant1 = new TLRPC.TL_chatChannelParticipant(); - channelParticipant1.channelParticipant = new TLRPC.TL_channelParticipant(); - channelParticipant1.channelParticipant.inviter_id = getUserConfig().getClientUserId(); - channelParticipant1.channelParticipant.peer = new TLRPC.TL_peerUser(); - channelParticipant1.channelParticipant.peer.user_id = user.id; - channelParticipant1.channelParticipant.date = getConnectionsManager().getCurrentTime(); - channelParticipant1.user_id = user.id; - chatInfo.participants.participants.add(channelParticipant1); - } else { - TLRPC.ChatParticipant participant = new TLRPC.TL_chatParticipant(); - participant.user_id = user.id; - participant.inviter_id = getAccountInstance().getUserConfig().clientUserId; - chatInfo.participants.participants.add(participant); - } - chatInfo.participants_count++; - getMessagesController().putUser(user, false); } - } - updateListAnimated(true); + }, () -> { + int N = addedUsers.size(); + int[] finished = new int[1]; + for (int a = 0; a < N; a++) { + TLRPC.User user = addedUsers.get(a); + if (!currentParticipants.contains(user.id)) { + if (chatInfo.participants == null) { + chatInfo.participants = new TLRPC.TL_chatParticipants(); + } + if (ChatObject.isChannel(currentChat)) { + TLRPC.TL_chatChannelParticipant channelParticipant1 = new TLRPC.TL_chatChannelParticipant(); + channelParticipant1.channelParticipant = new TLRPC.TL_channelParticipant(); + channelParticipant1.channelParticipant.inviter_id = getUserConfig().getClientUserId(); + channelParticipant1.channelParticipant.peer = new TLRPC.TL_peerUser(); + channelParticipant1.channelParticipant.peer.user_id = user.id; + channelParticipant1.channelParticipant.date = getConnectionsManager().getCurrentTime(); + channelParticipant1.user_id = user.id; + chatInfo.participants.participants.add(channelParticipant1); + } else { + TLRPC.ChatParticipant participant = new TLRPC.TL_chatParticipant(); + participant.user_id = user.id; + participant.inviter_id = getAccountInstance().getUserConfig().clientUserId; + chatInfo.participants.participants.add(participant); + } + chatInfo.participants_count++; + getMessagesController().putUser(user, false); + } + } + updateListAnimated(true); + }); + }); presentFragment(fragment); } @@ -6993,6 +6992,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. dataRow = -1; chatRow = -1; filtersRow = -1; + liteModeRow = -1; stickersRow = -1; devicesRow = -1; devicesSectionRow = -1; @@ -7088,11 +7088,12 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } settingsSectionRow2 = rowCount++; - notificationRow = rowCount++; - privacyRow = rowCount++; - dataRow = rowCount++; chatRow = rowCount++; - stickersRow = rowCount++; + privacyRow = rowCount++; + notificationRow = rowCount++; + dataRow = rowCount++; + liteModeRow = rowCount++; +// stickersRow = rowCount++; if (getMessagesController().filtersEnabled || !getMessagesController().dialogFilters.isEmpty()) { filtersRow = rowCount++; } @@ -8456,10 +8457,14 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. avatarProgressView.setProgress(0.0f); } + int avatarUploadingRequest; @Override public void didUploadPhoto(final TLRPC.InputFile photo, final TLRPC.InputFile video, double videoStartTimestamp, String videoPath, TLRPC.PhotoSize bigSize, final TLRPC.PhotoSize smallSize, boolean isVideo, TLRPC.VideoSize emojiMarkup) { AndroidUtilities.runOnUIThread(() -> { if (photo != null || video != null || emojiMarkup != null) { + if (avatar == null) { + return; + } TLRPC.TL_photos_uploadProfilePhoto req = new TLRPC.TL_photos_uploadProfilePhoto(); if (photo != null) { req.file = photo; @@ -8475,7 +8480,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. req.video_emoji_markup = emojiMarkup; req.flags |= 16; } - getConnectionsManager().sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(() -> { + avatarUploadingRequest = getConnectionsManager().sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(() -> { if (error == null) { TLRPC.User user = getMessagesController().getUser(getUserConfig().getClientUserId()); if (user == null) { @@ -9218,26 +9223,28 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. textCell.setColors(null, Theme.key_windowBackgroundWhiteRedText5); textCell.setColors(null, Theme.key_windowBackgroundWhiteRedText5); } else if (position == languageRow) { - textCell.setTextAndIcon(LocaleController.getString("Language", R.string.Language), R.drawable.msg_language, false); + textCell.setTextAndValueAndIcon(LocaleController.getString("Language", R.string.Language), LocaleController.getCurrentLanguageName(), false, R.drawable.msg2_language, false); textCell.setImageLeft(23); } else if (position == notificationRow) { - textCell.setTextAndIcon(LocaleController.getString("NotificationsAndSounds", R.string.NotificationsAndSounds), R.drawable.msg_notifications, true); + textCell.setTextAndIcon(LocaleController.getString("NotificationsAndSounds", R.string.NotificationsAndSounds), R.drawable.msg2_notifications, true); } else if (position == privacyRow) { - textCell.setTextAndIcon(LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg_secret, true); + textCell.setTextAndIcon(LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg2_secret, true); } else if (position == dataRow) { - textCell.setTextAndIcon(LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, true); + textCell.setTextAndIcon(LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg2_data, true); } else if (position == chatRow) { - textCell.setTextAndIcon(LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg_msgbubble3, true); + textCell.setTextAndIcon(LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg2_discussion, true); } else if (position == filtersRow) { - textCell.setTextAndIcon(LocaleController.getString("Filters", R.string.Filters), R.drawable.msg_folders, true); + textCell.setTextAndIcon(LocaleController.getString("Filters", R.string.Filters), R.drawable.msg2_folder, true); } else if (position == stickersRow) { - textCell.setTextAndIcon(LocaleController.getString(R.string.StickersName), R.drawable.msg_sticker, true); + textCell.setTextAndIcon(LocaleController.getString(R.string.StickersName), R.drawable.msg2_sticker, true); + } else if (position == liteModeRow) { + textCell.setTextAndIcon(LocaleController.getString(R.string.PowerUsage), R.drawable.msg2_battery, true); } else if (position == questionRow) { - textCell.setTextAndIcon(LocaleController.getString("AskAQuestion", R.string.AskAQuestion), R.drawable.msg_ask_question, true); + textCell.setTextAndIcon(LocaleController.getString("AskAQuestion", R.string.AskAQuestion), R.drawable.msg2_ask_question, true); } else if (position == faqRow) { - textCell.setTextAndIcon(LocaleController.getString("TelegramFAQ", R.string.TelegramFAQ), R.drawable.msg_help, true); + textCell.setTextAndIcon(LocaleController.getString("TelegramFAQ", R.string.TelegramFAQ), R.drawable.msg2_help, true); } else if (position == policyRow) { - textCell.setTextAndIcon(LocaleController.getString("PrivacyPolicy", R.string.PrivacyPolicy), R.drawable.msg_policy, false); + textCell.setTextAndIcon(LocaleController.getString("PrivacyPolicy", R.string.PrivacyPolicy), R.drawable.msg2_policy, false); } else if (position == sendLogsRow) { textCell.setText(LocaleController.getString("DebugSendLogs", R.string.DebugSendLogs), true); } else if (position == sendLastLogsRow) { @@ -9247,7 +9254,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } else if (position == switchBackendRow) { textCell.setText("Switch Backend", false); } else if (position == devicesRow) { - textCell.setTextAndIcon(LocaleController.getString("Devices", R.string.Devices), R.drawable.menu_devices, true); + textCell.setTextAndIcon(LocaleController.getString("Devices", R.string.Devices), R.drawable.msg2_devices, true); } else if (position == setAvatarRow) { cellCameraDrawable.setCustomEndFrame(86); cellCameraDrawable.setCurrentFrame(85, false); @@ -9465,7 +9472,8 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. position == versionRow || position == dataRow || position == chatRow || position == questionRow || position == devicesRow || position == filtersRow || position == stickersRow || position == faqRow || position == policyRow || position == sendLogsRow || position == sendLastLogsRow || - position == clearLogsRow || position == switchBackendRow || position == setAvatarRow || position == addToGroupButtonRow || position == premiumRow; + position == clearLogsRow || position == switchBackendRow || position == setAvatarRow || + position == addToGroupButtonRow || position == premiumRow || position == liteModeRow; } if (holder.itemView instanceof UserCell) { UserCell userCell = (UserCell) holder.itemView; @@ -9507,7 +9515,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. position == questionRow || position == devicesRow || position == filtersRow || position == stickersRow || position == faqRow || position == policyRow || position == sendLogsRow || position == sendLastLogsRow || position == clearLogsRow || position == switchBackendRow || position == setAvatarRow || position == addToGroupButtonRow || - position == addToContactsRow) { + position == addToContactsRow || position == liteModeRow) { return VIEW_TYPE_TEXT; } else if (position == notificationsDividerRow) { return VIEW_TYPE_DIVIDER; @@ -9733,88 +9741,88 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } presentFragment(new PrivacyControlActivity(ContactsController.PRIVACY_RULES_TYPE_VOICE_MESSAGES, true)); }), - new SearchResult(108, LocaleController.getString("Passcode", R.string.Passcode), LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg_secret, () -> presentFragment(PasscodeActivity.determineOpenFragment())), - new SearchResult(109, LocaleController.getString("TwoStepVerification", R.string.TwoStepVerification), LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg_secret, () -> presentFragment(new TwoStepVerificationActivity())), - new SearchResult(110, LocaleController.getString("SessionsTitle", R.string.SessionsTitle), R.drawable.msg_secret, () -> presentFragment(new SessionsActivity(0))), - getMessagesController().autoarchiveAvailable ? new SearchResult(121, LocaleController.getString("ArchiveAndMute", R.string.ArchiveAndMute), "newChatsRow", LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg_secret, () -> presentFragment(new PrivacySettingsActivity())) : null, - new SearchResult(112, LocaleController.getString("DeleteAccountIfAwayFor2", R.string.DeleteAccountIfAwayFor2), "deleteAccountRow", LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg_secret, () -> presentFragment(new PrivacySettingsActivity())), - new SearchResult(113, LocaleController.getString("PrivacyPaymentsClear", R.string.PrivacyPaymentsClear), "paymentsClearRow", LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg_secret, () -> presentFragment(new PrivacySettingsActivity())), - new SearchResult(114, LocaleController.getString("WebSessionsTitle", R.string.WebSessionsTitle), LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg_secret, () -> presentFragment(new SessionsActivity(1))), - new SearchResult(115, LocaleController.getString("SyncContactsDelete", R.string.SyncContactsDelete), "contactsDeleteRow", LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg_secret, () -> presentFragment(new PrivacySettingsActivity())), - new SearchResult(116, LocaleController.getString("SyncContacts", R.string.SyncContacts), "contactsSyncRow", LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg_secret, () -> presentFragment(new PrivacySettingsActivity())), - new SearchResult(117, LocaleController.getString("SuggestContacts", R.string.SuggestContacts), "contactsSuggestRow", LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg_secret, () -> presentFragment(new PrivacySettingsActivity())), - new SearchResult(118, LocaleController.getString("MapPreviewProvider", R.string.MapPreviewProvider), "secretMapRow", LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg_secret, () -> presentFragment(new PrivacySettingsActivity())), - new SearchResult(119, LocaleController.getString("SecretWebPage", R.string.SecretWebPage), "secretWebpageRow", LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg_secret, () -> presentFragment(new PrivacySettingsActivity())), + new SearchResult(108, LocaleController.getString("Passcode", R.string.Passcode), LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg2_secret, () -> presentFragment(PasscodeActivity.determineOpenFragment())), + new SearchResult(109, LocaleController.getString("TwoStepVerification", R.string.TwoStepVerification), LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg2_secret, () -> presentFragment(new TwoStepVerificationActivity())), + new SearchResult(110, LocaleController.getString("SessionsTitle", R.string.SessionsTitle), R.drawable.msg2_secret, () -> presentFragment(new SessionsActivity(0))), + getMessagesController().autoarchiveAvailable ? new SearchResult(121, LocaleController.getString("ArchiveAndMute", R.string.ArchiveAndMute), "newChatsRow", LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg2_secret, () -> presentFragment(new PrivacySettingsActivity())) : null, + new SearchResult(112, LocaleController.getString("DeleteAccountIfAwayFor2", R.string.DeleteAccountIfAwayFor2), "deleteAccountRow", LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg2_secret, () -> presentFragment(new PrivacySettingsActivity())), + new SearchResult(113, LocaleController.getString("PrivacyPaymentsClear", R.string.PrivacyPaymentsClear), "paymentsClearRow", LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg2_secret, () -> presentFragment(new PrivacySettingsActivity())), + new SearchResult(114, LocaleController.getString("WebSessionsTitle", R.string.WebSessionsTitle), LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg2_secret, () -> presentFragment(new SessionsActivity(1))), + new SearchResult(115, LocaleController.getString("SyncContactsDelete", R.string.SyncContactsDelete), "contactsDeleteRow", LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg2_secret, () -> presentFragment(new PrivacySettingsActivity())), + new SearchResult(116, LocaleController.getString("SyncContacts", R.string.SyncContacts), "contactsSyncRow", LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg2_secret, () -> presentFragment(new PrivacySettingsActivity())), + new SearchResult(117, LocaleController.getString("SuggestContacts", R.string.SuggestContacts), "contactsSuggestRow", LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg2_secret, () -> presentFragment(new PrivacySettingsActivity())), + new SearchResult(118, LocaleController.getString("MapPreviewProvider", R.string.MapPreviewProvider), "secretMapRow", LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg2_secret, () -> presentFragment(new PrivacySettingsActivity())), + new SearchResult(119, LocaleController.getString("SecretWebPage", R.string.SecretWebPage), "secretWebpageRow", LocaleController.getString("PrivacySettings", R.string.PrivacySettings), R.drawable.msg2_secret, () -> presentFragment(new PrivacySettingsActivity())), - new SearchResult(120, LocaleController.getString(R.string.Devices), R.drawable.msg_devices, () -> presentFragment(new SessionsActivity(0))), - new SearchResult(121, LocaleController.getString(R.string.TerminateAllSessions), "terminateAllSessionsRow", LocaleController.getString(R.string.Devices), R.drawable.msg_devices, () -> presentFragment(new SessionsActivity(0))), - new SearchResult(122, LocaleController.getString(R.string.LinkDesktopDevice), LocaleController.getString(R.string.Devices), R.drawable.msg_devices, () -> presentFragment(new SessionsActivity(0).setHighlightLinkDesktopDevice())), + new SearchResult(120, LocaleController.getString(R.string.Devices), R.drawable.msg2_devices, () -> presentFragment(new SessionsActivity(0))), + new SearchResult(121, LocaleController.getString(R.string.TerminateAllSessions), "terminateAllSessionsRow", LocaleController.getString(R.string.Devices), R.drawable.msg2_devices, () -> presentFragment(new SessionsActivity(0))), + new SearchResult(122, LocaleController.getString(R.string.LinkDesktopDevice), LocaleController.getString(R.string.Devices), R.drawable.msg2_devices, () -> presentFragment(new SessionsActivity(0).setHighlightLinkDesktopDevice())), - new SearchResult(200, LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, () -> presentFragment(new DataSettingsActivity())), - new SearchResult(201, LocaleController.getString("DataUsage", R.string.DataUsage), "usageSectionRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, () -> presentFragment(new DataSettingsActivity())), - new SearchResult(202, LocaleController.getString("StorageUsage", R.string.StorageUsage), LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, () -> presentFragment(new CacheControlActivity())), - new SearchResult(203, LocaleController.getString("KeepMedia", R.string.KeepMedia), "keepMediaRow", LocaleController.getString("DataSettings", R.string.DataSettings), LocaleController.getString("StorageUsage", R.string.StorageUsage), R.drawable.msg_data, () -> presentFragment(new CacheControlActivity())), - new SearchResult(204, LocaleController.getString("ClearMediaCache", R.string.ClearMediaCache), "cacheRow", LocaleController.getString("DataSettings", R.string.DataSettings), LocaleController.getString("StorageUsage", R.string.StorageUsage), R.drawable.msg_data, () -> presentFragment(new CacheControlActivity())), - new SearchResult(205, LocaleController.getString("LocalDatabase", R.string.LocalDatabase), "databaseRow", LocaleController.getString("DataSettings", R.string.DataSettings), LocaleController.getString("StorageUsage", R.string.StorageUsage), R.drawable.msg_data, () -> presentFragment(new CacheControlActivity())), - new SearchResult(206, LocaleController.getString("NetworkUsage", R.string.NetworkUsage), LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, () -> presentFragment(new DataUsage2Activity())), - new SearchResult(207, LocaleController.getString("AutomaticMediaDownload", R.string.AutomaticMediaDownload), "mediaDownloadSectionRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, () -> presentFragment(new DataSettingsActivity())), - new SearchResult(208, LocaleController.getString("WhenUsingMobileData", R.string.WhenUsingMobileData), LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, () -> presentFragment(new DataAutoDownloadActivity(0))), - new SearchResult(209, LocaleController.getString("WhenConnectedOnWiFi", R.string.WhenConnectedOnWiFi), LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, () -> presentFragment(new DataAutoDownloadActivity(1))), - new SearchResult(210, LocaleController.getString("WhenRoaming", R.string.WhenRoaming), LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, () -> presentFragment(new DataAutoDownloadActivity(2))), - new SearchResult(211, LocaleController.getString("ResetAutomaticMediaDownload", R.string.ResetAutomaticMediaDownload), "resetDownloadRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, () -> presentFragment(new DataSettingsActivity())), - new SearchResult(212, LocaleController.getString("AutoplayMedia", R.string.AutoplayMedia), "autoplayHeaderRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, () -> presentFragment(new DataSettingsActivity())), - new SearchResult(213, LocaleController.getString("AutoplayGIF", R.string.AutoplayGIF), "autoplayGifsRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, () -> presentFragment(new DataSettingsActivity())), - new SearchResult(214, LocaleController.getString("AutoplayVideo", R.string.AutoplayVideo), "autoplayVideoRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, () -> presentFragment(new DataSettingsActivity())), - new SearchResult(215, LocaleController.getString("Streaming", R.string.Streaming), "streamSectionRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, () -> presentFragment(new DataSettingsActivity())), - new SearchResult(216, LocaleController.getString("EnableStreaming", R.string.EnableStreaming), "enableStreamRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, () -> presentFragment(new DataSettingsActivity())), - new SearchResult(217, LocaleController.getString("Calls", R.string.Calls), "callsSectionRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, () -> presentFragment(new DataSettingsActivity())), - new SearchResult(218, LocaleController.getString("VoipUseLessData", R.string.VoipUseLessData), "useLessDataForCallsRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, () -> presentFragment(new DataSettingsActivity())), - new SearchResult(219, LocaleController.getString("VoipQuickReplies", R.string.VoipQuickReplies), "quickRepliesRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, () -> presentFragment(new DataSettingsActivity())), - new SearchResult(220, LocaleController.getString("ProxySettings", R.string.ProxySettings), LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, () -> presentFragment(new ProxyListActivity())), - new SearchResult(221, LocaleController.getString("UseProxyForCalls", R.string.UseProxyForCalls), "callsRow", LocaleController.getString("DataSettings", R.string.DataSettings), LocaleController.getString("ProxySettings", R.string.ProxySettings), R.drawable.msg_data, () -> presentFragment(new ProxyListActivity())), - new SearchResult(111, LocaleController.getString("PrivacyDeleteCloudDrafts", R.string.PrivacyDeleteCloudDrafts), "clearDraftsRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg_data, () -> presentFragment(new DataSettingsActivity())), - new SearchResult(222, LocaleController.getString(R.string.SaveToGallery), "saveToGallerySectionRow", LocaleController.getString(R.string.DataSettings), R.drawable.msg_data, () -> presentFragment(new DataSettingsActivity())), - new SearchResult(223, LocaleController.getString(R.string.SaveToGalleryPrivate), "saveToGalleryPeerRow", LocaleController.getString(R.string.DataSettings), LocaleController.getString(R.string.SaveToGallery), R.drawable.msg_data, () -> presentFragment(new DataSettingsActivity())), - new SearchResult(224, LocaleController.getString(R.string.SaveToGalleryGroups), "saveToGalleryGroupsRow", LocaleController.getString(R.string.DataSettings), LocaleController.getString(R.string.SaveToGallery), R.drawable.msg_data, () -> presentFragment(new DataSettingsActivity())), - new SearchResult(225, LocaleController.getString(R.string.SaveToGalleryChannels), "saveToGalleryChannelsRow", LocaleController.getString(R.string.DataSettings), LocaleController.getString(R.string.SaveToGallery), R.drawable.msg_data, () -> presentFragment(new DataSettingsActivity())), + new SearchResult(200, LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg2_data, () -> presentFragment(new DataSettingsActivity())), + new SearchResult(201, LocaleController.getString("DataUsage", R.string.DataUsage), "usageSectionRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg2_data, () -> presentFragment(new DataSettingsActivity())), + new SearchResult(202, LocaleController.getString("StorageUsage", R.string.StorageUsage), LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg2_data, () -> presentFragment(new CacheControlActivity())), + new SearchResult(203, LocaleController.getString("KeepMedia", R.string.KeepMedia), "keepMediaRow", LocaleController.getString("DataSettings", R.string.DataSettings), LocaleController.getString("StorageUsage", R.string.StorageUsage), R.drawable.msg2_data, () -> presentFragment(new CacheControlActivity())), + new SearchResult(204, LocaleController.getString("ClearMediaCache", R.string.ClearMediaCache), "cacheRow", LocaleController.getString("DataSettings", R.string.DataSettings), LocaleController.getString("StorageUsage", R.string.StorageUsage), R.drawable.msg2_data, () -> presentFragment(new CacheControlActivity())), + new SearchResult(205, LocaleController.getString("LocalDatabase", R.string.LocalDatabase), "databaseRow", LocaleController.getString("DataSettings", R.string.DataSettings), LocaleController.getString("StorageUsage", R.string.StorageUsage), R.drawable.msg2_data, () -> presentFragment(new CacheControlActivity())), + new SearchResult(206, LocaleController.getString("NetworkUsage", R.string.NetworkUsage), LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg2_data, () -> presentFragment(new DataUsage2Activity())), + new SearchResult(207, LocaleController.getString("AutomaticMediaDownload", R.string.AutomaticMediaDownload), "mediaDownloadSectionRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg2_data, () -> presentFragment(new DataSettingsActivity())), + new SearchResult(208, LocaleController.getString("WhenUsingMobileData", R.string.WhenUsingMobileData), LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg2_data, () -> presentFragment(new DataAutoDownloadActivity(0))), + new SearchResult(209, LocaleController.getString("WhenConnectedOnWiFi", R.string.WhenConnectedOnWiFi), LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg2_data, () -> presentFragment(new DataAutoDownloadActivity(1))), + new SearchResult(210, LocaleController.getString("WhenRoaming", R.string.WhenRoaming), LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg2_data, () -> presentFragment(new DataAutoDownloadActivity(2))), + new SearchResult(211, LocaleController.getString("ResetAutomaticMediaDownload", R.string.ResetAutomaticMediaDownload), "resetDownloadRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg2_data, () -> presentFragment(new DataSettingsActivity())), + new SearchResult(212, LocaleController.getString("AutoplayMedia", R.string.AutoplayMedia), "autoplayHeaderRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg2_data, () -> presentFragment(new DataSettingsActivity())), + new SearchResult(213, LocaleController.getString("AutoplayGIF", R.string.AutoplayGIF), "autoplayGifsRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg2_data, () -> presentFragment(new DataSettingsActivity())), + new SearchResult(214, LocaleController.getString("AutoplayVideo", R.string.AutoplayVideo), "autoplayVideoRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg2_data, () -> presentFragment(new DataSettingsActivity())), + new SearchResult(215, LocaleController.getString("Streaming", R.string.Streaming), "streamSectionRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg2_data, () -> presentFragment(new DataSettingsActivity())), + new SearchResult(216, LocaleController.getString("EnableStreaming", R.string.EnableStreaming), "enableStreamRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg2_data, () -> presentFragment(new DataSettingsActivity())), + new SearchResult(217, LocaleController.getString("Calls", R.string.Calls), "callsSectionRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg2_data, () -> presentFragment(new DataSettingsActivity())), + new SearchResult(218, LocaleController.getString("VoipUseLessData", R.string.VoipUseLessData), "useLessDataForCallsRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg2_data, () -> presentFragment(new DataSettingsActivity())), + new SearchResult(219, LocaleController.getString("VoipQuickReplies", R.string.VoipQuickReplies), "quickRepliesRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg2_data, () -> presentFragment(new DataSettingsActivity())), + new SearchResult(220, LocaleController.getString("ProxySettings", R.string.ProxySettings), LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg2_data, () -> presentFragment(new ProxyListActivity())), + new SearchResult(221, LocaleController.getString("UseProxyForCalls", R.string.UseProxyForCalls), "callsRow", LocaleController.getString("DataSettings", R.string.DataSettings), LocaleController.getString("ProxySettings", R.string.ProxySettings), R.drawable.msg2_data, () -> presentFragment(new ProxyListActivity())), + new SearchResult(111, LocaleController.getString("PrivacyDeleteCloudDrafts", R.string.PrivacyDeleteCloudDrafts), "clearDraftsRow", LocaleController.getString("DataSettings", R.string.DataSettings), R.drawable.msg2_data, () -> presentFragment(new DataSettingsActivity())), + new SearchResult(222, LocaleController.getString(R.string.SaveToGallery), "saveToGallerySectionRow", LocaleController.getString(R.string.DataSettings), R.drawable.msg2_data, () -> presentFragment(new DataSettingsActivity())), + new SearchResult(223, LocaleController.getString(R.string.SaveToGalleryPrivate), "saveToGalleryPeerRow", LocaleController.getString(R.string.DataSettings), LocaleController.getString(R.string.SaveToGallery), R.drawable.msg2_data, () -> presentFragment(new DataSettingsActivity())), + new SearchResult(224, LocaleController.getString(R.string.SaveToGalleryGroups), "saveToGalleryGroupsRow", LocaleController.getString(R.string.DataSettings), LocaleController.getString(R.string.SaveToGallery), R.drawable.msg2_data, () -> presentFragment(new DataSettingsActivity())), + new SearchResult(225, LocaleController.getString(R.string.SaveToGalleryChannels), "saveToGalleryChannelsRow", LocaleController.getString(R.string.DataSettings), LocaleController.getString(R.string.SaveToGallery), R.drawable.msg2_data, () -> presentFragment(new DataSettingsActivity())), - new SearchResult(300, LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg_msgbubble3, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), - new SearchResult(301, LocaleController.getString("TextSizeHeader", R.string.TextSizeHeader), "textSizeHeaderRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg_msgbubble3, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), - new SearchResult(302, LocaleController.getString(R.string.ChangeChatBackground), LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg_msgbubble3, () -> presentFragment(new WallpapersListActivity(WallpapersListActivity.TYPE_ALL))), - new SearchResult(303, LocaleController.getString("SetColor", R.string.SetColor), null, LocaleController.getString("ChatSettings", R.string.ChatSettings), LocaleController.getString("ChatBackground", R.string.ChatBackground), R.drawable.msg_msgbubble3, () -> presentFragment(new WallpapersListActivity(WallpapersListActivity.TYPE_COLOR))), - new SearchResult(304, LocaleController.getString("ResetChatBackgrounds", R.string.ResetChatBackgrounds), "resetRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), LocaleController.getString("ChatBackground", R.string.ChatBackground), R.drawable.msg_msgbubble3, () -> presentFragment(new WallpapersListActivity(WallpapersListActivity.TYPE_ALL))), - new SearchResult(306, LocaleController.getString("ColorTheme", R.string.ColorTheme), "themeHeaderRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg_msgbubble3, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), - new SearchResult(319, LocaleController.getString(R.string.BrowseThemes), null, LocaleController.getString(R.string.ChatSettings), R.drawable.msg_msgbubble3, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_THEMES_BROWSER))), - new SearchResult(320, LocaleController.getString(R.string.CreateNewTheme), "createNewThemeRow", LocaleController.getString(R.string.ChatSettings), LocaleController.getString(R.string.BrowseThemes), R.drawable.msg_msgbubble3, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_THEMES_BROWSER))), - new SearchResult(321, LocaleController.getString(R.string.BubbleRadius), "bubbleRadiusHeaderRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg_msgbubble3, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), - new SearchResult(322, LocaleController.getString(R.string.ChatList), "chatListHeaderRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg_msgbubble3, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), - new SearchResult(323, LocaleController.getString(R.string.ChatListSwipeGesture), "swipeGestureHeaderRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg_msgbubble3, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), - new SearchResult(324, LocaleController.getString(R.string.AppIcon), "appIconHeaderRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg_msgbubble3, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), - new SearchResult(305, LocaleController.getString("AutoNightTheme", R.string.AutoNightTheme), LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg_msgbubble3, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_NIGHT))), - new SearchResult(307, LocaleController.getString("ChromeCustomTabs", R.string.ChromeCustomTabs), "customTabsRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg_msgbubble3, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), - new SearchResult(308, LocaleController.getString("DirectShare", R.string.DirectShare), "directShareRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg_msgbubble3, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), - new SearchResult(309, LocaleController.getString("EnableAnimations", R.string.EnableAnimations), "enableAnimationsRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg_msgbubble3, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), - new SearchResult(310, LocaleController.getString("RaiseToSpeak", R.string.RaiseToSpeak), "raiseToSpeakRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg_msgbubble3, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), - new SearchResult(325, LocaleController.getString(R.string.MicrophoneForVoiceMessages), "bluetoothScoRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg_msgbubble3, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), - new SearchResult(311, LocaleController.getString("SendByEnter", R.string.SendByEnter), "sendByEnterRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg_msgbubble3, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), - SharedConfig.canBlurChat() ? new SearchResult(326, LocaleController.getString(R.string.BlurInChat), "chatBlurRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg_msgbubble3, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))) : null, - new SearchResult(318, LocaleController.getString("DistanceUnits", R.string.DistanceUnits), "distanceRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg_msgbubble3, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), + new SearchResult(300, LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg2_discussion, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), + new SearchResult(301, LocaleController.getString("TextSizeHeader", R.string.TextSizeHeader), "textSizeHeaderRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg2_discussion, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), + new SearchResult(302, LocaleController.getString(R.string.ChangeChatBackground), LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg2_discussion, () -> presentFragment(new WallpapersListActivity(WallpapersListActivity.TYPE_ALL))), + new SearchResult(303, LocaleController.getString("SetColor", R.string.SetColor), null, LocaleController.getString("ChatSettings", R.string.ChatSettings), LocaleController.getString("ChatBackground", R.string.ChatBackground), R.drawable.msg2_discussion, () -> presentFragment(new WallpapersListActivity(WallpapersListActivity.TYPE_COLOR))), + new SearchResult(304, LocaleController.getString("ResetChatBackgrounds", R.string.ResetChatBackgrounds), "resetRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), LocaleController.getString("ChatBackground", R.string.ChatBackground), R.drawable.msg2_discussion, () -> presentFragment(new WallpapersListActivity(WallpapersListActivity.TYPE_ALL))), + new SearchResult(306, LocaleController.getString("ColorTheme", R.string.ColorTheme), "themeHeaderRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg2_discussion, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), + new SearchResult(319, LocaleController.getString(R.string.BrowseThemes), null, LocaleController.getString(R.string.ChatSettings), R.drawable.msg2_discussion, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_THEMES_BROWSER))), + new SearchResult(320, LocaleController.getString(R.string.CreateNewTheme), "createNewThemeRow", LocaleController.getString(R.string.ChatSettings), LocaleController.getString(R.string.BrowseThemes), R.drawable.msg2_discussion, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_THEMES_BROWSER))), + new SearchResult(321, LocaleController.getString(R.string.BubbleRadius), "bubbleRadiusHeaderRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg2_discussion, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), + new SearchResult(322, LocaleController.getString(R.string.ChatList), "chatListHeaderRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg2_discussion, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), + new SearchResult(323, LocaleController.getString(R.string.ChatListSwipeGesture), "swipeGestureHeaderRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg2_discussion, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), + new SearchResult(324, LocaleController.getString(R.string.AppIcon), "appIconHeaderRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg2_discussion, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), + new SearchResult(305, LocaleController.getString("AutoNightTheme", R.string.AutoNightTheme), LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg2_discussion, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_NIGHT))), + new SearchResult(307, LocaleController.getString("ChromeCustomTabs", R.string.ChromeCustomTabs), "customTabsRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg2_discussion, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), + new SearchResult(308, LocaleController.getString("DirectShare", R.string.DirectShare), "directShareRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg2_discussion, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), + new SearchResult(309, LocaleController.getString("EnableAnimations", R.string.EnableAnimations), "enableAnimationsRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg2_discussion, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), + new SearchResult(310, LocaleController.getString("RaiseToSpeak", R.string.RaiseToSpeak), "raiseToSpeakRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg2_discussion, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), + new SearchResult(325, LocaleController.getString(R.string.MicrophoneForVoiceMessages), "bluetoothScoRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg2_discussion, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), + new SearchResult(311, LocaleController.getString("SendByEnter", R.string.SendByEnter), "sendByEnterRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg2_discussion, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), + SharedConfig.canBlurChat() ? new SearchResult(326, LocaleController.getString(R.string.BlurInChat), "chatBlurRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg2_discussion, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))) : null, + new SearchResult(318, LocaleController.getString("DistanceUnits", R.string.DistanceUnits), "distanceRow", LocaleController.getString("ChatSettings", R.string.ChatSettings), R.drawable.msg2_discussion, () -> presentFragment(new ThemeActivity(ThemeActivity.THEME_TYPE_BASIC))), - new SearchResult(600, LocaleController.getString(R.string.StickersName), R.drawable.msg_sticker, () -> presentFragment(new StickersActivity(MediaDataController.TYPE_IMAGE, null))), - new SearchResult(601, LocaleController.getString("SuggestStickers", R.string.SuggestStickers), "suggestRow", LocaleController.getString(R.string.StickersName), R.drawable.msg_sticker, () -> presentFragment(new StickersActivity(MediaDataController.TYPE_IMAGE, null))), - new SearchResult(602, LocaleController.getString("FeaturedStickers", R.string.FeaturedStickers), "featuredStickersHeaderRow", LocaleController.getString(R.string.StickersName), R.drawable.msg_sticker, () -> presentFragment(new StickersActivity(MediaDataController.TYPE_IMAGE, null))), - new SearchResult(603, LocaleController.getString("Masks", R.string.Masks), null, LocaleController.getString(R.string.StickersName), R.drawable.msg_sticker, () -> presentFragment(new StickersActivity(MediaDataController.TYPE_MASK, null))), - new SearchResult(604, LocaleController.getString("ArchivedStickers", R.string.ArchivedStickers), null, LocaleController.getString(R.string.StickersName), R.drawable.msg_sticker, () -> presentFragment(new ArchivedStickersActivity(MediaDataController.TYPE_IMAGE))), - new SearchResult(605, LocaleController.getString("ArchivedMasks", R.string.ArchivedMasks), null, LocaleController.getString(R.string.StickersName), R.drawable.msg_sticker, () -> presentFragment(new ArchivedStickersActivity(MediaDataController.TYPE_MASK))), - new SearchResult(606, LocaleController.getString(R.string.LargeEmoji), "largeEmojiRow", LocaleController.getString(R.string.StickersName), R.drawable.msg_sticker, () -> presentFragment(new StickersActivity(MediaDataController.TYPE_IMAGE, null))), - new SearchResult(607, LocaleController.getString(R.string.LoopAnimatedStickers), "loopRow", LocaleController.getString(R.string.StickersName), R.drawable.msg_sticker, () -> presentFragment(new StickersActivity(MediaDataController.TYPE_IMAGE, null))), + new SearchResult(600, LocaleController.getString(R.string.StickersName), R.drawable.msg2_sticker, () -> presentFragment(new StickersActivity(MediaDataController.TYPE_IMAGE, null))), + new SearchResult(601, LocaleController.getString("SuggestStickers", R.string.SuggestStickers), "suggestRow", LocaleController.getString(R.string.StickersName), R.drawable.msg2_sticker, () -> presentFragment(new StickersActivity(MediaDataController.TYPE_IMAGE, null))), + new SearchResult(602, LocaleController.getString("FeaturedStickers", R.string.FeaturedStickers), "featuredStickersHeaderRow", LocaleController.getString(R.string.StickersName), R.drawable.msg2_sticker, () -> presentFragment(new StickersActivity(MediaDataController.TYPE_IMAGE, null))), + new SearchResult(603, LocaleController.getString("Masks", R.string.Masks), null, LocaleController.getString(R.string.StickersName), R.drawable.msg2_sticker, () -> presentFragment(new StickersActivity(MediaDataController.TYPE_MASK, null))), + new SearchResult(604, LocaleController.getString("ArchivedStickers", R.string.ArchivedStickers), null, LocaleController.getString(R.string.StickersName), R.drawable.msg2_sticker, () -> presentFragment(new ArchivedStickersActivity(MediaDataController.TYPE_IMAGE))), + new SearchResult(605, LocaleController.getString("ArchivedMasks", R.string.ArchivedMasks), null, LocaleController.getString(R.string.StickersName), R.drawable.msg2_sticker, () -> presentFragment(new ArchivedStickersActivity(MediaDataController.TYPE_MASK))), + new SearchResult(606, LocaleController.getString(R.string.LargeEmoji), "largeEmojiRow", LocaleController.getString(R.string.StickersName), R.drawable.msg2_sticker, () -> presentFragment(new StickersActivity(MediaDataController.TYPE_IMAGE, null))), + new SearchResult(607, LocaleController.getString(R.string.LoopAnimatedStickers), "loopRow", LocaleController.getString(R.string.StickersName), R.drawable.msg2_sticker, () -> presentFragment(new StickersActivity(MediaDataController.TYPE_IMAGE, null))), new SearchResult(608, LocaleController.getString(R.string.Emoji), null, LocaleController.getString(R.string.StickersName), R.drawable.input_smile, () -> presentFragment(new StickersActivity(MediaDataController.TYPE_EMOJIPACKS, null))), new SearchResult(609, LocaleController.getString(R.string.SuggestAnimatedEmoji), "suggestAnimatedEmojiRow", LocaleController.getString(R.string.StickersName), LocaleController.getString(R.string.Emoji), R.drawable.input_smile, () -> presentFragment(new StickersActivity(MediaDataController.TYPE_EMOJIPACKS, null))), new SearchResult(610, LocaleController.getString(R.string.FeaturedEmojiPacks), "featuredStickersHeaderRow", LocaleController.getString(R.string.StickersName), LocaleController.getString(R.string.Emoji), R.drawable.input_smile, () -> presentFragment(new StickersActivity(MediaDataController.TYPE_EMOJIPACKS, null))), - new SearchResult(611, LocaleController.getString(R.string.DoubleTapSetting), null, LocaleController.getString(R.string.StickersName), R.drawable.msg_sticker, () -> presentFragment(new ReactionsDoubleTapManageActivity())), + new SearchResult(611, LocaleController.getString(R.string.DoubleTapSetting), null, LocaleController.getString(R.string.StickersName), R.drawable.msg2_sticker, () -> presentFragment(new ReactionsDoubleTapManageActivity())), - new SearchResult(700, LocaleController.getString(R.string.Filters), null, R.drawable.msg_folder, () -> presentFragment(new FiltersSetupActivity())), - new SearchResult(701, LocaleController.getString(R.string.CreateNewFilter), "createFilterRow", LocaleController.getString(R.string.Filters), R.drawable.msg_folder, () -> presentFragment(new FiltersSetupActivity())), + new SearchResult(700, LocaleController.getString(R.string.Filters), null, R.drawable.msg2_folder, () -> presentFragment(new FiltersSetupActivity())), + new SearchResult(701, LocaleController.getString(R.string.CreateNewFilter), "createFilterRow", LocaleController.getString(R.string.Filters), R.drawable.msg2_folder, () -> presentFragment(new FiltersSetupActivity())), isPremiumFeatureAvailable(-1) ? new SearchResult(800, LocaleController.getString(R.string.TelegramPremium), R.drawable.msg_settings_premium, () -> presentFragment(new PremiumPreviewFragment("settings"))) : null, isPremiumFeatureAvailable(PremiumPreviewFragment.PREMIUM_FEATURE_LIMITS) ? new SearchResult(801, LocaleController.getString(R.string.PremiumPreviewLimits), LocaleController.getString(R.string.TelegramPremium), R.drawable.msg_settings_premium, () -> showDialog(new PremiumFeatureBottomSheet(ProfileActivity.this, PremiumPreviewFragment.PREMIUM_FEATURE_LIMITS, false).setForceAbout())) : null, @@ -9831,13 +9839,13 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. isPremiumFeatureAvailable(PremiumPreviewFragment.PREMIUM_FEATURE_APPLICATION_ICONS) ? new SearchResult(812, LocaleController.getString(R.string.PremiumPreviewAppIcon), LocaleController.getString(R.string.TelegramPremium), R.drawable.msg_settings_premium, () -> showDialog(new PremiumFeatureBottomSheet(ProfileActivity.this, PremiumPreviewFragment.PREMIUM_FEATURE_APPLICATION_ICONS, false).setForceAbout())) : null, isPremiumFeatureAvailable(PremiumPreviewFragment.PREMIUM_FEATURE_EMOJI_STATUS) ? new SearchResult(813, LocaleController.getString(R.string.PremiumPreviewEmojiStatus), LocaleController.getString(R.string.TelegramPremium), R.drawable.msg_settings_premium, () -> showDialog(new PremiumFeatureBottomSheet(ProfileActivity.this, PremiumPreviewFragment.PREMIUM_FEATURE_EMOJI_STATUS, false).setForceAbout())) : null, - new SearchResult(400, LocaleController.getString("Language", R.string.Language), R.drawable.msg_language, () -> presentFragment(new LanguageSelectActivity())), - new SearchResult(405, LocaleController.getString(R.string.ShowTranslateButton), LocaleController.getString(R.string.Language), R.drawable.msg_language, () -> presentFragment(new LanguageSelectActivity())), - MessagesController.getInstance(currentAccount).getTranslateController().isContextTranslateEnabled() ? new SearchResult(406, LocaleController.getString(R.string.DoNotTranslate), LocaleController.getString(R.string.Language), R.drawable.msg_language, () -> presentFragment(new LanguageSelectActivity())) : null, + new SearchResult(400, LocaleController.getString("Language", R.string.Language), R.drawable.msg2_language, () -> presentFragment(new LanguageSelectActivity())), + new SearchResult(405, LocaleController.getString(R.string.ShowTranslateButton), LocaleController.getString(R.string.Language), R.drawable.msg2_language, () -> presentFragment(new LanguageSelectActivity())), + MessagesController.getInstance(currentAccount).getTranslateController().isContextTranslateEnabled() ? new SearchResult(406, LocaleController.getString(R.string.DoNotTranslate), LocaleController.getString(R.string.Language), R.drawable.msg2_language, () -> presentFragment(new LanguageSelectActivity())) : null, - new SearchResult(402, LocaleController.getString("AskAQuestion", R.string.AskAQuestion), LocaleController.getString("SettingsHelp", R.string.SettingsHelp), R.drawable.msg_help, () -> showDialog(AlertsCreator.createSupportAlert(ProfileActivity.this, null))), - new SearchResult(403, LocaleController.getString("TelegramFAQ", R.string.TelegramFAQ), LocaleController.getString("SettingsHelp", R.string.SettingsHelp), R.drawable.msg_help, () -> Browser.openUrl(getParentActivity(), LocaleController.getString("TelegramFaqUrl", R.string.TelegramFaqUrl))), - new SearchResult(404, LocaleController.getString("PrivacyPolicy", R.string.PrivacyPolicy), LocaleController.getString("SettingsHelp", R.string.SettingsHelp), R.drawable.msg_help, () -> Browser.openUrl(getParentActivity(), LocaleController.getString("PrivacyPolicyUrl", R.string.PrivacyPolicyUrl))), + new SearchResult(402, LocaleController.getString("AskAQuestion", R.string.AskAQuestion), LocaleController.getString("SettingsHelp", R.string.SettingsHelp), R.drawable.msg2_help, () -> showDialog(AlertsCreator.createSupportAlert(ProfileActivity.this, null))), + new SearchResult(403, LocaleController.getString("TelegramFAQ", R.string.TelegramFAQ), LocaleController.getString("SettingsHelp", R.string.SettingsHelp), R.drawable.msg2_help, () -> Browser.openUrl(getParentActivity(), LocaleController.getString("TelegramFaqUrl", R.string.TelegramFaqUrl))), + new SearchResult(404, LocaleController.getString("PrivacyPolicy", R.string.PrivacyPolicy), LocaleController.getString("SettingsHelp", R.string.SettingsHelp), R.drawable.msg2_help, () -> Browser.openUrl(getParentActivity(), LocaleController.getString("PrivacyPolicyUrl", R.string.PrivacyPolicyUrl))), }; } @@ -10583,6 +10591,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. put(++pointer, premiumSectionsRow, sparseIntArray); put(++pointer, privacyRow, sparseIntArray); put(++pointer, dataRow, sparseIntArray); + put(++pointer, liteModeRow, sparseIntArray); put(++pointer, chatRow, sparseIntArray); put(++pointer, filtersRow, sparseIntArray); put(++pointer, stickersRow, sparseIntArray); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ProfileNotificationsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ProfileNotificationsActivity.java index ee7e880dc..ad7fbadad 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ProfileNotificationsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ProfileNotificationsActivity.java @@ -381,7 +381,7 @@ public class ProfileNotificationsActivity extends BaseFragment implements Notifi showDialog(dialog); TextView button = (TextView) dialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } else if (position == soundRow) { Bundle bundle = new Bundle(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ProxyListActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ProxyListActivity.java index eee2f7b8b..bb321b5f0 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ProxyListActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ProxyListActivity.java @@ -519,7 +519,7 @@ public class ProxyListActivity extends BaseFragment implements NotificationCente showDialog(dialog); TextView button = (TextView) dialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } }); @@ -582,7 +582,7 @@ public class ProxyListActivity extends BaseFragment implements NotificationCente showDialog(dialog); TextView button = (TextView) dialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } break; case MENU_SHARE: diff --git a/TMessagesProj/src/main/java/org/telegram/ui/SelectAnimatedEmojiDialog.java b/TMessagesProj/src/main/java/org/telegram/ui/SelectAnimatedEmojiDialog.java index e51b690a9..c8caefff1 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/SelectAnimatedEmojiDialog.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/SelectAnimatedEmojiDialog.java @@ -3262,7 +3262,7 @@ public class SelectAnimatedEmojiDialog extends FrameLayout implements Notificati } private int getCacheType() { - if (type == TYPE_AVATAR_CONSTRUCTOR) { + if (type == TYPE_TOPIC_ICON || type == TYPE_AVATAR_CONSTRUCTOR) { return AnimatedEmojiDrawable.CACHE_TYPE_ALERT_PREVIEW_STATIC; } return type == TYPE_EMOJI_STATUS || type == TYPE_SET_DEFAULT_REACTION ? AnimatedEmojiDrawable.CACHE_TYPE_KEYBOARD : AnimatedEmojiDrawable.CACHE_TYPE_ALERT_PREVIEW; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/SessionBottomSheet.java b/TMessagesProj/src/main/java/org/telegram/ui/SessionBottomSheet.java index d813cc932..30b61c338 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/SessionBottomSheet.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/SessionBottomSheet.java @@ -262,7 +262,7 @@ public class SessionBottomSheet extends BottomSheet { fragment.showDialog(alertDialog); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } }); @@ -401,13 +401,13 @@ public class SessionBottomSheet extends BottomSheet { valueText.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16); valueText.setGravity(Gravity.LEFT); valueText.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText)); - linearLayout.addView(valueText, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, 0, 0, 0, needSwitch ? 46 : 0, 0)); + linearLayout.addView(valueText, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, 0, 0, 0, needSwitch ? 64 : 0, 0)); descriptionText = new TextView(context); descriptionText.setTextSize(TypedValue.COMPLEX_UNIT_SP, 13); descriptionText.setGravity(Gravity.LEFT); descriptionText.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteGrayText)); - linearLayout.addView(descriptionText, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, 0, 0, 4, needSwitch ? 46 : 0, 0)); + linearLayout.addView(descriptionText, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, 0, 0, 4, needSwitch ? 64 : 0, 0)); setPadding(0, AndroidUtilities.dp(4), 0, AndroidUtilities.dp(4)); if (needSwitch) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/SessionsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/SessionsActivity.java index 3b0253031..4178a369c 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/SessionsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/SessionsActivity.java @@ -332,7 +332,7 @@ public class SessionsActivity extends BaseFragment implements NotificationCenter showDialog(alertDialog); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } else if (position >= otherSessionsStartRow && position < otherSessionsEndRow || position >= passwordSessionsStartRow && position < passwordSessionsEndRow || position == currentSessionRow) { if (getParentActivity() == null) { @@ -452,7 +452,7 @@ public class SessionsActivity extends BaseFragment implements NotificationCenter showDialog(alertDialog); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } }); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/StickersActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/StickersActivity.java index 25c683623..9d1af865e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/StickersActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/StickersActivity.java @@ -71,6 +71,7 @@ import org.telegram.ui.Components.Bulletin; import org.telegram.ui.Components.BulletinFactory; import org.telegram.ui.Components.CubicBezierInterpolator; import org.telegram.ui.Components.EmojiPacksAlert; +import org.telegram.ui.Components.EmojiView; import org.telegram.ui.Components.LayoutHelper; import org.telegram.ui.Components.NumberTextView; import org.telegram.ui.Components.Premium.PremiumFeatureBottomSheet; @@ -121,6 +122,7 @@ public class StickersActivity extends BaseFragment implements NotificationCenter private int largeEmojiRow; private int reactionsDoubleTapRow; private int stickersBotInfo; + private int featuredRow; private int masksRow; private int emojiPacksRow; private int masksInfoRow; @@ -132,6 +134,7 @@ public class StickersActivity extends BaseFragment implements NotificationCenter private int featuredStickersEndRow; private int featuredStickersShowMoreRow; private int featuredStickersShadowRow; + private int stickersSettingsRow; private int stickersHeaderRow; private int stickersStartRow; @@ -309,10 +312,24 @@ public class StickersActivity extends BaseFragment implements NotificationCenter FrameLayout frameLayout = (FrameLayout) fragmentView; frameLayout.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundGray)); - listView = new RecyclerListView(context); + listView = new RecyclerListView(context) { + @Override + protected void dispatchDraw(Canvas canvas) { + if (actionBar.isActionModeShowed()) { + drawSectionBackground(canvas, stickersHeaderRow, stickersEndRow, getThemedColor(Theme.key_windowBackgroundWhite)); + } + super.dispatchDraw(canvas); + } + }; listView.setFocusable(true); listView.setTag(7); - DefaultItemAnimator itemAnimator = new DefaultItemAnimator(); + DefaultItemAnimator itemAnimator = new DefaultItemAnimator() { + @Override + protected void onMoveAnimationUpdate(RecyclerView.ViewHolder holder) { + super.onMoveAnimationUpdate(holder); + listView.invalidate(); + } + }; itemAnimator.setMoveDuration(350); itemAnimator.setMoveInterpolator(CubicBezierInterpolator.EASE_OUT_QUINT); listView.setItemAnimator(itemAnimator); @@ -349,7 +366,7 @@ public class StickersActivity extends BaseFragment implements NotificationCenter } else { showDialog(new StickersAlert(getParentActivity(), StickersActivity.this, inputStickerSetID, null, null)); } - } else if (position == featuredStickersShowMoreRow) { + } else if (position == featuredStickersShowMoreRow || position == featuredRow) { if (currentType == MediaDataController.TYPE_EMOJIPACKS) { ArrayList inputStickerSets = new ArrayList<>(); List featuredStickerSets = getFeaturedSets(); @@ -514,6 +531,20 @@ public class StickersActivity extends BaseFragment implements NotificationCenter } ConnectionsManager.getInstance(currentAccount).sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(() -> activeReorderingRequests--)); NotificationCenter.getInstance(currentAccount).postNotificationName(NotificationCenter.stickersDidLoad, currentType, true); + + if (SharedConfig.updateStickersOrderOnSend && dynamicPackOrder != -1) { + SharedConfig.toggleUpdateStickersOrderOnSend(); + BulletinFactory.of(StickersActivity.this).createSimpleBulletin(R.raw.filter_reorder, LocaleController.getString("DynamicPackOrderOff", R.string.DynamicPackOrderOff), LocaleController.getString("DynamicPackOrderOffInfo", R.string.DynamicPackOrderOffInfo)).show(); + + for (int i = 0; i < listView.getChildCount(); ++i) { + View child = listView.getChildAt(i); + int position = listView.getChildAdapterPosition(child); + if (position == dynamicPackOrder && child instanceof TextCheckCell) { + ((TextCheckCell) child).setChecked(SharedConfig.updateStickersOrderOnSend); + break; + } + } + } } private void updateRows(boolean updateEmojipacks) { @@ -622,17 +653,8 @@ public class StickersActivity extends BaseFragment implements NotificationCenter rowCount = 0; - if (currentType == MediaDataController.TYPE_IMAGE) { - suggestRow = rowCount++; - largeEmojiRow = rowCount++; - loopRow = rowCount++; - loopInfoRow = rowCount++; - } else { - suggestRow = -1; - largeEmojiRow = -1; - loopRow = -1; - loopInfoRow = -1; - } + loopRow = -1; + loopInfoRow = -1; if (currentType == MediaDataController.TYPE_EMOJIPACKS) { suggestAnimatedEmojiRow = rowCount++; @@ -643,9 +665,11 @@ public class StickersActivity extends BaseFragment implements NotificationCenter } if (currentType == MediaDataController.TYPE_IMAGE) { - masksRow = rowCount++; + featuredRow = rowCount++; + masksRow = -1; emojiPacksRow = rowCount++; } else { + featuredRow = -1; masksRow = -1; emojiPacksRow = -1; } @@ -687,22 +711,28 @@ public class StickersActivity extends BaseFragment implements NotificationCenter featuredStickersEndRow = -1; featuredStickersShowMoreRow = -1; featuredStickersShadowRow = -1; - if (!featuredStickersList.isEmpty() && (currentType == MediaDataController.TYPE_IMAGE)) { - featuredStickersHeaderRow = rowCount++; - featuredStickersStartRow = rowCount; - rowCount += featuredStickersList.size(); - featuredStickersEndRow = rowCount; - - if (truncatedFeaturedStickers) { - featuredStickersShowMoreRow = rowCount++; - } - featuredStickersShadowRow = rowCount++; - } +// if (!featuredStickersList.isEmpty() && (currentType == MediaDataController.TYPE_IMAGE)) { +// featuredStickersHeaderRow = rowCount++; +// featuredStickersStartRow = rowCount; +// rowCount += featuredStickersList.size(); +// featuredStickersEndRow = rowCount; +// +// if (truncatedFeaturedStickers) { +// featuredStickersShowMoreRow = rowCount++; +// } +// featuredStickersShadowRow = rowCount++; +// } if (currentType == MediaDataController.TYPE_IMAGE) { + stickersSettingsRow = rowCount++; + suggestRow = rowCount++; + largeEmojiRow = rowCount++; dynamicPackOrder = rowCount++; dynamicPackOrderInfo = rowCount++; } else { + stickersSettingsRow = -1; + suggestRow = -1; + largeEmojiRow = -1; dynamicPackOrder = -1; dynamicPackOrderInfo = -1; } @@ -964,7 +994,7 @@ public class StickersActivity extends BaseFragment implements NotificationCenter if (which == MENU_DELETE) { TextView button = (TextView) dialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } break; @@ -1013,6 +1043,8 @@ public class StickersActivity extends BaseFragment implements NotificationCenter headerCell.setText(LocaleController.getString(currentType == MediaDataController.TYPE_EMOJIPACKS ? R.string.FeaturedEmojiPacks : R.string.FeaturedStickers)); } else if (position == stickersHeaderRow) { headerCell.setText(LocaleController.getString(currentType == MediaDataController.TYPE_EMOJIPACKS ? R.string.ChooseStickerMyEmojiPacks : R.string.ChooseStickerMyStickerSets)); + } else if (position == stickersSettingsRow) { + headerCell.setText(LocaleController.getString("StickersSettings", R.string.StickersSettings)); } break; case TYPE_FEATURED_STICKER_SET: { @@ -1078,6 +1110,7 @@ public class StickersActivity extends BaseFragment implements NotificationCenter break; case TYPE_INFO: TextInfoPrivacyCell infoPrivacyCell = (TextInfoPrivacyCell) holder.itemView; + infoPrivacyCell.setFixedSize(0); if (position == stickersBotInfo) { infoPrivacyCell.setText(addStickersBotSpan( currentType == MediaDataController.TYPE_EMOJIPACKS ? @@ -1091,7 +1124,9 @@ public class StickersActivity extends BaseFragment implements NotificationCenter infoPrivacyCell.setText(LocaleController.getString("ArchivedMasksInfo", R.string.ArchivedMasksInfo)); } } else if (position == loopInfoRow) { - infoPrivacyCell.setText(LocaleController.getString("LoopAnimatedStickersInfo", R.string.LoopAnimatedStickersInfo)); +// infoPrivacyCell.setText(LocaleController.getString("LoopAnimatedStickersInfo", R.string.LoopAnimatedStickersInfo)); + infoPrivacyCell.setText(null); + infoPrivacyCell.setFixedSize(12); } else if (position == suggestAnimatedEmojiInfoRow) { infoPrivacyCell.setText(LocaleController.getString("SuggestAnimatedEmojiInfo", R.string.SuggestAnimatedEmojiInfo)); } else if (position == masksInfoRow) { @@ -1105,18 +1140,19 @@ public class StickersActivity extends BaseFragment implements NotificationCenter if (position == featuredStickersShowMoreRow) { settingsCell.setColors(Theme.key_windowBackgroundWhiteBlueText4, Theme.key_windowBackgroundWhiteBlueText4); if (currentType == MediaDataController.TYPE_EMOJIPACKS) { - settingsCell.setTextAndIcon(LocaleController.getString(R.string.ShowMoreEmojiPacks), R.drawable.msg_trending, false); + settingsCell.setTextAndIcon(LocaleController.getString(R.string.ShowMoreEmojiPacks), R.drawable.msg2_trending, false); } else { - settingsCell.setTextAndIcon(LocaleController.getString(R.string.ShowMoreStickers), R.drawable.msg_trending, false); + settingsCell.setTextAndIcon(LocaleController.getString(R.string.ShowMoreStickers), R.drawable.msg2_trending, false); } } else { settingsCell.imageView.setTranslationX(0); + settingsCell.textView.setTranslationX(0); settingsCell.setColors(Theme.key_windowBackgroundWhiteGrayIcon, Theme.key_windowBackgroundWhiteBlackText); if (position == archivedRow) { int count = MediaDataController.getInstance(currentAccount).getArchivedStickersCount(currentType); String value = count > 0 ? Integer.toString(count) : ""; if (currentType == MediaDataController.TYPE_IMAGE) { - settingsCell.setTextAndValueAndIcon(LocaleController.getString(R.string.ArchivedStickers), value, R.drawable.msg_archived_stickers, true); + settingsCell.setTextAndValueAndIcon(LocaleController.getString(R.string.ArchivedStickers), value, R.drawable.msg2_archived_stickers, true); } else if (currentType == MediaDataController.TYPE_EMOJIPACKS) { settingsCell.setTextAndValue(LocaleController.getString("ArchivedEmojiPacks", R.string.ArchivedEmojiPacks), value, false, true); } else { @@ -1127,12 +1163,15 @@ public class StickersActivity extends BaseFragment implements NotificationCenter MediaDataController mediaDataController = MediaDataController.getInstance(currentAccount); int count = MessagesController.getInstance(currentAccount).filterPremiumStickers(mediaDataController.getStickerSets(type)).size() + mediaDataController.getArchivedStickersCount(type); settingsCell.setTextAndValueAndIcon(LocaleController.getString("Masks", R.string.Masks), count > 0 ? Integer.toString(count) : "", R.drawable.msg_mask, true); + } else if (position == featuredRow) { + List sets = getFeaturedSets(); + settingsCell.setTextAndValueAndIcon(LocaleController.getString("FeaturedStickers", R.string.FeaturedStickers), sets != null ? "" + sets.size() : "", R.drawable.msg2_trending, true); } else if (position == emojiPacksRow) { int type = MediaDataController.TYPE_EMOJIPACKS; MediaDataController mediaDataController = MediaDataController.getInstance(currentAccount); int count = mediaDataController.getStickerSets(type).size(); settingsCell.imageView.setTranslationX(-AndroidUtilities.dp(2)); - settingsCell.setTextAndValueAndIcon(LocaleController.getString("Emoji", R.string.Emoji), count > 0 ? Integer.toString(count) : "", R.drawable.input_smile, true); + settingsCell.setTextAndValueAndIcon(LocaleController.getString("Emoji", R.string.Emoji), count > 0 ? Integer.toString(count) : "", R.drawable.msg2_smile_status, true); } else if (position == suggestRow) { String value; switch (SharedConfig.suggestStickers) { @@ -1147,6 +1186,9 @@ public class StickersActivity extends BaseFragment implements NotificationCenter value = LocaleController.getString("SuggestStickersNone", R.string.SuggestStickersNone); break; } + if (!LocaleController.isRTL) { + settingsCell.textView.setTranslationX(AndroidUtilities.dp(-2)); + } settingsCell.setTextAndValue(LocaleController.getString("SuggestStickers", R.string.SuggestStickers), value, updateSuggestStickers, true); updateSuggestStickers = false; } @@ -1173,7 +1215,7 @@ public class StickersActivity extends BaseFragment implements NotificationCenter case TYPE_DOUBLE_TAP_REACTIONS: { TextSettingsCell settingsCell = (TextSettingsCell) holder.itemView; settingsCell.setText(LocaleController.getString("DoubleTapSetting", R.string.DoubleTapSetting), false); - settingsCell.setIcon(R.drawable.msg_reactions2); + settingsCell.setIcon(R.drawable.msg2_reactions2); String reaction = MediaDataController.getInstance(currentAccount).getDoubleTapReaction(); if (reaction != null) { if (reaction.startsWith("animated_")) { @@ -1335,7 +1377,7 @@ public class StickersActivity extends BaseFragment implements NotificationCenter showDialog(dialog); if (options[options.length - 1] == MENU_DELETE) { - dialog.setItemColor(items.length - 1, Theme.getColor(Theme.key_dialogTextRed2), Theme.getColor(Theme.key_dialogRedIcon)); + dialog.setItemColor(items.length - 1, Theme.getColor(Theme.key_dialogTextRed), Theme.getColor(Theme.key_dialogRedIcon)); } }); break; @@ -1376,7 +1418,7 @@ public class StickersActivity extends BaseFragment implements NotificationCenter return TYPE_STICKER_SET; } else if (i == stickersBotInfo || i == archivedInfoRow || i == loopInfoRow || i == suggestAnimatedEmojiInfoRow || i == masksInfoRow || i == dynamicPackOrderInfo) { return TYPE_INFO; - } else if (i == archivedRow || i == masksRow || i == emojiPacksRow || i == suggestRow || i == featuredStickersShowMoreRow) { + } else if (i == archivedRow || i == masksRow || i == featuredRow || i == emojiPacksRow || i == suggestRow || i == featuredStickersShowMoreRow) { return TYPE_TEXT_AND_VALUE; } else if (i == stickersShadowRow || i == featuredStickersShadowRow) { return TYPE_SHADOW; @@ -1384,7 +1426,7 @@ public class StickersActivity extends BaseFragment implements NotificationCenter return TYPE_SWITCH; } else if (i == reactionsDoubleTapRow) { return TYPE_DOUBLE_TAP_REACTIONS; - } else if (i == featuredStickersHeaderRow || i == stickersHeaderRow) { + } else if (i == featuredStickersHeaderRow || i == stickersHeaderRow || i == stickersSettingsRow) { return TYPE_HEADER; } return TYPE_STICKER_SET; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/SuggestClearDatabaseBottomSheet.java b/TMessagesProj/src/main/java/org/telegram/ui/SuggestClearDatabaseBottomSheet.java index f39e642a8..c024b6e00 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/SuggestClearDatabaseBottomSheet.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/SuggestClearDatabaseBottomSheet.java @@ -92,7 +92,7 @@ public class SuggestClearDatabaseBottomSheet extends BottomSheet { fragment.showDialog(alertDialog); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } }); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ThemeActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ThemeActivity.java index 104c60e97..ea55a5668 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ThemeActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ThemeActivity.java @@ -55,6 +55,7 @@ import org.telegram.messenger.FileLoader; import org.telegram.messenger.FileLog; import org.telegram.messenger.LiteMode; import org.telegram.messenger.LocaleController; +import org.telegram.messenger.MediaDataController; import org.telegram.messenger.MessagesController; import org.telegram.messenger.NotificationCenter; import org.telegram.messenger.R; @@ -188,6 +189,11 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No private int themePreviewRow; private int editThemeRow; private int createNewThemeRow; + private int lastShadowRow; + private int stickersRow; + private int stickersInfoRow; + private int liteModeRow; + private int liteModeInfoRow; private int appIconHeaderRow; private int appIconSelectorRow; @@ -213,8 +219,6 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No private final static int day_night_switch = 5; private RLottieDrawable sunDrawable; - private int lightModeRow; - private int lightModeTopInfoRow; private class GpsLocationListener implements LocationListener { @@ -517,9 +521,11 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No chatListInfoRow = -1; chatBlurRow = -1; pauseOnRecordRow = -1; + stickersRow = -1; + stickersInfoRow = -1; + liteModeRow = -1; + liteModeInfoRow = -1; - lightModeRow = -1; - lightModeTopInfoRow = -1; textSizeRow = -1; backgroundRow = -1; settingsRow = -1; @@ -547,6 +553,7 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No appIconHeaderRow = -1; appIconSelectorRow = -1; appIconShadowRow = -1; + lastShadowRow = -1; defaultThemes.clear(); darkThemes.clear(); @@ -588,7 +595,7 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No editThemeRow = rowCount++; } createNewThemeRow = rowCount++; - swipeGestureInfoRow = rowCount++; + lastShadowRow = rowCount++; } else if (currentType == THEME_TYPE_BASIC) { textSizeHeaderRow = rowCount++; textSizeRow = rowCount++; @@ -607,33 +614,34 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No chatListRow = rowCount++; chatListInfoRow = rowCount++; + appIconHeaderRow = rowCount++; + appIconSelectorRow = rowCount++; + appIconShadowRow = rowCount++; + swipeGestureHeaderRow = rowCount++; swipeGestureRow = rowCount++; swipeGestureInfoRow = rowCount++; - appIconHeaderRow = rowCount++; - appIconSelectorRow = rowCount++; - appIconShadowRow = rowCount++; + liteModeRow = rowCount++; + liteModeInfoRow = rowCount++; + + stickersRow = rowCount++; + stickersInfoRow = rowCount++; settingsRow = rowCount++; nightThemeRow = rowCount++; customTabsRow = rowCount++; directShareRow = rowCount++; - enableAnimationsRow = rowCount++; +// enableAnimationsRow = rowCount++; raiseToSpeakRow = rowCount++; + sendByEnterRow = rowCount++; pauseOnRecordRow = rowCount++; bluetoothScoRow = rowCount++; - sendByEnterRow = rowCount++; - if (SharedConfig.canBlurChat()) { - chatBlurRow = rowCount++; - } +// if (SharedConfig.canBlurChat()) { +// chatBlurRow = rowCount++; +// } distanceRow = rowCount++; settings2Row = rowCount++; - - if (SharedConfig.getDevicePerformanceClass() <= SharedConfig.PERFORMANCE_CLASS_AVERAGE || BuildVars.DEBUG_VERSION) { - lightModeRow = rowCount++; - lightModeTopInfoRow = rowCount++; - } } else { nightDisabledRow = rowCount++; nightScheduledRow = rowCount++; @@ -944,7 +952,7 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No showDialog(alertDialog); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } else if (id == day_night_switch) { SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("themeconfig", Activity.MODE_PRIVATE); @@ -979,6 +987,8 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.needSetDayNightTheme, themeInfo, false, pos, -1, toDark, menuItem.getIconView()); updateRows(true); //AndroidUtilities.updateVisibleRows(listView); + + Theme.turnOffAutoNight(ThemeActivity.this); } } }); @@ -1158,13 +1168,6 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No if (view instanceof TextCheckCell) { ((TextCheckCell) view).setChecked(SharedConfig.chatBlurEnabled()); } - } else if (position == lightModeRow) { - boolean liteModeEnabled = (LiteMode.getValue() & LiteMode.ENABLED) == 0; - int newFlags = (liteModeEnabled ? LiteMode.ENABLED : 0) | (LiteMode.getValue() & ~LiteMode.ENABLED); - LiteMode.setAllFlags(newFlags); - if (view instanceof TextCheckCell) { - ((TextCheckCell) view).setChecked((LiteMode.getValue() & LiteMode.ENABLED) == 0); - } } else if (position == nightThemeRow) { if (LocaleController.isRTL && x <= AndroidUtilities.dp(76) || !LocaleController.isRTL && x >= view.getMeasuredWidth() - AndroidUtilities.dp(76)) { NotificationsCheckCell checkCell = (NotificationsCheckCell) view; @@ -1265,6 +1268,10 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No createNewTheme(); } else if (position == editThemeRow) { editTheme(); + } else if (position == stickersRow) { + presentFragment(new StickersActivity(MediaDataController.TYPE_IMAGE, null)); + } else if (position == liteModeRow) { + presentFragment(new LiteModeSettingsActivity()); } }); @@ -1856,14 +1863,14 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No showDialog(alertDialog); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } }); AlertDialog alertDialog = builder.create(); showDialog(alertDialog); if (hasDelete) { - alertDialog.setItemColor(alertDialog.getItemsCount() - 1, Theme.getColor(Theme.key_dialogTextRed2), Theme.getColor(Theme.key_dialogRedIcon)); + alertDialog.setItemColor(alertDialog.getItemsCount() - 1, Theme.getColor(Theme.key_dialogTextRed), Theme.getColor(Theme.key_dialogRedIcon)); } } @@ -1933,17 +1940,12 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No break; case TYPE_THEME_LIST: first = true; - themesHorizontalListCell = new ThemesHorizontalListCell(mContext, currentType, defaultThemes, darkThemes) { + themesHorizontalListCell = new ThemesHorizontalListCell(mContext, ThemeActivity.this, currentType, defaultThemes, darkThemes) { @Override protected void showOptionsForTheme(Theme.ThemeInfo themeInfo) { listAdapter.showOptionsForTheme(themeInfo); } - @Override - protected void presentFragment(BaseFragment fragment) { - ThemeActivity.this.presentFragment(fragment); - } - @Override protected void updateRows() { ThemeActivity.this.updateRows(false); @@ -1989,6 +1991,7 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No if (currentTheme.currentAccentId != accent.id) { NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.needSetDayNightTheme, currentTheme, currentType == THEME_TYPE_NIGHT, null, accent.id); EmojiThemes.saveCustomTheme(currentTheme, accent.id); + Theme.turnOffAutoNight(ThemeActivity.this); } else { presentFragment(new ThemePreviewActivity(currentTheme, false, ThemePreviewActivity.SCREEN_TYPE_ACCENT_COLOR, accent.id >= 100, currentType == THEME_TYPE_NIGHT)); } @@ -2064,13 +2067,13 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No showDialog(alertDialog); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } }); AlertDialog alertDialog = builder.create(); showDialog(alertDialog); - alertDialog.setItemColor(alertDialog.getItemsCount() - 1, Theme.getColor(Theme.key_dialogTextRed2), Theme.getColor(Theme.key_dialogRedIcon)); + alertDialog.setItemColor(alertDialog.getItemsCount() - 1, Theme.getColor(Theme.key_dialogTextRed), Theme.getColor(Theme.key_dialogRedIcon)); return true; } return false; @@ -2169,20 +2172,24 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No } case TYPE_TEXT_INFO_PRIVACY: { TextInfoPrivacyCell cell = (TextInfoPrivacyCell) holder.itemView; - if (position == lightModeTopInfoRow) { - cell.setText(LocaleController.formatString("LightModeInfoRow", R.string.LightModeInfoRow)); - } else if (position == automaticBrightnessInfoRow) { + if (position == automaticBrightnessInfoRow) { cell.setText(LocaleController.formatString("AutoNightBrightnessInfo", R.string.AutoNightBrightnessInfo, (int) (100 * Theme.autoNightBrighnessThreshold))); } else if (position == scheduleLocationInfoRow) { cell.setText(getLocationSunString()); + } else if (position == swipeGestureInfoRow) { + cell.setText(LocaleController.getString("ChatListSwipeGestureInfo", R.string.ChatListSwipeGestureInfo)); + } else if (position == stickersInfoRow) { + cell.setText(LocaleController.getString("StickersNameInfo", R.string.StickersNameInfo)); + } else if (position == liteModeInfoRow) { + cell.setText(LocaleController.getString("LiteModeInfo", R.string.LiteModeInfo)); } break; } case TYPE_SHADOW: { - if (position == nightTypeInfoRow && themeInfoRow == -1 || position == themeInfoRow && nightTypeInfoRow != -1 || position == saveToGallerySectionRow) { - holder.itemView.setBackgroundDrawable(Theme.getThemedDrawable(mContext, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow)); + if (position == nightTypeInfoRow && themeInfoRow == -1 || position == lastShadowRow || position == themeInfoRow && nightTypeInfoRow != -1 || position == saveToGallerySectionRow || position == settings2Row) { + holder.itemView.setBackground(Theme.getThemedDrawable(mContext, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow)); } else { - holder.itemView.setBackgroundDrawable(Theme.getThemedDrawable(mContext, R.drawable.greydivider, Theme.key_windowBackgroundGrayShadow)); + holder.itemView.setBackground(Theme.getThemedDrawable(mContext, R.drawable.greydivider, Theme.key_windowBackgroundGrayShadow)); } break; } @@ -2255,8 +2262,6 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No textCheckCell.setTextAndValueAndCheck(LocaleController.getString("DirectShare", R.string.DirectShare), LocaleController.getString("DirectShareInfo", R.string.DirectShareInfo), SharedConfig.directShare, false, true); } else if (position == chatBlurRow) { textCheckCell.setTextAndCheck(LocaleController.getString("BlurInChat", R.string.BlurInChat), SharedConfig.chatBlurEnabled(), true); - } else if (position == lightModeRow) { - textCheckCell.setTextAndCheck(LocaleController.getString("LightMode", R.string.LightMode), (LiteMode.getValue() & LiteMode.ENABLED) == 0, true); } break; } @@ -2311,6 +2316,12 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No } else if (position == createNewThemeRow) { cell.setColors(Theme.key_windowBackgroundWhiteBlueText4, Theme.key_windowBackgroundWhiteBlueText4); cell.setTextAndIcon(LocaleController.getString("CreateNewTheme", R.string.CreateNewTheme), R.drawable.msg_colors, false); + } else if (position == stickersRow) { + cell.setColors(Theme.key_windowBackgroundWhiteGrayIcon, Theme.key_windowBackgroundWhiteBlackText); + cell.setTextAndIcon(LocaleController.getString("StickersName", R.string.StickersName), R.drawable.msg2_sticker, false); + } else if (position == liteModeRow) { + cell.setColors(Theme.key_windowBackgroundWhiteGrayIcon, Theme.key_windowBackgroundWhiteBlackText); + cell.setTextAndIcon(LocaleController.getString("LiteMode", R.string.LiteMode), R.drawable.msg2_animations, false); } break; } @@ -2350,11 +2361,11 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No position == contactsReimportRow || position == contactsSortRow || position == bluetoothScoRow) { return TYPE_TEXT_SETTING; - } else if (position == automaticBrightnessInfoRow || position == scheduleLocationInfoRow || position == lightModeTopInfoRow) { + } else if (position == automaticBrightnessInfoRow || position == scheduleLocationInfoRow || position == swipeGestureInfoRow || position == stickersInfoRow || position == liteModeInfoRow) { return TYPE_TEXT_INFO_PRIVACY; } else if (position == themeInfoRow || position == nightTypeInfoRow || position == scheduleFromToInfoRow || position == settings2Row || position == newThemeInfoRow || position == chatListInfoRow || position == bubbleRadiusInfoRow || - position == swipeGestureInfoRow || position == saveToGallerySectionRow || position == appIconShadowRow) { + position == saveToGallerySectionRow || position == appIconShadowRow || position == lastShadowRow) { return TYPE_SHADOW; } else if (position == nightDisabledRow || position == nightScheduledRow || position == nightAutomaticRow || position == nightSystemDefaultRow) { return TYPE_THEME_TYPE; @@ -2367,7 +2378,7 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No return TYPE_BRIGHTNESS; } else if (position == scheduleLocationRow || position == enableAnimationsRow || position == sendByEnterRow || position == raiseToSpeakRow || position == pauseOnRecordRow || position == customTabsRow || - position == directShareRow || position == chatBlurRow || position == lightModeRow) { + position == directShareRow || position == chatBlurRow) { return TYPE_TEXT_CHECK; } else if (position == textSizeRow) { return TYPE_TEXT_SIZE; @@ -2381,7 +2392,7 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No return TYPE_THEME_ACCENT_LIST; } else if (position == bubbleRadiusRow) { return TYPE_BUBBLE_RADIUS; - } else if (position == backgroundRow || position == editThemeRow || position == createNewThemeRow) { + } else if (position == backgroundRow || position == editThemeRow || position == createNewThemeRow || position == stickersRow || position == liteModeRow) { return TYPE_TEXT_PREFERENCE; } else if (position == swipeGestureRow) { return TYPE_SWIPE_GESTURE; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ThemePreviewActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ThemePreviewActivity.java index 23c5c5a5c..e9ba4e267 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ThemePreviewActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ThemePreviewActivity.java @@ -1844,7 +1844,7 @@ public class ThemePreviewActivity extends BaseFragment implements DownloadContro showDialog(alertDialog); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ThemeSetUrlActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ThemeSetUrlActivity.java index 1696982ee..7d9995d6d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ThemeSetUrlActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ThemeSetUrlActivity.java @@ -373,7 +373,7 @@ public class ThemeSetUrlActivity extends BaseFragment implements NotificationCen } themes.add(themeInfo); } - ThemesHorizontalListCell cell = new ThemesHorizontalListCell(context, ThemeActivity.THEME_TYPE_OTHER, themes, new ArrayList<>()) { + ThemesHorizontalListCell cell = new ThemesHorizontalListCell(context, this, ThemeActivity.THEME_TYPE_OTHER, themes, new ArrayList<>()) { @Override protected void updateRows() { builder.getDismissRunnable().run(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/TopicsFragment.java b/TMessagesProj/src/main/java/org/telegram/ui/TopicsFragment.java index 82732c8a3..a0b6d0358 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/TopicsFragment.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/TopicsFragment.java @@ -831,6 +831,7 @@ public class TopicsFragment extends BaseFragment implements NotificationCenter.N } if (dialogsActivity != null) { dialogsActivity.didSelectResult(-chatId, topic.id, true, false, this); + dialogsActivity.removeSelfFromStack(); } return; } @@ -1761,7 +1762,7 @@ public class TopicsFragment extends BaseFragment implements NotificationCenter.N alertDialog.show(); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } @@ -3810,7 +3811,7 @@ public class TopicsFragment extends BaseFragment implements NotificationCenter.N } private void prepareBlurBitmap() { - if (blurredView == null || parentLayout == null || SharedConfig.useLNavigation) { + if (blurredView == null || parentLayout == null) { return; } int w = (int) (fragmentView.getMeasuredWidth() / 6.0f); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/TopicsNotifySettingsFragments.java b/TMessagesProj/src/main/java/org/telegram/ui/TopicsNotifySettingsFragments.java index 3c91a8cf5..98040c224 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/TopicsNotifySettingsFragments.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/TopicsNotifySettingsFragments.java @@ -142,7 +142,7 @@ public class TopicsNotifySettingsFragments extends BaseFragment { showDialog(alertDialog); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/TwoStepVerificationActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/TwoStepVerificationActivity.java index dddb2778f..f7f13e801 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/TwoStepVerificationActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/TwoStepVerificationActivity.java @@ -405,7 +405,7 @@ public class TwoStepVerificationActivity extends BaseFragment implements Notific showDialog(alertDialog); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } }); @@ -617,7 +617,7 @@ public class TwoStepVerificationActivity extends BaseFragment implements Notific showDialog(dialog); TextView button = (TextView) dialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } else { cancelPasswordReset(); @@ -1280,7 +1280,7 @@ public class TwoStepVerificationActivity extends BaseFragment implements Notific builder.setNegativeButton(LocaleController.getString("ForceSetPasswordCancel", R.string.ForceSetPasswordCancel), (a1, a2) -> finishFragment()); AlertDialog alertDialog = builder.show(); - ((TextView)alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE)).setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + ((TextView)alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE)).setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } public void setBlockingAlert(int otherwiseRelogin) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/TwoStepVerificationSetupActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/TwoStepVerificationSetupActivity.java index 13cc79901..2d835e0f3 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/TwoStepVerificationSetupActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/TwoStepVerificationSetupActivity.java @@ -281,7 +281,7 @@ public class TwoStepVerificationSetupActivity extends BaseFragment { showDialog(alertDialog); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } } @@ -394,7 +394,7 @@ public class TwoStepVerificationSetupActivity extends BaseFragment { showDialog(alertDialog); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } else if (currentType == TYPE_ENTER_HINT) { onHintDone(); @@ -2172,7 +2172,7 @@ public class TwoStepVerificationSetupActivity extends BaseFragment { builder.setNegativeButton(LocaleController.getString("ForceSetPasswordCancel", R.string.ForceSetPasswordCancel), (a1, a2) -> finishFragment()); AlertDialog alertDialog = builder.show(); - ((TextView)alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE)).setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + ((TextView)alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE)).setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } public void setBlockingAlert(int otherwiseRelogin) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/UsersSelectActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/UsersSelectActivity.java index 53621a6b9..869aaab27 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/UsersSelectActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/UsersSelectActivity.java @@ -283,8 +283,8 @@ public class UsersSelectActivity extends BaseFragment implements NotificationCen } selectedContacts.put(uid, span); - editText.setHintVisible(false); - if (currentAnimation != null) { + editText.setHintVisible(false, TextUtils.isEmpty(editText.getText())); + if (currentAnimation != null && currentAnimation.isRunning()) { currentAnimation.setupEndValues(); currentAnimation.cancel(); } @@ -335,7 +335,7 @@ public class UsersSelectActivity extends BaseFragment implements NotificationCen animationStarted = false; editText.setAllowDrawCursor(true); if (allSpans.isEmpty()) { - editText.setHintVisible(true); + editText.setHintVisible(true, true); } } }); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/WallpapersListActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/WallpapersListActivity.java index 805ce430e..ec42aac3d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/WallpapersListActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/WallpapersListActivity.java @@ -559,7 +559,7 @@ public class WallpapersListActivity extends BaseFragment implements Notification showDialog(alertDialog); TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } else if (id == forward) { Bundle args = new Bundle(); @@ -765,7 +765,7 @@ public class WallpapersListActivity extends BaseFragment implements Notification showDialog(dialog); TextView button = (TextView) dialog.getButton(DialogInterface.BUTTON_POSITIVE); if (button != null) { - button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2)); + button.setTextColor(Theme.getColor(Theme.key_dialogTextRed)); } } }); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/WebviewActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/WebviewActivity.java index df4d3265a..193844819 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/WebviewActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/WebviewActivity.java @@ -190,7 +190,7 @@ public class WebviewActivity extends BaseFragment { progressView.setScaleY(0.1f); progressView.setVisibility(View.INVISIBLE); } else if (type == TYPE_STAT) { - actionBar.setBackgroundColor(Theme.getColor(Theme.key_player_actionBar)); + actionBar.setBackgroundColor(Theme.getColor(Theme.key_dialogBackground)); actionBar.setItemsColor(Theme.getColor(Theme.key_player_actionBarItems), false); actionBar.setItemsBackgroundColor(Theme.getColor(Theme.key_player_actionBarSelector), false); actionBar.setTitleColor(Theme.getColor(Theme.key_player_actionBarTitle)); @@ -423,7 +423,7 @@ public class WebviewActivity extends BaseFragment { } else { themeDescriptions.add(new ThemeDescription(fragmentView, ThemeDescription.FLAG_BACKGROUND, null, null, null, null, Theme.key_windowBackgroundWhite)); - themeDescriptions.add(new ThemeDescription(actionBar, ThemeDescription.FLAG_BACKGROUND, null, null, null, null, Theme.key_player_actionBar)); + themeDescriptions.add(new ThemeDescription(actionBar, ThemeDescription.FLAG_BACKGROUND, null, null, null, null, Theme.key_dialogBackground)); themeDescriptions.add(new ThemeDescription(actionBar, ThemeDescription.FLAG_AB_ITEMSCOLOR, null, null, null, null, Theme.key_player_actionBarItems)); themeDescriptions.add(new ThemeDescription(actionBar, ThemeDescription.FLAG_AB_TITLECOLOR, null, null, null, null, Theme.key_player_actionBarTitle)); themeDescriptions.add(new ThemeDescription(actionBar, ThemeDescription.FLAG_AB_SUBTITLECOLOR, null, null, null, null, Theme.key_player_actionBarTitle)); diff --git a/TMessagesProj/src/main/java/org/webrtc/HardwareVideoEncoderFactory.java b/TMessagesProj/src/main/java/org/webrtc/HardwareVideoEncoderFactory.java index e9f5ee622..25ec0cc38 100644 --- a/TMessagesProj/src/main/java/org/webrtc/HardwareVideoEncoderFactory.java +++ b/TMessagesProj/src/main/java/org/webrtc/HardwareVideoEncoderFactory.java @@ -15,6 +15,7 @@ import static org.webrtc.MediaCodecUtils.EXYNOS_PREFIX_C2; import static org.webrtc.MediaCodecUtils.HISI_PREFIX; import static org.webrtc.MediaCodecUtils.INTEL_PREFIX; import static org.webrtc.MediaCodecUtils.QCOM_PREFIX; +import static org.webrtc.MediaCodecUtils.SOFTWARE_IMPLEMENTATION_PREFIXES; import android.media.MediaCodecInfo; import android.os.Build; @@ -170,15 +171,15 @@ public class HardwareVideoEncoderFactory implements VideoEncoderFactory { if (isSupportedCodec(info, type, true)) { return info; } - if (isSupportedCodec(info, type, false)) { + if (info2 == null && isSupportedCodec(info, type, false)) { info2 = info; } } - return info2; // No support for this type. + return info2; } // Returns true if the given MediaCodecInfo indicates a supported encoder for the given type. - private boolean isSupportedCodec(MediaCodecInfo info, VideoCodecMimeType type, boolean isHardwareSupportedInSdk) { + private boolean isSupportedCodec(MediaCodecInfo info, VideoCodecMimeType type, boolean ensureHardwareSupportedInSdk) { if (!MediaCodecUtils.codecSupportsType(info, type)) { return false; } @@ -188,12 +189,12 @@ public class HardwareVideoEncoderFactory implements VideoEncoderFactory { == null) { return false; } - return (!isHardwareSupportedInSdk || isHardwareSupportedInCurrentSdk(info, type)) && isMediaCodecAllowed(info); + return isHardwareSupportedInCurrentSdk(info, type, ensureHardwareSupportedInSdk) && isMediaCodecAllowed(info); } // Returns true if the given MediaCodecInfo indicates a hardware module that is supported on the // current SDK. - private boolean isHardwareSupportedInCurrentSdk(MediaCodecInfo info, VideoCodecMimeType type) { + private boolean isHardwareSupportedInCurrentSdk(MediaCodecInfo info, VideoCodecMimeType type, boolean ensureHardwareSupported) { if (VoIPService.getSharedInstance() != null && VoIPService.getSharedInstance().groupCall != null) { return false; } @@ -203,9 +204,9 @@ public class HardwareVideoEncoderFactory implements VideoEncoderFactory { } switch (type) { case VP8: - return isHardwareSupportedInCurrentSdkVp8(info); + return isHardwareSupportedInCurrentSdkVp8(info, ensureHardwareSupported); case VP9: - return isHardwareSupportedInCurrentSdkVp9(info); + return isHardwareSupportedInCurrentSdkVp9(info, ensureHardwareSupported); case H264: return isHardwareSupportedInCurrentSdkH264(info); case H265: @@ -214,13 +215,13 @@ public class HardwareVideoEncoderFactory implements VideoEncoderFactory { return false; } - private boolean isHardwareSupportedInCurrentSdkVp8(MediaCodecInfo info) { + private boolean isHardwareSupportedInCurrentSdkVp8(MediaCodecInfo info, boolean ensureHardwareSupproted) { if (!Instance.getGlobalServerConfig().enable_vp8_encoder) { return false; } String name = info.getName(); // QCOM Vp8 encoder is supported in KITKAT or later. - return (name.startsWith(QCOM_PREFIX) && Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) + if ((name.startsWith(QCOM_PREFIX) && Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) // Hisi VP8 encoder seems to be supported. Needs more testing. || (name.startsWith(HISI_PREFIX) && Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) // Exynos VP8 encoder is supported in M or later. @@ -228,17 +229,37 @@ public class HardwareVideoEncoderFactory implements VideoEncoderFactory { // Intel Vp8 encoder is supported in LOLLIPOP or later, with the intel encoder enabled. || (name.startsWith(INTEL_PREFIX) && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && enableIntelVp8Encoder) - || ((name.startsWith(EXYNOS_PREFIX_C2) && Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)); + || ((name.startsWith(EXYNOS_PREFIX_C2) && Build.VERSION.SDK_INT >= Build.VERSION_CODES.M))) { + return true; + } + if (!ensureHardwareSupproted) { + for (int i = 0; i < SOFTWARE_IMPLEMENTATION_PREFIXES.length; i++) { + if (name.startsWith(SOFTWARE_IMPLEMENTATION_PREFIXES[i])) { + return true; + } + } + } + return false; } - private boolean isHardwareSupportedInCurrentSdkVp9(MediaCodecInfo info) { + private boolean isHardwareSupportedInCurrentSdkVp9(MediaCodecInfo info, boolean ensureHardwareSupproted) { if (!Instance.getGlobalServerConfig().enable_vp9_encoder) { return false; } String name = info.getName(); - return (name.startsWith(QCOM_PREFIX) || name.startsWith(EXYNOS_PREFIX) || name.startsWith(HISI_PREFIX)) - // Both QCOM and Exynos VP9 encoders are supported in N or later. - && Build.VERSION.SDK_INT >= Build.VERSION_CODES.N; + if ((name.startsWith(QCOM_PREFIX) || name.startsWith(EXYNOS_PREFIX) || name.startsWith(HISI_PREFIX)) + // Both QCOM and Exynos VP9 encoders are supported in N or later. + && Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + return true; + } + if (!ensureHardwareSupproted) { + for (int i = 0; i < SOFTWARE_IMPLEMENTATION_PREFIXES.length; i++) { + if (name.startsWith(SOFTWARE_IMPLEMENTATION_PREFIXES[i])) { + return true; + } + } + } + return false; } private boolean isHardwareSupportedInCurrentSdkH264(MediaCodecInfo info) { diff --git a/TMessagesProj/src/main/java/org/webrtc/voiceengine/WebRtcAudioTrack.java b/TMessagesProj/src/main/java/org/webrtc/voiceengine/WebRtcAudioTrack.java index 7aa4729ec..a24756880 100644 --- a/TMessagesProj/src/main/java/org/webrtc/voiceengine/WebRtcAudioTrack.java +++ b/TMessagesProj/src/main/java/org/webrtc/voiceengine/WebRtcAudioTrack.java @@ -518,7 +518,11 @@ public class WebRtcAudioTrack { private void releaseAudioResources() { Logging.d(TAG, "releaseAudioResources"); if (audioTrack != null) { - audioTrack.release(); + try { + audioTrack.release(); + } catch (Throwable e) { + FileLog.e(e); + } audioTrack = null; } } diff --git a/TMessagesProj/src/main/res/drawable-hdpi/add.png b/TMessagesProj/src/main/res/drawable-hdpi/add.png deleted file mode 100755 index 4bf59bd534aaa5b5a1edc6ca8e26ccc6ee269618..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H0wnYHF4+L26g*uVLn>}1|2Xepb3~7aX>k{O mh~dVDlB0_s+Ng*;ZeUnkt^58-a!?~sErX}4pUXO@geCykiyD&v diff --git a/TMessagesProj/src/main/res/drawable-hdpi/attach_close.png b/TMessagesProj/src/main/res/drawable-hdpi/attach_close.png deleted file mode 100755 index 7e251414405ff7e765cf0c677b0c8bd075ca6d90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 319 zcmeAS@N?(olHy`uVBq!ia0vp^fgsGm3?%0U?qUH_egQrquK%eDCfJ0y0!@}G3GxeO z;8#)*5IXz8%<%0c(f@h*Ommko$NpP(_*B>|>4ILMsy0s-$B+ufH)qtv4m$|2TrB;z z&i35Lf8tlA6+&{PR&k5{IBWTQPVqU*oD)3}EPtzZ_Z^Dif pv^auT9shA!0S(S8^p(EFz#u)B*M_Mk`aRG^44$rjF6*2UngE!#r(pm9 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/btnshadow.9.png b/TMessagesProj/src/main/res/drawable-hdpi/btnshadow.9.png deleted file mode 100644 index 9befa150731138595ccbb95919936a86160659b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 195 zcmeAS@N?(olHy`uVBq!ia0vp^b|B2c3?v)hZ!HH>(g8jpu0R?DjEzOqt@*Sq|Ns9l zr0p!A?I>XARK%2+3Y6k33GxeO_|M8K^j}L~{%X?HW}u*-r;B4q1!FP;vzw!j!U2Pj zhE3dM2`p31d5`inHOjG{-2G?*|H8IC2RNq4Pldqc&Og0;ey$7alT|TvU~p$IyKunZ f0Yjkm;}r`Tck8S-iL?=w206vk)z4*}Q$iB}WWqRu diff --git a/TMessagesProj/src/main/res/drawable-hdpi/calls_accept_video.png b/TMessagesProj/src/main/res/drawable-hdpi/calls_accept_video.png deleted file mode 100644 index 04389ec0b78a77975e813fdcfcb8d7d0baa5f163..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 469 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTCmUKs7M+SzC{oH>NSs54@dpunn zLo!(3PT%Xr>?qQ@IVnV?DM8U}#xmpU{*vFvL)uVB~GKf!KoYewcuGo>35(X*Tk z6aoWc_D8d%9k#Nbe0J9AJKXI*cb2D}v$Q_yw>B-2ZwB+T2FnBp^&wr>qie?U%v+1n z_}7SBWqT5wC3moLlFE6;uTQ-c>X}w`sGHr@JH9T#lzq#pgm-T$pDuQYWiC0Wn(-^E zxLC)EDfAfoZ2c#)=l-zmDCV<2w|erbJ^TGn=YR( zsbw;1-EY|N$L{%wtG9S;{bK?IC%kuf!lZLdAm}5jLVSCP{8^TTDkn!>G3n)(+$vBs%gUFv$kmWge0M}T5O{Oj@)@=fa_1hrT=GF|3e zl4)4jw%L)Y51g}&o4_ViMWPLdZf`8TQ<9rR^<7gK}ZI26YoCBEz1n^yy zIx@au{K{lcr@p{_j{wIFKRbmYnD!ZfwuFCU3g8*%p*6+F>U6EaZof2qACYK_hMzST zlLU@5qdw8}v*Kowz`kb0$C`dt+)NVqq8YJW)6a^VNdnuN5sx+f+`4f%o6v8RWM7%A zb4z9r4Y;KQ`cvkf8f@p@6~LD_Bp~q5+!Gl_1hNhZtZMfIKFk&J1(lxu+i>n)v;Y@T zNlD@x{rn!>xT*p?rz9ZV={UdKUIVxVoe250ozZsX7B~(J;Hi-Qy4|2{iu29oHDGIz zK&!UQK>HOv^TdGdM2Bhy^k*{%GXVg&2mOsC@riNjFM*G|o(!W&^cwY|4wLv+dVpI_Up|EEO-MPpb2z@Zfn`SYeC+OKBDs~vnaDJ^^t6$=E++CQ9$$P2Qsm(8N)bJVHW2^-002ovPDHLkV1jN>GEo2k diff --git a/TMessagesProj/src/main/res/drawable-hdpi/calls_back.png b/TMessagesProj/src/main/res/drawable-hdpi/calls_back.png deleted file mode 100644 index 4495e7a7cb58360c65b40b63ab88bc85e887f102..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 618 zcmV-w0+s!VP)?aPlYk7n~d& z-5dyD!k|$SKn4gSkhm}rOf4-~i{}9)q_JrWeIeC%lS@lqd+xdC-k00d<6*`WU|d+;ks(o-xJ;}LV7Qd~!1 z&B*&4i9!kFPmoU;w2dp2*OPx9_PndfFH&k(M_{#{H&Wge>yKkzhevV(8^t@83+=N1*2Rz@N6vODbK)qhS8dsji zd85&|27whL68h_QUgo~>N>Bpnjvi!||Lu(TP9zd}&E;}uDDfS~aih&D%koRB)k>Qr zVx?VsnM@`L9K{4{;$=c2h$N2C^Rm`LIR7e_%Wm47pUXSd42E8%L?xYzkPT_HD?FnBDdM#zrMh6-9Z+WIX@?dBdb) zwEB|Zl4-mIm*67YH5C9?W=sL508@Y|z!YE#{0{|w04T06WH7G>`~Uy|07*qoM6N<$ Ef+VC6A^-pY diff --git a/TMessagesProj/src/main/res/drawable-hdpi/calls_bottomshadow.png b/TMessagesProj/src/main/res/drawable-hdpi/calls_bottomshadow.png deleted file mode 100644 index b832ec0e056c83c78d5696dc86a03da6db47c534..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 403 zcmV;E0c`$>P)NklDyXzd(1W{Tam|M{{FoOVCB zc+T~J-^+ffV!^PDt*8iduq~)XfC>&1)@BvxNUPdphYYwGCfZCCfe2KQMzN_hC8j6PxH9*4 x03(8$hY1T7?8s5P)C$RC z$q&#{EVN1>1}wxsLoiL6Lv4=4A_*iG;`tffJ?4$?-Mzcx{Xll%%g*f1zWIJ<_io>- zR6+|C2o(qw2o(qw2o?CxD$s7XuY-?Z7c{{eaHbS8A#$P{5$5lMU%<9K2Cj5loB13B z7Qqkj8q{n;#!iDHkkmdiF=E%{=9B!JVz!AL5rO|$%_o`l+z8u5Fq${4A|jZZ1X`pC z|Kr}X&&}0`!c)WQ9e!sguzQJ^%aw3kvXmme8lm1TUVw;#%`?x)^>!!DGae_R90GXnCTWL;-Oxjiwz?=zlV;Qyn&7H0H1(w^67aKj48ogzbAZLVLfDDdG_?NFK~udbg(DPy-)oVL~Q zUsFVIoLYFZVD+DXA_gE-1CKyo6)l2m$QddSDiA6VDiA7ASOtCqDb|OUnR}@W00000 LNkvXXu0mjf&(}Z& diff --git a/TMessagesProj/src/main/res/drawable-hdpi/calls_topshadow.png b/TMessagesProj/src/main/res/drawable-hdpi/calls_topshadow.png deleted file mode 100644 index 960821739303ffeed29bf8400a657dc15830e685..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 804 zcmV+<1Ka$GP)Zy3`3J`-@5<*f@R0okuV`&c0s#g#SW-zSrkP{cG3Io zcKd$(=zDy5`+a*Hzwa{G49~X(c5}>qg$ZyMOay#}$$Hw5Q;hwAYhkz-5@AXFBeiVi?PyHo>HJo}vzHuWic~0(q&_H>7$HY7$#0#;6A- zxeN<6_+v>@4g|Bd>EY%c2(%T<26;-gXe%ispW*#TdHVL;NUKsQnr5}cpO&){v}fEmFAyk}Z>-sGCT3;jB&jHijIS zR#=rV307^96By$-tlzvJ@W%o{#mK|KhrOS)%H5f&?devjQftFw*d&l@zSG7hrsP2H z7(8P>qAeH)r`_3K|I$VoPAU)D$S!O3#Ms9Wd@PyvUZ`PV(?J`j_3#fM*+-0pMw?-& zXXL3Vl!E#HTd|3WgRM}N9kz3rQ17p2dqYC44GPp9mw+}K-Gjj<*k7&3V??=)AF^z4 zt48Brs7GXB!x(IwYB~2<4vA%y0vna5du;-xxq9CmQ%UQY;W<}*?%7hKZ7uFeJ)#D$ zWyH84-Ggn+EB9^9)70;-#{|?g`u2zF8F`eQ&vI(?@=&(rJeiLPh#7fIaG{CwzI{dE iuVu}X^O|W+v-t_})>bi!Uy)V-0000U&NA diff --git a/TMessagesProj/src/main/res/drawable-hdpi/chats_unarchive.png b/TMessagesProj/src/main/res/drawable-hdpi/chats_unarchive.png deleted file mode 100644 index bc03eb21f3b626e387dba484de98bd1c513d007d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 603 zcmV-h0;K(kP)Y5QcLaK>{iwS}GQzrC^c5!jDSCP7y>w5X2PzhWH08 zY%R?n5E}~-1RDjhkyKjPhzJr%WnoOtXE6us-feC#cpu6wyxh#*%+9kzxV=jzla7RU zz_#saG?Qpd0M}8isntZn0=J7A$Qhp)Yl(sdsOZosR{^^bJ1h_uI#A$Lx6Z_7Y_Js1 zqLNCb@dfNw0P%z=k_7%HI&X0KIzLDEu6qSIW z-vT{jFQU`xxM$))olO0-1OKrDM$b_mKb>rT9*rZT9D`=r#N6@dx-^LO4*_xsJ)*G2 zH49JqleCCnffXcpx)+1X_iJ5%hwb zafOi!w1`14YmTC-Q-tfWLE3i+!8ufxk}KH3c4}NLBi<7VQY~Scy|WTnR1%|h-zeCp z?$zt8Ur>W0_WP-qS8IBK4yr*h_$~%7&=|PpgQF^McZTR*5{iC00g%-EDjoEU7J8~ykarfGC)i077?Dd3=mw`Cd5s3dw{x)+|k1|%Oc%$NbBTs&PILn;{Go^#|p;2^+q(8Kco zsz)i#59*W?z6G-WeV?w#kdSun{<4|h%gWBg7>3R}x$>Wn-`Dh_RrZsE|IVDl#Bk#! Z^IivjzY9CU8G+_8c)I$ztaD0e0swF+EdBrh diff --git a/TMessagesProj/src/main/res/drawable-hdpi/device_phone_windows.png b/TMessagesProj/src/main/res/drawable-hdpi/device_phone_windows.png deleted file mode 100644 index 25be94d2ada6d72e05f06114286e15f992dae4e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 496 zcmeAS@N?(olHy`uVBq!ia0vp^_8`o`1|-Ad1?~eW#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyz1IU%-rDgA~qxdV&L}EXvcxF(iZa z?Mz3$CIbQ2m4&Yj_q1_OTNiWs?+!-2*aF`CM)m_M8JQ;E;8~bpy57^dewp#xJ)OrU z>LfcbFbOm;uqZGvav(APurZ3io|Sw1S48+scjq&=EX&`2@66YG9lW0TeESWrkGag% z+sr+gT76z;95WYLe(aUT@2-vSCw4$ewb`FWv7}ZZ-0MGN)LrFY1U-+;P9S z$u*x;qh2|wOxr2UsBxHAfHaWKH%D&l`<}c}ge?AfDjCeJLyJ2>V zt!LLfJGy>SrsTfgr<0dTeZGC~`{Qfx-mDS25H*wi<>TmI{|+i{>6lsbVvb6#%KVf_ zvmGK+?=uulau4{aa(dIjr7LPwPW)?aDt+9|%jYeRQhqNeowxDLw&;K1>qB33 rXPnmG{#{!7X?F`o2!I0PM>Uhasl}E0Tl1{8gF@TW)z4*}Q$iB}qyW7Y diff --git a/TMessagesProj/src/main/res/drawable-hdpi/editor_rotate.png b/TMessagesProj/src/main/res/drawable-hdpi/editor_rotate.png deleted file mode 100644 index 28ace7fd6d6a7933f70301be86d4afd91d4fab61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 843 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 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/ic_call_end_white_36dp.png b/TMessagesProj/src/main/res/drawable-hdpi/ic_call_end_white_36dp.png deleted file mode 100644 index 01f6feae7efd39f505fcf9285ed1207c97aa12f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 821 zcmeAS@N?(olHy`uVBq!ia0vp^W+2SL1|)l2v+e>Z#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~yTfmH9gA{&t)?32Bz%<{}#W5s< z_3eza-Xet($75Y%qjpC&Ez5Xv)LS4fDCJ{R<%AE{_AA_V{WM`ZUsF}Lm*a$Wf{tD7 zzE(OSjqJSQ&dnYnRx_4N%76WQW9iM3vS;S|XXf(GW4Al^=FhzA@89fMqpF&H5URRS#8X+>rC@Unu*-oC`$P2%bM&>vvJ^SZt|i^rK2e(Y&$f(5 zqK5VHY%)8T?(0nQJi!Fe^NybN)7FJA}!|8tT*sr_0xHq{OPd4Kf{A>_Co!>Cx!$gmH zvi%2s-kf+gXTS414W9=2*$01qY5TFXX{0{0res^3TI{ z#P+n!KEC{BeD=Y;D{nGpPdG26W5HhT?3KuOlq)z4*}Q$iB}`k_)F diff --git a/TMessagesProj/src/main/res/drawable-hdpi/ic_chat_bubble_white_24dp.png b/TMessagesProj/src/main/res/drawable-hdpi/ic_chat_bubble_white_24dp.png deleted file mode 100755 index 6e4e14e91dae71ba7b543d0f9d495360caa55543..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k0wldT1B8K8w5N+>h{y4_S2yw=FyLW!3_Evg z-hl=+Q5(j~mI1pWe3DA8Jbi56#o5XWDvE6yKSHn%Vm^SMBiIS%3s_jDHIh0a zXlG-QN)6W;dyuMxfyZdcHZM996DyF!W`!jLt+zSwVjca;tZY zmou=wi`WhHJ^HYOkzX9BxFq6UX~NfHfb~+ktkr_a1kgPL{!T(8Q*die%D6oO$Tg7yJvXSSWa=dP3smQ?ZT4A$1s4j{&h~(P_3He8rm?#7si)0 zbT<=mid*8f1~Yzh4Xs*qpYv$!dl8r>G>miK;9e_a=Ni(1Dfu)QX7cOYUMmzi6Re?e z#mvK@Ych+MbSs1WfbTIYa~#E-+iQhTt|5W7M~r|&R^5mn>-~Bt%!GLqWgvZbvBEniO;euLBR=c`?E}3Bu;$V7iy2V;hg@o zx28_c_mKZR{?*C(VzgE2`kVS0e{%Y7YHOIv9cm>`wtfXGk@wN)x1 zQ2Q~|LlV1*<2nOUoblPePk!$gy=Mof-p^?O4WLFqkB})kYf4D38o(!}>WcAo0sYjm zgs+k>N$u|I0DQ4IqK&7OXOA|KIOUfEJ^>ifs#MGtBax^QKo@{9Ze_o?;uhUvKnOs` z$dVlZ!eYS2n4S^96Q(T$04$AvtBs>d0W)L3tUADD$daL==&FbTU?BWGkN~QP0bn9z zCK5muF#!AunUw@kMQXpns%{t20BQqlTh;(`rTp9;AYd)YuL)8+_Bi5vml|BK$jC1; z@|TRaB~HJ{9yh%3L&7uHsgAMFT~TFrchPN5{@rfFIhJa3Z?|PWWy%h4VzcQVNbY*o z8(SjHvE@uk&}sSL6;~L%f}H%o_UL$+k$>1_`28-OuCMAG-{11yvG)M^;8Fc9XdZzL c;2#10098@HG}+Cp&;S4c07*qoM6N<$g8J6JrvLx| diff --git a/TMessagesProj/src/main/res/drawable-hdpi/ic_mic_off_white_24dp.png b/TMessagesProj/src/main/res/drawable-hdpi/ic_mic_off_white_24dp.png deleted file mode 100755 index 6fccf5d09f041a62f4c831bb7038d59216d91a88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 428 zcmV;d0aN~oP)7*pw6*!brO z;>wChcQR1etfOQBSPTH4;3^W?^LfE0AR)ugvqj9w#dIXk)a2GmiSbTF4Z1+Pq!7U-2 z_H!z=23Gr_Q^t7TP3tC8sAm{i=!e2rRpyU3o-myXeLd^8 zPvEl+XN0gloeD>_ssDQq3u+dqq-KS}11(yE8K8oCVJ;7?Xf#%)Y_4@o0!s84K>q== W1dVw9)Q3s{0000k4UPd!~6Ln>}1CrGe5v*bKpe4$}& zV05;INy6v)t{w(Shlzp$%o+wvX$&Xb<|N*Iv^VwBG~?*H13U@`JN_y~N15+;%TPJl z@xNzw@wS=+%VugQZ~K^gvn$%zQMrsGcc+8L?`Qv`y$aZFKYJ{ak)Cklj`zfGZ_hB)9u-@R4RUy!wXAnrKGBliHl-unn)&dw z=Gp)A>-L*|vseDM#K&XzrD^rE&*z07m@3WzGB#%0&l`DlGV{7sR?KZo{Ol5QOH$(7 iXMx~%Cwr#-WoBdOxa}m9^=mH3!wjCTelF{r5}E+Zf_$O? diff --git a/TMessagesProj/src/main/res/drawable-hdpi/ic_smiles2_sad.png b/TMessagesProj/src/main/res/drawable-hdpi/ic_smiles2_sad.png deleted file mode 100755 index 2c8cc7f3ac34fb4b9d1a78d47fa441fbb85e3740..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 737 zcmV<70v`Q|P)Q4HM}RvDAA;h&-*5MNyc2 z7;<(@$e9Ku0~#aC63GKmn5~jEF(DLvWDB=WR6s6Iw;nRX2^g5{FCqcAr}>LSlh$)cE)Z?Go{Q(*|(BF_OyTTIGU46BO5 zyn!Dg%XKo=#|Y-R$~uqRZNC@Ik8r7^DGJjpxj0U;Sf>H|%#SQ9YFs=!RvShE?`RHbilJiT#nK*)LYdIF!3aheI+xQWnMWm}Eg@nHOWIbd&9l z%K6g{6<;*feQ_q)~gaj4zFlST-JCcsQDNJLsWT#adYpET|i9?p00i_>zopr03<>mjQ{`u diff --git a/TMessagesProj/src/main/res/drawable-hdpi/inline_video_play.png b/TMessagesProj/src/main/res/drawable-hdpi/inline_video_play.png deleted file mode 100644 index 3c7bc10a72dde113011890b5802e6f8b55704bd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 252 zcmVaRI>&I=(B$Pm0=c!M2tstPy(cLwAYU^&wvQh;SmT?6o7LRkTpD=}FGSPrx`U|CYr z03?h)>;4Zc7kX*kK496<)PU7JB~pN;q<|+gihi)ArL@#fH{-d(n1cTfE9KHhGzw7syPu8as$(XK*4C=v0C z0wdCk$PA4lqX-g%>QdbgEZf!He@y&moqf-H-t+EycF)cE!^6BY=b4%Rd1jtx<{4UO zp@qhv5=W6#YrrMI8ekzX2Y9qWb9Vzj1K$DXfQxxbl}crBLm--w1(Hrl>eI+0%yCB2 z^I0APglkxIGq4|+;`-mfH^5b(E2ux9H7j13dB9R&qT6o)JAk8QEV^0JJ=?Hf(m_cx zb1dE{c~;VaWaYw~Te23-5}hNd!yRr(+Ax9yv$9^&4bR;vXiS&f<)TTj850lek!aFKWo_}=~7 zfo;HzM87{%#$~065|-{Tu-w5ogsQ35NyAbt$d>H3)b;kE68#N$$KNx7^T3~OU+wm=q`f8_ z$IUB;;}=8f^uG0XIYr4HZ{fz(W1YBfjSPh zlf)rvtMj2FZaeC^ekpO6pzz)y>738kFPnI2j`F#=d=dGjd-Sr)kjFn$;$M#x!cFVN zWTmQze&+r22(Yt>M0fbOmN^ZEO@1;-?lv}I$=4;x-Pu~nU69#MljS?*E2BtqLo#=` z8_!iix*TLv@&FO=p`_vx>=T`d`2%3zX1*b@6i zz)j$F;Nt;;B_7Fw=}$&EUlJwMH7dg zC2f;5-Ea3k;RQUp9e5k4w)gMN3ts}iJ9-9hy1(-jkONx1@5g|Rz-X}^ebe*du%ykB z9!l_dDQShIOI|zOlB!dNU!u_GCH-y2*Cah#W`TZcko1`+_Ki@Xu19CgXiQS;1d5DO zy`%wa^EXLzLWH(^z1uwrBBQia(miW;dt6s_g4P%9=>~OY;eSvzoC5l-vRsJJ=j_=B z{4|L|$8AM%Xo?pm35`fY6RRr`1NQNecwv&z2krUS9sfk9+THvNV`g zXnZV<=HcFsz5kh|!K^}00AE@D7SNT4dmiYu{4lULOM}z17+HfWZ9-ivu#}Bi9GkP{ zXCM#vUb%%j{0bZn3E+ug+J?a9NM}hZ%5nz7-zFSK_ zFfU>@J+^X0%hzl>`pooJlyn5{Ol^`zjQ5YEcO^B(I4%HxM$#veM!lWssH6o6b-pBN z+&D|iB{Vvn{^1F5`Qws0C4D66oOhgw@M&}=ilrHnzA?_Aq*)GQyY z^beBiQtH|2@wSAXnYzuOFQxbKRAs@$9!dR@u1oq+(ii60+g9I>6#K>A&~WFb+EAg} zys_6@9UoNTZai1x=7MpGd@z{f$e4Qmp&OQn=9$8SH9CP z4-tyZ)CikO5W3#0XOZ{adH1SUwolTuEJ7Q-VE2xsS2GG-=ZR^w$+XLcRfLZv&5YZI z3Uz6@HxZ&?&|+gSROnlt{Q;Z#5$@QvQKD@eg)YgK10Mo&?cD_nUjyIT?vjRSK!b&X z4GEmnzz*O-S_N6I9p_8xG7ppj_jh`1qbT?{iuI@ucU8CySOPq4v13xVWdZP*MOT9s lT=!Z&2n9V_K?PF@z`y1Pam3@<9uWWl002ovPDHLkV1m6P=j;Fg diff --git a/TMessagesProj/src/main/res/drawable-hdpi/location_panel.9.png b/TMessagesProj/src/main/res/drawable-hdpi/location_panel.9.png deleted file mode 100644 index e882e614a4d58749368a1ce1c066155ecf4633fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^3P9Y=!2%>#tq2AQRC>BNhE&{odutY b|6BU_YL4{i44dUZM=*H0`njxgN@xNALl8R` diff --git a/TMessagesProj/src/main/res/drawable-hdpi/logo_avatar.png b/TMessagesProj/src/main/res/drawable-hdpi/logo_avatar.png deleted file mode 100644 index 8892c08dcb920145ccc9301d94d0665cf7a6ecec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1642 zcmV-w29^1VP)KZw~)gbkP(3j+KH$b^ey3^N%sPl0uw+sKoi}#j~1=@)nPnxtL5TBdYURXV1Df zvoPhT?mpv@qxq941ClN)arqPrLp)+W@EqbF7`VLP{HE6McNnF312y%WU@ZnLOT--! z(?la0%ZZD&7^D(_U3tMR2Z}2Ru%yEIoZ??rB$r#>J_)N;@f|X) zJbZ(fk14xsYG2eaKoDhuecuHx8_hNfMo{C~26WOb z`MQV%j%LcmdVEaTO>0HRYux*pFF3cN9IWFKv)}}ET53W!r4@DjXF6j)*|L6#;|G!8 z&}C9TwCk_qVE@FE0-H~f5rkbhO3{@6*Qf@w|A+Zkv6rE3HC@-N70y`0`V$ccQ#Ms7=QKKGcN*V5hfT%9cGZZRO z547(hmyHX!lWsD{fX*;-)?YKqC7#NPrqNkXV5w&)c?)GQO&}7_o1C62O{^|q5mXx* zK>%_&otNcKQrG3CJa~zRdUi&Ai3NbHAhLtmk~4%jqnN~k67)_w30A5OEFvSTSrv1N zb+Gt#V3`ja+s<$~bDu4TZM0;cH70<^cuj62Kh;RT%%|QcR1^HZ+-iZziVSA^Vko+EFB1Q;MUpX7KA?-h+8 zEMCkPG=_w5J);;w&Od0&(OYcUbA>5e&QHG&!eQD+5lrD)lC}WWgXW<8t0%Krvi7^X# zBz?H9qvyu?`jQ!YY}qRLWkZfu3ry4%oR_n$m7Z0XqMc_s1}sbLI+x5B@o6kuK^r4F^};Jgpa9xJTx+AlWD7W4k7ZS0YUBOCya@fzO4XZm|9 ok=F^mbnG^x{`l31yu*_}0lcu}@Z{9BrT_o{07*qoM6N<$f}Y16MgRZ+ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/map_pin_arrow.png b/TMessagesProj/src/main/res/drawable-hdpi/map_pin_arrow.png deleted file mode 100644 index a5cd5b17e1965079c0cbef9c911e45a079967426..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 793 zcmeAS@N?(olHy`uVBq!ia0vp^iXhCv1|-9u9Lfh$Ea{HEjtmSN`?>!lvI6-QsS%!O zzP=1vKsE;hV|yk83y{SK#8N=az`(SC2`-|zfEmFCNt$*nvH~jU@pN$viQs%2YMUVv zC@^n(^_*u)YFUChF0Ba@6dHv+lb`-=;6s6o_|6IEl5xi?1CQU%{+agd_D%E6F1n{CF1mj^ ziK8frv*1Nr{TuPu{O#Ranb#ii^nLV2Wp~s|LlyoLcXpkdV-=Ql{FM8D8N;vop$(Z2 ze$JQ^+~xJS{14yrJzeI9U80@qIlrV9hv!{y_I_2pV)NbL&_mH5)|&`97|qcReZMOA zkz33oFOj@r{_3rgp1T(sUbwV5Xsge(U(58K+pXVpRAW;3q0jD0oC=)9?dyUK)#8_E z2CDMi`?GU)Z=Lc|^R6GdldJT9%S^m=>_~M-sJ&*9tGPw(+RY*}4V`9oUN8;cxKHEc zyuLXx_FMO#*UWHcb-$=~c*_H;FOP0o7w3POSRc|6GeO~+icsjHSHuY_Gv8TiWGa-0LdO|{Y%y2RS7pI*Ai z@6giL`=?q0)3t>%oJ$;q80G5B?7~zG*e|qsvQ+%I`6FWD0fj>{8#pDB8rtJ4`fjiF z@Mz%VQ98pY&6rnN;CtgiuBVUJ1|v4XXAW}?@X37G^kDn4Bknl`|DOvRKVee(^d}%p zu9!LZxA{NW#G2Q#$}!g>BmJ4qem+(pYklr?)ouTrxtn=&!WYCgma+cp=K90d*C}3B SrsSyuN}rytelF{r5}E)CuSggG diff --git a/TMessagesProj/src/main/res/drawable-hdpi/media_doc_load.png b/TMessagesProj/src/main/res/drawable-hdpi/media_doc_load.png deleted file mode 100644 index 260daaaa92a21ef0f51bf67509a8f75aa9faabc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 154 zcmeAS@N?(olHy`uVBq!ia0vp^{6H+o!2%>#FxzPXsYFi~$B>F!$q5Q#f83dr9e@4L z({N!6Fr4t^;Qt*594DB(|DPP8+W+@?tHk;L|4rJSy!`)%<9F-7c!!C5KE!iey}RhY z{$bVif5eY|nepSlbi&Em|5Z1*uRQbr_W$>PraN{pFl#FxzPXDK$?Q$B>F!$q5Q9|MvgmXI#Ir t>rXrL4wFqMR(yFdxy|*ybPq=@GXraYol(((+EYLs44$rjF6*2UngCfk95(;} diff --git a/TMessagesProj/src/main/res/drawable-hdpi/miniplayer_pause.png b/TMessagesProj/src/main/res/drawable-hdpi/miniplayer_pause.png deleted file mode 100755 index a9ed779b651706b2f1e9edbdf2524cfabe6c752a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 101 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9a!2%>79x6)#QaYY4jv*Ddk`opv{iuIv&ok$c z<~MoH1ELGNd$puOj~w{$UujOg;5v?O2~!4!{>f8*=vK9=1NAX@y85}Sb4q9e09~yg AWB>pF diff --git a/TMessagesProj/src/main/res/drawable-hdpi/miniplayer_play.png b/TMessagesProj/src/main/res/drawable-hdpi/miniplayer_play.png deleted file mode 100755 index 47f0822f9bd17412e74b1baefcaa6c1d8562e50b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 206 zcmV;<05SiGP)T_{iBg2%q#GkxX~c+!VT`!OC^v}EQa!!X zSucIv(^NT~(^@l~_(fkK^}Cmu%C{EeV6TQ4(96@jwJzD2z?6iFFi0g(a~oh0wtDrVvg@I+Be7-?(OM$i|qY zJK5M}Nzza@nxyq*sFBC1{&3EJ+H!GBNL^`cbBoU-MftJAB~Q#)u;7zt cy6nlZ0vi`W(3PDq1ONa407*qoM6N<$f{?6r#Q*>R diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg2_animations.png b/TMessagesProj/src/main/res/drawable-hdpi/msg2_animations.png new file mode 100644 index 0000000000000000000000000000000000000000..5afe0443926781f9cde2721512baa5ad93723749 GIT binary patch literal 999 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0QAtEWR9Fesm_KL~K@`Swi5kSp zCP8VkWnY()?P>1={pNK{ZTh*e^zAQDI+5yV1? zx!}L7zi)4zx4XAHyPLby^Mmi+?9BJxyq%q$nZ2&A4nt+N`2<1GkMA}pD+&va?<$pw z%IyV748but1M?t_v_oaGDl|d_9VF;Acm{U64py*p&_+eoHd$JPozh9H_SxE8(M;L>N!?ph1h? zFDZccZKAy!K9MkjTa?$P22ZI(tG7>3pN)$rmAX@5D#brmg+}v0ScH>sMHk=&+!Pag zF3{RKHP#@b(YAw;hQ>q%+6z#)rzY%C_(c_90q#$@q+X)a0xQhK1XT2g)wSWvT!GCA z?M0`bjMQzX?v1PehCOd>Sr$znv}qD<(6--b*B0j3Z$8$F<$m#di^pE5QCkOZ)7c%E zxd6Jpv>ys#4wg{#_)u$J#V;K!;&vQff!ch}!TTiDgUy0AXCXF1ElEgGNh*NXDISJP z@DLn^Sx8MNOWaKTW1L^R00RXA1=83fi)C5B*(>1@ZA9=8?twqxQvnof+b`*gzHGtuf2LBnUnA<6z1WstSp>9{k7)~l-(@UBRnE; z8PKuzwHx@{g&W{AxSP1Ius*0S^*QTu_%ny(^guu0M9p}AtFCo`L^e}?1TVX~o7jVN z@X1~KjP+%G*R=#Lv$<|T{~boL#Koz4M1Kjbe{+>PqB6&iW9YSS2`}MJe+uzd^#0?A zOQ_TVji42{KHgRS6+XodXfCPFIl|h#aR;4q$akaES)W0Xq->-Zw14=aXphb%ra4tr zMhYzzY)Fij7EgT)*!kN=EzP#?@0e&(Rwe`O(mHm^Mt5xOi+|@2D>`aBeghz6 VAL5anUYh^_002ovPDHLkV1i#HtsejY literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg2_archived_stickers.png b/TMessagesProj/src/main/res/drawable-hdpi/msg2_archived_stickers.png new file mode 100644 index 0000000000000000000000000000000000000000..77c2c9679e80e8b61989d48a7fedb0bb63748e7a GIT binary patch literal 1235 zcmV;^1T6cBP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz1JxN4CR9FeUm|cifRTRhPjvon) zO6E+d=)FUNFGYw?Q#>J=DV}K`%Y@r6COX(L=t4;0Rel zjvp0?8Z?SDqV*s+F*7=ze*ZIjZT3AM*K=+&E%>?DS!?aJmgnrV&%RS>DIrl5%_dwF zmGMfYGF~)Tag|2FG*HF=8oUfE;87?me>33{9D{xuyjnIv3ysW$k6{d^Qj|}5=jJt) zxaGaAD z*^?PC#YWYMt5G+V8b{4J?=d#>YNv8O$e=o)dXk#Ow>rgE|7ljf_Kj&5SLd`VWc6FD zAzQ$|PkSfz1+1Rc_YEy@ak+Pg+u90SVN-q1^i_#it7r9nL$*Oi>Ga;xhqfOMQ}8Ws z%~p!WT0N`p8_G^wZ`~4HhI(N3YUmGjACRZm8p`wk@AfhceI0Zc>Ves-p+D4pK%O!) z&yiu@h3#h;;gvm-;SWtkV@KR18(RuDL=*R!d?2ivrrZDOj|=V(oU84p%)(Z6`g|r8tO;zIgQ;jf8mBmpvi5piv$f1 zX~eE3?kK1!$#pmbw?PNCXJHxWk-b6uE9BIjn-mOtL9*9u;fTEgHx+=Kfcc?6)bVw} zC`fe3+YtJtW19o|+TR7qZ=lCHDO~i)itIC6a>Ta=ZiD1H==?MzjN^Jf41?r5@SlV* z&UE}M;RZ+!nOz;f8=InNzc*$m#3;cP7pp5BbaZE=?GlM|BH#OZc_04ka%I?#I|Xt4{_){zo?{m%bI{88hgMwEU5Ou%C-F#8H~ znJvtjh35s(arbf18h8`5aNEgomoXM%m!jycn!uiVk?_BW?>G#@q+t9{M_A^+3KIQX zsuOHgIS_4vDZ#GOV=S$K*EXnk@aTVCR&1~FpMfBO9WQ2)`z#E?F|b9SH79-@2MCgs z{u#uam*SaGbTMcoRqK{LJ3Ivop)G+u4s9PNKyuh8e1JmiBcKgb@^)r8jxv92I758A z78#!hlg*jQ6Gnm$x(V7KZ5<|}+$8~3(59(P?Jvj@-;kye@Ri_sfo@)OE7cp7TZ1@D1<8@29s7H*=MKnmznu^aw@Mlyu6 xyO|nI&7s&5(B1eEbVu|UuYvAhFFce?{4YAC#hQ4`2Z#Uw002ovPDHLkV1jJ{B&`4d literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg2_autodelete.png b/TMessagesProj/src/main/res/drawable-hdpi/msg2_autodelete.png new file mode 100644 index 0000000000000000000000000000000000000000..d2d25eed7a2faa2e151e94374cfbae101f678469 GIT binary patch literal 901 zcmV;01A6?4P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uy~?@2^KR9Fe^n9qw&Q5eVH*HDzQ z7{-iP3=6Wbz=DP}n52}D1!xM<2sG|*O+$l)D2U1lNm&xUbMY;>*Ep@B_FkS0#~acdvw+yr`3n?O%8 zA->1Jnr`B7l9T%yktN`fRizyT{h>l|_kj^0yBZqjhjlp5EcME8QIqQK+X=ayTLn&VA`!ab4tw83EU=W=; z@5n$*7kB`y{h{Ms6pZUFumPm=;XDFlPaOF&UGTLKPJl@ew@aBpW&rY_2{>fA^KFNA zh3SvSd?DQ-NXHUHP1f@XpX+j^arWB5dA37qf9r{u&)enh)VIz2;RpCbQJb?9Jua^g*(05r@ zGV*kSFFv#259z1UYelv_o;$M-vCI?Wu39O4 z*JT!v93Vi)hY=GvMqAjKTDj0$1#)dI3ew(E)K^D8TAPzMp8Fb+R=>;kpz$2YCUY0y z3P4C_mS(`L_FxRS2rX`RAKWm%^00000NkvXXu0mjf#}bZZ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg2_battery.png b/TMessagesProj/src/main/res/drawable-hdpi/msg2_battery.png new file mode 100644 index 0000000000000000000000000000000000000000..c7c8ce57bbd7052159d3b05ee5603d220ff9b567 GIT binary patch literal 689 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM31Cz9;i(^Ox z=iBLq-pq~yt;JajmjrCs+%a`Qlaf+L(=wsm0!fegFNAIA=15Xp@gRRfNLW{b=8cG@ z0;;X8N-KOF1XPw>P!igI@$O@rqGx536S|@+w(s6-oPY0Z>U*<|5my#*xrk=uvdY-k zZjF*XvW;cgfrk3Mjg=E`Xcs)PI9IG8cVtbIQAVopzpDz4d94MfI;x&lc-FH$SvTwI zl3SVv>p6@=UTsmcOnUTy)#En%x(l-yr@1{0{Zn%P=OfdV5k6h)Z#he@mSjx|{1Ga* zE9;W~?S(v(SDg<&)^&g7J()))FV;U-f8AxjzNR$JJcRpI=(I_@g^C&`WXAL#%s3%X zc)79!Bwoa;#(bpY@qFgF59CblNC~-olQrP+vgs0!HoX(U^~H0~Rt1i<&iHU8skP_C zY*;OX!>qdw$Z-@o+z(*AZBd-*y6WpMW0PHKAMRalahquIzDd#l0?*^7L)(t$S;ZKL zxu`zz-7PlZrPyz`15py2lXW<*xfZa?)kxl(vAi-Sb^hIyszjZRme~m{I-7Reg>3Wx zmHMV`VwPoy`u($OHY)IcWl65&_dKoi>`!_|>D2pABxL%-cKa-y6Z}`ug+0tDMBwAE zDG&3arR@Yuc*AmN&nhj?%DtM#wkyQxA*(y@1GL5 zWX5jtJ*8vCH_Jn>*g@2jYL~6&?Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0nMp)JR9Fe^m|ciXQ547THABOc z7c>e@N=Zs#LJ}sSe3hbT(o7lU>tW=LVicP4z)UDSU{aG8&&mUN@FFus9y}qlKsUHSis;Z zH*tZs9=^DK;M$}{ZzJ!`BOYtDYSjaq&7AOOJL_1w~VG@q+BMeq?q`3rcmf%uvGoP1uual2UBJ$%uQA$}RzI>TuHNg=3*B%Y zDs7 zT!6myU(v6Ho$wh}!5#?BcS5?WFc9Y*41zA2V`m*U0RJsW;oW9jwZ1a8jhtsP$H}av zIRwk#CKSw9P|^wQC*vf7va>{Eu8)OgGimSCT2O-)<}g2W{!(?&6!Ns_*T`dskLq@*IpPLo#+ z@|`)6NrT<21F@b=iJo9|R)GEl-s%bS50hL010c4^A36RE`J(k)gs|J=XLuq=zEO|} zf==3`8>J^RI!x|0ry~#5!s}8rB4v-{g&=PaVtZ4jMZ(ByC}jWqll`NLsL?^E*$EEP z?uyU*`ovCzCXhU_bH3P2;|P^OhbTI`L%SZPLmuRXu@dCBj{KC^4Q=oS)NbMUuI5bj z6oL_xqFO-SQnQ%+58y!d6;oy)z6dUZ>|WpNaYK_Y?L&|^*6mP{QaTb=)YZdc@=%@( p^3y^d0|VT7^=Ag%|Murj;0G1p1^)gwI}!i@002ovPDHLkV1gU_-TeRn literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg2_data.png b/TMessagesProj/src/main/res/drawable-hdpi/msg2_data.png new file mode 100644 index 0000000000000000000000000000000000000000..26006f4f40ee4c0d58670612de716c804d1523f5 GIT binary patch literal 867 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM31JhYg7srqY z&bKq{^MxG+j-KaG6c?0N(9~>xVYtY_X_3#wd4200rn0GYxhz`ZmAtE_kt5K>q_J(9 z(Uc1p6dg2JpM8H+``q^aue|FP%Ni!CZJuYJKkxeNy&G4*+F$bizyj+zeST__d6oDt z%zlv;;Pch;1^b)V2NOQ{p7R#&c(dU63;!+tQx@NuJ5`veq-EZsjdMOe5~vlk+&ayF zV?>B`6sKXsw+r!%f7#3A@0wY>?iHAP(Y;b}&Gx{jtK5`&Y>#*A9(Df0v9%}i#U2xu z_(>BccjPZzwUwjzMa8zICsNKu+DCSU()wrwHb zdtClYu4SI1rIs)0Gy1}Th+V;BOomSTzRY5U}lkr*YEX(7vI^IbA>k^N!)lkh}mZn>O z_w?S?GbZqVT)s76rdgr>_jT*s&c40E5vX+E^Iun-d;EsK@myW`tuf#81hfv!Tx#_B z1&__~&n&eT-8$R5%1>AaZ$8`FawXVfulj$zD&6gUdv3qrD1Cp7@8-@>hKS`(uSE5i z+&nbfLS?6;hTRn@Yt`>iOVfQ5cV9Vb;j9sTQNPmgnzabqr^yVzkGC5)&#Ru(a__BB zgt&doZH>Qjzn<8}u(}pq{BiOAzPXP5dp;@)Xh~hT^>&x-1WoA+Oe^0AZrfdJ%r*0q z;57k}bl#um-fvD!KeutxCdK#%BD|q1UMVE!eAHbh6|z+^=7t3B*>~8*n_sXYfN0Z;pE-zbi#OckY`kWKD q7XB<}HavTv{{QnCl}Z1PyuQEw$I^9AE9}mJ61b|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`S&65MV@L$& z+i4rUm>mV$@_VOt2yD3M#F8tLyM{UGadE`Ws2@yDQr?RG35mKZwzm2zm?df6=-^k_ z7I-fIoNdvYyrOm^i2}BNZ||) zePsQ^In`^{GS5^tV7XN$I;m5nsZrxIL(~H)8%EyjWdbdIdvye>dBYOV&b)B&>!k0Q znv*juij_mC z)l^P(lpb6#C zk=>dv`R#yl1+(Vu1DbowBg>c9?)a8*g|Vo@Zzopr03MmmM*si- literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg2_discussion.png b/TMessagesProj/src/main/res/drawable-hdpi/msg2_discussion.png new file mode 100644 index 0000000000000000000000000000000000000000..704c7bfe6cc7a6b17a927f9e9463abe00bb8c31b GIT binary patch literal 952 zcmV;p14sOcP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0B1uF+R9Fe^m`iL8VHC&jRiYIn z9!27@qq-8k8)6|ANEcR8wpdB38#GpINyO6DLM%0rwA5o|2y}4u6ll*#S=A83C-~GOMwoq8I@C+2g;q+(}MXQMJgRQUy*1{1+pigrKs9eZ#uYGw>7gE1tsvAxx@Cd%*BC3>45ZP(k}(lXF?>^K_AE- z!iq(UDoBu?>Ehx(b-{9yI+Tfhg$=>vDudEBeO%O$Dnn2w;E1xYv#E(S2uMHfGSjd8 zg+js+OB%(OPpZLSBq4oJAK77-O`fcNId*Xa`|U}2c+>AP?GxT3IiMB`^m;`CT{Ir%-NJLvk!0rgnmxF_W7Pn!ON zvVAzQcGyWajo(!^sYVCU-w8UIg)iMgb%Na>>s}bG-4XQf$6fG2Rg#+EmnHk1J6Ka` z5N*Bq$<#-$yI~{gnzFG8*dNZWEQ;O%)5S$sGgXtQcOqZ9FKpN3Mv2ZL7z0@kWPgB@ z+@dN>vs9nym!u?7uP6Hz(8VHq2AMyNVp$5#s}g&Z(r3}b)ar3`2Ht|(EjAj`ibGT8 zC-l4lA*RR5W!MPM;T4R+IL!SnJIcP^bM!?k)3;eCkBHmxUL}8My4QY=t^$1~>xHTw zPQwsXV#6d~giK46Hbdv^2lU~OA*L%$cki`!ydQrLO0XL=GkRL2cxjt3CLpdAZ;3Zg@R4;cdnN#&X;&(w;#31y-4LAsy{ufYn<4_^Z)0Q(-wiL^K a2L1v)&Kj8eM!duT0000|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM315>uAi(^Ox z=iBM$y+Z;;j>`(W7)_nvQ6Ro+g34Jj-L9~_E&CU^b}w+9k)Wu%Xl=G*?3Rr1ZZTHf zs4W^%9s&zDcPMJzQkkSX>wx1*liJ#SRp%>?e}8rMOmWV`--puA)qcNI{BEZ4`|DS( zF7>jWP_|&3?1?vi@+^+*#pVxqw!HcF{$gRHO|ikulPS~w&6=FV_Q3kh^iMe^55z;> z2=Mh5UtnIJ$Tn@ESeEL`QVZ_)4^-xIZLnUnAaA{{zNGx^kMG`g-03Y44|90M_x8Y( z3)8eY%;x-U+A9z>qo8R{?1a+lKSgCXE?v9LkZpgz`k0gYcW$P<=AScG#XZ^S^2O$h zvz(X%*Yos`1|FXaB;LI~@KSPHt@XA~{zNz{h$A2&g0@(NM8#+RJU$IBY7`b$-Z zZhAJK^=9wJim9%(+Vy=cixbSv+oENqk58+<)XtUl!F)x@na}C7&c+LxKTBFZ<8ttx zELYKxYuh)=YC6d7%{lIw`{d?)lgvp!wk+83?x*anlJ37dcl=mVcYF1hr#_K8qx>4S zFy(rdcXg-p-#yKxP9J8r#Ud3I*mg9GIc_|MrDiO$%vG6j_UJYD@<);T3K0RZhvP&ohq literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg2_folder.png b/TMessagesProj/src/main/res/drawable-hdpi/msg2_folder.png new file mode 100644 index 0000000000000000000000000000000000000000..207b9819aeb44a3e6e69b75098b00109367753c0 GIT binary patch literal 584 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`*(OgH$B+ol zx6}7}F*}O1Zr*r7sda+diqbd-Zqb85^2eN9tl#SB){4K?tzih(*cP~E%Z7la9d+tw zQZ^Ns&pf-xaR#@#@y_CR{^#E1q)GRtcs5pXrG!rU4wjdPoG(%*Ty-!!>o zbv4dC!QzV@KVK8kIrc=h$m0t`O7%rYfrtI(ralG_AI~5sW;9Z$;Y{tHQe-uv~J6|=lSR!9AP|2h46iHC*jD!-JzJ7YD+ zTWkKxvo3;uS+Xw_T520i<%7PjJ^Xy7(JLd*nZDvBhpz6_@O9W8djIqn?Q}!UVjj2c zy|c75p6qTB`Tgvb^QxX*jiu-BEb!UymGDT7_1{t^`^jNkk)8i@R6()m>FVdQ&MBb@ E05dt{Bme*a literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg2_help.png b/TMessagesProj/src/main/res/drawable-hdpi/msg2_help.png new file mode 100644 index 0000000000000000000000000000000000000000..ab942869b500df7eb12948a158e11e50d02ee79c GIT binary patch literal 1017 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0V@X6oR9Fekn7?ZjK@`XDGz!9L zqbQ14C|s2)X+&$S5(~u$0l~t`LcvC`jF2LwpmjP4o*GCj{3BHSQKi?Af57MkbAG;i z^Ytd1z1`VJVjg^NX6Jq1_r06lote8vW1m@br}gxDy*9DJ8E`u2tkQl5E6rweC5-J} zLlI+O4y=GG6Gz;!Iu#|&5TcriS#To~@6!JYG$Vpcvn7mz!@%~6&f|ZcH415h8L$Cl zzrg~S0!N)K-^v#_;wnZa4QVA!LSC~$U<)h)+cF(}^IE1DpjewUTXjWL%=@75llFEk zfdaBLfV5=NPAdwcZj)zbjsC>~{T&TS3rJI@9M!iElJ2ui-zKRTcn5@(Dy0cLQ!}M8 z5Zk~HaOrJ=ry}kGP5%$D4nBj2;7C~_{JMQI&~dcoV+PxA;B)+4a0HzQ(T=T{&fghntIuY=}1|4%kT_ohw00 z&&R1M4LDwavoGkiLmQ&Zn`Hm0<|pD;33(mDp0Sy(B}h1DR)Y)jdB)BJovjp#nP%iI zXn}X&5lAuT%xZ8!DS<;d6mtpZJQx9Qz%^!Powl|~K&F$P%(t$8mHzn@>LIWMZc)re zdg$MrSq+{cPh0JRn4JqG9|xP@LCs=Rw{yCNY@w_5+DpYoK_|dB@Z4jmEiuKfy##P3 zFO2zw#8w|8@Lo5XH{ zFY$O)AAb4fDgj8z#}6kY=01?=BzVx{RV`fahn=BZNXZ8@ix4vcCc$}+Rkd)_4rmgB zT>A)HRY2@VKm7>(UY zSLic|)7#_+SUUB8C^{*@d;U{8X@#Y*Hbu??FJ!8@3-Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0p-DtRR9Fe^SUpb^Q54-V8aIkT z6KtRaD=A$Pw8`3AKM<{Q(y81B@hVVM1d;L5u~#g2KWC3KJV8Hrl9#ih=|g z&zZevygR&^SvI@GL~nBT-FNS~AM^F*%~mS^rT7d)#qO{-j^iPCZUd9RC@=v~-T)tf zSHQCwoO&U?ZD^%%KX|0gh_*UTALknbio z^A_OK6T*GiDGz~=-`mKcFvi=Z^8~OKYqEACXQg1|i;}XTZrjs8zc`CmZMKug5gXhc z)6=7uPa`-R(8mGRenPuHL&+)(+j}~49G;0hQ7zRDHpJ~io~WVkc?4${ zM={Qos;U)iC}kBW=gfClz>!NF#mHVb`b&1K+d!m_`a-~$HHo8`tejF}4zR`-eGC{u$(sEcBsx3rY1kJ?FS{R+v6= z`uCxzB6gI#(e?CM&Gdut5Qe7)?YH%@C@y2`K4)KaB;`i{_uV=>P;;fHKO2s%5#4l- x7Wf|Hwv#)(o4|E|!gtaO8wdY)3@iR~@*8A0=8gFY7jpmr002ovPDHLkV1h5V(xCtV literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg2_notifications.png b/TMessagesProj/src/main/res/drawable-hdpi/msg2_notifications.png new file mode 100644 index 0000000000000000000000000000000000000000..e32e2f83f5ed490d71a1098aee7236605e1ba313 GIT binary patch literal 684 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 JPDHLkV1hI#pj!X{ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg2_secret.png b/TMessagesProj/src/main/res/drawable-hdpi/msg2_secret.png new file mode 100644 index 0000000000000000000000000000000000000000..dd741c7705c4915040c2020d0e3e591e4b8ac214 GIT binary patch literal 770 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM315=Kti(^Ox z=iTWW{iGcQ+G+(^y%uZ^;F=<`#YA((f@bywUXEOUq%v1b$f)25dSa*)=-|u9%eu)S zq=SjG>4n~X`SWvl*1W&AJ$q)#l8@`k|NVUa{oRi}dRCob)1C^6bh{PDiX3%SdivvK z$Be_}AME~J`lX{`W^Py9&BL|!!Sx-tg(nvmpS{}>nHi{L=gRuQeRaj@8;9>(H$U69 zY=+N`lO0VF$DddipZK$wyV6ptjaxa`@89F*kXpsd%jGqX9py}pXe&B?eRJ=GZ%2E+ zCV960o$Z*H<0ry*NmV)Qa+vMqDLOjude*?8yrrqtA&D?3@P_z`W&bXA) zf}ugDXA{%yr8SB(Ttb}{Q@n`82CYHvIGzYeXr$x-#@O23=Yk&?pu zGh?4QUhH*YY}ipycq+tMH!#1!to4}R$DE`+t1NnFFTC@mRNndiCVerRG;eSAXHvbv zx(c78n#=dJvD9wJ$T}b5$^^6~N>oK<1(#p)r~jOb45xpb|Lot?yuCZO`oB^Ob2-!W zvsGWBtanf{-vQ`^kXz^N4jIaJt zsz0f6?ZMp_w3U`s$#cD9SX6S<#^B&DG2i#cGL)=@T7RFNm}w^byrTS-VqomEU)L9Q tUs=7o`>~R{>4vIhclY<5P`a5|&+ztl-lD3mi4Q>O&(qbE|HP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz1jY&j7R9FeMm|tjCWgN$Qr{$kz zqT2#T%&g2mH8u;ONKjDm#td15*^MYD=x(x-c_%6&-RMn73?#Zp3zD355mLbr*^PhE zNM*Uv#jN=cshMrI+CRwl9&{^MP*k?nh0?^;E$QS3cRrrh@fXd5&5-zFVzVde{n2J1b{PzTv}Lq-ub;#v@IV#N zAgr}O`m^AFkX|r*T1#A87##%tv@_CTy*`qDj1*8;g{l-x+av=jdAs68iJbyBm4tT3 z{i$OTbaf=X4i>|&8lbO~NZTHcg5a~%LNO;fc9s63|8&e1yEz-t! z-}&_vWfnQlMRJ=nC6X{7G`ZeW^_E2cAV~J*?53YHf7X_qy()q}$&^Fjp)foMzKYsAgju z81E$1oJo!4PzTzn|Ab4_zDS!cl6QghLwe-sUTQ3Ys z5!BcL+A>U6>1c6Z!cQ;&rVDg*^^(GI*+s2Mdb3%`-|uRu>43tMY89|egY9q&ByE_< zMPby2B_)bjv9y-F<}f?|@ljf=e1z%LdBx@EN{!q;1{GkJx$L7Sxl`c}kUots2HOhR zq3G#ktVP+CYAwpcaTlaFiX0gRW@ zf-|=NxHz4kO-JaQbJ(um?Z%o*m@LoY@^)7EZn)0;+dlJ`n;bjRw%82O7XMjSw{Y@| z`L%gU>!S9skMTt4%3tzV5&<3q@p`1C;~uy6oRSN|SFc2**NlDFM#^BUfgX^wx4byw z_4kNrfMLg*@hI%aK<6y`wNePdX8*MC{xM-7LHeoO50bu|TOsufga0TSOyDByGxx#TLaA@G@Kj({(xc^`BGZ~ zr@2Jk->7agI0fyn6TAzo((TiN(xgQ-Tb{K!>tt;yq92Dk5xfM|a1Rc%k3FI-h&b)KAHZrTIx#ZtfMdSb Z%wyIGkj3aZOsW6?002ovPDHLkV1f~~fb9SP literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_addaccount_all.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_addaccount_all.png deleted file mode 100644 index 141d5b074c02a613fb5c4b863357c95fa0fc058f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 651 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`*;h{&$B+ol zx6^lfF*}O1mG4#H(hSKt;-<~rtf3Uu(K^AYhEaQU!U3b!R{sS_>5Jzo-FU*wqV1TI zvt{E&Cr9q)1qy8%AFWUK`5fA1yn43xM)taAcZ$yKPfyb?oZ~WyQ$={idzL%5K27yn zDt}+cqj}w}3ZJr0tMCVRO7A{eZ>l(%b^U@srM;UPTU0J+h%wgIc~nNbHRW8E^T}YVqL}^W|K&<7|tW<|X!B z2WN#99R1F_;a%3h`juuaeHPsM514CK<-JI~|Gmfm-I|CaX{XC9#DAAmvwxqkW7@eN z$0FGpZLWMdnfNa@ha*)(UqCQv^}J^muh*R3CwDt(bLvLZ&6*-pFDwZwak|_bQv2(Z z$A(EOT9#Q@i$9q3>eD=~$vl;s3hP^zZg8<(wr@~ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_addaccount_base.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_addaccount_base.png deleted file mode 100644 index acde0918dad2d2163f79960c5e85a1dde0a9d0ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 376 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKNxdgSTi7!tvm zoFKuvSkXX=X$vo-Tgl`9|Nrarh-_v_id9H+pT1n_zvP8A#yvef&kJU8miTB1)H5Yj zHN`rdPBD~W6=AVVTW}zE!O@rkcSg%Y4nFTEIDW5@KH=yS5Z-u+M}LZKz!d2dNi&)q zI4c$~-rzN0zi4DG_&U&Rg42xVj;k)krHlELM2;+0G?8*@acY?GCqqh#SJ6q)!9#9Z zTb)pl2m8->1?vR9T|VsGoRN%W%x4^rH?Fc5zT}wvGgjjn^X&ZQ<(%Bbl2-!1|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`S+J*zV@L$& z+bR3Km>mV$-yacCWI1S7=BUb5#PyL^=QE4uCjm3FO0IZC{RwKmS{pY6ax}Hp2C=MR z;ckBTiMPezrcR_@%%nq-KW@ytX}^E3{At&Tt(FOVGnk(>SZ=6izht6&fSKnZ_pR#P zqK`Ov9FDg$@HTUQ)o+l3Ej z*rVGIik{}q3yoBlUlDc5y`o**L$Nqz?*y@qQpHM{)XoGR$VtKXP!o%&jJ) zIa-Zs#n-RcUwCM=E;=i-PjivKK$m&=Bwp3@;Jp4S*E6Ea>%M;3cKwmJb^+h_SF3M- zzSrqLb7!v%*FHtT$F)5vE>GN!Rrb6*t*>zX#20y|pV2E{$7~gUDSxvh(DmZ_Q=dHx zS8&9>I2iaM7QekZ8A0#Hex@+SbRX{M?c>ghHI~XpEP(jvm6x6p00i_ I>zopr0I?&szyJUM diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_ask_question.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_ask_question.png deleted file mode 100644 index b3480e3794492a63228d678ee6b2a63982b79877..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1082 zcmV-A1jYM_P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0q)9|UR9Fe+m`O-hQ54732Fry_ z6qZ5+WdqV8j9e7736drvTC{1v0ttek7R{R$l@vq~LMlo&yOoJjv z0r~^Hhj(xn>T`2*W9ZBalPG}Aa38v$FVaHLDJaj_j7X-5Y=u@xmR}fTZ-828f-evz z*D$6xF%pzPV^VhY_rrV`5_aX-OJF@*gbpzIO=B+%3LDp>jX|s7E0{c^u>$(_+!0?4 zN8me{+@>+E#|ikI1h27?Xgx36pUrJ$uX(FGPJ#|8QXRYIp5)rOuI2ujgF zu3>Q6<(AT&8XB1n=LGl+5-nFnWN?ZOa^}GWFgX;Niiooogf$; zO-5>$SB}ndpJTD-7=Q+KpSs!&DwpSKmN~7BFu0!1nI(0@<(rOzHY#$ud)VOpxe37>wUs_AX_)V_1 z)aZC|8atd(#{-=P2TZ7E@1k!iYD;#{%|JVP*0u~+BUvqThR2?RS!%;;1<4i9k>v)p z=EN&@|Jj&O4%>0()Uu^_)J(`6-J#AUS5s%M!~+|KiD1XgJJD$}{TupRj-#p~fUiAn} z^eEK8;IIr~#-#+B{g!_aN%Z1e3pz7Bgj#5VcIbjJpl|)Du+UM0Hff`=juXXIGxVw{ zS__gE@HSi872v;8x(T9pNtCqX*bTjZhxup7fLXqbx~(%|3)K7UYWlxIlU!a`-}slI z8u~mDErBNtJV9rJX9zYrFdc+_FcN0Nc+f7bLz_+u`ghD*sAFlmj}vrK5+-yV!sG?U zZD1$Ml=AmwkUhK>yOV|<&QH+jc+Qo+r2T)&A3d@6TcW*)iU0rr07*qoM6N<$g82~F Ag#Z8m diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_autodelete_1h.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_autodelete_1h.png deleted file mode 100644 index 1ed05a6da92b694d35e57060d0e2ad2fe8706cb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1002 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0R7pfZR9Fe^m|tklQ5eVHcQjLL zO%zdF3|B-VSrRuxl0PfuZb_6&<${!yA(t+eqTIMxikcEDf7U1^T&<7`+^iIK!LY^V z^Zo5SZ_nPH-|M%%@4FOFec$If&%g8h&N;tx&hO3T{!{4@$d@+9t)ru(^;ouo6<}dN zUp}8djy!!tA-lkB@B_qXnX17sAG`*4z?OC!HCQL5xE1jfZAAc^fllD_yUYB#(XpD$WjM7EgO6gw1bAMN${NmPJk}3I%{0i zj|9FLt%v1N$4M&5vjl7d*(u}B{=H! znPh@mfl-SOLfHUrnKAII@ky?R@{#4MGFYFsNd-lkpjOW+*E_7NpvYcZP+(BTVb6!ofkD5qS`T*%lU##R}NoKu#lB(CZYw| z$k<3_P3rxw(|F_*2a!wd#;>ri0q-rwkB}9l%T;Y;9a&5%{*bs!=0F}@&Po+@7`q=)MPDNJiVsGF#ht2uWTJ?QM$- zikN`IACC@v4uBV+#d08D0o`Dp>BMPo0#Cr9BE3!p?cllsZ}hftGREmTT+h>&QQ^VH z6=My&s(t;?Q8N^(>9u}SIgZu7pdAavXu7i9vvI8E6}E}|cfq)Il{!LZAfRHGd~(eK zG-3bs!%7lnw9c=5x@bE2JN}MwHT^r{ YZ}M5c+EvSTng9R*07*qoM6N<$g4D~p8~^|S diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_bell_mute.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_bell_mute.png deleted file mode 100644 index 78c122d64e459af418f10ca6153405273e3f8c16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1045 zcmV+w1nT>VP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0e@R3^R9Fe^mq}<8K@^5FSzIHA zBr1xD3ThC85HC512pZHF5h3Q1LlA-nTtGqbCWszHP;tkg7YQCTASi<5;EE7MFJ43u zTn4u@&SG=m}VCuE(U7)8n8A(&|zyLdqn1dSHRi@fZ2;Fb#_GXsR;x^oGXEL$Oc#6Nv@oopG=e5*Y5>;^u4s(afx9#{BRR_B zPo##l9!(A5TEQiaG3|}}G&MUpiufmTLt2lfhH;xgCy*@!YHF?qQ7o^9v>;6-fWB2H zOat@q`pzvdvO-2{5ubYSje{tW)_8BNs#oln+UY&Ti&CblTZqjr{Dl`kLX7jN^;jT(}F1a~Eq zJwW%UW#B5v&k)sri~QE*stU0hbO3FW{0*T>a2n_r3yQPd9P?lFpI7(=J2f!3lE3CL P00000NkvXXu0mjff!xEP diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_bell_unmute.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_bell_unmute.png deleted file mode 100644 index 4142a6961901511678f8e7402c76d84d22a9c70c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 901 zcmV;01A6?4P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uy~?@2^KR9Fe^m%VFLQ4qzmCdL>s zAtIPY!9pw~C;>sRv9L(cGKC5$(+G;-KVYK>Y7@{-Op%C%AP51$KR}F#jYL6==weVo zqoSy2Sbyj3jCpxqcRvdu182{@GiT1dd*9pLw;dg8(dHAVR4SvOY#43xa$$Sh2oyy* z+|i%{`vc$wn98ysKLpN#W#I9L!BCc7IcnFzOK>nxlbM$(_yiQM<09r`U|xlSP<<@k zr!lz&>sf;LChM7VggxMyHU5MTn^_;@SHB;k#)rTUt38K%yq3#| z&Rc_M+%_}7_-QQvp0O_1j<}KLmRH?FeFLsze8LOx1# zoM~W5)lCOQq5e+qVSJ~Wj@Ih;e2NjBGNEW#0(c^pyUDneYRpJT2c-9ya2bhxo`g?( zKE)LM9(k-H^KP&R6#8_8uX)TB{YLA9BA;$AGoMqEnDtzWDeCT5Tv8DpiDuQ8=zdBy z1roH5$2>+{PVS=RmpqqZ1h>E&uvW1!g=KWW;_6 z=Yrw_0Y2f&WBuz2d{i2=`n!NGRQ7)N%hiWAwB9;@=Q`9@@P7Bp?Fwxux3OJ?wGD+% z_P;x!ntmoi@4B9P?g{bTu?3@TX7;Tf(+sWm51Ma=q##98FL(evjups*B}|UH5iH-{ zV3P|FcLD!~W>}f_S~DyknOVrct0q5$Q{DyN1Hmt|T8!mmeoz!Qf_=!2m{{}>H1va- zw~+kI7mA|zZxfO$Ce*X^);!~8^6~}pS6ohdC9mUK6KsHWLcfv?Etu;eP5z3-Dy_V( z`kr9}dcJ)EcCJX;Hd?@WxKt{AiLbC~Ln^Q-{X;kj_JDs6=8Rhv%NWgrt86C!X|YwS zHS3c)p?VBC&1>klCwj`fbDeNQk-VwvHPOG)qlu=O#JsL)vl}|YYM;S=TlEoq&c|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM31JhPd7srqY z&bQNTGejIkj&J_R%<9O~0kc*)&HDgw7q)v>9ifszphnvXPqrpc#)Q| z+VFgQ=if84ONxJI#6PeOIJ|wIqA1g^tM?ze%rgI`9U$1dcun(0R_~|luH}S3jhho0a=N)T6~1ZyAnG%3QO<^ssoPmBS*n_S-2Nm;1an`KIkxSvcJUI~ zPqml7+_9aaa#C65cj7VD9bONjC%iuW$M1vrw<+C$dloj#HQ-g-9(c{^6<4A?*L{aY zwIvHHL>*b0%9{Rj$X&YLwzk7}c`;jEcn|m6OzG&4(^O_Z==5HecCSR$c|S*#U}s#1 zvUZ${!~~Vs5A9lt&KlRa*$ez~dp$YF)Te^=$E#|q>cy((xqL3My!$bA!T#3VNW02! zOZV*Bnv|2WL3_ppzxwio?)#~tRtZ8i8+re6KVJDGbO(>hZN~QsQ<5c0-g$mmHn%@c z#Pi!hb%UQ7U6U5ex9F!WmhBA_Ian(B`MhcE($)K}+}QPyc}CCTAJ?ZmG8Ot@@uxtt zq{g-&N z$TOeSJ;-3*uzQR5#5}c^N6crMr$*`?Eoq$VZT!MEQ6VQ(yTw=jjNpb)SKa$9Dqq&G z_GgIIpLekM#?)s$wSkUbZa-k0F(trn*-y8P6W`Q3zOV%bY<|Eu7tcAOQ(CG_)V_(W zT5r7Whpd%$;k3C+c1iwPl&t(u+-kMLO-+aYD_=RU*n2HHJFj@nPNt3F59AA9oR8b? Sxj7D$kUd@fT-G@yGywp!!ed?l diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_calls_pin.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_calls_pin.png deleted file mode 100644 index d00d0687a242885ebc7e47dfee0e7aa8a610df46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 637 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 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_channel_ny.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_channel_ny.png deleted file mode 100644 index 0cdc7b7686da0892d6b1f222631940e48a4645de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1045 zcmV+w1nT>VP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0e@R3^R9Fesm`g}iK^Vuq7EzcL zX=M+gTG&boBci8b1TKmo2#O+Hl&x$L6oiyg(WXrVt!ooS<)R0)Nug3AsGt`G6&Yy{ zGfN`GN^ifvoRRU|bMBqdE7b=-zB%Xn&o|$hIghzFC+B~*WHMO}2Vr`q>p+ta2cRmG zcEoX#cYy3Al*A<>HXojV>^tPfX-9RQ#3waEVBPr2a6-M;Y3HuPOj)TXqLlDSOqI!3b@*Pgtr6k;GZQDiKJ`iK^;X*gj#q2zag8}MKV1ck+YXF zLkJ70>Lx4>U4^dd1+>CL=!DM}J+!C7i~!{+2F>bP2p7=Kxe8|MH9p=b=mr>jO5-?e zfQ&E0_^g8uLJ2u`!7VU$FI^u!J!M9TKMN@{m^Oh!keqrb?DyH4*lq~-fU$Y8!chho zpwJA0ueH;KUs^>b$l7X+$Hd6pWhE}K+BxBZ(k>BKlLt+p_s>>4k=<4-&`6tS$GqBf zZh%3H>PVm_2+QgH5^0KAx|%4F6>qTP;Tf`Hf2HkP&^fAXhHluGreejUkyd@2ZM?G* zAvfa>+`3GC&|N?yyv=upya({@;9U?m<4iaT`rt+yu>v>@<&gr{lO#y{lqnCI{UGay zV=!#lIj#h=)qNB!*7N~FbUd0TbHY7 zdhu~)|6*y26Y2ga2D3@mHbH}A)yS#YxdgHSu!~C_3&ANV18c({fhw4ms&+p^|Anv< zTEN)(aE6qRDar|mF2bgeSUbk&a2K?cA30r1SU_7lMll;~Q;zj4t@@=m ziW&zyKznLE-q|!gmGzJxRYl4Sg++AKRqG|FUmHSgpXJky-U=;&f6T1((~h)^1%-Q2 zp!(=Nqs_co8hI72jlNkz`A-b~0q<;H1yPJ%6S~J-tuNhdxF(6zQA`DV1s~I&4of2w z#+>x|bd-_9=ibqfTGmoET+MmOxYCIv-2y{D1RMr=ho+Hb`{khhHzj`nY4YMPw6|>* P00000NkvXXu0mjfLJqlT diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_check.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_check.png deleted file mode 100644 index 64b204e2624deacdda6acb248f201fa337e74260..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 440 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`nUbfAV@L$& z+o`@;hXO=en}y9Eu)R6c$Q`gGAaFHHtCuzhAItPdT6el{7v}x_zxri)ms87x#xFl* z?r_T+zPEjEIpKtv?dv)151#R(L3u^mgpX-lANgb) zwl=QvH&$f(R^*hs@ZIGz)@)@(PA_kL$z0aPsJbY~X`!&ONnK-1RPnd_4x1NUdQ)=g z-2J`okD2})kdpH3ji}%Irub*|>Rq1C|E2Oa{&96ln$=mh$MCyoMAIvl_>Z;f^93)y zKlyd-#m6r^JF+>&7EGGCPng-$S1|ivX@aU%}Z0ePi7C8&3%9mr+cZ++ACyU6Ql+d-k`>FVdQ&MBb@ E0Dz~VXaE2J diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_check_thick.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_check_thick.png deleted file mode 100644 index 5698712e86b00690bf4a2e9d9b88ba71513386b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 529 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`S+%E&V@L$& z+bO%fm;(jcl37e2@U9VQ*%HViD!OJ%fWVrdr5iS#U|zEEli-@18Ww5pjavi+w`|-b zu!hC4#X(8PS%CHW`y<5(9Ma~m^8AdM@1L7<`rLnGo!MTQFIY;LtQhAu?B`^0G++<@ zC&Q82^QNKGe}9@qWyLhYTSHj%vE9tzrLt``x6oOE*;i zzqhzj?uq}~IbRp#oT*~AJ8*QKP5)lERN*tk?*X^nt%sHAjk@)q=O~k00+=tbcsW-&@`Ez!OC(D(~UTck6m4Z12~16ID<-GGa-K>yq6obxxLojT%AWM z8;>@s+!#BdF;gXp%1nckaV`v;vCz*QeG8lo(z3%USCA_!?2?$^=q*=}D{qdN#2V8S zkirz}Xz-rGA1RD*h*md+B1v>1THO?iB+-RvFv<%?Xkv|NUNFUXOmNi66FQEVB(cLX zPgr7?mZ3A|dby)#jtLx)@eeNM9enjc R`G^1j002ovPDHLkV1nMUaA^Pl diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_data.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_data.png deleted file mode 100644 index b6339736ae9e2fa2f4673b87a114944e65535043..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 843 zcmV-R1GM~!P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uy~wMj%lR9Fe^m_2S3K@@~{5i%QC z78w!;zzGLHj#jb+p>IQEiO5&5ID+MfWCI6C8#p9%0tc|LM1-(FNO<{b-8Iua%ul!3 z36Ocx+y1Nfs%EBpx@RYo|JHv8rv1b1qpQ_wn~_)ebNp#=ipgd03(B+Ubox!5qZvXD z@CE(@A2MNtJ=nM)lJ4Q>c+-B-@g?e1U42bc?A}I%k?0V=i5NtBjK9RU@HuW%U40r8 zCKjt4hj$i5@C-k}ZP!$e@SQj*?L<&xY$wDh)~1}Z7?)KiC>HaP_OrG?`a1;~4`vrv z4%>;xvPz=#m~2ZbkGldH8x*8i<-nE8miPETYXW=D=&Cx!1fncKktp9OaSTs%KweFH z?yZkW$!%b=1t|u+9-rsbx%0G^0QH`+9kqfQoq&r3DV!KB4qNwo3dACyv|N+b)X-5i z!QDlWR-a!9iz*qF2W|k+cCa7Xr@Z#RdTi5W$bA~}?g#F5vl2v0d()!;dKbzu3v-B5 z+-r*kX`__g;7e6Twk7$+B{O&Z$mrCrExY2D{=BV@_Zv8_0)x3H4IhL{G5#&{ z;d4Q-=B>=!iJ;q|!e6fR6C&OdrUkJZyf8}*kMEGLv{GBc25WkkyvASPUKoQx5#HR% z9dhRru6V0t9)Z0k`I{UC#)yOZ_s}+XGO2a!lxgM7RT=k8ZXHPmfW@0@k|47IPu}LLe1MCNADJ2|82R&$A3;#j z0j*-ns31nC#1SM&L#M9J`_!$5|X}8=}X2x1Xq3BPw9rR(f@4txBrfb@7BGk{|5fT VEa~rW$j$%&002ovPDHLkV1h|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM30~4pGi(^Ox z=iBL?euo_dTxC@zNQ8IH-jE!1m`n4K(Hy1r1jbWs2C2?$iY)1jVH{#7)%Ls(aeu40 zQFbN==kzbJv7!6x!lfP`aSVtoWxC4wXQHq~uiIAFo=sD>ayGAN(ym~xJQ`_RC;Lxt z$As^ni`NQ9GRr==t$Z*l&T)rscHYyso=+7w@l~mbmB$LbUfH`*#b)`%?x{hCuh>f} zNpFxpkeC%NATx2l`8|fgh=N>Emd4h9d z&E}?mXJ2oP%6-wXZ+p$$ITc3N&HGO6`P8}Xan)wKRH^&#=U;vO`Hoec6XX1UhebdC zSoBBd>=B1Z-uYaeTz7oB)!x$Yd@4?J`3Znz*^dntS4r*lWHUk^20 zoT+5BTKJw?1=G2A5qlyO*58;}@k>cR&*Yhu$EgBy2l+EbSHB9YC#K$WUTER}PG9W! zg84Uc=e&5>*E@Z|6WJG+t>*f3{NyzIt#&OS*8co1X1_IZ+M*nm_jcB;xGcU;;X(U? v58O_Tg580VX^QIujxJku0~l-9g?}(!KKy!8#g6D+P~z}(^>bP0l+XkKjc*m~ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_delete_old.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_delete_old.png deleted file mode 100644 index 70dea031b006157fdfca4a162121c8fdf65d2293..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 635 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`*;7v!$B+ol zx6^lfF$W5?ZT@)asM91Pr4F;My}b&v+65dBdP#TNG_ch$&OdPM&>?n#77n14uff!{ zp-MMYUzeYelrTR%?@3Nr(3=DEXBtoc|A%LG^g@GFu^+EE4{tb=!@H(w(W93F``H{n ztSP$L*0HkDe?m&R$n#C1OxDw}XZe3` z)`w5-Jux0HFMa!>`uwe;R?{-oGnck1#`keueb2X2S19MSqVs;H?`c!)zvcFSl9lRR zaieO=k*;My_w3 z6mv@Lnw=YZz|>;GqR!lPNkvDTZ7v`JP6}Upa$*01lw(t_#!Sd={Mq)2ccXXO6z;*uVLiz&%B&>&7MLk4PE(e=7e$-(j1Z#ip6_mEE`fmi}+@X-S@o z3+I*tOV;pT?A(|9MuJKC6_-R}+lAv+Jhn}HH?lrqzPztdp2;Nf?YsA({h)~VboFyt I=akR{0Ha6>z5oCK diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_devices.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_devices.png deleted file mode 100644 index f814a29fdd1de7aed3eb8639ae1ac4e562d8f847..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 493 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`S-7W*V@L#N za)JcwVnqWfCS@HKiH$$M|NsAA;bVnD8FP|mPSy&AZ|oVzYTVq8Ev-1qWXaZH&S+?R zAh_iCh6UUVKNn2+*xI$9^-}nPoUGsn0!kSg1`*R7o1gJcc&4_Z@f6pL4Kvuijl&y0 z{ub@F@on8;*|AJa$Y{8Sh@|UryP){YcNY*F#YI?RTl*$co|PQF)-X|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM315=5oi(^Ox z=iBM$y+slwj>~?Yv@|HmLssR8bBPC6ONYW1t5$LS%0PWj*X?|cE;>K_uUu3(#OK(; za*^Mv6VOUAFn~u=3vX+I!C{pWU2!^X{%) zF`qb}2;X?hIpy?I?hkBT6Q=ICv;N_qY17>gTwP<;aWcBdbnD6kVmUI$=C!;1;CcLk zchdy1Nqh$#e=x>63anY6?d05CB$|EWxz_HNQBU5rM6NW?5Pfylp}g~M*WXFZhC{LdV@Ln!yJ{|7qePqsvp{U$~g*8QBAzzp7BTc!r`iO z@;f@_Dc+3Se{bWXH->z^2UpndY1{YY?W->5@`EY|Zt(M;ZT!c&-9bIlc4kGVeB=9s zPhyWdxDDBNDY%>Y&Y9Sz!|-2YP4h{Ww%y0Ki6q@&wcX(S!rp-GUDyqQo7xrOt{Wq_ zDvBSx$N58pbJ|A#a6flld3*Jbt8dg^T+t%DNkt{6iBt2D-J#jr@}=fi?|kJFzril$ z_o|PxMXu~m+$?OZ$gB3w>dzLR7t0G6q8=E|_;YLr@5b+QSQkw;e=9r7>@=Hyyc>mDRhU?1rlB_TY!YZ<_TD_*_po&GNM3`DmXQ8#-$jlj;rK z!mUd7pJL?&6&Hxd9SlF=_3wRtz>>{16a5wDJ6H+-;C{w)mszu;sSK13Jzf1=);T3K F0RaCJOl<%F diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_angry.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_angry.png deleted file mode 100644 index 2f2f9ccad7a9ca8ae375d95eda5e04a0c8e76cc4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 870 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 KMNUMnLSTZIXoVU8 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_hi.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_hi.png deleted file mode 100644 index 61a5e910c24a02da9a3f999d9c4d864a1ecdb74d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1097 zcmV-P1h)H$P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0vq?ljR9Fe^mRpF8Q547L3?sLY zOYR{xNN%Nx@}QJRDdiF=BDX}IH042gkxL%rL6a%MOpPdcqTFVLk_RNj!?@pxTqhjA z|994!_8I4V=Nr>eYF7Pb?fu_tt-a5l@7wz;DQUO=YzIo<#n1cn8N*snjR@ zzcD874ugF*+S?(tmvqMXc+otQq+kzx1K9)E9JSKvANWIX-TJrj9g4OX6=s4;n@sL~ z&{lJo#dM~9-^NxHdqMYXqIvjEP-A_$XhF89C8jsxI~8qF6n|n9jkk%r(!XWeS9~-% zz7%enzM&`!qIiF}WRslmN$8IPEk?F4(C22P^mBaIKp#&32t0y^Pz}R;Jdr11K754G zmU=ScA{+RQ?-J-&O|O(jyB}zQE$szDZ_kVM1ggjft8fvow@20lBR!e+F^O1Bpv}lg z>38^^P-p!H{5a!^X=^<%))TzY5*idpy91mzO}{oeQ1NB(8h*kEFG~9y$m%mL+UcRe zc$MkvT#NMt`x|q?1JSgoYgXuVpif5o1!3$|i*vWpMh7TH!;KpkCm`l&fFAIw+`}(%T|^wsgGyb-ST^ z5O7Mnbnw(hkzpjUsi>+aDiK&D+D?z%kv zqZ+{0hkD*NftpA*(F!c1-2__HPEVvg2=2m6*W9BW2ibPl+@n2>MsoZRkIC``>#dPB zKX9~%fDSa7CW}tzti+(h_+!xS3aj zl4z3F1~ExFoP#*4XRu#uYqu$$38z36XeadP@)}OTqBa$7Pj26VR_?%W*nug}6A6Ex P00000NkvXXu0mjfN+R*` diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_home.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_home.png deleted file mode 100644 index 36b9d3080d29d83886bebf2ee14b2d24181f7659..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 915 zcmV;E18n?>P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uy~{YgYYR9Fe^mrsaIaTLej8>7b1 zlxdV{l#*E}qbx)glVrj|k(9DfnvI&2jk2+sjTMO$#lnJ(&_od%8&V{bSWuHv@@J;R zU@-6cd}n^=_3nMYd!PHelgOOIfG@vf<+2hcn?gtPVV5Jy7625nj+e{YgzCxR9pkc@J+A)Zo1ew zep^zQ*qmgn(6I#J49F(oK&>Fh&2SE6KViSkGhPU9;Ht$6d4%S}4Ul~SUC3Tz?ue3{ z9mSWS*ByWM7Uc;dv=|;b!T0!ejq1tS3*SL@5jIYZqNrFyh^&ASC-wrryiqeYPwpo8 z=xQH3AKnlG+U7AQbRXYgi~X*rW)-}48ghDG(e09ZGAAFQS1o4xo`nwKcGKVk;zsV z0@+vCsbqX>YEj?>nuB0A=#^pimdp5nU#}#5J6!S>1O(CAY-No5LAxY7Y4NHjco+0O z>Q)f1)At01t4TEj;(hQElBQT+O=@*WT(|x%3ozaax}HWXR`mp9pCTN0gRHJ0VtRLJ zCw0d>0zEW^#)@gK?nWRs4BC}8TbOZ&u;WxuQV+;{4RuXVMMFse;&vT&dFIrRY-MuJ zj_ZDfO*HUUH|fcP4+pm>&Rrge6U}0beJ??V|4S%_|nVLnZ!QoMHhzG?#*1q}r)h%#GrMEVv=9 z<`xcK+}Cl|MO|?PSvfwWsdaCM0+xSTuFRwe2hSQQ}OI?Bsq@FTP zhd$1(leZmiGd_+Vb9H%LI|cfbQ6tx+omXHgpC&rt8O)SPt23(^yE{^I5YVsM2WvsU pG{m&C58!<8?u4v5Tk~J;z%PX3bbxqid945d002ovPDHLkV1jg*j^6+P diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_like.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_like.png deleted file mode 100644 index a596b56e09f3da5e43b58b88c7d503f94d565b2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 813 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM31JiU*7srqY z&bQOgdy58&98V7s;%%8^vdTB(fzy;ahl^SsYc_;(=Kf+Xx~6~;uX5R+G&Kd(X$&H*3cAuP~f0F6i!%wZf zo+bJo>1Vk9wao6=c}LN(^7gAcTb+)n>}1(?kWa%>Xos}Jn@~m89gdzwJT;SZZfw|{ zcKkzsb7-<$gx*^Ixz!;q7mN$`K4@5H`ndgorUB!+AN%$<^GohJFEICk;Ec;h=(Zyc5vSL@%7B^gRBZ=-4f^j^L+o|eL&w~&GEd{JF*5f@jBt1>c=J=i#%q&q-!D5 z{Xv>B+8|9$$15ye|r=pS+}4-Tq1DW@?wfU+H(}qwY1WDonZA@4f2U;!e59 z#h1|&?;F+@enUIfmVF-M#`zDDD#E)Y7cmBg-!$tew{`vXL$_n8#>*+Tc5O3#t&EtT m*xy?Gab{M|TIT~+kWY#!+*Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uy~l}SWFR9Fe^mb+^eK@`TbMn$56 zNzlXxDB8tB@qvYfg{@ko5Q`wBjfGAAj0mDOqKK%qkU}AXfKox3mZ#bOWqnAvl_^UY-LW_R1#s;Ew&I)Ub%K#;{g48vvU4nQ9)hbg!d z1i?4Px9g+>fcMO>dU zzW~?Zek8AjcEC=EZu}nCSK&NNfQyl$n;9|(oy0)ggxnsuWty*yLNNxr6Z8Y*<)s*k z*Bf5b&;xVoB>H_~YVB}YA`8vi8|eE@C+{Agt}c&w*cwOcim?Q`0InFR|0L)}K`|V& z@?RnzueF5XA-`&&f_8;i$oOaI4x9J5Ulps+Fk?-iXB{h}Ixktj=Bp=^~#!P%Hsi|b{xbz+ zoBS~-UV-;LM@^fV1jQ5R%C%TlF~;360g9LK_w&_xkc)0cUzuxNttq1x0R7d9*RaVg z#9VLk=b+FDHFq_Qy=X=9^AM6GFlnQOQHJgcSs*^=^v&Q2QiEgKB>Bzz>;WX%p pJ`HEVeM_};FV$kz3H-Mw@CR^s|2a|H3+Vs=002ovPDHLkV1j7AXD9#w diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_neutral.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_neutral.png deleted file mode 100644 index 370cad77f71f8ac9996437e1884275a16300aae1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 809 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM31Jh(r7srqY z&bQNTvqc?6+BRniDqd@HQfOJx>!GE+a|usoP>YF~<|F}I}f(rVSaz^=I4*+ZqA&0^JZt~#vb$1?(PmP01Tr_o;Ypa;~m)Qq)e6zan~cUC$mRkMsj&0Y?RYv2Wmb z*Qm+=a?{D>62ec<^(-;yuzDck(Ra{lN1W?A3HjABofcN1l}qac8;TWPHbpPx6kJ|Z zqvw0dG$v3bdsa@$y@m1JU&2o>iTNPsapY#rFON;-Zpy|bhG82m8g{7MPFsI<(t@ih z7yp>gTeisW$WzNqsWo;@xtZ(5C-P^vM|V4Iitlbd@YCdu?(I`oL%K~knxa>q-^P-= zfmx{9d<(Ppt~Xoi=gf*#oXyOh!0(eTw>)t-Z`nb`iW%Rl&#l`Y9shH~8@Wlo3Xx~l z%xwFc`>J&M^qI#qXUu2+*I&8+-N)?DQ*xgD-6(izyXU9FrvGF3nNELqFgM-Oy6fjv zsqJ4yf3cOWvh&V6P62az?${%m>}&6ch3?Z790#*>kP?)TR%Fxj$TLEQsZ zksoUp#8=L`A^d_vaienUZt1sIcldwWvazXT-o!Jzo&~KtmRtMPdgsOKMycGTj5>|I zXXfma?%!F@tma(ZS=aYo)cbF?p4%Ovuc3Np@*f`Sc;8yTf0oJm!*ZTFcO@np+$fo} zW$k_T^A)?!H^zSKKj6DLbj$va?+;wuY_a33$>&%kB8h@ z*BQ@>Urk(ctFR^1QHU!jux!fT{p~g3K~W*qbtd~jj?%JV kH|x5k$wzy0!|Pc7G3^!T(GLicz6469p00i_>zopr0IBF-zyJUM diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_omg.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_omg.png deleted file mode 100644 index eef79fee4ffaf4c865ac8a91f6bc790b1145d693..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 909 zcmV;819JR{P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uy~_en%SR9Fe^m%VCKK@`VxRZv6h zw27#sF^Dz+Ln>KPnGnGgc?8Krs7)R~L`iL7;YX(rU@SB&XpuJQ1c`+RS}15h*57}2 zPMAz)?pHP_xCefjGjl%X?99D$CnF<68Lq&=R-kAT-s|djQT0Bp29OY9aqHI8E<<+E8nYd5|l%^B;7c!v`>KECW-c6ORj|X;TuRk zz+1Q+Ct~ahtb=?cU*R5%f^yk2RsZcH$X;#t0Mma2-$5(00Ow#dF2?$@!Fjj=&*29= zhGU?dl1=k3ZE>7(?)}$RZ;D>!*Ki$7PS+TKfi_@BO^go`W&(>9%hU|5xzYBYmzSrrE)$WF+1FbmWrba~E=QrzEb~r^6St=i?eDr;17V zovX&%CKGY(KCZr~uAk6dKf>gUFGt1vr2i`#TaIGdUq5_7*$WyI&w##pi!cs_N4myj zo3Vn>Rm{OIXuhZpiFQDumHK;E*x=W7D8#O^x?H(ClG$@DetMhaYZo%*Xm_8ECn1rx z&z>n%cc0M}LI<2q-7$}Jjmc(r9#j|G{2m<_68A~0x6h6QO;jcFt$$Tz!XlouPM=Bs jjen)<6g%|!?^fUs?~|>IlEP7*00000NkvXXu0mjfQpAh0 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_party.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_party.png deleted file mode 100644 index 8bfcd1de3d3fe4fcaae65cb83a621aa67d8f1923..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1288 zcmV+j1^4=iP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz1a!Eu%R9Fe^muZMrRT#$|XWW-k zE7uVjlgOMg5lL~&tQ4WZQkf4UN};HsA0#GlYZ;dhDu_nu2f;By1qHG6gC=IUAxbKQ zl`Z1}j-@TwVx(Pv|MQ;ba=P>0_npQWrVl>w<5|x0Jm=hd&pr2jTeP?@jc^B|C~5^W zU@?>=TN0ZJPbA|_;xmyJa~Mqi!kBH7VHbg7+bkxH-wqZ)aTxbwvxrYf#_Q!%I1MD1 zVJrLtcVMD5z%GM_0>35x+aOtOacTTVT{Mbrq6@;Ydf60J`Uda&hD*Hv1-dZVgxCN$ z?Q^vFc;UXjkXSV=PS)1Tr*ITVbVZMV9?|z885cIee;j_*08#@lh2xE8(|DI=K%P-k zbd~d>XiYc?u}wa{1KmCxYgC)&x+`VY6uU2c4pS{Ajc*Gt593X4GjXeIlMtT=l3M5$ z=HT~-cOYwRn44--ycEvB!%9N82OR<0tlz=A(Ayed7r;J{d=kXF;Oi}wd|>hatSLSY zf5UJUqu&C_5Adh6qUaWSITZOEP5zS~>*`}|@Q?af!``l-`7qfM8h-1WZbx?oJpxLLv>7a}F10Kv&y4p_oFPMMNnr7p{Eoc)<_CWki!yXEnFqDfpI=w%Hulzu5w)yhLDE`VV& z>jq!@u}x@u40_8XI;U2^lVP1~VioYOQ$CrK)u(6(Nc0+)CXRT%Z-NSOR zOCdfyE#4qaBl|XCM$57_AwCG~5go*S!1A!Qmwtx}(9+@!(lpRSdYf*5L~oEgjgt+D z_lC0|(SC_HEcOWnkx5pE{UV$L_m)~brzUwDNGd^BD5**-VyrXlRg#x#v^Ka7KFKPp z#nzpaOtx4~P2yv42d+a$7!KM;w_$9qV#epf&tRfD$s*OEb>}6&LHu}g^;D6rP7;3z zv6s0>=0L1SYe0@JU=f6i(t+v@OtgL>NOV4(f;ZE8xi|@Wb97Z|7+(Q)A#4DXjTj}? z47)q%t8ZU=%;*3-Z#mNVcF1bnB>saC<~o~U;~3M&cnerf&uqE2AYGN@>9i!q2EuO8oz$Wv+7s)cUs_!lCr=w*ay5+Cu}RqH z(xT|uuELoH0lfM%rYtwREoP^h1S`-~ZcTy1D2402pU~&Ot z4z$hLFlCTB{if1B?Vgg736r3&x84eg-h{*OqZ}_f=w60Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0bxA})R9Fe^mR)F0aU93@Ov|>+ z>ohNIHBvK0sa@Flv0$;)k-3i3pYw$3L{gZl(>+&@RG#EnwHp> zmokjw^F7b+zs`A{bDllVXuGgqeV^a||NDJ^FaMY4oRgO~CjZ+Gc%Ih)?t%+o&Zw@R z25P_naPoq|xKV40;@7N`Hgu1T8%L!fidTW(hHCT?AbB`i4V_Ka_uA9|Yj{Z@R5E6)6!*)BWVh-iu)wZe~r1+gtMyDoZV&^N3xNv498V0K&rd?la{NE%Xk z*zWiq&pVdtb94L&uo^Uj`OY5FICL?4fkZ1j1*V5cOt9?%lGh+V!mmP-&tOu7e<}9I zz=@82aVk%RP8;KcW1>HSePFx-&;_6qNVcaXNpiG$J&z>Kj>B00O81zM?+b9eR>vFE zI8TU$oCM3kQ%y|Xq8q^`o4-dF4hE+T@NG4onx6%f^QYOg`)5EIxMjBeDJlHbuQg{E zTC2M-(~@6F<^SH~w^~&66!62hnk|sRCn(8RBh)x2^9kT^ zz^6-Fw%8E)Y%!Y0lG($4p8TO7Nf;Vo(1ipG0rPKg{N-F!328|D37pj!|rxr zN6?SGI4VXQ?C!V@24g~FNbZh24>@8c@OOcr3|``x5Z_Ed=Hqg~Ms$~Np0h`3xVrE_R-x^pS)kwhRinn099d?0aXKzU3oHOHIf=+4iwo36ePd_s z{t=nDwQw(jidYg3{Cagr4rSs+`Uq<++R&43EXFDQ_cwj z0pytoZUaesz?IvO;1)kc^5-5(A7}pCdZ|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM31Je;t7srqY z&bQO;vqc;wj&078%ytdjq4ZKDD8gkz@NR)_5l2?(?jMYQIDT???Q2-jJGDt^iN|E6 z*48eCPP42Irw!hU9Gm{lyIYx>R`xBgeD90K?+1#FKmVKk{n>v%Uta^sMtkYTHQm+o zo)`bnJ?QEe2f)65c@-HR?oI3t9 zNMz$K)z;0+PP#pl`>NdePpb0?_j_kY!`uGye%sPajOI?>*dxlUHEl!cCpT5TTfR-t z_J1|GTDmAgPtCRaZu`dEw^MgLh<$qG+A@J{(nk*ztTWKxo||gE@bm-SioJRYyHqQr z!bAbvE28)7)cS_Tb<7Vd zBSY%aZ93!4KduSY_`6H}pX}{lpGp(wt|{-jW7+8Jd(+9B+5SNJhn$?|H!L;0_J@i$ z#^pY-y4X5*irs|7l7JaSvMgPKW*zo#e_3=KUbakUo8_4@Id*$7?u^%*3twKE{K(d) zseXlQ1#etK`kae;PrZNiEI;nA?k)N)=I5*+HY2NB1&4PEXzXG8Rr%xO&81u~pV>}d z(B-Gkl&BnV!K3$r+9&M-!F>&k9E)0a@ohbJ@4)d7#v)rz|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM31Cx-ai(^Ox z=iBMN8ZL<2nOL-}B|J3#tn>1ll__S$VYnRULRrNYGZNt{7XEj_mPEOf0$!(Ki zWXBPc$@4$Xd3I-4`L6KKpI>U9UAg`HZ_Dr1_urcozw=QE>hxkgwYnkr-sAoDbI+#D zKAFLN@>kN|YlU;pPpI8|dd5pu$q&(UHow&N+8Qan@AABvvCVw{jsc%Cl?lFax18KvGn z!_XEKHCJ?U8q;q9r?(v*>pvdjwRQg06{61O`y!3$-?c)iIED8P&(k;#vhS_6>+NRh zp8ZpLUS*^x_iN|dFLsH(NYvTitNN-)WM;Ff`l{mTMm*>4bQV6lR{J0{e}8Jsf*H() zioEar&dxbtdekQ0MEqk^!K$<;t~ZlH7Th>&uwil9y@!bx7~X_%Jj@di(bxG`Y0g(A zsJ3#&o|9``5|TyKLzMr=JGQl@e_P%(RXg0}e>H0zL;Yvg3l)k|N}yEY>FVdQ&MBb@ E0F%fUu>b%7 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_study.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_study.png deleted file mode 100644 index 763a15f4f289d74c4a107717cdde168f0129cb8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1035 zcmV+m1oZofP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0bxA})R9Fe^ms>~`Q51$fYGP_3 zl9&_<5tP+Kln)X`MM4nyQ1noC!Kha$C@MmbE)U(_DyRqoi*8s+Sy0$Z5k-XtQ9)32 zeJBf!E@D~J_n&6T%sA>fbL`C@KKI&tueJ7^nZ4JHX=%e6z5}V}a zbU|w@7Hdy6XQX&8WC7d-uYS^LfRac_qXelLa=!Z*7e1Qy<$A=x~nQ!7hcUZI0UANx16odI-$NCudSf9fXcgUX& zTRG%_;s(stdqvi#y0B!6mAT1v7f^1Tb@K_P9+Gq#< zHEu9|Wzgitsrd-CFv64nf+o;X8w+i5&>MXn==EW*5EU}hO^oueV8+M6ap(a_hh+zh zl0R)VRJ!(AY-xE|uHG>mrpMhJ=aLQ5*U8unpWQjVn^bw{fnLCh*$evgkW^$<(~3Mf z_GtoDX^gfZ-gBJQ<`dfDWEa#HbYLzY_JA#n>62aP#E{s_uBTm)N{mz!^!4>|m=p4WB@7^O+tupUK=+kQQlzR)^<26#E>59UL-2A7Cn6%YyU4K0fKe zv0xvc8PEaJz!wk|84ek~14DKP{sP;p?PfAAKv4hy002ovPDHLk FV1he*xikO( diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_tongue.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_tongue.png deleted file mode 100644 index 01f4df165567d0d47ba5fa71db6a052f523e8420..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1035 zcmV+m1oZofP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0bxA})R9Fe^mpy1yK@^3v{t$&# zjGaFLS5TWR5(^7K77I~HV-Z`i2zE&mFrARj!op}8A#FMf?F2E176CyeVv!~w(I`qP z6G0TSerI;>@^;?a_x8Q4m3!gr%)9s8GsFCEUtiC9Be1;@C>2Ss*XzUNT>`P5Z2r9?tQaG(*og!J&WFs>}eMdrj z9l4YX?g5!J^G_d1wq`Ukg*#(CmIjcPY|;E3l_Y34$u$4Dr>R{d((;-VId&gp+uCC$ zj&Cp6ZQq@i%2BTIscTcnmd%%1LL7GV#7Wj89#=&yEBg zu;~VQ8pvitCcY8y8?1n9pxI&L%I9O^h&y62EAi=^l1-bhZ3$_?Q90m}NW`XmT*Zr! zBVQyw6~^^VT!*J@A&e*O9^Fl{l|~W!-H3R~k-Al*zVGG?O4GKsf^g)MUT?U*a~(w7 zu8MyEeD(1Ml(8KsA5cst?m&W0*+pq9jK#horgdnJ_$s&%OAH+1c`CE15ZO=VC#dqQcAl66?U0iVDzhW?M(_$MjusE%!c_uw^H z1>$Z3O~oKM0nP$j(3|ME4Sf5JXy_2%{Xo-s3LFHQs$0P92bD8kx7g+ClVi^hgmqD>F*PEKomD<}vJtMo zqICBdW%1{S7p)+&?uBP0D8G!l-9=d)(zX|0o!Q<4%?s5KialZR-3PMF4#DZp6ILCP zAy@-8QhKmyQQicy;|*5pFaFy=3wsAL^`002ovPDHLk FV1iMjzX$*T diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_vacation.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_vacation.png deleted file mode 100644 index 6c6283b078fd6cbd9d6aa890cbd84a1ca463c00a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1127 zcmV-t1ep7YP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0(Md!>R9Fe^m{~|vQ5eT(TB&HU zjnYzjXru5UA_%g2QUfWUf}-*zq=yzLho!)ozuPNo^z&9=)V#_fpFsH_*T#JMp8Q#`anxK z9DW<$tCwq-!~!@1jS#B`RFuNRUY9}bEn}8{x0a>D-$E}PUryX z{ZHfn{mkF}Fjxa)vm@nptaKU1_2{HXxJQ{$D{O>kpx3nuZh&+TrrW^sp$;V3G1iun zCDCGKL?1w}Yyn86N{sCTCGZW@XO<0!KNK#2q*p!2+LE#)=nG9Ctxyu|HWg5go0M`c zv_UguSR4K@&}5{;R-cq5!4f}>=UuS`lq=yY#QkfjD*~w&I=2w~N$?J&e9P5sORzp| zsn~+?U&2i*$6DGBf>Z>Vun!)CsU$WgaG4CZBU#+V`jNWI*d)}Af<>?zw3gn2Jr!K< z1(ZSZi<{s#AoaBg;A@?nRv9}G)`GhYP>j+kN|PVXCK>39fX^l6^(S9q_k*>9}Jt}H8eyG7NkJXaggpnT9B9^ zeaNLNa@@@`VJrbzpbLCEOiI+5_B5Ce`ZXIR>arjQqK+WS`ao1a1rn}dKOvp;HA&?* z0{&#s*L48=y$hQQ`f(`f5?A2#*Oz5_g)>KOSmkN42CRNcjkmZiEgjZJ0=8HO$|J$n zR0aMz&}Xd)?S(|R6=m6a?b@u57A?fa3?t3hH8>dT4Cw(1jWZe#wM?(#m z^hyiW2b%|)l&Jy7-+QpjKz&WyEiV;?FxASkzki2LZ-NI>%me-J$9eXYht^EnH2k^n t0V-+x=(Ooa!+fZt{-V|YxBtWw_yIl|_41`Qj$!}+002ovPDHLkV1nIH_b~tf diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_what.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_what.png deleted file mode 100644 index bdca1b7e757f34057f94e2059406f9837d97c3d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1237 zcmV;`1SPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz1KS@MER9Fe^mrbZuRTzfvxhm#Q zQe6l!F*OW@67Il3sa%M_BEm3{kU$F2kC>;Ye-g_ng8ydXP>o>$9>j5`<|Ok!WW*i*8bM_eQVvd*U!FPUH5f=2L9a))CLot zWmzwAufS}0490;v3;l2qzNpn|$0+|hF_8Ii0tPC5=il=Yk#rIqZW_fI>YLz2coIej ztZTDPpD1G|-IIZls1MGA>W9TJq$;^S!PgjNj=rk6w(TZ>>!5bQgKYy6jmCsniagig z21T&1DbCD#>fPX9Jpp>b_7RCOw3zTSb^|DLcK-SZifhK1F<}p^gX8cw{0yJNvvCB} zYv6!qz-*WXkAm@HE_FD@45%c)-K2c~PWf2)7S6&pcpo;yA@DDL#>A9w!D)!PM&%oL z8-{_o;+h)x?jtB}?Zu&^sn~YH(_rGI;A?vbo`dnh?`7&M;Z0ZqAHsI{9;O8!H-$Rk zbER;!BjvVj*-h9!0Cf>YrV?U*9vs-HVmmh1p}Ca@YyiG5GrTK}0^^uas^ zt^}Vo#de=*^PEyEi|yS-1J7OuYInV8`Hk1XWm?X(wAQbY2ZH^nM7yS#JNDIZ8``Md zsdzW3AL~WS??+hvfUmf#98^(1VfYPt;2@+FbH~0?K6M+@cqyMuu7h%~_ASIufd!Df zys?i4b*Y#sHA6+8$efckLolzs=C4F{4Rl$0)7PwnB+KbF`!I~c}$%0i%GFLdoJL(X3kTu98B37@;XpMps`kR%blM%h`%u1pfm42*N2Px zC728Oha2S)Sjf6LMcKJX{vN2wWzn=v&pq1z_~kk9Pt`V^dDr;9y+($m{ID+qbq@SO z5YI1T+!WPcgQ>)2HWGSCstd3dUIp)Xr#{-!DGq*FVcy#`0&7BtJt)_;>` zcAB%wzjPNh2hy?sv5p0gfva$u1$v$G|F3@lP1l5mlBa)k00000NkvXXu0mjf&l^G9 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_work.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_emoji_work.png deleted file mode 100644 index df3ee4b8e6707242fe5dfc4cc45c5a6750756347..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 576 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`*(y&L$B+ol zx6^$64jTxx&gPmbn|ivhwpD=rL4IpUA-e^u4C9TWrg;t43f~%9EEuFC4ma6zp86iu zFL**R@6`&&Qy%L#zA=CAd(87y*y_$@%$G|Qv?tri@L50k>R_(^f8x*EI;ZayU%TuR z>>(}FlpY}RsN?p$Bei)#Mt7JCSnLjpRxmA$NGKAO*?n}fK;|mTcUzd_4zSU*_!T>$O8J?1^6cX>k7r1FT}Uo{p_;+R#|N0^KbVXk+Y|z zTezZ1R(lDp;`#hZZei29$h%C;?0P4YpWcGawuU6-InK!<81d2URS3j3^P6|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM315>`Ii(^Ox z=i6!a9$|?h$M!~<-B56PqTu3pQ9x|V^G8A!CLIzSTB>fIg1UktYCBCjc1A964oGNr zvEUGNF^Ony7IeKLFk|6G`;{ht|LpxRumADKf4zSScCgExE1p+bi9Eyh1Lhy>A4{gGJEpEm&A78vdS!XDae~;N zY#l=jCaIos%UgVFb03-PVf=nD@VCHP!JcN(32Jk$vj(i)yJEG2eg*%nubX}6voJEOKpKj1F-D0Jlh1nU{gs@Fvy)vgfV5TC9ZC0$@I zKK~%Yjpft7*RfxG-(c^MBw2LgTiZ30cZ}~Cq>DMGJNC-D+%Ax=o0$Bf|A5qn!mCwB zuK8?_U=RJ@!r%D!8q3+eW>E*Z1w@T)Ze*qlXSd0@SXTYjuMFvV;C_JpzmC?<_>RLy zlQoTZi0imnR@Zv^tkhTivg`QYOY+lBA9lIeq%foXyO-=lZm;VxCta<$Uu%acs+1{S zKOa=?$?u%zddWLO@4V`IC#w(9Vv0KIdQaMSos2)sbK#57tlQsa>lo*{MlX-zSZv95 z{`Nzjuh~`Wm%jAhI>9(;rQxNNj+OgF&n_+Hy>#+VzTl&xSFL+aW_~J9UNQYb%q_Oa zXFEkaEiXGs)F1h<$ndIn#=BehnzWbMZ#%PPLUGc{+eo{Oxn!lQ8$9lNpC;Cf2#OXg;&LK)$Z$r_NvTeX8s_dbE5IX<^z9I^F`J! xnc4i>@nb4``G0NxsU@9%HvD1xBz>ZS`L+1b|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`*?CVF$B+ol zx6}7}IXeop7Kctr*doYM%fP)c*m1YR5x0QV4snMMUGn=NSi>&OTc*XqW%g2~S3eAmo}2aXWWeu8%Qq)4UR(Kh#>vG$RDQ4|RnJVx7tWJA zF|l>Vmz9i`f_HDkeAQa_TBmlZjpVBvr{A0WX^8l?y01e1*q$F}yKlEW+j(=@51S`1 z%{UjoS>F(Az{huT_ae8?n@=SPMrb>|S$T0q%It^bIhz%wzucZJ-}9&I=#&5NZnK$9 zc$we7^5b*s7ma6P&K+%>BUU9Mda1NIzdtF>FVdQ&MBb@08Ib(@c;k- diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_folder_reorder.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_folder_reorder.png deleted file mode 100644 index e21abdf1b1f02a9ce46a4da2424221c789b7af8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 678 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM31CxNKi(^Ox z=i6{wZ)Qh*XRnysbR>vhyZZ<8A6`c5(?6JXf|qXEv>{x8McXqyQ!%2e zE8a6Z=iK*0=M0~HvzeYEe3ZwgEbrOdGpFy|E97ii_;({`OJvn!i#V4&@d#G8%@utg z)j#+*MoF}N?Emg`hU)@D&CSGV60chpJYteIJG(4<&Du3geIF}7EI%`^)aRv9x&4td zD>lkJ&nr+^@NUwo*v+}J8(G9d-o*Tj-96(3Z`YlfPP_brZmVS|on$+>`BU{%FWOAoT(3jo*2<&Pd1I{NAF(F_Vq&!iFT_)*p7C+r*bzC`@747}WJZ zz+oa&f&S4AVGY{FXQy6IdLkP1RPfDA1+jEthi;+xuqC&DZj-pbUFX2==VH5*9xyIA z%lJO+sp;d14_WWAZd~ko#p3Y>{UnJO-3n%#I=ng+*N4v+T{AUXr1kSAo=0K@ZLhbV z^Q{#<@=V}k*V7fj9WmeEPV+px$8@HEnMJtZ?G_-L9 zu0GOoc*>7S!CxGb4i!G?R){TF@Nd27m&9X6nUeiSTAaInOuBqqMNOvMj&J4l<;S+# z&EI5t;OX8+z4QMRw<^@<$K5fx{_7VH&) diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_forward_check.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_forward_check.png deleted file mode 100644 index c33fff46dbebe6c555581f1f8d4a38ee67520026..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 513 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`S+=K(V@L$& z+iCl~m>mV$7rO|m{yV6&K%%KPK`|mKBH{;&nV6lEmiF4qEKXY1(b9tR4;(t=q%G~b zWrKjA4hyHI2utk#iLnw)?tXjjD4jWQ{LI^PXa5+T)YB9>lfz`jIJ?1D;U3GJ;>iY5 z{*AACCYZiBz&+(k*gr+4X$yFh@(t$g=ej@fS@8#!r1%Yz!DmF6@?1K%znzifCQv9g z(=}4Eq~D(@;%I7>%c#w6S_Lz_*Q%FtdCm$fvLs2_k!te?oDB> z={JwqB`&sBznm_0<}fqMWZ^HxEgvrzh?{-b>N8tiba5c-yU@qAj|?rsvwN3(|GmlY zvE+_WrbE|NyxAxGKk9zjD5iOvuw2_OqgE5wOuhZHz1Mrx-1%>&Bqit?Avph;b3~u- h0ks6-AO6BW*d}k@6#2}pU?nK{Jzf1=);T3K0RXt9w?_Z~ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_help_14.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_help_14.png deleted file mode 100644 index 796c512d042973b699a26a43e9895ced5308a081..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1069 zcmV+|1k(G7P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0mq|oHR9Fe!m|tj*Q5eVfoB7jB zF&8#k6e9m4A(0z@RwzSpDK4;*66J4}T}W<7DOtG?l3d_MQ&axUN)fR|D=ovY(yWbb z=JTxc{5pGg&b#;g)+A4T_nh-Q-{*VI`=0kb@A)k&>mRe!K<3lk-93!@LQnu&L1QYF zYR3OPV-kg6KX?ebK-4}Hr~t)-Ix7Yk1k8mI$mM-mO}BcXCnmGGrLUR<2Ie4vw(iwb(C(%KXj1GNk3Lp-We`-YzpH%?FvF*(!7bELL8P5{zOpvMjQpe~Bz zXOu&9GLS13dkcJ>c<6-METIQFKA|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM31JfE$7srqY z&bKpcGei;v+VXqtdpQ&*bg*=C-QtLHQ(Uk>Bg`o(yLF3FQtDE(TP``dN5U?gI_A{L zVz_9LV$uPprX&R=tqhZ$pDVwoo!fbO?VVRuJ0G##n>|1OUs>7r-|zG^pDyrPx=HN& zT{hQ!B9l}iCn+6DXV}J`!=8Vj_?rEJZdEQ>*7Xj`CzoxFD-hLb^thDzUU!Z1q~2p( zlAm(g?w;)zH2YH=tn!k1zV2(LKO#5MCg?;jxvlZrVSnLEKk@F27dz6MNb^S!bQ;J53lWp|Pjgq|$af41iOuSq9Qg@13DZM(@=<8gw>i`=*V;)3rYw+pXSeD1#E(q~KO z(kn7tAC>>z`W~U=yW*}$_O}Y>w|PpNREno4< z=#?eY4!l~=U@UUt+=T4SPpd^fo6Y+cWzC+~plIM5y!}De7E!B&@cB=7&udLAxFECa zp}Ft5G!HpVd1->DSZM K&t;ucLK6VKMQLIH literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_invite_14.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_invite_14.png deleted file mode 100644 index bd89979292d39fb96ddcafc845856bdc81f50026..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1158 zcmV;11bO?3P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0@JU2LR9Fekm|KWWQ547LGZ;cN zl6%RN7nEE|l3OIoD~bn{8b##t;6Vn7B1t?bw+Giq^1ut4DUpO1MQIRn4MWI%{QjT4 zPW$Y0&YW+|M^^o3t@U4*z0TSDoHH{O75|wO^5$u7ZXQX_Xi%M(+d}+3v76vpp-^aU zAul_`Al2XuD5qScS-09^d5Ixh4yyZU=|?1I6E6gC1FpvIfe^uVBID zpb_Y5UxMwR#_3lSioXw*XEteVK+S+jbTts`jSTdUz&Cfjzc%Do7uf9czFqPiqR}V{ z>s+xGssVGrGoU`wvw?UUq>ehh$J!<|N!%g0bwE<@cgNRu-3EgLz8+4p&Uozd-65KG za*ZF`0@57TM$`!OeV@mE;C!nK!s%|wTjnh=kt^-&w__N4dWtmhju_Ki&Rst@&u+~? zCu#N;3)vg5^z(j)$w_NNx3m6yE z1Y-kP5WWUnvSOzXqkCG8ui=M)t1eGUTeA^#2=e}HAZtRyTHs%?&cR$St}~_Ag?~ri z<4>|2U&E&kRMMN8;wqZW0{SGF^ujns>@3hWUIIITJ}Wn#Ge38c>Hzj*iiVXcPN^Zgv3B_?Ljz97Zt%*gM&bCY>CdwZeVfM zhC@Y9DY4vvta0?=q-Z8E(VZzS7G1^f!3Mxj0)2d5Hk_U|y|qo2SPn$$Kb1)G!B$5K6#erz}g8Z>TO{-iDMZtS62X9}!7muP?Zh_Xa&4#6FVAia%r27mNe1fkf}Gq!5@4?9o@^ zzYwiAH93uA2rdR6{>3D$@e#y+#nl*zZ6T>IydKdZz&~TSWf6T=^crd434B_Xj(@Ys YFY(OA!(O@k?EnA(07*qoM6N<$f-~#?r2qf` diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_limit_2x.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_limit_2x.png deleted file mode 100644 index 59adc56db71b796456c1aff4a492b2e9e12bd6f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 866 zcmV-o1D*VdP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uy~%t=H+R9Fe^mpf<_Q51$VF>4?w z7F&rCR8%4oY)&`z*hgftck!A1j$g%%kX{H9gf_BOTA6wtj6hSppluYyC9@i936|{S1!e9Q98tP2C(wQF*bi2KG->w0+>M6wm-zQ= zB>uS+&S~X|cY>#0{yMgrSR%x>fJY!z9GPrZLsyLiM<1Q^Dm}(_*9NwH$+(S?#;*XM zw+8;@zTvD;~dgP6wFY%F#^m=8FyD~{bm#?R845glzORH)$WaDjBA zPWS|Wuf~*S%m&nbuo7eo#L>9L>>m$Fxszg*h=u#dub|C*(BtYryzvR4ZQQ&id(XhN zM#dfh?vBAe215BrV2?LuH~xo^6#B-`Yv_;>DX{8#`6(!c)OC(Iu$3PSp8;px1$B>>_#>*q-FaiQUEilK7!g zts`L&|CftVU%Qypn0R&e@U%)jczW@LL07*qoM6N<$f~rk(nE(I) diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_list2.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_list2.png deleted file mode 100644 index 41243afa5127e9877fcf4ca89efb53e3eb070920..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 304 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKNxn&s)@7!tvm zoFKuvSkXX=2}o>EJkXK%_y7O@kqt?`4r^GC$oBN~s3&GM6e$=QO3ZiqrFh}ZZKwg3PC diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_members_list.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_members_list.png deleted file mode 100644 index a455e59e2c708cfb56eb15c6d57c8749e4a6a3d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 994 zcmV<810DQ{P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0Oi4sRR9Fe^mQP4jQ542!GQ~wx zLH1fwrqmbw0U*i+3GU!(Q#)=X5jXE+&eFh zhknlQiPxpAH*APc)dU`c1uzTlg56%%q8I0S6n-x1k(OynTQfAP$z8Ej}2HZ1Di!f7-dspdnXN z)A*&Rc#SXmO^wcyX>~d+)_RQ2qJz-jD)7@XJ!&xSsd1xD#CiClzRRc|H7#jYNeAC! zoMwld(^s<3l5%k^ctSOgYu4Rv)fl zi%y6}#mzt`w9^#k@sEIhaNPpez=pRw>wLCK!EK<+vI5S7eL(gN=!B*?sX#=yAvSY> zco3Wb&Qx$zM@oK>_>v{Q<41vBX1_ot(~UU83G zK^v^#b-a-Eevf^mEzN zwCdCKhR?Szf50Oa7nh&3G4Sl3eQOdoFs)*bc*e_d|JsYsXAEyKhRQMN$F(iL$sKBW zwtB&(3Bf7PZhnmAStC_7d&UyQPv`Tc_Dyu~T%G<-GMcwpcSnTs52={7Y1LNmIcxMA Y)z3OKncwPY)B}0Y)78&qol`;+0RD%0cK`qY literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_more_0_2.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_more_0_2.png deleted file mode 100644 index 513c2f9deed29c8756ab9bc1b49d4fd664f4a4c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 810 zcmeAS@N?(olHy`uVBq!ia0vp^mO!k+!3HFa1122+QjEnx?oJHr&dIz4a$Hg)JkxxA z8MJ_G4hF{dOa>N^5+IfWVg?501&j>LK$;OGwtxvPYq@|K&Q<{_)PHz$G6MtC6i*k& zkPOzh(|2c!1_~T2Z|+~h$<^dGNx@@6hoB>q(-sddQJ4Qc5v(q`I%`FAc{*B?vhx@F zHt}CMB`^``5%0HPP~t{+f}t}^)Jona}^?G&YDW`HE%DiQ_9v~ z@{#pRMAI?3>)T8ll)}Fsy}ZruSZi1%d(hS6l{fpX7_OcE&mZ|9Uw%pEuMIZs=Tz>P z+~A$pDBM%svo1cOhATuj*sfSD|4W&#=L2TWpZfjFe|$e6Wx&|x7+L3hhw0YD-Ukvd z*d6UQc}F)NmYRGcy!ri?!eg<;b+&1l+~*&Q%X8ewKKS+0jQKx)*O>jVeXvbFyvzUB zjLo4ne;a|Iuw>q5jnTe zVL^M(?l(KEZ?GS!m!=>pmN1Um*mgmJC*2>gl9tszBaUR`Yc*kO!!o|MWlWSEh zlXflLG`nO?>V~vU7WHe4^RvJ1Fm3*OxbU8h=O^=A zJ2o1>)Rz;T`aik*9(S3B=NG+#`)_h@RM|gk+ROT4ny8vXA$Pmsr4O>jyC-??i?-G^ z-0OAhVD$%~FSF{!_ez#bztI0*>Pe8+rigTe~DWM4fFvwtv diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_more_0_5.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_more_0_5.png deleted file mode 100644 index 01279e4c00ed1572f5789b27ed5ef01438e0559a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 813 zcmeAS@N?(olHy`uVBq!ia0vp^mO!k+!3HFa1122+QjEnx?oJHr&dIz4a$Hg)JkxxA z8MJ_G4hF{dOa>N^5+IfWVg?501&j>LK$;OGwtxvPYq@|K&Q<{_)PHz$G6MtCbWaz@ zkPOzh)AnYEItm>9oTM=65J#AxkD^(Zya0z%R!fPP<{Fl@TRI|K-fY<#BVie140Y~orT&|8Ty@JjyAO6gJ{pM`N{oEtf_xH8PTFjiedGg(vH}~#dzgpY# zl>-v`KAn;|AD5L4?|=8vR{dqGVEj0|HK}(cy;=&)$=!%95cMp+ba0;QTFsQ z(a37Wi{ckHvRv%TzAfc2G5hzU%xLw?PT6~yd9NP-Uc^u;@a5Eh{>Vr5%cXmdJ$@wf zOYPyh#=8l8b5!4H?y5`t$QiKJ=f|0uHm}~^QfTB?c~W1w;&gw*y$gXGm_=NzzaE=t zCHVV**<-s+-m?!|WcMWB=h}C9dB^Uzf2z(L5{o-{zFr~Wd&BJ38SSYv1vXzl{!`*d zq5ZQQ(fIv4SmP7Qncu!sE$~~txcXqVz>{4c-4*jJ&a^RP&bQ3F@_3a})12*3+?gBC z^=bWD^;j?BPVA2D32c8D>O1u>JzD%%;zi-fJto!DAD0N*v9Fi?e)P@h8vo6kR<4sb zRC&1_ur82a!>-;qt57Cox>(fta}ohDdJ7$9YyYy|IVF8tQq7?`@rA~( z(+|cUsb}rlbLfk-nfRXtE})X7imjebGIISN#1W kO|{8?t~5d*m(>U9hR=o@r@lP^Ori`7p00i_>zopr0E(_>A^-pY diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_more_1_5.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_more_1_5.png deleted file mode 100644 index 80baf40b31674bf657221e8990daa40208321a20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 785 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 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_nearby_hw.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_nearby_hw.png deleted file mode 100644 index 757a1f4ba71bff7597d2493b35000ba8c7804eec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1149 zcmV-@1cLjCP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0=Sf6CR9Fe^m`g}hQ5eT(BrDSl ziPRno35%d8dzgh(;I6$^^fIVbi)dGfFcb)3A+~B08G&wF27#5j3Cc_}3X%})VYMmC zEQO}uf99Ow%$=D#-f`OX!O!oU?|D4;-ZOV56#6gzI}rAFXZA*;QRVJ}t+2*Ken5}F z({MN(HMW1NSV##(;5}p#`65sfbTxr?hz1Qb=z$8;=o@+f-kJG2^gdW&=9B1S?A8M_ z&!1v3r(g~wub~kNy&YsTKE+6sbIKdHpg9E_Okq^C3l?W9s2CHAiY-dJyKteH?wLtd zMY@7kRE`pnj}Z8tO6fiaz{!)+$LX(iA@ud*%Wv|l-l5w+vJSx(6za-*6*uxS&q`Sk_eTL7hnJK+lY8lmndem-njxisQWgQb;W>DvJt;7U2?g7|MVSvl zom(!kLL5hM^nv~S(oz2i@-4j-)QvBxfj)X4j?MTJTM&jljJshe%)&*`q4orlgxG4u z!;&P2Gr?C3b)a`_ujriG20{Ub>4J-X(y*}b~#Hgo4Yly$IGq^5`k=y8E zZ*sop>H+Fyr8Ch3i<~3YgMI@iAg9l|MBy|8)ikx;2SmM-HvvN_+y_@Cm~?=ihQc)U z=Vel^si9h`>56)m+CoWRNpNU>657Cf1I}O@gdunfwuZLqGJf8|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`nYyQoV@L$& z+pvSYhYWaf7!29C719#e>TCkc9bXC5{9KTCK*T12Mb6cLg=uQ>)Gf7FG)1;+9h!DW zrL3e(@0F(Gf@M4!%=O0_7JgoqX?1KvlYhqDMXCq-dJW6h9Xp{mO=9~UwTC~LE3Em7 z6NJ@!#PcR6%*m2r{V3uk`NEz#_hrD^dlf4i4cZDax%axxOo_JoB3;$2J>#J8k2b{> zw+*Bs51*VDlUkk{6K7?&r6DKQO!4l?-4%PYHLB|#_|4weE;MJ)r&{JSnnm0@svik> z7XO-{D4#m{(d5KbZ>P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0Qb|NXR9Fe^m^)}xK@^5}L*n}t zB1$Z@5g#BZV(>wbfEK2(5hQ{lA)t+=pro)+3yWBYjYzN%ti{Hlg{Vak5)~m56Q5W} zKm{R4$kX*Zn{(F5I``hWH@D1zf6tkj^Z0k>&g|SR6c!|Y28!{+v!kU_sR3&%SQO%~ zK0nbPi^bx2ikNs;h%|!%kX0rLya`suR|*&OoKBm7v>D6XpmzW7}Z?2LqembQ669unVGVXco#S? z+WO)&Gcv~bp!#f#^R=;BGpe+^o65_iB>M4_m}%Ng6ns+^=WG7Z&MDtubzc;rYCmZo z0_HDT+98Cl;5Q0xfNa9IZviGPl7)sW*OYdO4qCRf4D1^x#>w(Pq6tTtnI|F3h5r_O z_kfr9zei^i68$$rX)+PN7xV%X*=ZX>azyR2kXWw|g-iMM9gIW=k%bu_WF`>It+FwV^%?IWCd~$IOHzJMr7WePH(| z%!-U)$+q{tU7H}Ed1xqUfF@|>?#h(Q8eNmL%(+=8z$Ps4j@vNEQ z6GC~uN)M6Gt|A%OXo!-U&z}vl)#bguF_cB*lDP>;nC0&nxwd|0ne5i+rd+Ty&%j?l WmX9E@-mWzO0000RVyFNB diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_photo_blur_linear.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_photo_blur_linear.png deleted file mode 100644 index 5111f2e6798206830dc8e1037a462d5bf730b443..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 390 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKNx`rzr}7!twx zcKSiyLk2vq(iRGZN$h0_4eKr%3vb|@iw$-xpKfgY07(TW4qspf(Z#~plg94^HznygRaiEF2-uq44eJZDGR_!@0 zBKdS(d1RmV`%N;=rk^M4TR-{q-)OBzvHr1ds+Yg)e9t3d@PWbf)`q`N93wY^!obtj K&t;ucLK6V^^o&dZ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_photo_blur_off.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_photo_blur_off.png deleted file mode 100644 index 6ff96b870f0e80823b6f226a1a93f06ca2d308d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 265 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKNxD)w}742j@O zPLN<-tmqKQVX!Fs|NsB?#sOz|I&NNky5h|LLnlsDv@MwFz`m9_sj89l1z(brxJ1Uk z2mPBG`4$HLc6UxNVR6GCI$94r$bZ6YowE3^(UTC^{{NtFNq diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_photo_blur_radial.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_photo_blur_radial.png deleted file mode 100644 index df29f8eba56bf5fac96f73a5801f529c21a6c9a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 799 zcmV+)1K|9LP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uy~iAh93R9Fe^n6XL&K@f&>v9YqS zQxL>g5G*8>PavcW#AmSa4eSKpLTm)zAYF=}gpxCIxW;hx4m)jBi9k0gmC@DTdAqO%8= z%Ytgm*~r$1VpS@_NNhR6Q!m;J?Jm?Bss!0OANd*-bMmBc@+)&qf1^?s5hM9R#V{O3 z%*s`GwapW$Kue)Dx*c%>{gR7?$e?vO9++x3-Q_;1N*%2X`Uf$LSf-bqVnKU-nq&O# z!${lI&dDzR!pJ7=^*Dlgz@z=+b#VY^RrmCwOo3mU$wj&@+j zvDh*6qxvu}?Dn9c6^<8uERLMjJF+-uXzTT8&18!hsbmZt3xHxok8a3Uw&-+DX%6AY z{3XM3>Dwd>I8|Ts=JcN~woZA$=FEHklWcFYoYVBg*N1IvqOYb*ANs40?TMS~CN`ew zFnDuDLuD*=_{9M8*z$Pu!-TKQ#)^e%ia(GxN9xB86SA-NifnlB{ zH0EsVB1SiZV%aA{Q;gu-L9-@^F66WSp=b$7l9YCzjs&~n(j1Gw`6(SFrq9jn|JmRt dHE++d0$-cQnAjfis>uKV002ovPDHLkV1jaUV#5Fc diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_photo_shadow.9.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_photo_shadow.9.png deleted file mode 100755 index 004193402950dd22a852e06b266a1612346e7cfb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 363 zcmV-x0hIoUP)dkWoDqgApMsf)+RFsc*1!$w zl40N28Ji5ZMKOuGT5Yu*VM^+fYyOkG`tFs^NHl4}OwuKuCiPfKx~W!ho0@DS-QIBm zw>9Obbaw~c{nNjq^=Y!TPg5>whSH>CGD%}nO_~x*I^m#64@@L=*fZCFbM`or8caD= zFT0_`iD?yVG$Sja=-X#(3X|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM315>`Ii(^Ox z=iBLLy+Z;e+S9ivsowpu@uVyFVb|M>LY+FB9ADTcwB*HHIb|le!(&C*qf@P`H?>MH zbnVccq;R3Psl%~5{Y7jcMJ>51nf1I=4Y+_1&zURiT&H-BVe8bi3Vx z&QGda4n!^sm1^O=A@;JQYP!)b#Ralr55(U%#{~EA&S*EwPxX;%U-HIR#PNFI=4lN| zM{~Z3E#dT8)2`3As3d6p;e(d@ihImmgp$<+9s0jJN3gtQ{K)CHfIsiB=!zD}6Y0V{ zH`1qhe$4lt6vM*#o9|~%2jg>ft4U5mAqRzjFt)ylT*9($@`*Lk77Wp?ArZ;tG0CUj zH}xBPuKHNdFDv(1YUc9tJH#KlWEk_VLb~)BJVv`upj@_qRM+8(4p4*_>^^ zg0>iMk)N<;w$Ziei)Fu`vGUyYKzdI@v42d>J7=~pQG&NFm@TVs{rBYm#tA9HF}X+A zI4K>s)cUe^-REOh`F7sj=_~(T`M&AG&G+k-HBL|Zac9#V!G)xLY2*IpoQz7p4Q~`dNzl{P&t;ucLK6V79ZC)W diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_schedule.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_schedule.png deleted file mode 100644 index d4da876f7b56737ff4f21e28108c620c961e2365..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 499 zcmVO2T1c-6MXaAIWGiBQTcJ-02=2OeVFX`uXwHz5 zw>MtlV5x76L&?Eh-i^^yg~?;wsVQa-sCjql?LCCb5JA5`UmYUqPru8kAuv`7&@a~y pt!;#sTs)`yf4K(g@<7ij@B^BveRJ-qUAO=M002ovPDHLkV1lZh+wK4W diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_status_edit.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_status_edit.png deleted file mode 100644 index d972c30aef13622c9f00bea8f7db925666dbc138..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1135 zcmV-#1d#iQP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0*-1n}R9FeUm|ciXQ547LVnoeE zhJ0m&8uNf+%9P9#4-zTG)TAlN0~s$!X*5qLA*CcGiU&M+8Klr8%^R8;&ERFc7)(e$ zGCpRm-~Zgbk9|JwnRBmuXVw3#wb%Nuwf4FD+_U$+nTr3AY&Kg(`aDnrK7zqaCi4wF zKEecQK^u4gzJNH9Uvcqj%Q7S*|z0L6-DQ&Q;)*$uxpNU}YHN3|O9~lz4`(JS(c#m?l5KA*ltpg|0DP z7$Bt_C=V##$`6c|l<5@}kT-xoCi^FPSL);hqUr$Elc@fN1bQw6sUCa=lCPj?%%lPc zs%Pq=ygv1L(;-xXeld|zuq7|~KLV<2>Z81Vm9gar>b+s5J(g4=Cr#RIBlNyVS)A2i z$dF#3Cq+mlbf`X1ABp-_2g>6(poo#Jfnb>i^xA40q7MYx;OI8NzCfVN1A6wEzTJK+ z9J9fQ2^{kSA%l1wcxX@;3I~R1x$uqyiTcm>ieR+LV`O!pvNIt5*pg&Bp@^B53vabk zv(+nvqr*7$vYHsFZXCqE8=lnnd_4Kna^Xz`_9fh*+zCJ%qGX7TZzN~NUY|K$*LK{# z>Be2#C&)1UhKw^e4`$d2Bu@hD(17?-koFlWg!@FzkxsRA-#6~@A~YTEZeHSC7YW2T zxbxIp(*Kwe-dwa~I?qVv=G3@fXPAzkq}>VW>!0_bF2^+Kr+sXJsr^n`6VjMKS*3!uM!t{lfh|l!un$LGJI2v|EZ@*a9@naW0F+723Wa>kvJ*hIyv03321Lw z(5Jv<;O+3}Bf!cMzc-#Sw+=YhZ6;bT$(4Qq$H2c9^Z+YoZ5T(paq8PT4LmpF9?S7G z&M`MvING6angUk!Vq5{b^Q+($aOFG$|I@^7c7g+reJDJk)W;8s>;UhbVsYkcoSOqp z7~oqKL)P!O>0z$O`y6uO0S%s>kxk$NxCfqsJK!8x5A+3z2!7poScY*#&(}EBq~Ea1 zd4zpydbsL0gWYj=P}W1f8q)ZYJCl&T-GAWh>>%jlyAAY``~~*16M5w=*LV`B( z(U9(C92JsE`9pCI^$vq=(M|<;D9{Mp_142z$WLi4|4CraQF<KNc(5Q z2lA@GET9+W8n6Pma)qVe={kzGnOFmO0E&?=lA4Nco|H)8TF?eGIla*0ME)*t6#Uzt zk_tPq#3gfhu_g_*Ogehb1o|saXBz#jr*BVD@)zq-sPLz22eSYG002ovPDHLkV1l~D B{+9p% diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_status_set.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_status_set.png deleted file mode 100644 index a18fe2553d5d895b5c07f1a72e1dd616039c8547..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1153 zcmV-{1b+L8P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0>q$gGR9FeUm|aLzQ4q)7(jcfF zvgnH}qcnmbF_NgB3R36;f(Xofsh2E$sHdWE3#u0jA&3ZyARi*amp+g*D6H(EA`1E> zDnd&s2+J~4x8K~oXPvwE?0R?IZQ#E%XXZaMXZM_Y@3|Yw8G}S3kx8V_2KnF{_!0_* zdeQ$!m_Pxj1#O@g*yJb9Tc8ds$jZzpTnbu2I?_VY@}Lt7B_mR34)F%C4QTFr#y5fJ zE+ES#%Qh1%1mz(9*J;LA!;*HRQx_&v20jBL{TQdf(je8~Edh-{@{Dw1tPGOx;gD1b zbfG53^E{-01M=pAOTfqgMpeM{oE*sIV9?F}gWef9ISG+EyMXzUf3epmp+`fI7K86V za7BOKt!(6WeL*>=7E<$WEgBtNFGCgx|@JmfoIs`t>p;F{l&;3D=9-x znjAEZ&~?7DI46T1m-Gsq>my~*LH!9p`iRIDnd&KzW4}aP+2RRiX+Wzpf!tz54oit~K+ZEF zJv{h^qNerpiSlY&xnrh|Ydb~|gMPnJA6;j$qnX(?XMT~$BR61GaEd|DJ(LRfp4-1w z8teOwK3@1H#kYBlbFD96aiqc}eb6o8%te+=&NCvjqUyhYcDNlMI+~xW-u=ns(oeXl zvpG%rE;9Ay7m`z-h}fl$W%(d!H;{93(xo-2@Z|Au5}Yu;M4Baj8;g;kZ;Z!d0cF6+ z2S(0eB%Ks-IXN_&1hnT_#dtfo0H&)pBPM}SA02Qm10!;iEE%aVV&Pv6o*E*$aU>eG z@R>K3eep483}MuVE1X<#1!#HB;38-Ma!h>#w47n!`!y9IoM=LUj~^7P0^O>p&HR9K zqqP}Mm0+KcBtqJ&h)EA<@MMo{0B1o9cnofU(_kHt3nZZsHxf=pk|r5H!ctQufA3jc3Llr@wH{F>V|D`tB<5I(4~@Pf~mYp%i-$)sE%)-YWgPRTQZ$Y zVk&<&Oe0tL^FakD1V##2_D^OY6LRe%_`}8@Sd(80+N4m5BB#NtAWt`A+yNve`!#)` zKmn))GPy*Tvb<->L2eH)r%_K+{PN(n?#ZM}=BZ*CP*ne=_Z3PfOYqA=4ea^{fh(Wa TaP3@K00000NkvXXu0mjfV*&3_ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_storage_path.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_storage_path.png deleted file mode 100644 index 8f15307823926586dd2d0a7d8269ef69beb97bb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 687 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM31Cykui(^Ox z=i3?QwOt)Wj>k?ESbAdplp80U#NMcCb8p&~kh=Uy{e}fOQ%*SjVNH7Kzd%H>bJA1~ zGcL~9`4@fi@6Fhm_O5!b&buqyi=WMT|MOhs^L^FT-=|JZ)vja;EV?zf_wkO#9Q_p~ zn?D)pzd5&9qv~|G*sg^W1q&E2t>Nz~bBtbC`{#=CmMP1)z0WRQt@+-&?EqKo*;D@C zT4Gs_KL|ed&&X8Z*a04a=kE%C9^07M?WVMW>&mWUFFArwZd@5V-D&=fS24#9FLp55 ztj5~1lj*J8Qa`S*i=8~yIjUdu2~e1IGhpfs?+aO`}`p*{st>b^Wr>@+tysSY{tko59noSvTS70=EU%=0y4= z#i`8?J!h`=qo7&+%3{7l^D_4pyoUdi-1?{W9N~f(|7`=9O-dX)=tFvFF@BCURbf0-+ zp2PCllG6mEf`o;;;}`Fr_SIGJlgJs}lXb`EHHGi=&py(fB)?)3(`B2x+xH&L$YSi6 zzB5UG;m!wHN30ZGmlZJ7Gks}}67|nKx?f&Bq5Y)H(kmxU{kzYyk8!GCRKY%-ZC^l% N#naW#Wt~$(697h2B0c~B diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_storage_usage.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_storage_usage.png deleted file mode 100644 index ffa53d9af80b75e419c5c61f9714ef8bc5c6a65c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 982 zcmV;{11bE8P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0KuJVFR9Fe^mrqDkK^(_j+tMe8WtPSR1jbc`S&D3AgJtx$sWqCsSZ zZbVx4`h069=k0s*cGop_iT%Nc`SbfTKgXFjzpbgMN_7WH+ksRu?m-ZwvEK>pumiTj zT4)4G)-Xjo2BR>XN~M0#E{~8z9h`vsFayPkeB`Sbb@{UL?hwxPIA4NpXo?B6z?^ns z2EG`*c55AMffZ)XZKfIAglp{DoU2IelT0VP0ardS=!2869ai~*NM~$hD!T`=o-zo35@R)!3V7|7SeP%JB2qbo5C1`RM}JigPO2k*Z%F<6XJu}nZpd19Pzn9qgr1qCTFE~1 zuM#w|TTOhsW^_3W-9tUkxV(p2DUw9xTzk7`BvrN#qxTy_QkC;`*qt)}!ty`E_5 z=;mGJ@zdiO67+?XA9`pfA+h`*mfpha@DnbwUO>Aj7_@QbJx$i1-ISTvH)$8BpxO%^pk1)VJ>8JZ zGE%wv3Z5EsH+C(vyO?O?=d2@}Muh0|cmWc@3(+fhMr3Kqc1OFCyD-XR*oJ41|S=!P+{ zqEhy#*GUQt4#K4MFs&Si;5O*@m40=2YhiSa&<+{61H<6{p$vm@*q4}$Rbp5V7vL=< z$v2exPK|(e^Bv^7k)zn0gV>iK@r>Xky>8Y4(Cyj--km`gCs`&3;Ry_Iqty3GVnVrI zB$#GSzwPa{w;w@!#&p$%KA85}kB~&P!0SZgFDu$$9CjbBd07*qoM6N<$ Ef;X9}wEzGB diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_timer.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_timer.png deleted file mode 100644 index 8913c6595d0cffe97ac173e96fd51b6ed9b61d3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 887 zcmV--1Bm>IP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uy~;Ymb6R9Fe!m_1JvQ51%EiCHO# z(Tc>*LTyMW=m;GKOA0DmeuNb*KY)hcK&VK}7IqXQHkMlW2S`XHF+>yN2g~!a=gi*O zJ0Ew388x2d-8uK1_k7IUnYnj%F!kyN4bo+s z7sV>aEAR`5^Q2Wr1nz-r;PM&e5Nv_yCYH^7;)v^_9Nz2|`lCh-5wHl3fXg?OeefVP zk+>G4SeKtDFH&=4Jc7bzJ~4ilIU6d(J_nb;<)~2#qBKn|rzj5_B`6>(2T(4Ty#iWn zf~}j+?-^a0%4YB{fH#JPIOEKsTtGP`s=$w7ZIIVIK>EDDXbevehfD4~mE*%08%vLC($fU5O+$M6{FN{co5_OGUD_rI3=*fMWg?b~725F@Qk_lFpSeYwVSI(7H@ zs~V~$@!Es1p~q9-;DSr~!}OHHVn7P@z#OYqFri=D-cdu)NM%z!VYlRntA%sD5U+A%T81U&l2#h>0w0Z*g!39;3TT4mvSsP z8ZRAjmU;_yN|%mYG{nY>Yc4_JfI4Z5tMWl^wEalzA)}E$efwbzHQJzMl@b)1X}&?T zrv9BRte+@n)Ac6bx2~j~G~49cRqE?ANGF=S2>S)fjs$o4p_ulikyS5IXsYg0`aK+> z@>9AbeS0$n@BC*&UG-rdp~z2Tdev*­ry>~PiALiuO@j-gQRasv#wOxPx)om2n- N002ovPDHLkV1mrIg;)Rp diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_timer_1h.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_timer_1h.png deleted file mode 100644 index c9089dc0c71e0b6e7ed2e5127fb05aa297c620a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1217 zcmV;y1U~zTP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz1D@jB_R9FekmrsaIQ5?tL^Dj~? z3}rSiNl}C;JDEvp8Vd``6e~N~SSS`Ol#~SvqL{&Inpha6&|AGxR;HxbAPfJEkQkX5 zp3nEr@AuxhckX@fjW;yE`o7=q{Qkdl?mg$+TrP#m<#IQ;19qpFn^KW;9q0$$braz< z1DpU(59$U@(t*TRJURRnn3M}nRG@sA8ZE~K?yttUk#E=KsNczPl@kD z{{uJ`5f;Y$P|OB{?g9S*Hiu4(*MkA@9W+YvRm}QCu1)CP2T4lEb1FUzE(gX($jjV_ zTmXIGHwZ~h-v*b!F@t33WD7~L%27ziX7k#ZjJc;wZ< z|8!9e4T4V~>|D(_$+pE4{4G}wpj=L2Q)^IaHrGb^5oUQIWG$1=%v0nQZflk+7f?=- zYE&j6H8&0g;M1pnGiA+qLFEKKQ>s;Y(A}rPG3rSdX}z0Xrb^<3pxjmiR_;rf$A=iS z&-km|lj?*LpS?iO-L}w&aT_=f8k$x7^pc2FGqz7fc~M@M71C>(`Zl3IDF>q`iH2^N z{z9nFlJV8s=Uc)+%nyT(1MRA!(=j6hba`-2#(>_0e&{u8qW(}{OU74kmPoauV`hd0 zbi(JF9P1WG`CJ0~%sys(D%dqkqT1>q=M8N&!$(DmTHQ;hiFMk1d48t+p53lHUOPXSHV1R6o|5x%y;B*uX1@5VQ)2KT*9Wa zPgIg+mYMw_junwDpU)5Byck~A7+EZhJeSV6ui!q=+p_?iCGI{s?ja}1Yeqfzl4Ule zXm2K&DKTDRV|Cm?Ob2`wcnj3zevn3~4W&6wR@Y(y!!)DW(H~K#)d}4Sgc=5Vjqg3Z(W&0T0VcK5TiS= zuAS{5b4QoWeB|r*X2d90&2O=My{<@7z~?yF1wwz_^oD>A=J0UVEb2J$9T+jE^Q|8o z<_7Rwil&Liv`=aC^p63=x+LELF!3`dqoeR2XSl@GB-hu0c4^&#mjlg+KU+RqIw*BE f6`7H5@P_FRfR&!tA$>0600000NkvXXu0mjfkSrck diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_timeredit.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_timeredit.png deleted file mode 100644 index d159b9ac3fec42c74d0e07c374ea20a1fc313f8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1091 zcmV-J1ibr+P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz0tw}^dR9Fe^ms^O9Q547Lj0{7f zp$RD_n!>m|dC(va3?Y;TkrIU$6y;^q)VMr&QcTSwNqNz@L|%}TG;;SaDYt2EhB3KM zW*oo&IeVLZzJ1R5zGF}{tNv%Lz1DxNZ-0C5Z|{Bb@&;sJ1pc!Ti2aWDiO1v9sdEX8 z0IxwicnGe5Yq41D6Z-E79ohskNjHI$pfpO4LPv-~B@|i#CW8~a?cHEuI0g7Nf|;Ng zOaODh5MZSj;}qCQjrZ0Wswtii=7PiEF>s}m#_-T05a1Pp3UC_q0xM53)bZ>BsSKO| z9Uz-jWUu5$DOL*3J4HWZm-|e|1L3)oAX9I38?>u|d{3(Q0Vgddll(p4o2l~_oq1gm ztOc#$EZ7W+fri^ki!pAb>jkj_Ffm=s^}*Qy?8`M`yX(xQrrHp-j;vh7IBFVS(OwaJ zw}2kBB(;*?g0ml3+3PdXcwk>O8Jh30V2x=@%@3wHvFczf*oHd@JTf_5=+TywZw*&N zD5Jg5_>S?Jwqd(dHP7YeYEw^JfE}5U*p;?M+71z1ZVBjG*%Z+Z+$bBFl~lj}OFix4 zuS|tiwo;}JEi;5CB)+g@^dZm+&N;sRnDr)kA+wTse`48~t%inbX2r<7ZNydL6p2;UfB&$teeaujb%$da#hX+>vX+75MD26~iZhndZW zu!~V%5Jom}w|?Te-UzXXzd*K~N(^Jf;@jZ$fI@JAPU*A{6SuxQeW`gAdjKTYQzO}1 z@Yex*vg>A$^;9Qb4J6v(?Yi|JLhy)KNDuhAi~3C81Ai;9XH^?^sn1G!h}{E{hD@A< zA3}M8mi*a~m7FF>+HNQRC3ZoOhHsj~sS3tZ+7NX~du9@v(Zf;*5gO!FnS71bq+klZ zdK1?yObN!lHl+0?LF%AKh~OY^Dez8ze2ajUx(KBbSI`(4cTASva&@G{5E6AJ16|G} zAHlegl)f-zT|M6ciITmy?PG^qQ3VcInH_eayDD})Ya9h6N>O(*)_mLCZc_rqds91{Ql002ov JPDHLkV1h|o+;ac` diff --git a/TMessagesProj/src/main/res/drawable-hdpi/permissions_contacts.png b/TMessagesProj/src/main/res/drawable-hdpi/permissions_contacts.png deleted file mode 100755 index fb05e36785dd1468d785c9408081c14c6ed3520e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 460 zcmV;-0WthBncXj zTJmWf%7L;=Tk=w%y0NDz1F9H%&SgLaV^2v2RNOR>YwYo4Kn-KhgVbxETiS9Y_Z=Gj zyzjBgSaNg>$$vYYvE=CZN|SR+l# zc0hZ9LHl+<(ZHY`E1*9u3KgUvo%S0Fnr+(Bvnv8>n?Y3(kh|)#&<~ySxZ>A>M4J+bRoNQSzmsML!wZD{RjvTSHbtx|JQc;u3fgwM@IV_|VY6bbK}i+U$T19Q<#*t8%T z3J=XisT8}(R-^CSO0nN;j=v+c&1O$?FU+^QM=Pqr8;ppE7-qZiJnF@sJJ%u$YK0c5 z^Xk^LU9D;T!xO-4jHJxzGa$^D*j8jc*w#NaYTbwbL>HBvo+HI1_Z4Fqw+Xh{bOgT;YC8a0?`c$EYuDIqbTP)Y+mF+t)obsg=RWE=>uLIFa~{9nIX|%1n&@JHQ6@;T zOa_4ui?qncv=L*)5=Glr zh|wkw)66hw+n7>MGfcA#PA^M!V@iFA-uf`D#4XMlqn;y9t6ffjq*P3)Ckfc$^qE-N zc6)|CtDH-0I>u4AgRm7&MDonhpG^_7oPLM@oyxz|Z*G}yxWW+#HjKA{fP+(6|HKQ_ z-glC&a@0+r#=aDHog)y$|HbKcVQuNJw{HEAYrzwaK(L?}&JB6S5eSC#$6Et|47}B8el2SPVb( zND?`M5Hwp0&^ooGH;A}~GqYDGC#&9MTMS{fq}LxLa!x{68$o{O*5P-hsvR9C_9PrT zQQK)yHAxbuoCd+X^^c#qUk<;HXZPhMiZ)Z}@S}V|BBv^qwt3lb_Q9+7buV}T3K|RvsnAdGwAx`OR&M7r`&zOyU?IdoIZR6 zR-ef;4nC8gxASrzbgYmd_@9(o_^=qIQm(TmVGER0uA{bgM(QeP8ll~plCOEoC1117 zlzdg%X`&=dWV=}sM4c^)tDaY(a@k<&gqI~%E*lKloiD!u;eG&{eRH>d00000NkvXX Hu0mjfSm35_ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/phototime.9.png b/TMessagesProj/src/main/res/drawable-hdpi/phototime.9.png deleted file mode 100644 index 7cb710823ad5a5549cfa139a67a572148c227af1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 129 zcmeAS@N?(olHy`uVBq!ia0vp^vLMXC0wn*;THgYsJUm?-Ln>}1CpfVF|LDZC;M9Y& z54?rGqy@A}JaJv*Ch(;xs?tibB-? c$*htL=Vs~!nt4bC1I=XcboFyt=akR{0RIgt%m4rY diff --git a/TMessagesProj/src/main/res/drawable-hdpi/play_big.png b/TMessagesProj/src/main/res/drawable-hdpi/play_big.png deleted file mode 100755 index bfd5ff765e5987af9f1a6346c470028d37f4629b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1032 zcmV+j1o!)iP)8G5D;z=J|@;D<=Tr*%jKi5m2C0iV`>)bImehIX#t z)7pVD9`NfB5dxoS1a;K+zEv3bw6@Z{hYIuwhtISR6%_ED7`6pI(_vIug?|iVw!zo^ zD3=xZ#|gf)RyB%7v+$d22cOm^bC)M34S^WybA?}xQEA{a9Yb|4@GEV!JlQQ$rBV3B zoc$fM8bq-%0_{@5*S#bIQZFrhrUyRea)Ba0D$K1Ee5UU01pE|-K7Iae z_SQo|1pM1mv{8yf*H$!5)84;3ds9fHmXQ|r(Hy#-(2}zHcY6BB748&#TLjM29GUo| z{g+=0_n&Yk(7RQhh|v>ZGWYS~9j<|9szlOAb>vP0nzph2_RWdw+$f~-6>a>c6B6(OXT%a9%zZFRK!z){ z5|2Btn!Q5GKVny9qG^P#Ijul4zd!{_u1Qz1eKW1 zH#{-vQoH3$g{D78p0`~x>5vwFhtbyK zpp@_pw;n6s{H?d&N2P*4np^w5{+Q(%fQaI#+9N0yrf8HN0?LCitUMTm%Y#uwJ=n2h z7_{hc9Cw$eDrUZ;^Pn*kD^kljY73$Ea4CSHN9`qE%PPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91RGj1b{gMeL>CRF@;HS=F0rF0PBX{G$)zY|4F_Tb<8}h zC;$MpAP-)#^a+ELqs$rNHSH2y^w@}VjpVvJK;4c~=hh^F#(~ows9VrIpiYf=5J6m) zB+!;@cmy}y0%{%V)RGB&yQkbh#Y1l0jP3(}5P{(gD$z`DK zLET)j+-=A}#ZGQrhve4TDwI1y2kQ6@BDnKm8W#G*FMCJ_fY41akK;Bb8eh=SuN2b7)g$ed(S8Y6I%fbSPTSfEMOd zP5EHqq2g5o`fonVaOvoO4;LOWpoO`(>KvCuZ4GEtQW38+pv6I5EI$1Ar~&<(iK`sr z{{o)6PSn>PK)JHbVCulq=+JlUORkLl z!G?geHqz$M{QwzVE|@xuv^exFdszj@OWIU9BXoy00&gFZE6Wa32N|+MU$cI>@`^U% zON8i9xpFTW;~PvJYG@99#hO%HUw?;C*uFbJinQ-qylG4IdmTSMEUL zLx(97l-r@tSi=fH-qm8#5J@^T&f_e90j~~CNE6IN4Z&|Im!c@4pIuK$^u^OS8IU@o z&qavpahKar$29K0BzpqZWb_p^4?Q3t6Axt76A=;(z*R9}Et-J7qZ8;P@0D@hW4Xn` r2p9n)U<8bS5ikNqzz7(Ds0981?!(((%m?8s00000NkvXXu0mjf#7!4I diff --git a/TMessagesProj/src/main/res/drawable-hdpi/player_new_next.png b/TMessagesProj/src/main/res/drawable-hdpi/player_new_next.png deleted file mode 100644 index 60f7d57eb6885cfe4de34b9b12beb694167ef955..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 531 zcmV+u0_^>XP)#x( zZ2|M+sLNP4LVd>p6UJEHvN5qC*-uOdK^D-o^jdK`1a=!W{cv?KkOj2Tu}e%|13OS@ zk;a@Ys4(=POJLVgy#`d8hX$zlHlR&(0cXbYGV<-X-@kK=uEC$W7rl_yl|cK7s#}z&CaA V!|}^R_}~Bl002ovPDHLkV1lDh?85*6 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/player_new_pause.png b/TMessagesProj/src/main/res/drawable-hdpi/player_new_pause.png deleted file mode 100644 index 74e3f9a72a8e2ab7f745d06f62100247535734d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^S|H591|*LjJ{b+9SkfJR9T^xl_H+M9WCil~d%8G= zL~y>H;mCE^fQRLAz>D%P=BKH9XTErnx=^7Ymr1od zJiB&g+UBo0TjX!QUpl4yGXHk1`RjJZe%N|d+x|1ZNnS1A3zFiYj zd`g}B*1vZe7esu;Ot`*Hmvg*&Ly;@clyR%PF+nQcZ1KM>Gp_ph&T;)1^Wq%W{A!yg g$L73rO3-SQ&r98AeW1I?0q7M5Pgg&ebxsLQ0LQju4gdfE diff --git a/TMessagesProj/src/main/res/drawable-hdpi/player_new_play.png b/TMessagesProj/src/main/res/drawable-hdpi/player_new_play.png deleted file mode 100644 index 76ae59c06ce133ba73ca2c9278726a56ac3fcd9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^EFjFm1|(O0oL2|pq&xaLGB9lH=l+w(3gqi}x;Tb# z$R_{z|9`)jz;tFqZDtMz$$1VuOxGK3OySh&QkdbORnoA7r{iE0gM6N1yJmV&J5V2k Mr>mdKI;Vst03vN3*8l(j diff --git a/TMessagesProj/src/main/res/drawable-hdpi/player_new_previous.png b/TMessagesProj/src/main/res/drawable-hdpi/player_new_previous.png deleted file mode 100644 index d6ec6cf6abccdd27910fb6b0699d0caf88d7daa6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 549 zcmV+=0^0qFP)&pG$q@B7So)8r`>LWBu~34{rR z33#7C9LFWJfyTVwEbk3!kngM#UuY(;mpO+=ghtU4>Nb6+6{Ag*j1w0_jEd+gVfaMe z)5x=>(FN?cTi4jNwVho8G{^1(no3;NM?RaVQ`2TZQxE>831A00;LHW;N;z9h>D9H` z>M9QffFszRp#c|rZxaQu6>S4|=L#tw(91*t?8jTCsP=QFK2ac704!@l;-xoH06X#9 zM~h;t9V(9=$VtFXQLi?j@pFFkK(1nT>l0F7ok8)~Q}Pj>%+LVMG}qkF0Nny8)`Uv) zat4i}=n&&+^pbW1t)4TefB<{LGK9{h_7N(e0tRdaEs(CEs`NBN4b(sZdrUrz?oCf) zRR{k=(GL1R&fx`AsDS-MyQC9Hz@5SysG$N@z5?=9I5NFFt9MX=0=A0QN#{{T zdRDwz^^dX{&^POpU0d7PC9v`;GKj7dS3Q$oChB}Ce{{$@y|35hWxRD>m*wNtVE^_% nAo4wja4Jk7Odw3)-%Q{e4L-l#tT?m500000NkvXXu0mjfv?}x+ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/plus.png b/TMessagesProj/src/main/res/drawable-hdpi/plus.png deleted file mode 100755 index b2be938beb95dcfee8f1c84e4ffc4ae7ce4f7367..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93 zcmeAS@N?(olHy`uVBq!ia0vp^(jd&i0wmS%+S~(DDxNNmAr-fhf1Gb%c4FX*Yzxd? qd@EyluZ}~0?&6PTt8xo6nHe5D&f7CX`L{SwJ%gvKpUXO@geCw#lN>q# diff --git a/TMessagesProj/src/main/res/drawable-hdpi/popup_fixed.9.png b/TMessagesProj/src/main/res/drawable-hdpi/popup_fixed.9.png deleted file mode 100755 index 80449d60e3e82b73ec4fd052bf024c23b7e36c95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 493 zcmeAS@N?(olHy`uVBq!ia0vp^NkDAG!3-oPeEoMCNL2^;gt!7}AovfVh$G$H+}^)` z|M&0T|Ns93$+vIczIycvQ|q5Ue;z)3c>n%=H8r&d4<7vf{Toe9#wsTRppa%skY6yv z|No3k%q(mioLtUDqVzb}>|1f)sxQv35vdV|Wb2XNJlF~LXF;%}fe*sX_4^J1z zkP61P*ISF;8t}9{jD2~}X#aobX_5De*1k-+@JjQiyv>i+#RBq5Zo*-6Z*ui``aD`L z_70GC8ZYZ^pY$`3RB4O)r@mTvTCdN7X$OQFy_mXL0^J)vds%nhQZwXq z)bP5X#CTQENomTx>tbHFg3NTdmAs5nAIon_thPCr@%xmM+L9eNcHXm*lE1pnOmC6& z%l~uU?K`{t7|Tl~C6UTwE9EVsvp1StW?K?wZ`M5D?$7O-E%T4`E6)&I@g~0dE#roo V;_VTYVcDRt^mO%eS?83{1OWZAxzzvw diff --git a/TMessagesProj/src/main/res/drawable-hdpi/popup_fixed_top.9.png b/TMessagesProj/src/main/res/drawable-hdpi/popup_fixed_top.9.png deleted file mode 100755 index 0c95c17440f577883aad79b4878ac064e8bc1fbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 273 zcmeAS@N?(olHy`uVBq!ia0vp^NkDAG!3HFkYxDgCQa3zZ978G?-&}O$YBrE?c~~*~ zj#I|oC2_}=wqJ1W*u7@iX3bV7mfKQ_wa#)Wf9oADt*l(N@bY_=m#;K_c(SlCG9sfR zt7pHy`)1Os*rLs^@7`_A=eBR^$h-1CujFG^$F%7G@?6HWmRM y4uu8=rVb-P0S5sTWa{{%c*zFoml^$xo(yV&xrhFDt2hGv$l&Sf=d#Wzp$PyLOkT|Z diff --git a/TMessagesProj/src/main/res/drawable-hdpi/regbtn2.9.png b/TMessagesProj/src/main/res/drawable-hdpi/regbtn2.9.png deleted file mode 100644 index ba78524359068a911f7cd52272501b7f1aa29fd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqEkdg0004yNkl5Cz~d#I=xM3@D~r(Q3OCLJC1hEW|*rWxUu zn=X2l@-v`OOuAv&^K>3m@k}$qiYfcCGa|wRV={QSxB z&2GSW8s~5PaNXW=KVwbHocr#%s$nGlV_p0LJFCC9Tno-Q00000NkvXXu0mjfxKrDW diff --git a/TMessagesProj/src/main/res/drawable-hdpi/s_pause.png b/TMessagesProj/src/main/res/drawable-hdpi/s_pause.png deleted file mode 100644 index b823dbc97199448cb444bc584efcc71eb00a1929..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 149 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9S!3HE7rssMADVB6cUq=Rpjs4tz5?O(KA5Ry@ z5DUTNAOHXV4^wbskCxoPus~@}mZYOv!o|Y}I9Ogh`fFVdQ&MBb@0I{9xS;9q*&4&eH|GXHuiJ>Nn{1`pL@DE zhFAzD|M>skUR&Tblc6#5QihBZd$d+`m$2)^Lz=>=9!W|`#1pYIK_#ezv;PY*1 z`OYM&ktpHiAujiGy~9o=g|sH=E_cI?LD7v|l8$UfO(h3>)#fK2IdP&w?xD*kUMr3( zRjg~~M(j@rbl+;Q*efSUcW$66dw_0!lNWE|B4sIWoyHc2r!&ST6olbp7Sd3f1{6>{O_-E9(k6w8*x*kAGS4;)kmtfaf6|jqGQ*ut=fi`EC;p1I zlQTY2&XN4_DygDMnDHPNS%Lh0o-U3d z7J|tM5|bYM|Nmdm;g3j%vF0a+3k`M(ZH*on(#I(hYFs7{q^@k( z?_kv=bXcX4?M{=_H)#*{prjc(7aD#C9Ij)^)Sr;pqri0HC1cP@hchgXgc)x%W;sZ( z#2FbGc^%-XViTFb!adoqfj6n~6*to*MhBms?v%z?35` diff --git a/TMessagesProj/src/main/res/drawable-hdpi/settings_noresults.png b/TMessagesProj/src/main/res/drawable-hdpi/settings_noresults.png deleted file mode 100644 index 7055fed6a70c0fcf4db18adf51ddcdfafe7625bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2408 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 X`J0!3C3xor00000NkvXXu0mjfj{0=W diff --git a/TMessagesProj/src/main/res/drawable-hdpi/slidearrow.png b/TMessagesProj/src/main/res/drawable-hdpi/slidearrow.png deleted file mode 100755 index 1085485eeacdd7e9ab81b04f2c79d2de620421c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 197 zcmV;$06PDPP)1 z!3M)X5XSL+k`h8Gx#pB>2&IJ3x9J;!Q2O7yVe00000NkvXXu0mjfSnN@$ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/stickers_trending1.png b/TMessagesProj/src/main/res/drawable-hdpi/stickers_trending1.png deleted file mode 100644 index 13bb207ba52893b03f24b15780d33765cc1493b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 889 zcmV-<1BU#GP)pvAD$X|A++I;SAh^k5ErbbPnd45dm6Y z7?P4;D5mjd6KYFyBupPR({RYxF4KMnCHMrNL38bctuO@}FOnIAALiQ2w6DVUjgOWx zBSA-C6(k*RLT8FwKEnj=hh>ny!$3Zf0%j$6H!Ohk3yuZ2hcEg|C_!&4fB)d%NnvpHQDh zb}eS`1nn+&9(22mZ{{ZX?}7Vp);imS`pv)-)6T1Tg^91hG)cAkAU2`Bu5*zu_M$h) z@i_11-of#Jk7E;386oN0R99Td82Go4X7#zb<&CQy@jv?1B)xrQ@5j+UDg~R+HfNx^ zCP^wQqUB98GX4749yaH;*=|mL`?mese{r2Ewvu#?f%9PfPI7({+1WFI=~Q`=r~9jmni4bCqzw#AJ)|k1|%Oc%$NbBSkfJR9T^xl_H+M9WCik1dAc}; zL~tf2NUVJD|Nnmv82(1z47YB!;Z@v z`Kp{+7GD!w*k7P9$*hX$&q}anJwxJ>z3mp z9lQ-cLgTe~DWM4fbEIay diff --git a/TMessagesProj/src/main/res/drawable-hdpi/stickers_trending3.png b/TMessagesProj/src/main/res/drawable-hdpi/stickers_trending3.png deleted file mode 100644 index fc578523df63d2621aafa1027a8383a1df349aea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 980 zcmV;_11tQAP)DomDx^Vw{6k#c)P0<~}n9>X^X(_b2=U;qwQ zBr^h6K`%rlL072OXdQ!=q=|WN8Nu2KHVz$5&?V|qFb(tY9d^ThI1HEJ5Lhi!c?3h; z(ly(dx+Ixy_zhM$Dz~A*7Yv&Y7zfRg)e9RmIQGG+iKKE6>O+lV8u2*+AHeE8 zm2^qr&!Y|6Mm@&Ow_&2~a6HkR^s>iwR9md^ zdO})tQZ9+TY_QeplayHa=1E62`~YbpMew1bOFo~%=a}`O9B}>IC;c29O{O!^?Q#R9 zsk1rGVn1hmuDZT%LY+>>E2mzm>Pr(?6H$_zkhXnkahu-QpNqp~>bY%=rk)8)Nbjal z;W!L-6;drcH}|Y@p&|H3ubQaU=Z<41Bao0@j*`wbQR=3nI;u0I{QzwzL)z8kj$_Bp z)Hud^V@o=0Md=D1*TD5V&-De6?iY*F-yF54rK@1Y9mkHnZo$+(G_$Q8)O#$kp4g^d z_VUH=t{G2-PM!t1&yan{)OpJESF*6HI>#bfwgb5dy{6F~o^)F(CT2wEsf%U+yZj56 zrG&_GftGj1=q66JrtT|NjKQkU(CNQHeV4g@?z9K1Byk6<`h&gUR~Wa$91MqB1Y5Dw zzN76x(iuJahtpXDpFq-?$i7N~QMYhK%s~Y=>h*@g@Vd38d;`(Hz#A=SK&&pX$6_68 zOOH&@vg``OCt#(|m@OwojI*HQu%r(Mea$2j#yWIOgOz4#)3*=b9?)@E(hO3qo~jdTCiT=6CA zneY4U%q*LvcvJrtr+})bRlxZlR<-`adJ2WYjPCC46TQ8?rx;^z4a2B#AuO>i_MgUa zltX!Iye1Tn$Gw`SZPIo90VfFMQ4jT9fz9Xh(?o0C{^ttL+yVjN2;)U-;Vv>nRqCJ2B+AGt!0sZsb^oee>qcOwnaE?x5h0980hZ z7Ay#e+s&xYG zEh=C|ZXEd(*kHY0Kd%B7xyYx$HjDA|K?N*wkxzk*Fve;sV3CV_3T%`s6!IysF@-H# zM?R@#ySlnQs(?i(;HkZo(oDxyUEKb%n#>k(Em2ksF}MK_30B>v!u$+S}Wg zGsYTDg2KO}qhkf~%)ZY;evF|TH*Op=41+lV3SZIv$B=_Os~?OZF^zoq@L`J+U$^ju zKXPpOx|R36QCF^9Id0dGfDioOEB!rvf+YZtOr=t5%H{H7E1;;KPN&zxuaBVgKQgkb zhJ-?)3Fpq8J5sGyUr``YUer5^`tXr{9w&dy`Q=qRLQE5q$>fIT&!4wtv)LP(rhV3R zy#X*Rv5oyWj&dk3>qX$>#$QCpBkzY{*+OH)G)_#D#WYn+)8ulp+&@N^3(I;QCI4sT zqcJGQUPQj$#pE&~_XlM;&;LK){T24thRi$|oPmxR1`y+L4+8*Gii~1i)Z@wk0000< KMNUMnLSTaZ)?`Ki diff --git a/TMessagesProj/src/main/res/drawable-hdpi/switch_to_on2.9.png b/TMessagesProj/src/main/res/drawable-hdpi/switch_to_on2.9.png deleted file mode 100644 index 6dcfd7331c93ef06581fd6967ce6fbeb8c89152c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 728 zcmV;}0w?{6P)3qo~jdTCiT=6CA zneY4U%q*LvcvJrtr+})bRlxZlR<-`adJ2WYjPCC46TQ8?rx;^z4a2B#AuO>i_MgUa zltX!Iye1Tn$Gw`SZPIo90VfFMQ4jT9fz9Xh(?o0C{^ttL+yVjN2;)U-;Vv>nRqCJ2B+AGt!0sZsb^oee>qcOwnaE?x5h0980hZ z7Ay#e+s&xYG zEh=C|ZXEd(*kHY0Kd%B7xyYx$HjDA|K?N*wkxzk*Fve;sV3CV_3T%`s6!IysF@-H# zM?R@#ySlnQs(?i(;HkZo(oDxyUEKb%n#>k(Em2ksF}MK_30B>v!u$+S}Wg zGsYTDg2KO}qhkf~%)ZY;evF|TH*Op=41+lV3SZIv$B=_Os~?OZF^zoq@L`J+U$^ju zKXPpOx|R36QCF^9Id0dGfDioOEB!rvf+YZtOr=t5%H{H7E1;;KPN&zxuaBVgKQgkb zhJ-?)3Fpq8J5sGyUr``YUer5^`tXr{9w&dy`Q=qRLQE5q$>fIT&!4wtv)LP(rhV3R zy#X*Rv5oyWj&dk3>qX$>#$QCpBkzY{*+OH)G)_#D#WYn+)8ulp+&@N^3(I;QCI4sT zqcJGQUPQj$#pE&~_XlM;&;LK){T24thRi$|oPmxR1`y+L4+8*Gii~1i)Z@wk0000< KMNUMnLSTaZ)?`Ki diff --git a/TMessagesProj/src/main/res/drawable-hdpi/switch_track.9.png b/TMessagesProj/src/main/res/drawable-hdpi/switch_track.9.png deleted file mode 100644 index 977f3f25a23960f3cb02b7114ebb403ce5444851..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 321 zcmV-H0lxl;P)00039Nkl~L26~|=%SE|qpg+nao>t3f~h_3V!2~)8XJh=u^i9^II`GKud%58t6^yEaO`IC4-JCwoCW3K=f5>~_xsMp1IQPI$b?*cJJ}~qB>%NHb zfn8VlpLgu}`E$>g2C@zlmo-gX*LnYHoA<%nrrLGOXxIHX`nGJ`b%QtUziGlRPnE2Y TC_mJn00000NkvXXu0mjfv%r!= diff --git a/TMessagesProj/src/main/res/drawable-hdpi/temp_starlarge.png b/TMessagesProj/src/main/res/drawable-hdpi/temp_starlarge.png deleted file mode 100644 index e3a523f57fe3c140331593bae673a35d4956c8f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4126 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 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/video_pause1.png b/TMessagesProj/src/main/res/drawable-hdpi/video_pause1.png deleted file mode 100644 index 15dda6cf7d398a6059248aab988192b81c9e9ffa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 459 zcmeAS@N?(olHy`uVBq!ia0vp^At21b1|(&&1r7o!mUKs7M+SzC{oH>NSs54@n><|{ zLn;{G-g3-q3J_@ve7WFm>+k!`o8Nh+LEH3#KDeJU&I zW7{jbEj;s@;nZ!H)_jiJC&&9M_D12-$m1cmyf&Y!UjO>X<~!@^C)};RSDkrF7k?;$ e0`P%rqx>F~zgM4&SEU1Ehr!d;&t;ucLK6T#>$Zac diff --git a/TMessagesProj/src/main/res/drawable-hdpi/video_play1.png b/TMessagesProj/src/main/res/drawable-hdpi/video_play1.png deleted file mode 100644 index b33b9f4d4cc251f0661bd77c90f558665ab22802..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 727 zcmeAS@N?(olHy`uVBq!ia0vp^At21b1|(&&1r7o!mUKs7M+SzC{oH>NSs56Z`aE46 zLn;{G-rDOg;wW*vP^?E$QN%>;SR0qumQ72J`2BCx-Wn{#y>;>hf&UENx~35sD{V_k zZmckr;?|ND?qF4V{$5k<=Il4O-@Ki)<9zuf_3F=6XVTTn@4Pv4W`ckN10xH5B8sc$ z_+y{KrK#n+p0cu3I)98!e7QPl%KGP}iy9dCeT=+*pNjXF>3XK7uwyfaamw01JCit9 zvNSFTFZ{c5*Y2*HEs1~4);9F4ezW-DviOy4#{E~bK0RMmzwm*5lhJ*t1DjsOuiCMG zhPL$e+{&2|hd()QjV|vFH~H9BPC~{OY&LM^no?esZcenCAZS zH>c~INbdfX?{mdh1S@QP`73U2 zm>$!$)9;@|ANr$lMfRxE{0))wo5Oo^Pp?_E@Axj|-oFN?H<{P&X`e1SYx`z-rro>d z`+sVU-TQ5aQ}f-m3}l;)eM=7%0&D_(O+DZk%APP>BT5|jSBPf@HkOE#b19HC}-KKaQHZ$&`^lkLrX z{30?XGlZ^~8O3Q?bO}4R?J1b0#@EfdWmPt_ul2bK|A&?CYq|{ZP(#h5r08W`{p ef7+S;Gw?24vq9q8nRZ}GW$<+Mb6Mw<&;$Vb=RU&# diff --git a/TMessagesProj/src/main/res/drawable-hdpi/voice_volume_muted.png b/TMessagesProj/src/main/res/drawable-hdpi/voice_volume_muted.png deleted file mode 100644 index 28833f79ecd7875744013ff2e88a4cd061c204db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 831 zcmV-F1Hk-=P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91Bme*a08Uq3P5=M`sYygZR9Fe^m%D2fK@`SwlZX!ZvlEMmSc_JIk4_M*1Rwbmd{jY;fU(iSMnqFuX`_v3;-k>QM?b019EeEhcxVoMfF z+Cs#Oct!ua*af>rJMIb6PcHxx^I)eD!}lWSW`Dpr%lnr2I}O0P{{<*I0q&?e_6Ed6 ztdT3c*b+iKsescEF#Cyf5BTTX{}QpUQ&Iu?e#`VF+2$V&^NClAAfHsgYY51ejc{2@ zJ}QD-Cj$QYayXKM;AbvYa0i3IC4vhfv6uES#O+{oI)gf({1k_a9j)w>AvIIXMGwl%s-xnE*aAitq)5ry^HNnK`Sw+qP{0p|Iy z(^vZTV%M16zz_<)1hTuMF2`IiqV&&h)U}7sqxiDeV>+-M1v)nGaInXtaxKQE5kcYo z;5UfbI*Id@>_d`q$wVBd__vsX5MQJ%{gM&iYy$C{qcKc2kDQh97Yokb*y}+5XyjuFY&{Q48lZ%*wpstZ-A8~e@2z)!t-LhB^<{zgg zKG(Sq$#HNMnCYu^4Ct}5E9Z?oF>(t)_6uyy=R5C1;w;ehvdj*Z5n|vxI8c^L5`)ZP zum;R@le^G189VnkQU}5lEVK`(UFB@_rICgEMfx4+cObe0e*x3^8`*6@>4X3P002ov JPDHLkV1gtubr1jm diff --git a/TMessagesProj/src/main/res/drawable-hdpi/voice_volume_speaker.png b/TMessagesProj/src/main/res/drawable-hdpi/voice_volume_speaker.png deleted file mode 100644 index 908294290ff07de390bd11b5ca0d91f88c840814..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 679 zcmeAS@N?(olHy`uVBq!ia0vp^20*OB!3HGHyY2)@Fct^7J29*~C-V}>aY>EvO!M_+ z&;qhK7#Q0#8CXC{fLIEM85o!sFfuR$X-1IP0w%bu!2)JDTLq-hFFe+dfq_ZT)5S3) zg7fVROAls8k+#ilidq@T3s+3-Xk}4Mdfb?xD!9f~;K)7ZgMI=!Ygil|tGPFRc#(7D z-0Bb!7tiG6MD+}1wb$lG+Ris3lgf-ZcQDuAyKQd$zSh{fdP0Ow)P3f3k@2-Gb63+jQ8ARkgFU3@31wESRLdZ-z_%%BW+X8LqeJi9V?Q zqw*>^srwlBY!8kE^-~%P(tq?SnVYRUGTrye<);GXx93Y2F!Stkk}dk6S2kt#H($AE zav&Xwj5cTtGNGH694(v zD^mY(T0gR$p-_8GZNY6PW1)A9)+fbwUObrf$Sr=tEGhfMyS_T#_GPrY9_TJy_haM5 z65)>1k0PZ760=^Y38*cM36_wp6(&$+8=l~Oc67?a6SAND3N%&`njxgN@xNA D#pe%5 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/wall_selection.9.png b/TMessagesProj/src/main/res/drawable-hdpi/wall_selection.9.png deleted file mode 100644 index e6fb5125baf8619fbd67daa7f532d7463542106d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98 zcmeAS@N?(olHy`uVBq!ia0vp^f*{Pn0wgD<^cMmtO-~ockcwN$2@b6P4+_ZsInI4R wYQ-v+cIFk!pV;r6V!&gsdcmZL+lYZ-i-5#8m90;H05vgqy85}Sb4q9e0Hb6ax&QzG diff --git a/TMessagesProj/src/main/res/drawable-hdpi/widget_check.png b/TMessagesProj/src/main/res/drawable-hdpi/widget_check.png deleted file mode 100644 index 3c1ed349b186bcf08040e080ac64e245404e13cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^qChOf!3HF^2u;-kQjEnx?oJHr&dIz4a$Hg)JkxxA z8MJ_G4hF{dOa>N^5+IfWVg?501&j>LK$;OGwtxvPE4qLg&K3eG++}@E4ycUT)5S5w zLNGZ&;>>}?AV~B;| z+K|0|OpXHc?lN2ZtkBFcuxm2==d$uDi^chCN6bGMRxk@kKWK1SJC$Yai#J<0E?Bm} z`Q5dj&&p0VRvm2d{8m=}Y<7Nndb;05{Y!63{4|zvyFP0;tI91Y8Kl2tWo_hod;Q%j zw=BB-Hm~0GqpoD}jBEcRv`tS`|JoI{daw2EIUS2{EZ3+@a1PWoRdnU`{c_?rKeyg- zm*puhj!6V3+?`=ld+g%gLwYVkCv~Jg?ep;ZYF>0NbZgXK76qQe$!GSx|8DrbYVX>Y zI=ddPSSbIz_@189>4O^AH>xzouP<<6tMbTsVHbH(EluWtU}#k0bIz1&-#xsOEY)}L zDS1vlAb5R4_`xt1iSD@y^B-KOn0v&Fw_LXS{2Z3kl_CPg8NZMGSvBc~&-2v9pBdSU zp1eA;_ncAOx3gi?RTCb9mi?W=x%_*CE6*?XQEY;jy zM|o=$lyy_jYipWaT>G!k?!ko@vV~8(TsN-uQjYj0Xj7b#>F`eW3YXTj=askrxN`Lz z726@q_FzKFV#b@9JzlOy(_GnRug>}raevA6f=^Mi#9St9{o^LI>WTK>@8{)jn=kqD VuqJHUbx;Cg@O1TaS?83{1OQa-_45D# diff --git a/TMessagesProj/src/main/res/drawable-hdpi/widget_halfcheck.png b/TMessagesProj/src/main/res/drawable-hdpi/widget_halfcheck.png deleted file mode 100644 index d3a2666b7c3ba153b9360ddc146f393f27fc1445..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 474 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 Hu0mjfsq~4q diff --git a/TMessagesProj/src/main/res/drawable-hdpi/widget_verified.png b/TMessagesProj/src/main/res/drawable-hdpi/widget_verified.png deleted file mode 100644 index c50e2dd5259bc3a26aa9dbea35f10a11dbf5499e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 760 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VV{wqX6T`Z5GB1G~m(&Q)G+$o^ zEg+kNfw4W4fd!-lh^2s-fq{7eBLg##W(0{XV1mnvEMP{kK?*nB{qUE8fhoz;#WBP} zaBj%?>|jTMe`)b?lNC%gm-w!#__%2MEEmnGUb&)O`vX?w_A9OU-*990g0BG^J4E+- zeN@>d_~xYibhark4lYs9XnNqd!c%G^*Cn&F`?kN^H{(mHXVzo6Z)a)M8 z_owh(TZ07CMQw>0->Q4~=WKT9oZi=1ASWSupH_c6r2>T`bFx%UFX~xFE}5a$*cF35G>m}#K^WB`f&wQCJU)p`iH~fF;rtXvS8f$JvNm$zOtiG`>(xB3yWBPKd4f-jI z|hDtDcI5)|~J z@Z&*c=?d?(%8KRZ8?VmJ^$Y8p)@!L0?-h|}q*~0_v$XEf%ju#iT(5T+?2k;7zIZ5M z&ZExv)w$jGCm(S)_wn`0if*ueIq}5VS0$@l!*^@4e9M{H=P^Ox@xyB;j%goI zwA7+IZi|?LOZ%n&r70i2p2>J_x_y53t%laiZ|`4Ov|Co{)Fz*)GxOFfhPWO6;(z+c zXRm3JYfj3)6tQuefAEIo&7O5WjT-G@yGywooXiMn; diff --git a/TMessagesProj/src/main/res/drawable-hdpi/widgets_dark_badgebg.9.png b/TMessagesProj/src/main/res/drawable-hdpi/widgets_dark_badgebg.9.png deleted file mode 100644 index 09d1dd106a89f1bb85f16839104a4be1ffefe4e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1009 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91Dxd=Z1ONa40RR91DgXcg0Mr_#3jhEETS-JgR9FesnLTV1F%-xBE@_3* z4u}DAAwqyCR6=5)s1*ZJ2gFvvK*d_A?5v%th>4ZG6foBb`T5&>So9d@uwRNyrV0 ztT$FX_Tl^H=AYp94R22e3c&KO(lg;WOFXw{8@lVDf;Dp}EbB$|LhR)!fI9<~QqrZ# z=>>*+E`>~Xz|*z~3Cc3`@{hgkH6m)arrU!~P0hs$M};+>-ubrDyJ|q`_;`F_XJ?}n z@Od!k#alB;aeVTYZTNOTC%wNSu`5O+4-dXfX> zT?YR* zGn7XLJB-@nc15c-jpFP!1rj3#3z+n%tHy*2hORUv_cAF^T-DrLkST~R2bjQyl3Jt5 zn|H6t^52YEm@W-PM<%jgKW1E7TzU;nRAJL=)Hak8Sc(mxQo9c(!fH0HQ4<+`OaLY2 zi216`DQGrVqwp3@O%*m5lwDd=IpJ=DO@YGi<`qyh50;89TV=xsVDiSD6+T}VO@igq zXf?b4`6)BiE+q&Km;?zHFO$1QQOOYuT&+xj1q+xoPZd<%`#6H3Ukp8G7S9deH6{&( zFbmuOT^?4hToGpR%CBk^l^6l5eA(Mz7|&qvY7-1x=TC4|latf0+0gnF!tu*%EKxeU zxBa9p9#yk?{Q(*v7Q{o?)pY~QStexHK`QYL8r4w$MMwv*hyfuMG!V_QCIjM5N_ReE z(%RHHVB=%rh5`8fRdjSzVe894~^ f?;F118J*}KDkop+{PU%h00000NkvXXu0mjfMANQJ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/widgets_dark_plus.png b/TMessagesProj/src/main/res/drawable-hdpi/widgets_dark_plus.png deleted file mode 100644 index 9ace8d361f457dbbb363c7c1acc1d213f8575278..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 425 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uw}2VJ1}Qw{XwC{$ChY0r7~;X3 zoFI|eFj0p8x!;qwcLUdS^v>wc{QZ@@Q56|IaSgoFc|iv6g)n zr;&8nzUC{3bdRl`$Tq2<+i@$8vhv|5wuB7Cn9s7^WHgqRJ8r<3^y11Uz69Gw zhRwURJj~eNCAS!UN$idCnP0$m%Sh@$9~oafZE`y5&A&hVv}`SeK4T2p4a qVj82^kK2x78$6Y}9Fufpc4jeb*0v8`q3pvA3MNliKbLh*2~7YUpn~)O diff --git a/TMessagesProj/src/main/res/drawable-hdpi/widgets_light_plus.png b/TMessagesProj/src/main/res/drawable-hdpi/widgets_light_plus.png deleted file mode 100644 index c5608819b8605c954376d82e5955a79b6aa1811a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 404 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uw}2VJ1}Qw{XwC|x{&~7MhIsJ4 z4Kw6BWWbXnp!I*nmHjP^oMshqlGcV7_J_Q(e<4(}qR(c*iB6~1D=8aaTa}-5-MeMg zHZz}7ZO033d@h$9zOyWI*S6gFjTXOeaK2E#w7dA-o+s{I;!g~d#V?=P>r(Y=TCuP2 z&qkDvF;-@VlD?h(j;qY1SAdW!es&w9C#l z>ASy?B}!TUNcM_94>f}R@4a#z5^5@p00i_>zopr05>p~=Kufz diff --git a/TMessagesProj/src/main/res/drawable-mdpi/add.png b/TMessagesProj/src/main/res/drawable-mdpi/add.png deleted file mode 100755 index 9b48783a3756912bb0e9713463c43b8b718feb18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 83 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh0wlLOK8*rWQl2i3Ar-fhf1Gb%ab)N`Z}3Cq gBLmYU=acgpER?=;Rb>F>r zA>eWnyVhrRrVsY=4h%A^0uBuR%mQ8~Qx|x29OmU}sW|JPekA*Zm13TA7-!)frB;FC zrlA~}uYCCq#4)@(;Np9^ci+Z*qx91yC*_#y&DP}pkqBD+)|m0X@7k)0bf7C4JYD@< J);T3K0RZPwO1l66 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/attach_close.png b/TMessagesProj/src/main/res/drawable-mdpi/attach_close.png deleted file mode 100755 index 36742f870bedcd6b194d3b6b0526390945024327..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^W+2SL0wmRZ7KH(+X`U{QAr-gYUNYo!4G?He6#H0m zEkXXg-;Gw?6>AO)sjRQ>3=PQ2kSV;&A%6Fa?vp=nRX&RvJ06fo?lC-ePu8w~vcN>0 zsfkCvH)>r}oVd8?41?N|?N_4ok3H z@YO+l%YE+_%$o9)&D-?Ul!r-&|JnphTWu2vG*#mB4W`nF%YR;dJ;DieA%mx@pUXO@ GgeCy;!&YVh diff --git a/TMessagesProj/src/main/res/drawable-mdpi/btnshadow.9.png b/TMessagesProj/src/main/res/drawable-mdpi/btnshadow.9.png deleted file mode 100644 index 761af80c32d345c7d0bd54d8625fe9ee62fcc27c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^S|H5A3?$9pUdaGb5&=FTu0R?DjEzOqt@*Sq|Ns9l zr0p!A?HK#nKpQB|Q4-`A%1#gLVui-KEA7ThS4~~qq{4QJ(L{Jrx-&zk#UXyP S-9ghp7JIt-xvXNS%LiDo-U3d z5uC{h60D0A4WyWW#0{qh|NsAIa@fP$QO{_o`M^BjW1fQ8!V~@u%u${jMZ0g=m9R5h z&0zZIso>{4J=sZ|;Zx|wj)_Vwi{vv_>IQrcR4`*s5-(}qV95~6yRyb@2HS$C3mv`z z&1mUdcvx?w(@j*yye&}(D3tM_k^bkty@YM*w3i`$cVCHn7_BcGRo?K z_#H7Do+zsX@eB9rE8ehqUp&Lu)6=8gV77$mqkK)@f>!2#hjm!2lH?}vp5mRKko3aD zjQx&VxQmj!tNjJR1x+W|I`o-7)-|Oua!+Vn+rzP|Amm^MM^D><42}Rx76!w<7kBKv SKK=y;1B0ilpUXO@geCy1Yoo8;{ZzA~jdpn$JZMfutuuq_^K^)4oL3c&LG9 zfNV05%ajT=(1z*N!#3uLXAXNC;G`?qZas`GPdsjzL$_@mJTtszFc4SC!-mk5Q5AoK zAMunI6Gre-#Gij%TrUaHC22srhZR)X*WLTe(ni{Fyx#iu?s!%XU696W-1a0jm3T4LD@@_t~>14DHLh71ei zDrkbQEY4dL=031*DYO}{fRMN;ubF0Zdl=V&Ihb1DMgOGOsw?b$7r2G)od0u=*ep1e z+;^_0e!s*wR=o($K__Jg=HshdjEGNw4R8UTfNjT2x^7)pz~ak2L~s-m{q^()@?XQ; h9hC&-4*bO(_yC-$&l_MV7}x*+002ovPDHLkV1iN}(}@58 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/calls_back.png b/TMessagesProj/src/main/res/drawable-mdpi/calls_back.png deleted file mode 100644 index 8ee8b5aed4c9d37e101034706f48489dabe315a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 401 zcmV;C0dD?@P)q=y3r-0~z?u+!V; z?7%pundOAy4rF<>nwr`yMn*>FU%!5x-??*VA&~uxnVI=Np?C)+(n*sh-3ID;M@TJJ z`MrDhI>CY+WEeT%^5x61SPh2?GU1a1`u;i40Z)+BfZXtx6#VDUpC3s2NoF!HT)0pV zXvhPw&42$s1@g^+rU(JC01=oUsD=xODFPUdShZ@EG0;S2icBR@GrA+542UD<&Yi1| z6deQVh=pRZ- zVoGyJ96u^rr!;%RsqqNTqI~vKoiKciC(_ON2@lSI6%T}wqph>$hWdyn4Hx2!0Am54 z8knm{XP!=>UQDrzHqK#I1Y(Ldby&x)RvEtHu`FFWA~>ibwDdc1bH=AT_YUXG5=ATp zO71k4#Dj)n5z3SZ;}0DbcEcIJ;%PoLWrq;YE3-J~jks^8qq+tR3zcRQ;XI5dVNGSH dUKw>_{0HYB0#MZuY?lB4002ovPDHLkV1j<;a#H{R diff --git a/TMessagesProj/src/main/res/drawable-mdpi/calls_mute.png b/TMessagesProj/src/main/res/drawable-mdpi/calls_mute.png deleted file mode 100644 index 1bc81f93d9dcf23dc1a706b14dadf350d9ebdda6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 508 zcmV!Oq4`ZS2%W3oCzvSXzjpHkOA! zz|Kn0;=n(ksBoo?orNGAh~O9K!TO9O%b4AjzB`K8(D^8%(PatUb z0KzcrNvJL z=fgMR3Y^eQizqwmB%Dvk`KM^SXSVu{Uy+LV0k}1J>l*&uQYz4)6%qLfFuP6?QBfz6 zuK*)r-<-Gp9U|fe@)ux49HfY-rTjtvG!5n6j~D^{jGGA}fob`M*y42!S}A0QT;L?(@O5sG)iHZ;Js zClaS7nV$#|M3XWsnP#u}S?D!$u@_TsBC|0KhmC;P3rJpzSjeoYE<_V~g2f(n-j2yz y5r;OHxu?k{tfduZZUX+?n6$M;zBqx-J%Jyu@JJHl7-_oz0000}QGe!fwOmeMY)NL23ho!Wv z_T}~7)?;4|s7K_qtW3UO`by0!b1cKbK+i3wr5U&C41+s=qHa05dI?u2F59ueKNh8d zd6}!0^L5At%hWTWC_UKW1PqFSo@~$KPmCt#A=$-X^PZDiwNzuANv;))y9Dlf;z;}` zhe~g?`C0%5X@Q+_pl+6w;pQjcs}l6oE`9omwoJdnU&QzC2jJSUN|x`*Hvj+t07*qo IM6N<$g78JZ<^TWy diff --git a/TMessagesProj/src/main/res/drawable-mdpi/chats_unarchive.png b/TMessagesProj/src/main/res/drawable-mdpi/chats_unarchive.png deleted file mode 100644 index 3b834d9ec4d2d18182f1099b719ba3321d2afe15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 441 zcmV;q0Y?6bP)}Cvg0ygRx#wj$DEz>&-r(Toy}zaLxf>C0E55s zt{4^I7H(i9RZ|S6;Sr*^BNL~wv$0n`O9>yg1ZCRwqnSC!c1PD2OGhSe*j5U0{iUi>~; z@R-;2m4+TY?5)~{_OofSB9HXG$sS3|YEtlR$Xz+7a43tO@@?72y!gEoH((xI|Dm$4 j$}6zNMmEhtYd?Phv@KVSD(0bf00000NkvXXu0mjfK=H$J diff --git a/TMessagesProj/src/main/res/drawable-mdpi/cloud_big.png b/TMessagesProj/src/main/res/drawable-mdpi/cloud_big.png deleted file mode 100644 index b0707229822c278b541ea6fe1936455483b5532b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 428 zcmeAS@N?(olHy`uVBq!ia0vp^20*O9!2%@z-8G)hz`$7S>Eakt!MOF{ey`|4iQ^CT zr-`)iiOFbf30NAucOswGjWPqFYVoeMO;>!aB23WeG( zJnoq$BJh0bBLi0@)+0ZcWuz1aIPA#{len7u<>8_RmHm}#>m!c4GRkrP>aLq3^5C=Q z^chDz8RMKM{pg&`v?r^ilNl&FU6fZyQ|P&g=O)D-m#!9fPnij4Di&I6Jh~__yF%tu zha`KXaK!r&U{`1Ud>#pUz~tOC*M2ol@2M{GLP6 Qz*u1LboFyt=akR{07bmFL;wH) diff --git a/TMessagesProj/src/main/res/drawable-mdpi/collapse_up.png b/TMessagesProj/src/main/res/drawable-mdpi/collapse_up.png deleted file mode 100644 index 54989ad3bd9b28941e81f2c6c8f0d575279d6b10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1O-~ockcwN$2@k44ofy`glX(f`xTHpSruq7U zRdFydwr4W1fRq5S6c95oFfU+aUi$VileJdrCM{H%<(SZyvDLqSyQ1O!u+u;51rAi+b?5u+xvC|t z>&2n9Q&UxsPcGH<3VM4v`J=b|=gzdN(?xdOdJrxw7B#!%vdiJ>Ptm9EJ&u@A_~S@~ wziI8`I}11edw2ctP6d5uj|LV9l2ZG?Vk0#v!Nl&4Fem^#UHx3vIVCg!0O?_fuK)l5 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/editor_rotate.png b/TMessagesProj/src/main/res/drawable-mdpi/editor_rotate.png deleted file mode 100644 index bffa8dedcdf04b813e519f0a66d74b3caa26e88b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 553 zcmV+^0@nSBP)=(`R0Bzm))5}A|^}) zOa)8@Oa)8@{&fYcuy&`E>LHgYRpUAO@!@-$j%_473!!%>h$N$fy}I|0uo;2tE7A?nuDrH@e@9zkNZnhE2ba3Mk> zS4|t*7)Hysol<$7q-cBL9g2|9nG;xpK@^_g1>(Ai&}KnmUUyC)9R|a;4IhG60(5Jz zC^~+VAaPReCuncLfL9)0<0PB`iLBQ|GzD9!)C#{b_=0EXf@_e-c;$(C30&i?<^G53 z`Cr{B9-hMj$b}$Zv4S&5fxN@p5MHq3w7qYo)^)O??E~ki`KJ9^o-apJ_{R=O+dys! zIf%8cNp$_-9OyLFJ~ZiUFp!4i2jW7^=_Wv%f=k!}zps_9&94rFL68^z4U+z5H%QIG zmOw(z#OVgv>f5j=3!EE;raFWSj6<`2raCKG%p_bvWvqs2tMw&%8M3+|G-J>Wd;D1~ rc+D~6rUIq{rUIq{rUIq{b_IR_0#Vtn>Q1uk00000NkvXXu0mjfoEhy> diff --git a/TMessagesProj/src/main/res/drawable-mdpi/emoji_tabs_premium.png b/TMessagesProj/src/main/res/drawable-mdpi/emoji_tabs_premium.png deleted file mode 100644 index 07f4a676e4cc477596893b6c02c7ff701972bba7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 821 zcmeAS@N?(olHy`uVBq!ia0vp^Y9P$P1|(P5zFY^S7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSZ2>ca4N}HZn-=a3?%NoXA>1l`Vat&h%kFb$K4N`z-5@x@Z2IZikE$LL zhh5Ac$pt72{+%1p`@`>2q`>A&`wqP^zLk>jYRbcHA<;#CvALJ{a&O%hz8$sko#0s! z^KWkI*;k&ew0^keZ0#;S?W_CZ`~G}-DOob>k|)dF4KHrQtkpC$UGR0Q@1ChvogWnb zx)*pn_u5kQ)Bd3Qj3)U4)-@Y@3L3V5O#H~U+)yylZ{B|63;fn8TuXK=a9ig2Yx2ey z-!I-_yP4dn>XLr*{}Cm>wFfWA?cmvurmtcXGYS;W-wEBpI(y-r3F+DrX~`*4t=$KE5*@uGl0pi$`b{Z5 z@Ac+qf~K_nq?%u+_Z^**J<&D(ll8LM+~=>EAB!$o$CRslf4ytG+-cG5bsIE43ZImZ zkLWomZY%O>+1{4ziiwG~TraO>`<&bLyPzTZGV}45@~z(=bf4I+ku8?Y+ow{LXV+GC z=7gfnQmJ3>7j$owv7Brbf92H8-TNLqe9!VX+_!GEZF`w_SjpD{#%B)BMKYV;@Mn3b xJZoE^tWm~sW4owcqfDy0?4;h6|G#tnVV%}twRKC$R8dfp^>p=fS?83{1OUJ(Vw(T} diff --git a/TMessagesProj/src/main/res/drawable-mdpi/emoji_tabs_recent.png b/TMessagesProj/src/main/res/drawable-mdpi/emoji_tabs_recent.png deleted file mode 100644 index d94c6a7f2909d445766c4bc178d3eae20188e62b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 801 zcmeAS@N?(olHy`uVBq!ia0vp^Y9P$P1|(P5zFY^S7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSZ2>ca4N}Gk}&{r{I7>}+l+dmvfU=sTe|r#wiwd!59i*B$@cjw<|rG5=8Y3NOx8_sVzh ziZ6WFa*R=Q&$dSYc+V_xz6B2_921+fR_OYi%@fx;O6?A{^L)(l_OSW#n$xAmo(#!9 z9e#3My5)aW7|IK;ug7*GZ_oB zKmUo|^zT;R7E$MoBAZ(RlB|BW1ed+M9{BmS{oHMSya$u|s%qMVE>Bc?F=M8QPTSEl zkIz0`TX?wV%^T_SN47qTH0EZ!%ouuVPhoeW;pdkDNk3DZ7FV3k*ZQ;0qe8i?vL!F| z>Gl;ID;~O61RAejnfgNfkXEW;G3WgN;j|^;(=}d*HO`kFS)6g8!D6d)&Vkg5m^qI%Tx2~RC$>3e@+*IM zbvMCk-Z90O0`k?zwqD3D@9>s;{^I()9VKpIFSgacE$l4)?0Ql4`rh#D-L_NqRolC9 zom^SOoN+;T>G8cq^DocYym5K|y8z`^?kE2LZN9Gc{95exe@Yr^&xPJxo3B;Zbot*F cCSK7B_I(!>rsg>RaRnt$Pgg&ebxsLQ0M?FRhyVZp diff --git a/TMessagesProj/src/main/res/drawable-mdpi/files_empty.png b/TMessagesProj/src/main/res/drawable-mdpi/files_empty.png deleted file mode 100644 index 6abc7e6b04efb4c48584fb85418873ea6a759cb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1018 zcmV$!ior6vk&o+ys zGt*NlZDy%ft7T9DvtS(*B`YL)4<3Tuh4hF-!(axqTh=IWs3p=QP-iXK&*;-&w56n8 zFuAS*UpAN=_FS^51Zx{eM0O}!bh0-&&nr3d68tqE^0(p@90Hb8ow!ETRKq`OKuAnotzMABU++=TQ2tu;zd5EiM3 zH{v_?bcl4%5Kc?FQ-rI*OIr@c*dgfjDIDz8L!I7V7l6S?ow2|P$tQvm9~if#NsZqW zu($E==(`kW&X|em0B4ujfi%S$eMm2o3*ZQN4DN$JAW4qla0`gnJoJv601=j$Nt+I& zp9HI_lT*~~tsUvG?EwY%qF(|NV28CQj5}FB2iEBDKI3c8I3ciW%RawOT_p-T**@XI zS{ak5-{F|X6lU&sxUg2nB+A`ku8q3aPsQYoHRp}1OXy#i>lR`r_}{TH(qr60<`&{i zIhW8DcZLK7|KB!7dV;%KZXwQ;Q=+_E;_(9A zHXlk>qmnn;T8OLv_-p#jp|L=(%zb`&w?x;@rBArstxxrZFbxUznZ89#0{xa?e^2;= zF6jH%E5>5P-_%($61N>(18;1OCgWSyu7k`?vN^>q*JVwCBpG9P0BYZ4OC?>}9)V?G zf3_V#9|vcFE`^d=aFLELYm!DpSboG9zAA1cO|X1$9t7WNQPm~JGa&X2thK=BBcnu* zCiY~gXM&u+nQ?H21O?Z7LCiD8)Q_?79RM$YUeSfVrvy&+nfJPgS;G45R&v@Ld+T61Ejn79#pU3g_=$1QEp%Cd%Mj3AQBrYq znCR~ZPh>@OQ@8-^z2EtDN}={BmMgE0` obeTl8^*5dhsPC-p@ManR0|TEZ+p=*b1poj507*qoM6N<$f=0dAaR2}S diff --git a/TMessagesProj/src/main/res/drawable-mdpi/group_ban_empty.png b/TMessagesProj/src/main/res/drawable-mdpi/group_ban_empty.png deleted file mode 100755 index 643f901cbc11264bd28c5c21f411c3b739223ca1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 528 zcmV+r0`L8aP)+^N6Ka7Z zYx*D`L*eOn3p>1v(kC{y72QP#ZK4K$r>ZUm&~zbDE$Qqa%5s zM*y1jKubkHNdOl0KxeKXM+;QNvn%MCN*z!QX;)C1Y8_C3Ygf=U0j+1W;|ki=dl`C) zfSv&8*8E@(0B9|6Mff?n)aNaNNm7X>Aa ze${zKD?fsgKF9|tgVwBWW76tNgp|=K9niMb?MzvHn|G7~Xowv%ni#SEF~WxNH~eM7 z2mK1Nkl_R{m$CfuK0cH?Yz(XeBb9e?{mKIb10&Se-0(;NY7LS>;yIe zrNDjQBJgocMM)BmV60VN`3FDMA2ENct{Y*DA!8(@S!#zmpf;#;)!FKPwO4(w)};7T z)qUz^^{iSq*2H__bcYJ~_J*$^?3wD5RAmOyqLvJoxKf>*Svwb-YYHTu5oNy;c5`r# zsdLoD>h)OLnwPj-eWRYv1V0lS=NCv^9VfdGc9;4h!%1GaUu{jVm!@=<%ohO*GWvTM z&)o&ISr3$j!V^pbK4&;zfB|57R@D_zmZkCbcfwA_B(*9|k>H5BBudz*{!(9u0Fzjk zVl6GGqp|luw$z>Gqa}zd)b;|bm+G2Sz*TB@_#UP9JdXqZO`It0M3i?TunqVCJdT3g z1kT620;mNxgxv<*0=hG$T@4%tHUd4sRiG)`Xwsc4`Nn;~4Pg5)J!f1{mI_iCc10#| z9k4lsR|x$;dz}7R_>TiCV?F_R2iya$h0umvr!w`VS|4`Op>C(XXK&8vOL3ZG?+*2A zia&@pb>VQGD|v~#K|U4Ys>~UQ>es6eg5MZ1DpLGqiI&3uRGpHScuSD7&1ASy9@nlX zdU+vkQ^ehs7ih3sEg$7y=V0us&GFa7J#Q_|5zIHB1Lzv1f;;0`o#X!mdj}wv-3QF;s5{u07*qoM6N<$f;vYm9{>OV diff --git a/TMessagesProj/src/main/res/drawable-mdpi/ic_ab_forward.png b/TMessagesProj/src/main/res/drawable-mdpi/ic_ab_forward.png deleted file mode 100644 index e9ace55a927ac286872e983b773876b96c28794d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 367 zcmV-#0g(QQP)Dz9#F9YA;aZ?icXPYDw^6G zFbh~<3>XbmC<$cm2VzB-7#Z{yta^ZkGXn8$G}n;I?ZRp}NDyd}H>swfsc*q)IMjk| zNE-eD*$05Q8Hhm^>j1G75OV|ZQXobLb%YFO2kQ6%#l1jU8J7m29H=Zp1{Ju}!o`8A zjez(J5bMANaWH^tkS!>}p^SWCBnxuMHwBMQpauOvoQ_AysMH_|0RW2$20ELj3F!a; N002ovPDHLkV1lYafqwu1 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/ic_call_end_white_36dp.png b/TMessagesProj/src/main/res/drawable-mdpi/ic_call_end_white_36dp.png deleted file mode 100644 index 704cdba20598f753e73f9588baff3babec85deb8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 593 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM`*=|o4$B+ol zw^MBOSsW!A@@riLo~snKXt*q%(BWiK&a3E>@rOA?>PyvH?IZpI_706+%k3Ns_lZ95 zb1qa7PqZyI%PTkDZe6`xV5WJck@5TTdpBo?Y~&K(=^Cyp-gd-pIC^?pw1%|o%>bUmqCYx! z9CC0v6uE!NjsAuEXUy;wk#lf8##GvD?CBmV^thPwtmzRS$K6Q_z2@cl8E&uOFuWMx zXsB>>wTJevTX+2|e(YcNzN1MZQzGx6_mS1o8^bv_sh6?c+sl>U-SneW4+5^BX;a`L11Xh!V?9kZ@sOXxrEG V>(#XPGC;!^JYD@<);T3K0RX%ZDYO6p diff --git a/TMessagesProj/src/main/res/drawable-mdpi/ic_masks_recent1.png b/TMessagesProj/src/main/res/drawable-mdpi/ic_masks_recent1.png deleted file mode 100644 index 8b5965d8e565d4a5d6fbc9355b85036834985a98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 536 zcmV+z0_XjSP)?p0a08!SWpMa<|Mdv$z*o@3Wcuy0{sFG z73%2V>LP9~1s4%XKoArJp|qm-f{M4le|R3b_j-<+QSgDE=bZn`xk)rwD!uhdUU~y* zns$+yg3mBy`G2ep*h`Y+-n8}>F7AVG@E2kuPno{9Zl^E?JD@p$uP_AzhW66rX_Os% z)k6rD;Se6+J9Nj2@+_n5A(Ug;N1f0nXciwu+n`Oua6n&Ff!Qp2xif)UE0(6qIl~Tk z=kPP)EnBx1@>?2#Ex3eAC}bC`MZAi2w?cjivj^^AJs3d5(*z%&4&FNGjsd@;!#AuS zK!5Yw8Li!|y1HY;i#qu9+UC@S$U4d^T*!D$zHGaN?x6eG2i%$X(apemi#BVxeZpqc z4&J?TGy4D+C*2IJ^Jt&Ivx+qJ!^XRRT*$4w^(GucXU=%VK^^O6A6Ux%l6B20=qtaZ zLz|!{mbu=7U(b8rhsFq3zmo|FN7tm@1?O#~Ezb-0Eb z_yOa^m^Aa0QMO*pJbR{4h2P+_&t}8W-bb10vzNt8iV1vy6==YPp}jPDFaB4I-T$t) aK7s!SdC<-jsJYVs0000kdg0003nNklI6suE(llcMm`(21AT9SrjmjL1kRXy)pqrRb3sY4Ll09vG(ARcknn?t5kgrxD myMaPRJApz*E&~wfufQ*5Xmx+>l_Em`0000Y5a?hDBK78)1nDb?lTJ#_HAxQD2M9OC$xk3SiHJBy*jivDgy5nLNmDe1 zgogHfa?~p~@AY4fo|D{GR-I}ZPQhPW<_+a?4wWWTQ2MMl7ui;tNkO|lZ~VZHft+Vu zX(bgpEn-J+>dY%Ob>^5oA3aI5S;VK*d7<>hog8y&I&s%e45muMp%ZJmQ*h5K`xr@# zV=i^x;j8Xcc#RK<$M}{y1K8G+3SIb<=)iu?^BxPiIgjjOEH~#l4m{02+I8hRCUM|p z3K}-FteQ1tIF~cw#FG0OHl1naDxTTJZ{OAAY93m4L9VCYTP+p&KM#zWv*wqUmE2ZG XfRjN?g6O-M00000NkvXXu0mjfGVqI( diff --git a/TMessagesProj/src/main/res/drawable-mdpi/ic_share_article.png b/TMessagesProj/src/main/res/drawable-mdpi/ic_share_article.png deleted file mode 100644 index 5809251b15e0d957fbf6eee94ee234f9f633a093..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 195 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_+iE>9Q7kcwN$2@ zBK32<(AEZ1fyGZb-cQ?dR@=72UX42NDc5O*_qPFeI``6`c zX~r9E;u%!eR(d*BMD@Pe{$sD_=*|o{nLPXSw&-^PN&;*C&)jZv^H2Tfb8FdL-0q~U v*WJG@WzqzbZD(%0at?ZQ`kdg0004vNkl3MES9 zAf=RpT+|Mq_J2z+@Bh|zaq@ln?;kM7PJ_lVY*l8$BAsrl`eX#(G-o=r=`pP8tL%T!!Z^-zx$sbd67(ufNfwb#Nlpc@C%2;QcScGs*kD@nBA zc^bi3>gY1zQVL$7IpsV@OA0EPq}5mSr{FL;Q%(=MQn1f!D^svsw@M0@VmRfr;!z4N zV<;uOM^nmqho(fuOI%FB0*Bo5(NBYkqu7;lj-ew-thUFTByq}waiebPODw}Jvr|SJ z?xuzzJhde?e8G;C^BI*)av#0e!93l(QCBlf-;HNgdmK#gR1P zyI)CSo&oFfhl=e6{4n8A8gm})sbQ`T*HwMfZ&RjXBL-8jSeHAhJ~?Z1ro%^^wBKV@ wZ=A9|(`U60s-Ee!Dl=!RArJIu%YW1G8>_T|ZtNzpIsgCw07*qoM6N<$g2PzMivR!s diff --git a/TMessagesProj/src/main/res/drawable-mdpi/inline_video_pause.png b/TMessagesProj/src/main/res/drawable-mdpi/inline_video_pause.png deleted file mode 100644 index f748ba8f947683ae2630e3a0c2236b08f35a53fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRp!2%?I7)^T!q%=KU978H@B_}BG{Imbh&&Xfc w@u!`62UEzzKvrkZgWMYLHDegtIOG@@-mI`=Qe1h;4ycL2)78&qol`;+0B?F4K>z>% diff --git a/TMessagesProj/src/main/res/drawable-mdpi/inline_video_play.png b/TMessagesProj/src/main/res/drawable-mdpi/inline_video_play.png deleted file mode 100644 index 220f98e4141e847c38fcb8892472855fe2ee3bb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRp!2%?I7)^T!q>?;c978H@B_}Ab{ki`yo_l}O z|Nr&>=l_alna?Cp@qhmhducmXg@WJp3U#as8~*QCtYiKE|Nme6@B3AN;vat2f35ec z;c|HJu)f-fE9T^urUvDYRl@lW4|%hgCc0|u`pC$@7V-J)e#P}gK-(BRUHx3vIVCg! E0Ia<{Z~y=R diff --git a/TMessagesProj/src/main/res/drawable-mdpi/input_gif.png b/TMessagesProj/src/main/res/drawable-mdpi/input_gif.png deleted file mode 100644 index 0b267fafef7a96b146eb24764a06dd26490a2dd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 562 zcmV-20?qx2P)vZQy~JU&ah zA?ZMjACO@}U_WpdI0MWBcYx=>*9|7Q12_p>1daexKnL(9%d+(qk}^s6oKtunOtSu8 zX_9o^F()MLE`5@ub{n2Zs;dB5Dz_ZFHzj;5X;sqE3X=udCuv^N+mvuo(s&ifq729z zrOuqqz-$#~z)Vycl9#`87KRUM16qKez)0eJ0aykedS@R?{8oV>U@kYdn>v_N`$uJ` zaamHU?ctowSs%+ewcSaqOR=O46yqvz7Pt@e1BZZXz;R#{_zwKA_X@BCoOjltGOzL? z7ZGN54g;VQ_ysfq!@x)T$r9JEcu;&RXiup}d8h~W0E;HO4SWG!0_So9hW_paKA3QD zqlD2GD=_QLav10;s7T0g40r*&E(%&y(%?J|oN{Sz0#AWS&&qN%x`(Yvng5!h%Jd!& z?g!r9&um-pbEhSs$@;DWo>J^I!}4rHc}@dYfD`WLIM8Q%$oP}>uxsDDmwEUz_CJia z%(Cgx771%UylZ|v)$9V^vR{lSRsV_FMr8r40by?hO8~XEDgXcg07*qoM6N<$g4pBr AkpKVy diff --git a/TMessagesProj/src/main/res/drawable-mdpi/input_sticker.png b/TMessagesProj/src/main/res/drawable-mdpi/input_sticker.png deleted file mode 100644 index 56bf9edc7ae8720b28c847a4bb622efd9313d085..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 631 zcmV--0*L*IP)QY3tRjJHVO?3G$}95h9RMdq)--Cnpv14 zFH>GNv+%k=n3<1m&gkdYeSXg~hTVMY^gQ>TbIb9b^nbO>i4R9-?>kQos zwWXxnZ|NYGGpvP?NOKVnmVPTSu|dMr1a<;vGP;AnH{b^Fqed`!RFrf~XR%1uXofR@ zcXe#i=4l7k05gFWU?K2nv>B#WHJ~1^$fR9;7n|q3`bvEny)V_++ zZH#`~qdrhChts1ayB#s#RlX0)gvY{gMT5I=b=bET=2od+;ycc)M>s#q+N(}$fN*mV zZiw-&SpQL7K4Mozm}E~l>4|8o2)BprVf9MO!<1|pbyz*V3>SGk&RnsJO7z)#*lDL5To RGROb`002ovPDHLkV1gn|CMW;^ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/location_panel.9.png b/TMessagesProj/src/main/res/drawable-mdpi/location_panel.9.png deleted file mode 100644 index a3dedd7be76575b217777bc0a1678642bc084a24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^Vn7_r!2%??mEz=qRD!3AV@SoVw=)d68XS07%AX!M z_y7Ne^fj#snx2IVj_24OP4S!@QNHMV#MzYB7o0EMYwWk0GspBwmgV_o_vIh@E%fab z&V{tINd=p}kmTLQ$7`~J@A=g8OMjFz@A{x#afACgD+kj`RYpdjT@0SCelF{r5}E)t CnK#7% diff --git a/TMessagesProj/src/main/res/drawable-mdpi/logo_avatar.png b/TMessagesProj/src/main/res/drawable-mdpi/logo_avatar.png deleted file mode 100644 index c777a68dd4a5297c165e9d23c2f7832b2d4ad9a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1113 zcmV-f1g86mP)kfs3sz4d3FY%|XcHqYMu!$x%)E0cZ< z)Jbk2UvNCR!Z4)s!1d*FgXfof`b1U~E$vZfLDLm4jlqNsI9?hV3k|CH>I~Lb)Euaz zD!zOhhtZkN6eKiOeRKVKeI&C${p=@mYF<8Vn;`<8tle$wYo2BaU))qfz}okDI?}(FY*gnTFjW?j zZ3tN1Yl=mlw{cMSdZ8yfsUFtB0sLEcZ4kDEcs;YiQj1ilVf?d&iGFZor0*ZGC-Ae+ z>Jr_xUXY6&dawNj?qJG?8&?VaVTEx@pLP7}bBcQ6bmWeG5xA^_lvfebTjSuQlyp}COb%NB-V zoA40?V(uXBrdDT9Y-ZRPP|N#gb$QY#w=wkm!m#$BehBRWDr~jPKRrH%n~mhUN(_loiCpz($cmo=2)gw#f`wdJucEt@J^K zkVYwObooFb!=m+|6`)7n&afr6^}!!Jsq0p3^Z!v@Tn}m62K*a8t6MJgkDKfX;BHnY zGZ41Kc^RJOruxfzu3wlE>j$c+$an_Ne$~MBbT`c{kQ2xyYzJY*UCYZ0j3z%_nCOQ` zgDDyw85QYI7bLJwO#)zR$aWCMvuXzVrd2|}Jv+NtQSr{~L^rP%RSouLM|1+)ov@$p z?WJ+wbNx^iE<(kF#v&sVJ7GZ6N%LS|2Ct%#(R`BG?<;(RE2fA^*VE5(j;MVd47~Hn|%#i+7=~3sh zY6v$YJJ##?NZA4yUjB7@#0{(#!llChMgU(v#_|w^7}T1SCcuE^NNr=DKm(eS_a7Pc zk1CpZoY}7>d6(IsevRU~XD3BbQOv(EDGI-B5?3>uG`US3_rbiR^`TK=pKAT1dAzCL zEOiX)D;m(ouY7lAyz1dm_85QIDCOPR@rr&8{0deSjc8BK`)F=F@A)awKM&+!8t*(m zG5qI~`Fzfx=J*^|CVkz^FaLZYAN=l|c-6~O<6oYh5T!lvI6-QsS%!O zzP=1vKsE;hV|yk83y{SK#8N=az`(SC2`(bGfEmFCN!q^@OaLlg>gnPbVj=i;lC}5Y z0FmSGO>2*8IH`-vb0~>;3AQ#ZP{>-^y;-kmwzp$RQQ#{D(JjrgB|;yCEi5@6J$Rth z(QRSzW5%wZ89tXxZ12@8dY|z9%vkkM&HQ=&x%czt6iaaLeC8ci_3naKYe{-+qD*H; z@MTNo=$t}6VPUR41qtf}7JIr)IXkuIslkJ7+n@Jq=Dj@D-N46u!t%ewi}2&;uJ4d6 zalGC0c2;1)LWa&Dp1QEJXB9NI9Ow~0J!Q+<{oxPOIj^TT<`yJLKH4*T^{W?W+18)Z z>o~!3LweiHlYK6J+omT42ezsuY?l4EqdszfeZ}TWkAk`Q&O~fqkzu_hbmzKk|Mz@5 zbc~m5aMD}mE?T$b=+C^M#U%Y|Ij~|(h36TyFyG@cyTG z>Ft8w8B@v+vhmu*o&7tl>0+*7P-;oN+0qS5jzvkQ-!RDA)LHPbG2gK4vOU{fsjtt( l&CYFLWh*`6$6BNPf!`)%#SZU!K1EQ(dAj9pod6xk%e5YJi?tHtv2C{P!Jr>mdKI;Vst0Kdc=(f|Me diff --git a/TMessagesProj/src/main/res/drawable-mdpi/media_doc_pause.png b/TMessagesProj/src/main/res/drawable-mdpi/media_doc_pause.png deleted file mode 100644 index 9b11ea0660c6ed240ec82449fe06788700a8ea53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89 zcmeAS@N?(olHy`uVBq!ia0vp^AT~D#3y^%1eq}O{Qt)(f45_%4oN$2eU;Td|C=U@k jTyNlz%DY9utUQT{p};mf^yf@LkQN3{S3j3^P67HW3q`3#D{UJj7$`*4Mgncqe-H!}7`8}@a3w@U z+q4!%3DFk?DH`ZjLTqO(a@|IZLgN&_KvEmcC1{1;(3|z!Sd&fq|BTpr221b@W}pRD z;RUhFv|%Ih2K<4dy$ff!KQ>(qX1obEgE=_PX9=HZd!Pl5!V{PeCL!XRf>+Q1&Cm@C zAnVWNAtbO2U*J&ASt{00)ND+=wtCLc4!~#l2D-f^V{jZ~w@nMR_>Vy!^n=b*)bJ01 z?6iVxTk0UnzLuK&FTpx158#6DK_6#)g@ym_>sfy#Ypu4s&qp*h_BfEBb$IH$X*x-J z2DFB+Gi@T0b2syM<@|_qpdHukI~ccv?5(e>kM`1exb?md?F4MV2VZx6#4cC^O?KY` z=wAfcS<|dV(+-ne^|WEeKVcnCneOkH#6;RO()Z+O*Uv2vV)i-M+gry3|7SBWk=^Ud z<=5&KT_^rI6zvVd!AQ=zEZD8Bog+OIWrs^m{+Dy27o0Z52<=JG+Ag3k(#FhcS#9@^ zD?Wl^m0~)7DEtUg0?yb&bqwFb3Po?>e+C_(TO5C=S`mWw>^0$^9XB776<>TkICQ^T zS(Dnl`0UF3mWgZfD)(y!`%F~)IJt&40JZ%%(d-n}=hi*g0<)?VZZS;z@1uy6$_@qwo0VZZS;bP0l+XkKIwwjR diff --git a/TMessagesProj/src/main/res/drawable-mdpi/moon.png b/TMessagesProj/src/main/res/drawable-mdpi/moon.png deleted file mode 100755 index 345430d72645fa0b498d24e28a42f3408ed5c1b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6mUy~2hEyo{QJT?4#k`Ki8pmdY zT{$sX&3kU2#-rrwf@gehR1F{O-=rdw_UGCaan7ok&f9^ZBCNY~EFWx4b!_gji_10? V7t!+RJPvd(gQu&X%Q~loCIDUAS#tmY diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg2_animations.png b/TMessagesProj/src/main/res/drawable-mdpi/msg2_animations.png new file mode 100644 index 0000000000000000000000000000000000000000..c9ae6e78142599d724ecb5af6a1dcd5faabbbb3b GIT binary patch literal 646 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgf?1QI^V~7Xu z)~UAM%#H$W#TS({#2BS{yS7e^itL!%)EcqW?18?3qi3#Sn9v9I8=XpQ+6Rwm2?QK; z+ZcM}kW;Hj-GXD!d3PVL&Cy$Q=g{GI=k^#E?=Igx{p6B6dzSn;n`Yc!f6&0oKI04j zm+J*8Hs`C&zC}FOad;$iDm9|nZiV!e2;WvUUfy56Hx^xxt}RloWIXpkR?Famo|E0; ziD8DVWw)lqGVN%$mhcy0pL1!J#L->d4^A}Bb2@q3u2dmEV}*q9YMEP)3JyoG>6Yre z`T4geVy%nisf8Lml@*O%Clb|ebbnx(Zt(b0gmm3r^QWhxquV?=_Z`@2dL#d#gx>?< zu)hyZFwEcPwbN@~x2I^*M0I;W0NR;Icm#Xm>H(qTdKHRj!X8;iF3?Tu}8zI?Hy`4Lmwq$zig zy$tseik829>3jwMvc!|OnD_2i-qxU}r@J#*`6tUF=L_G?Y>Hjpr|@*wr?)JnzkK8` zt~so<=a41OZ%!uWH|Nf8x$Jmb?ZP%$wvVe1h#VBR&-nCEqq(p0&7{NESU($xR@}G| zuyKLR!_|jGJic!-cD=NF-P@|jd+~J^@<%M|Emr*wz~J2mP*v(Dew U2aod<-UOuqPgg&ebxsLQ0CPqQmH+?% literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg2_archived_stickers.png b/TMessagesProj/src/main/res/drawable-mdpi/msg2_archived_stickers.png new file mode 100644 index 0000000000000000000000000000000000000000..256269b6021efd47e49c9d283ca6ad9e5a2d220a GIT binary patch literal 842 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfoY4Ui(`lf z@6u`U8UBe9$LIb%^Q`{#sU)R^B3-Uoy94#MEQ*=HJ#A7^<5`iNMUR`5ws1c_HDBpb zl8U*@+NVj!e5UAjFEahV{Km0s=b!(!>Yw}FV*lnh->*EkIsdzM-uKG$^S{rzuP-q@ z;bzV@hMi2$4jpL`n%u@&wa}EKDPL__)vWyXxF7P;OLhn@dzRx@#C3=1X5|fr%?m7A zUp`s&K%l1e`UayyK_RPVyNKx#23;riSbh-L(owI7-aIi3cV z^x=m>@!#Atxl4k6iOj0>uKtsmSJL;mI>YNkuSd+HIF*~*1WosM#PM!$h&}fFa+liV z8T&cI4yU|mlaBc)_eXxQ#z(FT-ihKj)HZ0ITO95re&XH%Wr+qw3pUrV8QG0oU3E^v z8PfkvkF9p-l{?_%Eg`{l6da^V-T0flo#XSuI#)BnKechGM|b6y7HcFzyd3AHKr z+>UKJyRE}6VEP(`R~Jt^oGq1Za|~CFPAfg~{lTiIb;VK-4%dtg z5^fI|^iJ%%wBCcamVs@-g`eQ5kCv%sWHLX28?Q`Rs8Be#oC~{mU#rKd? zD|S)5*g~}l*ItPoo9=7CY_xGpVys-POxGp3X1xhvbH$AHKBWAf=i#ySZjVP+NBFWo za)NL4ce=F7hpd0?CKx?MG5+fey_RVKRav`#U47v8_34*ovyXguq`)t_P3QEK-N*Y6 zS=N|N3t2ktYI^prc|G!PLSHMT^&SeoVW_^x^2|jBM|Y`0u_xYZN@vKiW_L`Ji$xQFx-&TL4^t9-~Z%a^OWAJqKb6Mw<&;$S;?-LpT literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg2_battery.png b/TMessagesProj/src/main/res/drawable-mdpi/msg2_battery.png new file mode 100644 index 0000000000000000000000000000000000000000..1154dfa62b6161714f34b2d14e748318ba6b1fc1 GIT binary patch literal 508 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfEX~u!F~o!S z?UcP<%#I?h#ur06o6IyrawZ*%@>WcEEPW#~;wOvHn@b)JKBAX?awxsbS?iLdy=+6^ zhTh(3yXw@>@a>MABYSXynmFJ0|958IoU1AF%;>eS!AGV=8c~PsSZ^;7I?nu+y_EmK z8Hvx+-bnH{>~Sk#ushg$bwz?^@J{|ENOwuLI(8!`=b|GXAR%aXdXukDRP&29(r z6{_kkF6(wx9I*bjYWc^mJB+?oO7lCEtLIxZt+W;Wb!pd9(<=;rekYsDCA9lI-6{4x cCas#u{*_OEWmCkzI#9@ay85}Sb4q9e0HtEO2LJ#7 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg2_block2.png b/TMessagesProj/src/main/res/drawable-mdpi/msg2_block2.png new file mode 100644 index 0000000000000000000000000000000000000000..16eeb64f5a8e9496f71dc90c1467725b42831607 GIT binary patch literal 727 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfyvR+#WBQ# z_vlnxZ&^o?w(nA+iy3Oc8gDy(+>fM!k8^#zM!wL0#z^~xTS5Q*C@ z_=s&ri|K@`vlrcRZ13FOF+D-TZ-MeT{(;tdWKx2aPirYg6XdFi-w5Thh1W!LR&f zcXuqiZqDlb;lrv`)88GK@3N3-vh~M(8S%gV&p*%D7rpQ&i{H_7P@?j5^>bP0l+XkK DrOhx& literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg2_data.png b/TMessagesProj/src/main/res/drawable-mdpi/msg2_data.png new file mode 100644 index 0000000000000000000000000000000000000000..923e5270297255b11aed05a2fb72eafa7057f5be GIT binary patch literal 609 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgf?6jwgV~7Xu z(W$n6haCi3b6YrEix?L4Hn})EPPAU)=RJAWIrWEZg1kb!tnLgdQBqP;T2iN68W>L2 zoWECiEzqY zHQr=rKImgv7^S_|!BKusL%snU^94q8J}K>Gb1WWxn;ymTNT8<4`oib#8R^_-j`DTh zXTHkwH^!iC!QAc&&a!8mN19lV2wuOsV%skjl`r#OueepI@UBHm{Das<&n1C2lXX?+ z&V9&#pyT$()Pt#eS4&#*W=`!5Emc1DG^5gO-#3vDzf4Eg-`)^UdXFxzOZaQ4m@hlZSljiq}{jF$d+bS8zvEbg-8 z?z$Ggm$Srtgg65pzY;wt%6?^)zNa#$7pK{_t_3H!1J>7xY~kvkWV*KX>^hfkYJM@i zoA%w5ln=_?ZPxex;r9lql;YjnoK8%Ym(kzFVdQ&MBb@0LDV}!TYC4S(h;m@3GxVR)49z~i-jj{}d^ v8ji-(0j%8%w`k2`n;^O1j2Rc3BL@S+-}OIK!*+OZgTl(w)z4*}Q$iB}@I{1c literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg2_discussion.png b/TMessagesProj/src/main/res/drawable-mdpi/msg2_discussion.png new file mode 100644 index 0000000000000000000000000000000000000000..deb54d69838e079d07c1a7b32f182f0962a0fc7a GIT binary patch literal 642 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgf?2V_3V~7Xu z)~TnpT>@o}_u42aaSK=K_DsE`p{mIJX33fekIwxKOQ&jxnVmXzEJ$VPjSW|FmP~AQ z@6AU7iFYES(gwyTziQ=|t=bmNTEDe^Ykd9tfmQpPsEg;iL(ErHbc#GKnDcCE z++ozDn|8{;?a?GnmJ2u7);5*ebLbq(jZtDPoO??0MxzCgTE-Z3R;wX{&JI$qw@9*XXs~4ZRkRP2QEfad{OVy|aiOZ;j2hiijO z?Vp$zOm`RD+Rb1QKS5;5VRavmxf?ml9KZ1$SFq>ESGYX?oW_lJ(K!V?cWpjg7P!J; zHTCfV)z$2Ot2MW=RTn%d*?YuKVWNS_VMCw8d`w+Sk5?3*j#}<++N^c|TEH$%&ABVr PgW})Q)z4*}Q$iB}^sECK literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg2_email.png b/TMessagesProj/src/main/res/drawable-mdpi/msg2_email.png new file mode 100644 index 0000000000000000000000000000000000000000..5bcf413fc6f68cb5fa460244659404c6201fb49a GIT binary patch literal 546 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgftjE*EF~o!S z?UdbK%z*-Jo0S+_A1u9K)w*%RC5b%`te0#Ed~@X5F|YXtP92L{dxTr#g?5KVg{E_t z#5xOPpCsC|zA z8~-s~vpHWq>E4G1>1&x54dy?3muAdr7GhSr%T`k>b>!5C(1NZC#=Vj|m<)g3aB1K6 zZDswD`GGMPOLN@MGd+ryxUj75x=$g`5w!&6j+*~0_g}l1GMU`nu-10>56Rxm>sniQ zC8n#qw%K!l`N^CQ(GIyRTp#$lZ_QQ}<7T@d>KgU4(a*ETN%EYazB`M~3EhY5R9j?h zt$(~~vnXN;p6Gu_twYw4e@O!Wk!=f3e|Z$??k8}?BTP1-_e%Oh(RT}2L}zTTx-q$* zXM^^nxPU`c)bv%IP1!@nPi-fPZF%b}*Xh5Ef9fx2bNxte_D9|trl84EevcAn Qn}XuU)78&qol`;+0BQTwT>t<8 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg2_folder.png b/TMessagesProj/src/main/res/drawable-mdpi/msg2_folder.png new file mode 100644 index 0000000000000000000000000000000000000000..458459abfedae43a1f9f2db133052ca0714453c5 GIT binary patch literal 461 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgf%-qw(F~o!S z?UapPhXX{~ir0!L>XmMHKDcmk^A1s~ud*!W;%|+QIL0ep&^`ZPN%XFg7v3qp)0`Y# zWTyO>JK>H>LGv>&HbwS*&+dJGZol19<#^%0YK_axOERrg>I1G$36j5B``Xl1^o}FT zvKtd)w&~VH7~a|RO|ilKM^o0Bn?GcV4qfi}xB7zaA&G|($@?;kiu&8XF(~ele%F1{ zHt_M%3!Chcr_A$D2;1>;na*r>mdKI;Vst08D7GGXMYp literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg2_help.png b/TMessagesProj/src/main/res/drawable-mdpi/msg2_help.png new file mode 100644 index 0000000000000000000000000000000000000000..48e16ccb72b17b1aed8e1575ac04f6fe0bcd4aca GIT binary patch literal 668 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfr-u2#WBQ# zck9&s`Yetj$ID%JxU|P8id_FFKf&VFe=H@|=L?(93Iyh;Ag&Q{<5p7ty+?b_$Mi%kk2j_L>PS*K%ov@4*EE9Bxn zj++bpHztMgKF{)arJTtdwov@s1E#D6W-N~lSZ9@pZ>znZe<9txYx)DOc?sOVE*pt( zn_kjdK4n?%FVzO?9gQ1(3RN_6XDp8SuEO%mVRgXAgC76-eV(@LT(xk%#l3=c&D(Bm zE2=qMz{CH6L)}1X{e#LMTZFGh^dBt{S;!c@(ZS+CJ?HifoKYQRk$ z3AUWVH{1&til3c-wR^`s#wM#5zn*UuWx2k=;huY2#MW1Hhg5lb`x#N5AA*md_1)FWg=gEIRl9qGzC#;pyt_nJ8!P|- literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg2_language.png b/TMessagesProj/src/main/res/drawable-mdpi/msg2_language.png new file mode 100644 index 0000000000000000000000000000000000000000..29ceec54a6c2cbfcc4dc3f53684c6df58107fb12 GIT binary patch literal 753 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfhpS4#WBQ# zckfht|4>H(_sV~ao(`TqS5|Di(BbAHExfPUlvhQpWYP@@uB607)w#!9vaKGAZ%|rz z@mw1lxA0;yu|;BBj)6PpeZH|%Qr`bzX2ImoY2VB@Z_a=J?(XfYTMw_@IQLg*=v?LZ zN^^96>Tl%kbxYp(#oAotZKGxdzD4dH#|11$9vrTqP?5`-#OBLAy=qOXy2iU5=;2A4I+zn zeUyECZL(%#rcFQ`}3-%vg$MJ9J-*Y?6WgZ6i-G9t~)b_dh12dcU3}=hW1+sQ6 z5pNvd$j)f|V>f46{pDF-tDVw$a{jWscB|jBGAuM-SB!n{_9MrNdCt10NeA~IFBGYt zDQW*a<_P5W*wDi_UV{Tt9XRqAxcwKeJ|EN^}{S)01>sQI>^N0uy!I2gUfZraz= z%1+Tuj9>0%`doG`{?GOx7O1>7xb=KFZ$+V9(_m=r$g zo!aeLrsaQT98)ejR=t7m@Pm~TlLHQJy~H288stCy2e;*NW_&qqR9_ydBUC*lX!bg( zE6?TspATn_%ul-d3@bvoPjxa;Yf5B}OuEK=)A%MsY4uzlaU zV8-xAYbE68SpHGnFyqDQvrg&qb4)s`Kb@a{=GP3jhh@_`YvlC~J{79(sXeweAiwD1 c|NTEXZ^uu|TwHQY43ykFUHx3vIVCg!0O2@D*#H0l literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg2_notifications.png b/TMessagesProj/src/main/res/drawable-mdpi/msg2_notifications.png new file mode 100644 index 0000000000000000000000000000000000000000..01484cca062d2737ce7e491cdcc1ded702ac3be1 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfEYZ`&F~o!S z?G$Uj!wv#%$xT5n3mqpof7rn+>&vy^wBUjT3!gA;nWNyUA~kD@$rYIf;Q;2?iq`g@ zb;jLmzRrr}n5ZG~(z`6}U;VM7Hzrc`nxAa$iyQA$V=F)C`u+MegN^LZKfGCXJ96v2 ze(}V-!Z@?P&qiPej6+HNATU^&z!+R`pS}a@D!AY6NO~Pv( zGY$$Zl8&D-;q>M=ubsHR9NF{pP)p3bQI??78Bd!!3VKd==WS{!I2!?SrS%C%^A(_{}!pwPU`G*L-P6_2Wt~$(69AG>#6JK4 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg2_permissions.png b/TMessagesProj/src/main/res/drawable-mdpi/msg2_permissions.png new file mode 100644 index 0000000000000000000000000000000000000000..43ec6cde8191215866298fbab85af9a2a8917c33 GIT binary patch literal 640 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgf?3JgBV~7Xu z(<#0hE`cJ)pP#+3Ku2YY?Ad$A&v|vuQq5jCMJ3qlRNAy@WkDi8HMnoySa9S}muPD1 zqLq<~sk1%`8XtRq=icm{_hwhVpW0jW%KZDC;(y=I?EQYXnz?a**3TNd7wLKXT*4H) z$_`qobk<(jcS!Y&Ov}%*uty#xAFSI;TTkwSavBkUz+NIy5JGxhPR<3nOyLf0)_7#D8d)pI5 z1%Y9Hj?7|b_Ri7N-lBS;dcKm2Vnnk{&+V)oWfynfXJ(nYfqA~cizr|3MPK)w>{yj3 ze{W&DbbLYQ`DUBEZUe?(h5mT1OA7f@FMF^&_YjSJTj~ z0C!*J9<%bgfu$} zR$lsd$};qte9D9!AtSugG{-N!iB=z{jOE9%vt O*!Ohxb6Mw<&;$Tjata{; literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg2_policy.png b/TMessagesProj/src/main/res/drawable-mdpi/msg2_policy.png new file mode 100644 index 0000000000000000000000000000000000000000..0859c7dcf58967e2decbdb32065eba671389e3a0 GIT binary patch literal 769 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfhpV5#WBQ# zcj;7L579u8kSY3}|Ylyd)p*qhCbPY&n) zVBC~`fi+rJ{i@I%*5nNwtQ8FHiN0DlIgeaBBq-5jZ@_=}g1~A=jduSJQhf)HML6~G zna+MFQq%Y`g42olL{xI4XoOty1cE~TNXQ(^Ga^(=`gs(p<_xZnJz4LYJ z1@}2EzfUsE(%U2XgNM67eP(iPQmNka6`6tF4}{Jf+T~HgcgycWYZ-sg{Ue_`=d#>& zH(lncneVw0w-scoYKr!#L1)9pLcalt1Y8uQps2Upz zDtzZTaZc6grJkp?gZ>SXKi{`1ty{fFd<*mM%ZpPrR9;uxw8s~Sy*c78n$f#}-An$f zlgNqJ0ZaOqr3bFA=6}1OJ<~RZZEsao4Bs=^%_(xsZyMbdF6;l|t&&^cboY>IwrbkD smnp2xndNU-V|)B}oLM&6a_O)C424S)BlJF`x`2|Or>mdKI;Vst0JhLQ*Z=?k literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg2_reactions2.png b/TMessagesProj/src/main/res/drawable-mdpi/msg2_reactions2.png new file mode 100644 index 0000000000000000000000000000000000000000..0ba486f2e155927da9980606741d88752f7f97d9 GIT binary patch literal 628 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgf?4GBKV~7Xu z)v0H_m;xo*uAbsq%56}Pn8>}=)myRSfNL(7)*|Z{Y(>JZ0)e+*C}}m_Vqsl+>AX>f zaLSfKW!=dy{^wWO&7C>t3*Q$G4uPbi@)D`9V=1vyj-QTxr4oc@zWQx zkTbg!ncGttJ8D00olZS##X7UKyhF=9<4n_)DVG9VQ{3iNR0=#_b%V?Qi<;WbNfn{V zp2F`LYz~HXuDO?#)vjF8;JEd*`%&fm#%hn|JC0kq7xVW$6l~M-y)Zdn@1gpG)lY(7 z@l+^s7QIZ}t{)}ygnP-s)jTUzjb1d`Ry2DaJ|7pCp}&D&w(Z^pF9+$I1MF)K&)RoC yt<+p3OJ3;&Yj*+rr`a1>&eoLQwEx6EcR%AE{oh=!=d5>tV%*c!&t;ucLK6VW$@Q)P literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg2_secret.png b/TMessagesProj/src/main/res/drawable-mdpi/msg2_secret.png new file mode 100644 index 0000000000000000000000000000000000000000..207f3f861d9742b80d7013d5c0f184115f58efd4 GIT binary patch literal 577 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfY_+G0V~7Xu z(y1H0m>or2H+QnFQA%1of5Fn1NBp>@v%7EH{vr9Vxpv=yQ%Xx)do?-&Kd`GLBras+ zeO;Ajq&K-Vt#bFyg2^YVzuz^twl?;ZVoQm<=60<#9CyHUBJ=G@7^mK zeEHV|#yJP1&GSCpElNH*W%c!zLuOZWQm<(F1shJE?B*T8EArM!(aQPhGOjI#-_vv) zYuM`!?H1}Sy5u4464~sl<@RRE`~+3U>C%Q%%sMu)9c)^4a7o00S$P81t?dP}e2J3V zJog>ct~eOH_t&GHY%}sF?rD>}k~qtOdzxUT@rnF?HUEQ3QalfsV|cl|npPEVZC=o` zgzuunJXY4W1zB_5|K)vV{A#76{o(Ed(a9^qHwO!A%-+Ymposf6nUR_G%wI`>3oPN@G;?9CqAMdmLDW4#8<><2DNby_q zK25kTQpqeAefgJy-P>>9&+|Df0nCh)7;_| zb@fZvx#I0B=ew*a|M-6Yjq4SUuf&V#-}}KT*ri;4Jk{$JDEd5I{an^LB{Ts5UG3-> literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg2_trending.png b/TMessagesProj/src/main/res/drawable-mdpi/msg2_trending.png new file mode 100644 index 0000000000000000000000000000000000000000..095a39da70d8d14395525e2ddd2b055568ef92f1 GIT binary patch literal 818 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfoYDXi(`lf z@7$@r9-@H~ZF{}cToZSBaPSEBh=n~-I?~#btF0m~x>ZCapkt9)?jke2mMGCYEuWYh zP8>Z8UbII&RrBiN5TD4R=^C&w(f54yyPwC551-i^ZeQ{4`}cXpY3Jt5j1CQLbPc@1 zRQ`Y|XH~+9TPi+QjNKb};veu_S(7_WC`+xH_3;Mb67~9rj5)f7Yd(nypFPYg?Rbaz z{zG1qXxr1_>7s|Fgfq0a9d5eH-Fhhbk>3rT%Nf`H$4Km9PEpTg{CuVCu)oCSsL1{b z2EBu9ogeQi+@5VZ;}_@kqv>CTOWT;nw{f18`oS@| zKyb?i#u<&(3(aINzh}Dnutfh{rd;_Xja&WKlV<(cyk54q)sk^ndV%%wx7!|BHo2=Q z++((Xz&xdP<%KJU&7|jlFp)}R{dJhFlKD#OR)b~X+;a<#{Jyn8{qtg*|~ z?@1i73VgLY`Q0m(@`p=1KiSMGyCBLpvuy|KzZ2|R6^mZp%3U9K`O1So;!7=diEn2z z?_T*k_d$66-aRvaUHW>9$=_q!0Yi<{wI=C5Z@la(?YTeE|0iScllKdqYhNz7s_T&0 zmLj!IL8J89^b1#-bL7+x-jl6-I^RKU?ibhON3|dL+tyC|_T`J>6w}E59fw0dIIcZ; zoo&rC8&_MIo1q)tcAH-L;#AklsV($6^-8_dAD%1hFQt6NtGk{%mK$-`PWTc1#WZHg z<6TwPW;*U%|9H{9ic2L9!SZ|BgA${B?khiKUwV}PQ2vbOK#S*li>|U?E>3&KQGQT! u2ivcn^4Sx1@E&uBzmxiY>h_s#|Llc!zU15!d9)mqUOip?T-G@yGywqiL0>EY literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_addaccount_all.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_addaccount_all.png deleted file mode 100644 index ba80e881b940c498d41c6626494fbc2ed380f51b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 496 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfEXvcxF~o!S z?Uemq%#H%bilsUPvbl9#1VmJ(wk9aPu)c9)$w$vEzPYN6ds=)CTstIgprz5YRg8=6 z%IEL8=GCWDmBlAbP-B)iw*J3wu4kV1)SYLlm^)(?d@q~63EsdfcGiB;KgIuiF>0Ql zUS((AW5`bkS`^niVS)9^bB^=Zaop)Ds7ttRn{4@b-WIbPtj8x#^1rs_%^$|>Gk>%! z>Mge)nACMK^aCH;k;!~6MaPxXcw?Td`=XUylfc`tm!&XYD{ku&#b2F{ZM?K zeeU-GU%?}fmMuTi8+}I2B8at$drpIy!OLiK8E5qZ%P_$g#oBzPANMMx>o9$-WRn$K zF#7>xMy%RWj(@*-uf5zm(RV}By)$nvPL0)E^i|xJd9R1hI@t|ehfY2zUo^Yt^TL(? zq+k49`7%J@`$FB6bF-Z`yb09qGYzl3H@R}zw;MY}JNYKPw7sr0xPU`C9sMJZD z37k;NQp(uK9AEb1`Nqw{r;XCgK75xJ@Ki5}-R|&~;go@>)167*xUOE@!^!ud zQCM_>)z!)fhvVlDPhTJB#JA2%f2DEBkvNAk=3ffo4<%O@6jlW^Z&p86vuT$^@TtGs z7Os0Fx7hlFL`*aADUa8N|$T{p*&UlMauArx5`SeOx!&>pn2Xh`Qm#$!HSX5^>>CxmBpiuC1 L^>bP0l+XkKna_vi diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_ask_question.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_ask_question.png deleted file mode 100644 index 21cf79fcec0ee6dfbedf55650ef47144cf6c9e56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 749 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfhpY6#WBQ# zcj+{550OHd6XS;Z{ zS*)?*r9kBhXLjACz6Ztc>F9pmShsKU|B3(C7+bxrd${@k{p#l%|IaK<5}fLxQlzoA zq2@+`OuBVac7>#Kbb`dQhXOgdkM^|gUZBrEMOb9%!g)UwN@n~qdaWMO9J`{$Dx*oK z!&yH4Yuncn!#&bv3G#8y&JpZ8jVjozq%&o>4!ufNsSa&@bU`R;#-s(?SkxS<*wytV z50+gB{NM0tisZzYU&kDzzM2Z`U?~2;zV64QOp7mRhk0Zg-uVYv+*Ppsp7cC+W*~R9 zL8T4zbK5sg9}5kboew{>pRyy_;NPKkp0r<4Gruw{v5u^H(Uw)NcPsQr>E-E(4u#ij zW|%&id4pkJ)~&a3Ir(8*%{(W1{`1q^)f>UY%6${rx zZ5gL%sp7jqRZ@w(Tb8e5|2A2IX{Ff)1qF{>Mw{091rO&krk)fy`F=x^_=EC;wHd8J zCmOYOaOx+>s@S%!zqQwH_7mPvMbpgo`%V25v|^p2e;u`HiMj9a_=bL)yV|nc^_zEa zuzwJ;b5@?>Y?gCC$Y(R-{*Ci=`x0)+OpBWyzd%0g+`FELg9dv`^qe2aH+CfZO_60x XUFi4ra+4@1$ufAl`njxgN@xNA{W~;5 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_autodelete_1h.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_autodelete_1h.png deleted file mode 100644 index 48e44a2f8c1ab4d4dbe0ee5cf36044624d92e90c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 707 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfl1fX#WBQ# z_vlpbY~etOHshpO0zx4ITx=|?=8Xz0OBOg?kKGZV?R2m;Z>vgD_+Qq$X&2`Q6so>B zBqrigu<)JBny!Uxds3ApRy}z4V^8`y&Ek_hp3OfF8b9AXe`bDO>mmDT33L7(o55DO z{Gr4io~8#sElPJIL(J zJHFpeZ1Ie1vH!qrWiWZF&l;ZV4{E~v&iF4n7jV|TIn8d{g!>KU1!XCMjAvt#FV6J8 z62rT4<>CAv3}rnVdkbE*dEMH0fQ4=A_FVSlbxTfhyvV%B+j~}KH>auShI5BF<9p&- zrfrWs$Fwi#%5tZ({+GToetG=C$?r*{_C2TnA}4nyEUVQ{!0Q=TX`HUMxrB znR$gS^GyEff8}r9IAFzd6)r_Y#I-t_-q&w4WX#+Imxild*{Le~FYdi?l*D8c{$ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_bell_mute.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_bell_mute.png deleted file mode 100644 index 8effcfe002a8973144ca54cf3fe3b13fa3a3f32e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 696 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfl0~J#WBQ# z_w3a3*}{PW$Avou0)#Fot|0Z$8iY&($ z_7`q>J9>Cl3n(sqvY?}jL#V!?Y3UW`g@Kdn_IcjhBz-@6dtAwb$(7ch=bE2>^Uho6 zn|q+*wVMX?pX_zX6ZaWrpPHeYtG^S7nRH}_?bi=jJ+gu z%0%N}UvYB(ru1aj zL6_;?dz+JT%j}Z-6j{;>(z#wFTC{{46t>Q2<2qe_`j3p0+H~Wf80JpR6^*GsTGBlZ zu*n>@^_b(dT<3^|CTEgudSY%z&GoCR=BEGr-a?nxcV!k&Jz%`9*3fftw1c0__MH2Zp2(_fG3=~sIVO`F#&llJW6SG%!dpJ` z$y%SZlxV7&aHG77m1Q5Np>S|jGvgPZdtzO-kJO%hp0$Q)U%{=lSDL1lr5p&fKU9;} zZ@;qX)DNHdwwt-lJkC2O|KE9V!MG1w?=?TNCvdBX#Y$`BG~3kPxcXq?lJ!!04*&celh>OxeUy4q;hwbV z)6x@cXSRRHoAriwkxJ_GxPtxeTyhha$bJ3&_tT}z56ur{KMDEdZB}6Ng{L>aNVn;)S30L8l&yRo6y=_-elF{r5}E)tnEAB; diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_bluetooth.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_bluetooth.png deleted file mode 100644 index 95da6af0d0db4ababc4177fcd0b08c980dbeb9cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 558 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfY=)6liZnCR{VU|Y6111MbGA(`G5Y*-p%E~E9*s%&ER^`_A1`e;#jmoA){?- zJj>;BjRUrO4zVmr)^EuWdZs8W670Rkkz2;gF~=dcAnu98!8ID4z9%dj-)?BQ(z7}t zu=@IwJ+sAU&YZ($*?2_m%Bq!D${5$aUb%jW=N31qc6EhW+k%q&PV!onsb?&+W3JSH zoVd2Uw}R!~10j_svLy$2_Z*n8J#uB|44wnV9&--J+Bno}`o6JCt9|fjn&b3-&pFn2 zL=4Ut_I3`sw<)E#fu@cYWhK zF||-k!o@&JYzOO!w*eQbX2#6>&u%)!{S!;Sfy_OZMN)@zCs?#@b4fdTWJcOT@jvs+ d4Hw&A{mpQtP|V8KUmyw;SDvnZF6*2UngH8$*fanD diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_calls_pin.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_calls_pin.png deleted file mode 100644 index 7367353dc35e35520162db840551f67994c46e37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 474 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgf%*E5iF~o!S z?v#yQ%#H$W-+c}oS>P(Q_OrywH!QV{Hm&CcE-gFb9l^duz~?}Rzd*F=+-*%OTqE{h zG?aUs`YouVfZ2Y#@&Ettbq>F4{cv9}`Awr`MAQ2TTd!2D{G2+kfw%AB`Gd+kSiKbj znPUqW{5I+Aez3dpLIO|RfqkXkzB@NQ{q!@;PBWr>g|5ZJ$xpXzTc9^<>%=St<(}-j z@pG)7g)pbTFA8auE^scBbdugxl4IW(sW})S6aZ3-?Y9;M?b~{S&9#bN7 z%*w(SnXS&|A!{q7H1|rdWl5+W)pD>8I{>{6p)UE|@ImvTTvEsm& z93J1Z@xHbFHSBk0RQ>qMb+be|P+o>H^7-P$Cu{eeh|0UH`r=XOpBo_}uV_qy{x&+RccUV16sRpxl{2Hw=SC#$6V7V??dX{<6> zy>;C#*W7Ob=MM<Vq5@pOTUb*n@WSW71e)AE@DTyLx2_LGB ztC>G=CC#zV@R(`x%B7n1s+-jF$T;DW=}pBR8NoAcf|mcQxcyt1S@KXr^#qT9!qzv^ zzBQL$NI5$1&w+ggY`=L*?sYCVzxhqdV2!k^{G9__JACfBHiyZ5{Nv~>F4K5qPst=> z|LJo&8!Q-iE+|mQX=k1gaandvtlH{MqrU!=53LBWfmaM`h;z7zQCWt*0%UZDbu+F^`f7`4-b=2%W6REY6=T?BuK@pF& z$v1S?`EFBtzGgE25;5_0J9nSyJ{tGzxt7fhvmHE7-dy*oVdImFap#P!xK)`njxgN@xNA DenIB* diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_channel_14.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_channel_14.png deleted file mode 100644 index 5e878867a87cf0e2f791741f94803b57c67c082b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 767 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfhp6|#WBQ# zckNW`43R(yxANp3#>EngIJ6WaG;SSH*L2}&>UTS+)~nJH5pi?HT!kgqoR|V#5(VWQ z9Rn68C^B+OA9YVvbDPG<4N~_Sx1YFe8eyNger0IN)#3=| z?@eY4|IIS|!FluO)!PpR=Co=TFkW-byH#nye67G!EwA_N!4uPi)T|#aT<20bpMMv_ z*K2dQKbK#0i{L7L$nj-a)8RvleWXmdmM3cKu#`uObL(H&o_Bc8nGH`Ajxn!WAb0rF zlNyfij&WC9?l!dP#Aop=UVlwuPlM~k#&2ai_?RyUip-RlE&EeTi~HSy_!|NZ%Vue#QIZ>uekeGvX3 zEa_A5i~KXsKcCOYZ!ENsJGP%Smvfe8+ycWhJ!&$wU+z2D@4nN&kKLC0K$f0oo=V2D zipKE7wAwod*X_UXz9rFuUw#2AS3+gg+U2U6pQqog%&_UqSNwWF;Z+07OXSXr__vmP7tb=gces$-B zyDh07kAA6r@87h3%fq)Hf3CWvlhwc!@$S<3#)b2q2yS@ioE_Tu)Q2UfS@Ae%i|rQAxRJ5)5wrXP4GG2@H0LBJkD1Kj=wo~CjVL9dp*w9f2(({+s&TY5f!ieh(kqGaI>Ic zrrx#WW6Wy>y^C`_gMAFRLT8)LSfr4Byl~SM?r+CL#bgD4TXh`ns=dzTCB@%#Be`|c zqL2&9rxy4*tXgq8K2JvSoNoC8vxUCjOgBi!HB~I+XI}PzH!F3!$tr!G39OBQS7Yx@ z+MpW#V%0D_$_Lj#A9J&0X?^om(%eC4*N*|Us^;%^Hh6KvGbsD#NNj**c@`){XbVu+Wk}L`rMDIt647OYQK%S8N^lfP&i0HFZzXN zfHkLl!8^~N+eLC4Z>XMdUY&8J=YaN!R^N*5v+Zk&&t?f8p06Nvo%6DAdBW5il3SW; zB7XU%{7n8ipKGt@CZ;sRxy}IlB82={S UcxoY9br=+@p00i_>zopr0G#;gWdHyG diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_channel_ny.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_channel_ny.png deleted file mode 100644 index 4de64cd783bb4846b5c1f584385cd612a4d311ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 770 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfhot+#WBQ# zck2{i579u8E7bp)p0AtX@P*M z<7zX<-9nD$PPs}~Ok90(AG)_*`SRQTc~AK>%g^%~+3V(1pT9o0IQ^N3=u^S_-@7L} zU86&3(rS2W#*_y^e?VHvn|#4lWRm%e8FL^4g2_3GwP=O*Y};s79c*U z{R6|lLnbS_Lq1;GBVy6;pXbV9T?>v$kuTZ}C0Yf~f4+9%rPD#7jOOPbM7gGlGTnDn ze^cPkX?UGTpM(7lOXs}0 z?`_LBh+0ZkuuSTkqtkQ#iQ~6t7ThKiqGzss@Vj=}qkrtysY|w677M*OXuBiJ?D8ho zeII6>{44n5w2s~t7XF5Jb|TwKHz^t~G>kYg?W@4!Ure_fZrw@L~Is6wGD86L%P`Z9>pG?)$j!r(?H(}}VGDr59?2gV+GB8_wKZ>Dzt^M}7NAkXS z-e6T`x-Y*)+w59#ybbFY&vgftN)8B`8|V7wux>e|l5xo_s^-V!6Ah20UTKD8_3IoE zsA;RbpcBQ|D|B|z-vyCN^nKrdHovoQ^YIsJT=*umI+w79I~?{lanw{fX)g2LvH7Fv z(dBm!%wdjMeobbEV`%fdh>Rr}Dk~OSa(StHyD#Xt@19I3s5_c`cfH1= u#XH`8F_P)FSR`GW_)70%L&guYH~$!qMjfyeuw>i`N`IcNelF{r5}E+CZa+%^ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_check.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_check.png deleted file mode 100644 index 3fd562cf7987785f0f1e837112415905159c1c61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 339 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlfU?e%nV4DsN7 zJ2{rC$w9;|v~Amk*{&`EZ&f*(n&fT;alg3ge*Gd>RbNNIEysGF=gl>OsxmxE&kiLX zJ6+@ctjqDiY5xcR)f3jn9(bm0?z*Q<{f%PIS5=Pi{GW}cdC~h^el;k6nfrugcc|m9 z;vI)M*+SFpzHxkWnA)Jp^d?>5r(~P!{*PW3Eg~UN)&{N8DF#_Oy6h7qF7Sp}?{MOK z{3-HzdWv9#ANaV=HF5P>y;|_G z`qDyYjogz8m*nj(sl2b%T)1_O%1PcoM|d@selloV^-*8;Zd8|D=xt$iJEFftzvIdox&1c|5943=y_1) z&rPF~ZbGc0%9G_YpUvHnT+;L^`MqMElioIk%s=m?e=vOC^y}hp>xwK;2za{sxvXVtioaRjeT7@h$_A{V zYV$4jhDmZrG>9uyvnLnu%;SBP?PoW0N3)x!!m9=it2&+DJwGq8JPQ^&>XrP{XU3Jpljmwu z6T8(~-s5NouH>3QqT69 zY&&7|`@P1G)c*C6e|0ZMH)a=B97*7bG2VT@mMOJpP0FPcQ{GG{HdM=ApXs;m#e$6` zzQtO8^%;k2Hl?!nzHnZxE4s0!3o(sI*@!nvqs;T-{weX)n>0JJUoB{tu=M?q6&zvpkdF|6loxki4g*>+X>#v*f bWc_3Lias`X&k3H@ps4k9^>bP0l+XkK{QL8# diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_data_usage.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_data_usage.png deleted file mode 100644 index be327d4b0324a0e735ebc48f447f560370e50ab2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 455 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgf%+S-tF~o!S z?UcZ*Lk~!EDU)+2DLrcD zwx9X;e|_3C)y`B_jTeF=_!nlATKY{0zOZQRF)v?!4UcVA^r&)Mj z=k|no%U(Y3++LA4%VzJj13Tx71Q$HtVbt>b(UQ#*-fyxu&(M0qz2)V-*U9y+^Y%yF z+07VkDv+ek@%0|B#vZ0$huso|ADak&n)2G7H}1ro22O2UaYp&^yQ6`H=LF6t2Aq&+0(6y<|!<^Y}~W{^5%Eh_aDE$ bcR>H+8|7u&Y;FMqkAcC{)z4*}Q$iB}$1AKb diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_delete_old.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_delete_old.png deleted file mode 100644 index 6c6eba3800bea0f9c7134557e765fab2fba2dc11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 456 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgf%*fNlF~oy6 zIYA=h!~g&FY6|aIAC)`sFxxlw+;z}#-}t+sZHc4rUXCT&`22KuRj|>q$RUC2h+Be~P~%x9l}v-p@*ejZ zxE>`fe%<)FbEAXM3aJ)H261Vn?pBp!OggtZ#HF@2Bt-E3RdCYp-cVVo9PmLqgh^a_ zw%wbg19zmjjwlFp#j=(Kc1-)f`a}gS`bydkVy+FovAr zO}WRCRH$%|`N;f633&#~OMD%!jW>EHPMlbv%f5vrWRVl8))sC46BLS`u6{1-oD!M<2A!G? diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_devices.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_devices.png deleted file mode 100644 index f06476cd9b17a168e8ef067309154d4290fcdeef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 420 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfjL*}>F~oy6 zIYEMzS(d5i1>cYV|Lvs%d;~jYUVPf|q&_VrrKTrT_reDTg?}7JrZ5@LU@eem@MYQg z$5f!6{n1W`Khhm18Rs|5TE<+f|U&OU*|CgpJT1zdQjwW zcpJ0f$_M-b%?twmM;Ct-Js}ieH-qQM0w%7I51fo2-4*_EANg^hbOFB|18;td7E>#e l(GS)qXWYajQu$*z7#ISZA4Z3-t5^aGAx~F7mvv4FO#p)EfGz+4 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_email.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_email.png deleted file mode 100644 index 376ea16dfa3347d6082171a1188c862bb1b6b814..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 557 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfY`Uk5V~7Xu z+bR3K4?Bn)7uH!R6FRwyjEWKq+O$b&}@Uj6TI#I@wjn@9T}Ds=rw4&2f; z`GLxvO6Pvfzj0XqrY3^X3Xi{`EDXvxK z`Bmw1iQA=ic}He9>8@~)bg8VD=f0aT^XIyhi@Yf{!M&XG;w)G%O0HQk^ZJ6LH@=^& z5(`Td&@<3C3KQLFDRkX{i&dgIor8Pvzb4kXie`MO0=dr73fE8VQs7iMuBE^9h>gBu z$k&cPY>$pjX|pX{to@?h&Vqen%t^WJTYjg=W+li4UdS#y8^>|xfYph+`&yKG4ygG& zs7zV2@&wzaZYI$i309o^0Zo}n*&oi@1ZnEOcG=|-^kzb$#<}!o$@>r7x$xpv&VoAG zUa`(kui5hFWh$JCN%y-RVA^cIJDRKHFyo%mdKI;Vst0HJ2r`2YX_ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_angry.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_angry.png deleted file mode 100644 index 4917f47527ad6d41c249a9082436e533b0eb9efc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 618 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgf?24z0V~7Xu z)v0U!nH>d=zV}d_svyuYNo~m@3n85*k>GaryGs-w@-NsX6Jy(yDs`G5D2jr5D}zgbH}H>CV>Kb9xaCT})B zZ$W{i%L4XGYJM9(^{<{R(j->FzCA%c1Qk3YhXw`k-S?26sAN_{SKq;$)UuD;70*Uk1lsd%RP_*S3s+I1V( zJgc~`&viIY~cz*7xNG?t8PaOG;U{>-&aoAMM*rpY~4NaV|w#NBZZ1 zih~E^Zr|ZO724~vk9*a9!H)P~*$u`>U1y?u7Epm_Fl^>bP0l+XkK(7N^i diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_back.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_back.png deleted file mode 100644 index 7b5a9f347891bde1a3dc4e7dc02df1841f5b57bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 271 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlfUReHKOhIsHM zCrGd^R%GCA{Qv*IH}gj;1+&)9z}_~gI%$vpOiA9WBzcTD&VD!$c=({A!`XyH7yjS{ z4;411JLvEo@o)HHEFjE0k6HAmfsxTahp;m(XBJA&p5@qb`QqYf4|t?L_^;gUvxLq;(JxW464?`4_e|w} zqv_`?c@2cKWy;t^B%jv0fff3i9f1FbzU$ndbXs{?Y|FLRW%z-uc zj;JT{J*lvp{n2jUs-HhyE;*drD;_%g_q->Su2k8g6@PAB!zOXd3Dw6>FH&Jo6f(MUZ>Os$_lzc+IzcI)`2O#k z{3oR=sJpG>uRk{VdBXYmw|=bAezE@VtEc@h8`Ji)W<2Hh|8e!d{$2i@t;~1sMLrD# OMZc%3pUXO@geCxDzzJpm diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_busy.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_busy.png deleted file mode 100644 index 2059e0b32d1a729db4a1a6e53e6020afe9285900..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 479 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgf%+u4wF~o!S z>QqC&!wv$jxl@{&xEQ*@JKDQh`C6_{7%DUg(=Jd4(z%b9?xt|+`g%;zTv2S z&?El!+@GJz)Az)MU#;I><-?eJ``iQF1Fj$DOPZI))*t(`gYltd#sO^)-}xJVrj$;~ z+Q1h5fg>z|@f?%gYhyL{cPsKjgbvF7VDK)ObbH~(2PaIQe^8omr!^yTLOw%1c z?~zY^R;Rt-D(9E*S9Xh*>v8;?^1Qm>-p@%NTYvJ(->LqwJ7%lg7vFcK9KP~5awm#? z)xNP|t$BfMZMD7RvsDYPtqXMBnf$6qC*YfNw`*N-=$&`pR6ho|-aM_hN~1jXJ9k(4 yqweoqoor0H~(9(C~5hGVF2;lDw0nc8eqK$ByFnb1XMoTYIW~me*7l`1!d|X0`)qRohv|&`+GleCj|Fp5TR zKm9`Q;i2nae(mAn42=!ByTBUpN`Ioy})IWUdbBJWf-@19%b2s@*bsAS0br!5SXmEW} z%Jgp%Huq<5VCiCxb7o5yI2xmRO{?nPr>)7ed)^A!gzDYT=?UXEtDP?T`-Yl({5_!< z>t$cAEADeX|6)61sq6h+C%4R(zbs%+)Pu-}o)$!uQ%+ zZOsi;Ki@4lzWk91-;G|CkM1^#z_?6|mMX~yO2|8@kfi8-G2 naG9Ur`_t$Dr<$?ddm`dv-X|#jG7h9h0l+P_#a@)ITRictSQ4j z_aL|Qtu}q{113ur^3QYD%3(G=k@bM5roB}9R>yyCDILE@ubon+>z1?EYv(j;Fv-5F z&0cZrx?+E{P0RmFf4qNeO8@8ZXZeGFj4L=c*&8G@>pjSxEZ6OSTS{4dcVeO8zIQvq zKia!Jv^lZvpzVnRD_YiU{h+YDGa`I|vq9$+?RbO4=Rd3fVQ~%9o^9 z8_RZ@oU`#we<)ki60vZ?oPXM1T4S3Z9r`sdN$PZ>T**{_hx|g;k^|Wn%2((4AC6IC zt0>^U=e%yO>WcEOmFt?c&l`LVIjH&LQRO}M>EHgJ_|IxMZ$e4=x|dTy3B}XZ&t;uc GLK6V~S{X3_ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_home.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_home.png deleted file mode 100644 index 6c92c48fc3f8310253573868b458e817bea7575f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 627 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgf?5?MaV~7Xu z-Ko31m;(jcHoG14kop+L!6>M@ULi@@X~P94?vJb@I!$6tbJtFAl9u*NRTgBeWfx@? z%no$o$`x_k<02@$KfZkW-Lr49Pe#f z^L)kDg;ukcFXS*U;9q`0G)ltNVX@-wmx9^WUkH?3m)5Vr_xc0lXHzEsh8pHI zjeJV0|1+@YZs1Ry@!`v=*NbAAY*U1@mi^UIyU3|tz|CB0Ej8(iPZQrZcFy@N4)QSv zm%jb}gGJEn%F8VFhkSht59=mxW@6`R+SiqyC)8fcWtMQ;txjvfN#V=ZFWF_wuFfv6 z6)FxWVzzk0z2Nm_$Cf`%4#7%h>m;(BPUK&4Kk(=K_qkVgSpTtkvSn$-#MF?w1HZPo zhnGEiX8tavKGD=SA?vqC!HmiFH%=yo9d*)u#d5mj()%+#y){72C6+rcE$6y9?UrO& z#(D38>dw9$j`=({Z>e}*{dLCVpki0piNGC4qdtaS$tyXL8PJ<`xc69OMdJ#!+-p~U w9^dc7^+jp-!IIv4akDmdKI;Vst06$ywyZ`_I diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_like.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_like.png deleted file mode 100644 index e8c4789309069c9931f5d1043d44f43c2c15ea70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 566 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfY=NhXV~7Xu z+sU@x%#H$W#Znsu4!Ug=c$33)E22Y_#Zf?Y?$lm|jtBM|HuT)!2r~;~^h|uJ-Zht_ z$uV2nk=vC!P$!8?_|fN6xi{7r9zVMIQe*qfxwC7Z=jEA;{VopEn{F%7V3^Tc!XVU= zYcNeYqjL>s(&`Ufo)Szq6I6HwCS`D@sdo4`=zM(4)=_eRS4P6{k;sW#zUvhG8|q%^ z-Em$ns2JC%y*clMvOv4Z9_LG9iM4#M%k&J=npv(t;EQ{}+hy=PPi=ZT(~5VJC5x8b z-L+$KM1n2<=?@&;8y;8QW4pJNQ>eD?(&5)8xtErB{GB#`eVNUfL-S4w%|AFPlD#s^ zxFG4e=}qpW+Q5USME}m2x=Q-qr!7SSAur7W&TZSk>vp3ik(wRg*_e}6%7=IQF^vd$@?2>_}M)+7J` diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_love.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_love.png deleted file mode 100644 index de4e490c910e4ac91f0bb2b734f54194640314b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 568 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfY>}snV~7Xu z+bOpCEP*0z=@U4-Rk9;nx?DKQUTSXGdaM7!>n*DnJ!D_8MQfJnA+HGn7lkgr{q;sA z$LUz{q`N2Q&fb|e&1tiGWzl)d_to#tytyNLI_pUNf2M6O*=)|wc8_lI-_aO*dzYZPXsLOGloIEl7Kna8XgtaqIUf#ew zRcq3Bt*U9iM89S4y&!s6#^Xr|v#s>DMDI@mw(jvsVb}ji70PDZ?;+x|A4P>%JDZrzJ*0; zmwu!@IP>DTiu)JdYdvbs2Ylq7sGO`nA|ny@ka^kJbqkuznTuM&o4h<)J^i|v^-d)J zm#EnFP>%0l#UZBI2|fpPW1P|*LbxtIV2XJWxa7r@#zc*SoGM>9t8yPS%=s%A+aGFd z!RBAU^3V0e?S%}VJZJW7oq6&IoA3vY;};k?3mnYO&v^Fg)#i&9C$3*%tz7siq<(kt pU%nd!0%i%qZ6$jH|Nj#I!4?wIGkO0_iCdsp^K|udS?83{1ONq<;g0|S diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_neutral.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_neutral.png deleted file mode 100644 index 146e446e52300819c23c86338393c6a68b383ad0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 567 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfY@w%%V~7Xu z)v0^Em>or0%S|J0-io-vs&Z6G<3_ZHoO6!Or6;_1{A#$^o96l_=BiF|7tmhodiK}c zuYNP`o;{M1=%_#E%$?%%dpCcct@88zv~@;}i!`cUuq9moa(>HY6JPtY`PTz>@XJ)N zmI^PAsDJxPWvK$Y`~%LOgA6&+SHzdkFuAmDi&SUJ1F=2Lf;T#97bY#67-qSjzsVzh zam(b0hgSM)pFa5-anyZ@>Gdh@Qx9P(OZPGzpBLP{zBim#_Vp^qG>2uM?acppo)kOUsQ&SL@9xiYqAcd>MT&h& zl`o2Dv*=0`$eSzqLgI8=V((IBlNN6dE^{^x^Wf|8+rD4k^6Tr)ePKd*$EHlme;~4A zz3El8dkwxnxpUac56&*hH+;IvZKnRZqR$#H9`rf5UE-;4|7Xcz&r+Tj|3&7O_?D<% z_YV#AZnsTb?#7w$o>Z{R_#F~sX21Jbz@FR3&!t_wTP*8$;@gpnuYO(kos;zOcyH3w oU=cC?-y$!c=^M*DIsa`x<0?!3O}DSz7X?L{r>mdKI;Vst0DJD^lK=n! diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_omg.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_omg.png deleted file mode 100644 index 17d6835bd4e4dce376baf829d626a8568eeab455..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 642 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgf?2V_3V~7Xu z)v5cvm>mV$i=`GX=#7v(qQ|m$nQ!W3r$?J_{NP~RYGU@%mL>iG`-k()D>$SCqdVtb zTO_bQepB(C*mpZL1WO(im!;Pk&%S%xx_IaRyn7nbFTPe)mWXOt)r#N$X!HK^+4^T0 zF--Dtig{g{;lIktyKFKJvEMn!7m{#p;l`v>p2}}MmQS24;P*gwTcXliajoYjmsY7& z3%dL=)mm|wN9T}~&n+jZ-7|_Vd90qbEK|sqY3|N#YvT8@9KX=29kE@hH`ZsTvPM%@ z$n1YU9={e8$2M?VG#H(UF8Y1jj+RH9Boi;DhUOdd)!x}6Yc!;I9FPoWb zLDbg^Tl=IAYMm&#|NB@3_gkl%NzX)!cP@}DzN;5`wWLw~#*5`Uy2MiQSaZ8)s$Vbr z^@0DA=`>TH=~b+AA4vY^NDmYE^juHfciYBS7X(woT}8iakY#rlx#!6KQ#!}(G@EhP z@>ph5O_j`;wN)#wZwSn|ZnCGKuYx!3fY0No9n8ghufDtPG^srY0qlhfb<0 zaVfayx1hsxT3jkB8%(Nh}ysZ+KcV@-n$+=x{%p^-s{S9mFFwZ&7QnDQhD;p zH!X`Nm5&ty2-cvop-mn_S((PNlPX#2;|p)xO0Bb zTHc-m@foFtU!*U*e&ga9B>JaGFN2l$yC~zY=oziSovzoo4J=vNr?l6wsju0`9;>|j z^VclbM?Pk|x3Wra>~~(c_49?Vtm_r-|BAY>-a$Z9tZc#-{(lX9FBe?hue{$u|A~{X zj`Qx=2V%d>HTbW0Z}nWWL0Ep#Yo)96wALy4Cvt4zyc~FaYiyMcYOcYYD?p;HxgIW^&A4+ z7sc)}-q&x(zDqo|$ns9J{DQ@^n#?~)pSi9kw%vNS?<1ZkQPtABiO|BQNu8Xvex$?%~$(!ST&Wv-4H!5&UyYO{~ zU6a@=manyJRu1KpnhalVY);@@A$tC>Y(!I*y<~KG0cXj-Uy6DMn4c=RC!S@!a(~yE zwHsvbMeo+!azgM=@&a=se%^r0w=|Ec-Hu0cyqectq)>j4 z;lc!`ck!0z ftLz{CzxMRT zw5YW~vFmLBXUY{elYoOuoo_GPDAGPH>-V336RLOa+jC`Mq!)k9oZ^4Q?`+@Sy|c&T z$(^#d?QEDOo2uD## z9{*7jT&hcdn7m;6(-^LB`i7~>cBx74`yanQSZ>i|YSD0d+fK;^sgC?# zB~z@nyQCrnoo{gmSDpYiA%UXrP@kH1p={6z7Cwpx1+hF?y$edN6&Qc)nF znrTzB!^ve=suK9q)@Cpr5jn9=@@&Nx_TH}d>mU0|T`01NO%wj(exrTL;+X}rA1LZb zEbR4PeBI_ew>{^)bqrI@y1(9jQO;S*TvBXfS-$r-+a+!T$Kum#3&po~mP$VQaBM9* zyNIUT;VHMD9H~B{bmq**8gA{V-sS&Uw8ILRO89@ttQ1^y)M2~2_?oRxOne*PXnxsd z!opIu?tst>d3ym3_dN?1%sKYlqV{vWv*bPp**Yf?y+f)yIFmPUN9LWk{$np@;c)I$z JtaD0e0sw8k4@Cd~ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_sad.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_sad.png deleted file mode 100644 index 8e9c986fbd5599f99a48c3a0f055d3d2f2b6dff2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 596 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfY@er#V~7Xu z)v3F^m>oshHY;uPT)3dObwSePpjyVYHNxDEOw*Lu=BG%j5AjLcB)l87E!F`?=&Gk z`A}Z$L#_Or6EDMRRc9-FzoRNYMJ8C{S<9VY#)=B;@3P-+yK*+w@5I^T#~#dKEpt=n zJ#dfRc7sIam&yWOKIP{fZx2Qv-c~pLi}%~ltObT8qWfoOtWH>&&{p{RMl|R0taYYq zLdDYVGJ9!%O)x(gb!z3|wM{#x9N*SEb?*sr?@pJ}C)?}}e|_Tl<+W4+{{y$$NlT)i zd<_q4JN#k#qI=!K1^k!AUp21&R(qy*tJ_kK71mFTYx*BZykS{!dTy^)kNuM?@5P=h zxU%d<`GXZA9g55KKfRd0ePts{?T(Cs+Y2PQj|Te1C;9KoV4Hk}^?t3E-{Y38%17(J zZ{%KGAQb*+_mi1_?iA0}>pe8jlP~A&suM3)*Wb|yd;54x-NN7}<^PPjCI4;u#P;`y VAu~(Eu~ncL^>p=fS?83{1OOTH{EPqq diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_sleep.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_sleep.png deleted file mode 100644 index 8a58a9671ce7363111eb0432faa34af87bde267e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 515 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfEZ5V;F~o!S z?G#6ECP#_3SWST?-AXN-rEB!$TsV|Cl{kW4JlnYV`?|ZI9_W8~!q3s9#9>u>A-aTX z56i>_l^iUpD;GpW%@=Gci?yuMdrr!nd9!@0X76+S=RUKX-_W`#UV!^g{^1hl zBa-or7lW(cu^i^Gag^svkQSQf6w7!>IK#JMnf@WI8w%UK=f;^Y|0jMoSfy+`dt^sp zWbT}!uhr{aavvq|Zsw^uSZTm6F1pO~#UW;w7_ZvphrCj!RX5 zy5$3xL#}TUx!E<_&*p8sz0NnI_j~%8q47soaDHum#(^j0ad9epTV_lQB)!$57(f0n2h zJg-+66`a_Y1vy!jI1{JBr{GuWBB3pRIkN}m(m*i(5YAUj}TA(PpQ>w-D1Nk=4=R3xLF zZavojSsd!6#5n&We{}_a^2gOyyZN^M{O~{~eqoqMkiUU+@`aDT+pa6RE@P+^cPrp} z`&;^nB-08m)6)|7E1Iettb8lE3f49h zmMnky`s~}bdynqFaM`rKY}&qiUvyT4{#G;nFHrN&n^iV6Y3qzewX4@&ex4|45|+Q^ zk=44-1+zczvpX2^=Y#l@Hjx(20O{uP3-bpp6Oea3f%p+YF~Kb z+`*Zm{6*u+{hT(r2ZB`(OxiA-KWI^+BOaLZWYI1o1J2wF;$H=-4%|xD-PL_;h1wSF rv_&NuMRULUmOQwYzvr$MzeyeA++X!GGoIZM1Emd5S3j3^P6nl#Ui)i|?va^2G?UrovGwVs#Gd_C2@(LtE|YDDfYbH#;Bv$At_USxXI<{q80 z`0quj=~>$UKD&HYU9dQ!#pw9^%ahtJK0hL+aLZ#`O;=-)QCRRX9iia$J06^Ac6n|q zbnWRZa~|`#lfO>;dBs4e#wvDF&65(gb56QP0>9M6{#f^r=a|j^89zl{fBIu}Y*N!_ zSLLF__(2K_l zPEEEy*|}cWlqq;Y;acI#f0smkE%-WP-h>%8%hZ3&sY$RoY+GZs{H5cU{^M7&Ku0)^5!CIy<#o6~lZ@r1P&P175(HplygnrAdDNnqebtiP=s?ykn8kILw zKYDJeQ+#cEp?8&f{=ZGZ!dzQA?;VM~9{R>}d*jis?e`tBuW!vxlFqadtzi5c^4WmT zdcm=-rSW-no2$%xtr8?lX5Kx-_~q*ApY|K|4Hf287^HkF1f>v9S3j3^P6I0IFL^QUS|YFi{{!yzSmNWq1P|DtO^fJjfkm2M8tm!2(7E1a)) zsaTf;9ElO%CBarXL4YOvV2IL(ziX#_{VhFjY2w|;vOvMA2b<3ufBrN7zwz%g#>R$* z&tw18)pM;=dU$1BYs$(O$C;R(HXO6i@-q?SluHz?4hZ7c3g~xSvBx>-im>4dw)Tv} z`5}+jX5J5Vx-~W8poE^Q4d=m~H`*tOC(CYBTd8)>t<&<{^1YqcFZz6FVZ5y7sQ$M9 z+(8-hWX_WwM~YWWv3%TgTUm9ppW?h{S*3&NpaQt7+z6chu66EihOu z$a}GL3#iGI5J!_7-J* zm2ZyOZ*=aSI?%bkLbP&Q{lss2hVAoL6n|jYedD24eZcCTM+@&-b<3~&H|=M1)V|C5 zD*eshYMr;-oNIowRLA@4bU*!5vCT17I@3Sz+W7Iy-S&C?**iK-a-6I)#BNiw1LN0!+Zk!+}8)aw|BnSynXRJX8kW}x$e8}3O;L} zq4OnCeEZ>+Tf!xROQy%%`0l+zrRUN s{)iZpx8hf-KE9mKmXy_e{J;EhcQYM!w~kNS#Xzaa)78&qol`;+0Pu_@1^@s6 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_what.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_what.png deleted file mode 100644 index 32aba82e910d016cb4b5aa7c4aa3f72d0f0e6811..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 747 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfhp9}#WBQ# z_v%zzkEwwY$KPvvNm;h=s){IPBs@|OY7w}>-r*AL%e(8!qX`c#gmCgUZsD55vHeh6 zL19)G_oA&4%}Zxb@D^$97Wk65{l5Rb@1N#<`D8 zo%7$EtbSm+r=c>U@pZziWr>1Z9|ZWCi|0t+@%-S)^7+jb?z;vY@e4Vt9&pMu^X}k@ zKQQB0xdFTO2A@*i%WcOVeN9O1S*F~>y+HQNkMNIo&;Qs{aec!Y=fgL7XMK$`I#&K5 z_oQQcq41x!>5}`eE}hwUp@8pA%ZWmXl{QY*!snJO?%6A!tMGApy_ZmD^by?>eFy29 z=F$kI^Zgmw=3-t!CT{x~f**9wJD48Pkb0vjcf&jXCFKcwvb!dE|7*OktB!ASz$%kp zy$jySMC{vcEFH2xrPZf`=N4l|bLkE?;}48m`~|L5*=*cca-rAIrE67 zL<`QmKO$|LxF4+k;mlpq@$2C79cMn6A5i_kXLX6`*s?3jAI05@zvf=RoVJOv#;!qc z14H^`i`vVNPWGO4dbv-?_kz-fZSpLBY(MtIyfvAzYp?BfpEu3C9Dav>h@_lVSL9C> zpJ$h_VFIJto<$$!)D9d!7r*U&u=pL;vlYJeGpCw;Xx+mq{*WW*p!AFf*Iys{Km9M` Xt528Q1asHagA$sjtDnm{r-UW|nZZF` diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_work.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_emoji_work.png deleted file mode 100644 index 829ca59ca69426d0d59bfb7c39b9ceee89b29a16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 485 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgf%-_?+F~o!S z?UaRn%#I?i>5T~<0v=5n!XlhZfp&~`3<3+Xe)IqBl={KQ>Urk8ZHn;)?0U&rg_n+0T=kA`NSs>5ozuitv9#>aX00W; zB7eAlGN1k$s`_W8VosCbkK7Zt*UV06c(5@{r0{fb1-oEpF^8Rlwbl%$6RYL+<(!nC zu)gv9f@wxm!fkcD>?NPg*nY#%H7e+nuZ)S*>jO5;-?!{r7N>qYN!|C0X_&CUM%~O^ z5lZW&e$@QnugTN<`G0o8nO!>n6LX)0@^=?>wi&P=Tc+L~apka*4SVbiJL$yf&nK@; z^Dbe3+o&8LcWb@LefI*klG)2z@-A!l9jNWfTv&R4sr+vJ)f>D%fP&c5)z4*}Q$iB} D)8w(3 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_filled_fragment.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_filled_fragment.png deleted file mode 100644 index 73b8662e32f5d1876d1bd1cb261e4675cd13af58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgftjp8IF~o!S z?d0>?E`cJ)?;nnc*bowArZ(x=rM{`3w55-F1zqbBaTSTa85Qx1TZ22>bMc1Y&6_^3 zpXmQ1an@%3;_6plp4~mRXR66^ySc^h{?03YxA(Ie$E$De;}y1;_bkeoRda3K(vJ5l zBl!;-c&$nGu$MWY{pZ>#j`ImzQZ>ESH}15S2|l=;z{&Msv%A?h#n)LzM~V&JOBbDc z#xCQuUYo1a{egs+LK%1Wg-0f9kF5T{kbmK=^n_BT7?taGjf$eev_AR$0q2!z zrS=yWM+GkZ7=Fa~f`;o48JUCP5xW&U|M8a0;&^Z=Y-YtF-U_p9seQs8E!Rc zkQR_OX6|~jbB0Z<*J8#AZHw~`aDOb@l{ZgID(}Ds=>o4gA3a{5u7AV2kMX&*Y=2+J R)$gF#@pScbS?83{1OQb$-n9S# diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_folder.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_folder.png deleted file mode 100644 index f05209ea8a29e500e7adcbfb68be8c156dcbfebe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 486 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfEWp#nF~o!S z?bN+~OpXE#-vc^N{^SwT@z|ic@W?Ik4UJ4y@=f#HIJVCH!Bld6L1*V&{e+~91u87Q zDoxMLkLMOuN1mK}X~G>9`Qpu=H(M9)bX{31u70oK{qM?aT?GQ4&&nL1dFWr8dQcZU35@ZX#GP$xd+mVf{tc1o>nW}73n&6zb(76lH;*W4e3JqIR_t} zeE%W#poE=Hq42e~3(L<%{jvP%c+SCW;^b&mn?l)i>1WpzmTIlJe_-#!=Oxb-E}6+_ z@_y=1P-vYnYsqWAplO@hFFzHRd+FeE?`EF)gr*a}-Bt=;w0^6gld~d+Ia$U`S$blw z*0EV~6Zf_G^S-~|<1|C<`=w`QPr2uO%(PE5zo7p@kY&24Rj4E#;qxRnI^dbH+6U%ehffG?&e|jn3S&=KKbLh* G2~7aQ-MAS5 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_folder_reorder.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_folder_reorder.png deleted file mode 100644 index d8c7f26e1140851d1d3192ff318cf46c2c883e9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 534 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgftijX8F~o!S z?PObh7DtKW`L0eGA|WA7O&vd2_BF&+w?0vk+Uv3?DAxD*^$8h%zAlc6ft8seLi(*P zd4K-xHZI?sywh~`#EMDv^QQm*yy^TKpS9nvt9}$WICkPbi*~|^=Uz9yKgm(|EPC?1 zjrp2F`N74l^KYM?r?8NBnM6_ej5BPyANY=O3Gd?!y38=C)PC*x@(sri^2UD4_B`PutlrPUROv(v-cjI@m)lR9tWX9cm+hWdS?qDmkzH{JX>Q|di=?4NOd9r6s z3;1=K*Ez&+-}T7v{v)ekd47uJwqGo^lU_SKIL>^f!OHx}&(qJ$46_^zo_wCJ?I^U{ zF>LNN{Y%LgeqNfIH}SrQ+56`@JxiHq>|zOIf9ZSR{&Bkn3tF$G^~q1`-_sOSNrr8%X#j39fOQ-E_2G;17@BAI9d44c+n!LMK1^@oh&z zV&slg)``*;XWqU!b355azqf?hej}scNhf))_@9bLyaNmi{xMw2Tp@OIQtfhn1sS(b z%9ih=?m7Ny;SPy89qsYHpxI5ylG*Ny!Uf)-^@l~}E?oO6kgTe~DWM4fjvjtL diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_help_14.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_help_14.png deleted file mode 100644 index 284623309ca2dfeb4a2e10c5fd8ce21ea632f1e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 729 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfyvp^#WBQ# z_vqBK-XVb!?R%5z61;e|G<7evg#Bf9Yn;G+)U{DT=!x5s)&zlfceVt@Yz^QDciM7d z>b9b%PAuV<4s}cl;`DCy`N;fv_3O{l=XcK8S)OOC^^kvFrTzKWAMaR}7Zv^6yvOHr z?fv!3mb1QdR(*3=$>+d~=asu}Z0IFtzpRIlTy6T zcSyha`3Bxg+R>*oGWRiEj%xk2P$5rnYu1LnwuQBtm0~5$U(}Wg2w#}aAbZ>HPFJS2 z@8t>HR@dbV{?0$^H}PKD1h%;)SC%f+yZP+5e(ux=>zoZ6bqZB&IG)-~j4mq{oZsd* zp{enQ{v=5`m21sW5pBFj%Q*fScwEo%Gds`wA@}3<$@0hY+wv~h?qD~6z*&CacvP;$ za-Q9plQpO9|7Wq2{eFHi_Y`1ku6fP5Mn40kqrK~nT)CC2ckNOIds%|$7dbAMKjQaTIb|NjO(=0W z=v-c{WY^p8kp5S)$@u8?4ee!&|BNT3Exht<^Cq1am%NrJpXSw9y3TUzh`0v-_03(8 zE4Ht^!W1s+^R9TbHS}*zJzukx&KR9Y0Izo;=*?yNByr$8$$}3-h_N;$$xcefq2<&y#mK>>{I1 z!@a+kq*DH5rIi{=gq&Bieqi>({h#uekMir1^uyKfNChTZX0t5@B`Z%?KbLh*2~7Zp C9V(&# diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_input_gift.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_input_gift.png new file mode 100644 index 0000000000000000000000000000000000000000..9ef3bb75cd28fef338b008e5eb18e3a524a0505b GIT binary patch literal 607 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgf?4+lQV~7Xu z+iCmtodZRV-(S42c>zzI3eVID5gZFWRMZx?9L-pDQa<4u|Aww32}h3HbJ@^wGC)}I zh=!ohtxLaZZdX6uR(aJdQSkng&*v(iEFy}fq**S+~uPCsSy)OQe9Nj(1jZ~CL+ zAD0zmg{?Jqn95`dwe#$#dZ6-$M_Jl&T0B*dqwN7 elv=`-x4$^A@VK!U8`P(OBG=Q^&t;ucLK6VPtMl#v literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_invite_14.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_invite_14.png deleted file mode 100644 index 6c5b79112c542b374f201aa765ba7fb9c30cdf31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 764 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfhooICNId$^#A>3E%TKciBmdlwQ~EKo|v9F z+;cSdK*OSrxO15^t};oo+6JCJ{b$Pqedg7_n`GZf*>W^qjd-Yhy>l<~uP4rRj_fIN zEZ;mY_^CQ?xGa^loIk**^XdZYi@&GsX>q$?>oLvY{@+ce{jVmmPmrl&DlzqG)>|uE zb$~6A&3}QI+QapVYd%YT=yEYVZ{z%?xqw$H=lG4O3C^#$EFGm=m#+!b^NnLIas09A z!b|lNR}FN<0XBu@%!jU#BJacn6FAje{0dXN9<~WUZS&jrV^})wH!A o1kIGWMZO>U#$^8O{mXiWW&hr+oq0Xi1eEeTUHx3vIVCg!00go;wEzGB diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_limit_2x.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_limit_2x.png deleted file mode 100644 index c07216aea8e627fe8e4ee86b67175efb1af2e7c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 576 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfY?Y^rV~7Xu z+bL(YT>?c8Jipj+%xRKIv(%)1w^>G}USTPzty`zG=Dbz)w*JYUvO1+VDf8qNofJba zk4sZ#E@?aVKIZw}cRufPO)lrm`E~bm;rZj$-)mc({$F|_TyTe5WBO^sH>MJeY3Bdf z|GJ#*d~7j2PWS9_MgFZ*d?gd!HLOd&vH9MSTN0|bN_H}LSqQGqm)p(oH|&khbZe83s-UwzH1Mm9U9B!K|Nq%?(p z438#o$kvZUehfgj$DnF&pXFPxa0+b7;~bP;dAd`0MshaU4Swo@5`2ReRn z@~q2HnEj-O?aFS!)vFuXF6~+If#H@8f5}1F3ET~0T8x^LxUDDL3p8kQVqgex-nH=G SoY0L-CiC#wQYIPw zA})vJJD$$}=W+i0^V0YIzbD_X-n)#$>chi%)#tv?sjmM%H$MFO{=CS$@)Mp{+TU`! z@IEE7EN=U@Aos^SX%A%+U z>NlHSyLC8D`XysD%Qk0c`vu!8<-YBg4c@wNnFPz9+#6o}Gn5zXZ8LA3{(Q17BcGvq zmdyn-%Oh%zo3F{;idj9+mtW_g`VWq}HTFhXX$j(QHgedSt@xv^w5#_SqeU0YOy!1w=I1?E35h6fmtSb{u#gG?k}9F_L1HC$U4tk+pa}Vp0zRm-nH$!XQth- ppJEdBwEWU-VVPO~zfF&Sz~wq2V#o5k^Eg1s!qe5yWt~$(69B606?*^x diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_mini_checks.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_mini_checks.png new file mode 100644 index 0000000000000000000000000000000000000000..e9aa7fea473b689355e7771e405419ea3d304169 GIT binary patch literal 284 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uuz(rC1}QWNE&K$e+B{txLo5W7 z6C_w&S`YmH|Nm!Wg}eZJlL^DiDusFeUC$;v@QOD^NOa6@{2?u1Eo{QDf+NM)XEVnH z-pg;CV$V8EzRs{w{!EC1^xbD-3ncQ=nN_b;w+tZfMY2mXUy449+%4lKrZui^>bP0l+XkKsDeuh literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_more_0_2.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_more_0_2.png deleted file mode 100644 index e773d938cb47b6b6fe0f565159624ca78d5aa58e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 515 zcmeAS@N?(olHy`uVBq!ia0vp^YCtT(!3HF!`SuqBDaPU;cPEB*=VV?2IWDOYo@u_m z3|c@o2Loe!CIbsd2@p#GF#`kh0!9XAAk7F8TfhXDRa?LeXG?$-&U&o22dFI9)5S5w zgZJ%}jb6--0&T@YTLoNr73VHcXzI;mk>)I8JIKCacb z)OJa9R%}W!W2-&&OvCv0MiZ`X3FoN?b{m*EG^y>k?OOE0x!T0*%+8uEXMg3M|9g1y zg7Y7wWvipiUau-(wVrA`?SV*i8&}MYS!aZG4sz%m=JwdP{=3+(%=*ucg&+ABGP-6o zZDBRt(X4rc@#U%PgZ%YclSK+^(pvX^`j_!Il4vW2{l3z&lT8|WJ>`O3X5*-?Fi z)2FRM|HRiERx(j2txPPQ=6ToaSl8TEvlRzSCEBDn&yc^k_lnz3&kw9C4ydd-#5g4( zUNzyg0q<;uukM}le?r7g-ekR-_`QI4@dn2C0nL>{>l0$@q_*nYPAuWKGUzDz9=ccS l&xgfd9_&18Jt2sFA7e!6ylUUei5;K_@O1TaS?83{1OPET!u|jN diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_more_0_5.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_more_0_5.png deleted file mode 100644 index b610df16c7a06de582a0b99145225d699e7526b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 523 zcmeAS@N?(olHy`uVBq!ia0vp^YCtT(!3HF!`SuqBDaPU;cPEB*=VV?2IWDOYo@u_m z3|c@o2Loe!CIbsd2@p#GF#`kh0!9XAAk7F8TfhXDRa?LeXG?$-&U&o22dJ#n)5S5w zgZJ%}{rW6{0>|?OyS!agJWPss0|f#FCTf&SFYcAsN} z6LvTid6~?5{`v0Q^3G2cv)82TKl%LZn|pg_?wnb@KH$XE@(1!I2Q0(e+5*q{oD36C z3sZJUlvQj>F=MMe^-RO~_C^z~Zi&MpjoTO8aBE86w_Dux;_h!5Q)UGJ%xL}|-ub(I z>H_}{(rbixY8t+$deVoE<5GQQ*P<4KHG0te|F!He}Q}U2Cm5$TI3g1uk8KQ{Xp1&Dx%tW3--GbwRl>kn3?AB<*oO--%6Q^Wo> zawrK+Oi*rWjfyx?l~>~*b0h7n&YBJ4e(%n_Id|rCwRP~yDO$!K_>BaP7cyJ9EjCb$ zc8Ca{E7170HDbwz>&Fb^&lwH*u)ib}= zy!uD#MYBJyzxU}*E)Ct$H20L}?FTILn`Q3{guA6Bp1Dvw{ru;;0Qn79=Y7cScyQ-f zO8JzhT_JNWtvl4g7JMb?&GIRl=Z*O*6BeJzIm~7AC+cbIf?qG?5A&KN$_Z`C&r&kH zk*xlXxsIbNC-)wE3BRzMj=(hvr4otOWT%|DZzcC&4@eyu!lTnUS+vGM^pIOi(x{1SKOm}<{!Ts zzeVR()BF{AnKRd{KJ?^m$hjRX(~k)892DAfK7+x1} zF<)qKeyTjrQS{hD!6nL{o$mi%*%Nf+Eb~I{>kI1Nv#3Z)wJMn$ykeZjw%6_SqerrZ zQf5Mr!?toBnLE-P|>gTe~DWM4fc1Xr! diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_nearby_14.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_nearby_14.png deleted file mode 100644 index 33e863516e3b45675fb5bcdf9e9627e780a575dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 737 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfyvv`#WBQ# z_v{o$k5EUEw!L;HCjtZ~DJf^pl<4YIh*&tuL&52ant7vclxl|Vk%HtcB6qm#7IhRT zz7r8=-y+Z-2Lcer$K~^L=uk#AJWmvn)PmpZ+X1O-=uOz2W`u zwi1n+J0^Xuy|{&w$y!CCE!Z-;Bkk_8YW})&N4kG(nxo^i*zxifuJz|l6ONt!@mTlJ z5w{iB_&zRH(B>`kxikCJkAE%`PTw-#c-rUM_kC>d6Hn(kyc0cP^(N|#L?M&iLGvGs z(hAji{z~C|_7CUAcFQX7J=@RVu!Lqi$7AP#b`kncvp3V}b`}^etqc}^xF4+A^EY0zo zpkB)om32*irzI`;t2ZpOQ1Out&}Om~-4v$LaC`$_Z|0?p4hMIC_fp|67yi~-c77Gx z+K{*XP3D&7lL2p9bS-kbPrN*o+w9Z*vTXgK@(FL9pJc4!|7o^kjRW@ywl}OjA5^xo ze_)#SfO$`&VnLnVr|AzEj%_)>8NvAWRAq21_wlDM0y*Y8{(twPL~u^)vn{gQjnDn+ zbzgn_}cOP9Nb3BO3TRg&FWZNPYW z!UT!+`SKB$p6E^b!S(q9e{0#}HTx|mXU~jb-}Tpc-t*dn|1bYzP-)xp`S0!AMo{wd MboFyt=akR{0CXBMDgXcg diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_nearby_hw.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_nearby_hw.png deleted file mode 100644 index 1fcf1cd77d8bc83a1cd10b8edc9fcbdabbf6e47f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 748 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfho+>#WBQ# zck5JNk5EUEPclq>r#``{g^0E2w`Hb!J`g3W z^_%~sCBknbSL>&3zIin(JGj(Du0iRI*-^Hj?#q)zt{?7s`-`QXHA+`XTW#_(yS3pa z?iWRJ4i$tr1X!+~dCOb4H~0$k{s(>`4_KFOyd|eU$8O03!8MM)yDqI+#CF%aLgMnf zs}GnSx%!>DA2CsW^DOZrzy9u!4)-}Q`^u!8Mp1R8WzP?k9bJ;UackqcB&JQJ3*J9o zK1C$C`XtA7)cuXrFob`~go-Si=+OE`E~OQ z?T)e5WcUQJPfrxv=d@LAZB~f%9loccEx|LTgDuy({a*C?*1-!o`}i6v*kAA27#5rO ZpW)$O=3SCXHdjC?&C}J-Wt~$(699sdKY9QF diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_newfilter.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_newfilter.png deleted file mode 100644 index 5f39a1c2e8aa81a2fb88b5ff68754dd9bae63fa4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 350 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlfUo$z#V4DsMi zPLN<#R%ZG4|9?GKhbHUt4Xt9_AqBD%>Kc3*Ig_4y1X!;U5oGF7P%|jgZkQtIG(+Q> zrJLI^zC|HSx(e!|iN2;Tksf_Y3zW4RfACmVbzWjNsSy?U?;d`pMb9DE&SEj6?loqq zHGT&^%s$|;mnE3_3UkpMX@Sp9M^hY30&GN1{bygo-*D66;Bp5a4x84jmX{lqmN07A zGfwka`LNk(!P#jJGHj(Bhu8xcyEGPLvl~p(EV6R?oT?Dad{8!3P?Cv3@iR+9NoJNf O$ZwvmelF{r5}E*0$zQ7g diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_nightmode_system.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_nightmode_system.png deleted file mode 100644 index 0a390d5fea3bb0868851cc193d58ca2203b473db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 678 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfl0vA#WBQ# z_vln#4VOTXiaJF=6|u5p4Xp{NA4FGt2LPO`9_3*V&!l=lr+*e((Fc*{?tU-6*;1*G!*feKC9W z{B3v*4;$R8zpz4+i(QeaHG=CR+mEYWH#;^l9}x_aE#NSZocTIm^P(NcK@;o9;?SpT znsMw&)jJDgrDGZ9J#<>GS*Y?RJ#XEd#%_Vuxb|~zHoY>J`Yup#+S_N_&&j-#a~c>e zE_0}x6dJ!Vb(EMY5^s97PrfY7Q-gDQ-<0aX~i9ft#*p-;lIxr9H96&>Aqu^q0>&Dv`OwN zwalkEV}EL!;&I?_5$a#<6ZyFTIL-WIjhm3>u|4L@^9IM#nrjtx>@W- z9isVx4tD!2Uo6|(KmGd!*5nV2&I_cH&dZ+AC{b0=H)7njG*iZ5an#MO2|5`}yBVsO zpZw!++$wwi>$&7#397e?Tz8rEd-rAWAIaRm>*c4oNgNTL3&s0RJWY~niByZ2)UZ4< zTJOs#pGEf>-zEl@C9H37jGMmCWAU08y}AE4>!${m&!1cS{w^quc)I$ztaD0e0stdN B5;Fh* diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_photo.9.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_photo.9.png deleted file mode 100755 index cdcc5a472c24c0b882203808720b28724b179fc4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204 zcmV;-05kuIP)&sgm=bS5k{^d@}$AR;1+G)vge_w;)DS(&iX@Myw= zhBz}4A8!G2qo=E% J%Q~loCIGMDPV@i( diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_photo_blur_off.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_photo_blur_off.png deleted file mode 100644 index f6d5cd5f0b48ee93552fe9ef07549176f9853594..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlfUxp=xbhIsHM zCrGfeI5h~W{r~^JK2V|BR)G7^krPYenZEusGBT=TeVMLwc|u_BVnqWfCNNRL+j#L; f!@7gE2GbZB@-%ta|K@S~gUt1G^>bP0l+XkK-(@iC diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_photo_blur_radial.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_photo_blur_radial.png deleted file mode 100644 index 0a49050c60e9f1064c3514c2a2c5ec1e042b72f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 539 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgftku)SF~o!S z>ePc?haCjkCOcJsOApvp=)|`K#&bc8PuHmR`Pep33GeP*(dKTjPH<9-#j&HJrb@uN$^*JP?!~I%wcfWQ{XOmtD>%9Y_;@=-O<=)$I{n~D$wL5yB@J`TuvLzqo$y*5bp06E9TnOWnOb&Zp+0Q2Mpqt?FxU zM0}OadGzMtM3W^?=U$bqSQj22>oEU+>*~+(GBxbiw0Se9hQ&H;PHif9yV^AGwQR(D zmVH~27FT?^UUEW7DrT1M@~clf4;O0AKQ`_1iGcMcUoK7)>+1;jQ7-56J0QEnK+7xb zu>9kDQSa|;se9M(X7ZN*iOW?ZAMAL1>-$lsy?-A3x#z#^{gd;*^DkfgxqCuL{Tfij Nc)I$ztaD0e0s#KF4nYTKojfU_N*b%707*qoM6N<$f{tBz5&!@I diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_premium_lock.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_premium_lock.png deleted file mode 100644 index 698baa0a975a816955ddb188fb2ef9417d3b4a7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 571 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfY^kSa7STT3Of>s5NMHw>>T{~8=^m%swk`3eaQuYP*zP|C?4|S$I z6qDIMA*>-ou19y-($}vS#2CE#A-sQrTf+m6nw7j+N1E#|=KZ{TB%$w)$``F^9h(z; zp7p)deW2a7=&?oU<&>{Hu@0Nd(nPO%PDy{Tvr|^fX!TZ=ZTs>}_=0aYvaUGDJH_V7 z3OW(!`ahJWDS zpp*4O=EVA0U7^cYa_@6|!}05kz($$7ay^Hn&#aC*eCrAGJjI>1=80wjDvtY@*E#HS ziB){9zTw=>Eo&@UmMNZk^3&vwe%Qi}lx!DYuiQ_9-^D!rXIwqZ6&IJ+@T_<9%a+#@ sjH^`a)n8rPt#NW22dl}B$uWyRGQWw|^qQCzqy&mMPgg&ebxsLQ0KD?#K>z>% diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_schedule.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_schedule.png deleted file mode 100644 index eb3518506c536e4c371555cbe31c9371d7dac900..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 358 zcmV-s0h#`ZP)#$wsbTAjrTBr~*9h0oVX0QbAH3=m1-4*L4@riNxJc(0<~zvryXy$PwIB z!np!QHvvlrImo5UO4@*K086oc)g%YGA}MPl)-7}oGd|m8OBQ4s)DY~-gct0&tdUnl z{{&zEEg{FF1~OKNojpMzq>|*{K;A~K{n0C0V++mPZP+=j#IE)mB);TSz@PnRv_dAo9d-MOXIsdzU-uKV@NyX=2FOEziF~ zG+y)IN@DbBT4OtDg2RG)h7n9>pT&fUw(w2(n$G%fqeE>j&)FoK6<&^u|8uP_(BOFT z^1?Ci38ue&AH;m=p7;Gip77p~8@o=u(6q=pe&I{?3Ax{fbK>^DsO){1vPI}ZRoA2f zAG=xSI^MYT-LU!9^o40f=RSDWO=AEp`KEU%y=hCA2eHq(cD#xGr@IKnUn7?m3SI%z%t#z?7{VeowgZA)*aNJ;CtAjrr|A*?Xu)kwF=RUbDtTjExTv! zAhuKM!l{RLJ`H(Mr3>UY+GQ}bf66u3))p*#MDtJo>2o^0FI~K=@BPt`a-1c%+~NGA z*s=qk6IeK9UcJuT%br!t{_lYG4dY2!j;9s8KRuW-@j9#j_o$QKnj|G=ru;rRN5PD( zN-TUK)0Xr44%RX)`WFtYF@2Td=I$x?cl(pr_Cq_ul#MqCugv+EYw75-__~f*LZ9Gk cu^+47G8vqhQkBVW)eB0Wp00i_>zopr0I!Qy(*OVf diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_status_set.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_status_set.png deleted file mode 100644 index e32a6c2462ef504ccf51add3b00e421a8a6e93f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 786 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfvLvR#WBQ# zckVP_k5EUEUBS{4XsX1%qF4xKHQ+a$24HLzuY zf+I`g>{~7U23g^fj`FiO1(QUUn*RNFdG_~bedSeE{C{Q`Kc8c1Tzr4#%;{>SMca7e19lf)0TFF zac=>Oh&}V)H!FOk#V3^?;_*1PP+4xS%8%Iz9QzLXTL||a-zjT%K;J@~_e`O{e(5b6 z?k|{|&YH|@!+5fDO?j^Ev8f4SbqCg+(cocL*g30k&E~@uqQ~SbB4oYXSJ$(1Z`k=t zW5tAI7L~hZtfw4rn?6gLA^clR@YdDi`vh+}$#2`Murse#BRuE&3_W{^*;+1F6=&7V zFUhe|o;2BV-}D>zPuyepAR(4tM8M`4=0yoG;v;d7*(1pGPf~iZNaTR z_s+j3Vt>4Is=nuPLpo7H&%%C}S6q3hufYzZy&;=#X}vtQeD2x93lCiHJ3IG};`760 zyw76pZE2k}{I7regz zIJq>r+b`h9Cgqp99Vh41c3Lp+TF|$-V|fAlUdh|OYqNM4ZC;cfx{1F;s_FI%p) z9GSb|yu!-g4>D8=uYPhn|KDY+=9`9TUPV%yc_tfhv^y@n&HT4Odf%ZH(*1GuO!_WVoqhjh;u#H)-CJS|@0@f?&M NJzf1=);T3K0RSrrOOXHo diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_storage_path.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_storage_path.png deleted file mode 100644 index 54583bf47778438adf9a458ab68969bf8aac8f31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 531 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgftk%=TF~o!S z?bMB4%#H$W?_GG!qB7(hF0pVsdOY;@xD@@HZIOaqcLa;)>|;*4Ij-D-TQ9R;@Z)e& zns;Bm+&pFP?dS>2-1R^5)5`zN+`0GeZtqE56OUavziCZdp6EG|7xpvi{Vs=?$%(`@ zxfigUHgMSRJX}A9@looL=LO934r>44{A_UgiC9eg?KMwS{GUA2*vFK=u;2j`Bl}&Y zn&#zRmMP3(Ju2ZgiDw1NxY0dxqOvJu~wa?bt z^ZgLt-zfk8>yA%sRgR}FxEmNO%3c#^7x_>k?nEb(w3r>MYUrm=+Vw8~dA-V>KIczy zaXWKTOKVNc)q)S-AI$S;zP#b3$i%*rnF`^&?BCB`+|{UeGJR)bJ%`3Q|<+d5KmV>mvv4FO#qjK B%>DoX diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_storage_usage.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_storage_usage.png deleted file mode 100644 index 8845bcd8fb901fad23c3734144290774dac1a18b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 705 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfl1rb#WBQ# z_wH0j?~p)|YTVeuofYNUviQEknh(rdiW~%vd~*}fjoFeZ%EPjDiSGrc zz=;Cox6(2MkL1h_xgxcsRn+&_ufO@<_sy)#&$!pH`GozSXZNb#S$@A)ey+M)sPlhp z+#U80wf4R58@}HEYO`KSecMYmooPxHBF7Zin=i1RyTAOu=(dNlItRIC%Uv`(!OG$$ zw*PzrpV74)uF*}g-Dj$V3VHRKzeuLtOu5%{$X@5oLGB6P9vI%?`Q3W_)5d*W6SufM zdBE9Id3KTO3r_tjS!*Puy&peU{wHz$fpm$xTC$W#_VtKjMbGOmD^8!2^$(on>$m5` z#H`Jp*6UxE2CdF_(K>v%e(y5z9%=iWNln%P4c|BLAAhi9U(T$_{WV_;r7m7K4-#(c z{=huX`SPJ;f9GS1vXzydojc(DgLOI+JKL%MMjlpIS&r1jezfJE{DEDNQf6$erSPGudMz#6WS`$cNmL$f)nEC0Ps3{Gr+z_?;XRD{-{s~h%98ZXrT zt+(cI{)*{wk8`{E0@iCaZ(m@)l5M7xNyHn5^xBHU2286OFDf7&o_OQRZe|=}ggX6Z}=RCK0zsLCfo!eJK6(3pDX=(L@Oirp( zSmk58!@K99#H>n*R>7Am*A`i}e%0vm3t25Q!{_DYrlY(k&HIbGYlSk!9|*{?iaQG& zln(gQ_T7Nwfo)toHz1z&5XG${zA6Xq27(n z#d_(&fadoCHjlqFbDs#2ySI8-wY8-1lm0~Cqt$ITPfYdXqYwCX|Fc>6Vxgu}qTG4a zO{{Exj$Gg5xovIitNAvMJ{zs9wD6C9&>o(ho%&JbqQ|q&P2Oh@SKiwEqB}e@`nKKq zxG#72eRh4C`f#7rtYS2f|dwN*O{$<-ngygag?uV+W%oy$c#*n*Xbs=r)MtD z7vwo?s8NE}eeJK%GmcWtska^Fu zua#%Feok1Zwx_lDg7j&pomsC;o%>p?HKY!BSZ|zuR&;*Y{6FV@@VC8T6WZcFR~eLC NJYD@<);T3K0RYP0AfEsL diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_timer_1h.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_timer_1h.png deleted file mode 100644 index 1740efa5bdc89690e11a870237ba417a95363145..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 867 zcmV-p1DyPcP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR917@z|H1ONa40RR917ytkO0OB=utpET5%}GQ-R7ee#mQ70)Q5b;l6}2RC zk%-!dM2pH@=0c2URSTmiXpyumXjhANEt4QxC-e)Xz)hmnrXr#?MMPjx1dN;BuSDp@B}(?;r}w}Sp#EmHs4UML$DEb6;8r? z_yehs+kkNpcEH9oSSrn+U&F0(x%@fA8qmAo5Iwumr^(HwIRe)}c?w$$qPyWH%)@eG z&YJGfvkBWBP@GwI&;>o@5i~&q48a2YhU;(~wu0Lr+Q!UTW34^*I>TAYpbN~wB(y>^ z+y~`0Y)>z-#)mbb7M1p{N4LNP+;M?@&<=Gl4$37c*O*(8vNrUf(izV3YU;8=ob#Xz zWx-V%_NEhR9L#*HxpNG4U9T_o)Zh-~x9oY;Y;T+^8&T4ak*^p_@SJbfAlKal$@8Ape z1K3umkF#c7z=KPPTeavd|LM1%&!zQ?5@*f0z$AQv1I4Okd>>hRYKgO)IawF>c^s#g zn^nA2hj@kYD)rw6w3Ui{n9)moJiCVk9j*+gEx8Y3z7sw)D-&5b`gGn@)I27*(2J<6l<)FFIUCvnp;4V tXS#>kVetIP|EqX~KL(>bjvg0P>ya002ovPDHLkV1n!qeaip< diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_timeredit.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_timeredit.png deleted file mode 100644 index b5b79dccadbce6e7398eeb1fe8a49d32cc9dc347..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 720 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfyv6##WBQ# z_w7`BkI+Dw+slrA=aG|mSbzEP^J?4YMep{W|6Nk}iCw<#|Gxdj=WX{D>uT@bAf!G)^J4#& zUPDunV+s642E4{IebVIX&5}2M`oXf*`U8JWw7O*L>cUzj_bUv}A4In$h-uX*R$5+h z(za>8uW;J2eLZio)Z7gW=e}`%%ef@S)y4w-J&$v&Nis=8H)xC22VaA&BtsTn)nXL^Lv;7nQ z(^_!+$R_`Zj`|C~+XYBmURGq0VcP#;`h(uH>L0HboPD;uFn{d|bH!&TAAfsUnk5w9 zR=w}SH~$)D>u?A2r52xrRrd4kj+tX>`tkOT%A@I9Qonqi)hRzwu3~{(m*|VT>Fwr0 zCQ-^aYW^_p`Ztwl`Q1~?Gq(KjFWLGd>6(M#{0xH+EGZ}LCoErPFSDX2@{qfkbKT`{ zan;Jl6?tp5_!5;a_K05SX?U~wzLGrms$(TTzZxw2d67%5?WizQ$*(-yvfM{%H(2&Y z{`t|LYBJ05dhGl@H}jZNi`O>kykM~k{>o9crhxVSB&}tgZr0ZyZ4zJl#Zf*{{zdb5 z`FoDsF8>@SzUE(Le0^ia^X1WZ-ZnJu{=huvWt-k1nHP(n`=rNxiBPgG;y!MBc&8P^+{H|_76BMwSUp00i_>zopr00$-~b^rhX diff --git a/TMessagesProj/src/main/res/drawable-mdpi/permissions_contacts.png b/TMessagesProj/src/main/res/drawable-mdpi/permissions_contacts.png deleted file mode 100755 index 6b935d05f1f89e1e9f90adbfd938b9cee76d8329..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 312 zcmV-80muG{P);gRI^l4DV#H2=(0Shi_00+7hg;#8e9!ELAl_7<<_qfSO1~5)k7AENd&YXbSjVJRG+>xaJ7@?Qzx2HXIzoNyXBWZzl<0000< KMNUMnLSTX=LxFPu diff --git a/TMessagesProj/src/main/res/drawable-mdpi/photo_w.png b/TMessagesProj/src/main/res/drawable-mdpi/photo_w.png deleted file mode 100755 index d569e0d2d40c353a09531396024eb36ed5a1b616..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 241 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_+i9iA?ZAr-goPCCnZ$U%f{|5uTq zRvnKZmpZKp3G7X>9D?0kLT{V|SXO%kwLDgx!D6yI&c&(=f-LlRC}ydQZcxNHRkXz(Fa4dKaqg!J%Hv<%}# zYayzIkC}qY7Mq3-n*8_Uw+O1?1B`K_?F)swohVp_ClU20Xp@%WMN9rZwKdBHYLlls zZ8=`F%s8dhZ4s!;X)taJUbHw7$e9HNb{BV4cXFhhaOUvA_FMnySyh4)9UV4}{}2R0 zIJi*Vj{qqv@K-&D`Y%#I)su+ogqNJG5vEFsr4jyy4ljkN=0V## zBNFRJhVars(@7O$2^oL;=%A0c2;k96c0^)0?0+)jIa1Yh)Ahb2!HgfJYpQ~CeJ|p> zY1;3w{81nBP$Be$!2~W{POZ%?8h`v*QWzLMiqCi*t>7XF)Xd=N>gTe~DWM4f DabzA1 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/play_big.png b/TMessagesProj/src/main/res/drawable-mdpi/play_big.png deleted file mode 100755 index f6b0163011c9fc5975632e5008a35485a0e5839c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 745 zcmVGwT)3#Bj4>D(hJrqX7z5B?wJf)j1q}nTt$UEecvtIojU$I1Ip)1k;V_v8a-gDD z)P4vymw6x?L;U7x6ot$K6_Mt#S5T2+PgH@zYOhH%52VqXr(j68Co+(tvmXt`o@kT? z!3fRX{}sB#zEJInMz+8CZUj=c{@+(30jO-17mAVC`>E-_N!N`~*?&up9Vvj_S*FxT z?TOUQ_1=jbz-jLna*^8;*VEKK%%L_oF{^8P$075@U0on{e;??s57x)WPUL3&l z{``J$FMW&yAP*E|0Fd}nyK;jWpa7V%07$%fQJP}@z3Vt`#X=zYs(Yx zFp2$X7W?Bgj_3J~&Iv&_-T_4dMl=Z+QpG-|BQX-Xy_WD%Z32eXv5)H$u&_wP$|eCz zs~|y(uI;jME-v?qFD^G$w`{GeC2w`xzP#2cnzs^k`OE9h^}PxMCdxR}dSE*!!Gr;o bXMO({5*V%u1)nu=00000NkvXXu0mjfR+U*m diff --git a/TMessagesProj/src/main/res/drawable-mdpi/play_roundvideo.png b/TMessagesProj/src/main/res/drawable-mdpi/play_roundvideo.png deleted file mode 100644 index 3e7c45ed9542e415bb2fb612fc3b49f352a206a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 855 zcmeAS@N?(olHy`uVBq!ia0vp^79h;Q1|(OsS<3+_#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyz1ISip>6gB0?HX9P1aFdg)CaSX{| zeLL%PmWZQBn{k}ky+^E%SViwv-Q2}1)YP?L9g~uWL6%GW!RY}!UK}kGChQ14Y`|vP zkzF2FxNy;;Me7w({`@;CIctLEvg%!{SGU=H2wuK=*RFHr|2SKg{r#cW zvMW+6%QoM#$bwso7oZARHWk`gc}lHIs@8hO6N>{!g(d{Au-`c$Jx*;wVb8=9XN}D!K9^uxQ1NXs z+l0#*)gT=jC#x0C-*VZWtih*d`K>UJy@>6thhEA_XBLyb(<()u=lG^bIsXl*=T`&*)d0R`_AD**d}a8M~Qo ztTw&&XyzsF@Fm|TiT(QVT#xJ7&c~fglL#sAAm*NkcS8Wo$JUD)36NKPNnR+5vL%?+0T8ZIzt zFz$w@NcR`^BS7nj@AF&!t?xZgF74B3vIp1&n&$rZ1fK5ki)Qk^y{G^H002ovPDHLk FV1hE`n?e8p diff --git a/TMessagesProj/src/main/res/drawable-mdpi/player_new_pause.png b/TMessagesProj/src/main/res/drawable-mdpi/player_new_pause.png deleted file mode 100644 index 00321760ea3f527619d118aa8f7b38af10e6fbd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^G9b*s1|*Ak?@s|zEa{HEjtmSN`?>!lvI6<7o-U3d z9=vZSo#kq9;Ak;j;eJ2Z|Bjqbb8Cc~*~{mXnl|)4=8zXmt#x#8>H40u7G^;xAAPY9?|~VjfX?ftIiVG5#WnD3bEzW4|Lw*nE#R)kS4PV_q?3=-ZlOaxhSu1D%qtk-(!u1r!3%chW6-LVrjVYM^un`imYY z@6d;=g+>(6HV3+7T(N%PTs=yo+mj`0d402_Fh4^ c;h=BeA6e#$PVW^#kN^Mx07*qoM6N<$f^<@-3IG5A diff --git a/TMessagesProj/src/main/res/drawable-mdpi/plus.png b/TMessagesProj/src/main/res/drawable-mdpi/plus.png deleted file mode 100755 index f468320260336426b337832080fa8b16b2a627f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 87 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+0wn(&ce?|m}1|2W^k=E&gNlNciC kGJ!!M=we2K&|(gT&TnlU_hK?0164A3y85}Sb4q9e0ER>uwEzGB diff --git a/TMessagesProj/src/main/res/drawable-mdpi/popup_fixed.9.png b/TMessagesProj/src/main/res/drawable-mdpi/popup_fixed.9.png deleted file mode 100755 index 8220925b783756546b9d418155ff068a7aab561a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 370 zcmV-&0ge8NP)!1&^0003wNkl&7y=YnNS2PtrT|f}X|;v~3R{qNFeI*3pSA74oI=Sze{NJM}Le)vct#x6k#zX}+}shEWv Q8UO$Q07*qoM6N<$f{o~+`Tzg` diff --git a/TMessagesProj/src/main/res/drawable-mdpi/popup_fixed_top.9.png b/TMessagesProj/src/main/res/drawable-mdpi/popup_fixed_top.9.png deleted file mode 100755 index 29cda0bd5d90aa11cfc658a158cb3db13871dce8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^PC%^0!3HE>FW}z^_yld>HqxYbkI44&M4-GzXco^7+HYC#k&vN ztiRS<-z{i={gL}&wZQDzt2V#fmecWW*{ip&^kxd|ewBB=MPk+NiJXPucken0EKJY& z%LvrkEpW+LK?%fiU~q&Q#(2c4r9SQ|*K&`4b_|c_SxtPdw7d=IN(N6?KbLh*2~7aG CyHL6S diff --git a/TMessagesProj/src/main/res/drawable-mdpi/regbtn2.9.png b/TMessagesProj/src/main/res/drawable-mdpi/regbtn2.9.png deleted file mode 100644 index 0b4a6a51d1a2b5730bd10b6840558c288efca115..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0y_LQfaRkP61VmmYF9C&wjx_^)aNso9(m z$<=6?ex&WFpqyC?yYr*B_X~c7?ysBk^8Q2_?g=JaZYzhdJHFkV5w=cVCaRbzBm81O TsMGyopydpnu6{1-oD!Mwh zER22FOe78vqUt7C(Cx*I?-iB7tD#8f>NzW&t*K!?=W*1x%_y;IWtyMuvnN zu<%qLm-mHxej@&+Jk7+JiO&%Bc(U+=V`r^aqzn5RG_o`$S84TFCMkzp+Mt;+R;AvM z(92P7QBUKy5zgJaiHJ~PJ%zv9MtJdPpfi@ zLo`H_fBgTyUs~X|p#XP7*M0^=jvTfm$);ZiyabQ9D;UdmNET+ftZ+?~W%v}bAuQ6EVbhZbyEu(iW^k-#T>XPfrC35z zGTtcRR-fV~ZjD6@<`T|QiXZq+__S!Z7z%vSShLk(9*YkzSMQ=X|NlRCs59tdD&Y%Y u)X_c5zKQkXQ^Ow)u4)cBZHkS~3=B7?dp#o9 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/scroll_tip.png b/TMessagesProj/src/main/res/drawable-mdpi/scroll_tip.png deleted file mode 100755 index 466eef136f4d69c1103d34b6ffdbdb36dbe60edf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^oIotd!2%?g%KGI3sXk8^$B>F!YtJ}xIVOs*KDfR5 zJC6vPj$qV!xF741d|laT8!+F7KlRO(wU@8IbqTp>c(pTsi>|8nTk|bC zOMXS^&+tB0^jPYwig0Ah85bk&*u&}}!ZR1f{V|_qfA`ka1#OMpr8gd}kze?}C-=nL z04dFllkM+wSKlcN*yGOaZoZs9`J6<^uKpJwNswAY#jbQy!EtDnm{r-UW|D$-8M diff --git a/TMessagesProj/src/main/res/drawable-mdpi/search_arrow2.png b/TMessagesProj/src/main/res/drawable-mdpi/search_arrow2.png deleted file mode 100644 index 9d8eaf470a2f30ce22426a947b08e3b6a5ecf2e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a&kmUKs7M+SzC{oH>NS%Lg!PZ!4! z4bkL;1!6z`|F1U@P#4IR3;39$z}6VE$b?a}h~Zw4s<3Nk3bJqJoXf_*p5N2KLzvJZ-n)U>FmzG#>fNKhXV`_Mpwk@lqzDrOKt zK1irUQwb4KutW_Xg_ISfW@eAEaq>O-@5A0_&i2ebkMW*+z1sQ1=I(p;I%}`<-)o<< z);b3=WXO;qLxv0)GGxe*Awz~@BL^U9jE|K0mp$KfbGBzU|%VW z%H?t;BVqzD6Bq;BnDCqyU^lQ5_!#)7IHr|`h>^fsz}Ud?bHEYcFwhKK1iAsY0e1pD z0`flt3xQ?DFfy0RnU18iTcxB1NoRFAHcNU*Qa?$Z^PE>9si&kVl0KC5SK$1$lIqg7 zw-qTXu937MZ~>o68gT`>`be5DsmalGRMMz&C!$8u7RTu0lAcXL?|^{b6O!u7m5547 z8y#c!OX{B@$(HcygqQNopJ4v-ElHj(*&OAFLRh1JF!z7)z#vPZ`w@4%) zse`0195UvW3lTXnZ71JKt$Z_mu+?6C4uOlz;@UO?T#fzfdCFfT{-Q z5QsI-0%v04k@jv*5~<;cy9G5Q{v z$6te_E)jB_t;{lePL$4C`3tcsM5a>Go`~x^@3|Mi+rVk-J|22vvc!SF6Ts>`?pAMq z&jZ^c+_EDkaT@N(zY`++DkeX{&OI8q5F&dN*kffL1Ug~z7#CB42WIm7@j$D&HH_9vCv$E$T-5VI|AZe$gZ(=?j z(Dvr&;uNsR_J;tE2gW-Cy>0(+o|SOX46LyI3&8RS+2!~iu)>}jg`ezi6{f!7VhZq( z?SBn?8L26P?VBVWvuy6L40~feWWrp@Bvo-YwhFr|dvUDMk;Nn!`rSBQFlSt?b2wdOe(V`s0BSw!aHl7p0^! zYS3aS@CtAX<|fwF9`AxrWVZx*iiPe@e>A==uRF&VkYuqExZgZQV^3h)BxzML>Gd?* z2I$HXs3f*kM(Jn|5jV>`Il|B+>Gp(%*T}>P2PCyPI$G?p1}l@4h&3^GMFoVdM6{=7 z*&S1S?dTkP6qs%MlY#XyItBwD;Xl{GgvVe)d=Gnp8N^qyZvegrYB8bxg24E%cSO?NF*+Y}R)6l5UPmhmAfiIjE^A1mz1T3> zUNZH@W=WGH{4Q1&N(L17Ly<1P8^CLrP}oB=ro6TfI0*cWNu{fSI$!{%5Y(H?vCiu9 zJ`r%U%T>U1!b^IQDCTDYZtE{;iQ2y6Pl6ViZ80g2-i2v-29);Gp;}C_WGtr8T8An3 zxwr`Yfk~FO0vj+1SQt|Aj8c9&6htRXeX$Szi=|V*G2j>4_nA<^WRz-al%f^1Ok4UHJ&bxAr-gYURC5fpdjFK(Z5OI z4Pya^jk&|Of8mQ3WiD{tkf}ARP4aATirBA^)bM}O%|{mFGoFReW^&wXnb>DUTCOVjCLXGwxxvk(-it>59YbEme}CrWf44 fmaUYZ^Ig_ouEJ#fVx1zOI~Y7&{an^LB{Ts5M8!eu diff --git a/TMessagesProj/src/main/res/drawable-mdpi/slidearrow.png b/TMessagesProj/src/main/res/drawable-mdpi/slidearrow.png deleted file mode 100755 index 56f626fa536e938d2eefe3f6e3775c625096b96c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 107 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRS!2%@1=l)X$QbwLGjv*Ddk`o-5{yYCuH(0>= z=V!fy^8K?|Nq*zsT?@)!Cu^%quWi2>s(?20|UngKTcgc_oYDH44$rjF6*2U FngGv6A720f diff --git a/TMessagesProj/src/main/res/drawable-mdpi/stickers_trending1.png b/TMessagesProj/src/main/res/drawable-mdpi/stickers_trending1.png deleted file mode 100644 index d937a6760de628105030ae03c6d10d58328879f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 593 zcmV-X0zO%c9?$z@@#E%CBoev!mccXJ z_`d%hH`eJ#(ngqt69~&Qi!Nti$dDbHC#M9Lu$YBm&|4nC0$f8L6u~)UE+nsmW00&t zQ|4J55hN>zOL&1XhuhE8B=lhu-eKTpS<*z2bOXcM8~UZd!SkLNCwc2Tv(|75IZy=$wty6pm(L;jY-KhG;R2Pcg+v8(DZ&M8 z&R01E!j48j(ra~5SX^a2^1nyh*evufz=cTjML`TMpKMNfqfD>(%99z)Cn3>d{7p^t)V)_;Tr{UV<1^{ zx?=2sH`s^RMerQ}HAr>g^sNMkaZnMx%_um}1Y0r8fIf@5aNXD4hwpdNhGP$lc_@WL zScYxTMbP!rPt*;4PzYNv$jy;Go=`+*qJ!7YT%rc4E*!a0RdO2aHcW6c>slxS-EZx5 fhaF!q{;zxhJxP4l{tXgN00000NkvXXu0mjf8UY5Y diff --git a/TMessagesProj/src/main/res/drawable-mdpi/stickers_trending2.png b/TMessagesProj/src/main/res/drawable-mdpi/stickers_trending2.png deleted file mode 100644 index 70d5b0411434f2e52417900314aea03b7d4375a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjEa{HEjtmSN`?>!lvI6;YJY5_^ zJb05+76|?L|KHyJf=05!KZYaIB_t*P2b|1cV_WdB(BY3{N8$sc2@4%Xxf|FdnLg&v zIO$<>LP$(a>xK}YNi%D=rImxBZB~Rr!_k5n6BtZ&EEtS=d;c*#neQsBJeQj%-Ay5` zUF4gBnugyahh>J7@>G`bEl5--b|`$vaAZNsE}^F*eC&lHfKXS;Hy7N$d*fd}4-QJJIX<3h{%-xeo)# z#YP(ku|s&264#l?>Ju6q=K{CyKb{CoJs3@U${juu*THL%9qT-1I%U&7w}HQDxu)M4 z_X0{JIj%Y8^n>NcP3E0xg9gzGo%;~I8D;!-7e~bEOng9V?L8e$eir&Rf&M(Q;kXHZ zOZ3(un&3RoLZ$?|6ww4KB{Dl_a69g@D%p*3%>6r-gsXRo(6o#$NMO&PYt+}AqyEgP zIo|Txf}Pj|FL8c?TV%IB*R-lNiS>rDDl3=aX>2gThh}TlSkO3#t9q`a#8tag35qcd z&QtKka49DEje~JDkZmPO307bPU6?ru+BHytR26oXk}xTPd!QuRO%)Q)gjfz5px2@* zTnHyJo#_1zV+boev|s^V!4uF2M;AfY?;>1>o1l-5O2axgNAcN=BsvovyjGTEDv+we y&V?#dV!$rL3|{7W3G7E-E8SzoAFS@bwZ8zI)8eBpE_;vw0000mrfKQ7;Q_XPmxex0A+eSg^;vMzzROyM+9rg(S#D)&Z9tK z5WdX^_%^Z(!hPW*+*j5qJU9IkcQT)Tf;D54SRKHNGHsT zJt9FxL2u0l&ct^p^&Mw28|W<*ph8NXT0gzXAcrdyQN}gODB=n^WDfekGr=K3f(!*& mD3BpRWK8h?`cI|Y>mc9i0s#b=38+l~0000mrfKQ7;Q_XPmxex0A+eSg^;vMzzROyM+9rg(S#D)&Z9tK z5WdX^_%^Z(!hPW*+*j5qJU9IkcQT)Tf;D54SRKHNGHsT zJt9FxL2u0l&ct^p^&Mw28|W<*ph8NXT0gzXAcrdyQN}gODB=n^WDfekGr=K3f(!*& mD3BpRWK8h?`cI|Y>mc9i0s#b=38+l~0000PC+Jn^RggFgBNInpU|{78OfVr1z*5>gqsoD&DFNyW!e8(2~ z6*hwENQcQN*qt(joGn*spytMof|P_5AJzm*O2FWxr#(}o!TD5O0TtC7HueT*<_(Uk znp0w|0blyo!BWW!*1BupK}eb{5He?D%*i&@1#b{W4xVuLTKkszKH_Y|!ozJuH5m1E xJwv&8L+Kg!tTpbyB2{*g7VSm)=RPwqgD diff --git a/TMessagesProj/src/main/res/drawable-mdpi/temp_starlarge.png b/TMessagesProj/src/main/res/drawable-mdpi/temp_starlarge.png deleted file mode 100644 index 0e7a69f58a365e7717b799a908e9ccbb0816475c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2529 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 Lx&@}$m_Yguw-NS%Lf;o-U3d z8LV$7UF2#u;BhUDf5ZM}^W9?Klm%1cjE_2+`7gL|&&1I7`Z{F=21X7C1}1?91{N6e z0*jYs^V*Botp3=n&^mw9Dr9k0ZEQYI)+L$6zjmZ<@2{RN61liab8mR(;$8mBvZ}hn z-ud{hK0oi<4ex)>eeC~sbz5{apXB_|t!Azv!_V&Qa#H_6LQ(Ufj|B!UQ~ogV!Guq@ zUf;B~%#xZZc(>q-m`>spdT4L MUHx3vIVCg!0E|IrssI20 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/video_play1.png b/TMessagesProj/src/main/res/drawable-mdpi/video_play1.png deleted file mode 100644 index 1011ca852c0505dddb09a21066a61b4deb4d57f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 500 zcmeAS@N?(olHy`uVBq!ia0vp^79h;Q1|(OsS<3+_mUKs7M+SzC{oH>NSs54@S9`iR zhGek5ow3)8*-@l*^FM_p8#V=SOS4|Q9tx9-*uolksCUA zCSEzOqc};?<@^HMhAM?OKU6FgmNj>MxXCjk-8=lpn@Rb<-bk$( ze~cyzY#&XS@$usQYTuUWe_dz(GmV>Z^PAp@Qf8NM)-6ZMRZg!ftymq-e4(LE@VLwE z*#_aQf|jqiK282tp?bS?=}~W4mOkbT&$D|=?zSG_6nC|`a$~_W;R(x+tZD!C)m!Pr zQLdn6_V-R~d!^M?%Gz!7IVOh5GJMXOS>}uvHq5wNx=AbKW3?|sjr#|`X{qwA4?{oC zVBFtmp&Zt@do7pApS>#|c6zLnzqpYlwX2olsioyu3Q>WS>euulT~<3RW&v?E9Zq kuTFc45_lkvZ}9_m!3|UQKiz4r4vaN^5+IfWVg?501&j>LK$;OGwtxvPtFV9>&Xxcvw7ouY3sBi!PZ!4! z58k&^cY8TI3bYlQEONTwcFAGU1U5qo5_XW0P>k2x2;88`l&Z1Kivstj*LgH_L=OaYc^ z0i*YQ6DuTBZar2_O$U>@QAj+;}Z-zPr^cy++txTO z-oD~od%f~ayB9rs9KJNo>NgS$R_{x&>Z+6%)NhPh@3*GX|AYRI>#{!>=M?^s=cqi; P0E$pgS3j3^P6N^5+IfWVg?501&j>LK$;OGwtxvPtFV9>&Xxcvw7ouY3s70Kr;B5V z2k+Zy8@-qv1==<{GHndd&X#x3S)-#{!xXI2nyC}~lVKU>w6J}REZUCq9eid@a9Fj) zbB)TuLtY$g7f+if>gR|ZlD(s%aOc4BHyd_;KL7UKy*RbWx9X!C6*yLXV0>S&apNz+ z(~h!7ei^jbTf|fgcDy;L-C=v!Y>LW(bCX3T^v>!zz?d9Wz*Qb#aLnfe;|uAgO~;c9 z-cEmTDpXnT7Gq~v!fEd)wRHy>4Z@9<})m-1z%KcX{EohsT>HZ{z`sJEU=>db`q)svNWm2HzbY^9%e z{Mf=^%eKT#JKe7w(5-3Awr83CE+J_u|HRqF7u71o%5>a+m<#M~{5kpY_3#6Wgl;?J z$lp@<#!zIuD#mT!wNnxYZEPAN_@7vbS;tv=?q)W;IV*dD{3OAUEvA=hq~jYUr<==c T&Z?`c0tL6HtDnm{r-UW|qoBBj diff --git a/TMessagesProj/src/main/res/drawable-mdpi/wall_selection.9.png b/TMessagesProj/src/main/res/drawable-mdpi/wall_selection.9.png deleted file mode 100644 index f296d0e9fba7b816ba0dbf4716aa70399b9ee680..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a&kHBT4EkP61+1C0Ng4gDgO7(Fyy sr3$PXlX(AUu4_!R$Y3z+IKsnlx8k|vUDm&|fI1jFUHx3vIVCg!0O&#)z5oCK diff --git a/TMessagesProj/src/main/res/drawable-mdpi/widget_check.png b/TMessagesProj/src/main/res/drawable-mdpi/widget_check.png deleted file mode 100644 index 5dfcc142bea7a796c817eeae65df0aa339e7d74f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 310 zcmeAS@N?(olHy`uVBq!ia0vp^d_c^@!3HFQ8hUO4DaPU;cPEB*=VV?2IWDOYo@u_m z3|c@o2Loe!CIbsd2@p#GF#`kh0!9XAAk7F8TfhXD3rk zofFSyx*zCdXPMizE;IkY$!vwwAF_@t)S=IX#CP8Um!^H=oJlJ)bBqv-s4C z^I3EGzHxUsNkmDc9zC1zx_Hage=_@uIWla7_ojbK`SqS(oN3FZuwSRwf8>qmT3tA8 S{+frN!1HwVb6Mw<&;$T@Bc~Gp diff --git a/TMessagesProj/src/main/res/drawable-mdpi/widget_halfcheck.png b/TMessagesProj/src/main/res/drawable-mdpi/widget_halfcheck.png deleted file mode 100644 index 8a00e0d152aaed493d7181f65bb096503d030faa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^d_c^@!3HFQ8hUO4DaPU;cPEB*=VV?2IWDOYo@u_m z3|c@o2Loe!CIbsd2@p#GF#`kh0!9XAAk7F8TfhXDh+ zZvJLEudDDP#K$*%d2>u>xU!yaLhrfPJi7ml489o}8LPheZeJ|?EWKuyLso-d+Ha08 zYwrE8uP@*6-e4LFr_d#qAm*}FkKK~r|Ns9lKjF{+|60b{lkd;J|Noi-6VoI02}vmo z-xoi&I=tjR4^MI9w*M@bawc3jypA)4!T8J+cJ25%;awAcag?;^U9La2sn+p%+My>a ayqFmxB@<7vJ>J~_@}Z}zpUXO@geCx$?s{SX diff --git a/TMessagesProj/src/main/res/drawable-mdpi/widget_muted.png b/TMessagesProj/src/main/res/drawable-mdpi/widget_muted.png deleted file mode 100644 index ccc32c1987bf619142dcfacb6773071aadbad86a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 436 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a&k#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyz1&S-^~7gA@w${E7uClk;?O4ABtn zov_i1*-@Y^z07pE;@tBIiW}{dd6L#`65GP@t&%ZYJKkkOh`>d+$rVM1WMfn#x@7?yOx(+1b@tqwKlgb)GYdY{@T>Zh^}~HdG()VC4A1*_{jyV@SI&LC*ur=E zYU2RAO*+w4`pcLVDtJu3a5q0^*|K!Yy_b1g&eeE$3bsAWR-Vz%u+Y-*hfY%bljmX* zM^0WnzNLr7X~{paF}8XE1sv~1^_&&v+w27P5UOuE{>W^LZwJ?5U54hrf2Y;bkBn#c0%W$vfS zv&{U9{az=r31m!JlD*7ixyJ_i+->bO>_ulJ6mHo+=H4RS$9w$M*L+ZjdAjrk6I_;U0W*RPQkXr#b}5kZ_jGX#;gC({ z*}LlOx3|BKFZ<8aQ^@0R;KYY|L2>nZS#FmJ3+FUGwD*v4nZ|rnVn%}2!9@W~D#u!M u8qTCK&Fs`+NNPS3;ULy{rbUu-vkb!%d-+Wvv!4}#tnhU8b6Mw<&;$TPYdK~B diff --git a/TMessagesProj/src/main/res/drawable-mdpi/widget_pin.png b/TMessagesProj/src/main/res/drawable-mdpi/widget_pin.png deleted file mode 100644 index 5bb76cf3731023b51930c815c03259fb64daf7ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 921 zcmV;K17`e*P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR917oY^214%?dR7ef2RXu1FK@@&(_P`uO zQk*}9U?~V9f~^S%{t*m!M00y$p@oHo1|e`@p^cp&NU#uF3EAC?MnH*aR=eZ#av6A_N0=AcMi7NQ|yI>baJwbw}K zo7xM^-pgurbdi~Ly1OZ+yM^J4Ggjh<8e^EujOX!NC0LE)c+K;?k}iBWj^(V7y{tJ{ z!(QF@FTKk%{Xrf@k!LMEB9e>bnR;z(teFqUkAp^Ilw$jkh+i2)6V+-p&M+PFHu0=F zJOy1*(9aC?uU=yZG^uID#Tr}57BE?0nsGurvKwN=1FxhbYPNTtvL@s>V;n_06~EZ#SFGQmfTEYDKOo@r{mOc%-;{2nvC*J?ZF9+5Hf*~Pjx_`qu*n@~5`30w7Izr=Qm*gR9v zDJ_sy6`bc-K#%B0u~__=kIBa11Fzmh;prgykf>YcP09PiaOS)-)sqPx@PSveCxRA; zw4NHnCwrBE?N&^bFFsnx1?z?rCGVyMt- zAFK4vAp^|y+R}^(#85`?B&|b^Y}HZG*%fPLDgO`J_^u8(;1P#-ch{X`aij1L{`(v1 vE`Yy{*B`10aZ5DFdHsobQPp(zZ?FGv|FeN-d_^8(00000NkvXXu0mjf36-Kw diff --git a/TMessagesProj/src/main/res/drawable-mdpi/widget_verified.png b/TMessagesProj/src/main/res/drawable-mdpi/widget_verified.png deleted file mode 100644 index f7a036dc2fc1b4847ba9f0650795b6071b4f1a09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 526 zcmeAS@N?(olHy`uVBq!ia0vp@Ak4uAB#T}@sR2@q#X;^)4C~IxyaaMwQX@Rme0>?T zfNTy1#`a7G7LXDkmI7i12Id8f49q~95hS*N2`LF-2MH;&gIjA>gUg&-#Kh6eno9_+RK1low<5j-*DJ> zsemCh;=zuCM}n=Y=B>Zf5FHTIx5V!SOUT?gIYNP-jS~YOyTq<;+nx2mtzysYZ%WsF z%2wJ2Og7)e$Z)NA=7ZK#*0;mEvrSgzpLxT)Q17|Msmtwel^#SfW!}9|CwQvT8w?!e=_ml`hBzy4BtCUgDSK2ThEy85}Sb4q9e0ILzwbpQYW diff --git a/TMessagesProj/src/main/res/drawable-mdpi/widgets_dark_badgebg.9.png b/TMessagesProj/src/main/res/drawable-mdpi/widgets_dark_badgebg.9.png deleted file mode 100644 index 363123ff9f2a3fcfa380ec51dc9e5dd54a714847..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 652 zcmeAS@N?(olHy`uVBq!ia0vp^(jd&i1|)m0dA*WlRG+MdTY*GAQoRn6=8 zA>QJu`#qc2+|IiF%4EZt{<+_4Kd0T>lix8(bmoyWKhLg+Si9@+@`DQ{E^k!X=&o}8 z=CjHB^(MaHnpAG&8vb(a8{ge=-=973G<==DG^p^_-tWO|>peZQH$R(MsQ6;)$?T&w z&lX+G=s8odpik|#o@`E4{5@6AozgR8)@vTwyZg~Rn{9dXo!RV9nt46_RN->{O`x91 zPyX18{+1wRqxjVKGIc4~yPg=laV_dO}U|%Q^Mt51F=6c1uqw^t_*(*($pAX)t5pm7XSl zrWOt^Z=D)%)fAgnYsR@%Vt;1OYm{+fZ%w`aySsA5R4au!T<7k)G4pA*A5yy)w8!y= z-4~S(wZj@=TPB}>GudPA@!lZQ{^y7F-b^e^d3EMY!iISt^IX;K|fBikSmC0!-;dAc=R`Ac4Q>&Szuya4p{@(xp(-W8y z1!hmEYGM;IVu-C{k>co2EyzjY{PO?*|7e3h|KnNswB3%`xw#z^e(~_wnFCc~V!soZ z6Fr$lCco(Fd}wTB^ru->a}&>jbk5v8J?D>Y=~{Q;|Nnn$nN}vIByr8Y8n{hre$}e# z$}0|M9N^5+IfWVg?501&j>LK$;OGwtxvPE4qLg&K3eG++}@E4oLm=ba4!^ z5KK;xIHQnyT>bx*xAAuz^HP?yIZxhJm-YYrhy6?$cjDF3;tbWicwHqpOeRfycqNAa zSh1uC( zX?^{F{{C)OPVokjx!3m7#Se(=(CZBEYE@+QzpNB@4w;5|Nn=cNO4^1PkIp| zzHfUE&;QGfGk@572)*E)6vJ_enMvbbJBOix%KJY#-`}6FPfZlN7i#;iCqD5Jvllai X;+^I@*EA10fC9wR)z4*}Q$iB}4Eu_U diff --git a/TMessagesProj/src/main/res/drawable-night-hdpi/widget_clock.png b/TMessagesProj/src/main/res/drawable-night-hdpi/widget_clock.png deleted file mode 100644 index 544e6bb33fa7821447707431e885a8e46528c3b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 627 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~STEL88gA~qMxhWK=?5?MaV~B;| z(hzGOCP#s}k$pnV$IcycOU_-|JAc8}TMODQ9hsJ}M1(h~^W)`N5kgbk)?Q^<`{vEo zjSGyul1`@I*}lD+F{EkN$-D2~?)hGpR`zVhKFQT5-^5JLbnRH~nR3EmhPF@9@|JU5 z$F0rhn&jQ}P$^z)I!Rb*X6D`hyPg%zsMuRDr?SZGsn}}i-NB`k*p(0caXe$aWKW@# zM9&QN>^BFO@iU3Z95zKSLnyf}4ce`O?}$({v%i!MIT zllqu)?fmTe#olT^AMDwy^k?CNU-cr1*Hj(9%D=s~AirNbs<3C(Rl&XAZ+L3R=K7bt zW4&+ZzPweND>a|zQUnLXUOk=TTllJuf4ZcxEzVTOjMv6w%Ke5Ix3vqBN+)jpdcXY8 zfg7*-UhFt^!QiAD^P)RjBX~q_pEbVGz$hkDP#95QCAHz^0`J@Ty9_n+vrbQC6?*+# zh4;PUBBw18HaGU=3m-aOU#HyYE>QGX-+r4vL&?iSY=I9FK@slh>gTe~DWM4f!Hob( diff --git a/TMessagesProj/src/main/res/drawable-night-hdpi/widget_halfcheck.png b/TMessagesProj/src/main/res/drawable-night-hdpi/widget_halfcheck.png deleted file mode 100644 index 311e405d688409cf688825b3fbeb2a4555687650..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 482 zcmeAS@N?(olHy`uVBq!ia0vp^qChOf!3HF^2u;-kQjEnx?oJHr&dIz4a$Hg)JkxxA z8MJ_G4hF{dOa>N^5+IfWVg?501&j>LK$;OGwtxvPE4qLg&K3eG++}@E4yeq>)5S5w zLh$J2{oaQiMA$!kUnly}eb&~nkMUV?6TBi zo8Dnz@nZgiM=uun=BzEcXS{xrbJLY)Q6Jls`=@_bwA{!3ft~w!YE@mjU)_qUe@x~+ zIo`PL_uk5t_n4WqPKIw(aC4PZVe9nbSix}Rs7HpB3uE5tjpuvMe^K8MsVnnozVyOo z2jws32F6xAD+0gkWC^TVWE*)9+lfo z6y*;GE3GJC4lof|G3|~BU)iL?b@d091=cN>yO6V9I!@?7lF{LCeeM&*zuxS)q5rsh z#+kK8?$@8+%K5|ecy(5#W5kr$7~vJ~_+);oUHv!zlkm5fS7IWnHT^*0>*?y}vd$@? F2>@)kxyJwi diff --git a/TMessagesProj/src/main/res/drawable-night-hdpi/widget_muted.png b/TMessagesProj/src/main/res/drawable-night-hdpi/widget_muted.png deleted file mode 100644 index ecf6d32b7cd6bc8db858a84b0b011e24127315b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 604 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~STEL88gA~qMxhWK=?3kyEV~B;| z*2%UyERG__@6TR3;ljejlRGYWgjmJ*-g&!H@8X?b9UZQUCL(@|FIuW_$xqK{b$z;d zf`^Khi;C7qFK6j#2 zVs)`NYuBYCGX)RaGCvZ^($BhQNm*}5#FQxa1D(A~Z|?1z_i)*kOgW~&$buF1PmLFU z*AOr{ah@Z)YIRHOt(l7Vem^~EEUm)7d4?)W$Pt6B)hnKEH@Gjk)4*u$+8hbZnM)s@ z)#skV{%ykQb1^fRm0lk!-JzUsti8Em(Nl@teNRjmuX;JRVNusymawgF7WFa22MQ)8 zTW-|P-+XPKZ)AE`z?HL4kLYFZ_{nvt(6Uy;%s_c<;JlNYPH+k@*dn>QGx^#R8|Ang zetJEeM>4nBZ{KSh(Z+-_(<}V9Mb652BuVjAou_8ezZtnTMBVW>f@>$oO c`#-CO!QuIZTH)|kJy6Vgy85}Sb4q9e02K@I-~a#s diff --git a/TMessagesProj/src/main/res/drawable-night-hdpi/widget_online.png b/TMessagesProj/src/main/res/drawable-night-hdpi/widget_online.png deleted file mode 100644 index 2dc6af43cfcd2dd8b1ea7c620331c97beb3fe39f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(`~`FAR34(lWhD`A!MEM?5Qc#PyWmF6j)gU}Okza@wD*+r$fUm#3?r%Q~loCIH4zQUL$} diff --git a/TMessagesProj/src/main/res/drawable-night-hdpi/widget_pin.png b/TMessagesProj/src/main/res/drawable-night-hdpi/widget_pin.png deleted file mode 100644 index d45b49f490323b9a0b20e4fa78f8734ed0c6b097..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1465 zcmV;q1xEUbP)500001b5ch_0Itp) z=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91BcKBS1ONa40RR91BLDyZ0JywErvLy2BS}O-R9FekSY2pbMHHTyP0|$6 zb`v47Mk^?mM2bQx35w9>!Qg{!{n<@QQ7DL#m!t_M3Qd!3OvKb+e#D>pP(>)Mxq@w> z(3EQXRQyT6QmY6S4WuCz>P7{*o6Vi$cV_q2&F;N-Hz7g>mOFROob!Em&dix}R*Ge| zrjEXcX;JPLf@(>KO+w-)s9XqnQ;?XILd>E+C5!0fXYce}UXFR_=5KprV|OIyK!9$NkmVr5#Huh}jVEl&X{qSb;*H^-EziiEur@@MdCloDh~^^3ACA6T*If}fr*nMiy8 z-9kGj@wMBekQY=)b)6XQp7b;1H{RUdzfC*(FbUd$Rh$$mwA&i)zV0>OlT344U!B7% zKyKbe_|)Jy)|x%Cimq`#HuGs*kG;r; zBZZri8aJ6Z5|3X)Xt**y*3*!wxZHl^wYN5i#6nGYW5wlBd)BlxkSvS%(Ovt7cC|) zn24M?zO)Zq+RS%ek<@w@ju~-?UpmM8t+{J(ld$b-N1FSmhVLP)NF9i*_tN0YR4&*r zLDugjH@FG=L%w|BCY&H#dO>%MYb4s%cige<>xjVu1u17s8l&2ry=L$*|$a84n0Rityqn?Q1rAl*4rJ6NzDp5r%WoW zc419Q@hm=Wnt2$%b2$OkMoyjsOgs+Rw^Sl)t&!d{+4GoCI9$;nLh30BZ+S0U?)A=i zaQTyId{M-cxUNaY<1L)UQjL-AT%5Y-Cbq$vj zCW{ZUuu8I~wnGudV_dhuGh~c?6j%t!lUz=47QafEo@Us-CUMl@F>bnE+Tz%q4>Lzh--5Ahxmu*Y`23OL4I z;wBz&+nTAhZxLE6|3bKg__-$jpUEWT_PLtiBp&x!;6GQS)G2G^!1u0RA$bQv0jCtjR~c9b8Hl6|UgoytbD?_>sm&PqEvZ+zw5juNN|X zj)RJz%^u@fe-wl!R7fXS^=bLmFT3$Ii+SI6kIT2JtQIl$+Vy5sr)lsRM@pOVa=cLe zw)N+935B5jr>1Ak-7;a@)_9hc8i#hua#q9_Cq8a?I(22-HSaU0mCpzYCM}GKe)6k4 z(=b(6Zq4OCrxu=>AHTBdoBu{XBc+~IJ!Qw=&oT=yd0i>om(%NbOe~=0CQp5&Ik!W^ zrHO*tRY^x9XFj#O_586z=d`%(e*%8Y-0rGy=FC$e|Gig(CuUu|npgC5_F-e*w*M^( zvo;x)=6+MC+Fs5Yx+1FN`a*GsE!RBWzWkIDJM;W<{okJVw=kZ0zkT|Tw#<5m7c)RQ(JgQ1c2Mf`boFyt=akR{0Egp4b^rhX diff --git a/TMessagesProj/src/main/res/drawable-night-mdpi/widget_check.png b/TMessagesProj/src/main/res/drawable-night-mdpi/widget_check.png deleted file mode 100644 index d60d849d17fadb8394e0f4f7d9debe2b5d20f80d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^d_c^@!3HFQ8hUO4DaPU;cPEB*=VV?2IWDOYo@u_m z3|c@o2Loe!CIbsd2@p#GF#`kh0!9XAAk7F8TfhXDZ5&wB=5Q=gEOa)9aipP#S)zPCTDf!pf)h#9m cb(Py084k+F=5KCa%?)z0r>mdKI;Vst0Go_pC;$Ke diff --git a/TMessagesProj/src/main/res/drawable-night-mdpi/widget_clock.png b/TMessagesProj/src/main/res/drawable-night-mdpi/widget_clock.png deleted file mode 100644 index 4a0d1f3e07ac618972e1ce98bc377385411f8640..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 473 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a&k#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyz1&S-^~7gA@w${E7uCbM|y`4ABss zI%&W6;Q)c-@8g*N3cG0J`H9Ziq!H`&)!xAI#5F4m(;cfsldL&a*DZ>k=JKD>@x=tk zgC`eqz0z1QJNxL9s_&PsubO;s!kzx}yUV}(3aGicy!drjjM21l#j494&MY?FhxZ1% zsGMAAW3%7fev!_j5Z(qMrqXDU;@N`j0+)=Y?a{bXyLHLt$MQx#qFXNX{bny`k}fW9 zQvR_hg(dPx&f+g05_1cm=eAvcT<3mR`t5^_yMpR>?U%ISU(f#Dd-Ye5q8D*7%ksU> zpGlU8C|8SW=@C1l>+0*ablD`4=DV|^hVPHA`Nij3d&HmR(SXte&oZF6*2Ung9=lwmbj; diff --git a/TMessagesProj/src/main/res/drawable-night-mdpi/widget_halfcheck.png b/TMessagesProj/src/main/res/drawable-night-mdpi/widget_halfcheck.png deleted file mode 100644 index ff86161b0f6913e4eecafaad3580a38dc464ce1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 354 zcmeAS@N?(olHy`uVBq!ia0vp^d_c^@!3HFQ8hUO4DaPU;cPEB*=VV?2IWDOYo@u_m z3|c@o2Loe!CIbsd2@p#GF#`kh0!9XAAk7F8TfhXD+Af92d7Q!e8|FWD3v%%LPEl~ z!J>Me`g^7(KiBIf_q)rjP8jWxD$Hcc_PO=%XM;xlK!#->>_p`1iuzy3m)$vR8-y_xH|zFzMpeybFdK zYHI!-I$3_=nL(39h~GFVKrKBWK@`L@aONQkM_*X%F4>cAC|FBzOI;^z*Kn6 zf9|hot+NkGp16|sI5gZW%UlH0~mdn1HRaE?^;&>|6lv!cDV>g;> zX^ETCp8P2P{(k!Z-Hnbh`wI^~IV&OMFsoL$NLNDg-`crk6I_;U0W*RPQkXr#b}5kZ^K@|x;gC(v z+3{=s+mDC)eS3I%3V9qp%zyY_DYEjPmDmJ@3E_Mq44usmmH|DDoXdoi*c2U;d`>W( s$Wfax^8}NEnMV(6ir@*K850doGd|T-=vXL`ybol9r>mdKI;Vst0H_Q$>Hq)$ diff --git a/TMessagesProj/src/main/res/drawable-night-mdpi/widget_pin.png b/TMessagesProj/src/main/res/drawable-night-mdpi/widget_pin.png deleted file mode 100644 index 8de91645ce3b7621924b81577893c6ab56c703cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 958 zcmV;v13~Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR917oY^2C`m*?R7efARZU1#Q4~Jsy~!~O zGNwNeS`{co1nnw?pua_tMDvCSszr+y`5X~O#YS?*q=e9>f@m93&PXV=h;pUaCi+?Q zBSsL05rkw=nbv!!bMEtvZ(h%w7TwMLIp_QCx#!;VU4#W15n(KTzKX~`1W45YSPnoD z?kBmQ0Ky?eZJ@WiWf&1Dhz5fejr#O%vZ#}d8X)v(01rc`kI$5CoD5IBiTomKy$!Gj z2#zqTjXEZ>UCBW|R{?o6o7Lgb>q}_k0n{+j+nv1Q2l(f)c=|Be)JYoMgYA_KIm57A zpFFuD9vSUtgAS!7M{^gOzPL_{_0h%)E8xfME%viuM@5ah0iSrTal|~**?90@hy|_u z8K>|Lk1TUexk-*C6)IxSvBXwvQ_=E?g-7@Vr^%~Om&Z9SHsV;k{g_dgGHWxLuy=F8 z%Uubd@S;)IUJYbtvYFPcUdM&ThS`?k7gFok@&39EWi?k!bH?j$n5pN0ni=9dr~$-2 zuhBm~-rNzH{%%(y*(V6-)V!Vce|-Bn&GW?k8jtw-N_~VliYgu8Oo4H3!Vx4mX${lg zey)+Fph`i&wSKJBg@tsLdn}g%@jIxw4)6G_t_rmABHPBaaJboTclfZJ$tfb0=Xa2K zwyQNusGmdxF37^hCI4P4E!}myv++Zr1;F8>h(xYR+V9}bH{HHX!QecZ@c7tR~y;;p5$)l@&X4mz&0O-Dhvg2E6tu6k7Jo zkIB!O&*9}tikhjXqHcL352EL;EjQ}g_IcNe84Hi_sR|W<(gKUF)6$Y{#Y#ZXMxu^5 zJ^KW7JT3ap7b;IKIjHoQWm8FS5OR?jEXZtUIsCOIp_ZQU^apO1&et(W? gm_M%mzy1Ed0Y=Yv(mt0yivR!s07*qoM6N<$f-?WGasU7T diff --git a/TMessagesProj/src/main/res/drawable-night-mdpi/widget_verified.png b/TMessagesProj/src/main/res/drawable-night-mdpi/widget_verified.png deleted file mode 100644 index 4b238274d39b3e1a0924e3fb6f01921e9e0103a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 537 zcmeAS@N?(olHy`uVBq!ia0vp@Ak4uAB#T}@sR2@q#X;^)4C~IxyaaMwQX@Rme0>?T zfNTy1#`a7G7LXDkmI7i12Id8f49q~95hS*N2`nEv?(H196VHfz=PY1k+{7`(m~pX( zfLrS}|7SgGl&98OUt6a=nfLM@_C;xDUn(97R#@O3q`0Qg_d^nM@8S z-Y!-9=R2xGtr%Kl%^O^G0~uUnMT)+xkv?E2oE#_dawCu7?cS7Q7P}v>v6Z+n=R!i( z0p_Jrrnj36v>9IBT*>m6%jK8I%WG^-d$nZjLLM&u!=7npyqqa9B<|`XHeSZg1>!}l z!oRFrS@($gKA(Lp?x#>-DAQxVuWIq_db~?jtDUS5SgCL&8wK|={*n2dUz)Hz_SU{H zB`;p*$OrX5d0MWpKs1~o@n^|Bi|6}TKQ_v*`xIL>al5g=Mm_cY-mjgfaXfTl@~(N7 zVRzsnPu-+N$661>`U)R@xkJt&WckvB^N%l^=j`13kLl~tMxLpmw%`c#boFyt=akR{ E03qYU-~a#s diff --git a/TMessagesProj/src/main/res/drawable-night-xhdpi/widget_check.png b/TMessagesProj/src/main/res/drawable-night-xhdpi/widget_check.png deleted file mode 100644 index 5d7e71268cc383d62a1afcc7900aa719a2154aaa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 427 zcmeAS@N?(olHy`uVBq!ia0vp^GC(ZB!3HE>&Y9Z;q!^2X+?^QKos)S9w<5{=|QH{`~yr#n3!&`DSzF#dPG7)k6QFFz zkjXfsa7qN55p(s|FY`YtoMBS%H9cJrb>h&`2@F$eSb`Xsr~KkcbWfM?~-rR xCnkz**cO(Ok`klz{A4uu>ZF8O?wL7?3=HdK_F08TI35HAl&7no%Q~loCIBn#m0kb< diff --git a/TMessagesProj/src/main/res/drawable-night-xhdpi/widget_clock.png b/TMessagesProj/src/main/res/drawable-night-xhdpi/widget_clock.png deleted file mode 100644 index 48370ad734c90e47d881db40671cb591791ca083..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 888 zcmV-;1Bd*HP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR917@z|H1ONa40RR917ytkO0OB=utpET5;z>k7R7efAR!vKkQ53%Co!6NZ zf@;x1S`|jPa8pE!2wH}qw6Mb3^amOY(#+BsO-u>I{(y^2q85=*ZG<4&McW~eTE#3{ zR3N4E^`4&RUhnw&G2#r(g?aC}=brPNd(YP$F?)>bgVV=K#bU3jc8lr>HKv{7VoY8| zzKY13mSpnvvzejqwO}B-b6gvoZjaUrSpeQNMiVFwwrm^w~kad!Bd;~104ybp7~KitPVpDmWTLROe_MXqRSSn;B&equ2>Jba}wtlJJuF_~yve){;% zA2Nv1m(J!ub`d-DoyX}N1ggh*rG_L%2ld(MJJ!+vtP3cS&AzA&fE^1x&OFI(_62ul1$Xi6?5?1Aw z*5uKB$6*WN=7KGxv{w8910hoOUBH%Wx4~d<*%WPzDy^4#EjZMP9k8E+M5q{>XoS6` zF=*G90DjNuONH109}DbQ;yMPOM>k{)M2?b^%6=Y6$nuh7&7#~W$tlj)5#_0ji6IRB5oE&l+UjE-+e@x7Y> O0000&Y9Z;q!^2X+?^QKos)S9GAQ+eIviXVq4(B zllu=G{qIm9(CQ|rviEuQN_F22x6G!y)*Oz#_w>`>4}0(IW&ZKHF;iM6_E+(hCCLm` z=lOWVj5C?8+t$yUwaSk{_>5$@m+g{g0SP=S40Aku6q6XHnIx66~5ihnBnxhE@@zYtfeTHD>w!78 zLC>D$*>x4)qvmjEt-Bs^aVO`D3|BAdc-3I7 z0CO9=YfKNNqc$WkK6}&}k+oPaeC^J=TLl-?e5$OE{kZ>(XCH^Z!-V|xzy2O_vdw(- z@Y)}x_jiMty6&j)a7{YUA}o02!K+QR=k9GQ)!WM%vEs6xRJ~qhUF5`Du7||WTsYTh i9MygP=lRFl9~h5$e0lv^U}h>Pt~_1+T-G@yGywq4YUFeP diff --git a/TMessagesProj/src/main/res/drawable-night-xhdpi/widget_muted.png b/TMessagesProj/src/main/res/drawable-night-xhdpi/widget_muted.png deleted file mode 100644 index c2a970eba25ae6dbc1397f21d54da16885bb8016..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 787 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDq2jfvMKh#WBQ# z_v%!Cj}S+h9$v|K0YteEcyp-b{ig-e$xa9p$Tm=eVPanJIO4vsH@ zv1j*Afgu|LA})=h8CVm@1^@LGtGRnVwf%2{^u$saLp z>@VN)b5ZEcJ0I1wbl=#%SD!Z&R{trQWmCW-SSRRc9dZAC`|q~wD=vB8zwqV! z-mvM1R`#Vor*0oDez)V?Hb$8p)pvI|ceryoM%XZa;b@S`QEbw+a@>CY9`n_krH@L? zg?zhahH%`lsaVAy7GeJ?w@}GlL{L5H@v*|K>({+K)lGrh1#pnZ`q}o)xJO1nt|!_tQUK1xo@&RZLwfbj61(rdC{#R zrx1qMx0lWl&~4BZ5_%_{kr;iqVw-E`CD~(FFWky^WLR#%qBHB7ql-?&izDk#GFvbd z7U-BN+!k7N`$y9Ct~c))j#NBfayeE!dfiurZ@H(Me9x}^?&H!wZNtnEvL{-Pl*vi*y4099J$|7w1!1dqL4naC+WO^&Alj3Cm9}46r``AW9;CWBP`&-l?3*_2E)YN~|gOYShlu zB-nX}CeA*7ZFL^QTw(SrTm=PJQ~DWB9ymL1zVZ8b_t4D=bMy|xxVmL;m%86FwZ5}* zW-D7S)7O=&_f}00JA0IA<013slPukGUu0$&sC!6mopdNjW|mvD(9s(Ev~!kCmppYX zuI<_xzpqlD`$BiDX>6N!z$_<$$uA{)7jG+{)l|R#n6$k^Vhc-tyCBFvp00i_>zopr E004n&*8l(j diff --git a/TMessagesProj/src/main/res/drawable-night-xhdpi/widget_pin.png b/TMessagesProj/src/main/res/drawable-night-xhdpi/widget_pin.png deleted file mode 100644 index 26428a0448bf60ba753808cfa800911b523b4dd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2023 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91E}#Pd1ONa40RR91E&u=k08)}91ONaBQAtEWRA>d&nr&Z=iYm!Qru+= z29LWhwV#?3kz&3OG8gKyg%Vjps)r5LO8zONXvcYr5URQsXE2U(9NoW~BH^F<8 zEn`w%5K1)&DVtnUUR9dwsy=G;Ro>Tb-JBrx$b^Ve6CjfdnMF8GwZ;nB3X0OY%D_P> z@i-2fWALR#8|Ug$Y=f6)7`g$gN%4v9mWS%M2U;E4GsOI>LzA^0wOCi8(0mAZ|E#9O znwshj$DHU&2_6h8t*JeQ0O#lA-SAaOf3Xs1Sa|iIkH< zZqLmMtWBjmDfseW^{DP}$3cY10%+`#LMt2LeXMG4@QvGvU^3}{J-Fw=&hT%=O6cWy zfME!kMvr&Qvi-rLTZ!}~1YcURWsDKHz>1hjEit`?iHgm9{$w3>mg?plrH+V4m3|p{i!jpwe@wQy?9pmy`+wdZ;V0d^uuIFpFtiB#EGuYQnCmOq^ z&z|?Su8ZXeo9Q?HIW_X)kH?S1+U*nL`71;7R75|*7f}e;+@T1MSeW>8Bj!cq7++X; zcwTI(w0;6kE<)G0a^xk%AABJ1&LQ(z#E{`H&3 z78He^GMwa4G1D(1pp9(Ctlc}#cml3HMEj*noW?aNSJYOO?Q^Ktk(e=wg+n`Fycjl+ z>Es!=Tk|`8>6a9jzoskoDPo~jWaZ>=ZDV+x3noHi9dUs(q9YoILWI89UcMJzE+I6B z;e2LKPvk_ws!dNgQDZQ1Jw(SEtXKm@6$yaj0&9;{Q>_z2ri=-V>sQS_^9b)xatco- zvT-cNMOnF?h94HPlM5yu2cji|HuV#}yC?E(;hL?{wYz!4=4i5!mCTZ>zK9S>3|?A1WO;snj?}!b*GvxjgQ+7$!a%!C$kZ z!M#F%Tn;b7PaWcA8jSr+U>%MWEx+h@!>$7x6$Ux7OD@rP-FeTRsi*!R|Z5WCTzj)K!(v zPLyph;at2UpXOOFBbhZ8AQ71zc$%rKFgaD_U;E)`J)%CxxZ%+;^14f?`E^xgo9WTS z*+ym*-v%2?cVH#6#;PfPxWhEgvY1nFal2~|a>$d0yp*SfOM5zYPsn~dcx)pw0yo*n zN@l*C*gptkIm=oem!s@U*8C-*m*MFbDT6e!%bPoXPW{f(-|fcSftOeCOJHgrdD2cU zSs$53=-+gd50)(JihqaOenwbMgu9p5 zSCt*0Eh{Xd^=WaI0@p6z#QyOA(O3*66GG%H8BHn+-1r$aZ7pxGY8oxZm}2+lNCu;V z3-hd<$A+2(PPDq6fumT|ZwL7>R!yDm!UyBA4BM>Svg{0|_>9#DoB%AU zHu!@dJv10#$#l{tZIgj4WQv#X2hLIei|QEAjHk^L;Tzu%rRNP>uu0owAd6keq#rn+ zj9&s+R5#(fyY(|e5%aV`TP8Fa5`C4h(qa5h!E3uuDdVS%t{mu8IiR0X%m?ADb>Drw zGU0h-?VM$3tOjQo{e$qiP#_&Mv&Gs?be=R+;s>!jZ2y5)oJY!Pz;o-~`LK4! z2U@)JR+EGKf!4Bvll$(Icr3hmZvGPjOL<0BY>55|;XiNim5+czj@AGG002ovPDHLk FV1hd_u;l;% diff --git a/TMessagesProj/src/main/res/drawable-night-xhdpi/widget_verified.png b/TMessagesProj/src/main/res/drawable-night-xhdpi/widget_verified.png deleted file mode 100644 index 46433d996f8f081af0dd4bd98dafa5fefcb8bfc8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 996 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 FV1nSL-Bthq diff --git a/TMessagesProj/src/main/res/drawable-night-xxhdpi/widget_muted.png b/TMessagesProj/src/main/res/drawable-night-xxhdpi/widget_muted.png deleted file mode 100644 index 4d75e010245f35f3d2e7e3622debc37f6289e7c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 839 zcmV-N1GxN&P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uy~u}MThR9Fe^mpy1yK@fmv-X(|c zqA0nfun8W7Yb->tu?u1hmBilcy?eWlyAvc2j-8#^o%xuVeQyuo=xLn+RL$ez^nDM!yMVN^vl)f! z>rZ~D_HM|Y8UzvV0D=#I!SNyg)yT-yG1cA;Spx!sWf@e!jk!RT!s)q*o3qsTg)>j3 zAJ`nDBK5z(r2VhhDEh+bLl1H{P#*-_AdxMu{^H5aHuFpdE6l8c*_F9}BOPcyaz zVuvQEG=XgQXlXqg1ldAv@G$^QBEjZfw0C*6y7+~iarsUR`LD&1zGUOPEhQ`X`A35A zHUjpGz~{4m_U%}3tDgZlQ#)JHI1s(F0ZO|@FB#$u&Cx%A(tsM7(TK#P%TO9noaJC{ zfT~CJQYXr12gGDCsQ1-s)CnkiAV;W+K_IR%?vERg161B0c$o&u9mo=jKR0Qh(gAf4 zN&_Mww>xx`Mvvd8Tr#Br0pWsk8ycXtqx$u znJb0jx$39dM)bK>`18wuX*q zV;8=Uu2m}AJm*u!<%-{@ID`BiGx^a=W?G@>Rx0ylB6y&vbWxNq2Yqj(l7qUI&k2YF z*+5N%Gar+n2K>QAxkeqGfq1hGlp4g8De>?4s=7wXsepKMB9x5qXZ#BV&qUe3(mp~ytJ~deN{B3C3E}46}wX6#!`8+xGQqyjU zwsczXm#vqtg&sZ;@pB7{yr1cl>mMF7`vjR6-FrV-z~+XzGhhF_v|mOA`3K&q*dA^# zIbOB7^82E{3fTwQrGxXYUfa}NwK*|%yOOs_+k^{lR~)ymlG1W{C7PZY+&iPePe(J% z(*5;Lb=D(JvsQG=zG+&LbZ_Iupq%qRyZY|hJ3P+%yjkUXlJ~brLHTEnF9d#szA14( jaMRIZ^}Q+O>*V*}S=#vP`_wzKpwRbp^>bP0l+XkKagNO> diff --git a/TMessagesProj/src/main/res/drawable-night-xxhdpi/widget_pin.png b/TMessagesProj/src/main/res/drawable-night-xxhdpi/widget_pin.png deleted file mode 100644 index f005bfbfef830ab685000f218509ebe8a738ffb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3248 zcmV;h3{UfkP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91MW6!!1ONa40RR91MF0Q*0D2!GOaK538c9S!RCodHTnlWK)g3?QySER4 zYH8e1BZ&^O%43-l1VTnKaa$I*IX2efU?jex$z+8x9x`aDt&@jHA377aIbD=jFEe14 zh3p~BZ3Z?qKA@v0bBW4uBW)2{3cdZ#e!p|?`TE_j?Y;NA_q%-FQm9rTtX64> zWA+s#uS9AdI6oBZ%3L;5R$2Q6X^V2D)O-j$3xbC;ZcmCR>i=Cz`I53kbELld?Tl%q zs2DgXiyz!HzNfqAE}_&?2ytVI_A}3x;te6?b9se%&+Od1u03-?{c8pW%Fo$xGaGQDKCKGeNtL`Z8`Q(q<&>vLcWhkS>^T;OLcx(Df@c>e!+lkDY<3BCwddSK5^Bg;#HYwjc-sES8n=T)V>r+U_y#E^!s(qja9!G3NR9c zN2I1kS;yMy?!|bu34?oy$>&E3Tlr->>(~9uq^0Bg0%g(i+MCf;eg{CVbcjp&VmLhJ zo?VZvI^(1bQ{ekQ-gad)+VwOv_;$krfH{LMb=#iC>VKHDRDRl^EUK*gnzGdkP}#AD zC@OD4W9x@QI}8tAUw5hHwLeAQU1##ZU#GO>clXp+{obS{^V0%F1JbL03oXebF;wct ziu0aGWA)Bt#D_DlY9rGN>E~5MjSL6f(oaA`~pAfI9%Xp z-j&)1V6M@?P-BF+B^B>UL0PoAZj!oWA2wqM0m&;YoV{b~+7E_HP`~ZovGU=GcC`0! zA28w!2H)Aq2H*ZG#CWTmb^%DU3y^MV$Y=tDqU_$j;eGOr58BN*<>Bl}`4}I_4GId^ zAt2z){TxG5sog*gjD$4uP5uopluNI(OoGP`dEz?Cl`3{BO(qX0Z;CW+Y%uZB=(ij> z`1bVKw@^Fg#rdB#ZSJi{S`Ht4*DFuIG3CyhX9~O8-aqOr-LVd7Zm3!S6-2ij-Hy|B z`HH%IW*x&V!Gy`h)4Z$Re%+_5?Sr*_fQU9O%svT#@N-fQ%7Zn9-k4HOZf3ooIsp`J z|MhOyl)}<|B&<{oJ3;tb9>`^AQC`Yz;`9@`PxQ!;XpEyNJTcP;M5YDoc83#? zvYO_6e57Vus9g|ZAvStnf?px*-lJv9ANs0cGZSCS1^G-}%1!xA+yNzigs4x@_Z!3jyG`bLx+<>Eq}be0}3*h#?!C^x3&+L zmKZ?H3}JY3``pi{UVDEwz{Ipg);n}v@@r6d>h3yZ?iyQ|zt<@|gn@JbG3*2Z3{M6@ zkJl>D7ICA-0YME4uOV~>|4F$o7e|N={Xqf*M7AB@n@mHzRShuM-^}&qr4!e3LS9qW z;GjXl05;!bSW^DRgonz4c{scE`A+R;&t)4Ch68Pgzi+8L>ZUSQ(k8td6H%^KdRRK62B)7EJ9yE(1Xhi^2 zlao+3F4{76`hrf}#OlNYV+wBIjN{E+0Pe)u&DS}A1VAq(2`P6*8mltrJwa}})IyiJ z!D*CNnE|-ZU-96-xd04+R2n4YYhz{618Ec-yogI~tZqv!Tx(wKl*Zkz6V4(~QzPwA zIFGB*(^-&7qbdNgioWt}LuE%Ag$FOi_EC-Iu{%B9v4(viFW=CG; zWbe99y(otKDT}4*Mhh&TPv^ii8gxzvmtyV%qutE&FQGH~nMAaa4 zyFylIHS*G1;8~&EXo^d2;$hK}8Pjrrw|ZTg#f;_&2zCBn0J zH*DCJ&dL|%yX`rXPx@veMFq-Bxpgt%Ks+pM+6_x)CX#uYW$FT1{=4s~r}AI|;aDvs zkdyL-ypr)Z?`c}Ezq~VDC(#(pJjWyD<-G}X0*J)SP~#sBI1mr6Q=lR8B|{%aPzy~s z8^5FFqir}vN$igJ5-_t`4GXA+J8CKt_F1Wb$<@q5yIdou!9jyUTX&NI|2wo(b;W%L z%PVVXk6+=bcv_0kt<4S9+dSz`G#N0MDgz%+C?}2z78nK$4jL3~{7+kVI#^9>!(CI- zr(d?bt`w(Nzf7zq|59LuXEZl%csVh>e{3*dLQ)>?Upl*#xPfwP?+5wKBM1$OCJp0% zrwMJzoY_G#=J^%woi{q?_Gu;a=0D%C{yz@=6afbqDKQ00D2aT2cSF^o6xDoXLzBU( zs&p#3s`s-5qJD+RGa!zmCA5 z&UBh#dF@C1(i*5d<)fTB54=)-Q_j&8J`VwOPnwLFX}5oEi8NGi7gqQtQJ6oGfH?Fr z4CDfkn3mYi+KFjhjklt9bQ$>P{^aV&ftOFgEb2AC^0XX&>2%BA{&>-E zy`d`K(jK}GZSjv&?}fs=F^k@MPAC5UJA1BK}{qntKp zKD*7Vc)59qzeBUjczo1(wABaGefB7L4}?kK@qq;C*L_SOJ|Mz{*6SutpXX0LeP*6A(%6zLF1kSJ$_A!O%llzve*>bIy$ViTpU-C`<$tUIE!>D9a z{h*+bz@A5|PGT^+4J%4LU4ig5J>A_$MvKOfPx4E?V}S4#hrBJ>V+EE=3JMF*uAL8v zKujMPvjHIga=eeS$cS|0k9<0SfPeiEDvcLnDM6vcd^p4hL@tdf#O$=AyyBrp&@j$_ zMvfytPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91C!hlW1ONa40RR91CjbBd06sLrr~m*2c1c7*R9FesSWjq_M-+cE3EO0& z+jZ3{6_p;^n;@Z$^;WP&FRM`SA82B)#Y?FNjd-aTz1a5FLko>*t2PxuR`8$^5kw3k zq6b9_t!UJOSz}Cg%{H0md-G+o^L_h$la1e(l76uJ&Aj*Kz2Em{=FNK}pw4G=?~7cz z8NLE3+XUj1@d@?YubZ;xUBf#HL+e1u?Ig2I0NfZY;n6>~yj^sSv3WFR`e%D#cu`6~ zzYyX*TN(lHfr4%T)jy%c1LieIT!})i5dt~{h!1@7h<{-PKI-{AGicMJ+Ko{Ro1PM4 zKN<4@W4<;np^G3vqpXgI`eOZYDRqz}zpP3}x1#h+jmQ@srx(h34+%?*i=Wp65j$tY zV__e|Q;Yyz&+%nfx1+}5BVgKEot%fTmi-(&RFy@No`5<-8$Re;L~IIeCazyoHptFW_pChBj@F zGahcpWBF{K&Mq`LxjzFe*Hn#GiX8UnrE(f!EG8AxCj`ZsW6lvXWQGAF8}QSuSMYem z4bDr!JcAmXKy__~_9Mlkfc;3ot`3Yxj;k_MziDf5CQ&rRH+{zk24G{UE7@eQY-q2ceggdii~zNtXk9vN3NCO9|{fpBnfO1%b%>* z+YprVbI0{?7%)$kcHrJM&9H=MNdoiqdjXi++9G8j9ma6f`@(~YkHr8xDTZ~fZ3a7B z@UETU%tKm6AwLFO$1S^AkLHZW4eSaeBAZQ0N$ zcNpcaH!uJ0+ha8V&6p&B8C{dLE>EjiIz^nO5e1Oxv8J-tuC7@msA|xwm8qo|fam}A zrg)q-?8!T0bq3g4ePI+@C^wiME7_b!*8r6Xq+ghcH>3HIP0lzg2yL`xz6Zd%?=jf) z2n|dQ7^ms#2fnT__bJt_M#i|n(M7b7`~J%UhtjsgMHu}#w7>~Yz+5Q}t6|?l$kk7& zbZ$LOb)Q8}w8^^JhN-l|l>4SNC@^QQBN!-u6@?DE;!5^moi2|VYoXI>nEd8Se5SkD z9$(wWqNlT#6QoQFj&~5np5KE5eSPGhiQnp~`gd^h6;Bt(kcwN$Kh8HWA7bFEYzypN qEcJ5jL?44CCVgrRfxXVo$_%VUclX!T diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/app_update.png b/TMessagesProj/src/main/res/drawable-xhdpi/app_update.png deleted file mode 100755 index 23e9f2d59d6f21a48121d7fb4726d434aa5c4d83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 377 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD0wg^q?%&M7!06!V;uuoF`1a23TqZ{mhl`#% zLP_bzI8~h=)jP;3s#Qs=emef1|Agw1Bl0OO|9;G6lx&%Cay83D>pF7>HpOS(jKmLr zOlOr4NJ`T-VRkxG(c7aC^F&y|p`qa(17qDzZIG=@>$bdk6?P=?P3FygHV?MGEV~n` zCI5cQs|i_07F{eYNSpZT$Ry?Rtg`1PjIQ>G&i2}$`Xgm>^}E?O?U^DUEO_&=V;wL^ O89ZJ6T-G@yGywoKe3^3q diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/attach_close.png b/TMessagesProj/src/main/res/drawable-xhdpi/attach_close.png deleted file mode 100755 index 345cbcda25ae022aead783ccb73983942063cc4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^IUvlz3?z5#SpFYK1qS$pxc;X$s1OSQ*(6;OazdqBG-S7*7z26B=_9Ev%E~U!EMDrW$Qd$978G?-(IqucE~`4HLz4V z@qx5)|L=H>llDpF&7s%ymaV&0*OPJUP}hv? z`0SOYtLIOfcHz>i<-F}3ORueYbK`B_`ekcYiY-pt(6UUo85xyLn&xPoeR{#qwO6*J zUVXOZPE^!0y|cTnCB2_^?QZ_kWxDOpw$J)jVRrid>)1L8K?ta2a9AtwN?rEvO`yve NJYD@<);T3K0RU1?%|-wK diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/btnshadow.9.png b/TMessagesProj/src/main/res/drawable-xhdpi/btnshadow.9.png deleted file mode 100644 index c222571f7ba315e35c494812aa9f6474a5c950ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 208 zcmeAS@N?(olHy`uVBq!ia0vp^V9de{WSKI}TLGk`1AIbUfiwsh8;hu0^J!cD|Nmb| z+gU){QNYlth$%4@D8*S4kTglu)rkCe(6OQOMI3rvj%g)^ZQ+TP5R_YakRo wHS6gQM!lvNA9*e)n{7 z45?szJ9D=ev!g`o=1Ip69rBa5=5{^mC#bV$Pvh3s^$KR!GFk5*P`}`GKbAZQyINQM>Y{_NZTQeHRQQTroz zrNYt0r}j>|!Td~Jv$Rnx*6SJLgGt*bNt`(!^g_sYrscFCS)5rP^jgYtw)x&F zPKM9NzGzCBt99|{Gba3C5H-s`@RRF+%>SUaat4cki!J7B9JTe_!yGWJaJD;xPUo(3 zR*a>4KVRG4ul}I<+5I(*i#C@tG%0Wx)&^hM(fgh6fdAv)XWn0PnRwHiVNO%EPyXUO z!Ov>fycw1iD$Fs+UDOx3n=hYH;;@53|6%PHC)dQf$uY$1b$a)CzG39xzY^us oKeNs_UC_ZE1xg?IIck`*CS06hbI9Bum?RiHUHx3vIVCg!06QV-RsaA1 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/calls_accept_voice.png b/TMessagesProj/src/main/res/drawable-xhdpi/calls_accept_voice.png deleted file mode 100644 index 6a71a6992bfa3414fbf5b84b980545daed16bd92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 882 zcmV-&1C9KNP)>;!oq#^H%GsDJmXGDO^WuI9K?U5=9uuNIhUPatdMNIA?S^-umD%-Az z$vs3XKwVMU7DY_%Aw>$XHFq|O3A6%yRLs@K1vArghhome5Ul_+iJ6xU=*G2isk>Z{ zN&uehW-0r-qV)BOm|R0t0(ccoD=Pb;h{-i1ivUkrtn48x=Ua<0)g8_SZGQ_-f%A-Y z>-T^h8c5Bh5MhBa$E$lNGgJn#8wmoqOWs=n2bu`rHhF*HAi#8l2%SORTLl**1eo## za=wN9N>Gmw;k5JQeS(mWdO;$htntS<-9oe*M7<&#bDDUN90HsIVOzwpFF4NWZOA?d zD?tA(*x)pApBzNDfnOkOk8sG(VfPK9=fdp0{%!Z!dki5w9wWlljt~Lz@@()tMuclx z5y-b241*n@+NTr+ZUXN?luh95Nh<_n4+HtS6tq8dzJO<75{!XkAa&lf^Q*^E%uXOh zM%fh3-lXJ=83n(i62$mk;qOn%TiAYz83LbUij@^I99IncguEQ-R!wfbm0JmMr-K|_ zd9Sc8CUf&+=9{Dqm9{Z-p1YD1%18&zQkO_}lRXsS%U^KX;)5_%kEI1lt2(()X3s zmLhs_0PJC^)>aKtwQAD^$e-F3-<{907*qo IM6N<$f)Fi;UH||9 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/calls_back.png b/TMessagesProj/src/main/res/drawable-xhdpi/calls_back.png deleted file mode 100644 index dcc5e697c2b34c41606dec6fbc1ac36cf6b1bb4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 744 zcmVP)(Ccp%k025#WOn?b60Vco%m;e)ykHEY~k{1v+1P{Uk@Ef=%M!~0T1M#_BZl_kO zB_ff?IucleKbv+UUc@8uuZqRufngZeeOSBQ&H%z|+$RXWw*SNv05U-M0p%)u(XRwX ziYEZNuKzRvEcp?@KzyN4cq_`DL<@uXi$o%^3E|WfeP?6Ece~w7Q@jG@zH5Rk-Yoko zQSRa@#mwjP`8QbeEMCkyU1gv7lJ6Vdn6fV=lgTY~djEENsm0@9vp=HYiJ7NuE^Tz^ z;N!NhVockIIwzYC`koI#{B|rB`yL1c=x94M^gO*%seHgbzdpR_@&{_H*=+V#JRYxL z=%&lV-#eU=$z=AdW}Xt8mbF@~b7V>tX3K1s4x%kYqtU~=GjA&k2QMK$RibTk0-)b) zHZN>Po{<-w(7O(Y!)KbNg;Z62Z>0yzplfyC#e4lur&Gpwf9;OxqzO{Y6?hO3-dRCF zg`6si^3iT`6TJ5a&$cIc-qlA5f(i(qtQudV(Kw;M!)X(=?6N<{cuuMque)Oph48|i zaI-mzfbe-lB^)Ddssx6>5M-%@YPFh@emRVR@J*VYz!0$J0pZJtqq8t zn2Ajda(NUR>=Udiq1WsEMnu{p(9X`+CLnwj%K_rGbUM8Y)i2>r&n8a-o`8^o__8T} z1DSjB&l+A4CkWyvGy|XM=PbHPWz_I!&3iQoQo&}iOn?b60Vco%m;e)C0!)AjFaaiT ao4`M*o?f4MI%cH+0000AcfAe9V1bsqM3!aQ>GtvQzy2Ng zqYm7v?t6V1&o`XvgR=)-Ce-u-$mjS>q_NS4Ak<+%_ys56!15*#mFLzX6vD8T^j71E zY?V4C(nppy1Y}+-;<0W}$HVyXAcRw|(v5J`xmo}RY3s-2Cy;mPzzbKa11DD6hCG8` z-%>j1&?YcU3qOL?8^=0U1Uu*WLH?*Ik@hO0l2SU!@P!3Gu#8%TMJq#CPYS|`lxg&( zEJkTVfD_fqpe;wtM@Ww>C;VvBY7_GBcxms;wm6UWwiaGO`w619b2!*@tiyl8k6IYX zvC--flB5+8zhisp$iSs6u0_)2D?10MGbz7A#PMVt-$H03x}Sb1WJ}r?XHg^7o^-1t zl*T0_qGkyl{250Eqt4Z0IARroXRLI+okDP+QEZkF;<`E?tuSoz;CMcy!#oh=m+{n0Uazm@xZBaX?D&t_Uar+@Q(3#3 z8;s9Fr_e8C$6GpfCFh)?7ohGUg_Adl8pT+VwK|@Ii*9r^bMuPrNT?{r_hq?_Hd7=l z39S{y7)5TeoP4D1g}~TtD?iknh{9y32&x})IB-HBZwC78$oF;K4IMk0F{(fAa3Bzd z?IP)uGv>P^-_`ZZo*!+S>Q6Wv_#kX1w+Mvi(HeFYhNGtD?*t!&bODrru+ecQqz#}25Yh*bK{#n#2Klb%V z1&$zjpfb-M?|7S{-XMuT$aOO$PkemQ5CRjA8I#Yo%5b44IgJiRVe)KoewHWuyB%{T z9esIMKRb6=XBxOXfvtIF^%?zf>{9#<;}g1XSH;*O^xnvE?K;l{5_`~BW5Pju{f@UO z?vPQS>`wbM>66>xFESViAB6l?S}w6=9XD(jKvDh3yw|^G=SZ8J73dZUMF_$b*Sb;k z;pnX8%6qDkw-jwf>(OashY!NcD9pNwz`U55qiSPBuGJqX zkKgRb6QiC+g_2Vl2zxOjUsh(kpm6}r_JLq*2)#shI4=j^I?eRA?cE>_x9v=5D?AL3qK5^I%NOTG zv=$Y9yw+9&ty&yI!{{)&iOi7S4;RoFT5KMVcC{dgIZO>AGlCC5NURnF3^fHHgH{~~ zWdH;qykoui?hd73Uz7zP>oM2$8g7U0SW)(4VgQ-Z)H6UPnh@l*`@$%VhKi!->lp$0 z#kfC|>l$OuPIMH>AFk313YR}k$lc(Y^s3j2m4FgZ0!ly$C;=s)1eAahNS(l6g@m*W T+8LsO00000NkvXXu0mjfWdyV! diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/calls_topshadow.png b/TMessagesProj/src/main/res/drawable-xhdpi/calls_topshadow.png deleted file mode 100644 index acc9dd09e6a90ea9efb7b5b4609383d69130017c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1505 zcmV<71s?i|P)h*Ipl zzrDTvef%&!j-U5Ga(iEJ|JU)8o%{T@Aq;>9Sp@ePE24ow?|=^w@Am~$e28EUVgcL` zq_CSAjx{Ad3?y|`$;N7|9D&}szPKN{ZMF8~oyXwVtY^bo*iD)NcAKKYNEwJqlJ>|E zAEz9qHRZXF=zCdJ;)MYDRT7~}`*DfrDclgMo}UkQlZGskEHbY?67=;jt+EE%4+9%w z1S%`Mvg~A+oz(~HpVN=iL$~&0_=vg3e)I*xCF8muqc|2SMTG?;!AF&RrQ8in>w|P4 zY@vwF*!TtwQWi;DIbsl5od)sf^o#nTF`UNF8W`3=WUL4RpVALVM?VPIaa4ZOeo(?V zAAR~1#TZR)#cMwTd+bNwsO)k9F@}Lb8bb%HvUZ*MMgH(?3W=9E??h-i-R6ztYX;tAyRGhMCa3yWZ0r)nowvo#~@(tY}vEP_RL z3CfXOHVlY}Y!@PgAL|>32}G!1k5Mfg&jXQPt;gWy`OwE89ULuiC9RJ@ zv$|JX_z_ICBA7qDAHyj&+EW$`5Ph~;5d9DRAU(r=xIRB0-92vl`#QnRdXSK&hWk87 zo06O0kBcd+i*WOGKZ1mVT%TSaRD)}^n@Txy<3-ZIk6=kvX+K2t6pCnILntyDl;Ek; z^x@dfETTb=!ysj$k6Pb+YynehUD9v>zfAe{`!Q;9k=dS}7MGw1;OYF~aCoT>_GFKa8=6GzdKeL15+R2jz%o^n4iT({GwSQaUgKswDWRGMol^X?>G5 zuo)ZQaiA8zNjC_I?|6dP-7x8uLuI8A1QFH<$06;PyI-@)_&v!9)WQ_ zUiX8Zj+5Mg3Jv7O%j0ty?@LmBF7ZGbfx0~I`#oi|DJ&RCTU9nhU?Oz8osY<}tB>om zE=Qe4fs3_V1|q8hsH#93VmU-LrRGGC-xL-dR{J`T`~&uB{ZMi<)(52|$QEbXcm6$B zQu8<2Y^)t4u*=#p&Hdbdpc3o;Q@|q9>qmMN$8Hch&91c^^KF+K5!^FUOLA}PZ@-^5 z_?S`-5!d~=bI!v*oU%xPtICE5&(;r9^syQ1JJ%LIrflVpT9Cc|eJrN9JSA-{bxF$l zD2rgDC`lVMFc4jkDuR>@JLb9{l*{w+qyJyH`Z({09)iT_NO{?hQ5>n;$Dp!R`uF{~ zOnKgqq^-4JY&b1~n^wFUOK{~lO)04y4fJR~KI|TTrJF(^C%~>tx}_wbLgv+Jt;e#L zQy*?-wtQuWv68ym6az)D!=lDg)IHc*Ond(KK3qv*Zi>~~f`O>4aOP19T)*V^BaQMw zofe1nQEiG``vIWU+Jdd?MF3~CA1nqbfech?>bMVw3g;=FWb%vXf*TKAgO*PqV?_|y ztoH=n@Q2BlDc|}1*kq}tDs90k+iKm7IS~f8T1FtK(|(vgNV7OD{h!{Vlm(IC8ptC( zRgp0BYs5+#B~o&8pL+^jKY#i$1}Qg;T5n-QK^S0e3k_Cf1X%PmtJ2_~_uWcA7T5P> zkRDmzhAARGBrRmMo}e9Lku>!65QL;za511tH%3~cr#JrqWn3Xi+o00000NkvXX Hu0mjfC1S)* diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/chats_unarchive.png b/TMessagesProj/src/main/res/drawable-xhdpi/chats_unarchive.png deleted file mode 100644 index 971694cc956ab35a50358119655df774eb56bf16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 788 zcmV+v1MB>WP)qB2U%}>=NC*vq9f53K(+eD%y{IHaM!|kwB^CTuPeb5o+zM?F zSy#vmU_Yr6pP2JY@IOF&1FbB4=7$M_-z!uo`RGP1*@pE4nY=dVN*4;nI5lRjSzvr%c&?7GigqsD4J5;qHvzUd)A5Yf$==3 z%`J1hSPR{|;L5S7WVTQv+^%meTfQ#hZh?PJVcs)7pD$u|FV^Y+?s15@T`y#hW_b|6 zoU{A}cKghr-I`WNmo>+15=Z@)xfdruC)jp^{$SjlJ7|@Tti9myF~iA9Vby04$2T~d zp8~t>GI(Vh3hwu?-Zf{<9mc&pk6VuYa3~5yTtA;`=PXj3dfVm@I4zOTcJywRBwwFw zDql@tb>B|KOTVZssR`8P2WO80gDaUsI9AX}NN~eg!Qe{f5RMge5)#}{t6*sF3--0l zYXUbk2T$#r8ZT`(Vcz_jH?Mt~qeu1wxLjv9A?|*}3NraGPPc(tdXEI&)5M*~k$vF^ z_y&Az<{kchQ1SJfc#GP~31GG&=2Yz_@L?OZ2M=?i_khZ+ag8lzAZEbh4EzWG4jpK4 SLgC^700001ALqKGt8EEBSVjEFX^auu$Gkf5A%fhb3&o6ZqoY%aW(H4-F*BVz&b{|Lcjmr#JG}F}GxwbHo%0=~gvC~h@ZhJ5 z0Y;f1$O!#(a32o`$W@6ec2Z3z6GT&x4ywpYJorK$GefMJp^?JGfj`J=tf-r!_`~Po z$BrJdC7$@F2x3>`oQw~A5_L%F4oObqXYvwBy&&C5{8Zi{t+%8)g`ds`bm%?noq6|P zp-UZ31gJx&ZtKP`L$^wG;^&ws7p!WEY<&S5aYFU_Y96OlAPc^SGQ6}h?O1>}Qs|qx zLN{|bul*7`D<6}@OHb_LSKEO9#0iR*J(o@WlXGmd4!?^|Tfg3M1K;PSTs&6sOKi{e z2Ky|U%srw=KyLu>FE!5M zo2vpq)Bna5!iAXr0N`D0+~dLkEDUGz`0dI7K{CR&rQ)@`GXbC`YD#} zP2g{5ROlsYP>cv!HJdmz7!?}@0m(spFDCp91_X!kXGNQ!-HH*&p&{UE5Wd0hj=j;@l1^rExomXo)yv)p*7g9f{>))`i5@#mR{NWgy~#I~;P}m? zM6cQNY_?hTDz+O%RIYG^I6nHyF*8>UY7#2MG+wgI9)4s~L6=zb&${~X+PE;zZc3=3 rm5&TFM#!OOj9~)QbDjcL8Poj%zAa=tq%o?E00000NkvXXu0mjfye*PI diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/collapse_up.png b/TMessagesProj/src/main/res/drawable-xhdpi/collapse_up.png deleted file mode 100644 index a36e16f2d9c342bb2b7a5e0d3d5ee45f1bec4271..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 125 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC7f%<*kP61P=Qr{;FfcGVx~CU~ zYO`%PbVv2e`H${E1u@sBmhb*J_3n>Tc{Qo#`!-3(-|Sug=2&>yW9{OP_x*t?7|ic& VUy~COupk`7@pScbS?83{1ONgXD~SLA diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/device_phone_windows.png b/TMessagesProj/src/main/res/drawable-xhdpi/device_phone_windows.png deleted file mode 100644 index ff6b70ab8da0db7b60a837630abf6dd20d38b125..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 618 zcmeAS@N?(olHy`uVBq!ia0vp^At21b1|(&&1r7o!#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~KS-^~7gA{JhIO_mZcE!`hF{Fa= z?JYyU!wv$i4<$IIEQCdQL-SmZP7GSg!`{&BAk1al>=5PaR7JNEh9yo@XY4iENo z-B|zRAJ>v+TaR8mX6tIc{^qma&&=i@cHP5t^W5G~kA6%(E^|A)`KR>GUUQGT??2u! zdHyzK&%W0Y8|uQm`MkZopG{&rmc)Od;#~JTX03gD8<1TSv9O_w^+@5G0EeSYk9Npu zU-|!L*R*RjdbSSVm;DUWoVC~LWY+T|zh!Fle5LC-^G|tO5EIlK8m#*m!lvI4mRo-U3d z6^w6Zd3%H;iX4}%*1X8P$VvN!=N2z5l^!us7e_%)ks!US_s3kjvqA%%JQG_5JRJEq zv@T%PHR_o+A*@@#X^Fv>MNuMw7m9z$&fsqEFHD>9JNEfQ%MZ`%`hU+oe%|`~y`RS> z2^lLVu=F$t8ZfyX;E-U%&vA$o?sytq_OYTy)AFqQ)C{vX;Yp(Og zxf!{W7R4K1Ypj}h=eym)$PBrt-mHs8Pi}FuZ7Z&qDOB%T#lMI31#i(?LFU&+n$te7 zx@dcyv394u-pM2Gj`N%gKW%*LdaLfj%Ja(`;Ex& z#=6pDe3Ry!_@$*1K5v_}r=RW{#Z|Z0XfOFIyY@?pgD!$?yAoh&}XZ!2ET6 zWpmFz`LLb&rFxb9-=O)1MbEmOvL%x-3Krdm|5li8M)-V?sUGIL(Z zGk$|_=7oO!^G=^O>x}bI(PsCoak}C1QE|P)t*9;jYIUnmeoN@vSS4~`a`2Nno$$caHyYL_{IC|Z z2tBTLt2-oqR&$1U(ZjoGIbG{(ls-F8x*nJiU&D6j<;nvat+uV$X7ZF@!#_E<{Kb?1 z%q|HNGd7=_v#n04{aL5|&7*#)zv?uee^pp-*`lX3m3dOG%Ppf@o4lT0o_ly_UBJtT zyx)w>ty_bg53Qb~H7kZ8@%NAE?{A6EwaEK!$b9+Gu~R3jgs$KAW&W~v|DMOe3UN*+ z-)J^pE)Lq$zd+^wtB|eN+vBgZ8+u(7RljEZ%lK|F_bPuz?Fn_g5=-Q7YP0OyzVP!4 z0j)dQ{{N?H9=Y3_clq-*KWByp?uqxNE|kvq*nDQ0DPzN1;jBK{tIs2>c^MzfEoATt zH;WNp9+`F7i6KCEVzqsW#y{bc+qr&z+_T`!-3c<2pD>ora5x^Y>4$UAcg3Ij&D&q7 z{V#lwtISk?G|}NsSKPu9HT!wtBJNk`t!C({St5Ob!z)$Vwp~xJe8S{>LDLr|lXQRg zYy6n|UGeRSxINw7OIEREOuiUnn&OK;t0CveW2%k+=V~g6@tvJg2`noZJYD@<);T3K F0RZUD@|^$x diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/emoji_tabs_premium.png b/TMessagesProj/src/main/res/drawable-xhdpi/emoji_tabs_premium.png deleted file mode 100644 index 9f5a35b44a837bd7515d85ea86c95a338f6ae8f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1528 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 JPDHLkV1g3acm)6e diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/files_empty.png b/TMessagesProj/src/main/res/drawable-xhdpi/files_empty.png deleted file mode 100644 index c0220f20a1a10f2017a5b74ee1cbc1e9ca4bc54b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2118 zcmV-M2)Xx(P)bxNYer>kRTs?=%Laa z8y>``-U>8J3T?EKq6nHNElLXtdI-yW$O;il%!=!PnbYmJuKS$(?X~x}&;It=!x_E> zf6h0oZ>{zH&c6HXGu(4VjPT|Ov@?O8G{p}N4))~HW+Z%~qXHUzeQ@P2Ji%ubJKQXWz^`kMB7pe-Nrm<)bG?_fc&Z2MB$K4z~fc&J*waKT_E4e zCTx(G6|q4RaOkxKiaA_F!m48?KwiV?B6r9p;HvjtTK+O2cO_uCC(DA|wSZGVUYf_B zR96EwAnPk8xw?3Qb8^#=yB=@=c_z0u$W1+)^?-#i#yQyrc`ZkBX2>4!8NO*CFE(6L zH$7m5Dmaq2=wbR#awI!L_J9>h=>l0^qRj=e2OI-91>^@T%Ob-ba0JQlK*Evy6sL<+ zkUijGp0TY4kQc=+G6p?h1BR^`K>ke4%af6H9Lb50Jzz!6)&=q{%sE5uG{C17pwX(| zRJQ@-`{ROl8esWMnrYL_P9E(9$WL>+xYL@0$>cTX=#E+!NZw;NV{RV~Z%6xLZ^% z>B_tEH^k=C&aqA{KFA)%p<`+uYqKY_LM>1@it*dytdA zynlfz?;d|uA>0$>{#){Q9AMcLkPmP(9o>t5MrGT6YB(uLJMI(_N0QUuB*rJALar!? zdoJ3DYBm7ii=@*PfNQ%h^49hk){&=(B0;*w_JCc9Ir@9Rj=)^qJz!U2j{Y97BQRHY z57?EMqrV622+Y;p19m0m=`g_2Rz+BxuU{_*}{vNO+FjsdE*p-;0 zzX$9H%+=ikb|vQMuip)IT<-493)6S7>ZV}jR$lpk+dWG96=mnMRwl2=n`U*)I6>@D z=zTLs(3Y{>?`VmM%FGvR=gdt6Q)re>#G%OnLax#|jQ*-7!$+1^kk8mo48PDUok+z^ z4iIvO&SCU-G#Ng!yn=kjc82+t`5<>$gu?JZ(%i6@TPrDM(wtkC2Hs@?{vn|j`B+ol zR(8JR`a{Pzon&wKSwha#IgGyi6JV}ZK|W(UG5kWabaLHo5R9-3komP?(q2$RE{R!Y zK5~Vuwx`lRctREODVS@60>0-u_-L(|B5updCv?sF+1C);(gB-AbW+;}xXcH+PU4w* zFCK7eRM{Lo;B4GdukwIXqsr#!0cYcudX)#98dWw&4>%jQ)T?rT9X565l#X0qPQY~> zlCL`#i5)`n&4lv55PM~yRjs7}1M_S^-Hha$V6R90s0Nj0)L0{+ccSmmN9YTnALF*Q zOrD9DR%UhNorYdO@?Vn8+ED_$h^{Gl523mvxkIybA`S%%kY*zKK^RD>HH^p9v1m49c$>bjsS901|o8;8&oB%ds zkgv{mXxw%Wn2YjglV>#AsPh^9-L%)C+tHckNZkz` zA}ibn$kBt|(z$~Em)r`d%$JU=mH4xe#EP?5+^bHvLMMx?YUmJI;XXi)l{ydo18AOm zwB!}UybJw>9nQc}li9~7W5Lw|iK>W!_|LBzb(m`PlLd3ob?LwygN9PK+>Kl8T z38Woa(a<5X!fk-~uc{pT=okL(E;%Nlzf|s*-KuZwt>RY#SbloUwA@b%HVh=4ZziUF z(B_+UT*a>h@HV4}Z)k@vW3uin#X8A_zBTf1OR>z!#fUxBtSzo@QbucoavQmhGbb~& z3E#`Ihb1(6jQIOAgvq=l$o~idWS@`co!`c!}rY>al7u?NJ9GB5wgJS1RU*8@gAU}|@n0HB@(LAgGfjk%IO{nXRRt>2^ zUp~@xH*i0U^Ru2;S?~@Erl6OQ+(X{N1mru~H=rptxZ-X-f@QL19L@4fMULp%Xd)Vq wy6wo8mlEU|+Am0s)^`E>JGb6Efet3{KThQdXi*)hlK=n!07*qoM6N<$g8J?kzyJUM diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/group_ban_empty.png b/TMessagesProj/src/main/res/drawable-xhdpi/group_ban_empty.png deleted file mode 100755 index 5a57da26b4624c82cc2dd32e1232127e08e4e73d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 952 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 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/ic_masks_sticker1.png b/TMessagesProj/src/main/res/drawable-xhdpi/ic_masks_sticker1.png deleted file mode 100755 index 45b9510d1f9da6aaf037de803eb1fecfa1a61a19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 655 zcmV;A0&x9_P)2VLO+n&N0}47jNY@Uj-75}taU``+f}o{F+S0gm>u5)XLRI`*6bH91 zjZ^F35~E-sP+HsabUF9q=H^<@x%b=*<-7-y!1wdM_nx18-$|t$92^`RZUMtAaY&V# z;iz)R62tMxrzjH_Wu~H$XIRA+R>_#sr`f|M_GmW~uqL6Glo%pM)^Ow)qQs@-Su>$8 zNZ2<0u~tz(+mfrGA6AwZmyW%Q((HQ6Q8#2nUVgWgjod90F`^f+tlU?uoh2(O>bcjId#5!4ohoBp&%LJHv(^M;RmPeV5K90ZYyj|y zj?lOp?Y0Cwl|%JOXxxoY4ylMyh(XEkO+22^C^!;~u_-=6* zFu*8t6e%*tC<6iOpw!lW9Jgp2a)&RWlk}!VWjSvH#6Q&c@IjPHu3 z&se~D6a5SGr&yQZ3rajRx}@3)(7%o{kL}j3=@z0MCK*0hpf9B2fN5X5WsZ;Bw^2?# p;w1-$m(?3Q5}42RexTey86(fe-f{4kyh~{+(!Bv2JQ==%JP-)<&$CY}%iXF4O^C zeZ85VwQV|>k=Fb`*B6Xuh!wdk&kyt=L#)eXFh9^U&Jt6(OkzNU7|13DM2L<-JrE|U zfjChQ#EE(!PSgW&q8^A7aiEfj1C>M^h!A@@A`Arjn;cOO`~-K?yi0~SmDcZrUvXd? zJWcaEazyGguoVYZ!OJv1ph&y|Z{olcFmd|te9T6HSnvZpjssT#kJ6L#M&t<{L$DYI z(&hPG`tP7+*}%la?hJ9pd#^R(fNS=^n&UHTi?%awaU}?(J_oGogoxBA(6$En>Uup< z(iaQ?ymd=At#sY?i3rgs^`sZ}XUE8f9VvMt1f<^dO+JkCA1Vl>o^a0x2Qzd>ThCUR zXheI_4FF5h`6v(xh&O*#UM>;!K#-^eGDLp6>wyB%KNKLH?$6F00+5Klv++Hs?-B5S a0e=92ZRRk`JirnF00002+&ocHoAp8q}GJ>GNwyVJYvJ|C&3rlJ@iiq{JL@?f2x%rnh(4yas2 z$rqIex!!P*29=H!e(IEi%@*lXsrZebX63-o1DaF{zTu}`IcQ`rCm7}hX|mq2N5!## zpHuQh2NR@lEz+i9c#5AJDu^IUxZbi;c8uZYkt}Fo7T0~*aTPx+)N2Fld}fBr1eC!J zW^tX74PE#bmM}ijpu(u*2l@WcrVZp8r(O(aaiI2}1HkHxZ04G|Is%jBB!C5?6vj6~s~E z7?&=A(XDDAL>eQ?5&2?2K^nAGjN*#Xt2~5> z12JY8rjHJGQ?K$chAYmHJP4B{-wORI2V-PS(W(r>B=Hwjc^D;)E5d;OBTSNlR4ziS zk~PN&Ni0-8I{84!v=uaRi*-t(t)i1zN}%oFB+n^A+eMHGRw+o8z%D{OBuc(zRT77| n!X2J4&sTntWSO(7si~-co;IymT`&Bo00000NkvXXu0mjf&bbB- diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/ic_share_article.png b/TMessagesProj/src/main/res/drawable-xhdpi/ic_share_article.png deleted file mode 100644 index 726c9c7b9b9a2b8340ce567437993c541208793d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 352 zcmV-m0iXVfP)T+bSmAw4d>ln3 zi_R4IsDfaPT_L_akCqVcdAye5{el+1jF;ard}WVqJ|uXaIG-5)WRoY{uk2J86MuI8 zCc=?@zj(`o+CqxoH7|x^Ad4FTp0*C=U8#3*QREvP;IazvP&0P`0000zAki diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/ic_smiles2_sad.png b/TMessagesProj/src/main/res/drawable-xhdpi/ic_smiles2_sad.png deleted file mode 100755 index e7edf3879c8a38d8e8a9bf0104fb4f5ea189ce04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1023 zcmVZ%7dZ>#7*X-+VmQ={f( zRI^->b4AXzG-bu>XK@Q_sU+xEHuD4_MS-Q5vxL+cq;rC1mndN= z*>b>08ZcAkjs!|*w3ij!OM)B`$1%)ixnn+_A~Mx!tik+2NUqq6DW;dALM~yo!gxGc za>Y5!Tt$W1zy)TL!fo;)p3|6Ba>WJA6h(ysJXM_JPWiA2bDTK2;Sgq>qQZKbJt`k2 z;u$M9tj3fPuPBg3v+?pFnX{Nxa>E2X4$o9YiKj4ENs}82Fh8gXi4@Z4akWA`_Yh_d%UQ=Z@)#&d+)fqdRk`6wOg-tk zjzl)%IYwUv@E~hBObvc{x`ramUb!KKO3X6(Fr7j^V2FH}#BS>GtKlLQJfmxP8B@(5 zxnUP(zuLum8Z~g7TxKwi5e#Rru44d~Fwe>j3o-vPRBhm9cHz0i$7In*5%Dc%2fgKj z0n}lhS40frFrF{SP&;@LQ$?oSup9HWA|RP#n0gkd1Kfw_O}XI(Of~)00!b8OE-*nI zqBjRI-^mSWT)`|<0ErY~Y8b1iupM($t|-P7Du5Yy9#I>JQvg3>zLzWB!ki~rKJ3J- zQIuGO=WV$ng9gkLHDLfXz+WV)Lxjkt5KkFHAUjQ0I_|C#()}H*@)te+W8CKEu>m^r95=q1wT47PE(H z{H{<+4iC{wUBd>USc101RWrk(ezPwU?QHG@}Uo-$mIY*wd`XNW7M5UpbYaT z4@eSy36n!9m+`CO8x}KEJ%KrRuJRRy{7z5>pE8rX)RXv#NKW$!bGTJE0y)&t>=f@Y tiDcbKgn6HzDB*MFk*1iKn3(^I{{RdNBY6>46q^75002ovPDHLkV1np_!qxx) diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/inline_video_pause.png b/TMessagesProj/src/main/res/drawable-xhdpi/inline_video_pause.png deleted file mode 100644 index f7641c139b5438fe15605d0d7574cd69aaec7a33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^3P7yF!2%?m9(~9JQm&pZjv*Ddk`p9Y9{m6G|3!kS z=c|AJ4^H^eew88S)xTuM2;Kur^R6@mGQ06gm?nT2ZL=9g!q?5X`YlRn_4lpK3oDrz YzIy&>%uHEW4m6O#)78&qol`;+084@|GXMYp diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/inline_video_play.png b/TMessagesProj/src/main/res/drawable-xhdpi/inline_video_play.png deleted file mode 100644 index 71340a39f1a165617c366ad035d1dce25bc40683..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 282 zcmV+#0pLPRZ5*n&_gRfq+sw4xP_L@|zhQTfUIe0R~;^@e<4xmy9BK$LnYU!-}#dfCrs zI3aHz7BAt{~zTuKp&berR&U#ZjuwwXe3|@9Qhr gD)l}K*+B900*$I3?JZxB0{{R307*qoM6N<$f)v+yQvd(} diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/input_gif.png b/TMessagesProj/src/main/res/drawable-xhdpi/input_gif.png deleted file mode 100644 index 34a012370e3985937733f40a6079a3777225d25f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1340 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 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/media_doc_load.png b/TMessagesProj/src/main/res/drawable-xhdpi/media_doc_load.png deleted file mode 100644 index affb6ec780a80e6900021d77ed45295247e2334d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!2%?+JW6_jREnpIV@SoVx0k)S8Vq<`FTPum z`)xm0`GYO{b!`^P>s&NZviRJ`-@=k~X7+}}yy=Rs+vhvjtT?z}*M$YHF`GE7+jg_s zMlSbE=v!anez`UD)kMk9mt@mtxrS+$&T_nEEx^@v>It9h=k^a=fA?Pp+Q;DO>gTe~ HDWM4fFlRg) diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/media_doc_pause.png b/TMessagesProj/src/main/res/drawable-xhdpi/media_doc_pause.png deleted file mode 100644 index 9b0067c7c00c69270fb9fc2a434e2e3eeaeef95c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 109 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz0!2%?+JW6_jl!>Q{V@SoVjDjzsgj`NzTch-q1>|Nlcz|NV*Q5&ZLAo^?Tn1MB|{oR2Pls1G^3qAifu*@5|F>w%;ti=Mpy kf7POU=Kc#wZO0fGu6_UI^})7E252yYr>mdKI;Vst04#hs?*IS* diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/miniplayer_play.png b/TMessagesProj/src/main/res/drawable-xhdpi/miniplayer_play.png deleted file mode 100755 index a2f113c69a9995eff47ed509ba037c8eda2f1005..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 262 zcmV+h0r~!kP)DuWWl@yDqKr&BWw7x9tQI9%$iSztDuav+%IX_fY-|Rr)mbEYS?J)>6PeI` zE7$(3bDr~mj%EE4RocWgUKo$1CEq5k2E4Cf9WMT`LUj85|DqmF$wuJ z918OBxpWB0=RGAQzd##mU#`v*99|O}yxso?uple_&D80W$8Y_kJH;l8CfhLb6#xJL M07*qoM6N<$g6HXNl>h($ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/moon.png b/TMessagesProj/src/main/res/drawable-xhdpi/moon.png deleted file mode 100755 index 01daf923967d413f8d42b26707b4bd6098712fa0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 347 zcmV-h0i^zkP)yjJ86xrvF58jwoJj`>&e^uErL6cq`lColxeqW5qiUa(X zWyK+WXR@M%%dBk3;L?y4bzCa4A&=XtY`DfPCkv(sl9L5%1S!aZBZ8DO?D zQqkxTY){ef2$NA1?g`_OP&keW_eervSSQLS3kpUGiwnlphZMV{C2@mIoeD*=WGPUl zM%RlZ@(ix6E*cDKMO`d1m`nX)i}*T>>JKNxHK$&j5=UBol(BgtDK}Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NHO-V#SRA>e5nm?=*RTReGss#!{ zC@ip&M0iwnV zEPzN5P=PGJZ@FjR*_qjyduR9Y8cy=%o_p{4&N;Jl|4w#b;JJ+NFVN^m_-3;yKl8y# zFbH0EKpnX5@CW*FaJJECG%3eVNPHPM0B(R(5oZW2edbR<(1qX(D3iN%UJa05CL?q% z81n}q$RIdUkjZ`8j)D)sOz>(p8MTEz*~nI$tPImIJ@broIhQ15DP|d7oA>Uv(@KWzh;6Y2IA2#djrIpSi?gsY+8cu0*0)kc> zKVf&Jr_mdO`2I~Om-y8QW4}~tT#nhW>Gqh43624i;cm7a?O1D*GSO<2JYnIy*x|Hh zMX`ZjovJrG2!4m%loA{6+`#{r@)pnvHYLSJ))xL|U^0^J@2F#?iEE-wDtevA_AQ{q zvvQ4w*&TrrDsZ(=_|0xfS2~6|n3=ra)v%xg(ll<9BJ@JzC;_jTP2Nnfw5b+g7=-+yfelpMuAsV>#t{5_&t- zV~g*cp)O9Hg2S(X$;{5)>Keq{8}Kapb(+0t0Vp*`qURa5vmE!J_ubOzJmm}~SKd*4z>c&ocg2~AohaOw1?&dlp8sJwxfZSmBGB^mltceIA?mvNa zC1+2ERu9S5TxUcByr>5-SJ-b;upnowy{yDmdy3?a+4)IqZO^LIS^s_rHmz<@{{Xi9 z>66Hq3csL^7vBQgYkrLkXt`OgqcohJ0w%dj`KV>F1~F;~VW%U9%{RsSAIvTGI@*d& z;Uq4417g{ej(X^WMiTGh=4bF`aQ8RmD)x%=p(FY`+6v zI@8!y!cpvO3a#%M8w?!26Fbzp2l_KRrv(JbHmshHrnB|&*O+Be42!EHz09Zl|&A+f)3@wEV?%^?Vy(E6-rvY}78 zRk|VIMhi-*9LgtdH;)jvI7d?Txo^ydlY9gJ%TsNB+%3PTb{y=H7bnNiqbGJ$5RBv# z_%W}LU&iuF?QoRkPo1xQa()-tG8c18xV(@6MkYVm^M4@l1b+p z`4%T|{U$|IYsaoP=Ces>>p0iyG^{8Y(MKmOw;zI8AUDL+7W&pv%GN$qp|<5PTH0!p zO){oV5N&pT$8Klf6rF?g>k9r%d=sL>+Me$dl!X~ZU5 zW=9h8^A1=E27zu*2K}Aj2GA`^u)i9d<1#b8e>EVP=hEvh@B}-?lFu@w;ava#002ov JPDHLkV1j!3wDAA{ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg2_archived_stickers.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg2_archived_stickers.png new file mode 100644 index 0000000000000000000000000000000000000000..1539ec746ac25c10d0e4297f91a20bfcf381b3be GIT binary patch literal 1730 zcmV;z20i(SP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NIEJ;K`RA>d&nQMquRTRf(G&MD6 zYRs%AOZ!qb^iZOphZaT;h?&waWr0>ueJT24kdXvN5k*o)CH4Xl4I%SYVi_s)rnJxs zk;X!2Ml)-CKho*!@Hyh1R4p8;RN)g z{LRH?Kj@GF?; zh3a*oF?uIVUPx>Z78A^hbZw$x4_D9@z1W9?wzZIk-i3ayJ$E?$9jEuI$`rbT27DYe z;vCYee1m)kZU`!lldkeceL&ZGU~;1=N__{;3o2UZ^Rp|5>cnO|?Gg2L#0rt1SJh@moKNz zq|%>j6OnK~aAw9*b-5)&-0EXJ%VYNwB+(729sN-C?g1G{1Z?u;pmD~j{o6K9yE ztkMoFBDnwb(@VBI%LTDn7_nQyw0$5_mM_Z~%=Hp0IzH3kclZS+WxXP{r-Jr3d*DMj zE6o?1#Fx0>i$U%Vq+PTt>uFypiKK3a-(^qwdn5Nz9Y2Veb(zmlubb!WbS{(!0 zCg>YvH|(I{+eiz7uA>)GDg@}2A;fjZgH~j1ljB71*jyM}+GowDmdatuo9Wk|Vh+EI|`8l5|0GS)jCDdt)qu)hy<{Fp_aF1Fe!I6mQ= zC%dYUip^YS_o$x=HwKnNNGF86QZg(uI>pc;q?3&$pr?2UB*y}zYXdl6N{skncOs_V zisqR@+If;fukLa^d)*mTtP*bs3;>(&HzWnaW)_$)MJ9gkN6FCFO4DHkC}o&Ezb*=tHn>O1f( zH&BzqT6hmGi`d7K<}-QFW^#O<-eI z>3`}3{?%art!-D{H^y|z^`Wy8Y`R4)h-Ss<&Tb%ioAUj6k(m@;5-s0e-X}A<(;}aS zufDuYLT8)NNEi)*VW4e<7O&9%6Xdl}nk+zXj1h7BpMw)VLLnLR9oYGMkB^aHdHdtu0$YGm@l{x)mqY z?7zgBhV{FFht`^gKu=C^(qnuM4niJT?4#o7pMu8lcwe8UV?Plz3QQ)a`Go56(wNj@ zw+Ma)zr`gR675r_`T*qhGB0sfdO7d$HgS63_b{pdHt?%)oLjasf(`~fp(vpj&!SYx_M7Hh`DaWOSO|JHo{^%PjCM3Up1MEwBmNz)v7#3-T(zxh9Zq z>m?0ogw2I!rT=_~$xU&MDLV_rIdo+ijnejEB51a|2I`>>3dbs>>p_1nea@`aL0TgJ Y0z`0#<~`We9smFU07*qoM6N<$g8q*Yo&W#< literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg2_autodelete.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg2_autodelete.png new file mode 100644 index 0000000000000000000000000000000000000000..4d734e91bed963e2b13d715331e38d7a8fdab490 GIT binary patch literal 1282 zcmV+d1^xPoP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NGY)M2xRA>e5nMr6AK@^5F(HJ!@ z5!~Vycid5fxZE@s@ggdSL_rV)5fO0#aXGjJQ4|j@C`xca38)0oi+B+igox3Lh$w-$ z?KwMDpNE)l|Lrzc-!k>aL!=ycTOY0{`w2Xl!gOfJ8Pcj76Lx z^C@x)%!HB9%cCpp1DKLXBwo}0TSnm%;0U~gbT(aAj$=90g2WEib2;ftQm6)-ePf~l zZa^ip)`ju828{ina{@+apRDvrBIoojkOH-R;=@^32qlpA)MS1dyajDP`B0vf!bKGE zu5ejrr2hhzLEEs2iRlFE;1w8K8&=23ANA2tZ?e#Sfz8m-Ng$0A8bz=KHbI9puF<9t zmGk`#7<)=*Vl=fJM^UK!o9~*+X>UUBT$Dkc<**OBMaoBDK3o7}@Y3pv$woiDkJA?F!r2I7mI7^ zFwU~V7^_b8$jt}^=o{V^r>q3YdjHX@UT#=9J9Yd8lDjvUGhvf|KJYUEi@@0aK&Kc6 zNiYW*;BY!Q<_EwmNO~Nx#^87kj7_pSMw~#n6waFjw3QL1Qo|5y51&2pXS8XbX;KyJ zBWSgTH6YJT#_H%4+M`0wAU4A&(;f^NZgod%GTc$x(v>eV%o-GB0>P!C?Af9y8af7@ zVmJV@6#H$l_D$C(FaZ}q9%IU^zD#ZfV@aD3Ymj9E5xGcZ{SLCzmaxEK1coV*z1qot zWtXVQr>Y;SOR@z79D|^1=n>=2N8d}_#%ra~{XE&rYU`msyj1wr8^R`j^6+PhC|DpVn&Km!JK%X}9W+AFw3JAQ;*yez7 zmmxVD%$Im?4dC2esV6x4d#@wDgENY14 z!x$I^LDz#NGJ|0f^#Nmb8Avr>DAntKeQEPm;+ENe5ld8!3Z1R`&C=z7mckYo1n8a6dgs8H9jQa!6&X9{EKkI6kaw11@1du2a7>Qm z90>9PO-y!%!$V0Ea7ZFOyGEPz3=&E#f;0J!n&h-QLrW0U9Ud!@s?Z`C1d#Wtms?)1 zM0TSln&`=^@|@h1$TI?D^%Oe~#H`c|enNl0#vR{@J$(U>tk3;0UHL*kBB$zGdyunwSWSgJP!B;C+Xe5hCH6I) s>Sc+Q-Iu)KkoF$?;M=q<_Fo=>-yQF=jG(rd%>V!Z07*qoM6N<$f)lSiNB{r; literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg2_battery.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg2_battery.png new file mode 100644 index 0000000000000000000000000000000000000000..b437bf63503c5d688c3de545b9ca7157be4aba7d GIT binary patch literal 988 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg2_data.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg2_data.png new file mode 100644 index 0000000000000000000000000000000000000000..174dc1724643cbfb87deb92da76ac9d3932b6ce0 GIT binary patch literal 1289 zcmV+k1@`)hP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NGb4f%&RA>e5nM-d?Q545pZ=#|S z5~LCa5~Ymz0_GA!Qz1r-Fc*ndy%Ih^Yi5Ws5)32^2_f-_cnl=!84{`M_doWkb@sjI zo>$vr(3Sk}ey!(zoxS(%>6xRs9;np=y|tvBaI4kYPH_*|0@gXS$iD~g0v?lI@9ph< zNZKsn^boiJUVySBne$+1)}z4a25=cnf-L&s8hqYWCt2wj2ODNQ5R5DWr@>F)=@*3? z;4s(%`oJMzbdZed27!2P0?Bw%kRxExj0A$>)!;7h^pV0*urfAET`GVM?fvi^1JdE? z4u#b*f2}eKcYs&Uibh}*v^j2uXzLn)<5M8gIH#3lRQF0fZnl67S47>4@nqlp>&g-WHY8+&LdBMy7HA zAqcGr^FdqeKx{+hd7Ub$I|&wtwu^lBA7t>&ST#29qx@1Zu!K}TwcS1gGi*0rqf&DO9{V96lQ!F%FWo%DiYdF}GPx7rh5v3i>^r^4Z z`?7#+?GXriGzxa?cpiIiJ)P9Us1L`+z;wIG-Zw|XDBKCMhhr#GD1L?FLWQu#KIuR>@RcpaG-nfqz!9Yh?lHz=8rjZ0S+SsMNz& zaZ71Vj4cE4!`8wySHTjB^dhb2JtHZueNM_Uk8bt6cm5^iYEO%11O?lHol?mrLp$wj z0==5^e%i=p>i%m!l}=HlApA&Zah(CRw^-=_+HGvXl5M>N)8o8Fi$YB&za}Uqk52lN zqI4k0=nH!s*gj7-A=#)mZOrL7MX?sPb|>3n$tI*vz5X^j0tP|b(OGq1D-e&)Hg-H9 zn~-!4gK7&lcD7p?BLhGmJAECq=o<~s0+i1p=@AedJ00000NkvXXu0mjfydpfk literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg2_devices.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg2_devices.png new file mode 100644 index 0000000000000000000000000000000000000000..ae4978bb08232d424ae05fb447f6f3861c9c967c GIT binary patch literal 663 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~ySip>6gB0F2&*5QUU}E%iaSX{| zeLG{n_u&A69w(+_@w3NBs}Cj@8Qg#_sMNJATw2Kp z(cSIg8fa3t?ukn4G8Nz3=@0n&s&|&Zud8`)^76Bdvhx7}0~Q`eXNBV&KRk>1n-;XZ zEeQIpcYE)Teez4bd0t|zVBgoeKQX+-|G~!))&hq~>ks~Ky%sGRkh7Gh^!ACZ1%F%j zwB0}SyslfDDJ++b`ONCks!G+8i}G z=i0LuEAPq|#-BH&WfRH@sasCDGw{lPaH0gRZlr`CC#sQj;I6E#dr2bLh7?Zv^@_d zzu4N)bjxM#3cc`4Tm^UaUN@8~C^MNkNiv?Pxnng!@=y=o8fFm3=DTc0P4B0r<{ToI zH`G1tby=Xf*T zEBBkZ?Y}G(6|}FGJ}fL?dM6(Hhc(UdLR5R>_ACC6i^SEdHOvxa6>m=8`sdE;Yg@Y( zZ1ZN%I>9CwUUy;sq16Q@X8pRJH8O`q|9E`gb7cGFq&wP+CMedZ@BCSJ^+@&9?w_Wh fxH%wjLY!&;`srplAAVL!gA#?OtDnm{r-UW|sWl2C literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg2_discussion.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg2_discussion.png new file mode 100644 index 0000000000000000000000000000000000000000..0554f68ac69f4e7f9df8c56a6f70d05445bde4a5 GIT binary patch literal 1261 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NGS4l)cRA>e5nO$g3VI08Ueb_8t zGiHR$EJ+qC8Ism62vLjjk(4XN%{Di3A(D~Y&|>An1tw9(1-sCQeAkL(T+Dn7vx(U> zHf(M z-a;gi?NI@1Y*y_VeKk-AvR!1`w8AKmEtLhiund+!3TS!3K`Gnon(mC5PVp<@6KHwI zK`F?@TnqLip%`w17CEDbAlY>=CqsfI!a>m6MGD^msZRb*Tw$go5*#+Gse_$0LyJNg5#%=;rtid)MzZt_p(7shQm>L5i z6R=LrWXrHgISd9>*JD2csvHjHs?#p}tADGa##X6XeF#0&+GCwXEV(jt9T6!t$kJNQPG6e_eq; XJbxg^y>)TP00000NkvXXu0mjf0xT`3 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg2_email.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg2_email.png new file mode 100644 index 0000000000000000000000000000000000000000..5afce21d894bab9e18a0ba9a894df573c2bc759e GIT binary patch literal 1112 zcmV-e1gHCnP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NF!bwCyRA>e5m`zAjQ546WGNdqQ z(U%1+ill7Qhe?F=fs(Y0Tx3%l4Hwa-R)IoBMFkN-)S`$8qFUHmtjsYNMNztl7Gmf| zqlhH>B1os-f4WcZdvD%2qw^8<4*cIa_uO;OIrrR;_hyQULJBJoRv@fESb_h!0+FD} z$K&y3^won(P!?pDWBn-pUxM~XBqBLIBKZSg4E!ymT%yUc_pJbiH5fhwzP@A*@~Ddw ztCp2`Y{zsZN%FJk90Dth(RKJGkpA+SfmveO#>YUD@iz=##Uv(7+s&9j1#oBr;T$M- zTjjS!{5@a*IJ7n}11zGBmBo9Jmj@2YQ3o+gz-5!ixZz?Ac1Ud*o90=KaU)m5`xsbf z_2pC~)@lMg1xHLEJI_)(xZPpvC0_(1M!5*yf#XwPw$bH;;a?Tj)w#h0_zAyfWFJd4 zfwx$%2c2e=4ty(kM36G0%NoPyT%b$i4w!Eo55l*Cm}&c%cLKVqCW+Jjk;ZPI#GNg* z16f;2*KJk^Ullld0S;LX?;>v`hgX))CweE~Gr&O{oS{PrzcU6);139V0!-<{j7iEE z-$;j&UuO({z?+G=AAB*oK$a@F>m7l!9=vEvbs29O+Xgg|#YUGlV@xTy&43%gxjfz= zR}o8FDJ@Dh0iOdLe?YkloCMCxL@U!zGTY&45w&#OGQ;A6njWh@qFJi;@81a!T&l4LJjl~nch>Cug@1+MhS z;hlg}#f;sOP$voNaO$n8>dW_eVAFFN`>-9dl{1lNw1vEZNo)k&PN2l?Vo27fNp&`p z$6umK;>jrGZIWz&bR_r-cAVAdfHzA8uAz^?vrgVEl(hgP+=DYArJ0;|kQETz95R01t!AxK+SKRxyLx_*0v6jmUtKv;pW e0$~MQ75EK8UiO)R1KCXg00006gB0F2&*5QUU@G-=aSX{| zeLG{ncZ{RJ@!BjG0j8$jrWs02sYf(!a5y?=1uyke`0v=X|ACN)%R#LhEC(<7NqbH` zd`an`!Xg2W;b6&UmMq}Q)1K~A zGhbj)UjJ=j8{H3onx(9r?HMkGO?H>CVOyIp({;<{rD7NVaxk_xp4_v=*y)g|)i%Ks z47$bZK4)*$uI}vI)jIj*jf*-rqgP#BdE;^Vyl0bV{bv2^@pbh|OP+rXwiY6*B&Q$a z%!#{Uv#a=-H{TScZie!y$ufHa@+OD!><-y-H^uwA;GezB;-}u{UcKrSxK_92d0vlS z(qWyY)p40YYtMhMJ|XjSP1!Yr?fkdX6P(UgGA}Q^x;-?q!Rvf^^_RM;50$*@lH!(c z**mMV=2ehx;j#V4ROB!1yVMfAzhTCkHl@EIFaQ6~DY0MsE8lgE`%B-=4c@M|etj@G zEf(}A*Hq`gx%U5YD;oaKxh?3-`ljZ``&On zUP-zQpP#cT*FV0va5npkOFI9%?)XVeJiRWZ@rzdtv%*=k4DW4ue>gs}AK)}FTDCaq zxUu8`FTa273*vvB@c$tBhe>bx?ip8I&+NV6zUO4^)Du#>pX3JW{+p)jAh)?gb5{NW z=Uz=;`X`vd$@?2>>yHPSF4W literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg2_help.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg2_help.png new file mode 100644 index 0000000000000000000000000000000000000000..5b237db11b400c879dc548c7937ddde11bff9af9 GIT binary patch literal 1562 zcmV+#2IcvQP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NHgh@m}RA>e5nq7;PRTRf(%rv7& zDix}mgrF;>Zlf-o8sCyEaxCZz*rnD7aO|ef5aa~CfO(k8^PE$2(SpBwKYOk9U+X#h<=K0WV`KkI`WI-mTDJ;mi{_f~ z<`iRNB)J@(39tpM1@{HqODVYs&If!?c?^6oK0bbp^1l(1UIKQ4_rVoVD)N!<6j<`F zz6Aldg0DbIuA}%7oDNW3Z7Dg6V(Z9Xf*|X`hZR{|q-_Rl2dhCeG}RV#&r-@(KD{FD z^&@!^h+hEnJrU3FJPB?o4Jse75s1T!V(cvCOWH%GUv8g|K>Zu=eA1~<0oM-jE$}kU zL)4Q+)FJ@yc~j*epQ%Mu!--g04E#$>717|V)y7ZQTE9FTnyAGST*>06o-k1^>#|=0V=ZSU`?DQ8 zfgi;2O`x^?8qoUxHFyUUEs@y!IWd=&2To4|6RkGc6BgUu;Ho)Sls9S9%VqTncAD6J zb<$QPEf{Ni;J>ihOC^4rfD$yhLgmwd%hnjmH_};jYp|bkzUtNVwgaX1HYR7fsnSn4 zECoNABjxMhcJrXV4D14b0+Vf~?^j~1rTk-aqD)U{ln0&RWItlB!{>45chc*89h(=O z-9fMGSI1|g^E*&!i-E?Qx?Q4uO4c|P8MZIUDafmp0Xla2HMOymXoBCCvi0rQX*K%| zNHiR^eQ%2&PZPA<5!#QiSHBVJImIcAu7Y`x{AJ;6q5lL(v^cD6*9QC(ayb&r?xfsc zF8&4lcJ`1N()f8W(1)k~1}b9iG{C8^`-Kog#mfoP%4Y1f#Q!Bn_##$VbhCRwCx z*Z}VYxD@zR%!1+{37>OvMt<%}i3Z&sSl6EJQZ{^m_c@?mHTj52*5vICjh`KUl0?j#fa_r~PC1OyxE5Q0x@zP1u3+RSBtTYB@;GyXP&E<}2i zL!HF%Z3ZS^P|4mDM#*)Oubjkw2%Qg(>h4ulB!z98o&7$B&2{%&r>dOVCKj3}1$|k1`UkycnpxKf1!%$0=j%_As<0MNv`ISZx%3XcT`>OEwN6IgG_A6)X zi-9Jdi4N2YhlkiY-GblAK%#@l+O%a_quAiPz@s9byjAWP`fHV$Dw{!VaA@K^0`3}Q zo6_U!SDx9FUDS?a@5R=h$Y{h3Eo$dk zYcA>~rh$nFN8S^}&@XSvEB4-nH!H2+tR+lW++JpQs5Pesr0LjhRt5-`g<2>Aybff;6)!8eQk^P`SJm}j`SZX9$T8Q z^~U_5_knmFm;=3{wO-w?$*0?c=wqX{pwkgkwsuiPbwTE+m8~{|lCIJdL_1gi#pba~ zbbFxFleQCr>UN_*H4=Sc8n0SAXD(dMr23p-d7I(5kcn z=vUOX!TzhkD(aG7flg6^4kJ3?%qDl0C>MqBV!C#>W8k95Y0)L|4{o_4+?aWh>i_@% M07*qoM6N<$f~5cFJ^%m! literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg2_language.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg2_language.png new file mode 100644 index 0000000000000000000000000000000000000000..6aeb23e3ff9223a48c24845966c7d662fb445e49 GIT binary patch literal 1645 zcmV-z29o)SP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NH*GWV{RA>e5nahtAMHI$oNW}0E z!8k-f$fz41%%Cx1Vw8pKROTPhh5iA$5;khw7{vicU28If%35V(z;U4%qq6Y*S_}{s zG%j#}0Tk5n_ci_9obKDzeTO^9n9NDOd#dVu=hUh0s_yE#Jw5X>e+9a_0=->%2j}VO z=|QSP;3lv-$F=Bba0DF9@hy5!Z*T8c=u0akJpf(=2f<85J|ke@KOY61t^>Qk-=JGj zj4`n8q7Q^l7J}!&A0Wy(D&t^JX#9(^5-Sh%ZQ9-g@`-YW%672uq6~zL&~Elz~;5Kx;$oZG+(uoWmqln_en0XKldp%>kOVX)jCP~IEtPr2P1 z+tb1RPH5La6f53U^`(bG_d*~ge-c=ZP`D#TroPEW^aQvp+ErE?h>QK6$icP|D7NJU zh3*DHfR!L#`A@0q5m^x0b_2`91!Jf{c*G?18^M$nXgKdRG-kZP>IXoP!>* zYg62|b_E8O;Wk2OfOIG)sK{y`>IG4ZF-E}nYZ7J{wWK@%Jyk5awN2tT>B%Nyv@=+JrP*g`v?a-#KRd)ByDT+KKq;Id~^N=Gdok0J(#6 zsvUrC?M%d*tg|z5%DMJ&jHVENVis~N-+^E9D1}khL_VF{7T0i6Ci^%>isyE(Pv@Am zmj~e6q%HCl_N>uUxvkS_5JTC=Qz_aCWpY_YgZa)e>4V<)>mckbX>&<=m>;}~^r zF_+o_=+Mcs*@YVIP2MuDQrl-_$`7vQz3;GNr08moxx^fMyf89n0&6GwWmY+VlGe19 z5PxOP{|J31FE=TD+1-_senU5%(rGKvpYsQJthRQfg#n1bApTdIx$+v&7~ay)9F?}* zss=Dh^7?p?OoD!}B7rTmTVAJ-;+5NX+X?+ZjbA@D?{Jlqa%&c*(HO7{r#v7m0X`yZ z+7h?I;PXQsT)uuEwCpZm+nMvEI!j*8ko8fo4{3?MUpG2vS!0XmI9HeLDDM*_W^2h)f8n*>a~oj-J^==(!CRg9edRV4b-HeK`GhXgN?(@$00 zWE(+ru%$yKOX^^2lL_d3$$+^5&bxtscbSiEF(@Bwb^MMg#3PVy_hDdB;KH4t-V4mp z3AFbtg;=V{7x)DG5aq&SocbCNlNYD2EznFF2rvkA&}z|%Sz%33f7V9y&QyGCF9hB* zkw?4cd_0X)pL$VtF9gyce3dC?3wsAzk4IfuT{$oM)07K$DR5+yv^bP?ysoE>54$L4 zhh?*qyoXOvO{cgf)X_1p6(|V}$f9}PnjVxFfN>kqI(NMaYy&zFj-o!gn>J3mtO=}z zt-pbMwJBzDj^Fpe@$=Q}ca&cpBMM`{qSI+5DW52c`5d^g1zS$Gu1+Uwfs*oqq*y6h z)Iyyo#wdte=DO}@&qk-~!3dZDGZp!0QLpbNqt-m_CWw4VM2l_+=-lRda0~E9zfL%` rkJnCDT7Pu6w#3xuW&R3Wsw?m>U?9$>ywV}t00000NkvXXu0mjfkk$p} literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg2_notifications.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg2_notifications.png new file mode 100644 index 0000000000000000000000000000000000000000..83d35bc62ffcb064c10d9421157042f960d7a6a4 GIT binary patch literal 927 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~ySip>6gB0F2&*1?o=k#=O49Q@9 zJM(mwh@(iG@gvnZBQ_OoUM<0rhaHA&7gf9k?`R|)5&r<>YyS}8+fk(K7O42jNkCM5 zSBDdiR6u~TmqFl%wr%$>S_RnNHNJZJs;~bR{y%fptt$TaKP0r=zuZ4OJoD%}2UY!_ z3LGufA}kN;mIev#H}UCW4{x}2E!b^1_)EpQK}rK3ggl3uxA`ZONWw{LZ@hO1a_@bA>uVnH-IziQjS!xbMx{ z==+0FVPoj!<$g*2Mbl?p@4I7r^!fqrgxj)G?FUb#v7VUGIWgk)yvsLk>gZptYuVPw zKkb*yaraxI6J->3X1%wZ5PRypzzatI5W)W(Iex1(c0Mo+nEhyhy6${q{!hEK9xgvv zl|D(Cp)c-m>+j^}vYId37Rs^M|IcEP|9Jbdq3h-cw-{T3eN4*S7u!@T>{Wbo%&+>A z>!pXbi=X^>J&|EPAII;5`pO@K_Md9k*AqXN_u*7V$Fw_DbEka?e5B#?Yj)uCd4JEI zypzT-C*E`AY?F&ZXLEY4?nn!ByK^rmVzEvEf3#KjVnNMnh1#?Z`=v`f=CqwlUu-&8 zMf0WRlIM?St1OvkxN4&zXMZu%nqyHN*CaRX1PcYaR`+(Fwq)dZlRo>s-XWf2xxCTV z)2vRiBnewD-8{$PqIKXqhn>vxv;*cj&EtMCH||}-ccChwKjPLCZhx+CI@vJ}=G4_6azgp`|F~en2T;_esZctxaZ=E=2I=t<g_XR9} zq$XG71|N-O-V{4GY|j-P(~~m=H|>y(a6DqUL0crUCb>)K+$LuGE`8O*TuRmt4xjzH zdFr1=F&X|d>}$jnS@{ebgBMIaDc*O^RO>#|m%|~CU7oC8a?X5}9os$AkoxJ{=ETj6 wUUt19%zfjh?pWs9glV7a+>U$wU%&Q1{)GF7{X5<@w}LWmdKI;Vst07UYG-2eap literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg2_permissions.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg2_permissions.png new file mode 100644 index 0000000000000000000000000000000000000000..2eec3be697319844df6eb7f28b7fa951d73b09f8 GIT binary patch literal 1288 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 qv%vt+Zc6K^SJ=?kob6!$@5q;n literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg2_reactions2.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg2_reactions2.png new file mode 100644 index 0000000000000000000000000000000000000000..bc596e4044ded01fea992c6cb347731007bddfe7 GIT binary patch literal 1268 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NGUP(kjRA>e5nO%rgRTRg)Gc@B+ z=%{6-Fs9+C5aUb`5r*Ih&OG^K<%<#~i3olm5xs?kZ}n2)i@lWu^Kx56p@2p z=-3RJir<78O-4<>zn-OQ&b?>fbLQTedxE>*H*4*^)?Ry^bI->4B&W z4}@d@=XRK!G%LOqcnt<2B%13Zn3I$%RX+(f!Z2i!UkQF8J^_6%!G$b|h}GO1;<-|_ z8Mq@h*>&3QKrbwUCtxXThCcWgyu44NIbxT0VCxKj1Djw8v_U)cz}uj?yu6vJXbWQG z8-6tQyD-)Kr8NEy*auz?&^YKju)lz(O69OV{H^dFczNCYLCuIxxE+nuS=}5Q5OWg$ zDwMkH{-l3>EIimGek<57`xo}&asvtk^@GV}K3fm*)s} z@{<$i@>uW#!R!GidAdPoO~1ynKxoj#*e38NH8~f7AA`xNVCED~61@y-Q-lUX$nl~T zh2B##7)K-6wR;7-sbpXcI#ml?1&QvZMk}Mi4D?)Rj@sYyCcN!@H8rDJ`l2HAqP+Kl z^9RuGsyyxNyqKq4Aq&j*2cY$h$z?Ngq_4SJW}58};D&Xgr#U+>=3}mqVY8DC;9(2M zk=BaUwFWGU%)EzkvGp zMNYl0iUG#ho1SDY*O^@48uoVs9ToX0U^e*o zgl_U@<4Nh$Dp!|^$!UzXcw9}|6rvmQC#wvt&D@n%40bR41}3`kA2ok2GzCoo{iDN+ zZq#GG1N$)Kaogt3J<&pOpTr9G&Ch8(l#4SSDuNf~-7m@#IWb)T0000Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NFmq|oHRA>e5nY(KhK@`SweWFnl z!89fc+W2T}1TF1E5VVS*mBHBA_%CSTv+~iXSot4_MihJ%2C>mVL<>`B1QlQSNHEds z@6(xZ*gLy-pZBK7fsdUzd(QWrnVs3aySJmGLaW#73xx_L%B7~*K5!J=1Mk5f2eswX zxxR8$OJJj@E^ro1f@Y?eGoY&k>EaX=vJt!lQ5(lG?4WkkUf|eJyn+G@6rkcio606= zpOQaHi*J)Vrx3*i><_uxb8N7!)i%1o%v`X^yfi_9n0@#bJO8;_tu_{jNpz9( zih%PjNL>Ai31yySw(bLO4I4JC76jVZ-tMN&D;$TS9!#<~MakfJ`;Vz!f0u_V^AbW# zKMhtnvBCp@=e6VNaonz(?vQx^&@KZtNB=FIOk$Mh5NBs%WZ-0;0R(8;=b9Tp`{w?? z@`AJlu)!3&9c(r^z4#BCexBxPlhhC2DE(oc6Vt|DtO@BL_y}5M(mGVEYO*0&0ft&t zbwKAPzQo^H{&pA~EXh|mG2l+tIbH|D;Dhs(edvKu%XByJwOwX84Q3Xi_+4g3bV+w) zCdru~EueP=Z#y$nk$KB!bKIYqpkM-;2aNtuW;&98ID#)6{pHNelQ%({;H#_QdmK;j zK}M1`&Qg~&!Wz{2Z>c%W5hvP7P5KGbV8H9)b+Z@<^rl#k2cO~rxuO5p8wsw5Lc;$HCE6L6dcdrU~GCOLNuM|UWx zsy%QVG0Q!l{;^O2MSWJJD3{G&YdfwT@&&@OxvCn#gFqP%1HQtpss?a`%AT9*)RwPw ztK=@k9cPTqw}ooAx{9CRn<~9}2rC(Y3UviPs-kGiS=AD<8kM%^22knrrXY{I0zXZz z-c#FUR@>IpydLf%{;Tm6?cmEqbC&!OXzE`aY0JjrnBuO0;%~Sl-KkEvb}J7j5%YIR zUrTy@M!g33cT&y51(5iSCOvz6q%^=q;7#x3v44&yzO0itfRw%sdDG{ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg2_trending.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg2_trending.png new file mode 100644 index 0000000000000000000000000000000000000000..d9ac089997d98909bfa35c72f906f6811fd2462b GIT binary patch literal 1765 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NIPf0{URA>dwnQMquWfX=TZz+|U znB}G}iFh%;2p?1;AOMws(7+pwBykPaCn0TpTWfX&s>8UXmo_{JZ5iUJh}$c)UN~$&U8(`f&Gme%RCO2gFf}^qKe8i zc0VwgiqRQN13Sza^e*&>DyFJWDos7^8Xae|;Oh$R0>8WXU)Z-8=YOGTXqjtpRJnrk93W^kheHFT58{P zxgTIR$Sp4ZeJeg8ovXb4gu%TtLJ1VU{)=V+RpU~+q<;7kF2wNs6<9}G%$2xvtysp?GQ8>8R=&}@a# z?||HU23+m_Yk|pLj5GWk_6BY;2D)aK3TnOR>VAmbt!#1}_|<6dlvsCSn}ErRG9HoX z7Dda;MwNO>$UlmHE~A#cNm0BVPtoFX zEI3QGJ$WaA{UJD(k0|k34e@pr`9mNz2I40Eg1LS#$|_8a1H?B6&QRtU)b<7l9w)Fq z1W!Rv3wEVypiBJ9*?Q)+p{)e(3dH8Q_NaG!I&>;co^sE zSislvbF|WE`bPH-cVYL4705Lt?_5{s)p!yyt?hjR<~i;h=Px^t5qsTn&yLsCW7GgX za-^kYq#O?N)u4Xwl;{l9B`uBE9U=v}J%iU3j`kCYegNwhd4!b6W28I4OrWJtG8bZL z&21g#d!^11nCk+&FS_^zy?iP?(x(OYTIR4G%b7IofA2ZMczQW2+e41d{U+Nm%Kl)g zfd48Zp|41)s$8JctI58j+&bd?gR}f9L;T_ z%TOXOk_)K|c*e4V-hmz$A!ZEVjsbQaQi&NE^u!Q3{%O#i{nA8Ynv;ZkfL-=6OQJ_& z253ynGe4XKrHm6VPh+-wq=ust>ar7QC2PLbEu={u0ltV8v!RyTH9(KteL#;wWS3<8 z1n{C8)l>caR^kzXfZ-Th!QtPL+QFK5Y$k+}4b?00000NkvXX Hu0mjfdaN*V literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_addaccount_all.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_addaccount_all.png deleted file mode 100644 index 6b174aec67859662f66ade310acc80c62ade0a35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 873 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~ySip>6gB0F2&*5QUV7lz-;uw;_ z`gX?o)xLou$KQY4EZ3|)Z@#MrTadrx$j-tw_EpTzuo(7_xlp7iAk&w z`0qKFO6AGrnO6Nf3oCf{D4buP_}l!^{ziFq&rgf5#4-3kIQ)Tqhwc|Sh4u$`n!Zmu zoXBazxqWI&?iJfk%XNo-@a#Fgd8?l$I{+2Up8{)Pazm@a3Abg$mqHQDd+hcdy z&n1-#-?;bu(w4^b7+k;+xh9W)iK3v^ zuX~Ai>l*f#UB6s^XyNy|soDAx%a6Pey>Hvd^#71%Y~%BS?FU|47rQ^WYge)M;Ic&cv(tF{kr**PWO&aQ&i*>efj4+57C?b;!JG9n{NlgjIU4O z@pO<7J8Ug$kQFt(Y{8mxUf+J_bpe+nw2rQy-Qag*sq4B==Er~`d3>+DXuy(xi=*R& zzHt2Gw!I%Gb3QCiH6e6X;zREp(h?7LI3C|++xYtJea63h?WnbO549x(YeqsQ6dvdRW0i@S0a7AyyNkFcjbP%F45(e4nn#*DG=iPQmo zUdA8Y3409%)N2>`cW-~VZPEr&`|TDl9L0of`aD?kdg=4E qyz{TmFUWm!JKw-fQd-tSlGWT@#b6Mw<&;$T&k96gB0F2&*1?o%kgw^49Q@9 zJHs*SP=G*NtL2*>Po$BV_sAvT(!QtSKbHisjAih*ULIW5yX9_bAUl^^AAT!ZR)FEDY~V zy7=hOYYV;@qbQm9#@DdxqkhJQ#mX%y7?|J gS~;-4XefKYQpV`3diQw!R8aVPy85}Sb4q9e08FgH!~g&Q diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_addaccount_text.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_addaccount_text.png deleted file mode 100644 index 0c70608ca73868d6ad5cd05c919ba22c41969022..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 582 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~ySip>6gB0F2&*1?o+u-Tq7?Q#I zcG^aL7e|3(@8^1Rv@TF|%m`7Dn%d{K_+s%~ztY}GVMpW(Ro6P1sATymX_e1)TPS!` z^~mSwo4#>s?ZbwPo_tRak{4x#}t>fc;i#e!$XWb8nD6!?EZGroB7wT60x8m@d(XbpFhGfuZ~4-zDd7 za($GP@PAXUR`ZyxkW;IuSJAAep1sepyW-H?&eBOYzE&Mx->f}RSY(%XbC+fmtMaxT z$9Cn_?u^+`$l-S&NW|55rhwG!WtBM|BK%!H)LTBVpL4twd2jEY`40E~?R>r0jxnvK zug^N+UfH~jtE0zprdQP~)g zCnEd2)`9!bN%uQdHVbr%td;cCQl@=Bz-v(dU}o>1)DKKOTMtG&d$dW#X%}17zb;*F p|ECMNRxqt<&{_ba{sgk_W1Mqa!)`H;#C}j5db;|#taD0e0syz-;sgKy diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_ask_question.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_ask_question.png deleted file mode 100644 index 484a89cc338b86deb65ffc4e40805f934f1e0145..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1545 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 Q4*&oF07*qoM6N<$g0C@My8r+H diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_bell_mute.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_bell_mute.png deleted file mode 100644 index 55a0d13d570d50f82e4516b7bec47bdead824046..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1403 zcmV->1%&#EP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NGe5nOmq9RTRh1mlqVp z8;ban;EfW>hf)!v^cadSnm!ym5LRCB=tHDpaLPBa5G% zpyDO76qNFUm$KB)-~TY{xEN=?Gkaz}MR39YthLvy^kB|6&s#Gd>>Q$?BUMAlg90ew_dzW6Q79j-(fNr&7(vFe$A&5(BT6_`zGfBx* zUXK4Sa0Yu!QcNel7ZZ*r`4YlPa53rQ?&rIVJ+3oaVg`X_;9GD9#6`aSUA#e57ur=XkBgP(Oc2-S}&WJyI*BQT%H9t5G za$Oc)bSV@%_2f5uLhK{K6AMY8z#^d2Z6bSd2uD1Y{7;Q6()GKPRGcDj1AppOcUgR5 zS;yq|0Ov#!$&XocbH`Dr3FtoX@=;zwNLn0`&gzi7T&a1G&IQvf0DC6TisWUr9S_kE z=qc`(*M%YZnPMsMIrtaMumtRBKu=XK>+E=lhM>)n2GoAQ0nv&Ef@@u0q#bVf~9K@aqu9*+r0={HIA^aCze&(0GkOEy? zfvU3`XhJK;>)^8Uzk|JnCe&~ix$A;_E$4pN3~AuuZ0DhgpBYXDmz?`e>}@pB-T6v2 zOKU*0qKRKnuYn61N1_MQ4w~p;jxu$r4QOICaUAt3_+8^j^ai_|CVH8pEM0m7nix%- zMyUyDlSYjFG+~Q@`3vc~G@u#L#5t6jIHqwV6Vcz%M1OM>)pct?6Qc>;3zLBE4U@4L z2WeuEIg03z27(?;HYu9Ws-)FPtCWepbR4D$|ITyI4wkMd)D>v|YO*1;2#I~b4@MB_ zljvu~g&qQqMgH$Y`D?~Qx-=p-wX|kJ%0ZHQfdfVo>9gqJNzk>1_fNU)AZ=Dwy z=e`Na?Fse*FXtIN7d0^udt=IP5ax!cKllxpXd|NsRUv_+JJ7?;i!RajJuy1u-b|kh zL|^*~*ts_?@hWiXzShkC#2of08+KSs66j^sAFiQ_xXkx4_OjmV=CEz2FBB(Yb< z3hPpC$~18cB4H@d+We^G5`{Yck%ApxK(u_%wfT9ScnK+hgnpU=+Y>(2WM*%Z+0a@x-8Ccj`?NCEho ziQf$DyE%>2nE zS1k&318cw)U?N+e(R2OZIoCwWNMgeJkA2$xP)3QT9FP4MxDQR5(ZGgqnTY@Z002ov JPDHLkV1klMdx8J} diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_bell_unmute.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_bell_unmute.png deleted file mode 100644 index d9f117711e46ff9cdd83d6e3c055eed255dfb8dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1225 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 M07*qoM6N<$g3kHcqW}N^ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_calls_pin.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_calls_pin.png deleted file mode 100644 index 39fd378f1ff0a3588760e117d0a4bd4ed34a50d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 801 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~ySip>6gB0F2&*5QUVCwdCaSX{| zeLG{Xzeu3S(MXep7yP7!Jhm-%5Xu#>&T+_=_7M0dX!TTHz|=4-=x5*ub%)39Ilfa` z7(Qw%GH%&q*!Z>lqC4O2H^1)PkyLnc_lZGy+B?hVdw-{urM-A{s*ug5W zbBo55}Nm_CrTH{hAo>uvD*9o?i91uSzXY+w0g5r91o!{`oIH zSjMQ+9RFa&jsph+4S1Wrv;7QM8h0|`RPW8`r4?CfBssXXPL5l_LE=RBP<`*c}%?4MMhIbLOn@KlXCNZ7kxRB5JTVvNOl}S-O2SqpVn!H>3s-?>1Sx83>H&5H= zrFnvK46_{`H(qDiSShMv-p{!HouXY+=?B>io5bZG&WiK+Fx!MCe#&1UmlYG;awb7C z!zTH-?GFQkExQgjNllo&{66!<+rEd+-?SG$bNbdSwTg>ROy6B|F9>satM^=snwpd9vd@|9mc94z0IeSh8RE$;m%Gs~-( zTfG;3iu;tL*}Qdj1*c58PU4EyfjLaaoL2DfVLUFn-tbkoWZ@Sc!7Z;p^GProJ}R^P z!rZ<7!P~lPKhKN%-F~|BME$F8R@1|3rg83{^t38+YV4Wy0ipMnzIett<&s;wM;xR3 zXRn3NL^YQ7@=e^sH1X{3_tB|K{JbNlYH!fXlb$qv*0DW);--7}4NL0Qt?+pElr$>%MbwfRd-DtDnm{r-UW|2G3N~ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_calls_unpin.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_calls_unpin.png deleted file mode 100644 index c2c7e37899be1d0d84d286c8d782b0e84d47b173..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1040 zcmV+r1n>KaP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NFdPzhe5nNNsKaTLej^Cyax zg;JwtBVjD2Frz3|nk^*@63W8L)}ONQh8iJ~QZ{yj!p>|&5;j%{3oK9yVGx{W_nhy&_jliY@6~G4R>3pSY&Lg+i=aQGJ@S@-GvEdI z1zh%aJ3&%>h zf8dKVni~ezTCN0>V@ZPC+q*-nle;rnr*3=b+NeC(y&{-j2o8YNQN$#(<~dM17rQ<< zp9)?P!9=Mp$#7Ko)b?MHD5#-cDT=(TM>2;q#cw5&K~$FMn#5OUKId zJURxzxIRMgBT@~Yemb?h0BTp{o-pf$Yf$G(^%Uv{pH1;e;sGs693+CgL14d2e6>8v zSE#2zANUBY9ZeTuGE_vv5)pp^Ytnp$97DVmya(3Ky2wci6>-uM5*IH5(q8Z`Rp2! zELUPdOs$q&2o4+455#j?k^%-;7b;@J)RS;o0KGc}f+NC`mEH57+Y?}Gk*az^W6&( zY`-#IaaATSXk)w9ck(*z;*1*a^e3BtEG&)Ss^}3RZ^GB5H{wTGJ$6fg{Rt(j z59gSxaa~a6E%Zu@;N_3JQmo7?(4b>I^Y&gYMaVSi^cnbH&%j?HiB&zGf=MI*0000< KMNUMnLSTX!+rcUT diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_channel_14.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_channel_14.png deleted file mode 100644 index 88c4db4c18a900e33a058553661b52a4b736cac4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1563 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 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_check.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_check.png deleted file mode 100644 index 1df03d2ed87826f42b99da1918b644ec9ec27796..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 531 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~ySip>6gB0F2&*1?otMzno49Q@9 zJ8iFaYobgWf1e-M+@uXRR0TCB1}%B>k3)L#!30BzDUC)N&5n|}Zfas;kvwXhE+?KZ zxL*3|`|9n>FTdomct82~%GJMrR#{&!_E(>NIeoPZ4N?Kj|93U2cvdCy zSuNIPda3!N;nI$lT^VwXZ&da)_xr20YREObu-LP6=hGaWPstqn**<;Vc%onFpU?^Y zBTDv7KZ+IhOLYGcc;w&sCrIa0bB8_Kr_-hr-51F(Tewk*@g460<|W6yOz;2uAUICmD@iuvyu?Z$vD1Gwe%ltLf48}I>h9mowmMM{&*bX( zpZvCk<#pbUt;PMkYFq!$Zg7#Fvt#O0%bS5!EH_!rx4qwZa>=((_l%5OEsCs9a~CnK zYyPWy?dC*(+eMNan;pzz@-_#)zn`KvF}vySg6gB0F2&*5QUU}E-kaSX{| zeLH=jw{xIK`}T#i`DQ9LX)N*;dDF&vcv4~FQTu~N%{O-#2~75Eejvi5*4)u_a>;@l zt{XIy3|2TkFHd<`RC#-Me%@~VIo$ST=XXE9^ZBj$z1{hpEqtX8vH|Q@7$H>S4U2&F z*V!-li>l&JSR8O|>fS2RDirQATAq2c(&W=6f>pQ@YmzQz?d$T*pw zkcnquU7w(Lw(*Voay84(@>?DSy|-n*V9OnMsPuh;9z#PI(}V3XS$m%|?2}@sKeBa7 z`3?gHh3*%(e=$uzGIK-J`_~T7F1EAQ``bK{)#G6}QTZk7puM1f>(#Q9xo(*zH_oM9 z@m=Je(r4b(TK26w#(8n-m%b+rk=>gZe_EDwpZVyyK_qp4{nJZtPQ5u-b2!!c)06Ps z8?v6V>FvByuG8N3TdbvJY8Y>X{~~73Ep9tQW5cg8NH~{^b+pVrE43+%_r!X$)9-(k zCb(TJWw>H?eUchOp{2t5wC6KTZD%qY^t}1)7*T%lzUHZP&Xe3TEzfaYvTfwaX6o4U z@6^dm{=yv%PdJnLDw&=h`u6svl|y7nT9DbZZJ$5Ang2p_PPXv@qZdmU<-RB`e>dlK zUEC*zDbN2DGVI;+{>fek*Icd)c`K8BEixfTSNyIx%Wl#7M7Ey&=>Pp|!nbePX|;fF h1@o&0Aa&$KWBlh|a?Y%4w`~F?3r|-+mvv4FO#n_H5)J?W diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_clock.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_clock.png deleted file mode 100755 index 4168e3b71a0e0e3ef208bb83143dced803518a32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 371 zcmV-(0gV2MP)lCr(&TJeH508AjB(Vfh9Z+NOTGk$_Qnn??5_qgDn*kUC7rVc4RvS zgm3cQeU|O}?*y@|OT>yjIXQb)M0D*8bJJnQ1$SMT(eVKxCzWzw&5|W+4$5;Pbb(lf zwv1?2hcp?nRgu^P`pP*`iBHzOCo0<4K#MZ~JtGM)c0B;jv`SzBz|=a`281a93q)vB z0ADn20u6RRL0cFDFm&qS0>Ti0v5*2sg1bP#5lDp$*f>ESAZ&n4$brNQ=%sxL@cSr` zU%QfN&&HL$uRXeM)ua92TDR(3%fjuP!ntM?PD>-c36yI7(Bk{6iO)7Iz85X;(2=)z zPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NGXh}ptRA>e5naPh0Q544e2~9%m zT0+vMg@hOqe*ilcgq_4zV(mXbSYTn;SQru{L_&fHI~It&DPm#VkXRZTL7v~&-syaG zU%jrXSN*y+eUk6pd(S;%-Jx#XH#9UuGf$w_6KK`aHsyA^y`JU{uo^5ew5fjrA3JzS zdArqWJ*RAz2znhj3EqOLB%Kpr-Lz+c)1}}N_zUWiY+M9O2c8H{hQTrL6XelXn0LTw z@Z1Dc7f*eX$)g`IkAmTWB!b})@Cc;z9mZL(4a^Pa)USh}YsQ}kQ?loPbW?f=VPV(K~bV5-JHl6d@_Da1wkgJqHCy5q% z+LoQPCaN!Nl(gG8>B*N0z7tI41T2YkB#x@DG!dxwdEY8E=L@HeJ3zj#1Y`qUO($Oy z+G0oDe$;10B`FWnjxF&o_1(Pszb7&SYvSvhd;<9v%>#<5n8;Me1AoJwDc0(iz((IA z5Z17vcSVq5S{r>)=8eD}I)gt({a^?;P#(aiVh|}N#g?H6)R{Z2afRX3NwN{bw@$EE z&AG=m&dwyj5b4FS!W3>36o%l^yP z`z47VSa@8=3J+nA>3fV_Q|P4$Zbnh3z(%PP!zK&DV>C8Zgmn^i+Lo1={uaS(_kgH( zok%lLA>g-c=Q5oQG>GTCCGe&&1cde78>D-iTDwu9!$}0>8;nITl*cC#|KEjB`ayHH zP-#E{#8UV{lj|DAiy%msPMHH#uF@1U@wo>0h1Z4BE>P4*y*{La^ntygw1Jv}@&%rS zbIP6{^*vpoq>EN3U3JtwUi9=A9r6Kgxnt@_qQ7*Bk}kG%spOC4 zU&f_`AtjNHgmwsRbA7)jq}#FKyA7=NJ1{lDN7fkBbV}C*tnoi7&Qt1@UwC$sOh;Ba z{*t0OPV!ND+EiMQ7#=2}Ltr1s3s$!W55NbYQ)8UnHA*^8>x8=*-eg#RhFOrQ5V03U1_ppr9wLoX5H=rs>=Qx=BblJmquq#cWP|7O_M2k+B oPG$e-evxNqhBxyBruhl{1D^9dyF1Gf*#H0l07*qoM6N<$f-OEq=l}o! diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_data_usage.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_data_usage.png deleted file mode 100644 index f7ce1b4626a04bdf1cba960c315007683f02a569..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 887 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~ySip>6gB0F2&*5QUV0!53;uw;_ z`gX?2tPn?$w#!<6-18j|wid3weS>9U2AkqR_KX@v<%q94N%^^egkznT9ntA1R=^vvg~-^YN+D<_lEm_^FEKCo`kpSkSfji%4O zh1&O~++tvztM=69!lUU+c&46BpErYX<8(bWGY7@ylzQH8UZU40*q``m`>E7&_IsI) z=`Po6Co;7il)6xQRLk*W&=g}ob5$#0-Le&PPkjvDC;s-xl3xxLOlz29r`HO2`QFGl zkn=*_l;NhuubP-kef^(G?>M{=T{SUhyULsuAzI&`$cTL0+5K>mMDJp?=RrpTn78A1bn9<7r}Y!I=XTnfeb_G_T*Gwx5$A`ERU9&BZs$bRyj(AE@_gWr@DIE{otFCw z6bC*!KI^e}enU&y>a8|y?jj}!?_E1|{ar$t@Q07bwq}+tZp<|LH)+jx&77cfj)L;L z|K9q0O8@bUZ|wW0-($FcYQAS$f8Aa6)cwwl!A18}l6H4J+NPmfCbCX{QFh0{)h?Sa z@1N(n$0Km@hdoTyGWT^$beUbsnSc8}Prfa+;nDprz5O0cd-tC&Ipp$&A%b<+v?mKT ztqgDYtL7i0E9~(_=fDAx`;Nt8Yq;($o_7!=qh_Wm_4&Uvfz~#@y6U{Bb?U z`9~d3lc1qy|`O`lakw%gbrNho@XJW*<@UFgcAmHW^(>vJ-bpMyWD5mB2c3DboFyt=akR{ E0Q(1sX#fBK diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_delete_old.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_delete_old.png deleted file mode 100644 index fe61565659fa84504175d80698b62faf91dd008a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 808 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~ySip>6gB0F2&*5QUV4CFV;uw;_ z`gZ1iZy86CK`mE>P=yI0O)umZM$G@~IDw-vq){MQ zHG;!a%eUCcYO1wP)4chOb05!rbLO1o=4$U5jryOzy{*3gJ-O`rw=%7%7XK#mZMprH z@q=6qyYB?Ea{=!f#g}T$ZfQGcS0H;`V%^kb9FuOAoQ=7$QfW{4qF1+BCrLCuX5vwc zaX%BiV5-dN%&z8AgIOBiS6zKI$wVV&S;O;1tG(uIQ9bxGH1Yn1o4e*n7Z{$}P^ohM z@D7hnf4onrbjoLTlmhF;l9!@oPAj2eAod-zud{m z2Y=ND+q@3$SUUUQN6ihlW}aYvdH&(gQ+rEgJM=G!+-KBVYFWVLcOYk;Wa9=_6R z({Lzy5uP=*(NjNnNzB9Jr*>RgHYr75vhT{T8yo8M{bL$;FwK+gm_8w$dGFoFTov0d zOjcOe0OELWW!ls9{9FBjYnne-esGbP_2rV=sY6#|Wr|Ep%i6*pI9q*}n#a0f?a!*K z+52PCgw`c iNI9(({>EXQ><-qavm(wO3TeLpN~NBzelF{r5}E*!#9pTW diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_devices.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_devices.png deleted file mode 100644 index 1dc97c95c9be8d7581c7805d885d4951df21189a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 629 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~ySip>6gB0F2&*1?oyYK1Z7?Q#I zcE(08W=DaxVkvCipbcoVZ)Vk;uktP z1olt7{dm(IHEG{(dIsEw-<>)4*8cPPyiGYPm-tEsuuWl1b&!-uWK)`d zr;gWi*y#s~nEsBNeqi+p-Jq6j^QRt&m=>7h60@}0!OTV9;r5xXgEJY!>=5Bdo z-a(sh$6Eh(ZB6gH@cGvNdxh$KEW1-x18zKsjb5RgP{$bMS;i{8Lr5cH#=C-3?^ZrM zzrpuueFpzZ<;!v%>wnDIto&}*uT3BPe({u){yVNBk)A1Y{-b%_?byUZi7KXqD>lsM zimFXGpX_X%<|9y8pZRi|RePeX*|jq%^Ei8ED=bNmf4{7>+D9_wpVBt<`+a}bPf$yk zZnb5dD970yy~{;6NOG>tW_2>odz{Idc9)556r(BZ+Gw5(QXZja!*%3mvv4FO#r$y B0)GGi diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_email.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_email.png deleted file mode 100644 index f02980ea9e7664f4dbdc550e3d28d84dfa8cf9e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1082 zcmV-A1jYM_P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NFq)9|URA>e5m`g}hVHC$_MAPhn zK}6ZckXn|RQd(5B2wG)SWYjW>A~M27En2i`6GkSqNT@{=T4HU23IZFbD8}psg%Q;v zg$jDvYY?a38SWj={k(Ua8E2fK?twqw|D5l9=keX|K4t;|U;G{Lcfj8Pe+T~O9SC|g zAB{%0GbgA4^Su1BY#$_k7+eYlgB?lbqVQ61737p z!4e>~i5_nNJ}N9Y4@?=tuyfRFau_+6f_|%*5o?s;oUWiiD{!})WE%DhENlm|3t1QP z>?g^6u+U1TPlePI7qfx*1f*Xp@Lk{m!510!jH$#f1Kk8{1H~%v2gMyUQ3G<$8o(E| zVlg~Sl5NVC5lYMz1bPfMsemK!V<4n#-jpDnz?LrYM5zD|ZKE2`!1XS92Tm|Uj38(R z5ujxNWvwh_yrL#Lb+|-VAm+yt=q+RwkjtuNFUmavS88J_oVBy@zYb1-BDMA=dJT_Y~=f>?8#Arb^u#q zN61{sWF?TIO*xHWis^6a_!NMnU>In5hf-(yi;ms%2s!+59Jc{0U@^XO511nNN`)h+ zQka_yZkvnHuYp<0)j^r_Y`{E1j)h(dm-i3Y$9yCBuKa4@eI(qdY%z*$J>&^kr{?5M ze~?%W;IpzPP194$Qb##So*7km%C zjo_QIr%e+zkaAFpy2v8=1^3)#v3$`k$LFleT-qkH0oV6HD$yzMr4$NUfIQ1Tfs>$? zxo3OTgtk?4XO9rm9k7)bmM$^Hw}|fEpl|($kl@ zY=|6}K@bM=_qu$7`{M6_zXSdb_&eb5fMW;#0w|+nw=#g#{r~^~07*qoM6N<$f?-C_ AcmMzZ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_angry.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_angry.png deleted file mode 100644 index 06c4be532162662385fa840dcf1c6e1abf9bae43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1397 zcmV-*1&aEKP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NG-$_J4RA>e5nayuhWfaC|AYGtT z0-9)1H-;267&ReULm+iwVq%DKM=*g6HGCu;-KwPv6}n=fA+-GuWWknp)4{|LUCBp4 zLIQ;Zr2!O-3RFqP-!t6PoW67KoqKO@L6bSj)A!??^PKnVz8}*{r6ZjY=#0SsdIYLv zw!YD5tb%V7cowV%JwWmcxCX9*@2b`6Z>0YXq0y_sN1zVwgLWdDI;a8b;KT0>!B>C- z;0`D%@)gI5huQ-Ieh7XAUS=swfIXle^n&FPlvkZ}vXQNqn-m5Xy%PlK0^>e1`Dt#fgPj3az!7hwJaszs zOlqONZ5hvca_m`j5ds&RD+U_&l_yPKTXwPlfu_GLBCI zyO>R+8DrNC-UpMwWF+)K@vbRJWh|N7C$c_QMT__v97H9wTg*V!s1u&CZ0j z)cp|Ywuic;GWL6c$(A^~r1h%%yvaGsB&9^y0LIZT1)IU87~5Iu^j5I@)P@+Fu*%2I ze*VxHt#6awkkywl(sKLVj7hh8z0afD=Im~hU+MK>9{pNp-}0TvK4}K@nljOADotKT z=|A$fQ;fY%2b6r%#K(@^N|QR!NMj9j)0Dk^-10G(i-ClCAd4f7{9h)0CxY_X52A<^A3Gd%dZ+GKE$zUe4kWQx z3GaZ-5}@fG1vfyFTt^`r*(S|?lN!CQ^2M$aV!*iuOm_PQ`#c7(f|F*LBmGgnp3CRa z`R{Ph>wG?On}R?)fVRD5Kv#n`>>7WO&IvZ_DSQv?s;yt&P6F*NH^Co3qC3x1pclLb zo&l0SK_9$lo2BRvyy8>rr@>wD0yZtz6YA3iq65H0Tje}KaTxprJ^}0IDN_pAz6d@A z=fR=Sl)7PH@@1&cT!umGP|rGvo_T%Vnet=4TqGZIP<|6AmSka1N;L?QfhN_1KYAr) zzf|Sy5!}xMJ#tKT=A?)>hi%LlN%fK{y%TV%@n?X^Xnbo5)WWDM@Nr`%)lAG=P6cS^ zT;S5O@grZS+%;!VMg~G1ZoU&*r~384cA(s06gB0F2&*1?olkjwL49Q@9 zJ7Xj7Ap-%|WS7G{Jq#sRHVBGLF<{9#Ah9roL9CHWOJl-k-Ne(bI@Xh#OD}FOIb^B# zy#D=i&sAOBEFKMDl+eJkAX+G(r?C30;|8gvcC~8sINag`M2xjD9uv8%xNYJNBl3G z;gDT!ayDf15rORy>jT$3_`ct7&F|_+p}+|hhg)T@%(ZF#CRkOqQzrU1hwIC7J09m8 zfqzvGk}mEHJSnX(!+DCyfw{iwGF^wHtpaZ_l>eD9cf!ZGoV6K+PUq669uU}iw)RqgAyrNjttqT}Rp-_Ug2Kwv)z4*}Q$iB}CDxH( diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_bath.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_bath.png deleted file mode 100644 index d50924bd53452a04657c749fae73086f40dc79c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1221 zcmV;$1UmbPP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NGFG)l}RA>e5nN3JlK@`XJnUJOl z1!f;)enFoW6n(9PpoP({4oA;jYzPazcg$Mrc%$zgxKWFC7oqO-RtgKl{?+j$8D*X8Pcs{Wz zKq<&G;to)5&(6;7Gi;etB=J1Z0DgjKGKS+0SdclHt4v6$Ia<~h`xk7h6B$IHONeB4 zlFUPuP%rvA=msOoCaMe^1l3YOUV*JFsnKvPoj(kq#hB$y(Q=_pF1T;BJrS*~*Bm$5#%9RNF_|t~K_A2QWu>PEv1E{r{muB(gUK-zR*s*KeU+4ma>v zjJ9!It_Dz|BFV0HH*VC42J=vb;QI{QTbsGsMz6uHw?Jzki}5zIpH%X~>EsHK$Ssz` z3;5Pr61ADWVti_IBx-Xq013(87u9u1u`3{f)=r%33yzwWzjXJvmB$T6)(#uk7 zG3&Cojq2iGxg3DbLhnXeYkMHtX$Yt7D>K}LCAOYGzm?sO;u#}GbMS+N?!UFO2I4EB)I}}X}AYef_l|S zc92$84qBZiz%uX+Tm)^*e&Rb911SJnnjlJv5U@i9eH|}gv?Zkb4O957DoeF71$v2! z(H}2X%mHxO>ME{)et=SSAk6qNW7eA- zP)?(O`+&iJbDGmd1@g-(z%R7CDLNH6l+w@ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_busy.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_busy.png deleted file mode 100644 index 9e5731cfdd9b1fc3b92f736b0c3355f733e8f70a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1114 zcmV-g1f~0lP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NF#7RU!RA>e5nY(TiK@^5{-0CUfV(1BmJJso;jD9vvX$FwOU2h3{*4lU(Z0jOzT^%)+F-IfCFF}Oaak5un9K6 z(|W!BiE?WYMo)tqpb370UL>9-mV1Xu=NKvB|I$(R_b2PnJ@J_1kQXsm&& z;4C-{#sgGWpPq?Fyq-SLm>swiC>aBHyk_c~U=HlbYk+vc6`--6R%wjom6ODW;7Rbr zY5Pij0qjZ=nx%y|6}_rP7Tz10@^ymFVxqMwqrr+ieu5rGCb&tjy@h>E0)RI z@!%Kj2A7-r9sR!Pb$gpUPj?-o?uFP>G2YGbr-x_99beJvv46z zM;*utp$%uvQCA;!)$4wnTRCB&+t*f0WP5WvAVwT$0@0|B5<1HFJW6DRkbHQkA804I z(5?;lM>_3VX}09I0Pm;3D38`}14wI2pJs34w-rp;) z>6$l_CLx_09Vde>ini|JS4ycz$gCs<(k&@^s7g1rdjzr%0Sg_eywuHApa(&#k`_px zK1z22nKJ%W(4k_bfT{5z2-AlxeQYw)N|Y8($Wqw&nQzjz9Vl*8YA*tn+`JQdC-n88 z@MT|P!6LBFC{)||CoO5^bq3*D2_H^UsMXMi+T8bMc(pm`((Y%SW@`nMJM%H;P@)&x zb|0(71iR9By#iN`W5)iz01IWKI?;8-6DHH%BYk{#7#(pbspZ>x+M zn70q*Q(zvf1ART{MdA_fbxPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NFp-DtRRA>e5nM-ICK@f&_;{z2z z1*515f?#}|G$M-PB?mo-Cs9NY1P>lOi6;>ha?xWB9z7^}P*G4+q9O^tf}ny21ByZ* zNDvWxAjU^BewD4B^zQa#b}~J?3R6&9)z#J2fAv()^vo6tIpr&muRy*6`3j_1fnqIV zgCLlO-)?vVyr`Bj34Gq;`wH$W7Kt;^mX4ky7t;udU^tij!R2?(o7&}>0 zr#0}9r90KQ1On%%apM$K|BRc`Y1~Sm5#fzS*~V3va1rAYh(lwpfVTv6!fut#$O$*I zuLOLSkYG0nh`wEZqR3YQzOO(pfQJ=yrU`i80|J_T@B{Hc6WGW;n4@}?@O1@zmyiH8 zWhDEoqYAkid?nz!gaqCl3v^@|rA;7{5)$B)Q9oi(lgKOqa~sW~gao@OqgM98N=>Fr zq`d+rfhkYpLZpSl0!t6ov;Jt*Hua$X@>Rj?%=vBQ;7yxBPtMSCrFB0?!ZF6UkE_qiLN|XR`WZo9o zbx@OsmK>u`!1G|C;5hn-gS_y^5`N9_+qi&M|2_1$N{ODA!3*JA zR=_BAn2x>CkxD({6BVGs{*(4G*xV?bp&AQ$p$pzcnCd5m-CF!Z1_Gv zX)xH1# diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_happy.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_happy.png deleted file mode 100644 index 50a0f24080a364fea6bb6429de7ab8903c7332f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1387 zcmV-x1(f=UP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NG)k#D_RA>e5naz)lR~*M@)GS0X zUJ_I=K`;PBe}Zvv4_xZ)?R`Y~{~(ec1baaZ{0mxwTY~Zp{7iKAVdG3&rR_Fa zrK1fzi&QNpz}DU>$l!LxufeSqs)WHJct%$d7_2;8(CX6%5%Da1luNNJ>w9 zy1HDbaQ!+7>)KO2LIaj$VilagKAIj+AHX~>Citz=- z2SN5zLdV$IZFQLmB4t*VZD&m^_DlqyXN78~I-vW!(G9C4%KPwNIN2Rn&sM!mHnMF- zK6ZAX(soSOfiQI{R;D$lS3>MnE|2eG(NZ&@*OZZ7Q}2p=?C4giwH2d!jOlrd%zE0} zz#O0_;vYauM9)UGAA-j~)DIQ{eTZ5LD}dI&+E2kLo|(T>W~t?qH`M{(bIr!htY_M1 z!SV>-vtEWqYNkzhGnJ36;YvU1KBw0zsSfA?Zj|bPMpU#LXvS89PrzER2#B(YPr$nd zt^<9b+Ub4(=8NhZ)N(1OI-q4>w1&!*mGzq?$vTm=2%@*(&h>pdq;QNDYeoQCH!?*@S z(W?afPaD#yKYB%N1Suvuxg}$Rf@~SEr9-v8 z&14;wI2w_+K>8SyohTa!pGy8(h@s*{SzkFjoN0+@n>5l)M3+;}xD5urv~2vy*J$^( zVcNb54t2QsPH3HK-Isps%NFbhw&tle&Yxn3R=eH6xn{yICk51O=!e?51^nn+(LV1- zoo3_AsCMLINfAgNw(U*|EYhht3U-69!74B(Ky~pXla8IRR2w8;)qJqAgkwAcY7`Fw zJM5?yCfUkIa%YOgu9Qdc0WbtE0R4Kw3`g#p85aR!K-NEd6?*ZB}=A tdywcc;{VAvNxMtk5$KLUcLaKR{sZ8X2=^!iZ!rJ>002ovPDHLkV1lzEd7S_N diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_hi.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_hi.png deleted file mode 100644 index 126e88cf536af91b317736e9c8ca08f92d6be6e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1531 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 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_neutral.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_neutral.png deleted file mode 100644 index f140e799bd89d319874714a9adf48d7188a05d4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1237 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 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_party.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_party.png deleted file mode 100644 index 6e6eb41117ee62cf7208778aaa9986e1548e8c40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1735 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 M07*qoM6N<$g2V2J761SM diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_study.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_study.png deleted file mode 100644 index 1f88f2e939fb8947975de2d0ced82b7fb2ce6395..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1360 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 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_what.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_what.png deleted file mode 100644 index b6225d01b9580722089da6028f50900c9e3a573d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1766 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NIP)S5VRA>e5nQLqnMHq%#v^FYQ z0TC(G5^F$fybz+6ASlL2Ad1nbAx2{~g`g&2h$cp@Bq}XYfAGT#RDT$a3W+gbNW}i& z;3ZHmD2fW+sIk~0*C2wWNRQ8Z*eTyR-Pzq!4pn2{c0d1 zci=yL2Z{^X`*b=zn0OOm1eC*YklLUfw!%ln#l^cx{~e;!hS4xEKzWs^PByZ&+R4St<30!)DS<}Y zGWm9x4W}pVfNbGjkgwGeE=rQd$;*zwgW-MCS_k<$I5n?8##p{V48?L~1;Y2{) zdE0s2xho3Q0qJZUjZ zhGpg);Rm%)`V46Hi2_!Mff z-RvsxsUUv?Tmp)F7!>;xXvTI2X%TicBx|4)c0m<&dr9*b!4`s3og#2i3eUkI*aXkR z9dH{w3Qf=oEuh_4J|kc)gsGFl6pWXxME-Gbsy|X1{?|JLc&qUr;bhnb=W!?YQ+@&Y zRnP>_QuZBXnuQDDLrB9Im;tKaOZ}PT7r_De4K#y_TM1{wXxIniu-}cnRyMV*x<5g) zprc4~5k$uWr`gVv0?oh-7@#uJO4tF?N@o|9VmC1G)qA8pp&F)GAFj3OInA|oiSl@+ z0&ne_-c5?S1%aJQE{snh<8_8-QKMzYTLVWiOG}6l?i>jF(MkexF)$Dsr!Ls*7yfBXcXg*G$(_ z!PF_y3K1*pd^aP@7rQqV6#W8PWxS$(j0^)k8D{8fG_!sO4sBtMxnuG})u_3e~j z1l9Oxd5)58JM`m6&sLbUmLC_y^_%9c}Lcz1%-QBOPfa)lzpS$*am6okHF% zdm7NRpiZBVi^(_OzcVO{N_6v_@*03$Np2;=EU<&sF0F&z=al~nhu{xb2kSxamUdfh zfMY?Mo60n>c`y_Ih4|N#k5aX%R6EH;aD9EbjZEhsNe8zlV7o3*8=Rqtq;_yU8lhf4 z08EADU}ZZP=4UsuK|Ktj3TP!|TOwZ}ds2M{x-I@LUkq&YL9g?DskPzyGFS@wj>xLZ zvD2VkJKAUR6VCeG#;SYGrtpQJ;&m65>)~)Wya6rXr0-oF%iYfITq0BK?O|?Cq;Xg! z0n{PAbWYtnAq9^Fgu}LYjF8WK8}nSO@hxw9GyyTG|lQP6fzedJDw-yqna07#ozq_C*~_vpx{ zHqs%kk^t{23TlkAb@kW|fXiV8IO);4#@U3W)T{Fwodc;hykiqV+})UvBog-eMEn`7 zbbVcvKlOTSTwC%@K}nQPqB?@?14$nuvBFMw->Her&EQ==sncpRAKWufHq-h1HZ5Pz z2P0_d(J|z8$uL z{>it8v>=KcfLfqq(@0i;dtY?+Ukkp8t=tgJ^%m!07*qo IM6N<$g5^anF8}}l diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_work.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_emoji_work.png deleted file mode 100644 index f296d094317127f3a2d15cbc9b3b246b4fc92d01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 799 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~ySip>6gB0F2&*5QUVCwXAaSX{| zeLK@PTf|YIEnTG|kl#s3gKh7uIV~K|9%;sXQ4##ZUAMqqiStE#C!^?|ABCTuTJE8@c43{sb|ubE#ID=eyg|Sp!fNb@V)t^rSEgz=S)-e7WDwaAJauo>=w}P zN@APGS|BF#sh}?Xk7&ib=Rc$S^YFf9q@42e<8J{%Bb3kaVQwu}}R>s~LiOm0x9b^O>ic7aDPHzU}9J{s80oipv{n z63))M;p!0Gr&-JzkaAN)*doWv#`nodp_C&z)0y@}uYY1)V0lHjq14Xvim3s2pT^B>H%m{K#aVJa+J3+)B6X5{^ryFNj5xI90= zulmQWT39CERZKud>VcSmuVLkxbF2Yxb_sn6Saem7Rk%l@;a#fm@>&5O_Y3K&6~Z!i z0vUe2o^^Ox_okPIRx2If#~c*=<$JqmrH7gC0l!uD+JPUfe1KdHbKeDzZ2Dw>*D;-2 zI+6dpMChIe(L1-@*g7|P$`13XiRYZ;6DnV(zB-;Lck5-?m0y3RKC9Di;%mAPciE+K~^?FXxT*8KZl#agzdt3H1IkyTlq$G7NCzck_br2GTC zf5q-Bv3*haz9zz?@vm0Rd!dY5PW`4YB;Lk~JIeo6(OdqcI>GCw?)0vh%Z0x*?yWz_ z*<0oKo1^B^?|o7icQfg&Xn1k9XwJV?-w&IIJW|?lT{_0i{9>Gh-D4?#4!`E~i^2L` z%QNP!^2}UtdS@%!o*j)o=bnBFpR`x{?(0ie|IRO8oFn;Dc9Kr00uUyg(f%N9ExUp1 TTbKJHP~!A-^>bP0l+XkK!52^s diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_filled_fragment.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_filled_fragment.png deleted file mode 100644 index 4a6ad49bcf4c80327836666ae00a3780c6acebbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1016 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~ySip>6gB0F2&*1?oPx5qe49Q@9 zJI&W4)KTR4ePhQr%^JTJxvmyyx;1SA%f)3|FRI;YnU)r);m9F) zk1UqcLG1?`YHfEg96J~vklyWmlVc6zdPk+hIkyh33i*(;IID*Jpui0OWgI)Ww%yF? zk#AtsCXv6g+(#&Fj}FozSnoj_W_;2c8=)Z7a*4R=-ub)?~hI)vULQ zziaO~iK$zDO4`=A{eb%2Xmp3SH1kO`EePOh7^M%0^aN2FdvnWAm#uhh+|2Is3)VwJ-DgD^*^H#qUFGpRJwqR`8dH zuA=JZDJBgii5>1b=C-oF$9!Y`ZC80*%ys-di9O(|b%cAf)zW+w&)4B8Dpkw2u3^lu z@!T%v?moFNc)E$?zPl6UQ}nVKULFwm9?7P2H;3KqaFi(Lvf9GZeZ|+B&L2~s_*2&; z?MHs-qbaHP8)TTo_HWuE$!?VIaQ%3PZSIljOTtnZUY-$X)+x7Leu3R$UE8-7{l;$h z6xkn($mLPxOe-K%oW%huX0WkeidN#_|z2X^kSpHf44=Ku{Zp27h(OY knV}=~NDZFaMH3##GjjYiH{Nwr5|ryaUHx3vIVCg!0L}KUAOHXW diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_folder.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_folder.png deleted file mode 100644 index 7dd2d616c5f5b803f7dbc82bbacf8314afdecc56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 759 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~ySip>6gB0F2&*5QUU`q6KaSX{| zeLKU@TP9H8xb0%0kdD@lW!|eq*n|SsxEys_y@czD@QoWwxjB9^ZFBTUoUX6H$XYGB zRX}8;g=sC5ppOf8@z36yw(0lQzPtPK?d{3tAD*9mGyD59d*l4_o4J{sLRtb^7p{nE zEZL|()$8q#JxuX7^SAQ?Cj*!F@MAVK_zL+ zIg3-gm6A6@c_*>-txoXJwQ#r}S~jby>#$;k(!aP_pRd|9wl_}OxJpdTVxwn}`j>lK zUvOKLtG8^NUQqS=P1Mzm8+XS>DTrs~6n4jhR`?ptT#+gti zClSB73pkP@FLG|lQtr1p{(&bhUew$&EcGNX?1C#O`emDPFZS%D2EAPu zotc)&$n{)c$dWGB=craqL; zTafc3^a-=Q*x`%54s|M-Gq1I|$9^ubjEV}Wwf|R@_J=brqCZFX(RnSqMRk{W&OD## z^T6Pw!hY7rJBz=#Zs2|QWq!xktsOGbEB{Q1`Xc*RRsPrht6ROMs@Qq2vYfpCgXH>@ z*#)e}-5)6LV5pps?4dHLzu(hID*SlngiihhCJ*nY?@Pm!jxXVucA)0f#*Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NF2}wjjRA>e5m_KL~K@`Sw8lwFB6Nbp`(KD^N?aU$56C=NLE$Rwm`Q z;e47JFTssktu~pf9^$*eZ4hF7py{T(2Cjuru6m9VFY%d(y@epIhBykAnF8OLUx2z< z7d369u)vN}+)6j?BK3@c)9Ok{xGyz1Mg*#|;jvm57Sd;m z;&)U7twU|kg+2otRQ8yP%LsM9ReTcNaZP;&^uzNzu0TQiZa=Lh($Z(3=!Z2Tq}7Gb zK&v%No)+z7-9w+a_lI z#(de?yX35=Snv0$AfXfkB7$D7iD^f$UM7n-MN2afV?v9zaXRrK45ToTUVJD69uwKb zhcqyc39tB0A^dBDSL_*X`d8@M32w0-$*hqAr9Q-&1sX!IFS1qzySxQ&Ao2`w+lZm9 zU<>F|Zu>Yp%K9C6&pkP-&YGdaU)(&H3*?WK;`lW02O}V9NKU^aPQFdk@?Vp?t*v|t z%J1^eAnlOc9xH;l7v$xCN!y&fG0^C5pMjHzS!V^Mm?d{et3fGfxLXxb3 z9g6XkxQqKdGGq@tQ+b-B<5u|czPBSSzrnEv^uH}8P(EX;+1c!k+cop@nApdkP#oP; z$K#&9m4VQoSJqFU7Fw{|-+mK+RR;sSV~?}`srDq4x6pvv(;OY=jn;(mn8qGbL(x4#JJ1n0mT@C(d3kUcq*9DD0E z>&PBB59GgWMet{+8{5ArqzbAlP+fuQ3Y2;U{s2iE^m^+V@>c)=002ovPDHLkV1gEU BmEQmW diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_forward_check.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_forward_check.png deleted file mode 100644 index 41df12a06dcb4cc4eaafd7a09df95f6cb1df35b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 647 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~ySip>6gB0F2&*1?o`{?Q77?Q#I zcG_+)=0JhAUWJVl1-2LoYzSkDiewepxM7pPo(6>*H#!!$MtN@y;Fdq=#OY=!= zVL?)+i_YGL3iCSU-3B@>D)TDtB(c?FzIIgSeOc33#g{dpswqma)X>jlkRm_o~{1 zHaC{c+30!w_Veq{CAY0wc7O8s>$iF~d#?(+Bt2#A)_sc4B`mZjho0c~+ZR=Q&PS=z zrR}4`q}5^H)xS&bkqlyaE&MuQY2qDem-PoDBUR*Al-xUA$`ID#a@6>zM~TJtB9A+K z&i7h7U+k>E$-GG>h;_AvwbY>r=@VPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NG^GQTORA>e5nQN$3MHI)qS@}rI zh?49r5s^XA6EQ@hED$oX7e!Vdg!*8Zg!L_`s1Fe$1Q`Vp7b7SrO8U~{g7hH@t)zq^ zEAxecUA<{)mbc&kvgi0`&YnHz?0vkqzy<#^Yu2pwUo*33@0q>NxN*m2Y-gaam+6Ox zhtGm<9yk}w0Mo$`*im48Utixw^#6{~>1p6`@EQ0AC4eVbs{6sqaHobAbcfC z@MI5YTNH3#0rpvrZRnF)4owt@E(N|;-)X{^iY3QAz@;~n1mj!AdJtWY!($?Fud`fx z(5Ey?1i>WWkGvNf5oUtPH5<4r%7j!m!?e)Z&@ZcwXx>VWO_sC25hFx;RtNbZMTWzD zU;r#n`N&TDio);ClppQSfgr!9{5rD3G7y+3SC<80p920ezn9V5_6BU)X@h7#nULVS zF*p_F8D)OK)|MzV6s3;DLAC}ZDi2W~G~2`IYe;@lu%WL)e>Bu7cZ0)LcQwxAeQ>|L zPU1g`Sy1s%DuOoc(($SELu`|Q&pg$Uo%fmwuBmb|xjE&VwL{`hpa-e~@SO#=TVkoc zd#kQvL$dSYr(H|Z<(8_vxh3?Q1?z1qDIABtqw#vM*_?EY4zdSjK7L;YL!yjNvpSL| zB{zU=7I~fNr7E5KnFb9aer?=`t&`4+caDBc;(NlHGAh^cDZ7??(I;m@Mw;vM6rE3noGPDNj4^`y#`@TZded|4&q=(uKofjPWqdOa1=0h0|(JMlmZ=++Eutekme< zBS#YXR}KK*XCi-nqRCEDt`Dtt$n-+~b(G}UmP3hx?-BD)zG30>nE6TF3H$Cr0(It4#^w z_u7T@K<~RLxqyZ>);Q7hT58h)=uZrnt=y1bxxsbrhP_@#-yhYxt~OmlTga$?Sb}JV zt7KZ#xHGDEU2QY~W?O$J{b*V5GQCWlZN@?3eel*aiYm)uwLK_xBv=aCj>6dH0-ZF2 ztm{QLYj0#BIla+2=o{eolOC_%f+3(y>q0OKxGd%h^t)lqbOy03Olybb2lzFfyq*r2 z4&4oY$qe96+Ft-|ORR2ZdO8bqOv_0BSn6gy2k1+NHaqPN8^9+lo2q>Rm*evPnt^`- XP?KrpLLH6L00000NkvXXu0mjfh@p@z diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_input_gift.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_input_gift.png new file mode 100644 index 0000000000000000000000000000000000000000..ac0c98070d171f3a46176dcc1d94e81b7821a60d GIT binary patch literal 1106 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~ySip>6gB0F2&*1?o-{a}x7?Q#I zcBZd~XrRdP+HbO3H)t$c)1#s6VHC~bD8ee}qN@|NV}q-F&}=Sq$1OQG&+Y3diS+bz z3`lU9Etct$`^#ai2AAfgO(CBif3-dwV|ngQrQQ8K=VvhgFF$Yly&j0~SeK{WJJRLk zWg|Dgt$S;N;0yNHjS+9emxex=erdy<+&?VeH&30Bsobc;(z}2^Lvqubj{`IYTDM_rM-OmPJfnC&$E4x zQyu1O{k?L&NmPMN<%84*sT)tkj%gWOZhfKa;C(w}QFrCZidBchn6(btZ~nUFA-(?GZ~>^}3nroaj3Kh1uyuEAJn z$>vrU!$W10qPN!lv~c;mE_1%qPX4^jk7gfdPxbN=m4D>DMD&gN!^i%s_jS)Wrl|IC z!`=CeIkmSY^z`*Jp7lQ3{^j`j4WEqHG>h-v$tJRV!<7uCopI|kSQm+M%xuiyZuLoc z@$Mp5i(jG#JCH)+{eR1KBD#O#Qn!cEQT$M?OAfy9<^6HRz%(FJnE7D^YkB44Q4mF1vV_7u2&ib z@xGj*Bo|Vp6l$lkj`Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NHn@L1LRA>e5m|KWdRT#(5Xlh6r zDC9$o6-7}R(ZwDje3{NF02q5rYbXq#|DmOj2K@q9Dp3#~vcYdgx|_puq%! zmtwM^(!iqZ!O+IXvp5yf32miCawZ8kh?Y&Q}c9AA`20F@y9~~X- zLU%Q|1I#aLS5j{Ty#eqI*wWF_aipYOu^Nd_0k42_;6l)8g7g+=R#F3JPhW_vqZpd3 z#br{=-9k9I5+{RTMsRk5b}RTP^jpO=M=ZF`B}x;~A*h@&C6 z4h)z=)E=U*8*C^Vx9;08c3|tS89QSNv=7$>8BFCB!1?9){0v-`;d=q&8#81Y?g3|j zZl20ibO!PqKZDSc{}p}(SP1mA*46827aeV}o52fC@F){;o9nlh#d+oyLiP(VTI3@$ zI2ZH>;RY`g&-kVwQ?uF2={L27Dy;xPW)oBoInf{ovVWW%|D~^k+6^|qYo%i9a|7q~ zY^iz%{8g9ggT#L$$!A@np7r*_UeGLGX$445L63%D^I4I?CuWq`{jUFmqGqCby7a=7R^B-Z-~`u8`1a+O>giPeahmYt$m5^A0dN3$xN>)-pB~Y&Rv^5wOJM zzGb|rYt-8|@Hi_|z;yIJ0!B)%*POx603Vo;Rv#;mm^^Ng`2t>~e@(2D+s9xISO-1^ zM}bkpyO23T;Zm^66hr$Q?JTg{jprsWf9U!G%=944?G`VyMX3|~2-4`gOvCZO(=h6b z41ah1f8iUpm-mUh2dKz2(o13fYM}6Snxz~2B+m&l{Q4Ed~Q1CfyR5+r*rpqltJkHm0vF zwA}Q3%XsMmmPU>n3Xo%TbY;E-bgOvMLu@k`+j>5UVAqB0XKxUA9o~7dzV(r{wgBhY zKjeH~gLLe5K?TnQx|!nb$Iz&XUS>YiTI8)S0H@CbPie`$g~DoZ#484V#EoesGmAjh z+5&JGCqK;CDv);NGMpe?!D~S;@I_}9fnMbT8t!?Vtp}czygt^oRXTu@I|E{(VTBkhGP!H}Y4yfCmZUDG?BX z{-`oi^7Vu219~1EeFNkYI&l%(y#eyv0uo7j!xVmJ7#pJP=7VN;icVq(osq;qN(Y_S z8D0bQp|2p_3-P!B5)%pe4?V$YSMw#p4Yb7 jn3jC2177r3Wd{BODUzg;JF&&t00000NkvXXu0mjf14iFV diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_limit_2x.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_limit_2x.png deleted file mode 100644 index 76f08db69915cc0664523ec4be96452e456295ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1141 zcmV-*1d98KP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NF-$_J4RA>e5m|bX2aU93@%*)1% z#z+~GG%3+SBDG>EA&QxoD?~EIwU-NSmK!&Vm9mwMSZYkH!vIde>He(SGGtX{gXJ zK5Gy9i=Y>50uzBB-NA4dtORl^_M!(UTfiI82WEp}uok3p+n$WyUrOP$${C3gzVku1 zPt0}nBg9cwaNqKKioEzwrue_urh{6Lj4rvNlX+uz?F#ZvkC+eWrs%}Tr<7ki{CI8m zStyhZz98wH*zpQV;P2U{7~4kmcmI#sOA1|HxM8FH*5Md&^| znH#lDc=USryR;o!F1Y8!%JLexejVhiz>fkCAc@ZCCY&aBp_iR<9V+C_KvN$=krN|l z;9G*Av8Q}_nLkaL!J}xTaBF3nq*qr?3*0N67bUw@R6(R=J2cX z@wL@yUqZEZQCp_cUb~tl4@)ml|fl_D5Q@Ikjo(?T- z4$EJQQa2%)pH`ft!Px)ER@6A;IvS82o&?T<0$`JDNE3d$SzCep+gApJ#Qz4i23Gmj zlZ^6lIGDgGx}mX#N!*EZ+`}nBg5fq*bDj?9OX%TncNDOGv|l|y+^cfHghS~rpH-Tq zU~B+>j%MU~QT_w8hkm=``s5tQr^R$0DufLQ$*095agA#Q4)Sq#Kj;FPM6EOv_cbGS z7t%urkF#7}@=YfbKCi#vlIftAkis1ZcOcw>a0kL2aP7cvK#(9W{h{2{00000NkvXX Hu0mjfpOFV& diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_list2.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_list2.png deleted file mode 100644 index 137f18efed00740dddb48e9d3fe38017e9be59af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 604 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 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_more_0_5.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_more_0_5.png deleted file mode 100644 index 0b7a5395419a597c14bffed27185303499feb694..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1079 zcmeAS@N?(olHy`uVBq!ia0vp^K0s{1!3HFEm(Q69q!^2X+?^QKos)S9#NjG@Tos3 z=;Zm!47P`fx$^n)9qW#*W0^cRzh$f5eEm;9|MV|;?#8-rVukOO<-E0hhVqNP{m@p6 z9e4nfG(x22b) zoqUky^Ixwfb=~~+olg&@=iiw(qi*JnNl|ASX8y5$Gj)#F{sRAlc?^5EtY68$uPB5) z;F@KnQ_W(jBi|S19P6q$TE?thEm?fsN@8{Rg0h79YxUwCO#fak3^EGTK5pX7d5&AH z;6?xT2m3Sr7`>l;BU^vk6`4ti7t@#hQ_rf`-dob`{@$oewygL{m{`QmEUBt{sUO%h zE{FWy)-*}w)S_n9Qn~ehaa?CgKOeZCo7C*`C_4R*5%=xT#~YsS{^+r@t4i`7If>p<3n-YEm>D9g~QuqSW6ca{B)h( z7=GZ?ghl=a!s6j`bM~1$zF_v-`@>o0{)4vS2i7quRZjgJ*&CnF9^R;5*pm7vHpq3q z{EfAd{<|lM-gC%){Zix(!?^}k2la=ATeh87-N0aTw48hGqkD`c(eccFjam=9=f6MU zGrM(KmG$!19VaKuIyTvOvnqeT1n*MY6{dQ#C06~K-dpdMxJb!&=CZeDQH!LmvV38Z q*FF+dzqVs;MFATdN-pWKV&2avX4{qEq2ekH%Cw%YelF{r5}E+6t;%u$ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_more_1_5.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_more_1_5.png deleted file mode 100644 index d928fc62f72df856ef5fc434647c966505d6ada8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1011 zcmeAS@N?(olHy`uVBq!ia0vp^K0s{1!3HFEm(Q69q!^2X+?^QKos)S98q{Hiq7pv#B_wnyeJbmW3$@$E?oFcwIcZ$#38W*42|J*KZ z+rooKBn;Sk7?Te`sDz8g0a{aU9Tbo#pKx#Ai_T6#g`@*49Ij@{x+=UuA-Fs+0l`a6eG=yVww{^h|0n&7 z&~f!Yw`=}Ky*yn}(6ff~&Gdr?5&U_LTN>CUcJtRU#h1K4{Gchnr0UjQrFE9ZuFnqG z=Dhx6@bbI+pOmUszgw*y>n3>hHOh4UxOQ|(i0F?`GyM3UuK$z4rE31;YWb%x*E{>_ z^?#jO;=lTCnf;IL!qv%!TlpW`Z7`Gg;})O1bHaoTrY={#KJCuj-guMg@4M7O-n}PZ zrw9EkJXVn>F8=gagrLy2sSWnKeDcF5Y^?jsCUkY(cV>;7+Y^{yFy3}Ns&uKqF6<+# zX#o%CX(^|m#K|!`X0}Y;=W%6Oq3E2GRhMmkpa067RLSLZMSfBYtLNT?^+LzYTrcyx zU5(c;y3S?I@3>kq+0ueDtV1Gaxk65W%Od*&TRgwDDip8XAm(Ag;n!>w**7Kc`YO+B zF6TwU70ti@_fAuN!@cqz!}^$0=_?oUeQ|y;ee=r77cWIar=NH87xA;~Rbli!T>fBl(19}XXz^9o)|-DZAy@Gcb4Lj$4`O0hW`(@v3?!eYe^KRd>u`cx!4MQ(- zJ}(xY&9{QRVcDW5mfK!$=|8}Jfo)quae{J3XP@F%O_kqFA<L@vKJ1z>mcxb_~Lx=(JkCg^Y42E_h#qcdvo@8UV53? z^-Ds!S^}aSTrRAOm;xJDID{me)DBo1w)>#QjFNymd!Mv&aw;SqP@iB@7`SCgM#rMv znrGc6|McG18x+-+X*N^5aoW>VCD)nm^H{XgJEmQoZn&m%cSLvL<@xWwzjnF&Z2e!K z0Gas{K8qSXa|hcX!s<0Iz4)%r9p)(8?FZu8&wmVBX)?7ecKbp8%lpqio$~Ry#OHHc z|L;$pB%8ova!BpRgna>5KOD6PGq^a>O(WILdC^**F1F>$F0-CKkDVm>YR}}_xXsO^yIwir*5qUH%I{de^FBYk)lOp$ z{~g8n2O%$Hn)8`c&7U>-FQ`3Mc+Xa4g>ArxYMabIiT2m3e{pSA@s-{BVUy+}`Da=; z@^{GQ9nh}H)ju@-K=SeWn-HS$NDnk(Xt=Z?C}bGg{KJ#R~RV|u5}?VPNG=c-j#RG81$ zHg)%pUFRpZTg#o;7;>2_ZGOw`6+bqwy>&GI!)oEC%=y(KC%%RRbCn(Kc9Evu{TIvNt4t#`hJKHv?m(0|LX#9VgmN#@S51Dc25F0mDrFn2d7 zQVIK4Kb=S9Gt0Vvk2yBZE34-16Wq`4-&n7-O?W@sruhl01#?#%JNHjm$j80IY8l;l#biT+{X zxLI|=*}?m*ZXL4)9~=Jd{xNym;iJZk>m)>6ZP|Ox{%$UsX4rU0=j8smGsU9L zY>f2U$tEAv;~W1ub(4^9`7NFZoy&5jOjb@!J1ad*?q;466?y(T)+qPW#C}A|RsbgS dh!EC)4FAgdz diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_nearby_14.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_nearby_14.png deleted file mode 100644 index dae8b5d372b20803e02d1dd6222901ff206a236f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1536 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 G5}E*$h~|U< diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_nightmode_system.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_nightmode_system.png deleted file mode 100644 index caab94110ec2fee0c3b46f3c8c7217976a315c85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1237 zcmV;`1SPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NGKS@MERA>e5nM+6(Q546u!VD?P z!sv;G5k>ZP;UZe}AZ!(;t%6oTfwgSYCTbOJ!U9{hw4#vcAw=|~O^62h$jl6iLdv2@ zDl_eO;=9vvz8U9r=UaK;&pr3tbN=_7`R<*WJ6~Sjq)c9cL{}g`YV_FHSP3y}!2GDO z%Kr!YE6|sppZ{Cg(^E-&H+Ttb$`E9yz^wE#hnWc)Y-a7j)q!nhDn&pnS3VbVC9MK_ zRrUkubwKt(Y$3h?Yyb~{kx`U|u}QrGAuKWMnYPZ$FRm@a|5MFTAC+rLKtP3S{I08? zsLLJbGXzf+$!evCQiBR8)hw9_|CzXI^T1W`6|{pb+Bbs!MfpbF$Uy}t?ku$tOAU}) z;CgVKBIeLW6dKjWr^@OC>wHA@Ta_;FRd$605-lO(7pWy8YO&6c{$AJkem$;r{APe?A0Y@x zTEIq?pn2_Z@{)u=oAUXCeg-&qEA$F*8OU?u87OlIf)t#S79f)w`R+9zgDb%o1RZiio9nnGX~YJQhHvh1(4h) zCVQ(UtX8_C;@3t;j<2V|pfljDba|UStX#1~OGqf;IH%UYbMy%>8sk$zC8zlR8Wm^fD4xX4mTKTL~nC@(z0Z`6 z86UZAHkqJId&qGJqYz}PfMU2_xRQ~N0J8401iL&R-njg4WjO{JAh1$^%mdd7kEA5W zZg2@Sf@|PCaLYpsMM3#yjT2<8fJ_mkaNcug7tlY?_>8RN!Wam&T7a1o-aVid_=#-# zn?TOY6H3lbWI7A(`_1&5NpLBx9O@SXd3}&)fPAjGkB@wIOeRc_$}f;CtMSnjK2&fW z(C!p8SNCn{@J^4*6;wcni+H=MpQuaX^3-jBL_V=gYhNJN|BK0!a37cl diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_photo.9.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_photo.9.png deleted file mode 100755 index d0bc898d219c2052d5cf564f587fadbd39f46a61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 286 zcmV+(0pb3MP)t<807*qoM6N<$g7$ZLxc~qF diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_photo_blur_linear.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_photo_blur_linear.png deleted file mode 100644 index 02ea70cd64f5f6595261c5864557b1ef7f077790..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 608 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~ySip>6gB0F2&*1?oJLT!(7?Q#I zcII9$7DIvK`L4QG{0@f2J8170SYyjw%MxJn7*&lV@ifpm3W!Nfq{r&;I zC(}|mAKG2J&H2Z(EX~OCpO4Y(yJ4rh3=?=Hm>;JoeCD0^{3p++;0@0%_eXp?UGY6~ zTC7|DX{J8MyQk*mGX~o|te@n|u2$V!!|B0Md06K{zC;r5!gmI9X8R{E=wj?!7+S!- z?*O;Os!i*s_MJS}Wd2~9yqwwH&QCQA_qeyj&fRu#Ze#uh*3(+$*-y9=qv=ide7GdF6L=*@kMZFY0!+9%g+u6WG-j7p-MZo0xQ?gLk3Xw!KWh z?Y_UTa`<+UnWOcB%`V;e|0$AuslxY}B>zats9A6B^G#`(aM4D=eZf;kj}0~f_c(jc zFiY!kw;WyY>440>Uva^A3MbvNxMK6c^Y$kPq3+&yAuSW`u&dee*KF{pT)XWzgUXe6 zb^&$!_3dAqh3>qj<-a=7=^gX>1G+^^ea;H{krPhSmzl(D@-^zO9e`ChBN4$G~Dt@Vdz_q`7fuG_RiTz=lP1t%E elM_OC{xI%8$9!*VqWgbP?0UNTxvX6gB0F2&*1@5dp%toLo!(3 z-aN>A$bhHyAaCFB4x}k^jz>MK?l!Zhmy%DQ|Y@ zzwC*6x?l1(T4XCVFfaj4z#ytc3iR_z*T>ysf5zCQHGOyghsY3y_sofFf4F>JcI_U! pn6I6tTh_wKSyuq^kf*Dk%Q~loCIIweXubdd diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_photo_blur_radial.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_photo_blur_radial.png deleted file mode 100644 index f0917f0cddfdc99cc80304b8068bc7967e37d09a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1363 zcmV-Z1+4msP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NGy-7qtRA>e5nLBS(M-<0*DXdsL zN}QNxdE^5G(k5;(4GI#Nw22f6x+EoF%g%SmCxC(wTS*(Bz&#+@6rd<1vJsFL1PTb^ z{Qj$ZR%g$hd-slaWf$2a{WUY^J&&Eo-BxQ%;}Q6Ok3f4=-QU{UI*PB;-~^aTkb#M@v2{0ls(y$sHR{eyx@2b=@4 zN%_)jWDjg@TpUh<8z9n67{_akYlN}|x1v+pKY_^_)8--^Y2;(_ui(u!_foHkuk%1Y zJ*gAJ&jd~uyjSWQ;FJ24@}>CHY-|Eg^ZA~f1)k0TzfP6BevC;%c0@=DVK$IYqvJcF z*k4rntL0;;t@1fA(iB&YJTfK!zQEz=9R5)!??kz^(a}u!<@AhpgkEHA!4M)D&&nw8wuy0%%GXZ#A$8@_oanJmSbs>}Y+{X#W}!6tW;;l3dMeSq z4UCja^Aj6oT@Q@34!6Bk`lNE|#5@7~?{BHGJ%$f}(a((yN32K!E0zT1S|j%;>c{5k zY&1kz+HK&S0@^`@*@R7{9DT(s?OyQafTxm9jH9*powN9ddf)Ycw%=`f4&f_tqmAeo z!4nfw_TWqsL6{aHs|Y)S=hL1A8wE~!nd)_NWQRc~VUvHAD1xoy&}cb2-l;YTmM{PXg7b*6tl2^k*D)MK&+#v zYW&5klggq(@X3%Fsgmjn_aTR zL;S3=3C|xaeRjx7yOURFAU}kTVi;}zvx)`A)4X{rN(HE#3A4*B@u`vb$tzs`(usj_ zqECzZ%;!npZEAlL(NA3)Ut05i*(lcaI-4vR&h&9Nc0xgP%=;Hyu3v4Hez%cN(RJ`a zma{?1IMhsNIcZ&bQd0+4p^d>RYA$;LsPdNN-`R0zCtD z^|jlhe)#qW$LG{1K&0m|F7U+sB??B~rW4v?H5>l0qq!~8A$0{*e*YYK2h1Tsbzi4srF;#{ zq(@44dG&nPAt`;#CYVjg469KglPMu~9n2zRQnROOOc<7zm9+|(UiAg11ci20B|PS` z4vodm@s5>Le;Dy}b$2~6I&Pqx_E@%7t6a|#Plo9XNR>K2WpLO;xyYDDCDI?N9JR-^>W^8slU21`T^%MU$4rhHyxGR$GE3|r&eVRzUaRwNuUykat&=CY=?5bAjivs_$=6Bgeo_Djr zXU0F0TCr;Os2KnN002ovPDHLkV1mVW>M8&L diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_premium_lock.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_premium_lock.png deleted file mode 100644 index f1666807921f04ca00446d004a1d457a0f4db2f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1013 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 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_storage_usage.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_storage_usage.png deleted file mode 100644 index 0ab43ef4d02debd8c750543d519e7f1de8597254..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1414 zcmV;11$p|3P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NG@JU2LRA>e5nM-U{MHt7qMOr|M z0un0a)tI&*Mi3KI7hr`DTtGtD*o7-JLV^nyENTQz)TDu(iZQZrVPb>;vOsAF&&Xp1 z4Js%#pgdY6L0+w-V731K=3MjLbLS3oZ_jCCa{tLMXU@zw-#0VooO#?kVnkWx5h#zq z|9S*6Nw$7qV4xa*wV-R30n)wD6Va8)WRy-sC3k?vK0*r?Lo+-9vtSB@s0*XBa0U*- z0XlV)Yr3M*wi8&M|)5)+T)c znt~k+(onJBB3P{ta!ZY=@Q11S1L;XYl@l~lOgL@Yp*Cra@e89@OeIZkbNn^ZD^+Z; z)Ag!&w2F8J_w!8NNoIi4=6*<%QS1&AbgoJNn{;)c_$e#ybqMcW9XMs;&mZPj=tosmT{Wc*gx%z|5qkj>m` z8rcTg|GV@HnWb*#7Esr>nQNtdOG%qK+fqhA+i7iawbe~qit!Olwrxlxjnisa3wqpk zh2(Znk}vs`@1hPgd9M%-Ceqsm9@}wWud&lBwFsIad!)SoUIk;MBjrz^Bjq93PrO@P zog&r)6s&*~*y)x1PdOdHP=^*R-Fh##!pl_X=NcsH>);YU)T?gxK(DI~_1S}t%Dlqo z7z}oU2J1JNNByf@^M&z?V5R-P8Z|5;_IUW(Hi)!-NN|h7vG9GY!g=mnV5GZN^0~ws z1*@PNtTcU(@i#CT1 z@F4i438j^fcCXLKTSg~F!ZOg3eh<=C9|69A#o!%aHT=E?ws$zx?>b9hDQGsB4oOJA zCGCfHT^Vsb(IDk@fJQE-<_oY1N1AsF3fo61)DiS4m9-=iuVW*0!n+fp#p*I# zgbSbpN(XUnaxEz0G*b93v}603&rq|#U68t~Dbd7ihrTqOeI;M*2NS zPh(g_?B#IPv`5LjgMCipFxV2Spu@!ucs9o{#T#NR1lKgKZM|Pq)GGKnxO9rlR?y}x zG2u^Z!d!R5ZV7$0dE>hv6iA2l~U}8XuW9Yz2j1Z5Z|O z>u9RiVLm($%5&)onQ!2Co2#&32V@)tTSsy&j8|TO{=~*EW{RQ4X(7{KXlooI?KnRW zG+wh<>7pZ}p#^l%?}N0|i(~zyzXF0f>U{#PF5`F%`FiA9$esaBYoSjE(;R8*q3yy6 z*at@#?YmrqRdfejp6Qepuo;kD$n>6TAya21yO3StUi?a9yH!|Lc?8NMQ2Ge`1FOy$ U8wmh_r~m)}07*qoM6N<$g5_<54FCWD diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_timer.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_timer.png deleted file mode 100644 index 456e7f6441fd6d546d5290372b1df71efa442a17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1382 zcmV-s1)2JZP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NG&`Cr=RA>e5nOmroRTRh1m?f2` zqR1%dq7)JbvLpfz1VtC4)U;mfDM`|V0`;LD1nt3k={0()w+if`hsd(qiKxgfR+tE7 z3YFIv3%ZC+zyB~>{4k*{KwfW}BhK;mWKJJ7Fu3&DLp2--`*6nGvC_BMy`7VsfR$v+s5 zg56+e8`9M$TS`8_Anq05Z*yAagX>F&bOShL-HsJUO4gV1R{UYsS^GH3@F(r3z`2!x!VWmj z15X3LZD=-s0LiPFl?H+acpbPLqOl~4puh>vTfrZm2z@)~eU>74Yee`J?JEoFDsmM! z_&UnDrHCXrL!yVxuk-xU3BJtRs^Cu#4rh2R$h0mm28o@onlpBjg1x-j;xy8^3my4V~ynLcdQbE~FD z;sWXh;1A4BF6T#a(6HL%o+8(~mT#5mEwy6+T%vjO`W*jS958~m*Dy(q9W!Ca04Q!b z2z^cTH%3r!oKiKY7Kv(8ji)6P8#*R~!tpaM;bCi!M5Ts9B>voz`yF!nYzMnmQbE2C z${BFnV>NhuCCj#~cpBYv;C-V3MKGVK7|=s`tEdC)YIt*{`i6YjTmsp_?Ojg>2K zfia&jy;OaM0Dr!uZ!IM;f3L-B>_{Sie`qf=f>QOWnt-~#8n@amuf=Pu4B%G_@3>Uf zpQBFIIQ8>F^jiFOstmx59#m7$v|U;X`Ya~BpXH&~;wO15-q<=|Wp&KA*56fS?%vNs zy9mdd+s?b_JJ~fb?J#L3uhF_uNqP@(xv|q@_$`WA>;<7O^(uU(Q2%@2H*@e0JL?{* z>eH`gqxYxH&In(%5o>24dpS5QaSul220vOouXLrs`2h=%s@2&@gxu?+S}LE@mBI+n zR>~I^co==W;yA+{$_b8G9lOx;wpehy(*mXTv?T0jjO6qsscN{Rh>w6BiZapu{!oOR z>nyL-w~7-Jv;g=9tTtWC&O&k4)>N*m?;E_TVSW!(EwbAqGHv}m)Du}o5Zn&~?Yjoi ze(7x)p=lQg9t&)C+=d>%L((K&EaC$C$0n9FT|)EBuxcIlxa&W@4wDq?+s)+0t9=_T))!#_(fLN3x`(K&7d9^)Yh$m3DgM~HcK(F~X z!49AgE`8Yw%AuvIz9_X_sc)HkLC3;`wq!4OkPkm!1GfwV`(Y4zy{`p&!3|3EpMyB# zuj7H$T_GabT(B7&1igx4H-ovA1jFp00Dbaq0s3>|FOU*Vk@Au6;z86{^bF)Cq_|7) o)jc0pQmyBKd;54U$A8A}Usq%?{#RW(;{X5v07*qoM6N<$f_z|qA^-pY diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_timer_1h.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_timer_1h.png deleted file mode 100644 index 1df4aab4b8189ff795dc524dc9fe17c7382e5513..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1835 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 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/permissions_contacts.png b/TMessagesProj/src/main/res/drawable-xhdpi/permissions_contacts.png deleted file mode 100755 index 1422a9ce93877b2392ad07bcf857a2af0ee93fd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 589 zcmV-T09?KoY^k-aK7JdKINuzrQwm1xe$+>ayJ# zEb}jPQIVuM$7Uw;j(wgBc<1~kXXc!Da#ATrh&iclBY*$`2q1u>D2k#yegS(yl}nm& zFJv@nP+{nCgYV-bwh~Y!=Rf>2Eat?MVD9eUr{XvF?I!Se7N}x5TW-LmX+Yf#XqpDx znr~pbZg2#6B7lHxrYVvkLx~x7k_D(S+ERCnuSo$M(ciXmo|7a1YVC*ryLO@bUmdjbVcld_$zGu~47bvU03de@QdGDn##S<1|_ua;5(0R#}> zKLLE_fOjk~L6Lsaq{&lcf<@Ljd_G$X8XL0}7T&0BXj{NO4j*0`|& z_{NgEk!*XV49i@_4S4_e&9fJxz=!w%cg%+Jm-+%f;{hy&b}Haa9Dq-u9&GsBd%$F< zfT`XC20{fq?>Qj!(=h@FAb$|Mys2ZC{0h`{#|MM(tQRg=P7bi6~yym{5D2k%kYj6Y*KmY** bh!pS(qR@p25mc)100000NkvXXu0mjf&ixFZ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/photo_w.png b/TMessagesProj/src/main/res/drawable-xhdpi/photo_w.png deleted file mode 100755 index 32d60446416b8faedea094c85d38226254b6e261..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 443 zcmV;s0Yv_ZP)wB140PNkN-q*ZeRYGlCU2 z%AHeTr7v*G6Ch2QGARNZ3Qa*KxdKc6MD@p04 zpiS?BjOhJXN{1ZTJm+0t*(9y}0g^V4dKUz@+-XIdhxS;oZc$1pNZ354zsMsgeHM$H z_bzA%R*=%Hpe>z^78bPTV)uerIvWih9e%}dqd8e;{7Lt)t2i@`NK&LoV%>Xt?AF9_ zT~Qv_cP5VO?{tW`=3A=fc)K!}G|3SqM2Hx9TJojc<4fOwV7}{z*TATtyW7X_3n%jT lb)T7jbLdLTA9Bb)&KD+cIR2@f)S>_Y002ovPDHLkV1gK*$U6W4 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/photocheck.png b/TMessagesProj/src/main/res/drawable-xhdpi/photocheck.png deleted file mode 100755 index d905545297e3f41b21fefb262d4591a869f9bb5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1180 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 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/player_new_pause.png b/TMessagesProj/src/main/res/drawable-xhdpi/player_new_pause.png deleted file mode 100644 index cb2a690c1dfa5efcfad233818dcb21bf53171068..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 359 zcmeAS@N?(olHy`uVBq!ia0vp^79h;Q1|(OsS<3+_mUKs7M+SzC{oH>NSs54@P0`)h}7w)i)Np5TtZ`?U8Vb9^W^YxzJ(R=&k zY}fl}$LJfuUh}^#|CcqT{z=o$`$^GTxp(b7eXeO;>5KJy{;l74_Vemp4=zh~E#R1> zzF@zGrNWJQ9EUniuqt`*acom>GEgdNrz1w8=}ALEwGxN2l6Z##QA#Vi zGVJ#*zTUB|%Jtiht%6P2Z;yQJ$ygnm;_nju_qYG=p41o1!xsPjy*)S-YsFGP$3=BC2Pgg&ebxsLQ08!wZS^xk5 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/player_new_play.png b/TMessagesProj/src/main/res/drawable-xhdpi/player_new_play.png deleted file mode 100644 index 46e62c08e6d042c8ef6c9f1987bb4f4609800dbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 771 zcmV+e1N{7nP)KWG#|6o>B;g;>N!#6&p=1kpkyaFviF7FwkZ3IRJsL?MLW zwFcDQ)D~wiCY5jsrb?o9l0py-7EutQO&|nA&hMcU=GNOk6KCC-;Rb%$H#=`<-?wkF zJ9|5&Qnz%kKzLW6)oKl(Ayf{E4xr2EJyPWZ#$*tXfK<^>MHbnXBPUpN+0q_nMHjT`YUC=lSxW!oY0_;kNDm#m&>mVj`_>gwG8S3 z4pWf{{&RFjZ!oc422>mq81fD}jf|&!E)P)!sBc%P++o) z=nZkUZyD4%wy4xmgN(-B0DT5ju*(=XfZR|!^lb=$!t)i?fRsl|Tk-9Guq}A4GKl>^ zs~?!5WKe*NB7` z=x?IYPMH%pDaMo6--i|YS7t2@R0m8T6N_(v!A`cfNz)9flC{il5|UaUGWdcxrvTfO zfK7|bfHJSV2Uyb-O80m1F1kyA57C8xh0{S(ZC)_{N3s61VJet%$eHd7{a;t-DrB1z zp!{?{hmIElrJpnhz<2Z+R(o{E$kqQcnGDomkq88|JyMBifI|r3?y%#pbXXwBCgpa^40kY6x^ z!?PP{K#qi`i(^OyV{$^m4~8RKl>ajyWcQhL?Hd!rk3EJP6>d0X0@W~hy85}Sb4q9e E0PkEQ^#A|> diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/popup_fixed.9.png b/TMessagesProj/src/main/res/drawable-xhdpi/popup_fixed.9.png deleted file mode 100755 index 9b851d817d277a4e8d5d392f6e995d64e86980e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 694 zcmeAS@N?(olHy`uVBq!ia0vp^O+f6#!3-qVnEtB@R$f7R&inr#=1i56Q&QE?)YAU2aE|)ok2(g% zre@2Z1%F^*VC?jCaSW+oe0zhjUDi->UK?l$=;uZuIjs{t^@oTilSK|5Ecs zz5{2Q6syWvA)f6AV!PU`IL@q5k;rpgY~7?7$FerU_6qNh>!pnM^$(fu=9rZB)ln#N zqip_kmpdm9tv|SCTE5#7RckL(HW-%=uOWaO93YBJOo+#5h z$G$brYN5Fz!)lHL#Y~QC6dMv$T$m?Gvl_H?unHnmo|3GQVNs$L<^aq)ptka4BR0XD|e=iHa7EH&Mn=U6;> z`}g_!_urIrAN_c{UViP)g5$Fr!k+G7xE_7zlJbi07xl^$jlOW){V>bwOUc1MN(${y zb{0?H%{@aPiZLeW*9&#iJB5G0XtFfgN;Y(EWj45e{=x6XnV|5qJIUef(=BfPpV@%# V@yiRdg?dj_0vd$@?2>|8N@@D`5 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/popup_fixed_top.9.png b/TMessagesProj/src/main/res/drawable-xhdpi/popup_fixed_top.9.png deleted file mode 100755 index f7ce561aca30ece0f14ddf3abfe785c321988411..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 344 zcmeAS@N?(olHy`uVBq!ia0vp^O+f6#!3HE}zvlB~U|^K@ba4!+V0?S+peM7V%+ZG- zlMvL|E5t9k)AHLufO(t>JP&+%NE~Q-)yJk(9$3v zz~tn>p{>jUV{$MmDzLOnNQtgqv-jG)?CF16i{Gv-n{)2nvP$k==8AQ-se0=!N9Ki# zI!(HL%RQqo_|96T7M1V82e*8Tt(LHAQThGSJyZU0-3ftZ<_9gkAI9A7lQFVdQ&MBb@ E0QPBq`2YX_ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/regbtn2.9.png b/TMessagesProj/src/main/res/drawable-xhdpi/regbtn2.9.png deleted file mode 100644 index 8aea6835fcee546825b17483babe3b65288be0db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 237 zcmVYn>DmS}H1 zo4ApqLcjpoFyMj;`PvJ{febBX$cJVeaY%(SoFF?nBU=k~ke#)0sK8_pno#Ia4KY&d zP%sPy9U2WoqYjBB-_UaThrT=XdtaTy4}0_4f_kq_wb7x{a7>gQgRk=+<=%&rSb+vt nJRlqH=+U4|9=BLxX=ywGaBv?iOAN>;00000NkvXXu0mjfh-6+q diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/regbtn2_pressed.9.png b/TMessagesProj/src/main/res/drawable-xhdpi/regbtn2_pressed.9.png deleted file mode 100644 index 9751557f931b75dd36c0a23675594a87002bcaf3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 237 zcmVYn>DmS}H1 zo4ApqLcjpoFyMj;`PvJ{febBX$cJVeaY%(SoFF?nBU=k~ke#)0sK8_pno#Ia4KY&d zP%sPy9U2WoqYjBB-_UaThrT=XdtaTy4}0_4f_kq_wb7x{a7>gQgRk=+<=%&rSb+vt nJRlqH=+U4|9=BLxX=ywG10B9S?jKLD00000NkvXXu0mjfDVbhq diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/replyvideo.png b/TMessagesProj/src/main/res/drawable-xhdpi/replyvideo.png deleted file mode 100644 index 6f040ec24efc8ca018fa04e6e763987acf26824d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 526 zcmV+p0`dKcP)~H>@!RRjY+W=)o_X z?iB!E-FpWNx`#eJS_BkH{Twjt-o2g)$Y}!Jzo$adZ-|DkE3!ThIYEXzH9F3-2NwOy zG){@GgUD(mTAHR4sH8@zh*6iFicYbM$yfA8iPlHCPRm&YS`DWpsh84enQ;+qQLE|K z!h$rZgBjM?xAzMiaLOLD&VIoHTG0R}+yR#u40GJ`#5u3DiHSwV0(#K^*Bl9857@v^ z1y;o(AyOR+=u6G{`uqcM1}tOP1-7FAde$@(0%$mZ-6$byS<`$7AaDRXvYVg$kQ>&t z76Lc~R-Ch#TBb#7+95s?unrtE&jpXnNuu3Oo@gnat#N52z_7&)FSIGh-sW_rBCzIN z(i4ez>SC7@sWzQd3R{uNbyb>3eGDRE!%1=_uQk63)DK!_mIryYOKCt+UYh=rgMbb- z@?=Q(99yzZpp*u$Bo$GV(&%W&5lHHJAAUcxyGTHb9(}*#`(OOi{|ESAZ?7zo)v$f> Q_y7O^07*qoM6N<$f~_y(#{d8T diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/s_pause.png b/TMessagesProj/src/main/res/drawable-xhdpi/s_pause.png deleted file mode 100644 index dc8b583a66692545d1822d4a240265c80610f7cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 197 zcmeAS@N?(olHy`uVBq!ia0vp^5*Lb=( zhIsJ44Z6tH;J|Tuf!*JEzaG6ixb4974bcL&OBITCS>{>za+K$vkgeqXCS@2|&?fV# z$E7J?S`KH`-80v6zO{%m&C~6WWATgGv)IYu(=&$pP;UpTXtAlTml!!$Xlr#ZVHOGq u|DxRe>%scD5zXal&K%78z`+$Z%2V!Kf3&>HRnnlPaBeA~# z*||W>M6pFkhGJtL0}5(VWC=D?(ZqfL`PD$oN|r@vhT-F01WFo{YzaOSvB>=aigf}p zC(#yRF@zYQTR=tjL|H_poT~kOGq_=NcAg#>X<yLs>ATmseRR$_fOi-LgtWE;zegfrdff%zuB%qNPY5YYxF(%+p1FDqrff#>6!J(Ou zF!9wYA(PPL-vRlFD3M5rgJu9e?pmOv1R?V<@apf-y7_D?q@4`9OI=V$H&; z4u=Kzf#R-MHIOO@H0TnNC4YhJi9pOvsyR5-0}V3;;{8Cp1BfkgDjcj501(s+>c<*4 Qf&c&j07*qoM6N<$f+TaNIRF3v diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/scroll_tip.png b/TMessagesProj/src/main/res/drawable-xhdpi/scroll_tip.png deleted file mode 100755 index 03c7a1196ded6ad4639014b8f96ff1e9321170ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 356 zcmV-q0h|7bP)));)B!cY zvDBTo(iS`-Po9zV?MQJ1O(+DUz(km%K`W*d^`l|2 z624JXc#(Gbtzoeg_DV&gDqBH|Kw3z@r5YVxV<&jdT-fmY|;P~NDg zjjq8#lmm@(lW%eaJ~`6NdY~IVc;@=Icf8^<$-V%_^khcF{%tV;0000cZVAxPav+8QkVOep zwFGFO7!W^%*#M+LK8d8ZCCWfUpCVcE8^{i#wj~-sLth|S@(alJrnV(IKttakS@HwO zcBQr@MnFT~BU$nl$hL=B!U$sk1=WFUDHxwb+5)J)4N1=zAlsUek?|5(3}|>9k_)KC zoCz|V32XxcgA6 h1?{R#JoXNZ6ac-4&~5Yr4tD0;ATbaV6BDErr)BYzK|u%rLo5K zLv!oI+RU&klv|vC9^3p6<7_%qPlgSw{mN+=y zVO_4i7j_+&612+9nEnPQoz_OaNqi>mrLTJz+npsNE(5mijMM$7V0c|EJCiwc1!7RXi$*!(LtoqW zA4wFldU6GxyzIL?0-9+B#xa3$HB@oY;q6;L_b_@YwY{xRsJXbWYTe0o4vwT;8K{bwnuE!N_CM4q~ zf~2`1OCk3b*q0+3tcJo$IHw40O2hoi1L?4Uiz((!Vz~HQ*?blhp^CyouC;t^ z@6-+fxy(o6?>3DkkulK)6zpw461NSvt`WPAzEKqU@~E0#-&n;%CF)vHK^1oq{$!YG zTS-sz#Bb=}IquW0fSi;Tiqr(0sm_3W?xHUIMYFU8|05`O?%hj}L=M&-OmiNblEEY- z@b-0B z%1dXV@_L`qU^akLU-=%w_AR$3Y8)Qud3A?VHT1a;O8v9}Suh=#jREcO=$$lZPXl{Y z^0$CxB~9{cvz2_+^uKTBx#8-fA6`;UBCs)74rE!)drKo0C7<)kSg>y|arx^kcGXop zDXJi2SAfffjE3Pc^fHG=ksP-zBT{@Fzm%bjHE>z6@m3T=Id8;smJ9tQOITK(#GwlgpSIk4+mQ|3sjPY;{!iE-<`@n~-3ed300la= zXpe_h!|UU6TcUsQ$6TCsz0o%51fLe0OMe^c1B&v?FdJ*!$(=Qadup}pzP~chDHW79 z6jx8ukPB}5P#?OQmETO#Ihx3 zPOyTV<`YKMx7dl~#)XR*gvg)`eca9P;1Q*H)Rd0DiI!#2i`UP>==TRzAL$%7m>yLb znw?yu`g%WJSs*aB_-R+EOMSPKBLUxY&-a5FNxi7_D++UKCcyj+_WQ7R{DYk5c5kom2DUx@Rg% z(C7&0m5F=-@EGUZaRen8`+*|3b$@HTF{rRlh_ziXJJca^FGBjKj7(~M9^Esrj5mVc zH#`3jz2$oU$snZ zPCnIXZ*S(s+Vz)VduQFnA*gA_2SP;`GQ?Ho zK9U}gsuzO?j%93mzgeg&!~Zr_*{d{o%P6bIjqM_LwTt3+H~15S%lWmLqogiP#IhVEtci~wJLOiFOGqfhv7O*PI<@&k z^UFf53Bjfha5YGh55pJ}Bg4cT{W6R{-FVbS?<396bdCeeOTwCsTWc`l6(p z_xPc{dPr9tX(aPUez?#*-fq9ptgq_{;X&s=G0~X{WSrDOdP2ZRjMi}gWoC5D1%p0l z65PCPqCQLv&vgSDkn9R8*7^`lNer1?3k}>llj+A|N^Gg^;pg>1$7^c~@Xj7X{hetm zi0FB}2o5#%fGz>p+?mlX+&}kR__r00`H*1qiz_Agtzg03_Af|F;eQL$3G&$W=_||9 z#2s~upqE%DDT!w0*fI~!ZmH_*nU|q*@v*6C2|l0H*miST5rRcm$-xAMv5_jDKiBpe z%VvR@8Tf#)b7Vwc^PS{%OBeF=NJiU=>q*-7ab1r(2{RR-h!DBEdhS-{R94PoIXfdS z*j3(2m&LHj1P4{5uzg*~`QB*PXQ7d5t1lMmaJX_`XM#w!664bDF7)Sxg@jpMo+8<; z1+omksIq3%&W@sju9f7C*t4Ud=%CZp*&4peD7?MHEB9BRSYlw# z)Zso4PonL?dE?~x$+otYV76jx6>IGMVz!Z(%NC-?vt+)?uQIYt^SX>VQ$sZ5%i7nj zA(@Bg!C{Uh&ES6fJSoPc(`C?y+qKL~s`-&{p_=WoJnupnlRGhKO=*Y^BO_c^`yS*+ zZ&0lrqP(Sx-W8gy<BEwH$uu{G5lo&IQ--1M{ zM>fv>!>2!9x4xLSD_3tLr zR%HAdIDq#|^OzgKBefHhI|d96(~};`XNbf7(XXSWE<@j58QKW?oAk}|=}5rarMC9Q zt8|fl;C2lubh=s>(rB7$v*UZNM8r?*M~q+ozWCwc)r;lNr01vAR>uYQ0^dRPoP7=T z*1d4LZeh+@2=%c?b}i5_Sv|z0AH}h|xIFm1pS4ZEeZP#fjVmEyZ+3jbUJnlV%o^V;wf<@~@qS|PaJcOfOI-Ji4bUa;b}n3#D7 zBxbHW@TcZ`>Dc02_$LKk*+(ya8rr|o4OX#D{k`?nw$tHh4TW}-n7+Yy(fTPO;VN?Y zYYV65MmWV6gBVSY#3ULglV9)`xp26r>(zz~RMY@IKp$C}YQ4 zRXWFmtQV~$jLJCsTlsYARt3S?iJliDWCg@F7?vIdLh9!$ z&@}NoXJ?)$+inuDNhbxCh^9C8D#@gF^AE_l{U2F{5_-z+-rr+9GpVS1madpA5q9uK In0Lzm08I5@?*IS* diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/sheet_shadow.9.png b/TMessagesProj/src/main/res/drawable-xhdpi/sheet_shadow.9.png deleted file mode 100644 index 88effafa67ba4ee17d12c75e0485c2b472a99454..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 346 zcmeAS@N?(olHy`uVBq!ia0vp^b|B2b0wiyqNI1{Hz^Lfy;uunK>+Ma$?q&mtV;}cl zoT1=&>Cpluix7dg*A_bOeE)yzn@iGBIq&$KW#84#yF0(|Gv}K0&X`UYrHLN@5`~1W zEPi>c&R$*dC-0hol#C)CGbdilS#Lga9n=UiX=8HlJYIYwpnv(1z=R7+R?I)QcB6%j zsHyJVW81ETRLF?Q+EqKX9V}e3Fg+n9>E4CTiH-Bxl=+;+4vEfU@;}^ZEWYl}k6Ra{ z!}aD^UVNZ=VZD4^<)LC3(Z52LUqUQCsn=8<_|&t_wv-9zWyy0IUN2Q zE3B5i_~Fuid{Wy-X4&GBnq`j_c06d})T7bW&(*MpZxdO>!Vs{PGpO^orX0{N22WQ%mvv4FO#p&{ BJVF2f diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/stickers_trending1.png b/TMessagesProj/src/main/res/drawable-xhdpi/stickers_trending1.png deleted file mode 100644 index a794b224e77636e3dfe9a74e79e26f40fa4cf891..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1146 zcmV-=1cm#FP)ktjqII}b33f}&}}3k8oR7N+w6Z6&SN zrV<3P5J9UbDx!jjN-RWe#6}B^l6c<-h^YDe{o_t}-#FQCXTO+Dkq3X~?d<;@v-9?t z*-@iLWaJ9ebOlN^SqF^E`v`^p%lS54SK;q@`e*T zhQ$a-q!F9|UqOsKEpz~6Iu*2oA2C@QZpUB_U~G&tlGp_QB$ynq>!R;G=mgKfOYjPe z2f7#Lfr;P>7yOVza{7oi_TgR4WERh8w|{B-1kOg+wo`;iA@ot3aRXTT>H(pqtLg z-Bfawlg>%f<}M-ZcN$;aepr778Vuoq(Th}Ho8Yq;OvTI8|D2v_$S;f@RB@(d<1*mN zF31xHZs=SW%glSB6Q=Ku(WUAG^0C+V_mCi3@;TWXBqg1Y>cJ;RuAyzM5~t+(-e&oJ z3DudCUyL477tk46*o3%gefFsr;`vpgO@e;$2Vm<>tEe=&&dJN5H;q)~oK|s1s&H&s zi>g&#SeUBYX1WfCS=oAxAE~uGg>?T|nQb%hXTaXLxsg#2pmaZZ@(1+0pQ4;3nkH#=shz?x9hs0PS|nG11N$ zy-%$eKr%g-45<|-+RMo!_UZIHj{|J>7`t!i*UWKPCE*Rg%7HL5y%z_U5+{1u*&8w4 zFgc6Od|=n)Co&m|gkdLe@)2c9X5)m2&3Lc|L?@r*pnWGN+Qw|moCDH(%fp5-R(jKH8^m4*yGtlOll{S-3J{50UfWIrPdm{SA4rPF!(O@62PaF=* zr$YQ(eK^w~{FzW~9sqgY6MEXM1=@G=MH|ZgXLPRI`;Bm@a`Nv91=eEw5NHBbOAAf| z*aPgNn!`TPETk@^`V&f&ssXJ5&ZlvF6l}5mM(;tt1@u)bXnmnYlHLV^7D4*H3dMay z|8BkpZqWW;VIX=>gsvdn(V}fk?Zpmm$z-_%1l4E9X%M?M{)LTp0JV)dDNC$@IH9Q= zh&y0EN$BVHDzFaB0j^|Ja#~xfob=OAKmR(xMM~v8?TCzAfugU#AE?ev8HHk9d;kCd M07*qoM6N<$g3T!-WdHyG diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/stickers_trending2.png b/TMessagesProj/src/main/res/drawable-xhdpi/stickers_trending2.png deleted file mode 100644 index 5f3440d0619bd38f7057677432590f7327ecdc09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 371 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTCmUKs7M+SzC{oH>NSs54@wLD!M zLo!(3PP67Z7NuKD$hmd4M1LUD^;oY&rVEMCNw+s8Pii)R9Rk%L*GO#Fshx(Ak@ko$O5RQ-9{ zOUCJn{_;DE^HSGwGN^gHYY3CQwM$qbHvD4Mx{rmgX73PYc&Vt*pK^C4t8|9MizJq| zG=}3X)jB2@cpIKiwY6B8DphE3=yp>uKk1{wiLuN4RE=#fno$Ee|G6-*M#GJ~vK|3ue;{ r53RpwU36%AMqj8ZvylP;bW!?_-IjH84}S0lh9ZNftDnm{r-UW|4l9dl diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/stickers_trending3.png b/TMessagesProj/src/main/res/drawable-xhdpi/stickers_trending3.png deleted file mode 100644 index 5e8d13124060f710a1fd3be25ad4728bcd577e10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1304 zcmV+z1?T#SP)Qd<)QC7M;gpdtzl>ZY}|q#(F)V>Y4* zq?<0pO&4}uK`aD{3lR(mDz=CgYH7rRU9=0a(AI@PG)9BPrWK^9dH(+4j`zHIbKjeJ zdCAKn2mZ{NGv{mWotZl`x20u)7M{S2oqE-< zMI`(Z_!xWxZhx{s)bsi#U3( zo{l8V0fO`r5tz~{`BC$^y>Jjovb z{`h{3YzVxa5(NDfU=WN0pMF5FEX7|{U7WRp6Mhuxr$BdA;~I_FF9u%#e;!>&wzh_O zTr-aJge^UyvMbIyP78nQz#ldUygD(nH-Uoz&*>QT4RL9uY2kM%xZuUpaB5HUlxbtQ z1!#;rx)0M;m$OJC{4WB2Ck{uN=W007xc?J4Qb)Gt8ned{M{mLoCoLRlODqO^fu+IO zOS#fBfi)-W#J*UmRUpAoD}!C$u2T2c>;mgtjLo~?DCozqoh-$Dv9b8fTETCN z51VUZcfGdp@;lIDT7ScV zHf7BwZ4e#V{HA4o2RfZ5H^O~coqiB6yL(|Vg zD^r+wRlk_m^;K9aPHOy!t?NUkNZ4xrSXyN>@K+%_VKiCh1KB*Z65O>(`5n+Jb<{(* zlMemPu)(EW`){*qJ+}V+4roj}(l;S(AMPw0TiUPh_r7bt1D8;kG)mUki06i71n9P7 zjfr;F@Y8Hr2eQ|5-YE6qMomX034yc%tsDPr>?_y8m)pXH!?Cr7%*TpgVQ%A1^J zR-U1pvlWS0yS(^^qLX)uI5_P&Iq2GEvn1vQ@W{m02+%<*jWE*vnZ-Fnt zdQfv{q0=GT(cOvuz5hs(bF?AQ)*dY`12nece$1q4e8$ZEj1n3%baZIctozSZ+ z(k+yegnn*s1|NYnK-&jFLr!N}4JZBd(>;@}E6*`h{-#`@g(uMLC-4ltt}vSQGOQH< O000093DM- z^!fAWA3uKl{{8#kzkmP#|37o)%$F};{{H<7WbfLw>+9FAK*r0LFM%SjUcHKqjRlJI z_4NU@gocKG|Nb3lBvAcRFj%x`5m4Fk<;#JBpTJ<-wrxOT-@bjTq@?uc&!5w$PXnc1 zfB{4eko@`cCy)ec1d>3-KoY1DX#R%}A0C3iPB0J^6$Lu-$&)8Q1?}zaKoVk3W@aXk zed^RHh~dw{04SoXtNZTVJ4Z*y_h6u=rUrB)Q2gl8qd;?xA3vUylms-bw6yfzy?eiY z{Q^qy@$oHQy!hI+Yp-9w{`Tz~&>28MG!X1F={-=Wpd`pInBo6_MkZz!RyGd1x{X)g z{ZQ_G@?UE9&$zeo+;fF?@N8$FpO`H7UV&r&0Yu1rG4s$4k)dZEqY&MveI_WOBt203A=B76qA-$R94w_ z=GR1Ey#DlbaSW+od~?mTUesHn;bZu-xI1?{)p;*HepeIy;$>m(Bg>}4g_4Q&A7yXK z#>~%qx?hjE;REZ!w~LfHzVmZ^I68xcgUx4B*WIN*>bHq{{y(pF;3UWNi&-u)`}z!d zbq{hW%6_hLNj-0}Y*EOq$bb&s8?4*^f7m-E@x&J1=m+^rE7x8%^3dGg?93Onr`e() zG*jGMA)>i_qI{QaOmk1x9`_##+^ZbYM8)1TS4&S2e*4|wqVlfF53=7m*oBOrxcQig z*oK^IPkkjQw&cI&{j=+)wfTf}G_orBIm)PYbhR7u&U~z}k+oAvu~wPmqre(lr<8AU zib1ztOZOHEZ1r^PXpi6Fe(6}#m)3xb7bVI?rn1IwF}Z>6 zH}|QZuzl!*#!qpA=iBaD>fE1f$Fb?dIuCKDcT8gUMO1Xu5;Seu3LXgEW7~du#j<-n zFAwDVz1--u+USuCVw@)oB|B#@*;<>}$4{KT?zZIN)vSV7Kf4^(y3{B3GNmUDT(+)qF@TOdT neVx?K-b%NMmCiZG8E4rr+V<>|4X)T22TGHku6{1-oD!M<>dX31 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/switch_to_on2.9.png b/TMessagesProj/src/main/res/drawable-xhdpi/switch_to_on2.9.png deleted file mode 100644 index f55292d7b7c3943a8d30e8e60ce080a9b1305a79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1034 zcmeAS@N?(olHy`uVBq!ia0vp^79h;Q3?%1AoYrArU93DM- z^!fAWA3uKl{{8#kzkmP#|37o)%$F};{{H<7WbfLw>+9FAK*r0LFM%SjUcHKqjRlJI z_4NU@gocKG|Nb3lBvAcRFj%x`5m4Fk<;#JBpTJ<-wrxOT-@bjTq@?uc&!5w$PXnc1 zfB{4eko@`cCy)ec1d>3-KoY1DX#R%}A0C3iPB0J^6$Lu-$&)8Q1?}zaKoVk3W@aXk zed^RHh~dw{04SoXtNZTVJ4Z*y_h6u=rUrB)Q2gl8qd;?xA3vUylms-bw6yfzy?eiY z{Q^qy@$oHQy!hI+Yp-9w{`Tz~&>28MG!X1F={-=Wpd`pInBo6_MkZz!RyGd1x{X)g z{ZQ_G@?UE9&$zeo+;fF?@N8$FpO`H7UV&r&0Yu1rG4s$4k)dZEqY&MveI_WOBt203A=B76qA-$R94w_ z=GR1Ey#DlbaSW+od~?mTUesHn;bZu-xI1?{)p;*HepeIy;$>m(Bg>}4g_4Q&A7yXK z#>~%qx?hjE;REZ!w~LfHzVmZ^I68xcgUx4B*WIN*>bHq{{y(pF;3UWNi&-u)`}z!d zbq{hW%6_hLNj-0}Y*EOq$bb&s8?4*^f7m-E@x&J1=m+^rE7x8%^3dGg?93Onr`e() zG*jGMA)>i_qI{QaOmk1x9`_##+^ZbYM8)1TS4&S2e*4|wqVlfF53=7m*oBOrxcQig z*oK^IPkkjQw&cI&{j=+)wfTf}G_orBIm)PYbhR7u&U~z}k+oAvu~wPmqre(lr<8AU zib1ztOZOHEZ1r^PXpi6Fe(6}#m)3xb7bVI?rn1IwF}Z>6 zH}|QZuzl!*#!qpA=iBaD>fE1f$Fb?dIuCKDcT8gUMO1Xu5;Seu3LXgEW7~du#j<-n zFAwDVz1--u+USuCVw@)oB|B#@*;<>}$4{KT?zZIN)vSV7Kf4^(y3{B3GNmUDT(+)qF@TOdT neVx?K-b%NMmCiZG8E4rr+V<>|4X)T22TGHku6{1-oD!M<>dX31 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/switch_track.9.png b/TMessagesProj/src/main/res/drawable-xhdpi/switch_track.9.png deleted file mode 100644 index 2431e83db9e117086e0d84d75e7cfc08fb7faf18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 437 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 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/video_pause1.png b/TMessagesProj/src/main/res/drawable-xhdpi/video_pause1.png deleted file mode 100644 index b061ccbaf61b19fd5f99d3ce75902562edd315ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 594 zcmeAS@N?(olHy`uVBq!ia0vp^1t8491|*L?_~H$uSkfJR9T^xl_H+M9WMyDr;`DTJ z45?szdneFK*-@l5@o~--)}1y7uVyThI%0k>`mp@2_Vo)p6Rz5Z-d9{-S@lUk!J&bH zk%@(aTt-1*x~n)=Ordd-qds=X>tb+MaoZo!P$v z?|qSc9cL;_urXsDnrga z@v+Wc9$+nb+15JU>hrvpf8Ae~>)CN_*dZE_@Orj?c!J*@HjNEm&o0+CP|sr)x$*1S zWziYJ+ZnlXYCpf^I@5WZfpy!ypCzo%j^s8lMc=R4#Z>&r%%O2@zFlmiWuf$f1J}&w zuRAbj2QSTxo3ru2`Cje$mFJI@*6n}V!@BSPzaRIt&+mEud%{uqbe#{Sj~Aui+gv!e zJ3n&&!%q|DAE*jBcl32Z4F&N5j?VuR55)U3tvKA}bzC2qNEkd_{an^LB{Ts5I*#zF diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/video_play1.png b/TMessagesProj/src/main/res/drawable-xhdpi/video_play1.png deleted file mode 100644 index 02836b77fdefcc1e22d5eb7632f275090acbfc61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1158 zcmeAS@N?(olHy`uVBq!ia0vp^1t8491|*L?_~H$uSkfJR9T^xl_H+M9WCe0Hb#yJMFX341?Kpi=u%nY; zn0Twe61}kLPFj-$ekBXaa{W?HZSUf6`u%T1HJ%3!X z{CMH&RT=^f3@i!^j2sROOcXE|37l|w8PaK|tgOuYYv1cB`d;a3lYa(w7Jjf*7MQR{ z+N(_RireN#XZRCZGJjumoiuCH*{5smua(V}H~v~8CUj+*x^8{(kNVlH^OOpzqb6OR zn7`)4w+XNKHG=QXE8KC>pYyuS#kJ3~O2ntyd9LyQ;&HsNz>bq=!`-hPZMpo5_oKAcAJ+cRGx!j?cB-7`n~-U2Q|)vv zD*=_qYOh!MxWq_#MM>pMv&Lsx%Zj2Z6+3UQIrMarTVvz;)To!!j@&-=X~Ctfsk2zw z)@{prx>IFd;F~uks}u@CrvJ6e31w3$Z1-jpoROW~Y4-NoUE8H<<>5x#1tM;EH?MlT z_i<&a-$S*ND_j!_`7dvIy&|c+xJ4$I+wh5Cw&jU&N9_AQfWhtu=JHL zD^=oxo=v@U0?Se$hfnq`sV7(wq18wZp_%5Y;;Y~qHfCDiG6yWb4=^nb!t^urlpB2 zYu#&=%X3*VFPi0;s>QbdOZGiU#Zu4-d&6%)1e^NZ25eUG-hy7w03dPfAMk-ZwA3z5GgO&^+F` z#uqfE#J64D;+r|u;`iL}k4*rL3J$!h1@`WzMq z?D!MWp3kkljq7p-|wltclPW)z<6@gcGmLR3Da!Z@9Qu8R+)8tYN*{Qa`75eMKUp#65ZcN(nmWScwEtQ0_ wZM7l0N_PI4$P!2%>L>>NUYRE?*LV@SoVx7Q504k+-nKAhvW zXYZ|M(ZKKfqo;cu40&;3Pv{?qnh6~o6Md2mjkqUvDHiJ-wp;V|$UMIA&(UWt>^|r? zC*j(?z)mUSZ+se3*=cLC&wNn)E_+<2_{>KBjk3(g43AIS_%Vq?`;9?z=IujgJZHSW h-@5OcgOKABrkjmVS^jOD6ajPxgQu&X%Q~loCICaMN{j#i diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/voice_volume_muted.png b/TMessagesProj/src/main/res/drawable-xhdpi/voice_volume_muted.png deleted file mode 100644 index 9ddb4322a5c74b736c137682fd43c78219477c14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1009 zcmeAS@N?(olHy`uVBq!ia0vp^4nSEalY z!TNUA?rf1jkz<>^dR&#<99=dB>TC%ze6&~~Cy7NcXhrKZ%_Bi;Y8u6ortUuw@pA>s zK_?C^2@w`hy1>o68T${MhmQPVu`pKljbOId|{o z+S;X4xuyVNg~*EQubm%gR`B;#otpN}WQjjRa(&@3>%`N))+Vq=+&x)X6z#qE^#T5b zHK~FT5scvnm<+zLKUb4D)$6lc-(@npL$uO{Jcc{WcGbQ~sk`?+-PWfTE!Jq7eUQgv zbN5ccmrq&~E^gttlE?U7=h^&@;|Iz<1U;QsdMSKecBWM*OV+n0{jLQ&HYZHZ6#GBP z$IUGL8Moo3E#WLhj~|4)oZ-1_vD(D)(IYMe7lj8xiCsUXE|hgIh@aelO+1>RpJUdJ zAJcOmsi}p_FlKC%k74+EaXJ?tsG(98Fctn$x8 z90lhL!jp}aRPGsyc{cQS{gCv8_RI%Fe14&b+tatdSDU)ic(1Nwky40MmvkF}8 zQgKpa(h%f(%wB7mqUNA-i2K+Kjx)KFYdEH@WN?~r`k?Bej{+yW`Dbz~=syxj+#8wzvg2vkItCQ;B-#;P@BSg;fyTf3)^-_zZYP?%YW-u#@jIdmB$x4{*+u( zUVd)5Ue-bd5kW0a+sjXqKeaEKCG}YLgIU+t53?U|F8{G+p3i4jmMl5O&ov9W>L)$E z;~zcSdmfv6!=F{z$FfAW?m2pP)&_lcDI3-=U%h5zY%-U)&3@&*#LqV4ev1l0vrA8S z4S1g&Was|0!h80Wqu+RXIG&tis!rF;5%l@IPSEJL!=ud%d;6kp@)x|-5shNGetE%p zfx9bDcFS`f*zm;ywTmJ;-81g=j z5B9u%ebpS*Z5+mFwI7tvo~~zFr#8q@#guKme%AcXgp{j1XRa5&;oQK^(@<$}RQJ91u}fa8 dFj%$ZK)s`#MgXtMhConu^K|udS?83{1OOE?qHh2I diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/voice_volume_speaker.png b/TMessagesProj/src/main/res/drawable-xhdpi/voice_volume_speaker.png deleted file mode 100644 index 7ec7f5e652aba7b3bbe1dc3a6f15045b8c8d888c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 849 zcmeAS@N?(olHy`uVBq!ia0vp^4nSF#U34Lj!SYECNTVAn`pZwGW%8W;a5yQq&D8Rt9y7u z!ne&{^H_J_{@%xpChDzMd_SFSteRNP_}@!_Mc(!Pv=3`{t>k3*sW)TFfx?3sLjSFv z?C-W)ekX*b;SX~}Z{y*ny9RaIPp-SnFMg*uxl7@OQ;c~A({iD6fv11-9ht9o#L{q$ zD8r+y)}Cg*!&%omck}+_JY4ZQF^X};I{q1x;uW{?e)@bZGBm(p4MR+Asr`NNozp(b zH|HWDrHZ%}_3kcokt}{D*0FlyqdJeT%&sxFIC^8Hb!&eLJ7}_PWSTI4Z$?}2gBc-H zwiz>Jd}oN<(s_Q~$2mKq6GD%eKR)mDtLMe(@2AC1m^GYtxMkFvcY(XEqtV@I#-AMm zHk?<^Cryey&Hvg+&0syNz6qC&rnPFl?+JDX-M_9I`05z9s*8L&e$Dt3BndVCU3$R& XXkh9Jxnp}1Cmdk;zfeH>hrdd~ z5Bnb?#t#^p13vy&Trndt#IRQ6u(5{X2?mC#oaY=iZC{!N)W_iI>gTe~DWM4fQ<5KG diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/widget_check.png b/TMessagesProj/src/main/res/drawable-xhdpi/widget_check.png deleted file mode 100644 index 3e5ce06e4dccbbe4f1a01de1c3d393850edf5e04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 428 zcmeAS@N?(olHy`uVBq!ia0vp^GC(ZB!3HE>&Y9Z;q!^2X+?^QKos)S9wogB`N=S`+fUO2Wy@G#zrEt92VOrb%u#G>Hhwjd;b6b|ILjNT_5e8 zHBacxis0DZ^Kif58Rr8F?l=i^Z;U*4;KYt2dI#2XrYMF!7MPyO$5{7~w}6CCY75>y-^X8Qd#VCH=T% z%_W{2{`r5ON9X&q&6|t2*Zu!lsy-o~;}QegflY!tcQkPdJ16UU%U+YLW6OHhC~@vX z<3syqhC2paI?OX0w^k*kB-n6lZ|Iu#aLa`DsfLXcCw>&X6C}{=H2>h4LsCl=JfD}Q zW&M|^KhJb)2?x(5)o+b;TQ_L2EvuYzOpJ-aPva`gliqI<4{lR?KW44Xv zq)V^dPOx{}RuYNr^bm;Z=-ldg|LYv{ndwr=8A>x<)1IB%`TX4O;^#g`zGP-+XQxN6 z4f6|4>$&*ZO-1-%=zb~X`7R}wzyJMo=gyt!^%p(Xw-)W3^K<9+?HrSKubTCuwa`q^ z(&59?k10ip(@!gYc=#>6L4hN$Ei10+$CT!#B}=om^+H@`)7D17H` zJ;dGK%UtlBec`@iP3^L)B_e&6`|JDq`finxNH6M3e)4DY=1?us|Iu52N&Ha%q4cSh z(?4&gekaq7Isbp1*fK$8!_V74|8yxQ`hWVHmOcA%a&p}^V~*U_js@;HS&oWZKR)@` zZ8KRz)Fxnh@w+{<=dhejt6-J=7+396eCNetxA~VG^rBT5Hj6~+ifP{V@qT0a;DL|T zU!ItY;gcrcnYXq$y36LmxjFnN@?UuK{d%Y^^yJ$cRVSM%N~==?F6G%+o=9yz!ShPO zT%@=3UToLhbM?=P_D0mCF6Z2AZ)x~3uc~U7AG2jx_d&6?=_lX1UzdOLQFT*ZZT(dl zn-0bu$E|noes8#6>~@8sD5HXIpy*NVTDIimd+a$%ZN<(12?7taeijOGP6)m@Pe4Vl<){Z(w! zg4r=k8*d3Ix653S;ytlj)Ul}gO7R;xcUHm1g23puCuS4#GvqGKp9Az#^1{>8LN;H0 zRleeJLGPmWm@QL7r=OG!6_n?8Su;`W`9_C_QYJ1cWdR|-CU(!cctcRub)D?C&GwUG xtlKBrS?HbcnC~N=vZQ|>_n~=J|Mu5M*D>ph%=VA)ll%xu=bo;9F6*2UngE#>c;Ns5 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/widget_halfcheck.png b/TMessagesProj/src/main/res/drawable-xhdpi/widget_halfcheck.png deleted file mode 100644 index cf4b251cad106fe3e1a33348c34efe7c370f68af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 572 zcmeAS@N?(olHy`uVBq!ia0vp^GC(ZB!3HE>&Y9Z;q!^2X+?^QKos)S9?yazUdL;DpOLKv-XHYQ*VpP)NPBJTI(IPxuv=Pw@8?Du4r8l z9>L+oVOG{Om5VJ}ap&$r_3whhK0Za$-R30i&--5cF7}3G!+yCN`OO=hD*AYA6k56# zCAhs)H<%Z^SnVJyV=w194Z%HM&nh0~F*x6;5nWNRD)QN3otIrYN zdmzI9p__TH?Zu+!!RzvCqrb*%&1i*K0m7S)8aBqA?)qQzqso4x tOqF@R{D9;76JZuil6WO`Mr1M$$hLpj`Mr{Ysk>6 zl{asEk-n3KzxMw98KULl7hdjodF-0Fl2ubj;mw7&A1k~q`~4zqefh(d*L7>cR@X0+ zJtEkC>{8Hl&+nF%^A*FZHP^KyMrg9J7uIasz4f!Dr^dfudw(y<*#6eIL1LY5^?He- zd>NNX%m11%G+ln=&+%Dlxou>(&vNtki*~boXwtS^^7fVWxh9qLzXqC*K1-jz$83CU z+d1uk#~G>{tR}_G{jTWFAhcPWX{)XJefOZts_X^X?@X>Q^3PxVqDU}_O{QcnbH@Y8 z{&#m27GB@n!o%pmU1XKlZtd;CXW%_w^$3@NHs_%alir*?nBJ~vkzXxoJo}@un1Wr9 zr&U9!b&J^Xy&v7`B$xz(FE7Y$y}@SxGV0_u*@9bCdDVwOHoJ)!{3}pmQ{2U0k(dC&*i# Lu6{1-oD!M<$n0%< diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/widget_pin.png b/TMessagesProj/src/main/res/drawable-xhdpi/widget_pin.png deleted file mode 100644 index 82a1cefb4b97a3b5c7c357f3a12b4fe6283d7564..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1974 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 IM6N<$f&~kuqyPW_ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/widget_verified.png b/TMessagesProj/src/main/res/drawable-xhdpi/widget_verified.png deleted file mode 100644 index 501811a2809ff50a80bd715f9d6c9e5a32db781e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1007 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR918lVFJ1ONa40RR918UO$Q08GiY3IG5DSxH1eR7ef2R!vA$Q4~JszUR!C zNsT#P8PCKp-;R!XfRFbMo9gNi_iTC|WPqK#`K2ns2vw&8#aBP^mn5GAs4Hc3WA zh~;njUyjZ=r*ogZ$9U&G9jgn&z4trcIp4c~=L~{FJJ3F!9$t(#Qw;Vo<&CC6OHXx9 zpGhwZOlK_M{23ysL7*Ab^lQN?U$1FbdsG2)UeY@9fPl`KbE8N6f<%LW=w(|W5V$Nm z;+Ss}mN9;z>F7?*>g2=b)4&R{jw#5Ge;;1O_ z=kXa)>A%GDXb6=%Jg_xQa|lCzF))^=BVZS=sKkM_D!efTp{2qLySKQYZz2MxpZ`eU zbNr#$_N+l6G`gE$O#+A)k@Wt_h^-eP-3#u;h%nL$zj#}g1E`904uzpPG-Jy~&>u;I z@s5nNVncJWHAQ)8b|RO%ryvru3BZs?UmBE_{NH@U$`uiZfFT^Lj<3 z(_&OJVhfptjRdJE`8NpgvY6K+;5Hw4MULA#cuAGpwc1L|a50STmt(O&^JfzhBpW_V zM&aS7huK)&Rg}F|36d)t26uKO)G??K^Co<@sXEY#LDA|NsW0WLg=Nci1bz7J;3Y37?njU zslW;e30v$$Y=tCfR7S+NN*vy39OGX*Z_j(xhR7eNyING-oF}ZvGHBWbb{;n7h~ET? ziz45@EmWI*y!S+QkwC3nmTYNf-V(3oYN*OPVEV7CKiWa=(zen3CL+fVDhqtiJ@|Mk dAy=wGzX1?rGp>J26y^W`002ovPDHLkV1l&rv*!Q+ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/widgets_dark_badgebg.9.png b/TMessagesProj/src/main/res/drawable-xhdpi/widgets_dark_badgebg.9.png deleted file mode 100644 index 254c709880071479dc4a1e71999697ef15487734..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1472 zcmV;x1wZPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91H=qLm1ONa40RR91Hvj+t07-?+R{#J7DoI2^RA>d=nq6odRTO~lnVD>D zx}wn12h-RJ+OAau%^wmdYY{1k_z+(NpNbEn2)-y*AIyUw^~pX6D*n7FG$8&wR1hT( zk+y3~MU2_DLA$1ET2KNusZD0)c+TCu$??N)g zf17qeCoPrBWn=Nm^*b~TcA{k$5yT*%Sknalg9Bpu@YJK1rl+Uv4*5XlGQ9SVly|JH zu00|UA3}kX0OC$WF%V{gjNcFd7ZGqy*xI)PTL-_s^uz2*n0(6e_Tdl_Zr?xgxQ%!i z1RjcliF2+FE4~yud~kXG`>*2UW9r+38@gxwAXs>m07qjCwNgDNH2uZj7fzpQr7^W> z4Q|)H6ZeS?`zQ^)LoFIk+zbFdEeJUBOSN(#aih9mdbpv|*b$mjuTy(1rLoq<0Za|> zg{6fvZ>La_9Bxm!e3Q9+?L(SVPo^-Csi+3x-JRPWc>e6!_cjtJP6ju;Z}K)2>z~mu z97~|Iqaw5d&lZLDM73J^E5=YfTm$Shf$fS>wt3Y67eF^2ygYyM?+Bw9Id6CfRTkQFL#5GIy195L2cz!vetm9u z-}p0OGJ)GKevjdXb&eW^!iOo`>~dOQ*7br`s{L5`)nhwk&e01x4`2*KqpM)8%lEE_ zO$cAl@s>)M_BTGs-Y!5x7bCTw&+uqdm%Hb96U=)>Rhy$bm^QrW_1870cz55SO|aK) z_Rok958pj@pjojCj*l(Pm3jMZqj34}!0|zo&trK5a{G%@BO{Lusxk+TPtffgG?l`x z-cb~<{JZQ7O$Uxc16_42E92(>91a|9XC|}K-%ULfUUN7k9B)85nA1(CGP4a(Qo1A@ zhu?BP-xLwz_EKqlJ3mS|jw`CVez;#ZG|9toXbbD+et=R87J}rFJtu6~sw(>8ZkdvY z;ebQjeF4>g0KLvrpK}zu?LSkEy~u-$6r%!-3<(U*6{(`M*-wy~E#g zauNb1{_=bQ9A7+f;)X(SdQKKlMpISf@~#^$|6Op6RISskxdH_Ef)XQ@W}jVfTw#Fr zQnNrleuHHg`paHleQ>pEj|w>7{OZg?sWD#2Sdg zYeBvR!f|q)bI?HzdaX$F#!4Qt%Za++tK|F%$hHOhxbIR0vYlj}79(tZOHWwZS{fOEGP#iwZDi~LY75{|v# zuLd}|P8(8Z&(^+oZD^qP*{%Av1M~B<*W$EL?_kz?N1 zICTM7G#%d8aLZj$t74ei#KSU3!S4N|_sfhXCH{iy+bW~E#apVNokv2w>4#;IV$NvR z6Mr~GeOU~WNm54t=@nX;j||WLT?{Jl4 z9vm9r6Eq(*o6lo@`BWv@!UdV;qy)$AWr&+1!5lD^aYYKhsVG%Yy9~-4xDGE28MvBW a1^fqBIIgVX&v`Ha0000vc3#;m;G>%U zx@Cdt#HxQ)O^uNo)-AcVzAM4W!Fjq6lO4muSI1Uenh$0P~E u7{3Q;JC@9tQR=8Ree*j*Tb1YfoO>7xcV*eV^>}Cr3S3WDKbLh*2~7aP+O8r1 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/widgets_light_plus.png b/TMessagesProj/src/main/res/drawable-xhdpi/widgets_light_plus.png deleted file mode 100644 index 6c968bb71392aedccfc93a0aab5fa04f56dfde0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 478 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(3XIanF?vmXY!N(R>V$2}7KB*#8M8)mW?EOX zE>3D(J!zu<)xLZ8wyqXBYQLhswAR_|sJV!6sH0p$#8e*DIY~VXi?vQzCxs|{sh#c< z%usWxbL+te=RPysZQOZ7PT`${`seT;8_Xo`9NlZ((HQyPBj%H#S?(*J^7Qw|CJ2dZ z{p4TgpH%Ix<7rUZ!}v@qhig{TPOc}%Zp)gm28%36U&s0U>(4`$nzd7{JGfY;a_DnN x+r4|fCD2sa_gJXFBgW+)?=P5g^iiExqqtvLiQUG*?y}vd$@?2>_9Ztw#U= diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/add.png b/TMessagesProj/src/main/res/drawable-xxhdpi/add.png deleted file mode 100755 index e46e85e748aacbdd40f569791c7dd1376899aa66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^S|H5G3?%>aMoR!Gwg8_H*Z*J;TJtprD8g70sMyB&Te20oo#0666=m zVBf*R-t6h|{r{ouze9d-eEBJ~h2`*(T|1ATzP@PH61xvJ3=E8no-U3d6^w5$n3icf z@U&fQ_dLdD{H}f`W2l>K_`Ll)w#!~9|H2J45(*k(>;C`z{aWGwzxii0ZEU5x_p^)Y z9shZB$)Ss8>qPoAdqZykX}?UHy)sL)V>H(s^K8w1?3HNhr?uwTz5=($SHDWcKF)f$ zYWD5NruTa9_SQa(xFcWKdm6-YzRQ)7!!0cJ`%ufVeFh6R>icB8;Wn1qeQ3(DWd_SO zYW8IIXy!;cbIm?>eEEb!%M90TkUGr0+HemFwR?lq{NuBxYw={)$ZFqPWw2u-*JA0_ j2D^}``}W(o7-9a=*YHq`>aLvj6eQs3>gTe~DWM4fy?62# diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/btnshadow.9.png b/TMessagesProj/src/main/res/drawable-xxhdpi/btnshadow.9.png deleted file mode 100644 index 5ea8dd6c8f680377d62b8f52c76b7f0ea81a69ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^RUpj53?!S%qpkxf=>VS)S0D`n#>OJ*)_mHQ|Ns9N z(smZmb`&slDq>1Z1xj(21o;Is{AcAA`md!ge>G`pGf*(k)5S5Qg7NK*gS-w7B5V)0 zn;*X`rNTAgMFZD`2DKR3sk)9$v+cDfPCs*JKijc&mu{a)cS&6xYF}cU^>sJb@^>z_ zDH$a$i!WxFNcFnGDZQ-=>n~NZ@0qn#ZFl&ZsMF=MJTz3+R&3xsf3h?rVq(d9kW)Qf L{an^LB{Ts5H0Mtb diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/calls_accept_video.png b/TMessagesProj/src/main/res/drawable-xxhdpi/calls_accept_video.png deleted file mode 100644 index bb937853682a029303d282107fb65b2985232e23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 896 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/calls_bottomshadow.png b/TMessagesProj/src/main/res/drawable-xxhdpi/calls_bottomshadow.png deleted file mode 100644 index 494c89b84f4c935975c5b63ff9da6e319d8888fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1488 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 SlcRgT3%H*1aH_)urv3+HkDu-U diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/calls_topshadow.png b/TMessagesProj/src/main/res/drawable-xxhdpi/calls_topshadow.png deleted file mode 100644 index 39c6654e789b19dcb1793acb2f20df99a39c52ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3487 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/chats_unarchive.png b/TMessagesProj/src/main/res/drawable-xxhdpi/chats_unarchive.png deleted file mode 100644 index f1533b3c4f8f5d08d5dc67b855983c0a3b836ac4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1192 zcmV;Z1XufsP)`GGeM3uaf=+!-XB{*X z09*_DxkPf=-|zH~m}jeX1p$Dyq1j~+S9gCf(70lfKFCb~P*>3WYJxc)Pcqh&JBp6} zCjg-9Il!5Q$q*Ft<(Q47Oj`j^zlM&LLo|L-!28Y)n%)HK&u{vZ{elfqHF- zS@=xj)3Pjly1Eo!g&tdg%E#q5&L`7Fl4>b>D;mm&R35%F_?}J;REn)ZukrvC##P?K zo+){#6uAd|3_~cy9D#bSWT8@=+~oKY0!$%O=9t`8a!@I1^-YdKAmuyv4-+oL1vL}( zLKL%~HHOiqsMj*YpU2jc$z%o%K2A*QoJ27P*@bzd*(GvoIVkH}8_-96jb_6r@!y+W;2gPBh*n<=~lwW2yyfs)wfNa{6ug!;Lk`ZrNY3P{wAY(F;Q znwa*EOim>RD9Ol42iHVe2n*aaBp@e< zn<7oXad7fok4(?D0qoJdY!Ubp@@w)ln6r-SjU^m;*P?O1!Wh5iJQ0G{AvqcB*ZQ0< z8e>3;y5m;Xci;|{ zAlYD@bmdHXnwr$xX$w=pSOFDBg3j`%9bH9}sFa)3Cv~=G>$a}d>M6fE8ZQCc8M};5 zAUT)50Tp|b4f6@f5%&jx9542QG=C+a1eAahPy$N8C4qk)@B~s%S5N`~0000{dg z(!x19Nzu*;4zrJsSw#)wC{(_okSVMp&P7agu!q%5qCmNi0;cl;r|6I4Y+;&m7k9Fp z!wl3PEMd5E4I^2{If8PIcezWsf?>SF1%h^#)eKkmqlPBJa*8?1W>oSGVf&hUl%1GM z0vkGbTG@tDwqny}N|ZgQ;2^dgq(a$&`)S05zqwcbV;n8Ga*~JTH^$P6OQ(5I{-TP1 zajl8_qzIi15R4TH5(~&+fea9gT?!8KNMnTz5R3$c3I^3&#u6DI zDEs+@x0%am4FpxRVT}wByi;uFDI)4SBK(d;GC)`oY-Ei3hK*Py1B5BVPDaZV)5&0! z3=p;y8z@unDB&=c$pAJqGEKcN$ObOqyaMh0*tt}A#6XJi0(CaDYW;fxI6&KK%J9nQ!A?p!7+ zi3XgJ0bE)niQ_mU1Gp5IL_1a}K-hALh)7|_Vg-c7*z>qZVMm7f3IOxTV9)EK4O=>y ztpQ>-o!GQp9K)U@Gc^FrB#B-7MFTcnq+0z%H5ah$n5e_9^GsGh@F?f8@3dHlZ3)J! zj~Gt^7n0&d>}z4H`hbUM!HuMtfD27j$q-dE;YzD0B7qD4P$>gcatwElO5!WrIKtiP z1tU3vO9v#e6jvIEss}`Az^!eP7)2Uaeq@AhgAp9UwH4~Z9^BbSnQnnH_TkcTu+ z+C!;sKq=qi-X(^r3lW-esg6>0LkV^GAg-%;4Yzhur2kRGPW-S$S22t>-1>+DNuq!c z@k5HJu36`sqk6+a(&VdpO4K`^AxSm0pDC4$Sl i!9wTSkMly*GaO)kZoIa~YWmGTAOTNTKbLh*2~7aBRW5@7 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/device_phone_windows.png b/TMessagesProj/src/main/res/drawable-xxhdpi/device_phone_windows.png deleted file mode 100644 index 557ce5d573ee8df8304e6d7170df226db4a9ad78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 838 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 WWG~^r{AKm~+HrICbgD&#r2h^0iDIw- diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/emoji_tabs_recent.png b/TMessagesProj/src/main/res/drawable-xxhdpi/emoji_tabs_recent.png deleted file mode 100644 index d73fe846e7ca5830f40a72231ec588457ea4e618..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2739 zcmaKuX*d*W8^>o1VX|b;76z3pDQjjDWsaGc>5%1EBF2)eV@tBkkev}(A|%;k)RY=B zLS=6%&E&{7&Wtcw$1a+e_rv>sJ0Jef?|$z4e_z-0;l8ftPWuyWDGZha0{{SFB*MaW zpP>g5IJAFek0-_M0~ls&c@aRQD$MO)EWH0h`k+vNQ~R+10GQ$j;61SHOKx8P0H_=Y z0PPcakSpi;Up2HG^#Az47!sE&4FG@@krw85QNV>#RIMUhx@S^iMinE;A1=-2HBT@h zrwW`MOfgr_5F1Zb@p^o67Gjf|pE)A(F5qra5*hWmD(57@3lp9SNtKVN`llE4Bvnp7 z(}Y01H?zbInq2u|J2SS(Ub^)Oe<3#5ez-2|cg>sD);IOh-s);c1r8FE{2dy)k~!L>x|^$%m@{`P8yRBDf=BCn4M%FJ zcD*prkr(_iyxkB|#HTi;*u5pn3y>@uYbp}dXx`=5-!4r1C5gt*EhN9nooh^e^_I8Z zku2@X6FLnCn<8ou>pC?@EUtyM^Vv^_fnmZMiT-TT3B@FxxxB@Ch>{4c852H@-SG@* zfVfOP=e}T|mzl3h3KlCw=v5|9Q)7k#hknQ?P=F115{D1^Taf1Wo0Mu_3LhsuZfJPU z6n2s#R2>mnvhQ^BjA)O2kST)`P%jZVS&%Pxc{1=}-?gi{Th-yF zQLEf(&|fq$aTzB2qvx|liDBFcrQF-&Fb&M!X?I)<$17`aWz5%eUa!oE)i%l+8mqDE?(B?J67VKX| zpVe(RVo{39*h>D5caoV`qV0l{Hq{ zWw8Hzrq~RASiJir3iR4UjO`r$=-h+NBKf=5my@3$MC)JZVG6qePEG6Yy*EJXCcdm7q1`@OZ_5If(D60Q&x-q+VR1jv7NYaP zuYe|4=>vD-ROXA#X&y5=R-+T)gs&9*^BgMBDy?PVB_`)M>rH=w780KzkE%tb8B4v+S2wz61U1-u*O$>C2y#%)|B3bI6w3F?qq6SL zjiMvHI&m_HY?u3OV`k2$;a9$fw_(0X%gPH$DmYQ1Gh7NO{dksVTYC3GvI8pcutpE= z1AQZb8S0!)ImMqFI*MC=8Fza|z@Z`*Z8kKjxl=9xlgdNI>_a0>5sr^%NEx3S%zmbE9rVOKBwY3KuFKU|p=NE##5;nu z!&tw16UQs)uWUtR{%GWI>y+EWX&Iz9+v2OR6t1i_53!BiAy+(hbVikxaS3 zq-bLf6goP%LT0Pob5k$FR$FR&wc)AUSLMUDPTP?{_%X+czTB58Gnuga`>nKeTgu^K zEwPnCg3xwywA;tpfrIxr*`t*wuiPwF^Etm9u}1IP(M#fjso!i!W7H2xPqdMd2 z04 zQRQpj3Z~`<`wC8p8+AAb+Kzdbx;iDz+SFOa4=vkY+6gk^KyG(stpldKIs?7SNIXt7 zPvKa{jq~~1PGvj?v$~*bA))&>61EWK>aJNL94s!1!W~mR?@QiP9V!gY3Qo){^1?!b zY&ou-ey5to^$E|QIQ7fCDB&^wRd1*V2=lt|>^mK0{vS7OD(7zl06sOkEu(CWVBn$+jasRR><^{{!5Z zb+IY9p)re=5f6A@mz>voOIbwgcID%G_S4QTb8QcY$tOPg9ag?p4-7D8oOPphGr)#F z>`?HKvqU&w&2P`G>jm2--)Y0rI^8XUH3ILpIS?it9Ch_F!w5ltaX{Hz8G%rh_&t}_Ih-7U3Jzy=}@IzCTv8Y4L(!zyLTq`>M_F) z(kbCS&Q`8y#bF1k(xJpV{*Z^@(SC(IPQ+5Rz(kvbakYQ7&W^W5Q^%S}(`MmU(&J}v z!+f!Avi}4ZwXVcZe|Qb#4G*R>F(a2?V1dj^~)_#J9VdX8kmMo(AHr z5lsj-x3`hFB{|REJX4IYd~9VhVEAZ$Cq74%VjB4r)<{ePP}w-ZM~N7PF_VXGE1P~B z!{3970jf97Kt48bWPX84T1(<+IbT5D@RlrcEJKb`Y-EP&6`>f zmrVUEr=JdC;SISmLJ&w diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/files_empty.png b/TMessagesProj/src/main/res/drawable-xxhdpi/files_empty.png deleted file mode 100644 index cca4ff1ef0ced13c1f011a0581fabc5f2012fc31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3273 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 Ib4q9e04y#@IsgCw diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/groups_create.png b/TMessagesProj/src/main/res/drawable-xxhdpi/groups_create.png deleted file mode 100644 index ef9e6a3d51795ba9f8565a3feca884ad801e1649..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1538 zcmV+d2L1VoP)`QZ(9hA)>8KsI4Rz30)XX(PE%MP3gvsiA0St!5Aq!4Ldik5L#Cn7gkN< z25B_7P*aV>vrxg};xU8gB`>#U?wh%H-n@(N{E|ug=FOaM?)UDS zJO5fJilQirq9}@@D2k#eilQirq9{r^Nr#ibdI-RK0B$Q7 zX9>V_06q!SuDZ}DqXz+e8aU=I0G|bp84P3es>qsM0LC-kHxIiP0Bi)XmeWSg`!b{6 zIL9t8=8le-rb*^35p8#9$966&F`e@|dWmQs5gjI?IU-u-pNBcWx2QkYh-mTwi$Pxz zQL9IsR<0v)z$4D)j1NA|G?%|FjGh%Pz}%f}IbyY0?(A8|`iC41PBT(=qq~Jh|3gH5 z1!DGbj5OUf>Yd1Ga)pz5jE?m%91!x%!)>NO%o)oAQqrn$2*B0?nub0ABfgbl8Qm}B z9SIOuiXmwk?gj9&?JS`naY1OB~OgNL|Ny;Vak^Aa0Kk_q?U-lu-6> zBHCL+V=s?H(oB`HkCqzR5+H7i5O-N9x5d)m?s3%FW2x^n^n*v&VPT`t3J8 zwcc=yE8=Q&dyUt%m=)f4T^7yaA>lpg&f6yB9rM(ha*QhyYt%6<xH~O zJhlE5^47Ulj%BnoOnQ{ZqA@$(6^Xe_`niy|3BbnyT0P>la-DmG_r9>yk?!(g4^3Nn+k|E% zj^jv)JmcQ1Wm1=QkG`DCq`j6p!;bA9E;^2mZFCnAEn4E41)@nJdY%`C))3LnM6`+X zCM}Cdh9!>e`ynqEm>D{+e^-niB%*oC1>|L(<4VGVfwd?@t2%AYsBcVrl88EZw%Nh2 zv(~Gf*QYB+hc>ywe1`Z?#+~iMBFA$5MvVlzHm`MQ@Bx~7?#`x11=W~6zW04*S1HVc z=otVPJ?ot;IINuUU23gt&Mp)X&7#(Mi;Fz7dX0x=uAJsN+j5u;Hfc2HHI3$8&nBW> zM6?j-D^=kV$MtzocJo7ToQN*)66R$h`hkevCZcB@c29g#)ICGja~)EltZw0YqL(Kl z{roLi$1}cZ?w-sV$G1hU$L9de|Jmre(})8!O^X^G2{k$rH$>FhQuV;u$~!D;0>%D| zcX7^CJ;c6qsP{U6eID&NmqX(}9ET_pu60K(yWsWaC)TbtQ@mWD9WEMPMyIFg3l4R5 z@EEw!oFk$EOB>C)#u$&;i;$(^WpwqV#$_^cumlFDIcRC?twi)qJvC6LKNd2ZqYs7- z8i*6ZhHk?Bw3*i56hLN$h8ahPn$Ei1$ybQz10veZYsVoD&{Wbbyl!n`A7L%uJG*Wg z*9dsAJ2QkoBBHwkf2di>XnmN`o}Do@LK?k_h<+5rt`gDyhz6(Aer`h=)7I6oG(s9Z zYWY+fX>zp@5;ccqp)^7o{i`4{Q38`IX+mhvb8wB|P5>7G zw4}7}7uuc|t45L}r$VfCNLx`8B{CU2J@+}Z9$X`Y(N73@M+3wSjnpRRLyC@AH9~Y9 zR{^X}<#q9YB`6acggwS3%K^x|h#Ei_@% diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_forward.png b/TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_forward.png deleted file mode 100644 index 548732461c2e41f37962d7f31547907f1db9ac35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1086 zcmV-E1i|}>P)PO`HWRmGGMPS;1Vsk~kogq83JDO=95ft-8Fxsw9!Nc5CM{Slpv*XMc8N>yJdfPgcV3U00BoX$a1HW+j)|s zo#N|&GvL;Q=_z)Wgh_|fMh~_5;0QF|D~Q#zfq8PrN^)GF_y*t%dNtt-5OBtjP@WgG z9@D+di*)=PzI%X^)$#XxitQ(9lHtgMtTr40sJ((%J@TB;g~p*IMk}l4px?s%te|?5 zClyYM2^@jxX9YcH{5+WyAmn!X8cD8q=mYwQJ|lTMv=_;H$0GSeq5^dwdFC>WW579T zI$3KTr`KX+5?`2f6*Z!2G(yYJF^D<3A3Zblzc}JZWwfdLxzR=+*}EBg8Qnlnbng~E z^6L(5!uz=H;6UT}y?DKkEMI84gjOK!(^jV_@|mn4x!Xn)6j+7aqK^Y-(6mBTLvBBS zv%hZ zyBTD__#qmKb~fbCjmQE&FF*r~sf(QAcb&@&Nk9 zu}!fpJgUN60Lk5RT~sy1+D8FM{vBa;tc#AaxEw$|yj~flf9$;+fWEW6JoW`gT_8|S zqE56lYH#aj30MM_fF)oFSOS)SC143y0+xU!P#gk(0G~%}DxtACuK)l507*qoM6N<$ Eg2o}`(f|Me diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_call_end_white_36dp.png b/TMessagesProj/src/main/res/drawable-xxhdpi/ic_call_end_white_36dp.png deleted file mode 100644 index 3912f6d5cde61e4c5eba7fdfd8f0ae903343bff6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1661 zcmb_dYdq5n82&GkX090{YnV7nnajwnG!si4L~e<>w9%Mb6AmH`xs{YOG1ifjJH;s! zky~3KG?zvpOV)DFB!@5O{Lc4&zxR2c=Y8Mj^Yf|lFK`BsYSZCxSoY8+WV~54bzgqfHb%v^ClG3u% zszt7%ZioejluWFBQp$bh?)EUvlu}8|9mhlWeb{23lLua8lj@kP9DTH**U)%)UigzI z;pA|>*$i`RWwT{m&m{bl(ahQgpLs9Or2erc)?E0P6&*`&9yD57UUm~l_F6~a`$rZO zB9!1ZBa=KHuUV@hLY9Mq=;&1*-{Tko{ld&Izj!Cr%HB|*V;Q3}D3CR%l~b$$AW!eM z23zQ5Q*?RWvdB5&4{&T|eX%y`8!8B|8rg>8>Jm+p_L-j_IO3GU^;K=`BXETVZmkBO z<=ar*cK(tKtG;_gslcn%$PhF4Gz0H~4LG`3fr^uN7@j0bJl$!zmsW#m$7NHB&_vI2 z{Az{%gj)x_-GIg^cDR*2>9~O$t=ERozzkUY4|{fL0@+UQ3(msrE>)x#4*=6C+P& z<6ZLjj2TpLR#q#`0K#A@>-9jyq$$WoAs%+T*pqAW2q8K{YoGnus>CYq>k59RQIwh* zd}^e`==y^*`970@k8+F(QnT%IpWL{`&Ihd=39Zf*WCGGlRHi1al+4Ph|IO zHRDaCJK2(gAT}thMC`}1cae6x+u6<+l-f@rxxfPa_S;PMSmJy#W4+IYr~#Jt%3cyo zSn767bDO20YDQ$qbJ%-As49sFRdZJJ)Yce<5$E;{C_xn%o^MXTD>s;{#xhKf&c2~-Qs zKcG!sR`qAm4;4EyBdgyT=vT~g;tXYnP?cP}(}7jvVW;cNUXEl`R|(QAAL8e}>6^q| z>nJG^udA)5?w_U}?NM@WeEeNevZN7uE9h7o_xl0(nPQb&aHN*}`)cpiL`@Q}jHq{x zX&gWL9KvXGG-lsiW{2jyeNC>}RT19gYITP;gp%X5-i#RoUwB2W!5@g%t{j7fuC1r| zqK%zMZKMJUs8)nbZN%k@`@WQMT5I^ShjB>oxfeEtzms9I&n!SpZvT~#Z$7vA2P?W~ z5DI5#G0CHInWZ#Wheg3SPpWi7#r|Ajz~)k3`RlXO9tR0*=tcE!?_&%3NuY%d8D+vy z&Wia+obzw-gnM02376w2rvsmpp=Ok6)7EUOucBXGhw2uF;Np*T&eut7sK6Hm-m5L8 z@6=}@>(uFe9@0j08cXuXtl{1epsuXlS)4ca!_M=tWj9LQcf$C6PYN%vgQFDMbUrz{ zKsYKtgEMCs`fT6?nrmbMEr7DBL~V{b6>ikWu3n0Flba8s%{L&>sINUc$GKZ zqO-c2XeDfSOs@lG7#wJm9K}6F@6K1_{}@Q{Anm`Hj#cr><*ICo=T-OWBn7N@c{~F# z^>4^=v9@W~`E`zzIwj$_x`NhL&N`rj_*sN`B-Ozl`RH{EsUL;-Sad z*iCvl-sQ^hVN~r4wGW=e->C{swuqRlSo2+w5{4F8f=u@s%niPqX#KH>cvJv`W8?^Z z!G2W%!&O7qk^obxattUEZk(bucl)!(K5az*TGZJx5Cv5kL+C2_6AW$gx#}Gux0f{H#B~$=P($P^+U$b+;4kn5`~&oImg$B4F}MV-fN#Oq z;6sqITQvBQm-%t3;b8Ry=PbAfs_X@ocfdM0-&CCXgudbsSCvW2*`_{vX^)TzcvzwK zHFdYaCtd=?6*$FRX3{kA^4W?<0>HB}g_Q3A&3Sq;aR(n9Op~@rFV0h>IM!oTcIO;X z_kD`Pt6si&J?|7r{0- z49ANF#|=;5(Bo#klcc@B88_sb(p%Q)g$$vB^MBiJ7?TstA=8W7vg;=rdlcYl46JV} zkHN$fzZXuLHO+`kV;Fnz7dRl*mvd~IsCAy_#H2beIB$6(ZNQpL-e^f_cf*PDIabQz zw%wyyDcmQl8AEw%h&79kO=I!PCqbqJRcv}JTs|LSVx5-{xmk@gg7^`Zi?wD<6|EuL z5@Td{D!MePig>4|jR+ErA=C$MYQ%$4pZ0^8o%8j24Cz(|x7!^g@6u}c(3raa z+|8~O4j+TRQ579Yixx!bprHhp~u^kzm2kaFH&kZHfwB!Hgy7|MZMURLtZqq zG+SdUjH^z7lt7P73HC)ZOS3h$!noQ7Xtw%LAe-|OOS4OWPG#Kj?{USsX35G1bV`ww z4YJN1)GG324tps72+nW7PYG`8Zn4HzplKT*E$VsNe-30<6C9RimjLY>j0r83vAlHx8&LR^8=x_b8nxLMh3VKg>Bt>*=K!Dbbi(D(+k$ea7C47WF z>yh%y$aM@rjqaA#?J%|)-4jiSey=Ilg!@j_Xdfiy+H2CjQv?#72~ht@duhN?Z_7T3 zF}AKo^DxUkAwXpdht~V4^`JaE5+LiRy`P1{5Tss~o;`yy<03f2Eq`dtlbtSn%o4~R?3X_TO6o1=#`3BNp*)SWZ!d;ZN;H9o2mnd)ItP!Nt zHejVfJ8zFE(;;qP{ghKYwP*aDl=UB^TmrzusT}){_UC9e>#`F>gA!NZwD$f`H8p9P z3=)Kt6NKn-yEm0p{zu7m?Xu99b>nq?^$C5&VQpuj_?=0M%id_Wy~79+SN_i|HSQ+O zldQ?)yUW|tKjd>YrEf0k5vm!tK1-}kpA@^Ae8|`GTnxU62t<#8vH;o>=xyQ@_qd6s zxopcIluuI9Z3`&X+1Auo9E1I*UbmNY-7CZ3^eB7*t^s|PXbXyVS!m^Rw)&|BJz*bc z*-6`Nv@GHNE`WQNVAQwxt5?=Ldi4JNv?e8W`ZH^40M<}s4YU)Gn(=?Nztv4@ z0;Coj$nh5G7XHoNx=EY)2mrjoSwR<(Dr~{OYpwem*R)7FZwIaBE7EfcHTUfl8KX>v zHzW$_3#;rP$0b1OPk+ZLq_emXpcUSq!CnI?*t=}E_i3(Bu#;>c$2orQ8I5+54dl4t zk>kmH0-iVD(6@j;H`BuH>SCP*g@vMdHj v-!T&5!~yB+=7Dewpg7AxIVcC^przg~#hg2aL(_Xd+s^sckj90H|Kej$z(E_STs_g zNSIl^W3@tYiSwM{Fg?7)-Q<)W3PiccQiZ^8j6JL+r!-I`TDw9J<`*{8plUHgv`&Sf zoIlv8>M%jHZ3;n@0hX(B6p7ZY5JbDc)2b9_i1vX((7+;Y;|V$#V3IJ~$*B??C)zQ^ zU?H10PN}`jkv%>oT2YDcDBlybmz->|lQ=gj5ggi?z;C;3@iK8XC^1?X!mmwsSVx>L zSzs|oF^#iaHdsoWlPbX_&T*6-v@%x#T*EU<;<_l^iRHwnrrha{xy!9Dcxanw*m3EamOP zQ3=AmBLnL&J)q?1p`2bEg`k0EHu5<^Z89*3=UpYogM{nFQ6%o+6s8fH_6D(0IR`CogR2#J8_cP6kz&t+Ve?RdyPjR!- z#+&$!vPxwzkA8y28RQ^6yuoX1iu&b$@#v3n@`Ri?ma&tOeT}bWHOole^}%OQp`wD%t%noNLdgc zQVzt0^bN#=ln3HK`T^2UDgfyw6#?lb6$J%PLYJJDtBB#D1Slwys)`QNI;Bc7f+R(I zuuPePmX z826-j3!Qk(aRZ7qA<2m2)Z>^DM+n+y#gTKoI79eg#BoAMGvWwAo2)p9l>arSXQXkB zQ;L)HiK8rB{DQc}F6QNUtk($z@Cz%aN>UzanV9rm8hugD_F> zf?jAT(W&jCh_n2Yp%rS?c$KDb-Xjy});u;~Bln_SF{3QabBt3%Pg%~rJ-}eFvPZL= zOQ)U1q=zjiD2iS+G8sK714T!69g|s@!ca&i8`uozm_^#|V6-yRj_hZ(!_$Z`nM@{= b$y9M)iO%=~7gz+t00000NkvXXu0mjfzed-Y diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_smiles2_sad.png b/TMessagesProj/src/main/res/drawable-xxhdpi/ic_smiles2_sad.png deleted file mode 100755 index 3ba6732a3d8d5f7e003c802835521659b6678d3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1451 zcmV;c1yuTpP)kXqP9mVz2`#en``gB-*R{T9F*+) zcqkAE1OkCTAP@-LHJC&VdpJ)QS2)faEYRJ8nY_vo5~MmnxkfhTQOha(UEwi}M1-ke z6KA=#I14qB5Mdc_(@y4ML^Tpn#FOl#1Am9uz%=fmm}*Xt^qTH0N_m#Obm4Cwt0~a{ z6mt~QMuF}OCb5<#uHmPL-K-=c4@@Izsctu>vyNu^@N=1MRB1?T$292n;rpzo1%ELb zsZ<77g1JCg`9_$<{Eq+N?=#+DzOq0kW|8uT0+!Oq1^gXjBXg8Bc3|q2A4K^L7xC9j z9aEJfR$$I3A6P^ye)hA5aT+FiF>~b_Rm4emo%eW}LOH?vnDugta=vD;4tB6yPO%De zLT=H-K!0S3@_<5;X2=~DkaU!(${Rk!ydrma3v-;Pa>hb_O-MuFMa*HjLkp%_Ib%AV zBv?a8z8H_`W1?K)OUwl2j0SG#;t!NlOc@38Kr`kgxk4N>RypG&{rZS=nQnd|57c3r z)(LQl8j|*&{cY zL;^ETIbtm58K^;?n2qV?9=X90%nQmH^Xb4`VY+;98dEJdScmzud{D$@&a;K_^2JQ{ z(gXa1AITS+F+1f3`5Eh2%WOjW7TYkJ=whH4ll3hg$DETJglWe-qCpr#1?`v~7Rm#oC}#zK;R~+gty(wHgPA8c zcpKBG6oi<-7Cz@HhpAK=LX`13ZG3~jE*{cN?84N_4IahBlobl8rIqWXYvUvS#8&G0 zJngQj4*|ZB*m%YK4pj(Fh}GDMRa54=$4p6oTMholm$vL2`0-8_Fy*Z7We@POfPGc zH4b5F!3@rD!>5FlHI}oT4hHLDmfT`J=6$80ke~8*&aqlqAi^qk z(@VNIRdS8Fm|l4xLJ6al5ytT%`|%T_LixZM%nId*GU{l?-h_@lvt2{takg;@ zKYbi#9W!*hv6Q4~@<4=@?4k!hy&U8vCh5+gfHus>6l(xVSj|5Cb+eb}DAk?CYb5=P zD(CFL^P7HkRERB9GiHUutp*t<174~qLz6Y*_g#a zQYARTtIX8hf(o{9oUiESzwDug$qEDlfj}S-2n7C5{0|6W*0$256gB_=002ovPDHLk FV1kTXpD+Lb diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/inline_video_pause.png b/TMessagesProj/src/main/res/drawable-xxhdpi/inline_video_pause.png deleted file mode 100644 index 001ec7b25d863c6c50ddaa01b616841d211d0896..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 162 zcmeAS@N?(olHy`uVBq!ia0vp^20(1a!VDyfOW9WfDWL$L5ZC`0VAsP&EqNLF5zmpkx(@Ji)SAAaV`UR)NSD z96`k@5P5?QNUQ>pdzd#1M9!gV7KqwyK*=gltlbqDv)NJV)(X1tM)o%>q%oO>d6l-?}MyvwG+O3-fA{S7z3PgHv z0A;H{B!e}xKzsxft3YJdD)0*HFl77_AHtaNPkaSa#u|NuCF6(e9d?aJiElWC3F~os z&Ul>8q84ozny5wPmGaVhsegdFb+8pTEZu0aS*%5qKpSR^!`%#4jpOy+-$|QE;Mc6v zB+!9H<0D@ewvErMeK@f`bl*a1UG|9aw{G300i&jMn|=6z7ED@K&W24ZXKH=`k_E!i T#6vJ200000NkvXXu0mjfLExvk diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/input_gif.png b/TMessagesProj/src/main/res/drawable-xxhdpi/input_gif.png deleted file mode 100644 index 94b26be2f66ef8115b002845ddeed974b62db4d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1656 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 P8qDD7>gTe~DWM4fFk&&= diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/media_doc_pause.png b/TMessagesProj/src/main/res/drawable-xxhdpi/media_doc_pause.png deleted file mode 100644 index ddc4376b67b05a0670f19e1cdc29fb3c24f14dc1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^azL!e!2%>xL@x&dDKk$O$B>F!$q5U1{@DMKmz7bA zI$N*9;B2gCx_FkmX@8d7Rhw0nA)gmq?}=oVQ(QF7#wqbB55sqri|tDdw&em%VDNPH Kb6Mw<&;$S-wIPiF diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/miniplayer_pause.png b/TMessagesProj/src/main/res/drawable-xxhdpi/miniplayer_pause.png deleted file mode 100755 index 056585093aafec0671e4429eacc47faaac2f615d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^DnP8o!2%=;nGKVHl((mgV@SoVx7Q507z{X^1JA$w z`|?4^3&u-(T^wJi{4B00KBLC&{y_J^TV1}0*-lr*JVjP*YhvLPQt_Ce;269h-@W_p g&Z|4>PL}zICmh%u&Qw=^7HBMkr>mdKI;Vst041$zn8`jFe;}gM}n~gOUhQKA*=R zLJIeH2Jav6)V=rI^PXJppT?*M8~W0rJ+E2UoCaNaOTnD#?9jE3IX9#v0)lOAF%U%y zY9k=HG@>*Df*l<(5YLv?ML=+ETv-GJ`#NJFSkVvzacfd}1O$hAVjx)67z1%{T4e+T zCwgNbp7h5+oJB#$F;L;dC?r6qy3=2F!HlZ(&%dc9eIPFkep?TJf{GT^r2n+L+SAv_ zjjO9a`U4ac z6=r%TT18P|k(n4Z6*JMSD)_`85kqtDJ?D3>&m$Lfa-1TIyrj-kvPuiPxx_n~-BudN z@q||96^bq%6Qy5aI7_r4g`k~>L_47nbn<~{*A#+oszm!lhwR9(N}N%JpiG=Kw#tqv z;!Vkp97zt#juP>{&@L+mNwOe2N+c=DiawG}%8JV*8xGXj~cEf4X`lM8xzjh`AvPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS?=}AOERCodHoK1*URT#%-L>(!$ za#Nu~A0zg$5p)JC3u*`oS|}k&^Z`ahn}S)?!lYTWn8j=qD^aUO3pWu2LbWsLi_BVB zevED+4YKUhVzkle_m_L^+-J^x@7KBaeaGGh{+{pu^PK0s_ndRjIZjVcSGpePdZ0!R z^w!AjrJkCaT0+4Za4T32mVrfJK?H)HKO_7?cnll`hr!3ay}c(0FCW1nv%nD84#q)M z5r??MIcvsx3gef8QSd#eOT;Z5OJ|IuFt#7;1m{3gB3;tiAKFpD#vqKFk8va5c`zHa z5{)tYfyNd=<4Qd45WO@WX}r=nB@9IQ1gSDf$rdoeSal|~R?`JIXDv7ZTFD^_H-pt6 z%YoCnpf*ukafqvx$dzE8gqQF)j0XL6tKUM zs>EvXLMm>PxuU4Km+Uu3x8PofG?0HUi(1 zv@NbvDTG{$Kr4E`JMOhg>!@r6zA>rVViMB%z^;%rLv+l5oaPjpFPnj#-PAXIB9#*w zj{z%fpUTVirl*IFXbE6ttP~$C{oo(Nwzm{ni$?H=8!TJsiHp!@7nAB^e_WnBq|q+m z$~h82))4Sq1-5{1!Flj2_yDZVZD7fY=+IhDeQ{-1Av#)W&0|Tn79vTh4DSlyTThXF zQS=R0_-j8!oi`hP>2O7T&A&FH@~GRIxW1Sxe|W+%4`gjsP-SW#xYpad0GV(v0d^N) zG#51uwTEnf;T^deXHM3@s~E1`hWl&M zcY_y!{Y6!E0z8$AykI4GS4x4Ap-dVY=)}O4Lz#_oR)F-NOHBOfxGC{Fzz?Q8PRgda zaotcMoc49!Zn=Gr)P1JXZj-K(w4MAbCSwozGvazuKaKO8@EPKop09WELPTxfY~PbQ zFhGNsm0(jZ#77PJqe%-cF6QP?=XFyrPU;D})3zy_hHG_9?1br)5tTML6&3vh1eC6Tph50Hj0 zgb%EPbdkUn+t@8@B#x6#p-9uOZzZpF(tezD17TUQ4?)5Q)h)kwS3&#C#a=2jX`ZoGTvN)@<)sTa#|Tl zyiyP(d@$o2gmZ4B6Q6*4jW<3t>AcB84$_@KR~Ea8cE@qf{n+p&SYd4Wk#yN(9J`K6 z_`p6vx-jWV#~kh8oEI?ceUO-jNuL4h8JGShEF+19Ap{8@*zYX6Ftm-!7*MGVj=2(o zx4?Q2(Q)$D;hb+gWqGq~9}_;XPtak*I)H)JiKa?@Np$za{yFeDM^Dp073V~K8!$bv zKKQSg25sN&h^@hv2Z2sItXv@D6<~kdxM}VXj?C?jgc5!YeK{xILDCu+8xxG~1)ET~ z2V89wYYKiCJ6{49Oj((v?c1@)2kBfGw;i|=a?7>leh^9*fOlQxPW%Y*#8yOlFY=YZ zm$~ISjfqCSP5V{TDwfFb81!UJL)mgqIawFwJ^o!7*9{TEr%Rw#a&6kzdF-RFZdbI= zd^30){O%S+ag8@GgJAc$W9PzI?$}2JG_LF5a1-2lMb}jxiaQiCgtz>`VdS7%j-D}W zAvguHL}&KPLOR9eg1g$$bL6C5rWe{QuY7p{4jmN!WVqerJ0#}29SRwT+jn_kXJH)> z)pq>_?wf#4S>16*_XcZurQFV=Bh2*|kwRAM1uFRG0*wdr+)mULN6#>@GFDn2Oqbgg zyz|C8x*$>Qb%tQAAyrZ{OvilbXFUP3HL{r?A=NH%#)_frUIUJu;R|t4_aeE^F>W4C z(%MLujI4~4(Q&VvYyz^)iu#cMx}EEUtT@Eo|ICuZNrO1*wEbB~PlDmB_H~!bhR7Cz zgve$cRo5>l(v#$S-DHs#VwG3iMSCHgk#2%%B3qla356PywEFdlK1=kyV^0i<_B*q_ zbVRzO(AAGq*AfZ9ZD#bI{>$x4W939<+bwh@IvTC$ITB7aywcXM>iauR62IX?E)X{WFl z=vYR}2%SFIQ&6%JGD)iQ{;+^+B97_@+A2vK6DSHU(j}cbCYl+7u^Pm+GnqEqQB+yP zEgkI{ghTuk7_U9Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS@%t=H+RCodHn`@{QRTRhX_5Hv~ zGq112USJd!qC}Y%h~11b0zr`|Dz&7dNFw`?^}!EC&;u&VLO&FmLZT)~WucK28X-{{ zmJ;H%Zuv^nyuNO~|MARq&pI=E=A1L*edL1wnb~XYwbov1_TIB+&zzc?^W@Dytyfxw zu(`Rp6Y3X(E>)QEsh&i*ueP@Kw69XNvP=?0G6vI-$zUQF22`#Cok5;-3geAn57-4h z2dhb%%9&8b2_h-IXu)hS6^sTI+d?->YR1@iU>R6IvW{kHJkb`3=?rFo2GG_?ZB$$H z?#XBJhNID7D`;<|HmjGHO{s?k4yIv!5$GA?~w zS@EFV3)n@VCc8F2=OhKH7=WF)6|0^K(h-&C084H5Zj~;ov$Y6JcQ;FO&eljcLvxeS zUYDTK?!?4r*GZdF1%cvVaM~oO!}OjY3B+f6kz&@0+)q@RZIbghxL}xXb7W=f#-x+~|^xy&$s*y42O+e7z}mq@o_GU9zzkWHv!| z95%QXI@tMc6OWBOoFE3HlBMkfmwtB(9qio3R#(hHC``8p^+#ft-P+ITsAOYP?8-ri z+yvR=sA5H%U0jLY;BBB)>NfB!sCo|u8(G?oiY+P!XA*| zotIs&?>rJT!sGF3k1R=)mtC*lJQCz{sF!+qP+oRx@<`Cno(%Y89<_qVr|Xj?+4aiv zNYDo{9(9$M#K_XH^Rk=9ca8R;Q_bp0*06K_HlHF%SuW^W+>!ju?3Udj%2sG;cKbXb z-X7pM2uSDMZ8UkzLDol`EVCzcjE2nx`T$Fq3$KY|G?Beb=AdZnZI?^jeTBFdc8L@G zU-0M1tr6!wK?kFb?Qb7(HYU1c$+%BDQi|4ZbER`gE^6YHve~_G&qymkjnr zAS^HKMfwgHR#t{kXg6~ZZJh$PgKFp)$}fZ1`6rY>DrS-(?DPZAfq5XE^H59T3)s_Z z@#P>((x%>+IIk_cd{ol7)p&JjFyqzk-MaFUbL@Nz^M;~eC&!7{(6K7Q?obS@0;6IK z?T5bxYzB(s51`NS6xWsDPB0Qgk#70=Ja1`~u)tG-fF&7EO(^%V1}N_V*Q7QQQ4#%t zU>As@%`k5V@!O?Eo7A}sya`T#D0(2m{TUXut4@$CVJB+4bszlkvCcgL^tyv@fF->d zoeo+?fyYcpgw9o9J+RaSV{E8$P(YAXf@J3h>zT5)T;BkF0-tG))L#rN{Q{$!%{N`h zu0SsqEH%Q=QXxz*FR?W#N4{+gYnGPK)9Q3%ggvn|RAzz;OEtqB>f8)0{RU$|xMt-g zY`tb3P=3F}BFs*}e#ckYH+)#fmhL!fK^*BD!6jf8s0Sm!jE#7(q? zn2_u1xWB*-aBE4RhCv;DZulv1Nxl6#Q?(FOgIkO9$t9J_V4$zX+%rJQ$bz2mxyM0& z;7-85`sxQVbOwM!z@<+DdCL*0?g%c;ZV^^-g25}mXRhH2&Ud2I&DRX%qmA9uzWS~V zJ+0kbIz?fC-R{`sDsisQ`>Q6_7dyah7`g|13{F&F^hInWeTrk_Nu40t^9nfPv`e<` za>|7v_K2H8&UGvGUbT>clm%>RC_DyMg71Nzj{?#>crYjwkAin3}Zzvvg%H7tme(J12wPTrS%mgxdPI{5!*Cr_K z^Pqj)C}$3mdvy?(I!A4oEuh9zz-{D9BoD!P{tWEWUbo;mw-;QGDeo2Q zt7i&|;VWXX9YNLh=_ipes>PP2g^7w8RlxCTMJ9;ur^)R;VDAF2o}(n$xggbc z3GLoboAoM3Ln(>Ah^TO_;Wc`<3P{E@6qXt#72gGq<~1kbSDRZ}PzI#Qb`bvl3>dy6 z`Zpn;1o{ER7{sZgE`H=3gx(5dTFeIIwjtn!k0{LtQM3hSE_XNV>aC|9OkJ84ZdtY^ z9BCb9eLj@v1*KN`Q!jo$0xl&!izNo*seq$-t~1UHtM{Pmc~sAcP|$E&1bW6)J_LU) z*Z_6|O|*^RB=FGzhK}}xLxexQ=UN$J*3>*n-PaAT>LR|hzoaLBcQa3a!?>d?;~3J@ zvi`=HB^}3@)?Fn8-)^;P2#hSLSOo)n>Gy-u_$eCHI?3)G!K#?lo%>q<@a(gd9JJ1k zqHSDKnTBe|Q2$QUCcS;Yg;f?sCP;0-%Hjx1=YCH*DIq>N0caOMuYonOYST@%rY%w#yy9=EnKwS4!XN0L+YTkXAA>bqD{5P8c< z(olS?0;6JlX%)Q&=>Mm>gX+zy?n-)msQ%3=M%p})B+YxvL6)THAoksSn@>tq0|{sf z*j{Cp%KN$_sv&KeM{@K^DfjP#+RYr~yI3S@IC8DL$AKY0^G+Q&474*KRP=?}e@f4E UIOP=qrvLx|07*qoM6N<$f~Ame*8l(j literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg2_autodelete.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg2_autodelete.png new file mode 100644 index 0000000000000000000000000000000000000000..66f0d0072257dc7cf223cc13a523326f448c6d73 GIT binary patch literal 1884 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 ash;6Z?%wAXwKlInC6A}8pUXO@geCxR`zjv* literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg2_block2.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg2_block2.png new file mode 100644 index 0000000000000000000000000000000000000000..6362a28a80886e6066db77ecefebd6bd67ab3c37 GIT binary patch literal 2107 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 M07*qoM6N<$f*0mTm;e9( literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg2_devices.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg2_devices.png new file mode 100644 index 0000000000000000000000000000000000000000..a572428894aa8f7983f39a2fc30c4e5ce62c59cc GIT binary patch literal 819 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg2_folder.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg2_folder.png new file mode 100644 index 0000000000000000000000000000000000000000..137c3d3271e01eff62761c07ba9344892974ac3f GIT binary patch literal 1006 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(<^v49!D1}U6i==L6{Ji^n(F{Fa= z?d<(|!j1yRYCF_41id6xRJ5d4RCG-VSWt39sEKXK4842-D;H-*RxeJIl7(l46%-FD zGst=va!94@JHKh^=R513|NF6K>wD=;q4(#`y*YRO@mICD?^QyA0*p}fLalL)=dH&d zE2RHfnFsBWz2Q{r}X0Q zq|=_+5@P#UYj3knbvUzl%ckXMtd_VKxafPdg+5TPmvi#~1rJahmZPQ!!9W)B>s&KzBK_$?$TWbZsz;3o<$u^tS zm#q(+JeA3+r!a?U<0QQW@3+2Oe_1ARUVN#{V!H^L`=>q^Ny+YEVOHx34XWeymHQlV zXikOCM*o_xJOW4N6~7DV4?4?Syp5ML*rz3$yHH-^IB&9FWeio>#JMxsZhtH zvYPgLtM&w0yuEn)MBGycQ(1%ec3*_Q%#U=I_I2tC3%bC-e&|Qqr`=7x?{>e;-r89j zbBJa7bOX-+aeFvx8Se5QkyhINyzyUwIHTj*HEWso)k=QpcIgA7w&q^ODmALH>gTtW)%4as4woD-Z67_M$&IidJq zMyMmx6M=#=s}vZEI4sgaCoovD$ZXcaqOC79U?u<6IX70$=9U*qI@r3WxnY^O+}j7z zE7M~NYxn3+nf}1_yuyN&*N^Wpm$Nr{TblpLC^Rl-UuE=1L%S2ta|5)SAD#I6+A-+t zJ9fiVmd;p}=YL;r6@7BGecHZ6u|10|PRlh`ync0a&D`I6d)6yGIkffPhHtX2`~q+D z7c6|Ay=C6jF13pGO1=-rOm@D@e;%{N^E0<<$s_MBN3*~g;r49pocb(B7z_S2$FpBh zzcBxTufVf|Z=0tc{y)78&qol`;+00MWU AT>t<8 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg2_help.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg2_help.png new file mode 100644 index 0000000000000000000000000000000000000000..9ab9bf092f56bf688dc818ce488f7e13b25aac2f GIT binary patch literal 2221 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg2_permissions.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg2_permissions.png new file mode 100644 index 0000000000000000000000000000000000000000..2d4afa634a283b12982b3e98b654aa198e4b56c0 GIT binary patch literal 1773 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS>S4l)cRCodHn_GxhRTRe^v#7wR z(Y$0egJ@FI13=B+=2zm>9jDg;!dFa7;2!?zph%PUJ6NLjM1R+Hag;A6_ zWHn`zTlkt^>=#QlQ|R1wVu1U>tl7_I7o3 zeZh6^3PD*9hQTo~9Z@-zUq7d!M1@v^5fD>kZ}qGW6cy+OyTHF7g~+b#cTYD^we>-e z?t}CwSlNO6(RQ9OuIg)qQ(zHLza-oOHiKS}B|q|DGkw&dtPC?sPjEJY-+)g}qZ|Zx zgpgMLb~%;ziTrH}u~|!ANInD3dTMY6-4M8@3^A2&+mSsh^1Gvq{iJ0frYYqNU8@MC_`3u&ixtYEP&idx(2w zfOxlc-nPY9`)=8;rMd!F0i8c#gl2O8*UXY)$b_cbRpOeto)7QvG8i7DFK%rQ0<;H z4%K8o1y=q-@o<`|hFgV8^`{y*T?)PgR&;WCUwAdrm4HvR=VCa#0UQQaPNBFfT~)&^ z!>8JlRUEDYM}d_SD55M%!^3cK3ApIB^0l0FXY)9`6&wdvbb?XuDWwx5xby&fl8UPJ zbxE49J20+;z+dFW$hV|#bokYF3l9w%8p`cxg{l>tH1jcx-vcJ(#mGU@%gROs8`lFJ zG`-*<};98UI57HmE z@fBBnYbf1fpmm+To$dqmeWM8ZEkF}KD<7g*2)WXNotLcfNa@mFxpu4^B%c6UDp=Wv z!nUT4wz3{#=Stvvb*<0P^ausg4H_6%aJ0y@@)nB1eM44Yru5i)$~cfu-{jL|^CqkL z(jM0r|i?{t^!d`B9sL1!?g+nla0^l^0p9>u#z@5c0cr`duaj11YGo&t{S&3HACXSm6l+YO=V?7Y zTPE8qOcD&ObIQoq6rT01M?YOwC0;H0yY|o7)}z4i>n{M>)(91CRXkTRxHGD_uTMEo zkjg$lLJL=S&w28Eh6^|9YsSIbw4AXE>gKMAKofx`0!;*(2s9C>F9QDqu=In*(T`rr P00000NkvXXu0mjf=~h4B literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg2_policy.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg2_policy.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe88ace2bad223a646e4ac2e288e43dbd1c9906 GIT binary patch literal 2309 zcmV+g3HtVlP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS@Z%IT!RCodHn`@|5MHI)qK6?46 ze595Zsgc;jUY5Pg5>rY^E3=@;ps@T9SSFcCmRKJ$krc{|$b3-IgVI3Fj3f(6L@Bjy zYNXz*wA6gveBFNQaF2}ZtbNbS-e;djwBUcwp0(HduQhXK&zU_lw^5@qlDfLOrl46F zrBwPKUQ1zUj!z-Qnn z2$dr^ECKg|=EciA#Yj{{#*{(eZEye-O7=oD8}tK>Q>;Qd)Fgc+m=3lBAK8Y{RB#jM z3tj{@z(=-V^aALSPHhUrN`hU$1W*lpM0&v-FaR{sX`pLde{U|I`+$$E#OP7bPV<$d zOd_qp!(avQk;51*20`Np_AS5&unhQ&Ux%>!7z_g^7PWCCAh-j32>t;+vI?WeK!>Es z!qFLw1M7j0?8Im$xHf6*NPozyKp*fLkbpk&3r4Aq4e<8@A!FS}>?eY*k(CX-0h#m` z-*0Odwyy&jXsbeF#kD6^GjJPt56EQGN8ZQiytpwleh@tG5lLpg+2{SFL;(xnOfIJb z85h3-`9!|ZUa`XBcy}K5uem=8w22j<2u|eI4Ll1rfhhT%8!dy=!AZstEgMkCGu$nh zu!IieD`V*OU>1;Gqh)+hdU#)?87PkpA}Ld2>LF7TJuO)tlr9AK0avzCDB7SKlxz%R z>N3==9M?OeXrkU@^qcdBs;a8GD3S`)|EhA19D|}7=uAbR3Dxb2EACSnH=!4qGj87o zs!@cMUfgd~;1omGD5`<dQ$rW| zi0KB}Z8=x4?x>NwIo#wZ8O>$AS1(}gG6*YK6~BR~^=U@U%en{grFI1~z+}+c$X~0h zIh{EXww^od=T6TXbik68X^;yDz8qv5=5nqF=1IuAfpQ)(i1p(ov5w>kSd!Z`P8R}y z3bKtOd0Z!d^2iCseQV%02WhL(%C3QE9GR;v1szpo7pk&VwAQU^EyElgfvq?Bvf3{v z$F^WC(DE&c$oHyjWwGg~9YvSD?|xdn#nM@$zROdzYbw%;V2gm>2U~}3ATQN>Jd*M5 zK~`f}UCkP}J@P2535|0yj0=Da#I9_j(4WTn(^WQbZS^v1cAZN>5}kk+{pykHn6ie1 zWMTdjofzdB&?O{1_OgTP%HAk{s|Q)eB|R)aO(f5`;1*R8=`qrCqz8pa8)dvhm5&vz z2D0WnEslAV=3*vc?^2;yPVlW2K%@k6yh(o_{b>@Ek{rc59QMKa4c8E+MA(6doIU?uEuwWt_Aei8iIM)lgmRAR{xdd3}j-(;Y-WDg9`dDwl>B_uVTrhm@ zvT*%MEFzrn9SNi>YgvJ!H;@w+T0THwtxd&EBjX3BY@@p}Iu;=ePrEE!SH~i%cfwx| zV)-6!T7s>))0r@b9`I`E8H*E^t2Gm4J;4g%#{WjJ+u(Ioa_}jYcRzSXyMeg=4a9qd zag<*oeU>I@!f3S~oRvNsfAoEJlvGII^5>_Ti* z+&@x2BgeQv3b?zgcv2jah#msHZX%?;6Oqpr@J|7*?4XcrDH#Hp z%ji*mK_MEbm>krh9njO383oA!;-`R?iuyk;l9$=LD>CKiUZ@6Y1=(LNJJ-uVywSfP zS^1NY=Y>GOzRdS$@USGnM4)A)higeqNLYS}Wh=;)!u6hP?O>N)q{pJa(VdgEDaTLp zn*_8>O(j>N4Azk-%e*D*O*ob8a!JW+xRLJ$bm?tjK|bFI`Vl&7@jo}~B5BCyDsVvM zDvws5R8t^;9K!xd1(xEgpezP$@{qM~Yh^&MZKu;#1eY19eg#35S*9)c+jmGU$U#;H z%-lkF65Eo*0AMYP%8c0B_f8x$9|3U(0r}z3B2$uruMFhNN7i^`5R}DuEh|w3tv==r zmdAj2V}Oh?TBLE(8!c-2bdz0 z#a>=@UIx}cj5^b3=SLEh+YJ(y#c{p7DHX}eA6&>XiaybQTvfO)FPo!)wd;X8vqSn4 zpVq0>1a+iQMa}{VJ|ZB|3mvAnNhpR%X(< zna_1#EvNxeB5OOc{8IeMUz)8?g)RnBgE+UmWD!<{SqV(DvPrn9puB0z3V{5w`N|p$ zZ%z`o;(V#F%$;QUq!vWUCT@%XC0kA@`Gktf%Py+?Ly8=%lubi9VkgIKHiK%8+FAd2 f!maPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS>)Ja4^RCodHn|p{ARUF56^O>8v znM*4rBBGULT9Rd0P;1!(iXH^^UxYo#rKJ2XD9TED2;v{L20b97podu4!zd^aA6c4N zsj-_$l%|oU<)-cS`7U?Yxxag^b7p7m-JM~6@Zrum^EEhjBnYUE)SBQrxEw~qsW1@Qp$%GLGrUt< zTf2$R*n-~~7`X+e!UPxxgP;Qr!0+%mtcFkU`xl?p69R067HEek(u(q8I6Z2#jFHc$ zVHZS^e^GuB#zgfQSsy3E;88dPaYW-6!N{;6(5Z(f;V{Gz`Bdz~!hH5>KZYA%BP1#N zFm`jffY^5{{E?(XY;Aysaz1Up*EtA-;~Dr7Otc1QAA@!9F>Hi`a0o`hS#U1g06I^U zlcnrf$hqRE6!15gk7uD-?J}bC+e+95J77NyhY@fQ%z>GpbCZ>wbj-n@Y{V0SodUmt zmH+5?8O{vzfKDyUgjYc0T(X|d(V!z$-?B@N(fJbSBpoW~ol($t`BY9*LXDhA0RuYc z>;Nlmbm$5aSr~U7tOl2SP3LCU4*K2)9gUHNaZ{lUtZb*F_va)AFS8bDZ-LlX1Z>;` zM<7h3b64c5m;u-r1B%_sGNbC(#L8^wFxGUE4!!dDdFVRVOvm2O#z(NJebasIh3R2S zlSzA_QI502#un{ofM%v`5ENZzT_@?Hu~8e?oB+QB9Tm3Kr%7O*NI89&!DWT`rUBQdxf^iNi+Uc#=OnF##NvT z&7f~gJ4;QQTgjBdRUmuousur^F}dg-E+{tl;v1p91(R8dP=!DT;1A( zeMJRgrxv|;2Nl?EFzqZg?ea;<0$Ndl3YlxQEhv`-8yVZS3uaqwey#$oHA>fVW_Rfs zwNy5*GEtWl$n5W0qq(AI;(dJM;u6J_caWM^5Uk9yX}OM!FHqWN6mK%^EHv#+@m`X$ zzaDp>|?Aok-t-nG=Y^Rkqz~;0VMQWuJ%H0&9H|sypA7a< z(}%rI24i~2XO~}pqEC-^QzgW#Cp8-&D0=fF-opV5=q(H@ucoRx1WN*s*d%B_6FU!# zXpQ7Mhw z8b`WU(@ENjUYqMvA)x1MP_z#~buTD5yaqJUveIWawFL6G4TiR^SXcJRw}xZAY|sH# z9;jqRY&8zko<@84&t{0N%?p*8~kYFc1o{}Sn zG$-gLz9|B{-w~v`mO@2dzQXPjIdI5B@iVG`1p+O1BrRuOV)GDOu%TrOy^!vbk{6)j`m4xzBEJLd-Ln$XyN~wm5$_lnI|$wcEBZnz z_L8Z0fKe0)crMt*HYK(O>Y~_^E@O0?^B!2y7jb7)d;LP6z;6V*OriwWf_-tIY|Q8m zhtI%@zJR%92c}^M3FwV|*KNrb`a}O%ht4RlOQm#m6<+@$O23fIrJ#q8R(8@+_HR<` z(~a>~JBYRl-jx2z1Tr8YtxE0zD_R+t98m4rq;EX@Xq9Q}4|bPW{Yv7Y>a&|M-Ponx)q5ZGKiE8vcJ4;^C z%~VlrG9+9Ft~G93C`~TCrv%nd>f0ng3*LbJ&@H;+y$#vAQpNqYD2OJ6se7y)H}8CW kUV*#Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS18js5{zh-fDkqF|TGLh!RPO_ZP(+6Zc%zY}+0 z-eup;W_R}O?#o^{&d%4JbI+Tdo!yKR6P;x$(95i?xU%2xYy4B-D3}2Ufou(Y1|Pwz zUa!|D-9Cme=fEAX212GbYI|<%6(Y!!;29`t>U(nRgd(U(unaapS(6X>njD2tm9Ier zvX?*}f(sb|ty1?1Xzh_{Ejj`YgJJf9iYu&7--k75e7VE{A3&OEZMhAO4GTndNtyfwAKl0nh9reIY?=wz94Nj zEvGbZZV^G80(L=GV28@GmJeV>(pc?zxJKcAFLCovKw|3#aSq^^Pmak(A zq)!&UeeyFEUE47%hf>4F7RY_iairY4mCIL=+A%DLQe(yzXt!bW)8wnj+A%DLQe(yz zs1%tdcJ2fU{3@M5oj?Hv0@d9N3J4VKLlfKCDaM*Mb}JISJuAgO^XYg$lob# zw_H^Cy#*2y_cFKy^cH;p6!u5onAXSHI(P{lgGUJVhjcWCICJ1VXp4#K+(^`6pao#R z7PdhsabBoYq(q!Hh>^u{OCsf7GZ;}*^a-$i-cqKI<}2VU*Z_5!p3M8fS#Sd!2fk^2 zy2zUJ)GsV`jX3%fj$L#9QnmUD$_Wp#Wv7A zk3a(*wp*qXDDaDS0(Alf6bMvzGbkWXy!Vm7K%r{(B(t>93#M#^m&w=vFB|?Z#AnO~ zOWA0jQSr40+>=vdD%%rF9(+|3M`eza$nl>h4#k^xZ(9q51ha_{S&44F(#8OVW>DRW zv|Dqs1jy4StADAwx&PbFFKT6Q{{(Cs5$m=>+No3Mde$ z?q*N~f%M0IYi$%ZjdNOT1F@!c8fZY~8?cUadZKM+IV&c`mT5tO*q`XEpN_Nn<~DSG zS<|mA=k+AE^1RvQj>F-Fx5VLF)WZvHKmM}hE0bJDJ^r$74^RdFHtlXuRBz)EyqoYp z=3+=vEzWU|;JE=1X(45*wykJOhd5pAxzj`>dtRswB8hXg;y4uPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS^c1c7*RCodHn|X*GRTjoytL-xG zOVsE{VvNRRM*TyKaT#Y24dTAxf<(mS4@D6bwN;P-7jOn8;}{7T3gIES{_pb20Qazwf8hhAe{*oJ>4og&F#T@#yWknvLE%VgFDx1ueTRbgOh0EI zqp@z0?J_H8P}A}eX4jWn4F;Xn!ECe1*_UaIZDn6Y-*Qzr8G(;AO!sT!hp>HpeT%^1 z2u}q+4(V((wt;_yNg8MJO4(jd(4v&lFiBUSw;TA-^f!Zllu6RH7V7o{jj>UDWqcva zBt1o^CTYGY{SjW9&vi^*3ES-n+S0Oq+xV6&lk^S>nxxlFaSQlcnWPm>zHG4!U_J=x zm@*^4!5E-L+UeRd{ziojBUuIbZh3OqjUE9KY>Z9J}S{8;5y(<;PeTC z?TdoYr`q!uW;CrxzlrdLiktx<3?T?E~E* z^0}sWz3WuP6G!W#)8DG{AN4~tFLWt^)4|3-mA;TZgjp+hL|Y{buM!@a_g8%-)*pa! z2T(^}+TPtMMBuJlSEosvU(A7-U62>b-_ZKyREP%kT`MG=o4l$RbJwwqIDZWTXYFcB zv^dpg;E;5eMAr}G+6+DsDo5H~Ek_Xl*&v67w3qLA=5q%)TN(K7_o}=MeT}m<3c+tB!D}&n`}05gZl}gY(=dc5G&XtE+py8u5EFz{8&;G!x2A1ZCS^3lB*^**wkl!s&wDeGOCxaLu#D$>f1A~hHcY=A~Bk(!U z-Jxy8M6fUL4+e-DI`Z6x|MOX!E|DOKF!0m&#Yu)WD3ObHz%f#NN#)heQ^HCw)0bV0 zW~KOP>R_!?Z%EUUjVn|nfq^iIpsfw;_%fkn2YdsZyVjlBp3wHw`!4ORs?{I|tvNsE znP*q==Ts3%en8BB>op0Ze&Doi6-lM~Aov*I3$g}tSgMZ{J^2GZNs3$icB4}t;GB}4 z^OU4gbO=7(6M#>;bI{Y|PSrIrmhL2{>4mmvuI1YBm4Ck~N`P3}1o}QlpO)Jab}F^x z4v1Y&iItz=v^8bichrD!tHOjnYrzd zy#@P$pXktDBBZYTV+lzr7yqU1;KO_+x2pQFYUQ zK(1fEhO`^Hzb>{}ht}6Cxnp9rEsy8<{N@|Seja-hS?q56&8Wi`{`EOKBpot`5eg56 zN+sGa4s(hCKl_?572D#3qBdJjzDC52OG*jmui7c@3LR}jmU?0(cz+paf~J_C#fl%j zE4T%<4*6m|fP-p3-42}rl}SSyw&f=;Z9^Uol}fZJCE1QCtqhG`i;vFULADk zwRbGICXiLx)Ga+Wa2U1&apM4(qBSVoJ?pLXNN7mAxdxdmXFXo=BPI*(mX*K)yX`)Q zujT)=@Oy{FO4SL;O?D6$n>rWuMxIpH3=@Dw^rLUfZAPC?E7jR#9v>2psCw zuSY9J?;_l2}Ghp8@Dj(m${i(L;0`3`+mp4O@NH@FRs@4Ckce*iJ`& zfc%9dzPjTS&Q1nDgb}Q*P3A>lcd%l+q`e=T0T83!ei!pZTk&K+2|O4Zg~_x{xDU(# zX9C?}sx$o=Y*G}1zMg+s?fCG?Aml^afD6F}MT2c4e}n$Lc(uOkdiWneb`dDbRc9_0 zyHwB7`ALUN?f6yCnFxx$&C}J;)?#Ge=4Dle7>E||W5DyE4E?JpF3x)P>yDzFI+8P> zU4agNFMw2PxogIW-fr3g?M<5?nfc?F}j>k*@b8WW);MWv>>Zb7#-IK^&tOf_q2{jp-p z=c{ZkflP}OxRf3-Cxy6t`SbVW-A&dr_uk$;_w3u$=gs!kpWnWD^ZoCQxpU{R-YZG7h3{9INNvtn+_ie=Jj2PejoBQ7rr*)soap%K zx8&r!_TpX!rarbOnped0LKb|IF1jltx8v+@KmXN>4qYr=aObFkf%JlebVqJe#>{!a zCEW%F^OI(=JiBWr{2=s;NUc*>rGTuHp3c0+)Vc}g*F~A45*Ii8-?BR4@ZZ_~8;dH^ z`%YEaTAaH4v@XWyz{QGRe7QZ@ldqhwWYT-4Fn3G;&z$nPlfPbXTAXm>fB)Iysj;&x z*>=9!ee1eESC!=znQZH*rb##SrFtj)IIGgDox4mrWA=*7YYq2=j^<6evaR`c0{86W z8B<@C=FE5;Ww-eJFEQ)zR%MAP@tbyru=kW@M?PA2)9*2lRobu3YtngNw5nFjKA*Eq zq+LWJp=za#L)FB2=BK4Dc)@l4m)3gDeM{BXOGf&Y?b^{)H=#T1(YuBDZgKZ}cdeSmyWZqa_6m82 z^oiXwdfv%~O7hI!7~JQ#zVcEl3u8^EwfymW9tAab)gJzfy_3X$SazAt?l;=08k^g9 zGiP=4{IwouKHZ`oTPpDLSk zz59Ej{M%nEvmc3X+Zyt1fy(=ghmVc)cQY(e*veLXL+Gt(jiAGo>WiLN#GXA8%kFlW z&3lP?mGe5$hNh=ytTsMPD!7czOB8qUe@JOOMx?2CcuiyjFfwui)|fwW4avf`TdEGFlxQ z4(vJl<@1JppXP8xi7Yn=JZU@Wqm0AUy~#P^aseD!(c`s?l==XLKp|F}Y^R_1T~Yg4-)-d~)*)RtW~ z$uIm<$$C!dmuA&`?d#iTT)w%h`B78zjt6SLvfdrC{qtMv+LoTXU+iLUKQ!@)yWTe0 zTi)#O*CPva-Ylrweb?`P$j#TMZ@88po@LL->UVE~{9^xh^N@;~KGXTU=I{1g_tDu_gDwDdcLS_K6G z2MN|i9Ge^%5=AnHy zzP^^fzK`+B{K#V)&6bo+sG0KfT=$%reczUI?B4L}=F2(1&YXMbR)1y__nBfYjRg%% dNW`CQ2iT7~3l&}Y?Rg3m=bo;9F6*2UngCfa^2PuF diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_addaccount_text.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_addaccount_text.png deleted file mode 100644 index d0580ed86381ac3c0f74f768ad9f9875178d4d0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 823 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(<^v49!D1}U6i==Pq0foY+qi(^Oy z%OrhK!|0dD4z5P5%7De8TMPskKS>U!_;}?Csd!AQ$ocb%kx| zpHDYcDj3%;p8ToV>s@riK5unqX^Xz2DusG!2Flks?wOvKU-0ij_Vu+)OJ-00-pl7+ zv7X1ibE?#Y((ImRXHxp>q8;zQ-|~KudgJ^xGo>!1CO-}5d2ipn_f)KA|3$W6opB2k z|D^V%hfT`AZE|b>}x!BEIT$$YQkv_15-XfUCovG8>gv=7GF9PF0kD} zoqLw+;}=$+?!Uid9URdnxmkL~{fzx?`a6^Onu@RHO?t!86}s&6g@jG}g4J~H7GH3g zx1{LX%riINpV@WvM)Ni0b>9q<)@UqDVu(smeaIYZ++BR$%73=xj3S?hzO#Hw+y5ps zxZZQioBZvxvQ+av$GZn>(!=JTjb1V+QEM;ZCBJ321D(wp5kY>UwNGT#&N0N zh8K^5m^Z}<>a5R@J9%t5+m@s?f4Uz|z2?RHV(rAA(ucFJ6y5K7728=a#e412zdw(9 z6u-axqCBf}t3=Y;g&SlNz8ssi_);N5q43{N9I`?4yXQ{%|4i1p>{A6p;s1m?j_+0< p(-`=t6+79|BHf+$p_fXCAQ^HT>y=lh^U>*?y}vd$@?2>@bFOm6@H diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_ask_question.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_ask_question.png deleted file mode 100644 index 1338187d3f08f45a3c0db6fadbc6bca2703f0914..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2128 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_bell_mute.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_bell_mute.png deleted file mode 100644 index 6afd639704f1d04422fdbb3fd0b9c8c6fcce1f21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2039 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS?VM#NLx-BwB2bG!EduR40!>X# z1Hp38Sb)+4+j&^dbYFo0`++Oc)q+G2^tSk9d7FQWVBR0R2$q0xNfXAVepWtdOxjGkq`xZO}uCCT+ zYV9C(CGg2(l{m&ocQ7C9@)-=!|3aOI!MTj?W!glG zc97Ww)_@PdS0MC_+e6)JqrP)XLqx;9Pc#iEdF9F94E{A5oI%mn>>9iprc&`)VC zI1YSrjDlG{JDKVsqS41EZ&T1YN{IYT;Ao+N0`n>u7OfMKrp;im4ERR9la$>UVk`AJ z5P2N<Y95{wZK%G}sO-`3vQUsPEj;5YfowlXVoNHWXu9KfO;q&VNMT zBe%dr9YbU;@V)XIC_67&Kgl$jWM+U922rUrWcN;s5wMS{aGk?AB`w3 z33e1%5t|LJBl6<|nmu*zee?i zwB|?a2~zAeTEX7$hL2nWWUYBlx+DqGPv{h+2Dgm7KB6BHq$EyE_8a#57`k9p+&8FX z^eX3-Anl-h4A^GW>yB7s_X*PN zMpj~wn#TB?}&K4L6GJ+`pmPr1xP(5NQZb#0v{{yh(4}b#>{v0nPzhhka|jx zj_{ZQK2+Y27YNcLhCUNj?g3IS3DPkh^)JuYNf`?||OO-d| zQG)cmp-)xSW&)&M5~Nc+G5kbm? zdt4`-j1I(B5u_$C4@1v+jNOBNDM2bZ#YK14I?&TT8#M%VV&Te+B)wz&3D-d+|1Rm4 z?G@6xiK0nnRF);lC)gGYMgr^5@YY}>ffe!dP_)NRS~o(pj%yau9l?@Fo$LdI^K*di z=D4B*#34npNj|YV4_JQ?argviN1$0qD@Y50B$ohbB(Y?1fnzEU9L@&%BUthoO6@H* z3+XzbdrQ7)L$PYIPaIAMmi&w|wPWUDFYqx7oU{m_`x3P5a*|e%ZYZ`*{fRRj^IFF_ zx+Im^EmV9>1-=Vax@M#O?ra68UBMP$iRLDm3M8fg{b4Nm9;Nr@S}H_w_`1ae-HKEk z1{lTn1fZK7mTW^gD8NkoDmc2+Vt`I0td0BlP6I9Ae=M+Wcc5-QNE{Yus=8`8xfmRh zH%E?=zoI&;$+m*WHQ<25ub9=H>Wh-~7_o+N9m!ZSJ5nw8Bm^~a-DeR+w;NoVI7y5S z^*CIexU&QdDhNQqutdQdS*e?{+Xfh%jKMXA(Y@$CH}qMn_Tg|o3tR0D5sW-P}z@kv>}GH`=}4#2$0H7V$@%Z^bS74CCA!u*8*1e6-OI(wGVzb zZL(eU8$@zd5u~0#TOyWd3q{+w?OO;!cc9HROOBx&>PE=j^mfZr%R}ZCjECO-YUC&2 zJ9!P}h>gPqzpH4ZIbKw>w>=6pM3uRvA-V#D%3Dbi#c3Cy4gaXV?170ATG-M*pfxtB$p7sNVVir6nD& z2aUidD$}Kg+$4A&lomq*&<)!&!BwDmBXvLN&0ra?eak|Wd`)T*s70U_fp!&v{{Y^` VnjKa2bb9~*002ovPDHLkV1i?Pmtz0` diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_bell_unmute.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_bell_unmute.png deleted file mode 100644 index 122abae39ab45f9c7499ed1d24ad9bc4bcff15cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1774 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS>SV=@dRCodHn_Y+%Wf;eI*RnK? z&^|<0%?t~x6)_0WLNdG1ppZZ$geAI=5U-<)iY~nLwi~)X^u$q4W{neqL z*CWKeKugt<{Z=v@CxOSo4^~i%I&q0}l9e;mVShb^{|)rLp`W)Sq)(;Zeh z=Ri8y@`*;?KTKs zbbayJX81|<7P!*&uR0cIz|A2c+tT>)d?De@9Mk+W^$=-QSof2=qJj9#0oGsU2>NTI zzCO>z4V1$b)iTG*h5k0+-p4dYbJbZKmvscK1+E;p>=2ybu)}p?{3lrG`uZM|pF1!tDm>U{IT3 z>WR%Ea9CwIX6i_AsM*}uzxPCguxyT5n}eS@lwYz@;u7b|1(eg3%@z$#OI=6CT4DJ{mq7_36a9aw@SS`>fpf=tb6j964+GX6hi($8%I(i3VWMP11V8 z9fw2CKUBI-2=w$i1hjJWjud+>V7wZ*a`mji7dapf!u@4up&MHotQYxkRKa7DE)H$wcYNVFK}dt6Jl_|I65k)pO(g`rc; zi_5W<^d`Yvpbb-&Xy0O$`&r3qY+7SzZgA-lb#gZ9w`byM*hhmQY(T6R*Z5vW#69xlt5@Q3xN!TcAx`x4G$RH0gd zYIfylrIKOOt_gRuk;a97k*t*5bFgX#u4pc;--`&go=i`BuDxS)%*T2}$$d6T{cWDg z&luI~S?B}wKN_~NteQn}{Z4@w7=P#J62r_la+-0Nh^2|B@u4`#CWe)HQ^|Y!-3q~_ zJd!T7|4YqJ7pXh5L3CJKN}dDO&$>nU$EwdW%yaz>z zAeQf)U_O`}wROSyIcofpRb%ZT>Vop?61%qpg)cGRQ{<9;2+pEgK=(mX7|Hkh`1TT2b;b|M$-L=tRaWnD~02FW%Bb zw)GhlZ8weDO*)(z4bWE(j{&{&g}YLb%707*qoM6N<$f(i;-IsgCw diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_bluetooth.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_bluetooth.png deleted file mode 100644 index 70f2b163b1cffc7445a1f2c7797c73d95cdeb4bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1614 zcmV-U2C?~xP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS=xJg7oRCodHntjNgQyjAA`1J*(H;bn$-DG8f* z=JoOU=04AT{I1`*?)%nr-{-pT=la#RbI$MOT;JdCxt{Aj=Umr>3ANM}s4Gxcpsqk& zfw}^91?mc9t-#30$Pl;=YzNCEma*-kG8!TrG624;2|FMnbS66V2h2KcVv&{TXz_n6>csTN{0 z!ADK5BcIbhq*Ibn{Af3x1LY#{+NiPE(KGC7FfoqH-iMIx94os~9Nh^yJAuYF9@SKE zhioPCEVj8eHrp67UV+5_XK+%x#1vp96^q|$u*>>K<1gqRn~LwL9wK`F>;#_Zwm+{O zLSArL9R9;#s~6YM{YHCO*&IEyLF6Ey?SLnLqrAKo885Jnm?^|<0J?@JPqmt(XLi`l z1=~E94c&$^GG1Jne{3W6RNxiqlh`kNACmim7eGqx$1vF=>IHayR!5w!x!H@C-uh=B zLuv>-njkFoMljtH_57`m9TPJTyy3;7(;ao9jj6;KVv|7G3U~|l|7KY?ogTY1R@9i-0!T9s zfggb{om5qzc2eFu>yPz+LDkY&N{f)gVz(CL=FevzHdop3Ha2@ z)X_~ucblURs#odE>HDJC1W0NDcqe38(mqgPdk)*+z78U}+2Ey;0+g8^#yHg$e&EI= zsdr(|lvTp9-HonVhhp9Q%aE)N!5(r7;i<0gCYQ?2O(pa&ZY5V$Hi2#vqcVrLst$HN z)E9J{OXcP#>Epl;pdHcjU`geY=oTT8Jss$sdnclW=HS0oCCLjxY7-j@=59eSYRj^! zTYtFh^OD@Pp#m*hZDO^V^+cQBGqWc%mIO#hzgBm7*?Kx%8~tLSV-Zhu2VOju9J9?u zB3kcg1>Cj-vINWrI$%r5jls7sTe6w~^u{wK?w%`7mcUtHOKJl2I^vxa$Mi)X(sRHo zASJhB(7#?mY=SsU2OA5HO~oU0hiqJB$B-Qc?>6}tdZVl3f(3<_80yL3KF`0Q+eEvM z7h5SEB$onxmg32uDA&YZx=k#+lZAmQH?!k&(G?JI~SzRs_(S^S;r7P8|b~1Cwh;y zEJe@@Ncmblu_ptqiL88ReY1^Wb{RvovwO=n6rV`%H6PH%!T^7x+*^uSMv7N+^n zts!wmg5l%nr9qKq5@NEp5b^FHCD75bKT2-2YZJq;5WGI> zQ0(Y<L9o|A6~rc^EFIBzkDDBQQ0<|!*3LDMj7c49bUAdBH8MY6x9D&gp# zMz_B=&%o+Pxa`a*)JWS2ooA1qSI^-uPSTf#DkR#k&>tWC$6ZVEI#o=a7QT$_z;Ra; zn{cB@7tlTrblCPH(AfR>+{V}Ax&n0t>I&2qs4Gxcpsqk&fw8T?Kj?5z+I}B==l}o! M07*qoM6N<$g5t0KasU7T diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_calls_pin.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_calls_pin.png deleted file mode 100644 index 0d8309ae6dabe6d3b034dcc1fe37a949cc1ec5de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1155 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_channel_ny.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_channel_ny.png deleted file mode 100644 index 970aab5b8805931bf724cad14525617ead0dc6ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2027 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 K&t;ucLK6U~eP7%F diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_check_thick.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_check_thick.png deleted file mode 100644 index 1ba5ab03f480296bdd8b7bc4eca0b8c5bed754d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 953 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(<^v49!D1}U6i==L6{T-npbF{Fa= z?M&;85J!==$r&{+ypF7aDvcd3iXJW(l)5^6xn_&piikL(HMKS32InNTUNf_-iAq9A ziOMS$w00~|P}0y^v_Qjg;)CCf>%Uqj7{~2L`?^9ZC|JwKEAdY*hyZfsQg$qSTg2FdY1+uh71mTCCxyTZ>K6U_bz+=*A& z?-*yWpSRXi`LlkR#fpT9V$2D)Rj(V1H+j@G?_o$4t$Nm2JTE3QpJjT|zdrVJrA1Hw z2y}h?`C=3MIp(5RNB-kB;+JEjr5w{Q3SOD`^yih?4!0^ilX9m$PmSwlo6IIB6g~N< z;}uEgTNVC`?7NGftzqN+rg7I^^gB3?)E)V{#ot*htRK4 z2Y2yih-D_*?0Og_b->sDQ|(nv2J_!pljD1zWUlNjR*9-Lm9ldGTk0noN7Oxg~vUl<2`v67UnV*R&KmEqxy5DY=`B~FSYWSkC#tV z(98eaT=`Y%t&Gn)hw{J^6Qqwk%mRXwqBW%Nb|f7!=Lhj$h=dYW7=D^e<2DvwUK@G|u!W e(OAXthqYQew$}fl_b*_sVeoYIb6Mw<&;$U6fr~%@ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_clock.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_clock.png deleted file mode 100755 index 5d11071da7ec97740d5984595cb6bb9f82eb89ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 506 zcmVN_jwCzHqHCy4j#3 zuF1QuIkJIjyro=U=+UN1nKD({^ms|x->8{DHP#8I5l!QzHW?+n)-h`9P+_6X&v@3i z6a-_EE2lS8E4}e!)2+G;}gF3xk?EaZZJS4nHXjicd2T0=4b!1-ew$Kv=15YcEh+ zS(ienwp9lRW2~Jh-M0{_Z8#OdhKP-vr;cb|>&;8$8MIz4 wgBHAUk#Eq7N53IsmW2H9L&%abL;L9W2dN0-BbJZgi2wiq07*qoM6N<$g7YuoC;$Ke diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_data.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_data.png deleted file mode 100644 index dbbd4bba9b0f11e0715a8fd6d0b3e35835d2d46d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1833 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 N22WQ%mvv4FO#tBAEoA@z diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_email.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_email.png deleted file mode 100644 index 7d456218fb5133f909784f52b23d3fe5d6efa5ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1495 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_back.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_back.png deleted file mode 100644 index ff83f9ecd9d04331618ee71a1b0cc93a4b8dee3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 570 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(<^v49!D1}U6i==L6{Y>B6fV@L(# z+gpZSEQTV-KFWS%yLTW;$EIm&)8BdLi}VztJA0>2l{*l$VZ(-7ZZrPMozaPIdH$I7 zj>Ttwo3a@yDnHN8j^v13tHGhrz`%q;99YA$ODxQo=kUsBg{vh*X0Ll)7d0bXxLDxa z%tx+Ox}VviZ*TWm|LwJ&O>!`Fh)(aG&n) z1w3bsvS+f&Jm1;O+^75?WTNE*3no9&nV6ijw#BQ;M0nlH{JXlF9xi`(S9@FQuKl~d zE^MrN8&H?dzJ|5x!hvm}w~8vSKUufQ<0bEA!|JHx8`;a(Mcj5>wxrRh`R{SNOogRy zriG?yivP<=l`?s#iNQDgBKlSD$?MRx5NXyi>4S?8fbuWBHB=XO^V(Glsv_ y5W6;em#T{OmP+HYX9|^G6a7#E5FDNk9trIB@s1b0-}<+M;?2|5&t;ucLK6TNCeNt= diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_bath.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_bath.png deleted file mode 100644 index 1fc7a789af6889e70a8cf13bc8a9819823362e17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1693 zcmV;O24eY%P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS>2T4RhRCodHoLh)hRT#(TXi8<- z#VO3vnt`dbas&|)!Uv<5sEm?|qM)cAgkGwb-lD98B=Dt&h_IldBBR6*Cws9AMPUS8 z%m}S1yQragNl{O~|Fjo;u5;OYpS{jH7xoALS>L*Sx3kvTd#}Cr3=EW1Mxcy98G$ka zH4&&*t5d;4U=#Qa90v7h4~1L7DsW|upnfdC(dA$V$VJC%cQrmo;;U`l~&GpEhfsRu_AUt;V3+nizF}y1ziRL7SPB zj}d^g8`Sr1F;0yF-RW97NM;R~56*Pn!A}8mfYzvOz^65?t)J2`=m_%Vw=Iw1FM3}7 zO@25{A#Emsx4pi)eAm4Rq`db6gwb+xH?VYjT5w!Foz4Q|wln;4S8r3wg9a$p8gwB} z%rK4|gMZiLo3dQK_tC(=8jUvX6sYo)KyuQ=TiP4QM@Sl@yq*;09zWZ9BzUg9dPD z58m9>c8>xph%$l#+ZU;7=(fOj0;K=d|D6}_{ zwr(kPm86qW<)cyTHONlsM!cN2JBgO}>)IZu*a2$0L!lLv0ZNHz>;V01>}kZS$zjvZ z@_wCZ)*d!?fOIGA$nsxOsLQ*f*BwKur~X4pUTNlCfTU0FBwT{EFLYyqlYSh^bg91+ zEb={~YzXM(;E-SE=V=r4GVjap`F!XAo%AdAe0192KpCKvpt?KMhRqnVS5UbM^vZD( zy^$R;4jqL5(d5M*0qc3LTj`b8WU~b5YkFN()3ZMcZY4Xsgy;z6NBbk-peU&A&lT=%&-AeN?%mzWrh4!3|g6&K%ZQ+I^ z1qxUi4<|jmBn(|*jfEe}t0l`6vodwKz|y%k(}nywo=v)<<)T~xVo2)2(Z1t4jbCME zE{$;;4|(cxkN8{xN|b4FvovfoUB>$X+LqV85COV0uhNL^?G2;U+8u*TW`qb(SDpc6 z>dQBOgFp8O$`nQ02*uX`OF!HCZs9R-ku?%t-+N@bt+76|GJ-xqfKHP-nvLT5F4INn z^`0#oxX2VbPU6XHoFyRoV8qhe#;xPmV3@uX(ulEib2LlPdXv=*e-zA#W~ z?;rAYkL;z0YONY&I_vzEXT%or_FY$N!VC7o1|9y?DSb;%7ZjVnJKC373ljbX(vAfQ z-7~=Fi7hVKuk!pJ2Izs}51kbz{Q^Gvy%9R~+_lr#;n>HDxSIR2XO&^WAoKD%!V$i(0lKOvmGh(GPBYO5Jl# zQ*DK%wXIvv6nlgUeWc<@znsqZEChNJqMb->iA)9|No(3J@GIB>-UH8pJAfnYATB7f z201}3r37a>uqVUFR-bK2Sb$FGo(udBX0(8JhA`#t|Ety@_z#Lir|2T> zUp`keoORr{lk^12wH`U@+#4Bw9c{V31r7jxGC9>*)yWh)9t4{D`UeA}owTLYT}Ggc nKpBBD0%Zis2$T`%)d>6tX_p*OY@1DZ00000NkvXXu0mjf8NM8| diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_busy.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_busy.png deleted file mode 100644 index ce81d1660b463265d32af3b626b53a68db91c2d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1396 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_home.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_home.png deleted file mode 100644 index 9ade49edccd8de1b47529f90ac00ff820f7eb31e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1689 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_omg.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_omg.png deleted file mode 100644 index e479479dfbace6e11bd9202e2cd7113e5f4f5fe9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2020 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 R5WfHb002ovPDHLkV1hP9G5P=i diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_study.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_study.png deleted file mode 100644 index 61d149d96973f00b8ce7478df6417efe408f85c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2056 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_vacation.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_emoji_vacation.png deleted file mode 100644 index 29484185426a79b1ad4469640e5389b5b6896021..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2370 zcmV-I3BC4-P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS@tVu*cRCodHn+wd>Qy9nJHz{37 zx-1%67xywGWfc)2v4$mTiZQZmG}eUGG{c&SE=IN3GGZYaxr`!`?kS|pTfMr`MU-2w z&$s=4?Rn4t{C@xc`+xtpxBk!e-FeP)p68tBJpXgf@0|1d{Yy%URE$6|0>uavBT%pr zD9yHK6%`dNX`=;b9-t2CFJOyMT3Y%W>Cr<3qy@MYOaU7~GWr>XaiBXm=7^0Ho$C!g z00%+3v=zhQK%=bY6CJ4q?gXnqCTRne4Fa|D9i_C_Ae=t~=cj;6l5|3A%wkXuwu67c z$pJb9DT$XpK{|kSYKOP95QPM$6pR4-L8|mCilaaSw@=6}1Y^N^;G<0lFLvz;GLNGQ z&da`DAlnlmx8ikVdigqs{8(^5*a2Mn3&9YdUBSq3Q0vW9;L?8x^b~r-6sVI!!7?MW z?07P@eVs$z7)-Rv0k6e>u+OF-WH>j$mM^OL|k3P2S`g2Q+%@+CsMC zF6#*SlO;4X$d>zfbQL6bB;D`R4Q1%}0eT=$iEz#{idZusS*A@x*;h-{v}i&a=kjoo;zt9yw-JLEU+8+C~~`C>&hsP z7w*)V>T3W!9V0?|+@}*K!%$m*AHoVq^$=(dYJ-P>yH+8pM7mqb8hLlKL2DN}tuAu% z+W%-eoM_~m44)FqLG&N$c@X9I0t1bPao{x24aAWSzQf}bs#{i-04?=2rkg@bvA-sP z&|~>La5m6wKznck&}Q-XASEfe6-3=MXq{UO7J``sIB#pv>PiFIv*V?_jiVEF5Y=W+ zYlxmy>5vY&_kq>~r7#F*%1lo*loN>ZCPqhWf2&0PV(^6uszJ|T8~J3j?d6omDZBXY z^EHl6Enpwh!=#6-0eHzNBU>fX2=47`H8D{8w#s2lm&r0)Q& zHF30t!UurXEv+{p4#IB}sK0`=Fo}-p)EttoO1*@_giwieJJ7|ukG^z-I&jAQK;HIp zEsS$eLDAi@s41P%iCe$uRiHc2doKOj4M9lFLdK-?;2&W$d_^4^EqYHT(vzzTn6FHY zBRcaPur!>E-O$;xDE?In4*v-7(;dapH7+or!*oRVG}WOOFs`(hA%DA5;n!h%H7=zi z)11y!B|FB~VJc|pRHA*6Hi`vHhljt%!!nOdBJE@+fE7S%()pkx&?aspn9O=JhctnZ zYXM(QLHLBzy4DN4m7rYc0y;7P=t*PgGcsD7(MMDb};bX zHCM$?>gWwDt*eUt5wA;R>Vf?>Lhx-1wd2(u5moIN>(G8|+`UiiRclq-$fSPG0~9#_ zk<*F1pSc`=@|$H!b#kWIZt`(Y)ciV}>(&W|UP-%eOuOdVk5t;r%M@cB(*9|#<6uEf zv%CZ-2#gz`f?cScA2K&trdTUrNym=kbJKe2t>kS4G0nfddRibamot0K&=^D|XUIV)yWQJbp(>PtWWn_pa^O1I1fP27P5H-a&QWiJDlQoli zISma3K3atwg})N99=Q^A`c zq-m*Jr>RLxdLywjY%xd=kQU@2Q{BWjJzd@JoYIUy5;GdoD6ypZuKiAt2t*^GOD#(y zkA}#k`lK03FtjHLNnc-R|C2yOP*00G$<9mYHAL?gpf5wTuUP|TV7G@flCYD$Ms6#x z3w$cX?RBu}iH;s1O~J1~N0r&wh_61;z-(aYVPCB%bO4)yzB_y#92cRdJ=7N9(hdaO zeKwL&HWt|LkwW{AVG{OQ$n*xqF4m#GQu#O3L8Ge$?O9ItP6 z$)66~#U9aN`W;S(+e(D&$-^3cW;tT}L8$_&jcPKQT&baSGPLlg(@MgxrFzkEKTeRD zHgJbN#v;{=$R!{dtwZ6Y&{z18$qa(>1*DAvUsAP^Y0t2&v{EY2vLf`Gq^RNr1V1LFc&m?Zpz zAg+%IWz^CasFOn91O-Qcjy^)y9FL=Y6m|+t;WhQN1|_3up^Z|MF9Yt**{x%&wF&GV zLrLFZ&H@SlAaM0Fo~O}%KO3k%|#0 oMxYphVg!m2C`OPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS^&PhZ;RCodHn}4iVWgW-40xI|; z5^_mXFM2D*Kt$QfLLm@kjbOxVtv}3NYb@7lfPY-qbiruTny%J#s2gp}tww9Ga5kvb z+y+B49ef%XivXW;!g10Ag%c3)rLP<&2?sc=og<)jxSkPJDVu$OdK z!bZ|Rc64-{COx}^Nf{1vVKp3us-nKKAzQ=G_*r5QBcKNkLfs;pvOVIAn<#=F3f-^| z23zDqzI5x>F14>g1Uj22zYpUJqCH952KWtVjp>CWptVP$_2`4p1zM-3!);J>wfvd( zC9F};lD_wZiRpmlkSB*}SPAoBWZ4m@PttcKschwmVyOKOUpC&1J^@__YjPs~AN9*X zS4Ax%TZv8C4vAv9uoh>{8X=HQ*b#{GE$UXlWzG7?>o41h5Bc(>1 zHh9scow;&Uh9%Go{{%g8-he~!4_FUVq4o_PHsxC}dC?xNl$5&c@TS4+0J{m?Pk9O( zv;(PU^k$KN7_Ne%$NPV2{~O#&|5Ky`1X~wSc^$~swTZ&pr2m4Qu#dibNHan|t%KX( zBc?%{$%*I>&I>P2yTOVcubHP6W!+8(jM546daCU;>3_(-4U#uuCyX@%>CaL(A2x!n zz|-JG?_)25ZmEfZ{(8FkEkL)|tEG%1y?FX}s}W#l?`hD=2F(W<_HtdS$U;#OE>EW4(~q1Y{oPlz$4kGIX`v z4<9JhZo=#I1Z_3vgbHEdi*O^D?L`H={%M- z5M9nzmU+W8-VM5HCfGL0V_+?4z)Hv1_PjiL!{D4yJN1{qwJ;5q!UoW-dY9LyZW&n7 zSn4}Z!k7-ItZ1M`i*F`IboJM_vMHkwS-^nyU*nWUcIj6`|6)+gR_2zmQK*a6pIOV~ zR~B|Kjp*L&`liL3jatJjovsIM4RS}u!4Ev$aAoEK|_zW3Uw zO#bU7Z0J_&HGP#;c~}V>^IU(8so@?hcz-*mH&V8Xtq!}^JDs9pUJ%iP!?+I1u69mT zp6Tj}ii%mWr=l_G<3XXsOwebXg$-=9PPn?F;)^+rdG#T6ohpVT-8hEYGIdGJI>ody z)fPhem!mZ~XyGr{hq9g+ z+V(52bZ$~lHcHedBzg5AUDf&6{n+yQ<=3;2?RJY>SH5;}3wA2+VClQg#j&o~+rU=( zcR3ro2Wpk9!JywDjxK4U7Ioqn36F!`y_8lt_}6QWm4i(Ohcz8hSUI<8qwkUd263(( z2>CY}g%Yy{HL`J5x5w;7^fAxgR(i!aRApB9i^-oJ*eDhKlf z`W#rfLyA=B#qoCd7CZn8V8Gz18w>upfvQrXV+@^x+ta~dyhWAtzr%Tbu1G(s4TDcQ zqnZ#oddbzR_$u6I4O5=3hMMFQc76yKTOYA``YCoRPc-TqbBq1O8CgL2lMs5xQs560 zK_|Dwy-B|ftSr5%&> zC}}P6X+ib}W~nbdo!${Dzmzs4=`HUx7G%)X)$&mo52Nx_X}b=70>4l`PcKxD{*S@R z>X2TgI;{F5*VNIC)*zMVr432C*tVy6+OC3yphNyWU`3yIw!`dHzu6R9`U4E=k!$GC z9-n=mw!u@@t!CvRwNs%j{!DljLQg-cgL03xUp0^A!9BE32H6uB!e?#JwEGFtm9QSP z@v9PCV7YRBMp*anMX0{D%e@2>Uge6X@;fKo&S26SubYO$gZi}gI( zLos07KJJfD&OI)nO;^HzDz-Rih`Sf0R?z{}bibOpXSI!~5jbNacGP8^eqpWz(~xbPfws^!0AF z4Ezq6s(#U$Q_F1?b6}PR>#rE~eKTz=nR;6d&zl*r4%KFXzS4@k+wi-zeY>th|1uNg ze{7)hXMKgJB3HXk`hk<|9Z%{nBGm+R!8I@)ZiAv%1pR{b-TQYa1~3M!Oe3I5f{~fl zP?LEr&fQRI{i+mrqfP|TYX+moXQg$BeqS|qs%8(;u?LE-szyVqx1C^q;6{@<4~q4M zjbA!Du|>W8>vcy5cn#m{V&f^&D|H1B)Hsa24C&f+guD*EUx{55v7z-vUpG=4N68D- z3yIbuu@_zfeOcKAf56Y+{7N3a)t zpOMZUVPwPM89Txz^1q_5f8?L}lf|I4(bM6X&U>oLW;!-?ocf-hNd|Z&dz$KEbA4A!3+8h3=G|(_B(z`e-ZhWXf-!1myQ2hTvMZ6YhB|rp<9d2Znb@&)L_`i`$BNb zls%0PdzB7OH|sjEv&f?Hl9T+=upq<3998oC50_R7><_SSt84jZRvY(~EpG?^-Nt(+ z=I@o&_ZsCMUi+!jDfgVE>+QY!0xz>o*%q{LeG>of{4@W1+&64CshU#nRDC#8=3-c` z@buO*v;NJwo^9Eyx^2hQKS z^Ju+@!f(Y5xlVmP=WcDWQ#QL(?ZsFm+yAuf+)VkE6K}s2ev$kl_JvxB$0z24HLd3s zuAjI)=bV;(&9Xu%bB`n&VdFOxYM>h^6* zU#{&q*YZRs4`YX4cT7@tGF@18J*)3q?2EZNenwJ>KBYN57f*S*g-_;O^FD%q#r_7q zI`NdA(ltADIL&9;Fl}!4Ubec+KlMYwteeJRD`Gv{ee2(A_sn+;zWFw{XtDmnJooYU9c`rqB^UT9L&D;JijO}R)PQJnD^!SpYvqt&M;~Ae${Abc};HzX5 zQfP0ueD|ffh|2EtzPsL+WpDN7eA}Yx^5rrj zmF4XoC!Sq8Ve_TS(m$wy<%Hscl5AGa3C;&zUgH8Aw^mfefsb){w6;fs43ppXun7#7 zEOXwy;Chs}r1e4cM~(jlJ7yekP0aLLmLJ&5^vH8<$hOO;JWiRVSudY@xr1re?2GIX zt`|3^z4*1dbPfBl&2uNe%nNK~maYF-!FXw^jf3c~lT$x1bg(O|zazM(K!??!Ikf+0ip>w(OPk-h7NcoutX>#{?<`+Eub7=jH)`LfS&16-!CxnPI e3JM@0hQ|GsJNP$6PTtiB%1xfGelF{r5}E+pdYe7~ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_filled_fragment.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_filled_fragment.png deleted file mode 100644 index 40d1756309c3a3fc928d9ca0e3be8472d1b66786..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1491 zcmaJ>Su`666wM++Y-iL~`;vBQDYdkU~e^@8{CC?1)8bX5*3F0;&tZBg6bXOQ_BC_O|~j86#oCNIR0qN(dx9d(aK~e{?xP;xr3)7_68-++)4I#5^~_)tj0cX8+7kWcZK74Pk+;BLpOa2XIv8X^P$F}DUsmOQJDk|LC#>K?V z5Q}ekh*yki3!71c5^G*+v77P6z-pm`>f3qRYoagm5iyL@8wKV`0Trc!{t484{rF++ z_+?-Fn4(a1vAz%2e#$pTzzUG+*x+~~YZ(=|ln=TVl7C!ZKbc)|pE^*9E z5|dLLWn-2^o1|R{^%@giCQSSFK(+?{D44lR&+VRDbBHG1Kd8$OA#J{s7BKF`lWf&5 z@b`;cHyqX9ej-C_>`#U9{!*3DjY7VlF!=WljShfaQ3zych?jivZft9KGj4^LLNH~r zTedo-5?a{1kJR>BR!oIrwpmo*-E5j?I;y5&sU;=(s&t;aqr#?hd$Y){b2$M+-FF`@ z7TgMYfD_HGWrKqs>bT9=C(Bqm7);OS4#I9+>lpjhQ~xb@?sT-Vo}3iV%)s{9cyIcJZKQVAO~z%V6`byAwChwe14JGoD{&MNE*>24!CKIsqP}} z6E9Q#b=#BLkC?7cAqfy=U56hX5~c7jSwUCUDFJ((3n`(3_>Us9%hcqcF1g~rcV*y4n?L*`iXn`$udQXc76-FjV2Z6 zEQYWR#gp8arHjER0TDasVX}#?Gkkg$zq>4{da11QazJG3RYG0=)KW!bxGLtDHNkvO z_jow2LLP@zfLat<9 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_folder.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_folder.png deleted file mode 100644 index 0683d22adaeeb4cbda066652bc6e53595459f58b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1023 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(<^v49!D1}U6i==L6{Jk!&~F{Fa= z?deTXG*wx6Nk~$Zg8> z@dr${ybsSl=a^8oN^crdimjbb(e_oJ9&XZisA_0CeEQg)c#E@fp{bX)?zt|1-%4Tb z!H4b=mGV{MRmnBlO9jm@7V)2YetdPHzM|}dS*v$^%P^OpvxmPo)!yjNE@zf4j8Dyu zPO{Zra7ASEx!hW5qbJNwH(H8z3!VPFqw)A$rXvl9O{%)q*GNf-+;jbDer`eupTJ`N znMd50M(l9o^;BnMWxBR)>6X1OjTEwP2i>|?B6;CLh?gu!K$lO3xB_DlhsE7fRH0V# zB>Bec=qN_2Y<#476zH&~;}H?@n>~__CLfLMn;FXI#^}3E>D(sv%4h-U*DVtMI!j;m zEm4=q+`Hw_BjvD^tzj?huV^hwy7~D9lk!dOlkVS_%`_Igd_y!XwDrlEDZ&}&!Ubn_ z-q{We_Rz&AE~W=;b~EJcSnM#T^oaX~Fn{f1L5j~`RCg>|wf&mq%H22q7av{_D|6w5 z64&Efz6TQzOqC1~;G9{~ket0sboth|lP|w26qR8Mnd#_yPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS;uSrBfRCodHn>}k3Q51%E`~WR1 zqBgM-j9?wHv`B0G1tO#hibVf_U5Gy*=qf4f#mYiUi(nI${Q-haK(Nv(DeTtwU1!#t zJ7?$KJ3FIu#&h7f_v^g(oM-1NlQ51@UGcU zByDxx^RsU- zB^Hnv{67pDpuo3mfDBN8Kww(^5rhYv(}5b3r(I38fKWsR-$nID`1}EXm`uV8pa!*a z&0Vy!Gu|3a-TO%PNuKa|e7-_Km+)}-tWFV#eTujpCzje{wMP(=Uv-Kpnmc)+ML+6O zfK$Y+Y6i4lRN;LlL8^d5*?qNua4Nk+0YeW?(T#!>fHUMCny*2G@fgncJ&)M&jF7yc zKivSFmsm;dID^<8+_$~B=yq2jDc;S7esWHKj@oOG`<3Ea!Efr5KwJ5{N6_mNU)^FINlO~5yNjeHjWwr_Z$S0yh_>^e zlEx-_UudC%w(~C_>3t>o8&a$JPa)YqM!*Od0V7}pjDQg^0!H8$?+fhRefogt00000 LNkvXXu0mjf#6;q( diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_forward_check.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_forward_check.png deleted file mode 100644 index 4767a768d09044993dd64025d63b1d544fb0e2f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 959 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 LNkvXXu0mjf~xB|soBpaKFb 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_limit_2x.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_limit_2x.png deleted file mode 100644 index 57c701959ac7ae211eeb8886457326456c4b6698..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1674 zcmZ8idpr{g8y*|RNZTYfM`5SJC%@T|iWoNAPRE?1CCV+C`{meCk=(XEk?crEaqN`a z3B%0&7Hyd*mkl42`zg8Q7Ng^`b@-?A`+a{r@AEwG`~3a9DL;}4YAOg7005vyBI2C) zn79wH;@-TtR880;xnG;V7(=E?zp zdn~uV%a#9nCFTPE)%(G8w8IJjpdcaPY$;K4OF3S}6ueHyXU|$^V`Br-*kntHI`J9*RsXv!jbNk^zgQh|-K0cYAtIyy_U!)1rEI(QSI6SH1Of_m(s#d!@HK8`E6xOv=zAs-hHOz?4J**5@cX{i`*6 z#lseDQc4H4|5hE0I3!-@&rjhpBM@(Wt^Mx)!Ya_EnuFZgSAjo zc&?d76l{SoH(=y2fUXZ87)KV3g-;iMeCr)G^jBX0Df&X&(lv33@J*LCzQFD26);`L zq|+uL)$FeI^W{HImtT=WY2Z{dadCE-6M4;!y8A4Vzz@&m zW<^8%OI!}SrgW}<&vZ8h`5aLeaO`b*?xoBpXRF^(peYXe_2$-xica*kmN<%piZM&v z-)|_zn}0h3k^&vZN<*0n8q-(62awSWBTTHwGNhsRhdUYRIf>?j$3#j+%5~}q#!8LZ z@Dl&Cn-FZ|cw4Ldv}SedSf67@k6(Th%p#awuG~HqAA`AG;Jbb88&EJWYJ5GM6Hb5Y z5+|9JE01XuyvcKFK}L`Kkd)yoql_|7erIB?5@(KBIq*Wx znUUvfhBCg1kn(WygG>9Ie}V}wV^*rgS_TYBF7E10+BA1;*6OSgH3w)taIIBs`*`ws zvsuNQXCpy`L1%#`LM@9;;Ej6&0&o+MI3>L^V;N(Odfr|qI>nY(d-7K(t1|fRsKup1 zf(<+?^~ClLR(A`2JnbcU?Wbx&56m{GE&dNWCI-`QNPPtpA0js~@e6M9%tysS^}&MM zl^4<5$75%QTQcpRM!NMG?B2pO773gNsD!sFe?$$&KEC9*q}k#iG-ZZ&;f znmCb?PZ!3}mLJSPUv#q%whVF7@E zze!6O+pKiTz9W#y(bejbU)t2!-Zv+tHb)OJJUev4+v)4WWt)#Y7`he@^9ybL2_X<} zFnc<);^*(y^Tg5p0TVd1O?69U!hyOpzn3K1478L`w)K17>5!XrQ7Q0QQUK=c02?CJ zS*5mB`|{ZZqtKdP>sZudti|1;jk@LOpw>WR&76tuYip+*)_JNe)}ZqEbMR^#4`1;o zzM5avYw}LB_@;jAWy@A@&DB^`7!+OE)`)%6Fj8i!>vP%544x;rQUSdczxIJoyw9|% zsfeIrEM_d9ta%UERd__J&iWjYSHhk|k7gNH%@>Y;%y!Y21VzrRdLRXO7gpr3rxM2s zx@N*YJ}(V>=X$2=T-Kqc2Ii-p&Iedl@6R0YFpkZ<*u%ht*xZWP<~+Z&7TbrTf-e(~ zkH!TiEgwUCa=)A8&WH`=5hjBhX{j+6s&2cL{5_lw8MemR7?=LG=93=t&agp~8p`DedgRaZMpS(zMyMQhlP7I(6MV#Zv3LNsN1Ui0t+d~R06k}83%!=FE$s&{F`|>X`jZ$x&cC-GX#ryx;nVgG5+FtKsTcbz} zJ87@!VrmlqiMwSfTuhQ84^;M75wDOz!GGzp?U8(m@IRVAksg2T)c>p4_wBqdt?vwi S$f>iG{Xam$lW`n7Z~8x5kQ&AS diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_list2.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_list2.png deleted file mode 100644 index 80c9108b79a719444f45b10627165591b3db8e04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 549 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(<^v49!D1}U6i==L6{tl!hcF{Fa= z?M*|!!v-P^583n%a4{P*m94uV=y&0BL5m!N-hoSD>0F?nAh~>V&-qll$y%>-mfgT9^hM9BXq{L(EeX^z?=_rZiPRql|OV~_P&G6 zS-+L0MaI8boqJRC%Q0^L@c1*I%hMjMxP6XY{_~%ux6Lj*R!_3;O}gF9cIDoD)?Lxe zUzg8~tW16LcGgGd%skE~R>D5tgl?xy-lx=H{K_x?lI8-Xv-g6YUazq%?`GoCSkM3@ z0v0!zcO6`_ykST8y(i1tekwdT!#-7%qvhv<2SIDL-L45R_!wR zIU43?iM0-|{C3T$U0W}+tl-vPh7elECw`gBdehK^Nl&E!RV{+gL*es+A; n-1IbkJIqe7#Sr4aInEm9Z?bn-I$Lg}fuhLM)z4*}Q$iB}_L|iB diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_members_list.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_members_list.png deleted file mode 100644 index 4fb5b0e280d23e754933290458391355577fe772..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1787 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS>Wl2OqRCodHnonpIR}{t*6Cq%* zNsmSH%{T zQcBudTC`FXs?sF>zL%MJ-^rPIGw;p3XI|#O=iGb#pX1D(dnd1_r=qF@RR^jLR2`@~ zP<5c{z{>1EZzs#1pPwHl{wR12Yyq2r=oXj(SHO60Z|_a6D~D*z2)GKel5|J9zC#q* z55~Y8$V;-3ZGTrbio(`|Nzf|E$NH{n5(VkbDWW-XbLFdh?j(xQqme|{5u5}&z+eQ8 z#giUEnq8s?}Xq zbBfvyJUX7Y5S-|4^GJKCG)vjYs<(n_iViwIb3#7l}F+}ur%0gN;uLsz|#F@{bjK$ z`wq&IL#sOTtvX1vZ`dIIyY_=m!7t!Ha2rg6_rQiU=g4#_x75lb;o1Ia1B7$s80D&* zmAh(CEvjjMsGDny@er5-Y4k6`V@ZyYU2%+0Ch0fg<4e11OZp_@5{k!wa!jKsghQ@_ zBqj#K;17_M&U(Hu?$~Rd*k`jQkDhAHwx2?A4fqMqUSn%m zGDqojg7fd;e+)hY|2R5#;5}y@!fWeMLpcEDVo5nGch#U;JUVUjubX4h2egodG|S{j zsK|UX_$E|}#!J>0_-#F`63<(wlxzGsw^j=CBS5uVFIlf~nZBg{yoVjC^`- zYz{WZ(8iP1+1m!)39X~?His9ptjx2o=~B>L2K&G#pqbsTY-GDH^2N|4n}f|UH1cHD z{;58T>PijeoaV!V2-3>;pwLxE#^k>N=-XAX z--9|*%`+IZ^xp^ZKld_qzX|q$A)rHJv)`p3V5{TI?_d&4uxY%`b@>sE*$b|LvPm)a zE}IUK>^d+}c2^w#in*@nM!Am|fd&Yq58AH-omVyj?>ouc+~PkVs}Xj?488!lcE1bO zh5UO1FK>|3&Da|`y~6nOcphA58UF=zVEqz&h22B0>4d{WUTVo`M=N-U^g+7E%vZ$F_@Cm|2^nAeR>n88H7qOowzndn?o}axCA#`~Iv{-Vb9j zzbs}(x)|E3z;{v%=aBshbi$5tAa(#x8?k%9(r++cjP=U8Dh5z2OUh~S51Wh+fH;3$ zRg-E(Sb@;*fs?EIowrYMNbi(`(YG8gw35N?y%_!Z6a}XK5D3 z;;kL1mpW8TpxBlcUnXe@V5B?A()m>w+3&LY_B)a0ERgL8#_@2P{lwq#q+Qo2=Cl*f z%h6G*)oj0&Z&QP`2@Gk5VD~~s%DC>2agpASDf(rLyx3ljOY(?no-u-rYLML_KQc;b zQ}0n~``r^H=*9MO3{2{Vw)Q?Xs1@pWjAtEQyI5XqFUQRJs6mg7ww)VsS5Iy2kJTW3 zR|(0^Lzx}hTT*h5XYIdOJOOno_z~B`*EIkD002ovPDHLkV1mg>OHlv- diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_mini_checks.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_mini_checks.png new file mode 100644 index 0000000000000000000000000000000000000000..74120d575023bd60d257963919ed924ce9bff81f GIT binary patch literal 514 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~ySip>6gB0F2&*1?o%kgw^49Q@9 zJKfOlh=GWUxT8Cxkm~oFT!Dp5ehn^+s=TbXymeGB6muML-N7jOFtST^{ol8yYwS8N zL`WU|ZG3LNVn+MUdKProAf_-mr6ND-a+3P|G!wSIcfiUO56VG&`UY8R(+3qUk9$| z+;O>!-$_u=W%=UMEZob)?WJ}&oC$x`P%&oOnlC}h*5y&=EQski$11JOH;FaNP!V_CHh6dI7A dX{?`gz&xrZ-1Xr{(?(GEd%F6$taD0e0stwFz_S1V literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_more_0_2.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_more_0_2.png deleted file mode 100644 index fe355939d20b59ea66b3a02390053f31e62a2433..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1606 zcmah}dpOez82;_zmP@W}A-P26a&p%RxosG2vD%6Z>B%z9osmbb(dt-fN70IPqsjJk zkxSM_2`Q3X3W*5gF-B<_k>#Mp+cM|{rs%SqX zPR5Bc_$kWEqJ`^?IvIhIaK2suw_9H*OOVG8qoXhwz(S@K0Z?Hy0R3r^L01LH5T|+H<1PTrTu;ynG1Hd03dfCjr2U22AXH?KdX<@ZlgvzDA6>FbZxQ z-?(ulXNIT_Hdv?HAW>k@6=<-L;i;h9D`_;%mb^4v&}J_ih5bI-V&mLg^Bkzk)ed<^ zQEc0%dZCD2%@%P}VRfW6Hwg~Ekcnsi8137alCsd6UxtX-R0^)l{!da5im-uyZN|oH z?;`~g`C+%uHx5+-v>||=ZFk_L_wW>DIYHadGlYgmzh+p{Is1H@2zWG|zvlpjbk8h~ zvDLyu{+mlF*|*TGT~K$MAJ#GEfCy%kUbcT4wy=bZor``I;_l6ixC9QcE_UBR{D#75 z#pWG_6+Y?HOuw7+2c|)_z;TwRGv?eI>psPa43IZ0OEv7d6#6YEh6q3hZWz!3S-zLV7*1hgEMdSRv^je}I` zPkpCvdB{xM%{O9IZO>@l?JD_WX`h`UJTa_Bt&yn!F87D&RUvpp#Qd}|k4ZG5ebO86NHGX4OJWPmND*;g z5=vSL3gVl>rOw%l-;N3g^uTAlo_CH18hTZ1evYE_eiH(9-i@DRrd$0HAZ<*6e>?3Ga?4&KodCnKi z$2h8+-q{*3Ipo*Qpz$NAy5mjUk2}Pa!4~p}?;2{5^etH~k~RVtp04S>l4;$xT0s1M zu@%B)@OQmiN#(}!qKQeM>jJ67Q5)-(*Yk`iu{JX5B|LM@TgK%dnqAuCtD9U40r@`V zaD60kfWSq(iyd?kI!38~RZqNQFxp$RK;@NEv!1sf&z_lR zpme03Ffext7+#xAmQ$XKUrrjJ#HwuA#mk>elp<1AXCU^G_)H_}iY?*fBNNW#2J~oT zl|%XE_|%Eg*Vo3S6(Yw&Im*F2biz%g-zP@jviARTskA*y#oxDuU{<&3HFBD%J0*$@ zD_TX3*DddqmrlMx2v~fb8cenU%}wPr#Drj~H7P7s`$891KWMYA?8>3H&xYOTv4nqu zBs_lRL}I}oY;|2-TgQx9+`mZp-c1h+NH-L_uU{QzO;%iJwS^T`dN0Sdm^j)u{3($- zUURLXo)W#(Qw}9_@s(W!vhmZR;C|LIjbo^l94BXrbJv4#Qwy#eiVXHRT1C*aX9F4*v Jxn2>ue*>#E-a7yQ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_more_0_5.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_more_0_5.png deleted file mode 100644 index 32e0e805df274525aa664ffce0e6ae7577407e33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1672 zcmaKtc~lYx9LKrD3x`wZfhJAOgUS?jr8o};a+DX~wJb@abeiT_9(kcFrUlW^S7IYI z@}%k1nuTHEQJQJaW8n3yRfgug!krOveg!1Hkc$Y+aM2(|^DWG>j!J2TB3j&w1fxQch&|2cB7SSe@15;XnQq zH8#;+i(Punb}~EQ?Ypgek zidpF}z|%(Y=k|!vZ^zelf#U767Hba=bB4wTln3H+YX`1=@L>7ZhX#()T*-H2+x3g~ z%~osD2*eZi{ZVi4_wv%4?NM6xUpH|-I5^+VKhqWHV})J@C?qLE;4LsN>5s3RQK4;RvcAcwH?#>gC3pB=+kSj54XUS4Vqd8P+sN*_(U>c!pgrc0ZM z(Pie&T{R7v6sJb*o~st$VHgD2=pkyuK1d@&>L}z}YX^VFa#SX+L>&M0(>vtsTAy$( zScWnEb1<>&!OL2QEpx&ATD@%x)lSu32=XVI{f-}kr)qAcY&%N7&4TXW^R zB$nvbEQXb5*BqZUHuyANvMF|*R9*n?zWl&X6%=WzGd$cf?`zM)X4{;ON9d>Jbii-p zW;6!QSL!Qzt-xc5w?WRwDZi=wuz~e;;pwkye4mphK)=F_Hhs|W7h_Rm-E5Z1)@k`TfYje7Cmi zakLFHc?9c7J8h7t_r@b4gR^JKux;G}l>G1+ex@+bLEF>Ez0Xo-T%())7c4yNC8hew z`%|*DwK$f+8TefjDGAo>ktu?aS8MftG}E@jFO?xX!fqOT({qbxLqCEj>dZprgEou( zN)P2R2@=!_s_(G|DO=GbInaZm_U?yR%_WwS9(HOivbSV>M^CB18+s|fT*9QAa}r3h z=cLP>ebdIhwTA}e^?WkIL?K-u|KU1KHX2c8xv7>S_MP8wh35Ou;)5or_;KTD zFHYjpDM|Zqtm4EX`7U?c-hQ%S*rbq2zgBaq+oP*(%Jq(L%x8M9Gl{`KdFrOQ3AKL* zR$M1H-6Xe@=JtcBExgk~T~RS+joXF(C99OLUmer;n*82KGX@FbR!Xv}E&+?*$kf z*%?{oT zt1ab`+zVf64G}^^0)(62@SoCO?i5`&2Ni&|Od;QXx`RZ(Ukvdg)EAGn+4pCQ^L_Fa diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_more_1_5.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_more_1_5.png deleted file mode 100644 index 6c3a2711f6fe559779cfa1bbe4ab583aa68b5bad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1526 zcmai!Ydq5n7{~wH+OW;Z<#7JFWRy$Fb*`n2nQV%&+@eIHbBh`=q0LYU`M5>fD zsYtR2=`^&fXq5sIOLZmy^)EDLr3*2{mmKQq3K&YgEC9&}12(Kjq*9X#0AS@104615 z{Zj@hL*rdCv(NFEIG!%j z1UbyxrRYFK>tsc>^s7Z|_qY@O6q@mBfWE zN7JXCm7E$6nNFNOJ<-eh#+p7o7Q5EV!eWnwp6W&`2lGHvL=NOXfyqeaa5$=i(7$+v z8w~fp>4`D(8U-;PdwD_bTTl2?ZzuUDYamD$Lys6_h0#KSvHkDry`A!_sy0vwh7PNaUMpz^x>L*o z(ID(!xIeJ3(!zsh@IO@1XStc;N}Q;8(m1@k^{zS;owV!6#sROWKF;R@tw`jc#i{eT z_rvwF+1&GDkX6!by^MmiO9m0#cSfY)H)$*J{_VB{Gc8^m(ZNqXuc#LLZgW4@HYtwH z;k}7lg2RM=Ku9&8}|@$$s-FIaZN5|D$ zv2)Ii?Il$vRE8kBmTgABgFywQo*dW26A3#?jqoo&K=KuIMAR;}@g1vYm-X4>pXOL! zC6~tG-)*=zA5mg_WdgRv*b(kUB<#snT46AWN{fb~g%Pl&Ojwr1X=B)U7%zD|{esBp z1e~6DDp~Wb438IsDn@nc+DC2U5yE3TWQH|*@mI%>G>m;QlvC55QCn2CLDuWJAK+SM z$v+y)tK76==V&*L-v6eHzLlBBQutdgTI(e(0X-8-OvL=$;R~Ni%O#nQ;IuEll-=fX z^ai3#H$Me+-?&k^vf&=yK40Wp@tE0CKh~oHrgVXKg&AF8l=Ke;9f#R&ZKEM(j%%(_ z+qrw_*##v@7$r;PTN`43TFniEcxIKgmmF;W6+UBjq2SKlK>fH;;0mO;CYf)hT=X`% z#$t+FB;TeC=jY_ni@hJM!OtMp+;yD;VjnxK+UL4nr$yG;z2JHFk|cr?i+a8{U2>Na zxcvd`w8C4TQky)q3@C9r-}B(Rd)i>lk|O=&KYIo{PcFTk_av9kr)*4Zx9_ZrPwNqA zxTd+x-15C{IQ<%CjiYfcG}rtFynxP7nk|n~$yro~YU)at#X}>uV7`9kdps zQtdj<95Tq$H+!*6+13Dviw&k@GrdQCTeKX6Z+^mAQB17(u^gp&qdQ5ve3QZ!WjZ}t zY!LI4r@KF7Nv6Omvd{^IJGnLKT!y<cB>=IvE8#Ve7+2wsVV#NnNZv* sA$3=l46%*40_djXz z$YX3dFB)9fIRVWmoyA_WsfM}cslcXsg1oHkI?2)$s-2wl-)L{CA$Q(uHE~?E@|q=4 zAos=b)k1&~&tzPiz>>Ze%%Ig|Q&Mv68YKeh$EAjbt)GlzJGrBx>vHUx6j!1?YJt0$ z+!RXKB1SenfKYsG)89ba`y#^KPKU$cbW;ij=W7dw=NwVej3gZ6Nq6vXamX^CGifLG z`6){MK9s{xj%N>+yuuQlz#*I7&yt^Roh=0-oL#lzoYwhF3QvX!O@^`yuKoKCW>S*Z z+XP3|k!roIG(ozWUd`{w+Gz1yER@c3Kh(-P!MBn(w6w9NZ z>pPkfzuR-)&SJ>(cU!QEQyp>JClmPgW1&PUF=ENLD8pndFz?~BtZawEi@K?QZQ3_8 zK!~>|n|+0WD2Ok5PcB2>XuZ%5Pg1rZK5uyP)Ms0j&K&L7g%!d%7xjea#FS$~Rh_)N z$}Cm%kdKcd#_3nw4^7DroB@wOvC~O%*x8k zl1mz=k7rdE{ytrKk6z@FCe=fn>D%n|$YM~dd_LsVO*g3pI@;(_XSOw*)lUAuGBxSIVsh(?pQDs`d$Aaj` zPEcpa_g0T~^9v7Uj9{&b@rl6{{pLUkgPYJ*>q1c9w~No>7N|#|Vi}_%Cm%~95m*)| zhZIih<^t;upNAmnpmQuk63*V_{u(!3{`cR$6Zy70!#$lXrUxhB9T|k1w?wolCs~jI zTgg@?N4kOL%iSbhtmgx%J3^V+HELSmSZpq4JnC5&!6q?Bv=6l?RI(_JeH}eW5-zeV z(fg=eXnq;2x?6HIIElPVq%??Te?AO;clbE-vHycFc3bj}OjbJp-_lU8_MGEY`k)r; zMaea;2Z`ozFxi)Y7Hp2XYS$@PeIY7nqWpMeiXY2kZmQLeh z@mT}GGq|bb&4uFAp)e=GfUh50p`^NY)aTF#S9OkdOJ7?$Xw8F|uth{{=C9&-*zAxe zOi!7qeW3bKlF%Ww@~OPm5C*zFB6Bl$3u>$G*0E4MzP4Z_$Rt+cJEnbRlO@C}I|K{5 zfppOv%B99T&kFDM4d#4&h_)oq-_XHnl32%tMaJA48B>KKJ{`?F=oByD;VK#+HoUtb z!42clJ5l83p6GMET&-rBn7oyjGUYYmJ+)#;zEkIIg9q}J$H40kU7SXfPP!Tfa?XWv zly)?Hn`FM-cw8s#v{k7hjz6USxt@Cmot{^x{#;gc^M-i%>~1iT3cIcF;(uh6_e~q~ zjVsOoW$f@Ql-=7^Ct749&igmlf8>JWdS|f2P3 ziQ?Si;M{~qfwfi6EjJD%cs~n}pwTGea0p@i+hzBZH=|dc_xF~~EG*T`g^MpTZ~^Oj z^J>!ibWI}^r}CQhUj8r;Rl>2crJ9TdNMjCIFosXTCnwSb$5xkyC&d^0&QQ3bAj`A) zFc94wnh$B9)xB45RAj0H8rDcm#W%jaqx7&_JCXnY8b?aaRO^Q4i>nW~_y;XNahx|E J!`($n{s)gt@ZA6a diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_nearby_14.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_nearby_14.png deleted file mode 100644 index 5d5c6b1036bf008ddfe2b73ee35c1a4035befa9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2341 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 T;YhxE00000NkvXXu0mjftVQ3f diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_newfilter.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_newfilter.png deleted file mode 100644 index 2dd26fb6d1e0cf7c656a37d7add1aef221a5ac3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 662 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_photo.9.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_photo.9.png deleted file mode 100755 index 5485eb0616bef534e603fa43dd7f1b63e7de41b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 439 zcmV;o0Z9IdP)$b3I@3B@AuI zmoVLXxcS0|cL{zo$oKMt2^FY71u9U108;uu3;ISYTBDnqR_(Jz`)+C~5I{n6x}go+ zY3PRLG#NAyKt@aWqoi5zKma4ULO51*6eJM9gzgcZJ)L+BY~#)tjx(Kj2?Q{vI}Fc` zj(r5KVTX0EfdDetBkLs)z%6};JxZGN5tzd+c^`qVu*=3N5I{;B*rlN}m%s(=vv3J4 zV4uPz@C5rDT>>lE=hG#yhJETk0|`01D_Jny04x_gEZz{>S@u@o#+9Cb2V1aZX@BAPp8H)op@WT}dquME|5HSI%fG*ZFOD zdJ}*4Pc?-DGZQAL|F|Ia=D?@yHQ$*gu!LRsl<-Wyu>0M{gA-RFn(1yCnSb)(YyD1pnCdWu^4`>0*;l$qH zUh2KRG&d-#MDqWGt+@<)CBmgo*=tzoKAXSn>DC$RC;sF8v$o{r_w*h4J3XU!Flz2x zU->U!%R8=To(qH-?ULqxxOzl0?~*CYL+84)?Kl6VF?4K==n-VdG!;EGb>&ylO|$%L zub$c^>MzLan-&voW zj4J;!^Bt4sv1l=^IjSXM{bI=uPxE7J7Jp8gx^Xu|bW1jDnZ^lj$w9#WU+4Ngdw$aLVPki{novtUAj$Yu5f>cVresYt)2m1lDb=E?f77 zSBv|~ACL5gPY8?PHWFYg&|_T6ak6%~!>gl02R&AcpYDD2*J*D=(f60qA42XA diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_photo_blur_radial.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_photo_blur_radial.png deleted file mode 100644 index 9840a28102815ab923b45c0a617080f5bd180211..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1608 zcmV-O2DkZ%P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS=vPnciRCodHoKK4sM;OLugeVb0 zLO_$f8X+IRQ$lbj2L(NPOKx7g3Bn#0zrf-Li1#Ij@vMU0cf~zhYox;n;pmJ zFW?OLvBLKpzpB7t^s2%Oj*lxm;`m@Z9>3;zxCBy8f@@$4yakJj+RBD(om_gBNa8HG z3*Ld;BAc>(cIk*B=wHD$7)s=8a^Q&~$Q3XhiWS3;e6QprD%&7UU>6AN7Wg_Mz<<%X z2X??;;BTNZ4bBn`*s^mPXdwRyTm-SUe`7GekN&|B$XNsLK}eobc@vxiU!+E^HdR~M zkgbp?mbFwL+4TwH7}yL&N}ZCq436XqK(;EIT|_CiW4Zh$*}?G%@DQ}gODfjEmq~^b zlx4f}Azy8x7*8aa?XQYM^_&nnx2gZOzo$40@&)9xO%&^JJqc%_+iHXQY=eIsMWYcu zb=%2zn{39~>ZONw4akABmaO+OJYZvjU$+vVY_)e77}1)GFSs<;Jc7?*zptee{BUomup>7Uhd_)R&etq0xEY64#oAwk~#2SMS1&Ng(y= zIleq^iwwmmee{BUoqhDQ=w`hQoOe3@F?5Ta@s+v0M^}AklrKe56}y&teX(+#>x2l> zTCgt<{Q~d$3fIpn=-ih-{Q|D7GN)$MS!G>*ojo0`9IRaHZJOtF#U0>F>-f{O&@91N z(x98F-}Kll!KO71?KCwzN-*>U_;RYF*@3Snp;LZRTt8_G{772`<@)sEi$2XPyI46` zxz6)UCFs?%vqSt=4hs=<2)O8@!FzpM7j<{x5|f?RB=~Fnl=7v&R~Cwhe~Lr)Sr*AV(X+ zEh(E9Y9v`RP?5IbbYhO^2WQ*9ja2=5d&LGU3BD23ZA72rWd&HDOcX%bKqV$2LNB9b z3tp&OK~UMm86v3aN!C&b+|5PzebTP8E`Krg@(J3;90j%+V<(Fa&dNseE+!$V{1hRA zr1E2yE|OGFZ_>bRJ>4kY70rMC0Q&Tsyy&JjRa@Dp&!xC*h+lF+h9sS+7x~Z z#C-X1Kd942g2$lk2X$It*Tw?v;$Pk$)Diq#AW4(Swi!27doJ>we;2(=FxQbFC%}5a z-7ALVYmzJe!R!$9D$sh8wNsYjUgCZh-hZ$2V2rdlf`;#amT$Gj{T3`LYAYMEwfOek zmN>2AY=g9A+$tk6ZI~?on!+NdlobXF1BHRYKw%&&10MjQ+3+uaKo;5n0000{- zMbTX`W_;;{wWwJZW+{TmRm72KFupRvn$)f!xi~@EvK(#6Rr7lW;VncExq{fA|Bhr~ zcR>4O^5zmmE-eC^J-6aL8IaAJN6>J_t}_-J!c1f{(+Wl(4)#SQhJqEbM@DZJK_lAY zgt6EWW+S7q6^!n^ZPAXgV4IBWMSDTRUGYuEVoR8jb~V!o`l2UJ5+Ha&R^LYO_x4;D z;{*tf$x55r31+$XY$QOiN!F~bpbh@MC>}5jg6o$3gVV92@o`7EeJm<`2CM_ z1n)2wd%~>K2&P0)+)a?+T{5Sf;BSKW5+r!f2|B^W;sl+b6Lf-3&)QG$%>%;yJ~x4JpqF2WaUjKd%>}|odChxWJS>a zjo-d_ngGG4WX%aHE$!wxJ zx_C^+g6+p=(KfA$ZSg#Yg3riSC99c6(EIK2uq*D0ofygOlBq|=l>JB8XJ5rYycE3{ z$o0q)M6cd-f?P%VyGc8|74<9LcW=qkBpX+6_AdfuM2S}26YoU#3go)f-s9gTvYC0m z%H`7r715)>8*#8gxdX1;9vLcR@@>A#Wh>SK|9HeD9|o#G2$%m@!aqUt@S~C7GK2I2w%AE1IIpL?jCE65U)}z zV=p)Vm(q<$aYl=TXo()d{wL%*S7GxkxNV(d|7UKGwQ8)LrIwlhOX>587DSm~4MMg> z2f7hD(B{|%bIYP&FJ><|uc$B51j~s66fcD1n3H7&7A$18pn3<&9kF)s4 c-$>~84bcWmdnLS;ivR!s07*qoM6N<$g67DPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS=b4f%&RCodHnp$vrAF6PQYU$f(pU zCNuaR!%E7~r>JjGuIsnTOqmGodQ(R!uTdY9H#4;`gVsU9=l~+d(^lWlB4)@a&;xYx za{zJm(*!Fkbj&F2?e)WmFH=Z3tPr8A?)43;k4xBS1p_)(l=eH+<$08gUCi$)QT1+>osik^flYrQ30ncf$i1sBQsow#{9s|FDs~Yr{N~J;i zQjtV~LPQ(h+hZD!F+ogGS#CQ`9o2yTC&Yd@vp9Gb zZ2{^rDVH@V664m)h*2Hk_)XAPle7#6)lVV2_WXnZUI3Sd=UxI(Dv?k*h z=f{lVnLx&a&kPchX@3rMf%m~`&<39L%u;_HB$aLk&hTtiQyTAs!kiJ5w}E^Sz1cu^ zv^T&Ra1zM=Ny=^>n0=Iif}LmR*aOxCDug#4rMm_&0gQL?nsmE0?Wr_pLJ-7EA=(dt5RR z;zEA4%Nh1m@Ccj--w0U#A5hkY5bOeQ8`zXhUbZ;t0AaiOKk2WH!+!#41it{Aa!?^> zdrU{N>b>iY%dI4c33XnN0#)R8v;GX07%BwE5|qiCQ#J6o^`Xrn%Ikasx+(&q0Uf#J{Uk*m z!KSqr@y9fe29r0Z-uTm0;vS27-wwU%4K9~~pYE}G4bZ>Qr~8WUy5iCnK}#zJAKJAv$KSQYpR`Vw4CQ-=;ob4ob!i$jl zaq6<`-Uj-;cBSk`N8W#lsQarhavB&T$1i^mjT-)=j#Zj1R=LmRv$`7~O7^2LIVu!% zi0F1R$PpC5Kty-ZX3!n-ks}gY;+-*#*e?`8>`~-A z=ZBH#)31D&zR8R&vRRx1Y<%`7XXugVQyHh5%w3tJLzF?UbZ9mbA?9-+Z(%E>P(L;N v(UX+K-{fyMx#qSFI?^>U;dC7XAq@Nv-reQL(;MM;00000NkvXXu0mjf!ePZh diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_schedule.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_schedule.png deleted file mode 100644 index b6f32af1db37266dd771f3d5d9a5f57d3ea42da0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 844 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 VM`WfcJe>dl002ovPDHLkV1le19E|_~ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_storage_path.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_storage_path.png deleted file mode 100644 index 1b7d20a927b415f83faf3e68763c1ee5af24fc41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1221 zcmV;$1UmbPP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*ISB}5w)VqxKr z=Xb&__n0@Aox9uH_b!=%;oi>f&dh#pZ|~maZIZ;q2p9n)UKr3cu?RJ~u?St-x z?tpHAhL$!QeuFMTU$t7T@1X+(_XjZBq1T{ap)ut*g3UvRgAXc{LnJo_U555rrjfv4 zsBu;HgJfFJ>%FGJ;=e$-_mGgp0Q4@jA7#48*$=)*gUA39xCcFzlgKaF-=|u~0!m}r z1KkhZ1(jq3i}zcpqE;K=Y=F+JGHsrrj_zKy3*rnyC!w@ZbD6I_0UiJu5S&?_Nk{n- z?-Qep_ymayK^uw@eyMoWeTN^|?vk&F9yoHebdm?rSpMHP+{^+eWt zMNSWeyv8*iD&6uBbR&YyK~D(5=!te5i{VY7F1G2T5OAAd>oS!F1UQ@E?Gf}?m)9gA zI2QotmQdFV6XnB2bq6m6D24L`5s&hyC{r@$0q3?**EmyQK!CFuqkIZIB8>JQZ07*y zj!@S~Qz1ZrL(}pBG!M=g;M{K{iJYVh0fLXq(366%zp$MJoEf36(Izz@%pQ7dzaos5 z;G71WS)s1+CN&_8l;F_%!{v+y4geoO#}ViP+P~&bTsd?*=eO1)lBOr+A5bo;#TcC? zSV!^UF?2fz1%9Vkd@4@4`pQQ*J17L8mtb2p&e3j(^L6!z;9_l^lCyQyM;#Y zaH%W{cFDxQ!Sk}~!|l9Ww4G~T`ltmYB}(sf*1Tu|NsIH(HBScv)B;)$EW|MyAQ4Mu zG(Z^(@sj}(v1CRAl(7&$86Xi$W;8$<3-OZy60u~)Sb)A{Ay+=}va9BHUM||swJ&{) z1?Vcvke6LGxASt*cCLNtW0ChkrGwy0E&cT5101aSJ}7j%(g}BTi~@+_r7y{HUzE9= zLbr2%%N}E0VrBE|c|QZ>IRysD0C@;_s%-`tAP)ggwap*{Klzo$)Rm8R2GJHrF0`YjDI(=6jj3xqT0o0k zJ+a*guTi7Dkrd*qOlgj^HHwQgCf-I@Mvx(>w5@1T=b?A4kawKjJ_tmcW4RDCN}%s% z66KWUCY{)q+EXSiUSeMaqn*PGVr7zihW!ncHjStjzZ^dy%rquibLg_7pDs&M&yGVt zqCej>UFzGj3NmylJ%=8aPD=x9bZL#^PfLHaxoYoXEB;c)qbS_a2I!-9lyf0Cm2$^y z8ivxsEiHmD_k~bymHzXBdXdhfi3DhK>>=n*DDC2_>=Qn!2;C&;A&{PPn(@Cos*Kk9 j8UZ6<1dM diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_storage_usage.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_storage_usage.png deleted file mode 100644 index 8fac94c062897cb1aa8078c49650d61d8efc401a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1611 zcmV-R2DJH!P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS=wMj%lRCodHnoEcrMHt6tO~kBm zH3m(5W)VeA#27(EB;bM@CFbZsV-yU@$zTGa2ak%NH&5Ptpx`M8itND`=3-DZCNYSs zu3}!g%Lb#yJlVMZ{-z2lyH!2i)zdvaS|9wjdaA3w`s%;aRb5rnY9&hwBn6TJNr9w5 zQXnbt|5Tu_8{M9sp1z89uZ97`1ts{oNoa_C4eSHUXvrem2AcVM>&J4lLa0A?E z()pw@Cc(akQTPt_z&3$x= z2H^#mgl?N+P%ML8SBM~n;T<>)O|vNiQf$Lzgo=8^XjK25mtjq0;~Ip=U>r2AxbU&1 zLEGgrK3@kK)MIRfN}G7}_Qq7sT?b+2!qadR^4b^$Uxf{@64co!Q(fajzT{KB^O|B- z>>4LKZ#Z5A+o7GEqQJZG2xvO5)YOJ)OKqy{cBVco>S$0nTmnC}X?YL#H^ZeJZM=Xp zwGCT9v1FP0qW7@!hNFe>ZANQ9a&H|(jc4T}ob5ren3xn>$keBWvuhX3!O7M@3sdAj z1LqcWSzB?%W@1#VKHFL<7(A}=c_r@<+*8VVjg=LviJ4@U#m>a77Os4QvSx#2HTJI~ zO(|wj>@#h9R0DX??BKKYQ4SkWiO#I|b%?y;vn`d@dYtWQKtD@`K%aJb`n5LX^qkNQ z@~`yV+vdsZwJcvBe0}}5Us(e6TE{DiH%p*{o)(8ZdA*k9>w~Ya+5O@E)VAdsHEs}Kr#9_>MHF|#Ue_{r!(P{yL-RN76}f8& zWsiMA8&VYMnklBz$3AX%e4D<7QIjiJRKIumbVicl(yg+Ok*B%4e z8}#p&GnZ%o^$J8~b>LID#T4I7dN)q~FrT9ne5+0Ezqmht(TS-BV|#L{lUEJcN-g`j zK1dAHq@|1)w1fCLTwxq(vRIDqL*{dKf&<^yd)@Q>58h#C|;yehkY!kskNt`Ll4Ox8`y1*(?3r_mHnY^D#pMdl8d#$%5u`K`{ZcaeR{^W)xkm5$g2jO_gv&mNjZ^Hf1 z^;1@2m^E)>7gxrqfrAzBLsl!!JvFGnHo;QIO=Xv~qjPx0_#}+L5y)dZ zD0EG`z`WD^%t|=Akh~XRBNX|TXxh{(!q+DKhIAiH7M-q%K@*A=x>^U`1bPLrT*P%= zJ4V5m;CW&=(XLW1fvgjPyq4?d;2{XjfVOy6dWxGmNjLy{&r#6A&LkSwEb6@8n?#w3 zVT$^%z_SQ5PMXUK31mGYlm@j8@F+xYUs!(?r+e}LI=qH3df6;wQ3BZ(5K8}1{W@YD ztbzs51e+j;_u(!02x0z?4XTttZlj1bhtGGweIT)Jg?^~R^qB4dEmkGWPDClaB*9NB zC=eZ1=T@r_R(P>$1kIQNUTDDI317ijQ9+2WnTu6AqoX7Z zyb|gXu!FHu`;D`MwoNCww+|8Qjw2uAjrP-GH6$P63_x0}`UFClv{(%YlNPH1VbWrC zrZ7B4X|d{xf*@(JDnSrJYrnKuHQx^R-6$P002ov JPDHLkV1iah-8cXM diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_timer.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_timer.png deleted file mode 100644 index 14b0682aad93bf69ebfc9d24e1a456984cbcdf86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1945 zcmV;K2WI$*P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NT34%1ONa40RR91NB{r;0FW_8?*IS?14%?dRCodHoK0vIR}{w+jkPXn zg;Lut3b7Gwa3M%>VHF-(g+T1irJEE*A=?&_?z-2Nx~R*p1R?Hhp$)AR>O$A0V zXiZBu6-tv8*#~C9J@5}`ilj?ArF-AdWeKMb06n%>L2Qx@**ah)3jT5M1^5ztXvwt3!+|~E zGI$Q!CfStjtp^YFGvEbq^e+`_yz}O$u`vk4r?7Gxoc3DFH>|;01}i{g$_pTR4QR|7 z2k(Q!Ae0^>cm-&D`wB=`nm%Xz`Yg?eUMD$oU>y|EZwTB07eH{(l1=)kuXGgA1_FP3 zgsw(Uh%MScK z-9R=%=qH5UC~KpVJccH~au2V5rtPCj$}4n|Eg+jd(rdv76;zk+f+5{Gy^?dA_SWCf zv8i`1+4hlqK2$#95OFaD3VW!ZxlJ2Yt&iPp91SSGu^I!R*l>_=+SGycL}DO z2td98`Isfeq8Hoxgd$BJe#}}(t{WM1(DfeBlg5$iS_-L6=(*~YW=h4hH7%)Z2ql`| zSfpu1BZTschJlNXC`SppeNVT`wQQhRvvO{gWdy--^ zR{>o2qFd}^1mAMPsqz{VzW-9!16@sgy=FM6*c4-VBC~q&S_N5pR9;)}9vFyv2RZB5 zv8E-8(Yxr@>kiVBffJsC6TZ1>O ztVP4|$t3n|O}PZosyUE$1k$v|t@%fqG0b&h`5phYqmm}YoSXky2|AYUmDII0v(rd> z{#nY!ZYAi=Y%i`?3|^D0cMN3~&k(E3dS>*@#cm}iyU`{++SH3e{O)H^eBDrfJ!vzV z8ev&6y-9t!ilIa^+ zcTiAf8}j&gfSwSU05v(0+}(miF80s_X>JySLY|HxGF5!DVhT!-^}aJ+#e;x8-y@Tq z7p1$YO)@cP+)!%8zFmw#@hHeruOPN7D0zjU8IWGEcecgT6D|s&d(9b2l}8JWA*|g~ zYl|oNxJsdsi~#mdfcwB5Bv<`JMy#<*bRPy;Qp}oW6%&F_v%R^#P~3AkBovDg-&4zb zYmk=Qq9HtG@P?IT#bU*5$47S08yVKguCQCsRyz<}#Q>~RYUhI;M8QE|4V=@#N(NMr zxU|KcCB!wX^FRF@)- z%7+&Ut)e{o@s~m;Y6=iToZ~O@3+2%dP}PjTXLtOMdw?oQQuHHuJ)^AHNOGn?+#`6- zHw^6_;&jRIl_co~ut+Cet@({lRaCxw0rJVB8_|qoP4k$CmQ{GVl^Z$KStkJbkoZE8 zBl#Y8K8b;%PZ4e*Q|-m8MrLFa_?}iYZGJux_frJtKgK2!gEDN94otT8GAUbN$#Nv& zEmKZ7|63_Bs5{B`b4&c%e6^1@cf&}?=TP#oojWI+c?@ez@_oNS(-!sXgF5*Zcg)Eq z#k$4`y#lOnrNdv*Le(9hCC}hBZpkKn)Yn?9;b4nBDt(zg#f|99Fa zWAJqZMf+YWKzrqGUrL*LTEH3y+BnpC=1_W!;1!OzJPGa4njA^ev_x|^>vTTss3e=R z?OSJWEf0l;a8j!PS}Iuuu}L;$tLG;Lg--WF0H?L+HVcOKUsE(T1{M7QNRq~s4$zcD zrOrX>*jor~AhZM)fev7{_RmdPOAtYABNC>^?-8J5Z#vnffmsk~uokpeuA_2&`}a85 f-lg3P)X2d9gX;?_nmLIC00000NkvXXu0mjf)9!)< diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_timer_1h.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_timer_1h.png deleted file mode 100644 index 8325c20bed01604ae73f00003030282ee290ebdc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2621 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 Tzr%0;^>1TraW-{USCjt)Mdfj4 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/phototime.9.png b/TMessagesProj/src/main/res/drawable-xxhdpi/phototime.9.png deleted file mode 100644 index e493f511e8550ec77bb3cbbb2b88fad8b7af55d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 165 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 DyV+na diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/play_roundvideo.png b/TMessagesProj/src/main/res/drawable-xxhdpi/play_roundvideo.png deleted file mode 100644 index 5cdd11005dead41b26937f5c4f27c0a99787fb0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2684 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/player_new_play.png b/TMessagesProj/src/main/res/drawable-xxhdpi/player_new_play.png deleted file mode 100644 index 89ad196321d52e7297226818d5f7057ac76d626d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1275 zcmV56s7_A(z@Y6 zP((e6B6<^wdJ%VfQYv~YD!8GoqD5P9?ZH;Cg0{BS_oakpndDFYBuz5;23|7r&63QM zZ?aBOC`b?jLO=)z0U?kQ0%cKd$I#HwOte=C{e{}g%F4QVcK|10BBntCCG|~vo2(mqyFB=89B5iade+v}pEplqX7l9FF z_CqvQm0A#{4I5*Mr#ZS38}|%QPeW7EyrH3n5?wHX&V9i;_uxs^^#s;kbd^~IYILd@ zkvf2VZy3_B%*v2gv8sWw4TIzeG(lA$30syu)Xa-sx(nWV&umO0o@Ea;^ICvJGd%Sw zRBp}~?YJ&L4Q}fZc?+lw&{)GbnoC`Vyo%XN7`Njv@K}`@mrXYhHFM&P0B;D+L(|O} zamID_P&2phNF0DJ!DC~+cFqe>18xfxKFhsr7dC03+@v-0w90K?*Y_h6ASX67}%b+h$|fc%Fe8?Cv1KTi8y+5N4UTA+KV^mxQlz2si|dR}~0i6A!i0dWR%$ zVINq{{!`+iR#p{Aaw5iMXqGk0UrKfO^qU=gm`_hphtCi;gsZ zSbjpDfqn)cURM@<#_0#7Q6`UPd0tbVf)+&$lTh>Kp)Ke$Pdcsad>kP!9?HpLo1s;4 z!sHIp-9!0gy%9PHkUi{h+(BocoN&vTc8}tQXl`G}A>WG*?uC|*HcW!m%|rP#h_{UV zI4qH%3s8Pm!x?n^7%b6{^&!tE=SLyF+D#lL_hgnmlplF0%J(`O0J0`+ zFu7N=1e8-@&Ons_d5s&N#*mdE&yTnG8iLoB`UcFMj63ib8C#)Hue&p|2V$hjpSWCr zl>KyF1F)tT|CC^s|$c;+U4A+aCI%5gnPl*4VAX@rd5LjAeXZ(+t-1ccuqL3W_N z{7lf;?|{J%rb-F?tK)HKlF^ndK>$Eblt7c;0r7hv33dViGaKsi36;MLuC=!zX&V7R zs)BxaK;_@U&q32{RVC?00I({ci%>sg1YVrqg>v=V^+<2&0FVFn;5U+-hu(>MZ@z7m lAOwVf5D)@FKnNs3;6EOKRJ^3OFW3M8002ovPDHLkV1lO6Ki&WU diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/player_new_previous.png b/TMessagesProj/src/main/res/drawable-xxhdpi/player_new_previous.png deleted file mode 100644 index 3a68aad164c5cd80a8d42d4473cefe7ca13a9a4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 996 zcmeAS@N?(olHy`uVBq!ia0vp^At21b1|(&&1r7o!mUKs7M+SzC{oH>NSs56ZXM4Ih zhEy=Vz2o1}Qz&!%qpaBKm=lgW1FHqIG-V0}I}f>DnI?R((9kly6p8+S*@-ST_fK z4Xca!^+N6U31uS}wv+ch)%x^gdij5@x;lMV;H=lG`q?Ixvwupite#_0*Q<7VdAZ-4 zISCHRzfZ3J)V8XpUnOJhFU8d+;g(xh|1$mmUdLBQrCfXV%8#FKmz7+;+b6xTLV7{& zqV?J-f#?2J6~7BFH@99dU3&XWz2XGhCo|e9zH5t|IC`glb;{y*0k4YoIvu>jxZvJg--K5OOE|fn*c8qD z_kIHFF6FROcZ20lY<&=`?7dcD+V_WPtxT4a=PdZSJj{^wby6$S&X%~XTGv-*o=&Z6 zZMw<-Ksre-n19PnQLZKTa`YxGQ4edm;xm(lHCVp+%gvzqhOtvuF1MMm`D7#ud#AOJ z?WZ)L3xECnZ56rl*q&*e0S4QdD<*%bXg%}G@81;mV&1bacqUf+EL3A(+CDjD-K>`_ zURCl6J8`j%a{f60PYr-%AZ=g(@JUQ7tO@X^kHqipV?^vk=| z*i)z4Ij@*6;_Ll1N6&J_FP5)j(t9oUUOzwYG|LJG$J(RI`eQDfk2}o+n>pWRviE>D(y*4^lUuS;3y^6!{_*7OFS z=?u&d$S diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/plus.png b/TMessagesProj/src/main/res/drawable-xxhdpi/plus.png deleted file mode 100755 index c033b7a603d2c9fc8d57a2f46b51b115f9675005..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^W+2SS3?#R8|Ck4)*aCb)T>pbXXwBCgpa^40kY6x^ z!?PP{K#qi`i(^OyV=_aNy@O54%l`=<+9Rq~{1#_WTph{!GW%%-Pz{5ptDnm{r-UW| D1iU0C diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/popup_fixed.9.png b/TMessagesProj/src/main/res/drawable-xxhdpi/popup_fixed.9.png deleted file mode 100755 index 64a91e6500a88989d4bbd6a670cdc3956c240b1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1006 zcmeAS@N?(olHy`uVBq!ia0vp^hk!VVgBeJgD*t&4q>csngt!7}AovfV=ta(*JNM(q zkAMIE{r~^}ym|A044};r64ME9-@ctRY0{rRfBO3RaH)A&^U?;W)2SrLFPP!~e?}%| z7FITP4o)s^9$r3v0YM>Q5m7O52}vm#Svh$HC1n*gb(`&<|J#3*{;H^{rK78-zsv2D z+ZPRO10xeN^Rl{K(-|0;rh2+KhEy=Vz1>2C|~dKE=ZPY)-dNfTOBR1%drqi2L}%;TM0@%~hjBvhnIe3 zGPyC#aNM^jN0)Km{WWVh96c=;#{W=YmF~QjyGf>PZ}uf@Xa2aoao>Y-33|2evXy;C#olgm2+CNk$d+1^==lR?ly` zcf*>IBbdp6LmwPLz@`>MbMxr6eDy_G_&^~Kv79`P@nvN@sUeER+U4(B*n&U|1ySe4Aw za9KVylT9hYgwgQ6$AcFF2d$oPeBqR1I#|TWw{VuC)H=)8Rfr!NJ(cxFt#Gi5$On(Xj<9SboM&tZ8`k_joXO2h;Tn)msd6R+bB&;b`Lg z_0Z61Yx#|{48G=*IDZw-QwUJ6xp&s!rpL8#XX~Hy-P1WP-4y(9pUJ(un){!`t;cKY zU%x&2`!9q0s(Wu=X8!)OnQfE2WI=xU?Aopg) zTE<&b7&@3PxPI$kpZC9u|M`ub4`gq;J#@DGlW(3OT`AhbyF=-Wm{``t^?fFq|7T1G lrXy(39B^$F&_1-jo>6zknj;gtvvWWh#naW#Wt~$(698m9Z+8Fy diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/popup_fixed_top.9.png b/TMessagesProj/src/main/res/drawable-xxhdpi/popup_fixed_top.9.png deleted file mode 100755 index eb71ef90d694eb5db02cb3f6d49ebb66cdba4f8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 457 zcmeAS@N?(olHy`uVBq!ia0vp^hk!VVgBeJgD*t&4q!I#rLR|m<{|{sWF_1wEpr7j6 z3ba6>B*-rqXoq6PlCy7q{%4Ln`p@M$$4t>vH@HsBX1aDnDf9ffx4*AMSOV4l@N{tu zsbGA2>uTZC01?)}jU_(~o&QDpF(q3SdG0=SS8~n&b#*~|L$2Om)yTle#KIw<;LyO} zs0N`Koo;_UY_XGd_OXTUZ@rSfdiDBGfyvQJMVkNfI_c#d^_u5$WQGIhK3cuFktX>^>bP0l+XkKn{45f diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/regbtn2.9.png b/TMessagesProj/src/main/res/drawable-xxhdpi/regbtn2.9.png deleted file mode 100644 index b8c21d82a12e586416f4f8e57f1167be8bd5549a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 312 zcmV-80muG{P)> zM;az4HSDY~mTFiHt6?*!-?18I`V;rx_Vi{OMgOh!+UPK{{tg3LtK*yhffv{=I3n0O z4pp8V$50RF4DQ;Q-d;qT8Qc|(ItLt~LPref(cl*OQ721I0!?4VdS!-#uAfN&0000< KMNUMnLSTaa{)SHg diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/regbtn2_pressed.9.png b/TMessagesProj/src/main/res/drawable-xxhdpi/regbtn2_pressed.9.png deleted file mode 100644 index 4ee56e4615d0de378148ca93b1ee59cc2278259a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 313 zcmV-90mlA`P)kmU++5)U9JkWFnIo}Vixre>VBz+22DKbGW! z1}!qO=h-rnB1?}+(U0J{$Rc_cF-l2&Nxc_h1BLXy& z5l^YG4Mu2YBQ}49RT!X!45&_py+8|Veuu3P48j6dao7$rv5Ui6$V3~5^^l1^4m&_5 zKH@MrDPd=Yu~foJSP7d>`Hqz^+n>1Ywx@I5DB5nV*G7kt^-mbkI3C}O54^y3!4bjM zaj5d_IEH#SXK>d{^!5UptifGk)Y;<*WjdlqhZ?s?k2+a$^4;_WvNe$R@oYu?00000 LNkvXXu0mjf6G4Ii diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/replyvideo.png b/TMessagesProj/src/main/res/drawable-xxhdpi/replyvideo.png deleted file mode 100644 index a1374752ad6dc0fc89089446d7c1ffe7b35a14e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 787 zcmV+u1MK{XP)A!3ycIvQ={j&dEO#9bmBA| ztK{XzxoQ>YYG=v2<2^OPydcOnRbER^ws^y5 zzO&CQ7yX^fX8ZgLBc?R#s+7Slg3h!{lG{GOGzot3k&0zD)NcaQHFM@ zg}j(-gD5Kh?U=;e9?Uk11Ub}@Qgg13=~kK;r`oi&FvrF;T8lOo!G(3 z#xd+DQF{=VYNW>`6fXu=>^N3wkmD-kND?OG`AClpCoC$f8F~`aZk+#PVS*HuQ0e#J z{9p7gDLHP^r-jl=hf_-0&C_(;Jg+~#IItpQDO0CKo31aPr`EETwXEeL$Y1y(-h`Sn RG^+pr002ovPDHLkV1m8;W5WOd diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/s_pause.png b/TMessagesProj/src/main/res/drawable-xxhdpi/s_pause.png deleted file mode 100644 index 5ff186078f639a694c364f3b16d62997c3b12f09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 237 zcmV;Ion{}GeYf(Kz@K~UI0QQ2)8#yxf0yv(fn zYQCt#Q)5r2!t3jK-{dB@^=g@6!sG7DFr%&YzGZB*>>=SRUKxL!l<`eZ^xfyjSDqS( z{)7mL5D_3<84@8PK)Ny{LPUUcWk`gG0O`t*2oV9&l_3!#0;DTLB18m8SB8E|=%C3j n`ukqL3S7G_y-a!cy3+Rq+~gz2-P?}j00000NkvXXu0mjf*J5Ga diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/s_play.png b/TMessagesProj/src/main/res/drawable-xxhdpi/s_play.png deleted file mode 100644 index 422195a98a450f19e2114dbe999b2ea54c4cc628..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 624 zcmV-$0+0QPP)?YZn@xY(inK`@X%bCsY%%rBqLGy$u zm&>cYZ#a#mR93jLCtKf|=>y3}<{PEQ7aNs@yVB=feSW-?Pc#0?e6+L_*{j!kAt z#gtO!X(wcC12yX%a%?M8I!B7iBw4#qjV?e5O9piTmX?aG;gi_9wNjZ-4X!{bo_y)b z@V!8jaB28b01Yc3NtMmv%MyPR_2|DmfvT4e3nmZGSzu26Vw=v?HxR3+w-}H>n#`0u z9Ocz=C4qy?M5f*WSVDtgfby`sd*U>i%UU+~pEWS+oBQf-kT!0X@xL2ppSSswnVaVyMfn8-areL8V8yur0000< KMNUMnLSTZVz#AR_ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/scroll_tip.png b/TMessagesProj/src/main/res/drawable-xxhdpi/scroll_tip.png deleted file mode 100755 index 354efbee9a1ac1a181f9768366c519340496b312..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 483 zcmV<90UZ8`P)$*fBN}Q5w8(M|2Zt*Mx*M*!2oUcv?Who``sX!U{A8!){Q}0?onT zdg##x687i_vO`TNZ7N>Pb{rO{#-1gjgZO#SN&<#KKm#A}t5DUx1(ttXU4i(hXi!M{ zWJv361)n_>cA2CAxmH4TyJaFmU8%Y@NJy^Z21;8hEFnUv6%=*731O*aC~ZP9m&J>j zU|J5vzhXTWz&EiA#<=R2^|CyU)y+Qg(sLOqtPKx(#LsO(?E`ihP?@GaACZ z=ZB?66da%eqgB-p_XaIw4LP%cP8ljyE%D&JYhYG`vKsU;fAEsDmGBoC2|DIW$+k%@ zQ~Pw3RFA_&=8&F}>9Q~XkOR6}I&Hq6di20L%Dz(4;g(M&(zjg+G7OZmU&R}6;xy8n z)-$=kxpfPaw*`mf-PZM-u?CGf_i_y-CK5EE6 Z^#?pS5$r4kNo5KPu@Xdrg`!|cmoy<|wDKK% z8^Jg54J@<}40wZp7rg7{+u|&TVV5-7JyYz!;rw%k%>V5$nVk)SvXv{~(F#OS)FmE> z8)DBC4S*HmpOE&4XqrJ`ejp?&|DtVH3gasAqF_XRBN`?vh4B{gB_t|;qBpIeb};`@ zFe2X(8&**Jn8*9aZEqCTte{$$$Nx09JyTee{={)F-o^Bkwlbx&=b z{d1KvmQRTX%sLn!87uZ+#L%Bt2QdD;T!G2De!MbP?DYdfe=cai_;ZB?#;;30Kv|zb zyZIa_V`c>??L+Z!%+K;22FjmL>3koxoZaIU7y*-?ejz(zd?5e;002ovPDHLkV1g-( B#GU{E diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/settings_noresults.png b/TMessagesProj/src/main/res/drawable-xxhdpi/settings_noresults.png deleted file mode 100644 index d7a43651a21eac280fb47c65fe1c16219fd8d7ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4534 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 F{{zpc(#8M) diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/sheet_shadow.9.png b/TMessagesProj/src/main/res/drawable-xxhdpi/sheet_shadow.9.png deleted file mode 100644 index ef680ecb6099d0e28375e8768b4172270e8b48a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 486 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 N002ovPDHLkV1fdB6Mg^y diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/switch_to_on1.9.png b/TMessagesProj/src/main/res/drawable-xxhdpi/switch_to_on1.9.png deleted file mode 100644 index da2e30b1817dd94850236a8c45359c80853f2f21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1657 zcmX|Cc{G%37@v}&2ysuFEF()M*_T}1B+GD78Cq4-l@j7Mb7fFtsboqDsTi5trZ6SB z(b%%nxigk5S*95?mM}}QjAaJ*xijbVJLh}e-}8Ik=lOo``^Wc@4tl#Ouidg1fj}s` zqn&+V#r*#$$U*E3{nrA4Sh?z;r>_g7fMwYtjiaNZGcz*_3kwp7WJ!u;DWE763PA_0 zsHjLJ5&r(w--`CUtizg;2>-s8ykbjVzD5y+3c>a zE+Fmg?I|fKVzC(J!+Rler63Rpvi9#%;PH4_%IEW84|oG~baVipoSc*?6%`fL)z$DW zNTCVb0s(+Mh~OL`6%a5A+GQL(Knfg`c`2r*robxPLw9#Kg+hUn%pNF(g@uZWif}qv zFC5L!&+q4`{{DVYpk!%j343TX8t`E$fS^#Q>FH@xQ&Zsa@$s^mSy@@oP9~E<%*)Gz z2=@skB9RETt*orzICge+pcfPrfI_8Gf$Qq(wzaj%CRkWl(CPG9DHsd}RI{_QIUJ76 zWJE+nZEY=+$>i~P&<;27(=F_j0sncR5*YO_A8!m|d3nW3Ig`M2S`S~mylPM8kn$zw z`n8ecZoO!wheoY!J8VXsCvAS%qIf$ubgrSuA2_JS9=Li%gEvlC$NK8BHb;5H+B!^$ zoV9xWM^$FO!Un;pqPlomL->_hL&=G7+%mfH1xAarZBvrTgv!?B+rJnM{h^claBvAAko z>x9yQI4fXsk39^yMXxT!=(Xrsr!zhsp@q7V;tU^|Y7E;pIFS_o zOc?g?`9rvmgD|QHz%EMZ#dF}$0`rG?Xj|rZycjGdG zUQOeCn$&*;Tlkex+Isyf$fg=$hIE`hk@{eDi{S@W(q6JPhkz?r|0p_P|G2HLeKyM8 zNYndGE0-PUC038Fl(+kSD!d^+Kc*#q@d44II-<717pmRO`3cTdsAgJ`>f4 zLQ2aLH>>bPI`rMUZtmXLNa5SnZTs~0s|uln5J`4Chkurf_Pl<=>1|LAI@EZ}Mft4P zzL{2`>qxx0Kn>*~b({j5bS-Z6N60%ITP)8KwA z{%D1;+03naB#97El@!f>|$k+(;QUe>}(t^NvX=w@{P>VxTX3C$O zKOA{^R`i0q#1ggyyV`1g4yUZR$!MTmt9uskgn)}Cn3V=478N@ziFL2@Dlc;e_!91< z_QWJt!v7mPJD#nhk7cj6eV4qa6tlOytcq4y9;>j2$^OdnKmE8Xa)hrGQXh78>&C8e zFM5kWvs1e@CkH-TEn2)azv7EYr+!C9i+GwDB}FV!QP)G7Q=YFey^@;ZHT}+J99c#V zH?Faw7JnfWs{c5Wdvk|D*wc?yNYa^Wc#j?5R;Q@7R&m*>=1aRZ8;Nd==M0IO`bx7j dm3y9N5Qz8r&P`>T0;T^DcNcHxH%{1u{{S$GaAN=f diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/switch_to_on2.9.png b/TMessagesProj/src/main/res/drawable-xxhdpi/switch_to_on2.9.png deleted file mode 100644 index da2e30b1817dd94850236a8c45359c80853f2f21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1657 zcmX|Cc{G%37@v}&2ysuFEF()M*_T}1B+GD78Cq4-l@j7Mb7fFtsboqDsTi5trZ6SB z(b%%nxigk5S*95?mM}}QjAaJ*xijbVJLh}e-}8Ik=lOo``^Wc@4tl#Ouidg1fj}s` zqn&+V#r*#$$U*E3{nrA4Sh?z;r>_g7fMwYtjiaNZGcz*_3kwp7WJ!u;DWE763PA_0 zsHjLJ5&r(w--`CUtizg;2>-s8ykbjVzD5y+3c>a zE+Fmg?I|fKVzC(J!+Rler63Rpvi9#%;PH4_%IEW84|oG~baVipoSc*?6%`fL)z$DW zNTCVb0s(+Mh~OL`6%a5A+GQL(Knfg`c`2r*robxPLw9#Kg+hUn%pNF(g@uZWif}qv zFC5L!&+q4`{{DVYpk!%j343TX8t`E$fS^#Q>FH@xQ&Zsa@$s^mSy@@oP9~E<%*)Gz z2=@skB9RETt*orzICge+pcfPrfI_8Gf$Qq(wzaj%CRkWl(CPG9DHsd}RI{_QIUJ76 zWJE+nZEY=+$>i~P&<;27(=F_j0sncR5*YO_A8!m|d3nW3Ig`M2S`S~mylPM8kn$zw z`n8ecZoO!wheoY!J8VXsCvAS%qIf$ubgrSuA2_JS9=Li%gEvlC$NK8BHb;5H+B!^$ zoV9xWM^$FO!Un;pqPlomL->_hL&=G7+%mfH1xAarZBvrTgv!?B+rJnM{h^claBvAAko z>x9yQI4fXsk39^yMXxT!=(Xrsr!zhsp@q7V;tU^|Y7E;pIFS_o zOc?g?`9rvmgD|QHz%EMZ#dF}$0`rG?Xj|rZycjGdG zUQOeCn$&*;Tlkex+Isyf$fg=$hIE`hk@{eDi{S@W(q6JPhkz?r|0p_P|G2HLeKyM8 zNYndGE0-PUC038Fl(+kSD!d^+Kc*#q@d44II-<717pmRO`3cTdsAgJ`>f4 zLQ2aLH>>bPI`rMUZtmXLNa5SnZTs~0s|uln5J`4Chkurf_Pl<=>1|LAI@EZ}Mft4P zzL{2`>qxx0Kn>*~b({j5bS-Z6N60%ITP)8KwA z{%D1;+03naB#97El@!f>|$k+(;QUe>}(t^NvX=w@{P>VxTX3C$O zKOA{^R`i0q#1ggyyV`1g4yUZR$!MTmt9uskgn)}Cn3V=478N@ziFL2@Dlc;e_!91< z_QWJt!v7mPJD#nhk7cj6eV4qa6tlOytcq4y9;>j2$^OdnKmE8Xa)hrGQXh78>&C8e zFM5kWvs1e@CkH-TEn2)azv7EYr+!C9i+GwDB}FV!QP)G7Q=YFey^@;ZHT}+J99c#V zH?Faw7JnfWs{c5Wdvk|D*wc?yNYa^Wc#j?5R;Q@7R&m*>=1aRZ8;Nd==M0IO`bx7j dm3y9N5Qz8r&P`>T0;T^DcNcHxH%{1u{{S$GaAN=f diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/switch_track.9.png b/TMessagesProj/src/main/res/drawable-xxhdpi/switch_track.9.png deleted file mode 100644 index e76f3c8220896d3670082750fecd579eb5b29de4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 622 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/video_pause1.png b/TMessagesProj/src/main/res/drawable-xxhdpi/video_pause1.png deleted file mode 100644 index 36dd02edf5343c1ff6aa56c889144f9d029c1e32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1044 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/voice_volume_muted.png b/TMessagesProj/src/main/res/drawable-xxhdpi/voice_volume_muted.png deleted file mode 100644 index 7bb1da0e7221eba4512bc31d207cee09fc9e64a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1472 zcmV;x1wZPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91V4wp41ONa40RR91NB{r;09b-MivR!xDoI2^RCodHoLz`jRTRhPstK8- z<3m}XVGog$h&?okRD&W!4pas`L?B4{BKSr1R`}q&_#j#jJx@eWi709>`d|c6jXhLQ zg2gz3*pT=^=|EGCzoqx$p3U0l>~rs#nKNgv1^+qctiATycm4l&pL6c{n654}W55_N z28;n?z!)$FjDZ{mCMG84gF$c;{0!FSbg||#8G!KjfouP;(O2despXniu;3mq{vozc zB0_(o(fHbHD`k`1i%29h?E!EDoMo&rmgyN}YzCT@IujV60d|2O!T-Rut85$sOVU$- ziYa`b%Z9UFiU{PB_V#EhIxgrqrAUFa-Cg=W-WsG40gvf~y;Z?}}F2p?k6F`1l2aR?UAjnR$ z0g^&9A+*1z%fzQ(ZbWVqAde(z&k#Y#cI`GBAH?Kr<~{9pZmy?w5T@w4;4SbI*b^d; zw$MzV>8_3O_svj$%};#VGXMe}2L9!Oc0`bG{&tPzEML+BQ2ZhwXDOPsBSPWJ77U#3 z450Y^8uN~C%0)<40196QWS{Mu>`J}`pMycLGPDb!Ep$wXo(beg^B_#&?*QL~xEDi& zYkuN85`q4;+6B$gNDBD0n;!?bJ@`!^UUd`y5e)-MW9#;2QummP2=Jsr+F8Yy>oO7U zQ&dC%?N{pU`>BepnF#mzDk4BJh9ja)gs!d`6+kpfU4$7IAaxNcAwbF^R7QYQMW~bj zF(MGNSmNqpl@maS%{eeXTNm=Bj!Ft3A1p%z?e~aunUz*q0ffyA5oRUX+J~;R04a!2 zc>y9tSgn1#YUSfHusky2TmN(x$>5<&+46j7y|1ED;EW3(VrPgDeN$&Tzci(dMd9*v zvTyH}Hb8+ye2CCYsILeVt=$j)9>2W1HSJax5gM_~QLsGxbV`XI!gmP#4zlhK{KaYI zh|<4pmxw^;50wNr@lDx_gUWbQ@1j_FqWM?QiOEyXZ^+`4-UTzh#f>uASrWCJxZU&F#zuzDXk6N|4$Low`qkbKF-yS^ z2-#5@TD0Q{vOx{4g<{|i6M@Tz6j&^R>btJeGEkG23fDM(yZF~BIJ-^2e=F_ zg13wGt$i$nYzA^VTEucsU29KVnFYdpFOVN*F?OKLu`O4V0hoUrXtzLHqR79j*;)s} zLf398Q5z&b%?FVi|4)F0;4+Z6a*lH?=s%Wb#(*(k3>X8(fH7bU7z4(DF<=ZB1I9ox a2JQf~ohb9`#G@+!0000Gcd3Sc)B=- zR4~4sZJQwyC~&;k(Wl4lAiv0!hz=ocS3yMuDOT^*9A=Et(%g(H@7$DBe8nmCkxR5o=8^|Z!&Ua0uzCKMs}{_VNjyL}6-nd{%}omshg=lv&T-@lbb zN1f?u5Hw(NJHR2qsGPt8;Ut7{hNP8d3rerPnswXbes|d--3+GQMT#X`gI3l&ySnBg z3q!o4df=?T3Om+cyscMjyI|Ww>C7j>8~69{PnC;W%)n60xobYd8p(eunYoMqwOzU< z*zsa%+Ya^TL74|lAN4YCVehRv(B)lbeEg!+7OtOV{^zAWmQUHl=J5N1{*%p~bN+f7 zoUyj)e0)+yTAP!hh{3nAq3gBwt5WZWlbg3>7gc2~Q)Sp2R&s9Xj2YpQ<-cD&+|Ksn zKt?UYl-LuwBAbr0OlyB7xS6fxLCQ~79Vth}$;V2TTvg2D^m&wt4>{G5MB0Y(i+C2 z8$(04v8^x=ou0z0(YJQhCR2yjl{-|j9SU*5m)*ecvxa{{@da0rP1{+n?JoTo$sD8c^$cT`$jP;@?W7OyRF0fqxm*3B zt%mya8y4LR4&N6S@<$Y&?&Cv+2~&0Jlo+Yz~HM z*{ZcI^L#e1-Y9iomdpx0SN=&Q#>d1>N_Ewn7!Evjs8(g(BeSD_;T8Qn!P#3wrZW_j zFLeAOchWKH3)fsn>AN+vr4gABks|{Hf3UAG6M9lFsq+k2L@;=|`njxgN@xNAljrR? diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/wall_selection.9.png b/TMessagesProj/src/main/res/drawable-xxhdpi/wall_selection.9.png deleted file mode 100644 index 475ee47fceb4664df732a00005b19b4357454032..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4U=AJH&Ar-fh6AtkHQ+BL*V9(m{ z@c#4P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91Dxd=Z1ONa40RR91Bme*a0Bb56Y5)KOL`g(JR9Fe^m_JMtaTLejk1KK< zcW7cexHuRz4nk@$x=1DHK#9-*iJ$t4aZgceZ{ zMQx(S)d4uJ&-V@*kKXmlpSCoS-_YORd++o6_TKOJT7cd1pDG~AY2S@^p;Gk+2Z*Tw zKqMEJjO%ZElE0YI#~U!&{RKMCUgy>o0IVQ`Md#K&T{jvaERZ@E?1hlL{u2u*q zGW{I~wUi8~_vsy64`~r%sw_ZRNiCqgAegfmpiGSjQ>KBJGyNS?v@w2YuO`*@xk3Vb zHw>dw?@rF|C}{Id@S(4Egd+QN1|(A>Kte2GhaO8VWX8BIxuU0r>S|F@`-B@LVoI1s z=V)wt9c0NtEhQCggaW6Do!bi{CdD$eyFv20k|}B_S*_j40hyxU=^TqqF4*Di?b3k8 zL6RlyIh~UsyK}3JIE`kyeLOn##W80aC^~5K!y|r_YHqthl8T=UV2KL{ZvCQxT1v`FFGaT#l9Z(Aj!Z;12Fc(>1H~$3kRaQ# z)uD58#(>4J9-aA`J?GUgIOxg2qx-8>xtFpa2PA>aV;Up+h0Q_o1_};Zt;qwV~~cXagJ`B@OB^z z0?JBCKDhEqwvS%GF`G?rLkXWJ>;QOaU~rdizf0O=FVrGBU=XL za}sfDA^eUfO+Qgg*W@|AZ z*|#TXC|+MLBuOXrR4-75q%4RMjDNpzyw-1J&hs5j8;~NSue}U&7F29V_V1}EFR=a` z2n2`dFpqNIUaWi)7SHKjo4>p5b~e)XRFn<8y8_0a-;c95}*U4wnLw{YrM{ zx!ONQAnkAY`D~AJU>~hHC;+Ec%yjHcG&z^+nceYS1q!6VU%2QqPx}6&1^@s607*qo IM6N<$f`QkkegFUf diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/widget_clock.png b/TMessagesProj/src/main/res/drawable-xxhdpi/widget_clock.png deleted file mode 100644 index 1e1fe903981724154da4faafcb84b1a157b4d3a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1357 zcmV-T1+w~yP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91B%lKT1ONa40RR91Bme*a04fgS`~Uz1w@E}nR9FecSWRqOMG)RyJH`oh zeIOtesjc7;Xc1f};-^8CN>TYag(^)GLr|hZ4m5B@AW#H?V?=2=ghL{t*p3rO!~swR z{ZkVvRC+-I$_3PLgIrvfG;Qo1zIo23yIVW9TU&jXo&TBlc6N5=Nm1i7K0bb5Q&ZDk zlCoV2v5iP>l~Tmm43Wr5Nf$|o-zCx9%F4>I-rnB7YHxsSwx}ktLkZCf{hej>&s|wsda=L1|6iYfLqHr%wB^n-U_9Up zlctY^&{I7o&qw0_vAp!((|%A+KqDg~EwPR96UdjxZ38$x zr?t=@zTDk?+@@CxPo&e&D52iNY20P&Ag_MPUCQnr7#LVG^soVVjm6`KrEr76DVgc% zKCsW0v*C1l@+;)oO92hC-6dpKU*xzW3k800_6hJcV-s6le1g*?|I@x3y(%24!nKZRK|pP7 zZC!Y~ZMKjmPTr4aYT!k8d`C9Xn+Zwp~22*9C%G0I1@-37h}a zbr#=Ag^Z0i2G&!KU0g}YWb%F$ibS3R!#e&nUu~Un4AzJgebBt6CPgT;S0NIonsNoU zgc=JHePKJ`Sdc^VA)Ba(&e?b);e1}6ckGkc9>)3J>}(j(-;Pj?NP04ZTfuwE)HAKG zUKAp_CXCazRhj0>P|ZbY@VcyJ3T8H&z3kcF5FC4tcw14Vj0jo>69u;r2Ci!Lu7Z*} zWn|*<_y$k@av1r;Idhj`U>`RFUNm^6^;WKzNF=hwwvXgnP-w<~vx$Ircz7dG&lmlw zv=noWM=4)*@J1q@FMOeSB?^UO@M#@YxwF{mH8K(*iawkcmpB%cNF@G5JU_bbRdDmV zw0dKn4~$D3OK|K->(6X=+yislY18TnS}etpt!nyGfJQu9QK)^g18iISh1ocz+E z-2xKW@~#mS=25gF-y5^e)RD_(4`B@2&eMPqz?a&WN@q?9DtrLN6NX;P$~hxs=zX*o zyKKGHG058)TLN%B2gQkriHDU6clim-E>UMH4~ix>w6*tyBX@j@H+t02+|?bWbGclW z`LS3mzBWpeXvg62imO+|5X|}fwW}}SSIs{@A3jSz!^6YPn>OA135?$UpAB}1*#BpR z3LQb@H_ZCBTqT&dNa(_#oxr7Z%6=hR*!-|UVh*CAdjhOvW5- z+qMr^ZP+OC*c1*&p2t?U!ySHNNwg5OvB;N~055=c0g=q*^Vhzs^_SlN$r#iN{5@6b P00000NkvXXu0mjfTaav* diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/widget_halfcheck.png b/TMessagesProj/src/main/res/drawable-xxhdpi/widget_halfcheck.png deleted file mode 100644 index 886c984114ffbb1d2ca8d3edda413766f85bc3d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1102 zcmV-U1hM;xP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91Dxd=Z1ONa40RR91Bme*a0Bb56Y5)KOxJg7oR9Fe^m`i9AK^VtpCTS5{ zDvI>r1H8A*13~f7B-n$Xf|>+D3x)bB9y}=0)~0V;!N<{yv_6ok5VJWHvpyjXmg4tzDz*;f zIz2+qwo zQ0NYOqQgSSR5Kned;`mU1Lxp1X(oW?aZlutrmb7)or=9n1}U86gtwKME+G6&$Q^yC7mDtvOR;v!Ak{eu&>@2q&_#7r-6sk4>D>}-&iUD}H~K)PiCEDb zbp`D0=!*dofXv|%znlwFfELA3u}?B}3lb?auY68wPZ!)#N6^|PgA`8U!nu;qNe#51 zjye@uT5)w7 zAd_>FccPO^h7`F}N9zODLyXdwIIubu#L)^8iNoQOGc);sWV$nG?W2Ts%QQ6NJZ|Rd zYf-9a394WwN-t@U;yL`hi@ zoPw|vJ^J|K8>eO59l4{|meWqH`n~sdY_8m1J&AC3{Q!7)o#lM~=!ExuOs|QyD0em| zfkP`gd0W#UC*T&6FO)X)weEE)c6e0Xq8wJ67rA zqAd=+VR!VVOj}JXE2tP$b=FiijLx0NmjvM#DCf=N-sniaXIG-<1Qi1=I{O-(-JdN1 zP6v*Quzjr-jx0}JP|-8WKx%u+HD;_S_G{t$ToVv@ zoADe%VyvUkkRs=j|I(Qq{TAPHr25&WGFpxO_FyTdI7u{xJ+Y@5@EeT{2iDese|5@R U2M!$RsQ>@~07*qoM6N<$g87H$&;S4c diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/widget_muted.png b/TMessagesProj/src/main/res/drawable-xxhdpi/widget_muted.png deleted file mode 100644 index 3e3c394b8681bb6f2b6f2b1bc12f296a1a98d438..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 783 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42G$TlC0TWzSWdSpS4N|DZ_xKM315>4^i(^Ox z=iBLy*};wi4e9ejgFY-^)MorEcu%x*PtpasFA08IU&w!W~$N8z#@ZIaA+w_xoIiZ^z$>I%MXR z?kZ<|XeO}t=7NWpz7|y~yuCa@d1i}1-pu!#8!DcLoy<`yTzo{wv9mM(kS{Xb>t1BQ?DZu+!M zHwmy#n8J`*&fd{0wPH`A#ecp90V_NY6y!a>vDt~wE_KhwO8v;c_sjN~@3IbiKKt?J z<>kF^qYv-e*j*E_xXH6NOdhFb#J1;rA#IQ8=?`OOJ*lX#g zqn~#eG}u?%|6OFPSjFP-cW+Zs+`7jKv)*o%a@%2Zs-NRpp~Z~;$3L`xf6#nf zw)A~)jALEj&qo%bpDaD@*8KG8722g<8uaYjMW2P4rE@}V+ldOOb2Vm_?UFy{bav{z z2zkrZjTMC)Q+yt+o>F-vZh~FdIhG^c#~p97lx+)mmjA1m>4)2dJKN1HSDS5($#@zl zZ983hvG1apwNs5me=O`&tTo>5!!|L1P0g`M{L()C|JOx-@CJ2OS$z_yc?e33p00i_ I>zopr0Cb*CXaE2J diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/widget_online.png b/TMessagesProj/src/main/res/drawable-xxhdpi/widget_online.png deleted file mode 100644 index b2d8a7a61f5f3b890c2a6a33ff70b31294b5ebb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 499 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 Tst7ZE00000NkvXXu0mjfBH~YV diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/widgets_dark_badgebg.9.png b/TMessagesProj/src/main/res/drawable-xxhdpi/widgets_dark_badgebg.9.png deleted file mode 100644 index 7f38c9e386782f17db2d744843051d37cabb081a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1919 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 diff --git a/TMessagesProj/src/main/res/drawable-xxxhdpi/sheet_shadow.9.png b/TMessagesProj/src/main/res/drawable-xxxhdpi/sheet_shadow.9.png deleted file mode 100644 index 66300db8465e2221e5f90c78f8da5edfc4466b0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 639 zcmeAS@N?(olHy`uVBq!ia0vp^RUpj40wiw*^yf1$Fu8fUIEGZ*dOJHY=&*u-TV&Vu z5C5)zlH;{dYjKdS-!LV|{r>3*=U!;+sq;S2*CDOGGh2`ys2dBY7pgpb|BLm>sue{m z-|ej0kxewQ$stoV@DK~e` zsle|t{9P*xH0~E!A4yNy`?Q9`eft!3npKg|og=YGulWomuV=|8HgeSaNp{rV}gChpSgf|By`_-c!J_wL?G{JZd8 zucxO~t>oX6A0qE@y_|bd@8`SFUB0)v%A895G}q6$JZbCOCG2u@_C?>=JGbP!(M#*+ zo3qQ3@A=#^uReHAck8k}uh--*oyxr=?MAe_-TMP;mTVVX@r@-;F-AYOOum@6rsd() z*sh&hs#tD)+IIG*?D;yb_lrLHUHvKP{qn|~EpMhwTX(4JY^8hl z%Nu82o2bA1GU0QQ+FqNKxoOkC@AmYMU4DDYcHzRZOWty=NonoprYxOP6XWy$?B97? xL!+lG(0aFnOTX>XdCzhKtDMzuPhQxupYi54_D}VWt3XMN!PC{xWt~$(69Bi!J(~ak diff --git a/TMessagesProj/src/main/res/drawable/catstile.jpg b/TMessagesProj/src/main/res/drawable/catstile.jpg deleted file mode 100644 index c42d45d3e977d2273035bef61afd7d5626e894c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31831 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 - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/raw/auto_night_off.json b/TMessagesProj/src/main/res/raw/auto_night_off.json new file mode 100644 index 000000000..a729365e2 --- /dev/null +++ b/TMessagesProj/src/main/res/raw/auto_night_off.json @@ -0,0 +1 @@ +{"v":"5.10.1","fr":60,"ip":0,"op":180,"w":512,"h":512,"nm":"Comp 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Exclude","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.6],"y":[0]},"t":10,"s":[0]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":41,"s":[33]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[256,256,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-141.385],[141.385,0],[0,141.385],[-141.385,0]],"o":[[0,141.385],[-141.385,0],[0,-141.385],[141.385,0]],"v":[[256,0],[0,256],[-256,0],[0,-256]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,-88.366],[88.366,0],[0,88.366],[-88.366,0]],"o":[[0,88.366],[-88.366,0],[0,-88.366],[88.366,0]],"v":[[160,0],[0,160],[-160,0],[0,-160]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":10,"s":[0,1,1,1,0.5,1,1,1,1,1,1,1,0,0,0,0,0,0,0.31,0,0.62,0,0.623,0.5,0.625,1,0.633,0.5,0.64,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":41,"s":[0,1,1,1,0.5,1,1,1,1,1,1,1,0,0,0,0,0,0,0.31,0,0.62,0,0.623,0.5,0.625,1,0.812,0.5,1,0]},{"t":100,"s":[0,1,1,1,0.5,1,1,1,1,1,1,1,0,0,0,0,0,0,0.31,0,0.62,0,0.623,0.5,0.625,1,0.633,0.5,0.64,0]}],"ix":9}},"s":{"a":0,"k":[0,0],"ix":5},"e":{"a":0,"k":[256,0],"ix":6},"t":2,"h":{"a":0,"k":0,"ix":7},"a":{"a":0,"k":0,"ix":8},"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Exclude","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":180,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Ellipse 16","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[256,256,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"i","pt":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":40,"s":[{"i":[[-44.944,0],[-28.764,-28.764],[0,-44.944],[28.764,-28.764],[44.944,0],[28.764,28.764],[0,44.944],[-28.764,28.764]],"o":[[44.944,0],[28.764,28.764],[0,44.944],[-28.764,28.764],[-44.944,0],[-28.764,-28.764],[0,-44.944],[28.764,-28.764]],"v":[[1.078,-161.25],[114.786,-114.958],[161.078,-1.25],[114.786,112.458],[1.078,158.75],[-112.63,112.458],[-158.922,-1.25],[-112.63,-114.958]],"c":true}]},{"t":41,"s":[{"i":[[-15.747,6.133],[3.233,-8.208],[67.677,0],[0,88.366],[-59.371,23.385],[3.202,-8.22],[0,-17.917],[-77.32,0]],"o":[[8.22,-3.202],[-23.385,59.371],[-88.366,0],[0,-67.677],[8.208,-3.233],[-6.133,15.747],[0,77.32],[17.917,0]],"v":[[134.131,46.796],[148.262,58.906],[-0.663,160.296],[-160.663,0.296],[-59.273,-148.629],[-47.164,-134.499],[-56.663,-83.704],[83.337,56.296]],"c":true}]}],"ix":1},"o":{"a":0,"k":100,"ix":3},"x":{"a":0,"k":0,"ix":4},"nm":"Mask 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":10,"s":[{"i":[[-78.652,0],[0,-78.652],[78.652,0],[0,78.652]],"o":[[78.652,0],[0,78.652],[-78.652,0],[0,-78.652]],"v":[[-216,76],[-76,216],[-216,356],[-356,216]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.167,"y":0.167},"t":40,"s":[{"i":[[-90.965,0],[0,-90.965],[90.965,0],[0,90.965]],"o":[[90.965,0],[0,90.965],[-90.965,0],[0,-90.965]],"v":[[-1.083,-160.834],[160.834,1.083],[-1.083,163],[-163,1.083]],"c":true}]},{"t":100,"s":[{"i":[[-78.652,0],[0,-78.652],[78.652,0],[0,78.652]],"o":[[78.652,0],[0,78.652],[-78.652,0],[0,-78.652]],"v":[[84,-224],[224,-84],[84,56],[-56,-84]],"c":true}]}],"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-89.888,0],[0,-89.888],[89.888,0],[0,89.888]],"o":[[89.888,0],[0,89.888],[-89.888,0],[0,-89.888]],"v":[[0,-160],[160,0],[0,160],[-160,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":2,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 16","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":180,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/TMessagesProj/src/main/res/raw/speed_fast.json b/TMessagesProj/src/main/res/raw/speed_fast.json new file mode 100644 index 000000000..e9c9af2cd --- /dev/null +++ b/TMessagesProj/src/main/res/raw/speed_fast.json @@ -0,0 +1 @@ +{"v":"5.10.1","fr":60,"ip":0,"op":75,"w":512,"h":512,"nm":"fast 2","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":4,"ty":4,"nm":"Shape Layer 2","parent":7,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":3,"s":[11,-240,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":6,"s":[11,-244,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":12,"s":[11,-258,0],"to":[0,0,0],"ti":[1.667,-3.167,0]},{"i":{"x":0.517,"y":1},"o":{"x":0.167,"y":0},"t":17,"s":[11,-246,0],"to":[-0.989,1.88,0],"ti":[2.756,-4.755,0]},{"i":{"x":0.57,"y":1},"o":{"x":0.243,"y":0},"t":33,"s":[2.977,-229.433,0],"to":[-1.887,3.255,0],"ti":[-1.084,-0.474,0]},{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":55,"s":[1,-227,0],"to":[2.667,1.167,0],"ti":[-4.333,2,0]},{"t":68,"s":[27,-239,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-134,120],[115,119]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":29,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":75,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Shape Layer 1","parent":7,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-134,120],[115,119]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":29,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":75,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":3,"nm":"Null 1","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.3],"y":[1]},"o":{"x":[0.31],"y":[0]},"t":55,"s":[0]},{"i":{"x":[0.7],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":65,"s":[3]},{"i":{"x":[0.7],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":70,"s":[-1]},{"t":74,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.7,"y":1},"o":{"x":0.3,"y":0},"t":0,"s":[199,388,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.7,"y":1},"o":{"x":0.3,"y":0},"t":7,"s":[199,280,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.7,"y":1},"o":{"x":0.3,"y":0},"t":13,"s":[199,306,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.7,"y":1},"o":{"x":0.3,"y":0},"t":18,"s":[199,314,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.7,"y":1},"o":{"x":0.3,"y":0},"t":25,"s":[199,299,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.7,"y":1},"o":{"x":0.3,"y":0},"t":32,"s":[199,314,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.7,"y":1},"o":{"x":0.3,"y":0},"t":39,"s":[199,299,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.7,"y":1},"o":{"x":0.3,"y":0},"t":46,"s":[199,314,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.7,"y":1},"o":{"x":0.3,"y":0},"t":53,"s":[199,299,0],"to":[0,0,0],"ti":[0,0,0]},{"t":62,"s":[199,306,0]}],"ix":2,"l":2},"a":{"a":0,"k":[50,50,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.1,0.1,0.1],"y":[1,1,1]},"o":{"x":[0.3,0.3,0.3],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":9,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":180,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Body 2","parent":6,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.3],"y":[1]},"o":{"x":[0.31],"y":[0]},"t":2,"s":[10]},{"i":{"x":[0.7],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":13,"s":[-14]},{"i":{"x":[0.7],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":20,"s":[-10]},{"i":{"x":[0.7],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":27,"s":[-13]},{"i":{"x":[0.7],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":34,"s":[-10]},{"i":{"x":[0.7],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":41,"s":[-12]},{"i":{"x":[0.506],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":48,"s":[-9]},{"i":{"x":[0.3],"y":[1]},"o":{"x":[0.31],"y":[0]},"t":55,"s":[-13]},{"t":65,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.2,"y":0},"t":2,"s":[-82.367,118.339,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":4,"s":[-95.349,134.878,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.7,"y":1},"o":{"x":0.953,"y":0},"t":41,"s":[62.651,134.878,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.7,"y":0.7},"o":{"x":0.01,"y":0.01},"t":62,"s":[-41.349,134.878,0],"to":[0,0,0],"ti":[0,0,0]},{"t":66,"s":[-41.349,134.878,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-148.349,134.878,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[10.547,0],[5.469,0],[7.891,6.953],[0,0],[1.328,0],[11.953,19.453],[0,8.828],[-8.594,-0.234],[-25.703,0],[-25.156,-15.625],[-6.719,0],[-3.438,3.047],[0,0],[0,5.938],[-11.641,0],[-10.938,-16.094],[0,0],[0,-25],[18.438,0],[9.141,5.938],[5,-2.734],[4.609,0],[5.234,-1.016],[0,0],[24.375,0],[0,-5.938],[-3.984,0],[0,0],[-9.062,-19.453],[0,0],[-12.5,0],[0,-13.516],[11.484,0]],"o":[[-10.312,0],[-6.484,0],[0,0],[-1.484,0.078],[-24.297,0],[-10,0.156],[0,-7.969],[10.703,-31.484],[27.031,0],[8.594,4.688],[4.844,0],[0,0],[-9.922,-6.484],[0,-9.141],[14.375,0],[0,0],[27.5,-1.094],[0,21.016],[-15.156,0],[-6.016,2.969],[-4.609,-1.094],[-5.859,0],[0,0],[-11.797,-26.328],[-7.969,0],[0,3.672],[0,0],[18.672,0],[0,0],[7.266,-1.406],[24.062,0],[0,8.75],[-7.891,0]],"v":[[27.305,74.527],[5.898,77.261],[-15.117,68.824],[-47.539,41.558],[-51.758,41.636],[-105.039,15.308],[-122.227,0.933],[-107.227,-12.192],[-49.258,-57.817],[19.727,-29.536],[42.461,-20.082],[53.477,-25.082],[9.727,-53.52],[-13.242,-74.848],[18.32,-90.395],[58.711,-67.192],[77.539,-39.77],[122.227,5.621],[93.633,32.964],[59.57,21.402],[42.93,29.996],[29.18,28.668],[12.383,30.152],[7.148,18.355],[-48.867,-20.473],[-64.102,-13.051],[-57.695,-7.426],[-48.164,-7.426],[-4.102,22.183],[5.039,42.261],[29.961,38.746],[67.148,63.589],[48.945,77.261]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,-4.297],[-4.297,0],[0,4.453],[4.297,0]],"o":[[0,4.219],[4.297,0],[0,-4.141],[-4.297,0]],"v":[[79.727,-4.848],[87.461,2.964],[95.273,-5.239],[87.539,-12.895]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[14.297,0],[0,10.312],[-8.594,0],[-3.672,0],[-1.094,0.078]],"o":[[-7.656,5.078],[-16.719,0],[0,-6.875],[6.562,0],[1.484,0],[0,0]],"v":[[-24.258,76.089],[-55.508,83.746],[-83.086,66.48],[-69.102,54.996],[-51.836,56.246],[-48.008,56.089]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.2,"y":0},"t":4,"s":[{"i":[[0,0],[0,-28.435],[0,0],[28.435,0],[0,0],[0,28.435],[0,0],[-28.435,0]],"o":[[28.435,0],[0,0],[0,28.435],[0,0],[-28.435,0],[0,0],[0,-28.435],[0,0]],"v":[[137.378,-137.333],[188.867,-85.845],[188.867,85.845],[137.378,137.333],[-137.378,137.333],[-188.867,85.845],[-188.867,-85.845],[-137.378,-137.333]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0},"t":12,"s":[{"i":[[0,0],[0,-30.199],[0,0],[27.483,0],[0,0],[0,30.199],[0,0],[-27.483,0]],"o":[[27.483,0],[0,0],[0,30.199],[0,0],[-27.483,0],[0,0],[0,-30.199],[0,0]],"v":[[126.631,-155.306],[176.396,-100.624],[176.396,81.711],[126.631,136.393],[-138.928,136.393],[-188.693,81.711],[-188.693,-100.624],[-138.928,-155.306]],"c":true}]},{"i":{"x":0.7,"y":1},"o":{"x":0.953,"y":0},"t":51,"s":[{"i":[[0,0],[0,-26.886],[0,0],[26.444,0],[0,0],[0,26.886],[0,0],[-26.444,0]],"o":[[26.444,0],[0,0],[0,26.886],[0,0],[-26.444,0],[0,0],[0,-26.886],[0,0]],"v":[[114.899,-124.335],[162.782,-75.651],[162.782,86.683],[114.899,135.367],[-140.619,135.367],[-188.502,86.683],[-188.502,-75.651],[-140.619,-124.335]],"c":true}]},{"i":{"x":0.7,"y":1},"o":{"x":0.3,"y":0},"t":63,"s":[{"i":[[0,0],[0,-28.435],[0,0],[28.435,0],[0,0],[0,28.435],[0,0],[-28.435,0]],"o":[[28.435,0],[0,0],[0,28.435],[0,0],[-28.435,0],[0,0],[0,-28.435],[0,0]],"v":[[137.378,-137.333],[188.867,-85.845],[188.867,85.845],[137.378,137.333],[-137.378,137.333],[-188.867,85.845],[-188.867,-85.845],[-137.378,-137.333]],"c":true}]},{"t":68,"s":[{"i":[[0,0],[0,-28.435],[0,0],[28.435,0],[0,0],[0,28.435],[0,0],[-28.435,0]],"o":[[28.435,0],[0,0],[0,28.435],[0,0],[-28.435,0],[0,0],[0,-28.435],[0,0]],"v":[[137.378,-137.333],[188.867,-85.845],[188.867,85.845],[137.378,137.333],[-137.378,137.333],[-188.867,85.845],[-188.867,-85.845],[-137.378,-137.333]],"c":true}]}],"ix":2},"nm":"Path 5","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":2,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Combined-Shape","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":180,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Lines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":4,"s":[70,277.55,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.7,"y":1},"o":{"x":0.953,"y":0},"t":41,"s":[130,267.55,0],"to":[0,0,0],"ti":[0,0,0]},{"t":62,"s":[178,259.55,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-186,-0.45,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":10,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-270.667,102.8],[-208,100.1]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":20,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-270.667,102.8],[-174,99.6]],"c":false}]},{"t":34,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-269.667,101.3],[-155,98.1]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.7],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":6,"s":[100]},{"i":{"x":[0.7],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":20,"s":[0]},{"i":{"x":[0.7],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":28,"s":[38]},{"i":{"x":[0.7],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":35,"s":[67]},{"t":42,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.73],"y":[1]},"o":{"x":[0.27],"y":[0]},"t":33,"s":[100]},{"t":41,"s":[0]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":30,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-204],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":30,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-270.667,102.8],[-174,99.6]],"c":false}]},{"t":40,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-299.667,101.8],[-174,99.6]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.7],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":8,"s":[100]},{"i":{"x":[0.7],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":18,"s":[0]},{"i":{"x":[0.7],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":26,"s":[72]},{"i":{"x":[0.7],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":33,"s":[15]},{"t":40,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.73],"y":[1]},"o":{"x":[0.27],"y":[0]},"t":31,"s":[100]},{"t":39,"s":[0]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":30,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-100],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":5,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-270.238,87.8],[-134.571,87.6]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":7,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-270.965,68.8],[-135.299,68.6]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":10,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-271.153,77.8],[-135.486,77.6]],"c":false}]},{"t":15,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-269.76,95.8],[-134.094,95.6]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.7],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":5,"s":[100]},{"i":{"x":[0.7],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":15,"s":[19]},{"i":{"x":[0.7],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":23,"s":[67]},{"i":{"x":[0.7],"y":[1]},"o":{"x":[0.3],"y":[0]},"t":30,"s":[0]},{"t":37,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.73],"y":[1]},"o":{"x":[0.27],"y":[0]},"t":28,"s":[100]},{"t":36,"s":[0]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":30,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":10,"op":180,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/TMessagesProj/src/main/res/raw/speed_slow.json b/TMessagesProj/src/main/res/raw/speed_slow.json new file mode 100644 index 000000000..fbde01c61 --- /dev/null +++ b/TMessagesProj/src/main/res/raw/speed_slow.json @@ -0,0 +1 @@ +{"v":"5.10.1","fr":60,"ip":0,"op":72,"w":512,"h":512,"nm":"slow 2","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":3,"ty":3,"nm":"Null 1","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[219,262,0],"ix":2,"l":2},"a":{"a":0,"k":[50,50,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.3,0.3,0.3],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":7,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":180,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Body 2","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.204],"y":[0.644]},"o":{"x":[0.26],"y":[0]},"t":4,"s":[0]},{"i":{"x":[0.629],"y":[1]},"o":{"x":[0.212],"y":[0.307]},"t":22,"s":[14]},{"i":{"x":[0.7],"y":[1]},"o":{"x":[0.9],"y":[0]},"t":47,"s":[20]},{"t":59,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":4,"s":[170.651,178.878,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.7,"y":1},"o":{"x":0.9,"y":0},"t":47,"s":[226.651,178.878,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.597,"y":0.597},"o":{"x":0,"y":0},"t":59,"s":[231.651,178.878,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.717,"y":0.717},"o":{"x":0.375,"y":0.375},"t":69,"s":[231.651,178.878,0],"to":[0,0,0],"ti":[0,0,0]},{"t":71,"s":[231.651,178.878,0]}],"ix":2,"l":2},"a":{"a":0,"k":[143.651,134.878,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":47,"s":[100,100,100]},{"i":{"x":[0.7,0.7,0.7],"y":[1,1,1]},"o":{"x":[0.9,0.9,0.9],"y":[0,0,0]},"t":53,"s":[100,102,100]},{"i":{"x":[0.7,0.7,0.7],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":60,"s":[100,90,100]},{"i":{"x":[0.7,0.7,0.7],"y":[1,1,1]},"o":{"x":[0.3,0.3,0.3],"y":[0,0,0]},"t":66,"s":[100,104,100]},{"t":71,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-14.531,-17.734],[21.094,-0.078],[13.984,15.625],[-22.656,0]],"o":[[-14.062,15.859],[-20.234,0],[14.141,-17.656],[22.5,0.078]],"v":[[13.608,-24.464],[-39.674,-0.48],[-92.33,-23.918],[-39.049,-50.011]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[22.031,0],[11.875,-5.078],[3.906,8.281],[-2.891,10],[-19.062,0],[0,-27.969]],"o":[[-14.766,0],[-4.453,-10.469],[5.078,-3.203],[4.922,-17.734],[22.344,0],[0,12.344]],"v":[[94.311,29.598],[57.748,41.082],[44.389,10.848],[56.967,-7.277],[92.904,-37.355],[130.17,9.364]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[5.312,-0.312],[6.406,-2.109],[1.562,16.641],[-9.062,9.531],[-6.328,-12.734]],"o":[[-8.047,0.781],[-13.438,-11.406],[10.547,-3.984],[8.047,12.812],[-2.891,1.562]],"v":[[34.858,47.176],[12.826,51.707],[-10.846,6.161],[20.483,-15.089],[48.451,44.364]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[-11.328,-4.062],[12.891,-10.703],[7.188,0],[0,0],[0,5.938],[-3.75,3.672],[-6.562,12.812],[-3.516,5.391]],"o":[[-1.797,16.25],[-6.094,-2.344],[0,0],[-9.688,0],[0,-4.219],[5.078,-5],[3.438,-6.641],[9.062,9.453]],"v":[[-67.408,6.473],[-91.471,52.098],[-110.767,47.957],[-119.596,47.957],[-134.752,38.661],[-129.127,28.348],[-110.142,3.973],[-99.517,-14.074]],"c":true},"ix":2},"nm":"Path 5","mn":"ADBE Vector Shape - Group","hd":false},{"ind":4,"ty":"sh","ix":5,"ks":{"a":0,"k":{"i":[[0,-4.375],[-4.453,0],[0,4.375],[4.297,0]],"o":[[0,4.375],[4.297,0],[0,-4.375],[-4.453,0]],"v":[[86.889,-5.793],[94.936,2.254],[102.904,-5.793],[94.936,-13.761]],"c":true},"ix":2},"nm":"Path 6","mn":"ADBE Vector Shape - Group","hd":false},{"ind":5,"ty":"sh","ix":6,"ks":{"a":0,"k":{"i":[[-14.297,-11.797],[18.047,0],[10.625,4.531],[-1.328,17.5],[-5.859,0.078],[-5.938,1.406]],"o":[[-10.547,5.156],[-17.344,0],[13.672,-12.266],[5.547,1.25],[6.016,0],[1.094,18.047]],"v":[[2.358,56.707],[-39.439,69.286],[-80.142,56.942],[-56.705,9.598],[-39.517,11.473],[-21.627,9.442]],"c":true},"ix":2},"nm":"Path 7","mn":"ADBE Vector Shape - Group","hd":false},{"ind":6,"ty":"sh","ix":7,"ks":{"a":0,"k":{"i":[[0,-7.031],[11.641,0],[7.5,8.125],[-10.234,1.641],[-3.906,-0.469]],"o":[[0,8.125],[-13.906,0],[8.359,-5.078],[4.141,0.469],[6.328,1.25]],"v":[[55.873,68.661],[36.108,81.629],[-0.455,68.27],[32.045,55.692],[43.373,57.02]],"c":true},"ix":2},"nm":"Path 8","mn":"ADBE Vector Shape - Group","hd":false},{"ind":7,"ty":"sh","ix":8,"ks":{"a":0,"k":{"i":[[-9.766,-5.312],[13.828,0],[0,8.125],[-5.234,1.25],[-4.141,1.25]],"o":[[-7.891,7.656],[-11.484,0],[0,-5.781],[4.688,-1.094],[10.469,2.266]],"v":[[-76.861,68.661],[-112.408,81.551],[-131.783,68.582],[-121.471,58.661],[-108.736,55.77]],"c":true},"ix":2},"nm":"Path 9","mn":"ADBE Vector Shape - Group","hd":false},{"ind":8,"ty":"sh","ix":9,"ks":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":4,"s":[{"i":[[0,0],[0,-28.435],[0,0],[28.435,0],[0,0],[0,28.435],[0,0],[-28.435,0]],"o":[[28.435,0],[0,0],[0,28.435],[0,0],[-28.435,0],[0,0],[0,-28.435],[0,0]],"v":[[137.378,-137.333],[188.867,-85.845],[188.867,85.845],[137.378,137.333],[-137.378,137.333],[-188.867,85.845],[-188.867,-85.845],[-137.378,-137.333]],"c":true}]},{"i":{"x":0.7,"y":1},"o":{"x":0.9,"y":0},"t":47,"s":[{"i":[[0,0],[0,-28.435],[0,0],[26.692,0],[0,0],[0,28.435],[0,0],[-26.692,0]],"o":[[26.692,0],[0,0],[0,28.435],[0,0],[-26.692,0],[0,0],[0,-28.435],[0,0]],"v":[[133.326,-137.333],[181.657,-85.845],[181.657,85.845],[133.326,137.333],[-124.581,137.333],[-172.913,85.845],[-172.913,-85.845],[-124.581,-137.333]],"c":true}]},{"i":{"x":0.7,"y":1},"o":{"x":0.3,"y":0},"t":59,"s":[{"i":[[0,0],[0,-28.435],[0,0],[30.112,0],[0,0],[0,28.435],[0,0],[-30.112,0]],"o":[[30.112,0],[0,0],[0,28.435],[0,0],[-30.112,0],[0,0],[0,-28.435],[0,0]],"v":[[145.476,-137.333],[200,-85.845],[200,85.845],[145.476,137.333],[-145.476,137.333],[-200,85.845],[-200,-85.845],[-145.476,-137.333]],"c":true}]},{"i":{"x":0.7,"y":1},"o":{"x":0.3,"y":0},"t":66,"s":[{"i":[[0,0],[0,-28.435],[0,0],[27.138,0],[0,0],[0,28.435],[0,0],[-27.138,0]],"o":[[27.138,0],[0,0],[0,28.435],[0,0],[-27.138,0],[0,0],[0,-28.435],[0,0]],"v":[[133.36,-137.333],[182.5,-85.845],[182.5,85.845],[133.36,137.333],[-128.86,137.333],[-178,85.845],[-178,-85.845],[-128.86,-137.333]],"c":true}]},{"t":71,"s":[{"i":[[0,0],[0,-28.435],[0,0],[28.435,0],[0,0],[0,28.435],[0,0],[-28.435,0]],"o":[[28.435,0],[0,0],[0,28.435],[0,0],[-28.435,0],[0,0],[0,-28.435],[0,0]],"v":[[137.378,-137.333],[188.867,-85.845],[188.867,85.845],[137.378,137.333],[-137.378,137.333],[-188.867,85.845],[-188.867,-85.845],[-137.378,-137.333]],"c":true}]}],"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":2,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Combined-Shape","np":10,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":180,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Lines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.461,"y":1},"o":{"x":0.387,"y":0},"t":6,"s":[414.762,400.8,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.455,"y":1},"o":{"x":0.171,"y":0},"t":21,"s":[350.327,402.8,0],"to":[0,0,0],"ti":[0,0,0]},{"t":54,"s":[306.762,400.8,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-270.238,87.8,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.9,"y":0},"t":54,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-483.238,88.6],[-134.571,88.6]],"c":false}]},{"t":58,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-484.238,84.6],[-135.571,84.6]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.252],"y":[0.429]},"o":{"x":[0.386],"y":[0]},"t":5,"s":[68]},{"i":{"x":[0.499],"y":[1]},"o":{"x":[0.194],"y":[0.298]},"t":20,"s":[82]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.9],"y":[0]},"t":48,"s":[95]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.9],"y":[0]},"t":54,"s":[95]},{"t":58,"s":[45]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":5,"s":[68]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.9],"y":[0]},"t":48,"s":[15]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.9],"y":[0]},"t":54,"s":[15]},{"t":58,"s":[45]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":26,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":180,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/TMessagesProj/src/main/res/values/strings.xml b/TMessagesProj/src/main/res/values/strings.xml index a2301f9d1..31cca8720 100644 --- a/TMessagesProj/src/main/res/values/strings.xml +++ b/TMessagesProj/src/main/res/values/strings.xml @@ -148,6 +148,7 @@ No app found to handle this deep link. New conversation + System Default theme is disabled Auto-Night Mode is off Set Emoji Status Change Status @@ -1023,6 +1024,7 @@ OPEN BOT sponsored recommended + Advertiser Info What are sponsored\nmessages? Unlike other apps, Telegram never uses your private data to target ads. You are seeing this message only because someone chose this public one-to-many channel as a space to promote their messages. This means that no user data is mined or analyzed to display ads, and every user viewing a channel on Telegram sees the same sponsored message. Unlike other apps, Telegram doesn\'t track whether you tapped on a sponsored message and doesn\'t profile you based on your activity. We also prevent external links in sponsored messages to ensure that third parties can’t spy on our users. We believe that everyone has the right to privacy, and technological platforms should respect that. @@ -1375,6 +1377,7 @@ Failed to upload file. Audio will play at normal speed. Audio will play at 1.5x speed. + Audio will play at %1$sx speed. Audio will play two times faster. Message copied to clipboard. Delivered @@ -1760,6 +1763,8 @@ An error occurred. Stickers + Settings + Manage your sticker packs, emoji and reactions. Loop Animated Stickers Animated stickers will play in chat continuously. Animated Stickers @@ -2360,8 +2365,6 @@ Reset Imported Contacts Clear sent media cache Call settings - Enable forced RTMP Stream Flag - Disable forced RTMP Stream Flag Clear WebView cache Enable WebView debug Disable WebView debug @@ -2488,6 +2491,7 @@ Show sender\’s name Hide sender\’s name Chat list swipe gesture + Set up which action you want to perform each time you swipe to left in the chat list. Pin Read Archive @@ -3016,6 +3020,12 @@ Normal Medium Super Fast + Very fast + Fast + Custom %s + Normal + Slow + Very slow Long tap for more speed values. Show as list Show as grid @@ -5261,6 +5271,7 @@ %1$d unread chats %1$d unread chats With new reaction + Choose speed MMM yyyy MMM dd yyyy, h:mm a @@ -5646,6 +5657,7 @@ This action is disabled for all members. Please change it in Group Permissions. This action is enabled for all members. Please change it in Group Permissions. **%1$s** requests to be added as an option to your attachments menu so you can access it from any chat. + Do you want to start app **%1$s** from bot **%2$s**?\n\nIt will be able to access your **IP address** and basic device info. This bot can\'t be added to the attachment menu. This bot is already in your attachment menu. Remove **%1$s** from the attachment menu? @@ -6265,17 +6277,32 @@ Archived chats hidden Muted Online - Power usage - You can switch to low power mode to increase battery life. Recommended for weak devices. + Animations + Reduce motion effects to save power. + Low power mode + Please turn off Low Power Mode to change these settings. + Low Power Mode enabled + %s battery remaining + When below %s + Off + On + Always Disabled + Always Enabled + Never reduce power usage and keep all animations even when your battery is low. + Automatically reduce power usage and animations when your battery is below %s. + Always reduce power usage regardless of your battery level. Power saving options Autoplay in keyboard Autoplay in chat Autoplay in reactions menu + Animated Stickers + Animated Emoji Animations in Chats Background rotation Side menu in topics Animated spoiler effect Night theme blur + Zoom animations Animations in Calls Autoplay Videos Autoplay GIFs @@ -6285,4 +6312,42 @@ Automatically switch to low power usage when your devices is in Battery Saving Mode. Dynamic Pack Order Automatically place recently used sticker packs at the front of the panel. + Dynamic Order Off + Sticker packs will no longer be placed first every time you use a sticker. + read %s + **%s** restrict adding them to groups. You can send them an invite link as message instead. + **%d user** restrict adding them to groups. You can send them an invite link as message instead. + **%d users** restrict adding them to groups. You can send them an invite link as message instead. + **%d users** restrict adding them to groups. You can send them an invite link as message instead. + **%d users** restrict adding them to groups. You can send them an invite link as message instead. + **%d users** restrict adding them to groups. You can send them an invite link as message instead. + **%s** restrict adding them to channels. You can send them an invite link as message instead. + **%d user** restrict adding them to channels. You can send them an invite link as message instead. + **%d users** restrict adding them to channels. You can send them an invite link as message instead. + **%d users** restrict adding them to channels. You can send them an invite link as message instead. + **%d users** restrict adding them to channels. You can send them an invite link as message instead. + **%d users** restrict adding them to channels. You can send them an invite link as message instead. + **%s** can only be invited via link. However admin of this group restricts you from sharing invite links. + **%d user** can only be invited via link. However admin of this group restricts you from sharing invite links. + **%d users** can only be invited via link. However admin of this group restricts you from sharing invite links. + **%d users** can only be invited via link. However admin of this group restricts you from sharing invite links. + **%d users** can only be invited via link. However admin of this group restricts you from sharing invite links. + **%d users** can only be invited via link. However admin of this group restricts you from sharing invite links. + **%s** can only be invited via link. However admin of this channel restricts you from sharing invite links. + **%d user** can only be invited via link. However admin of this channel restricts you from sharing invite links. + **%d users** can only be invited via link. However admin of this channel restricts you from sharing invite links. + **%d users** can only be invited via link. However admin of this channel restricts you from sharing invite links. + **%d users** can only be invited via link. However admin of this channel restricts you from sharing invite links. + **%d users** can only be invited via link. However admin of this channel restricts you from sharing invite links. + Invitation link sent to **%s** + Invitation link sent to %d user + Invitation link sent to %d users + Invitation link sent to %d users + Invitation link sent to %d users + Invitation link sent to %d users + Send Invite Link + Skip + You can\'t create a link + This user can\'t be invited + This users can\'t be invited diff --git a/gradle.properties b/gradle.properties index aff74873c..9f3a81206 100644 --- a/gradle.properties +++ b/gradle.properties @@ -13,12 +13,12 @@ # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true #Sat Mar 12 05:53:50 MSK 2016 -APP_VERSION_NAME=9.4.9 -APP_VERSION_CODE=3164 +APP_VERSION_CODE=3195 +APP_VERSION_NAME=9.5.0 APP_PACKAGE=org.telegram.messenger -RELEASE_KEY_PASSWORD=TelegramAndroidPswd -RELEASE_KEY_ALIAS=tmessages -RELEASE_STORE_PASSWORD=TelegramAndroidPswd +RELEASE_KEY_PASSWORD=android +RELEASE_KEY_ALIAS=androidkey +RELEASE_STORE_PASSWORD=android org.gradle.jvmargs=-Xmx4096M -XX:MaxPermSize=4096m org.gradle.daemon=true org.gradle.parallel=true