From 06473773a6f415c23fbd93d51996393b7e3ea626 Mon Sep 17 00:00:00 2001 From: DrKLO Date: Fri, 22 Apr 2016 16:49:00 +0300 Subject: [PATCH] Update to 3.8.1 --- TMessagesProj/build.gradle | 10 +- TMessagesProj/google-services.json | 75 + TMessagesProj/jni/Android.mk | 4 +- TMessagesProj/jni/TgNetWrapper.cpp | 11 +- TMessagesProj/jni/image.c | 4 +- TMessagesProj/jni/tgnet/Connection.cpp | 2 +- .../jni/tgnet/ConnectionsManager.cpp | 64 +- TMessagesProj/jni/tgnet/ConnectionsManager.h | 6 +- TMessagesProj/jni/tgnet/Defines.h | 3 +- TMessagesProj/src/main/AndroidManifest.xml | 2 + .../org/telegram/SQLite/SQLiteDatabase.java | 1 - .../telegram/messenger/AndroidUtilities.java | 201 +- .../telegram/messenger/ApplicationLoader.java | 51 +- .../messenger/AutoMessageHeardReceiver.java | 1 + .../messenger/AutoMessageReplyReceiver.java | 3 +- .../org/telegram/messenger/BuildVars.java | 4 +- .../telegram/messenger/ClearCacheService.java | 2 + .../messenger/ContactsController.java | 5 +- .../telegram/messenger/FileLoadOperation.java | 2 +- .../org/telegram/messenger/FileLoader.java | 15 +- .../java/org/telegram/messenger/FileLog.java | 7 +- .../messenger/GcmPushListenerService.java | 1 + .../GcmRegistrationIntentService.java | 10 +- .../org/telegram/messenger/ImageLoader.java | 19 +- .../org/telegram/messenger/ImageReceiver.java | 180 +- .../telegram/messenger/LocaleController.java | 32 +- .../telegram/messenger/MediaController.java | 117 +- .../org/telegram/messenger/MessageObject.java | 310 +- .../messenger/MessagesController.java | 178 +- .../telegram/messenger/MessagesStorage.java | 159 +- .../org/telegram/messenger/NativeLoader.java | 2 +- .../messenger/NotificationCenter.java | 16 +- .../messenger/NotificationsController.java | 16 +- .../telegram/messenger/SecretChatHelper.java | 57 +- .../messenger/SendMessagesHelper.java | 694 +++-- .../messenger/ShareBroadcastReceiver.java | 29 + .../org/telegram/messenger/Utilities.java | 6 +- .../telegram/messenger/WearReplyReceiver.java | 3 +- .../telegram/messenger/browser/Browser.java | 188 ++ .../messenger/query/SharedMediaQuery.java | 10 +- .../messenger/query/StickersQuery.java | 108 +- .../customtabs/CustomTabsCallback.java | 40 + .../support/customtabs/CustomTabsClient.java | 87 + .../support/customtabs/CustomTabsIntent.java | 206 ++ .../support/customtabs/CustomTabsService.java | 105 + .../CustomTabsServiceConnection.java | 33 + .../support/customtabs/CustomTabsSession.java | 79 + .../customtabs/CustomTabsSessionToken.java | 75 + .../customtabs/ICustomTabsCallback.java | 142 + .../customtabs/ICustomTabsService.java | 291 ++ .../shared/CustomTabsHelper.java | 142 + .../shared/KeepAliveService.java | 29 + .../shared/ServiceConnection.java | 42 + .../shared/ServiceConnectionCallback.java | 33 + .../support/widget/LinearLayoutManager.java | 10 +- .../support/widget/RecyclerView.java | 114 +- .../widget/StaggeredGridLayoutManager.java | 47 +- .../support/widget/ViewInfoStore.java | 6 +- .../widget/helper/ItemTouchHelper.java | 2 +- .../telegram/tgnet/ConnectionsManager.java | 17 +- .../main/java/org/telegram/tgnet/TLRPC.java | 994 +++++-- .../org/telegram/ui/ActionBar/ActionBar.java | 126 +- .../ui/ActionBar/ActionBarLayout.java | 12 +- .../telegram/ui/ActionBar/ActionBarMenu.java | 16 +- .../ui/ActionBar/ActionBarMenuItem.java | 6 +- .../telegram/ui/ActionBar/BaseFragment.java | 12 +- .../telegram/ui/ActionBar/BottomSheet.java | 129 +- .../ui/ActionBar/DrawerLayoutContainer.java | 33 +- .../telegram/ui/ActionBar/SimpleTextView.java | 281 ++ .../java/org/telegram/ui/ActionBar/Theme.java | 419 +++ .../ui/Adapters/ChatActivityAdapter.java | 2 +- .../telegram/ui/Adapters/DialogsAdapter.java | 7 + .../ui/Adapters/DialogsSearchAdapter.java | 4 +- .../telegram/ui/Adapters/MentionsAdapter.java | 209 +- .../ui/Adapters/PhotoAttachAdapter.java | 106 - .../org/telegram/ui/AudioPlayerActivity.java | 19 +- .../org/telegram/ui/CacheControlActivity.java | 3 +- .../org/telegram/ui/Cells/AboutLinkCell.java | 17 +- .../java/org/telegram/ui/Cells/BaseCell.java | 4 + .../org/telegram/ui/Cells/BotHelpCell.java | 19 +- .../org/telegram/ui/Cells/BotSwitchCell.java | 62 + .../org/telegram/ui/Cells/ChatActionCell.java | 156 +- .../org/telegram/ui/Cells/ChatAudioCell.java | 498 ---- .../org/telegram/ui/Cells/ChatBaseCell.java | 425 +-- .../telegram/ui/Cells/ChatContactCell.java | 306 -- .../telegram/ui/Cells/ChatLoadingCell.java | 5 +- .../telegram/ui/Cells/ChatMessageCell.java | 2131 +++++++++---- .../org/telegram/ui/Cells/ChatMusicCell.java | 457 --- .../org/telegram/ui/Cells/ChatUnreadCell.java | 4 +- .../telegram/ui/Cells/ContextLinkCell.java | 346 ++- .../org/telegram/ui/Cells/DialogCell.java | 8 +- .../telegram/ui/Cells/DrawerProfileCell.java | 14 +- .../org/telegram/ui/Cells/MentionCell.java | 12 + .../ui/Cells/PhotoPickerPhotoCell.java | 11 +- .../telegram/ui/Cells/ProfileSearchCell.java | 5 +- .../telegram/ui/Cells/SendLocationCell.java | 2 +- .../telegram/ui/Cells/ShareDialogCell.java | 13 + .../telegram/ui/Cells/SharedDocumentCell.java | 49 +- .../org/telegram/ui/Cells/SharedLinkCell.java | 16 +- .../ui/Cells/SharedPhotoVideoCell.java | 17 +- .../org/telegram/ui/Cells/StickerSetCell.java | 14 +- .../java/org/telegram/ui/Cells/TextCell.java | 71 +- .../org/telegram/ui/Cells/TextCheckCell.java | 31 +- .../ui/Cells/TextInfoPrivacyCell.java | 3 +- .../java/org/telegram/ui/Cells/UserCell.java | 14 +- .../org/telegram/ui/Cells/WallpaperCell.java | 14 +- .../org/telegram/ui/ChangePhoneActivity.java | 50 +- .../org/telegram/ui/ChannelIntroActivity.java | 6 +- .../org/telegram/ui/ChannelUsersActivity.java | 4 +- .../java/org/telegram/ui/ChatActivity.java | 2629 +++++++++-------- .../telegram/ui/Components/AlertsCreator.java | 9 +- .../ui/Components/AnimatedFileDrawable.java | 71 +- .../ui/Components/AvatarDrawable.java | 11 +- .../ui/Components/BotKeyboardView.java | 7 +- .../ui/Components/ChatActivityEnterView.java | 455 ++- .../ui/Components/ChatAttachView.java | 123 +- .../ui/Components/ChatAvatarContainer.java | 366 +++ .../ui/Components/ClippingImageView.java | 32 +- .../ui/Components/CloseProgressDrawable.java | 91 + .../ui/Components/CloseProgressDrawable2.java | 143 + .../ui/Components/LetterDrawable.java | 4 +- .../org/telegram/ui/Components/LinkPath.java | 6 +- .../ui/Components/PhotoFilterView.java | 9 +- .../PhotoViewerCaptionEnterView.java | 124 +- .../ui/Components/PickerBottomLayout.java | 5 +- .../telegram/ui/Components/PlayerView.java | 13 +- .../ui/Components/PopupAudioView.java | 48 +- .../ui/Components/RadialProgress.java | 30 +- .../telegram/ui/Components/RadioButton.java | 5 +- .../ui/Components/RecordStatusDrawable.java | 3 +- .../ui/Components/ResourceLoader.java | 166 -- .../org/telegram/ui/Components/SeekBar.java | 71 +- .../ui/Components/SeekBarWaveform.java | 13 +- .../ui/Components/SendingFileDrawable.java | 3 +- .../ui/Components/SendingFileEx2Drawable.java | 3 +- .../ui/Components/SendingFileExDrawable.java | 3 +- ...{ShareFrameLayout.java => ShareAlert.java} | 314 +- .../ui/Components/SimpleTextView.java | 127 - .../ui/Components/SlidingTabView.java | 4 +- .../telegram/ui/Components/StickersAlert.java | 591 +++- .../ui/Components/TypingDotsDrawable.java | 9 +- .../ui/Components/URLSpanBotCommand.java | 4 +- .../ui/Components/WebFrameLayout.java | 181 +- .../org/telegram/ui/ContactAddActivity.java | 2 + .../java/org/telegram/ui/DialogsActivity.java | 12 +- .../telegram/ui/DocumentSelectActivity.java | 10 +- .../org/telegram/ui/IdenticonActivity.java | 3 +- .../java/org/telegram/ui/IntroActivity.java | 2 + .../java/org/telegram/ui/LaunchActivity.java | 177 +- .../org/telegram/ui/LocationActivity.java | 28 +- .../java/org/telegram/ui/LoginActivity.java | 54 +- .../org/telegram/ui/ManageSpaceActivity.java | 2 + .../java/org/telegram/ui/MediaActivity.java | 64 +- .../ui/NotificationsSettingsActivity.java | 56 +- .../org/telegram/ui/PasscodeActivity.java | 5 +- .../telegram/ui/PhotoAlbumPickerActivity.java | 7 +- .../org/telegram/ui/PhotoCropActivity.java | 5 +- .../org/telegram/ui/PhotoPickerActivity.java | 5 +- .../java/org/telegram/ui/PhotoViewer.java | 82 +- .../ui/PopupNotificationActivity.java | 9 +- .../java/org/telegram/ui/ProfileActivity.java | 671 +++-- .../org/telegram/ui/SetAdminsActivity.java | 10 +- .../org/telegram/ui/SettingsActivity.java | 22 +- .../org/telegram/ui/StickerPreviewViewer.java | 36 +- .../org/telegram/ui/StickersActivity.java | 14 +- .../ui/TwoStepVerificationActivity.java | 4 +- .../org/telegram/ui/VideoEditorActivity.java | 5 +- .../org/telegram/ui/WallpapersActivity.java | 46 +- .../res/drawable-hdpi/addcontact_blue.png | Bin 966 -> 0 bytes .../main/res/drawable-hdpi/admin_star2.png | Bin 0 -> 1288 bytes .../main/res/drawable-hdpi/attach_video.png | Bin 2366 -> 2360 bytes .../drawable-hdpi/attach_video_pressed.png | Bin 2369 -> 2754 bytes .../src/main/res/drawable-hdpi/bot_file.png | Bin 0 -> 1114 bytes .../src/main/res/drawable-hdpi/bot_lines.png | Bin 0 -> 1110 bytes .../src/main/res/drawable-hdpi/bot_link.png | Bin 0 -> 1034 bytes .../src/main/res/drawable-hdpi/bot_list.png | Bin 1142 -> 1300 bytes .../main/res/drawable-hdpi/bot_location.png | Bin 0 -> 1586 bytes .../src/main/res/drawable-hdpi/bot_music.png | Bin 0 -> 1573 bytes .../main/res/drawable-hdpi/bottom_shadow.png | Bin 968 -> 989 bytes .../src/main/res/drawable-hdpi/cancel_b.png | Bin 2095 -> 0 bytes .../res/drawable-hdpi/cancel_b_pressed.png | Bin 2095 -> 0 bytes .../src/main/res/drawable-hdpi/cancel_b_s.png | Bin 2025 -> 0 bytes .../src/main/res/drawable-hdpi/cancel_big.png | Bin 2403 -> 2893 bytes .../src/main/res/drawable-hdpi/cancel_g.png | Bin 2092 -> 0 bytes .../res/drawable-hdpi/cancel_g_pressed.png | Bin 2134 -> 0 bytes .../src/main/res/drawable-hdpi/cancel_g_s.png | Bin 2060 -> 0 bytes .../src/main/res/drawable-hdpi/circle_big.png | Bin 2367 -> 2405 bytes .../main/res/drawable-hdpi/contact_blue.png | Bin 0 -> 2296 bytes .../main/res/drawable-hdpi/contact_green.png | Bin 0 -> 2339 bytes .../main/res/drawable-hdpi/corner_in_bl.png | Bin 0 -> 962 bytes .../main/res/drawable-hdpi/corner_in_br.png | Bin 0 -> 959 bytes .../main/res/drawable-hdpi/corner_in_tl.png | Bin 0 -> 971 bytes .../main/res/drawable-hdpi/corner_in_tr.png | Bin 0 -> 962 bytes .../main/res/drawable-hdpi/corner_out_bl.png | Bin 0 -> 987 bytes .../main/res/drawable-hdpi/corner_out_br.png | Bin 0 -> 986 bytes .../main/res/drawable-hdpi/corner_out_tl.png | Bin 0 -> 993 bytes .../main/res/drawable-hdpi/corner_out_tr.png | Bin 0 -> 983 bytes .../main/res/drawable-hdpi/delete_reply.png | Bin 1241 -> 1215 bytes .../res/drawable-hdpi/dialogs_badge.9.png | Bin 491 -> 1428 bytes .../res/drawable-hdpi/dialogs_badge2.9.png | Bin 1425 -> 1419 bytes .../src/main/res/drawable-hdpi/doc_blue.png | Bin 1160 -> 1412 bytes .../src/main/res/drawable-hdpi/doc_blue_s.png | Bin 1996 -> 1432 bytes .../src/main/res/drawable-hdpi/doc_green.png | Bin 1162 -> 1420 bytes .../src/main/res/drawable-hdpi/download_b.png | Bin 2031 -> 0 bytes .../res/drawable-hdpi/download_b_pressed.png | Bin 2041 -> 0 bytes .../main/res/drawable-hdpi/download_b_s.png | Bin 1975 -> 0 bytes .../main/res/drawable-hdpi/download_bb.png | Bin 1086 -> 0 bytes .../src/main/res/drawable-hdpi/download_g.png | Bin 2053 -> 0 bytes .../res/drawable-hdpi/download_g_pressed.png | Bin 2054 -> 0 bytes .../main/res/drawable-hdpi/download_g_s.png | Bin 2310 -> 0 bytes .../src/main/res/drawable-hdpi/file_b.png | Bin 0 -> 2112 bytes .../main/res/drawable-hdpi/file_b_cancel.png | Bin 0 -> 2253 bytes .../res/drawable-hdpi/file_b_cancel_s.png | Bin 0 -> 2256 bytes .../main/res/drawable-hdpi/file_b_load.png | Bin 0 -> 2117 bytes .../main/res/drawable-hdpi/file_b_load_s.png | Bin 0 -> 2119 bytes .../src/main/res/drawable-hdpi/file_b_s.png | Bin 0 -> 2124 bytes .../src/main/res/drawable-hdpi/file_g.png | Bin 0 -> 2129 bytes .../main/res/drawable-hdpi/file_g_cancel.png | Bin 0 -> 2297 bytes .../res/drawable-hdpi/file_g_cancel_s.png | Bin 0 -> 2244 bytes .../main/res/drawable-hdpi/file_g_load.png | Bin 0 -> 2131 bytes .../main/res/drawable-hdpi/file_g_load_s.png | Bin 0 -> 2137 bytes .../src/main/res/drawable-hdpi/file_g_s.png | Bin 0 -> 2119 bytes .../src/main/res/drawable-hdpi/floating.png | Bin 3750 -> 3688 bytes .../src/main/res/drawable-hdpi/floating_m.png | Bin 2222 -> 2185 bytes .../res/drawable-hdpi/floating_pressed.png | Bin 3798 -> 3586 bytes .../main/res/drawable-hdpi/forward_blue.png | Bin 1220 -> 1220 bytes .../src/main/res/drawable-hdpi/ic_ab_new.png | Bin 444 -> 1084 bytes .../res/drawable-hdpi/ic_msg_panel_kb.png | Bin 1104 -> 1047 bytes .../src/main/res/drawable-hdpi/ic_send.png | Bin 591 -> 1404 bytes .../src/main/res/drawable-hdpi/igvideo.png | Bin 1955 -> 0 bytes .../src/main/res/drawable-hdpi/link.png | Bin 1416 -> 1417 bytes .../src/main/res/drawable-hdpi/load_big.png | Bin 2518 -> 2623 bytes .../src/main/res/drawable-hdpi/location2.png | Bin 0 -> 824 bytes .../main/res/drawable-hdpi/location_b.9.png | Bin 824 -> 2013 bytes .../main/res/drawable-hdpi/location_g.9.png | Bin 878 -> 2062 bytes .../res/drawable-hdpi/miniplayer_pause.png | Bin 984 -> 984 bytes .../res/drawable-hdpi/miniplayer_play.png | Bin 1157 -> 1165 bytes .../src/main/res/drawable-hdpi/msg_in.9.png | Bin 957 -> 1718 bytes .../main/res/drawable-hdpi/msg_in_photo.9.png | Bin 652 -> 1524 bytes .../drawable-hdpi/msg_in_photo_selected.9.png | Bin 681 -> 1640 bytes .../res/drawable-hdpi/msg_in_selected.9.png | Bin 982 -> 1735 bytes .../src/main/res/drawable-hdpi/msg_out.9.png | Bin 1871 -> 1841 bytes .../res/drawable-hdpi/msg_out_photo.9.png | Bin 1625 -> 1725 bytes .../msg_out_photo_selected.9.png | Bin 1611 -> 1648 bytes .../res/drawable-hdpi/msg_out_selected.9.png | Bin 1869 -> 1794 bytes .../main/res/drawable-hdpi/newmsg_divider.png | Bin 165 -> 976 bytes .../src/main/res/drawable-hdpi/pause_b.png | Bin 1874 -> 2025 bytes .../res/drawable-hdpi/pause_b_pressed.png | Bin 1889 -> 0 bytes .../src/main/res/drawable-hdpi/pause_b_s.png | Bin 1809 -> 2025 bytes .../src/main/res/drawable-hdpi/pause_bb.png | Bin 973 -> 0 bytes .../src/main/res/drawable-hdpi/pause_g.png | Bin 1897 -> 2031 bytes .../res/drawable-hdpi/pause_g_pressed.png | Bin 1902 -> 0 bytes .../src/main/res/drawable-hdpi/pause_g_s.png | Bin 2166 -> 2029 bytes .../src/main/res/drawable-hdpi/pause_w.png | Bin 1852 -> 0 bytes .../src/main/res/drawable-hdpi/pause_w2.png | Bin 1886 -> 0 bytes .../res/drawable-hdpi/pause_w2_pressed.png | Bin 1888 -> 0 bytes .../res/drawable-hdpi/pause_w_pressed.png | Bin 1888 -> 0 bytes .../main/res/drawable-hdpi/photocancel.png | Bin 1435 -> 2292 bytes .../main/res/drawable-hdpi/photocancel_b.png | Bin 0 -> 2408 bytes .../res/drawable-hdpi/photocancel_b_s.png | Bin 0 -> 2319 bytes .../main/res/drawable-hdpi/photocancel_g.png | Bin 0 -> 2424 bytes .../res/drawable-hdpi/photocancel_g_s.png | Bin 0 -> 2424 bytes .../res/drawable-hdpi/photocancel_pressed.png | Bin 0 -> 2304 bytes .../src/main/res/drawable-hdpi/photogif.png | Bin 1659 -> 2364 bytes .../res/drawable-hdpi/photogif_pressed.png | Bin 0 -> 2399 bytes .../src/main/res/drawable-hdpi/photoload.png | Bin 1261 -> 2087 bytes .../main/res/drawable-hdpi/photoload_b.png | Bin 0 -> 2266 bytes .../main/res/drawable-hdpi/photoload_b_s.png | Bin 0 -> 2200 bytes .../main/res/drawable-hdpi/photoload_g.png | Bin 0 -> 2271 bytes .../main/res/drawable-hdpi/photoload_g_s.png | Bin 0 -> 2269 bytes .../res/drawable-hdpi/photoload_pressed.png | Bin 0 -> 2120 bytes .../src/main/res/drawable-hdpi/photopause.png | Bin 1088 -> 0 bytes .../main/res/drawable-hdpi/phototime2.9.png | Bin 0 -> 1008 bytes .../main/res/drawable-hdpi/phototime2_b.9.png | Bin 0 -> 1029 bytes .../src/main/res/drawable-hdpi/play_b.png | Bin 0 -> 2303 bytes .../src/main/res/drawable-hdpi/play_b_s.png | Bin 0 -> 2326 bytes .../src/main/res/drawable-hdpi/play_big.png | Bin 2830 -> 3042 bytes .../src/main/res/drawable-hdpi/play_g.png | Bin 0 -> 2316 bytes .../src/main/res/drawable-hdpi/play_g_s.png | Bin 0 -> 2308 bytes .../src/main/res/drawable-hdpi/play_w.png | Bin 2200 -> 0 bytes .../src/main/res/drawable-hdpi/play_w2.png | Bin 2240 -> 0 bytes .../res/drawable-hdpi/play_w2_pressed.png | Bin 2238 -> 0 bytes .../main/res/drawable-hdpi/play_w_pressed.png | Bin 2252 -> 0 bytes .../src/main/res/drawable-hdpi/playvideo.png | Bin 1404 -> 2366 bytes .../res/drawable-hdpi/playvideo_pressed.png | Bin 0 -> 2388 bytes .../src/main/res/drawable-hdpi/reply.png | Bin 1419 -> 1407 bytes .../main/res/drawable-hdpi/share_arrow.png | Bin 0 -> 1221 bytes .../main/res/drawable-hdpi/share_round.png | Bin 0 -> 1530 bytes .../src/main/res/drawable-hdpi/shareblack.png | Bin 1840 -> 0 bytes .../res/drawable-hdpi/shareblack_pressed.png | Bin 1855 -> 0 bytes .../src/main/res/drawable-hdpi/shareblue.png | Bin 1883 -> 0 bytes .../res/drawable-hdpi/shareblue_pressed.png | Bin 1897 -> 0 bytes .../res/drawable-hdpi/stickercounter.9.png | Bin 0 -> 1425 bytes .../src/main/res/drawable-hdpi/system.9.png | Bin 0 -> 1192 bytes .../main/res/drawable-hdpi/system_black.9.png | Bin 196 -> 0 bytes .../main/res/drawable-hdpi/system_blue.9.png | Bin 1127 -> 0 bytes .../main/res/drawable-hdpi/system_loader.png | Bin 0 -> 1647 bytes .../main/res/drawable-hdpi/system_loader1.png | Bin 839 -> 0 bytes .../main/res/drawable-hdpi/system_loader2.png | Bin 813 -> 0 bytes .../main/res/drawable-hdpi/video_actions.png | Bin 0 -> 1106 bytes .../main/res/drawable-mdpi/admin_star2.png | Bin 0 -> 1171 bytes .../main/res/drawable-mdpi/attach_video.png | Bin 1964 -> 1891 bytes .../drawable-mdpi/attach_video_pressed.png | Bin 1899 -> 2108 bytes .../src/main/res/drawable-mdpi/bot_file.png | Bin 0 -> 1115 bytes .../src/main/res/drawable-mdpi/bot_lines.png | Bin 0 -> 1014 bytes .../src/main/res/drawable-mdpi/bot_link.png | Bin 0 -> 1002 bytes .../src/main/res/drawable-mdpi/bot_list.png | Bin 1088 -> 1155 bytes .../main/res/drawable-mdpi/bot_location.png | Bin 0 -> 1308 bytes .../src/main/res/drawable-mdpi/bot_music.png | Bin 0 -> 1299 bytes .../main/res/drawable-mdpi/bottom_shadow.png | Bin 1035 -> 1039 bytes .../src/main/res/drawable-mdpi/cancel_b.png | Bin 1731 -> 0 bytes .../res/drawable-mdpi/cancel_b_pressed.png | Bin 1712 -> 0 bytes .../src/main/res/drawable-mdpi/cancel_b_s.png | Bin 1648 -> 0 bytes .../src/main/res/drawable-mdpi/cancel_big.png | Bin 1818 -> 2288 bytes .../src/main/res/drawable-mdpi/cancel_g.png | Bin 1724 -> 0 bytes .../res/drawable-mdpi/cancel_g_pressed.png | Bin 1751 -> 0 bytes .../src/main/res/drawable-mdpi/cancel_g_s.png | Bin 1680 -> 0 bytes .../src/main/res/drawable-mdpi/circle_big.png | Bin 1723 -> 1790 bytes .../main/res/drawable-mdpi/contact_blue.png | Bin 0 -> 1796 bytes .../main/res/drawable-mdpi/contact_green.png | Bin 0 -> 1828 bytes .../corner_in_bl.png} | Bin 966 -> 952 bytes .../main/res/drawable-mdpi/corner_in_br.png | Bin 0 -> 947 bytes ...{addcontact_green.png => corner_in_tl.png} | Bin 956 -> 955 bytes .../main/res/drawable-mdpi/corner_in_tr.png | Bin 0 -> 949 bytes ...{addcontact_blue.png => corner_out_bl.png} | Bin 956 -> 964 bytes .../main/res/drawable-mdpi/corner_out_br.png | Bin 0 -> 962 bytes .../main/res/drawable-mdpi/corner_out_tl.png | Bin 0 -> 967 bytes .../main/res/drawable-mdpi/corner_out_tr.png | Bin 0 -> 963 bytes .../main/res/drawable-mdpi/delete_reply.png | Bin 1141 -> 1135 bytes .../res/drawable-mdpi/dialogs_badge.9.png | Bin 340 -> 1246 bytes .../res/drawable-mdpi/dialogs_badge2.9.png | Bin 1246 -> 1245 bytes .../src/main/res/drawable-mdpi/doc_blue.png | Bin 786 -> 1273 bytes .../src/main/res/drawable-mdpi/doc_blue_s.png | Bin 1611 -> 1273 bytes .../src/main/res/drawable-mdpi/doc_green.png | Bin 803 -> 1271 bytes .../src/main/res/drawable-mdpi/download_b.png | Bin 1684 -> 0 bytes .../res/drawable-mdpi/download_b_pressed.png | Bin 1676 -> 0 bytes .../main/res/drawable-mdpi/download_b_s.png | Bin 1623 -> 0 bytes .../src/main/res/drawable-mdpi/download_g.png | Bin 1696 -> 0 bytes .../res/drawable-mdpi/download_g_pressed.png | Bin 1697 -> 0 bytes .../main/res/drawable-mdpi/download_g_s.png | Bin 1855 -> 0 bytes .../src/main/res/drawable-mdpi/file_b.png | Bin 0 -> 1858 bytes .../main/res/drawable-mdpi/file_b_cancel.png | Bin 0 -> 1859 bytes .../res/drawable-mdpi/file_b_cancel_s.png | Bin 0 -> 1834 bytes .../main/res/drawable-mdpi/file_b_load.png | Bin 0 -> 1710 bytes .../main/res/drawable-mdpi/file_b_load_s.png | Bin 0 -> 1713 bytes .../src/main/res/drawable-mdpi/file_b_s.png | Bin 0 -> 1864 bytes .../src/main/res/drawable-mdpi/file_g.png | Bin 0 -> 1872 bytes .../main/res/drawable-mdpi/file_g_cancel.png | Bin 0 -> 1841 bytes .../res/drawable-mdpi/file_g_cancel_s.png | Bin 0 -> 1847 bytes .../main/res/drawable-mdpi/file_g_load.png | Bin 0 -> 1731 bytes .../main/res/drawable-mdpi/file_g_load_s.png | Bin 0 -> 1723 bytes .../src/main/res/drawable-mdpi/file_g_s.png | Bin 0 -> 1856 bytes .../src/main/res/drawable-mdpi/floating.png | Bin 2539 -> 2615 bytes .../src/main/res/drawable-mdpi/floating_m.png | Bin 1756 -> 1737 bytes .../res/drawable-mdpi/floating_pressed.png | Bin 2546 -> 2601 bytes .../main/res/drawable-mdpi/forward_blue.png | Bin 1070 -> 1067 bytes .../src/main/res/drawable-mdpi/ic_ab_new.png | Bin 310 -> 1035 bytes .../res/drawable-mdpi/ic_msg_panel_kb.png | Bin 1056 -> 1021 bytes .../src/main/res/drawable-mdpi/ic_send.png | Bin 381 -> 1205 bytes .../src/main/res/drawable-mdpi/igvideo.png | Bin 1553 -> 0 bytes .../src/main/res/drawable-mdpi/link.png | Bin 1250 -> 1248 bytes .../src/main/res/drawable-mdpi/load_big.png | Bin 1950 -> 2074 bytes .../src/main/res/drawable-mdpi/location2.png | Bin 0 -> 582 bytes .../main/res/drawable-mdpi/location_b.9.png | Bin 582 -> 1677 bytes .../main/res/drawable-mdpi/location_g.9.png | Bin 616 -> 1709 bytes .../res/drawable-mdpi/miniplayer_pause.png | Bin 984 -> 984 bytes .../res/drawable-mdpi/miniplayer_play.png | Bin 1086 -> 1088 bytes .../src/main/res/drawable-mdpi/msg_in.9.png | Bin 669 -> 1442 bytes .../main/res/drawable-mdpi/msg_in_photo.9.png | Bin 470 -> 1502 bytes .../drawable-mdpi/msg_in_photo_selected.9.png | Bin 500 -> 1511 bytes .../res/drawable-mdpi/msg_in_selected.9.png | Bin 693 -> 1473 bytes .../src/main/res/drawable-mdpi/msg_out.9.png | Bin 1693 -> 1538 bytes .../res/drawable-mdpi/msg_out_photo.9.png | Bin 1465 -> 1626 bytes .../msg_out_photo_selected.9.png | Bin 1474 -> 1604 bytes .../res/drawable-mdpi/msg_out_selected.9.png | Bin 1694 -> 1529 bytes .../main/res/drawable-mdpi/newmsg_divider.png | Bin 151 -> 955 bytes .../src/main/res/drawable-mdpi/pause_b.png | Bin 1599 -> 1667 bytes .../res/drawable-mdpi/pause_b_pressed.png | Bin 1592 -> 0 bytes .../src/main/res/drawable-mdpi/pause_b_s.png | Bin 1539 -> 1669 bytes .../src/main/res/drawable-mdpi/pause_g.png | Bin 1603 -> 1666 bytes .../res/drawable-mdpi/pause_g_pressed.png | Bin 1616 -> 0 bytes .../src/main/res/drawable-mdpi/pause_g_s.png | Bin 1771 -> 1663 bytes .../src/main/res/drawable-mdpi/pause_w.png | Bin 1576 -> 0 bytes .../src/main/res/drawable-mdpi/pause_w2.png | Bin 1606 -> 0 bytes .../res/drawable-mdpi/pause_w2_pressed.png | Bin 1607 -> 0 bytes .../res/drawable-mdpi/pause_w_pressed.png | Bin 1612 -> 0 bytes .../main/res/drawable-mdpi/photocancel.png | Bin 1062 -> 1859 bytes .../main/res/drawable-mdpi/photocancel_b.png | Bin 0 -> 1961 bytes .../res/drawable-mdpi/photocancel_b_s.png | Bin 0 -> 1846 bytes .../main/res/drawable-mdpi/photocancel_g.png | Bin 0 -> 1966 bytes .../res/drawable-mdpi/photocancel_g_s.png | Bin 0 -> 1955 bytes .../res/drawable-mdpi/photocancel_pressed.png | Bin 0 -> 1936 bytes .../src/main/res/drawable-mdpi/photogif.png | Bin 1157 -> 1999 bytes .../res/drawable-mdpi/photogif_pressed.png | Bin 0 -> 2017 bytes .../src/main/res/drawable-mdpi/photoload.png | Bin 899 -> 1779 bytes .../main/res/drawable-mdpi/photoload_b.png | Bin 0 -> 1824 bytes .../main/res/drawable-mdpi/photoload_b_s.png | Bin 0 -> 1757 bytes .../main/res/drawable-mdpi/photoload_g.png | Bin 0 -> 1824 bytes .../main/res/drawable-mdpi/photoload_g_s.png | Bin 0 -> 1817 bytes .../res/drawable-mdpi/photoload_pressed.png | Bin 0 -> 1797 bytes .../src/main/res/drawable-mdpi/photopause.png | Bin 781 -> 0 bytes .../main/res/drawable-mdpi/phototime2.9.png | Bin 0 -> 998 bytes .../main/res/drawable-mdpi/phototime2_b.9.png | Bin 0 -> 999 bytes .../src/main/res/drawable-mdpi/play_b.png | Bin 0 -> 1867 bytes .../src/main/res/drawable-mdpi/play_b_s.png | Bin 0 -> 1874 bytes .../src/main/res/drawable-mdpi/play_big.png | Bin 2101 -> 2265 bytes .../src/main/res/drawable-mdpi/play_g.png | Bin 0 -> 1883 bytes .../src/main/res/drawable-mdpi/play_g_s.png | Bin 0 -> 1874 bytes .../src/main/res/drawable-mdpi/play_w.png | Bin 1759 -> 0 bytes .../src/main/res/drawable-mdpi/play_w2.png | Bin 1799 -> 0 bytes .../res/drawable-mdpi/play_w2_pressed.png | Bin 1802 -> 0 bytes .../main/res/drawable-mdpi/play_w_pressed.png | Bin 1795 -> 0 bytes .../src/main/res/drawable-mdpi/playvideo.png | Bin 1069 -> 1852 bytes .../res/drawable-mdpi/playvideo_pressed.png | Bin 0 -> 1978 bytes .../src/main/res/drawable-mdpi/reply.png | Bin 1250 -> 1249 bytes .../main/res/drawable-mdpi/share_arrow.png | Bin 0 -> 1083 bytes .../main/res/drawable-mdpi/share_round.png | Bin 0 -> 1327 bytes .../src/main/res/drawable-mdpi/shareblack.png | Bin 1532 -> 0 bytes .../res/drawable-mdpi/shareblack_pressed.png | Bin 1526 -> 0 bytes .../src/main/res/drawable-mdpi/shareblue.png | Bin 1559 -> 0 bytes .../res/drawable-mdpi/shareblue_pressed.png | Bin 1568 -> 0 bytes .../res/drawable-mdpi/stickercounter.9.png | Bin 0 -> 1246 bytes .../src/main/res/drawable-mdpi/system.9.png | Bin 0 -> 1094 bytes .../main/res/drawable-mdpi/system_black.9.png | Bin 156 -> 0 bytes .../main/res/drawable-mdpi/system_blue.9.png | Bin 1052 -> 0 bytes .../main/res/drawable-mdpi/system_loader.png | Bin 0 -> 1310 bytes .../main/res/drawable-mdpi/system_loader1.png | Bin 602 -> 0 bytes .../main/res/drawable-mdpi/system_loader2.png | Bin 575 -> 0 bytes .../main/res/drawable-mdpi/video_actions.png | Bin 0 -> 1019 bytes .../main/res/drawable-v21/bar_selector.xml | 4 - .../res/drawable-v21/bar_selector_audio.xml | 4 - .../res/drawable-v21/bar_selector_blue.xml | 4 - .../res/drawable-v21/bar_selector_cyan.xml | 4 - .../res/drawable-v21/bar_selector_green.xml | 4 - .../res/drawable-v21/bar_selector_grey.xml | 4 - .../res/drawable-v21/bar_selector_mode.xml | 4 - .../res/drawable-v21/bar_selector_orange.xml | 4 - .../res/drawable-v21/bar_selector_picker.xml | 4 - .../res/drawable-v21/bar_selector_pink.xml | 4 - .../res/drawable-v21/bar_selector_red.xml | 4 - .../res/drawable-v21/bar_selector_violet.xml | 4 - .../res/drawable-v21/bar_selector_yellow.xml | 4 - .../main/res/drawable-v21/circle_selector.xml | 11 - .../res/drawable-xhdpi/addcontact_blue.png | Bin 982 -> 0 bytes .../res/drawable-xhdpi/addcontact_green.png | Bin 982 -> 0 bytes .../main/res/drawable-xhdpi/admin_star2.png | Bin 0 -> 1394 bytes .../main/res/drawable-xhdpi/attach_video.png | Bin 2867 -> 2859 bytes .../drawable-xhdpi/attach_video_pressed.png | Bin 2866 -> 3440 bytes .../src/main/res/drawable-xhdpi/bot_file.png | Bin 0 -> 1319 bytes .../src/main/res/drawable-xhdpi/bot_lines.png | Bin 0 -> 1154 bytes .../src/main/res/drawable-xhdpi/bot_link.png | Bin 0 -> 1067 bytes .../src/main/res/drawable-xhdpi/bot_list.png | Bin 1269 -> 1428 bytes .../main/res/drawable-xhdpi/bot_location.png | Bin 0 -> 1801 bytes .../src/main/res/drawable-xhdpi/bot_music.png | Bin 0 -> 1710 bytes .../main/res/drawable-xhdpi/bottom_shadow.png | Bin 983 -> 1009 bytes .../src/main/res/drawable-xhdpi/cancel_b.png | Bin 2334 -> 0 bytes .../res/drawable-xhdpi/cancel_b_pressed.png | Bin 2346 -> 0 bytes .../main/res/drawable-xhdpi/cancel_b_s.png | Bin 2267 -> 0 bytes .../main/res/drawable-xhdpi/cancel_big.png | Bin 2954 -> 3804 bytes .../src/main/res/drawable-xhdpi/cancel_g.png | Bin 2357 -> 0 bytes .../res/drawable-xhdpi/cancel_g_pressed.png | Bin 2401 -> 0 bytes .../main/res/drawable-xhdpi/cancel_g_s.png | Bin 2332 -> 0 bytes .../main/res/drawable-xhdpi/circle_big.png | Bin 2927 -> 2815 bytes .../main/res/drawable-xhdpi/contact_blue.png | Bin 0 -> 2877 bytes .../main/res/drawable-xhdpi/contact_green.png | Bin 0 -> 2867 bytes .../main/res/drawable-xhdpi/corner_in_bl.png | Bin 0 -> 980 bytes .../main/res/drawable-xhdpi/corner_in_br.png | Bin 0 -> 973 bytes .../main/res/drawable-xhdpi/corner_in_tl.png | Bin 0 -> 992 bytes .../main/res/drawable-xhdpi/corner_in_tr.png | Bin 0 -> 980 bytes .../main/res/drawable-xhdpi/corner_out_bl.png | Bin 0 -> 1022 bytes .../main/res/drawable-xhdpi/corner_out_br.png | Bin 0 -> 1015 bytes .../main/res/drawable-xhdpi/corner_out_tl.png | Bin 0 -> 1029 bytes .../main/res/drawable-xhdpi/corner_out_tr.png | Bin 0 -> 1021 bytes .../main/res/drawable-xhdpi/delete_reply.png | Bin 1356 -> 1292 bytes .../res/drawable-xhdpi/dialogs_badge.9.png | Bin 659 -> 1627 bytes .../res/drawable-xhdpi/dialogs_badge2.9.png | Bin 1631 -> 1633 bytes .../src/main/res/drawable-xhdpi/doc_blue.png | Bin 1511 -> 1552 bytes .../main/res/drawable-xhdpi/doc_blue_s.png | Bin 2330 -> 1551 bytes .../src/main/res/drawable-xhdpi/doc_green.png | Bin 1512 -> 1552 bytes .../main/res/drawable-xhdpi/download_b.png | Bin 2280 -> 0 bytes .../res/drawable-xhdpi/download_b_pressed.png | Bin 2344 -> 0 bytes .../main/res/drawable-xhdpi/download_b_s.png | Bin 2262 -> 0 bytes .../main/res/drawable-xhdpi/download_g.png | Bin 2272 -> 0 bytes .../res/drawable-xhdpi/download_g_pressed.png | Bin 2282 -> 0 bytes .../main/res/drawable-xhdpi/download_g_s.png | Bin 2693 -> 0 bytes .../src/main/res/drawable-xhdpi/file_b.png | Bin 0 -> 2693 bytes .../main/res/drawable-xhdpi/file_b_cancel.png | Bin 0 -> 2708 bytes .../res/drawable-xhdpi/file_b_cancel_s.png | Bin 0 -> 2706 bytes .../main/res/drawable-xhdpi/file_b_load.png | Bin 0 -> 2479 bytes .../main/res/drawable-xhdpi/file_b_load_s.png | Bin 0 -> 2483 bytes .../src/main/res/drawable-xhdpi/file_b_s.png | Bin 0 -> 2696 bytes .../src/main/res/drawable-xhdpi/file_g.png | Bin 0 -> 2711 bytes .../main/res/drawable-xhdpi/file_g_cancel.png | Bin 0 -> 2724 bytes .../res/drawable-xhdpi/file_g_cancel_s.png | Bin 0 -> 2709 bytes .../main/res/drawable-xhdpi/file_g_load.png | Bin 0 -> 2488 bytes .../main/res/drawable-xhdpi/file_g_load_s.png | Bin 0 -> 2491 bytes .../src/main/res/drawable-xhdpi/file_g_s.png | Bin 0 -> 2696 bytes .../src/main/res/drawable-xhdpi/floating.png | Bin 4705 -> 4563 bytes .../main/res/drawable-xhdpi/floating_m.png | Bin 2640 -> 2639 bytes .../res/drawable-xhdpi/floating_pressed.png | Bin 4719 -> 4556 bytes .../main/res/drawable-xhdpi/forward_blue.png | Bin 1299 -> 1304 bytes .../src/main/res/drawable-xhdpi/ic_ab_new.png | Bin 496 -> 1142 bytes .../res/drawable-xhdpi/ic_msg_panel_kb.png | Bin 1108 -> 1122 bytes .../src/main/res/drawable-xhdpi/ic_send.png | Bin 748 -> 1575 bytes .../src/main/res/drawable-xhdpi/igvideo.png | Bin 2441 -> 0 bytes .../src/main/res/drawable-xhdpi/link.png | Bin 1571 -> 1583 bytes .../src/main/res/drawable-xhdpi/load_big.png | Bin 3430 -> 3121 bytes .../src/main/res/drawable-xhdpi/location2.png | Bin 0 -> 1053 bytes .../main/res/drawable-xhdpi/location_b.9.png | Bin 1053 -> 2431 bytes .../main/res/drawable-xhdpi/location_g.9.png | Bin 1105 -> 2481 bytes .../res/drawable-xhdpi/miniplayer_pause.png | Bin 1051 -> 1051 bytes .../res/drawable-xhdpi/miniplayer_play.png | Bin 1251 -> 1260 bytes .../src/main/res/drawable-xhdpi/msg_in.9.png | Bin 1453 -> 2081 bytes .../res/drawable-xhdpi/msg_in_photo.9.png | Bin 880 -> 1930 bytes .../msg_in_photo_selected.9.png | Bin 909 -> 1974 bytes .../res/drawable-xhdpi/msg_in_selected.9.png | Bin 1520 -> 2126 bytes .../src/main/res/drawable-xhdpi/msg_out.9.png | Bin 2258 -> 2322 bytes .../res/drawable-xhdpi/msg_out_photo.9.png | Bin 1799 -> 2094 bytes .../msg_out_photo_selected.9.png | Bin 1782 -> 2061 bytes .../res/drawable-xhdpi/msg_out_selected.9.png | Bin 2243 -> 2307 bytes .../res/drawable-xhdpi/newmsg_divider.png | Bin 174 -> 999 bytes .../src/main/res/drawable-xhdpi/pause_b.png | Bin 2089 -> 2407 bytes .../res/drawable-xhdpi/pause_b_pressed.png | Bin 2164 -> 0 bytes .../src/main/res/drawable-xhdpi/pause_b_s.png | Bin 984 -> 2404 bytes .../src/main/res/drawable-xhdpi/pause_g.png | Bin 2099 -> 2411 bytes .../res/drawable-xhdpi/pause_g_pressed.png | Bin 2098 -> 0 bytes .../src/main/res/drawable-xhdpi/pause_g_s.png | Bin 2563 -> 2407 bytes .../src/main/res/drawable-xhdpi/pause_w.png | Bin 2153 -> 0 bytes .../src/main/res/drawable-xhdpi/pause_w2.png | Bin 2222 -> 0 bytes .../res/drawable-xhdpi/pause_w2_pressed.png | Bin 2219 -> 0 bytes .../res/drawable-xhdpi/pause_w_pressed.png | Bin 2154 -> 0 bytes .../main/res/drawable-xhdpi/photocancel.png | Bin 2089 -> 2906 bytes .../main/res/drawable-xhdpi/photocancel_b.png | Bin 0 -> 2912 bytes .../res/drawable-xhdpi/photocancel_b_s.png | Bin 0 -> 2791 bytes .../main/res/drawable-xhdpi/photocancel_g.png | Bin 0 -> 2917 bytes .../res/drawable-xhdpi/photocancel_g_s.png | Bin 0 -> 2882 bytes .../drawable-xhdpi/photocancel_pressed.png | Bin 0 -> 2902 bytes .../src/main/res/drawable-xhdpi/photogif.png | Bin 2237 -> 2948 bytes .../res/drawable-xhdpi/photogif_pressed.png | Bin 0 -> 2986 bytes .../src/main/res/drawable-xhdpi/photoload.png | Bin 1797 -> 2596 bytes .../main/res/drawable-xhdpi/photoload_b.png | Bin 0 -> 2655 bytes .../main/res/drawable-xhdpi/photoload_b_s.png | Bin 0 -> 2609 bytes .../main/res/drawable-xhdpi/photoload_g.png | Bin 0 -> 2672 bytes .../main/res/drawable-xhdpi/photoload_g_s.png | Bin 0 -> 2664 bytes .../res/drawable-xhdpi/photoload_pressed.png | Bin 0 -> 2674 bytes .../main/res/drawable-xhdpi/photopause.png | Bin 1596 -> 0 bytes .../main/res/drawable-xhdpi/phototime2.9.png | Bin 0 -> 1049 bytes .../res/drawable-xhdpi/phototime2_b.9.png | Bin 0 -> 1060 bytes .../src/main/res/drawable-xhdpi/play_b.png | Bin 0 -> 2913 bytes .../src/main/res/drawable-xhdpi/play_b_s.png | Bin 0 -> 2895 bytes .../src/main/res/drawable-xhdpi/play_big.png | Bin 3556 -> 3823 bytes .../src/main/res/drawable-xhdpi/play_g.png | Bin 0 -> 2912 bytes .../src/main/res/drawable-xhdpi/play_g_s.png | Bin 0 -> 2897 bytes .../src/main/res/drawable-xhdpi/play_w.png | Bin 2580 -> 0 bytes .../src/main/res/drawable-xhdpi/play_w2.png | Bin 2663 -> 0 bytes .../res/drawable-xhdpi/play_w2_pressed.png | Bin 2656 -> 0 bytes .../res/drawable-xhdpi/play_w_pressed.png | Bin 2589 -> 0 bytes .../src/main/res/drawable-xhdpi/playvideo.png | Bin 2180 -> 3079 bytes .../res/drawable-xhdpi/playvideo_pressed.png | Bin 0 -> 3086 bytes .../src/main/res/drawable-xhdpi/reply.png | Bin 1567 -> 1569 bytes .../main/res/drawable-xhdpi/share_arrow.png | Bin 0 -> 1307 bytes .../main/res/drawable-xhdpi/share_round.png | Bin 0 -> 1800 bytes .../main/res/drawable-xhdpi/shareblack.png | Bin 2057 -> 0 bytes .../res/drawable-xhdpi/shareblack_pressed.png | Bin 2112 -> 0 bytes .../src/main/res/drawable-xhdpi/shareblue.png | Bin 2155 -> 0 bytes .../res/drawable-xhdpi/shareblue_pressed.png | Bin 2184 -> 0 bytes .../res/drawable-xhdpi/stickercounter.9.png | Bin 0 -> 1628 bytes .../src/main/res/drawable-xhdpi/system.9.png | Bin 0 -> 1276 bytes .../res/drawable-xhdpi/system_black.9.png | Bin 238 -> 0 bytes .../main/res/drawable-xhdpi/system_blue.9.png | Bin 1204 -> 0 bytes .../main/res/drawable-xhdpi/system_loader.png | Bin 0 -> 1966 bytes .../res/drawable-xhdpi/system_loader1.png | Bin 1118 -> 0 bytes .../res/drawable-xhdpi/system_loader2.png | Bin 1076 -> 0 bytes .../main/res/drawable-xhdpi/video_actions.png | Bin 0 -> 1166 bytes .../res/drawable-xxhdpi/addcontact_blue.png | Bin 1014 -> 0 bytes .../res/drawable-xxhdpi/addcontact_green.png | Bin 1012 -> 0 bytes .../main/res/drawable-xxhdpi/admin_star2.png | Bin 0 -> 1625 bytes .../main/res/drawable-xxhdpi/attach_video.png | Bin 3909 -> 3867 bytes .../drawable-xxhdpi/attach_video_pressed.png | Bin 3903 -> 4454 bytes .../src/main/res/drawable-xxhdpi/bot_file.png | Bin 0 -> 1334 bytes .../main/res/drawable-xxhdpi/bot_lines.png | Bin 0 -> 1336 bytes .../src/main/res/drawable-xxhdpi/bot_link.png | Bin 0 -> 1095 bytes .../src/main/res/drawable-xxhdpi/bot_list.png | Bin 1379 -> 1631 bytes .../main/res/drawable-xxhdpi/bot_location.png | Bin 0 -> 2420 bytes .../main/res/drawable-xxhdpi/bot_music.png | Bin 0 -> 2081 bytes .../res/drawable-xxhdpi/bottom_shadow.png | Bin 1014 -> 1182 bytes .../src/main/res/drawable-xxhdpi/cancel_b.png | Bin 3190 -> 0 bytes .../res/drawable-xxhdpi/cancel_b_pressed.png | Bin 3161 -> 0 bytes .../main/res/drawable-xxhdpi/cancel_b_s.png | Bin 3081 -> 0 bytes .../main/res/drawable-xxhdpi/cancel_big.png | Bin 3971 -> 5099 bytes .../src/main/res/drawable-xxhdpi/cancel_g.png | Bin 3187 -> 0 bytes .../res/drawable-xxhdpi/cancel_g_pressed.png | Bin 3197 -> 0 bytes .../main/res/drawable-xxhdpi/cancel_g_s.png | Bin 3107 -> 0 bytes .../main/res/drawable-xxhdpi/circle_big.png | Bin 3900 -> 4209 bytes .../main/res/drawable-xxhdpi/contact_blue.png | Bin 0 -> 3861 bytes .../res/drawable-xxhdpi/contact_green.png | Bin 0 -> 3884 bytes .../main/res/drawable-xxhdpi/corner_in_bl.png | Bin 0 -> 1014 bytes .../main/res/drawable-xxhdpi/corner_in_br.png | Bin 0 -> 998 bytes .../main/res/drawable-xxhdpi/corner_in_tl.png | Bin 0 -> 1017 bytes .../main/res/drawable-xxhdpi/corner_in_tr.png | Bin 0 -> 1008 bytes .../res/drawable-xxhdpi/corner_out_bl.png | Bin 0 -> 1072 bytes .../res/drawable-xxhdpi/corner_out_br.png | Bin 0 -> 1058 bytes .../res/drawable-xxhdpi/corner_out_tl.png | Bin 0 -> 1087 bytes .../res/drawable-xxhdpi/corner_out_tr.png | Bin 0 -> 1079 bytes .../main/res/drawable-xxhdpi/delete_reply.png | Bin 1495 -> 1453 bytes .../res/drawable-xxhdpi/dialogs_badge.9.png | Bin 961 -> 2072 bytes .../res/drawable-xxhdpi/dialogs_badge2.9.png | Bin 2074 -> 2069 bytes .../src/main/res/drawable-xxhdpi/doc_blue.png | Bin 2126 -> 1843 bytes .../main/res/drawable-xxhdpi/doc_blue_s.png | Bin 2935 -> 1868 bytes .../main/res/drawable-xxhdpi/doc_green.png | Bin 2116 -> 1842 bytes .../main/res/drawable-xxhdpi/download_b.png | Bin 2878 -> 0 bytes .../drawable-xxhdpi/download_b_pressed.png | Bin 2949 -> 0 bytes .../main/res/drawable-xxhdpi/download_b_s.png | Bin 2886 -> 0 bytes .../main/res/drawable-xxhdpi/download_g.png | Bin 2900 -> 0 bytes .../drawable-xxhdpi/download_g_pressed.png | Bin 2904 -> 0 bytes .../main/res/drawable-xxhdpi/download_g_s.png | Bin 3625 -> 0 bytes .../src/main/res/drawable-xxhdpi/file_b.png | Bin 0 -> 3509 bytes .../res/drawable-xxhdpi/file_b_cancel.png | Bin 0 -> 3570 bytes .../res/drawable-xxhdpi/file_b_cancel_s.png | Bin 0 -> 3603 bytes .../main/res/drawable-xxhdpi/file_b_load.png | Bin 0 -> 3301 bytes .../res/drawable-xxhdpi/file_b_load_s.png | Bin 0 -> 3303 bytes .../src/main/res/drawable-xxhdpi/file_b_s.png | Bin 0 -> 3493 bytes .../src/main/res/drawable-xxhdpi/file_g.png | Bin 0 -> 3505 bytes .../res/drawable-xxhdpi/file_g_cancel.png | Bin 0 -> 3605 bytes .../res/drawable-xxhdpi/file_g_cancel_s.png | Bin 0 -> 3579 bytes .../main/res/drawable-xxhdpi/file_g_load.png | Bin 0 -> 3288 bytes .../res/drawable-xxhdpi/file_g_load_s.png | Bin 0 -> 3295 bytes .../src/main/res/drawable-xxhdpi/file_g_s.png | Bin 0 -> 3492 bytes .../src/main/res/drawable-xxhdpi/floating.png | Bin 7052 -> 6873 bytes .../main/res/drawable-xxhdpi/floating_m.png | Bin 3641 -> 4765 bytes .../res/drawable-xxhdpi/floating_pressed.png | Bin 7047 -> 6929 bytes .../main/res/drawable-xxhdpi/forward_blue.png | Bin 1542 -> 1538 bytes .../main/res/drawable-xxhdpi/ic_ab_new.png | Bin 723 -> 1214 bytes .../res/drawable-xxhdpi/ic_msg_panel_kb.png | Bin 1158 -> 1216 bytes .../src/main/res/drawable-xxhdpi/ic_send.png | Bin 1053 -> 1923 bytes .../src/main/res/drawable-xxhdpi/igvideo.png | Bin 4398 -> 0 bytes .../src/main/res/drawable-xxhdpi/link.png | Bin 1793 -> 1788 bytes .../src/main/res/drawable-xxhdpi/load_big.png | Bin 4556 -> 4281 bytes .../main/res/drawable-xxhdpi/location2.png | Bin 0 -> 1544 bytes .../main/res/drawable-xxhdpi/location_b.9.png | Bin 1544 -> 3169 bytes .../main/res/drawable-xxhdpi/location_g.9.png | Bin 1620 -> 3330 bytes .../res/drawable-xxhdpi/miniplayer_pause.png | Bin 1068 -> 1068 bytes .../res/drawable-xxhdpi/miniplayer_play.png | Bin 1399 -> 1396 bytes .../src/main/res/drawable-xxhdpi/msg_in.9.png | Bin 2231 -> 3022 bytes .../res/drawable-xxhdpi/msg_in_photo.9.png | Bin 1332 -> 2737 bytes .../msg_in_photo_selected.9.png | Bin 1426 -> 2773 bytes .../res/drawable-xxhdpi/msg_in_selected.9.png | Bin 2361 -> 3052 bytes .../main/res/drawable-xxhdpi/msg_out.9.png | Bin 3076 -> 3081 bytes .../res/drawable-xxhdpi/msg_out_photo.9.png | Bin 2376 -> 2722 bytes .../msg_out_photo_selected.9.png | Bin 2375 -> 2688 bytes .../drawable-xxhdpi/msg_out_selected.9.png | Bin 3062 -> 3091 bytes .../res/drawable-xxhdpi/newmsg_divider.png | Bin 201 -> 1023 bytes .../src/main/res/drawable-xxhdpi/pause_b.png | Bin 2811 -> 3191 bytes .../res/drawable-xxhdpi/pause_b_pressed.png | Bin 2888 -> 0 bytes .../main/res/drawable-xxhdpi/pause_b_s.png | Bin 2810 -> 3192 bytes .../src/main/res/drawable-xxhdpi/pause_g.png | Bin 2813 -> 3196 bytes .../res/drawable-xxhdpi/pause_g_pressed.png | Bin 2829 -> 0 bytes .../main/res/drawable-xxhdpi/pause_g_s.png | Bin 3542 -> 3189 bytes .../src/main/res/drawable-xxhdpi/pause_w.png | Bin 2785 -> 0 bytes .../src/main/res/drawable-xxhdpi/pause_w2.png | Bin 2895 -> 0 bytes .../res/drawable-xxhdpi/pause_w2_pressed.png | Bin 2896 -> 0 bytes .../res/drawable-xxhdpi/pause_w_pressed.png | Bin 2830 -> 0 bytes .../main/res/drawable-xxhdpi/photocancel.png | Bin 2868 -> 3811 bytes .../res/drawable-xxhdpi/photocancel_b.png | Bin 0 -> 3783 bytes .../res/drawable-xxhdpi/photocancel_b_s.png | Bin 0 -> 3642 bytes .../res/drawable-xxhdpi/photocancel_g.png | Bin 0 -> 3807 bytes .../res/drawable-xxhdpi/photocancel_g_s.png | Bin 0 -> 3758 bytes .../drawable-xxhdpi/photocancel_pressed.png | Bin 0 -> 4012 bytes .../src/main/res/drawable-xxhdpi/photogif.png | Bin 3191 -> 3884 bytes .../res/drawable-xxhdpi/photogif_pressed.png | Bin 0 -> 4084 bytes .../main/res/drawable-xxhdpi/photoload.png | Bin 2522 -> 3394 bytes .../main/res/drawable-xxhdpi/photoload_b.png | Bin 0 -> 3421 bytes .../res/drawable-xxhdpi/photoload_b_s.png | Bin 0 -> 3348 bytes .../main/res/drawable-xxhdpi/photoload_g.png | Bin 0 -> 3417 bytes .../res/drawable-xxhdpi/photoload_g_s.png | Bin 0 -> 3424 bytes .../res/drawable-xxhdpi/photoload_pressed.png | Bin 0 -> 3558 bytes .../main/res/drawable-xxhdpi/photopause.png | Bin 2385 -> 0 bytes .../main/res/drawable-xxhdpi/phototime2.9.png | Bin 0 -> 1104 bytes .../res/drawable-xxhdpi/phototime2_b.9.png | Bin 0 -> 1110 bytes .../src/main/res/drawable-xxhdpi/play_b.png | Bin 0 -> 3742 bytes .../src/main/res/drawable-xxhdpi/play_b_s.png | Bin 0 -> 3696 bytes .../src/main/res/drawable-xxhdpi/play_big.png | Bin 4704 -> 5395 bytes .../src/main/res/drawable-xxhdpi/play_g.png | Bin 0 -> 3746 bytes .../src/main/res/drawable-xxhdpi/play_g_s.png | Bin 0 -> 3701 bytes .../src/main/res/drawable-xxhdpi/play_w.png | Bin 3433 -> 0 bytes .../src/main/res/drawable-xxhdpi/play_w2.png | Bin 3551 -> 0 bytes .../res/drawable-xxhdpi/play_w2_pressed.png | Bin 3547 -> 0 bytes .../res/drawable-xxhdpi/play_w_pressed.png | Bin 3498 -> 0 bytes .../main/res/drawable-xxhdpi/playvideo.png | Bin 3250 -> 3835 bytes .../res/drawable-xxhdpi/playvideo_pressed.png | Bin 0 -> 3984 bytes .../src/main/res/drawable-xxhdpi/reply.png | Bin 1904 -> 1902 bytes .../main/res/drawable-xxhdpi/share_arrow.png | Bin 0 -> 1511 bytes .../main/res/drawable-xxhdpi/share_round.png | Bin 0 -> 2389 bytes .../main/res/drawable-xxhdpi/shareblack.png | Bin 2582 -> 0 bytes .../drawable-xxhdpi/shareblack_pressed.png | Bin 2617 -> 0 bytes .../main/res/drawable-xxhdpi/shareblue.png | Bin 2604 -> 0 bytes .../res/drawable-xxhdpi/shareblue_pressed.png | Bin 2630 -> 0 bytes .../res/drawable-xxhdpi/stickercounter.9.png | Bin 0 -> 2068 bytes .../src/main/res/drawable-xxhdpi/system.9.png | Bin 0 -> 1479 bytes .../res/drawable-xxhdpi/system_black.9.png | Bin 330 -> 0 bytes .../res/drawable-xxhdpi/system_blue.9.png | Bin 1309 -> 0 bytes .../res/drawable-xxhdpi/system_loader.png | Bin 0 -> 2517 bytes .../res/drawable-xxhdpi/system_loader1.png | Bin 1665 -> 0 bytes .../res/drawable-xxhdpi/system_loader2.png | Bin 1596 -> 0 bytes .../res/drawable-xxhdpi/video_actions.png | Bin 0 -> 1302 bytes .../src/main/res/drawable/bar_selector.xml | 19 - .../main/res/drawable/bar_selector_audio.xml | 19 - .../main/res/drawable/bar_selector_blue.xml | 19 - .../main/res/drawable/bar_selector_cyan.xml | 19 - .../main/res/drawable/bar_selector_green.xml | 19 - .../main/res/drawable/bar_selector_grey.xml | 19 - .../main/res/drawable/bar_selector_mode.xml | 25 - .../main/res/drawable/bar_selector_orange.xml | 19 - .../main/res/drawable/bar_selector_picker.xml | 27 - .../main/res/drawable/bar_selector_pink.xml | 19 - .../main/res/drawable/bar_selector_red.xml | 19 - .../main/res/drawable/bar_selector_violet.xml | 19 - .../main/res/drawable/bar_selector_yellow.xml | 19 - .../src/main/res/drawable/field_carret.xml | 6 + .../src/main/res/drawable/search_carret.xml | 4 +- .../src/main/res/values-ar/strings.xml | 24 +- .../src/main/res/values-de/strings.xml | 38 +- .../src/main/res/values-es/strings.xml | 22 +- .../src/main/res/values-it/strings.xml | 52 +- .../src/main/res/values-ko/strings.xml | 22 +- .../src/main/res/values-nl/strings.xml | 20 +- .../src/main/res/values-pt-rBR/strings.xml | 42 +- .../src/main/res/values-pt-rPT/strings.xml | 42 +- .../src/main/res/values-v21/styles.xml | 28 +- TMessagesProj/src/main/res/values/strings.xml | 25 +- TMessagesProj/src/main/res/values/styles.xml | 12 +- build.gradle | 3 +- 732 files changed, 12475 insertions(+), 6463 deletions(-) create mode 100644 TMessagesProj/google-services.json create mode 100644 TMessagesProj/src/main/java/org/telegram/messenger/ShareBroadcastReceiver.java create mode 100644 TMessagesProj/src/main/java/org/telegram/messenger/browser/Browser.java create mode 100755 TMessagesProj/src/main/java/org/telegram/messenger/support/customtabs/CustomTabsCallback.java create mode 100755 TMessagesProj/src/main/java/org/telegram/messenger/support/customtabs/CustomTabsClient.java create mode 100755 TMessagesProj/src/main/java/org/telegram/messenger/support/customtabs/CustomTabsIntent.java create mode 100755 TMessagesProj/src/main/java/org/telegram/messenger/support/customtabs/CustomTabsService.java create mode 100755 TMessagesProj/src/main/java/org/telegram/messenger/support/customtabs/CustomTabsServiceConnection.java create mode 100755 TMessagesProj/src/main/java/org/telegram/messenger/support/customtabs/CustomTabsSession.java create mode 100755 TMessagesProj/src/main/java/org/telegram/messenger/support/customtabs/CustomTabsSessionToken.java create mode 100755 TMessagesProj/src/main/java/org/telegram/messenger/support/customtabs/ICustomTabsCallback.java create mode 100755 TMessagesProj/src/main/java/org/telegram/messenger/support/customtabs/ICustomTabsService.java create mode 100755 TMessagesProj/src/main/java/org/telegram/messenger/support/customtabsclient/shared/CustomTabsHelper.java create mode 100755 TMessagesProj/src/main/java/org/telegram/messenger/support/customtabsclient/shared/KeepAliveService.java create mode 100755 TMessagesProj/src/main/java/org/telegram/messenger/support/customtabsclient/shared/ServiceConnection.java create mode 100755 TMessagesProj/src/main/java/org/telegram/messenger/support/customtabsclient/shared/ServiceConnectionCallback.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/ActionBar/SimpleTextView.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/ActionBar/Theme.java delete mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Adapters/PhotoAttachAdapter.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Cells/BotSwitchCell.java delete mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatAudioCell.java delete mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatContactCell.java delete mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMusicCell.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAvatarContainer.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/CloseProgressDrawable.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/CloseProgressDrawable2.java delete mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/ResourceLoader.java rename TMessagesProj/src/main/java/org/telegram/ui/Components/{ShareFrameLayout.java => ShareAlert.java} (73%) delete mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Components/SimpleTextView.java delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/addcontact_blue.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/admin_star2.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/bot_file.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/bot_lines.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/bot_link.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/bot_location.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/bot_music.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/cancel_b.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/cancel_b_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/cancel_b_s.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/cancel_g.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/cancel_g_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/cancel_g_s.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/contact_blue.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/contact_green.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/corner_in_bl.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/corner_in_br.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/corner_in_tl.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/corner_in_tr.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/corner_out_bl.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/corner_out_br.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/corner_out_tl.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/corner_out_tr.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-hdpi/dialogs_badge.9.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-hdpi/doc_blue.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-hdpi/doc_green.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/download_b.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/download_b_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/download_b_s.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/download_bb.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/download_g.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/download_g_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/download_g_s.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/file_b.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/file_b_cancel.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/file_b_cancel_s.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/file_b_load.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/file_b_load_s.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/file_b_s.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/file_g.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/file_g_cancel.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/file_g_cancel_s.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/file_g_load.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/file_g_load_s.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/file_g_s.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-hdpi/forward_blue.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-hdpi/ic_msg_panel_kb.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/igvideo.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-hdpi/link.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/location2.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-hdpi/location_b.9.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-hdpi/location_g.9.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/pause_b_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/pause_bb.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/pause_g_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/pause_w.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/pause_w2.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/pause_w2_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/pause_w_pressed.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-hdpi/photocancel.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/photocancel_b.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/photocancel_b_s.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/photocancel_g.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/photocancel_g_s.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/photocancel_pressed.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-hdpi/photogif.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/photogif_pressed.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-hdpi/photoload.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/photoload_b.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/photoload_b_s.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/photoload_g.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/photoload_g_s.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/photoload_pressed.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/photopause.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/phototime2.9.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/phototime2_b.9.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/play_b.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/play_b_s.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/play_g.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/play_g_s.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/play_w.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/play_w2.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/play_w2_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/play_w_pressed.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-hdpi/playvideo.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/playvideo_pressed.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/share_arrow.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/share_round.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/shareblack.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/shareblack_pressed.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/shareblue.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/shareblue_pressed.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/stickercounter.9.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/system.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/system_black.9.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/system_blue.9.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/system_loader.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/system_loader1.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/system_loader2.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/video_actions.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/admin_star2.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/bot_file.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/bot_lines.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/bot_link.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/bot_location.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/bot_music.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/cancel_b.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/cancel_b_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/cancel_b_s.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/cancel_g.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/cancel_g_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/cancel_g_s.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/contact_blue.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/contact_green.png rename TMessagesProj/src/main/res/{drawable-hdpi/addcontact_green.png => drawable-mdpi/corner_in_bl.png} (53%) create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/corner_in_br.png rename TMessagesProj/src/main/res/drawable-mdpi/{addcontact_green.png => corner_in_tl.png} (54%) create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/corner_in_tr.png rename TMessagesProj/src/main/res/drawable-mdpi/{addcontact_blue.png => corner_out_bl.png} (53%) create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/corner_out_br.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/corner_out_tl.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/corner_out_tr.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-mdpi/dialogs_badge.9.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-mdpi/doc_blue.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-mdpi/doc_green.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/download_b.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/download_b_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/download_b_s.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/download_g.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/download_g_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/download_g_s.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/file_b.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/file_b_cancel.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/file_b_cancel_s.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/file_b_load.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/file_b_load_s.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/file_b_s.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/file_g.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/file_g_cancel.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/file_g_cancel_s.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/file_g_load.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/file_g_load_s.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/file_g_s.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-mdpi/forward_blue.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-mdpi/ic_msg_panel_kb.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/igvideo.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-mdpi/link.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/location2.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/pause_b_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/pause_g_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/pause_w.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/pause_w2.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/pause_w2_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/pause_w_pressed.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-mdpi/photocancel.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/photocancel_b.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/photocancel_b_s.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/photocancel_g.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/photocancel_g_s.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/photocancel_pressed.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-mdpi/photogif.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/photogif_pressed.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-mdpi/photoload.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/photoload_b.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/photoload_b_s.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/photoload_g.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/photoload_g_s.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/photoload_pressed.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/photopause.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/phototime2.9.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/phototime2_b.9.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/play_b.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/play_b_s.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/play_g.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/play_g_s.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/play_w.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/play_w2.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/play_w2_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/play_w_pressed.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-mdpi/playvideo.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/playvideo_pressed.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/share_arrow.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/share_round.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/shareblack.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/shareblack_pressed.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/shareblue.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/shareblue_pressed.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/stickercounter.9.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/system.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/system_black.9.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/system_blue.9.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/system_loader.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/system_loader1.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/system_loader2.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/video_actions.png delete mode 100644 TMessagesProj/src/main/res/drawable-v21/bar_selector.xml delete mode 100644 TMessagesProj/src/main/res/drawable-v21/bar_selector_audio.xml delete mode 100644 TMessagesProj/src/main/res/drawable-v21/bar_selector_blue.xml delete mode 100644 TMessagesProj/src/main/res/drawable-v21/bar_selector_cyan.xml delete mode 100644 TMessagesProj/src/main/res/drawable-v21/bar_selector_green.xml delete mode 100644 TMessagesProj/src/main/res/drawable-v21/bar_selector_grey.xml delete mode 100644 TMessagesProj/src/main/res/drawable-v21/bar_selector_mode.xml delete mode 100644 TMessagesProj/src/main/res/drawable-v21/bar_selector_orange.xml delete mode 100644 TMessagesProj/src/main/res/drawable-v21/bar_selector_picker.xml delete mode 100644 TMessagesProj/src/main/res/drawable-v21/bar_selector_pink.xml delete mode 100644 TMessagesProj/src/main/res/drawable-v21/bar_selector_red.xml delete mode 100644 TMessagesProj/src/main/res/drawable-v21/bar_selector_violet.xml delete mode 100644 TMessagesProj/src/main/res/drawable-v21/bar_selector_yellow.xml delete mode 100644 TMessagesProj/src/main/res/drawable-v21/circle_selector.xml delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/addcontact_blue.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/addcontact_green.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/admin_star2.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/bot_file.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/bot_lines.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/bot_link.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/bot_location.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/bot_music.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/cancel_b.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/cancel_b_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/cancel_b_s.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/cancel_g.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/cancel_g_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/cancel_g_s.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/contact_blue.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/contact_green.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/corner_in_bl.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/corner_in_br.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/corner_in_tl.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/corner_in_tr.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/corner_out_bl.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/corner_out_br.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/corner_out_tl.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/corner_out_tr.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xhdpi/dialogs_badge.9.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xhdpi/doc_blue.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xhdpi/doc_green.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/download_b.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/download_b_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/download_b_s.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/download_g.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/download_g_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/download_g_s.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/file_b.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/file_b_cancel.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/file_b_cancel_s.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/file_b_load.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/file_b_load_s.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/file_b_s.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/file_g.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/file_g_cancel.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/file_g_cancel_s.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/file_g_load.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/file_g_load_s.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/file_g_s.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xhdpi/forward_blue.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xhdpi/ic_msg_panel_kb.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/igvideo.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xhdpi/link.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/location2.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xhdpi/location_b.9.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xhdpi/location_g.9.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/pause_b_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/pause_g_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/pause_w.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/pause_w2.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/pause_w2_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/pause_w_pressed.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xhdpi/photocancel.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/photocancel_b.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/photocancel_b_s.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/photocancel_g.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/photocancel_g_s.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/photocancel_pressed.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xhdpi/photogif.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/photogif_pressed.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xhdpi/photoload.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/photoload_b.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/photoload_b_s.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/photoload_g.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/photoload_g_s.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/photoload_pressed.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/photopause.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/phototime2.9.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/phototime2_b.9.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/play_b.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/play_b_s.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/play_g.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/play_g_s.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/play_w.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/play_w2.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/play_w2_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/play_w_pressed.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xhdpi/playvideo.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/playvideo_pressed.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/share_arrow.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/share_round.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/shareblack.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/shareblack_pressed.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/shareblue.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/shareblue_pressed.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/stickercounter.9.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/system.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/system_black.9.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/system_blue.9.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/system_loader.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/system_loader1.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/system_loader2.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/video_actions.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/addcontact_blue.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/addcontact_green.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/admin_star2.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/bot_file.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/bot_lines.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/bot_link.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/bot_location.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/bot_music.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/cancel_b.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/cancel_b_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/cancel_b_s.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/cancel_g.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/cancel_g_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/cancel_g_s.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/contact_blue.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/contact_green.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/corner_in_bl.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/corner_in_br.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/corner_in_tl.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/corner_in_tr.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/corner_out_bl.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/corner_out_br.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/corner_out_tl.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/corner_out_tr.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xxhdpi/dialogs_badge.9.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xxhdpi/doc_blue.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xxhdpi/doc_green.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/download_b.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/download_b_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/download_b_s.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/download_g.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/download_g_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/download_g_s.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/file_b.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/file_b_cancel.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/file_b_cancel_s.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/file_b_load.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/file_b_load_s.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/file_b_s.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/file_g.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/file_g_cancel.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/file_g_cancel_s.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/file_g_load.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/file_g_load_s.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/file_g_s.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xxhdpi/forward_blue.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xxhdpi/ic_msg_panel_kb.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/igvideo.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xxhdpi/link.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/location2.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xxhdpi/location_b.9.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xxhdpi/location_g.9.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/pause_b_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/pause_g_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/pause_w.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/pause_w2.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/pause_w2_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/pause_w_pressed.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xxhdpi/photocancel.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/photocancel_b.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/photocancel_b_s.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/photocancel_g.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/photocancel_g_s.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/photocancel_pressed.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xxhdpi/photogif.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/photogif_pressed.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xxhdpi/photoload.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/photoload_b.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/photoload_b_s.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/photoload_g.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/photoload_g_s.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/photoload_pressed.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/photopause.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/phototime2.9.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/phototime2_b.9.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/play_b.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/play_b_s.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/play_g.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/play_g_s.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/play_w.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/play_w2.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/play_w2_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/play_w_pressed.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xxhdpi/playvideo.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/playvideo_pressed.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/share_arrow.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/share_round.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/shareblack.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/shareblack_pressed.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/shareblue.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/shareblue_pressed.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/stickercounter.9.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/system.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/system_black.9.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/system_blue.9.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/system_loader.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/system_loader1.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/system_loader2.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/video_actions.png delete mode 100644 TMessagesProj/src/main/res/drawable/bar_selector.xml delete mode 100644 TMessagesProj/src/main/res/drawable/bar_selector_audio.xml delete mode 100644 TMessagesProj/src/main/res/drawable/bar_selector_blue.xml delete mode 100644 TMessagesProj/src/main/res/drawable/bar_selector_cyan.xml delete mode 100644 TMessagesProj/src/main/res/drawable/bar_selector_green.xml delete mode 100644 TMessagesProj/src/main/res/drawable/bar_selector_grey.xml delete mode 100644 TMessagesProj/src/main/res/drawable/bar_selector_mode.xml delete mode 100644 TMessagesProj/src/main/res/drawable/bar_selector_orange.xml delete mode 100644 TMessagesProj/src/main/res/drawable/bar_selector_picker.xml delete mode 100644 TMessagesProj/src/main/res/drawable/bar_selector_pink.xml delete mode 100644 TMessagesProj/src/main/res/drawable/bar_selector_red.xml delete mode 100644 TMessagesProj/src/main/res/drawable/bar_selector_violet.xml delete mode 100644 TMessagesProj/src/main/res/drawable/bar_selector_yellow.xml create mode 100644 TMessagesProj/src/main/res/drawable/field_carret.xml diff --git a/TMessagesProj/build.gradle b/TMessagesProj/build.gradle index bd3d3a7f4..682d05af2 100644 --- a/TMessagesProj/build.gradle +++ b/TMessagesProj/build.gradle @@ -5,7 +5,7 @@ repositories { } dependencies { - compile 'com.android.support:support-v4:23.2.1' + compile 'com.android.support:support-v4:23.3.0' compile "com.google.android.gms:play-services-gcm:8.4.0" compile "com.google.android.gms:play-services-maps:8.4.0" compile 'net.hockeyapp.android:HockeySDK:3.6.+' @@ -14,7 +14,7 @@ dependencies { android { compileSdkVersion 23 - buildToolsVersion '23.0.2' + buildToolsVersion '23.0.3' useLibrary 'org.apache.http.legacy' defaultConfig.applicationId = "org.telegram.messenger" @@ -63,7 +63,7 @@ android { } } - defaultConfig.versionCode = 767 + defaultConfig.versionCode = 787 sourceSets.main { jniLibs.srcDir 'libs' @@ -114,6 +114,8 @@ android { defaultConfig { minSdkVersion 9 targetSdkVersion 23 - versionName "3.7.0" + versionName "3.8.1" } } + +apply plugin: 'com.google.gms.google-services' diff --git a/TMessagesProj/google-services.json b/TMessagesProj/google-services.json new file mode 100644 index 000000000..0002195c2 --- /dev/null +++ b/TMessagesProj/google-services.json @@ -0,0 +1,75 @@ +{ + "project_info": { + "project_id": "tmessages2", + "project_number": "760348033671", + "name": "Telegram" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:760348033671:android:f6afd7b67eae3860", + "client_id": "android:org.telegram.messenger", + "client_type": 1, + "android_client_info": { + "package_name": "org.telegram.messenger", + "certificate_hash": [] + } + }, + "oauth_client": [], + "api_key": [], + "services": { + "analytics_service": { + "status": 1 + }, + "cloud_messaging_service": { + "status": 2, + "apns_config": [] + }, + "appinvite_service": { + "status": 1, + "other_platform_oauth_client": [] + }, + "google_signin_service": { + "status": 1 + }, + "ads_service": { + "status": 1 + } + } + }, + { + "client_info": { + "mobilesdk_app_id": "1:760348033671:android:dc022572c167a16c", + "client_id": "android:org.telegram.messenger.beta", + "client_type": 1, + "android_client_info": { + "package_name": "org.telegram.messenger.beta", + "certificate_hash": [] + } + }, + "oauth_client": [], + "api_key": [], + "services": { + "analytics_service": { + "status": 1 + }, + "cloud_messaging_service": { + "status": 2, + "apns_config": [] + }, + "appinvite_service": { + "status": 1, + "other_platform_oauth_client": [] + }, + "google_signin_service": { + "status": 1 + }, + "ads_service": { + "status": 1 + } + } + } + ], + "client_info": [], + "ARTIFACT_VERSION": "1" +} \ No newline at end of file diff --git a/TMessagesProj/jni/Android.mk b/TMessagesProj/jni/Android.mk index b783ad8eb..e5ca2a519 100755 --- a/TMessagesProj/jni/Android.mk +++ b/TMessagesProj/jni/Android.mk @@ -235,12 +235,12 @@ include $(BUILD_STATIC_LIBRARY) include $(CLEAR_VARS) LOCAL_PRELINK_MODULE := false -LOCAL_MODULE := tmessages.20 +LOCAL_MODULE := tmessages.21 LOCAL_CFLAGS := -w -std=c11 -Os -DNULL=0 -DSOCKLEN_T=socklen_t -DLOCALE_NOT_USED -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 LOCAL_CFLAGS += -Drestrict='' -D__EMX__ -DOPUS_BUILD -DFIXED_POINT -DUSE_ALLOCA -DHAVE_LRINT -DHAVE_LRINTF -fno-math-errno LOCAL_CFLAGS += -DANDROID_NDK -DDISABLE_IMPORTGL -fno-strict-aliasing -fprefetch-loop-arrays -DAVOID_TABLES -DANDROID_TILE_BASED_DECODE -DANDROID_ARMV6_IDCT -ffast-math -D__STDC_CONSTANT_MACROS LOCAL_CPPFLAGS := -DBSD=1 -ffast-math -Os -funroll-loops -std=c++11 -LOCAL_LDLIBS := -ljnigraphics -llog -lz +LOCAL_LDLIBS := -ljnigraphics -llog -lz -latomic LOCAL_STATIC_LIBRARIES := webp sqlite tgnet breakpad avformat avcodec avutil LOCAL_SRC_FILES := \ diff --git a/TMessagesProj/jni/TgNetWrapper.cpp b/TMessagesProj/jni/TgNetWrapper.cpp index a83920bf4..decb50bd9 100644 --- a/TMessagesProj/jni/TgNetWrapper.cpp +++ b/TMessagesProj/jni/TgNetWrapper.cpp @@ -157,6 +157,10 @@ void setNetworkAvailable(JNIEnv *env, jclass c, jboolean value) { ConnectionsManager::getInstance().setNetworkAvailable(value); } +void setPushConnectionEnabled(JNIEnv *env, jclass c, jboolean value) { + ConnectionsManager::getInstance().setPushConnectionEnabled(value); +} + class Delegate : public ConnectiosManagerDelegate { void onUpdate() { @@ -194,7 +198,7 @@ class Delegate : public ConnectiosManagerDelegate { } }; -void init(JNIEnv *env, jclass c, jint version, jint layer, jint apiId, jstring deviceModel, jstring systemVersion, jstring appVersion, jstring langCode, jstring configPath, jstring logPath, jint userId) { +void init(JNIEnv *env, jclass c, jint version, jint layer, jint apiId, jstring deviceModel, jstring systemVersion, jstring appVersion, jstring langCode, jstring configPath, jstring logPath, jint userId, jboolean enablePushConnection) { const char *deviceModelStr = env->GetStringUTFChars(deviceModel, 0); const char *systemVersionStr = env->GetStringUTFChars(systemVersion, 0); const char *appVersionStr = env->GetStringUTFChars(appVersion, 0); @@ -202,7 +206,7 @@ void init(JNIEnv *env, jclass c, jint version, jint layer, jint apiId, jstring d const char *configPathStr = env->GetStringUTFChars(configPath, 0); const char *logPathStr = env->GetStringUTFChars(logPath, 0); - ConnectionsManager::getInstance().init(version, layer, apiId, std::string(deviceModelStr), std::string(systemVersionStr), std::string(appVersionStr), std::string(langCodeStr), std::string(configPathStr), std::string(logPathStr), userId, true); + ConnectionsManager::getInstance().init(version, layer, apiId, std::string(deviceModelStr), std::string(systemVersionStr), std::string(appVersionStr), std::string(langCodeStr), std::string(configPathStr), std::string(logPathStr), userId, true, enablePushConnection); if (deviceModelStr != 0) { env->ReleaseStringUTFChars(deviceModel, deviceModelStr); @@ -242,13 +246,14 @@ static JNINativeMethod ConnectionsManagerMethods[] = { {"native_applyDatacenterAddress", "(ILjava/lang/String;I)V", (void *) applyDatacenterAddress}, {"native_getConnectionState", "()I", (void *) getConnectionState}, {"native_setUserId", "(I)V", (void *) setUserId}, - {"native_init", "(IIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V", (void *) init}, + {"native_init", "(IIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IZ)V", (void *) init}, {"native_switchBackend", "()V", (void *) switchBackend}, {"native_pauseNetwork", "()V", (void *) pauseNetwork}, {"native_resumeNetwork", "(Z)V", (void *) resumeNetwork}, {"native_updateDcSettings", "()V", (void *) updateDcSettings}, {"native_setUseIpv6", "(Z)V", (void *) setUseIpv6}, {"native_setNetworkAvailable", "(Z)V", (void *) setNetworkAvailable}, + {"native_setPushConnectionEnabled", "(Z)V", (void *) setPushConnectionEnabled}, {"native_setJava", "(Z)V", (void *) setJava} }; diff --git a/TMessagesProj/jni/image.c b/TMessagesProj/jni/image.c index f7a2cfefa..5f1d78dee 100644 --- a/TMessagesProj/jni/image.c +++ b/TMessagesProj/jni/image.c @@ -397,13 +397,13 @@ JNIEXPORT void Java_org_telegram_messenger_Utilities_calcCDT(JNIEnv *env, jclass JNIEXPORT int Java_org_telegram_messenger_Utilities_pinBitmap(JNIEnv *env, jclass class, jobject bitmap) { if (bitmap == NULL) { - return; + return 0; } unsigned char *pixels; return AndroidBitmap_lockPixels(env, bitmap, &pixels) >= 0 ? 1 : 0; } -JNIEXPORT int Java_org_telegram_messenger_Utilities_unpinBitmap(JNIEnv *env, jclass class, jobject bitmap) { +JNIEXPORT void Java_org_telegram_messenger_Utilities_unpinBitmap(JNIEnv *env, jclass class, jobject bitmap) { if (bitmap == NULL) { return; } diff --git a/TMessagesProj/jni/tgnet/Connection.cpp b/TMessagesProj/jni/tgnet/Connection.cpp index 1a51abe54..9ea752b8d 100644 --- a/TMessagesProj/jni/tgnet/Connection.cpp +++ b/TMessagesProj/jni/tgnet/Connection.cpp @@ -394,7 +394,7 @@ void Connection::onDisconnected(int reason) { ConnectionsManager::getInstance().onConnectionClosed(this); uint32_t datacenterId = currentDatacenter->getDatacenterId(); - if (connectionState == TcpConnectionStageIdle && connectionType == ConnectionTypeGeneric && (datacenterId == ConnectionsManager::getInstance().currentDatacenterId || datacenterId == ConnectionsManager::getInstance().movingToDatacenterId)) { + if (connectionState == TcpConnectionStageIdle && connectionType == ConnectionTypeGeneric && (currentDatacenter->isHandshaking() || datacenterId == ConnectionsManager::getInstance().currentDatacenterId || datacenterId == ConnectionsManager::getInstance().movingToDatacenterId)) { connectionState = TcpConnectionStageReconnecting; failedConnectionCount++; if (failedConnectionCount == 1) { diff --git a/TMessagesProj/jni/tgnet/ConnectionsManager.cpp b/TMessagesProj/jni/tgnet/ConnectionsManager.cpp index 1b8a85b74..3e6f07689 100644 --- a/TMessagesProj/jni/tgnet/ConnectionsManager.cpp +++ b/TMessagesProj/jni/tgnet/ConnectionsManager.cpp @@ -170,22 +170,24 @@ void ConnectionsManager::select() { } Datacenter *datacenter = getDatacenterWithId(currentDatacenterId); - if ((sendingPushPing && abs(now - lastPushPingTime) >= 30000) || abs(now - lastPushPingTime) >= 60000 * 3 + 10000) { - lastPushPingTime = 0; - sendingPushPing = false; - if (datacenter != nullptr) { - Connection *connection = datacenter->getPushConnection(false); - if (connection != nullptr) { - connection->suspendConnection(); + if (pushConnectionEnabled) { + if ((sendingPushPing && abs(now - lastPushPingTime) >= 30000) || abs(now - lastPushPingTime) >= 60000 * 3 + 10000) { + lastPushPingTime = 0; + sendingPushPing = false; + if (datacenter != nullptr) { + Connection *connection = datacenter->getPushConnection(false); + if (connection != nullptr) { + connection->suspendConnection(); + } } + DEBUG_D("push ping timeout"); } - DEBUG_D("push ping timeout"); - } - if (abs(now - lastPushPingTime) >= 60000 * 3) { - DEBUG_D("time for push ping"); - lastPushPingTime = now; - if (datacenter != nullptr) { - sendPing(datacenter, true); + if (abs(now - lastPushPingTime) >= 60000 * 3) { + DEBUG_D("time for push ping"); + lastPushPingTime = now; + if (datacenter != nullptr) { + sendPing(datacenter, true); + } } } @@ -220,7 +222,7 @@ void ConnectionsManager::select() { return; } else { lastPauseTime = now; - DEBUG_D("don't sleep 30 seconds because of salt, upload or download request"); + DEBUG_D("don't sleep because of salt, upload or download request"); } } if (networkPaused) { @@ -285,7 +287,7 @@ void *ConnectionsManager::ThreadProc(void *data) { javaVm->AttachCurrentThread(&jniEnv, NULL); #endif ConnectionsManager *networkManager = (ConnectionsManager *) (data); - if (networkManager->currentUserId != 0) { + if (networkManager->currentUserId != 0 && networkManager->pushConnectionEnabled) { Datacenter *datacenter = networkManager->getDatacenterWithId(networkManager->currentDatacenterId); if (datacenter != nullptr) { datacenter->createPushConnection()->setSessionId(networkManager->pushSessionId); @@ -595,7 +597,6 @@ void ConnectionsManager::onConnectionConnected(Connection *connection) { } else { if (networkPaused && lastPauseTime != 0) { lastPauseTime = getCurrentTimeMillis(); - nextSleepTimeout = 30000; } processRequestQueue(connection->getConnectionType(), datacenter->getDatacenterId()); } @@ -1210,7 +1211,6 @@ void ConnectionsManager::processServerResponse(TLObject *message, int64_t messag if (connection->connectionType == ConnectionTypePush) { if (networkPaused) { lastPauseTime = getCurrentTimeMillis(); - nextSleepTimeout = 30000; DEBUG_D("received internal push: wakeup network in background"); } else if (lastPauseTime != 0) { lastPauseTime = getCurrentTimeMillis(); @@ -1234,7 +1234,7 @@ void ConnectionsManager::processServerResponse(TLObject *message, int64_t messag } void ConnectionsManager::sendPing(Datacenter *datacenter, bool usePushConnection) { - if (usePushConnection && currentUserId == 0) { + if (usePushConnection && (currentUserId == 0 || !usePushConnection)) { return; } Connection *connection = nullptr; @@ -1401,7 +1401,7 @@ void ConnectionsManager::sendRequest(TLObject *object, onCompleteFunc onComplete request->ptr1 = ptr1; request->ptr2 = ptr2; request->rpcRequest = wrapInLayer(object, getDatacenterWithId(datacenterId), request); - DEBUG_D("send request wrapped %p - %s", request->rpcRequest.get(), typeid(*request->rpcRequest.get()).name()); + DEBUG_D("send request wrapped %p - %s", request->rpcRequest.get(), typeid(*(request->rpcRequest.get())).name()); requestsQueue.push_back(std::unique_ptr(request)); if (immediate) { processRequestQueue(0, 0); @@ -1452,7 +1452,7 @@ void ConnectionsManager::setUserId(int32_t userId) { if (currentUserId != userId && userId != 0) { updateDcSettings(0); } - if (currentUserId != 0) { + if (currentUserId != 0 && pushConnectionEnabled) { Datacenter *datacenter = getDatacenterWithId(currentDatacenterId); if (datacenter != nullptr) { datacenter->createPushConnection()->setSessionId(pushSessionId); @@ -2121,7 +2121,7 @@ void ConnectionsManager::processRequestQueue(uint32_t connectionTypes, uint32_t request->outgoingQuery = message->outgoingBody; message->outgoingBody = nullptr; } else { - DEBUG_D("wrap body(%p, %s) to TL_invokeAfterMsg", message->body.get(), typeid(*message->body.get()).name()); + DEBUG_D("wrap body(%p, %s) to TL_invokeAfterMsg", message->body.get(), typeid(*(message->body.get())).name()); request->query = std::move(message->body); } message->body = std::unique_ptr(request); @@ -2390,7 +2390,23 @@ void ConnectionsManager::setDelegate(ConnectiosManagerDelegate *connectiosManage delegate = connectiosManagerDelegate; } -void ConnectionsManager::init(uint32_t version, int32_t layer, int32_t apiId, std::string deviceModel, std::string systemVersion, std::string appVersion, std::string langCode, std::string configPath, std::string logPath, int32_t userId, bool isPaused) { +void ConnectionsManager::setPushConnectionEnabled(bool value) { + pushConnectionEnabled = value; + Datacenter *datacenter = getDatacenterWithId(currentDatacenterId); + if (datacenter != nullptr) { + if (!pushConnectionEnabled) { + Connection *connection = datacenter->getPushConnection(false); + if (connection != nullptr) { + connection->suspendConnection(); + } + } else { + datacenter->createPushConnection()->setSessionId(pushSessionId); + sendPing(datacenter, true); + } + } +} + +void ConnectionsManager::init(uint32_t version, int32_t layer, int32_t apiId, std::string deviceModel, std::string systemVersion, std::string appVersion, std::string langCode, std::string configPath, std::string logPath, int32_t userId, bool isPaused, bool enablePushConnection) { currentVersion = version; currentLayer = layer; currentApiId = apiId; @@ -2401,6 +2417,7 @@ void ConnectionsManager::init(uint32_t version, int32_t layer, int32_t apiId, st currentLangCode = langCode; currentUserId = userId; currentLogPath = logPath; + pushConnectionEnabled = enablePushConnection; if (isPaused) { lastPauseTime = getCurrentTimeMillis(); } @@ -2423,7 +2440,6 @@ void ConnectionsManager::resumeNetwork(bool partial) { if (partial) { if (networkPaused) { lastPauseTime = getCurrentTimeMillis(); - nextSleepTimeout = 30000; networkPaused = false; DEBUG_D("wakeup network in background"); } else if (lastPauseTime != 0) { diff --git a/TMessagesProj/jni/tgnet/ConnectionsManager.h b/TMessagesProj/jni/tgnet/ConnectionsManager.h index d389cb32f..ecfad29d1 100644 --- a/TMessagesProj/jni/tgnet/ConnectionsManager.h +++ b/TMessagesProj/jni/tgnet/ConnectionsManager.h @@ -60,8 +60,9 @@ public: void pauseNetwork(); void setNetworkAvailable(bool value); void setUseIpv6(bool value); - void init(uint32_t version, int32_t layer, int32_t apiId, std::string deviceModel, std::string systemVersion, std::string appVersion, std::string langCode, std::string configPath, std::string logPath, int32_t userId, bool isPaused); + void init(uint32_t version, int32_t layer, int32_t apiId, std::string deviceModel, std::string systemVersion, std::string appVersion, std::string langCode, std::string configPath, std::string logPath, int32_t userId, bool isPaused, bool enablePushConnection); void updateDcSettings(uint32_t datacenterId); + void setPushConnectionEnabled(bool value); #ifdef ANDROID void sendRequest(TLObject *object, onCompleteFunc onComplete, onQuickAckFunc onQuickAck, uint32_t flags, uint32_t datacenterId, ConnectionType connetionType, bool immediate, int32_t requestToken, jobject ptr1, jobject ptr2); @@ -133,7 +134,7 @@ private: int32_t lastDcUpdateTime = 0; int64_t lastPingTime = getCurrentTimeMillis(); bool networkPaused = false; - int32_t nextSleepTimeout = 30000; + int32_t nextSleepTimeout = CONNECTION_BACKGROUND_KEEP_TIME; int64_t lastPauseTime = 0; ConnectionState connectionState = ConnectionStateConnecting; std::unique_ptr movingAuthorization; @@ -172,6 +173,7 @@ private: std::string currentLogPath; int32_t currentUserId = 0; bool registeredForInternalPush = false; + bool pushConnectionEnabled = true; ConnectiosManagerDelegate *delegate; diff --git a/TMessagesProj/jni/tgnet/Defines.h b/TMessagesProj/jni/tgnet/Defines.h index 5490180be..168199bdb 100644 --- a/TMessagesProj/jni/tgnet/Defines.h +++ b/TMessagesProj/jni/tgnet/Defines.h @@ -17,10 +17,11 @@ #define USE_DEBUG_SESSION false #define READ_BUFFER_SIZE 1024 * 128 -#define DEBUG_VERSION +//#define DEBUG_VERSION #define DEFAULT_DATACENTER_ID INT_MAX #define DC_UPDATE_TIME 60 * 60 #define DOWNLOAD_CONNECTIONS_COUNT 2 +#define CONNECTION_BACKGROUND_KEEP_TIME 10000 class TLObject; class TL_error; diff --git a/TMessagesProj/src/main/AndroidManifest.xml b/TMessagesProj/src/main/AndroidManifest.xml index 766336f01..f16acf716 100644 --- a/TMessagesProj/src/main/AndroidManifest.xml +++ b/TMessagesProj/src/main/AndroidManifest.xml @@ -213,6 +213,8 @@ + + diff --git a/TMessagesProj/src/main/java/org/telegram/SQLite/SQLiteDatabase.java b/TMessagesProj/src/main/java/org/telegram/SQLite/SQLiteDatabase.java index c68c62db2..6ab2e575d 100755 --- a/TMessagesProj/src/main/java/org/telegram/SQLite/SQLiteDatabase.java +++ b/TMessagesProj/src/main/java/org/telegram/SQLite/SQLiteDatabase.java @@ -77,7 +77,6 @@ public class SQLiteDatabase { close(); } - private StackTraceElement[] temp; public void beginTransaction() throws SQLiteException { if (inTransaction) { throw new SQLiteException("database already in transaction"); diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/AndroidUtilities.java b/TMessagesProj/src/main/java/org/telegram/messenger/AndroidUtilities.java index 4dd43713c..133433214 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/AndroidUtilities.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/AndroidUtilities.java @@ -11,7 +11,6 @@ package org.telegram.messenger; import android.annotation.SuppressLint; import android.app.Activity; import android.app.AlertDialog; -import android.app.PendingIntent; import android.content.ContentUris; import android.content.Context; import android.content.DialogInterface; @@ -20,21 +19,19 @@ import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; import android.content.res.Configuration; import android.database.Cursor; -import android.graphics.BitmapFactory; +import android.graphics.Bitmap; import android.graphics.Color; import android.graphics.Point; import android.graphics.Rect; import android.graphics.Typeface; +import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Build; -import android.os.Bundle; import android.os.Environment; -import android.os.Parcelable; -import android.provider.Browser; import android.provider.DocumentsContract; import android.provider.MediaStore; -import android.text.Spannable; import android.text.SpannableStringBuilder; import android.text.Spanned; import android.text.style.ForegroundColorSpan; @@ -62,6 +59,7 @@ import org.telegram.messenger.AnimationCompat.AnimatorListenerAdapterProxy; import org.telegram.messenger.AnimationCompat.AnimatorSetProxy; import org.telegram.messenger.AnimationCompat.ObjectAnimatorProxy; import org.telegram.messenger.AnimationCompat.ViewProxy; +import org.telegram.ui.ActionBar.BaseFragment; import org.telegram.ui.Components.ForegroundDetector; import org.telegram.ui.Components.NumberPicker; import org.telegram.ui.Components.TypefaceSpan; @@ -129,14 +127,111 @@ public class AndroidUtilities { } } - - static { density = ApplicationLoader.applicationContext.getResources().getDisplayMetrics().density; leftBaseline = isTablet() ? 80 : 72; checkDisplaySize(); } + public static int[] calcDrawableColor(Drawable drawable) { + int bitmapColor = 0xff000000; + int result[] = new int[2]; + try { + if (drawable instanceof BitmapDrawable) { + Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap(); + if (bitmap != null) { + Bitmap b = Bitmaps.createScaledBitmap(bitmap, 1, 1, true); + if (b != null) { + bitmapColor = b.getPixel(0, 0); + b.recycle(); + } + } + } else if (drawable instanceof ColorDrawable) { + if (Build.VERSION.SDK_INT >= 11) { + bitmapColor = ((ColorDrawable) drawable).getColor(); + } else { + bitmapColor = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE).getInt("selectedColor", 0xff000000); + } + } + } catch (Exception e) { + FileLog.e("tmessages", e); + } + + double[] hsv = rgbToHsv((bitmapColor >> 16) & 0xff, (bitmapColor >> 8) & 0xff, bitmapColor & 0xff); + hsv[1] = Math.min(1.0, hsv[1] + 0.05 + 0.1 * (1.0 - hsv[1])); + hsv[2] = Math.max(0, hsv[2] * 0.65); + int rgb[] = hsvToRgb(hsv[0], hsv[1], hsv[2]); + result[0] = Color.argb(0x66, rgb[0], rgb[1], rgb[2]); + result[1] = Color.argb(0x88, rgb[0], rgb[1], rgb[2]); + return result; + } + + private static double[] rgbToHsv(int r, int g, int b) { + double rf = r / 255.0; + double gf = g / 255.0; + double bf = b / 255.0; + double max = (rf > gf && rf > bf) ? rf : (gf > bf) ? gf : bf; + double min = (rf < gf && rf < bf) ? rf : (gf < bf) ? gf : bf; + double h, s; + double d = max - min; + s = max == 0 ? 0 : d / max; + if (max == min) { + h = 0; + } else { + if (rf > gf && rf > bf) { + h = (gf - bf) / d + (gf < bf ? 6 : 0); + } else if (gf > bf) { + h = (bf - rf) / d + 2; + } else { + h = (rf - gf) / d + 4; + } + h /= 6; + } + return new double[]{h, s, max}; + } + + private static int[] hsvToRgb(double h, double s, double v) { + double r = 0, g = 0, b = 0; + double i = (int) Math.floor(h * 6); + double f = h * 6 - i; + double p = v * (1 - s); + double q = v * (1 - f * s); + double t = v * (1 - (1 - f) * s); + switch ((int) i % 6) { + case 0: + r = v; + g = t; + b = p; + break; + case 1: + r = q; + g = v; + b = p; + break; + case 2: + r = p; + g = v; + b = t; + break; + case 3: + r = p; + g = q; + b = v; + break; + case 4: + r = t; + g = p; + b = v; + break; + case 5: + r = v; + g = p; + b = q; + break; + } + return new int[]{(int) (r * 255), (int) (g * 255), (int) (b * 255)}; + } + public static void requestAdjustResize(Activity activity, int classGuid) { if (activity == null || isTablet()) { return; @@ -154,8 +249,36 @@ public class AndroidUtilities { } } + public static boolean isGoogleMapsInstalled(final BaseFragment fragment) { + try { + ApplicationLoader.applicationContext.getPackageManager().getApplicationInfo("com.google.android.apps.maps", 0); + return true; + } catch (PackageManager.NameNotFoundException e) { + if (fragment.getParentActivity() == null) { + return false; + } + AlertDialog.Builder builder = new AlertDialog.Builder(fragment.getParentActivity()); + builder.setMessage("Install Google Maps?"); + builder.setCancelable(true); + builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + try { + Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=com.google.android.apps.maps")); + fragment.getParentActivity().startActivityForResult(intent, 500); + } catch (Exception e) { + FileLog.e("tmessages", e); + } + } + }); + builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); + fragment.showDialog(builder.create()); + return false; + } + } + public static void lockOrientation(Activity activity) { - if (activity == null || prevOrientation != -10 || Build.VERSION.SDK_INT < 9) { + if (activity == null || prevOrientation != -10) { return; } try { @@ -164,22 +287,16 @@ public class AndroidUtilities { if (manager != null && manager.getDefaultDisplay() != null) { int rotation = manager.getDefaultDisplay().getRotation(); int orientation = activity.getResources().getConfiguration().orientation; - int SCREEN_ORIENTATION_REVERSE_LANDSCAPE = 8; - int SCREEN_ORIENTATION_REVERSE_PORTRAIT = 9; - if (Build.VERSION.SDK_INT < 9) { - SCREEN_ORIENTATION_REVERSE_LANDSCAPE = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE; - SCREEN_ORIENTATION_REVERSE_PORTRAIT = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; - } if (rotation == Surface.ROTATION_270) { if (orientation == Configuration.ORIENTATION_PORTRAIT) { activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } else { - activity.setRequestedOrientation(SCREEN_ORIENTATION_REVERSE_LANDSCAPE); + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE); } } else if (rotation == Surface.ROTATION_90) { if (orientation == Configuration.ORIENTATION_PORTRAIT) { - activity.setRequestedOrientation(SCREEN_ORIENTATION_REVERSE_PORTRAIT); + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT); } else { activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); } @@ -191,9 +308,9 @@ public class AndroidUtilities { } } else { if (orientation == Configuration.ORIENTATION_LANDSCAPE) { - activity.setRequestedOrientation(SCREEN_ORIENTATION_REVERSE_LANDSCAPE); + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE); } else { - activity.setRequestedOrientation(SCREEN_ORIENTATION_REVERSE_PORTRAIT); + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT); } } } @@ -203,7 +320,7 @@ public class AndroidUtilities { } public static void unlockOrientation(Activity activity) { - if (activity == null || Build.VERSION.SDK_INT < 9) { + if (activity == null) { return; } try { @@ -430,46 +547,6 @@ public class AndroidUtilities { } } - public static void openUrl(Context context, String url) { - if (context == null || url == null) { - return; - } - openUrl(context, Uri.parse(url)); - } - - public static void openUrl(Context context, Uri uri) { - if (context == null || uri == null) { - return; - } - - try { - Intent intent = new Intent(Intent.ACTION_VIEW, uri); - if (MediaController.getInstance().canCustomTabs()) { - intent.putExtra("android.support.customtabs.extra.SESSION", (Parcelable) null); - intent.putExtra("android.support.customtabs.extra.TOOLBAR_COLOR", 0xff54759e); - intent.putExtra("android.support.customtabs.extra.TITLE_VISIBILITY", 1); - - Intent actionIntent = new Intent(Intent.ACTION_SEND); - actionIntent.setType("text/plain"); - actionIntent.putExtra(Intent.EXTRA_TEXT, uri.toString()); - actionIntent.putExtra(Intent.EXTRA_SUBJECT, ""); - PendingIntent pendingIntent = PendingIntent.getActivity(ApplicationLoader.applicationContext, 0, actionIntent, PendingIntent.FLAG_ONE_SHOT); - - Bundle bundle = new Bundle(); - bundle.putInt("android.support.customtabs.customaction.ID", 0); - bundle.putParcelable("android.support.customtabs.customaction.ICON", BitmapFactory.decodeResource(context.getResources(), R.drawable.abc_ic_menu_share_mtrl_alpha)); - bundle.putString("android.support.customtabs.customaction.DESCRIPTION", LocaleController.getString("ShareFile", R.string.ShareFile)); - bundle.putParcelable("android.support.customtabs.customaction.PENDING_INTENT", pendingIntent); - intent.putExtra("android.support.customtabs.extra.ACTION_BUTTON_BUNDLE", bundle); - intent.putExtra("android.support.customtabs.extra.TINT_ACTION_BUTTON", false); - } - intent.putExtra(Browser.EXTRA_APPLICATION_ID, context.getPackageName()); - context.startActivity(intent); - } catch (Exception e) { - FileLog.e("tmessages", e); - } - } - public static int getPhotoSize() { if (photoSize == null) { if (Build.VERSION.SDK_INT >= 16) { @@ -685,11 +762,11 @@ public class AndroidUtilities { public static final int FLAG_TAG_COLOR = 4; public static final int FLAG_TAG_ALL = FLAG_TAG_BR | FLAG_TAG_BOLD | FLAG_TAG_COLOR; - public static Spannable replaceTags(String str) { + public static SpannableStringBuilder replaceTags(String str) { return replaceTags(str, FLAG_TAG_ALL); } - public static Spannable replaceTags(String str, int flag) { + public static SpannableStringBuilder replaceTags(String str, int flag) { try { int start; int end; diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/ApplicationLoader.java b/TMessagesProj/src/main/java/org/telegram/messenger/ApplicationLoader.java index 944477f0d..6ed4862d6 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/ApplicationLoader.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/ApplicationLoader.java @@ -20,6 +20,9 @@ import android.content.SharedPreferences; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.res.Configuration; +import android.graphics.Bitmap; +import android.graphics.Color; +import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.os.Build; @@ -37,8 +40,6 @@ import org.telegram.ui.Components.ForegroundDetector; import java.io.File; import java.io.RandomAccessFile; -import java.util.ArrayList; -import java.util.Locale; public class ApplicationLoader extends Application { @@ -47,6 +48,9 @@ public class ApplicationLoader extends Application { private static boolean isCustomTheme; private static final Object sync = new Object(); + private static int serviceMessageColor; + private static int serviceSelectedMessageColor; + public static volatile Context applicationContext; public static volatile Handler applicationHandler; private static volatile boolean applicationInited = false; @@ -64,9 +68,27 @@ public class ApplicationLoader extends Application { public static void reloadWallpaper() { cachedWallpaper = null; + serviceMessageColor = 0; + ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE).edit().remove("serviceMessageColor").commit(); loadWallpaper(); } + private static void calcBackgroundColor() { + int result[] = AndroidUtilities.calcDrawableColor(cachedWallpaper); + serviceMessageColor = result[0]; + serviceSelectedMessageColor = result[1]; + SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE); + preferences.edit().putInt("serviceMessageColor", serviceMessageColor).putInt("serviceSelectedMessageColor", serviceSelectedMessageColor).commit(); + } + + public static int getServiceMessageColor() { + return serviceMessageColor; + } + + public static int getServiceSelectedMessageColor() { + return serviceSelectedMessageColor; + } + public static void loadWallpaper() { if (cachedWallpaper != null) { return; @@ -80,6 +102,8 @@ public class ApplicationLoader extends Application { SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE); int selectedBackground = preferences.getInt("selectedBackground", 1000001); selectedColor = preferences.getInt("selectedColor", 0); + serviceMessageColor = preferences.getInt("serviceMessageColor", 0); + serviceSelectedMessageColor = preferences.getInt("serviceSelectedMessageColor", 0); if (selectedColor == 0) { if (selectedBackground == 1000001) { cachedWallpaper = applicationContext.getResources().getDrawable(R.drawable.background_hd); @@ -104,6 +128,9 @@ public class ApplicationLoader extends Application { } cachedWallpaper = new ColorDrawable(selectedColor); } + if (serviceMessageColor == 0) { + calcBackgroundColor(); + } } } }); @@ -215,7 +242,7 @@ public class ApplicationLoader extends Application { String configPath = getFilesDirFixed().toString(); try { - langCode = LocaleController.getLocaleString(LocaleController.getInstance().getSystemDefaultLocale()); + langCode = LocaleController.getLocaleStringIso639(); deviceModel = Build.MANUFACTURER + Build.MODEL; PackageInfo pInfo = ApplicationLoader.applicationContext.getPackageManager().getPackageInfo(ApplicationLoader.applicationContext.getPackageName(), 0); appVersion = pInfo.versionName + " (" + pInfo.versionCode + ")"; @@ -239,8 +266,11 @@ public class ApplicationLoader extends Application { systemVersion = "SDK Unknown"; } + SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE); + boolean enablePushConnection = preferences.getBoolean("pushConnection", true); + MessagesController.getInstance(); - ConnectionsManager.getInstance().init(BuildVars.BUILD_VERSION, TLRPC.LAYER, BuildVars.APP_ID, deviceModel, systemVersion, appVersion, langCode, configPath, FileLog.getNetworkLogPath(), UserConfig.getClientUserId()); + ConnectionsManager.getInstance().init(BuildVars.BUILD_VERSION, TLRPC.LAYER, BuildVars.APP_ID, deviceModel, systemVersion, appVersion, langCode, configPath, FileLog.getNetworkLogPath(), UserConfig.getClientUserId(), enablePushConnection); if (UserConfig.getCurrentUser() != null) { MessagesController.getInstance().putUser(UserConfig.getCurrentUser(), true); ConnectionsManager.getInstance().applyCountryPortNumber(UserConfig.getCurrentUser().phone); @@ -323,13 +353,18 @@ public class ApplicationLoader extends Application { @Override public void run() { if (checkPlayServices()) { - if (UserConfig.pushString == null || UserConfig.pushString.length() == 0) { + if (UserConfig.pushString != null && UserConfig.pushString.length() != 0) { + FileLog.d("tmessages", "GCM regId = " + UserConfig.pushString); + } else { FileLog.d("tmessages", "GCM Registration not found."); + } + + //if (UserConfig.pushString == null || UserConfig.pushString.length() == 0) { Intent intent = new Intent(applicationContext, GcmRegistrationIntentService.class); startService(intent); - } else { - FileLog.d("tmessages", "GCM regId = " + UserConfig.pushString); - } + //} else { + // FileLog.d("tmessages", "GCM regId = " + UserConfig.pushString); + //} } else { FileLog.d("tmessages", "No valid Google Play Services APK found."); } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/AutoMessageHeardReceiver.java b/TMessagesProj/src/main/java/org/telegram/messenger/AutoMessageHeardReceiver.java index dd3baa741..a00576b78 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/AutoMessageHeardReceiver.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/AutoMessageHeardReceiver.java @@ -16,6 +16,7 @@ public class AutoMessageHeardReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { + ApplicationLoader.postInitApplication(); long dialog_id = intent.getLongExtra("dialog_id", 0); int max_id = intent.getIntExtra("max_id", 0); if (dialog_id == 0 || max_id == 0) { diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/AutoMessageReplyReceiver.java b/TMessagesProj/src/main/java/org/telegram/messenger/AutoMessageReplyReceiver.java index ba91e0f0a..1635bd37b 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/AutoMessageReplyReceiver.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/AutoMessageReplyReceiver.java @@ -18,6 +18,7 @@ public class AutoMessageReplyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { + ApplicationLoader.postInitApplication(); Bundle remoteInput = RemoteInput.getResultsFromIntent(intent); if (remoteInput == null) { return; @@ -31,7 +32,7 @@ public class AutoMessageReplyReceiver extends BroadcastReceiver { if (dialog_id == 0 || max_id == 0) { return; } - SendMessagesHelper.getInstance().sendMessage(text.toString(), dialog_id, null, null, true, false, null, null); + SendMessagesHelper.getInstance().sendMessage(text.toString(), dialog_id, null, null, true, false, null, null, null); MessagesController.getInstance().markDialogAsRead(dialog_id, max_id, max_id, 0, true, false); } } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/BuildVars.java b/TMessagesProj/src/main/java/org/telegram/messenger/BuildVars.java index 74e2ab8aa..347eef541 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/BuildVars.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/BuildVars.java @@ -10,8 +10,8 @@ package org.telegram.messenger; public class BuildVars { public static boolean DEBUG_VERSION = false; - public static int BUILD_VERSION = 767; - public static String BUILD_VERSION_STRING = "3.7"; + public static int BUILD_VERSION = 787; + public static String BUILD_VERSION_STRING = "3.8"; public static int APP_ID = 0; //obtain your own APP_ID at https://core.telegram.org/api/obtaining_api_id public static String APP_HASH = ""; //obtain your own APP_HASH at https://core.telegram.org/api/obtaining_api_id public static String HOCKEY_APP_HASH = "your-hockeyapp-api-key-here"; diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/ClearCacheService.java b/TMessagesProj/src/main/java/org/telegram/messenger/ClearCacheService.java index 044f80dcc..fb45992d5 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/ClearCacheService.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/ClearCacheService.java @@ -27,6 +27,8 @@ public class ClearCacheService extends IntentService { @Override protected void onHandleIntent(Intent intent) { + ApplicationLoader.postInitApplication(); + SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE); final int keepMedia = preferences.getInt("keep_media", 2); if (keepMedia == 2) { diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/ContactsController.java b/TMessagesProj/src/main/java/org/telegram/messenger/ContactsController.java index 4831c12b5..376ba2ede 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/ContactsController.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/ContactsController.java @@ -173,7 +173,7 @@ public class ContactsController { if (!updatingInviteText && (inviteText == null || time + 86400 < (int)(System.currentTimeMillis() / 1000))) { updatingInviteText = true; TLRPC.TL_help_getInviteText req = new TLRPC.TL_help_getInviteText(); - req.lang_code = LocaleController.getLocaleString(LocaleController.getInstance().getSystemDefaultLocale()); + req.lang_code = LocaleController.getLocaleStringIso639(); if (req.lang_code.length() == 0) { req.lang_code = "en"; } @@ -1652,7 +1652,8 @@ public class ContactsController { } }*/ - for (final TLRPC.User u : res.users) { + for (int a = 0; a < res.users.size(); a++) { + final TLRPC.User u = res.users.get(a); Utilities.phoneBookQueue.postRunnable(new Runnable() { @Override public void run() { diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java index 420b76718..2521e1d22 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java @@ -115,7 +115,7 @@ public class FileLoadOperation { } ext = FileLoader.getDocumentFileName(documentLocation); int idx; - if (ext == null || (idx = ext.lastIndexOf(".")) == -1) { + if (ext == null || (idx = ext.lastIndexOf('.')) == -1) { ext = ""; } else { ext = ext.substring(idx); diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoader.java b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoader.java index a902ad76f..f07c29e17 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoader.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoader.java @@ -593,7 +593,9 @@ public class FileLoader { } } } else if (message.media instanceof TLRPC.TL_messageMediaWebPage) { - if (message.media.webpage.photo != null) { + if (message.media.webpage.document != null) { + return getPathToAttach(message.media.webpage.document); + } else if (message.media.webpage.photo != null) { ArrayList sizes = message.media.webpage.photo.sizes; if (sizes.size() > 0) { TLRPC.PhotoSize sizeFull = getClosestPhotoSizeWithSize(sizes, AndroidUtilities.getPhotoSize()); @@ -601,8 +603,6 @@ public class FileLoader { return getPathToAttach(sizeFull); } } - } else if (message.media.webpage.document != null) { - return getPathToAttach(message.media.webpage.document); } } } @@ -667,7 +667,8 @@ public class FileLoader { } int lastSide = 0; TLRPC.PhotoSize closestObject = null; - for (TLRPC.PhotoSize obj : sizes) { + for (int a = 0; a < sizes.size(); a++) { + TLRPC.PhotoSize obj = sizes.get(a); if (obj == null) { continue; } @@ -691,7 +692,7 @@ public class FileLoader { public static String getFileExtension(File file) { String name = file.getName(); try { - return name.substring(name.lastIndexOf(".") + 1); + return name.substring(name.lastIndexOf('.') + 1); } catch (Exception e) { return ""; } @@ -714,7 +715,7 @@ public class FileLoader { public static String getDocumentExtension(TLRPC.Document document) { String fileName = getDocumentFileName(document); - int idx = fileName.lastIndexOf("."); + int idx = fileName.lastIndexOf('.'); String ext = null; if (idx != -1) { ext = fileName.substring(idx + 1); @@ -740,7 +741,7 @@ public class FileLoader { if (docExt == null) { docExt = getDocumentFileName(document); int idx; - if (docExt == null || (idx = docExt.lastIndexOf(".")) == -1) { + if (docExt == null || (idx = docExt.lastIndexOf('.')) == -1) { docExt = ""; } else { docExt = docExt.substring(idx); diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/FileLog.java b/TMessagesProj/src/main/java/org/telegram/messenger/FileLog.java index f39780957..6f0b6dc6c 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/FileLog.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/FileLog.java @@ -138,8 +138,8 @@ public class FileLog { try { getInstance().streamWriter.write(getInstance().dateFormat.format(System.currentTimeMillis()) + " E/" + tag + "﹕ " + e + "\n"); StackTraceElement[] stack = e.getStackTrace(); - for (StackTraceElement el : stack) { - getInstance().streamWriter.write(getInstance().dateFormat.format(System.currentTimeMillis()) + " E/" + tag + "﹕ " + el + "\n"); + for (int a = 0; a < stack.length; a++) { + getInstance().streamWriter.write(getInstance().dateFormat.format(System.currentTimeMillis()) + " E/" + tag + "﹕ " + stack[a] + "\n"); } getInstance().streamWriter.flush(); } catch (Exception e) { @@ -194,6 +194,9 @@ public class FileLog { public static void cleanupLogs() { File sdCard = ApplicationLoader.applicationContext.getExternalFilesDir(null); + if (sdCard == null) { + return; + } File dir = new File (sdCard.getAbsolutePath() + "/logs"); File[] files = dir.listFiles(); if (files != null) { diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/GcmPushListenerService.java b/TMessagesProj/src/main/java/org/telegram/messenger/GcmPushListenerService.java index f683a7251..e02a2d1e5 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/GcmPushListenerService.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/GcmPushListenerService.java @@ -46,6 +46,7 @@ public class GcmPushListenerService extends GcmListenerService { FileLog.e("tmessages", e); } + ConnectionsManager.onInternalPushReceived(); ConnectionsManager.getInstance().resumeNetworkMaybe(); } }); diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/GcmRegistrationIntentService.java b/TMessagesProj/src/main/java/org/telegram/messenger/GcmRegistrationIntentService.java index c135cce48..f99e711f5 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/GcmRegistrationIntentService.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/GcmRegistrationIntentService.java @@ -24,9 +24,15 @@ public class GcmRegistrationIntentService extends IntentService { protected void onHandleIntent(Intent intent) { try { InstanceID instanceID = InstanceID.getInstance(this); - String token = instanceID.getToken(BuildVars.GCM_SENDER_ID, GoogleCloudMessaging.INSTANCE_ID_SCOPE, null); + final String token = instanceID.getToken(getString(R.string.gcm_defaultSenderId), GoogleCloudMessaging.INSTANCE_ID_SCOPE, null); FileLog.d("tmessages", "GCM Registration Token: " + token); - sendRegistrationToServer(token); + AndroidUtilities.runOnUIThread(new Runnable() { + @Override + public void run() { + ApplicationLoader.postInitApplication(); + sendRegistrationToServer(token); + } + }); } catch (Exception e) { FileLog.e("tmessages", e); final int failCount = intent.getIntExtra("failCount", 0); diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/ImageLoader.java b/TMessagesProj/src/main/java/org/telegram/messenger/ImageLoader.java index 52d87aa35..079514d34 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/ImageLoader.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/ImageLoader.java @@ -1809,7 +1809,7 @@ public class ImageLoader { key = document.dc_id + "_" + document.id; String docExt = FileLoader.getDocumentFileName(document); int idx; - if (docExt == null || (idx = docExt.lastIndexOf(".")) == -1) { + if (docExt == null || (idx = docExt.lastIndexOf('.')) == -1) { docExt = ""; } else { docExt = docExt.substring(idx); @@ -1946,21 +1946,12 @@ public class ImageLoader { } } - public void loadHttpFile(String url, String extension) { + public void loadHttpFile(String url, String defaultExt) { if (url == null || url.length() == 0 || httpFileLoadTasksByKeys.containsKey(url)) { return; } - String ext = extension; - if (ext == null) { - int idx = url.lastIndexOf("."); - if (idx != -1) { - ext = url.substring(idx + 1); - } - if (ext == null || ext.length() == 0 || ext.length() > 4) { - ext = "jpg"; - } - } - File file = new File(FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE), Utilities.MD5(url) + "_temp." + getHttpUrlExtension(url, extension)); + String ext = getHttpUrlExtension(url, defaultExt); + File file = new File(FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE), Utilities.MD5(url) + "_temp." + ext); file.delete(); HttpFileTask task = new HttpFileTask(url, file, ext); @@ -2276,7 +2267,7 @@ public class ImageLoader { public static String getHttpUrlExtension(String url, String defaultExt) { String ext = null; - int idx = url.lastIndexOf("."); + int idx = url.lastIndexOf('.'); if (idx != -1) { ext = url.substring(idx + 1); } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/ImageReceiver.java b/TMessagesProj/src/main/java/org/telegram/messenger/ImageReceiver.java index 340d5f120..b7d156e08 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/ImageReceiver.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/ImageReceiver.java @@ -50,6 +50,7 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg private Integer thumbTag; private MessageObject parentMessageObject; private boolean canceledLoading; + private static PorterDuffColorFilter selectedColorFilter = new PorterDuffColorFilter(0xffdddddd, PorterDuff.Mode.MULTIPLY); private SetImageBackup setImageBackup; @@ -79,10 +80,11 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg private boolean forcePreview; private int roundRadius; private BitmapShader bitmapShader; - private Paint roundPaint; - private RectF roundRect; - private RectF bitmapRect; - private Matrix shaderMatrix; + private BitmapShader bitmapShaderThumb; + private static Paint roundPaint; + private RectF roundRect = new RectF(); + private RectF bitmapRect = new RectF(); + private Matrix shaderMatrix = new Matrix(); private float overrideAlpha = 1.0f; private boolean isPressed; private int orientation; @@ -95,11 +97,14 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg private ColorFilter colorFilter; public ImageReceiver() { - + this(null); } public ImageReceiver(View view) { parentView = view; + if (roundPaint == null) { + roundPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + } } public void cancelLoadImage() { @@ -156,6 +161,7 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg currentSize = 0; currentImage = null; bitmapShader = null; + bitmapShaderThumb = null; ImageLoader.getInstance().cancelLoadingForImageReceiver(this, 0); if (parentView != null) { if (invalidateAll) { @@ -228,6 +234,7 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg currentThumbLocation = thumbLocation; staticThumb = thumb; bitmapShader = null; + bitmapShaderThumb = null; currentAlpha = 1.0f; if (delegate != null) { @@ -300,6 +307,7 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg currentSize = 0; currentCacheOnly = false; bitmapShader = null; + bitmapShaderThumb = null; if (setImageBackup != null) { setImageBackup.fileLocation = null; setImageBackup.httpUrl = null; @@ -356,33 +364,40 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg return false; } - private void drawDrawable(Canvas canvas, Drawable drawable, int alpha) { + private void drawDrawable(Canvas canvas, Drawable drawable, int alpha, BitmapShader shader) { if (drawable instanceof BitmapDrawable) { BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable; - Paint paint = bitmapDrawable.getPaint(); + Paint paint; + if (shader != null) { + paint = roundPaint; + } else { + paint = bitmapDrawable.getPaint(); + } boolean hasFilter = paint != null && paint.getColorFilter() != null; if (hasFilter && !isPressed) { - bitmapDrawable.setColorFilter(null); + if (shader != null) { + roundPaint.setColorFilter(null); + } else { + bitmapDrawable.setColorFilter(null); + } } else if (!hasFilter && isPressed) { - bitmapDrawable.setColorFilter(new PorterDuffColorFilter(0xffdddddd, PorterDuff.Mode.MULTIPLY)); + if (shader != null) { + roundPaint.setColorFilter(selectedColorFilter); + } else { + bitmapDrawable.setColorFilter(selectedColorFilter); + } } if (colorFilter != null) { - bitmapDrawable.setColorFilter(colorFilter); - } - if (bitmapShader != null) { - drawRegion.set(imageX, imageY, imageX + imageW, imageY + imageH); - if (isVisible) { - roundRect.set(drawRegion); - shaderMatrix.reset(); - shaderMatrix.setRectToRect(bitmapRect, roundRect, Matrix.ScaleToFit.FILL); - bitmapShader.setLocalMatrix(shaderMatrix); - roundPaint.setAlpha(alpha); - canvas.drawRoundRect(roundRect, roundRadius, roundRadius, roundPaint); + if (shader != null) { + roundPaint.setColorFilter(colorFilter); + } else { + bitmapDrawable.setColorFilter(colorFilter); } - } else { - int bitmapW; - int bitmapH; + } + int bitmapW; + int bitmapH; + if (bitmapDrawable instanceof AnimatedFileDrawable) { if (orientation % 360 == 90 || orientation % 360 == 270) { bitmapW = bitmapDrawable.getIntrinsicHeight(); bitmapH = bitmapDrawable.getIntrinsicWidth(); @@ -390,9 +405,47 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg bitmapW = bitmapDrawable.getIntrinsicWidth(); bitmapH = bitmapDrawable.getIntrinsicHeight(); } - float scaleW = bitmapW / (float) imageW; - float scaleH = bitmapH / (float) imageH; + } else { + if (orientation % 360 == 90 || orientation % 360 == 270) { + bitmapW = bitmapDrawable.getBitmap().getHeight(); + bitmapH = bitmapDrawable.getBitmap().getWidth(); + } else { + bitmapW = bitmapDrawable.getBitmap().getWidth(); + bitmapH = bitmapDrawable.getBitmap().getHeight(); + } + } + float scaleW = bitmapW / (float) imageW; + float scaleH = bitmapH / (float) imageH; + if (shader != null) { + roundPaint.setShader(shader); + float scale = Math.min(scaleW, scaleH); + roundRect.set(imageX, imageY, imageX + imageW, imageY + imageH); + shaderMatrix.reset(); + if (Math.abs(scaleW - scaleH) > 0.00001f) { + if (bitmapW / scaleH > imageW) { + drawRegion.set(imageX - ((int) (bitmapW / scaleH) - imageW) / 2, imageY, imageX + ((int) (bitmapW / scaleH) + imageW) / 2, imageY + imageH); + } else { + drawRegion.set(imageX, imageY - ((int) (bitmapH / scaleW) - imageH) / 2, imageX + imageW, imageY + ((int) (bitmapH / scaleW) + imageH) / 2); + } + } else { + drawRegion.set(imageX, imageY, imageX + imageW, imageY + imageH); + } + if (isVisible) { + if (Math.abs(scaleW - scaleH) > 0.00001f) { + int w = (int) Math.floor(imageW * scale); + int h = (int) Math.floor(imageH * scale); + bitmapRect.set((bitmapW - w) / 2, (bitmapH - h) / 2, (bitmapW + w) / 2, (bitmapH + h) / 2); + shaderMatrix.setRectToRect(bitmapRect, roundRect, Matrix.ScaleToFit.START); + } else { + bitmapRect.set(0, 0, bitmapW, bitmapH); + shaderMatrix.setRectToRect(bitmapRect, roundRect, Matrix.ScaleToFit.FILL); + } + shader.setLocalMatrix(shaderMatrix); + roundPaint.setAlpha(alpha); + canvas.drawRoundRect(roundRect, roundRadius, roundRadius, roundPaint); + } + } else { if (isAspectFit) { float scale = Math.max(scaleW, scaleH); canvas.save(); @@ -428,12 +481,16 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg } } - if (bitmapW / scaleH > imageW) { - bitmapW /= scaleH; - drawRegion.set(imageX - (bitmapW - imageW) / 2, imageY, imageX + (bitmapW + imageW) / 2, imageY + imageH); + if (bitmapDrawable instanceof AnimatedFileDrawable) { + drawRegion.set(imageX, imageY, imageX + imageW, imageY + imageH); } else { - bitmapH /= scaleW; - drawRegion.set(imageX, imageY - (bitmapH - imageH) / 2, imageX + imageW, imageY + (bitmapH + imageH) / 2); + if (bitmapW / scaleH > imageW) { + bitmapW /= scaleH; + drawRegion.set(imageX - (bitmapW - imageW) / 2, imageY, imageX + (bitmapW + imageW) / 2, imageY + imageH); + } else { + bitmapH /= scaleW; + drawRegion.set(imageX, imageY - (bitmapH - imageH) / 2, imageX + imageW, imageY + (bitmapH + imageH) / 2); + } } if (orientation % 360 == 90 || orientation % 360 == 270) { int width = (drawRegion.right - drawRegion.left) / 2; @@ -519,7 +576,11 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg if (currentAlpha != 1) { if (!skip) { long currentTime = System.currentTimeMillis(); - currentAlpha += (currentTime - lastUpdateAlphaTime) / 150.0f; + long dt = currentTime - lastUpdateAlphaTime; + if (dt > 18) { + dt = 18; + } + currentAlpha += dt / 150.0f; if (currentAlpha > 1) { currentAlpha = 1; } @@ -539,17 +600,20 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg try { Drawable drawable = null; boolean animationNotReady = currentImage instanceof AnimatedFileDrawable && !((AnimatedFileDrawable) currentImage).hasBitmap(); + boolean isThumb = false; if (!forcePreview && currentImage != null && !animationNotReady) { drawable = currentImage; } else if (staticThumb instanceof BitmapDrawable) { drawable = staticThumb; + isThumb = true; } else if (currentThumb != null) { drawable = currentThumb; + isThumb = true; } if (drawable != null) { if (crossfadeAlpha != 0) { if (crossfadeWithThumb && animationNotReady) { - drawDrawable(canvas, drawable, (int) (overrideAlpha * 255)); + drawDrawable(canvas, drawable, (int) (overrideAlpha * 255), bitmapShaderThumb); } else { if (crossfadeWithThumb && currentAlpha != 1.0f) { Drawable thumbDrawable = null; @@ -565,19 +629,19 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg } } if (thumbDrawable != null) { - drawDrawable(canvas, thumbDrawable, (int) (overrideAlpha * 255)); + drawDrawable(canvas, thumbDrawable, (int) (overrideAlpha * 255), bitmapShaderThumb); } } - drawDrawable(canvas, drawable, (int) (overrideAlpha * currentAlpha * 255)); + drawDrawable(canvas, drawable, (int) (overrideAlpha * currentAlpha * 255), isThumb ? bitmapShaderThumb : bitmapShader); } } else { - drawDrawable(canvas, drawable, (int) (overrideAlpha * 255)); + drawDrawable(canvas, drawable, (int) (overrideAlpha * 255), isThumb ? bitmapShaderThumb : bitmapShader); } checkAlphaAnimation(animationNotReady && crossfadeWithThumb); return true; } else if (staticThumb != null) { - drawDrawable(canvas, staticThumb, 255); + drawDrawable(canvas, staticThumb, 255, null); checkAlphaAnimation(animationNotReady); return true; } else { @@ -753,19 +817,6 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg public void setRoundRadius(int value) { roundRadius = value; - if (roundRadius != 0) { - if (roundPaint == null) { - roundPaint = new Paint(Paint.ANTI_ALIAS_FLAG); - roundRect = new RectF(); - shaderMatrix = new Matrix(); - bitmapRect = new RectF(); - } - } else { - roundPaint = null; - roundRect = null; - shaderMatrix = null; - bitmapRect = null; - } } public int getRoundRadius() { @@ -853,11 +904,15 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg ImageLoader.getInstance().incrementUseCount(currentKey); } currentImage = bitmap; - if (roundRadius != 0) { - Bitmap object = bitmap.getBitmap(); - bitmapShader = new BitmapShader(object, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); - roundPaint.setShader(bitmapShader); - bitmapRect.set(0, 0, object.getWidth(), object.getHeight()); + if (roundRadius != 0 && bitmap instanceof BitmapDrawable) { + if (bitmap instanceof AnimatedFileDrawable) { + ((AnimatedFileDrawable) bitmap).setRoundRadius(roundRadius); + } else { + Bitmap object = bitmap.getBitmap(); + bitmapShader = new BitmapShader(object, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); + } + } else { + bitmapShader = null; } if (!memCache && !forcePreview) { @@ -892,6 +947,17 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg currentThumb = bitmap; + if (roundRadius != 0 && currentImage == null && bitmap instanceof BitmapDrawable) { + if (bitmap instanceof AnimatedFileDrawable) { + ((AnimatedFileDrawable) bitmap).setRoundRadius(roundRadius); + } else { + Bitmap object = bitmap.getBitmap(); + bitmapShaderThumb = new BitmapShader(object, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); + } + } else { + bitmapShaderThumb = null; + } + if (!memCache && crossfadeAlpha != 2) { currentAlpha = 0.0f; lastUpdateAlphaTime = System.currentTimeMillis(); @@ -961,6 +1027,12 @@ public class ImageReceiver implements NotificationCenter.NotificationCenterDeleg ImageLoader.getInstance().incrementUseCount(currentThumbKey); } currentThumb = (BitmapDrawable) args[0]; + if (roundRadius != 0 && currentImage == null && currentThumb instanceof BitmapDrawable && !(currentThumb instanceof AnimatedFileDrawable)) { + Bitmap object = ((BitmapDrawable) currentThumb).getBitmap(); + bitmapShaderThumb = new BitmapShader(object, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); + } else { + bitmapShaderThumb = null; + } if (staticThumb instanceof BitmapDrawable) { staticThumb = null; } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/LocaleController.java b/TMessagesProj/src/main/java/org/telegram/messenger/LocaleController.java index 1968f81e6..a34e0a076 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/LocaleController.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/LocaleController.java @@ -309,7 +309,31 @@ public class LocaleController { return systemDefaultLocale; } - public static String getLocaleString(Locale locale) { + private String getLocaleString(Locale locale) { + if (locale == null) { + return "en"; + } + String languageCode = locale.getLanguage(); + String countryCode = locale.getCountry(); + String variantCode = locale.getVariant(); + if (languageCode.length() == 0 && countryCode.length() == 0) { + return "en"; + } + StringBuilder result = new StringBuilder(11); + result.append(languageCode); + if (countryCode.length() > 0 || variantCode.length() > 0) { + result.append('_'); + } + result.append(countryCode); + if (variantCode.length() > 0) { + result.append('_'); + } + result.append(variantCode); + return result.toString(); + } + + public static String getLocaleStringIso639() { + Locale locale = getInstance().getSystemDefaultLocale(); if (locale == null) { return "en"; } @@ -583,7 +607,11 @@ public class LocaleController { private String getStringInternal(String key, int res) { String value = localeValues.get(key); if (value == null) { - value = ApplicationLoader.applicationContext.getString(res); + try { + value = ApplicationLoader.applicationContext.getString(res); + } catch (Exception e) { + FileLog.e("tmessages", e); + } } if (value == null) { value = "LOC_ERR:" + key; diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/MediaController.java b/TMessagesProj/src/main/java/org/telegram/messenger/MediaController.java index b3b8517c4..ef7b89218 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/MediaController.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/MediaController.java @@ -12,6 +12,7 @@ import android.Manifest; import android.annotation.SuppressLint; import android.annotation.TargetApi; import android.app.Activity; +import android.app.DownloadManager; import android.app.ProgressDialog; import android.content.BroadcastReceiver; import android.content.Context; @@ -236,7 +237,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, private float[] gravityFast = new float[3]; private float[] linearAcceleration = new float[3]; - private boolean hasAudioFocus; + private int hasAudioFocus; private boolean callInProgress; private ArrayList videoConvertQueue = new ArrayList<>(); @@ -279,6 +280,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, public static AlbumEntry allPhotosAlbumEntry; private HashMap>> loadingFileObservers = new HashMap<>(); + private HashMap> loadingFileMessagesObservers = new HashMap<>(); private HashMap observersByTag = new HashMap<>(); private boolean listenerInProgress = false; private HashMap addLaterArray = new HashMap<>(); @@ -694,7 +696,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, if (MediaController.getInstance().isPlayingAudio(MediaController.getInstance().getPlayingMessageObject()) && !MediaController.getInstance().isAudioPaused()) { MediaController.getInstance().pauseAudio(MediaController.getInstance().getPlayingMessageObject()); } - hasAudioFocus = false; + hasAudioFocus = 0; } else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) { //MediaController.getInstance().playAudio(MediaController.getInstance().getPlayingMessageObject()); } @@ -1161,6 +1163,10 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, } public void addLoadingFileObserver(String fileName, FileDownloadProgressListener observer) { + addLoadingFileObserver(fileName, null, observer); + } + + public void addLoadingFileObserver(String fileName, MessageObject messageObject, FileDownloadProgressListener observer) { if (listenerInProgress) { addLaterArray.put(fileName, observer); return; @@ -1173,6 +1179,14 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, loadingFileObservers.put(fileName, arrayList); } arrayList.add(new WeakReference<>(observer)); + if (messageObject != null) { + ArrayList messageObjects = loadingFileMessagesObservers.get(fileName); + if (messageObjects == null) { + messageObjects = new ArrayList<>(); + loadingFileMessagesObservers.put(fileName, messageObjects); + } + messageObjects.add(messageObject); + } observersByTag.put(observer.getObserverTag(), fileName); } @@ -1203,7 +1217,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, private void processLaterArrays() { for (HashMap.Entry listener : addLaterArray.entrySet()) { - addLoadingFileObserver(listener.getKey(), listener.getValue()); + addLoadingFileObserver(listener.getKey(), listener.getValue()); //TODO } addLaterArray.clear(); for (FileDownloadProgressListener listener : deleteLaterArray) { @@ -1218,9 +1232,11 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, if (id == NotificationCenter.FileDidFailedLoad) { listenerInProgress = true; String fileName = (String) args[0]; + loadingFileMessagesObservers.get(fileName); ArrayList> arrayList = loadingFileObservers.get(fileName); if (arrayList != null) { - for (WeakReference reference : arrayList) { + for (int a = 0; a < arrayList.size(); a++) { + WeakReference reference = arrayList.get(a); if (reference.get() != null) { reference.get().onFailedDownload(fileName); observersByTag.remove(reference.get().getObserverTag()); @@ -1235,15 +1251,24 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, listenerInProgress = true; String fileName = (String) args[0]; if (downloadingCurrentMessage && playingMessageObject != null) { - String file = FileLoader.getAttachFileName(playingMessageObject.messageOwner.media.document); + String file = FileLoader.getAttachFileName(playingMessageObject.getDocument()); if (file.equals(fileName)) { playMusicAgain = true; playAudio(playingMessageObject); } } + ArrayList messageObjects = loadingFileMessagesObservers.get(fileName); + if (messageObjects != null) { + for (int a = 0; a < messageObjects.size(); a++) { + MessageObject messageObject = messageObjects.get(a); + messageObject.mediaExists = true; + } + loadingFileMessagesObservers.remove(fileName); + } ArrayList> arrayList = loadingFileObservers.get(fileName); if (arrayList != null) { - for (WeakReference reference : arrayList) { + for (int a = 0; a < arrayList.size(); a++) { + WeakReference reference = arrayList.get(a); if (reference.get() != null) { reference.get().onSuccessDownload(fileName); observersByTag.remove(reference.get().getObserverTag()); @@ -1588,14 +1613,14 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, startRecording(raiseChat.getDialogId(), null, false); } ignoreOnPause = true; - if (proximityWakeLock != null && !proximityWakeLock.isHeld()) { + if (proximityHasDifferentValues && proximityWakeLock != null && !proximityWakeLock.isHeld()) { proximityWakeLock.acquire(); } } } else if (playingMessageObject != null && playingMessageObject.isVoice()) { if (!useFrontSpeaker) { FileLog.e("tmessages", "start listen"); - if (proximityWakeLock != null && !proximityWakeLock.isHeld()) { + if (proximityHasDifferentValues && proximityWakeLock != null && !proximityWakeLock.isHeld()) { proximityWakeLock.acquire(); } useFrontSpeaker = true; @@ -1610,7 +1635,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, if (playingMessageObject != null && playingMessageObject.isVoice()) { if (!useFrontSpeaker) { FileLog.e("tmessages", "start listen by proximity only"); - if (proximityWakeLock != null && !proximityWakeLock.isHeld()) { + if (proximityHasDifferentValues && proximityWakeLock != null && !proximityWakeLock.isHeld()) { proximityWakeLock.acquire(); } useFrontSpeaker = true; @@ -1624,7 +1649,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, stopRecording(2); raiseToEarRecord = false; ignoreOnPause = false; - if (proximityWakeLock != null && proximityWakeLock.isHeld()) { + if (proximityHasDifferentValues && proximityWakeLock != null && proximityWakeLock.isHeld()) { proximityWakeLock.release(); } } else if (useFrontSpeaker) { @@ -1632,7 +1657,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, useFrontSpeaker = false; startAudioAgain(true); ignoreOnPause = false; - if (proximityWakeLock != null && proximityWakeLock.isHeld()) { + if (proximityHasDifferentValues && proximityWakeLock != null && proximityWakeLock.isHeld()) { proximityWakeLock.release(); } } @@ -1758,7 +1783,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, sensorManager.unregisterListener(MediaController.this, proximitySensor); } }); - if (proximityWakeLock != null && proximityWakeLock.isHeld()) { + if (proximityHasDifferentValues && proximityWakeLock != null && proximityWakeLock.isHeld()) { proximityWakeLock.release(); } } @@ -1807,7 +1832,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, isPaused = false; if (playingMessageObject != null) { if (downloadingCurrentMessage) { - FileLoader.getInstance().cancelLoadFile(playingMessageObject.messageOwner.media.document); + FileLoader.getInstance().cancelLoadFile(playingMessageObject.getDocument()); } MessageObject lastFile = playingMessageObject; playingMessageObject.audioProgress = 0.0f; @@ -1816,6 +1841,8 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, playingMessageObject = null; downloadingCurrentMessage = false; if (notify) { + NotificationsController.getInstance().audioManager.abandonAudioFocus(this); + hasAudioFocus = 0; if (voiceMessagesPlaylist != null) { if (byVoiceEnd && voiceMessagesPlaylist.get(0) == lastFile) { voiceMessagesPlaylist.remove(0); @@ -1944,7 +1971,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, if (currentPlaylistNum == -1) { playlist.clear(); shuffledPlaylist.clear(); - return false; + playlist.add(current); } if (current.isMusic()) { if (shuffleMusic) { @@ -2062,7 +2089,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, final File cacheFile = file != null ? file : FileLoader.getPathToMessage(nextAudio.messageOwner); boolean exist = cacheFile != null && cacheFile.exists(); if (cacheFile != null && cacheFile != file && !cacheFile.exists() && nextAudio.isMusic()) { - FileLoader.getInstance().loadFile(nextAudio.messageOwner.media.document, false, false); + FileLoader.getInstance().loadFile(nextAudio.getDocument(), false, false); } } @@ -2078,6 +2105,27 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, } } + private void checkAudioFocus(MessageObject messageObject) { + int neededAudioFocus; + if (messageObject.isVoice()) { + if (useFrontSpeaker) { + neededAudioFocus = 3; + } else { + neededAudioFocus = 2; + } + } else { + neededAudioFocus = 1; + } + if (hasAudioFocus != neededAudioFocus) { + hasAudioFocus = neededAudioFocus; + if (neededAudioFocus == 3) { + NotificationsController.getInstance().audioManager.requestAudioFocus(this, AudioManager.STREAM_VOICE_CALL, AudioManager.AUDIOFOCUS_GAIN); + } else { + NotificationsController.getInstance().audioManager.requestAudioFocus(this, AudioManager.STREAM_MUSIC, neededAudioFocus == 2 ? AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK : AudioManager.AUDIOFOCUS_GAIN); + } + } + } + public boolean playAudio(final MessageObject messageObject) { if (messageObject == null) { return false; @@ -2109,14 +2157,14 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, } final File cacheFile = file != null ? file : FileLoader.getPathToMessage(messageObject.messageOwner); if (cacheFile != null && cacheFile != file && !cacheFile.exists() && messageObject.isMusic()) { - FileLoader.getInstance().loadFile(messageObject.messageOwner.media.document, false, false); + FileLoader.getInstance().loadFile(messageObject.getDocument(), false, false); downloadingCurrentMessage = true; isPaused = false; lastProgress = 0; lastPlayPcm = 0; audioInfo = null; playingMessageObject = messageObject; - if (playingMessageObject.messageOwner.media.document != null) { + if (playingMessageObject.getDocument() != null) { Intent intent = new Intent(ApplicationLoader.applicationContext, MusicPlayerService.class); ApplicationLoader.applicationContext.startService(intent); } else { @@ -2221,10 +2269,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, return false; } } - if (!hasAudioFocus) { - hasAudioFocus = true; - NotificationsController.getInstance().audioManager.requestAudioFocus(this, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN); - } + checkAudioFocus(messageObject); isPaused = false; lastProgress = 0; @@ -2403,10 +2448,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, audioTrackPlayer.play(); checkPlayerQueue(); } - if (!hasAudioFocus) { - hasAudioFocus = true; - NotificationsController.getInstance().audioManager.requestAudioFocus(this, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN); - } + checkAudioFocus(messageObject); isPaused = false; NotificationCenter.getInstance().postNotificationName(NotificationCenter.audioPlayStateChanged, playingMessageObject.getId()); } catch (Exception e) { @@ -2548,8 +2590,8 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, return; } if (waveform != null) { - for (int a = 0; a < messageObject.messageOwner.media.document.attributes.size(); a++) { - TLRPC.DocumentAttribute attribute = messageObject.messageOwner.media.document.attributes.get(a); + for (int a = 0; a < messageObject.getDocument().attributes.size(); a++) { + TLRPC.DocumentAttribute attribute = messageObject.getDocument().attributes.get(a); if (attribute instanceof TLRPC.TL_documentAttributeAudio) { attribute.waveform = waveform; attribute.flags |= 4; @@ -2593,7 +2635,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, audioToSend.attributes.add(attributeAudio); if (duration > 700) { if (send == 1) { - SendMessagesHelper.getInstance().sendMessage(audioToSend, null, recordingAudioFileToSend.getAbsolutePath(), recordDialogId, recordReplyingMessageObject, recordAsAdmin, null); + SendMessagesHelper.getInstance().sendMessage(audioToSend, null, recordingAudioFileToSend.getAbsolutePath(), recordDialogId, recordReplyingMessageObject, recordAsAdmin, null, null); } NotificationCenter.getInstance().postNotificationName(NotificationCenter.audioDidSent, send == 2 ? audioToSend : null, send == 2 ? recordingAudioFileToSend.getAbsolutePath() : null); } else { @@ -2655,7 +2697,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, }); } - public static void saveFile(String fullPath, Context context, final int type, final String name) { + public static void saveFile(String fullPath, Context context, final int type, final String name, final String mime) { if (fullPath == null) { return; } @@ -2752,8 +2794,15 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, } } - if (result && (type == 0 || type == 1 || type == 3)) { - AndroidUtilities.addMediaToGallery(Uri.fromFile(destFile)); + if (result) { + if (type == 2) { + if (Build.VERSION.SDK_INT >= 12) { + DownloadManager downloadManager = (DownloadManager) ApplicationLoader.applicationContext.getSystemService(Context.DOWNLOAD_SERVICE); + downloadManager.addCompletedDownload(destFile.getName(), destFile.getName(), false, mime, destFile.getAbsolutePath(), destFile.length(), true); + } + } else { + AndroidUtilities.addMediaToGallery(Uri.fromFile(destFile)); + } } } catch (Exception e) { FileLog.e("tmessages", e); @@ -2985,7 +3034,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, } public static void loadGalleryPhotosAlbums(final int guid) { - new Thread(new Runnable() { + Thread thread = new Thread(new Runnable() { @Override public void run() { final ArrayList albumsSorted = new ArrayList<>(); @@ -3130,7 +3179,9 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener, } }); } - }).start(); + }); + thread.setPriority(Thread.MIN_PRIORITY); + thread.start(); } public void scheduleVideoConvert(MessageObject messageObject) { diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/MessageObject.java b/TMessagesProj/src/main/java/org/telegram/messenger/MessageObject.java index 4033311a7..234a5f8a5 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/MessageObject.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/MessageObject.java @@ -23,12 +23,14 @@ import android.text.util.Linkify; import org.telegram.tgnet.ConnectionsManager; import org.telegram.tgnet.TLObject; import org.telegram.tgnet.TLRPC; +import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Components.TypefaceSpan; import org.telegram.ui.Components.URLSpanBotCommand; import org.telegram.ui.Components.URLSpanNoUnderline; import org.telegram.ui.Components.URLSpanNoUnderlineBold; import org.telegram.ui.Components.URLSpanReplacement; +import java.io.File; import java.util.AbstractMap; import java.util.ArrayList; import java.util.Calendar; @@ -47,7 +49,7 @@ public class MessageObject { public CharSequence linkDescription; public CharSequence caption; public MessageObject replyMessageObject; - public int type; + public int type = 1000; public int contentType; public String dateKey; public String monthKey; @@ -57,8 +59,14 @@ public class MessageObject { public ArrayList photoThumbs; public VideoEditedInfo videoEditedInfo; public boolean viewsReloaded; + public int wantedBotKeyboardWidth; + public boolean attachPathExists; + public boolean mediaExists; + + public boolean forceUpdate; private static TextPaint textPaint; + private static TextPaint botButtonPaint; public int lastLineWidth; public int textWidth; public int textHeight; @@ -86,8 +94,8 @@ public class MessageObject { public MessageObject(TLRPC.Message message, AbstractMap users, AbstractMap chats, boolean generateLayout) { if (textPaint == null) { textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); - textPaint.setColor(0xff000000); - textPaint.linkColor = 0xff316f9f; + textPaint.setColor(Theme.MSG_TEXT_COLOR); + textPaint.linkColor = Theme.MSG_LINK_TEXT_COLOR; } textPaint.setTextSize(AndroidUtilities.dp(MessagesController.getInstance().fontSize)); @@ -348,68 +356,8 @@ public class MessageObject { messageText = ""; } - if (message instanceof TLRPC.TL_message || message instanceof TLRPC.TL_messageForwarded_old2) { - if (isMediaEmpty()) { - contentType = 0; - type = 0; - if (messageText == null || messageText.length() == 0) { - messageText = "Empty message"; - } - } else if (message.media instanceof TLRPC.TL_messageMediaPhoto) { - contentType = 0; - type = 1; - } else if (message.media instanceof TLRPC.TL_messageMediaGeo || message.media instanceof TLRPC.TL_messageMediaVenue) { - contentType = 0; - type = 4; - } else if (isVideo()) { - contentType = 0; - type = 3; - } else if (isVoice()) { - contentType = 2; - type = 2; - } else if (message.media instanceof TLRPC.TL_messageMediaContact) { - contentType = 3; - type = 12; - } else if (message.media instanceof TLRPC.TL_messageMediaUnsupported) { - contentType = 0; - type = 0; - } else if (message.media instanceof TLRPC.TL_messageMediaDocument) { - contentType = 0; - if (message.media.document.mime_type != null) { - if (isGifDocument(message.media.document)) { - type = 8; - } else if (message.media.document.mime_type.equals("image/webp") && isSticker()) { - type = 13; - } else if (isMusic()) { - type = 14; - contentType = 8; - } else { - type = 9; - } - } else { - type = 9; - } - } - } else if (message instanceof TLRPC.TL_messageService) { - if (message.action instanceof TLRPC.TL_messageActionLoginUnknownLocation) { - contentType = 0; - type = 0; - } else if (message.action instanceof TLRPC.TL_messageActionChatEditPhoto || message.action instanceof TLRPC.TL_messageActionUserUpdatedPhoto) { - contentType = 4; - type = 11; - } else if (message.action instanceof TLRPC.TL_messageEncryptedAction) { - if (message.action.encryptedAction instanceof TLRPC.TL_decryptedMessageActionScreenshotMessages || message.action.encryptedAction instanceof TLRPC.TL_decryptedMessageActionSetMessageTTL) { - contentType = 4; - type = 10; - } else { - contentType = -1; - type = -1; - } - } else { - contentType = 4; - type = 10; - } - } + setType(); + measureInlineBotButtons(); Calendar rightNow = new GregorianCalendar(); rightNow.setTimeInMillis((long) (messageOwner.date) * 1000); @@ -417,11 +365,7 @@ public class MessageObject { int dateYear = rightNow.get(Calendar.YEAR); int dateMonth = rightNow.get(Calendar.MONTH); dateKey = String.format("%d_%02d_%02d", dateYear, dateMonth, dateDay); - if (contentType == 2 || contentType == 0 || contentType == 8) { - monthKey = String.format("%d_%02d", dateYear, dateMonth); - } else if (contentType == 9) { - //dateKey = "0_0_0"; - } + monthKey = String.format("%d_%02d", dateYear, dateMonth); if (messageOwner.message != null && messageOwner.id < 0 && messageOwner.message.length() > 6 && isVideo()) { videoEditedInfo = new VideoEditedInfo(); @@ -435,13 +379,14 @@ public class MessageObject { } layoutCreated = generateLayout; generateThumbs(false); + checkMediaExistance(); } public static TextPaint getTextPaint() { if (textPaint == null) { textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); - textPaint.setColor(0xff000000); - textPaint.linkColor = 0xff316f9f; + textPaint.setColor(Theme.MSG_TEXT_COLOR); + textPaint.linkColor = Theme.MSG_LINK_TEXT_COLOR; textPaint.setTextSize(AndroidUtilities.dp(MessagesController.getInstance().fontSize)); } return textPaint; @@ -482,6 +427,7 @@ public class MessageObject { if (mess.length() > 20) { mess = mess.subSequence(0, 20) + "..."; } + mess = Emoji.replaceEmoji(mess, textPaint.getFontMetricsInt(), AndroidUtilities.dp(20), false); messageText = replaceWithLink(LocaleController.formatString("ActionPinnedText", R.string.ActionPinnedText, mess), "un1", fromUser != null ? fromUser : chat); } else { messageText = replaceWithLink(LocaleController.getString("ActionPinnedNoText", R.string.ActionPinnedNoText), "un1", fromUser != null ? fromUser : chat); @@ -489,6 +435,86 @@ public class MessageObject { } } + private void measureInlineBotButtons() { + wantedBotKeyboardWidth = 0; + if (!(messageOwner.reply_markup instanceof TLRPC.TL_replyInlineMarkup)) { + return; + } + if (botButtonPaint == null) { + botButtonPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); + botButtonPaint.setTextSize(AndroidUtilities.dp(15)); + botButtonPaint.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + } + for (int a = 0; a < messageOwner.reply_markup.rows.size(); a++) { + TLRPC.TL_keyboardButtonRow row = messageOwner.reply_markup.rows.get(a); + int maxButtonSize = 0; + int size = row.buttons.size(); + for (int b = 0; b < size; b++) { + CharSequence text = Emoji.replaceEmoji(row.buttons.get(b).text, botButtonPaint.getFontMetricsInt(), AndroidUtilities.dp(15), false); + StaticLayout staticLayout = new StaticLayout(text, botButtonPaint, AndroidUtilities.dp(2000), Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); + if (staticLayout.getLineCount() > 0) { + maxButtonSize = Math.max(maxButtonSize, (int) Math.ceil(staticLayout.getLineWidth(0) - staticLayout.getLineLeft(0)) + AndroidUtilities.dp(4)); + } + } + wantedBotKeyboardWidth = Math.max(wantedBotKeyboardWidth, (maxButtonSize + AndroidUtilities.dp(12)) * size + AndroidUtilities.dp(5) * (size - 1)); + } + } + + public void setType() { + if (messageOwner instanceof TLRPC.TL_message || messageOwner instanceof TLRPC.TL_messageForwarded_old2) { + if (isMediaEmpty()) { + type = 0; + if (messageText == null || messageText.length() == 0) { + messageText = "Empty message"; + } + } else if (messageOwner.media instanceof TLRPC.TL_messageMediaPhoto) { + type = 1; + } else if (messageOwner.media instanceof TLRPC.TL_messageMediaGeo || messageOwner.media instanceof TLRPC.TL_messageMediaVenue) { + type = 4; + } else if (isVideo()) { + type = 3; + } else if (isVoice()) { + type = 2; + } else if (isMusic()) { + type = 14; + } else if (messageOwner.media instanceof TLRPC.TL_messageMediaContact) { + type = 12; + } else if (messageOwner.media instanceof TLRPC.TL_messageMediaUnsupported) { + type = 0; + } else if (messageOwner.media instanceof TLRPC.TL_messageMediaDocument) { + if (messageOwner.media.document.mime_type != null) { + if (isGifDocument(messageOwner.media.document)) { + type = 8; + } else if (messageOwner.media.document.mime_type.equals("image/webp") && isSticker()) { + type = 13; + } else { + type = 9; + } + } else { + type = 9; + } + } + } else if (messageOwner instanceof TLRPC.TL_messageService) { + if (messageOwner.action instanceof TLRPC.TL_messageActionLoginUnknownLocation) { + type = 0; + } else if (messageOwner.action instanceof TLRPC.TL_messageActionChatEditPhoto || messageOwner.action instanceof TLRPC.TL_messageActionUserUpdatedPhoto) { + contentType = 1; + type = 11; + } else if (messageOwner.action instanceof TLRPC.TL_messageEncryptedAction) { + if (messageOwner.action.encryptedAction instanceof TLRPC.TL_decryptedMessageActionScreenshotMessages || messageOwner.action.encryptedAction instanceof TLRPC.TL_decryptedMessageActionSetMessageTTL) { + contentType = 1; + type = 10; + } else { + contentType = -1; + type = -1; + } + } else { + contentType = 1; + type = 10; + } + } + } + public void checkLayout() { if (!layoutCreated) { layoutCreated = true; @@ -564,6 +590,8 @@ public class MessageObject { } else if (photoThumbs != null && !photoThumbs.isEmpty() && messageOwner.media.document.thumb != null) { TLRPC.PhotoSize photoObject = photoThumbs.get(0); photoObject.location = messageOwner.media.document.thumb.location; + photoObject.w = messageOwner.media.document.thumb.w; + photoObject.h = messageOwner.media.document.thumb.h; } } } else if (messageOwner.media instanceof TLRPC.TL_messageMediaWebPage) { @@ -585,6 +613,16 @@ public class MessageObject { } } } + } else if (messageOwner.media.webpage.document != null) { + if (!(messageOwner.media.webpage.document.thumb instanceof TLRPC.TL_photoSizeEmpty)) { + if (!update) { + photoThumbs = new ArrayList<>(); + photoThumbs.add(messageOwner.media.webpage.document.thumb); + } else if (photoThumbs != null && !photoThumbs.isEmpty() && messageOwner.media.webpage.document.thumb != null) { + TLRPC.PhotoSize photoObject = photoThumbs.get(0); + photoObject.location = messageOwner.media.webpage.document.thumb.location; + } + } } } } @@ -641,7 +679,7 @@ public class MessageObject { public String getExtension() { String fileName = getFileName(); - int idx = fileName.lastIndexOf("."); + int idx = fileName.lastIndexOf('.'); String ext = null; if (idx != -1) { ext = fileName.substring(idx + 1); @@ -1251,6 +1289,18 @@ public class MessageObject { return false; } + public static boolean isMusicDocument(TLRPC.Document document) { + if (document != null) { + for (int a = 0; a < document.attributes.size(); a++) { + TLRPC.DocumentAttribute attribute = document.attributes.get(a); + if (attribute instanceof TLRPC.TL_documentAttributeAudio) { + return !attribute.voice; + } + } + } + return false; + } + public static boolean isVideoDocument(TLRPC.Document document) { if (document != null) { boolean isAnimated = false; @@ -1268,29 +1318,36 @@ public class MessageObject { return false; } + public TLRPC.Document getDocument() { + if (messageOwner.media instanceof TLRPC.TL_messageMediaWebPage) { + return messageOwner.media.webpage.document; + } + return messageOwner.media != null ? messageOwner.media.document : null; + } + public static boolean isStickerMessage(TLRPC.Message message) { return message.media != null && message.media.document != null && isStickerDocument(message.media.document); } public static boolean isMusicMessage(TLRPC.Message message) { - if (message.media != null && message.media.document != null) { - for (int a = 0; a < message.media.document.attributes.size(); a++) { - TLRPC.DocumentAttribute attribute = message.media.document.attributes.get(a); - if (attribute instanceof TLRPC.TL_documentAttributeAudio) { - return !attribute.voice; - } - } + if (message.media instanceof TLRPC.TL_messageMediaWebPage) { + return isMusicDocument(message.media.webpage.document); } - return false; + return message.media != null && message.media.document != null && isMusicDocument(message.media.document); } public static boolean isVoiceMessage(TLRPC.Message message) { + if (message.media instanceof TLRPC.TL_messageMediaWebPage) { + return isVoiceDocument(message.media.webpage.document); + } return message.media != null && message.media.document != null && isVoiceDocument(message.media.document); } public static boolean isVideoMessage(TLRPC.Message message) { + if (message.media instanceof TLRPC.TL_messageMediaWebPage) { + return isVideoDocument(message.media.webpage.document); + } return message.media != null && message.media.document != null && isVideoDocument(message.media.document); - /* && message.media.document.mime_type.equals("video/mp4")*/ } public static TLRPC.InputStickerSet getInputStickerSet(TLRPC.Message message) { @@ -1320,17 +1377,25 @@ public class MessageObject { public int getApproximateHeight() { if (type == 0) { - return textHeight; - } else if (contentType == 2) { - return AndroidUtilities.dp(68); - } else if (contentType == 3) { + int height = textHeight + (messageOwner.media instanceof TLRPC.TL_messageMediaWebPage && messageOwner.media.webpage instanceof TLRPC.TL_webPage ? AndroidUtilities.dp(100) : 0); + if (isReply()) { + height += AndroidUtilities.dp(42); + } + return height; + } else if (type == 2) { + return AndroidUtilities.dp(72); + } else if (type == 12) { return AndroidUtilities.dp(71); } else if (type == 9) { return AndroidUtilities.dp(100); } else if (type == 4) { return AndroidUtilities.dp(114); } else if (type == 14) { - return AndroidUtilities.dp(78); + return AndroidUtilities.dp(82); + } else if (type == 10) { + return AndroidUtilities.dp(30); + } else if (type == 11) { + return AndroidUtilities.dp(50); } else if (type == 13) { float maxHeight = AndroidUtilities.displaySize.y * 0.4f; float maxWidth; @@ -1403,6 +1468,9 @@ public class MessageObject { } public boolean isSticker() { + if (type != 1000) { + return type == 13; + } return isStickerMessage(messageOwner); } @@ -1431,15 +1499,21 @@ public class MessageObject { } public String getMusicTitle() { - for (int a = 0; a < messageOwner.media.document.attributes.size(); a++) { - TLRPC.DocumentAttribute attribute = messageOwner.media.document.attributes.get(a); + TLRPC.Document document; + if (type == 0) { + document = messageOwner.media.webpage.document; + } else { + document = messageOwner.media.document; + } + for (int a = 0; a < document.attributes.size(); a++) { + TLRPC.DocumentAttribute attribute = document.attributes.get(a); if (attribute instanceof TLRPC.TL_documentAttributeAudio) { if (attribute.voice) { return LocaleController.formatDateAudio(messageOwner.date); } String title = attribute.title; if (title == null || title.length() == 0) { - title = FileLoader.getDocumentFileName(messageOwner.media.document); + title = FileLoader.getDocumentFileName(document); if (title == null || title.length() == 0) { title = LocaleController.getString("AudioUnknownTitle", R.string.AudioUnknownTitle); } @@ -1451,8 +1525,14 @@ public class MessageObject { } public String getMusicAuthor() { - for (int a = 0; a < messageOwner.media.document.attributes.size(); a++) { - TLRPC.DocumentAttribute attribute = messageOwner.media.document.attributes.get(a); + TLRPC.Document document; + if (type == 0) { + document = messageOwner.media.webpage.document; + } else { + document = messageOwner.media.document; + } + for (int a = 0; a < document.attributes.size(); a++) { + TLRPC.DocumentAttribute attribute = document.attributes.get(a); if (attribute instanceof TLRPC.TL_documentAttributeAudio) { if (attribute.voice) { if (isOutOwner() || messageOwner.fwd_from != null && messageOwner.fwd_from.from_id == UserConfig.getClientUserId()) { @@ -1514,14 +1594,21 @@ public class MessageObject { } public static boolean canEditMessage(TLRPC.Message message, TLRPC.Chat chat) { - if (message == null || message.to_id == null || message.to_id.channel_id == 0 || message.action != null && !(message.action instanceof TLRPC.TL_messageActionEmpty) || isForwardedMessage(message) || message.via_bot_id != 0 || message.id < 0 || Math.abs(message.date - ConnectionsManager.getInstance().getCurrentTime()) > MessagesController.getInstance().maxEditTime) { + if (message == null || message.to_id == null || message.action != null && !(message.action instanceof TLRPC.TL_messageActionEmpty) || isForwardedMessage(message) || message.via_bot_id != 0 || message.id < 0 || Math.abs(message.date - ConnectionsManager.getInstance().getCurrentTime()) > MessagesController.getInstance().maxEditTime) { return false; } + if (message.to_id.channel_id == 0) { + return message.out && (message.media instanceof TLRPC.TL_messageMediaPhoto || + message.media instanceof TLRPC.TL_messageMediaDocument && (isVideoMessage(message) || isGifDocument(message.media.document)) || + message.media instanceof TLRPC.TL_messageMediaEmpty || + message.media instanceof TLRPC.TL_messageMediaWebPage || + message.media == null); + } if (chat == null && message.to_id.channel_id != 0) { chat = MessagesController.getInstance().getChat(message.to_id.channel_id); - } - if (chat == null) { - return false; + if (chat == null) { + return false; + } } if (chat.megagroup && message.out || !chat.megagroup && (chat.creator || chat.editor && isOut(message)) && isImportant(message)) { if (message.media instanceof TLRPC.TL_messageMediaPhoto || @@ -1583,4 +1670,35 @@ public class MessageObject { } return null; } + + public void checkMediaExistance() { + File cacheFile = null; + if (type == 1) { + TLRPC.PhotoSize currentPhotoObject = FileLoader.getClosestPhotoSizeWithSize(photoThumbs, AndroidUtilities.getPhotoSize()); + if (currentPhotoObject != null) { + mediaExists = FileLoader.getPathToMessage(messageOwner).exists(); + } + } else if (type == 8 || type == 3 || type == 9 || type == 2 || type == 14) { + if (messageOwner.attachPath != null && messageOwner.attachPath.length() > 0) { + File f = new File(messageOwner.attachPath); + attachPathExists = f.exists(); + } + if (!attachPathExists) { + mediaExists = FileLoader.getPathToMessage(messageOwner).exists(); + } + } else { + TLRPC.Document document = getDocument(); + if (document != null) { + mediaExists = FileLoader.getPathToAttach(document).exists(); + } else if (type == 0) { + TLRPC.PhotoSize currentPhotoObject = FileLoader.getClosestPhotoSizeWithSize(photoThumbs, AndroidUtilities.getPhotoSize()); + if (currentPhotoObject == null) { + return; + } + if (currentPhotoObject != null) { + mediaExists = FileLoader.getPathToAttach(currentPhotoObject, true).exists(); + } + } + } + } } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/MessagesController.java b/TMessagesProj/src/main/java/org/telegram/messenger/MessagesController.java index c38da3644..4c01cc31a 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/MessagesController.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/MessagesController.java @@ -629,20 +629,6 @@ public class MessagesController implements NotificationCenter.NotificationCenter if (user.min) { if (oldUser != null) { if (!fromCache) { - if (user.first_name != null) { - oldUser.first_name = user.first_name; - oldUser.flags |= 2; - } else { - oldUser.first_name = null; - oldUser.flags = oldUser.flags &~ 2; - } - if (user.last_name != null) { - oldUser.last_name = user.last_name; - oldUser.flags |= 4; - } else { - oldUser.last_name = null; - oldUser.flags = oldUser.flags &~ 4; - } if (user.username != null) { oldUser.username = user.username; oldUser.flags |= 8; @@ -675,20 +661,6 @@ public class MessagesController implements NotificationCenter.NotificationCenter users.put(user.id, user); } else if (oldUser.min) { user.min = false; - if (oldUser.first_name != null) { - user.first_name = oldUser.first_name; - user.flags |= 2; - } else { - user.first_name = null; - user.flags = user.flags &~ 2; - } - if (oldUser.last_name != null) { - user.last_name = oldUser.last_name; - user.flags |= 4; - } else { - user.last_name = null; - user.flags = user.flags &~ 4; - } if (oldUser.username != null) { user.username = oldUser.username; user.flags |= 8; @@ -2029,13 +2001,20 @@ public class MessagesController implements NotificationCenter.NotificationCenter if (user == null) { return; } - if (pu.action instanceof TLRPC.TL_sendMessageUploadAudioAction || pu.action instanceof TLRPC.TL_sendMessageRecordAudioAction) { + if (pu.action instanceof TLRPC.TL_sendMessageRecordAudioAction) { if (lower_id < 0) { newPrintingStrings.put(key, LocaleController.formatString("IsRecordingAudio", R.string.IsRecordingAudio, getUserNameForTyping(user))); } else { newPrintingStrings.put(key, LocaleController.getString("RecordingAudio", R.string.RecordingAudio)); } newPrintingStringsTypes.put(key, 1); + } else if (pu.action instanceof TLRPC.TL_sendMessageUploadAudioAction) { + if (lower_id < 0) { + newPrintingStrings.put(key, LocaleController.formatString("IsSendingAudio", R.string.IsSendingAudio, getUserNameForTyping(user))); + } else { + newPrintingStrings.put(key, LocaleController.getString("SendingAudio", R.string.SendingAudio)); + } + newPrintingStringsTypes.put(key, 2); } else if (pu.action instanceof TLRPC.TL_sendMessageUploadVideoAction || pu.action instanceof TLRPC.TL_sendMessageRecordVideoAction) { if (lower_id < 0) { newPrintingStrings.put(key, LocaleController.formatString("IsSendingVideo", R.string.IsSendingVideo, getUserNameForTyping(user))); @@ -2213,6 +2192,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter } public void loadMessages(final long dialog_id, final int count, final int max_id, boolean fromCache, int midDate, final int classGuid, final int load_type, final int last_message_id, final int important, final int loadIndex, final int first_unread, final int unread_count, final int last_date, final boolean queryFromServer) { + FileLog.e("tmessages", "load messages in chat " + dialog_id + " count " + count + " max_id " + max_id + " cache " + fromCache + " mindate = " + midDate + " guid " + classGuid + " load_type " + load_type + " last_message_id " + last_message_id + " imp " + important + " index " + loadIndex + " firstUnread " + first_unread + " underad count " + unread_count + " last_date " + last_date + " queryFromServer " + queryFromServer); int lower_part = (int) dialog_id; if (fromCache || lower_part == 0) { MessagesStorage.getInstance().getMessages(dialog_id, count, max_id, midDate, classGuid, load_type, important, loadIndex); @@ -2323,6 +2303,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter public void processLoadedMessages(final TLRPC.messages_Messages messagesRes, final long dialog_id, final int count, final int max_id, final boolean isCache, final int classGuid, final int first_unread, final int last_message_id, final int unread_count, final int last_date, final int load_type, final int important, final boolean isEnd, final int loadIndex, final boolean queryFromServer) { + FileLog.e("tmessages", "processLoadedMessages size " + messagesRes.messages.size() + " in chat " + dialog_id + " count " + count + " max_id " + max_id + " cache " + isCache + " guid " + classGuid + " load_type " + load_type + " last_message_id " + last_message_id + " imp " + important + " index " + loadIndex + " firstUnread " + first_unread + " underad count " + unread_count + " last_date " + last_date + " queryFromServer " + queryFromServer); Utilities.stageQueue.postRunnable(new Runnable() { @Override public void run() { @@ -2998,7 +2979,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter MessagesStorage.getInstance().setDialogFlags(dialog_id, ((long) until << 32) | 1); NotificationsController.getInstance().removeNotificationsForDialog(dialog_id); } else { - if (currentValue != 0) { + if (currentValue != 0 && currentValue != 1) { updated = true; if (dialog != null) { dialog.notify_settings.mute_until = 0; @@ -4172,7 +4153,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter TLRPC.TL_help_getAppChangelog req = new TLRPC.TL_help_getAppChangelog(); req.app_version = BuildVars.BUILD_VERSION_STRING; try { - req.lang_code = LocaleController.getLocaleString(LocaleController.getInstance().getSystemDefaultLocale()); + req.lang_code = LocaleController.getLocaleStringIso639(); req.device_model = Build.MANUFACTURER + Build.MODEL; req.system_version = "SDK " + Build.VERSION.SDK_INT; } catch (Exception e) { @@ -4221,7 +4202,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter req.token = regid; req.app_sandbox = false; try { - req.lang_code = LocaleController.getLocaleString(LocaleController.getInstance().getSystemDefaultLocale()); + req.lang_code = LocaleController.getLocaleStringIso639(); if (req.lang_code.length() == 0) { req.lang_code = "en"; } @@ -4250,25 +4231,23 @@ public class MessagesController implements NotificationCenter.NotificationCenter req.system_version = "SDK Unknown"; } - if (req.app_version != null) { - ConnectionsManager.getInstance().sendRequest(req, new RequestDelegate() { - @Override - public void run(TLObject response, TLRPC.TL_error error) { - if (response instanceof TLRPC.TL_boolTrue) { - FileLog.e("tmessages", "registered for push"); - UserConfig.registeredForPush = true; - UserConfig.pushString = regid; - UserConfig.saveConfig(false); - } - AndroidUtilities.runOnUIThread(new Runnable() { - @Override - public void run() { - registeringForPush = false; - } - }); + ConnectionsManager.getInstance().sendRequest(req, new RequestDelegate() { + @Override + public void run(TLObject response, TLRPC.TL_error error) { + if (response instanceof TLRPC.TL_boolTrue) { + FileLog.e("tmessages", "registered for push"); + UserConfig.registeredForPush = true; + UserConfig.pushString = regid; + UserConfig.saveConfig(false); } - }); - } + AndroidUtilities.runOnUIThread(new Runnable() { + @Override + public void run() { + registeringForPush = false; + } + }); + } + }); } public void loadCurrentState() { @@ -4848,6 +4827,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter MessagesStorage.getInstance().getStorageQueue().postRunnable(new Runnable() { @Override public void run() { + MessagesStorage.getInstance().putUsersAndChats(res.users, res.chats, true, false); if (!msgUpdates.isEmpty()) { final HashMap corrected = new HashMap<>(); for (TLRPC.TL_updateMessageID update : msgUpdates) { @@ -4953,10 +4933,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter } }); } - MessagesStorage.getInstance().startTransaction(false); - MessagesStorage.getInstance().putMessages(res.new_messages, false, false, false, MediaController.getInstance().getAutodownloadMask()); - MessagesStorage.getInstance().putUsersAndChats(res.users, res.chats, false, false); - MessagesStorage.getInstance().commitTransaction(false); + MessagesStorage.getInstance().putMessages(res.new_messages, true, false, false, MediaController.getInstance().getAutodownloadMask()); } }); @@ -4991,8 +4968,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter } } MessagesStorage.getInstance().saveDiffParams(MessagesStorage.lastSeqValue, MessagesStorage.lastPtsValue, MessagesStorage.lastDateValue, MessagesStorage.lastQtsValue); - FileLog.e("tmessages", "received difference with date = " + MessagesStorage.lastDateValue + " pts = " + MessagesStorage.lastPtsValue + " seq = " + MessagesStorage.lastSeqValue); - FileLog.e("tmessages", "messages = " + res.new_messages.size() + " users = " + res.users.size() + " chats = " + res.chats.size() + " other updates = " + res.other_updates.size()); + FileLog.e("tmessages", "received difference with date = " + MessagesStorage.lastDateValue + " pts = " + MessagesStorage.lastPtsValue + " seq = " + MessagesStorage.lastSeqValue + " messages = " + res.new_messages.size() + " users = " + res.users.size() + " chats = " + res.chats.size() + " other updates = " + res.other_updates.size()); } }); } @@ -5147,7 +5123,8 @@ public class MessagesController implements NotificationCenter.NotificationCenter private int getUpdateType(TLRPC.Update update) { if (update instanceof TLRPC.TL_updateNewMessage || update instanceof TLRPC.TL_updateReadMessagesContents || update instanceof TLRPC.TL_updateReadHistoryInbox || - update instanceof TLRPC.TL_updateReadHistoryOutbox || update instanceof TLRPC.TL_updateDeleteMessages || update instanceof TLRPC.TL_updateWebPage) { + update instanceof TLRPC.TL_updateReadHistoryOutbox || update instanceof TLRPC.TL_updateDeleteMessages || update instanceof TLRPC.TL_updateWebPage || + update instanceof TLRPC.TL_updateEditMessage) { return 0; } else if (update instanceof TLRPC.TL_updateNewEncryptedMessage) { return 1; @@ -5174,8 +5151,11 @@ public class MessagesController implements NotificationCenter.NotificationCenter TLRPC.User user3 = null; TLRPC.Chat channel = null; - if (user == null) { + if (user == null || user.min) { //TODO user = MessagesStorage.getInstance().getUserSync(user_id); + if (user != null && user.min) { + user = null; + } putUser(user, true); } @@ -5646,7 +5626,8 @@ public class MessagesController implements NotificationCenter.NotificationCenter ConcurrentHashMap chatsDict; if (usersArr != null) { usersDict = new ConcurrentHashMap<>(); - for (TLRPC.User user : usersArr) { + for (int a = 0; a < usersArr.size(); a++) { + TLRPC.User user = usersArr.get(a); usersDict.put(user.id, user); } } else { @@ -5655,7 +5636,8 @@ public class MessagesController implements NotificationCenter.NotificationCenter } if (chatsArr != null) { chatsDict = new ConcurrentHashMap<>(); - for (TLRPC.Chat chat : chatsArr) { + for (int a = 0; a < chatsArr.size(); a++) { + TLRPC.Chat chat = chatsArr.get(a); chatsDict.put(chat.id, chat); } } else { @@ -5683,14 +5665,20 @@ public class MessagesController implements NotificationCenter.NotificationCenter message = ((TLRPC.TL_updateNewMessage) update).message; } else { message = ((TLRPC.TL_updateNewChannelMessage) update).message; + if (!message.out && message.from_id == UserConfig.getClientUserId()) { //TODO remove later + message.out = true; + } } TLRPC.Chat chat = null; if (checkForUsers) { int chat_id = 0; + int user_id = 0; if (message.to_id.channel_id != 0) { chat_id = message.to_id.channel_id; } else if (message.to_id.chat_id != 0) { chat_id = message.to_id.chat_id; + } else if (message.to_id.user_id != 0) { + user_id = message.to_id.user_id; } if (chat_id != 0) { chat = chatsDict.get(chat_id); @@ -5708,14 +5696,30 @@ public class MessagesController implements NotificationCenter.NotificationCenter message.flags |= TLRPC.MESSAGE_FLAG_MEGAGROUP; } } - if (message.from_id > 0) { - TLRPC.User user = getUser(message.from_id); - if (usersDict.get(message.from_id) == null && user == null) { - return false; + + for (int a = 0; a < 3; a++) { + if (a != 0) { + user_id = a == 1 ? message.from_id : (message.fwd_from != null ? message.fwd_from.from_id : 0); } - if (user != null && user.status != null && user.status.expires <= 0) { - onlinePrivacy.put(message.from_id, ConnectionsManager.getInstance().getCurrentTime()); - interfaceUpdateMask |= UPDATE_MASK_STATUS; + if (user_id > 0) { + TLRPC.User user = usersDict.get(user_id); + if (user == null || user.min) { + user = getUser(user_id); + } + if (user == null || user.min) { + user = MessagesStorage.getInstance().getUserSync(user_id); + if (user != null && user.min) { + user = null; + } + putUser(user, true); + } + if (user == null) { + return false; + } + if (a == 1 && user.status != null && user.status.expires <= 0) { + onlinePrivacy.put(user_id, ConnectionsManager.getInstance().getCurrentTime()); + interfaceUpdateMask |= UPDATE_MASK_STATUS; + } } } } @@ -6103,12 +6107,13 @@ public class MessagesController implements NotificationCenter.NotificationCenter } else if (update instanceof TLRPC.TL_updateChannel) { updatesOnMainThread.add(update); } else if (update instanceof TLRPC.TL_updateChannelMessageViews) { + TLRPC.TL_updateChannelMessageViews updateChannelMessageViews = (TLRPC.TL_updateChannelMessageViews) update; SparseIntArray array = channelViews.get(update.channel_id); if (array == null) { array = new SparseIntArray(); channelViews.put(update.channel_id, array); } - array.put(update.id, update.views); + array.put(updateChannelMessageViews.id, update.views); } else if (update instanceof TLRPC.TL_updateChatParticipantAdmin) { MessagesStorage.getInstance().updateChatInfo(update.chat_id, update.user_id, 2, update.is_admin ? 1 : 0, update.version); } else if (update instanceof TLRPC.TL_updateChatAdmins) { @@ -6121,8 +6126,13 @@ public class MessagesController implements NotificationCenter.NotificationCenter updatesOnMainThread.add(update); } else if (update instanceof TLRPC.TL_updateSavedGifs) { updatesOnMainThread.add(update); - } else if (update instanceof TLRPC.TL_updateEditChannelMessage) { - TLRPC.Message message = ((TLRPC.TL_updateEditChannelMessage) update).message; + } else if (update instanceof TLRPC.TL_updateEditChannelMessage || update instanceof TLRPC.TL_updateEditMessage) { + TLRPC.Message message; + if (update instanceof TLRPC.TL_updateEditChannelMessage) { + message = ((TLRPC.TL_updateEditChannelMessage) update).message; + } else { + message = ((TLRPC.TL_updateEditMessage) update).message; + } if (message.to_id.channel_id != 0 && !message.out) { message.unread = true; if (message.post || (message.flags & TLRPC.MESSAGE_FLAG_MEGAGROUP) != 0) { @@ -6130,14 +6140,16 @@ public class MessagesController implements NotificationCenter.NotificationCenter } } - long dialog_id = -update.channel_id; - Integer value = dialogs_read_inbox_max.get(dialog_id); - if (value == null) { - value = MessagesStorage.getInstance().getChannelReadInboxMax(update.channel_id); - } - if (value >= message.id) { - message.unread = false; - message.media_unread = false; + if (update instanceof TLRPC.TL_updateEditChannelMessage) { + long dialog_id = -update.channel_id; + Integer value = dialogs_read_inbox_max.get(dialog_id); + if (value == null) { + value = MessagesStorage.getInstance().getChannelReadInboxMax(update.channel_id); + } + if (value >= message.id) { + message.unread = false; + message.media_unread = false; + } //TODO unread for updateEditMessage? } ImageLoader.saveMessageThumbs(message); @@ -6161,7 +6173,8 @@ public class MessagesController implements NotificationCenter.NotificationCenter } arr.add(obj); } else if (update instanceof TLRPC.TL_updateChannelPinnedMessage) { - MessagesStorage.getInstance().updateChannelPinnedMessage(update.channel_id, update.id); + TLRPC.TL_updateChannelPinnedMessage updateChannelPinnedMessage = (TLRPC.TL_updateChannelPinnedMessage) update; + MessagesStorage.getInstance().updateChannelPinnedMessage(update.channel_id, updateChannelPinnedMessage.id); } } if (!messages.isEmpty()) { @@ -6839,10 +6852,15 @@ public class MessagesController implements NotificationCenter.NotificationCenter return; } String reason = null; + boolean closeLast = false; if (chat != null) { reason = getRestrictionReason(chat.restriction_reason); } else if (user != null) { reason = getRestrictionReason(user.restriction_reason); + if (user.bot) { + type = 1; + closeLast = true; + } } if (reason != null) { showCantOpenAlert(fragment, reason); @@ -6856,7 +6874,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter if (type == 0) { fragment.presentFragment(new ProfileActivity(args)); } else { - fragment.presentFragment(new ChatActivity(args)/*, fragment instanceof ChatActivity*/); + fragment.presentFragment(new ChatActivity(args), closeLast); } } } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/MessagesStorage.java b/TMessagesProj/src/main/java/org/telegram/messenger/MessagesStorage.java index a1dd92f52..11ec02096 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/MessagesStorage.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/MessagesStorage.java @@ -423,7 +423,7 @@ public class MessagesStorage { while (cursor.next()) { int chat_id = cursor.intValue(0); NativeByteBuffer data = new NativeByteBuffer(cursor.byteArrayLength(1)); - if (data != null && cursor.byteBufferValue(1, data) != 0) { + if (cursor.byteBufferValue(1, data) != 0) { TLRPC.ChatParticipants participants = TLRPC.ChatParticipants.TLdeserialize(data, data.readInt32(false), false); if (participants != null) { TLRPC.TL_chatFull chatFull = new TLRPC.TL_chatFull(); @@ -663,7 +663,7 @@ public class MessagesStorage { cursor = database.queryFinalized("SELECT read_state, data, send_state, mid, date, uid FROM messages WHERE uid IN (" + ids.toString() + ") AND out = 0 AND read_state IN(0,2) ORDER BY date DESC LIMIT 50"); while (cursor.next()) { NativeByteBuffer data = new NativeByteBuffer(cursor.byteArrayLength(1)); - if (data != null && cursor.byteBufferValue(1, data) != 0) { + if (cursor.byteBufferValue(1, data) != 0) { TLRPC.Message message = TLRPC.Message.TLdeserialize(data, data.readInt32(false), false); MessageObject.setUnreadFlags(message, cursor.intValue(0)); message.id = cursor.intValue(3); @@ -793,7 +793,7 @@ public class MessagesStorage { searchImage.date = cursor.intValue(7); if (!cursor.isNull(8)) { NativeByteBuffer data = new NativeByteBuffer(cursor.byteArrayLength(8)); - if (data != null && cursor.byteBufferValue(8, data) != 0) { + if (cursor.byteBufferValue(8, data) != 0) { searchImage.document = TLRPC.Document.TLdeserialize(data, data.readInt32(false), false); } data.reuse(); @@ -937,7 +937,7 @@ public class MessagesStorage { final ArrayList wallPapers = new ArrayList<>(); while (cursor.next()) { NativeByteBuffer data = new NativeByteBuffer(cursor.byteArrayLength(0)); - if (data != null && cursor.byteBufferValue(0, data) != 0) { + if (cursor.byteBufferValue(0, data) != 0) { TLRPC.WallPaper wallPaper = TLRPC.WallPaper.TLdeserialize(data, data.readInt32(false), false); wallPapers.add(wallPaper); } @@ -1040,7 +1040,7 @@ public class MessagesStorage { try { while (cursor.next()) { NativeByteBuffer data = new NativeByteBuffer(cursor.byteArrayLength(0)); - if (data != null && cursor.byteBufferValue(0, data) != 0) { + if (cursor.byteBufferValue(0, data) != 0) { TLRPC.Message message = TLRPC.Message.TLdeserialize(data, data.readInt32(false), false); if (message != null && message.from_id == uid && message.id != 1) { mids.add(message.id); @@ -1104,7 +1104,7 @@ public class MessagesStorage { try { while (cursor.next()) { NativeByteBuffer data = new NativeByteBuffer(cursor.byteArrayLength(0)); - if (data != null && cursor.byteBufferValue(0, data) != 0) { + if (cursor.byteBufferValue(0, data) != 0) { TLRPC.Message message = TLRPC.Message.TLdeserialize(data, data.readInt32(false), false); if (message != null && message.media != null) { if (message.media instanceof TLRPC.TL_messageMediaPhoto) { @@ -1163,7 +1163,7 @@ public class MessagesStorage { try { while (cursor2.next()) { NativeByteBuffer data = new NativeByteBuffer(cursor2.byteArrayLength(0)); - if (data != null && cursor2.byteBufferValue(0, data) != 0) { + if (cursor2.byteBufferValue(0, data) != 0) { TLRPC.Message message = TLRPC.Message.TLdeserialize(data, data.readInt32(false), false); if (message != null) { arrayList.add(message); @@ -1240,7 +1240,7 @@ public class MessagesStorage { while (cursor.next()) { NativeByteBuffer data = new NativeByteBuffer(cursor.byteArrayLength(0)); - if (data != null && cursor.byteBufferValue(0, data) != 0) { + if (cursor.byteBufferValue(0, data) != 0) { TLRPC.Photo photo = TLRPC.Photo.TLdeserialize(data, data.readInt32(false), false); res.photos.add(photo); } @@ -1514,7 +1514,7 @@ public class MessagesStorage { ArrayList loadedUsers = new ArrayList<>(); if (cursor.next()) { NativeByteBuffer data = new NativeByteBuffer(cursor.byteArrayLength(0)); - if (data != null && cursor.byteBufferValue(0, data) != 0) { + if (cursor.byteBufferValue(0, data) != 0) { info = TLRPC.ChatFull.TLdeserialize(data, data.readInt32(false), false); info.pinned_msg_id = cursor.intValue(1); } @@ -1696,7 +1696,7 @@ public class MessagesStorage { ArrayList loadedUsers = new ArrayList<>(); if (cursor.next()) { NativeByteBuffer data = new NativeByteBuffer(cursor.byteArrayLength(0)); - if (data != null && cursor.byteBufferValue(0, data) != 0) { + if (cursor.byteBufferValue(0, data) != 0) { info = TLRPC.ChatFull.TLdeserialize(data, data.readInt32(false), false); info.pinned_msg_id = cursor.intValue(1); } @@ -1783,7 +1783,7 @@ public class MessagesStorage { ArrayList loadedUsers = new ArrayList<>(); if (cursor.next()) { NativeByteBuffer data = new NativeByteBuffer(cursor.byteArrayLength(0)); - if (data != null && cursor.byteBufferValue(0, data) != 0) { + if (cursor.byteBufferValue(0, data) != 0) { info = TLRPC.ChatFull.TLdeserialize(data, data.readInt32(false), false); } data.reuse(); @@ -1814,13 +1814,14 @@ public class MessagesStorage { storageQueue.postRunnable(new Runnable() { @Override public void run() { + MessageObject pinnedMessageObject = null; + TLRPC.ChatFull info = null; + ArrayList loadedUsers = new ArrayList<>(); try { SQLiteCursor cursor = database.queryFinalized("SELECT info, pinned FROM chat_settings_v2 WHERE uid = " + chat_id); - TLRPC.ChatFull info = null; - ArrayList loadedUsers = new ArrayList<>(); if (cursor.next()) { NativeByteBuffer data = new NativeByteBuffer(cursor.byteArrayLength(0)); - if (data != null && cursor.byteBufferValue(0, data) != 0) { + if (cursor.byteBufferValue(0, data) != 0) { info = TLRPC.ChatFull.TLdeserialize(data, data.readInt32(false), false); info.pinned_msg_id = cursor.intValue(1); } @@ -1847,7 +1848,7 @@ public class MessagesStorage { try { NativeByteBuffer data = new NativeByteBuffer(cursor.byteArrayLength(0)); NativeByteBuffer data2 = new NativeByteBuffer(cursor.byteArrayLength(2)); - if (data != null && cursor.byteBufferValue(0, data) != 0 && data2 != null && cursor.byteBufferValue(2, data2) != 0) { + if (cursor.byteBufferValue(0, data) != 0 && cursor.byteBufferValue(2, data2) != 0) { TLRPC.User user = TLRPC.User.TLdeserialize(data, data.readInt32(false), false); TLRPC.ChannelParticipant participant = TLRPC.ChannelParticipant.TLdeserialize(data2, data2.readInt32(false), false); if (user != null && participant != null) { @@ -1886,15 +1887,13 @@ public class MessagesStorage { if (semaphore != null) { semaphore.release(); } - MessageObject pinnedMessageObject = null; if (info instanceof TLRPC.TL_channelFull && info.pinned_msg_id != 0) { pinnedMessageObject = MessagesQuery.loadPinnedMessage(chat_id, info.pinned_msg_id, false); } - MessagesController.getInstance().processChatInfo(chat_id, info, loadedUsers, true, force, byChannelUsers, pinnedMessageObject); - } catch (Exception e) { FileLog.e("tmessages", e); } finally { + MessagesController.getInstance().processChatInfo(chat_id, info, loadedUsers, true, force, byChannelUsers, pinnedMessageObject); if (semaphore != null) { semaphore.release(); } @@ -2162,7 +2161,7 @@ public class MessagesStorage { SQLiteCursor cursor = database.queryFinalized("SELECT m.read_state, m.data, m.send_state, m.mid, m.date, r.random_id, m.uid, s.seq_in, s.seq_out, m.ttl FROM messages as m LEFT JOIN randoms as r ON r.mid = m.mid LEFT JOIN messages_seq as s ON m.mid = s.mid WHERE m.mid < 0 AND m.send_state = 1 ORDER BY m.mid DESC LIMIT " + count); while (cursor.next()) { NativeByteBuffer data = new NativeByteBuffer(cursor.byteArrayLength(1)); - if (data != null && cursor.byteBufferValue(1, data) != 0) { + if (cursor.byteBufferValue(1, data) != 0) { TLRPC.Message message = TLRPC.Message.TLdeserialize(data, data.readInt32(false), false); if (!messageHashMap.containsKey(message.id)) { MessageObject.setUnreadFlags(message, cursor.intValue(0)); @@ -2306,6 +2305,7 @@ public class MessagesStorage { messageMaxId |= ((long) channelId) << 32; } boolean isEnd = false; + int num = dialog_id == 777000 ? 4 : 1; try { ArrayList usersToLoad = new ArrayList<>(); ArrayList chatsToLoad = new ArrayList<>(); @@ -2346,12 +2346,26 @@ public class MessagesStorage { } cursor.dispose(); } + } else if (max_id_query == 0) { + int existingUnreadCount = 0; + cursor = database.queryFinalized(String.format(Locale.US, "SELECT COUNT(*) FROM messages WHERE uid = %d AND mid > 0 " + imp + "AND out = 0 AND read_state IN(0,2)", dialog_id)); + if (cursor.next()) { + existingUnreadCount = cursor.intValue(0); + } + cursor.dispose(); + if (existingUnreadCount == count_unread) { + cursor = database.queryFinalized(String.format(Locale.US, "SELECT min(mid) FROM messages WHERE uid = %d AND out = 0 AND read_state IN(0,2) AND mid > 0" + imp, dialog_id)); + if (cursor.next()) { + messageMaxId = max_id_query = min_unread_id = cursor.intValue(0); + } + cursor.dispose(); + } } } - if (count_query > count_unread || count_unread < 4) { + if (count_query > count_unread || count_unread < num) { count_query = Math.max(count_query, count_unread + 10); - if (count_unread < 4) { + if (count_unread < num) { count_unread = 0; min_unread_id = 0; messageMaxId = 0; @@ -2393,12 +2407,14 @@ public class MessagesStorage { } cursor.dispose(); - boolean containMessage = true; - cursor = database.queryFinalized(String.format(Locale.US, "SELECT start FROM " + holesTable + " WHERE uid = %d AND start < %d AND end > %d", dialog_id, max_id_query, max_id_query)); - if (cursor.next()) { - containMessage = false; + boolean containMessage = max_id_query != 0; + if (containMessage) { + cursor = database.queryFinalized(String.format(Locale.US, "SELECT start FROM " + holesTable + " WHERE uid = %d AND start < %d AND end > %d", dialog_id, max_id_query, max_id_query)); + if (cursor.next()) { + containMessage = false; + } + cursor.dispose(); } - cursor.dispose(); if (containMessage) { long holeMessageMaxId = 0; @@ -2430,11 +2446,11 @@ public class MessagesStorage { holeMessageMaxId |= ((long) channelId) << 32; } } - cursor = database.queryFinalized(String.format(Locale.US, "SELECT * FROM (SELECT m.read_state, m.data, m.send_state, m.mid, m.date, r.random_id, m.replydata, m.media FROM messages as m LEFT JOIN randoms as r ON r.mid = m.mid WHERE m.uid = %d AND m.mid <= %d AND m.mid >= %d " + imp + "ORDER BY m.date DESC, m.mid DESC LIMIT %d) UNION " + - "SELECT * FROM (SELECT m.read_state, m.data, m.send_state, m.mid, m.date, r.random_id, m.replydata, m.media FROM messages as m LEFT JOIN randoms as r ON r.mid = m.mid WHERE m.uid = %d AND m.mid > %d AND m.mid <= %d " + imp + "ORDER BY m.date ASC, m.mid ASC LIMIT %d)", dialog_id, messageMaxId, holeMessageMinId, count_query / 2, dialog_id, messageMaxId, holeMessageMaxId, count_query / 2)); + cursor = database.queryFinalized(String.format(Locale.US, "SELECT * FROM (SELECT m.read_state, m.data, m.send_state, m.mid, m.date, r.random_id, m.replydata, m.media, m.ttl FROM messages as m LEFT JOIN randoms as r ON r.mid = m.mid WHERE m.uid = %d AND m.mid <= %d AND m.mid >= %d " + imp + "ORDER BY m.date DESC, m.mid DESC LIMIT %d) UNION " + + "SELECT * FROM (SELECT m.read_state, m.data, m.send_state, m.mid, m.date, r.random_id, m.replydata, m.media, m.ttl FROM messages as m LEFT JOIN randoms as r ON r.mid = m.mid WHERE m.uid = %d AND m.mid > %d AND m.mid <= %d " + imp + "ORDER BY m.date ASC, m.mid ASC LIMIT %d)", dialog_id, messageMaxId, holeMessageMinId, count_query / 2, dialog_id, messageMaxId, holeMessageMaxId, count_query / 2)); } else { - cursor = database.queryFinalized(String.format(Locale.US, "SELECT * FROM (SELECT m.read_state, m.data, m.send_state, m.mid, m.date, r.random_id, m.replydata, m.media FROM messages as m LEFT JOIN randoms as r ON r.mid = m.mid WHERE m.uid = %d AND m.mid <= %d " + imp + "ORDER BY m.date DESC, m.mid DESC LIMIT %d) UNION " + - "SELECT * FROM (SELECT m.read_state, m.data, m.send_state, m.mid, m.date, r.random_id, m.replydata, m.media FROM messages as m LEFT JOIN randoms as r ON r.mid = m.mid WHERE m.uid = %d AND m.mid > %d " + imp + "ORDER BY m.date ASC, m.mid ASC LIMIT %d)", dialog_id, messageMaxId, count_query / 2, dialog_id, messageMaxId, count_query / 2)); + cursor = database.queryFinalized(String.format(Locale.US, "SELECT * FROM (SELECT m.read_state, m.data, m.send_state, m.mid, m.date, r.random_id, m.replydata, m.media, m.ttl FROM messages as m LEFT JOIN randoms as r ON r.mid = m.mid WHERE m.uid = %d AND m.mid <= %d " + imp + "ORDER BY m.date DESC, m.mid DESC LIMIT %d) UNION " + + "SELECT * FROM (SELECT m.read_state, m.data, m.send_state, m.mid, m.date, r.random_id, m.replydata, m.media, m.ttl FROM messages as m LEFT JOIN randoms as r ON r.mid = m.mid WHERE m.uid = %d AND m.mid > %d " + imp + "ORDER BY m.date ASC, m.mid ASC LIMIT %d)", dialog_id, messageMaxId, count_query / 2, dialog_id, messageMaxId, count_query / 2)); } } else { cursor = null; @@ -2450,9 +2466,9 @@ public class MessagesStorage { } cursor.dispose(); if (holeMessageId != 0) { - cursor = database.queryFinalized(String.format(Locale.US, "SELECT m.read_state, m.data, m.send_state, m.mid, m.date, r.random_id, m.replydata, m.media FROM messages as m LEFT JOIN randoms as r ON r.mid = m.mid WHERE m.uid = %d AND m.date >= %d AND m.mid > %d AND m.mid <= %d " + imp + "ORDER BY m.date ASC, m.mid ASC LIMIT %d", dialog_id, minDate, messageMaxId, holeMessageId, count_query)); + cursor = database.queryFinalized(String.format(Locale.US, "SELECT m.read_state, m.data, m.send_state, m.mid, m.date, r.random_id, m.replydata, m.media, m.ttl FROM messages as m LEFT JOIN randoms as r ON r.mid = m.mid WHERE m.uid = %d AND m.date >= %d AND m.mid > %d AND m.mid <= %d " + imp + "ORDER BY m.date ASC, m.mid ASC LIMIT %d", dialog_id, minDate, messageMaxId, holeMessageId, count_query)); } else { - cursor = database.queryFinalized(String.format(Locale.US, "SELECT m.read_state, m.data, m.send_state, m.mid, m.date, r.random_id, m.replydata, m.media FROM messages as m LEFT JOIN randoms as r ON r.mid = m.mid WHERE m.uid = %d AND m.date >= %d AND m.mid > %d " + imp + "ORDER BY m.date ASC, m.mid ASC LIMIT %d", dialog_id, minDate, messageMaxId, count_query)); + cursor = database.queryFinalized(String.format(Locale.US, "SELECT m.read_state, m.data, m.send_state, m.mid, m.date, r.random_id, m.replydata, m.media, m.ttl FROM messages as m LEFT JOIN randoms as r ON r.mid = m.mid WHERE m.uid = %d AND m.date >= %d AND m.mid > %d " + imp + "ORDER BY m.date ASC, m.mid ASC LIMIT %d", dialog_id, minDate, messageMaxId, count_query)); } } else if (minDate != 0) { if (messageMaxId != 0) { @@ -2466,12 +2482,12 @@ public class MessagesStorage { } cursor.dispose(); if (holeMessageId != 0) { - cursor = database.queryFinalized(String.format(Locale.US, "SELECT m.read_state, m.data, m.send_state, m.mid, m.date, r.random_id, m.replydata, m.media FROM messages as m LEFT JOIN randoms as r ON r.mid = m.mid WHERE m.uid = %d AND m.date <= %d AND m.mid < %d AND (m.mid >= %d OR m.mid < 0) " + imp + "ORDER BY m.date DESC, m.mid DESC LIMIT %d", dialog_id, minDate, messageMaxId, holeMessageId, count_query)); + cursor = database.queryFinalized(String.format(Locale.US, "SELECT m.read_state, m.data, m.send_state, m.mid, m.date, r.random_id, m.replydata, m.media, m.ttl FROM messages as m LEFT JOIN randoms as r ON r.mid = m.mid WHERE m.uid = %d AND m.date <= %d AND m.mid < %d AND (m.mid >= %d OR m.mid < 0) " + imp + "ORDER BY m.date DESC, m.mid DESC LIMIT %d", dialog_id, minDate, messageMaxId, holeMessageId, count_query)); } else { - cursor = database.queryFinalized(String.format(Locale.US, "SELECT m.read_state, m.data, m.send_state, m.mid, m.date, r.random_id, m.replydata, m.media FROM messages as m LEFT JOIN randoms as r ON r.mid = m.mid WHERE m.uid = %d AND m.date <= %d AND m.mid < %d " + imp + "ORDER BY m.date DESC, m.mid DESC LIMIT %d", dialog_id, minDate, messageMaxId, count_query)); + cursor = database.queryFinalized(String.format(Locale.US, "SELECT m.read_state, m.data, m.send_state, m.mid, m.date, r.random_id, m.replydata, m.media, m.ttl FROM messages as m LEFT JOIN randoms as r ON r.mid = m.mid WHERE m.uid = %d AND m.date <= %d AND m.mid < %d " + imp + "ORDER BY m.date DESC, m.mid DESC LIMIT %d", dialog_id, minDate, messageMaxId, count_query)); } } else { - cursor = database.queryFinalized(String.format(Locale.US, "SELECT m.read_state, m.data, m.send_state, m.mid, m.date, r.random_id, m.replydata, m.media FROM messages as m LEFT JOIN randoms as r ON r.mid = m.mid WHERE m.uid = %d AND m.date <= %d " + imp + "ORDER BY m.date DESC, m.mid DESC LIMIT %d,%d", dialog_id, minDate, offset_query, count_query)); + cursor = database.queryFinalized(String.format(Locale.US, "SELECT m.read_state, m.data, m.send_state, m.mid, m.date, r.random_id, m.replydata, m.media, m.ttl FROM messages as m LEFT JOIN randoms as r ON r.mid = m.mid WHERE m.uid = %d AND m.date <= %d " + imp + "ORDER BY m.date DESC, m.mid DESC LIMIT %d,%d", dialog_id, minDate, offset_query, count_query)); } } else { cursor = database.queryFinalized(String.format(Locale.US, "SELECT max(mid) FROM messages WHERE uid = %d AND mid > 0", dialog_id)); @@ -2490,20 +2506,20 @@ public class MessagesStorage { } cursor.dispose(); if (holeMessageId != 0) { - cursor = database.queryFinalized(String.format(Locale.US, "SELECT m.read_state, m.data, m.send_state, m.mid, m.date, r.random_id, m.replydata, m.media FROM messages as m LEFT JOIN randoms as r ON r.mid = m.mid WHERE m.uid = %d AND (m.mid >= %d OR m.mid < 0) " + imp + "ORDER BY m.date DESC, m.mid DESC LIMIT %d,%d", dialog_id, holeMessageId, offset_query, count_query)); + cursor = database.queryFinalized(String.format(Locale.US, "SELECT m.read_state, m.data, m.send_state, m.mid, m.date, r.random_id, m.replydata, m.media, m.ttl FROM messages as m LEFT JOIN randoms as r ON r.mid = m.mid WHERE m.uid = %d AND (m.mid >= %d OR m.mid < 0) " + imp + "ORDER BY m.date DESC, m.mid DESC LIMIT %d,%d", dialog_id, holeMessageId, offset_query, count_query)); } else { - cursor = database.queryFinalized(String.format(Locale.US, "SELECT m.read_state, m.data, m.send_state, m.mid, m.date, r.random_id, m.replydata, m.media FROM messages as m LEFT JOIN randoms as r ON r.mid = m.mid WHERE m.uid = %d " + imp + "ORDER BY m.date DESC, m.mid DESC LIMIT %d,%d", dialog_id, offset_query, count_query)); + cursor = database.queryFinalized(String.format(Locale.US, "SELECT m.read_state, m.data, m.send_state, m.mid, m.date, r.random_id, m.replydata, m.media, m.ttl FROM messages as m LEFT JOIN randoms as r ON r.mid = m.mid WHERE m.uid = %d " + imp + "ORDER BY m.date DESC, m.mid DESC LIMIT %d,%d", dialog_id, offset_query, count_query)); } } } else { isEnd = true; if (load_type == 1) { - cursor = database.queryFinalized(String.format(Locale.US, "SELECT m.read_state, m.data, m.send_state, m.mid, m.date, r.random_id, m.replydata, m.media FROM messages as m LEFT JOIN randoms as r ON r.mid = m.mid WHERE m.uid = %d AND m.mid < %d ORDER BY m.mid DESC LIMIT %d", dialog_id, max_id, count_query)); + cursor = database.queryFinalized(String.format(Locale.US, "SELECT m.read_state, m.data, m.send_state, m.mid, m.date, r.random_id, m.replydata, m.media, m.ttl FROM messages as m LEFT JOIN randoms as r ON r.mid = m.mid WHERE m.uid = %d AND m.mid < %d ORDER BY m.mid DESC LIMIT %d", dialog_id, max_id, count_query)); } else if (minDate != 0) { if (max_id != 0) { - cursor = database.queryFinalized(String.format(Locale.US, "SELECT m.read_state, m.data, m.send_state, m.mid, m.date, r.random_id, m.replydata, m.media FROM messages as m LEFT JOIN randoms as r ON r.mid = m.mid WHERE m.uid = %d AND m.mid > %d ORDER BY m.mid ASC LIMIT %d", dialog_id, max_id, count_query)); + cursor = database.queryFinalized(String.format(Locale.US, "SELECT m.read_state, m.data, m.send_state, m.mid, m.date, r.random_id, m.replydata, m.media, m.ttl FROM messages as m LEFT JOIN randoms as r ON r.mid = m.mid WHERE m.uid = %d AND m.mid > %d ORDER BY m.mid ASC LIMIT %d", dialog_id, max_id, count_query)); } else { - cursor = database.queryFinalized(String.format(Locale.US, "SELECT m.read_state, m.data, m.send_state, m.mid, m.date, r.random_id, m.replydata, m.media FROM messages as m LEFT JOIN randoms as r ON r.mid = m.mid WHERE m.uid = %d AND m.date <= %d ORDER BY m.mid ASC LIMIT %d,%d", dialog_id, minDate, offset_query, count_query)); + cursor = database.queryFinalized(String.format(Locale.US, "SELECT m.read_state, m.data, m.send_state, m.mid, m.date, r.random_id, m.replydata, m.media, m.ttl FROM messages as m LEFT JOIN randoms as r ON r.mid = m.mid WHERE m.uid = %d AND m.date <= %d ORDER BY m.mid ASC LIMIT %d,%d", dialog_id, minDate, offset_query, count_query)); } } else { if (load_type == 2) { @@ -2528,9 +2544,9 @@ public class MessagesStorage { } } - if (count_query > count_unread || count_unread < 4) { + if (count_query > count_unread || count_unread < num) { count_query = Math.max(count_query, count_unread + 10); - if (count_unread < 4) { + if (count_unread < num) { count_unread = 0; min_unread_id = 0; last_message_id = 0; @@ -2539,13 +2555,13 @@ public class MessagesStorage { offset_query = count_unread - count_query; count_query += 10; } - cursor = database.queryFinalized(String.format(Locale.US, "SELECT m.read_state, m.data, m.send_state, m.mid, m.date, r.random_id, m.replydata, m.media FROM messages as m LEFT JOIN randoms as r ON r.mid = m.mid WHERE m.uid = %d ORDER BY m.mid ASC LIMIT %d,%d", dialog_id, offset_query, count_query)); + cursor = database.queryFinalized(String.format(Locale.US, "SELECT m.read_state, m.data, m.send_state, m.mid, m.date, r.random_id, m.replydata, m.media, m.ttl FROM messages as m LEFT JOIN randoms as r ON r.mid = m.mid WHERE m.uid = %d ORDER BY m.mid ASC LIMIT %d,%d", dialog_id, offset_query, count_query)); } } if (cursor != null) { while (cursor.next()) { NativeByteBuffer data = new NativeByteBuffer(cursor.byteArrayLength(1)); - if (data != null && cursor.byteBufferValue(1, data) != 0) { + if (cursor.byteBufferValue(1, data) != 0) { TLRPC.Message message = TLRPC.Message.TLdeserialize(data, data.readInt32(false), false); MessageObject.setUnreadFlags(message, cursor.intValue(0)); message.id = cursor.intValue(3); @@ -2554,6 +2570,7 @@ public class MessagesStorage { if ((message.flags & TLRPC.MESSAGE_FLAG_HAS_VIEWS) != 0) { message.views = cursor.intValue(7); } + message.ttl = cursor.intValue(8); res.messages.add(message); addUsersAndChatsFromMessage(message, usersToLoad, chatsToLoad); @@ -2561,7 +2578,7 @@ public class MessagesStorage { if (message.reply_to_msg_id != 0 || message.reply_to_random_id != 0) { if (!cursor.isNull(6)) { NativeByteBuffer data2 = new NativeByteBuffer(cursor.byteArrayLength(6)); - if (data2 != null && cursor.byteBufferValue(6, data2) != 0) { + if (cursor.byteBufferValue(6, data2) != 0) { message.replyMessage = TLRPC.Message.TLdeserialize(data2, data2.readInt32(false), false); if (message.replyMessage != null) { addUsersAndChatsFromMessage(message.replyMessage, usersToLoad, chatsToLoad); @@ -2685,7 +2702,7 @@ public class MessagesStorage { } while (cursor.next()) { NativeByteBuffer data = new NativeByteBuffer(cursor.byteArrayLength(0)); - if (data != null && cursor.byteBufferValue(0, data) != 0) { + if (cursor.byteBufferValue(0, data) != 0) { TLRPC.Message message = TLRPC.Message.TLdeserialize(data, data.readInt32(false), false); message.id = cursor.intValue(1); message.date = cursor.intValue(2); @@ -2800,7 +2817,7 @@ public class MessagesStorage { SQLiteCursor cursor = database.queryFinalized(String.format(Locale.US, "SELECT data FROM sent_files_v2 WHERE uid = '%s' AND type = %d", id, type)); if (cursor.next()) { NativeByteBuffer data = new NativeByteBuffer(cursor.byteArrayLength(0)); - if (data != null && cursor.byteBufferValue(0, data) != 0) { + if (cursor.byteBufferValue(0, data) != 0) { TLObject file = TLRPC.MessageMedia.TLdeserialize(data, data.readInt32(false), false); if (file instanceof TLRPC.TL_messageMediaDocument) { result.add(((TLRPC.TL_messageMediaDocument) file).document); @@ -3170,23 +3187,9 @@ public class MessagesStorage { if (cursor.next()) { try { NativeByteBuffer data = new NativeByteBuffer(cursor.byteArrayLength(0)); - if (data != null && cursor.byteBufferValue(0, data) != 0) { + if (cursor.byteBufferValue(0, data) != 0) { TLRPC.User oldUser = TLRPC.User.TLdeserialize(data, data.readInt32(false), false); if (oldUser != null) { - if (user.first_name != null) { - oldUser.first_name = user.first_name; - oldUser.flags |= 2; - } else { - oldUser.first_name = null; - oldUser.flags = oldUser.flags &~ 2; - } - if (user.last_name != null) { - oldUser.last_name = user.last_name; - oldUser.flags |= 4; - } else { - oldUser.last_name = null; - oldUser.flags = oldUser.flags &~ 4; - } if (user.username != null) { oldUser.username = user.username; oldUser.flags |= 8; @@ -3246,7 +3249,7 @@ public class MessagesStorage { if (cursor.next()) { try { NativeByteBuffer data = new NativeByteBuffer(cursor.byteArrayLength(0)); - if (data != null && cursor.byteBufferValue(0, data) != 0) { + if (cursor.byteBufferValue(0, data) != 0) { TLRPC.Chat oldChat = TLRPC.Chat.TLdeserialize(data, data.readInt32(false), false); if (oldChat != null) { oldChat.title = chat.title; @@ -3296,7 +3299,7 @@ public class MessagesStorage { while (cursor.next()) { try { NativeByteBuffer data = new NativeByteBuffer(cursor.byteArrayLength(0)); - if (data != null && cursor.byteBufferValue(0, data) != 0) { + if (cursor.byteBufferValue(0, data) != 0) { TLRPC.User user = TLRPC.User.TLdeserialize(data, data.readInt32(false), false); if (user != null) { if (user.status != null) { @@ -3321,7 +3324,7 @@ public class MessagesStorage { while (cursor.next()) { try { NativeByteBuffer data = new NativeByteBuffer(cursor.byteArrayLength(0)); - if (data != null && cursor.byteBufferValue(0, data) != 0) { + if (cursor.byteBufferValue(0, data) != 0) { TLRPC.Chat chat = TLRPC.Chat.TLdeserialize(data, data.readInt32(false), false); if (chat != null) { result.add(chat); @@ -3343,7 +3346,7 @@ public class MessagesStorage { while (cursor.next()) { try { NativeByteBuffer data = new NativeByteBuffer(cursor.byteArrayLength(0)); - if (data != null && cursor.byteBufferValue(0, data) != 0) { + if (cursor.byteBufferValue(0, data) != 0) { TLRPC.EncryptedChat chat = TLRPC.EncryptedChat.TLdeserialize(data, data.readInt32(false), false); if (chat != null) { chat.user_id = cursor.intValue(1); @@ -3460,7 +3463,7 @@ public class MessagesStorage { downloadObject.type = cursor.intValue(1); downloadObject.id = cursor.longValue(0); NativeByteBuffer data = new NativeByteBuffer(cursor.byteArrayLength(2)); - if (data != null && cursor.byteBufferValue(2, data) != 0) { + if (cursor.byteBufferValue(2, data) != 0) { TLRPC.MessageMedia messageMedia = TLRPC.MessageMedia.TLdeserialize(data, data.readInt32(false), false); if (messageMedia.document != null) { downloadObject.object = messageMedia.document; @@ -3522,7 +3525,7 @@ public class MessagesStorage { while (cursor.next()) { int mid = cursor.intValue(0); NativeByteBuffer data = new NativeByteBuffer(cursor.byteArrayLength(1)); - if (data != null && cursor.byteBufferValue(1, data) != 0) { + if (cursor.byteBufferValue(1, data) != 0) { TLRPC.Message message = TLRPC.Message.TLdeserialize(data, data.readInt32(false), false); if (message.media instanceof TLRPC.TL_messageMediaWebPage) { message.id = mid; @@ -3679,6 +3682,10 @@ public class MessagesStorage { }); } + private boolean isValidKeyboardToSave(TLRPC.Message message) { + return message.reply_markup != null && !(message.reply_markup instanceof TLRPC.TL_replyInlineMarkup) && (!message.reply_markup.selective || message.mentioned); + } + private void putMessagesInternal(final ArrayList messages, final boolean withTransaction, final boolean doNotUpdateDialogDate, final int downloadMask) { try { if (withTransaction) { @@ -3759,7 +3766,7 @@ public class MessagesStorage { messagesMediaIdsMap.put(messageId, message.dialog_id); mediaTypes.put(messageId, SharedMediaQuery.getMediaType(message)); } - if (message.reply_markup != null && (!message.reply_markup.selective || message.mentioned)) { + if (isValidKeyboardToSave(message)) { TLRPC.Message oldMessage = botKeyboards.get(message.dialog_id); if (oldMessage == null || oldMessage.id < message.id) { botKeyboards.put(message.dialog_id, message); @@ -4556,7 +4563,7 @@ public class MessagesStorage { continue; } NativeByteBuffer data = new NativeByteBuffer(cursor.byteArrayLength(1)); - if (data != null && cursor.byteBufferValue(1, data) != 0) { + if (cursor.byteBufferValue(1, data) != 0) { TLRPC.Message message = TLRPC.Message.TLdeserialize(data, data.readInt32(false), false); if (message != null && message.media != null) { if (message.media instanceof TLRPC.TL_messageMediaPhoto) { @@ -4671,7 +4678,7 @@ public class MessagesStorage { dialogs.dialogs.add(dialog); NativeByteBuffer data = new NativeByteBuffer(cursor.byteArrayLength(4)); - if (data != null && cursor.byteBufferValue(4, data) != 0) { + if (cursor.byteBufferValue(4, data) != 0) { TLRPC.Message message = TLRPC.Message.TLdeserialize(data, data.readInt32(false), false); MessageObject.setUnreadFlags(message, cursor.intValue(5)); message.id = cursor.intValue(6); @@ -5096,7 +5103,7 @@ public class MessagesStorage { state3.bindInteger(5, message.id); state3.bindInteger(6, 0); state3.bindLong(7, messageId); - state3.bindInteger(8, load_type < 0 ? message.ttl : 0); + state3.bindInteger(8, message.ttl); state3.bindInteger(9, messages.pts); state3.bindInteger(10, message.date); state3.step(); @@ -5157,7 +5164,7 @@ public class MessagesStorage { } data.reuse(); - if (load_type == 0 && message.reply_markup != null && (!message.reply_markup.selective || message.mentioned)) { + if (load_type == 0 && isValidKeyboardToSave(message)) { if (botKeyboard == null || botKeyboard.id < message.id) { botKeyboard = message; } @@ -5338,7 +5345,7 @@ public class MessagesStorage { dialogs.dialogs.add(dialog); NativeByteBuffer data = new NativeByteBuffer(cursor.byteArrayLength(4)); - if (data != null && cursor.byteBufferValue(4, data) != 0) { + if (cursor.byteBufferValue(4, data) != 0) { TLRPC.Message message = TLRPC.Message.TLdeserialize(data, data.readInt32(false), false); if (message != null) { MessageObject.setUnreadFlags(message, cursor.intValue(5)); @@ -5413,7 +5420,7 @@ public class MessagesStorage { cursor = database.queryFinalized(String.format(Locale.US, "SELECT data, mid, date, uid FROM messages WHERE mid IN(%s)", TextUtils.join(",", replyMessages))); while (cursor.next()) { NativeByteBuffer data = new NativeByteBuffer(cursor.byteArrayLength(0)); - if (data != null && cursor.byteBufferValue(0, data) != 0) { + if (cursor.byteBufferValue(0, data) != 0) { TLRPC.Message message = TLRPC.Message.TLdeserialize(data, data.readInt32(false), false); message.id = cursor.intValue(1); message.date = cursor.intValue(2); @@ -5594,7 +5601,7 @@ public class MessagesStorage { } isMegagroup = MessageObject.isMegagroup(message); - if (message.reply_markup != null && (!message.reply_markup.selective || message.mentioned)) { + if (isValidKeyboardToSave(message)) { BotQuery.putBotKeyboard(dialog.id, message); } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/NativeLoader.java b/TMessagesProj/src/main/java/org/telegram/messenger/NativeLoader.java index 79f523711..48baf9503 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/NativeLoader.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/NativeLoader.java @@ -23,7 +23,7 @@ import java.util.zip.ZipFile; public class NativeLoader { - private final static int LIB_VERSION = 20; + private final static int LIB_VERSION = 21; private final static String LIB_NAME = "tmessages." + LIB_VERSION; private final static String LIB_SO_NAME = "lib" + LIB_NAME + ".so"; private final static String LOCALE_LIB_SO_NAME = "lib" + LIB_NAME + "loc.so"; diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/NotificationCenter.java b/TMessagesProj/src/main/java/org/telegram/messenger/NotificationCenter.java index 6a37d46ae..70c73aff6 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/NotificationCenter.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/NotificationCenter.java @@ -70,6 +70,7 @@ public class NotificationCenter { public static final int needReloadRecentDialogsSearch = totalEvents++; public static final int locationPermissionGranted = totalEvents++; public static final int peerSettingsDidLoaded = totalEvents++; + public static final int wasUnableToFindCurrentLocation = totalEvents++; public static final int httpFileDidLoaded = totalEvents++; public static final int httpFileDidFailedLoad = totalEvents++; @@ -115,6 +116,8 @@ public class NotificationCenter { private int broadcasting = 0; private boolean animationInProgress; + private int[] allowedNotifications; + public interface NotificationCenterDelegate { void didReceivedNotification(int id, Object... args); } @@ -145,6 +148,10 @@ public class NotificationCenter { return localInstance; } + public void setAllowedNotificationsDutingAnimation(int notifications[]) { + allowedNotifications = notifications; + } + public void setAnimationInProgress(boolean value) { animationInProgress = value; if (!animationInProgress && !delayedPosts.isEmpty()) { @@ -157,8 +164,13 @@ public class NotificationCenter { public void postNotificationName(int id, Object... args) { boolean allowDuringAnimation = false; - if (id == chatInfoDidLoaded || id == dialogsNeedReload || id == closeChats || id == messagesDidLoaded || id == mediaCountDidLoaded || id == mediaDidLoaded || id == botInfoDidLoaded || id == botKeyboardDidLoaded) { - allowDuringAnimation = true; + if (allowedNotifications != null) { + for (int a = 0; a < allowedNotifications.length; a++) { + if (allowedNotifications[a] == id) { + allowDuringAnimation = true; + break; + } + } } postNotificationNameInternal(id, allowDuringAnimation, args); } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/NotificationsController.java b/TMessagesProj/src/main/java/org/telegram/messenger/NotificationsController.java index 865cd616e..d911f513c 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/NotificationsController.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/NotificationsController.java @@ -380,6 +380,7 @@ public class NotificationsController { int oldCount = popupArray.size(); HashMap settingsCache = new HashMap<>(); SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Context.MODE_PRIVATE); + boolean allowPinned = preferences.getBoolean("PinnedMessages", true); int popup = 0; for (int a = 0; a < messageObjects.size(); a++) { @@ -398,6 +399,9 @@ public class NotificationsController { continue; } if (messageObject.messageOwner.mentioned) { + if (!allowPinned && messageObject.messageOwner.action instanceof TLRPC.TL_messageActionPinMessage) { + continue; + } dialog_id = messageObject.messageOwner.from_id; } if (isPersonalMessage(messageObject)) { @@ -683,7 +687,7 @@ public class NotificationsController { int chat_id = messageObject.messageOwner.to_id.chat_id != 0 ? messageObject.messageOwner.to_id.chat_id : messageObject.messageOwner.to_id.channel_id; int from_id = messageObject.messageOwner.to_id.user_id; if (from_id == 0) { - if (messageObject.isFromUser()) { + if (messageObject.isFromUser() || messageObject.getId() < 0) { from_id = messageObject.messageOwner.from_id; } else { from_id = -chat_id; @@ -725,7 +729,7 @@ public class NotificationsController { } String msg = null; - if ((int)dialog_id == 0 || AndroidUtilities.needShowPasscode(false) || UserConfig.isWaitingForPasscodeEnter) { + if ((int) dialog_id == 0 || AndroidUtilities.needShowPasscode(false) || UserConfig.isWaitingForPasscodeEnter) { msg = LocaleController.getString("YouHaveNewMessage", R.string.YouHaveNewMessage); } else { if (chat_id == 0 && from_id != 0) { @@ -787,12 +791,6 @@ public class NotificationsController { } if (singleUserId != 0) { if (messageObject.messageOwner.to_id.channel_id != 0 && !messageObject.isMegagroup()) { - TLRPC.User user = MessagesController.getInstance().getUser(singleUserId); - if (user != null) { - name = UserObject.getUserName(user); - } else { - name = ""; - } msg = LocaleController.formatString("ChannelAddedByNotification", R.string.ChannelAddedByNotification, name, chat.title); } else { if (singleUserId == UserConfig.getClientUserId()) { @@ -1513,7 +1511,7 @@ public class NotificationsController { if (silent != 1 && !notifyDisabled) { if (ApplicationLoader.mainInterfacePaused || inAppPreview) { if (lastMessage.length() > 100) { - lastMessage = lastMessage.substring(0, 100).replace("\n", " ").trim() + "..."; + lastMessage = lastMessage.substring(0, 100).replace('\n', ' ').trim() + "..."; } mBuilder.setTicker(lastMessage); } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/SecretChatHelper.java b/TMessagesProj/src/main/java/org/telegram/messenger/SecretChatHelper.java index 8878ebaaa..1420bf6aa 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/SecretChatHelper.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/SecretChatHelper.java @@ -849,6 +849,36 @@ public class SecretChatHelper { }); } + private void applyPeerLayer(final TLRPC.EncryptedChat chat, int newPeerLayer) { + int currentPeerLayer = AndroidUtilities.getPeerLayerVersion(chat.layer); + if (newPeerLayer <= currentPeerLayer) { + return; + } + if (chat.key_hash.length == 16 && currentPeerLayer >= 46) { + try { + byte[] sha256 = Utilities.computeSHA256(chat.auth_key, 0, chat.auth_key.length); + byte[] key_hash = new byte[36]; + System.arraycopy(chat.key_hash, 0, key_hash, 0, 16); + System.arraycopy(sha256, 0, key_hash, 16, 20); + chat.key_hash = key_hash; + MessagesStorage.getInstance().updateEncryptedChat(chat); + } catch (Throwable e) { + FileLog.e("tmessages", e); + } + } + chat.layer = AndroidUtilities.setPeerLayerVersion(chat.layer, newPeerLayer); + MessagesStorage.getInstance().updateEncryptedChatLayer(chat); + if (currentPeerLayer < CURRENT_SECRET_CHAT_LAYER) { + sendNotifyLayerMessage(chat, null); + } + AndroidUtilities.runOnUIThread(new Runnable() { + @Override + public void run() { + NotificationCenter.getInstance().postNotificationName(NotificationCenter.encryptedChatUpdated, chat); + } + }); + } + public TLRPC.Message processDecryptedObject(final TLRPC.EncryptedChat chat, final TLRPC.EncryptedFile file, int date, long random_id, TLObject object, boolean new_key_used) { if (object != null) { int from_id = chat.admin_id; @@ -1156,30 +1186,7 @@ public class SecretChatHelper { MessagesStorage.getInstance().createTaskForSecretChat(chat.id, time, time, 1, serviceMessage.action.random_ids); } } else if (serviceMessage.action instanceof TLRPC.TL_decryptedMessageActionNotifyLayer) { - int currentPeerLayer = AndroidUtilities.getPeerLayerVersion(chat.layer); - if (chat.key_hash.length == 16 && currentPeerLayer >= 46) { - try { - byte[] sha256 = Utilities.computeSHA256(chat.auth_key, 0, chat.auth_key.length); - byte[] key_hash = new byte[36]; - System.arraycopy(chat.key_hash, 0, key_hash, 0, 16); - System.arraycopy(sha256, 0, key_hash, 16, 20); - chat.key_hash = key_hash; - MessagesStorage.getInstance().updateEncryptedChat(chat); - } catch (Throwable e) { - FileLog.e("tmessages", e); - } - } - chat.layer = AndroidUtilities.setPeerLayerVersion(chat.layer, serviceMessage.action.layer); - MessagesStorage.getInstance().updateEncryptedChatLayer(chat); - if (currentPeerLayer < CURRENT_SECRET_CHAT_LAYER) { - sendNotifyLayerMessage(chat, null); - } - AndroidUtilities.runOnUIThread(new Runnable() { - @Override - public void run() { - NotificationCenter.getInstance().postNotificationName(NotificationCenter.encryptedChatUpdated, chat); - } - }); + applyPeerLayer(chat, serviceMessage.action.layer); } else if (serviceMessage.action instanceof TLRPC.TL_decryptedMessageActionRequestKey) { if (chat.exchange_id != 0) { if (chat.exchange_id > serviceMessage.action.exchange_id) { @@ -1374,6 +1381,7 @@ public class SecretChatHelper { for (int a = 0; a < holes.size(); a++) { TL_decryptedMessageHolder holder = holes.get(a); if (holder.layer.out_seq_no == chat.seq_in || chat.seq_in == holder.layer.out_seq_no - 2) { + applyPeerLayer(chat, holder.layer.layer); chat.seq_in = holder.layer.out_seq_no; holes.remove(a); a--; @@ -1493,6 +1501,7 @@ public class SecretChatHelper { arr.add(holder); return null; } + applyPeerLayer(chat, layer.layer); chat.seq_in = layer.out_seq_no; MessagesStorage.getInstance().updateEncryptedChatSeq(chat); object = layer.message; diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/SendMessagesHelper.java b/TMessagesProj/src/main/java/org/telegram/messenger/SendMessagesHelper.java index 35c22b854..30f1b95e0 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/SendMessagesHelper.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/SendMessagesHelper.java @@ -11,14 +11,19 @@ package org.telegram.messenger; import android.app.Activity; import android.app.AlertDialog; import android.app.ProgressDialog; +import android.content.Context; import android.content.DialogInterface; import android.graphics.Bitmap; import android.graphics.BitmapFactory; +import android.location.Location; +import android.location.LocationListener; +import android.location.LocationManager; import android.media.MediaMetadataRetriever; import android.media.MediaPlayer; import android.media.ThumbnailUtils; import android.net.Uri; import android.os.Build; +import android.os.Bundle; import android.provider.MediaStore; import android.webkit.MimeTypeMap; import android.widget.Toast; @@ -31,6 +36,7 @@ import org.telegram.tgnet.RequestDelegate; import org.telegram.tgnet.TLObject; import org.telegram.tgnet.TLRPC; import org.telegram.ui.ActionBar.BaseFragment; +import org.telegram.ui.ChatActivity; import java.io.File; import java.io.RandomAccessFile; @@ -45,6 +51,148 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter private HashMap> delayedMessages = new HashMap<>(); private HashMap unsentMessages = new HashMap<>(); private HashMap sendingMessages = new HashMap<>(); + private HashMap waitingForLocation = new HashMap<>(); + private HashMap waitingForCallback = new HashMap<>(); + + private LocationProvider locationProvider = new LocationProvider(new LocationProvider.LocationProviderDelegate() { + @Override + public void onLocationAcquired(Location location) { + sendLocation(location); + waitingForLocation.clear(); + } + + @Override + public void onUnableLocationAcquire() { + HashMap waitingForLocationCopy = new HashMap<>(waitingForLocation); + NotificationCenter.getInstance().postNotificationName(NotificationCenter.wasUnableToFindCurrentLocation, waitingForLocationCopy); + waitingForLocation.clear(); + } + }); + + public static class LocationProvider { + + public interface LocationProviderDelegate { + void onLocationAcquired(Location location); + void onUnableLocationAcquire(); + } + + private LocationProviderDelegate delegate; + private LocationManager locationManager; + private GpsLocationListener gpsLocationListener = new GpsLocationListener(); + private GpsLocationListener networkLocationListener = new GpsLocationListener(); + private Runnable locationQueryCancelRunnable; + private Location lastKnownLocation; + + private class GpsLocationListener implements LocationListener { + + @Override + public void onLocationChanged(Location location) { + if (location == null || locationQueryCancelRunnable == null) { + return; + } + FileLog.e("tmessages", "found location " + location); + lastKnownLocation = location; + if (location.getAccuracy() < 100) { + if (delegate != null) { + delegate.onLocationAcquired(location); + } + if (locationQueryCancelRunnable != null) { + AndroidUtilities.cancelRunOnUIThread(locationQueryCancelRunnable); + } + cleanup(); + } + } + + @Override + public void onStatusChanged(String provider, int status, Bundle extras) { + + } + + @Override + public void onProviderEnabled(String provider) { + + } + + @Override + public void onProviderDisabled(String provider) { + + } + } + + public LocationProvider() { + + } + + public LocationProvider(LocationProviderDelegate locationProviderDelegate) { + delegate = locationProviderDelegate; + } + + public void setDelegate(LocationProviderDelegate locationProviderDelegate) { + delegate = locationProviderDelegate; + } + + private void cleanup() { + locationManager.removeUpdates(gpsLocationListener); + locationManager.removeUpdates(networkLocationListener); + lastKnownLocation = null; + locationQueryCancelRunnable = null; + } + + public void start() { + if (locationManager == null) { + locationManager = (LocationManager) ApplicationLoader.applicationContext.getSystemService(Context.LOCATION_SERVICE); + } + try { + locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1, 0, gpsLocationListener); + } catch (Exception e) { + FileLog.e("tmessages", e); + } + try { + locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1, 0, networkLocationListener); + } catch (Exception e) { + FileLog.e("tmessages", e); + } + try { + lastKnownLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); + if (lastKnownLocation == null) { + lastKnownLocation = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); + } + } catch (Exception e) { + FileLog.e("tmessages", e); + } + if (locationQueryCancelRunnable != null) { + AndroidUtilities.cancelRunOnUIThread(locationQueryCancelRunnable); + } + locationQueryCancelRunnable = new Runnable() { + @Override + public void run() { + if (locationQueryCancelRunnable != this) { + return; + } + if (delegate != null) { + if (lastKnownLocation != null) { + delegate.onLocationAcquired(lastKnownLocation); + } else { + delegate.onUnableLocationAcquire(); + } + } + cleanup(); + } + }; + AndroidUtilities.runOnUIThread(locationQueryCancelRunnable, 5000); + } + + public void stop() { + if (locationManager == null) { + return; + } + if (locationQueryCancelRunnable != null) { + AndroidUtilities.cancelRunOnUIThread(locationQueryCancelRunnable); + + } + cleanup(); + } + } protected class DelayedMessage { public TLObject sendRequest; @@ -90,7 +238,10 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter delayedMessages.clear(); unsentMessages.clear(); sendingMessages.clear(); + waitingForLocation.clear(); + waitingForCallback.clear(); currentChatInfo = null; + locationProvider.stop(); } public void setCurrentChatInfo(TLRPC.ChatFull info) { @@ -259,7 +410,7 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter for (int a = 0; a < arr.size(); a++) { final DelayedMessage message = arr.get(a); if (message.type == 0) { - String md5 = Utilities.MD5(message.httpLocation) + ".jpg"; + String md5 = Utilities.MD5(message.httpLocation) + "." + ImageLoader.getHttpUrlExtension(message.httpLocation, "file"); final File cacheFile = new File(FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE), md5); Utilities.globalQueue.postRunnable(new Runnable() { @Override @@ -455,18 +606,18 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter } if (messageObject.messageOwner.media != null && !(messageObject.messageOwner.media instanceof TLRPC.TL_messageMediaEmpty) && !(messageObject.messageOwner.media instanceof TLRPC.TL_messageMediaWebPage)) { if (messageObject.messageOwner.media.photo instanceof TLRPC.TL_photo) { - sendMessage((TLRPC.TL_photo) messageObject.messageOwner.media.photo, null, did, messageObject.replyMessageObject, asAdmin, null); + sendMessage((TLRPC.TL_photo) messageObject.messageOwner.media.photo, null, did, messageObject.replyMessageObject, asAdmin, null, null); } else if (messageObject.messageOwner.media.document instanceof TLRPC.TL_document) { - sendMessage((TLRPC.TL_document) messageObject.messageOwner.media.document, null, messageObject.messageOwner.attachPath, did, messageObject.replyMessageObject, asAdmin, null); + sendMessage((TLRPC.TL_document) messageObject.messageOwner.media.document, null, messageObject.messageOwner.attachPath, did, messageObject.replyMessageObject, asAdmin, null, null); } else if (messageObject.messageOwner.media instanceof TLRPC.TL_messageMediaVenue || messageObject.messageOwner.media instanceof TLRPC.TL_messageMediaGeo) { - sendMessage(messageObject.messageOwner.media, did, messageObject.replyMessageObject, asAdmin); + sendMessage(messageObject.messageOwner.media, did, messageObject.replyMessageObject, asAdmin, null, null); } else if (messageObject.messageOwner.media.phone_number != null) { TLRPC.User user = new TLRPC.TL_userContact_old2(); user.phone = messageObject.messageOwner.media.phone_number; user.first_name = messageObject.messageOwner.media.first_name; user.last_name = messageObject.messageOwner.media.last_name; user.id = messageObject.messageOwner.media.user_id; - sendMessage(user, did, messageObject.replyMessageObject, asAdmin); + sendMessage(user, did, messageObject.replyMessageObject, asAdmin, null, null); } else { ArrayList arrayList = new ArrayList<>(); arrayList.add(messageObject); @@ -477,7 +628,7 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter if (messageObject.messageOwner.media instanceof TLRPC.TL_messageMediaWebPage) { webPage = messageObject.messageOwner.media.webpage; } - sendMessage(messageObject.messageOwner.message, did, messageObject.replyMessageObject, webPage, true, asAdmin, messageObject.messageOwner.entities, null); + sendMessage(messageObject.messageOwner.message, did, messageObject.replyMessageObject, webPage, true, asAdmin, messageObject.messageOwner.entities, null, null); } else { ArrayList arrayList = new ArrayList<>(); arrayList.add(messageObject); @@ -528,34 +679,8 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter } } } - for (int a = 0; a < document.attributes.size(); a++) { - TLRPC.DocumentAttribute attribute = document.attributes.get(a); - if (attribute instanceof TLRPC.TL_documentAttributeSticker) { - if (AndroidUtilities.getPeerLayerVersion(encryptedChat.layer) < 46) { - document.attributes.remove(a); - document.attributes.add(new TLRPC.TL_documentAttributeSticker_old()); - } else { - if (attribute.stickerset != null) { - String name = StickersQuery.getStickerSetName(attribute.stickerset.id); - if (name != null && name.length() > 0) { - attribute.stickerset = new TLRPC.TL_inputStickerSetShortName(); - attribute.stickerset.short_name = name; - } else { - attribute.stickerset = new TLRPC.TL_inputStickerSetEmpty(); - } - } else { - attribute.stickerset = new TLRPC.TL_inputStickerSetEmpty(); - } - } - break; - } - } } - SendMessagesHelper.getInstance().sendMessage((TLRPC.TL_document) document, null, null, peer, replyingMessageObject, asAdmin, null); - } - - public void sendMessage(TLRPC.User user, long peer, MessageObject reply_to_msg, boolean asAdmin) { - sendMessage(null, null, null, null, user, null, peer, null, reply_to_msg, null, true, asAdmin, null, null, null); + SendMessagesHelper.getInstance().sendMessage((TLRPC.TL_document) document, null, null, peer, replyingMessageObject, asAdmin, null, null); } public void sendMessage(ArrayList messages, final long peer, boolean asAdmin) { @@ -680,6 +805,10 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter putToSendingMessages(newMsg); boolean differentDialog = false; + if (BuildVars.DEBUG_VERSION) { + FileLog.e("tmessages", "forward message user_id = " + inputPeer.user_id + " chat_id = " + inputPeer.chat_id + " channel_id = " + inputPeer.channel_id + " access_hash = " + inputPeer.access_hash); + } + if (arr.size() == 100 || a == messages.size() - 1 || a != messages.size() - 1 && messages.get(a + 1).getDialogId() != msgObj.getDialogId()) { MessagesStorage.getInstance().putMessages(new ArrayList<>(arr), false, true, false, 0); MessagesController.getInstance().updateInterfaceWithMessages(peer, objArr); @@ -688,9 +817,16 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter TLRPC.TL_messages_forwardMessages req = new TLRPC.TL_messages_forwardMessages(); req.to_peer = inputPeer; - if (msgObj.messageOwner.to_id instanceof TLRPC.TL_peerChannel) { - req.from_peer = MessagesController.getInputPeer(-msgObj.messageOwner.to_id.channel_id); + if (req.to_peer instanceof TLRPC.TL_inputPeerChannel) { req.silent = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE).getBoolean("silent_" + peer, false); + } + if (msgObj.messageOwner.to_id instanceof TLRPC.TL_peerChannel) { + TLRPC.Chat chat = MessagesController.getInstance().getChat(msgObj.messageOwner.to_id.channel_id); + req.from_peer = new TLRPC.TL_inputPeerChannel(); + req.from_peer.channel_id = msgObj.messageOwner.to_id.channel_id; + if (chat != null) { + req.from_peer.access_hash = chat.access_hash; + } } else { req.from_peer = new TLRPC.TL_inputPeerEmpty(); } @@ -713,7 +849,8 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter for (int a = 0; a < updates.updates.size(); a++) { TLRPC.Update update = updates.updates.get(a); if (update instanceof TLRPC.TL_updateMessageID) { - newMessagesByIds.put(update.id, update.random_id); + TLRPC.TL_updateMessageID updateMessageID = (TLRPC.TL_updateMessageID) update; + newMessagesByIds.put(updateMessageID.id, updateMessageID.random_id); updates.updates.remove(a); a--; } @@ -815,12 +952,12 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter progressDialog.setCanceledOnTouchOutside(false); progressDialog.setCancelable(false); - TLRPC.TL_channels_editMessage req = new TLRPC.TL_channels_editMessage(); - req.channel = MessagesController.getInputChannel(messageObject.messageOwner.to_id.channel_id); + TLRPC.TL_messages_editMessage req = new TLRPC.TL_messages_editMessage(); + req.peer = MessagesController.getInputPeer((int) messageObject.getDialogId()); req.message = message; + req.flags |= 2048; req.id = messageObject.getId(); req.no_webpage = !searchLinks; - FileLog.d("tmessages", "try to edit message " + req.id + " in channel " + req.channel.channel_id + " hash " + req.channel.access_hash + " message " + req.message); final int reqId = ConnectionsManager.getInstance().sendRequest(req, new RequestDelegate() { @Override public void run(TLObject response, TLRPC.TL_error error) { @@ -872,31 +1009,104 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter } } + private void sendLocation(Location location) { + TLRPC.TL_messageMediaGeo mediaGeo = new TLRPC.TL_messageMediaGeo(); + mediaGeo.geo = new TLRPC.TL_geoPoint(); + mediaGeo.geo.lat = location.getLatitude(); + mediaGeo.geo._long = location.getLongitude(); + for (HashMap.Entry entry : waitingForLocation.entrySet()) { + MessageObject messageObject = entry.getValue(); + SendMessagesHelper.getInstance().sendMessage(mediaGeo, messageObject.getDialogId(), messageObject, false, null, null); + } + } + + public void sendCurrentLocation(final MessageObject messageObject, final TLRPC.KeyboardButton button) { + final String key = messageObject.getId() + "_" + Utilities.bytesToHex(button.data); + waitingForLocation.put(key, messageObject); + locationProvider.start(); + } + + public boolean isSendingCurrentLocation(MessageObject messageObject, TLRPC.KeyboardButton button) { + return !(messageObject == null || button == null) && waitingForLocation.containsKey(messageObject.getId() + "_" + Utilities.bytesToHex(button.data)); + } + + public void sendCallback(final MessageObject messageObject, final TLRPC.KeyboardButton button, final ChatActivity parentFragment) { + if (messageObject == null || button == null || parentFragment == null) { + return; + } + final String key = messageObject.getId() + "_" + Utilities.bytesToHex(button.data); + waitingForCallback.put(key, messageObject); + TLRPC.TL_messages_getBotCallbackAnswer req = new TLRPC.TL_messages_getBotCallbackAnswer(); + req.peer = MessagesController.getInputPeer((int) messageObject.getDialogId()); + req.msg_id = messageObject.getId(); + req.data = button.data; + ConnectionsManager.getInstance().sendRequest(req, new RequestDelegate() { + @Override + public void run(final TLObject response, TLRPC.TL_error error) { + AndroidUtilities.runOnUIThread(new Runnable() { + @Override + public void run() { + if (response != null) { + TLRPC.TL_messages_botCallbackAnswer res = (TLRPC.TL_messages_botCallbackAnswer) response; + if (res.message != null) { + if (res.alert) { + if (parentFragment.getParentActivity() == null) { + return; + } + AlertDialog.Builder builder = new AlertDialog.Builder(parentFragment.getParentActivity()); + builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); + builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), null); + builder.setMessage(res.message); + parentFragment.showDialog(builder.create()); + } else { + int uid = messageObject.messageOwner.from_id; + if (messageObject.messageOwner.via_bot_id != 0) { + uid = messageObject.messageOwner.via_bot_id; + } + TLRPC.User user = MessagesController.getInstance().getUser(uid); + if (user == null) { + return; + } + parentFragment.showAlert(user, res.message); + } + } + } + waitingForCallback.remove(key); + } + }); + } + }, ConnectionsManager.RequestFlagFailOnServerErrors); + } + + public boolean isSendingCallback(MessageObject messageObject, TLRPC.KeyboardButton button) { + return !(messageObject == null || button == null) && waitingForCallback.containsKey(messageObject.getId() + "_" + Utilities.bytesToHex(button.data)); + } + public void sendMessage(MessageObject retryMessageObject, boolean asAdmin) { - sendMessage(null, null, null, null, null, null, retryMessageObject.getDialogId(), retryMessageObject.messageOwner.attachPath, null, null, true, asAdmin, retryMessageObject, null, retryMessageObject.messageOwner.params); + sendMessage(null, null, null, null, null, null, retryMessageObject.getDialogId(), retryMessageObject.messageOwner.attachPath, null, null, true, asAdmin, retryMessageObject, null, retryMessageObject.messageOwner.reply_markup, retryMessageObject.messageOwner.params); } - public void sendMessage(TLRPC.TL_document document, VideoEditedInfo videoEditedInfo, String path, long peer, MessageObject reply_to_msg, boolean asAdmin, HashMap params) { - sendMessage(null, null, null, videoEditedInfo, null, document, peer, path, reply_to_msg, null, true, asAdmin, null, null, params); + public void sendMessage(TLRPC.User user, long peer, MessageObject reply_to_msg, boolean asAdmin, TLRPC.ReplyMarkup replyMarkup, HashMap params) { + sendMessage(null, null, null, null, user, null, peer, null, reply_to_msg, null, true, asAdmin, null, null, replyMarkup, params); } - public void sendMessage(String message, long peer, MessageObject reply_to_msg, TLRPC.WebPage webPage, boolean searchLinks, boolean asAdmin, ArrayList entities, HashMap params) { - sendMessage(message, null, null, null, null, null, peer, null, reply_to_msg, webPage, searchLinks, asAdmin, null, entities, params); + public void sendMessage(TLRPC.TL_document document, VideoEditedInfo videoEditedInfo, String path, long peer, MessageObject reply_to_msg, boolean asAdmin, TLRPC.ReplyMarkup replyMarkup, HashMap params) { + sendMessage(null, null, null, videoEditedInfo, null, document, peer, path, reply_to_msg, null, true, asAdmin, null, null, replyMarkup, params); } - public void sendMessage(TLRPC.MessageMedia location, long peer, MessageObject reply_to_msg, boolean asAdmin) { - sendMessage(null, location, null, null, null, null, peer, null, reply_to_msg, null, true, asAdmin, null, null, null); + public void sendMessage(String message, long peer, MessageObject reply_to_msg, TLRPC.WebPage webPage, boolean searchLinks, boolean asAdmin, ArrayList entities, TLRPC.ReplyMarkup replyMarkup, HashMap params) { + sendMessage(message, null, null, null, null, null, peer, null, reply_to_msg, webPage, searchLinks, asAdmin, null, entities, replyMarkup, params); } - public void sendMessage(TLRPC.TL_photo photo, String path, long peer, MessageObject reply_to_msg, boolean asAdmin, HashMap params) { - sendMessage(null, null, photo, null, null, null, peer, path, reply_to_msg, null, true, asAdmin, null, null, params); + public void sendMessage(TLRPC.MessageMedia location, long peer, MessageObject reply_to_msg, boolean asAdmin, TLRPC.ReplyMarkup replyMarkup, HashMap params) { + sendMessage(null, location, null, null, null, null, peer, null, reply_to_msg, null, true, asAdmin, null, null, replyMarkup, params); } - /*public void sendMessage(TLRPC.TL_video video, VideoEditedInfo videoEditedInfo, String path, long peer, MessageObject reply_to_msg, boolean asAdmin, HashMap params) { - sendMessage(null, null, null, video, videoEditedInfo, null, null, null, peer, path, reply_to_msg, null, true, asAdmin, null, null, params); - }*/ + public void sendMessage(TLRPC.TL_photo photo, String path, long peer, MessageObject reply_to_msg, boolean asAdmin, TLRPC.ReplyMarkup replyMarkup, HashMap params) { + sendMessage(null, null, photo, null, null, null, peer, path, reply_to_msg, null, true, asAdmin, null, null, replyMarkup, params); + } - private void sendMessage(String message, TLRPC.MessageMedia location, TLRPC.TL_photo photo, VideoEditedInfo videoEditedInfo, TLRPC.User user, TLRPC.TL_document document, long peer, String path, MessageObject reply_to_msg, TLRPC.WebPage webPage, boolean searchLinks, boolean asAdmin, MessageObject retryMessageObject, ArrayList entities, HashMap params) { + private void sendMessage(String message, TLRPC.MessageMedia location, TLRPC.TL_photo photo, VideoEditedInfo videoEditedInfo, TLRPC.User user, TLRPC.TL_document document, long peer, String path, MessageObject reply_to_msg, TLRPC.WebPage webPage, boolean searchLinks, boolean asAdmin, MessageObject retryMessageObject, ArrayList entities, TLRPC.ReplyMarkup replyMarkup, HashMap params) { if (peer == 0) { return; } @@ -935,27 +1145,18 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter try { if (retryMessageObject != null) { newMsg = retryMessageObject.messageOwner; - if (retryMessageObject.isForwarded()) { type = 4; } else { if (retryMessageObject.type == 0) { message = newMsg.message; - if (params != null && params.containsKey("query_id")) { - type = 9; - } else { - type = 0; - } + type = 0; } else if (retryMessageObject.type == 4) { location = newMsg.media; type = 1; } else if (retryMessageObject.type == 1) { photo = (TLRPC.TL_photo) newMsg.media.photo; - if (params != null && params.containsKey("query_id")) { - type = 9; - } else { - type = 2; - } + type = 2; } else if (retryMessageObject.type == 3) { type = 3; document = (TLRPC.TL_document) newMsg.media.document; @@ -966,17 +1167,16 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter user.last_name = newMsg.media.last_name; user.id = newMsg.media.user_id; type = 6; - } else if (retryMessageObject.type == 8 || retryMessageObject.type == 9 || retryMessageObject.type == 13) { + } else if (retryMessageObject.type == 8 || retryMessageObject.type == 9 || retryMessageObject.type == 13 || retryMessageObject.type == 14) { document = (TLRPC.TL_document) newMsg.media.document; - if (params != null && params.containsKey("query_id")) { - type = 9; - } else { - type = 7; - } + type = 7; } else if (retryMessageObject.type == 2) { document = (TLRPC.TL_document) newMsg.media.document; type = 8; } + if (params != null && params.containsKey("query_id")) { + type = 9; + } } } else { if (message != null) { @@ -1017,7 +1217,11 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter } newMsg.media = location; newMsg.message = ""; - type = 1; + if (params != null && params.containsKey("query_id")) { + type = 9; + } else { + type = 1; + } } else if (photo != null) { if (encryptedChat != null && AndroidUtilities.getPeerLayerVersion(encryptedChat.layer) >= 17) { newMsg = new TLRPC.TL_message_secret(); @@ -1057,7 +1261,11 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter user.last_name = newMsg.media.last_name = ""; } newMsg.message = ""; - type = 6; + if (params != null && params.containsKey("query_id")) { + type = 9; + } else { + type = 6; + } } else if (document != null) { if (encryptedChat != null && AndroidUtilities.getPeerLayerVersion(encryptedChat.layer) >= 17) { newMsg = new TLRPC.TL_message_secret(); @@ -1067,12 +1275,12 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter newMsg.media = new TLRPC.TL_messageMediaDocument(); newMsg.media.caption = document.caption != null ? document.caption : ""; newMsg.media.document = document; - if (MessageObject.isVideoDocument(document)) { + if (params != null && params.containsKey("query_id")) { + type = 9; + } else if (MessageObject.isVideoDocument(document)) { type = 3; } else if (MessageObject.isVoiceDocument(document)) { type = 8; - } else if (params != null && params.containsKey("query_id")) { - type = 9; } else { type = 7; } @@ -1086,6 +1294,30 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter } else { newMsg.attachPath = path; } + if (encryptedChat != null && MessageObject.isStickerDocument(document)) { + for (int a = 0; a < document.attributes.size(); a++) { + TLRPC.DocumentAttribute attribute = document.attributes.get(a); + if (attribute instanceof TLRPC.TL_documentAttributeSticker) { + if (AndroidUtilities.getPeerLayerVersion(encryptedChat.layer) < 46) { + document.attributes.remove(a); + document.attributes.add(new TLRPC.TL_documentAttributeSticker_old()); + } else { + if (attribute.stickerset != null) { + String name = StickersQuery.getStickerSetName(attribute.stickerset.id); + if (name != null && name.length() > 0) { + attribute.stickerset = new TLRPC.TL_inputStickerSetShortName(); + attribute.stickerset.short_name = name; + } else { + attribute.stickerset = new TLRPC.TL_inputStickerSetEmpty(); + } + } else { + attribute.stickerset = new TLRPC.TL_inputStickerSetEmpty(); + } + } + break; + } + } + } } if (newMsg.attachPath == null) { newMsg.attachPath = ""; @@ -1146,6 +1378,10 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter } newMsg.reply_to_msg_id = reply_to_msg.getId(); } + if (replyMarkup != null && encryptedChat == null) { + newMsg.flags |= TLRPC.MESSAGE_FLAG_HAS_MARKUP; + newMsg.reply_markup = replyMarkup; + } if (lower_id != 0) { if (high_id == 1) { if (currentChatInfo == null) { @@ -1225,6 +1461,12 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter MessagesController.getInstance().updateInterfaceWithMessages(peer, objArr); NotificationCenter.getInstance().postNotificationName(NotificationCenter.dialogsNeedReload); + if (BuildVars.DEBUG_VERSION) { + if (sendToPeer != null) { + FileLog.e("tmessages", "send message user_id = " + sendToPeer.user_id + " chat_id = " + sendToPeer.chat_id + " channel_id = " + sendToPeer.channel_id + " access_hash = " + sendToPeer.access_hash); + } + } + if (type == 0 || type == 9 && message != null && encryptedChat != null) { if (encryptedChat == null) { if (sendToPeers != null) { @@ -1524,6 +1766,7 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter } else if (type == 2 || type == 9 && photo != null) { TLRPC.PhotoSize small = photo.sizes.get(0); TLRPC.PhotoSize big = photo.sizes.get(photo.sizes.size() - 1); + ImageLoader.fillPhotoSizeWithBytes(small); if (AndroidUtilities.getPeerLayerVersion(encryptedChat.layer) >= 46) { reqSend.media = new TLRPC.TL_decryptedMessageMediaPhoto(); reqSend.media.caption = photo.caption != null ? photo.caption : ""; @@ -1540,7 +1783,6 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter ((TLRPC.TL_decryptedMessageMediaPhoto_layer8) reqSend.media).thumb = new byte[0]; } } - ImageLoader.fillPhotoSizeWithBytes(small); reqSend.media.thumb_h = small.h; reqSend.media.thumb_w = small.w; reqSend.media.w = big.w; @@ -1747,7 +1989,12 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter TLRPC.TL_messages_forwardMessages reqSend = new TLRPC.TL_messages_forwardMessages(); reqSend.to_peer = sendToPeer; if (retryMessageObject.messageOwner.ttl != 0) { - reqSend.from_peer = MessagesController.getInputPeer(retryMessageObject.messageOwner.ttl); + TLRPC.Chat chat = MessagesController.getInstance().getChat(-retryMessageObject.messageOwner.ttl); + reqSend.from_peer = new TLRPC.TL_inputPeerChannel(); + reqSend.from_peer.channel_id = -retryMessageObject.messageOwner.ttl; + if (chat != null) { + reqSend.from_peer.access_hash = chat.access_hash; + } } else { reqSend.from_peer = new TLRPC.TL_inputPeerEmpty(); } @@ -1797,13 +2044,23 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter if (message.type == 0) { if (message.httpLocation != null) { putToDelayedMessages(message.httpLocation, message); - ImageLoader.getInstance().loadHttpFile(message.httpLocation, "jpg"); + ImageLoader.getInstance().loadHttpFile(message.httpLocation, "file"); } else { - String location = FileLoader.getPathToAttach(message.location, true).toString(); - putToDelayedMessages(location, message); if (message.sendRequest != null) { + String location = FileLoader.getPathToAttach(message.location).toString(); + putToDelayedMessages(location, message); FileLoader.getInstance().uploadFile(location, false, true); } else { + String location = FileLoader.getPathToAttach(message.location).toString(); + if (message.sendEncryptedRequest != null && message.location.dc_id != 0) { + File file = new File(location); + if (!file.exists()) { + putToDelayedMessages(FileLoader.getAttachFileName(message.location), message); + FileLoader.getInstance().loadFile(message.location, "jpg", 0, false); + return; + } + } + putToDelayedMessages(location, message); FileLoader.getInstance().uploadFile(location, true, true); } } @@ -2139,8 +2396,10 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter size2.location = size.location; size2.size = size.size; } - } else if (MessageObject.isStickerMessage(sentMessage) && size2 != null && size2.location != null) { + } else if (size2 != null && MessageObject.isStickerMessage(sentMessage) && size2.location != null) { size.location = size2.location; + } else if (size2 != null && size2.location instanceof TLRPC.TL_fileLocationUnavailable) { + newMsg.media.document.thumb = sentMessage.media.document.thumb; } newMsg.media.document.dc_id = sentMessage.media.document.dc_id; @@ -2291,7 +2550,7 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter String name = f.getName(); String ext = ""; - int idx = path.lastIndexOf("."); + int idx = path.lastIndexOf('.'); if (idx != -1) { ext = path.substring(idx + 1); } @@ -2390,25 +2649,9 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter FileLog.e("tmessages", e); } if (bmOptions.outWidth != 0 && bmOptions.outHeight != 0 && bmOptions.outWidth <= 800 && bmOptions.outHeight <= 800) { - TLRPC.TL_documentAttributeSticker attributeSticker; - if (isEncrypted) { - int high_id = (int) (dialog_id >> 32); - TLRPC.EncryptedChat encryptedChat = MessagesController.getInstance().getEncryptedChat(high_id); - if (encryptedChat == null) { - return false; - } - if (AndroidUtilities.getPeerLayerVersion(encryptedChat.layer) >= 46) { - attributeSticker = new TLRPC.TL_documentAttributeSticker(); - attributeSticker.alt = ""; - attributeSticker.stickerset = new TLRPC.TL_inputStickerSetEmpty(); - } else { - attributeSticker = new TLRPC.TL_documentAttributeSticker_old(); - } - } else { - attributeSticker = new TLRPC.TL_documentAttributeSticker(); - attributeSticker.alt = ""; - attributeSticker.stickerset = new TLRPC.TL_inputStickerSetEmpty(); - } + TLRPC.TL_documentAttributeSticker attributeSticker = new TLRPC.TL_documentAttributeSticker(); + attributeSticker.alt = ""; + attributeSticker.stickerset = new TLRPC.TL_inputStickerSetEmpty(); document.attributes.add(attributeSticker); TLRPC.TL_documentAttributeImageSize attributeImageSize = new TLRPC.TL_documentAttributeImageSize(); attributeImageSize.w = bmOptions.outWidth; @@ -2432,7 +2675,7 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter AndroidUtilities.runOnUIThread(new Runnable() { @Override public void run() { - SendMessagesHelper.getInstance().sendMessage(documentFinal, null, pathFinal, dialog_id, reply_to_msg, asAdmin, params); + SendMessagesHelper.getInstance().sendMessage(documentFinal, null, pathFinal, dialog_id, reply_to_msg, asAdmin, null, params); } }); return true; @@ -2505,7 +2748,7 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter AndroidUtilities.runOnUIThread(new Runnable() { @Override public void run() { - SendMessagesHelper.getInstance().sendMessage(documentFinal, null, messageObject.messageOwner.attachPath, dialog_id, reply_to_msg, asAdmin, params); + SendMessagesHelper.getInstance().sendMessage(documentFinal, null, messageObject.messageOwner.attachPath, dialog_id, reply_to_msg, asAdmin, null, params); } }); } @@ -2582,74 +2825,177 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter String finalPath = null; TLRPC.TL_document document = null; TLRPC.TL_photo photo = null; - if (result instanceof TLRPC.TL_botInlineMediaResultDocument) { + if (result instanceof TLRPC.TL_botInlineMediaResult) { if (result.document != null) { if (result.document instanceof TLRPC.TL_document) { document = (TLRPC.TL_document) result.document; } - } - } else if (result instanceof TLRPC.TL_botInlineMediaResultPhoto) { - if (result.photo != null) { + } else if (result.photo != null) { if (result.photo instanceof TLRPC.TL_photo) { photo = (TLRPC.TL_photo) result.photo; } } } else { - if (result.content_url != null) { - finalPath = new File(FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE), Utilities.MD5(result.content_url) + "." + ImageLoader.getHttpUrlExtension(result.content_url, "jpg")).getAbsolutePath(); - if (result.type.equals("gif")){ - document = new TLRPC.TL_document(); - document.id = 0; - document.date = ConnectionsManager.getInstance().getCurrentTime(); - TLRPC.TL_documentAttributeFilename fileName = new TLRPC.TL_documentAttributeFilename(); - fileName.file_name = "animation.gif"; - document.attributes.add(fileName); - document.size = 0; - document.dc_id = 0; - if (finalPath.endsWith("mp4")) { - document.mime_type = "video/mp4"; - document.attributes.add(new TLRPC.TL_documentAttributeAnimated()); - } else { - document.mime_type = "image/gif"; - } - try { - Bitmap bitmap; - if (finalPath.endsWith("mp4")) { - bitmap = ThumbnailUtils.createVideoThumbnail(finalPath, MediaStore.Video.Thumbnails.MINI_KIND); - } else { - bitmap = ImageLoader.loadBitmap(finalPath, null, 90, 90, true); + File f = new File(FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE), Utilities.MD5(result.content_url) + "." + ImageLoader.getHttpUrlExtension(result.content_url, "file")); + if (f.exists()) { + finalPath = f.getAbsolutePath(); + } else { + finalPath = result.content_url; + } + switch (result.type) { + case "audio": + case "voice": + case "file": + case "video": + case "sticker": + case "gif": { + document = new TLRPC.TL_document(); + document.id = 0; + document.size = 0; + document.dc_id = 0; + document.mime_type = result.content_type; + document.date = ConnectionsManager.getInstance().getCurrentTime(); + TLRPC.TL_documentAttributeFilename fileName = new TLRPC.TL_documentAttributeFilename(); + document.attributes.add(fileName); + + switch (result.type) { + case "gif": { + fileName.file_name = "animation.gif"; + if (finalPath.endsWith("mp4")) { + document.mime_type = "video/mp4"; + document.attributes.add(new TLRPC.TL_documentAttributeAnimated()); + } else { + document.mime_type = "image/gif"; + } + try { + Bitmap bitmap; + if (finalPath.endsWith("mp4")) { + bitmap = ThumbnailUtils.createVideoThumbnail(finalPath, MediaStore.Video.Thumbnails.MINI_KIND); + } else { + bitmap = ImageLoader.loadBitmap(finalPath, null, 90, 90, true); + } + if (bitmap != null) { + document.thumb = ImageLoader.scaleAndSaveImage(bitmap, 90, 90, 55, false); + bitmap.recycle(); + } + } catch (Throwable e) { + FileLog.e("tmessages", e); + } + break; + } + case "voice": { + TLRPC.TL_documentAttributeAudio audio = new TLRPC.TL_documentAttributeAudio(); + audio.duration = result.duration; + audio.voice = true; + fileName.file_name = "audio.ogg"; + document.attributes.add(audio); + + document.thumb = new TLRPC.TL_photoSizeEmpty(); + document.thumb.type = "s"; + + break; + } + case "audio": { + TLRPC.TL_documentAttributeAudio audio = new TLRPC.TL_documentAttributeAudio(); + audio.duration = result.duration; + audio.title = result.title; + audio.flags |= 1; + if (result.description != null) { + audio.performer = result.description; + audio.flags |= 2; + } + fileName.file_name = "audio.mp3"; + document.attributes.add(audio); + + document.thumb = new TLRPC.TL_photoSizeEmpty(); + document.thumb.type = "s"; + + break; + } + case "file": { + int idx = result.content_type.indexOf('/'); + if (idx != -1) { + fileName.file_name = "file." + result.content_type.substring(idx + 1); + } else { + fileName.file_name = "file"; + } + break; + } + case "video": { + fileName.file_name = "video.mp4"; + TLRPC.TL_documentAttributeVideo attributeVideo = new TLRPC.TL_documentAttributeVideo(); + attributeVideo.w = result.w; + attributeVideo.h = result.h; + attributeVideo.duration = result.duration; + document.attributes.add(attributeVideo); + try { + String thumbPath = new File(FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE), Utilities.MD5(result.thumb_url) + "." + ImageLoader.getHttpUrlExtension(result.thumb_url, "jpg")).getAbsolutePath(); + Bitmap bitmap = ImageLoader.loadBitmap(thumbPath, null, 90, 90, true); + if (bitmap != null) { + document.thumb = ImageLoader.scaleAndSaveImage(bitmap, 90, 90, 55, false); + bitmap.recycle(); + } + } catch (Throwable e) { + FileLog.e("tmessages", e); + } + break; + } + case "sticker": { + TLRPC.TL_documentAttributeSticker attributeSticker = new TLRPC.TL_documentAttributeSticker(); + attributeSticker.alt = ""; + attributeSticker.stickerset = new TLRPC.TL_inputStickerSetEmpty(); + document.attributes.add(attributeSticker); + TLRPC.TL_documentAttributeImageSize attributeImageSize = new TLRPC.TL_documentAttributeImageSize(); + attributeImageSize.w = result.w; + attributeImageSize.h = result.h; + document.attributes.add(attributeImageSize); + fileName.file_name = "sticker.webp"; + try { + String thumbPath = new File(FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE), Utilities.MD5(result.thumb_url) + "." + ImageLoader.getHttpUrlExtension(result.thumb_url, "webp")).getAbsolutePath(); + Bitmap bitmap = ImageLoader.loadBitmap(thumbPath, null, 90, 90, true); //TODO support on old androids + if (bitmap != null) { + document.thumb = ImageLoader.scaleAndSaveImage(bitmap, 90, 90, 55, false); + bitmap.recycle(); + } + } catch (Throwable e) { + FileLog.e("tmessages", e); + } + break; + } } - if (bitmap != null) { - document.thumb = ImageLoader.scaleAndSaveImage(bitmap, 90, 90, 55, false); - bitmap.recycle(); + if (fileName.file_name == null) { + fileName.file_name = "file"; } - } catch (Exception e) { - FileLog.e("tmessages", e); + if (document.mime_type == null) { + document.mime_type = "application/octet-stream"; + } + if (document.thumb == null) { + document.thumb = new TLRPC.TL_photoSize(); + document.thumb.w = result.w; + document.thumb.h = result.h; + document.thumb.size = 0; + document.thumb.location = new TLRPC.TL_fileLocationUnavailable(); + document.thumb.type = "x"; + } + break; } - if (document.thumb == null) { - document.thumb = new TLRPC.TL_photoSize(); - document.thumb.w = result.w; - document.thumb.h = result.h; - document.thumb.size = 0; - document.thumb.location = new TLRPC.TL_fileLocationUnavailable(); - document.thumb.type = "x"; - } - } else if (result.type.equals("photo")) { - File cacheFile = new File(finalPath); - if (cacheFile.exists()) { - photo = SendMessagesHelper.getInstance().generatePhotoSizes(cacheFile.toString(), null); - } - if (photo == null) { - photo = new TLRPC.TL_photo(); - photo.date = ConnectionsManager.getInstance().getCurrentTime(); - TLRPC.TL_photoSize photoSize = new TLRPC.TL_photoSize(); - photoSize.w = result.w; - photoSize.h = result.h; - photoSize.size = 1; - photoSize.location = new TLRPC.TL_fileLocationUnavailable(); - photoSize.type = "x"; - photo.sizes.add(photoSize); + case "photo": { + if (f.exists()) { + photo = SendMessagesHelper.getInstance().generatePhotoSizes(finalPath, null); + } + if (photo == null) { + photo = new TLRPC.TL_photo(); + photo.date = ConnectionsManager.getInstance().getCurrentTime(); + TLRPC.TL_photoSize photoSize = new TLRPC.TL_photoSize(); + photoSize.w = result.w; + photoSize.h = result.h; + photoSize.size = 1; + photoSize.location = new TLRPC.TL_fileLocationUnavailable(); + photoSize.type = "x"; + photo.sizes.add(photoSize); + } + break; } } } @@ -2665,17 +3011,35 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter public void run() { if (finalDocument != null) { finalDocument.caption = result.send_message.caption; - SendMessagesHelper.getInstance().sendMessage(finalDocument, null, finalPathFinal, dialog_id, reply_to_msg, asAdmin, params); + SendMessagesHelper.getInstance().sendMessage(finalDocument, null, finalPathFinal, dialog_id, reply_to_msg, asAdmin, result.send_message.reply_markup, params); } else if (finalPhoto != null) { finalPhoto.caption = result.send_message.caption; - SendMessagesHelper.getInstance().sendMessage(finalPhoto, result.content_url, dialog_id, reply_to_msg, asAdmin, params); + SendMessagesHelper.getInstance().sendMessage(finalPhoto, result.content_url, dialog_id, reply_to_msg, asAdmin, result.send_message.reply_markup, params); } } }); } }).run(); } else if (result.send_message instanceof TLRPC.TL_botInlineMessageText) { - SendMessagesHelper.getInstance().sendMessage(result.send_message.message, dialog_id, reply_to_msg, null, !result.send_message.no_webpage, asAdmin, result.send_message.entities, params); + SendMessagesHelper.getInstance().sendMessage(result.send_message.message, dialog_id, reply_to_msg, null, !result.send_message.no_webpage, asAdmin, result.send_message.entities, result.send_message.reply_markup, params); + } else if (result.send_message instanceof TLRPC.TL_botInlineMessageMediaVenue) { + TLRPC.TL_messageMediaVenue venue = new TLRPC.TL_messageMediaVenue(); + venue.geo = result.send_message.geo; + venue.address = result.send_message.address; + venue.title = result.send_message.title; + venue.provider = result.send_message.provider; + venue.venue_id = result.send_message.venue_id; + SendMessagesHelper.getInstance().sendMessage(venue, dialog_id, reply_to_msg, asAdmin, result.send_message.reply_markup, params); + } else if (result.send_message instanceof TLRPC.TL_botInlineMessageMediaGeo) { + TLRPC.TL_messageMediaGeo location = new TLRPC.TL_messageMediaGeo(); + location.geo = result.send_message.geo; + SendMessagesHelper.getInstance().sendMessage(location, dialog_id, reply_to_msg, asAdmin, result.send_message.reply_markup, params); + } else if (result.send_message instanceof TLRPC.TL_botInlineMessageMediaContact) { + TLRPC.User user = new TLRPC.TL_user(); + user.phone = result.send_message.phone_number; + user.first_name = result.send_message.first_name; + user.last_name = result.send_message.last_name; + SendMessagesHelper.getInstance().sendMessage(user, dialog_id, reply_to_msg, asAdmin, result.send_message.reply_markup, params); } } @@ -2775,7 +3139,7 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter AndroidUtilities.runOnUIThread(new Runnable() { @Override public void run() { - SendMessagesHelper.getInstance().sendMessage(documentFinal, null, pathFinal, dialog_id, reply_to_msg, asAdmin, params); + SendMessagesHelper.getInstance().sendMessage(documentFinal, null, pathFinal, dialog_id, reply_to_msg, asAdmin, null, params); } }); } else { @@ -2825,7 +3189,7 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter AndroidUtilities.runOnUIThread(new Runnable() { @Override public void run() { - SendMessagesHelper.getInstance().sendMessage(photoFinal, needDownloadHttpFinal ? searchImage.imageUrl : null, dialog_id, reply_to_msg, asAdmin, params); + SendMessagesHelper.getInstance().sendMessage(photoFinal, needDownloadHttpFinal ? searchImage.imageUrl : null, dialog_id, reply_to_msg, asAdmin, null, params); } }); } @@ -2864,7 +3228,7 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter int count = (int) Math.ceil(textFinal.length() / 4096.0f); for (int a = 0; a < count; a++) { String mess = textFinal.substring(a * 4096, Math.min((a + 1) * 4096, textFinal.length())); - SendMessagesHelper.getInstance().sendMessage(mess, dialog_id, null, null, true, asAdmin, null, null); + SendMessagesHelper.getInstance().sendMessage(mess, dialog_id, null, null, true, asAdmin, null, null, null); } } } @@ -2973,7 +3337,7 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter AndroidUtilities.runOnUIThread(new Runnable() { @Override public void run() { - SendMessagesHelper.getInstance().sendMessage(photoFinal, null, dialog_id, reply_to_msg, asAdmin, params); + SendMessagesHelper.getInstance().sendMessage(photoFinal, null, dialog_id, reply_to_msg, asAdmin, null, params); } }); } @@ -3103,7 +3467,7 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter AndroidUtilities.runOnUIThread(new Runnable() { @Override public void run() { - SendMessagesHelper.getInstance().sendMessage(videoFinal, videoEditedInfo, finalPath, dialog_id, reply_to_msg, asAdmin, params); + SendMessagesHelper.getInstance().sendMessage(videoFinal, videoEditedInfo, finalPath, dialog_id, reply_to_msg, asAdmin, null, params); } }); } else { diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/ShareBroadcastReceiver.java b/TMessagesProj/src/main/java/org/telegram/messenger/ShareBroadcastReceiver.java new file mode 100644 index 000000000..ab6b11638 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/messenger/ShareBroadcastReceiver.java @@ -0,0 +1,29 @@ +/* + * This is the source code of Telegram for Android v. 3.x.x. + * It is licensed under GNU GPL v. 2 or later. + * You should have received a copy of the license in this archive (see LICENSE). + * + * Copyright Nikolai Kudashov, 2013-2016. + */ + +package org.telegram.messenger; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; + +public class ShareBroadcastReceiver extends BroadcastReceiver { + + @Override + public void onReceive(Context context, Intent intent) { + String url = intent.getDataString(); + if (url != null) { + Intent shareIntent = new Intent(Intent.ACTION_SEND); + shareIntent.setType("text/plain"); + shareIntent.putExtra(Intent.EXTRA_TEXT, url); + Intent chooserIntent = Intent.createChooser(shareIntent, LocaleController.getString("ShareLink", R.string.ShareLink)); + chooserIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + context.startActivity(chooserIntent); + } + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/Utilities.java b/TMessagesProj/src/main/java/org/telegram/messenger/Utilities.java index 694180579..15bf1bb2d 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/Utilities.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/Utilities.java @@ -47,7 +47,7 @@ public class Utilities { public native static void loadBitmap(String path, Bitmap bitmap, int scale, int width, int height, int stride); public native static int pinBitmap(Bitmap bitmap); - public native static int unpinBitmap(Bitmap bitmap); + public native static void unpinBitmap(Bitmap bitmap); public native static void blurBitmap(Object bitmap, int radius, int unpin, int width, int height, int stride); public native static void calcCDT(ByteBuffer hsvBuffer, int width, int height, ByteBuffer buffer); public native static boolean loadWebpImage(Bitmap bitmap, ByteBuffer buffer, int len, BitmapFactory.Options options, boolean unpin); @@ -255,8 +255,8 @@ public class Utilities { java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5"); byte[] array = md.digest(md5.getBytes()); StringBuilder sb = new StringBuilder(); - for (byte anArray : array) { - sb.append(Integer.toHexString((anArray & 0xFF) | 0x100).substring(1, 3)); + for (int a = 0; a < array.length; a++) { + sb.append(Integer.toHexString((array[a] & 0xFF) | 0x100).substring(1, 3)); } return sb.toString(); } catch (java.security.NoSuchAlgorithmException e) { diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/WearReplyReceiver.java b/TMessagesProj/src/main/java/org/telegram/messenger/WearReplyReceiver.java index 46371c2bf..911daf078 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/WearReplyReceiver.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/WearReplyReceiver.java @@ -18,6 +18,7 @@ public class WearReplyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { + ApplicationLoader.postInitApplication(); Bundle remoteInput = RemoteInput.getResultsFromIntent(intent); if (remoteInput == null) { return; @@ -31,7 +32,7 @@ public class WearReplyReceiver extends BroadcastReceiver { if (dialog_id == 0 || max_id == 0) { return; } - SendMessagesHelper.getInstance().sendMessage(text.toString(), dialog_id, null, null, true, false, null, null); + SendMessagesHelper.getInstance().sendMessage(text.toString(), dialog_id, null, null, true, false, null, null, null); MessagesController.getInstance().markDialogAsRead(dialog_id, max_id, max_id, 0, true, false); } } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/browser/Browser.java b/TMessagesProj/src/main/java/org/telegram/messenger/browser/Browser.java new file mode 100644 index 000000000..ae01ce9a2 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/messenger/browser/Browser.java @@ -0,0 +1,188 @@ +/* + * This is the source code of Telegram for Android v. 3.x.x. + * It is licensed under GNU GPL v. 2 or later. + * You should have received a copy of the license in this archive (see LICENSE). + * + * Copyright Nikolai Kudashov, 2013-2016. + */ + +package org.telegram.messenger.browser; + +import android.app.Activity; +import android.app.PendingIntent; +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.graphics.BitmapFactory; +import android.net.Uri; +import android.os.Build; +import android.os.Bundle; +import android.text.TextUtils; + +import org.telegram.messenger.ApplicationLoader; +import org.telegram.messenger.FileLog; +import org.telegram.messenger.LocaleController; +import org.telegram.messenger.MediaController; +import org.telegram.messenger.R; +import org.telegram.messenger.ShareBroadcastReceiver; +import org.telegram.messenger.support.customtabs.CustomTabsCallback; +import org.telegram.messenger.support.customtabs.CustomTabsClient; +import org.telegram.messenger.support.customtabs.CustomTabsIntent; +import org.telegram.messenger.support.customtabs.CustomTabsServiceConnection; +import org.telegram.messenger.support.customtabs.CustomTabsSession; +import org.telegram.messenger.support.customtabsclient.shared.CustomTabsHelper; +import org.telegram.messenger.support.customtabsclient.shared.ServiceConnection; +import org.telegram.messenger.support.customtabsclient.shared.ServiceConnectionCallback; +import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.LaunchActivity; + +import java.lang.ref.WeakReference; + +public class Browser { + + private static WeakReference customTabsCurrentSession; + private static CustomTabsSession customTabsSession; + private static CustomTabsClient customTabsClient; + private static CustomTabsServiceConnection customTabsServiceConnection; + private static String customTabsPackageToBind; + private static WeakReference currentCustomTabsActivity; + + private static CustomTabsSession getCurrentSession() { + return customTabsCurrentSession == null ? null : customTabsCurrentSession.get(); + } + + private static void setCurrentSession(CustomTabsSession session) { + customTabsCurrentSession = new WeakReference<>(session); + } + + private static CustomTabsSession getSession() { + if (customTabsClient == null) { + customTabsSession = null; + } else if (customTabsSession == null) { + customTabsSession = customTabsClient.newSession(new NavigationCallback()); + setCurrentSession(customTabsSession); + } + return customTabsSession; + } + + public static void bindCustomTabsService(Activity activity) { + if (Build.VERSION.SDK_INT < 15) { + return; + } + Activity currentActivity = currentCustomTabsActivity == null ? null : currentCustomTabsActivity.get(); + if (currentActivity != null && currentActivity != activity) { + unbindCustomTabsService(currentActivity); + } + if (customTabsClient != null) { + return; + } + currentCustomTabsActivity = new WeakReference<>(activity); + try { + if (TextUtils.isEmpty(customTabsPackageToBind)) { + customTabsPackageToBind = CustomTabsHelper.getPackageNameToUse(activity); + if (customTabsPackageToBind == null) { + return; + } + } + customTabsServiceConnection = new ServiceConnection(new ServiceConnectionCallback() { + @Override + public void onServiceConnected(CustomTabsClient client) { + customTabsClient = client; + if (customTabsClient != null) { + customTabsClient.warmup(0); + } + } + + @Override + public void onServiceDisconnected() { + customTabsClient = null; + } + }); + if (!CustomTabsClient.bindCustomTabsService(activity, customTabsPackageToBind, customTabsServiceConnection)) { + customTabsServiceConnection = null; + } + } catch (Exception e) { + FileLog.e("tmessages", e); + } + } + + public static void unbindCustomTabsService(Activity activity) { + if (Build.VERSION.SDK_INT < 15 || customTabsServiceConnection == null) { + return; + } + Activity currentActivity = currentCustomTabsActivity == null ? null : currentCustomTabsActivity.get(); + if (currentActivity == activity) { + currentCustomTabsActivity.clear(); + } + try { + activity.unbindService(customTabsServiceConnection); + } catch (Exception e) { + FileLog.e("tmessages", e); + } + customTabsClient = null; + customTabsSession = null; + } + + private static class NavigationCallback extends CustomTabsCallback { + @Override + public void onNavigationEvent(int navigationEvent, Bundle extras) { + FileLog.e("tmessages", "code = " + navigationEvent + " extras " + extras); + } + } + + public static void openUrl(Context context, String url) { + openUrl(context, Uri.parse(url), true); + } + + public static void openUrl(Context context, Uri uri) { + openUrl(context, uri, true); + } + + public static void openUrl(Context context, String url, boolean allowCustom) { + if (context == null || url == null) { + return; + } + openUrl(context, Uri.parse(url), allowCustom); + } + + public static void openUrl(Context context, Uri uri, boolean allowCustom) { + if (context == null || uri == null) { + return; + } + + try { + boolean internalUri = isInternalUri(uri); + if (Build.VERSION.SDK_INT >= 15 && allowCustom && MediaController.getInstance().canCustomTabs() && !internalUri) { + Intent share = new Intent(ApplicationLoader.applicationContext, ShareBroadcastReceiver.class); + share.setAction(Intent.ACTION_SEND); + + CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder(getSession()); + builder.setToolbarColor(Theme.ACTION_BAR_COLOR); + builder.setShowTitle(true); + builder.setActionButton(BitmapFactory.decodeResource(context.getResources(), R.drawable.abc_ic_menu_share_mtrl_alpha), LocaleController.getString("ShareFile", R.string.ShareFile), PendingIntent.getBroadcast(ApplicationLoader.applicationContext, 0, share, 0), false); + CustomTabsIntent intent = builder.build(); + intent.launchUrl((Activity) context, uri); + } else { + Intent intent = new Intent(Intent.ACTION_VIEW, uri); + if (internalUri) { + ComponentName componentName = new ComponentName(context.getPackageName(), LaunchActivity.class.getName()); + intent.setComponent(componentName); + } + intent.putExtra(android.provider.Browser.EXTRA_APPLICATION_ID, context.getPackageName()); + context.startActivity(intent); + } + } catch (Exception e) { + FileLog.e("tmessages", e); + } + } + + public static boolean isInternalUrl(String url) { + return isInternalUri(Uri.parse(url)); + } + + public static boolean isInternalUri(Uri uri) { + String host = uri.getHost(); + host = host != null ? host.toLowerCase() : ""; + return "tg".equals(uri.getScheme()) || "telegram.me".equals(host) || "telegram.dog".equals(host); + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/query/SharedMediaQuery.java b/TMessagesProj/src/main/java/org/telegram/messenger/query/SharedMediaQuery.java index ee2a33f4c..2a1841784 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/query/SharedMediaQuery.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/query/SharedMediaQuery.java @@ -144,12 +144,14 @@ public class SharedMediaQuery { if (message == null) { return -1; } - if (message.media instanceof TLRPC.TL_messageMediaPhoto || MessageObject.isVideoMessage(message)) { + if (message.media instanceof TLRPC.TL_messageMediaPhoto) { return MEDIA_PHOTOVIDEO; - } else if (MessageObject.isVoiceMessage(message)) { - return MEDIA_AUDIO; } else if (message.media instanceof TLRPC.TL_messageMediaDocument) { - if (MessageObject.isStickerMessage(message)) { + if (MessageObject.isVoiceMessage(message)) { + return MEDIA_AUDIO; + } else if (MessageObject.isVideoMessage(message)) { + return MEDIA_PHOTOVIDEO; + } else if (MessageObject.isStickerMessage(message)) { return -1; } else if (MessageObject.isMusicMessage(message)) { return MEDIA_MUSIC; diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/query/StickersQuery.java b/TMessagesProj/src/main/java/org/telegram/messenger/query/StickersQuery.java index c20586648..bbc794bb2 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/query/StickersQuery.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/query/StickersQuery.java @@ -8,11 +8,7 @@ package org.telegram.messenger.query; -import android.app.AlertDialog; -import android.app.ProgressDialog; import android.content.Context; -import android.content.DialogInterface; -import android.os.Message; import android.widget.Toast; import org.telegram.SQLite.SQLiteCursor; @@ -29,8 +25,6 @@ import org.telegram.tgnet.RequestDelegate; import org.telegram.tgnet.TLObject; import org.telegram.tgnet.TLRPC; import org.telegram.messenger.Utilities; -import org.telegram.ui.ActionBar.BaseFragment; -import org.telegram.ui.Components.StickersAlert; import java.util.ArrayList; import java.util.Collections; @@ -85,6 +79,14 @@ public class StickersQuery { return document; } + public static TLRPC.TL_messages_stickerSet getStickerSetByName(String name) { + return stickerSetsByName.get(name); + } + + public static TLRPC.TL_messages_stickerSet getStickerSetById(Long id) { + return stickerSetsById.get(id); + } + public static HashMap> getAllStickers() { return allStickers; } @@ -441,100 +443,6 @@ public class StickersQuery { }); } - public static void loadStickers(final BaseFragment fragment, final TLRPC.InputStickerSet stickerSet) { - if (fragment == null || stickerSet == null) { - return; - } - - final ProgressDialog progressDialog = new ProgressDialog(fragment.getParentActivity()); - progressDialog.setMessage(LocaleController.getString("Loading", R.string.Loading)); - progressDialog.setCanceledOnTouchOutside(false); - progressDialog.setCancelable(false); - - TLRPC.TL_messages_getStickerSet req = new TLRPC.TL_messages_getStickerSet(); - req.stickerset = stickerSet; - - final int reqId = ConnectionsManager.getInstance().sendRequest(req, new RequestDelegate() { - @Override - public void run(final TLObject response, final TLRPC.TL_error error) { - AndroidUtilities.runOnUIThread(new Runnable() { - @Override - public void run() { - try { - progressDialog.dismiss(); - } catch (Exception e) { - FileLog.e("tmessages", e); - } - if (fragment.getParentActivity() != null && !fragment.getParentActivity().isFinishing()) { - if (error == null) { - final TLRPC.TL_messages_stickerSet res = (TLRPC.TL_messages_stickerSet) response; - - StickersAlert alert = new StickersAlert(fragment.getParentActivity(), res); - if (res.set == null || !StickersQuery.isStickerPackInstalled(res.set.id)) { - alert.setButton(AlertDialog.BUTTON_POSITIVE, LocaleController.getString("AddStickers", R.string.AddStickers), new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - TLRPC.TL_messages_installStickerSet req = new TLRPC.TL_messages_installStickerSet(); - req.stickerset = stickerSet; - ConnectionsManager.getInstance().sendRequest(req, new RequestDelegate() { - @Override - public void run(TLObject response, final TLRPC.TL_error error) { - AndroidUtilities.runOnUIThread(new Runnable() { - @Override - public void run() { - if (fragment.getParentActivity() != null) { - if (error == null) { - Toast.makeText(fragment.getParentActivity(), LocaleController.getString("AddStickersInstalled", R.string.AddStickersInstalled), Toast.LENGTH_SHORT).show(); - } else { - if (error.text.equals("STICKERSETS_TOO_MUCH")) { - Toast.makeText(fragment.getParentActivity(), LocaleController.getString("TooMuchStickersets", R.string.TooMuchStickersets), Toast.LENGTH_SHORT).show(); - } else { - Toast.makeText(fragment.getParentActivity(), LocaleController.getString("ErrorOccurred", R.string.ErrorOccurred), Toast.LENGTH_SHORT).show(); - } - } - } - loadStickers(false, true); - } - }); - } - }); - } - }); - } else { - alert.setButton(AlertDialog.BUTTON_NEUTRAL, LocaleController.getString("StickersRemove", R.string.StickersRemove), new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - removeStickersSet(fragment.getParentActivity(), res.set, 0); - } - }); - } - alert.setButton(AlertDialog.BUTTON_NEGATIVE, LocaleController.getString("Close", R.string.Close), (Message) null); - fragment.setVisibleDialog(alert); - alert.show(); - } else { - Toast.makeText(fragment.getParentActivity(), LocaleController.getString("AddStickersNotFound", R.string.AddStickersNotFound), Toast.LENGTH_SHORT).show(); - } - } - } - }); - } - }); - - progressDialog.setButton(DialogInterface.BUTTON_NEGATIVE, LocaleController.getString("Cancel", R.string.Cancel), new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - ConnectionsManager.getInstance().cancelRequest(reqId, true); - try { - dialog.dismiss(); - } catch (Exception e) { - FileLog.e("tmessages", e); - } - } - }); - fragment.setVisibleDialog(progressDialog); - progressDialog.show(); - } - public static void removeStickersSet(final Context context, TLRPC.StickerSet stickerSet, int hide) { TLRPC.TL_inputStickerSetID stickerSetID = new TLRPC.TL_inputStickerSetID(); stickerSetID.access_hash = stickerSet.access_hash; diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/support/customtabs/CustomTabsCallback.java b/TMessagesProj/src/main/java/org/telegram/messenger/support/customtabs/CustomTabsCallback.java new file mode 100755 index 000000000..f5cb4a320 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/messenger/support/customtabs/CustomTabsCallback.java @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.telegram.messenger.support.customtabs; + +import android.os.Bundle; + +/** + * A callback class for custom tabs client to get messages regarding events in their custom tabs. + */ +public class CustomTabsCallback { + public static final int NAVIGATION_STARTED = 1; + public static final int NAVIGATION_FINISHED = 2; + public static final int NAVIGATION_FAILED = 3; + public static final int NAVIGATION_ABORTED = 4; + public static final int TAB_SHOWN = 5; + public static final int TAB_HIDDEN = 6; + + public CustomTabsCallback() { + } + + public void onNavigationEvent(int navigationEvent, Bundle extras) { + } + + public void extraCallback(String callbackName, Bundle args) { + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/support/customtabs/CustomTabsClient.java b/TMessagesProj/src/main/java/org/telegram/messenger/support/customtabs/CustomTabsClient.java new file mode 100755 index 000000000..d80d30b54 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/messenger/support/customtabs/CustomTabsClient.java @@ -0,0 +1,87 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.telegram.messenger.support.customtabs; + +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.os.RemoteException; +import android.text.TextUtils; + +public class CustomTabsClient { + private final ICustomTabsService mService; + private final ComponentName mServiceComponentName; + + CustomTabsClient(ICustomTabsService service, ComponentName componentName) { + this.mService = service; + this.mServiceComponentName = componentName; + } + + public static boolean bindCustomTabsService(Context context, String packageName, CustomTabsServiceConnection connection) { + Intent intent = new Intent("android.support.customtabs.action.CustomTabsService"); + if (!TextUtils.isEmpty(packageName)) { + intent.setPackage(packageName); + } + + return context.bindService(intent, connection, 33); + } + + public boolean warmup(long flags) { + try { + return this.mService.warmup(flags); + } catch (RemoteException var4) { + return false; + } + } + + public CustomTabsSession newSession(final CustomTabsCallback callback) { + ICustomTabsCallback.Stub wrapper = new ICustomTabsCallback.Stub() { + public void onNavigationEvent(int navigationEvent, Bundle extras) { + if (callback != null) { + callback.onNavigationEvent(navigationEvent, extras); + } + + } + + public void extraCallback(String callbackName, Bundle args) throws RemoteException { + if (callback != null) { + callback.extraCallback(callbackName, args); + } + + } + }; + + try { + if (!this.mService.newSession(wrapper)) { + return null; + } + } catch (RemoteException var4) { + return null; + } + + return new CustomTabsSession(this.mService, wrapper, this.mServiceComponentName); + } + + public Bundle extraCommand(String commandName, Bundle args) { + try { + return this.mService.extraCommand(commandName, args); + } catch (RemoteException var4) { + return null; + } + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/support/customtabs/CustomTabsIntent.java b/TMessagesProj/src/main/java/org/telegram/messenger/support/customtabs/CustomTabsIntent.java new file mode 100755 index 000000000..16bf9526f --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/messenger/support/customtabs/CustomTabsIntent.java @@ -0,0 +1,206 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.telegram.messenger.support.customtabs; + +import android.app.Activity; +import android.app.PendingIntent; +import android.content.Context; +import android.content.Intent; +import android.graphics.Bitmap; +import android.net.Uri; +import android.os.Bundle; +import android.support.annotation.AnimRes; +import android.support.annotation.ColorInt; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.v4.app.ActivityCompat; +import android.support.v4.app.ActivityOptionsCompat; +import android.support.v4.app.BundleCompat; + +import java.util.ArrayList; + +/** + * Class holding the {@link Intent} and start bundle for a Custom Tabs Activity. + * + *

+ * Note: The constants below are public for the browser implementation's benefit. + * You are strongly encouraged to use {@link CustomTabsIntent.Builder}.

+ */ +public final class CustomTabsIntent { + public static final String EXTRA_SESSION = "android.support.customtabs.extra.SESSION"; + public static final String EXTRA_TOOLBAR_COLOR = "android.support.customtabs.extra.TOOLBAR_COLOR"; + public static final String EXTRA_ENABLE_URLBAR_HIDING = "android.support.customtabs.extra.ENABLE_URLBAR_HIDING"; + public static final String EXTRA_CLOSE_BUTTON_ICON = "android.support.customtabs.extra.CLOSE_BUTTON_ICON"; + public static final String EXTRA_TITLE_VISIBILITY_STATE = "android.support.customtabs.extra.TITLE_VISIBILITY"; + public static final int NO_TITLE = 0; + public static final int SHOW_PAGE_TITLE = 1; + public static final String EXTRA_ACTION_BUTTON_BUNDLE = "android.support.customtabs.extra.ACTION_BUTTON_BUNDLE"; + public static final String EXTRA_TOOLBAR_ITEMS = "android.support.customtabs.extra.TOOLBAR_ITEMS"; + public static final String EXTRA_SECONDARY_TOOLBAR_COLOR = "android.support.customtabs.extra.SECONDARY_TOOLBAR_COLOR"; + public static final String KEY_ICON = "android.support.customtabs.customaction.ICON"; + public static final String KEY_DESCRIPTION = "android.support.customtabs.customaction.DESCRIPTION"; + public static final String KEY_PENDING_INTENT = "android.support.customtabs.customaction.PENDING_INTENT"; + public static final String EXTRA_TINT_ACTION_BUTTON = "android.support.customtabs.extra.TINT_ACTION_BUTTON"; + public static final String EXTRA_MENU_ITEMS = "android.support.customtabs.extra.MENU_ITEMS"; + public static final String KEY_MENU_ITEM_TITLE = "android.support.customtabs.customaction.MENU_ITEM_TITLE"; + public static final String EXTRA_EXIT_ANIMATION_BUNDLE = "android.support.customtabs.extra.EXIT_ANIMATION_BUNDLE"; + public static final String EXTRA_DEFAULT_SHARE_MENU_ITEM = "android.support.customtabs.extra.SHARE_MENU_ITEM"; + public static final String KEY_ID = "android.support.customtabs.customaction.ID"; + public static final int TOOLBAR_ACTION_BUTTON_ID = 0; + private static final int MAX_TOOLBAR_ITEMS = 5; + @NonNull + public final Intent intent; + @Nullable + public final Bundle startAnimationBundle; + + public void launchUrl(Activity context, Uri url) { + this.intent.setData(url); + ActivityCompat.startActivity(context, this.intent, this.startAnimationBundle); + } + + private CustomTabsIntent(Intent intent, Bundle startAnimationBundle) { + this.intent = intent; + this.startAnimationBundle = startAnimationBundle; + } + + public static int getMaxToolbarItems() { + return 5; + } + + public static final class Builder { + private final Intent mIntent; + private ArrayList mMenuItems; + private Bundle mStartAnimationBundle; + private ArrayList mActionButtons; + + public Builder() { + this(null); + } + + public Builder(@Nullable CustomTabsSession session) { + this.mIntent = new Intent("android.intent.action.VIEW"); + this.mMenuItems = null; + this.mStartAnimationBundle = null; + this.mActionButtons = null; + if (session != null) { + this.mIntent.setPackage(session.getComponentName().getPackageName()); + } + + Bundle bundle = new Bundle(); + BundleCompat.putBinder(bundle, "android.support.customtabs.extra.SESSION", session == null ? null : session.getBinder()); + this.mIntent.putExtras(bundle); + } + + public CustomTabsIntent.Builder setToolbarColor(@ColorInt int color) { + this.mIntent.putExtra("android.support.customtabs.extra.TOOLBAR_COLOR", color); + return this; + } + + public CustomTabsIntent.Builder enableUrlBarHiding() { + this.mIntent.putExtra("android.support.customtabs.extra.ENABLE_URLBAR_HIDING", true); + return this; + } + + public CustomTabsIntent.Builder setCloseButtonIcon(@NonNull Bitmap icon) { + this.mIntent.putExtra("android.support.customtabs.extra.CLOSE_BUTTON_ICON", icon); + return this; + } + + public CustomTabsIntent.Builder setShowTitle(boolean showTitle) { + this.mIntent.putExtra("android.support.customtabs.extra.TITLE_VISIBILITY", showTitle ? 1 : 0); + return this; + } + + public CustomTabsIntent.Builder addMenuItem(@NonNull String label, @NonNull PendingIntent pendingIntent) { + if (this.mMenuItems == null) { + this.mMenuItems = new ArrayList(); + } + + Bundle bundle = new Bundle(); + bundle.putString("android.support.customtabs.customaction.MENU_ITEM_TITLE", label); + bundle.putParcelable("android.support.customtabs.customaction.PENDING_INTENT", pendingIntent); + this.mMenuItems.add(bundle); + return this; + } + + public CustomTabsIntent.Builder addDefaultShareMenuItem() { + this.mIntent.putExtra("android.support.customtabs.extra.SHARE_MENU_ITEM", true); + return this; + } + + public CustomTabsIntent.Builder setActionButton(@NonNull Bitmap icon, @NonNull String description, @NonNull PendingIntent pendingIntent, boolean shouldTint) { + Bundle bundle = new Bundle(); + bundle.putInt("android.support.customtabs.customaction.ID", 0); + bundle.putParcelable("android.support.customtabs.customaction.ICON", icon); + bundle.putString("android.support.customtabs.customaction.DESCRIPTION", description); + bundle.putParcelable("android.support.customtabs.customaction.PENDING_INTENT", pendingIntent); + this.mIntent.putExtra("android.support.customtabs.extra.ACTION_BUTTON_BUNDLE", bundle); + this.mIntent.putExtra("android.support.customtabs.extra.TINT_ACTION_BUTTON", shouldTint); + return this; + } + + public CustomTabsIntent.Builder setActionButton(@NonNull Bitmap icon, @NonNull String description, @NonNull PendingIntent pendingIntent) { + return this.setActionButton(icon, description, pendingIntent, false); + } + + public CustomTabsIntent.Builder addToolbarItem(int id, @NonNull Bitmap icon, @NonNull String description, PendingIntent pendingIntent) throws IllegalStateException { + if (this.mActionButtons == null) { + this.mActionButtons = new ArrayList(); + } + + if (this.mActionButtons.size() >= 5) { + throw new IllegalStateException("Exceeded maximum toolbar item count of 5"); + } else { + Bundle bundle = new Bundle(); + bundle.putInt("android.support.customtabs.customaction.ID", id); + bundle.putParcelable("android.support.customtabs.customaction.ICON", icon); + bundle.putString("android.support.customtabs.customaction.DESCRIPTION", description); + bundle.putParcelable("android.support.customtabs.customaction.PENDING_INTENT", pendingIntent); + this.mActionButtons.add(bundle); + return this; + } + } + + public CustomTabsIntent.Builder setSecondaryToolbarColor(@ColorInt int color) { + this.mIntent.putExtra("android.support.customtabs.extra.SECONDARY_TOOLBAR_COLOR", color); + return this; + } + + public CustomTabsIntent.Builder setStartAnimations(@NonNull Context context, @AnimRes int enterResId, @AnimRes int exitResId) { + this.mStartAnimationBundle = ActivityOptionsCompat.makeCustomAnimation(context, enterResId, exitResId).toBundle(); + return this; + } + + public CustomTabsIntent.Builder setExitAnimations(@NonNull Context context, @AnimRes int enterResId, @AnimRes int exitResId) { + Bundle bundle = ActivityOptionsCompat.makeCustomAnimation(context, enterResId, exitResId).toBundle(); + this.mIntent.putExtra("android.support.customtabs.extra.EXIT_ANIMATION_BUNDLE", bundle); + return this; + } + + public CustomTabsIntent build() { + if (this.mMenuItems != null) { + this.mIntent.putParcelableArrayListExtra("android.support.customtabs.extra.MENU_ITEMS", this.mMenuItems); + } + + if (this.mActionButtons != null) { + this.mIntent.putParcelableArrayListExtra("android.support.customtabs.extra.TOOLBAR_ITEMS", this.mActionButtons); + } + + return new CustomTabsIntent(this.mIntent, this.mStartAnimationBundle); + } + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/support/customtabs/CustomTabsService.java b/TMessagesProj/src/main/java/org/telegram/messenger/support/customtabs/CustomTabsService.java new file mode 100755 index 000000000..aa60199f9 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/messenger/support/customtabs/CustomTabsService.java @@ -0,0 +1,105 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.telegram.messenger.support.customtabs; + +import android.app.Service; +import android.content.Intent; +import android.net.Uri; +import android.os.Bundle; +import android.os.IBinder; +import android.os.IBinder.DeathRecipient; +import android.os.RemoteException; +import android.support.v4.util.ArrayMap; + +import java.util.List; +import java.util.Map; +import java.util.NoSuchElementException; + +public abstract class CustomTabsService extends Service { + public static final String ACTION_CUSTOM_TABS_CONNECTION = "android.support.customtabs.action.CustomTabsService"; + public static final String KEY_URL = "android.support.customtabs.otherurls.URL"; + private final Map mDeathRecipientMap = new ArrayMap(); + private ICustomTabsService.Stub mBinder = new ICustomTabsService.Stub() { + public boolean warmup(long flags) { + return CustomTabsService.this.warmup(flags); + } + + public boolean newSession(ICustomTabsCallback callback) { + final CustomTabsSessionToken sessionToken = new CustomTabsSessionToken(callback); + + try { + DeathRecipient e = new DeathRecipient() { + public void binderDied() { + CustomTabsService.this.cleanUpSession(sessionToken); + } + }; + synchronized (CustomTabsService.this.mDeathRecipientMap) { + callback.asBinder().linkToDeath(e, 0); + CustomTabsService.this.mDeathRecipientMap.put(callback.asBinder(), e); + } + + return CustomTabsService.this.newSession(sessionToken); + } catch (RemoteException var7) { + return false; + } + } + + public boolean mayLaunchUrl(ICustomTabsCallback callback, Uri url, Bundle extras, List otherLikelyBundles) { + return CustomTabsService.this.mayLaunchUrl(new CustomTabsSessionToken(callback), url, extras, otherLikelyBundles); + } + + public Bundle extraCommand(String commandName, Bundle args) { + return CustomTabsService.this.extraCommand(commandName, args); + } + + public boolean updateVisuals(ICustomTabsCallback callback, Bundle bundle) { + return CustomTabsService.this.updateVisuals(new CustomTabsSessionToken(callback), bundle); + } + }; + + public CustomTabsService() { + } + + public IBinder onBind(Intent intent) { + return this.mBinder; + } + + protected boolean cleanUpSession(CustomTabsSessionToken sessionToken) { + try { + Map e = this.mDeathRecipientMap; + synchronized (this.mDeathRecipientMap) { + IBinder binder = sessionToken.getCallbackBinder(); + DeathRecipient deathRecipient = this.mDeathRecipientMap.get(binder); + binder.unlinkToDeath(deathRecipient, 0); + this.mDeathRecipientMap.remove(binder); + return true; + } + } catch (NoSuchElementException var7) { + return false; + } + } + + protected abstract boolean warmup(long var1); + + protected abstract boolean newSession(CustomTabsSessionToken var1); + + protected abstract boolean mayLaunchUrl(CustomTabsSessionToken var1, Uri var2, Bundle var3, List var4); + + protected abstract Bundle extraCommand(String var1, Bundle var2); + + protected abstract boolean updateVisuals(CustomTabsSessionToken var1, Bundle var2); +} diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/support/customtabs/CustomTabsServiceConnection.java b/TMessagesProj/src/main/java/org/telegram/messenger/support/customtabs/CustomTabsServiceConnection.java new file mode 100755 index 000000000..7998b02dd --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/messenger/support/customtabs/CustomTabsServiceConnection.java @@ -0,0 +1,33 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.telegram.messenger.support.customtabs; + +import android.content.ComponentName; +import android.content.ServiceConnection; +import android.os.IBinder; + +public abstract class CustomTabsServiceConnection implements ServiceConnection { + public CustomTabsServiceConnection() { + } + + public final void onServiceConnected(final ComponentName name, IBinder service) { + this.onCustomTabsServiceConnected(name, new CustomTabsClient(ICustomTabsService.Stub.asInterface(service), name) { + }); + } + + public abstract void onCustomTabsServiceConnected(ComponentName var1, CustomTabsClient var2); +} diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/support/customtabs/CustomTabsSession.java b/TMessagesProj/src/main/java/org/telegram/messenger/support/customtabs/CustomTabsSession.java new file mode 100755 index 000000000..a84755a4f --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/messenger/support/customtabs/CustomTabsSession.java @@ -0,0 +1,79 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.telegram.messenger.support.customtabs; + +import android.content.ComponentName; +import android.graphics.Bitmap; +import android.net.Uri; +import android.os.Bundle; +import android.os.IBinder; +import android.os.RemoteException; +import android.support.annotation.NonNull; + +import java.util.List; + +/** + * A class to be used for Custom Tabs related communication. Clients that want to launch Custom Tabs + * can use this class exclusively to handle all related communication. + */ +public final class CustomTabsSession { + private static final String TAG = "CustomTabsSession"; + private final ICustomTabsService mService; + private final ICustomTabsCallback mCallback; + private final ComponentName mComponentName; + + CustomTabsSession(ICustomTabsService service, ICustomTabsCallback callback, ComponentName componentName) { + this.mService = service; + this.mCallback = callback; + this.mComponentName = componentName; + } + + public boolean mayLaunchUrl(Uri url, Bundle extras, List otherLikelyBundles) { + try { + return this.mService.mayLaunchUrl(this.mCallback, url, extras, otherLikelyBundles); + } catch (RemoteException var5) { + return false; + } + } + + public boolean setActionButton(@NonNull Bitmap icon, @NonNull String description) { + return this.setToolbarItem(0, icon, description); + } + + public boolean setToolbarItem(int id, @NonNull Bitmap icon, @NonNull String description) { + Bundle bundle = new Bundle(); + bundle.putInt("android.support.customtabs.customaction.ID", id); + bundle.putParcelable("android.support.customtabs.customaction.ICON", icon); + bundle.putString("android.support.customtabs.customaction.DESCRIPTION", description); + Bundle metaBundle = new Bundle(); + metaBundle.putBundle("android.support.customtabs.extra.ACTION_BUTTON_BUNDLE", bundle); + + try { + return this.mService.updateVisuals(this.mCallback, metaBundle); + } catch (RemoteException var7) { + return false; + } + } + + IBinder getBinder() { + return this.mCallback.asBinder(); + } + + ComponentName getComponentName() { + return this.mComponentName; + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/support/customtabs/CustomTabsSessionToken.java b/TMessagesProj/src/main/java/org/telegram/messenger/support/customtabs/CustomTabsSessionToken.java new file mode 100755 index 000000000..007081773 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/messenger/support/customtabs/CustomTabsSessionToken.java @@ -0,0 +1,75 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.telegram.messenger.support.customtabs; + +import android.content.Intent; +import android.os.Bundle; +import android.os.IBinder; +import android.os.RemoteException; +import android.support.v4.app.BundleCompat; +import android.util.Log; + +/** + * Wrapper class that can be used as a unique identifier for a session. Also contains an accessor + * for the {@link CustomTabsCallback} for the session if there was any. + */ +public class CustomTabsSessionToken { + private static final String TAG = "CustomTabsSessionToken"; + private final ICustomTabsCallback mCallbackBinder; + private final CustomTabsCallback mCallback; + + public static CustomTabsSessionToken getSessionTokenFromIntent(Intent intent) { + Bundle b = intent.getExtras(); + IBinder binder = BundleCompat.getBinder(b, "android.support.customtabs.extra.SESSION"); + return binder == null ? null : new CustomTabsSessionToken(ICustomTabsCallback.Stub.asInterface(binder)); + } + + CustomTabsSessionToken(ICustomTabsCallback callbackBinder) { + this.mCallbackBinder = callbackBinder; + this.mCallback = new CustomTabsCallback() { + public void onNavigationEvent(int navigationEvent, Bundle extras) { + try { + CustomTabsSessionToken.this.mCallbackBinder.onNavigationEvent(navigationEvent, extras); + } catch (RemoteException var4) { + Log.e("CustomTabsSessionToken", "RemoteException during ICustomTabsCallback transaction"); + } + + } + }; + } + + IBinder getCallbackBinder() { + return this.mCallbackBinder.asBinder(); + } + + public int hashCode() { + return this.getCallbackBinder().hashCode(); + } + + public boolean equals(Object o) { + if (!(o instanceof CustomTabsSessionToken)) { + return false; + } else { + CustomTabsSessionToken token = (CustomTabsSessionToken) o; + return token.getCallbackBinder().equals(this.mCallbackBinder.asBinder()); + } + } + + public CustomTabsCallback getCallback() { + return this.mCallback; + } +} \ No newline at end of file diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/support/customtabs/ICustomTabsCallback.java b/TMessagesProj/src/main/java/org/telegram/messenger/support/customtabs/ICustomTabsCallback.java new file mode 100755 index 000000000..2d311a4d5 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/messenger/support/customtabs/ICustomTabsCallback.java @@ -0,0 +1,142 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.telegram.messenger.support.customtabs; + +import android.os.Binder; +import android.os.Bundle; +import android.os.IBinder; +import android.os.IInterface; +import android.os.Parcel; +import android.os.RemoteException; + +public interface ICustomTabsCallback extends IInterface { + void onNavigationEvent(int var1, Bundle var2) throws RemoteException; + + void extraCallback(String var1, Bundle var2) throws RemoteException; + + abstract class Stub extends Binder implements ICustomTabsCallback { + private static final String DESCRIPTOR = "android.support.customtabs.ICustomTabsCallback"; + static final int TRANSACTION_onNavigationEvent = 2; + static final int TRANSACTION_extraCallback = 3; + + public Stub() { + this.attachInterface(this, "android.support.customtabs.ICustomTabsCallback"); + } + + public static ICustomTabsCallback asInterface(IBinder obj) { + if (obj == null) { + return null; + } else { + IInterface iin = obj.queryLocalInterface("android.support.customtabs.ICustomTabsCallback"); + return (iin != null && iin instanceof ICustomTabsCallback ? (ICustomTabsCallback) iin : new ICustomTabsCallback.Stub.Proxy(obj)); + } + } + + public IBinder asBinder() { + return this; + } + + public boolean onTransact(int code, Parcel data, Parcel reply, int flags) throws RemoteException { + Bundle _arg1; + switch (code) { + case 2: + data.enforceInterface("android.support.customtabs.ICustomTabsCallback"); + int _arg01 = data.readInt(); + if (0 != data.readInt()) { + _arg1 = Bundle.CREATOR.createFromParcel(data); + } else { + _arg1 = null; + } + + this.onNavigationEvent(_arg01, _arg1); + return true; + case 3: + data.enforceInterface("android.support.customtabs.ICustomTabsCallback"); + String _arg0 = data.readString(); + if (0 != data.readInt()) { + _arg1 = Bundle.CREATOR.createFromParcel(data); + } else { + _arg1 = null; + } + + this.extraCallback(_arg0, _arg1); + return true; + case 1598968902: + reply.writeString("android.support.customtabs.ICustomTabsCallback"); + return true; + default: + return super.onTransact(code, data, reply, flags); + } + } + + private static class Proxy implements ICustomTabsCallback { + private IBinder mRemote; + + Proxy(IBinder remote) { + this.mRemote = remote; + } + + public IBinder asBinder() { + return this.mRemote; + } + + public String getInterfaceDescriptor() { + return "android.support.customtabs.ICustomTabsCallback"; + } + + public void onNavigationEvent(int navigationEvent, Bundle extras) throws RemoteException { + Parcel _data = Parcel.obtain(); + + try { + _data.writeInterfaceToken("android.support.customtabs.ICustomTabsCallback"); + _data.writeInt(navigationEvent); + if (extras != null) { + _data.writeInt(1); + extras.writeToParcel(_data, 0); + } else { + _data.writeInt(0); + } + + this.mRemote.transact(2, _data, null, 1); + } finally { + _data.recycle(); + } + + } + + public void extraCallback(String callbackName, Bundle args) throws RemoteException { + Parcel _data = Parcel.obtain(); + + try { + _data.writeInterfaceToken("android.support.customtabs.ICustomTabsCallback"); + _data.writeString(callbackName); + if (args != null) { + _data.writeInt(1); + args.writeToParcel(_data, 0); + } else { + _data.writeInt(0); + } + + this.mRemote.transact(3, _data, null, 1); + } finally { + _data.recycle(); + } + + } + } + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/support/customtabs/ICustomTabsService.java b/TMessagesProj/src/main/java/org/telegram/messenger/support/customtabs/ICustomTabsService.java new file mode 100755 index 000000000..fefde3666 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/messenger/support/customtabs/ICustomTabsService.java @@ -0,0 +1,291 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.telegram.messenger.support.customtabs; + +import android.net.Uri; +import android.os.Binder; +import android.os.Bundle; +import android.os.IBinder; +import android.os.IInterface; +import android.os.Parcel; +import android.os.RemoteException; + +import java.util.ArrayList; +import java.util.List; + +public interface ICustomTabsService extends IInterface { + boolean warmup(long var1) throws RemoteException; + + boolean newSession(ICustomTabsCallback var1) throws RemoteException; + + boolean mayLaunchUrl(ICustomTabsCallback var1, Uri var2, Bundle var3, List var4) throws RemoteException; + + Bundle extraCommand(String var1, Bundle var2) throws RemoteException; + + boolean updateVisuals(ICustomTabsCallback var1, Bundle var2) throws RemoteException; + + abstract class Stub extends Binder implements ICustomTabsService { + private static final String DESCRIPTOR = "android.support.customtabs.ICustomTabsService"; + static final int TRANSACTION_warmup = 2; + static final int TRANSACTION_newSession = 3; + static final int TRANSACTION_mayLaunchUrl = 4; + static final int TRANSACTION_extraCommand = 5; + static final int TRANSACTION_updateVisuals = 6; + + public Stub() { + this.attachInterface(this, "android.support.customtabs.ICustomTabsService"); + } + + public static ICustomTabsService asInterface(IBinder obj) { + if (obj == null) { + return null; + } else { + IInterface iin = obj.queryLocalInterface("android.support.customtabs.ICustomTabsService"); + return (iin != null && iin instanceof ICustomTabsService ? (ICustomTabsService) iin : new ICustomTabsService.Stub.Proxy(obj)); + } + } + + public IBinder asBinder() { + return this; + } + + public boolean onTransact(int code, Parcel data, Parcel reply, int flags) throws RemoteException { + ICustomTabsCallback _arg0; + Bundle _arg1; + boolean _result; + Bundle _result2; + switch (code) { + case 2: + data.enforceInterface("android.support.customtabs.ICustomTabsService"); + long _arg02 = data.readLong(); + _result = this.warmup(_arg02); + reply.writeNoException(); + reply.writeInt(_result ? 1 : 0); + return true; + case 3: + data.enforceInterface("android.support.customtabs.ICustomTabsService"); + _arg0 = ICustomTabsCallback.Stub.asInterface(data.readStrongBinder()); + boolean _arg12 = this.newSession(_arg0); + reply.writeNoException(); + reply.writeInt(_arg12 ? 1 : 0); + return true; + case 4: + data.enforceInterface("android.support.customtabs.ICustomTabsService"); + _arg0 = ICustomTabsCallback.Stub.asInterface(data.readStrongBinder()); + Uri _arg11; + if (0 != data.readInt()) { + _arg11 = Uri.CREATOR.createFromParcel(data); + } else { + _arg11 = null; + } + + if (0 != data.readInt()) { + _result2 = Bundle.CREATOR.createFromParcel(data); + } else { + _result2 = null; + } + + ArrayList _arg3 = data.createTypedArrayList(Bundle.CREATOR); + boolean _result1 = this.mayLaunchUrl(_arg0, _arg11, _result2, _arg3); + reply.writeNoException(); + reply.writeInt(_result1 ? 1 : 0); + return true; + case 5: + data.enforceInterface("android.support.customtabs.ICustomTabsService"); + String _arg01 = data.readString(); + if (0 != data.readInt()) { + _arg1 = Bundle.CREATOR.createFromParcel(data); + } else { + _arg1 = null; + } + + _result2 = this.extraCommand(_arg01, _arg1); + reply.writeNoException(); + if (_result2 != null) { + reply.writeInt(1); + _result2.writeToParcel(reply, 1); + } else { + reply.writeInt(0); + } + + return true; + case 6: + data.enforceInterface("android.support.customtabs.ICustomTabsService"); + _arg0 = ICustomTabsCallback.Stub.asInterface(data.readStrongBinder()); + if (0 != data.readInt()) { + _arg1 = Bundle.CREATOR.createFromParcel(data); + } else { + _arg1 = null; + } + + _result = this.updateVisuals(_arg0, _arg1); + reply.writeNoException(); + reply.writeInt(_result ? 1 : 0); + return true; + case 1598968902: + reply.writeString("android.support.customtabs.ICustomTabsService"); + return true; + default: + return super.onTransact(code, data, reply, flags); + } + } + + private static class Proxy implements ICustomTabsService { + private IBinder mRemote; + + Proxy(IBinder remote) { + this.mRemote = remote; + } + + public IBinder asBinder() { + return this.mRemote; + } + + public String getInterfaceDescriptor() { + return "android.support.customtabs.ICustomTabsService"; + } + + public boolean warmup(long flags) throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + + boolean _result; + try { + _data.writeInterfaceToken("android.support.customtabs.ICustomTabsService"); + _data.writeLong(flags); + this.mRemote.transact(2, _data, _reply, 0); + _reply.readException(); + _result = 0 != _reply.readInt(); + } finally { + _reply.recycle(); + _data.recycle(); + } + + return _result; + } + + public boolean newSession(ICustomTabsCallback callback) throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + + boolean _result; + try { + _data.writeInterfaceToken("android.support.customtabs.ICustomTabsService"); + _data.writeStrongBinder(callback != null ? callback.asBinder() : null); + this.mRemote.transact(3, _data, _reply, 0); + _reply.readException(); + _result = 0 != _reply.readInt(); + } finally { + _reply.recycle(); + _data.recycle(); + } + + return _result; + } + + public boolean mayLaunchUrl(ICustomTabsCallback callback, Uri url, Bundle extras, List otherLikelyBundles) throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + + boolean _result; + try { + _data.writeInterfaceToken("android.support.customtabs.ICustomTabsService"); + _data.writeStrongBinder(callback != null ? callback.asBinder() : null); + if (url != null) { + _data.writeInt(1); + url.writeToParcel(_data, 0); + } else { + _data.writeInt(0); + } + + if (extras != null) { + _data.writeInt(1); + extras.writeToParcel(_data, 0); + } else { + _data.writeInt(0); + } + + _data.writeTypedList(otherLikelyBundles); + this.mRemote.transact(4, _data, _reply, 0); + _reply.readException(); + _result = 0 != _reply.readInt(); + } finally { + _reply.recycle(); + _data.recycle(); + } + + return _result; + } + + public Bundle extraCommand(String commandName, Bundle args) throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + + Bundle _result; + try { + _data.writeInterfaceToken("android.support.customtabs.ICustomTabsService"); + _data.writeString(commandName); + if (args != null) { + _data.writeInt(1); + args.writeToParcel(_data, 0); + } else { + _data.writeInt(0); + } + + this.mRemote.transact(5, _data, _reply, 0); + _reply.readException(); + if (0 != _reply.readInt()) { + _result = Bundle.CREATOR.createFromParcel(_reply); + } else { + _result = null; + } + } finally { + _reply.recycle(); + _data.recycle(); + } + + return _result; + } + + public boolean updateVisuals(ICustomTabsCallback callback, Bundle bundle) throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + + boolean _result; + try { + _data.writeInterfaceToken("android.support.customtabs.ICustomTabsService"); + _data.writeStrongBinder(callback != null ? callback.asBinder() : null); + if (bundle != null) { + _data.writeInt(1); + bundle.writeToParcel(_data, 0); + } else { + _data.writeInt(0); + } + + this.mRemote.transact(6, _data, _reply, 0); + _reply.readException(); + _result = 0 != _reply.readInt(); + } finally { + _reply.recycle(); + _data.recycle(); + } + + return _result; + } + } + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/support/customtabsclient/shared/CustomTabsHelper.java b/TMessagesProj/src/main/java/org/telegram/messenger/support/customtabsclient/shared/CustomTabsHelper.java new file mode 100755 index 000000000..e40bcd4f0 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/messenger/support/customtabsclient/shared/CustomTabsHelper.java @@ -0,0 +1,142 @@ +// Copyright 2015 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package org.telegram.messenger.support.customtabsclient.shared; + +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; +import android.net.Uri; +import android.text.TextUtils; +import android.util.Log; + +import java.util.ArrayList; +import java.util.List; + +/** + * Helper class for Custom Tabs. + */ +public class CustomTabsHelper { + private static final String TAG = "CustomTabsHelper"; + static final String STABLE_PACKAGE = "com.android.chrome"; + static final String BETA_PACKAGE = "com.chrome.beta"; + static final String DEV_PACKAGE = "com.chrome.dev"; + static final String LOCAL_PACKAGE = "com.google.android.apps.chrome"; + private static final String EXTRA_CUSTOM_TABS_KEEP_ALIVE = + "android.support.customtabs.extra.KEEP_ALIVE"; + private static final String ACTION_CUSTOM_TABS_CONNECTION = + "android.support.customtabs.action.CustomTabsService"; + + private static String sPackageNameToUse; + + private CustomTabsHelper() {} + + public static void addKeepAliveExtra(Context context, Intent intent) { + Intent keepAliveIntent = new Intent().setClassName( + context.getPackageName(), KeepAliveService.class.getCanonicalName()); + intent.putExtra(EXTRA_CUSTOM_TABS_KEEP_ALIVE, keepAliveIntent); + } + + /** + * Goes through all apps that handle VIEW intents and have a warmup service. Picks + * the one chosen by the user if there is one, otherwise makes a best effort to return a + * valid package name. + * + * This is not threadsafe. + * + * @param context {@link Context} to use for accessing {@link PackageManager}. + * @return The package name recommended to use for connecting to custom tabs related components. + */ + public static String getPackageNameToUse(Context context) { + if (sPackageNameToUse != null) return sPackageNameToUse; + + PackageManager pm = context.getPackageManager(); + // Get default VIEW intent handler. + Intent activityIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.example.com")); + ResolveInfo defaultViewHandlerInfo = pm.resolveActivity(activityIntent, 0); + String defaultViewHandlerPackageName = null; + if (defaultViewHandlerInfo != null) { + defaultViewHandlerPackageName = defaultViewHandlerInfo.activityInfo.packageName; + } + + // Get all apps that can handle VIEW intents. + List resolvedActivityList = pm.queryIntentActivities(activityIntent, 0); + List packagesSupportingCustomTabs = new ArrayList<>(); + for (ResolveInfo info : resolvedActivityList) { + Intent serviceIntent = new Intent(); + serviceIntent.setAction(ACTION_CUSTOM_TABS_CONNECTION); + serviceIntent.setPackage(info.activityInfo.packageName); + if (pm.resolveService(serviceIntent, 0) != null) { + packagesSupportingCustomTabs.add(info.activityInfo.packageName); + } + } + + // Now packagesSupportingCustomTabs contains all apps that can handle both VIEW intents + // and service calls. + if (packagesSupportingCustomTabs.isEmpty()) { + sPackageNameToUse = null; + } else if (packagesSupportingCustomTabs.size() == 1) { + sPackageNameToUse = packagesSupportingCustomTabs.get(0); + } else if (!TextUtils.isEmpty(defaultViewHandlerPackageName) + && !hasSpecializedHandlerIntents(context, activityIntent) + && packagesSupportingCustomTabs.contains(defaultViewHandlerPackageName)) { + sPackageNameToUse = defaultViewHandlerPackageName; + } else if (packagesSupportingCustomTabs.contains(STABLE_PACKAGE)) { + sPackageNameToUse = STABLE_PACKAGE; + } else if (packagesSupportingCustomTabs.contains(BETA_PACKAGE)) { + sPackageNameToUse = BETA_PACKAGE; + } else if (packagesSupportingCustomTabs.contains(DEV_PACKAGE)) { + sPackageNameToUse = DEV_PACKAGE; + } else if (packagesSupportingCustomTabs.contains(LOCAL_PACKAGE)) { + sPackageNameToUse = LOCAL_PACKAGE; + } + return sPackageNameToUse; + } + + /** + * Used to check whether there is a specialized handler for a given intent. + * @param intent The intent to check with. + * @return Whether there is a specialized handler for the given intent. + */ + private static boolean hasSpecializedHandlerIntents(Context context, Intent intent) { + try { + PackageManager pm = context.getPackageManager(); + List handlers = pm.queryIntentActivities( + intent, + PackageManager.GET_RESOLVED_FILTER); + if (handlers == null || handlers.size() == 0) { + return false; + } + for (ResolveInfo resolveInfo : handlers) { + IntentFilter filter = resolveInfo.filter; + if (filter == null) continue; + if (filter.countDataAuthorities() == 0 || filter.countDataPaths() == 0) continue; + if (resolveInfo.activityInfo == null) continue; + return true; + } + } catch (RuntimeException e) { + Log.e(TAG, "Runtime exception while getting specialized handlers"); + } + return false; + } + + /** + * @return All possible chrome package names that provide custom tabs feature. + */ + public static String[] getPackages() { + return new String[]{"", STABLE_PACKAGE, BETA_PACKAGE, DEV_PACKAGE, LOCAL_PACKAGE}; + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/support/customtabsclient/shared/KeepAliveService.java b/TMessagesProj/src/main/java/org/telegram/messenger/support/customtabsclient/shared/KeepAliveService.java new file mode 100755 index 000000000..0285190e6 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/messenger/support/customtabsclient/shared/KeepAliveService.java @@ -0,0 +1,29 @@ +// Copyright 2015 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package org.telegram.messenger.support.customtabsclient.shared; + +import android.app.Service; +import android.content.Intent; +import android.os.Binder; +import android.os.IBinder; + +public class KeepAliveService extends Service { + private static final Binder sBinder = new Binder(); + + @Override + public IBinder onBind(Intent intent) { + return sBinder; + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/support/customtabsclient/shared/ServiceConnection.java b/TMessagesProj/src/main/java/org/telegram/messenger/support/customtabsclient/shared/ServiceConnection.java new file mode 100755 index 000000000..86f1b8797 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/messenger/support/customtabsclient/shared/ServiceConnection.java @@ -0,0 +1,42 @@ +// Copyright 2015 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package org.telegram.messenger.support.customtabsclient.shared; + +import android.content.ComponentName; + +import org.telegram.messenger.support.customtabs.CustomTabsClient; +import org.telegram.messenger.support.customtabs.CustomTabsServiceConnection; + +import java.lang.ref.WeakReference; + +public class ServiceConnection extends CustomTabsServiceConnection { + private WeakReference mConnectionCallback; + + public ServiceConnection(ServiceConnectionCallback connectionCallback) { + mConnectionCallback = new WeakReference<>(connectionCallback); + } + + @Override + public void onCustomTabsServiceConnected(ComponentName name, CustomTabsClient client) { + ServiceConnectionCallback connectionCallback = mConnectionCallback.get(); + if (connectionCallback != null) connectionCallback.onServiceConnected(client); + } + + @Override + public void onServiceDisconnected(ComponentName name) { + ServiceConnectionCallback connectionCallback = mConnectionCallback.get(); + if (connectionCallback != null) connectionCallback.onServiceDisconnected(); + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/support/customtabsclient/shared/ServiceConnectionCallback.java b/TMessagesProj/src/main/java/org/telegram/messenger/support/customtabsclient/shared/ServiceConnectionCallback.java new file mode 100755 index 000000000..7f9ade6b3 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/messenger/support/customtabsclient/shared/ServiceConnectionCallback.java @@ -0,0 +1,33 @@ +// Copyright 2015 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package org.telegram.messenger.support.customtabsclient.shared; + +import org.telegram.messenger.support.customtabs.CustomTabsClient; + +/** + * Callback for events when connecting and disconnecting from Custom Tabs Service. + */ +public interface ServiceConnectionCallback { + /** + * Called when the service is connected. + * @param client a CustomTabsClient + */ + void onServiceConnected(CustomTabsClient client); + + /** + * Called when the service is disconnected. + */ + void onServiceDisconnected(); +} diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/support/widget/LinearLayoutManager.java b/TMessagesProj/src/main/java/org/telegram/messenger/support/widget/LinearLayoutManager.java index 9d83de9c5..b12110689 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/support/widget/LinearLayoutManager.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/support/widget/LinearLayoutManager.java @@ -540,7 +540,7 @@ public class LinearLayoutManager extends RecyclerView.LayoutManager implements onAnchorReady(recycler, state, mAnchorInfo, firstLayoutDirection); detachAndScrapAttachedViews(recycler); - mLayoutState.mInfinite = mOrientationHelper.getMode() == View.MeasureSpec.UNSPECIFIED; + mLayoutState.mInfinite = resolveIsInfinite(); mLayoutState.mIsPreLayout = state.isPreLayout(); if (mAnchorInfo.mLayoutFromEnd) { // fill towards start @@ -1128,7 +1128,8 @@ public class LinearLayoutManager extends RecyclerView.LayoutManager implements private void updateLayoutState(int layoutDirection, int requiredSpace, boolean canUseExistingSpace, RecyclerView.State state) { - mLayoutState.mInfinite = mOrientationHelper.getMode() == View.MeasureSpec.UNSPECIFIED; + // If parent provides a hint, don't measure unlimited. + mLayoutState.mInfinite = resolveIsInfinite(); mLayoutState.mExtra = getExtraLayoutSpace(state); mLayoutState.mLayoutDirection = layoutDirection; int scrollingOffset; @@ -1162,6 +1163,11 @@ public class LinearLayoutManager extends RecyclerView.LayoutManager implements mLayoutState.mScrollingOffset = scrollingOffset; } + boolean resolveIsInfinite() { + return mOrientationHelper.getMode() == View.MeasureSpec.UNSPECIFIED + && mOrientationHelper.getEnd() == 0; + } + int scrollBy(int dy, RecyclerView.Recycler recycler, RecyclerView.State state) { if (getChildCount() == 0 || dy == 0) { return 0; diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/support/widget/RecyclerView.java b/TMessagesProj/src/main/java/org/telegram/messenger/support/widget/RecyclerView.java index 8f224ea24..5db54056b 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/support/widget/RecyclerView.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/support/widget/RecyclerView.java @@ -59,6 +59,7 @@ import android.view.FocusFinder; import android.view.MotionEvent; import android.view.VelocityTracker; import android.view.View; +import android.view.View.MeasureSpec; import android.view.ViewConfiguration; import android.view.ViewGroup; import android.view.ViewParent; @@ -152,6 +153,9 @@ public class RecyclerView extends ViewGroup implements ScrollingView, NestedScro private static final boolean DEBUG = false; + private static final int[] NESTED_SCROLLING_ATTRS + = {16843830 /* android.R.attr.nestedScrollingEnabled */}; + /** * On Kitkat and JB MR2, there is a bug which prevents DisplayList from being invalidated if * a View is two levels deep(wrt to ViewHolder.itemView). DisplayList can be invalidated by @@ -161,8 +165,14 @@ public class RecyclerView extends ViewGroup implements ScrollingView, NestedScro */ private static final boolean FORCE_INVALIDATE_DISPLAY_LIST = Build.VERSION.SDK_INT == 18 || Build.VERSION.SDK_INT == 19 || Build.VERSION.SDK_INT == 20; + /** + * On M+, an unspecified measure spec may include a hint which we can use. On older platforms, + * this value might be garbage. To save LayoutManagers from it, RecyclerView sets the size to + * 0 when mode is unspecified. + */ + static final boolean ALLOW_SIZE_IN_UNSPECIFIED_SPEC = Build.VERSION.SDK_INT >= 23; - private static final boolean DISPATCH_TEMP_DETACH = false; + static final boolean DISPATCH_TEMP_DETACH = false; public static final int HORIZONTAL = 0; public static final int VERTICAL = 1; @@ -392,7 +402,7 @@ public class RecyclerView extends ViewGroup implements ScrollingView, NestedScro // preserved not to create a new one in each layout pass private final int[] mMinMaxLayoutPositions = new int[2]; - private final NestedScrollingChildHelper mScrollingChildHelper; + private NestedScrollingChildHelper mScrollingChildHelper; private final int[] mScrollOffset = new int[2]; private final int[] mScrollConsumed = new int[2]; private final int[] mNestedOffsets = new int[2]; @@ -485,8 +495,9 @@ public class RecyclerView extends ViewGroup implements ScrollingView, NestedScro mAccessibilityManager = (AccessibilityManager) getContext() .getSystemService(Context.ACCESSIBILITY_SERVICE); setAccessibilityDelegateCompat(new RecyclerViewAccessibilityDelegate(this)); + // Create the layoutManager if specified. - mScrollingChildHelper = new NestedScrollingChildHelper(this); + // Re-set whether nested scrolling is enabled so that it is set on all API levels setNestedScrollingEnabled(true); } @@ -568,7 +579,7 @@ public class RecyclerView extends ViewGroup implements ScrollingView, NestedScro if (className.charAt(0) == '.') { return context.getPackageName() + className; } - if (className.contains(".")) { + if (className.indexOf('.') != -1) { return className; } return RecyclerView.class.getPackage().getName() + '.' + className; @@ -1037,6 +1048,11 @@ public class RecyclerView extends ViewGroup implements ScrollingView, NestedScro @Override protected void onRestoreInstanceState(Parcelable state) { + if (!(state instanceof SavedState)) { + super.onRestoreInstanceState(state); + return; + } + mPendingSavedState = (SavedState) state; super.onRestoreInstanceState(mPendingSavedState.getSuperState()); if (mLayout != null && mPendingSavedState.mLayoutState != null) { @@ -1327,6 +1343,14 @@ public class RecyclerView extends ViewGroup implements ScrollingView, NestedScro } } + /** + * Convenience method to scroll to a certain position. + * + * RecyclerView does not implement scrolling logic, rather forwards the call to + * {@link android.support.v7.widget.RecyclerView.LayoutManager#scrollToPosition(int)} + * @param position Scroll to this adapter position + * @see android.support.v7.widget.RecyclerView.LayoutManager#scrollToPosition(int) + */ public void scrollToPosition(int position) { if (mLayoutFrozen) { return; @@ -3188,17 +3212,10 @@ public class RecyclerView extends ViewGroup implements ScrollingView, NestedScro if (count == 0) { return minPositionPreLayout != 0 || maxPositionPreLayout != 0; } - for (int i = 0; i < count; ++i) { - final ViewHolder holder = getChildViewHolderInt(mChildHelper.getChildAt(i)); - if (holder.shouldIgnore()) { - continue; - } - final int pos = holder.getLayoutPosition(); - if (pos < minPositionPreLayout || pos > maxPositionPreLayout) { - return true; - } - } - return false; + // get the new min max + findMinMaxChildLayoutPositions(mMinMaxLayoutPositions); + return mMinMaxLayoutPositions[0] != minPositionPreLayout || + mMinMaxLayoutPositions[1] != maxPositionPreLayout; } @Override @@ -5990,28 +6007,43 @@ public class RecyclerView extends ViewGroup implements ScrollingView, NestedScro * onMeasure method OR fake measure specs created by the RecyclerView. * For example, when a layout is run, RecyclerView always sets these specs to be * EXACTLY because a LayoutManager cannot resize RecyclerView during a layout pass. + *

+ * Also, to be able to use the hint in unspecified measure specs, RecyclerView checks the + * API level and sets the size to 0 pre-M to avoid any issue that might be caused by + * corrupt values. Older platforms have no responsibility to provide a size if they set + * mode to unspecified. */ - private int mWidthSpec, mHeightSpec; + private int mWidthMode, mHeightMode; + private int mWidth, mHeight; void setRecyclerView(RecyclerView recyclerView) { if (recyclerView == null) { mRecyclerView = null; mChildHelper = null; - mWidthSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.EXACTLY); - mHeightSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.EXACTLY); + mWidth = 0; + mHeight = 0; } else { mRecyclerView = recyclerView; mChildHelper = recyclerView.mChildHelper; - mWidthSpec = MeasureSpec - .makeMeasureSpec(recyclerView.getWidth(), MeasureSpec.EXACTLY); - mHeightSpec = MeasureSpec - .makeMeasureSpec(recyclerView.getHeight(), MeasureSpec.EXACTLY); + mWidth = recyclerView.getWidth(); + mHeight = recyclerView.getHeight(); } + mWidthMode = MeasureSpec.EXACTLY; + mHeightMode = MeasureSpec.EXACTLY; } void setMeasureSpecs(int wSpec, int hSpec) { - mWidthSpec = wSpec; - mHeightSpec = hSpec; + mWidth = MeasureSpec.getSize(wSpec); + mWidthMode = MeasureSpec.getMode(wSpec); + if (mWidthMode == MeasureSpec.UNSPECIFIED && !ALLOW_SIZE_IN_UNSPECIFIED_SPEC) { + mWidth = 0; + } + + mHeight = MeasureSpec.getSize(hSpec); + mHeightMode = MeasureSpec.getMode(hSpec); + if (mHeightMode == MeasureSpec.UNSPECIFIED && !ALLOW_SIZE_IN_UNSPECIFIED_SPEC) { + mHeight = 0; + } } /** @@ -7054,7 +7086,7 @@ public class RecyclerView extends ViewGroup implements ScrollingView, NestedScro * @see View#onMeasure(int, int) */ public int getWidthMode() { - return MeasureSpec.getMode(mWidthSpec); + return mWidthMode; } /** @@ -7072,7 +7104,7 @@ public class RecyclerView extends ViewGroup implements ScrollingView, NestedScro * @see View#onMeasure(int, int) */ public int getHeightMode() { - return MeasureSpec.getMode(mHeightSpec); + return mHeightMode; } /** @@ -7081,7 +7113,7 @@ public class RecyclerView extends ViewGroup implements ScrollingView, NestedScro * @return Width in pixels */ public int getWidth() { - return MeasureSpec.getSize(mWidthSpec); + return mWidth; } /** @@ -7090,7 +7122,7 @@ public class RecyclerView extends ViewGroup implements ScrollingView, NestedScro * @return Height in pixels */ public int getHeight() { - return MeasureSpec.getSize(mHeightSpec); + return mHeight; } /** @@ -7567,6 +7599,7 @@ public class RecyclerView extends ViewGroup implements ScrollingView, NestedScro } } + //noinspection WrongConstant return MeasureSpec.makeMeasureSpec(resultSize, resultMode); } @@ -9310,49 +9343,49 @@ public class RecyclerView extends ViewGroup implements ScrollingView, NestedScro @Override public void setNestedScrollingEnabled(boolean enabled) { - mScrollingChildHelper.setNestedScrollingEnabled(enabled); + getScrollingChildHelper().setNestedScrollingEnabled(enabled); } @Override public boolean isNestedScrollingEnabled() { - return mScrollingChildHelper.isNestedScrollingEnabled(); + return getScrollingChildHelper().isNestedScrollingEnabled(); } @Override public boolean startNestedScroll(int axes) { - return mScrollingChildHelper.startNestedScroll(axes); + return getScrollingChildHelper().startNestedScroll(axes); } @Override public void stopNestedScroll() { - mScrollingChildHelper.stopNestedScroll(); + getScrollingChildHelper().stopNestedScroll(); } @Override public boolean hasNestedScrollingParent() { - return mScrollingChildHelper.hasNestedScrollingParent(); + return getScrollingChildHelper().hasNestedScrollingParent(); } @Override public boolean dispatchNestedScroll(int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed, int[] offsetInWindow) { - return mScrollingChildHelper.dispatchNestedScroll(dxConsumed, dyConsumed, + return getScrollingChildHelper().dispatchNestedScroll(dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed, offsetInWindow); } @Override public boolean dispatchNestedPreScroll(int dx, int dy, int[] consumed, int[] offsetInWindow) { - return mScrollingChildHelper.dispatchNestedPreScroll(dx, dy, consumed, offsetInWindow); + return getScrollingChildHelper().dispatchNestedPreScroll(dx, dy, consumed, offsetInWindow); } @Override public boolean dispatchNestedFling(float velocityX, float velocityY, boolean consumed) { - return mScrollingChildHelper.dispatchNestedFling(velocityX, velocityY, consumed); + return getScrollingChildHelper().dispatchNestedFling(velocityX, velocityY, consumed); } @Override public boolean dispatchNestedPreFling(float velocityX, float velocityY) { - return mScrollingChildHelper.dispatchNestedPreFling(velocityX, velocityY); + return getScrollingChildHelper().dispatchNestedPreFling(velocityX, velocityY); } /** @@ -11056,4 +11089,11 @@ public class RecyclerView extends ViewGroup implements ScrollingView, NestedScro */ int onGetChildDrawingOrder(int childCount, int i); } + + private NestedScrollingChildHelper getScrollingChildHelper() { + if (mScrollingChildHelper == null) { + mScrollingChildHelper = new NestedScrollingChildHelper(this); + } + return mScrollingChildHelper; + } } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/support/widget/StaggeredGridLayoutManager.java b/TMessagesProj/src/main/java/org/telegram/messenger/support/widget/StaggeredGridLayoutManager.java index dd24ad425..f93af4fd8 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/support/widget/StaggeredGridLayoutManager.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/support/widget/StaggeredGridLayoutManager.java @@ -27,6 +27,7 @@ import android.graphics.PointF; import android.graphics.Rect; import android.os.Parcel; import android.os.Parcelable; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.view.ViewCompat; import android.support.v4.view.accessibility.AccessibilityEventCompat; @@ -110,7 +111,9 @@ public class StaggeredGridLayoutManager extends RecyclerView.LayoutManager { * Primary orientation is the layout's orientation, secondary orientation is the orientation * for spans. Having both makes code much cleaner for calculations. */ + @NonNull OrientationHelper mPrimaryOrientation; + @NonNull OrientationHelper mSecondaryOrientation; private int mOrientation; @@ -120,7 +123,8 @@ public class StaggeredGridLayoutManager extends RecyclerView.LayoutManager { */ private int mSizePerSpan; - private LayoutState mLayoutState; + @NonNull + private final LayoutState mLayoutState; private boolean mReverseLayout = false; @@ -221,6 +225,8 @@ public class StaggeredGridLayoutManager extends RecyclerView.LayoutManager { setSpanCount(properties.spanCount); setReverseLayout(properties.reverseLayout); setAutoMeasureEnabled(mGapStrategy != GAP_HANDLING_NONE); + mLayoutState = new LayoutState(); + createOrientationHelpers(); } /** @@ -234,6 +240,14 @@ public class StaggeredGridLayoutManager extends RecyclerView.LayoutManager { mOrientation = orientation; setSpanCount(spanCount); setAutoMeasureEnabled(mGapStrategy != GAP_HANDLING_NONE); + mLayoutState = new LayoutState(); + createOrientationHelpers(); + } + + private void createOrientationHelpers() { + mPrimaryOrientation = OrientationHelper.createOrientationHelper(this, mOrientation); + mSecondaryOrientation = OrientationHelper + .createOrientationHelper(this, 1 - mOrientation); } /** @@ -426,12 +440,9 @@ public class StaggeredGridLayoutManager extends RecyclerView.LayoutManager { return; } mOrientation = orientation; - if (mPrimaryOrientation != null && mSecondaryOrientation != null) { - // swap - OrientationHelper tmp = mPrimaryOrientation; - mPrimaryOrientation = mSecondaryOrientation; - mSecondaryOrientation = tmp; - } + OrientationHelper tmp = mPrimaryOrientation; + mPrimaryOrientation = mSecondaryOrientation; + mSecondaryOrientation = tmp; requestLayout(); } @@ -526,15 +537,6 @@ public class StaggeredGridLayoutManager extends RecyclerView.LayoutManager { requestLayout(); } - private void ensureOrientationHelper() { - if (mPrimaryOrientation == null) { - mPrimaryOrientation = OrientationHelper.createOrientationHelper(this, mOrientation); - mSecondaryOrientation = OrientationHelper - .createOrientationHelper(this, 1 - mOrientation); - mLayoutState = new LayoutState(); - } - } - /** * Calculates the views' layout order. (e.g. from end to start or start to end) * RTL layout support is applied automatically. So if layout is RTL and @@ -593,7 +595,6 @@ public class StaggeredGridLayoutManager extends RecyclerView.LayoutManager { private void onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state, boolean shouldCheckForGaps) { - ensureOrientationHelper(); final AnchorInfo anchorInfo = mAnchorInfo; anchorInfo.reset(); @@ -1036,7 +1037,6 @@ public class StaggeredGridLayoutManager extends RecyclerView.LayoutManager { if (getChildCount() == 0) { return 0; } - ensureOrientationHelper(); return ScrollbarHelper.computeScrollOffset(state, mPrimaryOrientation, findFirstVisibleItemClosestToStart(!mSmoothScrollbarEnabled, true) , findFirstVisibleItemClosestToEnd(!mSmoothScrollbarEnabled, true), @@ -1057,7 +1057,6 @@ public class StaggeredGridLayoutManager extends RecyclerView.LayoutManager { if (getChildCount() == 0) { return 0; } - ensureOrientationHelper(); return ScrollbarHelper.computeScrollExtent(state, mPrimaryOrientation, findFirstVisibleItemClosestToStart(!mSmoothScrollbarEnabled, true) , findFirstVisibleItemClosestToEnd(!mSmoothScrollbarEnabled, true), @@ -1078,7 +1077,6 @@ public class StaggeredGridLayoutManager extends RecyclerView.LayoutManager { if (getChildCount() == 0) { return 0; } - ensureOrientationHelper(); return ScrollbarHelper.computeScrollRange(state, mPrimaryOrientation, findFirstVisibleItemClosestToStart(!mSmoothScrollbarEnabled, true) , findFirstVisibleItemClosestToEnd(!mSmoothScrollbarEnabled, true), @@ -1175,7 +1173,6 @@ public class StaggeredGridLayoutManager extends RecyclerView.LayoutManager { } if (getChildCount() > 0) { - ensureOrientationHelper(); state.mAnchorPosition = mLastLayoutFromEnd ? getLastChildPosition() : getFirstChildPosition(); state.mVisibleAnchorPosition = findFirstVisibleItemPositionInt(); @@ -1288,7 +1285,6 @@ public class StaggeredGridLayoutManager extends RecyclerView.LayoutManager { * children order. */ View findFirstVisibleItemClosestToStart(boolean fullyVisible, boolean acceptPartiallyVisible) { - ensureOrientationHelper(); final int boundsStart = mPrimaryOrientation.getStartAfterPadding(); final int boundsEnd = mPrimaryOrientation.getEndAfterPadding(); final int limit = getChildCount(); @@ -1319,7 +1315,6 @@ public class StaggeredGridLayoutManager extends RecyclerView.LayoutManager { * children order. */ View findFirstVisibleItemClosestToEnd(boolean fullyVisible, boolean acceptPartiallyVisible) { - ensureOrientationHelper(); final int boundsStart = mPrimaryOrientation.getStartAfterPadding(); final int boundsEnd = mPrimaryOrientation.getEndAfterPadding(); View partiallyVisible = null; @@ -1407,7 +1402,8 @@ public class StaggeredGridLayoutManager extends RecyclerView.LayoutManager { } mLayoutState.mStopInFocusable = false; mLayoutState.mRecycle = true; - mLayoutState.mInfinite = mPrimaryOrientation.getMode() == View.MeasureSpec.UNSPECIFIED; + mLayoutState.mInfinite = mPrimaryOrientation.getMode() == View.MeasureSpec.UNSPECIFIED && + mPrimaryOrientation.getEnd() == 0; } private void setLayoutStateDirection(int direction) { @@ -2046,7 +2042,6 @@ public class StaggeredGridLayoutManager extends RecyclerView.LayoutManager { } int scrollBy(int dt, RecyclerView.Recycler recycler, RecyclerView.State state) { - ensureOrientationHelper(); final int referenceChildPosition; final int layoutDir; if (dt > 0) { // layout towards end @@ -2124,6 +2119,7 @@ public class StaggeredGridLayoutManager extends RecyclerView.LayoutManager { return 0; } + @SuppressWarnings("deprecation") @Override public RecyclerView.LayoutParams generateDefaultLayoutParams() { if (mOrientation == HORIZONTAL) { @@ -2171,7 +2167,6 @@ public class StaggeredGridLayoutManager extends RecyclerView.LayoutManager { return null; } - ensureOrientationHelper(); resolveShouldLayoutReverse(); final int layoutDir = convertFocusDirectionToLayoutDirection(direction); if (layoutDir == LayoutState.INVALID_LAYOUT) { diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/support/widget/ViewInfoStore.java b/TMessagesProj/src/main/java/org/telegram/messenger/support/widget/ViewInfoStore.java index 923319f4e..938fe42f3 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/support/widget/ViewInfoStore.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/support/widget/ViewInfoStore.java @@ -32,7 +32,11 @@ import static org.telegram.messenger.support.widget.ViewInfoStore.InfoRecord.FLA import static org.telegram.messenger.support.widget.ViewInfoStore.InfoRecord.FLAG_APPEAR; import static org.telegram.messenger.support.widget.ViewInfoStore.InfoRecord.FLAG_PRE; import static org.telegram.messenger.support.widget.ViewInfoStore.InfoRecord.FLAG_POST; - +/** + * This class abstracts all tracking for Views to run animations + * + * @hide + */ class ViewInfoStore { private static final boolean DEBUG = false; diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/support/widget/helper/ItemTouchHelper.java b/TMessagesProj/src/main/java/org/telegram/messenger/support/widget/helper/ItemTouchHelper.java index 4d458fed8..46b6f9d2a 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/support/widget/helper/ItemTouchHelper.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/support/widget/helper/ItemTouchHelper.java @@ -1384,7 +1384,7 @@ public class ItemTouchHelper extends RecyclerView.ItemDecoration /** * Drag scroll speed keeps accelerating until this many milliseconds before being capped. */ - private static final long DRAG_SCROLL_ACCELERATION_LIMIT_TIME_MS = 2000; + private static final long DRAG_SCROLL_ACCELERATION_LIMIT_TIME_MS = 500; private int mCachedMaxScrollSpeed = -1; diff --git a/TMessagesProj/src/main/java/org/telegram/tgnet/ConnectionsManager.java b/TMessagesProj/src/main/java/org/telegram/tgnet/ConnectionsManager.java index 8b6cf27d6..e6a5f08b0 100644 --- a/TMessagesProj/src/main/java/org/telegram/tgnet/ConnectionsManager.java +++ b/TMessagesProj/src/main/java/org/telegram/tgnet/ConnectionsManager.java @@ -201,8 +201,12 @@ public class ConnectionsManager { native_setNetworkAvailable(isNetworkOnline()); } - public void init(int version, int layer, int apiId, String deviceModel, String systemVersion, String appVersion, String langCode, String configPath, String logPath, int userId) { - native_init(version, layer, apiId, deviceModel, systemVersion, appVersion, langCode, configPath, logPath, userId); + public void setPushConnectionEnabled(boolean value) { + native_setPushConnectionEnabled(value); + } + + public void init(int version, int layer, int apiId, String deviceModel, String systemVersion, String appVersion, String langCode, String configPath, String logPath, int userId, boolean enablePushConnection) { + native_init(version, layer, apiId, deviceModel, systemVersion, appVersion, langCode, configPath, logPath, userId, enablePushConnection); checkConnection(); BroadcastReceiver networkStateReceiver = new BroadcastReceiver() { @Override @@ -342,8 +346,10 @@ public class ConnectionsManager { @Override public void run() { try { - getInstance().wakeLock.acquire(20000); - FileLog.d("tmessages", "acquire wakelock"); + if (!getInstance().wakeLock.isHeld()) { + getInstance().wakeLock.acquire(10000); + FileLog.d("tmessages", "acquire wakelock"); + } } catch (Exception e) { FileLog.e("tmessages", e); } @@ -368,8 +374,9 @@ public class ConnectionsManager { public static native void native_applyDatacenterAddress(int datacenterId, String ipAddress, int port); public static native int native_getConnectionState(); public static native void native_setUserId(int id); - public static native void native_init(int version, int layer, int apiId, String deviceModel, String systemVersion, String appVersion, String langCode, String configPath, String logPath, int userId); + public static native void native_init(int version, int layer, int apiId, String deviceModel, String systemVersion, String appVersion, String langCode, String configPath, String logPath, int userId, boolean enablePushConnection); public static native void native_setJava(boolean useJavaByteBuffers); + public static native void native_setPushConnectionEnabled(boolean value); public int generateClassGuid() { return lastClassGuid++; diff --git a/TMessagesProj/src/main/java/org/telegram/tgnet/TLRPC.java b/TMessagesProj/src/main/java/org/telegram/tgnet/TLRPC.java index 09729b980..4418191aa 100644 --- a/TMessagesProj/src/main/java/org/telegram/tgnet/TLRPC.java +++ b/TMessagesProj/src/main/java/org/telegram/tgnet/TLRPC.java @@ -56,7 +56,7 @@ public class TLRPC { public static final int MESSAGE_FLAG_HAS_BOT_ID = 0x00000800; public static final int MESSAGE_FLAG_MEGAGROUP = 0x80000000; - public static final int LAYER = 50; + public static final int LAYER = 51; public static class ChatPhoto extends TLObject { public FileLocation photo_small; @@ -642,6 +642,44 @@ public class TLRPC { } } + public static class TL_messages_botCallbackAnswer extends TLObject { + public static int constructor = 0x1264f1c6; + + public int flags; + public boolean alert; + public String message; + + public static TL_messages_botCallbackAnswer TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { + if (TL_messages_botCallbackAnswer.constructor != constructor) { + if (exception) { + throw new RuntimeException(String.format("can't parse magic %x in TL_messages_botCallbackAnswer", constructor)); + } else { + return null; + } + } + TL_messages_botCallbackAnswer result = new TL_messages_botCallbackAnswer(); + result.readParams(stream, exception); + return result; + } + + public void readParams(AbstractSerializedData stream, boolean exception) { + flags = stream.readInt32(exception); + alert = (flags & 2) != 0; + if ((flags & 1) != 0) { + message = stream.readString(exception); + } + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + flags = alert ? (flags | 2) : (flags &~ 2); + stream.writeInt32(flags); + if ((flags & 1) != 0) { + stream.writeString(message); + } + } + } + public static class TL_contactStatus extends TLObject { public static int constructor = 0xd3680c61; @@ -2742,12 +2780,9 @@ public class TLRPC { } public static class BotInlineResult extends TLObject { + public int flags; public String id; public String type; - public Photo photo; - public BotInlineMessage send_message; - public Document document; - public int flags; public String title; public String description; public String url; @@ -2757,20 +2792,20 @@ public class TLRPC { public int w; public int h; public int duration; + public BotInlineMessage send_message; + public Photo photo; + public Document document; public long query_id; public static BotInlineResult TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { BotInlineResult result = null; switch(constructor) { - case 0xc5528587: - result = new TL_botInlineMediaResultPhoto(); - break; - case 0xf897d33e: - result = new TL_botInlineMediaResultDocument(); - break; case 0x9bebaeb9: result = new TL_botInlineResult(); break; + case 0x17db940b: + result = new TL_botInlineMediaResult(); + break; } if (result == null && exception) { throw new RuntimeException(String.format("can't parse magic %x in BotInlineResult", constructor)); @@ -2782,46 +2817,6 @@ public class TLRPC { } } - public static class TL_botInlineMediaResultPhoto extends BotInlineResult { - public static int constructor = 0xc5528587; - - - public void readParams(AbstractSerializedData stream, boolean exception) { - id = stream.readString(exception); - type = stream.readString(exception); - photo = Photo.TLdeserialize(stream, stream.readInt32(exception), exception); - send_message = BotInlineMessage.TLdeserialize(stream, stream.readInt32(exception), exception); - } - - public void serializeToStream(AbstractSerializedData stream) { - stream.writeInt32(constructor); - stream.writeString(id); - stream.writeString(type); - photo.serializeToStream(stream); - send_message.serializeToStream(stream); - } - } - - public static class TL_botInlineMediaResultDocument extends BotInlineResult { - public static int constructor = 0xf897d33e; - - - public void readParams(AbstractSerializedData stream, boolean exception) { - id = stream.readString(exception); - type = stream.readString(exception); - document = Document.TLdeserialize(stream, stream.readInt32(exception), exception); - send_message = BotInlineMessage.TLdeserialize(stream, stream.readInt32(exception), exception); - } - - public void serializeToStream(AbstractSerializedData stream) { - stream.writeInt32(constructor); - stream.writeString(id); - stream.writeString(type); - document.serializeToStream(stream); - send_message.serializeToStream(stream); - } - } - public static class TL_botInlineResult extends BotInlineResult { public static int constructor = 0x9bebaeb9; @@ -2896,6 +2891,50 @@ public class TLRPC { } } + public static class TL_botInlineMediaResult extends BotInlineResult { + public static int constructor = 0x17db940b; + + + public void readParams(AbstractSerializedData stream, boolean exception) { + flags = stream.readInt32(exception); + id = stream.readString(exception); + type = stream.readString(exception); + if ((flags & 1) != 0) { + photo = Photo.TLdeserialize(stream, stream.readInt32(exception), exception); + } + if ((flags & 2) != 0) { + document = Document.TLdeserialize(stream, stream.readInt32(exception), exception); + } + if ((flags & 4) != 0) { + title = stream.readString(exception); + } + if ((flags & 8) != 0) { + description = stream.readString(exception); + } + send_message = BotInlineMessage.TLdeserialize(stream, stream.readInt32(exception), exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + stream.writeInt32(flags); + stream.writeString(id); + stream.writeString(type); + if ((flags & 1) != 0) { + photo.serializeToStream(stream); + } + if ((flags & 2) != 0) { + document.serializeToStream(stream); + } + if ((flags & 4) != 0) { + stream.writeString(title); + } + if ((flags & 8) != 0) { + stream.writeString(description); + } + send_message.serializeToStream(stream); + } + } + public static class PeerNotifySettings extends TLObject { public int flags; public boolean silent; @@ -3605,24 +3644,27 @@ public class TLRPC { } public static class ReplyMarkup extends TLObject { + public ArrayList rows = new ArrayList<>(); public int flags; public boolean selective; - public boolean resize; public boolean single_use; - public ArrayList rows = new ArrayList<>(); + public boolean resize; public static ReplyMarkup TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { ReplyMarkup result = null; switch(constructor) { + case 0x48a30254: + result = new TL_replyInlineMarkup(); + break; case 0xa03e5b85: result = new TL_replyKeyboardHide(); break; - case 0x3502758c: - result = new TL_replyKeyboardMarkup(); - break; case 0xf4108aa0: result = new TL_replyKeyboardForceReply(); break; + case 0x3502758c: + result = new TL_replyKeyboardMarkup(); + break; } if (result == null && exception) { throw new RuntimeException(String.format("can't parse magic %x in ReplyMarkup", constructor)); @@ -3634,6 +3676,39 @@ public class TLRPC { } } + public static class TL_replyInlineMarkup extends ReplyMarkup { + public static int constructor = 0x48a30254; + + + public void readParams(AbstractSerializedData stream, boolean 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++) { + TL_keyboardButtonRow object = TL_keyboardButtonRow.TLdeserialize(stream, stream.readInt32(exception), exception); + if (object == null) { + return; + } + rows.add(object); + } + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + stream.writeInt32(0x1cb5c415); + int count = rows.size(); + stream.writeInt32(count); + for (int a = 0; a < count; a++) { + rows.get(a).serializeToStream(stream); + } + } + } + public static class TL_replyKeyboardHide extends ReplyMarkup { public static int constructor = 0xa03e5b85; @@ -3650,6 +3725,24 @@ public class TLRPC { } } + public static class TL_replyKeyboardForceReply extends ReplyMarkup { + public static int constructor = 0xf4108aa0; + + + public void readParams(AbstractSerializedData stream, boolean exception) { + flags = stream.readInt32(exception); + single_use = (flags & 2) != 0; + selective = (flags & 4) != 0; + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + flags = single_use ? (flags | 2) : (flags &~ 2); + flags = selective ? (flags | 4) : (flags &~ 4); + stream.writeInt32(flags); + } + } + public static class TL_replyKeyboardMarkup extends ReplyMarkup { public static int constructor = 0x3502758c; @@ -3691,24 +3784,6 @@ public class TLRPC { } } - public static class TL_replyKeyboardForceReply extends ReplyMarkup { - public static int constructor = 0xf4108aa0; - - - public void readParams(AbstractSerializedData stream, boolean exception) { - flags = stream.readInt32(exception); - single_use = (flags & 2) != 0; - selective = (flags & 4) != 0; - } - - public void serializeToStream(AbstractSerializedData stream) { - stream.writeInt32(constructor); - flags = single_use ? (flags | 2) : (flags &~ 2); - flags = selective ? (flags | 4) : (flags &~ 4); - stream.writeInt32(flags); - } - } - public static class contacts_Contacts extends TLObject { public ArrayList contacts = new ArrayList<>(); public ArrayList users = new ArrayList<>(); @@ -4408,23 +4483,123 @@ public class TLRPC { } } - public static class TL_keyboardButton extends TLObject { + public static class KeyboardButton extends TLObject { + public String text; + public String query; + public byte[] data; + public String url; + + public static KeyboardButton TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { + KeyboardButton result = null; + switch(constructor) { + case 0xa2fa4880: + result = new TL_keyboardButton(); + break; + case 0xea1b7a14: + result = new TL_keyboardButtonSwitchInline(); + break; + case 0xb16a6c29: + result = new TL_keyboardButtonRequestPhone(); + break; + case 0x683a5e46: + result = new TL_keyboardButtonCallback(); + break; + case 0x258aff05: + result = new TL_keyboardButtonUrl(); + break; + case 0xfc796b3f: + result = new TL_keyboardButtonRequestGeoLocation(); + break; + } + if (result == null && exception) { + throw new RuntimeException(String.format("can't parse magic %x in KeyboardButton", constructor)); + } + if (result != null) { + result.readParams(stream, exception); + } + return result; + } + } + + public static class TL_keyboardButton extends KeyboardButton { public static int constructor = 0xa2fa4880; - public String text; - public static TL_keyboardButton TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { - if (TL_keyboardButton.constructor != constructor) { - if (exception) { - throw new RuntimeException(String.format("can't parse magic %x in TL_keyboardButton", constructor)); - } else { - return null; - } - } - TL_keyboardButton result = new TL_keyboardButton(); - result.readParams(stream, exception); - return result; - } + public void readParams(AbstractSerializedData stream, boolean exception) { + text = stream.readString(exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + stream.writeString(text); + } + } + + public static class TL_keyboardButtonSwitchInline extends KeyboardButton { + public static int constructor = 0xea1b7a14; + + + public void readParams(AbstractSerializedData stream, boolean exception) { + text = stream.readString(exception); + query = stream.readString(exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + stream.writeString(text); + stream.writeString(query); + } + } + + public static class TL_keyboardButtonRequestPhone extends KeyboardButton { + public static int constructor = 0xb16a6c29; + + + public void readParams(AbstractSerializedData stream, boolean exception) { + text = stream.readString(exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + stream.writeString(text); + } + } + + public static class TL_keyboardButtonCallback extends KeyboardButton { + public static int constructor = 0x683a5e46; + + + public void readParams(AbstractSerializedData stream, boolean exception) { + text = stream.readString(exception); + data = stream.readByteArray(exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + stream.writeString(text); + stream.writeByteArray(data); + } + } + + public static class TL_keyboardButtonUrl extends KeyboardButton { + public static int constructor = 0x258aff05; + + + 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 class TL_keyboardButtonRequestGeoLocation extends KeyboardButton { + public static int constructor = 0xfc796b3f; + public void readParams(AbstractSerializedData stream, boolean exception) { text = stream.readString(exception); @@ -4437,21 +4612,39 @@ public class TLRPC { } public static class BotInlineMessage extends TLObject { - public String caption; public int flags; + public GeoPoint geo; + public ReplyMarkup reply_markup; + public String caption; public boolean no_webpage; public String message; public ArrayList entities = new ArrayList<>(); + public String phone_number; + public String first_name; + public String last_name; + public String title; + public String address; + public String provider; + public String venue_id; public static BotInlineMessage TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { BotInlineMessage result = null; switch(constructor) { - case 0xfc56e87d: + case 0x3a8fd8b8: + result = new TL_botInlineMessageMediaGeo(); + break; + case 0xa74b15b: result = new TL_botInlineMessageMediaAuto(); break; - case 0xa56197a9: + case 0x8c7f65e2: result = new TL_botInlineMessageText(); break; + case 0x35edb4d4: + result = new TL_botInlineMessageMediaContact(); + break; + case 0x4366232e: + result = new TL_botInlineMessageMediaVenue(); + break; } if (result == null && exception) { throw new RuntimeException(String.format("can't parse magic %x in BotInlineMessage", constructor)); @@ -4463,22 +4656,52 @@ public class TLRPC { } } - public static class TL_botInlineMessageMediaAuto extends BotInlineMessage { - public static int constructor = 0xfc56e87d; + public static class TL_botInlineMessageMediaGeo extends BotInlineMessage { + public static int constructor = 0x3a8fd8b8; public void readParams(AbstractSerializedData stream, boolean exception) { - caption = stream.readString(exception); + flags = stream.readInt32(exception); + geo = GeoPoint.TLdeserialize(stream, stream.readInt32(exception), exception); + if ((flags & 4) != 0) { + reply_markup = ReplyMarkup.TLdeserialize(stream, stream.readInt32(exception), exception); + } } public void serializeToStream(AbstractSerializedData stream) { stream.writeInt32(constructor); + stream.writeInt32(flags); + geo.serializeToStream(stream); + if ((flags & 4) != 0) { + reply_markup.serializeToStream(stream); + } + } + } + + public static class TL_botInlineMessageMediaAuto extends BotInlineMessage { + public static int constructor = 0xa74b15b; + + + public void readParams(AbstractSerializedData stream, boolean exception) { + flags = stream.readInt32(exception); + caption = stream.readString(exception); + if ((flags & 4) != 0) { + reply_markup = ReplyMarkup.TLdeserialize(stream, stream.readInt32(exception), exception); + } + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + stream.writeInt32(flags); stream.writeString(caption); + if ((flags & 4) != 0) { + reply_markup.serializeToStream(stream); + } } } public static class TL_botInlineMessageText extends BotInlineMessage { - public static int constructor = 0xa56197a9; + public static int constructor = 0x8c7f65e2; public void readParams(AbstractSerializedData stream, boolean exception) { @@ -4502,6 +4725,9 @@ public class TLRPC { entities.add(object); } } + if ((flags & 4) != 0) { + reply_markup = ReplyMarkup.TLdeserialize(stream, stream.readInt32(exception), exception); + } } public void serializeToStream(AbstractSerializedData stream) { @@ -4517,13 +4743,72 @@ public class TLRPC { entities.get(a).serializeToStream(stream); } } + if ((flags & 4) != 0) { + reply_markup.serializeToStream(stream); + } + } + } + + public static class TL_botInlineMessageMediaContact extends BotInlineMessage { + public static int constructor = 0x35edb4d4; + + + public void readParams(AbstractSerializedData stream, boolean exception) { + flags = stream.readInt32(exception); + phone_number = stream.readString(exception); + first_name = stream.readString(exception); + last_name = stream.readString(exception); + if ((flags & 4) != 0) { + reply_markup = ReplyMarkup.TLdeserialize(stream, stream.readInt32(exception), exception); + } + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + stream.writeInt32(flags); + stream.writeString(phone_number); + stream.writeString(first_name); + stream.writeString(last_name); + if ((flags & 4) != 0) { + reply_markup.serializeToStream(stream); + } + } + } + + public static class TL_botInlineMessageMediaVenue extends BotInlineMessage { + public static int constructor = 0x4366232e; + + + public void readParams(AbstractSerializedData stream, boolean exception) { + flags = stream.readInt32(exception); + geo = GeoPoint.TLdeserialize(stream, stream.readInt32(exception), exception); + title = stream.readString(exception); + address = stream.readString(exception); + provider = stream.readString(exception); + venue_id = stream.readString(exception); + if ((flags & 4) != 0) { + reply_markup = ReplyMarkup.TLdeserialize(stream, stream.readInt32(exception), exception); + } + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + stream.writeInt32(flags); + geo.serializeToStream(stream); + stream.writeString(title); + stream.writeString(address); + stream.writeString(provider); + stream.writeString(venue_id); + if ((flags & 4) != 0) { + reply_markup.serializeToStream(stream); + } } } public static class TL_keyboardButtonRow extends TLObject { public static int constructor = 0x77608b83; - public ArrayList buttons = new ArrayList<>(); + public ArrayList buttons = new ArrayList<>(); public static TL_keyboardButtonRow TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { if (TL_keyboardButtonRow.constructor != constructor) { @@ -4548,7 +4833,7 @@ public class TLRPC { } int count = stream.readInt32(exception); for (int a = 0; a < count; a++) { - TL_keyboardButton object = TL_keyboardButton.TLdeserialize(stream, stream.readInt32(exception), exception); + KeyboardButton object = KeyboardButton.TLdeserialize(stream, stream.readInt32(exception), exception); if (object == null) { return; } @@ -5208,6 +5493,7 @@ public class TLRPC { public int bot_info_version; public boolean restricted; public boolean min; + public boolean bot_inline_geo; public String restriction_reason; public String bot_inline_placeholder; @@ -5655,6 +5941,7 @@ public class TLRPC { verified = (flags & 131072) != 0; restricted = (flags & 262144) != 0; min = (flags & 1048576) != 0; + bot_inline_geo = (flags & 2097152) != 0; id = stream.readInt32(exception); if ((flags & 1) != 0) { access_hash = stream.readInt64(exception); @@ -5700,6 +5987,7 @@ public class TLRPC { flags = verified ? (flags | 131072) : (flags &~ 131072); flags = restricted ? (flags | 262144) : (flags &~ 262144); flags = min ? (flags | 1048576) : (flags &~ 1048576); + flags = bot_inline_geo ? (flags | 2097152) : (flags &~ 2097152); stream.writeInt32(flags); stream.writeInt32(id); if ((flags & 1) != 0) { @@ -8221,6 +8509,37 @@ public class TLRPC { } } + public static class TL_messages_messageEditData extends TLObject { + public static int constructor = 0x26b5dde6; + + public int flags; + public boolean caption; + + public static TL_messages_messageEditData TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { + if (TL_messages_messageEditData.constructor != constructor) { + if (exception) { + throw new RuntimeException(String.format("can't parse magic %x in TL_messages_messageEditData", constructor)); + } else { + return null; + } + } + TL_messages_messageEditData result = new TL_messages_messageEditData(); + result.readParams(stream, exception); + return result; + } + + public void readParams(AbstractSerializedData stream, boolean exception) { + flags = stream.readInt32(exception); + caption = (flags & 1) != 0; + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + flags = caption ? (flags | 1) : (flags &~ 1); + stream.writeInt32(flags); + } + } + public static class TL_contacts_importedContacts extends TLObject { public static int constructor = 0xad524315; @@ -8339,12 +8658,51 @@ public class TLRPC { } } + public static class TL_inlineBotSwitchPM extends TLObject { + public static int constructor = 0x3c20629f; + + public String text; + public String start_param; + + public static TL_inlineBotSwitchPM TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { + if (TL_inlineBotSwitchPM.constructor != constructor) { + if (exception) { + throw new RuntimeException(String.format("can't parse magic %x in TL_inlineBotSwitchPM", constructor)); + } else { + return null; + } + } + TL_inlineBotSwitchPM result = new TL_inlineBotSwitchPM(); + result.readParams(stream, exception); + return result; + } + + public void readParams(AbstractSerializedData stream, boolean exception) { + text = stream.readString(exception); + start_param = stream.readString(exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + stream.writeString(text); + stream.writeString(start_param); + } + } + public static class Update extends TLObject { public int chat_id; public int user_id; public int inviter_id; public int date; public int version; + public int pts; + public int pts_count; + public long query_id; + public byte[] data; + public int flags; + public String query; + public GeoPoint geo; + public String offset; public PeerNotifySettings notify_settings; public int channel_id; public SendMessageAction action; @@ -8355,9 +8713,6 @@ public class TLRPC { public int max_id; public int qts; public boolean enabled; - public int pts; - public int pts_count; - public int id; public long random_id; public ArrayList dc_options = new ArrayList<>(); public ChatParticipants participants; @@ -8365,7 +8720,6 @@ public class TLRPC { public ArrayList rules = new ArrayList<>(); public UserStatus status; public int views; - public int flags; public String type; public MessageMedia media; public boolean popup; @@ -8380,8 +8734,8 @@ public class TLRPC { public ArrayList messages = new ArrayList<>(); public String phone; public WebPage webpage; - public ArrayList order = new ArrayList<>(); public EncryptedChat chat; + public ArrayList order = new ArrayList<>(); public int max_date; public UserProfilePhoto photo; public boolean previous; @@ -8398,6 +8752,12 @@ public class TLRPC { case 0x1b3f4df7: result = new TL_updateEditChannelMessage(); break; + case 0xa68c688c: + result = new TL_updateBotCallbackQuery(); + break; + case 0x54826690: + result = new TL_updateBotInlineQuery(); + break; case 0xbec268ef: result = new TL_updateNotifySettings(); break; @@ -8446,6 +8806,9 @@ public class TLRPC { case 0xee3b272a: result = new TL_updatePrivacy(); break; + case 0x2cbd95af: + result = new TL_updateInlineBotCallbackQuery(); + break; case 0x1710f156: result = new TL_updateEncryptedChatTyping(); break; @@ -8482,6 +8845,12 @@ public class TLRPC { case 0xa7332b73: result = new TL_updateUserName(); break; + case 0xe48f964: + result = new TL_updateBotInlineSend(); + break; + case 0xe40370a3: + result = new TL_updateEditMessage(); + break; case 0x98592475: result = new TL_updateChannelPinnedMessage(); break; @@ -8582,6 +8951,58 @@ public class TLRPC { } } + public static class TL_updateBotCallbackQuery extends Update { + public static int constructor = 0xa68c688c; + + public Peer peer; + public int msg_id; + + public void readParams(AbstractSerializedData stream, boolean exception) { + query_id = stream.readInt64(exception); + user_id = stream.readInt32(exception); + peer = Peer.TLdeserialize(stream, stream.readInt32(exception), exception); + msg_id = stream.readInt32(exception); + data = stream.readByteArray(exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + stream.writeInt64(query_id); + stream.writeInt32(user_id); + peer.serializeToStream(stream); + stream.writeInt32(msg_id); + stream.writeByteArray(data); + } + } + + public static class TL_updateBotInlineQuery extends Update { + public static int constructor = 0x54826690; + + + public void readParams(AbstractSerializedData stream, boolean exception) { + flags = stream.readInt32(exception); + query_id = stream.readInt64(exception); + user_id = stream.readInt32(exception); + query = stream.readString(exception); + if ((flags & 1) != 0) { + geo = GeoPoint.TLdeserialize(stream, stream.readInt32(exception), exception); + } + offset = stream.readString(exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + stream.writeInt32(flags); + stream.writeInt64(query_id); + stream.writeInt32(user_id); + stream.writeString(query); + if ((flags & 1) != 0) { + geo.serializeToStream(stream); + } + stream.writeString(offset); + } + } + public static class TL_updateNotifySettings extends Update { public static int constructor = 0xbec268ef; @@ -8732,15 +9153,6 @@ public class TLRPC { } } - public static class TL_updateSavedGifs extends Update { - public static int constructor = 0x9375341e; - - - public void serializeToStream(AbstractSerializedData stream) { - stream.writeInt32(constructor); - } - } - public static class TL_updateChatAdmins extends Update { public static int constructor = 0x6e947941; @@ -8759,6 +9171,15 @@ public class TLRPC { } } + public static class TL_updateSavedGifs extends Update { + public static int constructor = 0x9375341e; + + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + } + } + public static class TL_updateNewChannelMessage extends Update { public static int constructor = 0x62ba04d9; @@ -8781,6 +9202,7 @@ public class TLRPC { public static class TL_updateMessageID extends Update { public static int constructor = 0x4e90bfd6; + public int id; public void readParams(AbstractSerializedData stream, boolean exception) { id = stream.readInt32(exception); @@ -8876,6 +9298,27 @@ public class TLRPC { } } + public static class TL_updateInlineBotCallbackQuery extends Update { + public static int constructor = 0x2cbd95af; + + public TL_inputBotInlineMessageID msg_id; + + public void readParams(AbstractSerializedData stream, boolean exception) { + query_id = stream.readInt64(exception); + user_id = stream.readInt32(exception); + msg_id = TL_inputBotInlineMessageID.TLdeserialize(stream, stream.readInt32(exception), exception); + data = stream.readByteArray(exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + stream.writeInt64(query_id); + stream.writeInt32(user_id); + msg_id.serializeToStream(stream); + stream.writeByteArray(data); + } + } + public static class TL_updateEncryptedChatTyping extends Update { public static int constructor = 0x1710f156; @@ -8924,6 +9367,7 @@ public class TLRPC { public static class TL_updateChannelMessageViews extends Update { public static int constructor = 0x98a12b4b; + public int id; public void readParams(AbstractSerializedData stream, boolean exception) { channel_id = stream.readInt32(exception); @@ -9091,9 +9535,63 @@ public class TLRPC { } } + public static class TL_updateBotInlineSend extends Update { + public static int constructor = 0xe48f964; + + public String id; + public TL_inputBotInlineMessageID msg_id; + + public void readParams(AbstractSerializedData stream, boolean exception) { + flags = stream.readInt32(exception); + user_id = stream.readInt32(exception); + query = stream.readString(exception); + if ((flags & 1) != 0) { + geo = GeoPoint.TLdeserialize(stream, stream.readInt32(exception), exception); + } + id = stream.readString(exception); + if ((flags & 2) != 0) { + msg_id = TL_inputBotInlineMessageID.TLdeserialize(stream, stream.readInt32(exception), exception); + } + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + stream.writeInt32(flags); + stream.writeInt32(user_id); + stream.writeString(query); + if ((flags & 1) != 0) { + geo.serializeToStream(stream); + } + stream.writeString(id); + if ((flags & 2) != 0) { + msg_id.serializeToStream(stream); + } + } + } + + public static class TL_updateEditMessage extends Update { + public static int constructor = 0xe40370a3; + + public Message message; + + public void readParams(AbstractSerializedData stream, boolean exception) { + message = Message.TLdeserialize(stream, stream.readInt32(exception), exception); + pts = stream.readInt32(exception); + pts_count = stream.readInt32(exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + message.serializeToStream(stream); + stream.writeInt32(pts); + stream.writeInt32(pts_count); + } + } + public static class TL_updateChannelPinnedMessage extends Update { public static int constructor = 0x98592475; + public int id; public void readParams(AbstractSerializedData stream, boolean exception) { channel_id = stream.readInt32(exception); @@ -10997,12 +11495,13 @@ public class TLRPC { } public static class TL_messages_botResults extends TLObject { - public static int constructor = 0x1170b0a3; + public static int constructor = 0x256709a6; public int flags; public boolean gallery; public long query_id; public String next_offset; + public TL_inlineBotSwitchPM switch_pm; public ArrayList results = new ArrayList<>(); public static TL_messages_botResults TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { @@ -11025,6 +11524,9 @@ public class TLRPC { if ((flags & 2) != 0) { next_offset = stream.readString(exception); } + if ((flags & 4) != 0) { + switch_pm = TL_inlineBotSwitchPM.TLdeserialize(stream, stream.readInt32(exception), exception); + } int magic = stream.readInt32(exception); if (magic != 0x1cb5c415) { if (exception) { @@ -11050,6 +11552,9 @@ public class TLRPC { if ((flags & 2) != 0) { stream.writeString(next_offset); } + if ((flags & 4) != 0) { + switch_pm.serializeToStream(stream); + } stream.writeInt32(0x1cb5c415); int count = results.size(); stream.writeInt32(count); @@ -11059,6 +11564,40 @@ public class TLRPC { } } + public static class TL_inputBotInlineMessageID extends TLObject { + public static int constructor = 0x890c3d89; + + public int dc_id; + public long id; + public long access_hash; + + public static TL_inputBotInlineMessageID TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { + if (TL_inputBotInlineMessageID.constructor != constructor) { + if (exception) { + throw new RuntimeException(String.format("can't parse magic %x in TL_inputBotInlineMessageID", constructor)); + } else { + return null; + } + } + TL_inputBotInlineMessageID result = new TL_inputBotInlineMessageID(); + result.readParams(stream, exception); + return result; + } + + public void readParams(AbstractSerializedData stream, boolean exception) { + dc_id = stream.readInt32(exception); + id = stream.readInt64(exception); + access_hash = stream.readInt64(exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + stream.writeInt32(dc_id); + stream.writeInt64(id); + stream.writeInt64(access_hash); + } + } + public static class TL_messages_foundGifs extends TLObject { public static int constructor = 0x450a1c0a; @@ -14581,37 +15120,6 @@ public class TLRPC { } } - public static class TL_channels_messageEditData extends TLObject { - public static int constructor = 0x67e1255f; - - public int flags; - public boolean caption; - - public static TL_channels_messageEditData TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) { - if (TL_channels_messageEditData.constructor != constructor) { - if (exception) { - throw new RuntimeException(String.format("can't parse magic %x in TL_channels_messageEditData", constructor)); - } else { - return null; - } - } - TL_channels_messageEditData result = new TL_channels_messageEditData(); - result.readParams(stream, exception); - return result; - } - - public void readParams(AbstractSerializedData stream, boolean exception) { - flags = stream.readInt32(exception); - caption = (flags & 1) != 0; - } - - public void serializeToStream(AbstractSerializedData stream) { - stream.writeInt32(constructor); - flags = caption ? (flags | 1) : (flags &~ 1); - stream.writeInt32(flags); - } - } - public static class TL_inputEncryptedChat extends TLObject { public static int constructor = 0xf141b5e1; @@ -17886,9 +18394,12 @@ public class TLRPC { } public static class TL_messages_getInlineBotResults extends TLObject { - public static int constructor = 0x9324600d; + public static int constructor = 0x514e999d; + public int flags; public InputUser bot; + public InputPeer peer; + public InputGeoPoint geo_point; public String query; public String offset; @@ -17898,7 +18409,12 @@ public class TLRPC { public void serializeToStream(AbstractSerializedData stream) { stream.writeInt32(constructor); + stream.writeInt32(flags); bot.serializeToStream(stream); + peer.serializeToStream(stream); + if ((flags & 1) != 0) { + geo_point.serializeToStream(stream); + } stream.writeString(query); stream.writeString(offset); } @@ -17923,10 +18439,10 @@ public class TLRPC { public void serializeToStream(AbstractSerializedData stream) { stream.writeInt32(constructor); - stream.writeInt32(flags); flags = broadcast ? (flags | 16) : (flags &~ 16); flags = silent ? (flags | 32) : (flags &~ 32); flags = background ? (flags | 64) : (flags &~ 64); + stream.writeInt32(flags); peer.serializeToStream(stream); if ((flags & 1) != 0) { stream.writeInt32(reply_to_msg_id); @@ -17937,6 +18453,139 @@ public class TLRPC { } } + public static class TL_messages_getMessageEditData extends TLObject { + public static int constructor = 0xfda68d36; + + public InputPeer peer; + public int id; + + public TLObject deserializeResponse(AbstractSerializedData stream, int constructor, boolean exception) { + return TL_messages_messageEditData.TLdeserialize(stream, constructor, exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + peer.serializeToStream(stream); + stream.writeInt32(id); + } + } + + public static class TL_messages_editMessage extends TLObject { + public static int constructor = 0xce91e4ca; + + public int flags; + public boolean no_webpage; + public InputPeer peer; + public int id; + public String message; + public ReplyMarkup reply_markup; + public ArrayList entities = new ArrayList<>(); + + public TLObject deserializeResponse(AbstractSerializedData stream, int constructor, boolean exception) { + return Updates.TLdeserialize(stream, constructor, exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + flags = no_webpage ? (flags | 2) : (flags &~ 2); + stream.writeInt32(flags); + peer.serializeToStream(stream); + stream.writeInt32(id); + if ((flags & 2048) != 0) { + stream.writeString(message); + } + if ((flags & 4) != 0) { + reply_markup.serializeToStream(stream); + } + if ((flags & 8) != 0) { + stream.writeInt32(0x1cb5c415); + int count = entities.size(); + stream.writeInt32(count); + for (int a = 0; a < count; a++) { + entities.get(a).serializeToStream(stream); + } + } + } + } + + public static class TL_messages_getBotCallbackAnswer extends TLObject { + public static int constructor = 0xa6e94f04; + + public InputPeer peer; + public int msg_id; + public byte[] data; + + public TLObject deserializeResponse(AbstractSerializedData stream, int constructor, boolean exception) { + return TL_messages_botCallbackAnswer.TLdeserialize(stream, constructor, exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + peer.serializeToStream(stream); + stream.writeInt32(msg_id); + stream.writeByteArray(data); + } + } + + public static class TL_messages_setBotCallbackAnswer extends TLObject { + public static int constructor = 0x481c591a; + + public int flags; + public boolean alert; + public long query_id; + public String message; + + public TLObject deserializeResponse(AbstractSerializedData stream, int constructor, boolean exception) { + return Bool.TLdeserialize(stream, constructor, exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + flags = alert ? (flags | 2) : (flags &~ 2); + stream.writeInt32(flags); + stream.writeInt64(query_id); + if ((flags & 1) != 0) { + stream.writeString(message); + } + } + } + + public static class TL_messages_editInlineBotMessage extends TLObject { + public static int constructor = 0x130c2c85; + + public int flags; + public boolean no_webpage; + public TL_inputBotInlineMessageID id; + public String message; + public ReplyMarkup reply_markup; + public ArrayList entities = new ArrayList<>(); + + public TLObject deserializeResponse(AbstractSerializedData stream, int constructor, boolean exception) { + return Bool.TLdeserialize(stream, constructor, exception); + } + + public void serializeToStream(AbstractSerializedData stream) { + stream.writeInt32(constructor); + flags = no_webpage ? (flags | 2) : (flags &~ 2); + stream.writeInt32(flags); + id.serializeToStream(stream); + if ((flags & 2048) != 0) { + stream.writeString(message); + } + if ((flags & 4) != 0) { + reply_markup.serializeToStream(stream); + } + if ((flags & 8) != 0) { + stream.writeInt32(0x1cb5c415); + int count = entities.size(); + stream.writeInt32(count); + for (int a = 0; a < count; a++) { + entities.get(a).serializeToStream(stream); + } + } + } + } + public static class TL_help_getAppChangelog extends TLObject { public static int constructor = 0x5bab7fb2; @@ -18527,55 +19176,6 @@ public class TLRPC { } } - public static class TL_channels_getMessageEditData extends TLObject { - public static int constructor = 0x27ea3a28; - - public InputChannel channel; - public int id; - - public TLObject deserializeResponse(AbstractSerializedData stream, int constructor, boolean exception) { - return TL_channels_messageEditData.TLdeserialize(stream, constructor, exception); - } - - public void serializeToStream(AbstractSerializedData stream) { - stream.writeInt32(constructor); - channel.serializeToStream(stream); - stream.writeInt32(id); - } - } - - public static class TL_channels_editMessage extends TLObject { - public static int constructor = 0xdcda80ed; - - public int flags; - public boolean no_webpage; - public InputChannel channel; - public int id; - public String message; - public ArrayList entities = new ArrayList<>(); - - public TLObject deserializeResponse(AbstractSerializedData stream, int constructor, boolean exception) { - return Updates.TLdeserialize(stream, constructor, exception); - } - - public void serializeToStream(AbstractSerializedData stream) { - stream.writeInt32(constructor); - flags = no_webpage ? (flags | 2) : (flags &~ 2); - stream.writeInt32(flags); - channel.serializeToStream(stream); - stream.writeInt32(id); - stream.writeString(message); - if ((flags & 8) != 0) { - stream.writeInt32(0x1cb5c415); - int count = entities.size(); - stream.writeInt32(count); - for (int a = 0; a < count; a++) { - entities.get(a).serializeToStream(stream); - } - } - } - } - public static class TL_channels_updatePinnedMessage extends TLObject { public static int constructor = 0xa72ded52; @@ -18590,8 +19190,8 @@ public class TLRPC { public void serializeToStream(AbstractSerializedData stream) { stream.writeInt32(constructor); - stream.writeInt32(flags); flags = silent ? (flags | 1) : (flags &~ 1); + stream.writeInt32(flags); channel.serializeToStream(stream); stream.writeInt32(id); } @@ -18989,6 +19589,8 @@ public class TLRPC { message = stream.readString(exception); if ((flags & 512) != 0) { media = MessageMedia.TLdeserialize(stream, stream.readInt32(exception), exception); + } else { + media = new TL_messageMediaEmpty(); } if ((flags & 64) != 0) { reply_markup = ReplyMarkup.TLdeserialize(stream, stream.readInt32(exception), exception); @@ -19139,6 +19741,8 @@ public class TLRPC { message = stream.readString(exception); if ((flags & 512) != 0) { media = MessageMedia.TLdeserialize(stream, stream.readInt32(exception), exception); + } else { + media = new TL_messageMediaEmpty(); } if ((flags & 64) != 0) { reply_markup = ReplyMarkup.TLdeserialize(stream, stream.readInt32(exception), exception); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBar.java b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBar.java index 1c76bc86d..692259feb 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBar.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBar.java @@ -12,21 +12,17 @@ import android.content.Context; import android.content.res.Configuration; import android.graphics.drawable.Drawable; import android.os.Build; -import android.text.TextUtils; -import android.util.TypedValue; import android.view.Gravity; import android.view.MotionEvent; import android.view.View; import android.widget.FrameLayout; import android.widget.ImageView; -import android.widget.TextView; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.AnimationCompat.AnimatorListenerAdapterProxy; import org.telegram.messenger.AnimationCompat.AnimatorSetProxy; import org.telegram.messenger.AnimationCompat.ObjectAnimatorProxy; import org.telegram.messenger.ApplicationLoader; -import org.telegram.messenger.R; import org.telegram.ui.Components.LayoutHelper; import java.util.ArrayList; @@ -44,21 +40,23 @@ public class ActionBar extends FrameLayout { } private ImageView backButtonImageView; - private TextView titleTextView; - private TextView subTitleTextView; + private SimpleTextView titleTextView; + private SimpleTextView subtitleTextView; private View actionModeTop; private ActionBarMenu menu; private ActionBarMenu actionMode; private boolean occupyStatusBar = Build.VERSION.SDK_INT >= 21; private boolean actionModeVisible; private boolean addToContainer = true; + private boolean interceptTouches = true; + private int extraHeight; private boolean allowOverlayTitle; private CharSequence lastTitle; private boolean castShadows = true; protected boolean isSearchFieldVisible; - protected int itemsBackgroundResourceId; + protected int itemsBackgroundColor; private boolean isBackOverlayVisible; protected BaseFragment parentFragment; public ActionBarMenuOnItemClick actionBarMenuOnItemClick; @@ -73,7 +71,7 @@ public class ActionBar extends FrameLayout { } backButtonImageView = new ImageView(getContext()); backButtonImageView.setScaleType(ImageView.ScaleType.CENTER); - backButtonImageView.setBackgroundResource(itemsBackgroundResourceId); + backButtonImageView.setBackgroundDrawable(Theme.createBarSelectorDrawable(itemsBackgroundColor)); backButtonImageView.setPadding(AndroidUtilities.dp(1), 0, 0, 0); addView(backButtonImageView, LayoutHelper.createFrame(54, 54, Gravity.LEFT | Gravity.TOP)); @@ -110,18 +108,14 @@ public class ActionBar extends FrameLayout { backButtonImageView.setImageResource(resource); } - private void createSubtitleTextView() { - if (subTitleTextView != null) { + private void createsubtitleTextView() { + if (subtitleTextView != null) { return; } - subTitleTextView = new TextView(getContext()); - subTitleTextView.setGravity(Gravity.LEFT); - subTitleTextView.setTextColor(0xffd7e8f7); - subTitleTextView.setSingleLine(true); - subTitleTextView.setLines(1); - subTitleTextView.setMaxLines(1); - subTitleTextView.setEllipsize(TextUtils.TruncateAt.END); - addView(subTitleTextView, 0, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.TOP)); + subtitleTextView = new SimpleTextView(getContext()); + subtitleTextView.setGravity(Gravity.LEFT); + subtitleTextView.setTextColor(Theme.ACTION_BAR_SUBTITLE_COLOR); + addView(subtitleTextView, 0, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.TOP)); } public void setAddToContainer(boolean value) { @@ -133,12 +127,12 @@ public class ActionBar extends FrameLayout { } public void setSubtitle(CharSequence value) { - if (value != null && subTitleTextView == null) { - createSubtitleTextView(); + if (value != null && subtitleTextView == null) { + createsubtitleTextView(); } - if (subTitleTextView != null) { - subTitleTextView.setVisibility(value != null && !isSearchFieldVisible ? VISIBLE : INVISIBLE); - subTitleTextView.setText(value); + if (subtitleTextView != null) { + subtitleTextView.setVisibility(value != null && !isSearchFieldVisible ? VISIBLE : INVISIBLE); + subtitleTextView.setText(value); } } @@ -146,12 +140,8 @@ public class ActionBar extends FrameLayout { if (titleTextView != null) { return; } - titleTextView = new TextView(getContext()); + titleTextView = new SimpleTextView(getContext()); titleTextView.setGravity(Gravity.LEFT); - titleTextView.setLines(1); - titleTextView.setMaxLines(1); - titleTextView.setSingleLine(true); - titleTextView.setEllipsize(TextUtils.TruncateAt.END); titleTextView.setTextColor(0xffffffff); titleTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); addView(titleTextView, 0, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.TOP)); @@ -168,18 +158,14 @@ public class ActionBar extends FrameLayout { } } - public TextView getSubTitleTextView() { - return subTitleTextView; + public SimpleTextView getSubtitleTextView() { + return subtitleTextView; } - public TextView getTitleTextView() { + public SimpleTextView getTitleTextView() { return titleTextView; } - public Drawable getSubTitleIcon() { - return subTitleTextView.getCompoundDrawables()[0]; - } - public String getTitle() { if (titleTextView == null) { return null; @@ -258,8 +244,8 @@ public class ActionBar extends FrameLayout { if (titleTextView != null) { titleTextView.setVisibility(INVISIBLE); } - if (subTitleTextView != null) { - subTitleTextView.setVisibility(INVISIBLE); + if (subtitleTextView != null) { + subtitleTextView.setVisibility(INVISIBLE); } if (menu != null) { menu.setVisibility(INVISIBLE); @@ -275,8 +261,8 @@ public class ActionBar extends FrameLayout { if (titleTextView != null) { titleTextView.setVisibility(INVISIBLE); } - if (subTitleTextView != null) { - subTitleTextView.setVisibility(INVISIBLE); + if (subtitleTextView != null) { + subtitleTextView.setVisibility(INVISIBLE); } if (menu != null) { menu.setVisibility(INVISIBLE); @@ -287,7 +273,7 @@ public class ActionBar extends FrameLayout { if (drawable instanceof BackDrawable) { ((BackDrawable) drawable).setRotation(1, true); } - backButtonImageView.setBackgroundResource(R.drawable.bar_selector_mode); + backButtonImageView.setBackgroundDrawable(Theme.createBarSelectorDrawable(itemsBackgroundColor)); } } @@ -324,8 +310,8 @@ public class ActionBar extends FrameLayout { if (titleTextView != null) { titleTextView.setVisibility(VISIBLE); } - if (subTitleTextView != null) { - subTitleTextView.setVisibility(VISIBLE); + if (subtitleTextView != null) { + subtitleTextView.setVisibility(VISIBLE); } if (menu != null) { menu.setVisibility(VISIBLE); @@ -335,7 +321,7 @@ public class ActionBar extends FrameLayout { if (drawable instanceof BackDrawable) { ((BackDrawable) drawable).setRotation(0, true); } - backButtonImageView.setBackgroundResource(itemsBackgroundResourceId); + backButtonImageView.setBackgroundDrawable(Theme.createBarSelectorDrawable(itemsBackgroundColor)); } } @@ -361,8 +347,8 @@ public class ActionBar extends FrameLayout { if (titleTextView != null) { titleTextView.setVisibility(visible ? INVISIBLE : VISIBLE); } - if (subTitleTextView != null) { - subTitleTextView.setVisibility(visible ? INVISIBLE : VISIBLE); + if (subtitleTextView != null) { + subtitleTextView.setVisibility(visible ? INVISIBLE : VISIBLE); } Drawable drawable = backButtonImageView.getDrawable(); if (drawable != null && drawable instanceof MenuDrawable) { @@ -370,6 +356,14 @@ public class ActionBar extends FrameLayout { } } + public void setInterceptTouches(boolean value) { + interceptTouches = value; + } + + public void setExtraHeight(int value) { + extraHeight = value; + } + public void closeSearchField() { if (!isSearchFieldVisible || menu == null) { return; @@ -391,7 +385,7 @@ public class ActionBar extends FrameLayout { int actionBarHeight = getCurrentActionBarHeight(); int actionBarHeightSpec = MeasureSpec.makeMeasureSpec(actionBarHeight, MeasureSpec.EXACTLY); - setMeasuredDimension(width, actionBarHeight + (occupyStatusBar ? AndroidUtilities.statusBarHeight : 0)); + setMeasuredDimension(width, actionBarHeight + (occupyStatusBar ? AndroidUtilities.statusBarHeight : 0) + extraHeight); int textLeft; if (backButtonImageView != null && backButtonImageView.getVisibility() != GONE) { @@ -411,24 +405,24 @@ public class ActionBar extends FrameLayout { menu.measure(menuWidth, actionBarHeightSpec); } - if (titleTextView != null && titleTextView.getVisibility() != GONE || subTitleTextView != null && subTitleTextView.getVisibility() != GONE) { + if (titleTextView != null && titleTextView.getVisibility() != GONE || subtitleTextView != null && subtitleTextView.getVisibility() != GONE) { int availableWidth = width - (menu != null ? menu.getMeasuredWidth() : 0) - AndroidUtilities.dp(16) - textLeft; if (titleTextView != null && titleTextView.getVisibility() != GONE) { - titleTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, !AndroidUtilities.isTablet() && getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE ? 18 : 20); - titleTextView.measure(MeasureSpec.makeMeasureSpec(availableWidth, MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(actionBarHeight, MeasureSpec.AT_MOST)); + titleTextView.setTextSize(!AndroidUtilities.isTablet() && getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE ? 18 : 20); + titleTextView.measure(MeasureSpec.makeMeasureSpec(availableWidth, MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(24), MeasureSpec.AT_MOST)); } - if (subTitleTextView != null && subTitleTextView.getVisibility() != GONE) { - subTitleTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, !AndroidUtilities.isTablet() && getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE ? 14 : 16); - subTitleTextView.measure(MeasureSpec.makeMeasureSpec(availableWidth, MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(actionBarHeight, MeasureSpec.AT_MOST)); + if (subtitleTextView != null && subtitleTextView.getVisibility() != GONE) { + subtitleTextView.setTextSize(!AndroidUtilities.isTablet() && getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE ? 14 : 16); + subtitleTextView.measure(MeasureSpec.makeMeasureSpec(availableWidth, MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(20), MeasureSpec.AT_MOST)); } } int childCount = getChildCount(); for (int i = 0; i < childCount; i++) { View child = getChildAt(i); - if (child.getVisibility() == GONE || child == titleTextView || child == subTitleTextView || child == menu || child == backButtonImageView) { + if (child.getVisibility() == GONE || child == titleTextView || child == subtitleTextView || child == menu || child == backButtonImageView) { continue; } measureChildWithMargins(child, widthMeasureSpec, 0, MeasureSpec.makeMeasureSpec(getMeasuredHeight(), MeasureSpec.EXACTLY), 0); @@ -452,25 +446,24 @@ public class ActionBar extends FrameLayout { menu.layout(menuLeft, additionalTop, menuLeft + menu.getMeasuredWidth(), additionalTop + menu.getMeasuredHeight()); } - int offset = AndroidUtilities.dp(!AndroidUtilities.isTablet() && getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE ? 1 : 2); if (titleTextView != null && titleTextView.getVisibility() != GONE) { int textTop; - if (subTitleTextView != null && subTitleTextView.getVisibility() != GONE) { - textTop = (getCurrentActionBarHeight() / 2 - titleTextView.getMeasuredHeight()) / 2 + offset; + if (subtitleTextView != null && subtitleTextView.getVisibility() != GONE) { + textTop = (getCurrentActionBarHeight() / 2 - titleTextView.getTextHeight()) / 2 + AndroidUtilities.dp(!AndroidUtilities.isTablet() && getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE ? 2 : 3); } else { - textTop = (getCurrentActionBarHeight() - titleTextView.getMeasuredHeight()) / 2 - AndroidUtilities.dp(1); + textTop = (getCurrentActionBarHeight() - titleTextView.getTextHeight()) / 2; } - titleTextView.layout(textLeft, additionalTop + textTop, textLeft + titleTextView.getMeasuredWidth(), additionalTop + textTop + titleTextView.getMeasuredHeight()); + titleTextView.layout(textLeft, additionalTop + textTop, textLeft + titleTextView.getMeasuredWidth(), additionalTop + textTop + titleTextView.getTextHeight()); } - if (subTitleTextView != null && subTitleTextView.getVisibility() != GONE) { - int textTop = getCurrentActionBarHeight() / 2 + (getCurrentActionBarHeight() / 2 - subTitleTextView.getMeasuredHeight()) / 2 - offset; - subTitleTextView.layout(textLeft, additionalTop + textTop, textLeft + subTitleTextView.getMeasuredWidth(), additionalTop + textTop + subTitleTextView.getMeasuredHeight()); + if (subtitleTextView != null && subtitleTextView.getVisibility() != GONE) { + int textTop = getCurrentActionBarHeight() / 2 + (getCurrentActionBarHeight() / 2 - subtitleTextView.getTextHeight()) / 2 - AndroidUtilities.dp(!AndroidUtilities.isTablet() && getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE ? 1 : 1); + subtitleTextView.layout(textLeft, additionalTop + textTop, textLeft + subtitleTextView.getMeasuredWidth(), additionalTop + textTop + subtitleTextView.getTextHeight()); } int childCount = getChildCount(); for (int i = 0; i < childCount; i++) { View child = getChildAt(i); - if (child.getVisibility() == GONE || child == titleTextView || child == subTitleTextView || child == menu || child == backButtonImageView) { + if (child.getVisibility() == GONE || child == titleTextView || child == subtitleTextView || child == menu || child == backButtonImageView) { continue; } @@ -563,10 +556,10 @@ public class ActionBar extends FrameLayout { return occupyStatusBar; } - public void setItemsBackground(int resourceId) { - itemsBackgroundResourceId = resourceId; + public void setItemsBackgroundColor(int color) { + itemsBackgroundColor = color; if (backButtonImageView != null) { - backButtonImageView.setBackgroundResource(itemsBackgroundResourceId); + backButtonImageView.setBackgroundDrawable(Theme.createBarSelectorDrawable(itemsBackgroundColor)); } } @@ -580,8 +573,7 @@ public class ActionBar extends FrameLayout { @Override public boolean onTouchEvent(MotionEvent event) { - super.onTouchEvent(event); - return true; + return super.onTouchEvent(event) || interceptTouches; } public static int getCurrentActionBarHeight() { 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 0bc3537ed..2eab94314 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarLayout.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarLayout.java @@ -28,6 +28,7 @@ import android.widget.FrameLayout; import android.widget.LinearLayout; import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.FileLog; import org.telegram.messenger.R; import org.telegram.messenger.AnimationCompat.AnimatorListenerAdapterProxy; import org.telegram.messenger.AnimationCompat.AnimatorSetProxy; @@ -248,7 +249,7 @@ public class ActionBarLayout extends FrameLayout { } final int restoreCount = canvas.save(); - if (!transitionAnimationInProgress && clipLeft != 0 && clipRight != 0) { + if (!transitionAnimationInProgress) { canvas.clipRect(clipLeft, 0, clipRight, getHeight()); } final boolean result = super.drawChild(canvas, child, drawingTime); @@ -427,7 +428,7 @@ public class ActionBarLayout extends FrameLayout { distToMove = containerView.getMeasuredWidth() - x; animatorSet.playTogether( ObjectAnimatorProxy.ofFloat(containerView, "translationX", containerView.getMeasuredWidth()), - ObjectAnimatorProxy.ofFloat(this, "innerTranslationX", (float)containerView.getMeasuredWidth()) + ObjectAnimatorProxy.ofFloat(this, "innerTranslationX", (float) containerView.getMeasuredWidth()) ); } else { distToMove = x; @@ -706,6 +707,7 @@ public class ActionBarLayout extends FrameLayout { ViewProxy.setTranslationX(containerView, 0); } }; + FileLog.e("tmessages", "onOpenAnimationsStart"); fragment.onTransitionAnimationStart(true, false); AnimatorSetProxy animation = fragment.onCustomTransitionAnimation(true, new Runnable() { @Override @@ -828,6 +830,7 @@ public class ActionBarLayout extends FrameLayout { layoutParams.width = LayoutHelper.MATCH_PARENT; layoutParams.height = LayoutHelper.MATCH_PARENT; fragmentView.setLayoutParams(layoutParams); + FileLog.e("tmessages", "onCloseAnimationStart"); previousFragment.onTransitionAnimationStart(true, true); currentFragment.onTransitionAnimationStart(false, false); previousFragment.onResume(); @@ -918,6 +921,7 @@ public class ActionBarLayout extends FrameLayout { onAnimationEndCheck(false); } }); + FileLog.e("tmessages", "onCloseAnimationsStart"); currentAnimation.start(); } else { removeFragmentFromStackInternal(currentFragment); @@ -1043,11 +1047,13 @@ public class ActionBarLayout extends FrameLayout { if (post) { new Handler().post(new Runnable() { public void run() { + FileLog.e("tmessages", "onCloseAnimationEnd"); onCloseAnimationEndRunnable.run(); onCloseAnimationEndRunnable = null; } }); } else { + FileLog.e("tmessages", "onCloseAnimationEnd"); onCloseAnimationEndRunnable.run(); onCloseAnimationEndRunnable = null; } @@ -1061,11 +1067,13 @@ public class ActionBarLayout extends FrameLayout { if (post) { new Handler().post(new Runnable() { public void run() { + FileLog.e("tmessages", "onOpenAnimationEnd"); onOpenAnimationEndRunnable.run(); onOpenAnimationEndRunnable = null; } }); } else { + FileLog.e("tmessages", "onOpenAnimationEnd"); onOpenAnimationEndRunnable.run(); onOpenAnimationEndRunnable = null; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenu.java b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenu.java index 374c1ee3a..bc9516e4d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenu.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenu.java @@ -38,7 +38,7 @@ public class ActionBarMenu extends LinearLayout { addView(view); LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) view.getLayoutParams(); layoutParams.height = LayoutHelper.MATCH_PARENT; - view.setBackgroundResource(parentActionBar.itemsBackgroundResourceId); + view.setBackgroundDrawable(Theme.createBarSelectorDrawable(parentActionBar.itemsBackgroundColor)); view.setLayoutParams(layoutParams); view.setOnClickListener(new OnClickListener() { @Override @@ -50,23 +50,23 @@ public class ActionBarMenu extends LinearLayout { } public ActionBarMenuItem addItem(int id, Drawable drawable) { - return addItem(id, 0, parentActionBar.itemsBackgroundResourceId, drawable, AndroidUtilities.dp(48)); + return addItem(id, 0, parentActionBar.itemsBackgroundColor, drawable, AndroidUtilities.dp(48)); } public ActionBarMenuItem addItem(int id, int icon) { - return addItem(id, icon, parentActionBar.itemsBackgroundResourceId); + return addItem(id, icon, parentActionBar.itemsBackgroundColor); } - public ActionBarMenuItem addItem(int id, int icon, int backgroundResource) { - return addItem(id, icon, backgroundResource, null, AndroidUtilities.dp(48)); + public ActionBarMenuItem addItem(int id, int icon, int backgroundColor) { + return addItem(id, icon, backgroundColor, null, AndroidUtilities.dp(48)); } public ActionBarMenuItem addItemWithWidth(int id, int icon, int width) { - return addItem(id, icon, parentActionBar.itemsBackgroundResourceId, null, width); + return addItem(id, icon, parentActionBar.itemsBackgroundColor, null, width); } - public ActionBarMenuItem addItem(int id, int icon, int backgroundResource, Drawable drawable, int width) { - ActionBarMenuItem menuItem = new ActionBarMenuItem(getContext(), this, backgroundResource); + public ActionBarMenuItem addItem(int id, int icon, int backgroundColor, Drawable drawable, int width) { + ActionBarMenuItem menuItem = new ActionBarMenuItem(getContext(), this, backgroundColor); menuItem.setTag(id); if (drawable != null) { menuItem.iconView.setImageDrawable(drawable); 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 40618db78..350d9a89e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenuItem.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenuItem.java @@ -85,9 +85,11 @@ public class ActionBarMenuItem extends FrameLayoutFixed { protected boolean overrideMenuClick; private boolean processedPopupClick; - public ActionBarMenuItem(Context context, ActionBarMenu menu, int background) { + public ActionBarMenuItem(Context context, ActionBarMenu menu, int backgroundColor) { super(context); - setBackgroundResource(background); + if (backgroundColor != 0) { + setBackgroundDrawable(Theme.createBarSelectorDrawable(backgroundColor)); + } parentMenu = menu; iconView = new ImageView(context); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/BaseFragment.java b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/BaseFragment.java index 46631c952..126612e3d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/BaseFragment.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/BaseFragment.java @@ -19,7 +19,6 @@ import android.view.ViewGroup; import org.telegram.messenger.AnimationCompat.AnimatorSetProxy; import org.telegram.messenger.FileLog; -import org.telegram.messenger.R; import org.telegram.tgnet.ConnectionsManager; public class BaseFragment { @@ -116,14 +115,19 @@ public class BaseFragment { } } if (parentLayout != null && actionBar == null) { - actionBar = new ActionBar(parentLayout.getContext()); + actionBar = createActionBar(parentLayout.getContext()); actionBar.parentFragment = this; - actionBar.setBackgroundColor(0xff54759e); - actionBar.setItemsBackground(R.drawable.bar_selector); } } } + protected ActionBar createActionBar(Context context) { + ActionBar actionBar = new ActionBar(context); + actionBar.setBackgroundColor(Theme.ACTION_BAR_COLOR); + actionBar.setItemsBackgroundColor(Theme.ACTION_BAR_SELECTOR_COLOR); + return actionBar; + } + public void finishFragment() { finishFragment(true); } 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 b201c06f1..7f9b294e3 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/BottomSheet.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/BottomSheet.java @@ -56,11 +56,13 @@ public class BottomSheet extends Dialog { private LinearLayout containerView; private FrameLayout container; - private Object lastInsets; + private WindowInsets lastInsets; private boolean dismissed; private int tag; + private boolean disableBackground; + private DialogInterface.OnClickListener onClickListener; private CharSequence[] items; @@ -70,20 +72,21 @@ public class BottomSheet extends Dialog { private boolean fullWidth; private boolean isGrid; private ColorDrawable backgroundDrawable = new ColorDrawable(0xff000000); - private static Drawable shadowDrawable; private boolean focusable; private Paint ciclePaint = new Paint(Paint.ANTI_ALIAS_FLAG); - private static int backgroundPaddingTop; - private static int backgroundPaddingLeft; + private Drawable shadowDrawable; + protected static int backgroundPaddingTop; + protected static int backgroundPaddingLeft; private boolean useRevealAnimation; private float revealRadius; private int revealX; private int revealY; - private boolean applyTopPaddings = true; + private boolean applyTopPadding = true; + private boolean applyBottomPadding = true; private DecelerateInterpolator decelerateInterpolator = new DecelerateInterpolator(); private AccelerateInterpolator accelerateInterpolator = new AccelerateInterpolator(); @@ -212,7 +215,17 @@ public class BottomSheet extends Dialog { } public BottomSheet(Context context, boolean needFocus) { - super(context); + super(context, R.style.TransparentDialog); + + if (Build.VERSION.SDK_INT >= 21 && !"N".equals(Build.VERSION.CODENAME)) { + getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); + } + + Rect padding = new Rect(); + shadowDrawable = context.getResources().getDrawable(R.drawable.sheet_shadow); + shadowDrawable.getPadding(padding); + backgroundPaddingLeft = padding.left; + backgroundPaddingTop = padding.top; container = new FrameLayout(getContext()) { @@ -227,12 +240,17 @@ public class BottomSheet extends Dialog { if (containerView != null) { int left = useRevealAnimation && Build.VERSION.SDK_INT <= 19 ? 0 : backgroundPaddingLeft; if (!fullWidth) { + int widthSpec; if (AndroidUtilities.isTablet()) { - int side = (int) (Math.min(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y) * 0.8f); - containerView.measure(MeasureSpec.makeMeasureSpec(side + left * 2, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(height, MeasureSpec.AT_MOST)); + widthSpec = MeasureSpec.makeMeasureSpec((int) (Math.min(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y) * 0.8f) + left * 2, MeasureSpec.EXACTLY); } else { - int maxWidth = Math.min(AndroidUtilities.dp(480), width); - containerView.measure(isPortrait ? MeasureSpec.makeMeasureSpec(width + left * 2, MeasureSpec.EXACTLY) : MeasureSpec.makeMeasureSpec((int) Math.max(width * 0.8f, maxWidth) + left * 2, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(height, MeasureSpec.AT_MOST)); + widthSpec = MeasureSpec.makeMeasureSpec(isPortrait ? width + left * 2 : (int) Math.max(width * 0.8f, Math.min(AndroidUtilities.dp(480), width)) + left * 2, MeasureSpec.EXACTLY); + } + if (lastInsets != null && Build.VERSION.SDK_INT >= 21 && focusable) { + containerView.getLayoutParams(); + containerView.measure(widthSpec, MeasureSpec.makeMeasureSpec(height - lastInsets.getSystemWindowInsetBottom(), MeasureSpec.AT_MOST)); + } else { + containerView.measure(widthSpec, MeasureSpec.makeMeasureSpec(height, MeasureSpec.AT_MOST)); } } else { containerView.measure(MeasureSpec.makeMeasureSpec(width + left * 2, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(height, MeasureSpec.AT_MOST)); @@ -245,9 +263,7 @@ public class BottomSheet extends Dialog { continue; } if (lastInsets != null && Build.VERSION.SDK_INT >= 21) { - WindowInsets wi = (WindowInsets) lastInsets; - wi = wi.replaceSystemWindowInsets(wi.getSystemWindowInsetLeft(), wi.getSystemWindowInsetTop(), 0, wi.getSystemWindowInsetBottom()); - child.dispatchApplyWindowInsets(wi); + child.dispatchApplyWindowInsets(lastInsets); } measureChildWithMargins(child, MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY), 0, MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY), 0); } @@ -258,6 +274,13 @@ public class BottomSheet extends Dialog { if (containerView != null) { int l = ((right - left) - containerView.getMeasuredWidth()) / 2; int t = (bottom - top) - containerView.getMeasuredHeight(); + if (lastInsets != null && Build.VERSION.SDK_INT >= 21) { + l += lastInsets.getSystemWindowInsetLeft() / 2; + l -= lastInsets.getSystemWindowInsetRight() / 2; + if (focusable) { + t -= lastInsets.getSystemWindowInsetBottom(); + } + } containerView.layout(l, t, l + containerView.getMeasuredWidth(), t + getMeasuredHeight()); } @@ -321,14 +344,14 @@ public class BottomSheet extends Dialog { }); container.setBackgroundDrawable(backgroundDrawable); focusable = needFocus; - if (Build.VERSION.SDK_INT >= 21 && !focusable) { + if (Build.VERSION.SDK_INT >= 21 && !"N".equals(Build.VERSION.CODENAME)) { container.setFitsSystemWindows(true); container.setOnApplyWindowInsetsListener(new View.OnApplyWindowInsetsListener() { @SuppressLint("NewApi") @Override public WindowInsets onApplyWindowInsets(View v, WindowInsets insets) { lastInsets = insets; - container.requestLayout(); + v.requestLayout(); return insets.consumeSystemWindowInsets(); } }); @@ -341,18 +364,7 @@ public class BottomSheet extends Dialog { super.onCreate(savedInstanceState); Window window = getWindow(); - window.setBackgroundDrawableResource(R.drawable.transparent); - window.requestFeature(Window.FEATURE_NO_TITLE); window.setWindowAnimations(R.style.DialogNoAnimation); - - if (shadowDrawable == null) { - Rect padding = new Rect(); - shadowDrawable = getContext().getResources().getDrawable(R.drawable.sheet_shadow); - shadowDrawable.getPadding(padding); - backgroundPaddingLeft = padding.left; - backgroundPaddingTop = padding.top; - } - setContentView(container, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); ciclePaint.setColor(0xffffffff); @@ -363,8 +375,6 @@ public class BottomSheet extends Dialog { protected void onDraw(Canvas canvas) { if (useRevealAnimation && Build.VERSION.SDK_INT <= 19) { canvas.drawCircle(revealX, revealY, revealRadius, ciclePaint); - //shadowDrawable.setBounds(0, 0, getMeasuredWidth(), getMeasuredHeight()); - //shadowDrawable.draw(canvas); } } @@ -373,6 +383,11 @@ public class BottomSheet extends Dialog { return super.drawChild(canvas, child, drawingTime); } }; + if (Build.VERSION.SDK_INT >= 21) { + containerView.setFitsSystemWindows(true); + } + containerView.setVisibility(View.INVISIBLE); + backgroundDrawable.setAlpha(0); containerView.setWillNotDraw(false); containerView.setOrientation(LinearLayout.VERTICAL); container.addView(containerView, 0, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.BOTTOM)); @@ -456,20 +471,18 @@ public class BottomSheet extends Dialog { } } - WindowManager.LayoutParams params = getWindow().getAttributes(); + WindowManager.LayoutParams params = window.getAttributes(); params.width = ViewGroup.LayoutParams.MATCH_PARENT; params.gravity = Gravity.TOP | Gravity.LEFT; + params.dimAmount = 0; + params.flags &= ~WindowManager.LayoutParams.FLAG_DIM_BEHIND; if (!focusable) { params.flags |= WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM; - params.dimAmount = 0; - params.flags &= ~WindowManager.LayoutParams.FLAG_DIM_BEHIND; - } else { - params.dimAmount = 0.2f; } if (Build.VERSION.SDK_INT < 21) { params.height = ViewGroup.LayoutParams.MATCH_PARENT; } - getWindow().setAttributes(params); + window.setAttributes(params); } @Override @@ -479,14 +492,14 @@ public class BottomSheet extends Dialog { getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); } dismissed = false; - if (Build.VERSION.SDK_INT >= 21 || !useRevealAnimation) { + if ((Build.VERSION.SDK_INT >= 21 || !useRevealAnimation) && !disableBackground) { containerView.setBackgroundDrawable(shadowDrawable); } else { containerView.setBackgroundDrawable(null); } - int left = useRevealAnimation && Build.VERSION.SDK_INT <= 19 ? 0 : backgroundPaddingLeft; - int top = useRevealAnimation && Build.VERSION.SDK_INT <= 19 ? 0 : backgroundPaddingTop; - containerView.setPadding(left, (applyTopPaddings ? AndroidUtilities.dp(8) : 0) + top, left, (applyTopPaddings ? AndroidUtilities.dp(isGrid ? 16 : 8) : 0)); + int left = useRevealAnimation && Build.VERSION.SDK_INT <= 19 || disableBackground ? 0 : backgroundPaddingLeft; + int top = useRevealAnimation && Build.VERSION.SDK_INT <= 19 || disableBackground ? 0 : backgroundPaddingTop; + containerView.setPadding(left, (applyTopPadding ? AndroidUtilities.dp(8) : 0) + top, left, (applyBottomPadding ? AndroidUtilities.dp(isGrid ? 16 : 8) : 0)); if (Build.VERSION.SDK_INT >= 21) { AndroidUtilities.runOnUIThread(new Runnable() { @Override @@ -499,6 +512,26 @@ public class BottomSheet extends Dialog { } } + public void setCustomView(View view) { + customView = view; + } + + public void setTitle(CharSequence value) { + title = value; + } + + public void setApplyTopPadding(boolean value) { + applyTopPadding = value; + } + + public void setApplyBottomPadding(boolean value) { + applyBottomPadding = value; + } + + public void setDisableBackground(boolean value) { + disableBackground = value; + } + protected void setRevealRadius(float radius) { revealRadius = radius; delegate.onRevealAnimationProgress(!dismissed, radius, revealX, revealY); @@ -513,12 +546,6 @@ public class BottomSheet extends Dialog { @SuppressLint("NewApi") private void startRevealAnimation(final boolean open) { - if (open) { - backgroundDrawable.setAlpha(0); - containerView.setVisibility(View.VISIBLE); - } else { - backgroundDrawable.setAlpha(51); - } ViewProxy.setTranslationY(containerView, 0); AnimatorSet animatorSet = new AnimatorSet(); @@ -621,6 +648,8 @@ public class BottomSheet extends Dialog { if (containerView.getMeasuredHeight() == 0) { containerView.measure(View.MeasureSpec.makeMeasureSpec(AndroidUtilities.displaySize.x, View.MeasureSpec.AT_MOST), View.MeasureSpec.makeMeasureSpec(AndroidUtilities.displaySize.y, View.MeasureSpec.AT_MOST)); } + backgroundDrawable.setAlpha(0); + containerView.setVisibility(View.VISIBLE); if (useRevealAnimation) { startRevealAnimation(true); } else { @@ -629,7 +658,7 @@ public class BottomSheet extends Dialog { AnimatorSetProxy animatorSetProxy = new AnimatorSetProxy(); animatorSetProxy.playTogether( ObjectAnimatorProxy.ofFloat(containerView, "translationY", 0), - ObjectAnimatorProxy.ofInt(backgroundDrawable, "alpha", focusable ? 0 : 51)); + ObjectAnimatorProxy.ofInt(backgroundDrawable, "alpha", 51)); animatorSetProxy.setDuration(200); animatorSetProxy.setStartDelay(20); animatorSetProxy.setInterpolator(new DecelerateInterpolator()); @@ -712,6 +741,7 @@ public class BottomSheet extends Dialog { } dismissed = true; if (useRevealAnimation) { + backgroundDrawable.setAlpha(51); startRevealAnimation(false); } else { AnimatorSetProxy animatorSetProxy = new AnimatorSetProxy(); @@ -806,8 +836,13 @@ public class BottomSheet extends Dialog { return this; } - public Builder setApplyTopPaddings(boolean value) { - bottomSheet.applyTopPaddings = value; + public Builder setApplyTopPadding(boolean value) { + bottomSheet.applyTopPadding = value; + return this; + } + + public Builder setApplyBottomPadding(boolean value) { + bottomSheet.applyBottomPadding = value; return this; } 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 bb8e63493..f70a67e1a 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/DrawerLayoutContainer.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/DrawerLayoutContainer.java @@ -70,23 +70,23 @@ public class DrawerLayoutContainer extends FrameLayout { if (Build.VERSION.SDK_INT >= 21) { setFitsSystemWindows(true); - setOnApplyWindowInsetsListener(new InsetsListener()); + setOnApplyWindowInsetsListener(new OnApplyWindowInsetsListener() { + @SuppressLint("NewApi") + @Override + public WindowInsets onApplyWindowInsets(View v, WindowInsets insets) { + final DrawerLayoutContainer drawerLayout = (DrawerLayoutContainer) v; + lastInsets = insets; + drawerLayout.setWillNotDraw(insets.getSystemWindowInsetTop() <= 0 && getBackground() == null); + drawerLayout.requestLayout(); + return insets.consumeSystemWindowInsets(); + } + }); setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); } shadowLeft = getResources().getDrawable(R.drawable.menu_shadow); } - @SuppressLint("NewApi") - private class InsetsListener implements View.OnApplyWindowInsetsListener { - @Override - public WindowInsets onApplyWindowInsets(View v, WindowInsets insets) { - final DrawerLayoutContainer drawerLayout = (DrawerLayoutContainer) v; - drawerLayout.setChildInsets(insets, insets.getSystemWindowInsetTop() > 0); - return insets.consumeSystemWindowInsets(); - } - } - @SuppressLint("NewApi") private void dispatchChildInsets(View child, Object insets, int drawerGravity) { WindowInsets wi = (WindowInsets) insets; @@ -119,12 +119,6 @@ public class DrawerLayoutContainer extends FrameLayout { return 0; } - private void setChildInsets(Object insets, boolean draw) { - lastInsets = insets; - setWillNotDraw(!draw && getBackground() == null); - requestLayout(); - } - public void setDrawerLayout(ViewGroup layout) { drawerLayout = layout; addView(drawerLayout); @@ -371,6 +365,7 @@ public class DrawerLayoutContainer extends FrameLayout { @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { inLayout = true; + FileLog.w("tmessages", "onLayout"); final int childCount = getChildCount(); for (int i = 0; i < childCount; i++) { final View child = getChildAt(i); @@ -397,6 +392,10 @@ public class DrawerLayoutContainer extends FrameLayout { @Override public void requestLayout() { if (!inLayout) { + /*StackTraceElement[] elements = Thread.currentThread().getStackTrace(); + for (int a = 0; a < elements.length; a++) { + FileLog.d("tmessages", "on " + elements[a]); + }*/ super.requestLayout(); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/SimpleTextView.java b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/SimpleTextView.java new file mode 100644 index 000000000..cdda2c80c --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/SimpleTextView.java @@ -0,0 +1,281 @@ +/* + * This is the source code of Telegram for Android v. 3.x.x. + * It is licensed under GNU GPL v. 2 or later. + * You should have received a copy of the license in this archive (see LICENSE). + * + * Copyright Nikolai Kudashov, 2013-2016. + */ + +package org.telegram.ui.ActionBar; + +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.Typeface; +import android.graphics.drawable.Drawable; +import android.text.Layout; +import android.text.SpannableStringBuilder; +import android.text.StaticLayout; +import android.text.TextPaint; +import android.text.TextUtils; +import android.view.Gravity; +import android.view.View; + +import org.telegram.messenger.AndroidUtilities; + +public class SimpleTextView extends View implements Drawable.Callback { + + private Layout layout; + private TextPaint textPaint; + private int gravity = Gravity.LEFT | Gravity.TOP; + private CharSequence text; + private SpannableStringBuilder spannableStringBuilder; + private Drawable leftDrawable; + private Drawable rightDrawable; + private int drawablePadding = AndroidUtilities.dp(4); + private int leftDrawableTopPadding; + private int rightDrawableTopPadding; + + private int offsetX; + private int textWidth; + private int textHeight; + private boolean wasLayout; + + public enum Alignment { + ALIGN_NORMAL, + ALIGN_OPPOSITE, + ALIGN_CENTER, + ALIGN_LEFT, + ALIGN_RIGHT + } + + public SimpleTextView(Context context) { + super(context); + textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); + } + + public void setTextColor(int color) { + textPaint.setColor(color); + invalidate(); + } + + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + wasLayout = false; + } + + public void setTextSize(int size) { + int newSize = AndroidUtilities.dp(size); + if (newSize == textPaint.getTextSize()) { + return; + } + textPaint.setTextSize(newSize); + recreateLayoutMaybe(); + } + + public void setGravity(int value) { + gravity = value; + } + + public void setTypeface(Typeface typeface) { + textPaint.setTypeface(typeface); + } + + public int getSideDrawablesSize() { + int size = 0; + if (leftDrawable != null) { + size += leftDrawable.getIntrinsicWidth() + drawablePadding; + } + if (rightDrawable != null) { + size += rightDrawable.getIntrinsicWidth() + drawablePadding; + } + return size; + } + + public Paint getPaint() { + return textPaint; + } + + private void createLayout(int width) { + if (text != null) { + try { + if (leftDrawable != null) { + width -= leftDrawable.getIntrinsicWidth(); + width -= drawablePadding; + } + if (rightDrawable != null) { + width -= rightDrawable.getIntrinsicWidth(); + width -= drawablePadding; + } + width -= getPaddingLeft() + getPaddingRight(); + CharSequence string = TextUtils.ellipsize(text, textPaint, width, TextUtils.TruncateAt.END); + if (layout != null && TextUtils.equals(layout.getText(), string)) { + return; + } + layout = new StaticLayout(string, 0, string.length(), textPaint, width + AndroidUtilities.dp(8), Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); + + if (layout.getLineCount() > 0) { + textWidth = (int) Math.ceil(layout.getLineWidth(0)); + textHeight = layout.getLineBottom(0); + if ((gravity & Gravity.HORIZONTAL_GRAVITY_MASK) == Gravity.LEFT) { + offsetX = -(int) layout.getLineLeft(0); + } else if (layout.getLineLeft(0) == 0) { + offsetX = width - textWidth; + } else { + offsetX = 0; + } + } + } catch (Exception e) { + //ignore + } + } else { + layout = null; + textWidth = 0; + textHeight = 0; + } + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + int width = MeasureSpec.getSize(widthMeasureSpec); + int height = MeasureSpec.getSize(heightMeasureSpec); + createLayout(width - getPaddingLeft() - getPaddingRight()); + + int finalHeight; + if (MeasureSpec.getMode(widthMeasureSpec) == MeasureSpec.EXACTLY) { + finalHeight = height; + } else { + finalHeight = textHeight; + } + setMeasuredDimension(width, finalHeight); + } + + @Override + protected void onLayout(boolean changed, int left, int top, int right, int bottom) { + if (changed) { + wasLayout = true; + } + } + + public int getTextWidth() { + return textWidth; + } + + public int getTextHeight() { + return textHeight; + } + + public void setLeftDrawableTopPadding(int value) { + leftDrawableTopPadding = value; + } + + public void setRightDrawableTopPadding(int value) { + rightDrawableTopPadding = value; + } + + public void setLeftDrawable(int resId) { + setLeftDrawable(resId == 0 ? null : getContext().getResources().getDrawable(resId)); + } + + public void setRightDrawable(int resId) { + setRightDrawable(resId == 0 ? null : getContext().getResources().getDrawable(resId)); + } + + public void setLeftDrawable(Drawable drawable) { + if (leftDrawable == drawable) { + return; + } + if (leftDrawable != null) { + leftDrawable.setCallback(null); + } + leftDrawable = drawable; + if (drawable != null) { + drawable.setCallback(this); + } + recreateLayoutMaybe(); + } + + public void setRightDrawable(Drawable drawable) { + if (rightDrawable == drawable) { + return; + } + if (rightDrawable != null) { + rightDrawable.setCallback(null); + } + rightDrawable = drawable; + if (drawable != null) { + drawable.setCallback(this); + } + recreateLayoutMaybe(); + } + + public void setText(CharSequence value) { + if (text == null && value == null || text != null && value != null && text.equals(value)) { + return; + } + text = value; + recreateLayoutMaybe(); + } + + public void setDrawablePadding(int value) { + if (drawablePadding == value) { + return; + } + drawablePadding = value; + recreateLayoutMaybe(); + } + + private void recreateLayoutMaybe() { + if (wasLayout) { + createLayout(getMeasuredWidth()); + invalidate(); + } else { + requestLayout(); + } + } + + public CharSequence getText() { + if (text == null) { + return ""; + } + return text; + } + + @Override + protected void onDraw(Canvas canvas) { + int textOffsetX = 0; + if (leftDrawable != null) { + int y = (textHeight - leftDrawable.getIntrinsicHeight()) / 2 + leftDrawableTopPadding; + leftDrawable.setBounds(0, y, leftDrawable.getIntrinsicWidth(), y + leftDrawable.getIntrinsicHeight()); + leftDrawable.draw(canvas); + if ((gravity & Gravity.HORIZONTAL_GRAVITY_MASK) == Gravity.LEFT) { + textOffsetX += drawablePadding + leftDrawable.getIntrinsicWidth(); + } + } + if (rightDrawable != null) { + int x = textOffsetX + textWidth + drawablePadding; + if (leftDrawable != null) { + x += drawablePadding + leftDrawable.getIntrinsicWidth(); + } + int y = (textHeight - rightDrawable.getIntrinsicHeight()) / 2 + rightDrawableTopPadding; + rightDrawable.setBounds(x, y, x + rightDrawable.getIntrinsicWidth(), y + rightDrawable.getIntrinsicHeight()); + rightDrawable.draw(canvas); + } + if (layout != null) { + if (offsetX + textOffsetX != 0) { + canvas.save(); + canvas.translate(offsetX + textOffsetX, 0); + } + layout.draw(canvas); + if (offsetX + textOffsetX != 0) { + canvas.restore(); + } + } + } + + @Override + public void invalidateDrawable(Drawable who) { + invalidate(); + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/Theme.java b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/Theme.java new file mode 100644 index 000000000..c529c9e16 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/Theme.java @@ -0,0 +1,419 @@ +/* + * This is the source code of Telegram for Android v. 3.x.x. + * It is licensed under GNU GPL v. 2 or later. + * You should have received a copy of the license in this archive (see LICENSE). + * + * Copyright Nikolai Kudashov, 2013-2016. + */ + +package org.telegram.ui.ActionBar; + +import android.content.Context; +import android.content.res.ColorStateList; +import android.graphics.Canvas; +import android.graphics.ColorFilter; +import android.graphics.Paint; +import android.graphics.PorterDuff; +import android.graphics.PorterDuffColorFilter; +import android.graphics.drawable.ColorDrawable; +import android.graphics.drawable.Drawable; +import android.graphics.drawable.RippleDrawable; +import android.graphics.drawable.StateListDrawable; +import android.os.Build; + +import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.ApplicationLoader; +import org.telegram.messenger.R; + +public class Theme { + + public static final int ACTION_BAR_COLOR = 0xff527da3; + public static final int ACTION_BAR_PHOTO_VIEWER_COLOR = 0x7f000000; + public static final int ACTION_BAR_MEDIA_PICKER_COLOR = 0xff333333; + public static final int ACTION_BAR_CHANNEL_INTRO_COLOR = 0xffffffff; + public static final int ACTION_BAR_PLAYER_COLOR = 0xffffffff; + public static final int ACTION_BAR_TITLE_COLOR = 0xffffffff; + public static final int ACTION_BAR_SUBTITLE_COLOR = 0xffd5e8f7; + public static final int ACTION_BAR_PROFILE_COLOR = 0xff598fba; + public static final int ACTION_BAR_PROFILE_SUBTITLE_COLOR = 0xffd7eafa; + public static final int ACTION_BAR_MAIN_AVATAR_COLOR = 0xff5085b1; + public static final int ACTION_BAR_ACTION_MODE_TEXT_COLOR = 0xff737373; + public static final int ACTION_BAR_SELECTOR_COLOR = 0xff406d94; + + public static final int INPUT_FIELD_SELECTOR_COLOR = 0xffd6d6d6; + public static final int ACTION_BAR_PICKER_SELECTOR_COLOR = 0xff3d3d3d; + public static final int ACTION_BAR_WHITE_SELECTOR_COLOR = 0x40ffffff; + public static final int ACTION_BAR_AUDIO_SELECTOR_COLOR = 0x2f000000; + public static final int ACTION_BAR_CHANNEL_INTRO_SELECTOR_COLOR = 0x2f000000; + public static final int ACTION_BAR_MODE_SELECTOR_COLOR = 0xfff0f0f0; + public static final int ACTION_BAR_BLUE_SELECTOR_COLOR = 0xff4981ad; + public static final int ACTION_BAR_CYAN_SELECTOR_COLOR = 0xff39849d; + public static final int ACTION_BAR_GREEN_SELECTOR_COLOR = 0xff48953d; + public static final int ACTION_BAR_ORANGE_SELECTOR_COLOR = 0xffe67429; + public static final int ACTION_BAR_PINK_SELECTOR_COLOR = 0xffd44e7b; + public static final int ACTION_BAR_RED_SELECTOR_COLOR = 0xffbc4b41; + public static final int ACTION_BAR_VIOLET_SELECTOR_COLOR = 0xff735fbe; + public static final int ACTION_BAR_YELLOW_SELECTOR_COLOR = 0xffef9f09; + + + + public static final int CHAT_UNREAD_TEXT_COLOR = 0xff5695cc; + public static final int CHAT_ADD_CONTACT_TEXT_COLOR = 0xff4a82b5; + public static final int CHAT_REPORT_SPAM_TEXT_COLOR = 0xffcf5957; + public static final int CHAT_BOTTOM_OVERLAY_TEXT_COLOR = 0xff7f7f7f; + public static final int CHAT_BOTTOM_CHAT_OVERLAY_TEXT_COLOR = 0xff3a8ccf; + public static final int CHAT_GIF_HINT_TEXT_COLOR = 0xffffffff; + public static final int CHAT_EMPTY_VIEW_TEXT_COLOR = 0xffffffff; + + public static final int INAPP_PLAYER_PERFORMER_TEXT_COLOR = 0xff2f3438; + public static final int INAPP_PLAYER_TITLE_TEXT_COLOR = 0xff2f3438; + public static final int INAPP_PLAYER_BACKGROUND_COLOR = 0xffffffff; + + public static final int REPLY_PANEL_NAME_TEXT_COLOR = 0xff3a8ccf; + public static final int REPLY_PANEL_MESSAGE_TEXT_COLOR = 0xff222222; + + public static final int ALERT_PANEL_NAME_TEXT_COLOR = 0xff3a8ccf; + public static final int ALERT_PANEL_MESSAGE_TEXT_COLOR = 0xff999999; + + public static final int AUTODOWNLOAD_SHEET_SAVE_TEXT_COLOR = 0xff3a8ccf; + + public static final int SHARE_SHEET_COPY_TEXT_COLOR = 0xff3a8ccf; + public static final int SHARE_SHEET_SEND_TEXT_COLOR = 0xff3ec1f9; + public static final int SHARE_SHEET_SEND_DISABLED_TEXT_COLOR = 0xffb3b3b3; + public static final int SHARE_SHEET_EDIT_TEXT_COLOR = 0xff212121; + public static final int SHARE_SHEET_EDIT_PLACEHOLDER_TEXT_COLOR = 0xff979797; + public static final int SHARE_SHEET_BADGE_TEXT_COLOR = 0xffffffff; + + public static final int STICKERS_SHEET_TITLE_TEXT_COLOR = 0xff212121; + public static final int STICKERS_SHEET_SEND_TEXT_COLOR = 0xff3a8ccf; + public static final int STICKERS_SHEET_ADD_TEXT_COLOR = 0xff3a8ccf; + public static final int STICKERS_SHEET_CLOSE_TEXT_COLOR = 0xff3a8ccf; + public static final int STICKERS_SHEET_REMOVE_TEXT_COLOR = 0xffcd5a5a; + + public static final int PINNED_PANEL_NAME_TEXT_COLOR = 0xff3a8ccf; + public static final int PINNED_PANEL_MESSAGE_TEXT_COLOR = 0xff999999; + + public static final int SECRET_CHAT_INFO_TEXT_COLOR = 0xffffffff; + + public static final int MSG_WEB_PREVIEW_DURATION_TEXT_COLOR = 0xffffffff; + public static final int MSG_SECRET_TIME_TEXT_COLOR = 0xffe4e2e0; + public static final int MSG_STICKER_NAME_TEXT_COLOR = 0xffffffff; + public static final int MSG_BOT_BUTTON_TEXT_COLOR = 0xffffffff; + public static final int MSG_BOT_PROGRESS_COLOR = 0xffffffff; + public static final int MSG_IN_FORDWARDED_NAME_TEXT_COLOR = 0xff3886c7; + public static final int MSG_OUT_FORDWARDED_NAME_TEXT_COLOR = 0xff55ab4f; + public static final int MSG_IN_VIA_BOT_NAME_TEXT_COLOR = 0xff3a8ccf; + public static final int MSG_OUT_VIA_BOT_NAME_TEXT_COLOR = 0xff55ab4f; + public static final int MSG_STICKER_VIA_BOT_NAME_TEXT_COLOR = 0xffffffff; + public static final int MSG_IN_REPLY_LINE_COLOR = 0xff70b4e8; + public static final int MSG_OUT_REPLY_LINE_COLOR = 0xff88c97b; + public static final int MSG_STICKER_REPLY_LINE_COLOR = 0xffffffff; + public static final int MSG_IN_REPLY_NAME_TEXT_COLOR = 0xff3a8ccf; + public static final int MSG_OUT_REPLY_NAME_TEXT_COLOR = 0xff55ab4f; + public static final int MSG_STICKER_REPLY_NAME_TEXT_COLOR = 0xffffffff; + public static final int MSG_IN_REPLY_MESSAGE_TEXT_COLOR = 0xff000000; + public static final int MSG_OUT_REPLY_MESSAGE_TEXT_COLOR = 0xff000000; + public static final int MSG_IN_REPLY_MEDIA_MESSAGE_TEXT_COLOR = 0xffa1aab3; + public static final int MSG_OUT_REPLY_MEDIA_MESSAGE_TEXT_COLOR = 0xff65b05b; + public static final int MSG_IN_REPLY_MEDIA_MESSAGE_SELETED_TEXT_COLOR = 0xff89b4c1; + public static final int MSG_OUT_REPLY_MEDIA_MESSAGE_SELETED_TEXT_COLOR = 0xff65b05b; + public static final int MSG_STICKER_REPLY_MESSAGE_TEXT_COLOR = 0xffffffff; + public static final int MSG_IN_WEB_PREVIEW_LINE_COLOR = 0xff70b4e8; + public static final int MSG_OUT_WEB_PREVIEW_LINE_COLOR = 0xff88c97b; + public static final int MSG_IN_SITE_NAME_TEXT_COLOR = 0xff3a8ccf; + public static final int MSG_OUT_SITE_NAME_TEXT_COLOR = 0xff55ab4f; + public static final int MSG_IN_CONTACT_NAME_TEXT_COLOR = 0xff4e9ad4; + public static final int MSG_OUT_CONTACT_NAME_TEXT_COLOR = 0xff55ab4f; + public static final int MSG_IN_CONTACT_PHONE_TEXT_COLOR = 0xff2f3438; + public static final int MSG_OUT_CONTACT_PHONE_TEXT_COLOR = 0xff354234; + public static final int MSG_MEDIA_PROGRESS_COLOR = 0xffffffff; + public static final int MSG_IN_AUDIO_PROGRESS_COLOR = 0xffffffff; + public static final int MSG_OUT_AUDIO_PROGRESS_COLOR = 0xffefffde; + public static final int MSG_IN_AUDIO_SELECTED_PROGRESS_COLOR = 0xffe2f8ff; + public static final int MSG_OUT_AUDIO_SELECTED_PROGRESS_COLOR = 0xffd4f5bc; + public static final int MSG_MEDIA_TIME_TEXT_COLOR = 0xffffffff; + public static final int MSG_IN_TIME_TEXT_COLOR = 0xffa1aab3; + public static final int MSG_OUT_TIME_TEXT_COLOR = 0xff70b15c; + public static final int MSG_IN_TIME_SELECTED_TEXT_COLOR = 0xff89b4c1; + public static final int MSG_OUT_TIME_SELECTED_TEXT_COLOR = 0xff70b15c; + public static final int MSG_IN_AUDIO_PERFORMER_TEXT_COLOR = 0xff2f3438; + public static final int MSG_OUT_AUDIO_PERFORMER_TEXT_COLOR = 0xff354234; + public static final int MSG_IN_AUDIO_TITLE_TEXT_COLOR = 0xff4e9ad4; + public static final int MSG_OUT_AUDIO_TITLE_TEXT_COLOR = 0xff55ab4f; + public static final int MSG_IN_AUDIO_DURATION_TEXT_COLOR = 0xffa1aab3; + public static final int MSG_OUT_AUDIO_DURATION_TEXT_COLOR = 0xff65b05b; + public static final int MSG_IN_AUDIO_DURATION_SELECTED_TEXT_COLOR = 0xff89b4c1; + public static final int MSG_OUT_AUDIO_DURATION_SELECTED_TEXT_COLOR = 0xff65b05b; + public static final int MSG_IN_AUDIO_SEEKBAR_COLOR = 0xffe4eaf0; + public static final int MSG_OUT_AUDIO_SEEKBAR_COLOR = 0xffbbe3ac; + public static final int MSG_IN_AUDIO_SEEKBAR_SELECTED_COLOR = 0xffbcdee8; + public static final int MSG_OUT_AUDIO_SEEKBAR_SELECTED_COLOR = 0xffa9dd96; + public static final int MSG_IN_AUDIO_SEEKBAR_FILL_COLOR = 0xff72b5e8; + public static final int MSG_OUT_AUDIO_SEEKBAR_FILL_COLOR = 0xff78c272; + public static final int MSG_IN_VOICE_SEEKBAR_COLOR = 0xffdee5eb; + public static final int MSG_OUT_VOICE_SEEKBAR_COLOR = 0xffbbe3ac; + public static final int MSG_IN_VOICE_SEEKBAR_SELECTED_COLOR = 0xffbcdee8; + public static final int MSG_OUT_VOICE_SEEKBAR_SELECTED_COLOR = 0xffa9dd96; + public static final int MSG_IN_VOICE_SEEKBAR_FILL_COLOR = 0xff72b5e8; + public static final int MSG_OUT_VOICE_SEEKBAR_FILL_COLOR = 0xff78c272; + public static final int MSG_IN_FILE_PROGRESS_COLOR = 0xffebf0f5; + public static final int MSG_OUT_FILE_PROGRESS_COLOR = 0xffdaf5c3; + public static final int MSG_IN_FILE_PROGRESS_SELECTED_COLOR = 0xffcbeaf6; + public static final int MSG_OUT_FILE_PROGRESS_SELECTED_COLOR = 0xffc5eca7; + public static final int MSG_IN_FILE_NAME_TEXT_COLOR = 0xff4e9ad4; + public static final int MSG_OUT_FILE_NAME_TEXT_COLOR = 0xff55ab4f; + public static final int MSG_IN_FILE_INFO_TEXT_COLOR = 0xffa1aab3; + public static final int MSG_OUT_FILE_INFO_TEXT_COLOR = 0xff65b05b; + public static final int MSG_IN_FILE_INFO_SELECTED_TEXT_COLOR = 0xff89b4c1; + public static final int MSG_OUT_FILE_INFO_SELECTED_TEXT_COLOR = 0xff65b05b; + public static final int MSG_IN_FILE_BACKGROUND_COLOR = 0xffebf0f5; + public static final int MSG_OUT_FILE_BACKGROUND_COLOR = 0xffdaf5c3; + public static final int MSG_IN_FILE_BACKGROUND_SELECTED_COLOR = 0xffcbeaf6; + public static final int MSG_OUT_FILE_BACKGROUND_SELECTED_COLOR = 0xffc5eca7; + public static final int MSG_IN_VENUE_NAME_TEXT_COLOR = 0xff4e9ad4; + public static final int MSG_OUT_VENUE_NAME_TEXT_COLOR = 0xff55ab4f; + public static final int MSG_IN_VENUE_INFO_TEXT_COLOR = 0xffa1aab3; + public static final int MSG_OUT_VENUE_INFO_TEXT_COLOR = 0xff65b05b; + public static final int MSG_IN_VENUE_INFO_SELECTED_TEXT_COLOR = 0xff89b4c1; + public static final int MSG_OUT_VENUE_INFO_SELECTED_TEXT_COLOR = 0xff65b05b; + public static final int MSG_MEDIA_INFO_TEXT_COLOR = 0xffffffff; + public static final int MSG_TEXT_COLOR = 0xff000000; + public static final int MSG_LINK_TEXT_COLOR = 0xff2678b6; + public static final int MSG_LINK_SELECT_BACKGROUND_COLOR = 0x3362a9e3; + + + public static Drawable backgroundDrawableIn; + public static Drawable backgroundDrawableInSelected; + public static Drawable backgroundDrawableOut; + public static Drawable backgroundDrawableOutSelected; + public static Drawable backgroundMediaDrawableIn; + public static Drawable backgroundMediaDrawableInSelected; + public static Drawable backgroundMediaDrawableOut; + public static Drawable backgroundMediaDrawableOutSelected; + public static Drawable checkDrawable; + public static Drawable halfCheckDrawable; + public static Drawable clockDrawable; + public static Drawable broadcastDrawable; + public static Drawable checkMediaDrawable; + public static Drawable halfCheckMediaDrawable; + public static Drawable clockMediaDrawable; + public static Drawable broadcastMediaDrawable; + public static Drawable errorDrawable; + public static Drawable systemDrawable; + public static Drawable backgroundBluePressed; + public static Drawable timeBackgroundDrawable; + public static Drawable timeStickerBackgroundDrawable; + public static Drawable botLink; + public static Drawable botInline; + public static Drawable[] clockChannelDrawable = new Drawable[2]; + + public static Drawable[] cornerOuter = new Drawable[4]; + public static Drawable[] cornerInner = new Drawable[4]; + + public static Drawable shareDrawable; + public static Drawable shareIconDrawable; + + public static Drawable[] viewsCountDrawable = new Drawable[2]; + public static Drawable viewsOutCountDrawable; + public static Drawable viewsMediaCountDrawable; + + public static Drawable geoInDrawable; + public static Drawable geoOutDrawable; + + public static Drawable inlineDocDrawable; + public static Drawable inlineAudioDrawable; + public static Drawable inlineLocationDrawable; + + public static Drawable[] contactDrawable = new Drawable[2]; + public static Drawable[][] fileStatesDrawable = new Drawable[10][2]; + public static Drawable[][] photoStatesDrawables = new Drawable[13][2]; + public static Drawable[] docMenuDrawable = new Drawable[4]; + + public static PorterDuffColorFilter colorFilter; + public static PorterDuffColorFilter colorPressedFilter; + private static int currentColor; + + private static Paint maskPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + + public static void loadRecources(Context context) { + if (backgroundDrawableIn == null) { + backgroundDrawableIn = context.getResources().getDrawable(R.drawable.msg_in); + backgroundDrawableInSelected = context.getResources().getDrawable(R.drawable.msg_in_selected); + backgroundDrawableOut = context.getResources().getDrawable(R.drawable.msg_out); + backgroundDrawableOutSelected = context.getResources().getDrawable(R.drawable.msg_out_selected); + backgroundMediaDrawableIn = context.getResources().getDrawable(R.drawable.msg_in_photo); + backgroundMediaDrawableInSelected = context.getResources().getDrawable(R.drawable.msg_in_photo_selected); + backgroundMediaDrawableOut = context.getResources().getDrawable(R.drawable.msg_out_photo); + backgroundMediaDrawableOutSelected = context.getResources().getDrawable(R.drawable.msg_out_photo_selected); + checkDrawable = context.getResources().getDrawable(R.drawable.msg_check); + halfCheckDrawable = context.getResources().getDrawable(R.drawable.msg_halfcheck); + clockDrawable = context.getResources().getDrawable(R.drawable.msg_clock); + checkMediaDrawable = context.getResources().getDrawable(R.drawable.msg_check_w); + halfCheckMediaDrawable = context.getResources().getDrawable(R.drawable.msg_halfcheck_w); + clockMediaDrawable = context.getResources().getDrawable(R.drawable.msg_clock_photo); + clockChannelDrawable[0] = context.getResources().getDrawable(R.drawable.msg_clock2); + clockChannelDrawable[1] = context.getResources().getDrawable(R.drawable.msg_clock2_s); + errorDrawable = context.getResources().getDrawable(R.drawable.msg_warning); + timeBackgroundDrawable = context.getResources().getDrawable(R.drawable.phototime2_b); + timeStickerBackgroundDrawable = context.getResources().getDrawable(R.drawable.phototime2); + broadcastDrawable = context.getResources().getDrawable(R.drawable.broadcast3); + broadcastMediaDrawable = context.getResources().getDrawable(R.drawable.broadcast4); + systemDrawable = context.getResources().getDrawable(R.drawable.system); + botLink = context.getResources().getDrawable(R.drawable.bot_link); + botInline = context.getResources().getDrawable(R.drawable.bot_lines); + + viewsCountDrawable[0] = context.getResources().getDrawable(R.drawable.post_views); + viewsCountDrawable[1] = context.getResources().getDrawable(R.drawable.post_views_s); + viewsOutCountDrawable = context.getResources().getDrawable(R.drawable.post_viewsg); + viewsMediaCountDrawable = context.getResources().getDrawable(R.drawable.post_views_w); + + fileStatesDrawable[0][0] = context.getResources().getDrawable(R.drawable.play_g); + fileStatesDrawable[0][1] = context.getResources().getDrawable(R.drawable.play_g_s); + fileStatesDrawable[1][0] = context.getResources().getDrawable(R.drawable.pause_g); + fileStatesDrawable[1][1] = context.getResources().getDrawable(R.drawable.pause_g_s); + fileStatesDrawable[2][0] = context.getResources().getDrawable(R.drawable.file_g_load); + fileStatesDrawable[2][1] = context.getResources().getDrawable(R.drawable.file_g_load_s); + fileStatesDrawable[3][0] = context.getResources().getDrawable(R.drawable.file_g); + fileStatesDrawable[3][1] = context.getResources().getDrawable(R.drawable.file_g_s); + fileStatesDrawable[4][0] = context.getResources().getDrawable(R.drawable.file_g_cancel); + fileStatesDrawable[4][1] = context.getResources().getDrawable(R.drawable.file_g_cancel_s); + fileStatesDrawable[5][0] = context.getResources().getDrawable(R.drawable.play_b); + fileStatesDrawable[5][1] = context.getResources().getDrawable(R.drawable.play_b_s); + fileStatesDrawable[6][0] = context.getResources().getDrawable(R.drawable.pause_b); + fileStatesDrawable[6][1] = context.getResources().getDrawable(R.drawable.pause_b_s); + fileStatesDrawable[7][0] = context.getResources().getDrawable(R.drawable.file_b_load); + fileStatesDrawable[7][1] = context.getResources().getDrawable(R.drawable.file_b_load_s); + fileStatesDrawable[8][0] = context.getResources().getDrawable(R.drawable.file_b); + fileStatesDrawable[8][1] = context.getResources().getDrawable(R.drawable.file_b_s); + fileStatesDrawable[9][0] = context.getResources().getDrawable(R.drawable.file_b_cancel); + fileStatesDrawable[9][1] = context.getResources().getDrawable(R.drawable.file_b_cancel_s); + + photoStatesDrawables[0][0] = context.getResources().getDrawable(R.drawable.photoload); + photoStatesDrawables[0][1] = context.getResources().getDrawable(R.drawable.photoload_pressed); + photoStatesDrawables[1][0] = context.getResources().getDrawable(R.drawable.photocancel); + photoStatesDrawables[1][1] = context.getResources().getDrawable(R.drawable.photocancel_pressed); + photoStatesDrawables[2][0] = context.getResources().getDrawable(R.drawable.photogif); + photoStatesDrawables[2][1] = context.getResources().getDrawable(R.drawable.photogif_pressed); + photoStatesDrawables[3][0] = context.getResources().getDrawable(R.drawable.playvideo); + photoStatesDrawables[3][1] = context.getResources().getDrawable(R.drawable.playvideo_pressed); + //photoStatesDrawables[4] = context.getResources().getDrawable(R.drawable.photopause); + photoStatesDrawables[4][0] = photoStatesDrawables[4][1] = context.getResources().getDrawable(R.drawable.burn); + photoStatesDrawables[5][0] = photoStatesDrawables[5][1] = context.getResources().getDrawable(R.drawable.circle); + photoStatesDrawables[6][0] = photoStatesDrawables[6][1] = context.getResources().getDrawable(R.drawable.photocheck); + + photoStatesDrawables[7][0] = context.getResources().getDrawable(R.drawable.photoload_g); + photoStatesDrawables[7][1] = context.getResources().getDrawable(R.drawable.photoload_g_s); + photoStatesDrawables[8][0] = context.getResources().getDrawable(R.drawable.photocancel_g); + photoStatesDrawables[8][1] = context.getResources().getDrawable(R.drawable.photocancel_g_s); + photoStatesDrawables[9][0] = context.getResources().getDrawable(R.drawable.doc_green); + photoStatesDrawables[9][1] = context.getResources().getDrawable(R.drawable.doc_green); + + photoStatesDrawables[10][0] = context.getResources().getDrawable(R.drawable.photoload_b); + photoStatesDrawables[10][1] = context.getResources().getDrawable(R.drawable.photoload_b_s); + photoStatesDrawables[11][0] = context.getResources().getDrawable(R.drawable.photocancel_b); + photoStatesDrawables[11][1] = context.getResources().getDrawable(R.drawable.photocancel_b_s); + photoStatesDrawables[12][0] = context.getResources().getDrawable(R.drawable.doc_blue); + photoStatesDrawables[12][1] = context.getResources().getDrawable(R.drawable.doc_blue_s); + + docMenuDrawable[0] = context.getResources().getDrawable(R.drawable.doc_actions_b); + docMenuDrawable[1] = context.getResources().getDrawable(R.drawable.doc_actions_g); + docMenuDrawable[2] = context.getResources().getDrawable(R.drawable.doc_actions_b_s); + docMenuDrawable[3] = context.getResources().getDrawable(R.drawable.video_actions); + + contactDrawable[0] = context.getResources().getDrawable(R.drawable.contact_blue); + contactDrawable[1] = context.getResources().getDrawable(R.drawable.contact_green); + + shareDrawable = context.getResources().getDrawable(R.drawable.share_round); + shareIconDrawable = context.getResources().getDrawable(R.drawable.share_arrow); + + geoInDrawable = context.getResources().getDrawable(R.drawable.location_b); + geoOutDrawable = context.getResources().getDrawable(R.drawable.location_g); + + context.getResources().getDrawable(R.drawable.attach_camera_states); + context.getResources().getDrawable(R.drawable.attach_gallery_states); + context.getResources().getDrawable(R.drawable.attach_video_states); + context.getResources().getDrawable(R.drawable.attach_audio_states); + context.getResources().getDrawable(R.drawable.attach_file_states); + context.getResources().getDrawable(R.drawable.attach_contact_states); + context.getResources().getDrawable(R.drawable.attach_location_states); + context.getResources().getDrawable(R.drawable.attach_hide_states); + + cornerOuter[0] = context.getResources().getDrawable(R.drawable.corner_out_tl); + cornerOuter[1] = context.getResources().getDrawable(R.drawable.corner_out_tr); + cornerOuter[2] = context.getResources().getDrawable(R.drawable.corner_out_br); + cornerOuter[3] = context.getResources().getDrawable(R.drawable.corner_out_bl); + + cornerInner[0] = context.getResources().getDrawable(R.drawable.corner_in_tr); + cornerInner[1] = context.getResources().getDrawable(R.drawable.corner_in_tl); + cornerInner[2] = context.getResources().getDrawable(R.drawable.corner_in_br); + cornerInner[3] = context.getResources().getDrawable(R.drawable.corner_in_bl); + + inlineDocDrawable = context.getResources().getDrawable(R.drawable.bot_file); + inlineAudioDrawable = context.getResources().getDrawable(R.drawable.bot_music); + inlineLocationDrawable = context.getResources().getDrawable(R.drawable.bot_location); + } + + int color = ApplicationLoader.getServiceMessageColor(); + if (currentColor != color) { + colorFilter = new PorterDuffColorFilter(color, PorterDuff.Mode.MULTIPLY); + colorPressedFilter = new PorterDuffColorFilter(ApplicationLoader.getServiceSelectedMessageColor(), PorterDuff.Mode.MULTIPLY); + currentColor = color; + for (int a = 0; a < 4; a++) { + cornerOuter[a].setColorFilter(colorFilter); + cornerInner[a].setColorFilter(colorFilter); + } + timeStickerBackgroundDrawable.setColorFilter(colorFilter); + } + } + + public static Drawable createBarSelectorDrawable(int color) { + return createBarSelectorDrawable(color, true); + } + + public static Drawable createBarSelectorDrawable(int color, boolean masked) { + Drawable drawable; + if (Build.VERSION.SDK_INT >= 21) { + Drawable maskDrawable = null; + if (masked) { + maskPaint.setColor(0xffffffff); + maskDrawable = new Drawable() { + @Override + public void draw(Canvas canvas) { + android.graphics.Rect bounds = getBounds(); + canvas.drawCircle(bounds.centerX(), bounds.centerY(), AndroidUtilities.dp(18), maskPaint); + } + + @Override + public void setAlpha(int alpha) { + + } + + @Override + public void setColorFilter(ColorFilter colorFilter) { + + } + + @Override + public int getOpacity() { + return 0; + } + }; + } + ColorStateList colorStateList = new ColorStateList( + new int[][]{new int[]{}}, + new int[]{color} + ); + return new RippleDrawable(colorStateList, null, maskDrawable); + } else { + StateListDrawable stateListDrawable = new StateListDrawable(); + stateListDrawable.addState(new int[]{android.R.attr.state_pressed}, new ColorDrawable(color)); + stateListDrawable.addState(new int[]{android.R.attr.state_focused}, new ColorDrawable(color)); + stateListDrawable.addState(new int[]{android.R.attr.state_selected}, new ColorDrawable(color)); + if (Build.VERSION.SDK_INT >= 11) { + stateListDrawable.addState(new int[]{android.R.attr.state_activated}, new ColorDrawable(color)); + } + stateListDrawable.addState(new int[]{}, new ColorDrawable(0x00000000)); + return stateListDrawable; + } + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/ChatActivityAdapter.java b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/ChatActivityAdapter.java index 183076a74..f01a9184e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/ChatActivityAdapter.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/ChatActivityAdapter.java @@ -202,7 +202,7 @@ public class ChatActivityAdapter { Intent intent = new Intent(Intent.ACTION_VIEW); if (message.type == 8 || message.type == 9) { MimeTypeMap myMime = MimeTypeMap.getSingleton(); - int idx = fileName.lastIndexOf("."); + int idx = fileName.lastIndexOf('.'); if (idx != -1) { String ext = fileName.substring(idx + 1); realMimeType = myMime.getMimeTypeFromExtension(ext.toLowerCase()); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/DialogsAdapter.java b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/DialogsAdapter.java index 7901531d1..11a1ccec8 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/DialogsAdapter.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/DialogsAdapter.java @@ -81,6 +81,13 @@ public class DialogsAdapter extends RecyclerView.Adapter { return arrayList.get(i); } + @Override + public void onViewAttachedToWindow(RecyclerView.ViewHolder holder) { + if (holder.itemView instanceof DialogCell) { + ((DialogCell) holder.itemView).checkCurrentDialogIndex(); + } + } + @Override public long getItemId(int i) { return i; 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 e3233f911..5f738ff28 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/DialogsSearchAdapter.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/DialogsSearchAdapter.java @@ -331,7 +331,7 @@ public class DialogsSearchAdapter extends BaseSearchAdapterRecycler { recentSearchObjects.add(0, recentSearchObject); recentSearchObject.did = did; recentSearchObject.object = object; - recentSearchObject.date = (int) System.currentTimeMillis() / 1000; + recentSearchObject.date = (int) (System.currentTimeMillis() / 1000); notifyDataSetChanged(); MessagesStorage.getInstance().getStorageQueue().postRunnable(new Runnable() { @Override @@ -340,7 +340,7 @@ public class DialogsSearchAdapter extends BaseSearchAdapterRecycler { SQLitePreparedStatement state = MessagesStorage.getInstance().getDatabase().executeFast("REPLACE INTO search_recent VALUES(?, ?)"); state.requery(); state.bindLong(1, did); - state.bindInteger(2, (int) System.currentTimeMillis() / 1000); + state.bindInteger(2, (int) (System.currentTimeMillis() / 1000)); state.step(); state.dispose(); } catch (Exception e) { 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 bed8d26b3..dc0e10b6b 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/MentionsAdapter.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/MentionsAdapter.java @@ -8,17 +8,29 @@ package org.telegram.ui.Adapters; +import android.Manifest; +import android.app.Activity; +import android.app.AlertDialog; import android.content.Context; +import android.content.DialogInterface; +import android.content.SharedPreferences; +import android.content.pm.PackageManager; +import android.location.Location; +import android.os.Build; import android.view.View; import android.view.ViewGroup; import org.telegram.SQLite.SQLiteCursor; import org.telegram.SQLite.SQLitePreparedStatement; import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.ApplicationLoader; import org.telegram.messenger.FileLog; +import org.telegram.messenger.LocaleController; import org.telegram.messenger.MessageObject; import org.telegram.messenger.MessagesController; import org.telegram.messenger.MessagesStorage; +import org.telegram.messenger.R; +import org.telegram.messenger.SendMessagesHelper; import org.telegram.messenger.UserObject; import org.telegram.messenger.support.widget.LinearLayoutManager; import org.telegram.messenger.support.widget.RecyclerView; @@ -26,6 +38,8 @@ import org.telegram.tgnet.ConnectionsManager; import org.telegram.tgnet.RequestDelegate; import org.telegram.tgnet.TLObject; import org.telegram.tgnet.TLRPC; +import org.telegram.ui.ActionBar.BaseFragment; +import org.telegram.ui.Cells.BotSwitchCell; import org.telegram.ui.Cells.ContextLinkCell; import org.telegram.ui.Cells.MentionCell; @@ -42,7 +56,7 @@ public class MentionsAdapter extends BaseSearchAdapterRecycler { void onContextClick(TLRPC.BotInlineResult result); } - private class Holder extends RecyclerView.ViewHolder { + public class Holder extends RecyclerView.ViewHolder { public Holder(View itemView) { super(itemView); @@ -50,6 +64,7 @@ public class MentionsAdapter extends BaseSearchAdapterRecycler { } private Context mContext; + private long dialog_id; private TLRPC.ChatFull info; private ArrayList botRecent; private ArrayList searchResultUsernames; @@ -58,6 +73,7 @@ public class MentionsAdapter extends BaseSearchAdapterRecycler { private ArrayList searchResultCommandsHelp; private ArrayList searchResultCommandsUsers; private ArrayList searchResultBotContext; + private TLRPC.TL_inlineBotSwitchPM searchResultBotContextSwitch; private HashMap searchResultBotContextById; private MentionsAdapterDelegate delegate; private HashMap botInfo; @@ -82,11 +98,62 @@ public class MentionsAdapter extends BaseSearchAdapterRecycler { private TLRPC.User foundContextBot; private boolean contextMedia; private Runnable contextQueryRunnable; + private Location lastKnownLocation; - public MentionsAdapter(Context context, boolean isDarkTheme, MentionsAdapterDelegate delegate) { + private BaseFragment parentFragment; + + private SendMessagesHelper.LocationProvider locationProvider = new SendMessagesHelper.LocationProvider(new SendMessagesHelper.LocationProvider.LocationProviderDelegate() { + @Override + public void onLocationAcquired(Location location) { + if (foundContextBot != null && foundContextBot.bot_inline_geo) { + lastKnownLocation = location; + searchForContextBotResults(foundContextBot, searchingContextQuery, ""); + } + } + + @Override + public void onUnableLocationAcquire() { + onLocationUnavailable(); + } + }) { + @Override + public void stop() { + super.stop(); + lastKnownLocation = null; + } + }; + + public MentionsAdapter(Context context, boolean isDarkTheme, long did, MentionsAdapterDelegate delegate) { mContext = context; this.delegate = delegate; this.isDarkTheme = isDarkTheme; + dialog_id = did; + } + + public void onDestroy() { + if (locationProvider != null) { + locationProvider.stop(); + } + if (contextQueryRunnable != null) { + AndroidUtilities.cancelRunOnUIThread(contextQueryRunnable); + contextQueryRunnable = null; + } + if (contextUsernameReqid != 0) { + ConnectionsManager.getInstance().cancelRequest(contextUsernameReqid, true); + contextUsernameReqid = 0; + } + if (contextQueryReqid != 0) { + ConnectionsManager.getInstance().cancelRequest(contextQueryReqid, true); + contextQueryReqid = 0; + } + foundContextBot = null; + searchingContextUsername = null; + searchingContextQuery = null; + noUserName = false; + } + + public void setParentFragment(BaseFragment fragment) { + parentFragment = fragment; } public void setChatInfo(TLRPC.ChatFull chatParticipants) { @@ -115,7 +182,21 @@ public class MentionsAdapter extends BaseSearchAdapterRecycler { } cursor.dispose(); if (uids != null) { + final ArrayList uidsFinal = uids; final ArrayList users = MessagesStorage.getInstance().getUsers(uids); + Collections.sort(users, new Comparator() { + @Override + public int compare(TLRPC.User lhs, TLRPC.User rhs) { + int idx1 = uidsFinal.indexOf(lhs.id); + int idx2 = uidsFinal.indexOf(rhs.id); + if (idx1 > idx2) { + return 1; + } else if (idx1 < idx2) { + return -1; + } + return 0; + } + }); AndroidUtilities.runOnUIThread(new Runnable() { @Override public void run() { @@ -240,10 +321,18 @@ public class MentionsAdapter extends BaseSearchAdapterRecycler { } } + public TLRPC.TL_inlineBotSwitchPM getBotContextSwitch() { + return searchResultBotContextSwitch; + } + public int getContextBotId() { return foundContextBot != null ? foundContextBot.id : 0; } + public TLRPC.User getContextBotUser() { + return foundContextBot != null ? foundContextBot : null; + } + public String getContextBotName() { return foundContextBot != null ? foundContextBot.username : ""; } @@ -251,6 +340,7 @@ public class MentionsAdapter extends BaseSearchAdapterRecycler { private void searchForContextBot(final String username, final String query) { searchResultBotContext = null; searchResultBotContextById = null; + searchResultBotContextSwitch = null; notifyDataSetChanged(); if (foundContextBot != null) { delegate.needChangePanelVisibility(false); @@ -271,6 +361,7 @@ public class MentionsAdapter extends BaseSearchAdapterRecycler { foundContextBot = null; searchingContextUsername = null; searchingContextQuery = null; + locationProvider.stop(); noUserName = false; if (delegate != null) { delegate.onContextSearch(false); @@ -325,6 +416,7 @@ public class MentionsAdapter extends BaseSearchAdapterRecycler { } contextUsernameReqid = 0; foundContextBot = null; + locationProvider.stop(); if (error == null) { TLRPC.TL_contacts_resolvedPeer res = (TLRPC.TL_contacts_resolvedPeer) response; if (!res.users.isEmpty()) { @@ -333,6 +425,35 @@ public class MentionsAdapter extends BaseSearchAdapterRecycler { MessagesController.getInstance().putUser(user, false); MessagesStorage.getInstance().putUsersAndChats(res.users, null, true, true); foundContextBot = user; + if (foundContextBot.bot_inline_geo) { + SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE); + boolean allowGeo = preferences.getBoolean("inlinegeo_" + foundContextBot.id, false); + if (!allowGeo && parentFragment != null && parentFragment.getParentActivity() != null) { + final TLRPC.User foundContextBotFinal = foundContextBot; + AlertDialog.Builder builder = new AlertDialog.Builder(parentFragment.getParentActivity()); + builder.setTitle(LocaleController.getString("ShareYouLocationTitle", R.string.ShareYouLocationTitle)); + builder.setMessage(LocaleController.getString("ShareYouLocationInline", R.string.ShareYouLocationInline)); + builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + if (foundContextBotFinal != null) { + SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE); + preferences.edit().putBoolean("inlinegeo_" + foundContextBotFinal.id, true).commit(); + checkLocationPermissionsOrStart(); + } + } + }); + builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + onLocationUnavailable(); + } + }); + parentFragment.showDialog(builder.create()); + } else { + checkLocationPermissionsOrStart(); + } + } } } } @@ -355,6 +476,28 @@ public class MentionsAdapter extends BaseSearchAdapterRecycler { AndroidUtilities.runOnUIThread(contextQueryRunnable, 400); } + private void onLocationUnavailable() { + if (foundContextBot != null && foundContextBot.bot_inline_geo) { + lastKnownLocation = new Location("network"); + lastKnownLocation.setLatitude(-1000); + lastKnownLocation.setLongitude(-1000); + searchForContextBotResults(foundContextBot, searchingContextQuery, ""); + } + } + + private void checkLocationPermissionsOrStart() { + if (parentFragment == null || parentFragment.getParentActivity() == null) { + return; + } + if (Build.VERSION.SDK_INT >= 23 && parentFragment.getParentActivity().checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { + parentFragment.getParentActivity().requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION}, 2); + return; + } + if (foundContextBot != null && foundContextBot.bot_inline_geo) { + locationProvider.start(); + } + } + public int getOrientation() { return searchResultBotContext != null && !searchResultBotContext.isEmpty() && contextMedia ? LinearLayoutManager.HORIZONTAL : LinearLayoutManager.VERTICAL; } @@ -384,10 +527,26 @@ public class MentionsAdapter extends BaseSearchAdapterRecycler { searchingContextQuery = null; return; } + if (user.bot_inline_geo && lastKnownLocation == null) { + return; + } TLRPC.TL_messages_getInlineBotResults req = new TLRPC.TL_messages_getInlineBotResults(); req.bot = MessagesController.getInputUser(user); req.query = query; req.offset = offset; + if (user.bot_inline_geo && lastKnownLocation != null && lastKnownLocation.getLatitude() != -1000) { + req.flags |= 1; + req.geo_point = new TLRPC.TL_inputGeoPoint(); + req.geo_point.lat = lastKnownLocation.getLatitude(); + req.geo_point._long = lastKnownLocation.getLongitude(); + } + int lower_id = (int) dialog_id; + int high_id = (int) (dialog_id >> 32); + if (lower_id != 0) { + req.peer = MessagesController.getInputPeer(lower_id); + } else { + req.peer = new TLRPC.TL_inputPeerEmpty(); + } contextQueryReqid = ConnectionsManager.getInstance().sendRequest(req, new RequestDelegate() { @Override public void run(final TLObject response, final TLRPC.TL_error error) { @@ -406,6 +565,7 @@ public class MentionsAdapter extends BaseSearchAdapterRecycler { nextQueryOffset = res.next_offset; if (searchResultBotContextById == null) { searchResultBotContextById = new HashMap<>(); + searchResultBotContextSwitch = res.switch_pm; } for (int a = 0; a < res.results.size(); a++) { TLRPC.BotInlineResult result = res.results.get(a); @@ -433,11 +593,13 @@ public class MentionsAdapter extends BaseSearchAdapterRecycler { searchResultCommandsHelp = null; searchResultCommandsUsers = null; if (added) { - notifyItemRangeInserted(searchResultBotContext.size() - res.results.size(), res.results.size()); + boolean hasTop = getOrientation() == LinearLayoutManager.VERTICAL && searchResultBotContextSwitch != null; + notifyItemChanged(searchResultBotContext.size() - res.results.size() + (hasTop ? 1 : 0) - 1); + notifyItemRangeInserted(searchResultBotContext.size() - res.results.size() + (hasTop ? 1 : 0), res.results.size()); } else { notifyDataSetChanged(); } - delegate.needChangePanelVisibility(!searchResultBotContext.isEmpty()); + delegate.needChangePanelVisibility(!searchResultBotContext.isEmpty() || searchResultBotContextSwitch != null); } } }); @@ -666,7 +828,7 @@ public class MentionsAdapter extends BaseSearchAdapterRecycler { @Override public int getItemCount() { if (searchResultBotContext != null) { - return searchResultBotContext.size(); + return searchResultBotContext.size() + (getOrientation() == LinearLayoutManager.VERTICAL && searchResultBotContextSwitch != null ? 1 : 0); } else if (searchResultUsernames != null) { return searchResultUsernames.size(); } else if (searchResultHashtags != null) { @@ -680,6 +842,9 @@ public class MentionsAdapter extends BaseSearchAdapterRecycler { @Override public int getItemViewType(int position) { if (searchResultBotContext != null) { + if (position == 0 && getOrientation() == LinearLayoutManager.VERTICAL && searchResultBotContextSwitch != null) { + return 2; + } return 1; } else { return 0; @@ -688,6 +853,14 @@ public class MentionsAdapter extends BaseSearchAdapterRecycler { public Object getItem(int i) { if (searchResultBotContext != null) { + boolean hasTop = getOrientation() == LinearLayoutManager.VERTICAL && searchResultBotContextSwitch != null; + if (hasTop) { + if (i == 0) { + return searchResultBotContextSwitch; + } else { + i--; + } + } if (i < 0 || i >= searchResultBotContext.size()) { return null; } @@ -741,6 +914,8 @@ public class MentionsAdapter extends BaseSearchAdapterRecycler { delegate.onContextClick(cell.getResult()); } }); + } else if (viewType == 2) { + view = new BotSwitchCell(mContext); } else { view = new MentionCell(mContext); ((MentionCell) view).setIsDarkTheme(isDarkTheme); @@ -751,7 +926,17 @@ public class MentionsAdapter extends BaseSearchAdapterRecycler { @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { if (searchResultBotContext != null) { - ((ContextLinkCell) holder.itemView).setLink(searchResultBotContext.get(position), contextMedia, position != searchResultBotContext.size() - 1); + boolean hasTop = getOrientation() == LinearLayoutManager.VERTICAL && searchResultBotContextSwitch != null; + if (holder.getItemViewType() == 2) { + if (hasTop) { + ((BotSwitchCell) holder.itemView).setText(searchResultBotContextSwitch.text); + } + } else { + if (hasTop) { + position--; + } + ((ContextLinkCell) holder.itemView).setLink(searchResultBotContext.get(position), contextMedia, position != searchResultBotContext.size() - 1, hasTop && position == 0); + } } else { if (searchResultUsernames != null) { ((MentionCell) holder.itemView).setUser(searchResultUsernames.get(position)); @@ -762,4 +947,16 @@ public class MentionsAdapter extends BaseSearchAdapterRecycler { } } } + + public void onRequestPermissionsResultFragment(int requestCode, String[] permissions, int[] grantResults) { + if (requestCode == 2) { + if (foundContextBot != null && foundContextBot.bot_inline_geo) { + if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + locationProvider.start(); + } else { + onLocationUnavailable(); + } + } + } + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/PhotoAttachAdapter.java b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/PhotoAttachAdapter.java deleted file mode 100644 index 5eb63d8ad..000000000 --- a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/PhotoAttachAdapter.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * This is the source code of Telegram for Android v. 3.x.x. - * It is licensed under GNU GPL v. 2 or later. - * You should have received a copy of the license in this archive (see LICENSE). - * - * Copyright Nikolai Kudashov, 2013-2016. - */ - -package org.telegram.ui.Adapters; - -import android.content.Context; -import android.view.View; -import android.view.ViewGroup; - -import org.telegram.messenger.MediaController; -import org.telegram.messenger.support.widget.RecyclerView; -import org.telegram.ui.Cells.PhotoAttachPhotoCell; - -import java.util.HashMap; - -public class PhotoAttachAdapter extends RecyclerView.Adapter { - - private Context mContext; - private PhotoAttachAdapterDelegate delegate; - private HashMap selectedPhotos = new HashMap<>(); - - public interface PhotoAttachAdapterDelegate { - void selectedPhotosChanged(); - } - - private class Holder extends RecyclerView.ViewHolder { - - public Holder(View itemView) { - super(itemView); - } - } - - public PhotoAttachAdapter(Context context) { - mContext = context; - } - - public void clearSelectedPhotos() { - if (!selectedPhotos.isEmpty()) { - for (HashMap.Entry entry : selectedPhotos.entrySet()) { - MediaController.PhotoEntry photoEntry = entry.getValue(); - photoEntry.imagePath = null; - photoEntry.thumbPath = null; - photoEntry.caption = null; - } - selectedPhotos.clear(); - delegate.selectedPhotosChanged(); - notifyDataSetChanged(); - } - } - - public HashMap getSelectedPhotos() { - return selectedPhotos; - } - - public void setDelegate(PhotoAttachAdapterDelegate photoAttachAdapterDelegate) { - delegate = photoAttachAdapterDelegate; - } - - @Override - public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { - PhotoAttachPhotoCell cell = (PhotoAttachPhotoCell) holder.itemView; - MediaController.PhotoEntry photoEntry = MediaController.allPhotosAlbumEntry.photos.get(position); - cell.setPhotoEntry(photoEntry, position == MediaController.allPhotosAlbumEntry.photos.size() - 1); - cell.setChecked(selectedPhotos.containsKey(photoEntry.imageId), false); - cell.getImageView().setTag(position); - cell.setTag(position); - } - - @Override - public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - PhotoAttachPhotoCell cell = new PhotoAttachPhotoCell(mContext); - cell.setDelegate(new PhotoAttachPhotoCell.PhotoAttachPhotoCellDelegate() { - @Override - public void onCheckClick(PhotoAttachPhotoCell v) { - MediaController.PhotoEntry photoEntry = v.getPhotoEntry(); - if (selectedPhotos.containsKey(photoEntry.imageId)) { - selectedPhotos.remove(photoEntry.imageId); - v.setChecked(false, true); - photoEntry.imagePath = null; - photoEntry.thumbPath = null; - v.setPhotoEntry(photoEntry, (Integer) v.getTag() == MediaController.allPhotosAlbumEntry.photos.size() - 1); - } else { - selectedPhotos.put(photoEntry.imageId, photoEntry); - v.setChecked(true, true); - } - delegate.selectedPhotosChanged(); - } - }); - return new Holder(cell); - } - - @Override - public int getItemCount() { - return (MediaController.allPhotosAlbumEntry != null ? MediaController.allPhotosAlbumEntry.photos.size() : 0); - } - - @Override - public int getItemViewType(int position) { - return 0; - } -} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/AudioPlayerActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/AudioPlayerActivity.java index 416743649..7be4b309f 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/AudioPlayerActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/AudioPlayerActivity.java @@ -30,6 +30,7 @@ import org.telegram.messenger.R; import org.telegram.tgnet.TLRPC; import org.telegram.ui.ActionBar.ActionBar; import org.telegram.ui.ActionBar.BaseFragment; +import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Components.LayoutHelper; import org.telegram.ui.Components.LineProgressView; @@ -179,9 +180,9 @@ public class AudioPlayerActivity extends BaseFragment implements NotificationCen }); fragmentView = frameLayout; - actionBar.setBackgroundColor(0xffffffff); + actionBar.setBackgroundColor(Theme.ACTION_BAR_PLAYER_COLOR); actionBar.setBackButtonImage(R.drawable.pl_back); - actionBar.setItemsBackground(R.drawable.bar_selector_audio); + actionBar.setItemsBackgroundColor(Theme.ACTION_BAR_AUDIO_SELECTOR_COLOR); if (!AndroidUtilities.isTablet()) { actionBar.showActionModeTop(); } @@ -436,7 +437,7 @@ public class AudioPlayerActivity extends BaseFragment implements NotificationCen actionBar.setTitle(messageObject.getMusicTitle()); actionBar.getTitleTextView().setTextColor(0xff212121); actionBar.setSubtitle(messageObject.getMusicAuthor()); - actionBar.getSubTitleTextView().setTextColor(0xff8a8a8a); + actionBar.getSubtitleTextView().setTextColor(0xff8a8a8a); } AudioInfo audioInfo = MediaController.getInstance().getAudioInfo(); if (audioInfo != null && audioInfo.getCover() != null) { @@ -451,10 +452,14 @@ public class AudioPlayerActivity extends BaseFragment implements NotificationCen if (durationTextView != null) { int duration = 0; - for (TLRPC.DocumentAttribute attribute : messageObject.messageOwner.media.document.attributes) { - if (attribute instanceof TLRPC.TL_documentAttributeAudio) { - duration = attribute.duration; - break; + TLRPC.Document document = messageObject.getDocument(); + if (document != null) { + for (int a = 0; a < document.attributes.size(); a++) { + TLRPC.DocumentAttribute attribute = document.attributes.get(a); + if (attribute instanceof TLRPC.TL_documentAttributeAudio) { + duration = attribute.duration; + break; + } } } durationTextView.setText(duration != 0 ? String.format("%d:%02d", duration / 60, duration % 60) : "-:--"); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/CacheControlActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/CacheControlActivity.java index 307d13c22..ccd898b41 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/CacheControlActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/CacheControlActivity.java @@ -472,7 +472,8 @@ public class CacheControlActivity extends BaseFragment { return; } BottomSheet.Builder builder = new BottomSheet.Builder(getParentActivity()); - builder.setApplyTopPaddings(false); + builder.setApplyTopPadding(false); + builder.setApplyBottomPadding(false); LinearLayout linearLayout = new LinearLayout(getParentActivity()); linearLayout.setOrientation(LinearLayout.VERTICAL); for (int a = 0; a < 6; a++) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/AboutLinkCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/AboutLinkCell.java index 9e75d81f2..160f91b83 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/AboutLinkCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/AboutLinkCell.java @@ -12,6 +12,7 @@ import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; +import android.os.Build; import android.text.Layout; import android.text.Spannable; import android.text.SpannableStringBuilder; @@ -29,8 +30,10 @@ import org.telegram.messenger.Emoji; import org.telegram.messenger.FileLog; import org.telegram.messenger.LocaleController; import org.telegram.messenger.MessageObject; +import org.telegram.messenger.browser.Browser; import org.telegram.ui.Components.LayoutHelper; import org.telegram.ui.Components.LinkPath; +import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Components.URLSpanNoUnderline; public class AboutLinkCell extends FrameLayout { @@ -60,10 +63,10 @@ public class AboutLinkCell extends FrameLayout { textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); textPaint.setTextSize(AndroidUtilities.dp(16)); textPaint.setColor(0xff000000); - textPaint.linkColor = 0xff316f9f; + textPaint.linkColor = Theme.MSG_LINK_TEXT_COLOR; urlPaint = new Paint(); - urlPaint.setColor(0x33316f9f); + urlPaint.setColor(Theme.MSG_LINK_SELECT_BACKGROUND_COLOR); imageView = new ImageView(context); imageView.setScaleType(ImageView.ScaleType.CENTER); @@ -107,6 +110,12 @@ public class AboutLinkCell extends FrameLayout { float x = event.getX(); float y = event.getY(); + if (Build.VERSION.SDK_INT >= 21 && getBackground() != null) { + if (event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_MOVE) { + getBackground().setHotspot(x, y); + } + } + boolean result = false; if (textLayout != null) { if (event.getAction() == MotionEvent.ACTION_DOWN || pressedLink != null && event.getAction() == MotionEvent.ACTION_UP) { @@ -128,7 +137,7 @@ public class AboutLinkCell extends FrameLayout { result = true; try { int start = buffer.getSpanStart(pressedLink); - urlPath.setCurrentLayout(textLayout, start); + urlPath.setCurrentLayout(textLayout, start, 0); textLayout.getSelectionPath(start, buffer.getSpanEnd(pressedLink), urlPath); } catch (Exception e) { FileLog.e("tmessages", e); @@ -154,7 +163,7 @@ public class AboutLinkCell extends FrameLayout { } } else { if (pressedLink instanceof URLSpan) { - AndroidUtilities.openUrl(getContext(), ((URLSpan) pressedLink).getURL()); + Browser.openUrl(getContext(), ((URLSpan) pressedLink).getURL()); } else { pressedLink.onClick(this); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/BaseCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/BaseCell.java index ea8c3d3a6..71d87bdbe 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/BaseCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/BaseCell.java @@ -55,6 +55,10 @@ public class BaseCell extends View { setDrawableBounds(drawable, x, y, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); } + protected void setDrawableBounds(Drawable drawable, float x, float y) { + setDrawableBounds(drawable, (int) x, (int) y, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); + } + protected void setDrawableBounds(Drawable drawable, int x, int y, int w, int h) { if (drawable != null) { drawable.setBounds(x, y, x + w, y + h); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/BotHelpCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/BotHelpCell.java index 41568c1f6..e2f0292fc 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/BotHelpCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/BotHelpCell.java @@ -28,8 +28,9 @@ import org.telegram.messenger.LocaleController; import org.telegram.messenger.MessageObject; import org.telegram.messenger.FileLog; import org.telegram.messenger.R; +import org.telegram.messenger.browser.Browser; import org.telegram.ui.Components.LinkPath; -import org.telegram.ui.Components.ResourceLoader; +import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Components.TypefaceSpan; import org.telegram.ui.Components.URLSpanNoUnderline; @@ -60,10 +61,10 @@ public class BotHelpCell extends View { textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); textPaint.setTextSize(AndroidUtilities.dp(16)); textPaint.setColor(0xff000000); - textPaint.linkColor = 0xff316f9f; + textPaint.linkColor = Theme.MSG_LINK_TEXT_COLOR; urlPaint = new Paint(); - urlPaint.setColor(0x33316f9f); + urlPaint.setColor(Theme.MSG_LINK_SELECT_BACKGROUND_COLOR); } public void setDelegate(BotHelpCellDelegate botHelpCellDelegate) { @@ -140,7 +141,7 @@ public class BotHelpCell extends View { result = true; try { int start = buffer.getSpanStart(pressedLink); - urlPath.setCurrentLayout(textLayout, start); + urlPath.setCurrentLayout(textLayout, start, 0); textLayout.getSelectionPath(start, buffer.getSpanEnd(pressedLink), urlPath); } catch (Exception e) { FileLog.e("tmessages", e); @@ -166,7 +167,7 @@ public class BotHelpCell extends View { } } else { if (pressedLink instanceof URLSpan) { - AndroidUtilities.openUrl(getContext(), ((URLSpan) pressedLink).getURL()); + Browser.openUrl(getContext(), ((URLSpan) pressedLink).getURL()); } else { pressedLink.onClick(this); } @@ -193,14 +194,16 @@ public class BotHelpCell extends View { protected void onDraw(Canvas canvas) { int x = (canvas.getWidth() - width) / 2; int y = AndroidUtilities.dp(4); - ResourceLoader.backgroundMediaDrawableIn.setBounds(x, y, width + x, height + y); - ResourceLoader.backgroundMediaDrawableIn.draw(canvas); + Theme.backgroundMediaDrawableIn.setBounds(x, y, width + x, height + y); + Theme.backgroundMediaDrawableIn.draw(canvas); canvas.save(); canvas.translate(textX = AndroidUtilities.dp(2 + 9) + x, textY = AndroidUtilities.dp(2 + 9) + y); if (pressedLink != null) { canvas.drawPath(urlPath, urlPaint); } - textLayout.draw(canvas); + if (textLayout != null) { + textLayout.draw(canvas); + } canvas.restore(); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/BotSwitchCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/BotSwitchCell.java new file mode 100644 index 000000000..dbe52d888 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/BotSwitchCell.java @@ -0,0 +1,62 @@ +/* + * This is the source code of Telegram for Android v. 3.x.x. + * It is licensed under GNU GPL v. 2 or later. + * You should have received a copy of the license in this archive (see LICENSE). + * + * Copyright Nikolai Kudashov, 2013-2016. + */ + +package org.telegram.ui.Cells; + +import android.content.Context; +import android.os.Build; +import android.text.TextUtils; +import android.util.TypedValue; +import android.view.Gravity; +import android.view.MotionEvent; +import android.widget.FrameLayout; +import android.widget.TextView; + +import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.LocaleController; +import org.telegram.messenger.R; +import org.telegram.ui.Components.LayoutHelper; + +public class BotSwitchCell extends FrameLayout { + + private TextView textView; + + public BotSwitchCell(Context context) { + super(context); + setBackgroundResource(R.drawable.list_selector); + + textView = new TextView(context); + textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15); + textView.setTextColor(0xff4391cc); + textView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + textView.setSingleLine(true); + textView.setEllipsize(TextUtils.TruncateAt.END); + textView.setMaxLines(1); + textView.setGravity((LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT)); + addView(textView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_VERTICAL | (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT), 14, 0, 14, 0)); + } + + @Override + public boolean onTouchEvent(MotionEvent event) { + if (Build.VERSION.SDK_INT >= 21 && getBackground() != null) { + if (event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_MOVE) { + getBackground().setHotspot(event.getX(), event.getY()); + } + } + return super.onTouchEvent(event); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(36), MeasureSpec.EXACTLY)); + } + + public void setText(String text) { + textView.setText(text); + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatActionCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatActionCell.java index bc73969a5..5e6f04df9 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatActionCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatActionCell.java @@ -12,7 +12,7 @@ import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Paint; -import android.graphics.drawable.Drawable; +import android.graphics.RectF; import android.text.Layout; import android.text.Spannable; import android.text.StaticLayout; @@ -22,15 +22,15 @@ import android.view.MotionEvent; import android.view.SoundEffectConstants; import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.ApplicationLoader; import org.telegram.messenger.ImageReceiver; import org.telegram.messenger.MessageObject; import org.telegram.messenger.MessagesController; -import org.telegram.messenger.ApplicationLoader; import org.telegram.messenger.FileLoader; import org.telegram.messenger.FileLog; import org.telegram.tgnet.TLRPC; import org.telegram.messenger.UserConfig; -import org.telegram.ui.Components.ResourceLoader; +import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.PhotoViewer; import org.telegram.ui.Components.AvatarDrawable; @@ -43,6 +43,8 @@ public class ChatActionCell extends BaseCell { } private static TextPaint textPaint; + private static Paint backPaint; + private static RectF rect; private URLSpan pressedLink; @@ -69,11 +71,17 @@ public class ChatActionCell extends BaseCell { textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); textPaint.setColor(0xffffffff); textPaint.linkColor = 0xffffffff; + textPaint.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + + backPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + rect = new RectF(); } + backPaint.setColor(ApplicationLoader.getServiceMessageColor()); + imageReceiver = new ImageReceiver(this); imageReceiver.setRoundRadius(AndroidUtilities.dp(32)); avatarDrawable = new AvatarDrawable(); - textPaint.setTextSize(AndroidUtilities.dp(MessagesController.getInstance().fontSize)); + textPaint.setTextSize(AndroidUtilities.dp(MessagesController.getInstance().fontSize - 2)); } public void setDelegate(ChatActionCellDelegate delegate) { @@ -258,26 +266,148 @@ public class ChatActionCell extends BaseCell { setMeasuredDimension(width, textHeight + AndroidUtilities.dp(14 + (currentMessageObject.type == 11 ? 70 : 0))); } + private int findMaxWidthAroundLine(int line) { + int width = (int) Math.ceil(textLayout.getLineWidth(line)); + int count = textLayout.getLineCount(); + for (int a = line + 1; a < count; a++) { + int w = (int) Math.ceil(textLayout.getLineWidth(a)); + if (Math.abs(w - width) < AndroidUtilities.dp(12)) { + width = Math.max(w, width); + } else { + break; + } + } + for (int a = line - 1; a >= 0; a--) { + int w = (int) Math.ceil(textLayout.getLineWidth(a)); + if (Math.abs(w - width) < AndroidUtilities.dp(12)) { + width = Math.max(w, width); + } else { + break; + } + } + return width; + } + @Override protected void onDraw(Canvas canvas) { if (currentMessageObject == null) { return; } - Drawable backgroundDrawable; - if (ApplicationLoader.isCustomTheme()) { - backgroundDrawable = ResourceLoader.backgroundBlack; - } else { - backgroundDrawable = ResourceLoader.backgroundBlue; - } - backgroundDrawable.setBounds(textX - AndroidUtilities.dp(5), AndroidUtilities.dp(5), textX + textWidth + AndroidUtilities.dp(5), AndroidUtilities.dp(9) + textHeight); - backgroundDrawable.draw(canvas); - if (currentMessageObject.type == 11) { imageReceiver.draw(canvas); } if (textLayout != null) { + final int count = textLayout.getLineCount(); + final int corner = AndroidUtilities.dp(6); + int y = AndroidUtilities.dp(7); + int previousLineBottom = 0; + int dx; + int dy; + for (int a = 0; a < count; a++) { + int width = findMaxWidthAroundLine(a); + int x = (getMeasuredWidth() - width) / 2 - AndroidUtilities.dp(3); + width += AndroidUtilities.dp(6); + int lineBottom = textLayout.getLineBottom(a); + int height = lineBottom - previousLineBottom; + int additionalHeight = 0; + previousLineBottom = lineBottom; + + boolean drawBottomCorners = a == count - 1; + boolean drawTopCorners = a == 0; + + if (drawTopCorners) { + y -= AndroidUtilities.dp(3); + height += AndroidUtilities.dp(3); + } + if (drawBottomCorners) { + height += AndroidUtilities.dp(3); + } + canvas.drawRect(x, y, x + width, y + height, backPaint); + + if (!drawBottomCorners && a + 1 < count) { + int nextLineWidth = findMaxWidthAroundLine(a + 1) + AndroidUtilities.dp(6); + if (nextLineWidth + corner * 2 < width) { + int nextX = (getMeasuredWidth() - nextLineWidth) / 2; + drawBottomCorners = true; + additionalHeight = AndroidUtilities.dp(3); + + canvas.drawRect(x, y + height, nextX, y + height + AndroidUtilities.dp(3), backPaint); + canvas.drawRect(nextX + nextLineWidth, y + height, x + width, y + height + AndroidUtilities.dp(3), backPaint); + } else if (width + corner * 2 < nextLineWidth) { + additionalHeight = AndroidUtilities.dp(3); + + dy = y + height - AndroidUtilities.dp(9); + + dx = x - corner * 2; + Theme.cornerInner[2].setBounds(dx, dy, dx + corner, dy + corner); + Theme.cornerInner[2].draw(canvas); + + dx = x + width + corner; + Theme.cornerInner[3].setBounds(dx, dy, dx + corner, dy + corner); + Theme.cornerInner[3].draw(canvas); + } else { + additionalHeight = AndroidUtilities.dp(6); + } + } + if (!drawTopCorners && a > 0) { + int prevLineWidth = findMaxWidthAroundLine(a - 1) + AndroidUtilities.dp(6); + if (prevLineWidth + corner * 2 < width) { + int prevX = (getMeasuredWidth() - prevLineWidth) / 2; + drawTopCorners = true; + y -= AndroidUtilities.dp(3); + height += AndroidUtilities.dp(3); + + canvas.drawRect(x, y, prevX, y + AndroidUtilities.dp(3), backPaint); + canvas.drawRect(prevX + prevLineWidth, y, x + width, y + AndroidUtilities.dp(3), backPaint); + } else if (width + corner * 2 < prevLineWidth) { + y -= AndroidUtilities.dp(3); + height += AndroidUtilities.dp(3); + + dy = y + corner; + + dx = x - corner * 2; + Theme.cornerInner[0].setBounds(dx, dy, dx + corner, dy + corner); + Theme.cornerInner[0].draw(canvas); + + dx = x + width + corner; + Theme.cornerInner[1].setBounds(dx, dy, dx + corner, dy + corner); + Theme.cornerInner[1].draw(canvas); + } else { + y -= AndroidUtilities.dp(6); + height += AndroidUtilities.dp(6); + } + } + + canvas.drawRect(x - corner, y + corner, x, y + height + additionalHeight - corner, backPaint); + canvas.drawRect(x + width, y + corner, x + width + corner, y + height + additionalHeight - corner, backPaint); + + if (drawTopCorners) { + dx = x - corner; + Theme.cornerOuter[0].setBounds(dx, y, dx + corner, y + corner); + Theme.cornerOuter[0].draw(canvas); + + dx = x + width; + Theme.cornerOuter[1].setBounds(dx, y, dx + corner, y + corner); + Theme.cornerOuter[1].draw(canvas); + } + + if (drawBottomCorners) { + dy = y + height + additionalHeight - corner; + + dx = x + width; + Theme.cornerOuter[2].setBounds(dx, dy, dx + corner, dy + corner); + Theme.cornerOuter[2].draw(canvas); + + dx = x - corner; + Theme.cornerOuter[3].setBounds(dx, dy, dx + corner, dy + corner); + Theme.cornerOuter[3].draw(canvas); + } + + y += height; + } + canvas.save(); canvas.translate(textXLeft, textY); textLayout.draw(canvas); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatAudioCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatAudioCell.java deleted file mode 100644 index 0e1040b9a..000000000 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatAudioCell.java +++ /dev/null @@ -1,498 +0,0 @@ -/* - * This is the source code of Telegram for Android v. 1.3.x. - * It is licensed under GNU GPL v. 2 or later. - * You should have received a copy of the license in this archive (see LICENSE). - * - * Copyright Nikolai Kudashov, 2013-2016. - */ - -package org.telegram.ui.Cells; - -import android.content.Context; -import android.graphics.Canvas; -import android.graphics.Paint; -import android.graphics.drawable.Drawable; -import android.text.Layout; -import android.text.StaticLayout; -import android.text.TextPaint; -import android.view.MotionEvent; -import android.view.SoundEffectConstants; - -import org.telegram.messenger.AndroidUtilities; -import org.telegram.messenger.ImageLoader; -import org.telegram.messenger.SendMessagesHelper; -import org.telegram.messenger.FileLoader; -import org.telegram.messenger.MediaController; -import org.telegram.messenger.MessageObject; -import org.telegram.tgnet.TLRPC; -import org.telegram.ui.Components.RadialProgress; -import org.telegram.ui.Components.ResourceLoader; -import org.telegram.ui.Components.SeekBar; -import org.telegram.ui.Components.SeekBarWaveform; - -import java.io.File; - -public class ChatAudioCell extends ChatBaseCell implements SeekBar.SeekBarDelegate { - - public interface ChatAudioCellDelegate { - boolean needPlayAudio(MessageObject messageObject); - } - - private static TextPaint timePaint; - private static Paint circlePaint; - - private boolean hasWaveform; - private SeekBar seekBar; - private SeekBarWaveform seekBarWaveform; - private int seekBarX; - private int seekBarY; - - private RadialProgress radialProgress; - private int buttonState = 0; - private int buttonX; - private int buttonY; - private boolean buttonPressed = false; - - private StaticLayout timeLayout; - private int timeX; - private int timeWidth2; - private String lastTimeString = null; - - private ChatAudioCellDelegate audioDelegate; - - public ChatAudioCell(Context context) { - super(context); - - seekBar = new SeekBar(context); - seekBar.setDelegate(this); - - seekBarWaveform = new SeekBarWaveform(context); - seekBarWaveform.setDelegate(this); - seekBarWaveform.setParentView(this); - - radialProgress = new RadialProgress(this); - drawForwardedName = true; - - if (timePaint == null) { - timePaint = new TextPaint(TextPaint.ANTI_ALIAS_FLAG); - timePaint.setTextSize(AndroidUtilities.dp(12)); - - circlePaint = new Paint(Paint.ANTI_ALIAS_FLAG); - } - } - - @Override - protected void onDetachedFromWindow() { - super.onDetachedFromWindow(); - MediaController.getInstance().removeLoadingFileObserver(this); - } - - @Override - protected void onAttachedToWindow() { - super.onAttachedToWindow(); - updateButtonState(false); - } - - @Override - public boolean onTouchEvent(MotionEvent event) { - float x = event.getX(); - float y = event.getY(); - boolean result = false; - if (delegate.canPerformActions()) { - if (hasWaveform) { - result = seekBarWaveform.onTouch(event.getAction(), event.getX() - seekBarX - AndroidUtilities.dp(13), event.getY() - seekBarY); - } else { - result = seekBar.onTouch(event.getAction(), event.getX() - seekBarX, event.getY() - seekBarY); - } - if (result) { - if (!hasWaveform && event.getAction() == MotionEvent.ACTION_DOWN) { - getParent().requestDisallowInterceptTouchEvent(true); - } else if (hasWaveform && !seekBarWaveform.isStartDraging() && event.getAction() == MotionEvent.ACTION_UP) { - didPressedButton(); - } - invalidate(); - } else { - int side = AndroidUtilities.dp(36); - boolean area; - if (buttonState == 0 || buttonState == 1) { - area = x >= buttonX - AndroidUtilities.dp(12) && x <= buttonX - AndroidUtilities.dp(12) + backgroundWidth && y >= namesOffset && y <= getMeasuredHeight(); - } else { - area = x >= buttonX && x <= buttonX + side && y >= buttonY && y <= buttonY + side; - } - if (event.getAction() == MotionEvent.ACTION_DOWN) { - if (area) { - buttonPressed = true; - invalidate(); - result = true; - radialProgress.swapBackground(getDrawableForCurrentState()); - } - } else if (buttonPressed) { - if (event.getAction() == MotionEvent.ACTION_UP) { - buttonPressed = false; - playSoundEffect(SoundEffectConstants.CLICK); - didPressedButton(); - invalidate(); - } else if (event.getAction() == MotionEvent.ACTION_CANCEL) { - buttonPressed = false; - invalidate(); - } else if (event.getAction() == MotionEvent.ACTION_MOVE) { - if (!area) { - buttonPressed = false; - invalidate(); - } - } - radialProgress.swapBackground(getDrawableForCurrentState()); - } - if (result && event.getAction() == MotionEvent.ACTION_DOWN) { - startCheckLongPress(); - } - if (event.getAction() != MotionEvent.ACTION_DOWN && event.getAction() != MotionEvent.ACTION_MOVE) { - cancelCheckLongPress(); - } - if (!result) { - result = super.onTouchEvent(event); - } - } - } - - return result; - } - - @Override - protected void onLongPress() { - super.onLongPress(); - if (buttonPressed) { - buttonPressed = false; - invalidate(); - } - } - - public void setAudioDelegate(ChatAudioCellDelegate delegate) { - audioDelegate = delegate; - } - - private void didPressedButton() { - if (buttonState == 0) { - if (audioDelegate.needPlayAudio(currentMessageObject)) { - buttonState = 1; - radialProgress.setBackground(getDrawableForCurrentState(), false, false); - invalidate(); - } - } else if (buttonState == 1) { - boolean result = MediaController.getInstance().pauseAudio(currentMessageObject); - if (result) { - buttonState = 0; - radialProgress.setBackground(getDrawableForCurrentState(), false, false); - invalidate(); - } - } else if (buttonState == 2) { - radialProgress.setProgress(0, false); - FileLoader.getInstance().loadFile(currentMessageObject.messageOwner.media.document, true, false); - buttonState = 3; - radialProgress.setBackground(getDrawableForCurrentState(), true, false); - invalidate(); - } else if (buttonState == 3) { - FileLoader.getInstance().cancelLoadFile(currentMessageObject.messageOwner.media.document); - buttonState = 2; - radialProgress.setBackground(getDrawableForCurrentState(), false, false); - invalidate(); - } else if (buttonState == 4) { - if (currentMessageObject.isOut() && currentMessageObject.isSending()) { - if (delegate != null) { - delegate.didPressedCancelSendButton(this); - } - } - } - } - - public void updateProgress() { - if (currentMessageObject == null) { - return; - } - - if (hasWaveform) { - if (!seekBarWaveform.isDragging()) { - seekBarWaveform.setProgress(currentMessageObject.audioProgress); - } - } else { - if (!seekBar.isDragging()) { - seekBar.setProgress(currentMessageObject.audioProgress); - } - } - - int duration = 0; - if (!MediaController.getInstance().isPlayingAudio(currentMessageObject)) { - for (int a = 0; a < currentMessageObject.messageOwner.media.document.attributes.size(); a++) { - TLRPC.DocumentAttribute attribute = currentMessageObject.messageOwner.media.document.attributes.get(a); - if (attribute instanceof TLRPC.TL_documentAttributeAudio) { - duration = attribute.duration; - break; - } - } - } else { - duration = currentMessageObject.audioProgressSec; - } - String timeString = String.format("%02d:%02d", duration / 60, duration % 60); - if (lastTimeString == null || lastTimeString != null && !lastTimeString.equals(timeString)) { - lastTimeString = timeString; - timeWidth2 = (int)Math.ceil(timePaint.measureText(timeString)); - timeLayout = new StaticLayout(timeString, timePaint, timeWidth2, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); - } - invalidate(); - } - - public void downloadAudioIfNeed() { - if (buttonState == 2) { - FileLoader.getInstance().loadFile(currentMessageObject.messageOwner.media.document, true, false); - buttonState = 3; - radialProgress.setBackground(getDrawableForCurrentState(), false, false); - } - } - - public void updateButtonState(boolean animated) { - if (currentMessageObject == null) { - return; - } - if (currentMessageObject.isOut() && currentMessageObject.isSending()) { - MediaController.getInstance().addLoadingFileObserver(currentMessageObject.messageOwner.attachPath, this); - buttonState = 4; - radialProgress.setBackground(getDrawableForCurrentState(), true, animated); - Float progress = ImageLoader.getInstance().getFileProgress(currentMessageObject.messageOwner.attachPath); - if (progress == null && SendMessagesHelper.getInstance().isSendingMessage(currentMessageObject.getId())) { - progress = 1.0f; - } - radialProgress.setProgress(progress != null ? progress : 0, false); - } else { - File cacheFile = null; - if (currentMessageObject.messageOwner.attachPath != null && currentMessageObject.messageOwner.attachPath.length() > 0) { - cacheFile = new File(currentMessageObject.messageOwner.attachPath); - if(!cacheFile.exists()) { - cacheFile = null; - } - } - if (cacheFile == null) { - cacheFile = FileLoader.getPathToMessage(currentMessageObject.messageOwner); - } - if (cacheFile.exists()) { - MediaController.getInstance().removeLoadingFileObserver(this); - boolean playing = MediaController.getInstance().isPlayingAudio(currentMessageObject); - if (!playing || playing && MediaController.getInstance().isAudioPaused()) { - buttonState = 0; - } else { - buttonState = 1; - } - radialProgress.setProgress(0, animated); - radialProgress.setBackground(getDrawableForCurrentState(), false, animated); - } else { - String fileName = currentMessageObject.getFileName(); - MediaController.getInstance().addLoadingFileObserver(fileName, this); - if (!FileLoader.getInstance().isLoadingFile(fileName)) { - buttonState = 2; - radialProgress.setProgress(0, animated); - radialProgress.setBackground(getDrawableForCurrentState(), false, animated); - } else { - buttonState = 3; - Float progress = ImageLoader.getInstance().getFileProgress(fileName); - if (progress != null) { - radialProgress.setProgress(progress, animated); - } else { - radialProgress.setProgress(0, animated); - } - radialProgress.setBackground(getDrawableForCurrentState(), true, animated); - } - } - } - updateProgress(); - } - - @Override - public void onFailedDownload(String fileName) { - updateButtonState(true); - } - - @Override - public void onSuccessDownload(String fileName) { - updateButtonState(true); - updateWaveform(); - } - - @Override - public void onProgressDownload(String fileName, float progress) { - radialProgress.setProgress(progress, true); - if (buttonState != 3) { - updateButtonState(false); - } - } - - @Override - public void onProgressUpload(String fileName, float progress, boolean isEncrypted) { - radialProgress.setProgress(progress, true); - } - - @Override - public void onSeekBarDrag(float progress) { - if (currentMessageObject == null) { - return; - } - currentMessageObject.audioProgress = progress; - MediaController.getInstance().seekToProgress(currentMessageObject, progress); - } - - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - int width = MeasureSpec.getSize(widthMeasureSpec); - setMeasuredDimension(width, AndroidUtilities.dp(66) + namesOffset); - } - - @Override - protected void onLayout(boolean changed, int left, int top, int right, int bottom) { - super.onLayout(changed, left, top, right, bottom); - - if (currentMessageObject.isOutOwner()) { - seekBarX = layoutWidth - backgroundWidth + AndroidUtilities.dp(55); - buttonX = layoutWidth - backgroundWidth + AndroidUtilities.dp(13); - timeX = layoutWidth - backgroundWidth + AndroidUtilities.dp(66); - } else { - if (isChat && currentMessageObject.isFromUser()) { - seekBarX = AndroidUtilities.dp(116); - buttonX = AndroidUtilities.dp(74); - timeX = AndroidUtilities.dp(127); - } else { - seekBarX = AndroidUtilities.dp(64); - buttonX = AndroidUtilities.dp(22); - timeX = AndroidUtilities.dp(75); - } - } - seekBarWaveform.width = seekBar.width = backgroundWidth - AndroidUtilities.dp(70); - seekBarWaveform.height = seekBar.height = AndroidUtilities.dp(30); - seekBarWaveform.width -= AndroidUtilities.dp(20); - seekBarY = AndroidUtilities.dp(11) + namesOffset; - buttonY = AndroidUtilities.dp(13) + namesOffset; - radialProgress.setProgressRect(buttonX, buttonY, buttonX + AndroidUtilities.dp(40), buttonY + AndroidUtilities.dp(40)); - - updateProgress(); - } - - @Override - public void setMessageObject(MessageObject messageObject) { - boolean dataChanged = currentMessageObject == messageObject && isUserDataChanged(); - if (currentMessageObject != messageObject || dataChanged) { - if (AndroidUtilities.isTablet()) { - backgroundWidth = Math.min(AndroidUtilities.getMinTabletSide() - AndroidUtilities.dp(isChat && messageObject.isFromUser() && !messageObject.isOutOwner() ? 102 : 50), AndroidUtilities.dp(300)); - } else { - backgroundWidth = Math.min(AndroidUtilities.displaySize.x - AndroidUtilities.dp(isChat && messageObject.isFromUser() && !messageObject.isOutOwner() ? 102 : 50), AndroidUtilities.dp(300)); - } - - int duration = 0; - for (int a = 0; a < messageObject.messageOwner.media.document.attributes.size(); a++) { - TLRPC.DocumentAttribute attribute = messageObject.messageOwner.media.document.attributes.get(a); - if (attribute instanceof TLRPC.TL_documentAttributeAudio) { - duration = attribute.duration; - break; - } - } - - availableTimeWidth = backgroundWidth - AndroidUtilities.dp(75 + 14) - (int) Math.ceil(timePaint.measureText("00:00")); - measureTime(messageObject); - int minSize = AndroidUtilities.dp(40 + 14 + 20 + 90 + 10) + timeWidth; - backgroundWidth = Math.min(backgroundWidth, minSize + duration * AndroidUtilities.dp(10)); - - hasWaveform = false; - if (messageObject.isOutOwner()) { - seekBarWaveform.setColors(0xffc3e3ab, 0xff87bf78, 0xffa9d389); - } else { - seekBarWaveform.setColors(0xffdee5eb, 0xff4195e5, 0xffaed5e2); - } - seekBar.type = messageObject.isOutOwner() ? 0 : 1; - - super.setMessageObject(messageObject); - } - updateWaveform(); - updateButtonState(dataChanged); - } - - @Override - protected int getMaxNameWidth() { - return backgroundWidth - AndroidUtilities.dp(24); - } - - @Override - public void setCheckPressed(boolean value, boolean pressed) { - super.setCheckPressed(value, pressed); - if (radialProgress.swapBackground(getDrawableForCurrentState())) { - invalidate(); - } - seekBarWaveform.setSelected(isDrawSelectedBackground()); - } - - @Override - public void setHighlighted(boolean value) { - super.setHighlighted(value); - if (radialProgress.swapBackground(getDrawableForCurrentState())) { - invalidate(); - } - seekBarWaveform.setSelected(isDrawSelectedBackground()); - } - - @Override - public void setPressed(boolean pressed) { - super.setPressed(pressed); - if (radialProgress.swapBackground(getDrawableForCurrentState())) { - invalidate(); - } - seekBarWaveform.setSelected(isDrawSelectedBackground()); - } - - private Drawable getDrawableForCurrentState() { - return ResourceLoader.audioStatesDrawable[currentMessageObject.isOutOwner() ? buttonState : buttonState + 5][isDrawSelectedBackground() ? 2 : (buttonPressed ? 1 : 0)]; - } - - private void updateWaveform() { - File path = FileLoader.getPathToMessage(currentMessageObject.messageOwner); - for (int a = 0; a < currentMessageObject.messageOwner.media.document.attributes.size(); a++) { - TLRPC.DocumentAttribute attribute = currentMessageObject.messageOwner.media.document.attributes.get(a); - if (attribute instanceof TLRPC.TL_documentAttributeAudio) { - if (attribute.waveform == null || attribute.waveform.length == 0) { - MediaController.getInstance().generateWaveform(currentMessageObject); - } - hasWaveform = attribute.waveform != null; - seekBarWaveform.setWaveform(attribute.waveform); - seekBarWaveform.setMessageObject(currentMessageObject); - break; - } - } - } - - @Override - protected void onDraw(Canvas canvas) { - if (currentMessageObject == null) { - return; - } - - super.onDraw(canvas); - - canvas.save(); - if (hasWaveform) { - canvas.translate(seekBarX + AndroidUtilities.dp(13), seekBarY); - seekBarWaveform.draw(canvas); - } else { - canvas.translate(seekBarX, seekBarY); - seekBar.draw(canvas); - } - canvas.restore(); - - radialProgress.setProgressColor(currentMessageObject.isOutOwner() ? 0xff87bf78 : (isDrawSelectedBackground() ? 0xff83b2c2 : 0xffa2b5c7)); - timePaint.setColor(currentMessageObject.isOutOwner() ? 0xff70b15c : (isDrawSelectedBackground() ? 0xff89b4c1 : 0xffa1aab3)); - circlePaint.setColor(currentMessageObject.isOutOwner() ? 0xff87bf78 : 0xff4195e5); - radialProgress.draw(canvas); - - canvas.save(); - canvas.translate(timeX, AndroidUtilities.dp(42) + namesOffset); - timeLayout.draw(canvas); - canvas.restore(); - - if (currentMessageObject.messageOwner.to_id.channel_id == 0 && currentMessageObject.isContentUnread()) { - canvas.drawCircle(timeX + timeWidth2 + AndroidUtilities.dp(8), AndroidUtilities.dp(49.5f) + namesOffset, AndroidUtilities.dp(3), circlePaint); - } - } -} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatBaseCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatBaseCell.java index 9c32ab0d1..a3cf79580 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatBaseCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatBaseCell.java @@ -10,9 +10,9 @@ package org.telegram.ui.Cells; import android.annotation.SuppressLint; import android.content.Context; -import android.content.res.Configuration; import android.graphics.Canvas; import android.graphics.Paint; +import android.graphics.Typeface; import android.graphics.drawable.Drawable; import android.text.Layout; import android.text.SpannableStringBuilder; @@ -30,7 +30,6 @@ import org.telegram.messenger.Emoji; import org.telegram.messenger.LocaleController; import org.telegram.messenger.MediaController; import org.telegram.messenger.UserObject; -import org.telegram.messenger.ApplicationLoader; import org.telegram.messenger.FileLoader; import org.telegram.messenger.FileLog; import org.telegram.tgnet.TLRPC; @@ -39,8 +38,7 @@ import org.telegram.messenger.R; import org.telegram.messenger.MessageObject; import org.telegram.messenger.ImageReceiver; import org.telegram.ui.Components.AvatarDrawable; -import org.telegram.ui.Components.ResourceLoader; -import org.telegram.ui.Components.StaticLayoutEx; +import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Components.TypefaceSpan; public class ChatBaseCell extends BaseCell implements MediaController.FileDownloadProgressListener { @@ -53,10 +51,12 @@ public class ChatBaseCell extends BaseCell implements MediaController.FileDownlo void didLongPressed(ChatBaseCell cell); void didPressedReplyMessage(ChatBaseCell cell, int id); void didPressedUrl(MessageObject messageObject, ClickableSpan url, boolean longPress); - void needOpenWebView(String url, String title, String originalUrl, int w, int h); + void needOpenWebView(String url, String title, String description, String originalUrl, int w, int h); void didPressedImage(ChatBaseCell cell); void didPressedShare(ChatBaseCell cell); void didPressedOther(ChatBaseCell cell); + void didPressedBotButton(ChatBaseCell cell, TLRPC.KeyboardButton button); + boolean needPlayAudio(MessageObject messageObject); boolean canPerformActions(); } @@ -71,13 +71,15 @@ public class ChatBaseCell extends BaseCell implements MediaController.FileDownlo private boolean wasLayout; protected boolean isAvatarVisible; protected boolean drawBackground = true; + protected int substractBackgroundHeight; protected boolean allowAssistant; + protected Drawable currentBackgroundDrawable; protected MessageObject currentMessageObject; private int viaWidth; private int viaNameWidth; protected int availableTimeWidth; - private static TextPaint timePaint; + protected static TextPaint timePaint; private static TextPaint namePaint; private static TextPaint forwardNamePaint; protected static TextPaint replyNamePaint; @@ -117,14 +119,16 @@ public class ChatBaseCell extends BaseCell implements MediaController.FileDownlo protected int nameWidth; private float nameOffsetX; private float nameX; + private float nameY; protected boolean drawName; + protected boolean drawNameLayout; - private StaticLayout forwardedNameLayout; + private StaticLayout[] forwardedNameLayout = new StaticLayout[2]; protected int forwardedNameWidth; protected boolean drawForwardedName; private int forwardNameX; private int forwardNameY; - private float forwardNameOffsetX; + private float forwardNameOffsetX[] = new float[2]; private StaticLayout timeLayout; protected int timeWidth; @@ -162,7 +166,8 @@ public class ChatBaseCell extends BaseCell implements MediaController.FileDownlo timePaint.setTextSize(AndroidUtilities.dp(12)); namePaint = new TextPaint(TextPaint.ANTI_ALIAS_FLAG); - namePaint.setTextSize(AndroidUtilities.dp(15)); + namePaint.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + namePaint.setTextSize(AndroidUtilities.dp(14)); forwardNamePaint = new TextPaint(TextPaint.ANTI_ALIAS_FLAG); forwardNamePaint.setTextSize(AndroidUtilities.dp(14)); @@ -173,7 +178,7 @@ public class ChatBaseCell extends BaseCell implements MediaController.FileDownlo replyTextPaint = new TextPaint(TextPaint.ANTI_ALIAS_FLAG); replyTextPaint.setTextSize(AndroidUtilities.dp(14)); - replyTextPaint.linkColor = 0xff316f9f; + replyTextPaint.linkColor = Theme.MSG_LINK_TEXT_COLOR; replyLinePaint = new Paint(); } @@ -315,11 +320,11 @@ public class ChatBaseCell extends BaseCell implements MediaController.FileDownlo if ((messageObject.messageOwner.flags & TLRPC.MESSAGE_FLAG_HAS_VIEWS) != 0) { currentViewsString = String.format("%s", LocaleController.formatShortNumber(Math.max(1, messageObject.messageOwner.views), null)); viewsTextWidth = (int) Math.ceil(timePaint.measureText(currentViewsString)); - timeWidth += viewsTextWidth + ResourceLoader.viewsCountDrawable[0].getIntrinsicWidth() + AndroidUtilities.dp(10); + timeWidth += viewsTextWidth + Theme.viewsCountDrawable[0].getIntrinsicWidth() + AndroidUtilities.dp(10); } if (hasSign) { if (availableTimeWidth == 0) { - availableTimeWidth = AndroidUtilities.dp(100); + availableTimeWidth = AndroidUtilities.dp(1000); } CharSequence name = ContactsController.formatName(signUser.first_name, signUser.last_name).replace('\n', ' '); int widthForSign = availableTimeWidth - timeWidth; @@ -342,7 +347,7 @@ public class ChatBaseCell extends BaseCell implements MediaController.FileDownlo return true; } } else if (messageObject.messageOwner.from_id < 0 || messageObject.messageOwner.post) { - if (messageObject.messageOwner.to_id.channel_id != 0 && (messageObject.messageOwner.reply_to_msg_id == 0 || messageObject.type != 13)) { + if (messageObject.messageOwner.to_id.channel_id != 0 && (messageObject.messageOwner.via_bot_id == 0 && messageObject.messageOwner.reply_to_msg_id == 0 || messageObject.type != 13)) { return true; } } @@ -369,6 +374,7 @@ public class ChatBaseCell extends BaseCell implements MediaController.FileDownlo currentUser = null; currentChat = null; currentViaBotUser = null; + drawNameLayout = false; if ((messageObject.messageOwner.flags & TLRPC.MESSAGE_FLAG_HAS_VIEWS) != 0) { if (currentMessageObject.isContentUnread() && !currentMessageObject.isOut()) { @@ -417,25 +423,25 @@ public class ChatBaseCell extends BaseCell implements MediaController.FileDownlo namesOffset = 0; String viaUsername = null; - String viaString = null; + CharSequence viaString = null; if (messageObject.messageOwner.via_bot_id != 0) { TLRPC.User botUser = MessagesController.getInstance().getUser(messageObject.messageOwner.via_bot_id); if (botUser != null && botUser.username != null && botUser.username.length() > 0) { viaUsername = "@" + botUser.username; - viaString = " via " + viaUsername; - viaWidth = (int) Math.ceil(forwardNamePaint.measureText(viaString)); + viaString = AndroidUtilities.replaceTags(String.format(" via %s", viaUsername)); + viaWidth = (int) Math.ceil(replyNamePaint.measureText(viaString, 0, viaString.length())); currentViaBotUser = botUser; } } else if (messageObject.messageOwner.via_bot_name != null && messageObject.messageOwner.via_bot_name.length() > 0) { viaUsername = "@" + messageObject.messageOwner.via_bot_name; - viaString = " via " + messageObject.messageOwner.via_bot_name; - viaWidth = (int) Math.ceil(forwardNamePaint.measureText(viaString)); + viaString = AndroidUtilities.replaceTags(String.format(" via %s", viaUsername)); + viaWidth = (int) Math.ceil(replyNamePaint.measureText(viaString, 0, viaString.length())); } boolean authorName = drawName && isChat && !currentMessageObject.isOutOwner(); - boolean viaBot = messageObject.messageOwner.fwd_from == null && viaUsername != null; + boolean viaBot = (messageObject.messageOwner.fwd_from == null || messageObject.type == 14) && viaUsername != null; if (authorName || viaBot) { - drawName = true; + drawNameLayout = true; nameWidth = getMaxNameWidth(); if (nameWidth < 0) { nameWidth = AndroidUtilities.dp(100); @@ -452,30 +458,38 @@ public class ChatBaseCell extends BaseCell implements MediaController.FileDownlo } else { currentNameString = ""; } - - CharSequence nameStringFinal = TextUtils.ellipsize(currentNameString.replace("\n", " "), namePaint, nameWidth - AndroidUtilities.dp(12) - (viaBot ? viaWidth : 0), TextUtils.TruncateAt.END); + CharSequence nameStringFinal = TextUtils.ellipsize(currentNameString.replace('\n', ' '), namePaint, nameWidth - (viaBot ? viaWidth : 0), TextUtils.TruncateAt.END); if (viaBot) { viaNameWidth = (int) Math.ceil(namePaint.measureText(nameStringFinal, 0, nameStringFinal.length())); if (viaNameWidth != 0) { viaNameWidth += AndroidUtilities.dp(4); } + int color; + if (currentMessageObject.type == 13) { + color = Theme.MSG_STICKER_VIA_BOT_NAME_TEXT_COLOR; + } else { + color = currentMessageObject.isOutOwner() ? Theme.MSG_OUT_VIA_BOT_NAME_TEXT_COLOR : Theme.MSG_IN_VIA_BOT_NAME_TEXT_COLOR; + } if (currentNameString.length() > 0) { SpannableStringBuilder stringBuilder = new SpannableStringBuilder(String.format("%s via %s", nameStringFinal, viaUsername)); - stringBuilder.setSpan(new TypefaceSpan(null, 0, currentMessageObject.isOutOwner() ? 0xff4a923c : 0xff006fc8), nameStringFinal.length() + 1, nameStringFinal.length() + 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); - stringBuilder.setSpan(new TypefaceSpan(AndroidUtilities.getTypeface("fonts/rmedium.ttf"), 0, currentMessageObject.isOutOwner() ? 0xff4a923c : 0xff006fc8), nameStringFinal.length() + 5, stringBuilder.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + stringBuilder.setSpan(new TypefaceSpan(Typeface.DEFAULT, 0, color), nameStringFinal.length() + 1, nameStringFinal.length() + 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + stringBuilder.setSpan(new TypefaceSpan(AndroidUtilities.getTypeface("fonts/rmedium.ttf"), 0, color), nameStringFinal.length() + 5, stringBuilder.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); nameStringFinal = stringBuilder; } else { SpannableStringBuilder stringBuilder = new SpannableStringBuilder(String.format("via %s", viaUsername)); - stringBuilder.setSpan(new TypefaceSpan(null, 0, currentMessageObject.isOutOwner() ? 0xff4a923c : 0xff006fc8), 0, 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); - stringBuilder.setSpan(new TypefaceSpan(AndroidUtilities.getTypeface("fonts/rmedium.ttf"), 0, currentMessageObject.isOutOwner() ? 0xff4a923c : 0xff006fc8), 4, stringBuilder.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + stringBuilder.setSpan(new TypefaceSpan(Typeface.DEFAULT, 0, color), 0, 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + stringBuilder.setSpan(new TypefaceSpan(AndroidUtilities.getTypeface("fonts/rmedium.ttf"), 0, color), 4, stringBuilder.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); nameStringFinal = stringBuilder; } + nameStringFinal = TextUtils.ellipsize(nameStringFinal, namePaint, nameWidth, TextUtils.TruncateAt.END); } try { nameLayout = new StaticLayout(nameStringFinal, namePaint, nameWidth + AndroidUtilities.dp(2), Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); if (nameLayout != null && nameLayout.getLineCount() > 0) { - nameWidth = (int)Math.ceil(nameLayout.getLineWidth(0)); - namesOffset += AndroidUtilities.dp(19); + nameWidth = (int) Math.ceil(nameLayout.getLineWidth(0)); + if (messageObject.type != 13) { + namesOffset += AndroidUtilities.dp(19); + } nameOffsetX = nameLayout.getLineLeft(0); } else { nameWidth = 0; @@ -483,14 +497,21 @@ public class ChatBaseCell extends BaseCell implements MediaController.FileDownlo } catch (Exception e) { FileLog.e("tmessages", e); } + if (currentNameString.length() == 0) { + currentNameString = null; + } } else { currentNameString = null; nameLayout = null; nameWidth = 0; } + currentForwardUser = null; + currentForwardNameString = null; + forwardedNameLayout[0] = null; + forwardedNameLayout[1] = null; + forwardedNameWidth = 0; if (drawForwardedName && messageObject.isForwarded()) { - currentForwardUser = null; currentForwardChannel = null; if (messageObject.messageOwner.fwd_from.channel_id != 0) { currentForwardChannel = MessagesController.getInstance().getChat(messageObject.messageOwner.fwd_from.channel_id); @@ -511,38 +532,33 @@ public class ChatBaseCell extends BaseCell implements MediaController.FileDownlo } forwardedNameWidth = getMaxNameWidth(); - - CharSequence str = TextUtils.ellipsize(currentForwardNameString.replace("\n", " "), forwardNamePaint, forwardedNameWidth - AndroidUtilities.dp(40) - viaWidth, TextUtils.TruncateAt.END); + int fromWidth = (int) Math.ceil(forwardNamePaint.measureText(LocaleController.getString("From", R.string.From) + " ")); + CharSequence name = TextUtils.ellipsize(currentForwardNameString.replace('\n', ' '), replyNamePaint, forwardedNameWidth - fromWidth - viaWidth, TextUtils.TruncateAt.END); + CharSequence lastLine; if (viaString != null) { - viaNameWidth = (int) Math.ceil(forwardNamePaint.measureText(LocaleController.getString("From", R.string.From) + " " + str)); - str = AndroidUtilities.replaceTags(String.format("%s\n%s %s via %s", LocaleController.getString("ForwardedMessage", R.string.ForwardedMessage), LocaleController.getString("From", R.string.From), str, viaUsername)); + viaNameWidth = (int) Math.ceil(forwardNamePaint.measureText(LocaleController.getString("From", R.string.From) + " " + name)); + lastLine = AndroidUtilities.replaceTags(String.format("%s %s via %s", LocaleController.getString("From", R.string.From), name, viaUsername)); } else { - str = AndroidUtilities.replaceTags(String.format("%s\n%s %s", LocaleController.getString("ForwardedMessage", R.string.ForwardedMessage), LocaleController.getString("From", R.string.From), str)); + lastLine = AndroidUtilities.replaceTags(String.format("%s %s", LocaleController.getString("From", R.string.From), name)); } - forwardedNameLayout = StaticLayoutEx.createStaticLayout(str, forwardNamePaint, forwardedNameWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false, TextUtils.TruncateAt.END, forwardedNameWidth, 2); - if (forwardedNameLayout.getLineCount() > 1) { - forwardedNameWidth = Math.max((int) Math.ceil(forwardedNameLayout.getLineWidth(0)), (int) Math.ceil(forwardedNameLayout.getLineWidth(1))); + lastLine = TextUtils.ellipsize(lastLine, forwardNamePaint, forwardedNameWidth, TextUtils.TruncateAt.END); + try { + forwardedNameLayout[1] = new StaticLayout(lastLine, forwardNamePaint, forwardedNameWidth + AndroidUtilities.dp(2), Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); + lastLine = TextUtils.ellipsize(AndroidUtilities.replaceTags(LocaleController.getString("ForwardedMessage", R.string.ForwardedMessage)), forwardNamePaint, forwardedNameWidth, TextUtils.TruncateAt.END); + forwardedNameLayout[0] = new StaticLayout(lastLine, forwardNamePaint, forwardedNameWidth + AndroidUtilities.dp(2), Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); + forwardedNameWidth = Math.max((int) Math.ceil(forwardedNameLayout[0].getLineWidth(0)), (int) Math.ceil(forwardedNameLayout[1].getLineWidth(0))); + forwardNameOffsetX[0] = forwardedNameLayout[0].getLineLeft(0); + forwardNameOffsetX[1] = forwardedNameLayout[1].getLineLeft(0); namesOffset += AndroidUtilities.dp(36); - forwardNameOffsetX = Math.min(forwardedNameLayout.getLineLeft(0), forwardedNameLayout.getLineLeft(1)); - } else { - forwardedNameWidth = 0; + } catch (Exception e) { + FileLog.e("tmessages", e); } - } else { - currentForwardNameString = null; - forwardedNameLayout = null; - forwardedNameWidth = 0; } - } else { - currentForwardNameString = null; - forwardedNameLayout = null; - forwardedNameWidth = 0; } if (messageObject.isReply()) { namesOffset += AndroidUtilities.dp(42); - if (messageObject.contentType == 2 || messageObject.contentType == 3) { - namesOffset += AndroidUtilities.dp(4); - } else if (messageObject.type != 0) { + if (messageObject.type != 0) { if (messageObject.type == 13) { namesOffset -= AndroidUtilities.dp(42); } else { @@ -550,33 +566,9 @@ public class ChatBaseCell extends BaseCell implements MediaController.FileDownlo } } - int maxWidth; - if (messageObject.type == 13) { - int width; - if (AndroidUtilities.isTablet()) { - if (AndroidUtilities.isSmallTablet() && getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { - width = AndroidUtilities.displaySize.x; - } else { - int leftWidth = AndroidUtilities.displaySize.x / 100 * 35; - if (leftWidth < AndroidUtilities.dp(320)) { - leftWidth = AndroidUtilities.dp(320); - } - width = AndroidUtilities.displaySize.x - leftWidth; - } - } else { - width = AndroidUtilities.displaySize.x; - } - - if (messageObject.isOutOwner()) { - maxWidth = width - backgroundWidth - AndroidUtilities.dp(60); - } else { - maxWidth = width - backgroundWidth - AndroidUtilities.dp(56 + (isChat && messageObject.isFromUser() ? 61 : 0)); - } - } else { - maxWidth = getMaxNameWidth() - AndroidUtilities.dp(22); - } - if (!mediaBackground) { - maxWidth -= AndroidUtilities.dp(8); + int maxWidth = getMaxNameWidth(); + if (messageObject.type != 13) { + maxWidth -= AndroidUtilities.dp(10); } CharSequence stringFinalName = null; @@ -612,23 +604,23 @@ public class ChatBaseCell extends BaseCell implements MediaController.FileDownlo } if (name != null) { - stringFinalName = TextUtils.ellipsize(name.replace("\n", " "), replyNamePaint, maxWidth - AndroidUtilities.dp(8), TextUtils.TruncateAt.END); + stringFinalName = TextUtils.ellipsize(name.replace('\n', ' '), replyNamePaint, maxWidth, TextUtils.TruncateAt.END); } if (messageObject.replyMessageObject.messageText != null && messageObject.replyMessageObject.messageText.length() > 0) { String mess = messageObject.replyMessageObject.messageText.toString(); if (mess.length() > 150) { mess = mess.substring(0, 150); } - mess = mess.replace("\n", " "); + mess = mess.replace('\n', ' '); stringFinalText = Emoji.replaceEmoji(mess, replyTextPaint.getFontMetricsInt(), AndroidUtilities.dp(14), false); - stringFinalText = TextUtils.ellipsize(stringFinalText, replyTextPaint, maxWidth - AndroidUtilities.dp(8), TextUtils.TruncateAt.END); + stringFinalText = TextUtils.ellipsize(stringFinalText, replyTextPaint, maxWidth, TextUtils.TruncateAt.END); } } if (stringFinalName == null) { stringFinalName = LocaleController.getString("Loading", R.string.Loading); } try { - replyNameLayout = new StaticLayout(stringFinalName, replyNamePaint, maxWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); + replyNameLayout = new StaticLayout(stringFinalName, replyNamePaint, maxWidth + AndroidUtilities.dp(6), Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); if (replyNameLayout.getLineCount() > 0) { replyNameWidth = (int)Math.ceil(replyNameLayout.getLineWidth(0)) + AndroidUtilities.dp(12 + (needReplyImage ? 44 : 0)); replyNameOffset = replyNameLayout.getLineLeft(0); @@ -638,7 +630,7 @@ public class ChatBaseCell extends BaseCell implements MediaController.FileDownlo } try { if (stringFinalText != null) { - replyTextLayout = new StaticLayout(stringFinalText, replyTextPaint, maxWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); + replyTextLayout = new StaticLayout(stringFinalText, replyTextPaint, maxWidth + AndroidUtilities.dp(6), Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); if (replyTextLayout.getLineCount() > 0) { replyTextWidth = (int) Math.ceil(replyTextLayout.getLineWidth(0)) + AndroidUtilities.dp(12 + (needReplyImage ? 44 : 0)); replyTextOffset = replyTextLayout.getLineLeft(0); @@ -657,7 +649,7 @@ public class ChatBaseCell extends BaseCell implements MediaController.FileDownlo } protected int getMaxNameWidth() { - return backgroundWidth - AndroidUtilities.dp(8); + return backgroundWidth - AndroidUtilities.dp(mediaBackground ? 22 : 31); } @Override @@ -670,14 +662,14 @@ public class ChatBaseCell extends BaseCell implements MediaController.FileDownlo if (isAvatarVisible && avatarImage.isInsideImage(x, y)) { avatarPressed = true; result = true; - } else if (drawForwardedName && forwardedNameLayout != null && x >= forwardNameX && x <= forwardNameX + forwardedNameWidth && y >= forwardNameY && y <= forwardNameY + AndroidUtilities.dp(32)) { + } else if (drawForwardedName && forwardedNameLayout[0] != null && x >= forwardNameX && x <= forwardNameX + forwardedNameWidth && y >= forwardNameY && y <= forwardNameY + AndroidUtilities.dp(32)) { if (viaWidth != 0 && x >= forwardNameX + viaNameWidth + AndroidUtilities.dp(4)) { forwardBotPressed = true; } else { forwardNamePressed = true; } result = true; - } else if (drawName && nameLayout != null && viaWidth != 0 && x >= nameX + viaNameWidth && x <= nameX + viaNameWidth + viaWidth && y >= AndroidUtilities.dp(6) && y <= AndroidUtilities.dp(30)) { + } else if (drawNameLayout && nameLayout != null && viaWidth != 0 && x >= nameX + viaNameWidth && x <= nameX + viaNameWidth + viaWidth && y >= nameY - AndroidUtilities.dp(4) && y <= nameY + AndroidUtilities.dp(20)) { forwardBotPressed = true; result = true; } else if (currentMessageObject.isReply() && x >= replyStartX && x <= replyStartX + Math.max(replyNameWidth, replyTextWidth) && y >= replyStartY && y <= replyStartY + AndroidUtilities.dp(35)) { @@ -742,12 +734,12 @@ public class ChatBaseCell extends BaseCell implements MediaController.FileDownlo } else if (event.getAction() == MotionEvent.ACTION_CANCEL) { forwardBotPressed = false; } else if (event.getAction() == MotionEvent.ACTION_MOVE) { - if (drawForwardedName && forwardedNameLayout != null) { + if (drawForwardedName && forwardedNameLayout[0] != null) { if (!(x >= forwardNameX && x <= forwardNameX + forwardedNameWidth && y >= forwardNameY && y <= forwardNameY + AndroidUtilities.dp(32))) { forwardBotPressed = false; } } else { - if (!(x >= nameX + viaNameWidth && x <= nameX + viaNameWidth + viaWidth && y >= AndroidUtilities.dp(6) && y <= AndroidUtilities.dp(30))) { + if (!(x >= nameX + viaNameWidth && x <= nameX + viaNameWidth + viaWidth && y >= nameY - AndroidUtilities.dp(4) && y <= nameY + AndroidUtilities.dp(20))) { forwardBotPressed = false; } } @@ -796,20 +788,20 @@ public class ChatBaseCell extends BaseCell implements MediaController.FileDownlo if (changed || !wasLayout) { layoutWidth = getMeasuredWidth(); - layoutHeight = getMeasuredHeight(); + layoutHeight = getMeasuredHeight() - substractBackgroundHeight; if (timeTextWidth < 0) { timeTextWidth = AndroidUtilities.dp(10); } - timeLayout = new StaticLayout(currentTimeString, timePaint, timeTextWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); + timeLayout = new StaticLayout(currentTimeString, timePaint, timeTextWidth + AndroidUtilities.dp(6), Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); if (!mediaBackground) { if (!currentMessageObject.isOutOwner()) { - timeX = backgroundWidth - AndroidUtilities.dp(9) - timeWidth + (isChat && currentMessageObject.isFromUser() ? AndroidUtilities.dp(52) : 0); + timeX = backgroundWidth - AndroidUtilities.dp(9) - timeWidth + (isChat && currentMessageObject.isFromUser() ? AndroidUtilities.dp(48) : 0); } else { timeX = layoutWidth - timeWidth - AndroidUtilities.dp(38.5f); } } else { if (!currentMessageObject.isOutOwner()) { - timeX = backgroundWidth - AndroidUtilities.dp(4) - timeWidth + (isChat && currentMessageObject.isFromUser() ? AndroidUtilities.dp(52) : 0); + timeX = backgroundWidth - AndroidUtilities.dp(4) - timeWidth + (isChat && currentMessageObject.isFromUser() ? AndroidUtilities.dp(48) : 0); } else { timeX = layoutWidth - timeWidth - AndroidUtilities.dp(42.0f); } @@ -822,14 +814,14 @@ public class ChatBaseCell extends BaseCell implements MediaController.FileDownlo } if (isAvatarVisible) { - avatarImage.setImageCoords(AndroidUtilities.dp(6), layoutHeight - AndroidUtilities.dp(45), AndroidUtilities.dp(42), AndroidUtilities.dp(42)); + avatarImage.setImageCoords(AndroidUtilities.dp(6), layoutHeight - AndroidUtilities.dp(44), AndroidUtilities.dp(42), AndroidUtilities.dp(42)); } wasLayout = true; } } - protected void onAfterBackgroundDraw(Canvas canvas) { + protected void drawContent(Canvas canvas) { } @@ -864,156 +856,170 @@ public class ChatBaseCell extends BaseCell implements MediaController.FileDownlo } if (mediaBackground) { - timePaint.setColor(0xffffffff); + timePaint.setColor(Theme.MSG_MEDIA_TIME_TEXT_COLOR); } else { if (currentMessageObject.isOutOwner()) { - timePaint.setColor(0xff70b15c); + timePaint.setColor(isDrawSelectedBackground() ? Theme.MSG_OUT_TIME_SELECTED_TEXT_COLOR : Theme.MSG_OUT_TIME_TEXT_COLOR); } else { - timePaint.setColor(isDrawSelectedBackground() ? 0xff89b4c1 : 0xffa1aab3); + timePaint.setColor(isDrawSelectedBackground() ? Theme.MSG_IN_TIME_SELECTED_TEXT_COLOR : Theme.MSG_IN_TIME_TEXT_COLOR); } } - Drawable currentBackgroundDrawable; if (currentMessageObject.isOutOwner()) { if (isDrawSelectedBackground()) { if (!mediaBackground) { - currentBackgroundDrawable = ResourceLoader.backgroundDrawableOutSelected; + currentBackgroundDrawable = Theme.backgroundDrawableOutSelected; } else { - currentBackgroundDrawable = ResourceLoader.backgroundMediaDrawableOutSelected; + currentBackgroundDrawable = Theme.backgroundMediaDrawableOutSelected; } } else { if (!mediaBackground) { - currentBackgroundDrawable = ResourceLoader.backgroundDrawableOut; + currentBackgroundDrawable = Theme.backgroundDrawableOut; } else { - currentBackgroundDrawable = ResourceLoader.backgroundMediaDrawableOut; + currentBackgroundDrawable = Theme.backgroundMediaDrawableOut; } } - setDrawableBounds(currentBackgroundDrawable, layoutWidth - backgroundWidth - (!mediaBackground ? 0 : AndroidUtilities.dp(9)), AndroidUtilities.dp(1), backgroundWidth, layoutHeight - AndroidUtilities.dp(2)); + setDrawableBounds(currentBackgroundDrawable, layoutWidth - backgroundWidth - (!mediaBackground ? 0 : AndroidUtilities.dp(9)), AndroidUtilities.dp(1), backgroundWidth - (mediaBackground ? 0 : AndroidUtilities.dp(3)), layoutHeight - AndroidUtilities.dp(2)); } else { if (isDrawSelectedBackground()) { if (!mediaBackground) { - currentBackgroundDrawable = ResourceLoader.backgroundDrawableInSelected; + currentBackgroundDrawable = Theme.backgroundDrawableInSelected; } else { - currentBackgroundDrawable = ResourceLoader.backgroundMediaDrawableInSelected; + currentBackgroundDrawable = Theme.backgroundMediaDrawableInSelected; } } else { if (!mediaBackground) { - currentBackgroundDrawable = ResourceLoader.backgroundDrawableIn; + currentBackgroundDrawable = Theme.backgroundDrawableIn; } else { - currentBackgroundDrawable = ResourceLoader.backgroundMediaDrawableIn; + currentBackgroundDrawable = Theme.backgroundMediaDrawableIn; } } if (isChat && currentMessageObject.isFromUser()) { - setDrawableBounds(currentBackgroundDrawable, AndroidUtilities.dp(52 + (!mediaBackground ? 0 : 9)), AndroidUtilities.dp(1), backgroundWidth, layoutHeight - AndroidUtilities.dp(2)); + setDrawableBounds(currentBackgroundDrawable, AndroidUtilities.dp(48 + (!mediaBackground ? 3 : 9)), AndroidUtilities.dp(1), backgroundWidth - (mediaBackground ? 0 : AndroidUtilities.dp(3)), layoutHeight - AndroidUtilities.dp(2)); } else { - setDrawableBounds(currentBackgroundDrawable, (!mediaBackground ? 0 : AndroidUtilities.dp(9)), AndroidUtilities.dp(1), backgroundWidth, layoutHeight - AndroidUtilities.dp(2)); + setDrawableBounds(currentBackgroundDrawable, (!mediaBackground ? AndroidUtilities.dp(3) : AndroidUtilities.dp(9)), AndroidUtilities.dp(1), backgroundWidth - (mediaBackground ? 0 : AndroidUtilities.dp(3)), layoutHeight - AndroidUtilities.dp(2)); } } if (drawBackground && currentBackgroundDrawable != null) { currentBackgroundDrawable.draw(canvas); } - onAfterBackgroundDraw(canvas); + drawContent(canvas); if (drawShareButton) { - ResourceLoader.shareDrawable[ApplicationLoader.isCustomTheme() ? 1 : 0][sharePressed ? 1 : 0].setBounds(shareStartX = currentBackgroundDrawable.getBounds().right + AndroidUtilities.dp(8), shareStartY = layoutHeight - AndroidUtilities.dp(41), currentBackgroundDrawable.getBounds().right + AndroidUtilities.dp(40), layoutHeight - AndroidUtilities.dp(9)); - ResourceLoader.shareDrawable[ApplicationLoader.isCustomTheme() ? 1 : 0][sharePressed ? 1 : 0].draw(canvas); + Theme.shareDrawable.setColorFilter(sharePressed ? Theme.colorPressedFilter : Theme.colorFilter); + setDrawableBounds(Theme.shareDrawable, shareStartX = currentBackgroundDrawable.getBounds().right + AndroidUtilities.dp(8), shareStartY = layoutHeight - AndroidUtilities.dp(41)); + Theme.shareDrawable.draw(canvas); + setDrawableBounds(Theme.shareIconDrawable, shareStartX + AndroidUtilities.dp(9), shareStartY + AndroidUtilities.dp(9)); + Theme.shareIconDrawable.draw(canvas); } - if (drawName && nameLayout != null) { + if (drawNameLayout && nameLayout != null) { canvas.save(); - if (mediaBackground || currentMessageObject.isOutOwner()) { - canvas.translate(nameX = currentBackgroundDrawable.getBounds().left + AndroidUtilities.dp(10) - nameOffsetX, AndroidUtilities.dp(10)); + + if (currentMessageObject.type == 13) { + namePaint.setColor(Theme.MSG_STICKER_NAME_TEXT_COLOR); + int backWidth; + if (currentMessageObject.isOutOwner()) { + nameX = AndroidUtilities.dp(28); + } else { + nameX = currentBackgroundDrawable.getBounds().right + AndroidUtilities.dp(22); + } + nameY = layoutHeight - AndroidUtilities.dp(38); + Theme.systemDrawable.setColorFilter(Theme.colorFilter); + Theme.systemDrawable.setBounds((int) nameX - AndroidUtilities.dp(12), (int) nameY - AndroidUtilities.dp(5), (int) nameX + AndroidUtilities.dp(12) + nameWidth, (int) nameY + AndroidUtilities.dp(22)); + Theme.systemDrawable.draw(canvas); } else { - canvas.translate(nameX = currentBackgroundDrawable.getBounds().left + AndroidUtilities.dp(19) - nameOffsetX, AndroidUtilities.dp(10)); - } - if (currentUser != null) { - namePaint.setColor(AvatarDrawable.getNameColorForId(currentUser.id)); - } else if (currentChat != null) { - namePaint.setColor(AvatarDrawable.getNameColorForId(currentChat.id)); - } else { - namePaint.setColor(AvatarDrawable.getNameColorForId(0)); + if (mediaBackground || currentMessageObject.isOutOwner()) { + nameX = currentBackgroundDrawable.getBounds().left + AndroidUtilities.dp(11) - nameOffsetX; + } else { + nameX = currentBackgroundDrawable.getBounds().left + AndroidUtilities.dp(17) - nameOffsetX; + } + if (currentUser != null) { + namePaint.setColor(AvatarDrawable.getNameColorForId(currentUser.id)); + } else if (currentChat != null) { + namePaint.setColor(AvatarDrawable.getNameColorForId(currentChat.id)); + } else { + namePaint.setColor(AvatarDrawable.getNameColorForId(0)); + } + nameY = AndroidUtilities.dp(10); } + canvas.translate(nameX, nameY); nameLayout.draw(canvas); canvas.restore(); - - /*if (forwardedNameLayout == null && viaWidth != 0) { - canvas.drawRect(nameX + viaNameWidth, AndroidUtilities.dp(6), nameX + viaNameWidth + viaWidth, AndroidUtilities.dp(30), namePaint); - }*/ } - if (drawForwardedName && forwardedNameLayout != null) { - forwardNameY = AndroidUtilities.dp(10 + (drawName ? 19 : 0)); + if (drawForwardedName && forwardedNameLayout[0] != null && forwardedNameLayout[1] != null) { + forwardNameY = AndroidUtilities.dp(10 + (drawNameLayout ? 19 : 0)); if (currentMessageObject.isOutOwner()) { - forwardNamePaint.setColor(0xff4a923c); - forwardNameX = currentBackgroundDrawable.getBounds().left + AndroidUtilities.dp(10); + forwardNamePaint.setColor(Theme.MSG_OUT_FORDWARDED_NAME_TEXT_COLOR); + forwardNameX = currentBackgroundDrawable.getBounds().left + AndroidUtilities.dp(11); } else { - forwardNamePaint.setColor(0xff006fc8); + forwardNamePaint.setColor(Theme.MSG_IN_FORDWARDED_NAME_TEXT_COLOR); if (mediaBackground) { - forwardNameX = currentBackgroundDrawable.getBounds().left + AndroidUtilities.dp(10); + forwardNameX = currentBackgroundDrawable.getBounds().left + AndroidUtilities.dp(11); } else { - forwardNameX = currentBackgroundDrawable.getBounds().left + AndroidUtilities.dp(19); + forwardNameX = currentBackgroundDrawable.getBounds().left + AndroidUtilities.dp(17); } } - canvas.save(); - canvas.translate(forwardNameX - forwardNameOffsetX, forwardNameY); - forwardedNameLayout.draw(canvas); - canvas.restore(); + for (int a = 0; a < 2; a++) { + canvas.save(); + canvas.translate(forwardNameX - forwardNameOffsetX[a], forwardNameY + AndroidUtilities.dp(16) * a); + forwardedNameLayout[a].draw(canvas); + canvas.restore(); + } } if (currentMessageObject.isReply()) { if (currentMessageObject.type == 13) { - replyLinePaint.setColor(0xffffffff); - replyNamePaint.setColor(0xffffffff); - replyTextPaint.setColor(0xffffffff); - int backWidth; + replyLinePaint.setColor(Theme.MSG_STICKER_REPLY_LINE_COLOR); + replyNamePaint.setColor(Theme.MSG_STICKER_REPLY_NAME_TEXT_COLOR); + replyTextPaint.setColor(Theme.MSG_STICKER_REPLY_MESSAGE_TEXT_COLOR); if (currentMessageObject.isOutOwner()) { - backWidth = currentBackgroundDrawable.getBounds().left - AndroidUtilities.dp(32); - replyStartX = currentBackgroundDrawable.getBounds().left - AndroidUtilities.dp(9) - backWidth; + replyStartX = AndroidUtilities.dp(23); } else { - backWidth = getWidth() - currentBackgroundDrawable.getBounds().right - AndroidUtilities.dp(32); - replyStartX = currentBackgroundDrawable.getBounds().right + AndroidUtilities.dp(23); - } - Drawable back; - if (ApplicationLoader.isCustomTheme()) { - back = ResourceLoader.backgroundBlack; - } else { - back = ResourceLoader.backgroundBlue; + replyStartX = currentBackgroundDrawable.getBounds().right + AndroidUtilities.dp(17); } replyStartY = layoutHeight - AndroidUtilities.dp(58); - back.setBounds(replyStartX - AndroidUtilities.dp(7), replyStartY - AndroidUtilities.dp(6), replyStartX - AndroidUtilities.dp(7) + backWidth, replyStartY + AndroidUtilities.dp(41)); - back.draw(canvas); + if (nameLayout != null) { + replyStartY -= AndroidUtilities.dp(25 + 6); + } + int backWidth = Math.max(replyNameWidth, replyTextWidth) + AndroidUtilities.dp(14 + (needReplyImage ? 44 : 0)); + Theme.systemDrawable.setColorFilter(Theme.colorFilter); + Theme.systemDrawable.setBounds(replyStartX - AndroidUtilities.dp(7), replyStartY - AndroidUtilities.dp(6), replyStartX - AndroidUtilities.dp(7) + backWidth, replyStartY + AndroidUtilities.dp(41)); + Theme.systemDrawable.draw(canvas); } else { if (currentMessageObject.isOutOwner()) { - replyLinePaint.setColor(0xff8dc97a); - replyNamePaint.setColor(0xff61a349); + replyLinePaint.setColor(Theme.MSG_OUT_REPLY_LINE_COLOR); + replyNamePaint.setColor(Theme.MSG_OUT_REPLY_NAME_TEXT_COLOR); if (currentMessageObject.replyMessageObject != null && currentMessageObject.replyMessageObject.type == 0) { - replyTextPaint.setColor(0xff000000); + replyTextPaint.setColor(Theme.MSG_OUT_REPLY_MESSAGE_TEXT_COLOR); } else { - replyTextPaint.setColor(0xff70b15c); + replyTextPaint.setColor(isDrawSelectedBackground() ? Theme.MSG_OUT_REPLY_MEDIA_MESSAGE_SELETED_TEXT_COLOR : Theme.MSG_OUT_REPLY_MEDIA_MESSAGE_TEXT_COLOR); } - replyStartX = currentBackgroundDrawable.getBounds().left + AndroidUtilities.dp(11); + replyStartX = currentBackgroundDrawable.getBounds().left + AndroidUtilities.dp(12); } else { - replyLinePaint.setColor(0xff6c9fd2); - replyNamePaint.setColor(0xff377aae); + replyLinePaint.setColor(Theme.MSG_IN_REPLY_LINE_COLOR); + replyNamePaint.setColor(Theme.MSG_IN_REPLY_NAME_TEXT_COLOR); if (currentMessageObject.replyMessageObject != null && currentMessageObject.replyMessageObject.type == 0) { - replyTextPaint.setColor(0xff000000); + replyTextPaint.setColor(Theme.MSG_IN_REPLY_MESSAGE_TEXT_COLOR); } else { - replyTextPaint.setColor(0xff999999); + replyTextPaint.setColor(isDrawSelectedBackground() ? Theme.MSG_IN_REPLY_MEDIA_MESSAGE_SELETED_TEXT_COLOR : Theme.MSG_IN_REPLY_MEDIA_MESSAGE_TEXT_COLOR); } if (mediaBackground) { - replyStartX = currentBackgroundDrawable.getBounds().left + AndroidUtilities.dp(11); + replyStartX = currentBackgroundDrawable.getBounds().left + AndroidUtilities.dp(12); } else { - replyStartX = currentBackgroundDrawable.getBounds().left + AndroidUtilities.dp(20); + replyStartX = currentBackgroundDrawable.getBounds().left + AndroidUtilities.dp(18); } } - replyStartY = AndroidUtilities.dp(12 + (drawForwardedName && forwardedNameLayout != null ? 36 : 0) + (drawName && nameLayout != null ? 20 : 0)); + replyStartY = AndroidUtilities.dp(12 + (drawForwardedName && forwardedNameLayout[0] != null ? 36 : 0) + (drawNameLayout && nameLayout != null ? 20 : 0)); } canvas.drawRect(replyStartX, replyStartY, replyStartX + AndroidUtilities.dp(2), replyStartY + AndroidUtilities.dp(35), replyLinePaint); if (needReplyImage) { replyImageReceiver.setImageCoords(replyStartX + AndroidUtilities.dp(10), replyStartY, AndroidUtilities.dp(35), AndroidUtilities.dp(35)); replyImageReceiver.draw(canvas); } + if (replyNameLayout != null) { canvas.save(); canvas.translate(replyStartX - replyNameOffset + AndroidUtilities.dp(10 + (needReplyImage ? 44 : 0)), replyStartY); @@ -1030,8 +1036,14 @@ public class ChatBaseCell extends BaseCell implements MediaController.FileDownlo if (drawTime || !mediaBackground) { if (mediaBackground) { - setDrawableBounds(ResourceLoader.mediaBackgroundDrawable, timeX - AndroidUtilities.dp(3), layoutHeight - AndroidUtilities.dp(27.5f), timeWidth + AndroidUtilities.dp(6 + (currentMessageObject.isOutOwner() ? 20 : 0)), AndroidUtilities.dp(16.5f)); - ResourceLoader.mediaBackgroundDrawable.draw(canvas); + Drawable drawable; + if (currentMessageObject.type == 13) { + drawable = Theme.timeStickerBackgroundDrawable; + } else { + drawable = Theme.timeBackgroundDrawable; + } + setDrawableBounds(drawable, timeX - AndroidUtilities.dp(4), layoutHeight - AndroidUtilities.dp(27), timeWidth + AndroidUtilities.dp(8 + (currentMessageObject.isOutOwner() ? 20 : 0)), AndroidUtilities.dp(17)); + drawable.draw(canvas); int additionalX = 0; if ((currentMessageObject.messageOwner.flags & TLRPC.MESSAGE_FLAG_HAS_VIEWS) != 0) { @@ -1039,22 +1051,22 @@ public class ChatBaseCell extends BaseCell implements MediaController.FileDownlo if (currentMessageObject.isSending()) { if (!currentMessageObject.isOutOwner()) { - setDrawableBounds(ResourceLoader.clockMediaDrawable, timeX + AndroidUtilities.dp(11), layoutHeight - AndroidUtilities.dp(13.0f) - ResourceLoader.clockMediaDrawable.getIntrinsicHeight()); - ResourceLoader.clockMediaDrawable.draw(canvas); + setDrawableBounds(Theme.clockMediaDrawable, timeX + AndroidUtilities.dp(11), layoutHeight - AndroidUtilities.dp(13.0f) - Theme.clockMediaDrawable.getIntrinsicHeight()); + Theme.clockMediaDrawable.draw(canvas); } } else if (currentMessageObject.isSendError()) { if (!currentMessageObject.isOutOwner()) { - setDrawableBounds(ResourceLoader.errorDrawable, timeX + AndroidUtilities.dp(11), layoutHeight - AndroidUtilities.dp(12.5f) - ResourceLoader.errorDrawable.getIntrinsicHeight()); - ResourceLoader.errorDrawable.draw(canvas); + setDrawableBounds(Theme.errorDrawable, timeX + AndroidUtilities.dp(11), layoutHeight - AndroidUtilities.dp(12.5f) - Theme.errorDrawable.getIntrinsicHeight()); + Theme.errorDrawable.draw(canvas); } } else { - Drawable countDrawable = ResourceLoader.viewsMediaCountDrawable; - setDrawableBounds(countDrawable, timeX, layoutHeight - AndroidUtilities.dp(10) - timeLayout.getHeight()); + Drawable countDrawable = Theme.viewsMediaCountDrawable; + setDrawableBounds(countDrawable, timeX, layoutHeight - AndroidUtilities.dp(9.5f) - timeLayout.getHeight()); countDrawable.draw(canvas); if (viewsLayout != null) { canvas.save(); - canvas.translate(timeX + countDrawable.getIntrinsicWidth() + AndroidUtilities.dp(3), layoutHeight - AndroidUtilities.dp(12.0f) - timeLayout.getHeight()); + canvas.translate(timeX + countDrawable.getIntrinsicWidth() + AndroidUtilities.dp(3), layoutHeight - AndroidUtilities.dp(11.3f) - timeLayout.getHeight()); viewsLayout.draw(canvas); canvas.restore(); } @@ -1062,7 +1074,7 @@ public class ChatBaseCell extends BaseCell implements MediaController.FileDownlo } canvas.save(); - canvas.translate(timeX + additionalX, layoutHeight - AndroidUtilities.dp(12.0f) - timeLayout.getHeight()); + canvas.translate(timeX + additionalX, layoutHeight - AndroidUtilities.dp(11.3f) - timeLayout.getHeight()); timeLayout.draw(canvas); canvas.restore(); } else { @@ -1072,27 +1084,27 @@ public class ChatBaseCell extends BaseCell implements MediaController.FileDownlo if (currentMessageObject.isSending()) { if (!currentMessageObject.isOutOwner()) { - Drawable clockDrawable = ResourceLoader.clockChannelDrawable[isDrawSelectedBackground() ? 1 : 0]; + Drawable clockDrawable = Theme.clockChannelDrawable[isDrawSelectedBackground() ? 1 : 0]; setDrawableBounds(clockDrawable, timeX + AndroidUtilities.dp(11), layoutHeight - AndroidUtilities.dp(8.5f) - clockDrawable.getIntrinsicHeight()); clockDrawable.draw(canvas); } } else if (currentMessageObject.isSendError()) { if (!currentMessageObject.isOutOwner()) { - setDrawableBounds(ResourceLoader.errorDrawable, timeX + AndroidUtilities.dp(11), layoutHeight - AndroidUtilities.dp(6.5f) - ResourceLoader.errorDrawable.getIntrinsicHeight()); - ResourceLoader.errorDrawable.draw(canvas); + setDrawableBounds(Theme.errorDrawable, timeX + AndroidUtilities.dp(11), layoutHeight - AndroidUtilities.dp(6.5f) - Theme.errorDrawable.getIntrinsicHeight()); + Theme.errorDrawable.draw(canvas); } } else { if (!currentMessageObject.isOutOwner()) { - setDrawableBounds(ResourceLoader.viewsCountDrawable[isDrawSelectedBackground() ? 1 : 0], timeX, layoutHeight - AndroidUtilities.dp(4.5f) - timeLayout.getHeight()); - ResourceLoader.viewsCountDrawable[isDrawSelectedBackground() ? 1 : 0].draw(canvas); + setDrawableBounds(Theme.viewsCountDrawable[isDrawSelectedBackground() ? 1 : 0], timeX, layoutHeight - AndroidUtilities.dp(4.5f) - timeLayout.getHeight()); + Theme.viewsCountDrawable[isDrawSelectedBackground() ? 1 : 0].draw(canvas); } else { - setDrawableBounds(ResourceLoader.viewsOutCountDrawable, timeX, layoutHeight - AndroidUtilities.dp(4.5f) - timeLayout.getHeight()); - ResourceLoader.viewsOutCountDrawable.draw(canvas); + setDrawableBounds(Theme.viewsOutCountDrawable, timeX, layoutHeight - AndroidUtilities.dp(4.5f) - timeLayout.getHeight()); + Theme.viewsOutCountDrawable.draw(canvas); } if (viewsLayout != null) { canvas.save(); - canvas.translate(timeX + ResourceLoader.viewsOutCountDrawable.getIntrinsicWidth() + AndroidUtilities.dp(3), layoutHeight - AndroidUtilities.dp(6.5f) - timeLayout.getHeight()); + canvas.translate(timeX + Theme.viewsOutCountDrawable.getIntrinsicWidth() + AndroidUtilities.dp(3), layoutHeight - AndroidUtilities.dp(6.5f) - timeLayout.getHeight()); viewsLayout.draw(canvas); canvas.restore(); } @@ -1103,6 +1115,7 @@ public class ChatBaseCell extends BaseCell implements MediaController.FileDownlo canvas.translate(timeX + additionalX, layoutHeight - AndroidUtilities.dp(6.5f) - timeLayout.getHeight()); timeLayout.draw(canvas); canvas.restore(); + //canvas.drawRect(timeX, layoutHeight - AndroidUtilities.dp(6.5f) - timeLayout.getHeight(), timeX + availableTimeWidth, layoutHeight - AndroidUtilities.dp(4.5f) - timeLayout.getHeight(), timePaint); } if (currentMessageObject.isOutOwner()) { @@ -1136,58 +1149,58 @@ public class ChatBaseCell extends BaseCell implements MediaController.FileDownlo if (drawClock) { if (!mediaBackground) { - setDrawableBounds(ResourceLoader.clockDrawable, layoutWidth - AndroidUtilities.dp(18.5f) - ResourceLoader.clockDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dp(8.5f) - ResourceLoader.clockDrawable.getIntrinsicHeight()); - ResourceLoader.clockDrawable.draw(canvas); + setDrawableBounds(Theme.clockDrawable, layoutWidth - AndroidUtilities.dp(18.5f) - Theme.clockDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dp(8.5f) - Theme.clockDrawable.getIntrinsicHeight()); + Theme.clockDrawable.draw(canvas); } else { - setDrawableBounds(ResourceLoader.clockMediaDrawable, layoutWidth - AndroidUtilities.dp(22.0f) - ResourceLoader.clockMediaDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dp(13.0f) - ResourceLoader.clockMediaDrawable.getIntrinsicHeight()); - ResourceLoader.clockMediaDrawable.draw(canvas); + setDrawableBounds(Theme.clockMediaDrawable, layoutWidth - AndroidUtilities.dp(22.0f) - Theme.clockMediaDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dp(12.5f) - Theme.clockMediaDrawable.getIntrinsicHeight()); + Theme.clockMediaDrawable.draw(canvas); } } if (isBroadcast) { if (drawCheck1 || drawCheck2) { if (!mediaBackground) { - setDrawableBounds(ResourceLoader.broadcastDrawable, layoutWidth - AndroidUtilities.dp(20.5f) - ResourceLoader.broadcastDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dp(8.0f) - ResourceLoader.broadcastDrawable.getIntrinsicHeight()); - ResourceLoader.broadcastDrawable.draw(canvas); + setDrawableBounds(Theme.broadcastDrawable, layoutWidth - AndroidUtilities.dp(20.5f) - Theme.broadcastDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dp(8.0f) - Theme.broadcastDrawable.getIntrinsicHeight()); + Theme.broadcastDrawable.draw(canvas); } else { - setDrawableBounds(ResourceLoader.broadcastMediaDrawable, layoutWidth - AndroidUtilities.dp(24.0f) - ResourceLoader.broadcastMediaDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dp(13.0f) - ResourceLoader.broadcastMediaDrawable.getIntrinsicHeight()); - ResourceLoader.broadcastMediaDrawable.draw(canvas); + setDrawableBounds(Theme.broadcastMediaDrawable, layoutWidth - AndroidUtilities.dp(24.0f) - Theme.broadcastMediaDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dp(13.0f) - Theme.broadcastMediaDrawable.getIntrinsicHeight()); + Theme.broadcastMediaDrawable.draw(canvas); } } } else { if (drawCheck2) { if (!mediaBackground) { if (drawCheck1) { - setDrawableBounds(ResourceLoader.checkDrawable, layoutWidth - AndroidUtilities.dp(22.5f) - ResourceLoader.checkDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dp(8.0f) - ResourceLoader.checkDrawable.getIntrinsicHeight()); + setDrawableBounds(Theme.checkDrawable, layoutWidth - AndroidUtilities.dp(22.5f) - Theme.checkDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dp(8.0f) - Theme.checkDrawable.getIntrinsicHeight()); } else { - setDrawableBounds(ResourceLoader.checkDrawable, layoutWidth - AndroidUtilities.dp(18.5f) - ResourceLoader.checkDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dp(8.0f) - ResourceLoader.checkDrawable.getIntrinsicHeight()); + setDrawableBounds(Theme.checkDrawable, layoutWidth - AndroidUtilities.dp(18.5f) - Theme.checkDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dp(8.0f) - Theme.checkDrawable.getIntrinsicHeight()); } - ResourceLoader.checkDrawable.draw(canvas); + Theme.checkDrawable.draw(canvas); } else { if (drawCheck1) { - setDrawableBounds(ResourceLoader.checkMediaDrawable, layoutWidth - AndroidUtilities.dp(26.0f) - ResourceLoader.checkMediaDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dp(13.0f) - ResourceLoader.checkMediaDrawable.getIntrinsicHeight()); + setDrawableBounds(Theme.checkMediaDrawable, layoutWidth - AndroidUtilities.dp(26.3f) - Theme.checkMediaDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dp(12.5f) - Theme.checkMediaDrawable.getIntrinsicHeight()); } else { - setDrawableBounds(ResourceLoader.checkMediaDrawable, layoutWidth - AndroidUtilities.dp(22.0f) - ResourceLoader.checkMediaDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dp(13.0f) - ResourceLoader.checkMediaDrawable.getIntrinsicHeight()); + setDrawableBounds(Theme.checkMediaDrawable, layoutWidth - AndroidUtilities.dp(21.5f) - Theme.checkMediaDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dp(12.5f) - Theme.checkMediaDrawable.getIntrinsicHeight()); } - ResourceLoader.checkMediaDrawable.draw(canvas); + Theme.checkMediaDrawable.draw(canvas); } } if (drawCheck1) { if (!mediaBackground) { - setDrawableBounds(ResourceLoader.halfCheckDrawable, layoutWidth - AndroidUtilities.dp(18) - ResourceLoader.halfCheckDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dp(8.0f) - ResourceLoader.halfCheckDrawable.getIntrinsicHeight()); - ResourceLoader.halfCheckDrawable.draw(canvas); + setDrawableBounds(Theme.halfCheckDrawable, layoutWidth - AndroidUtilities.dp(18) - Theme.halfCheckDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dp(8.0f) - Theme.halfCheckDrawable.getIntrinsicHeight()); + Theme.halfCheckDrawable.draw(canvas); } else { - setDrawableBounds(ResourceLoader.halfCheckMediaDrawable, layoutWidth - AndroidUtilities.dp(20.5f) - ResourceLoader.halfCheckMediaDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dp(13.0f) - ResourceLoader.halfCheckMediaDrawable.getIntrinsicHeight()); - ResourceLoader.halfCheckMediaDrawable.draw(canvas); + setDrawableBounds(Theme.halfCheckMediaDrawable, layoutWidth - AndroidUtilities.dp(21.5f) - Theme.halfCheckMediaDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dp(12.5f) - Theme.halfCheckMediaDrawable.getIntrinsicHeight()); + Theme.halfCheckMediaDrawable.draw(canvas); } } } if (drawError) { if (!mediaBackground) { - setDrawableBounds(ResourceLoader.errorDrawable, layoutWidth - AndroidUtilities.dp(18) - ResourceLoader.errorDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dp(6.5f) - ResourceLoader.errorDrawable.getIntrinsicHeight()); - ResourceLoader.errorDrawable.draw(canvas); + setDrawableBounds(Theme.errorDrawable, layoutWidth - AndroidUtilities.dp(18) - Theme.errorDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dp(7) - Theme.errorDrawable.getIntrinsicHeight()); + Theme.errorDrawable.draw(canvas); } else { - setDrawableBounds(ResourceLoader.errorDrawable, layoutWidth - AndroidUtilities.dp(20.5f) - ResourceLoader.errorDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dp(12.5f) - ResourceLoader.errorDrawable.getIntrinsicHeight()); - ResourceLoader.errorDrawable.draw(canvas); + setDrawableBounds(Theme.errorDrawable, layoutWidth - AndroidUtilities.dp(20.5f) - Theme.errorDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dp(11.5f) - Theme.errorDrawable.getIntrinsicHeight()); + Theme.errorDrawable.draw(canvas); } } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatContactCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatContactCell.java deleted file mode 100644 index f204795d3..000000000 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatContactCell.java +++ /dev/null @@ -1,306 +0,0 @@ -/* - * This is the source code of Telegram for Android v. 3.x.x. - * It is licensed under GNU GPL v. 2 or later. - * You should have received a copy of the license in this archive (see LICENSE). - * - * Copyright Nikolai Kudashov, 2013-2016. - */ - -package org.telegram.ui.Cells; - -import android.content.Context; -import android.graphics.Canvas; -import android.graphics.drawable.Drawable; -import android.text.Layout; -import android.text.StaticLayout; -import android.text.TextPaint; -import android.text.TextUtils; -import android.view.MotionEvent; -import android.view.SoundEffectConstants; - -import org.telegram.PhoneFormat.PhoneFormat; -import org.telegram.messenger.AndroidUtilities; -import org.telegram.messenger.ContactsController; -import org.telegram.messenger.ImageReceiver; -import org.telegram.messenger.LocaleController; -import org.telegram.messenger.MessageObject; -import org.telegram.messenger.MessagesController; -import org.telegram.messenger.R; -import org.telegram.tgnet.TLRPC; -import org.telegram.messenger.UserConfig; -import org.telegram.ui.Components.AvatarDrawable; - -public class ChatContactCell extends ChatBaseCell { - - public interface ChatContactCellDelegate { - void didClickAddButton(ChatContactCell cell, TLRPC.User user); - void didClickPhone(ChatContactCell cell); - } - - private static TextPaint namePaint; - private static TextPaint phonePaint; - private static Drawable addContactDrawableIn; - private static Drawable addContactDrawableOut; - - private ImageReceiver avatarImage; - private AvatarDrawable avatarDrawable; - - private StaticLayout nameLayout; - private StaticLayout phoneLayout; - - private TLRPC.User contactUser; - private TLRPC.FileLocation currentPhoto; - - private boolean avatarPressed = false; - private boolean buttonPressed = false; - private boolean drawAddButton = false; - private int namesWidth = 0; - - private ChatContactCellDelegate contactDelegate = null; - - public ChatContactCell(Context context) { - super(context); - if (namePaint == null) { - namePaint = new TextPaint(TextPaint.ANTI_ALIAS_FLAG); - namePaint.setTextSize(AndroidUtilities.dp(15)); - - phonePaint = new TextPaint(TextPaint.ANTI_ALIAS_FLAG); - phonePaint.setTextSize(AndroidUtilities.dp(15)); - phonePaint.setColor(0xff212121); - - addContactDrawableIn = getResources().getDrawable(R.drawable.addcontact_blue); - addContactDrawableOut = getResources().getDrawable(R.drawable.addcontact_green); - } - avatarImage = new ImageReceiver(this); - avatarImage.setRoundRadius(AndroidUtilities.dp(21)); - avatarDrawable = new AvatarDrawable(); - } - - public void setContactDelegate(ChatContactCellDelegate delegate) { - this.contactDelegate = delegate; - } - - @Override - protected boolean isUserDataChanged() { - if (currentMessageObject == null) { - return false; - } - - int uid = currentMessageObject.messageOwner.media.user_id; - boolean newDrawAdd = contactUser != null && uid != UserConfig.getClientUserId() && ContactsController.getInstance().contactsDict.get(uid) == null; - if (newDrawAdd != drawAddButton) { - return true; - } - - contactUser = MessagesController.getInstance().getUser(currentMessageObject.messageOwner.media.user_id); - - TLRPC.FileLocation newPhoto = null; - if (contactUser != null && contactUser.photo != null) { - newPhoto = contactUser.photo.photo_small; - } - - return currentPhoto == null && newPhoto != null || currentPhoto != null && newPhoto == null || currentPhoto != null && newPhoto != null && (currentPhoto.local_id != newPhoto.local_id || currentPhoto.volume_id != newPhoto.volume_id) || super.isUserDataChanged(); - } - - @Override - public boolean onTouchEvent(MotionEvent event) { - float x = event.getX(); - float y = event.getY(); - - boolean result = false; - if (event.getAction() == MotionEvent.ACTION_DOWN) { - if (x >= avatarImage.getImageX() && x <= avatarImage.getImageX() + namesWidth + AndroidUtilities.dp(42) && y >= avatarImage.getImageY() && y <= avatarImage.getImageY() + avatarImage.getImageHeight()) { - avatarPressed = true; - result = true; - } else if (drawAddButton && x >= avatarImage.getImageX() + namesWidth + AndroidUtilities.dp(52) && y >= AndroidUtilities.dp(13) + namesOffset && x <= avatarImage.getImageX() + namesWidth + AndroidUtilities.dp(92) && y <= AndroidUtilities.dp(52) + namesOffset) { - buttonPressed = true; - result = true; - } - if (result) { - startCheckLongPress(); - } - } else { - if (event.getAction() != MotionEvent.ACTION_MOVE) { - cancelCheckLongPress(); - } - if (avatarPressed) { - if (event.getAction() == MotionEvent.ACTION_UP) { - avatarPressed = false; - playSoundEffect(SoundEffectConstants.CLICK); - if (contactUser != null) { - if (delegate != null) { - delegate.didPressedUserAvatar(this, contactUser); - } - } else { - if (contactDelegate != null) { - contactDelegate.didClickPhone(this); - } - } - } else if (event.getAction() == MotionEvent.ACTION_CANCEL) { - avatarPressed = false; - } else if (event.getAction() == MotionEvent.ACTION_MOVE) { - if (!(x >= avatarImage.getImageX() && x <= avatarImage.getImageX() + namesWidth + AndroidUtilities.dp(42) && y >= avatarImage.getImageY() && y <= avatarImage.getImageY() + avatarImage.getImageHeight())) { - avatarPressed = false; - } - } - } else if (buttonPressed) { - if (event.getAction() == MotionEvent.ACTION_UP) { - buttonPressed = false; - playSoundEffect(SoundEffectConstants.CLICK); - if (contactUser != null && contactDelegate != null) { - contactDelegate.didClickAddButton(this, contactUser); - } - } else if (event.getAction() == MotionEvent.ACTION_CANCEL) { - buttonPressed = false; - } else if (event.getAction() == MotionEvent.ACTION_MOVE) { - if (!(x >= avatarImage.getImageX() + namesWidth + AndroidUtilities.dp(52) && y >= AndroidUtilities.dp(13) + namesOffset && x <= avatarImage.getImageX() + namesWidth + AndroidUtilities.dp(92) && y <= AndroidUtilities.dp(52) + namesOffset)) { - buttonPressed = false; - } - } - } - } - if (!result) { - result = super.onTouchEvent(event); - } - - return result; - } - - @Override - public void setMessageObject(MessageObject messageObject) { - if (currentMessageObject != messageObject || isUserDataChanged()) { - - int uid = messageObject.messageOwner.media.user_id; - contactUser = MessagesController.getInstance().getUser(uid); - - drawAddButton = contactUser != null && uid != UserConfig.getClientUserId() && ContactsController.getInstance().contactsDict.get(uid) == null; - - int maxWidth; - if (AndroidUtilities.isTablet()) { - maxWidth = (int) (AndroidUtilities.getMinTabletSide() * 0.7f); - } else { - maxWidth = (int) (Math.min(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y) * 0.7f); - } - maxWidth -= AndroidUtilities.dp(58 + (drawAddButton ? 42 : 0)); - - if (contactUser != null) { - if (contactUser.photo != null) { - currentPhoto = contactUser.photo.photo_small; - } else { - currentPhoto = null; - } - avatarDrawable.setInfo(contactUser); - } else { - currentPhoto = null; - avatarDrawable.setInfo(uid, null, null, false); - } - avatarImage.setImage(currentPhoto, "50_50", avatarDrawable, null, false); - - String phone = messageObject.messageOwner.media.phone_number; - if (phone != null && phone.length() != 0) { - if (!phone.startsWith("+")) { - phone = "+" + phone; - } - phone = PhoneFormat.getInstance().format(phone); - } else { - phone = LocaleController.getString("NumberUnknown", R.string.NumberUnknown); - } - - String currentNameString = ContactsController.formatName(messageObject.messageOwner.media.first_name, messageObject.messageOwner.media.last_name); - if (currentNameString.length() == 0) { - currentNameString = phone; - } - int nameWidth = Math.min((int) Math.ceil(namePaint.measureText(currentNameString)), maxWidth); - if (maxWidth < 0) { - maxWidth = AndroidUtilities.dp(100); - } - - CharSequence stringFinal = TextUtils.ellipsize(currentNameString.replace("\n", " "), namePaint, nameWidth, TextUtils.TruncateAt.END); - nameLayout = new StaticLayout(stringFinal, namePaint, nameWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); - if (nameLayout.getLineCount() > 0) { - nameWidth = (int)Math.ceil(nameLayout.getLineWidth(0)); - } else { - nameWidth = 0; - } - - - int phoneWidth = Math.min((int) Math.ceil(phonePaint.measureText(phone)), maxWidth); - stringFinal = TextUtils.ellipsize(phone.replace("\n", " "), phonePaint, phoneWidth, TextUtils.TruncateAt.END); - phoneLayout = new StaticLayout(stringFinal, phonePaint, phoneWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); - if (phoneLayout.getLineCount() > 0) { - phoneWidth = (int)Math.ceil(phoneLayout.getLineWidth(0)); - } else { - phoneWidth = 0; - } - - namesWidth = Math.max(nameWidth, phoneWidth); - backgroundWidth = AndroidUtilities.dp(77 + (drawAddButton ? 42 : 0)) + namesWidth; - availableTimeWidth = backgroundWidth - AndroidUtilities.dp(29); - - super.setMessageObject(messageObject); - } - } - - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec), AndroidUtilities.dp(75) + namesOffset); - } - - @Override - protected void onLayout(boolean changed, int left, int top, int right, int bottom) { - super.onLayout(changed, left, top, right, bottom); - - if (currentMessageObject == null) { - return; - } - - int x; - - if (currentMessageObject.isOutOwner()) { - x = layoutWidth - backgroundWidth + AndroidUtilities.dp(8); - } else { - if (isChat && currentMessageObject.isFromUser()) { - x = AndroidUtilities.dp(69); - } else { - x = AndroidUtilities.dp(16); - } - } - avatarImage.setImageCoords(x, AndroidUtilities.dp(9) + namesOffset, AndroidUtilities.dp(42), AndroidUtilities.dp(42)); - } - - @Override - protected void onDraw(Canvas canvas) { - super.onDraw(canvas); - - if (currentMessageObject == null) { - return; - } - - avatarImage.draw(canvas); - - if (nameLayout != null) { - canvas.save(); - canvas.translate(avatarImage.getImageX() + avatarImage.getImageWidth() + AndroidUtilities.dp(9), AndroidUtilities.dp(10) + namesOffset); - namePaint.setColor(AvatarDrawable.getColorForId(currentMessageObject.messageOwner.media.user_id)); - nameLayout.draw(canvas); - canvas.restore(); - } - if (phoneLayout != null) { - canvas.save(); - canvas.translate(avatarImage.getImageX() + avatarImage.getImageWidth() + AndroidUtilities.dp(9), AndroidUtilities.dp(31) + namesOffset); - phoneLayout.draw(canvas); - canvas.restore(); - } - - if (drawAddButton) { - Drawable addContactDrawable; - if (currentMessageObject.isOutOwner()) { - addContactDrawable = addContactDrawableOut; - } else { - addContactDrawable = addContactDrawableIn; - } - setDrawableBounds(addContactDrawable, avatarImage.getImageX() + namesWidth + AndroidUtilities.dp(78), AndroidUtilities.dp(13) + namesOffset); - addContactDrawable.draw(canvas); - } - } -} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatLoadingCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatLoadingCell.java index 021f74f06..a0f48780e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatLoadingCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatLoadingCell.java @@ -14,9 +14,9 @@ import android.widget.FrameLayout; import android.widget.ProgressBar; import org.telegram.messenger.AndroidUtilities; -import org.telegram.messenger.ApplicationLoader; import org.telegram.messenger.R; import org.telegram.ui.Components.LayoutHelper; +import org.telegram.ui.ActionBar.Theme; public class ChatLoadingCell extends FrameLayout { @@ -26,7 +26,8 @@ public class ChatLoadingCell extends FrameLayout { super(context); frameLayout = new FrameLayout(context); - frameLayout.setBackgroundResource(ApplicationLoader.isCustomTheme() ? R.drawable.system_loader2 : R.drawable.system_loader1); + frameLayout.setBackgroundResource(R.drawable.system_loader); + frameLayout.getBackground().setColorFilter(Theme.colorFilter); addView(frameLayout, LayoutHelper.createFrame(36, 36, Gravity.CENTER)); ProgressBar progressBar = new ProgressBar(context); 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 978d7c064..f2cc715b0 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMessageCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMessageCell.java @@ -11,6 +11,7 @@ package org.telegram.ui.Cells; import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; +import android.graphics.Rect; import android.graphics.RectF; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; @@ -27,7 +28,10 @@ import android.view.MotionEvent; import android.view.SoundEffectConstants; import android.view.ViewStructure; +import org.telegram.PhoneFormat.PhoneFormat; import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.ContactsController; +import org.telegram.messenger.Emoji; import org.telegram.messenger.ImageLoader; import org.telegram.messenger.ImageReceiver; import org.telegram.messenger.LocaleController; @@ -35,54 +39,88 @@ import org.telegram.messenger.MediaController; import org.telegram.messenger.FileLoader; import org.telegram.messenger.FileLog; import org.telegram.messenger.MessageObject; +import org.telegram.messenger.MessagesController; import org.telegram.messenger.R; import org.telegram.messenger.SendMessagesHelper; +import org.telegram.messenger.Utilities; +import org.telegram.messenger.browser.Browser; import org.telegram.tgnet.ConnectionsManager; import org.telegram.tgnet.TLRPC; +import org.telegram.ui.Components.AvatarDrawable; import org.telegram.ui.Components.LinkPath; import org.telegram.ui.Components.RadialProgress; -import org.telegram.ui.Components.ResourceLoader; +import org.telegram.ui.Components.SeekBar; +import org.telegram.ui.Components.SeekBarWaveform; import org.telegram.ui.Components.StaticLayoutEx; +import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Components.URLSpanBotCommand; import org.telegram.ui.Components.URLSpanNoUnderline; import org.telegram.ui.PhotoViewer; import java.io.File; +import java.util.ArrayList; import java.util.HashMap; import java.util.Locale; -public class ChatMessageCell extends ChatBaseCell { +public class ChatMessageCell extends ChatBaseCell implements SeekBar.SeekBarDelegate { + + private final static int DOCUMENT_ATTACH_TYPE_NONE = 0; + private final static int DOCUMENT_ATTACH_TYPE_DOCUMENT = 1; + private final static int DOCUMENT_ATTACH_TYPE_GIF = 2; + private final static int DOCUMENT_ATTACH_TYPE_AUDIO = 3; + private final static int DOCUMENT_ATTACH_TYPE_VIDEO = 4; + private final static int DOCUMENT_ATTACH_TYPE_MUSIC = 5; + private final static int DOCUMENT_ATTACH_TYPE_STICKER = 6; + + private class BotButton { + private int x; + private int y; + private int width; + private int height; + private StaticLayout caption; + private TLRPC.KeyboardButton button; + private int angle; + private float progressAlpha; + private long lastUpdateTime; + } private int textX; private int textY; private int totalHeight; + private int keyboardHeight; private int linkBlockNum; + private Rect scrollRect = new Rect(); + private int lastVisibleBlockNum; private int firstVisibleBlockNum; private int totalVisibleBlocksCount; + private boolean needNewVisiblePart; private RadialProgress radialProgress; private ImageReceiver photoImage; + private AvatarDrawable avatarDrawable; + + private boolean disallowLongPress; private boolean isSmallImage; private boolean drawImageButton; - private int isDocument; + private int documentAttachType; + private TLRPC.Document documentAttach; private boolean drawPhotoImage; private boolean hasLinkPreview; private int linkPreviewHeight; - private boolean isInstagram; + private int mediaOffsetY; private int descriptionY; private int durationWidth; private int descriptionX; private int titleX; private int authorX; - private StaticLayout sitecaptionLayout; + private StaticLayout siteCaptionLayout; private StaticLayout titleLayout; private StaticLayout descriptionLayout; private StaticLayout durationLayout; private StaticLayout authorLayout; - private static TextPaint durationPaint; private StaticLayout captionLayout; private int captionX; @@ -92,7 +130,6 @@ public class ChatMessageCell extends ChatBaseCell { private StaticLayout infoLayout; private int infoWidth; - private int infoOffset; private String currentUrl; @@ -103,71 +140,164 @@ public class ChatMessageCell extends ChatBaseCell { private int buttonState; private int buttonPressed; private int otherX; + private int otherY; private boolean imagePressed; private boolean otherPressed; private boolean photoNotSet; private RectF deleteProgressRect = new RectF(); + private RectF rect = new RectF(); private TLRPC.PhotoSize currentPhotoObject; private TLRPC.PhotoSize currentPhotoObjectThumb; private String currentPhotoFilter; private String currentPhotoFilterThumb; private boolean cancelLoading; - private static Drawable igvideoDrawable; private static TextPaint infoPaint; - private static TextPaint namePaint; + private static TextPaint docNamePaint; private static Paint docBackPaint; private static Paint deleteProgressPaint; + private static Paint botProgressPaint; private static TextPaint locationTitlePaint; private static TextPaint locationAddressPaint; private static Paint urlPaint; + private static TextPaint durationPaint; private ClickableSpan pressedLink; private int pressedLinkType; private boolean linkPreviewPressed; - private LinkPath urlPath = new LinkPath(); + private ArrayList urlPathCache = new ArrayList<>(); + private ArrayList urlPath = new ArrayList<>(); + //private LinkPath urlPath = new LinkPath(); + + private boolean useSeekBarWaweform; + private SeekBar seekBar; + private SeekBarWaveform seekBarWaveform; + private int seekBarX; + private int seekBarY; + + private StaticLayout timeLayout; + private String lastTimeString; + private int timeWidthAudio; + private int timeAudioX; + + private static TextPaint audioTimePaint; + private static TextPaint audioTitlePaint; + private static TextPaint audioPerformerPaint; + private static TextPaint botButtonPaint; + private static TextPaint contactNamePaint; + private static TextPaint contactPhonePaint; + + private StaticLayout songLayout; + private int songX; + + private StaticLayout performerLayout; + private int performerX; + + private ArrayList botButtons = new ArrayList<>(); + private HashMap botButtonsByData = new HashMap<>(); + private int widthForButtons; + private int pressedBotButton; public ChatMessageCell(Context context) { super(context); + avatarDrawable = new AvatarDrawable(); photoImage = new ImageReceiver(this); radialProgress = new RadialProgress(this); + seekBar = new SeekBar(context); + seekBar.setDelegate(this); + seekBarWaveform = new SeekBarWaveform(context); + seekBarWaveform.setDelegate(this); + seekBarWaveform.setParentView(this); if (infoPaint == null) { infoPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); infoPaint.setTextSize(AndroidUtilities.dp(12)); - namePaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); - namePaint.setColor(0xff212121); - namePaint.setTextSize(AndroidUtilities.dp(16)); + docNamePaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); + docNamePaint.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + docNamePaint.setTextSize(AndroidUtilities.dp(15)); - docBackPaint = new Paint(); + docBackPaint = new Paint(Paint.ANTI_ALIAS_FLAG); deleteProgressPaint = new Paint(Paint.ANTI_ALIAS_FLAG); - deleteProgressPaint.setColor(0xffe4e2e0); + deleteProgressPaint.setColor(Theme.MSG_SECRET_TIME_TEXT_COLOR); + + botProgressPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + botProgressPaint.setColor(Theme.MSG_BOT_PROGRESS_COLOR); + botProgressPaint.setStrokeCap(Paint.Cap.ROUND); + botProgressPaint.setStyle(Paint.Style.STROKE); + botProgressPaint.setStrokeWidth(AndroidUtilities.dp(2)); locationTitlePaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); - locationTitlePaint.setTextSize(AndroidUtilities.dp(14)); + locationTitlePaint.setTextSize(AndroidUtilities.dp(15)); locationTitlePaint.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); locationAddressPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); - locationAddressPaint.setTextSize(AndroidUtilities.dp(14)); - - igvideoDrawable = getResources().getDrawable(R.drawable.igvideo); + locationAddressPaint.setTextSize(AndroidUtilities.dp(13)); urlPaint = new Paint(); - urlPaint.setColor(0x33316f9f); + urlPaint.setColor(Theme.MSG_LINK_SELECT_BACKGROUND_COLOR); + + audioTimePaint = new TextPaint(TextPaint.ANTI_ALIAS_FLAG); + audioTimePaint.setTextSize(AndroidUtilities.dp(12)); + + audioTitlePaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); + audioTitlePaint.setTextSize(AndroidUtilities.dp(16)); + audioTitlePaint.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + + audioPerformerPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); + audioPerformerPaint.setTextSize(AndroidUtilities.dp(15)); + + botButtonPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); + botButtonPaint.setTextSize(AndroidUtilities.dp(15)); + botButtonPaint.setColor(Theme.MSG_BOT_BUTTON_TEXT_COLOR); + botButtonPaint.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + + contactNamePaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); + contactNamePaint.setTextSize(AndroidUtilities.dp(15)); + contactNamePaint.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + + contactPhonePaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); + contactPhonePaint.setTextSize(AndroidUtilities.dp(13)); + + durationPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); + durationPaint.setTextSize(AndroidUtilities.dp(12)); + durationPaint.setColor(Theme.MSG_WEB_PREVIEW_DURATION_TEXT_COLOR); } + + radialProgress = new RadialProgress(this); } private void resetPressedLink(int type) { if (pressedLink == null || pressedLinkType != type && type != -1) { return; } + resetUrlPaths(); pressedLink = null; pressedLinkType = -1; invalidate(); } + private void resetUrlPaths() { + if (urlPath.isEmpty()) { + return; + } + urlPathCache.addAll(urlPath); + urlPath.clear(); + } + + private LinkPath obtainNewUrlPath() { + LinkPath linkPath; + if (!urlPathCache.isEmpty()) { + linkPath = urlPathCache.get(0); + urlPathCache.remove(0); + } else { + linkPath = new LinkPath(); + } + urlPath.add(linkPath); + return linkPath; + } + private boolean checkTextBlockMotionEvent(MotionEvent event) { if (currentMessageObject.type != 0 || currentMessageObject.textLayoutBlocks == null || currentMessageObject.textLayoutBlocks.isEmpty() || !(currentMessageObject.messageText instanceof Spannable)) { return false; @@ -204,10 +334,47 @@ public class ChatMessageCell extends ChatBaseCell { pressedLink = link[0]; linkBlockNum = blockNum; pressedLinkType = 1; + resetUrlPaths(); try { + LinkPath path = obtainNewUrlPath(); int start = buffer.getSpanStart(pressedLink) - block.charactersOffset; - urlPath.setCurrentLayout(block.textLayout, start); - block.textLayout.getSelectionPath(start, buffer.getSpanEnd(pressedLink) - block.charactersOffset, urlPath); + int end = buffer.getSpanEnd(pressedLink); + int length = block.textLayout.getText().length(); + path.setCurrentLayout(block.textLayout, start, 0); + block.textLayout.getSelectionPath(start, end - block.charactersOffset, path); + if (end >= block.charactersOffset + length) { + for (int a = blockNum + 1; a < currentMessageObject.textLayoutBlocks.size(); a++) { + MessageObject.TextLayoutBlock nextBlock = currentMessageObject.textLayoutBlocks.get(a); + length = nextBlock.textLayout.getText().length(); + ClickableSpan[] nextLink = buffer.getSpans(nextBlock.charactersOffset, nextBlock.charactersOffset, ClickableSpan.class); + if (nextLink == null || nextLink.length == 0 || nextLink[0] != pressedLink) { + break; + } + path = obtainNewUrlPath(); + path.setCurrentLayout(nextBlock.textLayout, 0, nextBlock.height); + nextBlock.textLayout.getSelectionPath(0, end - nextBlock.charactersOffset, path); + if (end < block.charactersOffset + length - 1) { + break; + } + } + } + if (start < 0) { + for (int a = blockNum - 1; a >= 0; a--) { + MessageObject.TextLayoutBlock nextBlock = currentMessageObject.textLayoutBlocks.get(a); + length = nextBlock.textLayout.getText().length(); + ClickableSpan[] nextLink = buffer.getSpans(nextBlock.charactersOffset + length - 1, nextBlock.charactersOffset + length - 1, ClickableSpan.class); + if (nextLink == null || nextLink.length == 0 || nextLink[0] != pressedLink) { + break; + } + path = obtainNewUrlPath(); + start = buffer.getSpanStart(pressedLink) - nextBlock.charactersOffset; + path.setCurrentLayout(nextBlock.textLayout, start, -nextBlock.height); + nextBlock.textLayout.getSelectionPath(start, buffer.getSpanEnd(pressedLink) - nextBlock.charactersOffset, path); + if (start >= 0) { + break; + } + } + } } catch (Exception e) { FileLog.e("tmessages", e); } @@ -232,7 +399,7 @@ public class ChatMessageCell extends ChatBaseCell { return false; } - private boolean chechCaptionMotionEvent(MotionEvent event) { + private boolean checkCaptionMotionEvent(MotionEvent event) { if (!(currentMessageObject.caption instanceof Spannable) || captionLayout == null) { return false; } @@ -258,10 +425,12 @@ public class ChatMessageCell extends ChatBaseCell { if (!ignore) { pressedLink = link[0]; pressedLinkType = 3; + resetUrlPaths(); try { + LinkPath path = obtainNewUrlPath(); int start = buffer.getSpanStart(pressedLink); - urlPath.setCurrentLayout(captionLayout, start); - captionLayout.getSelectionPath(start, buffer.getSpanEnd(pressedLink), urlPath); + path.setCurrentLayout(captionLayout, start, 0); + captionLayout.getSelectionPath(start, buffer.getSpanEnd(pressedLink), path); } catch (Exception e) { FileLog.e("tmessages", e); } @@ -293,11 +462,11 @@ public class ChatMessageCell extends ChatBaseCell { if (x >= textX && x <= textX + backgroundWidth && y >= textY + currentMessageObject.textHeight && y <= textY + currentMessageObject.textHeight + linkPreviewHeight + AndroidUtilities.dp(8)) { if (event.getAction() == MotionEvent.ACTION_DOWN) { - if (isDocument != 1 && drawPhotoImage && photoImage.isInsideImage(x, y)) { + if (documentAttachType != DOCUMENT_ATTACH_TYPE_DOCUMENT && drawPhotoImage && photoImage.isInsideImage(x, y)) { if (drawImageButton && buttonState != -1 && x >= buttonX && x <= buttonX + AndroidUtilities.dp(48) && y >= buttonY && y <= buttonY + AndroidUtilities.dp(48)) { buttonPressed = 1; return true; - } else if (isDocument == 2 && buttonState == -1 && MediaController.getInstance().canAutoplayGifs()) { + } else if (documentAttachType == DOCUMENT_ATTACH_TYPE_GIF && buttonState == -1 && MediaController.getInstance().canAutoplayGifs()) { linkPreviewPressed = false; return false; } else { @@ -323,10 +492,12 @@ public class ChatMessageCell extends ChatBaseCell { pressedLink = link[0]; linkBlockNum = -10; pressedLinkType = 2; + resetUrlPaths(); try { + LinkPath path = obtainNewUrlPath(); int start = buffer.getSpanStart(pressedLink); - urlPath.setCurrentLayout(descriptionLayout, start); - descriptionLayout.getSelectionPath(start, buffer.getSpanEnd(pressedLink), urlPath); + path.setCurrentLayout(descriptionLayout, start, 0); + descriptionLayout.getSelectionPath(start, buffer.getSpanEnd(pressedLink), path); } catch (Exception e) { FileLog.e("tmessages", e); } @@ -338,62 +509,93 @@ public class ChatMessageCell extends ChatBaseCell { FileLog.e("tmessages", e); } } - } else if (event.getAction() == MotionEvent.ACTION_UP && (pressedLinkType == 2 || buttonPressed != 0 || linkPreviewPressed)) { - if (buttonPressed != 0) { - if (event.getAction() == MotionEvent.ACTION_UP) { - buttonPressed = 0; - playSoundEffect(SoundEffectConstants.CLICK); - didPressedButton(false); - invalidate(); - } else if (event.getAction() == MotionEvent.ACTION_CANCEL) { - buttonPressed = 0; - invalidate(); - } - } else if (pressedLink != null) { - if (pressedLink instanceof URLSpan) { - AndroidUtilities.openUrl(getContext(), ((URLSpan) pressedLink).getURL()); + } else if (event.getAction() == MotionEvent.ACTION_UP) { + if (pressedLinkType == 2 || buttonPressed != 0 || linkPreviewPressed) { + if (buttonPressed != 0) { + if (event.getAction() == MotionEvent.ACTION_UP) { + buttonPressed = 0; + playSoundEffect(SoundEffectConstants.CLICK); + didPressedButton(false); + invalidate(); + } else if (event.getAction() == MotionEvent.ACTION_CANCEL) { + buttonPressed = 0; + invalidate(); + } + } else if (pressedLink != null) { + if (pressedLink instanceof URLSpan) { + Browser.openUrl(getContext(), ((URLSpan) pressedLink).getURL()); + } else { + pressedLink.onClick(this); + } + resetPressedLink(2); } else { - pressedLink.onClick(this); - } - } else { - if (drawImageButton) { - if (isDocument == 2) { - if (buttonState == -1) { - buttonState = 2; - currentMessageObject.audioProgress = 1; - photoImage.setAllowStartAnimation(false); - photoImage.stopAnimation(); - radialProgress.setBackground(getDrawableForCurrentState(), false, false); - invalidate(); - playSoundEffect(SoundEffectConstants.CLICK); - } else if (buttonState == 2 || buttonState == 0) { - didPressedButton(false); + if (drawImageButton) { + if (documentAttachType == DOCUMENT_ATTACH_TYPE_GIF) { + if (buttonState == -1) { + buttonState = 2; + currentMessageObject.audioProgress = 1; + photoImage.setAllowStartAnimation(false); + photoImage.stopAnimation(); + radialProgress.setBackground(getDrawableForCurrentState(), false, false); + invalidate(); + playSoundEffect(SoundEffectConstants.CLICK); + } else if (buttonState == 2 || buttonState == 0) { + didPressedButton(false); + playSoundEffect(SoundEffectConstants.CLICK); + } + } else if (buttonState == -1) { + delegate.didPressedImage(this); playSoundEffect(SoundEffectConstants.CLICK); } - } else if (buttonState == -1) { - delegate.didPressedImage(this); - playSoundEffect(SoundEffectConstants.CLICK); - } - } else { - TLRPC.WebPage webPage = currentMessageObject.messageOwner.media.webpage; - if (Build.VERSION.SDK_INT >= 16 && webPage.embed_url != null && webPage.embed_url.length() != 0) { - delegate.needOpenWebView(webPage.embed_url, webPage.site_name, webPage.url, webPage.embed_width, webPage.embed_height); } else { - AndroidUtilities.openUrl(getContext(), webPage.url); + TLRPC.WebPage webPage = currentMessageObject.messageOwner.media.webpage; + if (webPage != null) { + if (Build.VERSION.SDK_INT >= 16 && webPage.embed_url != null && webPage.embed_url.length() != 0) { + delegate.needOpenWebView(webPage.embed_url, webPage.site_name, webPage.description, webPage.url, webPage.embed_width, webPage.embed_height); + } else { + Browser.openUrl(getContext(), webPage.url); + } + } } + resetPressedLink(2); + return true; } + } else { resetPressedLink(2); - return true; } - } else { - resetPressedLink(2); } } return false; } + + private boolean checkOtherButtonMotionEvent(MotionEvent event) { + if (documentAttachType != DOCUMENT_ATTACH_TYPE_DOCUMENT && currentMessageObject.type != 12 && documentAttachType != DOCUMENT_ATTACH_TYPE_MUSIC && documentAttachType != DOCUMENT_ATTACH_TYPE_VIDEO) { + return false; + } + + int x = (int) event.getX(); + int y = (int) event.getY(); + + boolean result = false; + if (event.getAction() == MotionEvent.ACTION_DOWN) { + if (x >= otherX - AndroidUtilities.dp(20) && x <= otherX + AndroidUtilities.dp(20) && y >= otherY - AndroidUtilities.dp(4) && y <= otherY + AndroidUtilities.dp(30)) { + otherPressed = true; + result = true; + } + } else { + if (event.getAction() == MotionEvent.ACTION_UP) { + if (otherPressed) { + otherPressed = false; + playSoundEffect(SoundEffectConstants.CLICK); + delegate.didPressedOther(this); + } + } + } + return result; + } private boolean checkPhotoImageMotionEvent(MotionEvent event) { - if (!drawPhotoImage) { + if (!drawPhotoImage && documentAttachType != DOCUMENT_ATTACH_TYPE_DOCUMENT) { return false; } @@ -407,19 +609,23 @@ public class ChatMessageCell extends ChatBaseCell { invalidate(); result = true; } else { - if (isDocument == 1) { + if (documentAttachType == DOCUMENT_ATTACH_TYPE_DOCUMENT) { if (x >= photoImage.getImageX() && x <= photoImage.getImageX() + backgroundWidth - AndroidUtilities.dp(50) && y >= photoImage.getImageY() && y <= photoImage.getImageY() + photoImage.getImageHeight()) { imagePressed = true; result = true; - } else if (x >= otherX - AndroidUtilities.dp(20) && x <= photoImage.getImageX() + backgroundWidth && y >= photoImage.getImageY() && y <= photoImage.getImageY() + photoImage.getImageHeight()) { - otherPressed = true; - result = true; } - } else if (currentMessageObject.type != 13) { + } else if (currentMessageObject.type != 13 || currentMessageObject.getInputStickerSet() != null) { if (x >= photoImage.getImageX() && x <= photoImage.getImageX() + backgroundWidth && y >= photoImage.getImageY() && y <= photoImage.getImageY() + photoImage.getImageHeight()) { imagePressed = true; result = true; } + if (currentMessageObject.type == 12) { + TLRPC.User user = MessagesController.getInstance().getUser(currentMessageObject.messageOwner.media.user_id); + if (user == null) { + imagePressed = false; + result = false; + } + } } } if (imagePressed && currentMessageObject.isSecretPhoto()) { @@ -443,12 +649,107 @@ public class ChatMessageCell extends ChatBaseCell { if (buttonState == -1 || buttonState == 2 || buttonState == 3) { playSoundEffect(SoundEffectConstants.CLICK); didClickedImage(); + } else if (buttonState == 0 && documentAttachType == DOCUMENT_ATTACH_TYPE_DOCUMENT) { + playSoundEffect(SoundEffectConstants.CLICK); + didPressedButton(false); } invalidate(); - } else if (otherPressed) { - otherPressed = false; + } + } + } + return result; + } + + private boolean checkAudioMotionEvent(MotionEvent event) { + if (documentAttachType != DOCUMENT_ATTACH_TYPE_AUDIO && documentAttachType != DOCUMENT_ATTACH_TYPE_MUSIC) { + return false; + } + + int x = (int) event.getX(); + int y = (int) event.getY(); + boolean result; + if (useSeekBarWaweform) { + result = seekBarWaveform.onTouch(event.getAction(), event.getX() - seekBarX - AndroidUtilities.dp(13), event.getY() - seekBarY); + } else { + result = seekBar.onTouch(event.getAction(), event.getX() - seekBarX, event.getY() - seekBarY); + } + if (result) { + if (!useSeekBarWaweform && event.getAction() == MotionEvent.ACTION_DOWN) { + getParent().requestDisallowInterceptTouchEvent(true); + } else if (useSeekBarWaweform && !seekBarWaveform.isStartDraging() && event.getAction() == MotionEvent.ACTION_UP) { + didPressedButton(true); + } + disallowLongPress = true; + invalidate(); + } else { + int side = AndroidUtilities.dp(36); + boolean area; + if (buttonState == 0 || buttonState == 1 || buttonState == 2) { + area = x >= buttonX - AndroidUtilities.dp(12) && x <= buttonX - AndroidUtilities.dp(12) + backgroundWidth && y >= namesOffset + mediaOffsetY && y <= layoutHeight; + } else { + area = x >= buttonX && x <= buttonX + side && y >= buttonY && y <= buttonY + side; + } + if (event.getAction() == MotionEvent.ACTION_DOWN) { + if (area) { + buttonPressed = 1; + invalidate(); + result = true; + radialProgress.swapBackground(getDrawableForCurrentState()); + } + } else if (buttonPressed != 0) { + if (event.getAction() == MotionEvent.ACTION_UP) { + buttonPressed = 0; playSoundEffect(SoundEffectConstants.CLICK); - delegate.didPressedOther(this); + didPressedButton(true); + invalidate(); + } else if (event.getAction() == MotionEvent.ACTION_CANCEL) { + buttonPressed = 0; + invalidate(); + } else if (event.getAction() == MotionEvent.ACTION_MOVE) { + if (!area) { + buttonPressed = 0; + invalidate(); + } + } + radialProgress.swapBackground(getDrawableForCurrentState()); + } + } + return result; + } + + private boolean checkBotButtonMotionEvent(MotionEvent event) { + if (botButtons.isEmpty()) { + return false; + } + + int x = (int) event.getX(); + int y = (int) event.getY(); + + boolean result = false; + if (event.getAction() == MotionEvent.ACTION_DOWN) { + int addX; + if (currentMessageObject.isOutOwner()) { + addX = getMeasuredWidth() - widthForButtons - AndroidUtilities.dp(10); + } else { + addX = currentBackgroundDrawable.getBounds().left + AndroidUtilities.dp(mediaBackground ? 1 : 7); + } + for (int a = 0; a < botButtons.size(); a++) { + BotButton button = botButtons.get(a); + int y2 = button.y + layoutHeight - AndroidUtilities.dp(2); + if (x >= button.x + addX && x <= button.x + addX + button.width && y >= y2 && y <= y2 + button.height) { + pressedBotButton = a; + invalidate(); + result = true; + break; + } + } + } else { + if (event.getAction() == MotionEvent.ACTION_UP) { + if (pressedBotButton != -1) { + playSoundEffect(SoundEffectConstants.CLICK); + delegate.didPressedBotButton(this, botButtons.get(pressedBotButton).button); + pressedBotButton = -1; + invalidate(); } } } @@ -461,34 +762,114 @@ public class ChatMessageCell extends ChatBaseCell { return super.onTouchEvent(event); } + disallowLongPress = false; + boolean result = checkTextBlockMotionEvent(event); + if (!result) { + result = checkOtherButtonMotionEvent(event); + } if (!result) { result = checkLinkPreviewMotionEvent(event); } if (!result) { - result = chechCaptionMotionEvent(event); + result = checkCaptionMotionEvent(event); + } + if (!result) { + result = checkAudioMotionEvent(event); } if (!result) { result = checkPhotoImageMotionEvent(event); } + if (!result) { + result = checkBotButtonMotionEvent(event); + } if (event.getAction() == MotionEvent.ACTION_CANCEL) { buttonPressed = 0; + pressedBotButton = -1; linkPreviewPressed = false; otherPressed = false; imagePressed = false; result = false; resetPressedLink(-1); } - if (result && event.getAction() == MotionEvent.ACTION_DOWN) { + if (!disallowLongPress && result && event.getAction() == MotionEvent.ACTION_DOWN) { startCheckLongPress(); } if (event.getAction() != MotionEvent.ACTION_DOWN && event.getAction() != MotionEvent.ACTION_MOVE) { cancelCheckLongPress(); } + return result || super.onTouchEvent(event); } + public void updateAudioProgress() { + if (currentMessageObject == null || documentAttach == null) { + return; + } + + if (useSeekBarWaweform) { + if (!seekBarWaveform.isDragging()) { + seekBarWaveform.setProgress(currentMessageObject.audioProgress); + } + } else { + if (!seekBar.isDragging()) { + seekBar.setProgress(currentMessageObject.audioProgress); + } + } + + int duration = 0; + if (documentAttachType == DOCUMENT_ATTACH_TYPE_AUDIO) { + if (!MediaController.getInstance().isPlayingAudio(currentMessageObject)) { + for (int a = 0; a < documentAttach.attributes.size(); a++) { + TLRPC.DocumentAttribute attribute = documentAttach.attributes.get(a); + if (attribute instanceof TLRPC.TL_documentAttributeAudio) { + duration = attribute.duration; + break; + } + } + } else { + duration = currentMessageObject.audioProgressSec; + } + String timeString = String.format("%02d:%02d", duration / 60, duration % 60); + if (lastTimeString == null || lastTimeString != null && !lastTimeString.equals(timeString)) { + lastTimeString = timeString; + timeWidthAudio = (int) Math.ceil(audioTimePaint.measureText(timeString)); + timeLayout = new StaticLayout(timeString, audioTimePaint, timeWidthAudio, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); + } + } else { + int currentProgress = 0; + for (int a = 0; a < documentAttach.attributes.size(); a++) { + TLRPC.DocumentAttribute attribute = documentAttach.attributes.get(a); + if (attribute instanceof TLRPC.TL_documentAttributeAudio) { + duration = attribute.duration; + break; + } + } + if (MediaController.getInstance().isPlayingAudio(currentMessageObject)) { + currentProgress = currentMessageObject.audioProgressSec; + } + String timeString = String.format("%d:%02d / %d:%02d", currentProgress / 60, currentProgress % 60, duration / 60, duration % 60); + if (lastTimeString == null || lastTimeString != null && !lastTimeString.equals(timeString)) { + lastTimeString = timeString; + int timeWidth = (int) Math.ceil(audioTimePaint.measureText(timeString)); + timeLayout = new StaticLayout(timeString, audioTimePaint, timeWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); + } + } + invalidate(); + } + + public void downloadAudioIfNeed() { + if (documentAttachType != DOCUMENT_ATTACH_TYPE_AUDIO || documentAttach.size >= 1024 * 1024 * 5) { + return; + } + if (buttonState == 2) { + FileLoader.getInstance().loadFile(documentAttach, true, false); + buttonState = 4; + radialProgress.setBackground(getDrawableForCurrentState(), false, false); + } + } + public void setVisiblePart(int position, int height) { if (currentMessageObject == null || currentMessageObject.textLayoutBlocks == null) { return; @@ -562,12 +943,15 @@ public class ChatMessageCell extends ChatBaseCell { } private void didClickedImage() { - if (currentMessageObject.type == 1) { + if (currentMessageObject.type == 1 || currentMessageObject.type == 13) { if (buttonState == -1) { delegate.didPressedImage(this); } else if (buttonState == 0) { didPressedButton(false); } + } else if (currentMessageObject.type == 12) { + TLRPC.User user = MessagesController.getInstance().getUser(currentMessageObject.messageOwner.media.user_id); + delegate.didPressedUserAvatar(this, user); } else if (currentMessageObject.type == 8) { if (buttonState == -1) { buttonState = 2; @@ -579,23 +963,23 @@ public class ChatMessageCell extends ChatBaseCell { } else if (buttonState == 2 || buttonState == 0) { didPressedButton(false); } - } else if (currentMessageObject.type == 3) { + } else if (documentAttachType == DOCUMENT_ATTACH_TYPE_VIDEO) { if (buttonState == 0 || buttonState == 3) { didPressedButton(false); } } else if (currentMessageObject.type == 4) { delegate.didPressedImage(this); - } else if (isDocument == 1) { + } else if (documentAttachType == DOCUMENT_ATTACH_TYPE_DOCUMENT) { if (buttonState == -1) { delegate.didPressedImage(this); } - } else if (isDocument == 2) { + } else if (documentAttachType == DOCUMENT_ATTACH_TYPE_GIF) { if (buttonState == -1) { TLRPC.WebPage webPage = currentMessageObject.messageOwner.media.webpage; if (Build.VERSION.SDK_INT >= 16 && webPage.embed_url != null && webPage.embed_url.length() != 0) { - delegate.needOpenWebView(webPage.embed_url, webPage.site_name, webPage.url, webPage.embed_width, webPage.embed_height); + delegate.needOpenWebView(webPage.embed_url, webPage.site_name, webPage.description, webPage.url, webPage.embed_width, webPage.embed_height); } else { - AndroidUtilities.openUrl(getContext(), webPage.url); + Browser.openUrl(getContext(), webPage.url); } } } @@ -609,7 +993,6 @@ public class ChatMessageCell extends ChatBaseCell { if (str == null) { return; } - infoOffset = 0; infoWidth = (int) Math.ceil(infoPaint.measureText(str)); CharSequence str2 = TextUtils.ellipsize(str, infoPaint, infoWidth, TextUtils.TruncateAt.END); infoLayout = new StaticLayout(str2, infoPaint, infoWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); @@ -617,7 +1000,7 @@ public class ChatMessageCell extends ChatBaseCell { } private boolean isPhotoDataChanged(MessageObject object) { - if (object.type == 0) { + if (object.type == 0 || object.type == 14) { return false; } if (object.type == 4) { @@ -626,7 +1009,7 @@ public class ChatMessageCell extends ChatBaseCell { } double lat = object.messageOwner.media.geo.lat; double lon = object.messageOwner.media.geo._long; - String url = String.format(Locale.US, "https://maps.googleapis.com/maps/api/staticmap?center=%f,%f&zoom=15&size=100x100&maptype=roadmap&scale=%d&markers=color:red|size:big|%f,%f&sensor=false", lat, lon, Math.min(2, (int) Math.ceil(AndroidUtilities.density)), lat, lon); + String url = String.format(Locale.US, "https://maps.googleapis.com/maps/api/staticmap?center=%f,%f&zoom=15&size=100x100&maptype=roadmap&scale=%d&markers=color:red|size:mid|%f,%f&sensor=false", lat, lon, Math.min(2, (int) Math.ceil(AndroidUtilities.density)), lat, lon); if (!url.equals(currentUrl)) { return true; } @@ -634,7 +1017,7 @@ public class ChatMessageCell extends ChatBaseCell { return true; } else if (currentMessageObject != null && photoNotSet) { File cacheFile = FileLoader.getPathToMessage(currentMessageObject.messageOwner); - if (cacheFile.exists()) { + if (cacheFile.exists()) { //TODO return true; } } @@ -643,11 +1026,7 @@ public class ChatMessageCell extends ChatBaseCell { @Override protected boolean isUserDataChanged() { - if (!hasLinkPreview && currentMessageObject.messageOwner.media != null && currentMessageObject.messageOwner.media.webpage instanceof TLRPC.TL_webPage) { - return true; - } - //suppress warning - return super.isUserDataChanged(); + return currentMessageObject != null && (!hasLinkPreview && currentMessageObject.messageOwner.media != null && currentMessageObject.messageOwner.media.webpage instanceof TLRPC.TL_webPage || super.isUserDataChanged()); } @Override @@ -665,7 +1044,11 @@ public class ChatMessageCell extends ChatBaseCell { @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); - if (photoImage.onAttachedToWindow()) { + if (drawPhotoImage) { + if (photoImage.onAttachedToWindow()) { + updateButtonState(false); + } + } else { updateButtonState(false); } } @@ -683,6 +1066,11 @@ public class ChatMessageCell extends ChatBaseCell { return; } resetPressedLink(-1); + if (buttonPressed != 0 || pressedBotButton != -1) { + buttonPressed = 0; + pressedBotButton = -1; + invalidate(); + } super.onLongPress(); } @@ -692,6 +1080,11 @@ public class ChatMessageCell extends ChatBaseCell { if (radialProgress.swapBackground(getDrawableForCurrentState())) { invalidate(); } + if (useSeekBarWaweform) { + seekBarWaveform.setSelected(isDrawSelectedBackground()); + } else { + seekBar.setSelected(isDrawSelectedBackground()); + } } @Override @@ -700,6 +1093,11 @@ public class ChatMessageCell extends ChatBaseCell { if (radialProgress.swapBackground(getDrawableForCurrentState())) { invalidate(); } + if (useSeekBarWaweform) { + seekBarWaveform.setSelected(isDrawSelectedBackground()); + } else { + seekBar.setSelected(isDrawSelectedBackground()); + } } @Override @@ -708,96 +1106,213 @@ public class ChatMessageCell extends ChatBaseCell { if (radialProgress.swapBackground(getDrawableForCurrentState())) { invalidate(); } + if (useSeekBarWaweform) { + seekBarWaveform.setSelected(isDrawSelectedBackground()); + } else { + seekBar.setSelected(isDrawSelectedBackground()); + } + } + + @Override + public void onSeekBarDrag(float progress) { + if (currentMessageObject == null) { + return; + } + currentMessageObject.audioProgress = progress; + MediaController.getInstance().seekToProgress(currentMessageObject, progress); + } + + private void updateWaveform() { + if (currentMessageObject == null || documentAttachType != DOCUMENT_ATTACH_TYPE_AUDIO) { + return; + } + for (int a = 0; a < documentAttach.attributes.size(); a++) { + TLRPC.DocumentAttribute attribute = documentAttach.attributes.get(a); + if (attribute instanceof TLRPC.TL_documentAttributeAudio) { + if (attribute.waveform == null || attribute.waveform.length == 0) { + MediaController.getInstance().generateWaveform(currentMessageObject); + } + useSeekBarWaweform = attribute.waveform != null; + seekBarWaveform.setWaveform(attribute.waveform); + break; + } + } } private int createDocumentLayout(int maxWidth, MessageObject messageObject) { - TLRPC.Document document = null; - if (messageObject.type == 9) { - document = messageObject.messageOwner.media.document; - } else if (messageObject.type == 0) { - document = messageObject.messageOwner.media.webpage.document; + if (messageObject.type == 0) { + documentAttach = messageObject.messageOwner.media.webpage.document; + } else { + documentAttach = messageObject.messageOwner.media.document; } - if (document == null) { + if (documentAttach == null) { return 0; } - isDocument = 1; - String name = FileLoader.getDocumentFileName(document); - if (name == null || name.length() == 0) { - name = LocaleController.getString("AttachDocument", R.string.AttachDocument); - } - captionLayout = StaticLayoutEx.createStaticLayout(name, namePaint, maxWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false, TextUtils.TruncateAt.MIDDLE, maxWidth, 3); - nameOffsetX = Integer.MIN_VALUE; - int captionWidth; - if (captionLayout != null && captionLayout.getLineCount() > 0) { - int maxLineWidth = 0; - for (int a = 0; a < captionLayout.getLineCount(); a++) { - maxLineWidth = Math.max(maxLineWidth, (int) Math.ceil(captionLayout.getLineWidth(a))); - nameOffsetX = Math.max(nameOffsetX, (int) Math.ceil(-captionLayout.getLineLeft(a))); + if (MessageObject.isVoiceDocument(documentAttach)) { + documentAttachType = DOCUMENT_ATTACH_TYPE_AUDIO; + int duration = 0; + for (int a = 0; a < documentAttach.attributes.size(); a++) { + TLRPC.DocumentAttribute attribute = documentAttach.attributes.get(a); + if (attribute instanceof TLRPC.TL_documentAttributeAudio) { + duration = attribute.duration; + break; + } } - captionWidth = Math.min(maxWidth, maxLineWidth); - } else { - captionWidth = maxWidth; - nameOffsetX = 0; - } - - String str = AndroidUtilities.formatFileSize(document.size) + " " + FileLoader.getDocumentExtension(document); - infoWidth = Math.min(maxWidth, (int) Math.ceil(infoPaint.measureText(str))); - CharSequence str2 = TextUtils.ellipsize(str, infoPaint, infoWidth, TextUtils.TruncateAt.END); - try { - if (infoWidth < 0) { - infoWidth = AndroidUtilities.dp(10); + availableTimeWidth = maxWidth - AndroidUtilities.dp(76 + 18) - (int) Math.ceil(audioTimePaint.measureText("00:00")); + measureTime(messageObject); + int minSize = AndroidUtilities.dp(40 + 14 + 20 + 90 + 10) + timeWidth; + if (!hasLinkPreview) { + backgroundWidth = Math.min(maxWidth, minSize + duration * AndroidUtilities.dp(10)); } - infoLayout = new StaticLayout(str2, infoPaint, infoWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); - } catch (Exception e) { - FileLog.e("tmessages", e); - } - currentPhotoObject = FileLoader.getClosestPhotoSizeWithSize(messageObject.photoThumbs, AndroidUtilities.getPhotoSize()); - photoImage.setNeedsQualityThumb(true); - photoImage.setShouldGenerateQualityThumb(true); - photoImage.setParentMessageObject(messageObject); - if (currentPhotoObject != null) { - currentPhotoFilter = "86_86_b"; - photoImage.setImage(null, null, null, null, currentPhotoObject.location, currentPhotoFilter, 0, null, true); + if (messageObject.isOutOwner()) { + seekBarWaveform.setColors(Theme.MSG_OUT_VOICE_SEEKBAR_COLOR, Theme.MSG_OUT_VOICE_SEEKBAR_FILL_COLOR, Theme.MSG_OUT_VOICE_SEEKBAR_SELECTED_COLOR); + seekBar.setColors(Theme.MSG_OUT_AUDIO_SEEKBAR_COLOR, Theme.MSG_OUT_AUDIO_SEEKBAR_FILL_COLOR, Theme.MSG_OUT_AUDIO_SEEKBAR_SELECTED_COLOR); + } else { + seekBarWaveform.setColors(Theme.MSG_IN_VOICE_SEEKBAR_COLOR, Theme.MSG_IN_VOICE_SEEKBAR_FILL_COLOR, Theme.MSG_IN_VOICE_SEEKBAR_SELECTED_COLOR); + seekBar.setColors(Theme.MSG_IN_AUDIO_SEEKBAR_COLOR, Theme.MSG_IN_AUDIO_SEEKBAR_FILL_COLOR, Theme.MSG_IN_AUDIO_SEEKBAR_SELECTED_COLOR); + } + seekBarWaveform.setMessageObject(messageObject); + return 0; + } else if (MessageObject.isMusicDocument(documentAttach)) { + documentAttachType = DOCUMENT_ATTACH_TYPE_MUSIC; + if (messageObject.isOutOwner()) { + seekBar.setColors(Theme.MSG_OUT_AUDIO_SEEKBAR_COLOR, Theme.MSG_OUT_AUDIO_SEEKBAR_FILL_COLOR, Theme.MSG_OUT_AUDIO_SEEKBAR_SELECTED_COLOR); + } else { + seekBar.setColors(Theme.MSG_IN_AUDIO_SEEKBAR_COLOR, Theme.MSG_IN_AUDIO_SEEKBAR_FILL_COLOR, Theme.MSG_IN_AUDIO_SEEKBAR_SELECTED_COLOR); + } + + maxWidth = maxWidth - AndroidUtilities.dp(86); + + CharSequence stringFinal = TextUtils.ellipsize(messageObject.getMusicTitle().replace('\n', ' '), audioTitlePaint, maxWidth - AndroidUtilities.dp(12), TextUtils.TruncateAt.END); + songLayout = new StaticLayout(stringFinal, audioTitlePaint, maxWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); + if (songLayout.getLineCount() > 0) { + songX = -(int) Math.ceil(songLayout.getLineLeft(0)); + } + + stringFinal = TextUtils.ellipsize(messageObject.getMusicAuthor().replace('\n', ' '), audioPerformerPaint, maxWidth, TextUtils.TruncateAt.END); + performerLayout = new StaticLayout(stringFinal, audioPerformerPaint, maxWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); + if (performerLayout.getLineCount() > 0) { + performerX = -(int) Math.ceil(performerLayout.getLineLeft(0)); + } + + int duration = 0; + for (int a = 0; a < documentAttach.attributes.size(); a++) { + TLRPC.DocumentAttribute attribute = documentAttach.attributes.get(a); + if (attribute instanceof TLRPC.TL_documentAttributeAudio) { + duration = attribute.duration; + break; + } + } + int durationWidth = (int) Math.ceil(audioTimePaint.measureText(String.format("%d:%02d / %d:%02d", duration / 60, duration % 60, duration / 60, duration % 60))); + availableTimeWidth = backgroundWidth - AndroidUtilities.dp(76 + 18) - durationWidth; + return durationWidth; + } else if (MessageObject.isVideoDocument(documentAttach)) { + documentAttachType = DOCUMENT_ATTACH_TYPE_VIDEO; + int duration = 0; + for (int a = 0; a < documentAttach.attributes.size(); a++) { + TLRPC.DocumentAttribute attribute = documentAttach.attributes.get(a); + if (attribute instanceof TLRPC.TL_documentAttributeVideo) { + duration = attribute.duration; + break; + } + } + int minutes = duration / 60; + int seconds = duration - minutes * 60; + String str = String.format("%d:%02d, %s", minutes, seconds, AndroidUtilities.formatFileSize(documentAttach.size)); + infoWidth = (int) Math.ceil(infoPaint.measureText(str)); + infoLayout = new StaticLayout(str, infoPaint, infoWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); + + return 0; } else { - photoImage.setImageBitmap((BitmapDrawable) null); + drawPhotoImage = documentAttach.mime_type != null && documentAttach.mime_type.toLowerCase().startsWith("image/") || documentAttach.thumb instanceof TLRPC.TL_photoSize && !(documentAttach.thumb.location instanceof TLRPC.TL_fileLocationUnavailable); + if (!drawPhotoImage) { + maxWidth += AndroidUtilities.dp(30); + } + documentAttachType = DOCUMENT_ATTACH_TYPE_DOCUMENT; + String name = FileLoader.getDocumentFileName(documentAttach); + if (name == null || name.length() == 0) { + name = LocaleController.getString("AttachDocument", R.string.AttachDocument); + } + captionLayout = StaticLayoutEx.createStaticLayout(name, docNamePaint, maxWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false, TextUtils.TruncateAt.MIDDLE, maxWidth, drawPhotoImage ? 2 : 1); + nameOffsetX = Integer.MIN_VALUE; + int captionWidth; + if (captionLayout != null && captionLayout.getLineCount() > 0) { + int maxLineWidth = 0; + for (int a = 0; a < captionLayout.getLineCount(); a++) { + maxLineWidth = Math.max(maxLineWidth, (int) Math.ceil(captionLayout.getLineWidth(a))); + nameOffsetX = Math.max(nameOffsetX, (int) Math.ceil(-captionLayout.getLineLeft(a))); + } + captionWidth = Math.min(maxWidth, maxLineWidth); + } else { + captionWidth = maxWidth; + nameOffsetX = 0; + } + + String str = AndroidUtilities.formatFileSize(documentAttach.size) + " " + FileLoader.getDocumentExtension(documentAttach); + infoWidth = Math.min(maxWidth, (int) Math.ceil(infoPaint.measureText(str))); + CharSequence str2 = TextUtils.ellipsize(str, infoPaint, infoWidth, TextUtils.TruncateAt.END); + try { + if (infoWidth < 0) { + infoWidth = AndroidUtilities.dp(10); + } + infoLayout = new StaticLayout(str2, infoPaint, infoWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); + } catch (Exception e) { + FileLog.e("tmessages", e); + } + + if (drawPhotoImage) { + currentPhotoObject = FileLoader.getClosestPhotoSizeWithSize(messageObject.photoThumbs, AndroidUtilities.getPhotoSize()); + photoImage.setNeedsQualityThumb(true); + photoImage.setShouldGenerateQualityThumb(true); + photoImage.setParentMessageObject(messageObject); + if (currentPhotoObject != null) { + currentPhotoFilter = "86_86_b"; + photoImage.setImage(null, null, null, null, currentPhotoObject.location, currentPhotoFilter, 0, null, true); + } else { + photoImage.setImageBitmap((BitmapDrawable) null); + } + } + return captionWidth; } - return captionWidth; } private void calcBackgroundWidth(int maxWidth, int timeMore, int maxChildWidth) { if (hasLinkPreview || maxWidth - currentMessageObject.lastLineWidth < timeMore) { totalHeight += AndroidUtilities.dp(14); - backgroundWidth = Math.max(maxChildWidth, currentMessageObject.lastLineWidth) + AndroidUtilities.dp(29); - backgroundWidth = Math.max(backgroundWidth, timeWidth + AndroidUtilities.dp(29)); + backgroundWidth = Math.max(maxChildWidth, currentMessageObject.lastLineWidth) + AndroidUtilities.dp(31); + backgroundWidth = Math.max(backgroundWidth, timeWidth + AndroidUtilities.dp(31)); } else { int diff = maxChildWidth - currentMessageObject.lastLineWidth; if (diff >= 0 && diff <= timeMore) { - backgroundWidth = maxChildWidth + timeMore - diff + AndroidUtilities.dp(29); + backgroundWidth = maxChildWidth + timeMore - diff + AndroidUtilities.dp(31); } else { - backgroundWidth = Math.max(maxChildWidth, currentMessageObject.lastLineWidth + timeMore) + AndroidUtilities.dp(29); + backgroundWidth = Math.max(maxChildWidth, currentMessageObject.lastLineWidth + timeMore) + AndroidUtilities.dp(31); } } } @Override public void setMessageObject(MessageObject messageObject) { - boolean messageChanged = currentMessageObject != messageObject; + boolean messageIdChanged = currentMessageObject == null || currentMessageObject.getId() != messageObject.getId(); + boolean messageChanged = currentMessageObject != messageObject || messageObject.forceUpdate; boolean dataChanged = currentMessageObject == messageObject && (isUserDataChanged() || photoNotSet); if (messageChanged || dataChanged || isPhotoDataChanged(messageObject)) { resetPressedLink(-1); + messageObject.forceUpdate = false; drawPhotoImage = false; hasLinkPreview = false; linkPreviewPressed = false; buttonPressed = 0; + pressedBotButton = -1; linkPreviewHeight = 0; - infoOffset = 0; - isInstagram = false; + mediaOffsetY = 0; durationLayout = null; - isDocument = 0; + documentAttachType = DOCUMENT_ATTACH_TYPE_NONE; + documentAttach = null; descriptionLayout = null; titleLayout = null; - sitecaptionLayout = null; + siteCaptionLayout = null; authorLayout = null; captionLayout = null; drawImageButton = false; @@ -811,15 +1326,23 @@ public class ChatMessageCell extends ChatBaseCell { photoNotSet = false; drawBackground = true; drawName = false; + useSeekBarWaweform = false; + drawForwardedName = false; + mediaBackground = false; + availableTimeWidth = 0; + photoImage.setNeedsQualityThumb(false); + photoImage.setShouldGenerateQualityThumb(false); + photoImage.setParentMessageObject(null); + photoImage.setRoundRadius(AndroidUtilities.dp(3)); if (messageChanged) { firstVisibleBlockNum = 0; lastVisibleBlockNum = 0; + needNewVisiblePart = true; } if (messageObject.type == 0) { drawForwardedName = true; - mediaBackground = false; int maxWidth; if (AndroidUtilities.isTablet()) { @@ -839,9 +1362,26 @@ public class ChatMessageCell extends ChatBaseCell { drawName = messageObject.messageOwner.to_id.channel_id != 0 && !messageObject.isOutOwner(); } } + measureTime(messageObject); + int timeMore = timeWidth + AndroidUtilities.dp(6); + if (messageObject.isOutOwner()) { + timeMore += AndroidUtilities.dp(20.5f); + } + hasLinkPreview = messageObject.messageOwner.media instanceof TLRPC.TL_messageMediaWebPage && messageObject.messageOwner.media.webpage instanceof TLRPC.TL_webPage; backgroundWidth = maxWidth; - availableTimeWidth = backgroundWidth - AndroidUtilities.dp(29); + if (hasLinkPreview || maxWidth - messageObject.lastLineWidth < timeMore) { + backgroundWidth = Math.max(backgroundWidth, messageObject.lastLineWidth) + AndroidUtilities.dp(31); + backgroundWidth = Math.max(backgroundWidth, timeWidth + AndroidUtilities.dp(31)); + } else { + int diff = backgroundWidth - messageObject.lastLineWidth; + if (diff >= 0 && diff <= timeMore) { + backgroundWidth = backgroundWidth + timeMore - diff + AndroidUtilities.dp(31); + } else { + backgroundWidth = Math.max(backgroundWidth, messageObject.lastLineWidth + timeMore) + AndroidUtilities.dp(31); + } + } + availableTimeWidth = backgroundWidth - AndroidUtilities.dp(31); super.setMessageObject(messageObject); @@ -854,12 +1394,7 @@ public class ChatMessageCell extends ChatBaseCell { maxChildWidth = Math.max(maxChildWidth, replyTextWidth); int maxWebWidth = 0; - int timeMore = timeWidth + AndroidUtilities.dp(6); - if (messageObject.isOutOwner()) { - timeMore += AndroidUtilities.dp(20.5f); - } - - if (messageObject.messageOwner.media instanceof TLRPC.TL_messageMediaWebPage && messageObject.messageOwner.media.webpage instanceof TLRPC.TL_webPage) { + if (hasLinkPreview) { int linkPreviewMaxWidth; if (AndroidUtilities.isTablet()) { if (messageObject.isFromUser() && (currentMessageObject.messageOwner.to_id.channel_id != 0 || currentMessageObject.messageOwner.to_id.chat_id != 0) && !currentMessageObject.isOut()) { @@ -889,8 +1424,6 @@ public class ChatMessageCell extends ChatBaseCell { int additionalHeight = 0; linkPreviewMaxWidth -= additinalWidth; - hasLinkPreview = true; - if (currentMessageObject.photoThumbs == null && webPage.photo != null) { currentMessageObject.generateThumbs(true); } @@ -900,12 +1433,12 @@ public class ChatMessageCell extends ChatBaseCell { if (webPage.site_name != null) { try { int width = (int) Math.ceil(replyNamePaint.measureText(webPage.site_name)); - sitecaptionLayout = new StaticLayout(webPage.site_name, replyNamePaint, Math.min(width, linkPreviewMaxWidth), Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); - int height = sitecaptionLayout.getLineBottom(sitecaptionLayout.getLineCount() - 1); + siteCaptionLayout = new StaticLayout(webPage.site_name, replyNamePaint, Math.min(width, linkPreviewMaxWidth), Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); + int height = siteCaptionLayout.getLineBottom(siteCaptionLayout.getLineCount() - 1); linkPreviewHeight += height; totalHeight += height; additionalHeight += height; - width = sitecaptionLayout.getWidth(); + width = siteCaptionLayout.getWidth(); maxChildWidth = Math.max(maxChildWidth, width + additinalWidth); maxWebWidth = Math.max(maxWebWidth, width + additinalWidth); } catch (Exception e) { @@ -926,7 +1459,7 @@ public class ChatMessageCell extends ChatBaseCell { titleLayout = StaticLayoutEx.createStaticLayout(webPage.title, replyNamePaint, linkPreviewMaxWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, AndroidUtilities.dp(1), false, TextUtils.TruncateAt.END, linkPreviewMaxWidth, 4); } else { restLines = restLinesCount; - titleLayout = generateStaticLayout(webPage.title, replyNamePaint, linkPreviewMaxWidth, linkPreviewMaxWidth - AndroidUtilities.dp(48 + 2), restLinesCount, 4); + titleLayout = generateStaticLayout(webPage.title, replyNamePaint, linkPreviewMaxWidth, linkPreviewMaxWidth - AndroidUtilities.dp(48 + 4), restLinesCount, 4); restLinesCount -= titleLayout.getLineCount(); } int height = titleLayout.getLineBottom(titleLayout.getLineCount() - 1); @@ -949,7 +1482,7 @@ public class ChatMessageCell extends ChatBaseCell { width = (int) Math.ceil(titleLayout.getLineWidth(a)); } if (a < restLines || lineLeft != 0 && isSmallImage) { - width += AndroidUtilities.dp(48 + 2); + width += AndroidUtilities.dp(48 + 4); } maxChildWidth = Math.max(maxChildWidth, width + additinalWidth); maxWebWidth = Math.max(maxWebWidth, width + additinalWidth); @@ -970,7 +1503,7 @@ public class ChatMessageCell extends ChatBaseCell { if (restLinesCount == 3 && (!isSmallImage || webPage.description == null)) { authorLayout = new StaticLayout(webPage.author, replyNamePaint, linkPreviewMaxWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); } else { - authorLayout = generateStaticLayout(webPage.author, replyNamePaint, linkPreviewMaxWidth, linkPreviewMaxWidth - AndroidUtilities.dp(48 + 2), restLinesCount, 1); + authorLayout = generateStaticLayout(webPage.author, replyNamePaint, linkPreviewMaxWidth, linkPreviewMaxWidth - AndroidUtilities.dp(48 + 4), restLinesCount, 1); restLinesCount -= authorLayout.getLineCount(); } int height = authorLayout.getLineBottom(authorLayout.getLineCount() - 1); @@ -1005,7 +1538,7 @@ public class ChatMessageCell extends ChatBaseCell { descriptionLayout = StaticLayoutEx.createStaticLayout(messageObject.linkDescription, replyTextPaint, linkPreviewMaxWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, AndroidUtilities.dp(1), false, TextUtils.TruncateAt.END, linkPreviewMaxWidth, 6); } else { restLines = restLinesCount; - descriptionLayout = generateStaticLayout(messageObject.linkDescription, replyTextPaint, linkPreviewMaxWidth, linkPreviewMaxWidth - AndroidUtilities.dp(48 + 2), restLinesCount, 6); + descriptionLayout = generateStaticLayout(messageObject.linkDescription, replyTextPaint, linkPreviewMaxWidth, linkPreviewMaxWidth - AndroidUtilities.dp(48 + 4), restLinesCount, 6); } int height = descriptionLayout.getLineBottom(descriptionLayout.getLineCount() - 1); linkPreviewHeight += height; @@ -1037,7 +1570,7 @@ public class ChatMessageCell extends ChatBaseCell { width = hasRTL ? descriptionLayout.getWidth() : (int) Math.ceil(descriptionLayout.getLineWidth(a)); } if (a < restLines || restLines != 0 && lineLeft != 0 && isSmallImage) { - width += AndroidUtilities.dp(48 + 2); + width += AndroidUtilities.dp(48 + 4); } if (maxWebWidth < width + additinalWidth) { if (titleIsRTL) { @@ -1071,15 +1604,16 @@ public class ChatMessageCell extends ChatBaseCell { int maxPhotoWidth = smallImage ? AndroidUtilities.dp(48) : linkPreviewMaxWidth; if (webPage.document != null) { - if (MessageObject.isGifDocument(webPage.document)){ + TLRPC.Document document = webPage.document; + if (MessageObject.isGifDocument(document)){ if (!MediaController.getInstance().canAutoplayGifs()) { messageObject.audioProgress = 1; } photoImage.setAllowStartAnimation(messageObject.audioProgress != 1); - currentPhotoObject = webPage.document.thumb; + currentPhotoObject = document.thumb; if (currentPhotoObject != null && (currentPhotoObject.w == 0 || currentPhotoObject.h == 0)) { - for (int a = 0; a < webPage.document.attributes.size(); a++) { - TLRPC.DocumentAttribute attribute = webPage.document.attributes.get(a); + for (int a = 0; a < document.attributes.size(); a++) { + TLRPC.DocumentAttribute attribute = document.attributes.get(a); if (attribute instanceof TLRPC.TL_documentAttributeImageSize || attribute instanceof TLRPC.TL_documentAttributeVideo) { currentPhotoObject.w = attribute.w; currentPhotoObject.h = attribute.h; @@ -1087,23 +1621,85 @@ public class ChatMessageCell extends ChatBaseCell { } } if (currentPhotoObject.w == 0 || currentPhotoObject.h == 0) { - currentPhotoObject.w = currentPhotoObject.h = AndroidUtilities.dp(100); + currentPhotoObject.w = currentPhotoObject.h = AndroidUtilities.dp(150); } } - isDocument = 2; + documentAttachType = DOCUMENT_ATTACH_TYPE_GIF; + } else if (MessageObject.isVideoDocument(document)) { + currentPhotoObject = document.thumb; + if (currentPhotoObject != null && (currentPhotoObject.w == 0 || currentPhotoObject.h == 0)) { + for (int a = 0; a < document.attributes.size(); a++) { + TLRPC.DocumentAttribute attribute = document.attributes.get(a); + if (attribute instanceof TLRPC.TL_documentAttributeVideo) { + currentPhotoObject.w = attribute.w; + currentPhotoObject.h = attribute.h; + break; + } + } + if (currentPhotoObject.w == 0 || currentPhotoObject.h == 0) { + currentPhotoObject.w = currentPhotoObject.h = AndroidUtilities.dp(150); + } + } + createDocumentLayout(0, messageObject); + } else if (MessageObject.isStickerDocument(document)) { + currentPhotoObject = document.thumb; + if (currentPhotoObject != null && (currentPhotoObject.w == 0 || currentPhotoObject.h == 0)) { + for (int a = 0; a < document.attributes.size(); a++) { + TLRPC.DocumentAttribute attribute = document.attributes.get(a); + if (attribute instanceof TLRPC.TL_documentAttributeImageSize) { + currentPhotoObject.w = attribute.w; + currentPhotoObject.h = attribute.h; + break; + } + } + if (currentPhotoObject.w == 0 || currentPhotoObject.h == 0) { + currentPhotoObject.w = currentPhotoObject.h = AndroidUtilities.dp(150); + } + } + documentAttach = document; + documentAttachType = DOCUMENT_ATTACH_TYPE_STICKER; } else { - TLRPC.Document document = messageObject.messageOwner.media.webpage.document; - if (!MessageObject.isStickerDocument(document) && !MessageObject.isVoiceDocument(document)) { - calcBackgroundWidth(maxWidth, timeMore, maxChildWidth); + calcBackgroundWidth(maxWidth, timeMore, maxChildWidth); + if (!MessageObject.isStickerDocument(document)) { if (backgroundWidth < maxWidth + AndroidUtilities.dp(20)) { backgroundWidth = maxWidth + AndroidUtilities.dp(20); } - createDocumentLayout(backgroundWidth - AndroidUtilities.dp(86 + 24 + 58), messageObject); - drawPhotoImage = true; - drawImageButton = true; - photoImage.setImageCoords(0, totalHeight + namesOffset, AndroidUtilities.dp(86), AndroidUtilities.dp(86)); - totalHeight += AndroidUtilities.dp(86); - linkPreviewHeight += AndroidUtilities.dp(86); + if (MessageObject.isVoiceDocument(document)) { + createDocumentLayout(backgroundWidth - AndroidUtilities.dp(10), messageObject); + mediaOffsetY = currentMessageObject.textHeight + AndroidUtilities.dp(8) + linkPreviewHeight; + totalHeight += AndroidUtilities.dp(30 + 14); + linkPreviewHeight += AndroidUtilities.dp(44); + calcBackgroundWidth(maxWidth, timeMore, maxChildWidth); + } else if (MessageObject.isMusicDocument(document)) { + int durationWidth = createDocumentLayout(backgroundWidth - AndroidUtilities.dp(10), messageObject); + mediaOffsetY = currentMessageObject.textHeight + AndroidUtilities.dp(8) + linkPreviewHeight; + totalHeight += AndroidUtilities.dp(42 + 14); + linkPreviewHeight += AndroidUtilities.dp(56); + + maxWidth = maxWidth - AndroidUtilities.dp(86); + maxChildWidth = Math.max(maxChildWidth, durationWidth + additinalWidth + AndroidUtilities.dp(86 + 8)); + if (songLayout != null && songLayout.getLineCount() > 0) { + maxChildWidth = (int) Math.max(maxChildWidth, songLayout.getLineWidth(0) + additinalWidth + AndroidUtilities.dp(86)); + } + if (performerLayout != null && performerLayout.getLineCount() > 0) { + maxChildWidth = (int) Math.max(maxChildWidth, performerLayout.getLineWidth(0) + additinalWidth + AndroidUtilities.dp(86)); + } + + calcBackgroundWidth(maxWidth, timeMore, maxChildWidth); + } else { + createDocumentLayout(backgroundWidth - AndroidUtilities.dp(86 + 24 + 58), messageObject); + drawImageButton = true; + if (drawPhotoImage) { + totalHeight += AndroidUtilities.dp(86 + 14); + linkPreviewHeight += AndroidUtilities.dp(86); + photoImage.setImageCoords(0, totalHeight + namesOffset, AndroidUtilities.dp(86), AndroidUtilities.dp(86)); + } else { + mediaOffsetY = currentMessageObject.textHeight + AndroidUtilities.dp(8) + linkPreviewHeight; + photoImage.setImageCoords(0, totalHeight + namesOffset - AndroidUtilities.dp(14), AndroidUtilities.dp(56), AndroidUtilities.dp(56)); + totalHeight += AndroidUtilities.dp(50 + 14); + linkPreviewHeight += AndroidUtilities.dp(50); + } + } } } } else if (webPage.photo != null) { @@ -1114,14 +1710,22 @@ public class ChatMessageCell extends ChatBaseCell { } } - if (isDocument != 1) { + if (documentAttachType != DOCUMENT_ATTACH_TYPE_MUSIC && documentAttachType != DOCUMENT_ATTACH_TYPE_AUDIO && documentAttachType != DOCUMENT_ATTACH_TYPE_DOCUMENT) { if (currentPhotoObject != null) { - drawImageButton = webPage.type != null && (webPage.type.equals("photo") || webPage.type.equals("document") || webPage.type.equals("gif")); + drawImageButton = webPage.type != null && (webPage.type.equals("photo") || webPage.type.equals("document") && documentAttachType != DOCUMENT_ATTACH_TYPE_STICKER || webPage.type.equals("gif") || documentAttachType == DOCUMENT_ATTACH_TYPE_VIDEO); if (linkPreviewHeight != 0) { linkPreviewHeight += AndroidUtilities.dp(2); totalHeight += AndroidUtilities.dp(2); } + if (documentAttachType == DOCUMENT_ATTACH_TYPE_STICKER) { + if (AndroidUtilities.isTablet()) { + maxPhotoWidth = (int) (AndroidUtilities.getMinTabletSide() * 0.5f); + } else { + maxPhotoWidth = (int) (AndroidUtilities.displaySize.x * 0.5f); + } + } + maxChildWidth = Math.max(maxChildWidth, maxPhotoWidth + additinalWidth); currentPhotoObject.size = -1; if (currentPhotoObjectThumb != null) { @@ -1135,10 +1739,10 @@ public class ChatMessageCell extends ChatBaseCell { } else { width = currentPhotoObject.w; height = currentPhotoObject.h; - float scale = width / (float) maxPhotoWidth; + float scale = width / (float) (maxPhotoWidth - AndroidUtilities.dp(2)); width /= scale; height /= scale; - if (webPage.site_name == null || webPage.site_name != null && !webPage.site_name.toLowerCase().equals("instagram") && isDocument == 0) { + if (webPage.site_name == null || webPage.site_name != null && !webPage.site_name.toLowerCase().equals("instagram") && documentAttachType == 0) { if (height > AndroidUtilities.displaySize.y / 3) { height = AndroidUtilities.displaySize.y / 3; } @@ -1160,12 +1764,12 @@ public class ChatMessageCell extends ChatBaseCell { currentPhotoFilter = String.format(Locale.US, "%d_%d", width, height); currentPhotoFilterThumb = String.format(Locale.US, "%d_%d_b", width, height); - if (isDocument == 2) { - boolean photoExist = true; - File cacheFile = FileLoader.getPathToAttach(webPage.document); - if (!cacheFile.exists()) { - photoExist = false; - } + if (documentAttachType == DOCUMENT_ATTACH_TYPE_STICKER) { + photoImage.setImage(documentAttach, null, currentPhotoFilter, null, currentPhotoObject != null ? currentPhotoObject.location : null, "b1", documentAttach.size, "webp", true); + } else if (documentAttachType == DOCUMENT_ATTACH_TYPE_VIDEO) { + photoImage.setImage(null, null, currentPhotoObject.location, currentPhotoFilter, 0, null, false); + } else if (documentAttachType == DOCUMENT_ATTACH_TYPE_GIF) { + boolean photoExist = messageObject.mediaExists; String fileName = FileLoader.getAttachFileName(webPage.document); if (photoExist || MediaController.getInstance().canDownloadMedia(MediaController.AUTODOWNLOAD_MASK_GIF) || FileLoader.getInstance().isLoadingFile(fileName)) { photoNotSet = false; @@ -1175,11 +1779,7 @@ public class ChatMessageCell extends ChatBaseCell { photoImage.setImage(null, null, currentPhotoObject.location, currentPhotoFilter, 0, null, false); } } else { - boolean photoExist = true; - File cacheFile = FileLoader.getPathToAttach(currentPhotoObject, true); - if (!cacheFile.exists()) { - photoExist = false; - } + boolean photoExist = messageObject.mediaExists; String fileName = FileLoader.getAttachFileName(currentPhotoObject); if (photoExist || MediaController.getInstance().canDownloadMedia(MediaController.AUTODOWNLOAD_MASK_PHOTO) || FileLoader.getInstance().isLoadingFile(fileName)) { photoNotSet = false; @@ -1195,18 +1795,7 @@ public class ChatMessageCell extends ChatBaseCell { } drawPhotoImage = true; - if (webPage.site_name != null) { - if (webPage.site_name.toLowerCase().equals("instagram") && webPage.type != null && webPage.type.equals("video")) { - isInstagram = true; - } - } - if (webPage.type != null && webPage.type.equals("video") && webPage.duration != 0) { - if (durationPaint == null) { - durationPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); - durationPaint.setTextSize(AndroidUtilities.dp(12)); - durationPaint.setColor(0xffffffff); - } int minutes = webPage.duration / 60; int seconds = webPage.duration - minutes * 60; String str = String.format("%d:%02d", minutes, seconds); @@ -1224,10 +1813,90 @@ public class ChatMessageCell extends ChatBaseCell { photoImage.setImageBitmap((Drawable) null); calcBackgroundWidth(maxWidth, timeMore, maxChildWidth); } + } else if (messageObject.type == 12) { + drawName = false; + drawForwardedName = true; + drawPhotoImage = true; + photoImage.setRoundRadius(AndroidUtilities.dp(22)); + if (AndroidUtilities.isTablet()) { + backgroundWidth = Math.min(AndroidUtilities.getMinTabletSide() - AndroidUtilities.dp(isChat && messageObject.isFromUser() && !messageObject.isOutOwner() ? 102 : 50), AndroidUtilities.dp(270)); + } else { + backgroundWidth = Math.min(AndroidUtilities.displaySize.x - AndroidUtilities.dp(isChat && messageObject.isFromUser() && !messageObject.isOutOwner() ? 102 : 50), AndroidUtilities.dp(270)); + } + availableTimeWidth = backgroundWidth - AndroidUtilities.dp(31); + + int uid = messageObject.messageOwner.media.user_id; + TLRPC.User user = MessagesController.getInstance().getUser(uid); + + int maxWidth = getMaxNameWidth() - AndroidUtilities.dp(110); + if (maxWidth < 0) { + maxWidth = AndroidUtilities.dp(10); + } + + TLRPC.FileLocation currentPhoto = null; + if (user != null) { + if (user.photo != null) { + currentPhoto = user.photo.photo_small; + } + avatarDrawable.setInfo(user); + } + photoImage.setImage(currentPhoto, "50_50", user != null ? avatarDrawable : Theme.contactDrawable[messageObject.isOutOwner() ? 1 : 0], null, false); + + String phone = messageObject.messageOwner.media.phone_number; + if (phone != null && phone.length() != 0) { + if (!phone.startsWith("+")) { + phone = "+" + phone; + } + phone = PhoneFormat.getInstance().format(phone); + } else { + phone = LocaleController.getString("NumberUnknown", R.string.NumberUnknown); + } + + CharSequence currentNameString = ContactsController.formatName(messageObject.messageOwner.media.first_name, messageObject.messageOwner.media.last_name).replace('\n', ' '); + if (currentNameString.length() == 0) { + currentNameString = phone; + } + titleLayout = new StaticLayout(TextUtils.ellipsize(currentNameString, contactNamePaint, maxWidth, TextUtils.TruncateAt.END), contactNamePaint, maxWidth + AndroidUtilities.dp(2), Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); + captionLayout = new StaticLayout(TextUtils.ellipsize(phone.replace('\n', ' '), contactPhonePaint, maxWidth, TextUtils.TruncateAt.END), contactPhonePaint, maxWidth + AndroidUtilities.dp(2), Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); + + super.setMessageObject(messageObject); + + if (drawForwardedName && messageObject.isForwarded()) { + namesOffset += AndroidUtilities.dp(5); + } else if (drawNameLayout && messageObject.messageOwner.reply_to_msg_id == 0) { + namesOffset += AndroidUtilities.dp(7); + } + + totalHeight = AndroidUtilities.dp(70) + namesOffset; + } else if (messageObject.type == 2) { + drawForwardedName = true; + if (AndroidUtilities.isTablet()) { + backgroundWidth = Math.min(AndroidUtilities.getMinTabletSide() - AndroidUtilities.dp(isChat && messageObject.isFromUser() && !messageObject.isOutOwner() ? 102 : 50), AndroidUtilities.dp(270)); + } else { + backgroundWidth = Math.min(AndroidUtilities.displaySize.x - AndroidUtilities.dp(isChat && messageObject.isFromUser() && !messageObject.isOutOwner() ? 102 : 50), AndroidUtilities.dp(270)); + } + createDocumentLayout(backgroundWidth, messageObject); + + super.setMessageObject(messageObject); + + totalHeight = AndroidUtilities.dp(70) + namesOffset; + } else if (messageObject.type == 14) { + if (AndroidUtilities.isTablet()) { + backgroundWidth = Math.min(AndroidUtilities.getMinTabletSide() - AndroidUtilities.dp(isChat && messageObject.isFromUser() && !messageObject.isOutOwner() ? 102 : 50), AndroidUtilities.dp(270)); + } else { + backgroundWidth = Math.min(AndroidUtilities.displaySize.x - AndroidUtilities.dp(isChat && messageObject.isFromUser() && !messageObject.isOutOwner() ? 102 : 50), AndroidUtilities.dp(270)); + } + + createDocumentLayout(backgroundWidth, messageObject); + + super.setMessageObject(messageObject); + + totalHeight = AndroidUtilities.dp(82) + namesOffset; } else { drawForwardedName = messageObject.messageOwner.fwd_from != null && messageObject.type != 13; mediaBackground = messageObject.type != 9; drawImageButton = true; + drawPhotoImage = true; int photoWidth = 0; int photoHeight = 0; @@ -1241,62 +1910,61 @@ public class ChatMessageCell extends ChatBaseCell { photoImage.setForcePreview(messageObject.isSecretPhoto()); if (messageObject.type == 9) { - int maxWidth; if (AndroidUtilities.isTablet()) { - maxWidth = AndroidUtilities.getMinTabletSide() - AndroidUtilities.dp(122 + 86 + 24); + backgroundWidth = Math.min(AndroidUtilities.getMinTabletSide() - AndroidUtilities.dp(isChat && messageObject.isFromUser() && !messageObject.isOutOwner() ? 102 : 50), AndroidUtilities.dp(270)); } else { - maxWidth = Math.min(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y) - AndroidUtilities.dp(122 + 86 + 24); + backgroundWidth = Math.min(AndroidUtilities.displaySize.x - AndroidUtilities.dp(isChat && messageObject.isFromUser() && !messageObject.isOutOwner() ? 102 : 50), AndroidUtilities.dp(270)); } if (checkNeedDrawShareButton(messageObject)) { - maxWidth -= AndroidUtilities.dp(20); + backgroundWidth -= AndroidUtilities.dp(20); } - int captionWidth = createDocumentLayout(maxWidth, messageObject); - photoWidth = AndroidUtilities.dp(86); - photoHeight = AndroidUtilities.dp(86); - availableTimeWidth = Math.max(captionWidth, infoWidth) + AndroidUtilities.dp(37); - backgroundWidth = photoWidth + availableTimeWidth + AndroidUtilities.dp(31); + int maxWidth = backgroundWidth - AndroidUtilities.dp(86 + 52); + + createDocumentLayout(maxWidth, messageObject); + if (drawPhotoImage) { + photoWidth = AndroidUtilities.dp(86); + photoHeight = AndroidUtilities.dp(86); + } else { + photoWidth = AndroidUtilities.dp(56); + photoHeight = AndroidUtilities.dp(56); + } + availableTimeWidth = maxWidth; } else if (messageObject.type == 4) { //geo double lat = messageObject.messageOwner.media.geo.lat; double lon = messageObject.messageOwner.media.geo._long; if (messageObject.messageOwner.media.title != null && messageObject.messageOwner.media.title.length() > 0) { - int maxWidth = (AndroidUtilities.isTablet() ? AndroidUtilities.getMinTabletSide() : Math.min(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y)) - AndroidUtilities.dp((isChat && !messageObject.isOutOwner() ? 102 : 40) + 86 + 24); - captionLayout = StaticLayoutEx.createStaticLayout(messageObject.messageOwner.media.title, locationTitlePaint, maxWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false, TextUtils.TruncateAt.END, maxWidth - AndroidUtilities.dp(4), 3); + if (AndroidUtilities.isTablet()) { + backgroundWidth = Math.min(AndroidUtilities.getMinTabletSide() - AndroidUtilities.dp(isChat && messageObject.isFromUser() && !messageObject.isOutOwner() ? 102 : 50), AndroidUtilities.dp(270)); + } else { + backgroundWidth = Math.min(AndroidUtilities.displaySize.x - AndroidUtilities.dp(isChat && messageObject.isFromUser() && !messageObject.isOutOwner() ? 102 : 50), AndroidUtilities.dp(270)); + } + if (checkNeedDrawShareButton(messageObject)) { + backgroundWidth -= AndroidUtilities.dp(20); + } + int maxWidth = backgroundWidth - AndroidUtilities.dp(86 + 37); + + captionLayout = StaticLayoutEx.createStaticLayout(messageObject.messageOwner.media.title, locationTitlePaint, maxWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false, TextUtils.TruncateAt.END, maxWidth, 2); int lineCount = captionLayout.getLineCount(); if (messageObject.messageOwner.media.address != null && messageObject.messageOwner.media.address.length() > 0) { - infoLayout = StaticLayoutEx.createStaticLayout(messageObject.messageOwner.media.address, locationAddressPaint, maxWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false, TextUtils.TruncateAt.END, maxWidth - AndroidUtilities.dp(4), Math.min(3, 4 - lineCount)); + infoLayout = StaticLayoutEx.createStaticLayout(messageObject.messageOwner.media.address, locationAddressPaint, maxWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false, TextUtils.TruncateAt.END, maxWidth, Math.min(3, 3 - lineCount)); } else { infoLayout = null; } mediaBackground = false; - availableTimeWidth = maxWidth - AndroidUtilities.dp(7); - measureTime(messageObject); + availableTimeWidth = maxWidth; photoWidth = AndroidUtilities.dp(86); photoHeight = AndroidUtilities.dp(86); - maxWidth = timeWidth + AndroidUtilities.dp(messageObject.isOutOwner() ? 29 : 9); - for (int a = 0; a < lineCount; a++) { - maxWidth = (int) Math.max(maxWidth, captionLayout.getLineWidth(a) + AndroidUtilities.dp(16)); - } - if (infoLayout != null) { - for (int a = 0; a < infoLayout.getLineCount(); a++) { - maxWidth = (int) Math.max(maxWidth, infoLayout.getLineWidth(a) + AndroidUtilities.dp(16)); - } - } - backgroundWidth = photoWidth + AndroidUtilities.dp(21) + maxWidth; - currentUrl = String.format(Locale.US, "https://maps.googleapis.com/maps/api/staticmap?center=%f,%f&zoom=15&size=72x72&maptype=roadmap&scale=%d&markers=color:red|size:big|%f,%f&sensor=false", lat, lon, Math.min(2, (int) Math.ceil(AndroidUtilities.density)), lat, lon); + currentUrl = String.format(Locale.US, "https://maps.googleapis.com/maps/api/staticmap?center=%f,%f&zoom=15&size=72x72&maptype=roadmap&scale=%d&markers=color:red|size:mid|%f,%f&sensor=false", lat, lon, Math.min(2, (int) Math.ceil(AndroidUtilities.density)), lat, lon); } else { availableTimeWidth = AndroidUtilities.dp(200 - 14); photoWidth = AndroidUtilities.dp(200); photoHeight = AndroidUtilities.dp(100); backgroundWidth = photoWidth + AndroidUtilities.dp(12); - currentUrl = String.format(Locale.US, "https://maps.googleapis.com/maps/api/staticmap?center=%f,%f&zoom=15&size=200x100&maptype=roadmap&scale=%d&markers=color:red|size:big|%f,%f&sensor=false", lat, lon, Math.min(2, (int) Math.ceil(AndroidUtilities.density)), lat, lon); + currentUrl = String.format(Locale.US, "https://maps.googleapis.com/maps/api/staticmap?center=%f,%f&zoom=15&size=200x100&maptype=roadmap&scale=%d&markers=color:red|size:mid|%f,%f&sensor=false", lat, lon, Math.min(2, (int) Math.ceil(AndroidUtilities.density)), lat, lon); } - - photoImage.setNeedsQualityThumb(false); - photoImage.setShouldGenerateQualityThumb(false); - photoImage.setParentMessageObject(null); - photoImage.setImage(currentUrl, null, messageObject.isOutOwner() ? ResourceLoader.geoOutDrawable : ResourceLoader.geoInDrawable, null, 0); + photoImage.setImage(currentUrl, null, messageObject.isOutOwner() ? Theme.geoOutDrawable : Theme.geoInDrawable, null, 0); } else if (messageObject.type == 13) { //webp drawBackground = false; for (int a = 0; a < messageObject.messageOwner.media.document.attributes.size(); a++) { @@ -1321,27 +1989,21 @@ public class ChatMessageCell extends ChatBaseCell { if (photoHeight > maxHeight) { photoWidth *= maxHeight / photoHeight; photoHeight = (int) maxHeight; - } - if (photoWidth > maxWidth) { + } else { photoHeight *= maxWidth / photoWidth; photoWidth = (int) maxWidth; } + documentAttachType = DOCUMENT_ATTACH_TYPE_STICKER; availableTimeWidth = photoWidth - AndroidUtilities.dp(14); backgroundWidth = photoWidth + AndroidUtilities.dp(12); currentPhotoObjectThumb = FileLoader.getClosestPhotoSizeWithSize(messageObject.photoThumbs, 80); - photoImage.setNeedsQualityThumb(false); - photoImage.setShouldGenerateQualityThumb(false); - photoImage.setParentMessageObject(null); - if (messageObject.messageOwner.attachPath != null && messageObject.messageOwner.attachPath.length() > 0) { - File f = new File(messageObject.messageOwner.attachPath); - if (f.exists()) { - photoImage.setImage(null, messageObject.messageOwner.attachPath, - String.format(Locale.US, "%d_%d", photoWidth, photoHeight), - null, - currentPhotoObjectThumb != null ? currentPhotoObjectThumb.location : null, - "b1", - messageObject.messageOwner.media.document.size, "webp", true); - } + if (messageObject.attachPathExists) { + photoImage.setImage(null, messageObject.messageOwner.attachPath, + String.format(Locale.US, "%d_%d", photoWidth, photoHeight), + null, + currentPhotoObjectThumb != null ? currentPhotoObjectThumb.location : null, + "b1", + messageObject.messageOwner.media.document.size, "webp", true); } else if (messageObject.messageOwner.media.document.id != 0) { photoImage.setImage(messageObject.messageOwner.media.document, null, String.format(Locale.US, "%d_%d", photoWidth, photoHeight), @@ -1372,26 +2034,9 @@ public class ChatMessageCell extends ChatBaseCell { if (messageObject.type == 1) { //photo updateSecretTimeText(messageObject); - photoImage.setNeedsQualityThumb(false); - photoImage.setShouldGenerateQualityThumb(false); - photoImage.setParentMessageObject(null); currentPhotoObjectThumb = FileLoader.getClosestPhotoSizeWithSize(messageObject.photoThumbs, 80); } else if (messageObject.type == 3) { //video - int duration = 0; - for (int a = 0; a < messageObject.messageOwner.media.document.attributes.size(); a++) { - TLRPC.DocumentAttribute attribute = messageObject.messageOwner.media.document.attributes.get(a); - if (attribute instanceof TLRPC.TL_documentAttributeVideo) { - duration = attribute.duration; - break; - } - } - int minutes = duration / 60; - int seconds = duration - minutes * 60; - String str = String.format("%d:%02d, %s", minutes, seconds, AndroidUtilities.formatFileSize(messageObject.messageOwner.media.document.size)); - infoOffset = ResourceLoader.videoIconDrawable.getIntrinsicWidth() + AndroidUtilities.dp(4); - infoWidth = (int) Math.ceil(infoPaint.measureText(str)); - infoLayout = new StaticLayout(str, infoPaint, infoWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); - + createDocumentLayout(0, messageObject); photoImage.setNeedsQualityThumb(true); photoImage.setShouldGenerateQualityThumb(true); photoImage.setParentMessageObject(messageObject); @@ -1423,14 +2068,10 @@ public class ChatMessageCell extends ChatBaseCell { w = (int) (currentPhotoObject.w / scale); h = (int) (currentPhotoObject.h / scale); if (w == 0) { - if (messageObject.type == 3) { - w = infoWidth + infoOffset + AndroidUtilities.dp(16); - } else { - w = AndroidUtilities.dp(100); - } + w = AndroidUtilities.dp(150); } if (h == 0) { - h = AndroidUtilities.dp(100); + h = AndroidUtilities.dp(150); } if (h > photoHeight) { float scale2 = h; @@ -1472,7 +2113,12 @@ public class ChatMessageCell extends ChatBaseCell { if (w == 0 || h == 0) { - w = h = AndroidUtilities.dp(100); + w = h = AndroidUtilities.dp(150); + } + if (messageObject.type == 3) { + if (w < infoWidth + AndroidUtilities.dp(16 + 24)) { + w = infoWidth + AndroidUtilities.dp(16 + 24); + } } availableTimeWidth = maxPhotoWidth - AndroidUtilities.dp(14); @@ -1531,15 +2177,13 @@ public class ChatMessageCell extends ChatBaseCell { if (messageObject.type == 1) { if (currentPhotoObject != null) { - String fileName = FileLoader.getAttachFileName(currentPhotoObject); boolean photoExist = true; - File cacheFile = FileLoader.getPathToMessage(messageObject.messageOwner); - if (!cacheFile.exists()) { - photoExist = false; - } else { + String fileName = FileLoader.getAttachFileName(currentPhotoObject); + if (messageObject.mediaExists) { MediaController.getInstance().removeLoadingFileObserver(this); + } else { + photoExist = false; } - if (photoExist || MediaController.getInstance().canDownloadMedia(MediaController.AUTODOWNLOAD_MASK_PHOTO) || FileLoader.getInstance().isLoadingFile(fileName)) { if (allowedToSetPhoto || ImageLoader.getInstance().getImageFromMemory(currentPhotoObject.location, null, currentPhotoFilter) != null) { allowedToSetPhoto = true; @@ -1562,26 +2206,16 @@ public class ChatMessageCell extends ChatBaseCell { } } else if (messageObject.type == 8) { String fileName = FileLoader.getAttachFileName(messageObject.messageOwner.media.document); - File cacheFile = null; - boolean localFile = false; - if (messageObject.messageOwner.attachPath != null && messageObject.messageOwner.attachPath.length() != 0) { - cacheFile = new File(messageObject.messageOwner.attachPath); - if (!cacheFile.exists()) { - cacheFile = null; - } else { - MediaController.getInstance().removeLoadingFileObserver(this); - localFile = true; - } + int localFile = 0; + if (messageObject.attachPathExists) { + MediaController.getInstance().removeLoadingFileObserver(this); + localFile = 1; + } else if (messageObject.mediaExists) { + localFile = 2; } - if (cacheFile == null) { - cacheFile = FileLoader.getPathToMessage(messageObject.messageOwner); - if (!cacheFile.exists()) { - cacheFile = null; - } - } - if (!messageObject.isSending() && (cacheFile != null || MediaController.getInstance().canDownloadMedia(MediaController.AUTODOWNLOAD_MASK_GIF) && MessageObject.isNewGifDocument(messageObject.messageOwner.media.document) || FileLoader.getInstance().isLoadingFile(fileName))) { - if (localFile) { - photoImage.setImage(null, messageObject.isSendError() ? null : cacheFile.getAbsolutePath(), null, null, currentPhotoObject != null ? currentPhotoObject.location : null, currentPhotoFilter, 0, null, false); + if (!messageObject.isSending() && (localFile != 0 || MediaController.getInstance().canDownloadMedia(MediaController.AUTODOWNLOAD_MASK_GIF) && MessageObject.isNewGifDocument(messageObject.messageOwner.media.document) || FileLoader.getInstance().isLoadingFile(fileName))) { + if (localFile == 1) { + photoImage.setImage(null, messageObject.isSendError() ? null : messageObject.messageOwner.attachPath, null, null, currentPhotoObject != null ? currentPhotoObject.location : null, currentPhotoFilter, 0, null, false); } else { photoImage.setImage(messageObject.messageOwner.media.document, null, currentPhotoObject != null ? currentPhotoObject.location : null, currentPhotoFilter, messageObject.messageOwner.media.document.size, null, false); } @@ -1597,23 +2231,81 @@ public class ChatMessageCell extends ChatBaseCell { if (drawForwardedName) { namesOffset += AndroidUtilities.dp(5); - } else if (drawName && messageObject.messageOwner.reply_to_msg_id == 0) { + } else if (drawNameLayout && messageObject.messageOwner.reply_to_msg_id == 0) { namesOffset += AndroidUtilities.dp(7); } invalidate(); - drawPhotoImage = true; photoImage.setImageCoords(0, AndroidUtilities.dp(7) + namesOffset, photoWidth, photoHeight); totalHeight = photoHeight + AndroidUtilities.dp(14) + namesOffset + additionHeight; } + + botButtons.clear(); + if (messageIdChanged) { + botButtonsByData.clear(); + } + if (messageObject.messageOwner.reply_markup instanceof TLRPC.TL_replyInlineMarkup) { + int rows = messageObject.messageOwner.reply_markup.rows.size(); + substractBackgroundHeight = keyboardHeight = AndroidUtilities.dp(44 + 4) * rows + AndroidUtilities.dp(1); + + widthForButtons = backgroundWidth; + boolean fullWidth = false; + if (messageObject.wantedBotKeyboardWidth > widthForButtons) { + int maxButtonWidth = -AndroidUtilities.dp(isChat && messageObject.isFromUser() && !messageObject.isOutOwner() ? 62 : 10); + if (AndroidUtilities.isTablet()) { + maxButtonWidth += AndroidUtilities.getMinTabletSide(); + } else { + maxButtonWidth += Math.min(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y); + } + widthForButtons = Math.max(backgroundWidth, Math.min(messageObject.wantedBotKeyboardWidth, maxButtonWidth)); + fullWidth = true; + } + + int maxButtonsWidth = 0; + for (int a = 0; a < rows; a++) { + TLRPC.TL_keyboardButtonRow row = messageObject.messageOwner.reply_markup.rows.get(a); + int buttonsCount = row.buttons.size(); + int buttonWidth = (widthForButtons - (AndroidUtilities.dp(5) * (buttonsCount - 1)) - AndroidUtilities.dp(!fullWidth && mediaBackground ? 0 : 9) - AndroidUtilities.dp(2)) / buttonsCount; + for (int b = 0; b < row.buttons.size(); b++) { + BotButton botButton = new BotButton(); + botButton.button = row.buttons.get(b); + String key = Utilities.bytesToHex(botButton.button.data); + BotButton oldButton = botButtonsByData.get(key); + if (oldButton != null) { + botButton.progressAlpha = oldButton.progressAlpha; + botButton.angle = oldButton.angle; + botButton.lastUpdateTime = oldButton.lastUpdateTime; + } else { + botButton.lastUpdateTime = System.currentTimeMillis(); + } + botButtonsByData.put(key, botButton); + botButton.x = b * (buttonWidth + AndroidUtilities.dp(5)); + botButton.y = a * AndroidUtilities.dp(44 + 4) + AndroidUtilities.dp(5); + botButton.width = buttonWidth; + botButton.height = AndroidUtilities.dp(44); + CharSequence caption = Emoji.replaceEmoji(botButton.button.text, botButtonPaint.getFontMetricsInt(), AndroidUtilities.dp(15), false); + caption = TextUtils.ellipsize(caption, botButtonPaint, buttonWidth - AndroidUtilities.dp(10), TextUtils.TruncateAt.END); + botButton.caption = new StaticLayout(caption, botButtonPaint, buttonWidth - AndroidUtilities.dp(10), Layout.Alignment.ALIGN_CENTER, 1.0f, 0.0f, false); + botButtons.add(botButton); + if (b == row.buttons.size() - 1) { + maxButtonsWidth = Math.max(maxButtonsWidth, botButton.x + botButton.width); + } + } + } + widthForButtons = maxButtonsWidth; + } else { + substractBackgroundHeight = 0; + keyboardHeight = 0; + } } + updateWaveform(); updateButtonState(dataChanged); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec), totalHeight); + setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec), totalHeight + keyboardHeight); } @Override @@ -1621,13 +2313,92 @@ public class ChatMessageCell extends ChatBaseCell { super.onLayout(changed, left, top, right, bottom); if (currentMessageObject.type == 0) { + textY = AndroidUtilities.dp(10) + namesOffset; + } + if (documentAttachType == DOCUMENT_ATTACH_TYPE_AUDIO) { if (currentMessageObject.isOutOwner()) { - textX = layoutWidth - backgroundWidth + AndroidUtilities.dp(10); - textY = AndroidUtilities.dp(10) + namesOffset; + seekBarX = layoutWidth - backgroundWidth + AndroidUtilities.dp(57); + buttonX = layoutWidth - backgroundWidth + AndroidUtilities.dp(14); + timeAudioX = layoutWidth - backgroundWidth + AndroidUtilities.dp(67); } else { - textX = AndroidUtilities.dp(19) + (isChat && currentMessageObject.isFromUser() ? AndroidUtilities.dp(52) : 0); - textY = AndroidUtilities.dp(10) + namesOffset; + if (isChat && currentMessageObject.isFromUser()) { + seekBarX = AndroidUtilities.dp(114); + buttonX = AndroidUtilities.dp(71); + timeAudioX = AndroidUtilities.dp(124); + } else { + seekBarX = AndroidUtilities.dp(66); + buttonX = AndroidUtilities.dp(23); + timeAudioX = AndroidUtilities.dp(76); + } } + if (hasLinkPreview) { + seekBarX += AndroidUtilities.dp(10); + buttonX += AndroidUtilities.dp(10); + timeAudioX += AndroidUtilities.dp(10); + } + seekBarWaveform.setSize(backgroundWidth - AndroidUtilities.dp(92 + (hasLinkPreview ? 10 : 0)), AndroidUtilities.dp(30)); + seekBar.setSize(backgroundWidth - AndroidUtilities.dp(72 + (hasLinkPreview ? 10 : 0)), AndroidUtilities.dp(30)); + seekBarY = AndroidUtilities.dp(13) + namesOffset + mediaOffsetY; + buttonY = AndroidUtilities.dp(13) + namesOffset + mediaOffsetY; + radialProgress.setProgressRect(buttonX, buttonY, buttonX + AndroidUtilities.dp(44), buttonY + AndroidUtilities.dp(44)); + + updateAudioProgress(); + } else if (documentAttachType == DOCUMENT_ATTACH_TYPE_MUSIC) { + if (currentMessageObject.isOutOwner()) { + seekBarX = layoutWidth - backgroundWidth + AndroidUtilities.dp(56); + buttonX = layoutWidth - backgroundWidth + AndroidUtilities.dp(14); + timeAudioX = layoutWidth - backgroundWidth + AndroidUtilities.dp(67); + } else { + if (isChat && currentMessageObject.isFromUser()) { + seekBarX = AndroidUtilities.dp(113); + buttonX = AndroidUtilities.dp(71); + timeAudioX = AndroidUtilities.dp(124); + } else { + seekBarX = AndroidUtilities.dp(65); + buttonX = AndroidUtilities.dp(23); + timeAudioX = AndroidUtilities.dp(76); + } + } + if (hasLinkPreview) { + seekBarX += AndroidUtilities.dp(10); + buttonX += AndroidUtilities.dp(10); + timeAudioX += AndroidUtilities.dp(10); + } + seekBar.setSize(backgroundWidth - AndroidUtilities.dp(65 + (hasLinkPreview ? 10 : 0)), AndroidUtilities.dp(30)); + seekBarY = AndroidUtilities.dp(29) + namesOffset + mediaOffsetY; + buttonY = AndroidUtilities.dp(13) + namesOffset + mediaOffsetY; + radialProgress.setProgressRect(buttonX, buttonY, buttonX + AndroidUtilities.dp(44), buttonY + AndroidUtilities.dp(44)); + + updateAudioProgress(); + } else if (documentAttachType == DOCUMENT_ATTACH_TYPE_DOCUMENT && !drawPhotoImage) { + if (currentMessageObject.isOutOwner()) { + buttonX = layoutWidth - backgroundWidth + AndroidUtilities.dp(14); + } else { + if (isChat && currentMessageObject.isFromUser()) { + buttonX = AndroidUtilities.dp(71); + } else { + buttonX = AndroidUtilities.dp(23); + } + } + if (hasLinkPreview) { + buttonX += AndroidUtilities.dp(10); + } + buttonY = AndroidUtilities.dp(13) + namesOffset + mediaOffsetY; + radialProgress.setProgressRect(buttonX, buttonY, buttonX + AndroidUtilities.dp(44), buttonY + AndroidUtilities.dp(44)); + photoImage.setImageCoords(buttonX - AndroidUtilities.dp(10), buttonY - AndroidUtilities.dp(10), photoImage.getImageWidth(), photoImage.getImageHeight()); + } else if (currentMessageObject.type == 12) { + int x; + + if (currentMessageObject.isOutOwner()) { + x = layoutWidth - backgroundWidth + AndroidUtilities.dp(14); + } else { + if (isChat && currentMessageObject.isFromUser()) { + x = AndroidUtilities.dp(72); + } else { + x = AndroidUtilities.dp(23); + } + } + photoImage.setImageCoords(x, AndroidUtilities.dp(13) + namesOffset, AndroidUtilities.dp(44), AndroidUtilities.dp(44)); } else { int x; if (currentMessageObject.isOutOwner()) { @@ -1638,7 +2409,7 @@ public class ChatMessageCell extends ChatBaseCell { } } else { if (isChat && currentMessageObject.isFromUser()) { - x = AndroidUtilities.dp(67); + x = AndroidUtilities.dp(63); } else { x = AndroidUtilities.dp(15); } @@ -1652,22 +2423,29 @@ public class ChatMessageCell extends ChatBaseCell { } @Override - protected void onAfterBackgroundDraw(Canvas canvas) { + protected void drawContent(Canvas canvas) { + + if (needNewVisiblePart && currentMessageObject.type == 0) { + getLocalVisibleRect(scrollRect); + setVisiblePart(scrollRect.top, scrollRect.bottom - scrollRect.top); + needNewVisiblePart = false; + } photoImage.setPressed(isDrawSelectedBackground()); photoImage.setVisible(!PhotoViewer.getInstance().isShowingImage(currentMessageObject), false); radialProgress.setHideCurrentDrawable(false); + radialProgress.setProgressColor(Theme.MSG_MEDIA_PROGRESS_COLOR); boolean imageDrawn = false; if (currentMessageObject.type == 0 && currentMessageObject.textLayoutBlocks != null && !currentMessageObject.textLayoutBlocks.isEmpty()) { if (currentMessageObject.isOutOwner()) { - textX = layoutWidth - backgroundWidth + AndroidUtilities.dp(10); - textY = AndroidUtilities.dp(10) + namesOffset; + textX = currentBackgroundDrawable.getBounds().left + AndroidUtilities.dp(11); } else { - textX = AndroidUtilities.dp(19) + (isChat && currentMessageObject.isFromUser() ? AndroidUtilities.dp(52) : 0); - textY = AndroidUtilities.dp(10) + namesOffset; + textX = currentBackgroundDrawable.getBounds().left + AndroidUtilities.dp(17); } + textY = AndroidUtilities.dp(10) + namesOffset; + if (firstVisibleBlockNum >= 0) { for (int a = firstVisibleBlockNum; a <= lastVisibleBlockNum; a++) { if (a >= currentMessageObject.textLayoutBlocks.size()) { @@ -1677,7 +2455,9 @@ public class ChatMessageCell extends ChatBaseCell { canvas.save(); canvas.translate(textX - (int) Math.ceil(block.textXOffset), textY + block.textYOffset); if (pressedLink != null && a == linkBlockNum) { - canvas.drawPath(urlPath, urlPaint); + for (int b = 0; b < urlPath.size(); b++) { + canvas.drawPath(urlPath.get(b), urlPaint); + } } try { block.textLayout.draw(canvas); @@ -1690,29 +2470,31 @@ public class ChatMessageCell extends ChatBaseCell { if (hasLinkPreview) { int startY = textY + currentMessageObject.textHeight + AndroidUtilities.dp(8); + int linkX = textX + AndroidUtilities.dp(1); int linkPreviewY = startY; int smallImageStartY = 0; - replyLinePaint.setColor(currentMessageObject.isOutOwner() ? 0xff8dc97a : 0xff6c9fd2); + replyLinePaint.setColor(currentMessageObject.isOutOwner() ? Theme.MSG_OUT_WEB_PREVIEW_LINE_COLOR : Theme.MSG_IN_WEB_PREVIEW_LINE_COLOR); - canvas.drawRect(textX, linkPreviewY - AndroidUtilities.dp(3), textX + AndroidUtilities.dp(2), linkPreviewY + linkPreviewHeight + AndroidUtilities.dp(3), replyLinePaint); + canvas.drawRect(linkX, linkPreviewY - AndroidUtilities.dp(3), linkX + AndroidUtilities.dp(2), linkPreviewY + linkPreviewHeight + AndroidUtilities.dp(3), replyLinePaint); - if (sitecaptionLayout != null) { - replyNamePaint.setColor(currentMessageObject.isOutOwner() ? 0xff70b15c : 0xff4b91cf); + if (siteCaptionLayout != null) { + replyNamePaint.setColor(currentMessageObject.isOutOwner() ? Theme.MSG_OUT_SITE_NAME_TEXT_COLOR : Theme.MSG_IN_SITE_NAME_TEXT_COLOR); canvas.save(); - canvas.translate(textX + AndroidUtilities.dp(10), linkPreviewY - AndroidUtilities.dp(3)); - sitecaptionLayout.draw(canvas); + canvas.translate(linkX + AndroidUtilities.dp(10), linkPreviewY - AndroidUtilities.dp(3)); + siteCaptionLayout.draw(canvas); canvas.restore(); - linkPreviewY += sitecaptionLayout.getLineBottom(sitecaptionLayout.getLineCount() - 1); + linkPreviewY += siteCaptionLayout.getLineBottom(siteCaptionLayout.getLineCount() - 1); } + replyNamePaint.setColor(Theme.MSG_TEXT_COLOR); + replyTextPaint.setColor(Theme.MSG_TEXT_COLOR); if (titleLayout != null) { if (linkPreviewY != startY) { linkPreviewY += AndroidUtilities.dp(2); } - replyNamePaint.setColor(0xff000000); smallImageStartY = linkPreviewY - AndroidUtilities.dp(1); canvas.save(); - canvas.translate(textX + AndroidUtilities.dp(10) + titleX, linkPreviewY - AndroidUtilities.dp(3)); + canvas.translate(linkX + AndroidUtilities.dp(10) + titleX, linkPreviewY - AndroidUtilities.dp(3)); titleLayout.draw(canvas); canvas.restore(); linkPreviewY += titleLayout.getLineBottom(titleLayout.getLineCount() - 1); @@ -1725,9 +2507,8 @@ public class ChatMessageCell extends ChatBaseCell { if (smallImageStartY == 0) { smallImageStartY = linkPreviewY - AndroidUtilities.dp(1); } - replyNamePaint.setColor(0xff000000); canvas.save(); - canvas.translate(textX + AndroidUtilities.dp(10) + authorX, linkPreviewY - AndroidUtilities.dp(3)); + canvas.translate(linkX + AndroidUtilities.dp(10) + authorX, linkPreviewY - AndroidUtilities.dp(3)); authorLayout.draw(canvas); canvas.restore(); linkPreviewY += authorLayout.getLineBottom(authorLayout.getLineCount() - 1); @@ -1740,12 +2521,13 @@ public class ChatMessageCell extends ChatBaseCell { if (smallImageStartY == 0) { smallImageStartY = linkPreviewY - AndroidUtilities.dp(1); } - replyTextPaint.setColor(0xff000000); descriptionY = linkPreviewY - AndroidUtilities.dp(3); canvas.save(); - canvas.translate(textX + AndroidUtilities.dp(10) + descriptionX, descriptionY); + canvas.translate(linkX + AndroidUtilities.dp(10) + descriptionX, descriptionY); if (pressedLink != null && linkBlockNum == -10) { - canvas.drawPath(urlPath, urlPaint); + for (int b = 0; b < urlPath.size(); b++) { + canvas.drawPath(urlPath.get(b), urlPaint); + } } descriptionLayout.draw(canvas); canvas.restore(); @@ -1758,9 +2540,9 @@ public class ChatMessageCell extends ChatBaseCell { } if (isSmallImage) { - photoImage.setImageCoords(textX + backgroundWidth - AndroidUtilities.dp(77), smallImageStartY, photoImage.getImageWidth(), photoImage.getImageHeight()); + photoImage.setImageCoords(linkX + backgroundWidth - AndroidUtilities.dp(81), smallImageStartY, photoImage.getImageWidth(), photoImage.getImageHeight()); } else { - photoImage.setImageCoords(textX + AndroidUtilities.dp(10), linkPreviewY, photoImage.getImageWidth(), photoImage.getImageHeight()); + photoImage.setImageCoords(linkX + AndroidUtilities.dp(10), linkPreviewY, photoImage.getImageWidth(), photoImage.getImageHeight()); if (drawImageButton) { int size = AndroidUtilities.dp(48); buttonX = (int) (photoImage.getImageX() + (photoImage.getImageWidth() - size) / 2.0f); @@ -1770,18 +2552,11 @@ public class ChatMessageCell extends ChatBaseCell { } imageDrawn = photoImage.draw(canvas); - if (isInstagram && igvideoDrawable != null) { - int x = photoImage.getImageX() + photoImage.getImageWidth() - igvideoDrawable.getIntrinsicWidth() - AndroidUtilities.dp(4); - int y = photoImage.getImageY() + AndroidUtilities.dp(4); - igvideoDrawable.setBounds(x, y, x + igvideoDrawable.getIntrinsicWidth(), y + igvideoDrawable.getIntrinsicHeight()); - igvideoDrawable.draw(canvas); - } - if (durationLayout != null) { int x = photoImage.getImageX() + photoImage.getImageWidth() - AndroidUtilities.dp(8) - durationWidth; int y = photoImage.getImageY() + photoImage.getImageHeight() - AndroidUtilities.dp(19); - ResourceLoader.mediaBackgroundDrawable.setBounds(x - AndroidUtilities.dp(4), y - AndroidUtilities.dp(1.5f), x + durationWidth + AndroidUtilities.dp(4), y + AndroidUtilities.dp(14.5f)); - ResourceLoader.mediaBackgroundDrawable.draw(canvas); + Theme.timeBackgroundDrawable.setBounds(x - AndroidUtilities.dp(4), y - AndroidUtilities.dp(1.5f), x + durationWidth + AndroidUtilities.dp(4), y + AndroidUtilities.dp(14.5f)); + Theme.timeBackgroundDrawable.draw(canvas); canvas.save(); canvas.translate(x, y); @@ -1791,24 +2566,23 @@ public class ChatMessageCell extends ChatBaseCell { } } drawTime = true; - } else { + } else if (drawPhotoImage) { imageDrawn = photoImage.draw(canvas); drawTime = photoImage.getVisible(); - radialProgress.setProgressColor(0xffffffff); } if (buttonState == -1 && currentMessageObject.isSecretPhoto()) { - int drawable = 5; + int drawable = 4; if (currentMessageObject.messageOwner.destroyTime != 0) { if (currentMessageObject.isOutOwner()) { - drawable = 7; - } else { drawable = 6; + } else { + drawable = 5; } } - setDrawableBounds(ResourceLoader.buttonStatesDrawables[drawable], buttonX, buttonY); - ResourceLoader.buttonStatesDrawables[drawable].setAlpha((int) (255 * (1.0f - radialProgress.getAlpha()))); - ResourceLoader.buttonStatesDrawables[drawable].draw(canvas); + setDrawableBounds(Theme.photoStatesDrawables[drawable][buttonPressed], buttonX, buttonY); + Theme.photoStatesDrawables[drawable][buttonPressed].setAlpha((int) (255 * (1.0f - radialProgress.getAlpha()))); + Theme.photoStatesDrawables[drawable][buttonPressed].draw(canvas); if (!currentMessageObject.isOutOwner() && currentMessageObject.messageOwner.destroyTime != 0) { long msTime = System.currentTimeMillis() + ConnectionsManager.getInstance().getTimeDifference() * 1000; float progress = Math.max(0, (long) currentMessageObject.messageOwner.destroyTime * 1000 - msTime) / (currentMessageObject.messageOwner.ttl * 1000.0f); @@ -1821,12 +2595,91 @@ public class ChatMessageCell extends ChatBaseCell { } } - if (currentMessageObject.type == 1 || currentMessageObject.type == 3) { + if (documentAttachType == DOCUMENT_ATTACH_TYPE_MUSIC) { + if (currentMessageObject.isOutOwner()) { + audioTitlePaint.setColor(Theme.MSG_OUT_AUDIO_TITLE_TEXT_COLOR); + audioPerformerPaint.setColor(Theme.MSG_OUT_AUDIO_PERFORMER_TEXT_COLOR); + audioTimePaint.setColor(Theme.MSG_OUT_AUDIO_DURATION_TEXT_COLOR); + radialProgress.setProgressColor(isDrawSelectedBackground() || buttonPressed != 0 ? Theme.MSG_OUT_AUDIO_SELECTED_PROGRESS_COLOR : Theme.MSG_OUT_AUDIO_PROGRESS_COLOR); + } else { + audioTitlePaint.setColor(Theme.MSG_IN_AUDIO_TITLE_TEXT_COLOR); + audioPerformerPaint.setColor(Theme.MSG_IN_AUDIO_PERFORMER_TEXT_COLOR); + audioTimePaint.setColor(Theme.MSG_IN_AUDIO_DURATION_TEXT_COLOR); + radialProgress.setProgressColor(isDrawSelectedBackground() || buttonPressed != 0 ? Theme.MSG_IN_AUDIO_SELECTED_PROGRESS_COLOR : Theme.MSG_IN_AUDIO_PROGRESS_COLOR); + } + radialProgress.draw(canvas); + + canvas.save(); + canvas.translate(timeAudioX + songX, AndroidUtilities.dp(13) + namesOffset + mediaOffsetY); + songLayout.draw(canvas); + canvas.restore(); + + canvas.save(); + if (MediaController.getInstance().isPlayingAudio(currentMessageObject)) { + canvas.translate(seekBarX, seekBarY); + seekBar.draw(canvas); + } else { + canvas.translate(timeAudioX + performerX, AndroidUtilities.dp(35) + namesOffset + mediaOffsetY); + performerLayout.draw(canvas); + } + canvas.restore(); + + canvas.save(); + canvas.translate(timeAudioX, AndroidUtilities.dp(57) + namesOffset + mediaOffsetY); + timeLayout.draw(canvas); + canvas.restore(); + + Drawable menuDrawable; + if (currentMessageObject.isOutOwner()) { + menuDrawable = Theme.docMenuDrawable[1]; + } else { + menuDrawable = Theme.docMenuDrawable[isDrawSelectedBackground() ? 2 : 0]; + } + setDrawableBounds(menuDrawable, otherX = buttonX + backgroundWidth - AndroidUtilities.dp(currentMessageObject.type == 0 ? 58 : 48), otherY = buttonY - AndroidUtilities.dp(5)); + menuDrawable.draw(canvas); + } else if (documentAttachType == DOCUMENT_ATTACH_TYPE_AUDIO) { + if (currentMessageObject.isOutOwner()) { + audioTimePaint.setColor(isDrawSelectedBackground() ? Theme.MSG_OUT_AUDIO_DURATION_SELECTED_TEXT_COLOR : Theme.MSG_OUT_AUDIO_DURATION_TEXT_COLOR); + radialProgress.setProgressColor(isDrawSelectedBackground() || buttonPressed != 0 ? Theme.MSG_OUT_AUDIO_SELECTED_PROGRESS_COLOR : Theme.MSG_OUT_AUDIO_PROGRESS_COLOR); + } else { + audioTimePaint.setColor(isDrawSelectedBackground() ? Theme.MSG_IN_AUDIO_DURATION_SELECTED_TEXT_COLOR : Theme.MSG_IN_AUDIO_DURATION_TEXT_COLOR); + radialProgress.setProgressColor(isDrawSelectedBackground() || buttonPressed != 0 ? Theme.MSG_IN_AUDIO_SELECTED_PROGRESS_COLOR : Theme.MSG_IN_AUDIO_PROGRESS_COLOR); + } + radialProgress.draw(canvas); + + canvas.save(); + if (useSeekBarWaweform) { + canvas.translate(seekBarX + AndroidUtilities.dp(13), seekBarY); + seekBarWaveform.draw(canvas); + } else { + canvas.translate(seekBarX, seekBarY); + seekBar.draw(canvas); + } + canvas.restore(); + + canvas.save(); + canvas.translate(timeAudioX, AndroidUtilities.dp(44) + namesOffset + mediaOffsetY); + timeLayout.draw(canvas); + canvas.restore(); + + if (currentMessageObject.type != 0 && currentMessageObject.messageOwner.to_id.channel_id == 0 && currentMessageObject.isContentUnread()) { + docBackPaint.setColor(currentMessageObject.isOutOwner() ? Theme.MSG_OUT_VOICE_SEEKBAR_FILL_COLOR : Theme.MSG_IN_VOICE_SEEKBAR_FILL_COLOR); + canvas.drawCircle(timeAudioX + timeWidthAudio + AndroidUtilities.dp(6), AndroidUtilities.dp(51) + namesOffset + mediaOffsetY, AndroidUtilities.dp(3), docBackPaint); + } + } + if (currentMessageObject.type == 1 || documentAttachType == DOCUMENT_ATTACH_TYPE_VIDEO) { + if (documentAttachType == DOCUMENT_ATTACH_TYPE_VIDEO) { + setDrawableBounds(Theme.docMenuDrawable[3], otherX = photoImage.getImageX() + photoImage.getImageWidth() - AndroidUtilities.dp(14), otherY = photoImage.getImageY() + AndroidUtilities.dp(8.1f)); + Theme.docMenuDrawable[3].draw(canvas); + } + if (captionLayout != null) { canvas.save(); canvas.translate(captionX = photoImage.getImageX() + AndroidUtilities.dp(5), captionY = photoImage.getImageY() + photoImage.getImageHeight() + AndroidUtilities.dp(6)); if (pressedLink != null) { - canvas.drawPath(urlPath, urlPaint); + for (int b = 0; b < urlPath.size(); b++) { + canvas.drawPath(urlPath.get(b), urlPaint); + } } try { captionLayout.draw(canvas); @@ -1836,32 +2689,33 @@ public class ChatMessageCell extends ChatBaseCell { canvas.restore(); } if (infoLayout != null && (buttonState == 1 || buttonState == 0 || buttonState == 3 || currentMessageObject.isSecretPhoto())) { - infoPaint.setColor(0xffffffff); - setDrawableBounds(ResourceLoader.mediaBackgroundDrawable, photoImage.getImageX() + AndroidUtilities.dp(4), photoImage.getImageY() + AndroidUtilities.dp(4), infoWidth + AndroidUtilities.dp(8) + infoOffset, AndroidUtilities.dp(16.5f)); - ResourceLoader.mediaBackgroundDrawable.draw(canvas); - - if (currentMessageObject.type == 3) { - setDrawableBounds(ResourceLoader.videoIconDrawable, photoImage.getImageX() + AndroidUtilities.dp(8), photoImage.getImageY() + AndroidUtilities.dp(7.5f)); - ResourceLoader.videoIconDrawable.draw(canvas); - } + infoPaint.setColor(Theme.MSG_MEDIA_INFO_TEXT_COLOR); + setDrawableBounds(Theme.timeBackgroundDrawable, photoImage.getImageX() + AndroidUtilities.dp(4), photoImage.getImageY() + AndroidUtilities.dp(4), infoWidth + AndroidUtilities.dp(8), AndroidUtilities.dp(16.5f)); + Theme.timeBackgroundDrawable.draw(canvas); canvas.save(); - canvas.translate(photoImage.getImageX() + AndroidUtilities.dp(8) + infoOffset, photoImage.getImageY() + AndroidUtilities.dp(5.5f)); + canvas.translate(photoImage.getImageX() + AndroidUtilities.dp(8), photoImage.getImageY() + AndroidUtilities.dp(5.5f)); infoLayout.draw(canvas); canvas.restore(); } } else if (currentMessageObject.type == 4) { if (captionLayout != null) { - locationAddressPaint.setColor(currentMessageObject.isOutOwner() ? 0xff70b15c : (isDrawSelectedBackground() ? 0xff89b4c1 : 0xff999999)); + if (currentMessageObject.isOutOwner()) { + locationTitlePaint.setColor(Theme.MSG_OUT_VENUE_NAME_TEXT_COLOR); + locationAddressPaint.setColor(isDrawSelectedBackground() ? Theme.MSG_OUT_VENUE_INFO_SELECTED_TEXT_COLOR : Theme.MSG_OUT_VENUE_INFO_TEXT_COLOR); + } else { + locationTitlePaint.setColor(Theme.MSG_IN_VENUE_NAME_TEXT_COLOR); + locationAddressPaint.setColor(isDrawSelectedBackground() ? Theme.MSG_IN_VENUE_INFO_SELECTED_TEXT_COLOR : Theme.MSG_IN_VENUE_INFO_TEXT_COLOR); + } canvas.save(); - canvas.translate(nameOffsetX + photoImage.getImageX() + photoImage.getImageWidth() + AndroidUtilities.dp(10), photoImage.getImageY() + AndroidUtilities.dp(3)); + canvas.translate(nameOffsetX + photoImage.getImageX() + photoImage.getImageWidth() + AndroidUtilities.dp(10), photoImage.getImageY() + AndroidUtilities.dp(8)); captionLayout.draw(canvas); canvas.restore(); if (infoLayout != null) { canvas.save(); - canvas.translate(photoImage.getImageX() + photoImage.getImageWidth() + AndroidUtilities.dp(10), photoImage.getImageY() + AndroidUtilities.dp(captionLayout.getLineCount() * 16 + 5)); + canvas.translate(photoImage.getImageX() + photoImage.getImageWidth() + AndroidUtilities.dp(10), photoImage.getImageY() + captionLayout.getLineBottom(captionLayout.getLineCount() - 1) + AndroidUtilities.dp(13)); infoLayout.draw(canvas); canvas.restore(); } @@ -1871,7 +2725,9 @@ public class ChatMessageCell extends ChatBaseCell { canvas.save(); canvas.translate(captionX = photoImage.getImageX() + AndroidUtilities.dp(5), captionY = photoImage.getImageY() + photoImage.getImageHeight() + AndroidUtilities.dp(6)); if (pressedLink != null) { - canvas.drawPath(urlPath, urlPaint); + for (int b = 0; b < urlPath.size(); b++) { + canvas.drawPath(urlPath.get(b), urlPaint); + } } try { captionLayout.draw(canvas); @@ -1880,76 +2736,103 @@ public class ChatMessageCell extends ChatBaseCell { } canvas.restore(); } - } else if (captionLayout != null) { - canvas.save(); - canvas.translate(nameOffsetX + photoImage.getImageX() + photoImage.getImageWidth() + AndroidUtilities.dp(10), photoImage.getImageY() + AndroidUtilities.dp(8)); - captionLayout.draw(canvas); - canvas.restore(); - - try { - if (infoLayout != null) { - canvas.save(); - canvas.translate(photoImage.getImageX() + photoImage.getImageWidth() + AndroidUtilities.dp(10), photoImage.getImageY() + captionLayout.getLineBottom(captionLayout.getLineCount() - 1) + AndroidUtilities.dp(10)); - infoLayout.draw(canvas); - canvas.restore(); - } - } catch (Exception e) { - FileLog.e("tmessages", e); + } else if (currentMessageObject.type == 12) { + contactNamePaint.setColor(currentMessageObject.isOutOwner() ? Theme.MSG_OUT_CONTACT_NAME_TEXT_COLOR : Theme.MSG_IN_CONTACT_NAME_TEXT_COLOR); + contactPhonePaint.setColor(currentMessageObject.isOutOwner() ? Theme.MSG_OUT_CONTACT_PHONE_TEXT_COLOR : Theme.MSG_IN_CONTACT_PHONE_TEXT_COLOR); + if (titleLayout != null) { + canvas.save(); + canvas.translate(photoImage.getImageX() + photoImage.getImageWidth() + AndroidUtilities.dp(9), AndroidUtilities.dp(16) + namesOffset); + titleLayout.draw(canvas); + canvas.restore(); } - } - if (isDocument == 1) { + if (captionLayout != null) { + canvas.save(); + canvas.translate(photoImage.getImageX() + photoImage.getImageWidth() + AndroidUtilities.dp(9), AndroidUtilities.dp(39) + namesOffset); + captionLayout.draw(canvas); + canvas.restore(); + } + Drawable menuDrawable; if (currentMessageObject.isOutOwner()) { - infoPaint.setColor(0xff70b15c); - docBackPaint.setColor(isDrawSelectedBackground() ? 0xffc5eca7 : 0xffdaf5c3); - menuDrawable = ResourceLoader.docMenuDrawable[1]; + menuDrawable = Theme.docMenuDrawable[1]; } else { - infoPaint.setColor(isDrawSelectedBackground() ? 0xff89b4c1 : 0xffa1aab3); - docBackPaint.setColor(isDrawSelectedBackground() ? 0xffcbeaf6 : 0xffebf0f5); - menuDrawable = ResourceLoader.docMenuDrawable[isDrawSelectedBackground() ? 2 : 0]; + menuDrawable = Theme.docMenuDrawable[isDrawSelectedBackground() ? 2 : 0]; + } + setDrawableBounds(menuDrawable, otherX = photoImage.getImageX() + backgroundWidth - AndroidUtilities.dp(48), otherY = photoImage.getImageY() - AndroidUtilities.dp(5)); + menuDrawable.draw(canvas); + } + if (documentAttachType == DOCUMENT_ATTACH_TYPE_DOCUMENT) { + Drawable menuDrawable; + if (currentMessageObject.isOutOwner()) { + docNamePaint.setColor(Theme.MSG_OUT_FILE_NAME_TEXT_COLOR); + infoPaint.setColor(isDrawSelectedBackground() ? Theme.MSG_OUT_FILE_INFO_SELECTED_TEXT_COLOR : Theme.MSG_OUT_FILE_INFO_TEXT_COLOR); + docBackPaint.setColor(isDrawSelectedBackground() ? Theme.MSG_OUT_FILE_BACKGROUND_SELECTED_COLOR : Theme.MSG_OUT_FILE_BACKGROUND_COLOR); + menuDrawable = Theme.docMenuDrawable[1]; + } else { + docNamePaint.setColor(Theme.MSG_IN_FILE_NAME_TEXT_COLOR); + infoPaint.setColor(isDrawSelectedBackground() ? Theme.MSG_IN_FILE_INFO_SELECTED_TEXT_COLOR : Theme.MSG_IN_FILE_INFO_TEXT_COLOR); + docBackPaint.setColor(isDrawSelectedBackground() ? Theme.MSG_IN_FILE_BACKGROUND_SELECTED_COLOR : Theme.MSG_IN_FILE_BACKGROUND_COLOR); + menuDrawable = Theme.docMenuDrawable[isDrawSelectedBackground() ? 2 : 0]; } - if (currentMessageObject.type == 0) { - setDrawableBounds(menuDrawable, otherX = photoImage.getImageX() + backgroundWidth - AndroidUtilities.dp(58), photoImage.getImageY() + AndroidUtilities.dp(4)); + int x; + int titleY; + int subtitleY; + if (drawPhotoImage) { + if (currentMessageObject.type == 0) { + setDrawableBounds(menuDrawable, otherX = photoImage.getImageX() + backgroundWidth - AndroidUtilities.dp(56), otherY = photoImage.getImageY() + AndroidUtilities.dp(1)); + } else { + setDrawableBounds(menuDrawable, otherX = photoImage.getImageX() + backgroundWidth - AndroidUtilities.dp(40), otherY = photoImage.getImageY() + AndroidUtilities.dp(1)); + } + + x = photoImage.getImageX() + photoImage.getImageWidth() + AndroidUtilities.dp(10); + titleY = photoImage.getImageY() + AndroidUtilities.dp(8); + subtitleY = photoImage.getImageY() + captionLayout.getLineBottom(captionLayout.getLineCount() - 1) + AndroidUtilities.dp(13); + if (buttonState >= 0 && buttonState < 4) { + if (!imageDrawn) { + int image = buttonState; + if (buttonState == 0) { + image = currentMessageObject.isOutOwner() ? 7 : 10; + } else if (buttonState == 1) { + image = currentMessageObject.isOutOwner() ? 8 : 11; + } + radialProgress.swapBackground(Theme.photoStatesDrawables[image][isDrawSelectedBackground() || buttonPressed != 0 ? 1 : 0]); + } else { + radialProgress.swapBackground(Theme.photoStatesDrawables[buttonState][buttonPressed]); + } + } + + if (!imageDrawn) { + rect.set(photoImage.getImageX(), photoImage.getImageY(), photoImage.getImageX() + photoImage.getImageWidth(), photoImage.getImageY() + photoImage.getImageHeight()); + canvas.drawRoundRect(rect, AndroidUtilities.dp(3), AndroidUtilities.dp(3), docBackPaint); + if (currentMessageObject.isOutOwner()) { + radialProgress.setProgressColor(isDrawSelectedBackground() ? Theme.MSG_OUT_FILE_PROGRESS_SELECTED_COLOR : Theme.MSG_OUT_FILE_PROGRESS_COLOR); + } else { + radialProgress.setProgressColor(isDrawSelectedBackground() ? Theme.MSG_IN_FILE_PROGRESS_SELECTED_COLOR : Theme.MSG_IN_FILE_PROGRESS_COLOR); + } + } else { + if (buttonState == -1) { + radialProgress.setHideCurrentDrawable(true); + } + radialProgress.setProgressColor(Theme.MSG_MEDIA_PROGRESS_COLOR); + } } else { - setDrawableBounds(menuDrawable, otherX = photoImage.getImageX() + backgroundWidth - AndroidUtilities.dp(44), photoImage.getImageY() + AndroidUtilities.dp(4)); + setDrawableBounds(menuDrawable, otherX = buttonX + backgroundWidth - AndroidUtilities.dp(currentMessageObject.type == 0 ? 58 : 48), otherY = buttonY - AndroidUtilities.dp(5)); + x = buttonX + AndroidUtilities.dp(53); + titleY = buttonY + AndroidUtilities.dp(4); + subtitleY = buttonY + AndroidUtilities.dp(27); + if (currentMessageObject.isOutOwner()) { + radialProgress.setProgressColor(isDrawSelectedBackground() || buttonPressed != 0 ? Theme.MSG_OUT_AUDIO_SELECTED_PROGRESS_COLOR : Theme.MSG_OUT_AUDIO_PROGRESS_COLOR); + } else { + radialProgress.setProgressColor(isDrawSelectedBackground() || buttonPressed != 0 ? Theme.MSG_IN_AUDIO_SELECTED_PROGRESS_COLOR : Theme.MSG_IN_AUDIO_PROGRESS_COLOR); + } } menuDrawable.draw(canvas); - if (buttonState >= 0 && buttonState < 4) { - if (!imageDrawn) { - if (buttonState == 1 && !currentMessageObject.isSending()) { - radialProgress.swapBackground(ResourceLoader.buttonStatesDrawablesDoc[2][currentMessageObject.isOutOwner() ? 1 : (isDrawSelectedBackground() ? 2 : 0)]); - } else { - radialProgress.swapBackground(ResourceLoader.buttonStatesDrawablesDoc[buttonState][currentMessageObject.isOutOwner() ? 1 : (isDrawSelectedBackground() ? 2 : 0)]); - } - } else { - if (buttonState == 1 && !currentMessageObject.isSending()) { - radialProgress.swapBackground(ResourceLoader.buttonStatesDrawables[4]); - } else { - radialProgress.swapBackground(ResourceLoader.buttonStatesDrawables[buttonState]); - } - } - } - - if (!imageDrawn) { - canvas.drawRect(photoImage.getImageX(), photoImage.getImageY(), photoImage.getImageX() + photoImage.getImageWidth(), photoImage.getImageY() + photoImage.getImageHeight(), docBackPaint); - if (currentMessageObject.isOutOwner()) { - radialProgress.setProgressColor(0xff81bd72); - } else { - radialProgress.setProgressColor(isDrawSelectedBackground() ? 0xff83b2c2 : 0xffadbdcc); - } - } else { - if (buttonState == -1) { - radialProgress.setHideCurrentDrawable(true); - } - radialProgress.setProgressColor(0xffffffff); - } - try { if (captionLayout != null) { canvas.save(); - canvas.translate(nameOffsetX + photoImage.getImageX() + photoImage.getImageWidth() + AndroidUtilities.dp(10), photoImage.getImageY() + AndroidUtilities.dp(8)); + canvas.translate(x + nameOffsetX, titleY); captionLayout.draw(canvas); canvas.restore(); } @@ -1960,7 +2843,7 @@ public class ChatMessageCell extends ChatBaseCell { try { if (infoLayout != null) { canvas.save(); - canvas.translate(photoImage.getImageX() + photoImage.getImageWidth() + AndroidUtilities.dp(10), photoImage.getImageY() + captionLayout.getLineBottom(captionLayout.getLineCount() - 1) + AndroidUtilities.dp(10)); + canvas.translate(x, subtitleY); infoLayout.draw(canvas); canvas.restore(); } @@ -1971,84 +2854,216 @@ public class ChatMessageCell extends ChatBaseCell { if (drawImageButton) { radialProgress.draw(canvas); } + + if (!botButtons.isEmpty()) { + int addX; + if (currentMessageObject.isOutOwner()) { + addX = getMeasuredWidth() - widthForButtons - AndroidUtilities.dp(10); + } else { + addX = currentBackgroundDrawable.getBounds().left + AndroidUtilities.dp(mediaBackground ? 1 : 7); + } + for (int a = 0; a < botButtons.size(); a++) { + BotButton button = botButtons.get(a); + int y = button.y + layoutHeight - AndroidUtilities.dp(2); + Theme.systemDrawable.setColorFilter(a == pressedBotButton ? Theme.colorPressedFilter : Theme.colorFilter); + Theme.systemDrawable.setBounds(button.x + addX, y, button.x + addX + button.width, y + button.height); + Theme.systemDrawable.draw(canvas); + canvas.save(); + canvas.translate(button.x + addX + AndroidUtilities.dp(5), y + (AndroidUtilities.dp(44) - button.caption.getLineBottom(button.caption.getLineCount() - 1)) / 2); + button.caption.draw(canvas); + canvas.restore(); + if (button.button instanceof TLRPC.TL_keyboardButtonUrl) { + int x = button.x + button.width - AndroidUtilities.dp(3) - Theme.botLink.getIntrinsicWidth() + addX; + setDrawableBounds(Theme.botLink, x, y + AndroidUtilities.dp(3)); + Theme.botLink.draw(canvas); + } else if (button.button instanceof TLRPC.TL_keyboardButtonSwitchInline) { + int x = button.x + button.width - AndroidUtilities.dp(3) - Theme.botInline.getIntrinsicWidth() + addX; + setDrawableBounds(Theme.botInline, x, y + AndroidUtilities.dp(3)); + Theme.botInline.draw(canvas); + } else if (button.button instanceof TLRPC.TL_keyboardButtonCallback || button.button instanceof TLRPC.TL_keyboardButtonRequestGeoLocation) { + boolean drawProgress = button.button instanceof TLRPC.TL_keyboardButtonCallback && SendMessagesHelper.getInstance().isSendingCallback(currentMessageObject, button.button) || + button.button instanceof TLRPC.TL_keyboardButtonRequestGeoLocation && SendMessagesHelper.getInstance().isSendingCurrentLocation(currentMessageObject, button.button); + if (drawProgress || !drawProgress && button.progressAlpha != 0) { + botProgressPaint.setAlpha(Math.min(255, (int) (button.progressAlpha * 255))); + int x = button.x + button.width - AndroidUtilities.dp(9 + 3) + addX; + rect.set(x, y + AndroidUtilities.dp(4), x + AndroidUtilities.dp(8), y + AndroidUtilities.dp(8 + 4)); + canvas.drawArc(rect, button.angle, 220, false, botProgressPaint); + invalidate((int) rect.left - AndroidUtilities.dp(2), (int) rect.top - AndroidUtilities.dp(2), (int) rect.right + AndroidUtilities.dp(2), (int) rect.bottom + AndroidUtilities.dp(2)); + long newTime = System.currentTimeMillis(); + if (Math.abs(button.lastUpdateTime - System.currentTimeMillis()) < 1000) { + long delta = (newTime - button.lastUpdateTime); + float dt = 360 * delta / 2000.0f; + button.angle += dt; + button.angle -= 360 * (button.angle / 360); + if (drawProgress) { + if (button.progressAlpha < 1.0f) { + button.progressAlpha += delta / 200.0f; + if (button.progressAlpha > 1.0f) { + button.progressAlpha = 1.0f; + } + } + } else { + if (button.progressAlpha > 0.0f) { + button.progressAlpha -= delta / 200.0f; + if (button.progressAlpha < 0.0f) { + button.progressAlpha = 0.0f; + } + } + } + } + button.lastUpdateTime = newTime; + } + } + } + } } private Drawable getDrawableForCurrentState() { - if (buttonState >= 0 && buttonState < 4) { - if (isDocument == 1) { - if (buttonState == 1 && !currentMessageObject.isSending()) { - return ResourceLoader.buttonStatesDrawablesDoc[2][currentMessageObject.isOutOwner() ? 1 : (isDrawSelectedBackground() ? 2 : 0)]; - } else { - return ResourceLoader.buttonStatesDrawablesDoc[buttonState][currentMessageObject.isOutOwner() ? 1 : (isDrawSelectedBackground() ? 2 : 0)]; + if (documentAttachType == DOCUMENT_ATTACH_TYPE_AUDIO || documentAttachType == DOCUMENT_ATTACH_TYPE_MUSIC) { + if (buttonState == -1) { + return null; + } + radialProgress.setAlphaForPrevious(false); + return Theme.fileStatesDrawable[currentMessageObject.isOutOwner() ? buttonState : buttonState + 5][isDrawSelectedBackground() || buttonPressed != 0 ? 1 : 0]; + } else { + if (documentAttachType == DOCUMENT_ATTACH_TYPE_DOCUMENT && !drawPhotoImage) { + radialProgress.setAlphaForPrevious(false); + if (buttonState == -1) { + return Theme.fileStatesDrawable[currentMessageObject.isOutOwner() ? 3 : 8][isDrawSelectedBackground() ? 1 : 0]; + } else if (buttonState == 0) { + return Theme.fileStatesDrawable[currentMessageObject.isOutOwner() ? 2 : 7][isDrawSelectedBackground() ? 1 : 0]; + } else if (buttonState == 1) { + return Theme.fileStatesDrawable[currentMessageObject.isOutOwner() ? 4 : 9][isDrawSelectedBackground() ? 1 : 0]; } } else { - if (buttonState == 1 && (currentMessageObject.type == 0 || !currentMessageObject.isSending())) { - return ResourceLoader.buttonStatesDrawables[4]; - } else { - return ResourceLoader.buttonStatesDrawables[buttonState]; + radialProgress.setAlphaForPrevious(true); + if (buttonState >= 0 && buttonState < 4) { + if (documentAttachType == DOCUMENT_ATTACH_TYPE_DOCUMENT) { + int image = buttonState; + if (buttonState == 0) { + image = currentMessageObject.isOutOwner() ? 7 : 10; + } else if (buttonState == 1) { + image = currentMessageObject.isOutOwner() ? 8 : 11; + } + return Theme.photoStatesDrawables[image][isDrawSelectedBackground() || buttonPressed != 0 ? 1 : 0]; + } else { + return Theme.photoStatesDrawables[buttonState][buttonPressed]; + } + } else if (buttonState == -1 && documentAttachType == DOCUMENT_ATTACH_TYPE_DOCUMENT) { + return Theme.photoStatesDrawables[currentMessageObject.isOutOwner() ? 9 : 12][isDrawSelectedBackground() ? 1 : 0]; } } - } else if (buttonState == -1 && isDocument == 1) { - return ResourceLoader.placeholderDocDrawable[currentMessageObject.isOutOwner() ? 1 : (isDrawSelectedBackground() ? 2 : 0)]; } return null; } @Override protected int getMaxNameWidth() { - if (currentMessageObject.type == 0) { - return super.getMaxNameWidth(); + if (documentAttachType == DOCUMENT_ATTACH_TYPE_STICKER) { + int maxWidth; + if (AndroidUtilities.isTablet()) { + if (isChat && !currentMessageObject.isOutOwner() && currentMessageObject.isFromUser()) { + maxWidth = AndroidUtilities.getMinTabletSide() - AndroidUtilities.dp(42); + } else { + maxWidth = AndroidUtilities.getMinTabletSide(); + } + } else { + if (isChat && !currentMessageObject.isOutOwner() && currentMessageObject.isFromUser()) { + maxWidth = Math.min(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y) - AndroidUtilities.dp(42); + } else { + maxWidth = Math.min(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y); + } + } + return maxWidth - backgroundWidth - AndroidUtilities.dp(57); } - return backgroundWidth - AndroidUtilities.dp(mediaBackground ? 14 : 26); + return super.getMaxNameWidth(); } public void updateButtonState(boolean animated) { String fileName = null; - File cacheFile = null; + boolean fileExists = false; if (currentMessageObject.type == 1) { if (currentPhotoObject == null) { return; } fileName = FileLoader.getAttachFileName(currentPhotoObject); - cacheFile = FileLoader.getPathToMessage(currentMessageObject.messageOwner); - } else if (currentMessageObject.type == 8 || currentMessageObject.type == 3 || currentMessageObject.type == 9) { - if (currentMessageObject.messageOwner.attachPath != null && currentMessageObject.messageOwner.attachPath.length() != 0) { - File f = new File(currentMessageObject.messageOwner.attachPath); - if (f.exists()) { - fileName = currentMessageObject.messageOwner.attachPath; - cacheFile = f; - } + fileExists = currentMessageObject.mediaExists; + } else if (currentMessageObject.type == 8 || documentAttachType == DOCUMENT_ATTACH_TYPE_VIDEO || currentMessageObject.type == 9 || documentAttachType == DOCUMENT_ATTACH_TYPE_AUDIO || documentAttachType == DOCUMENT_ATTACH_TYPE_MUSIC) { + if (currentMessageObject.attachPathExists) { + fileName = currentMessageObject.messageOwner.attachPath; + fileExists = true; + } else if (!currentMessageObject.isSendError() || documentAttachType == DOCUMENT_ATTACH_TYPE_AUDIO || documentAttachType == DOCUMENT_ATTACH_TYPE_MUSIC) { + fileName = currentMessageObject.getFileName(); + fileExists = currentMessageObject.mediaExists; } - if (fileName == null) { - if (!currentMessageObject.isSendError()) { - fileName = currentMessageObject.getFileName(); - cacheFile = FileLoader.getPathToMessage(currentMessageObject.messageOwner); - } - } - } else if (isDocument != 0) { - fileName = FileLoader.getAttachFileName(currentMessageObject.messageOwner.media.webpage.document); - cacheFile = FileLoader.getPathToAttach(currentMessageObject.messageOwner.media.webpage.document); - } else { + } else if (documentAttachType != DOCUMENT_ATTACH_TYPE_NONE) { + fileName = FileLoader.getAttachFileName(documentAttach); + fileExists = currentMessageObject.mediaExists; + } else if (currentPhotoObject != null) { fileName = FileLoader.getAttachFileName(currentPhotoObject); - cacheFile = FileLoader.getPathToAttach(currentPhotoObject, true); + fileExists = currentMessageObject.mediaExists; } if (fileName == null || fileName.length() == 0) { radialProgress.setBackground(null, false, false); return; } + boolean fromBot = currentMessageObject.messageOwner.params != null && currentMessageObject.messageOwner.params.containsKey("query_id"); - if (currentMessageObject.type == 0 && isDocument != 1) { + if (documentAttachType == DOCUMENT_ATTACH_TYPE_AUDIO || documentAttachType == DOCUMENT_ATTACH_TYPE_MUSIC) { + if (currentMessageObject.isOut() && currentMessageObject.isSending() || currentMessageObject.isSendError() && fromBot) { + MediaController.getInstance().addLoadingFileObserver(currentMessageObject.messageOwner.attachPath, currentMessageObject, this); + buttonState = 4; + radialProgress.setBackground(getDrawableForCurrentState(), !fromBot, animated); + if (!fromBot) { + Float progress = ImageLoader.getInstance().getFileProgress(currentMessageObject.messageOwner.attachPath); + if (progress == null && SendMessagesHelper.getInstance().isSendingMessage(currentMessageObject.getId())) { + progress = 1.0f; + } + radialProgress.setProgress(progress != null ? progress : 0, false); + } else { + radialProgress.setProgress(0, false); + } + } else { + if (fileExists) { + MediaController.getInstance().removeLoadingFileObserver(this); + boolean playing = MediaController.getInstance().isPlayingAudio(currentMessageObject); + if (!playing || playing && MediaController.getInstance().isAudioPaused()) { + buttonState = 0; + } else { + buttonState = 1; + } + radialProgress.setBackground(getDrawableForCurrentState(), false, animated); + } else { + MediaController.getInstance().addLoadingFileObserver(fileName, currentMessageObject, this); + if (!FileLoader.getInstance().isLoadingFile(fileName)) { + buttonState = 2; + radialProgress.setProgress(0, animated); + radialProgress.setBackground(getDrawableForCurrentState(), false, animated); + } else { + buttonState = 4; + Float progress = ImageLoader.getInstance().getFileProgress(fileName); + if (progress != null) { + radialProgress.setProgress(progress, animated); + } else { + radialProgress.setProgress(0, animated); + } + radialProgress.setBackground(getDrawableForCurrentState(), true, animated); + } + } + } + updateAudioProgress(); + } else if (currentMessageObject.type == 0 && documentAttachType != DOCUMENT_ATTACH_TYPE_DOCUMENT && documentAttachType != DOCUMENT_ATTACH_TYPE_VIDEO) { if (currentPhotoObject == null || !drawImageButton) { return; } - if (!cacheFile.exists()) { - MediaController.getInstance().addLoadingFileObserver(fileName, this); + if (!fileExists) { + MediaController.getInstance().addLoadingFileObserver(fileName, currentMessageObject, this); float setProgress = 0; boolean progressVisible = false; if (!FileLoader.getInstance().isLoadingFile(fileName)) { if (!cancelLoading && - (isDocument == 0 && MediaController.getInstance().canDownloadMedia(MediaController.AUTODOWNLOAD_MASK_PHOTO) || - isDocument == 2 && MediaController.getInstance().canDownloadMedia(MediaController.AUTODOWNLOAD_MASK_GIF))) { + (documentAttachType == 0 && MediaController.getInstance().canDownloadMedia(MediaController.AUTODOWNLOAD_MASK_PHOTO) || + documentAttachType == DOCUMENT_ATTACH_TYPE_GIF && MediaController.getInstance().canDownloadMedia(MediaController.AUTODOWNLOAD_MASK_GIF))) { progressVisible = true; buttonState = 1; } else { @@ -2065,7 +3080,7 @@ public class ChatMessageCell extends ChatBaseCell { invalidate(); } else { MediaController.getInstance().removeLoadingFileObserver(this); - if (isDocument == 2 && !photoImage.isAllowStartAnimation()) { + if (documentAttachType == DOCUMENT_ATTACH_TYPE_GIF && !photoImage.isAllowStartAnimation()) { buttonState = 2; } else { buttonState = -1; @@ -2076,7 +3091,7 @@ public class ChatMessageCell extends ChatBaseCell { } else { if (currentMessageObject.isOut() && currentMessageObject.isSending()) { if (currentMessageObject.messageOwner.attachPath != null && currentMessageObject.messageOwner.attachPath.length() > 0) { - MediaController.getInstance().addLoadingFileObserver(currentMessageObject.messageOwner.attachPath, this); + MediaController.getInstance().addLoadingFileObserver(currentMessageObject.messageOwner.attachPath, currentMessageObject, this); boolean needProgress = currentMessageObject.messageOwner.attachPath == null || !currentMessageObject.messageOwner.attachPath.startsWith("http"); HashMap params = currentMessageObject.messageOwner.params; if (currentMessageObject.messageOwner.message != null && params != null && (params.containsKey("url") || params.containsKey("bot"))) { @@ -2101,11 +3116,8 @@ public class ChatMessageCell extends ChatBaseCell { if (currentMessageObject.messageOwner.attachPath != null && currentMessageObject.messageOwner.attachPath.length() != 0) { MediaController.getInstance().removeLoadingFileObserver(this); } - if (cacheFile.exists() && cacheFile.length() == 0) { - cacheFile.delete(); - } - if (!cacheFile.exists()) { - MediaController.getInstance().addLoadingFileObserver(fileName, this); + if (!fileExists) { + MediaController.getInstance().addLoadingFileObserver(fileName, currentMessageObject, this); float setProgress = 0; boolean progressVisible = false; if (!FileLoader.getInstance().isLoadingFile(fileName)) { @@ -2123,14 +3135,14 @@ public class ChatMessageCell extends ChatBaseCell { Float progress = ImageLoader.getInstance().getFileProgress(fileName); setProgress = progress != null ? progress : 0; } - radialProgress.setProgress(setProgress, false); radialProgress.setBackground(getDrawableForCurrentState(), progressVisible, animated); + radialProgress.setProgress(setProgress, false); invalidate(); } else { MediaController.getInstance().removeLoadingFileObserver(this); if (currentMessageObject.type == 8 && !photoImage.isAllowStartAnimation()) { buttonState = 2; - } else if (currentMessageObject.type == 3) { + } else if (documentAttachType == DOCUMENT_ATTACH_TYPE_VIDEO) { buttonState = 3; } else { buttonState = -1; @@ -2161,86 +3173,129 @@ public class ChatMessageCell extends ChatBaseCell { private void didPressedButton(boolean animated) { if (buttonState == 0) { - cancelLoading = false; - radialProgress.setProgress(0, false); - if (currentMessageObject.type == 1) { - photoImage.setImage(currentPhotoObject.location, currentPhotoFilter, currentPhotoObjectThumb != null ? currentPhotoObjectThumb.location : null, currentPhotoFilter, currentPhotoObject.size, null, false); - } else if (currentMessageObject.type == 8) { - currentMessageObject.audioProgress = 2; - photoImage.setImage(currentMessageObject.messageOwner.media.document, null, currentPhotoObject != null ? currentPhotoObject.location : null, currentPhotoFilter, currentMessageObject.messageOwner.media.document.size, null, false); - } else if (currentMessageObject.type == 9) { - FileLoader.getInstance().loadFile(currentMessageObject.messageOwner.media.document, false, false); - } else if (currentMessageObject.type == 3) { - FileLoader.getInstance().loadFile(currentMessageObject.messageOwner.media.document, true, false); - } else if (currentMessageObject.type == 0 && isDocument != 0) { - if (isDocument == 2) { - photoImage.setImage(currentMessageObject.messageOwner.media.webpage.document, null, currentPhotoObject.location, currentPhotoFilter, currentMessageObject.messageOwner.media.webpage.document.size, null, false); + if (documentAttachType == DOCUMENT_ATTACH_TYPE_AUDIO || documentAttachType == DOCUMENT_ATTACH_TYPE_MUSIC) { + if (delegate.needPlayAudio(currentMessageObject)) { + buttonState = 1; + radialProgress.setBackground(getDrawableForCurrentState(), false, false); + invalidate(); + } + } else { + cancelLoading = false; + radialProgress.setProgress(0, false); + if (currentMessageObject.type == 1) { + photoImage.setImage(currentPhotoObject.location, currentPhotoFilter, currentPhotoObjectThumb != null ? currentPhotoObjectThumb.location : null, currentPhotoFilter, currentPhotoObject.size, null, false); + } else if (currentMessageObject.type == 8) { currentMessageObject.audioProgress = 2; - } else if (isDocument == 1) { - FileLoader.getInstance().loadFile(currentMessageObject.messageOwner.media.webpage.document, false, false); + photoImage.setImage(currentMessageObject.messageOwner.media.document, null, currentPhotoObject != null ? currentPhotoObject.location : null, currentPhotoFilter, currentMessageObject.messageOwner.media.document.size, null, false); + } else if (currentMessageObject.type == 9) { + FileLoader.getInstance().loadFile(currentMessageObject.messageOwner.media.document, false, false); + } else if (documentAttachType == DOCUMENT_ATTACH_TYPE_VIDEO) { + FileLoader.getInstance().loadFile(documentAttach, true, false); + } else if (currentMessageObject.type == 0 && documentAttachType != DOCUMENT_ATTACH_TYPE_NONE) { + if (documentAttachType == DOCUMENT_ATTACH_TYPE_GIF) { + photoImage.setImage(currentMessageObject.messageOwner.media.webpage.document, null, currentPhotoObject.location, currentPhotoFilter, currentMessageObject.messageOwner.media.webpage.document.size, null, false); + currentMessageObject.audioProgress = 2; + } else if (documentAttachType == DOCUMENT_ATTACH_TYPE_DOCUMENT) { + FileLoader.getInstance().loadFile(currentMessageObject.messageOwner.media.webpage.document, false, false); + } + } else { + photoImage.setImage(currentPhotoObject.location, currentPhotoFilter, currentPhotoObjectThumb != null ? currentPhotoObjectThumb.location : null, currentPhotoFilterThumb, 0, null, false); } - } else { - photoImage.setImage(currentPhotoObject.location, currentPhotoFilter, currentPhotoObjectThumb != null ? currentPhotoObjectThumb.location : null, currentPhotoFilterThumb, 0, null, false); - } - buttonState = 1; - radialProgress.setBackground(getDrawableForCurrentState(), true, animated); - invalidate(); - } else if (buttonState == 1) { - if (currentMessageObject.isOut() && currentMessageObject.isSending()) { - delegate.didPressedCancelSendButton(this); - } else { - cancelLoading = true; - if (currentMessageObject.type == 0 && isDocument == 1) { - FileLoader.getInstance().cancelLoadFile(currentMessageObject.messageOwner.media.webpage.document); - } else if (currentMessageObject.type == 0 || currentMessageObject.type == 1 || currentMessageObject.type == 8) { - photoImage.cancelLoadImage(); - } else if (currentMessageObject.type == 9 || currentMessageObject.type == 3) { - FileLoader.getInstance().cancelLoadFile(currentMessageObject.messageOwner.media.document); - } - buttonState = 0; - radialProgress.setBackground(getDrawableForCurrentState(), false, animated); + buttonState = 1; + radialProgress.setBackground(getDrawableForCurrentState(), true, animated); invalidate(); } + } else if (buttonState == 1) { + if (documentAttachType == DOCUMENT_ATTACH_TYPE_AUDIO || documentAttachType == DOCUMENT_ATTACH_TYPE_MUSIC) { + boolean result = MediaController.getInstance().pauseAudio(currentMessageObject); + if (result) { + buttonState = 0; + radialProgress.setBackground(getDrawableForCurrentState(), false, false); + invalidate(); + } + } else { + if (currentMessageObject.isOut() && currentMessageObject.isSending()) { + delegate.didPressedCancelSendButton(this); + } else { + cancelLoading = true; + if (documentAttachType == DOCUMENT_ATTACH_TYPE_VIDEO || documentAttachType == DOCUMENT_ATTACH_TYPE_DOCUMENT) { + FileLoader.getInstance().cancelLoadFile(documentAttach); + } else if (currentMessageObject.type == 0 || currentMessageObject.type == 1 || currentMessageObject.type == 8) { + photoImage.cancelLoadImage(); + } else if (currentMessageObject.type == 9) { + FileLoader.getInstance().cancelLoadFile(currentMessageObject.messageOwner.media.document); + } + buttonState = 0; + radialProgress.setBackground(getDrawableForCurrentState(), false, animated); + invalidate(); + } + } } else if (buttonState == 2) { - photoImage.setAllowStartAnimation(true); - photoImage.startAnimation(); - currentMessageObject.audioProgress = 0; - buttonState = -1; - radialProgress.setBackground(getDrawableForCurrentState(), false, animated); + if (documentAttachType == DOCUMENT_ATTACH_TYPE_AUDIO || documentAttachType == DOCUMENT_ATTACH_TYPE_MUSIC) { + radialProgress.setProgress(0, false); + FileLoader.getInstance().loadFile(documentAttach, true, false); + buttonState = 4; + radialProgress.setBackground(getDrawableForCurrentState(), true, false); + invalidate(); + } else { + photoImage.setAllowStartAnimation(true); + photoImage.startAnimation(); + currentMessageObject.audioProgress = 0; + buttonState = -1; + radialProgress.setBackground(getDrawableForCurrentState(), false, animated); + } } else if (buttonState == 3) { delegate.didPressedImage(this); + } else if (buttonState == 4) { + if (documentAttachType == DOCUMENT_ATTACH_TYPE_AUDIO || documentAttachType == DOCUMENT_ATTACH_TYPE_MUSIC) { + if (currentMessageObject.isOut() && currentMessageObject.isSending() || currentMessageObject.isSendError()) { + if (delegate != null) { + delegate.didPressedCancelSendButton(this); + } + } else { + FileLoader.getInstance().cancelLoadFile(documentAttach); + buttonState = 2; + radialProgress.setBackground(getDrawableForCurrentState(), false, false); + invalidate(); + } + } } } @Override public void onFailedDownload(String fileName) { - updateButtonState(false); + updateButtonState(documentAttachType == DOCUMENT_ATTACH_TYPE_AUDIO || documentAttachType == DOCUMENT_ATTACH_TYPE_MUSIC); } @Override public void onSuccessDownload(String fileName) { - radialProgress.setProgress(1, true); - if (currentMessageObject.type == 0) { - if (isDocument == 2 && currentMessageObject.audioProgress != 1) { - buttonState = 2; - didPressedButton(true); - } else if (!photoNotSet) { - updateButtonState(true); - } else { - setMessageObject(currentMessageObject); - } + if (documentAttachType == DOCUMENT_ATTACH_TYPE_AUDIO || documentAttachType == DOCUMENT_ATTACH_TYPE_MUSIC) { + updateButtonState(true); + updateWaveform(); } else { - if (!photoNotSet || currentMessageObject.type == 8 && currentMessageObject.audioProgress != 1) { - if (currentMessageObject.type == 8 && currentMessageObject.audioProgress != 1) { - photoNotSet = false; + radialProgress.setProgress(1, true); + if (currentMessageObject.type == 0) { + if (documentAttachType == DOCUMENT_ATTACH_TYPE_GIF && currentMessageObject.audioProgress != 1) { buttonState = 2; didPressedButton(true); - } else { + } else if (!photoNotSet) { updateButtonState(true); + } else { + setMessageObject(currentMessageObject); + } + } else { + if (!photoNotSet || currentMessageObject.type == 8 && currentMessageObject.audioProgress != 1) { + if (currentMessageObject.type == 8 && currentMessageObject.audioProgress != 1) { + photoNotSet = false; + buttonState = 2; + didPressedButton(true); + } else { + updateButtonState(true); + } + } + if (photoNotSet) { + setMessageObject(currentMessageObject); } - } - if (photoNotSet) { - setMessageObject(currentMessageObject); } } } @@ -2248,8 +3303,14 @@ public class ChatMessageCell extends ChatBaseCell { @Override public void onProgressDownload(String fileName, float progress) { radialProgress.setProgress(progress, true); - if (buttonState != 1) { - updateButtonState(false); + if (documentAttachType == DOCUMENT_ATTACH_TYPE_AUDIO || documentAttachType == DOCUMENT_ATTACH_TYPE_MUSIC) { + if (buttonState != 4) { + updateButtonState(false); + } + } else { + if (buttonState != 1) { + updateButtonState(false); + } } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMusicCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMusicCell.java deleted file mode 100644 index 0404682d3..000000000 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMusicCell.java +++ /dev/null @@ -1,457 +0,0 @@ -/* - * This is the source code of Telegram for Android v. 3.x.x. - * It is licensed under GNU GPL v. 2 or later. - * You should have received a copy of the license in this archive (see LICENSE). - * - * Copyright Nikolai Kudashov, 2013-2016. - */ - -package org.telegram.ui.Cells; - -import android.content.Context; -import android.graphics.Canvas; -import android.graphics.Paint; -import android.graphics.drawable.Drawable; -import android.text.Layout; -import android.text.StaticLayout; -import android.text.TextPaint; -import android.text.TextUtils; -import android.view.MotionEvent; -import android.view.SoundEffectConstants; - -import org.telegram.messenger.AndroidUtilities; -import org.telegram.messenger.ImageLoader; -import org.telegram.messenger.MediaController; -import org.telegram.messenger.MessageObject; -import org.telegram.messenger.SendMessagesHelper; -import org.telegram.messenger.FileLoader; -import org.telegram.tgnet.TLRPC; -import org.telegram.ui.Components.RadialProgress; -import org.telegram.ui.Components.ResourceLoader; -import org.telegram.ui.Components.SeekBar; - -import java.io.File; - -public class ChatMusicCell extends ChatBaseCell implements SeekBar.SeekBarDelegate { - - public interface ChatMusicCellDelegate { - boolean needPlayMusic(MessageObject messageObject); - } - - private static TextPaint timePaint; - private static TextPaint titlePaint; - private static TextPaint authorPaint; - - private SeekBar seekBar; - private int seekBarX; - private int seekBarY; - - private RadialProgress radialProgress; - private int buttonState = 0; - private int buttonX; - private int buttonY; - private boolean buttonPressed = false; - - private StaticLayout timeLayout; - private int timeX; - private String lastTimeString = null; - - private StaticLayout titleLayout; - private int titleX; - - private StaticLayout authorLayout; - private int authorX; - - private ChatMusicCellDelegate musicDelegate; - - public ChatMusicCell(Context context) { - super(context); - - seekBar = new SeekBar(context); - seekBar.setDelegate(this); - radialProgress = new RadialProgress(this); - drawForwardedName = false; - - if (timePaint == null) { - timePaint = new TextPaint(TextPaint.ANTI_ALIAS_FLAG); - timePaint.setTextSize(AndroidUtilities.dp(13)); - - titlePaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); - titlePaint.setTextSize(AndroidUtilities.dp(16)); - titlePaint.setColor(0xff212121); - titlePaint.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); - - authorPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); - authorPaint.setTextSize(AndroidUtilities.dp(15)); - authorPaint.setColor(0xff212121); - } - } - - @Override - protected void onDetachedFromWindow() { - super.onDetachedFromWindow(); - MediaController.getInstance().removeLoadingFileObserver(this); - } - - @Override - protected void onAttachedToWindow() { - super.onAttachedToWindow(); - updateButtonState(false); - } - - @Override - public boolean onTouchEvent(MotionEvent event) { - float x = event.getX(); - float y = event.getY(); - boolean result = seekBar.onTouch(event.getAction(), event.getX() - seekBarX, event.getY() - seekBarY); - if (result) { - if (event.getAction() == MotionEvent.ACTION_DOWN) { - getParent().requestDisallowInterceptTouchEvent(true); - } - invalidate(); - } else { - int side = AndroidUtilities.dp(36); - if (event.getAction() == MotionEvent.ACTION_DOWN) { - if (x >= buttonX && x <= buttonX + side && y >= buttonY && y <= buttonY + side) { - buttonPressed = true; - invalidate(); - result = true; - radialProgress.swapBackground(getDrawableForCurrentState()); - } - } else if (buttonPressed) { - if (event.getAction() == MotionEvent.ACTION_UP) { - buttonPressed = false; - playSoundEffect(SoundEffectConstants.CLICK); - didPressedButton(); - invalidate(); - } else if (event.getAction() == MotionEvent.ACTION_CANCEL) { - buttonPressed = false; - invalidate(); - } else if (event.getAction() == MotionEvent.ACTION_MOVE) { - if (!(x >= buttonX && x <= buttonX + side && y >= buttonY && y <= buttonY + side)) { - buttonPressed = false; - invalidate(); - } - } - radialProgress.swapBackground(getDrawableForCurrentState()); - } - if (!result) { - result = super.onTouchEvent(event); - } - } - - return result; - } - - private void didPressedButton() { - if (buttonState == 0) { - if (musicDelegate != null) { - if (musicDelegate.needPlayMusic(currentMessageObject)) { - buttonState = 1; - radialProgress.setBackground(getDrawableForCurrentState(), false, false); - invalidate(); - } - } - } else if (buttonState == 1) { - boolean result = MediaController.getInstance().pauseAudio(currentMessageObject); - if (result) { - buttonState = 0; - radialProgress.setBackground(getDrawableForCurrentState(), false, false); - invalidate(); - } - } else if (buttonState == 2) { - radialProgress.setProgress(0, false); - FileLoader.getInstance().loadFile(currentMessageObject.messageOwner.media.document, true, false); - buttonState = 3; - radialProgress.setBackground(getDrawableForCurrentState(), true, false); - invalidate(); - } else if (buttonState == 3) { - FileLoader.getInstance().cancelLoadFile(currentMessageObject.messageOwner.media.document); - buttonState = 2; - radialProgress.setBackground(getDrawableForCurrentState(), false, false); - invalidate(); - } else if (buttonState == 4) { - if (currentMessageObject.isOut() && currentMessageObject.isSending()) { - if (delegate != null) { - delegate.didPressedCancelSendButton(this); - } - } - } - } - - public void setMusicDelegate(ChatMusicCellDelegate delegate) { - musicDelegate = delegate; - } - - public void updateProgress() { - if (currentMessageObject == null) { - return; - } - - if (!seekBar.isDragging()) { - seekBar.setProgress(currentMessageObject.audioProgress); - } - - int duration = 0; - int currentProgress = 0; - for (int a = 0; a < currentMessageObject.messageOwner.media.document.attributes.size(); a++) { - TLRPC.DocumentAttribute attribute = currentMessageObject.messageOwner.media.document.attributes.get(a); - if (attribute instanceof TLRPC.TL_documentAttributeAudio) { - duration = attribute.duration; - break; - } - } - if (MediaController.getInstance().isPlayingAudio(currentMessageObject)) { - currentProgress = currentMessageObject.audioProgressSec; - } - String timeString = String.format("%d:%02d / %d:%02d", currentProgress / 60, currentProgress % 60, duration / 60, duration % 60); - if (lastTimeString == null || lastTimeString != null && !lastTimeString.equals(timeString)) { - lastTimeString = timeString; - int timeWidth = (int) Math.ceil(timePaint.measureText(timeString)); - timeLayout = new StaticLayout(timeString, timePaint, timeWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); - } - invalidate(); - } - - public void downloadAudioIfNeed() { - //if (buttonState == 2) { - //FileLoader.getInstance().loadFile(currentMessageObject.messageOwner.media.document, true, false); - // buttonState = 3; - // invalidate(); - //} - } - - public void updateButtonState(boolean animated) { - if (currentMessageObject == null) { - return; - } - if (currentMessageObject.isOut() && currentMessageObject.isSending()) { - MediaController.getInstance().addLoadingFileObserver(currentMessageObject.messageOwner.attachPath, this); - buttonState = 4; - radialProgress.setBackground(getDrawableForCurrentState(), true, animated); - Float progress = ImageLoader.getInstance().getFileProgress(currentMessageObject.messageOwner.attachPath); - if (progress == null && SendMessagesHelper.getInstance().isSendingMessage(currentMessageObject.getId())) { - progress = 1.0f; - } - radialProgress.setProgress(progress != null ? progress : 0, false); - } else { - File cacheFile = null; - if (currentMessageObject.messageOwner.attachPath != null && currentMessageObject.messageOwner.attachPath.length() > 0) { - cacheFile = new File(currentMessageObject.messageOwner.attachPath); - if (!cacheFile.exists()) { - cacheFile = null; - } - } - if (cacheFile == null) { - cacheFile = FileLoader.getPathToMessage(currentMessageObject.messageOwner); - } - if (cacheFile.exists()) { - MediaController.getInstance().removeLoadingFileObserver(this); - boolean playing = MediaController.getInstance().isPlayingAudio(currentMessageObject); - if (!playing || playing && MediaController.getInstance().isAudioPaused()) { - buttonState = 0; - } else { - buttonState = 1; - } - radialProgress.setProgress(0, animated); - radialProgress.setBackground(getDrawableForCurrentState(), false, animated); - } else { - String fileName = currentMessageObject.getFileName(); - MediaController.getInstance().addLoadingFileObserver(fileName, this); - if (!FileLoader.getInstance().isLoadingFile(fileName)) { - buttonState = 2; - radialProgress.setProgress(0, animated); - radialProgress.setBackground(getDrawableForCurrentState(), false, animated); - } else { - buttonState = 3; - Float progress = ImageLoader.getInstance().getFileProgress(fileName); - if (progress != null) { - radialProgress.setProgress(progress, animated); - } else { - radialProgress.setProgress(0, animated); - } - radialProgress.setBackground(getDrawableForCurrentState(), true, animated); - } - } - } - updateProgress(); - } - - @Override - public void onFailedDownload(String fileName) { - updateButtonState(true); - } - - @Override - public void onSuccessDownload(String fileName) { - updateButtonState(true); - } - - @Override - public void onProgressDownload(String fileName, float progress) { - radialProgress.setProgress(progress, true); - if (buttonState != 3) { - updateButtonState(false); - } - } - - @Override - public void onProgressUpload(String fileName, float progress, boolean isEncrypted) { - radialProgress.setProgress(progress, true); - } - - @Override - public void onSeekBarDrag(float progress) { - if (currentMessageObject == null) { - return; - } - currentMessageObject.audioProgress = progress; - MediaController.getInstance().seekToProgress(currentMessageObject, progress); - } - - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - int width = MeasureSpec.getSize(widthMeasureSpec); - setMeasuredDimension(width, AndroidUtilities.dp(78) + namesOffset); - } - - @Override - protected void onLayout(boolean changed, int left, int top, int right, int bottom) { - super.onLayout(changed, left, top, right, bottom); - - if (currentMessageObject.isOutOwner()) { - seekBarX = layoutWidth - backgroundWidth + AndroidUtilities.dp(52); - buttonX = layoutWidth - backgroundWidth + AndroidUtilities.dp(13); - timeX = layoutWidth - backgroundWidth + AndroidUtilities.dp(63); - } else { - if (isChat && currentMessageObject.isFromUser()) { - seekBarX = AndroidUtilities.dp(113); - buttonX = AndroidUtilities.dp(74); - timeX = AndroidUtilities.dp(124); - } else { - seekBarX = AndroidUtilities.dp(61); - buttonX = AndroidUtilities.dp(22); - timeX = AndroidUtilities.dp(72); - } - } - - seekBar.width = backgroundWidth - AndroidUtilities.dp(67); - seekBar.height = AndroidUtilities.dp(30); - seekBarY = AndroidUtilities.dp(26) + namesOffset; - buttonY = AndroidUtilities.dp(13) + namesOffset; - radialProgress.setProgressRect(buttonX, buttonY, buttonX + AndroidUtilities.dp(40), buttonY + AndroidUtilities.dp(40)); - - updateProgress(); - } - - @Override - public void setMessageObject(MessageObject messageObject) { - boolean dataChanged = currentMessageObject == messageObject && isUserDataChanged(); - if (currentMessageObject != messageObject || dataChanged) { - if (AndroidUtilities.isTablet()) { - backgroundWidth = Math.min(AndroidUtilities.getMinTabletSide() - AndroidUtilities.dp(isChat && messageObject.isFromUser() && !messageObject.isOutOwner() ? 102 : 50), AndroidUtilities.dp(300)); - } else { - backgroundWidth = Math.min(AndroidUtilities.displaySize.x - AndroidUtilities.dp(isChat && messageObject.isFromUser() && !messageObject.isOutOwner() ? 102 : 50), AndroidUtilities.dp(300)); - } - - if (messageObject.isOutOwner()) { - seekBar.type = 0; - radialProgress.setProgressColor(0xff87bf78); - } else { - seekBar.type = 1; - radialProgress.setProgressColor(0xffa2b5c7); - } - - int maxWidth = backgroundWidth - AndroidUtilities.dp(86); - - CharSequence stringFinal = TextUtils.ellipsize(messageObject.getMusicTitle().replace("\n", " "), titlePaint, maxWidth, TextUtils.TruncateAt.END); - titleLayout = new StaticLayout(stringFinal, titlePaint, maxWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); - if (titleLayout.getLineCount() > 0) { - titleX = -(int) Math.ceil(titleLayout.getLineLeft(0)); - } - - stringFinal = TextUtils.ellipsize(messageObject.getMusicAuthor().replace("\n", " "), authorPaint, maxWidth, TextUtils.TruncateAt.END); - authorLayout = new StaticLayout(stringFinal, authorPaint, maxWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); - if (authorLayout.getLineCount() > 0) { - authorX = -(int) Math.ceil(authorLayout.getLineLeft(0)); - } - - int duration = 0; - for (int a = 0; a < messageObject.messageOwner.media.document.attributes.size(); a++) { - TLRPC.DocumentAttribute attribute = messageObject.messageOwner.media.document.attributes.get(a); - if (attribute instanceof TLRPC.TL_documentAttributeAudio) { - duration = attribute.duration; - break; - } - } - availableTimeWidth = backgroundWidth - AndroidUtilities.dp(72 + 14) - (int) Math.ceil(timePaint.measureText(String.format("%d:%02d / %d:%02d", duration / 60, duration % 60, duration / 60, duration % 60))); - - super.setMessageObject(messageObject); - } - updateButtonState(dataChanged); - } - - @Override - public void setCheckPressed(boolean value, boolean pressed) { - super.setCheckPressed(value, pressed); - if (radialProgress.swapBackground(getDrawableForCurrentState())) { - invalidate(); - } - } - - @Override - public void setHighlighted(boolean value) { - super.setHighlighted(value); - if (radialProgress.swapBackground(getDrawableForCurrentState())) { - invalidate(); - } - } - - @Override - public void setPressed(boolean pressed) { - super.setPressed(pressed); - if (radialProgress.swapBackground(getDrawableForCurrentState())) { - invalidate(); - } - } - - private Drawable getDrawableForCurrentState() { - return ResourceLoader.audioStatesDrawable[currentMessageObject.isOutOwner() ? buttonState : buttonState + 5][isDrawSelectedBackground() ? 2 : (buttonPressed ? 1 : 0)]; - } - - @Override - protected void onDraw(Canvas canvas) { - super.onDraw(canvas); - - if (currentMessageObject == null) { - return; - } - - if (currentMessageObject.isOutOwner()) { - timePaint.setColor(0xff70b15c); - } else { - timePaint.setColor(isDrawSelectedBackground() ? 0xff89b4c1 : 0xffa1aab3); - } - radialProgress.draw(canvas); - - canvas.save(); - canvas.translate(timeX + titleX, AndroidUtilities.dp(12) + namesOffset); - titleLayout.draw(canvas); - canvas.restore(); - - canvas.save(); - if (MediaController.getInstance().isPlayingAudio(currentMessageObject)) { - canvas.translate(seekBarX, seekBarY); - seekBar.draw(canvas); - } else { - canvas.translate(timeX + authorX, AndroidUtilities.dp(32) + namesOffset); - authorLayout.draw(canvas); - } - canvas.restore(); - - canvas.save(); - canvas.translate(timeX, AndroidUtilities.dp(52) + namesOffset); - timeLayout.draw(canvas); - canvas.restore(); - } -} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatUnreadCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatUnreadCell.java index ef043f5b3..b69baddc4 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatUnreadCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatUnreadCell.java @@ -18,6 +18,7 @@ import android.widget.TextView; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.R; import org.telegram.ui.Components.LayoutHelper; +import org.telegram.ui.ActionBar.Theme; public class ChatUnreadCell extends FrameLayout { @@ -38,7 +39,8 @@ public class ChatUnreadCell extends FrameLayout { textView = new TextView(context); textView.setPadding(0, 0, 0, AndroidUtilities.dp(1)); textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); - textView.setTextColor(0xff4a7297); + textView.setTextColor(Theme.CHAT_UNREAD_TEXT_COLOR); + textView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); addView(textView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER)); } 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 b9ec45600..5c789c3dd 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ContextLinkCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ContextLinkCell.java @@ -21,8 +21,10 @@ import android.text.TextUtils; import android.view.MotionEvent; import android.view.SoundEffectConstants; import android.view.View; +import android.view.animation.AccelerateInterpolator; import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.Emoji; import org.telegram.messenger.FileLoader; import org.telegram.messenger.FileLog; import org.telegram.messenger.ImageLoader; @@ -30,11 +32,12 @@ import org.telegram.messenger.ImageReceiver; import org.telegram.messenger.LocaleController; import org.telegram.messenger.MediaController; import org.telegram.messenger.MessageObject; +import org.telegram.messenger.R; import org.telegram.messenger.Utilities; import org.telegram.tgnet.TLRPC; import org.telegram.ui.Components.LetterDrawable; import org.telegram.ui.Components.RadialProgress; -import org.telegram.ui.Components.ResourceLoader; +import org.telegram.ui.ActionBar.Theme; import java.io.File; import java.util.ArrayList; @@ -42,6 +45,16 @@ import java.util.Locale; public class ContextLinkCell extends View implements MediaController.FileDownloadProgressListener { + private final static int DOCUMENT_ATTACH_TYPE_NONE = 0; + private final static int DOCUMENT_ATTACH_TYPE_DOCUMENT = 1; + private final static int DOCUMENT_ATTACH_TYPE_GIF = 2; + private final static int DOCUMENT_ATTACH_TYPE_AUDIO = 3; + private final static int DOCUMENT_ATTACH_TYPE_VIDEO = 4; + private final static int DOCUMENT_ATTACH_TYPE_MUSIC = 5; + private final static int DOCUMENT_ATTACH_TYPE_STICKER = 6; + private final static int DOCUMENT_ATTACH_TYPE_PHOTO = 7; + private final static int DOCUMENT_ATTACH_TYPE_GEO = 8; + public interface ContextLinkCellDelegate { void didPressedImage(ContextLinkCell cell); } @@ -52,6 +65,7 @@ public class ContextLinkCell extends View implements MediaController.FileDownloa private boolean needDivider; private boolean buttonPressed; + private boolean needShadow; private int linkY; private StaticLayout linkLayout; @@ -62,18 +76,26 @@ public class ContextLinkCell extends View implements MediaController.FileDownloa private int descriptionY = AndroidUtilities.dp(27); private StaticLayout descriptionLayout; - private TLRPC.BotInlineResult result; - private TLRPC.Document gif; + private TLRPC.BotInlineResult inlineResult; + private TLRPC.Document documentAttach; + private int documentAttachType; private boolean mediaWebpage; private static TextPaint titleTextPaint; private static TextPaint descriptionTextPaint; private static Paint paint; + private static Drawable shadowDrawable; private int TAG; private int buttonState; private RadialProgress radialProgress; + private long lastUpdateTime; + private boolean scaled; + private float scale; + private long time = 0; + private static AccelerateInterpolator interpolator = new AccelerateInterpolator(0.5f); + private ContextLinkCellDelegate delegate; public ContextLinkCell(Context context) { @@ -93,7 +115,6 @@ public class ContextLinkCell extends View implements MediaController.FileDownloa paint.setStrokeWidth(1); } - setWillNotDraw(false); linkImageView = new ImageReceiver(this); letterDrawable = new LetterDrawable(); radialProgress = new RadialProgress(this); @@ -107,47 +128,43 @@ public class ContextLinkCell extends View implements MediaController.FileDownloa descriptionLayout = null; titleLayout = null; linkLayout = null; - TLRPC.PhotoSize currentPhotoObject = null; - TLRPC.PhotoSize currentPhotoObjectThumb = null; - ArrayList photoThumbs = null; - String url = null; linkY = AndroidUtilities.dp(27); - if (result == null && gif == null) { + if (inlineResult == null && documentAttach == null) { setMeasuredDimension(AndroidUtilities.dp(100), AndroidUtilities.dp(100)); return; } - int maxWidth = MeasureSpec.getSize(widthMeasureSpec) - AndroidUtilities.dp(AndroidUtilities.leftBaseline) - AndroidUtilities.dp(8); + int viewWidth = MeasureSpec.getSize(widthMeasureSpec); + int maxWidth = viewWidth - AndroidUtilities.dp(AndroidUtilities.leftBaseline) - AndroidUtilities.dp(8); - TLRPC.Document document = null; - if (result != null && result.document != null) { - document = result.document; - } else if (gif != null) { - document = gif; - } - if (document != null) { + TLRPC.PhotoSize currentPhotoObject = null; + TLRPC.PhotoSize currentPhotoObjectThumb = null; + ArrayList photoThumbs = null; + String url = null; + + if (documentAttach != null) { photoThumbs = new ArrayList<>(); - photoThumbs.add(document.thumb); - } else if (result != null && result.photo != null) { - photoThumbs = new ArrayList<>(result.photo.sizes); + photoThumbs.add(documentAttach.thumb); + } else if (inlineResult != null && inlineResult.photo != null) { + photoThumbs = new ArrayList<>(inlineResult.photo.sizes); } - if (!mediaWebpage && result != null) { - if (result.title != null) { + if (!mediaWebpage && inlineResult != null) { + if (inlineResult.title != null) { try { - int width = (int) Math.ceil(titleTextPaint.measureText(result.title)); - CharSequence titleFinal = TextUtils.ellipsize(result.title.replace("\n", " "), titleTextPaint, Math.min(width, maxWidth), TextUtils.TruncateAt.END); - titleLayout = new StaticLayout(titleFinal, titleTextPaint, maxWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); + int width = (int) Math.ceil(titleTextPaint.measureText(inlineResult.title)); + CharSequence titleFinal = TextUtils.ellipsize(Emoji.replaceEmoji(inlineResult.title.replace('\n', ' '), titleTextPaint.getFontMetricsInt(), AndroidUtilities.dp(15), false), titleTextPaint, Math.min(width, maxWidth), TextUtils.TruncateAt.END); + titleLayout = new StaticLayout(titleFinal, titleTextPaint, maxWidth + AndroidUtilities.dp(4), Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); } catch (Exception e) { FileLog.e("tmessages", e); } - letterDrawable.setTitle(result.title); + letterDrawable.setTitle(inlineResult.title); } - if (result.description != null) { + if (inlineResult.description != null) { try { - descriptionLayout = ChatMessageCell.generateStaticLayout(result.description, descriptionTextPaint, maxWidth, maxWidth, 0, 3); + descriptionLayout = ChatMessageCell.generateStaticLayout(Emoji.replaceEmoji(inlineResult.description, descriptionTextPaint.getFontMetricsInt(), AndroidUtilities.dp(13), false), descriptionTextPaint, maxWidth, maxWidth, 0, 3); if (descriptionLayout.getLineCount() > 0) { linkY = descriptionY + descriptionLayout.getLineBottom(descriptionLayout.getLineCount() - 1) + AndroidUtilities.dp(1); } @@ -156,10 +173,10 @@ public class ContextLinkCell extends View implements MediaController.FileDownloa } } - if (result.url != null) { + if (inlineResult.url != null) { try { - int width = (int) Math.ceil(descriptionTextPaint.measureText(result.url)); - CharSequence linkFinal = TextUtils.ellipsize(result.url.replace("\n", " "), descriptionTextPaint, Math.min(width, maxWidth), TextUtils.TruncateAt.MIDDLE); + int width = (int) Math.ceil(descriptionTextPaint.measureText(inlineResult.url)); + CharSequence linkFinal = TextUtils.ellipsize(inlineResult.url.replace('\n', ' '), descriptionTextPaint, Math.min(width, maxWidth), TextUtils.TruncateAt.MIDDLE); linkLayout = new StaticLayout(linkFinal, descriptionTextPaint, maxWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); } catch (Exception e) { FileLog.e("tmessages", e); @@ -167,32 +184,52 @@ public class ContextLinkCell extends View implements MediaController.FileDownloa } } - boolean isGifDocument = false; - if (document != null && MessageObject.isGifDocument(document)) { - currentPhotoObject = document.thumb; - isGifDocument = true; - } else if (result != null && result.photo != null) { + documentAttachType = DOCUMENT_ATTACH_TYPE_NONE; + String ext = null; + if (documentAttach != null) { + if (MessageObject.isGifDocument(documentAttach)) { + documentAttachType = DOCUMENT_ATTACH_TYPE_GIF; + currentPhotoObject = documentAttach.thumb; + } else if (MessageObject.isStickerDocument(documentAttach)) { + documentAttachType = DOCUMENT_ATTACH_TYPE_STICKER; + currentPhotoObject = documentAttach.thumb; + ext = "webp"; + } else { + currentPhotoObject = documentAttach.thumb; + } + } else if (inlineResult != null && inlineResult.photo != null) { + documentAttachType = DOCUMENT_ATTACH_TYPE_PHOTO; currentPhotoObject = FileLoader.getClosestPhotoSizeWithSize(photoThumbs, AndroidUtilities.getPhotoSize(), true); currentPhotoObjectThumb = FileLoader.getClosestPhotoSizeWithSize(photoThumbs, 80); if (currentPhotoObjectThumb == currentPhotoObject) { currentPhotoObjectThumb = null; } } - if (result != null) { - if (result.content_url != null) { - if (result.type != null) { - if (result.type.startsWith("gif")) { - if (!isGifDocument) { - url = result.content_url; - isGifDocument = true; + if (inlineResult != null) { + if (inlineResult.content_url != null) { + if (inlineResult.type != null) { + if (inlineResult.type.startsWith("gif")) { + if (documentAttachType != DOCUMENT_ATTACH_TYPE_GIF) { + url = inlineResult.content_url; + documentAttachType = DOCUMENT_ATTACH_TYPE_GIF; + } + } else if (inlineResult.type.equals("photo")) { + url = inlineResult.thumb_url; + if (url == null) { + url = inlineResult.content_url; } - } else if (result.type.equals("photo")) { - url = result.content_url; } } } - if (url == null && result.thumb_url != null) { - url = result.thumb_url; + if (url == null && inlineResult.thumb_url != null) { + url = inlineResult.thumb_url; + } + } + if (url == null && currentPhotoObject == null && currentPhotoObjectThumb == null) { + if (inlineResult.send_message instanceof TLRPC.TL_botInlineMessageMediaVenue || inlineResult.send_message instanceof TLRPC.TL_botInlineMessageMediaGeo) { + double lat = inlineResult.send_message.geo.lat; + double lon = inlineResult.send_message.geo._long; + url = String.format(Locale.US, "https://maps.googleapis.com/maps/api/staticmap?center=%f,%f&zoom=15&size=72x72&maptype=roadmap&scale=%d&markers=color:red|size:small|%f,%f&sensor=false", lat, lon, Math.min(2, (int) Math.ceil(AndroidUtilities.density)), lat, lon); } } @@ -200,9 +237,9 @@ public class ContextLinkCell extends View implements MediaController.FileDownloa int w = 0; int h = 0; - if (document != null) { - for (int b = 0; b < document.attributes.size(); b++) { - TLRPC.DocumentAttribute attribute = document.attributes.get(b); + if (documentAttach != null) { + for (int b = 0; b < documentAttach.attributes.size(); b++) { + TLRPC.DocumentAttribute attribute = documentAttach.attributes.get(b); if (attribute instanceof TLRPC.TL_documentAttributeImageSize || attribute instanceof TLRPC.TL_documentAttributeVideo) { w = attribute.w; h = attribute.h; @@ -212,24 +249,26 @@ public class ContextLinkCell extends View implements MediaController.FileDownloa } if (w == 0 || h == 0) { if (currentPhotoObject != null) { - currentPhotoObject.size = -1; if (currentPhotoObjectThumb != null) { currentPhotoObjectThumb.size = -1; } w = currentPhotoObject.w; h = currentPhotoObject.h; - } else if (result != null) { - w = result.w; - h = result.h; + } else if (inlineResult != null) { + w = inlineResult.w; + h = inlineResult.h; } } - if (document != null || currentPhotoObject != null || url != null) { + if (w == 0 || h == 0) { + w = h = AndroidUtilities.dp(80); + } + if (documentAttach != null || currentPhotoObject != null || url != null) { String currentPhotoFilter; String currentPhotoFilterThumb = "52_52_b"; if (mediaWebpage) { width = (int) (w / (h / (float) AndroidUtilities.dp(80))); - if (Build.VERSION.SDK_INT >= 11 && isGifDocument) { + if (Build.VERSION.SDK_INT >= 11 && documentAttachType == DOCUMENT_ATTACH_TYPE_GIF) { currentPhotoFilterThumb = currentPhotoFilter = String.format(Locale.US, "%d_%d_b", (int) (width / AndroidUtilities.density), 80); } else { currentPhotoFilter = String.format(Locale.US, "%d_%d", (int) (width / AndroidUtilities.density), 80); @@ -239,25 +278,26 @@ public class ContextLinkCell extends View implements MediaController.FileDownloa currentPhotoFilter = "52_52"; } - if (isGifDocument) { - if (document != null && Build.VERSION.SDK_INT >= 11) { - linkImageView.setImage(document, null, currentPhotoObject != null ? currentPhotoObject.location : null, currentPhotoFilter, document.size, null, false); + if (documentAttachType == DOCUMENT_ATTACH_TYPE_GIF) { + if (documentAttach != null && Build.VERSION.SDK_INT >= 11) { + linkImageView.setImage(documentAttach, null, currentPhotoObject != null ? currentPhotoObject.location : null, currentPhotoFilter, documentAttach.size, ext, false); } else { - linkImageView.setImage(null, url, null, null, currentPhotoObject != null ? currentPhotoObject.location : null, currentPhotoFilter, -1, null, true); + linkImageView.setImage(null, url, null, null, currentPhotoObject != null ? currentPhotoObject.location : null, currentPhotoFilter, -1, ext, true); } } else { if (currentPhotoObject != null) { - linkImageView.setImage(currentPhotoObject.location, currentPhotoFilter, currentPhotoObjectThumb != null ? currentPhotoObjectThumb.location : null, currentPhotoFilterThumb, 0, null, false); + linkImageView.setImage(currentPhotoObject.location, currentPhotoFilter, currentPhotoObjectThumb != null ? currentPhotoObjectThumb.location : null, currentPhotoFilterThumb, 0, ext, false); } else { - linkImageView.setImage(null, url, currentPhotoFilter, null, currentPhotoObjectThumb != null ? currentPhotoObjectThumb.location : null, currentPhotoFilterThumb, -1, null, true); + linkImageView.setImage(null, url, currentPhotoFilter, null, currentPhotoObjectThumb != null ? currentPhotoObjectThumb.location : null, currentPhotoFilterThumb, -1, ext, true); } } drawLinkImageView = true; } if (mediaWebpage) { - if (gif != null) { - width = MeasureSpec.getSize(widthMeasureSpec); + setBackgroundDrawable(null); + if (inlineResult == null) { + width = viewWidth; int height = MeasureSpec.getSize(heightMeasureSpec); setMeasuredDimension(width, height); if (needDivider) { @@ -275,6 +315,7 @@ public class ContextLinkCell extends View implements MediaController.FileDownloa linkImageView.setImageCoords(AndroidUtilities.dp(5), AndroidUtilities.dp(5), width, AndroidUtilities.dp(80)); } } else { + setBackgroundResource(R.drawable.list_selector); int height = 0; if (titleLayout != null && titleLayout.getLineCount() != 0) { height += titleLayout.getLineBottom(titleLayout.getLineCount() - 1); @@ -290,14 +331,23 @@ public class ContextLinkCell extends View implements MediaController.FileDownloa int maxPhotoWidth = AndroidUtilities.dp(52); int x = LocaleController.isRTL ? MeasureSpec.getSize(widthMeasureSpec) - AndroidUtilities.dp(8) - maxPhotoWidth : AndroidUtilities.dp(8); - letterDrawable.setBounds(x, AndroidUtilities.dp(8), x + maxPhotoWidth, AndroidUtilities.dp(62)); + letterDrawable.setBounds(x, AndroidUtilities.dp(8), x + maxPhotoWidth, AndroidUtilities.dp(60)); linkImageView.setImageCoords(x, AndroidUtilities.dp(8), maxPhotoWidth, maxPhotoWidth); } } - public void setLink(TLRPC.BotInlineResult contextResult, boolean media, boolean divider) { + public void setLink(TLRPC.BotInlineResult contextResult, boolean media, boolean divider, boolean shadow) { needDivider = divider; - result = contextResult; + needShadow = shadow; + if (needShadow && shadowDrawable == null) { + shadowDrawable = getContext().getResources().getDrawable(R.drawable.header_shadow); + } + inlineResult = contextResult; + if (inlineResult != null && inlineResult.document != null) { + documentAttach = inlineResult.document; + } else { + documentAttach = null; + } mediaWebpage = media; requestLayout(); updateButtonState(false); @@ -305,13 +355,32 @@ public class ContextLinkCell extends View implements MediaController.FileDownloa public void setGif(TLRPC.Document document, boolean divider) { needDivider = divider; - result = null; - gif = document; + needShadow = false; + inlineResult = null; + documentAttach = document; mediaWebpage = true; requestLayout(); updateButtonState(false); } + public boolean isSticker() { + return documentAttachType == DOCUMENT_ATTACH_TYPE_STICKER; + } + + public boolean showingBitmap() { + return linkImageView.getBitmap() != null; + } + + public TLRPC.Document getDocument() { + return documentAttach; + } + + public void setScaled(boolean value) { + scaled = value; + lastUpdateTime = System.currentTimeMillis(); + invalidate(); + } + @Override protected void onDetachedFromWindow() { super.onDetachedFromWindow(); @@ -333,7 +402,13 @@ public class ContextLinkCell extends View implements MediaController.FileDownloa @Override public boolean onTouchEvent(MotionEvent event) { - if (mediaWebpage || delegate == null || result == null) { + if (Build.VERSION.SDK_INT >= 21 && getBackground() != null) { + if (event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_MOVE) { + getBackground().setHotspot(event.getX(), event.getY()); + } + } + + if (mediaWebpage || delegate == null || inlineResult == null) { return super.onTouchEvent(event); } int x = (int) event.getX(); @@ -341,22 +416,24 @@ public class ContextLinkCell extends View implements MediaController.FileDownloa boolean result = false; int side = AndroidUtilities.dp(48); - if (event.getAction() == MotionEvent.ACTION_DOWN) { - if (letterDrawable.getBounds().contains(x, y)) { - buttonPressed = true; - result = true; - } - } else { - if (buttonPressed) { - if (event.getAction() == MotionEvent.ACTION_UP) { - buttonPressed = false; - playSoundEffect(SoundEffectConstants.CLICK); - delegate.didPressedImage(this); - } else if (event.getAction() == MotionEvent.ACTION_CANCEL) { - buttonPressed = false; - } else if (event.getAction() == MotionEvent.ACTION_MOVE) { - if (!letterDrawable.getBounds().contains(x, y)) { + if (inlineResult != null && inlineResult.content_url != null && inlineResult.content_url.length() > 0) { + if (event.getAction() == MotionEvent.ACTION_DOWN) { + if (letterDrawable.getBounds().contains(x, y)) { + buttonPressed = true; + result = true; + } + } else { + if (buttonPressed) { + if (event.getAction() == MotionEvent.ACTION_UP) { buttonPressed = false; + playSoundEffect(SoundEffectConstants.CLICK); + delegate.didPressedImage(this); + } else if (event.getAction() == MotionEvent.ACTION_CANCEL) { + buttonPressed = false; + } else if (event.getAction() == MotionEvent.ACTION_MOVE) { + if (!letterDrawable.getBounds().contains(x, y)) { + buttonPressed = false; + } } } } @@ -386,7 +463,7 @@ public class ContextLinkCell extends View implements MediaController.FileDownloa } if (linkLayout != null) { - descriptionTextPaint.setColor(0xff316f9f); + descriptionTextPaint.setColor(Theme.MSG_LINK_TEXT_COLOR); canvas.save(); canvas.translate(AndroidUtilities.dp(LocaleController.isRTL ? 8 : AndroidUtilities.leftBaseline), linkY); linkLayout.draw(canvas); @@ -394,12 +471,68 @@ public class ContextLinkCell extends View implements MediaController.FileDownloa } if (!mediaWebpage) { - letterDrawable.draw(canvas); + if (inlineResult != null && inlineResult.type.equals("file")) { + int w = Theme.inlineDocDrawable.getIntrinsicWidth(); + int h = Theme.inlineDocDrawable.getIntrinsicHeight(); + int x = linkImageView.getImageX() + (AndroidUtilities.dp(52) - w) / 2; + int y = linkImageView.getImageY() + (AndroidUtilities.dp(52) - h) / 2; + canvas.drawRect(linkImageView.getImageX(), linkImageView.getImageY(), linkImageView.getImageX() + AndroidUtilities.dp(52), linkImageView.getImageY() + AndroidUtilities.dp(52), LetterDrawable.paint); + Theme.inlineDocDrawable.setBounds(x, y, x + w, y + h); + Theme.inlineDocDrawable.draw(canvas); + } else if (inlineResult != null && (inlineResult.type.equals("audio") || inlineResult.type.equals("voice"))) { + int w = Theme.inlineAudioDrawable.getIntrinsicWidth(); + int h = Theme.inlineAudioDrawable.getIntrinsicHeight(); + int x = linkImageView.getImageX() + (AndroidUtilities.dp(52) - w) / 2; + int y = linkImageView.getImageY() + (AndroidUtilities.dp(52) - h) / 2; + canvas.drawRect(linkImageView.getImageX(), linkImageView.getImageY(), linkImageView.getImageX() + AndroidUtilities.dp(52), linkImageView.getImageY() + AndroidUtilities.dp(52), LetterDrawable.paint); + Theme.inlineAudioDrawable.setBounds(x, y, x + w, y + h); + Theme.inlineAudioDrawable.draw(canvas); + } else if (inlineResult != null && (inlineResult.type.equals("venue") || inlineResult.type.equals("geo"))) { + int w = Theme.inlineLocationDrawable.getIntrinsicWidth(); + int h = Theme.inlineLocationDrawable.getIntrinsicHeight(); + int x = linkImageView.getImageX() + (AndroidUtilities.dp(52) - w) / 2; + int y = linkImageView.getImageY() + (AndroidUtilities.dp(52) - h) / 2; + canvas.drawRect(linkImageView.getImageX(), linkImageView.getImageY(), linkImageView.getImageX() + AndroidUtilities.dp(52), linkImageView.getImageY() + AndroidUtilities.dp(52), LetterDrawable.paint); + Theme.inlineLocationDrawable.setBounds(x, y, x + w, y + h); + Theme.inlineLocationDrawable.draw(canvas); + } else { + letterDrawable.draw(canvas); + } + } else { + if (inlineResult != null && (inlineResult.send_message instanceof TLRPC.TL_botInlineMessageMediaGeo || inlineResult.send_message instanceof TLRPC.TL_botInlineMessageMediaVenue)) { + int w = Theme.inlineLocationDrawable.getIntrinsicWidth(); + int h = Theme.inlineLocationDrawable.getIntrinsicHeight(); + int x = linkImageView.getImageX() + (linkImageView.getImageWidth() - w) / 2; + int y = linkImageView.getImageY() + (linkImageView.getImageHeight() - h) / 2; + canvas.drawRect(linkImageView.getImageX(), linkImageView.getImageY(), linkImageView.getImageX() + linkImageView.getImageWidth(), linkImageView.getImageY() + linkImageView.getImageHeight(), LetterDrawable.paint); + Theme.inlineLocationDrawable.setBounds(x, y, x + w, y + h); + Theme.inlineLocationDrawable.draw(canvas); + } } if (drawLinkImageView) { + canvas.save(); + if (scaled && scale != 0.8f || !scaled && scale != 1.0f) { + long newTime = System.currentTimeMillis(); + long dt = (newTime - lastUpdateTime); + lastUpdateTime = newTime; + if (scaled && scale != 0.8f) { + scale -= dt / 400.0f; + if (scale < 0.8f) { + scale = 0.8f; + } + } else { + scale += dt / 400.0f; + if (scale > 1.0f) { + scale = 1.0f; + } + } + invalidate(); + } + canvas.scale(scale, scale, getMeasuredWidth() / 2, getMeasuredHeight() / 2); linkImageView.draw(canvas); + canvas.restore(); } - if (mediaWebpage) { + if (mediaWebpage && (documentAttachType == DOCUMENT_ATTACH_TYPE_PHOTO || documentAttachType == DOCUMENT_ATTACH_TYPE_GIF)) { radialProgress.draw(canvas); } @@ -410,10 +543,14 @@ public class ContextLinkCell extends View implements MediaController.FileDownloa canvas.drawLine(AndroidUtilities.dp(AndroidUtilities.leftBaseline), getMeasuredHeight() - 1, getMeasuredWidth(), getMeasuredHeight() - 1, paint); } } + if (needShadow && shadowDrawable != null) { + shadowDrawable.setBounds(0, 0, getMeasuredWidth(), AndroidUtilities.dp(3)); + shadowDrawable.draw(canvas); + } } private Drawable getDrawableForCurrentState() { - return buttonState == 1 ? ResourceLoader.buttonStatesDrawables[6] : null; + return buttonState == 1 ? Theme.photoStatesDrawables[5][0] : null; } public void updateButtonState(boolean animated) { @@ -422,27 +559,24 @@ public class ContextLinkCell extends View implements MediaController.FileDownloa } String fileName = null; File cacheFile = null; - if (result != null) { - if (result.photo instanceof TLRPC.TL_photo) { - TLRPC.PhotoSize currentPhotoObject = FileLoader.getClosestPhotoSizeWithSize(result.photo.sizes, AndroidUtilities.getPhotoSize(), true); - if (currentPhotoObject != null) { - currentPhotoObject.size = -1; - } + if (inlineResult != null) { + if (inlineResult.document instanceof TLRPC.TL_document) { + fileName = FileLoader.getAttachFileName(inlineResult.document); + cacheFile = FileLoader.getPathToAttach(inlineResult.document); + } else if (inlineResult.photo instanceof TLRPC.TL_photo) { + TLRPC.PhotoSize currentPhotoObject = FileLoader.getClosestPhotoSizeWithSize(inlineResult.photo.sizes, AndroidUtilities.getPhotoSize(), true); fileName = FileLoader.getAttachFileName(currentPhotoObject); cacheFile = FileLoader.getPathToAttach(currentPhotoObject); - } else if (result.document instanceof TLRPC.TL_document) { - fileName = FileLoader.getAttachFileName(result.document); - cacheFile = FileLoader.getPathToAttach(result.document); - } else if (result.content_url != null) { - fileName = Utilities.MD5(result.content_url) + "." + ImageLoader.getHttpUrlExtension(result.content_url, "jpg"); + } else if (inlineResult.content_url != null) { + fileName = Utilities.MD5(inlineResult.content_url) + "." + ImageLoader.getHttpUrlExtension(inlineResult.content_url, "jpg"); cacheFile = new File(FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE), fileName); - } else if (result.thumb_url != null) { - fileName = Utilities.MD5(result.thumb_url) + "." + ImageLoader.getHttpUrlExtension(result.thumb_url, "jpg"); + } else if (inlineResult.thumb_url != null) { + fileName = Utilities.MD5(inlineResult.thumb_url) + "." + ImageLoader.getHttpUrlExtension(inlineResult.thumb_url, "jpg"); cacheFile = new File(FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE), fileName); } - } else if (gif != null) { - fileName = FileLoader.getAttachFileName(gif); - cacheFile = FileLoader.getPathToAttach(gif); + } else if (documentAttach != null) { + fileName = FileLoader.getAttachFileName(documentAttach); + cacheFile = FileLoader.getPathToAttach(documentAttach); } if (fileName == null) { radialProgress.setBackground(null, false, false); @@ -473,7 +607,7 @@ public class ContextLinkCell extends View implements MediaController.FileDownloa } public TLRPC.BotInlineResult getResult() { - return result; + return inlineResult; } @Override 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 53bb5a867..d7a67358f 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/DialogCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DialogCell.java @@ -395,7 +395,7 @@ public class DialogCell extends BaseCell { if (mess.length() > 150) { mess = mess.substring(0, 150); } - mess = mess.replace("\n", " "); + mess = mess.replace('\n', ' '); messageString = Emoji.replaceEmoji(AndroidUtilities.replaceTags(String.format("%s: %s", name.replace("\n", ""), mess), AndroidUtilities.FLAG_TAG_COLOR), messagePaint.getFontMetricsInt(), AndroidUtilities.dp(20), false); } else { if (message.messageOwner.media != null && !message.isMediaEmpty()) { @@ -407,7 +407,7 @@ public class DialogCell extends BaseCell { if (mess.length() > 150) { mess = mess.substring(0, 150); } - mess = mess.replace("\n", " "); + mess = mess.replace('\n', ' '); messageString = Emoji.replaceEmoji(AndroidUtilities.replaceTags(String.format("%s: %s", name.replace("\n", ""), mess), AndroidUtilities.FLAG_TAG_COLOR), messagePaint.getFontMetricsInt(), AndroidUtilities.dp(20), false); } } @@ -559,7 +559,7 @@ public class DialogCell extends BaseCell { } nameWidth = Math.max(AndroidUtilities.dp(12), nameWidth); - CharSequence nameStringFinal = TextUtils.ellipsize(nameString.replace("\n", " "), currentNamePaint, nameWidth - AndroidUtilities.dp(12), TextUtils.TruncateAt.END); + CharSequence nameStringFinal = TextUtils.ellipsize(nameString.replace('\n', ' '), currentNamePaint, nameWidth - AndroidUtilities.dp(12), TextUtils.TruncateAt.END); try { nameLayout = new StaticLayout(nameStringFinal, currentNamePaint, nameWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); } catch (Exception e) { @@ -609,7 +609,7 @@ public class DialogCell extends BaseCell { if (mess.length() > 150) { mess = mess.substring(0, 150); } - mess = mess.replace("\n", " "); + mess = mess.replace('\n', ' '); messageString = Emoji.replaceEmoji(mess, messagePaint.getFontMetricsInt(), AndroidUtilities.dp(17), false); } messageWidth = Math.max(AndroidUtilities.dp(12), messageWidth); 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 4504abbcc..d2219fc22 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/DrawerProfileCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DrawerProfileCell.java @@ -12,6 +12,8 @@ import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; 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.ColorDrawable; @@ -34,6 +36,7 @@ import org.telegram.tgnet.TLRPC; import org.telegram.ui.Components.AvatarDrawable; import org.telegram.ui.Components.BackupImageView; import org.telegram.ui.Components.LayoutHelper; +import org.telegram.ui.ActionBar.Theme; public class DrawerProfileCell extends FrameLayout { @@ -44,10 +47,11 @@ public class DrawerProfileCell extends FrameLayout { private Rect srcRect = new Rect(); private Rect destRect = new Rect(); private Paint paint = new Paint(); + private int currentColor; public DrawerProfileCell(Context context) { super(context); - setBackgroundColor(0xff4c84b5); + setBackgroundColor(Theme.ACTION_BAR_PROFILE_COLOR); shadowView = new ImageView(context); shadowView.setVisibility(INVISIBLE); @@ -96,6 +100,12 @@ public class DrawerProfileCell extends FrameLayout { @Override protected void onDraw(Canvas canvas) { Drawable backgroundDrawable = ApplicationLoader.getCachedWallpaper(); + int color = ApplicationLoader.getServiceMessageColor(); + if (currentColor != color) { + currentColor = color; + shadowView.getDrawable().setColorFilter(new PorterDuffColorFilter(color | 0xff000000, PorterDuff.Mode.MULTIPLY)); + } + if (ApplicationLoader.isCustomTheme() && backgroundDrawable != null) { phoneTextView.setTextColor(0xffffffff); shadowView.setVisibility(VISIBLE); @@ -133,7 +143,7 @@ public class DrawerProfileCell extends FrameLayout { nameTextView.setText(UserObject.getUserName(user)); phoneTextView.setText(PhoneFormat.getInstance().format("+" + user.phone)); AvatarDrawable avatarDrawable = new AvatarDrawable(user); - avatarDrawable.setColor(0xff5c98cd); + avatarDrawable.setColor(Theme.ACTION_BAR_MAIN_AVATAR_COLOR); avatarImageView.setImage(photo, "50_50", avatarDrawable); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/MentionCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/MentionCell.java index 2a9aba56a..94ffcd3c4 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/MentionCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/MentionCell.java @@ -9,9 +9,11 @@ package org.telegram.ui.Cells; import android.content.Context; +import android.os.Build; import android.text.TextUtils; import android.util.TypedValue; import android.view.Gravity; +import android.view.MotionEvent; import android.widget.LinearLayout; import android.widget.TextView; @@ -66,6 +68,16 @@ public class MentionCell extends LinearLayout { super.onMeasure(MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(36), MeasureSpec.EXACTLY)); } + @Override + public boolean onTouchEvent(MotionEvent event) { + if (Build.VERSION.SDK_INT >= 21 && getBackground() != null) { + if (event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_MOVE) { + getBackground().setHotspot(event.getX(), event.getY()); + } + } + return super.onTouchEvent(event); + } + public void setUser(TLRPC.User user) { if (user == null) { nameTextView.setText(""); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/PhotoPickerPhotoCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/PhotoPickerPhotoCell.java index e39fb48a2..c4d28b1d4 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/PhotoPickerPhotoCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/PhotoPickerPhotoCell.java @@ -52,7 +52,7 @@ public class PhotoPickerPhotoCell extends FrameLayout { super.onMeasure(MeasureSpec.makeMeasureSpec(itemWidth, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(itemWidth, MeasureSpec.EXACTLY)); } - public void setChecked(final boolean checked, boolean animated) { + public void setChecked(final boolean checked, final boolean animated) { checkBox.setChecked(checked, animated); if (animator != null) { animator.cancel(); @@ -69,13 +69,20 @@ public class PhotoPickerPhotoCell extends FrameLayout { animator.addListener(new AnimatorListenerAdapterProxy() { @Override public void onAnimationEnd(Object animation) { - if (animator.equals(animation)) { + if (animator != null && animator.equals(animation)) { animator = null; if (!checked) { setBackgroundColor(0); } } } + + @Override + public void onAnimationCancel(Object animation) { + if (animator != null && animator.equals(animation)) { + animator = null; + } + } }); animator.start(); } else { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ProfileSearchCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ProfileSearchCell.java index dbba717d1..b09451644 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ProfileSearchCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ProfileSearchCell.java @@ -32,6 +32,7 @@ import org.telegram.tgnet.TLObject; import org.telegram.tgnet.TLRPC; import org.telegram.messenger.UserConfig; import org.telegram.ui.Components.AvatarDrawable; +import org.telegram.ui.ActionBar.Theme; public class ProfileSearchCell extends BaseCell { @@ -104,7 +105,7 @@ public class ProfileSearchCell extends BaseCell { onlinePaint = new TextPaint(TextPaint.ANTI_ALIAS_FLAG); onlinePaint.setTextSize(AndroidUtilities.dp(16)); - onlinePaint.setColor(0xff316f9f); + onlinePaint.setColor(Theme.MSG_LINK_TEXT_COLOR); offlinePaint = new TextPaint(TextPaint.ANTI_ALIAS_FLAG); offlinePaint.setTextSize(AndroidUtilities.dp(16)); @@ -263,7 +264,7 @@ public class ProfileSearchCell extends BaseCell { } else if (user != null) { nameString2 = UserObject.getUserName(user); } - nameString = nameString2.replace("\n", " "); + nameString = nameString2.replace('\n', ' '); } if (nameString.length() == 0) { if (user != null && user.phone != null && user.phone.length() != 0) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/SendLocationCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/SendLocationCell.java index e78a8c390..e7d11b6ff 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/SendLocationCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/SendLocationCell.java @@ -17,7 +17,7 @@ import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.LocaleController; import org.telegram.messenger.R; import org.telegram.ui.Components.LayoutHelper; -import org.telegram.ui.Components.SimpleTextView; +import org.telegram.ui.ActionBar.SimpleTextView; public class SendLocationCell extends FrameLayout { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ShareDialogCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ShareDialogCell.java index 5e45e5262..d9793952e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ShareDialogCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ShareDialogCell.java @@ -9,9 +9,11 @@ package org.telegram.ui.Cells; import android.content.Context; +import android.os.Build; import android.text.TextUtils; import android.util.TypedValue; import android.view.Gravity; +import android.view.MotionEvent; import android.widget.FrameLayout; import android.widget.TextView; @@ -34,6 +36,7 @@ public class ShareDialogCell extends FrameLayout { public ShareDialogCell(Context context) { super(context); + setBackgroundResource(R.drawable.list_selector); imageView = new BackupImageView(context); imageView.setRoundRadius(AndroidUtilities.dp(27)); @@ -61,6 +64,16 @@ public class ShareDialogCell extends FrameLayout { super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(100), MeasureSpec.EXACTLY)); } + @Override + public boolean onTouchEvent(MotionEvent event) { + if (Build.VERSION.SDK_INT >= 21 && getBackground() != null) { + if (event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_MOVE) { + getBackground().setHotspot(event.getX(), event.getY()); + } + } + return super.onTouchEvent(event); + } + public void setDialog(TLRPC.Dialog dialog, boolean checked, CharSequence name) { int lower_id = (int) dialog.id; TLRPC.FileLocation photo = null; 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 5f6238ec1..63475c9b3 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/SharedDocumentCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/SharedDocumentCell.java @@ -146,7 +146,7 @@ public class SharedDocumentCell extends FrameLayout implements MediaController.F } if (color == -1) { int idx; - String ext = (idx = name.lastIndexOf(".")) == -1 ? "" : name.substring(idx + 1); + String ext = (idx = name.lastIndexOf('.')) == -1 ? "" : name.substring(idx + 1); if (ext.length() != 0) { color = ext.charAt(0) % icons.length; } else { @@ -198,34 +198,49 @@ public class SharedDocumentCell extends FrameLayout implements MediaController.F checkBox.setChecked(checked, animated); } - public void setDocument(MessageObject document, boolean divider) { + public void setDocument(MessageObject messageObject, boolean divider) { needDivider = divider; - message = document; + message = messageObject; loaded = false; loading = false; - if (document != null && document.messageOwner.media != null && document.messageOwner.media.document != null) { + if (messageObject != null && messageObject.getDocument() != null) { int idx; - String name = FileLoader.getDocumentFileName(document.messageOwner.media.document); - if (name.length() == 0) { - if (document.isMusic()) { - name = document.getMusicAuthor() + " - " + document.getMusicTitle(); + String name = null; + if (messageObject.isMusic()) { + TLRPC.Document document; + if (messageObject.type == 0) { + document = messageObject.messageOwner.media.webpage.document; + } else { + document = messageObject.messageOwner.media.document; + } + for (int a = 0; a < document.attributes.size(); a++) { + TLRPC.DocumentAttribute attribute = document.attributes.get(a); + if (attribute instanceof TLRPC.TL_documentAttributeAudio) { + if (attribute.performer != null && attribute.performer.length() != 0 || attribute.title != null && attribute.title.length() != 0) { + name = messageObject.getMusicAuthor() + " - " + messageObject.getMusicTitle(); + } + } } } + String fileName = FileLoader.getDocumentFileName(messageObject.getDocument()); + if (name == null) { + name = fileName; + } + nameTextView.setText(name); placeholderImabeView.setVisibility(VISIBLE); extTextView.setVisibility(VISIBLE); - placeholderImabeView.setImageResource(getThumbForNameOrMime(name, document.messageOwner.media.document.mime_type)); - nameTextView.setText(name); - extTextView.setText((idx = name.lastIndexOf(".")) == -1 ? "" : name.substring(idx + 1).toLowerCase()); - if (document.messageOwner.media.document.thumb instanceof TLRPC.TL_photoSizeEmpty || document.messageOwner.media.document.thumb == null) { + placeholderImabeView.setImageResource(getThumbForNameOrMime(fileName, messageObject.getDocument().mime_type)); + extTextView.setText((idx = fileName.lastIndexOf('.')) == -1 ? "" : fileName.substring(idx + 1).toLowerCase()); + if (messageObject.getDocument().thumb instanceof TLRPC.TL_photoSizeEmpty || messageObject.getDocument().thumb == null) { thumbImageView.setVisibility(INVISIBLE); thumbImageView.setImageBitmap(null); } else { thumbImageView.setVisibility(VISIBLE); - thumbImageView.setImage(document.messageOwner.media.document.thumb.location, "40_40", (Drawable) null); + thumbImageView.setImage(messageObject.getDocument().thumb.location, "40_40", (Drawable) null); } - long date = (long) document.messageOwner.date * 1000; - dateTextView.setText(String.format("%s, %s", AndroidUtilities.formatFileSize(document.messageOwner.media.document.size), LocaleController.formatString("formatDateAtTime", R.string.formatDateAtTime, LocaleController.getInstance().formatterYear.format(new Date(date)), LocaleController.getInstance().formatterDay.format(new Date(date))))); + long date = (long) messageObject.messageOwner.date * 1000; + dateTextView.setText(String.format("%s, %s", AndroidUtilities.formatFileSize(messageObject.getDocument().size), LocaleController.formatString("formatDateAtTime", R.string.formatDateAtTime, LocaleController.getInstance().formatterYear.format(new Date(date)), LocaleController.getInstance().formatterDay.format(new Date(date))))); } else { nameTextView.setText(""); extTextView.setText(""); @@ -248,7 +263,7 @@ public class SharedDocumentCell extends FrameLayout implements MediaController.F if (message.messageOwner.attachPath == null || message.messageOwner.attachPath.length() == 0 || !(new File(message.messageOwner.attachPath).exists())) { cacheFile = FileLoader.getPathToMessage(message.messageOwner); if (!cacheFile.exists()) { - fileName = FileLoader.getAttachFileName(message.messageOwner.media.document); + fileName = FileLoader.getAttachFileName(message.getDocument()); } } loaded = false; @@ -286,7 +301,7 @@ public class SharedDocumentCell extends FrameLayout implements MediaController.F } } - public MessageObject getDocument() { + public MessageObject getMessage() { return message; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/SharedLinkCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/SharedLinkCell.java index 48d272883..4693f4890 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/SharedLinkCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/SharedLinkCell.java @@ -10,13 +10,11 @@ package org.telegram.ui.Cells; import android.annotation.SuppressLint; import android.content.Context; -import android.content.Intent; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Build; -import android.provider.Browser; import android.text.Layout; import android.text.StaticLayout; import android.text.TextPaint; @@ -33,11 +31,13 @@ import org.telegram.messenger.MessageObject; import org.telegram.messenger.FileLoader; import org.telegram.messenger.FileLog; import org.telegram.messenger.R; +import org.telegram.messenger.browser.Browser; import org.telegram.tgnet.TLRPC; import org.telegram.ui.Components.CheckBox; import org.telegram.ui.Components.LayoutHelper; import org.telegram.ui.Components.LetterDrawable; import org.telegram.ui.Components.LinkPath; +import org.telegram.ui.ActionBar.Theme; import java.io.File; import java.util.ArrayList; @@ -100,7 +100,7 @@ public class SharedLinkCell extends FrameLayout { paint.setStrokeWidth(1); urlPaint = new Paint(); - urlPaint.setColor(0x33316f9f); + urlPaint.setColor(Theme.MSG_LINK_SELECT_BACKGROUND_COLOR); } setWillNotDraw(false); @@ -216,7 +216,7 @@ public class SharedLinkCell extends FrameLayout { if (title != null) { try { int width = (int) Math.ceil(titleTextPaint.measureText(title)); - CharSequence titleFinal = TextUtils.ellipsize(title.replace("\n", " "), titleTextPaint, Math.min(width, maxWidth), TextUtils.TruncateAt.END); + CharSequence titleFinal = TextUtils.ellipsize(title.replace('\n', ' '), titleTextPaint, Math.min(width, maxWidth), TextUtils.TruncateAt.END); titleLayout = new StaticLayout(titleFinal, titleTextPaint, maxWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); } catch (Exception e) { FileLog.e("tmessages", e); @@ -252,7 +252,7 @@ public class SharedLinkCell extends FrameLayout { try { String link = links.get(a); int width = (int) Math.ceil(descriptionTextPaint.measureText(link)); - CharSequence linkFinal = TextUtils.ellipsize(link.replace("\n", " "), descriptionTextPaint, Math.min(width, maxWidth), TextUtils.TruncateAt.MIDDLE); + CharSequence linkFinal = TextUtils.ellipsize(link.replace('\n', ' '), descriptionTextPaint, Math.min(width, maxWidth), TextUtils.TruncateAt.MIDDLE); StaticLayout layout = new StaticLayout(linkFinal, descriptionTextPaint, maxWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); linkY = description2Y; if (descriptionLayout2 != null && descriptionLayout2.getLineCount() != 0) { @@ -378,7 +378,7 @@ public class SharedLinkCell extends FrameLayout { pressedLink = a; linkPreviewPressed = true; try { - urlPath.setCurrentLayout(layout, 0); + urlPath.setCurrentLayout(layout, 0, 0); layout.getSelectionPath(0, layout.getText().length(), urlPath); } catch (Exception e) { FileLog.e("tmessages", e); @@ -390,7 +390,7 @@ public class SharedLinkCell extends FrameLayout { if (webPage != null && Build.VERSION.SDK_INT >= 16 && webPage.embed_url != null && webPage.embed_url.length() != 0) { delegate.needOpenWebView(webPage); } else { - AndroidUtilities.openUrl(getContext(), links.get(pressedLink)); + Browser.openUrl(getContext(), links.get(pressedLink)); } } catch (Exception e) { FileLog.e("tmessages", e); @@ -461,7 +461,7 @@ public class SharedLinkCell extends FrameLayout { } if (!linkLayout.isEmpty()) { - descriptionTextPaint.setColor(0xff316f9f); + descriptionTextPaint.setColor(Theme.MSG_LINK_TEXT_COLOR); int offset = 0; for (int a = 0; a < linkLayout.size(); a++) { StaticLayout layout = linkLayout.get(a); 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 c703e0353..333a86877 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/SharedPhotoVideoCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/SharedPhotoVideoCell.java @@ -123,13 +123,20 @@ public class SharedPhotoVideoCell extends FrameLayoutFixed { animator.addListener(new AnimatorListenerAdapterProxy() { @Override public void onAnimationEnd(Object animation) { - if (animator.equals(animation)) { + if (animator != null && animator.equals(animation)) { animator = null; if (!checked) { setBackgroundColor(0); } } } + + @Override + public void onAnimationCancel(Object animation) { + if (animator != null && animator.equals(animation)) { + animator = null; + } + } }); animator.start(); } else { @@ -229,8 +236,8 @@ public class SharedPhotoVideoCell extends FrameLayoutFixed { if (messageObject.isVideo()) { photoVideoView.videoInfoContainer.setVisibility(VISIBLE); int duration = 0; - for (int b = 0; b < messageObject.messageOwner.media.document.attributes.size(); b++) { - TLRPC.DocumentAttribute attribute = messageObject.messageOwner.media.document.attributes.get(b); + for (int b = 0; b < messageObject.getDocument().attributes.size(); b++) { + TLRPC.DocumentAttribute attribute = messageObject.getDocument().attributes.get(b); if (attribute instanceof TLRPC.TL_documentAttributeVideo) { duration = attribute.duration; break; @@ -239,8 +246,8 @@ public class SharedPhotoVideoCell extends FrameLayoutFixed { int minutes = duration / 60; int seconds = duration - minutes * 60; photoVideoView.videoTextView.setText(String.format("%d:%02d", minutes, seconds)); - if (messageObject.messageOwner.media.document.thumb != null) { - TLRPC.FileLocation location = messageObject.messageOwner.media.document.thumb.location; + if (messageObject.getDocument().thumb != null) { + TLRPC.FileLocation location = messageObject.getDocument().thumb.location; photoVideoView.imageView.setImage(null, null, null, ApplicationLoader.applicationContext.getResources().getDrawable(R.drawable.photo_placeholder_in), null, location, "b", null, 0); } else { photoVideoView.imageView.setImageResource(R.drawable.photo_placeholder_in); 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 f04f7e70b..d8dc1d564 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/StickerSetCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/StickerSetCell.java @@ -26,6 +26,7 @@ import org.telegram.messenger.AnimationCompat.ViewProxy; import org.telegram.messenger.LocaleController; import org.telegram.messenger.R; import org.telegram.tgnet.TLRPC; +import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Components.BackupImageView; import org.telegram.ui.Components.LayoutHelper; @@ -76,21 +77,10 @@ public class StickerSetCell extends FrameLayout { optionsButton = new ImageView(context); optionsButton.setFocusable(false); - optionsButton.setBackgroundResource(R.drawable.bar_selector_grey); + optionsButton.setBackgroundDrawable(Theme.createBarSelectorDrawable(Theme.ACTION_BAR_AUDIO_SELECTOR_COLOR)); optionsButton.setImageResource(R.drawable.doc_actions_b); optionsButton.setScaleType(ImageView.ScaleType.CENTER); addView(optionsButton, LayoutHelper.createFrame(40, 40, (LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.TOP)); - - /*ActionBarMenuItem menuItem = new ActionBarMenuItem(context, null, R.drawable.bar_selector_grey); - menuItem.setIcon(R.drawable.doc_actions_b); - addView(menuItem, LayoutHelper.createFrame(40, 40, (LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.TOP, LocaleController.isRTL ? 40 : 0, 0, LocaleController.isRTL ? 0 : 40, 0)); - menuItem.addSubItem(1, "test", 0); - menuItem.addSubItem(2, "test", 0); - menuItem.addSubItem(3, "test", 0); - menuItem.addSubItem(4, "test", 0); - menuItem.addSubItem(5, "test", 0); - menuItem.addSubItem(6, "test", 0); - menuItem.addSubItem(7, "test", 0);*/ } @Override 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 0cc41f21f..cb9751307 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCell.java @@ -10,58 +10,78 @@ package org.telegram.ui.Cells; import android.content.Context; import android.graphics.drawable.Drawable; -import android.text.TextUtils; -import android.util.TypedValue; import android.view.Gravity; import android.widget.FrameLayout; import android.widget.ImageView; -import android.widget.TextView; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.LocaleController; -import org.telegram.ui.Components.LayoutHelper; +import org.telegram.ui.ActionBar.SimpleTextView; public class TextCell extends FrameLayout { - private TextView textView; - private TextView valueTextView; + private SimpleTextView textView; + private SimpleTextView valueTextView; private ImageView imageView; private ImageView valueImageView; public TextCell(Context context) { super(context); - textView = new TextView(context); + textView = new SimpleTextView(context); textView.setTextColor(0xff212121); - textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); - textView.setLines(1); - textView.setMaxLines(1); - textView.setSingleLine(true); - textView.setEllipsize(TextUtils.TruncateAt.END); - textView.setGravity((LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.CENTER_VERTICAL); - addView(textView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, LocaleController.isRTL ? 16 : 71, 0, LocaleController.isRTL ? 71 : 16, 0)); + textView.setTextSize(16); + textView.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); + addView(textView); - valueTextView = new TextView(context); + valueTextView = new SimpleTextView(context); valueTextView.setTextColor(0xff2f8cc9); - valueTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); - valueTextView.setLines(1); - valueTextView.setMaxLines(1); - valueTextView.setSingleLine(true); - valueTextView.setGravity((LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.CENTER_VERTICAL); - addView(valueTextView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, (LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.TOP, LocaleController.isRTL ? 24 : 0, 0, LocaleController.isRTL ? 0 : 24, 0)); + valueTextView.setTextSize(16); + valueTextView.setGravity(LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT); + addView(valueTextView); imageView = new ImageView(context); imageView.setScaleType(ImageView.ScaleType.CENTER); - addView(imageView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, LocaleController.isRTL ? 0 : 16, 5, LocaleController.isRTL ? 16 : 0, 0)); + addView(imageView); valueImageView = new ImageView(context); valueImageView.setScaleType(ImageView.ScaleType.CENTER); - addView(valueImageView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, (LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.CENTER_VERTICAL, LocaleController.isRTL ? 24 : 0, 0, LocaleController.isRTL ? 0 : 24, 0)); + addView(valueImageView); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - super.onMeasure(MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(48), MeasureSpec.EXACTLY)); + int width = MeasureSpec.getSize(widthMeasureSpec); + int height = AndroidUtilities.dp(48); + + valueTextView.measure(MeasureSpec.makeMeasureSpec(width - AndroidUtilities.dp(24), MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(20), MeasureSpec.EXACTLY)); + textView.measure(MeasureSpec.makeMeasureSpec(width - AndroidUtilities.dp(71 + 24), MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(20), MeasureSpec.EXACTLY)); + imageView.measure(MeasureSpec.makeMeasureSpec(width, MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(height, MeasureSpec.AT_MOST)); + valueImageView.measure(MeasureSpec.makeMeasureSpec(width, MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(height, MeasureSpec.AT_MOST)); + + setMeasuredDimension(width, AndroidUtilities.dp(48)); + } + + @Override + protected void onLayout(boolean changed, int left, int top, int right, int bottom) { + int height = bottom - top; + int width = right - left; + + int viewTop = (height - valueTextView.getTextHeight()) / 2; + int viewLeft = LocaleController.isRTL ? AndroidUtilities.dp(24) : 0; + valueTextView.layout(viewLeft, viewTop, viewLeft + valueTextView.getMeasuredWidth(), viewTop + valueTextView.getMeasuredHeight()); + + viewTop = (height - textView.getTextHeight()) / 2; + viewLeft = !LocaleController.isRTL ? AndroidUtilities.dp(71) : AndroidUtilities.dp(24); + textView.layout(viewLeft, viewTop, viewLeft + textView.getMeasuredWidth(), viewTop + textView.getMeasuredHeight()); + + viewTop = AndroidUtilities.dp(5); + viewLeft = !LocaleController.isRTL ? AndroidUtilities.dp(16) : width - imageView.getMeasuredWidth() - AndroidUtilities.dp(16); + imageView.layout(viewLeft, viewTop, viewLeft + imageView.getMeasuredWidth(), viewTop + imageView.getMeasuredHeight()); + + viewTop = (height - valueImageView.getMeasuredHeight()) / 2; + viewLeft = LocaleController.isRTL ? AndroidUtilities.dp(24) : width - valueImageView.getMeasuredWidth() - AndroidUtilities.dp(24); + valueImageView.layout(viewLeft, viewTop, viewLeft + valueImageView.getMeasuredWidth(), viewTop + valueImageView.getMeasuredHeight()); } public void setTextColor(int color) { @@ -70,6 +90,7 @@ public class TextCell extends FrameLayout { public void setText(String text) { textView.setText(text); + valueTextView.setText(null); imageView.setVisibility(INVISIBLE); valueTextView.setVisibility(INVISIBLE); valueImageView.setVisibility(INVISIBLE); @@ -77,6 +98,7 @@ public class TextCell extends FrameLayout { public void setTextAndIcon(String text, int resId) { textView.setText(text); + valueTextView.setText(null); imageView.setImageResource(resId); imageView.setVisibility(VISIBLE); valueTextView.setVisibility(INVISIBLE); @@ -94,6 +116,7 @@ public class TextCell extends FrameLayout { public void setTextAndValueDrawable(String text, Drawable drawable) { textView.setText(text); + valueTextView.setText(null); valueImageView.setVisibility(VISIBLE); valueImageView.setImageDrawable(drawable); valueTextView.setVisibility(INVISIBLE); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCheckCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCheckCell.java index 46c40454a..71af0bb96 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCheckCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCheckCell.java @@ -12,6 +12,7 @@ import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.os.Build; +import android.text.TextUtils; import android.util.TypedValue; import android.view.Gravity; import android.widget.TextView; @@ -29,6 +30,7 @@ public class TextCheckCell extends FrameLayoutFixed { private Switch checkBox; private static Paint paint; private boolean needDivider; + private boolean isMultiline; public TextCheckCell(Context context) { super(context); @@ -46,7 +48,8 @@ public class TextCheckCell extends FrameLayoutFixed { textView.setMaxLines(1); textView.setSingleLine(true); textView.setGravity((LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.CENTER_VERTICAL); - addView(textView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, 17, 0, 17, 0)); + textView.setEllipsize(TextUtils.TruncateAt.END); + addView(textView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, LocaleController.isRTL ? 64 : 17, 0, LocaleController.isRTL ? 17 : 64, 0)); valueTextView = new TextView(context); valueTextView.setTextColor(0xff8a8a8a); @@ -56,7 +59,8 @@ public class TextCheckCell extends FrameLayoutFixed { valueTextView.setMaxLines(1); valueTextView.setSingleLine(true); valueTextView.setPadding(0, 0, 0, 0); - addView(valueTextView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, 17, 35, 17, 0)); + valueTextView.setEllipsize(TextUtils.TruncateAt.END); + addView(valueTextView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, LocaleController.isRTL ? 64 : 17, 35, LocaleController.isRTL ? 17 : 64, 0)); checkBox = new Switch(context); checkBox.setDuplicateParentStateEnabled(false); @@ -68,7 +72,11 @@ public class TextCheckCell extends FrameLayoutFixed { @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(valueTextView.getVisibility() == VISIBLE ? 64 : 48) + (needDivider ? 1 : 0), MeasureSpec.EXACTLY)); + if (isMultiline) { + super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); + } else { + super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(valueTextView.getVisibility() == VISIBLE ? 64 : 48) + (needDivider ? 1 : 0), MeasureSpec.EXACTLY)); + } } public void setTextAndCheck(String text, boolean checked, boolean divider) { @@ -77,6 +85,7 @@ public class TextCheckCell extends FrameLayoutFixed { checkBox.resetLayout(); checkBox.requestLayout(); } + isMultiline = false; checkBox.setChecked(checked); needDivider = divider; valueTextView.setVisibility(GONE); @@ -87,7 +96,7 @@ public class TextCheckCell extends FrameLayoutFixed { setWillNotDraw(!divider); } - public void setTextAndValueAndCheck(String text, String value, boolean checked, boolean divider) { + public void setTextAndValueAndCheck(String text, String value, boolean checked, boolean multiline, boolean divider) { textView.setText(text); valueTextView.setText(value); if (Build.VERSION.SDK_INT < 11) { @@ -97,6 +106,20 @@ public class TextCheckCell extends FrameLayoutFixed { checkBox.setChecked(checked); needDivider = divider; valueTextView.setVisibility(VISIBLE); + isMultiline = multiline; + if (multiline) { + valueTextView.setLines(0); + valueTextView.setMaxLines(0); + valueTextView.setSingleLine(false); + valueTextView.setEllipsize(null); + valueTextView.setPadding(0, 0, 0, AndroidUtilities.dp(11)); + } else { + valueTextView.setLines(1); + valueTextView.setMaxLines(1); + valueTextView.setSingleLine(true); + valueTextView.setEllipsize(TextUtils.TruncateAt.END); + valueTextView.setPadding(0, 0, 0, 0); + } LayoutParams layoutParams = (LayoutParams) textView.getLayoutParams(); layoutParams.height = LayoutParams.WRAP_CONTENT; layoutParams.topMargin = AndroidUtilities.dp(10); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextInfoPrivacyCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextInfoPrivacyCell.java index baf0f8279..b008bb767 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextInfoPrivacyCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextInfoPrivacyCell.java @@ -18,6 +18,7 @@ import android.widget.TextView; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.LocaleController; import org.telegram.ui.Components.LayoutHelper; +import org.telegram.ui.ActionBar.Theme; public class TextInfoPrivacyCell extends FrameLayout { @@ -28,7 +29,7 @@ public class TextInfoPrivacyCell extends FrameLayout { textView = new TextView(context); textView.setTextColor(0xff808080); - textView.setLinkTextColor(0xff316f9f); + textView.setLinkTextColor(Theme.MSG_LINK_TEXT_COLOR); textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); textView.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); textView.setPadding(0, AndroidUtilities.dp(10), 0, AndroidUtilities.dp(17)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/UserCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/UserCell.java index ecc6b8ae7..257eb9c58 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/UserCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/UserCell.java @@ -27,7 +27,7 @@ import org.telegram.ui.Components.BackupImageView; import org.telegram.ui.Components.CheckBox; import org.telegram.ui.Components.CheckBoxSquare; import org.telegram.ui.Components.LayoutHelper; -import org.telegram.ui.Components.SimpleTextView; +import org.telegram.ui.ActionBar.SimpleTextView; public class UserCell extends FrameLayout { @@ -89,17 +89,21 @@ public class UserCell extends FrameLayout { if (admin) { adminImage = new ImageView(context); - adminImage.setImageResource(R.drawable.admin_star); addView(adminImage, LayoutHelper.createFrame(16, 16, (LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.TOP, LocaleController.isRTL ? 24 : 0, 13.5f, LocaleController.isRTL ? 0 : 24, 0)); } } - public void setIsAdmin(boolean value) { + public void setIsAdmin(int value) { if (adminImage == null) { return; } - adminImage.setVisibility(value ? VISIBLE : GONE); - nameTextView.setPadding(LocaleController.isRTL && value ? AndroidUtilities.dp(16) : 0, 0, !LocaleController.isRTL && value ? AndroidUtilities.dp(16) : 0, 0); + adminImage.setVisibility(value != 0 ? VISIBLE : GONE); + nameTextView.setPadding(LocaleController.isRTL && value != 0 ? AndroidUtilities.dp(16) : 0, 0, !LocaleController.isRTL && value != 0 ? AndroidUtilities.dp(16) : 0, 0); + if (value == 1) { + adminImage.setImageResource(R.drawable.admin_star); + } else if (value == 2) { + adminImage.setImageResource(R.drawable.admin_star2); + } } public void setData(TLObject user, CharSequence name, CharSequence status, int resId) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/WallpaperCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/WallpaperCell.java index d42160a75..a37de6fe2 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/WallpaperCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/WallpaperCell.java @@ -16,7 +16,6 @@ import android.widget.FrameLayout; import android.widget.ImageView; import org.telegram.messenger.AndroidUtilities; -import org.telegram.messenger.FileLoader; import org.telegram.messenger.R; import org.telegram.tgnet.TLRPC; import org.telegram.ui.Components.BackupImageView; @@ -64,7 +63,18 @@ public class WallpaperCell extends FrameLayout { imageView.setImageBitmap(null); imageView.setBackgroundColor(0xff000000 | wallpaper.bg_color); } else { - TLRPC.PhotoSize size = FileLoader.getClosestPhotoSizeWithSize(wallpaper.sizes, AndroidUtilities.dp(100)); + int side = AndroidUtilities.dp(100); + TLRPC.PhotoSize size = null; + for (int a = 0; a < wallpaper.sizes.size(); a++) { + TLRPC.PhotoSize obj = wallpaper.sizes.get(a); + if (obj == null) { + continue; + } + int currentSide = obj.w >= obj.h ? obj.w : obj.h; + if (size == null || side > 100 && size.location != null && size.location.dc_id == Integer.MIN_VALUE || obj instanceof TLRPC.TL_photoCachedSize || currentSide <= side) { + size = obj; + } + } if (size != null && size.location != null) { imageView.setImage(size.location, "100_100", (Drawable) null); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChangePhoneActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChangePhoneActivity.java index 037b50730..4add7d3e1 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChangePhoneActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChangePhoneActivity.java @@ -1147,7 +1147,7 @@ public class ChangePhoneActivity extends BaseFragment { timeText.setText(LocaleController.formatString("SmsText", R.string.SmsText, 1, 0)); } createTimer(); - } else if (currentType == 2 && nextType == 4) { + } else if (currentType == 2 && (nextType == 4 || nextType == 3)) { timeText.setVisibility(VISIBLE); timeText.setText(LocaleController.formatString("CallText", R.string.CallText, 2, 0)); problemText.setVisibility(time < 1000 ? VISIBLE : GONE); @@ -1220,7 +1220,7 @@ public class ChangePhoneActivity extends BaseFragment { if (time >= 1000) { int minutes = time / 1000 / 60; int seconds = time / 1000 - minutes * 60; - if (nextType == 4) { + if (nextType == 4 || nextType == 3) { timeText.setText(LocaleController.formatString("CallText", R.string.CallText, minutes, seconds)); } else if (nextType == 2) { timeText.setText(LocaleController.formatString("SmsText", R.string.SmsText, minutes, seconds)); @@ -1239,25 +1239,33 @@ public class ChangePhoneActivity extends BaseFragment { waitingForEvent = false; destroyCodeTimer(); resendCode(); - } else { - timeText.setText(LocaleController.getString("Calling", R.string.Calling)); - createCodeTimer(); - TLRPC.TL_auth_resendCode req = new TLRPC.TL_auth_resendCode(); - req.phone_number = requestPhone; - req.phone_code_hash = phoneHash; - ConnectionsManager.getInstance().sendRequest(req, new RequestDelegate() { - @Override - public void run(TLObject response, final TLRPC.TL_error error) { - if (error != null && error.text != null) { - AndroidUtilities.runOnUIThread(new Runnable() { - @Override - public void run() { - lastError = error.text; - } - }); + } else if (currentType == 2) { + if (nextType == 4) { + timeText.setText(LocaleController.getString("Calling", R.string.Calling)); + createCodeTimer(); + TLRPC.TL_auth_resendCode req = new TLRPC.TL_auth_resendCode(); + req.phone_number = requestPhone; + req.phone_code_hash = phoneHash; + ConnectionsManager.getInstance().sendRequest(req, new RequestDelegate() { + @Override + public void run(TLObject response, final TLRPC.TL_error error) { + if (error != null && error.text != null) { + AndroidUtilities.runOnUIThread(new Runnable() { + @Override + public void run() { + lastError = error.text; + } + }); + } } - } - }, ConnectionsManager.RequestFlagFailOnServerErrors); + }, ConnectionsManager.RequestFlagFailOnServerErrors); + } else if (nextType == 3) { + AndroidUtilities.setWaitingForSms(false); + NotificationCenter.getInstance().removeObserver(this, NotificationCenter.didReceiveSmsCode); + waitingForEvent = false; + destroyCodeTimer(); + resendCode(); + } } } } @@ -1320,7 +1328,7 @@ public class ChangePhoneActivity extends BaseFragment { finishFragment(); } else { lastError = error.text; - if (currentType == 3 && (nextType == 4 || nextType == 2) || currentType == 2 && nextType == 4) { + if (currentType == 3 && (nextType == 4 || nextType == 2) || currentType == 2 && (nextType == 4 || nextType == 3)) { createTimer(); } if (currentType == 2) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChannelIntroActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChannelIntroActivity.java index 1c1b286c0..1ad5b77b8 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChannelIntroActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChannelIntroActivity.java @@ -23,6 +23,7 @@ import org.telegram.messenger.LocaleController; import org.telegram.messenger.R; import org.telegram.ui.ActionBar.ActionBar; import org.telegram.ui.ActionBar.BaseFragment; +import org.telegram.ui.ActionBar.Theme; public class ChannelIntroActivity extends BaseFragment { @@ -33,10 +34,9 @@ public class ChannelIntroActivity extends BaseFragment { @Override public View createView(Context context) { - - actionBar.setBackgroundColor(0xffffffff); + actionBar.setBackgroundColor(Theme.ACTION_BAR_CHANNEL_INTRO_COLOR); actionBar.setBackButtonImage(R.drawable.pl_back); - actionBar.setItemsBackground(R.drawable.bar_selector_audio); + actionBar.setItemsBackgroundColor(Theme.ACTION_BAR_CHANNEL_INTRO_SELECTOR_COLOR); actionBar.setCastShadows(false); if (!AndroidUtilities.isTablet()) { actionBar.showActionModeTop(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChannelUsersActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChannelUsersActivity.java index fe51b1ce5..78c2ff5df 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChannelUsersActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChannelUsersActivity.java @@ -209,9 +209,9 @@ public class ChannelUsersActivity extends BaseFragment implements NotificationCe args.putBoolean("returnAsResult", true); args.putBoolean("needForwardCount", false); args.putBoolean("allowUsernameSearch", true); - if (isMegagroup) { + /*if (isMegagroup) { args.putBoolean("allowBots", false); - } + }*/ args.putString("selectAlertString", LocaleController.getString("ChannelAddUserAdminAlert", R.string.ChannelAddUserAdminAlert)); ContactsActivity fragment = new ContactsActivity(args); fragment.setDelegate(new ContactsActivity.ContactsActivityDelegate() { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java index 899037f59..eeeb857e4 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java @@ -21,6 +21,7 @@ import android.content.pm.PackageManager; import android.content.res.Configuration; import android.database.Cursor; import android.graphics.Bitmap; +import android.graphics.Canvas; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.media.ExifInterface; @@ -65,6 +66,7 @@ import org.telegram.messenger.SendMessagesHelper; import org.telegram.messenger.UserObject; import org.telegram.messenger.Utilities; import org.telegram.messenger.VideoEditedInfo; +import org.telegram.messenger.browser.Browser; import org.telegram.messenger.query.BotQuery; import org.telegram.messenger.query.MessagesSearchQuery; import org.telegram.messenger.query.MessagesQuery; @@ -88,45 +90,40 @@ import org.telegram.messenger.UserConfig; import org.telegram.ui.ActionBar.ActionBarLayout; import org.telegram.ui.ActionBar.BackDrawable; import org.telegram.ui.ActionBar.BottomSheet; +import org.telegram.ui.ActionBar.SimpleTextView; import org.telegram.ui.Adapters.MentionsAdapter; import org.telegram.ui.Adapters.StickersAdapter; import org.telegram.messenger.AnimationCompat.AnimatorListenerAdapterProxy; import org.telegram.messenger.AnimationCompat.AnimatorSetProxy; import org.telegram.messenger.AnimationCompat.ObjectAnimatorProxy; import org.telegram.messenger.AnimationCompat.ViewProxy; +import org.telegram.ui.Cells.BotSwitchCell; import org.telegram.ui.Cells.ChatActionCell; -import org.telegram.ui.Cells.ChatAudioCell; import org.telegram.ui.Cells.ChatBaseCell; -import org.telegram.ui.Cells.ChatContactCell; import org.telegram.ui.Cells.ChatLoadingCell; import org.telegram.ui.ActionBar.ActionBar; import org.telegram.ui.ActionBar.ActionBarMenu; import org.telegram.ui.ActionBar.ActionBarMenuItem; import org.telegram.ui.Cells.ChatMessageCell; -import org.telegram.ui.Cells.ChatMusicCell; import org.telegram.ui.Cells.ChatUnreadCell; import org.telegram.ui.Cells.CheckBoxCell; import org.telegram.ui.Components.AlertsCreator; -import org.telegram.ui.Components.AvatarDrawable; import org.telegram.ui.Components.BackupImageView; import org.telegram.ui.ActionBar.BaseFragment; import org.telegram.ui.Cells.BotHelpCell; import org.telegram.ui.Components.ChatActivityEnterView; import org.telegram.messenger.ImageReceiver; import org.telegram.ui.Components.ChatAttachView; +import org.telegram.ui.Components.ChatAvatarContainer; import org.telegram.ui.Components.PlayerView; import org.telegram.ui.Components.FrameLayoutFixed; import org.telegram.ui.Components.LayoutHelper; import org.telegram.ui.Components.NumberTextView; -import org.telegram.ui.Components.RadioButton; -import org.telegram.ui.Components.RecordStatusDrawable; import org.telegram.ui.Components.RecyclerListView; -import org.telegram.ui.Components.ResourceLoader; -import org.telegram.ui.Components.SendingFileExDrawable; -import org.telegram.ui.Components.ShareFrameLayout; +import org.telegram.ui.Components.ShareAlert; import org.telegram.ui.Components.SizeNotifierFrameLayout; -import org.telegram.ui.Components.TimerDrawable; -import org.telegram.ui.Components.TypingDotsDrawable; +import org.telegram.ui.Components.StickersAlert; +import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Components.URLSpanBotCommand; import org.telegram.ui.Components.URLSpanNoUnderline; import org.telegram.ui.Components.URLSpanReplacement; @@ -141,7 +138,7 @@ import java.util.concurrent.Semaphore; import java.util.regex.Matcher; @SuppressWarnings("unchecked") -public class ChatActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate, DialogsActivity.MessagesActivityDelegate, +public class ChatActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate, DialogsActivity.DialogsActivityDelegate, PhotoViewer.PhotoViewerProvider { protected TLRPC.Chat currentChat; @@ -155,9 +152,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not private FrameLayout progressView; private FrameLayout bottomOverlay; protected ChatActivityEnterView chatActivityEnterView; - private ImageView timeItem; private View timeItem2; - private TimerDrawable timerDrawable; private ActionBarMenuItem menuItem; private ActionBarMenuItem attachItem; private ActionBarMenuItem headerItem; @@ -168,24 +163,18 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not private RecyclerListView chatListView; private LinearLayoutManager chatLayoutManager; private ChatActivityAdapter chatAdapter; - private BackupImageView avatarImageView; private TextView bottomOverlayChatText; private FrameLayout bottomOverlayChat; - private TypingDotsDrawable typingDotsDrawable; - private RecordStatusDrawable recordStatusDrawable; - private SendingFileExDrawable sendingFileDrawable; private FrameLayout emptyViewContainer; private ArrayList actionModeViews = new ArrayList<>(); - private TextView nameTextView; - private TextView onlineTextView; - private RadioButton radioButton; - private FrameLayout avatarContainer; + private ChatAvatarContainer avatarContainer; private TextView bottomOverlayText; private TextView secretViewStatusTextView; private NumberTextView selectedMessagesCountTextView; private TextView actionModeTextView; private RecyclerListView stickersListView; private RecyclerListView.OnItemClickListener stickersOnItemClickListener; + private RecyclerListView.OnItemClickListener mentionsOnItemClickListener; private StickersAdapter stickersAdapter; private FrameLayout stickersPanel; private TextView muteItem; @@ -195,6 +184,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not private TextView replyObjectTextView; private ImageView replyIconImageView; private MentionsAdapter mentionsAdapter; + private BotSwitchCell botSwitchCell; + private View botSwitchShadow; + private FrameLayout mentionContainer; private RecyclerListView mentionListView; private LinearLayoutManager mentionLayoutManager; private AnimatorSetProxy mentionListAnimation; @@ -210,8 +202,19 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not private View emojiButtonRed; private FrameLayout pinnedMessageView; private AnimatorSetProxy pinnedMessageViewAnimator; - private TextView pinnedMessageNameTextView; - private TextView pinnedMessageTextView; + private SimpleTextView pinnedMessageNameTextView; + private SimpleTextView pinnedMessageTextView; + private FrameLayout alertView; + private Runnable hideAlertViewRunnable; + private TextView alertNameTextView; + private TextView alertTextView; + private AnimatorSetProxy alertViewAnimator; + + private boolean mentionListViewIgnoreLayout; + private int mentionListViewScrollOffsetY; + private int mentionListViewLastViewTop; + private int mentionListViewLastViewPosition; + private boolean mentionListViewIsScrolling; private MessageObject pinnedMessageObject; private int loadingPinnedMessage; @@ -247,6 +250,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not private Runnable waitingForCharaterEnterRunnable; private boolean openAnimationEnded; + private boolean attachAttachViewFirstShow = true; private int readWithDate; private int readWithMid; @@ -295,19 +299,14 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not private Rect scrollRect = new Rect(); protected TLRPC.ChatFull info = null; - private int onlineCount = -1; private HashMap botInfo = new HashMap<>(); private String botUser; + private long inlineReturn; private MessageObject botButtons; private MessageObject botReplyButtons; private int botsCount; private boolean hasBotsCommands; - - private CharSequence lastPrintString; - private String lastStatus; - private int lastStatusDrawable; - private long chatEnterTime = 0; private long chatLeaveTime = 0; @@ -380,6 +379,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not final int chatId = arguments.getInt("chat_id", 0); final int userId = arguments.getInt("user_id", 0); final int encId = arguments.getInt("enc_id", 0); + inlineReturn = arguments.getLong("inline_return", 0); + String inlineQuery = arguments.getString("inline_query"); startLoadFromMessageId = arguments.getInt("message_id", 0); int migrated_to = arguments.getInt("migrated_to", 0); scrollToTopOnResume = arguments.getBoolean("scrollToTopOnResume", false); @@ -445,6 +446,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } dialog_id = userId; botUser = arguments.getString("botUser"); + if (inlineQuery != null) { + MessagesController.getInstance().sendBotStart(currentUser, inlineQuery); + } } else if (encId != 0) { currentEncryptedChat = MessagesController.getInstance().getEncryptedChat(encId); if (currentEncryptedChat == null) { @@ -595,13 +599,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not NotificationCenter.getInstance().postNotificationName(NotificationCenter.openedChatChanged, dialog_id, false); } - typingDotsDrawable = new TypingDotsDrawable(); - typingDotsDrawable.setIsChat(currentChat != null); - recordStatusDrawable = new RecordStatusDrawable(); - recordStatusDrawable.setIsChat(currentChat != null); - sendingFileDrawable = new SendingFileExDrawable(); - sendingFileDrawable.setIsChat(currentChat != null); - if (currentEncryptedChat != null && AndroidUtilities.getMyLayerVersion(currentEncryptedChat.layer) != SecretChatHelper.CURRENT_SECRET_CHAT_LAYER) { SecretChatHelper.getInstance().sendNotifyLayerMessage(currentEncryptedChat, null); } @@ -615,6 +612,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (chatActivityEnterView != null) { chatActivityEnterView.onDestroy(); } + if (mentionsAdapter != null) { + mentionsAdapter.onDestroy(); + } MessagesController.getInstance().setLastCreatedDialogId(dialog_id, false); NotificationCenter.getInstance().removeObserver(this, NotificationCenter.messagesDidLoaded); NotificationCenter.getInstance().removeObserver(this, NotificationCenter.emojiDidLoaded); @@ -701,13 +701,11 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } cantDeleteMessagesCount = 0; - lastPrintString = null; - lastStatus = null; hasOwnBackground = true; chatAttachView = null; chatAttachViewSheet = null; - ResourceLoader.loadRecources(context); + Theme.loadRecources(context); actionBar.setBackButtonDrawable(new BackDrawable(false)); actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { @@ -843,19 +841,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not args.putBoolean("addContact", true); presentFragment(new ContactAddActivity(args)); } else { - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); - builder.setMessage(LocaleController.getString("AreYouSureShareMyContactInfo", R.string.AreYouSureShareMyContactInfo)); - builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); - builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - SendMessagesHelper.getInstance().sendMessage(UserConfig.getCurrentUser(), dialog_id, replyingMessageObject, chatActivityEnterView == null || chatActivityEnterView.asAdmin()); - moveScrollToLastMessage(); - showReplyPanel(false, null, null, null, false, true); - } - }); - builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); - showDialog(builder.create()); + shareMyContact(replyingMessageObject); } } else if (id == mute) { toggleMute(false); @@ -883,93 +869,28 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not return; } - if (chatAttachView == null) { - BottomSheet.Builder builder = new BottomSheet.Builder(getParentActivity()); - chatAttachView = new ChatAttachView(getParentActivity()); - chatAttachView.setDelegate(new ChatAttachView.ChatAttachViewDelegate() { - @Override - public void didPressedButton(int button) { - if (button == 7) { - chatAttachViewSheet.dismiss(); - HashMap selectedPhotos = chatAttachView.getSelectedPhotos(); - if (!selectedPhotos.isEmpty()) { - ArrayList photos = new ArrayList<>(); - ArrayList captions = new ArrayList<>(); - for (HashMap.Entry entry : selectedPhotos.entrySet()) { - MediaController.PhotoEntry photoEntry = entry.getValue(); - if (photoEntry.imagePath != null) { - photos.add(photoEntry.imagePath); - captions.add(photoEntry.caption != null ? photoEntry.caption.toString() : null); - } else if (photoEntry.path != null) { - photos.add(photoEntry.path); - captions.add(photoEntry.caption != null ? photoEntry.caption.toString() : null); - } - photoEntry.imagePath = null; - photoEntry.thumbPath = null; - photoEntry.caption = null; - } - SendMessagesHelper.prepareSendingPhotos(photos, null, dialog_id, replyingMessageObject, captions, chatActivityEnterView == null || chatActivityEnterView.asAdmin()); - showReplyPanel(false, null, null, null, false, true); - } - return; - } else { - if (chatAttachViewSheet != null) { - chatAttachViewSheet.dismissWithButtonClick(button); - } - } - processSelectedAttach(button); - } - }); - builder.setDelegate(new BottomSheet.BottomSheetDelegate() { - - @Override - public void onRevealAnimationStart(boolean open) { - if (chatAttachView != null) { - chatAttachView.onRevealAnimationStart(open); - } - } - - @Override - public void onRevealAnimationProgress(boolean open, float radius, int x, int y) { - if (chatAttachView != null) { - chatAttachView.onRevealAnimationProgress(open, radius, x, y); - } - } - - @Override - public void onRevealAnimationEnd(boolean open) { - if (chatAttachView != null) { - chatAttachView.onRevealAnimationEnd(open); - } - } - - @Override - public void onOpenAnimationEnd() { - if (chatAttachView != null) { - chatAttachView.onRevealAnimationEnd(true); - } - } - - @Override - public View getRevealView() { - return menuItem; - } - }); - builder.setApplyTopPaddings(false); - builder.setUseRevealAnimation(); - builder.setCustomView(chatAttachView); - chatAttachViewSheet = builder.create(); - } + createChatAttachView(); + chatAttachView.loadGalleryPhotos(); if (Build.VERSION.SDK_INT == 21 || Build.VERSION.SDK_INT == 22) { chatActivityEnterView.closeKeyboard(); } chatAttachView.init(ChatActivity.this); - showDialog(chatAttachViewSheet); + if (attachAttachViewFirstShow) { + AndroidUtilities.runOnUIThread(new Runnable() { + @Override + public void run() { + showDialog(chatAttachViewSheet); + } + }); + attachAttachViewFirstShow = false; + } else { + showDialog(chatAttachViewSheet); + } } else if (id == bot_help) { - SendMessagesHelper.getInstance().sendMessage("/help", dialog_id, null, null, false, chatActivityEnterView == null || chatActivityEnterView.asAdmin(), null, null); + SendMessagesHelper.getInstance().sendMessage("/help", dialog_id, null, null, false, chatActivityEnterView == null || chatActivityEnterView.asAdmin(), null, null, null); } else if (id == bot_settings) { - SendMessagesHelper.getInstance().sendMessage("/settings", dialog_id, null, null, false, chatActivityEnterView == null || chatActivityEnterView.asAdmin(), null, null); + SendMessagesHelper.getInstance().sendMessage("/settings", dialog_id, null, null, false, chatActivityEnterView == null || chatActivityEnterView.asAdmin(), null, null, null); } else if (id == search) { openSearchWithText(null); } else if (id == search_up) { @@ -987,34 +908,13 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } }); - avatarContainer = new FrameLayoutFixed(context); - avatarContainer.setBackgroundResource(R.drawable.bar_selector); - avatarContainer.setPadding(AndroidUtilities.dp(8), 0, AndroidUtilities.dp(8), 0); + avatarContainer = new ChatAvatarContainer(context, this, ChatObject.isChannel(currentChat) && !currentChat.megagroup && !(currentChat instanceof TLRPC.TL_channelForbidden), currentEncryptedChat != null); + avatarContainer.setRadioChecked(channelMessagesImportant == 1, false); actionBar.addView(avatarContainer, 0, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.LEFT, 56, 0, 40, 0)); - avatarContainer.setOnClickListener(new View.OnClickListener() { + avatarContainer.setDelegate(new ChatAvatarContainer.ChatAvatarContainerDelegate() { @Override - public void onClick(View v) { - if (radioButton == null || radioButton.getVisibility() != View.VISIBLE) { - if (currentUser != null) { - Bundle args = new Bundle(); - args.putInt("user_id", currentUser.id); - if (currentEncryptedChat != null) { - args.putLong("dialog_id", dialog_id); - } - ProfileActivity fragment = new ProfileActivity(args); - fragment.setPlayProfileAnimation(true); - presentFragment(fragment); - } else if (currentChat != null) { - Bundle args = new Bundle(); - args.putInt("chat_id", currentChat.id); - ProfileActivity fragment = new ProfileActivity(args); - fragment.setChatInfo(info); - fragment.setPlayProfileAnimation(true); - presentFragment(fragment); - } - } else { - switchImportantMode(null); - } + public void didPressedRadioButton() { + switchImportantMode(null); } }); @@ -1030,58 +930,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } - avatarImageView = new BackupImageView(context); - avatarImageView.setRoundRadius(AndroidUtilities.dp(21)); - avatarContainer.addView(avatarImageView, LayoutHelper.createFrame(42, 42, Gravity.TOP | Gravity.LEFT, 0, 3, 0, 0)); - - if (currentEncryptedChat != null) { - timeItem = new ImageView(context); - timeItem.setPadding(AndroidUtilities.dp(10), AndroidUtilities.dp(10), AndroidUtilities.dp(5), AndroidUtilities.dp(5)); - timeItem.setScaleType(ImageView.ScaleType.CENTER); - timeItem.setImageDrawable(timerDrawable = new TimerDrawable(context)); - avatarContainer.addView(timeItem, LayoutHelper.createFrame(34, 34, Gravity.TOP | Gravity.LEFT, 16, 18, 0, 0)); - timeItem.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (getParentActivity() == null) { - return; - } - showDialog(AndroidUtilities.buildTTLAlert(getParentActivity(), currentEncryptedChat).create()); - } - }); - } - - nameTextView = new TextView(context); - nameTextView.setTextColor(0xffffffff); - nameTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); - nameTextView.setLines(1); - nameTextView.setMaxLines(1); - nameTextView.setSingleLine(true); - nameTextView.setEllipsize(TextUtils.TruncateAt.END); - nameTextView.setGravity(Gravity.LEFT); - nameTextView.setCompoundDrawablePadding(AndroidUtilities.dp(4)); - nameTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); - avatarContainer.addView(nameTextView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.BOTTOM, 54, 0, 0, 22)); - - onlineTextView = new TextView(context); - onlineTextView.setTextColor(0xffd7e8f7); - onlineTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); - onlineTextView.setLines(1); - onlineTextView.setMaxLines(1); - onlineTextView.setSingleLine(true); - onlineTextView.setEllipsize(TextUtils.TruncateAt.END); - onlineTextView.setGravity(Gravity.LEFT); - - if (ChatObject.isChannel(currentChat) && !currentChat.megagroup && !(currentChat instanceof TLRPC.TL_channelForbidden)) { - radioButton = new RadioButton(context); - radioButton.setChecked(channelMessagesImportant == 1, false); - radioButton.setVisibility(View.GONE); - avatarContainer.addView(radioButton, LayoutHelper.createFrame(24, 24, Gravity.LEFT | Gravity.BOTTOM, 50, 0, 0, 0)); - avatarContainer.addView(onlineTextView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.BOTTOM, 54, 0, 0, 4)); - } else { - avatarContainer.addView(onlineTextView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.BOTTOM, 54, 0, 0, 4)); - } - ActionBarMenu menu = actionBar.createMenu(); if (currentEncryptedChat == null && !isBroadcast) { @@ -1177,7 +1025,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } updateTitle(); - updateSubtitle(); + avatarContainer.updateOnlineCount(); + avatarContainer.updateSubtitle(); updateTitleIcons(); attachItem = menu.addItem(chat_menu_attach, R.drawable.ic_ab_other).setOverrideMenuClick(true).setAllowCloseAnimation(false); @@ -1192,7 +1041,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not selectedMessagesCountTextView = new NumberTextView(actionMode.getContext()); selectedMessagesCountTextView.setTextSize(18); selectedMessagesCountTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); - selectedMessagesCountTextView.setTextColor(0xff737373); + selectedMessagesCountTextView.setTextColor(Theme.ACTION_BAR_ACTION_MODE_TEXT_COLOR); actionMode.addView(selectedMessagesCountTextView, LayoutHelper.createLinear(0, LayoutHelper.MATCH_PARENT, 1.0f, 65, 0, 0, 0)); selectedMessagesCountTextView.setOnTouchListener(new View.OnTouchListener() { @Override @@ -1204,7 +1053,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not actionModeTextView = new TextView(actionMode.getContext()); actionModeTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); actionModeTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); - actionModeTextView.setTextColor(0xff737373); + actionModeTextView.setTextColor(Theme.ACTION_BAR_ACTION_MODE_TEXT_COLOR); actionModeTextView.setVisibility(View.GONE); actionModeTextView.setGravity(Gravity.CENTER_VERTICAL); actionModeTextView.setText(LocaleController.getString("Edit", R.string.Edit)); @@ -1218,17 +1067,17 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (currentEncryptedChat == null) { if (!isBroadcast) { - actionModeViews.add(actionMode.addItem(reply, R.drawable.ic_ab_reply, R.drawable.bar_selector_mode, null, AndroidUtilities.dp(54))); + actionModeViews.add(actionMode.addItem(reply, R.drawable.ic_ab_reply, Theme.ACTION_BAR_MODE_SELECTOR_COLOR, null, AndroidUtilities.dp(54))); } - actionModeViews.add(actionMode.addItem(copy, R.drawable.ic_ab_fwd_copy, R.drawable.bar_selector_mode, null, AndroidUtilities.dp(54))); - actionModeViews.add(actionMode.addItem(forward, R.drawable.ic_ab_fwd_forward, R.drawable.bar_selector_mode, null, AndroidUtilities.dp(54))); - actionModeViews.add(actionMode.addItem(delete, R.drawable.ic_ab_fwd_delete, R.drawable.bar_selector_mode, null, AndroidUtilities.dp(54))); - actionModeViews.add(actionMode.addItem(edit_done, R.drawable.check_blue, R.drawable.bar_selector_mode, null, AndroidUtilities.dp(54))); + actionModeViews.add(actionMode.addItem(copy, R.drawable.ic_ab_fwd_copy, Theme.ACTION_BAR_MODE_SELECTOR_COLOR, null, AndroidUtilities.dp(54))); + actionModeViews.add(actionMode.addItem(forward, R.drawable.ic_ab_fwd_forward, Theme.ACTION_BAR_MODE_SELECTOR_COLOR, null, AndroidUtilities.dp(54))); + actionModeViews.add(actionMode.addItem(delete, R.drawable.ic_ab_fwd_delete, Theme.ACTION_BAR_MODE_SELECTOR_COLOR, null, AndroidUtilities.dp(54))); + actionModeViews.add(actionMode.addItem(edit_done, R.drawable.check_blue, Theme.ACTION_BAR_MODE_SELECTOR_COLOR, null, AndroidUtilities.dp(54))); actionMode.getItem(edit_done).setVisibility(View.GONE); } else { - actionModeViews.add(actionMode.addItem(reply, R.drawable.ic_ab_reply, R.drawable.bar_selector_mode, null, AndroidUtilities.dp(54))); - actionModeViews.add(actionMode.addItem(copy, R.drawable.ic_ab_fwd_copy, R.drawable.bar_selector_mode, null, AndroidUtilities.dp(54))); - actionModeViews.add(actionMode.addItem(delete, R.drawable.ic_ab_fwd_delete, R.drawable.bar_selector_mode, null, AndroidUtilities.dp(54))); + actionModeViews.add(actionMode.addItem(reply, R.drawable.ic_ab_reply, Theme.ACTION_BAR_MODE_SELECTOR_COLOR, null, AndroidUtilities.dp(54))); + actionModeViews.add(actionMode.addItem(copy, R.drawable.ic_ab_fwd_copy, Theme.ACTION_BAR_MODE_SELECTOR_COLOR, null, AndroidUtilities.dp(54))); + actionModeViews.add(actionMode.addItem(delete, R.drawable.ic_ab_fwd_delete, Theme.ACTION_BAR_MODE_SELECTOR_COLOR, null, AndroidUtilities.dp(54))); } actionMode.getItem(copy).setVisibility(selectedMessagesCanCopyIds[0].size() + selectedMessagesCanCopyIds[1].size() != 0 ? View.VISIBLE : View.GONE); actionMode.getItem(delete).setVisibility(cantDeleteMessagesCount == 0 ? View.VISIBLE : View.GONE); @@ -1273,6 +1122,51 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not child.measure(contentWidthSpec, contentHeightSpec); } else if (chatActivityEnterView.isPopupView(child)) { child.measure(MeasureSpec.makeMeasureSpec(widthSize, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(child.getLayoutParams().height, MeasureSpec.EXACTLY)); + } else if (child == mentionContainer) { + int orientation = mentionsAdapter.getOrientation(); + FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) mentionContainer.getLayoutParams(); + int height; + mentionListViewIgnoreLayout = true; + if (mentionsAdapter.isBotContext()) { + if (orientation == LinearLayoutManager.HORIZONTAL) { + height = AndroidUtilities.dp(90); + if (botSwitchCell.getVisibility() == VISIBLE) { + height += AndroidUtilities.dp(36); + mentionListView.setPadding(0, AndroidUtilities.dp(2 + 36), AndroidUtilities.dp(5), 0); + } else { + mentionListView.setPadding(0, AndroidUtilities.dp(2), AndroidUtilities.dp(5), 0); + } + } else { + int size = mentionsAdapter.getItemCount(); + int maxHeight = 0; + if (mentionsAdapter.getBotContextSwitch() != null) { + maxHeight += 36; + size -= 1; + } + maxHeight += size * 68; + + height = heightSize - chatActivityEnterView.getMeasuredHeight() + (maxHeight != 0 ? AndroidUtilities.dp(2) : 0); + mentionListView.setPadding(0, Math.max(0, height - AndroidUtilities.dp(Math.min(maxHeight, 68 * 1.8f))), 0, 0); + } + layoutParams.height = height; + layoutParams.topMargin = 0; + } else { + if (orientation == LinearLayoutManager.HORIZONTAL) { + mentionListView.setPadding(0, AndroidUtilities.dp(2), AndroidUtilities.dp(5), 0); + height = 90; + } else { + mentionListView.setPadding(0, AndroidUtilities.dp(2), 0, 0); + if (mentionsAdapter.isBotContext()) { + height = 36 * 3 + 18; + } else { + height = 36 * Math.min(3, mentionsAdapter.getItemCount()) + (mentionsAdapter.getItemCount() > 3 ? 18 : 0); + } + } + layoutParams.height = AndroidUtilities.dp(height + (height != 0 ? 2 : 0)); + layoutParams.topMargin = -AndroidUtilities.dp(height); + } + mentionListViewIgnoreLayout = false; + child.measure(MeasureSpec.makeMeasureSpec(widthSize, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(layoutParams.height, MeasureSpec.EXACTLY)); } else { measureChildWithMargins(child, widthMeasureSpec, 0, heightMeasureSpec, 0); } @@ -1336,7 +1230,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not childTop = lp.topMargin; } - if (child == mentionListView) { + if (child == mentionContainer) { childTop -= chatActivityEnterView.getMeasuredHeight() - AndroidUtilities.dp(2); } else if (child == pagedownButton) { childTop -= chatActivityEnterView.getMeasuredHeight(); @@ -1350,6 +1244,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not child.layout(childLeft, childTop, childLeft + width, childTop + height); } + updateMessagesVisisblePart(); notifyHeightChanged(); } }; @@ -1375,22 +1270,25 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } else { emptyView.setText(LocaleController.getString("NoMessages", R.string.NoMessages)); } - emptyView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); + emptyView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); emptyView.setGravity(Gravity.CENTER); - emptyView.setTextColor(0xffffffff); - emptyView.setBackgroundResource(ApplicationLoader.isCustomTheme() ? R.drawable.system_black : R.drawable.system_blue); - emptyView.setPadding(AndroidUtilities.dp(7), AndroidUtilities.dp(1), AndroidUtilities.dp(7), AndroidUtilities.dp(1)); + emptyView.setTextColor(Theme.CHAT_EMPTY_VIEW_TEXT_COLOR); + emptyView.setBackgroundResource(R.drawable.system); + emptyView.getBackground().setColorFilter(Theme.colorFilter); + emptyView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + emptyView.setPadding(AndroidUtilities.dp(10), AndroidUtilities.dp(2), AndroidUtilities.dp(10), AndroidUtilities.dp(3)); emptyViewContainer.addView(emptyView, new FrameLayout.LayoutParams(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER)); } else { LinearLayout secretChatPlaceholder = new LinearLayout(context); - secretChatPlaceholder.setBackgroundResource(ApplicationLoader.isCustomTheme() ? R.drawable.system_black : R.drawable.system_blue); + secretChatPlaceholder.setBackgroundResource(R.drawable.system); + secretChatPlaceholder.getBackground().setColorFilter(Theme.colorFilter); secretChatPlaceholder.setPadding(AndroidUtilities.dp(16), AndroidUtilities.dp(12), AndroidUtilities.dp(16), AndroidUtilities.dp(12)); secretChatPlaceholder.setOrientation(LinearLayout.VERTICAL); emptyViewContainer.addView(secretChatPlaceholder, new FrameLayout.LayoutParams(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER)); secretViewStatusTextView = new TextView(context); secretViewStatusTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15); - secretViewStatusTextView.setTextColor(0xffffffff); + secretViewStatusTextView.setTextColor(Theme.SECRET_CHAT_INFO_TEXT_COLOR); secretViewStatusTextView.setGravity(Gravity.CENTER_HORIZONTAL); secretViewStatusTextView.setMaxWidth(AndroidUtilities.dp(210)); if (currentEncryptedChat.admin_id == UserConfig.getClientUserId()) { @@ -1403,7 +1301,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not TextView textView = new TextView(context); textView.setText(LocaleController.getString("EncryptedDescriptionTitle", R.string.EncryptedDescriptionTitle)); textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15); - textView.setTextColor(0xffffffff); + textView.setTextColor(Theme.SECRET_CHAT_INFO_TEXT_COLOR); textView.setGravity(Gravity.CENTER_HORIZONTAL); textView.setMaxWidth(AndroidUtilities.dp(260)); secretChatPlaceholder.addView(textView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, 0, 8, 0, 0)); @@ -1418,7 +1316,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not textView = new TextView(context); textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15); - textView.setTextColor(0xffffffff); + textView.setTextColor(Theme.SECRET_CHAT_INFO_TEXT_COLOR); textView.setGravity(Gravity.CENTER_VERTICAL | (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT)); textView.setMaxWidth(AndroidUtilities.dp(260)); @@ -1450,6 +1348,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (chatActivityEnterView != null) { chatActivityEnterView.onDestroy(); } + if (mentionsAdapter != null) { + mentionsAdapter.onDestroy(); + } chatListView = new RecyclerListView(context) { @Override @@ -1501,7 +1402,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { - checkScrollForLoad(); + checkScrollForLoad(true); int firstVisibleItem = chatLayoutManager.findFirstVisibleItemPosition(); int visibleItemCount = firstVisibleItem == RecyclerView.NO_POSITION ? 0 : Math.abs(chatLayoutManager.findLastVisibleItemPosition() - firstVisibleItem) + 1; if (visibleItemCount > 0) { @@ -1629,7 +1530,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not contentView.addView(progressView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.LEFT)); View view = new View(context); - view.setBackgroundResource(ApplicationLoader.isCustomTheme() ? R.drawable.system_loader2 : R.drawable.system_loader1); + view.setBackgroundResource(R.drawable.system_loader); + view.getBackground().setColorFilter(Theme.colorFilter); progressView.addView(view, LayoutHelper.createFrame(36, 36, Gravity.CENTER)); ProgressBar progressBar = new ProgressBar(context); @@ -1661,22 +1563,16 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not lineView.setBackgroundColor(0xff6c9fd2); pinnedMessageView.addView(lineView, LayoutHelper.createFrame(2, 32, Gravity.LEFT | Gravity.TOP, 8, 8, 0, 0)); - pinnedMessageNameTextView = new TextView(context); - pinnedMessageNameTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); - pinnedMessageNameTextView.setTextColor(0xff377aae); + pinnedMessageNameTextView = new SimpleTextView(context); + pinnedMessageNameTextView.setTextSize(14); + pinnedMessageNameTextView.setTextColor(Theme.PINNED_PANEL_NAME_TEXT_COLOR); pinnedMessageNameTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); - pinnedMessageNameTextView.setSingleLine(true); - pinnedMessageNameTextView.setEllipsize(TextUtils.TruncateAt.END); - pinnedMessageNameTextView.setMaxLines(1); - pinnedMessageView.addView(pinnedMessageNameTextView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.TOP | Gravity.LEFT, 18, 5, 52, 0)); + pinnedMessageView.addView(pinnedMessageNameTextView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, AndroidUtilities.dp(18), Gravity.TOP | Gravity.LEFT, 18, 7.3f, 52, 0)); - pinnedMessageTextView = new TextView(context); - pinnedMessageTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); - pinnedMessageTextView.setTextColor(0xff999999); - pinnedMessageTextView.setSingleLine(true); - pinnedMessageTextView.setEllipsize(TextUtils.TruncateAt.END); - pinnedMessageTextView.setMaxLines(1); - pinnedMessageView.addView(pinnedMessageTextView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.TOP | Gravity.LEFT, 18, 23, 52, 0)); + pinnedMessageTextView = new SimpleTextView(context); + pinnedMessageTextView.setTextSize(14); + pinnedMessageTextView.setTextColor(Theme.PINNED_PANEL_MESSAGE_TEXT_COLOR); + pinnedMessageView.addView(pinnedMessageTextView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, AndroidUtilities.dp(18), Gravity.TOP | Gravity.LEFT, 18, 25.3f, 52, 0)); ImageView closePinned = new ImageView(context); closePinned.setImageResource(R.drawable.miniplayer_close); @@ -1718,7 +1614,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not contentView.addView(reportSpamView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 50, Gravity.TOP | Gravity.LEFT)); addToContactsButton = new TextView(context); - addToContactsButton.setTextColor(0xff4a82b5); + addToContactsButton.setTextColor(Theme.CHAT_ADD_CONTACT_TEXT_COLOR); addToContactsButton.setVisibility(View.GONE); addToContactsButton.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); addToContactsButton.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); @@ -1742,7 +1638,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not reportSpamView.addView(reportSpamContainer, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, 1.0f, Gravity.LEFT | Gravity.TOP, 0, 0, 0, AndroidUtilities.dp(1))); reportSpamButton = new TextView(context); - reportSpamButton.setTextColor(0xffcf5957); + reportSpamButton.setTextColor(Theme.CHAT_REPORT_SPAM_TEXT_COLOR); reportSpamButton.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); reportSpamButton.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); reportSpamButton.setSingleLine(true); @@ -1784,8 +1680,10 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } else { MessagesController.getInstance().deleteUserFromChat((int) -dialog_id, MessagesController.getInstance().getUser(UserConfig.getClientUserId()), null); } - finishFragment(); + } else { + MessagesController.getInstance().deleteDialog(dialog_id, 0); } + finishFragment(); } }); builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); @@ -1805,52 +1703,164 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } }); + alertView = new FrameLayoutFixed(context); + alertView.setTag(1); + ViewProxy.setTranslationY(alertView, -AndroidUtilities.dp(50)); + alertView.clearAnimation(); + alertView.setVisibility(View.GONE); + alertView.setBackgroundResource(R.drawable.blockpanel); + contentView.addView(alertView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 50, Gravity.TOP | Gravity.LEFT)); + + alertNameTextView = new TextView(context); + alertNameTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); + alertNameTextView.setTextColor(Theme.ALERT_PANEL_NAME_TEXT_COLOR); + alertNameTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + alertNameTextView.setSingleLine(true); + alertNameTextView.setEllipsize(TextUtils.TruncateAt.END); + alertNameTextView.setMaxLines(1); + alertView.addView(alertNameTextView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.TOP | Gravity.LEFT, 8, 5, 8, 0)); + + alertTextView = new TextView(context); + alertTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); + alertTextView.setTextColor(Theme.ALERT_PANEL_MESSAGE_TEXT_COLOR); + alertTextView.setSingleLine(true); + alertTextView.setEllipsize(TextUtils.TruncateAt.END); + alertTextView.setMaxLines(1); + alertView.addView(alertTextView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.TOP | Gravity.LEFT, 8, 23, 8, 0)); + if (!isBroadcast) { - mentionListView = new RecyclerListView(context); + mentionContainer = new FrameLayoutFixed(context) { + + private Drawable background; + + @Override + public void onDraw(Canvas canvas) { + if (mentionsAdapter.isBotContext() && mentionsAdapter.getOrientation() == LinearLayoutManager.VERTICAL) { + background.setBounds(0, mentionListViewScrollOffsetY - AndroidUtilities.dp(2), getMeasuredWidth(), getMeasuredHeight()); + } else { + background.setBounds(0, 0, getMeasuredWidth(), getMeasuredHeight()); + } + background.draw(canvas); + } + + @Override + public void setBackgroundResource(int resid) { + background = getContext().getResources().getDrawable(resid); + } + + @Override + public void requestLayout() { + if (mentionListViewIgnoreLayout) { + return; + } + super.requestLayout(); + } + }; + mentionContainer.setBackgroundResource(R.drawable.compose_panel); + mentionContainer.setVisibility(View.GONE); + mentionContainer.setWillNotDraw(false); + contentView.addView(mentionContainer, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 110, Gravity.LEFT | Gravity.BOTTOM)); + + mentionListView = new RecyclerListView(context) { + + private int lastWidth; + private int lastHeight; + + @Override + public boolean onInterceptTouchEvent(MotionEvent event) { + if (!mentionListViewIsScrolling && mentionListViewScrollOffsetY != 0 && event.getY() < mentionListViewScrollOffsetY && mentionsAdapter.isBotContext() && mentionsAdapter.getOrientation() == LinearLayoutManager.VERTICAL) { + return false; + } + boolean result = StickerPreviewViewer.getInstance().onInterceptTouchEvent(event, mentionListView, 0); + return super.onInterceptTouchEvent(event) || result; + } + + @Override + public boolean onTouchEvent(MotionEvent event) { + if (!mentionListViewIsScrolling && mentionListViewScrollOffsetY != 0 && event.getY() < mentionListViewScrollOffsetY && mentionsAdapter.isBotContext() && mentionsAdapter.getOrientation() == LinearLayoutManager.VERTICAL) { + return false; + } + //supress warning + return super.onTouchEvent(event); + } + + @Override + public void requestLayout() { + if (mentionListViewIgnoreLayout) { + return; + } + super.requestLayout(); + } + + @Override + protected void onLayout(boolean changed, int l, int t, int r, int b) { + int width = r - l; + int height = b - t; + + int newPosition = -1; + int newTop = 0; + if (mentionListView != null && mentionListViewLastViewPosition >= 0 && width == lastWidth && height - lastHeight != 0) { + newPosition = mentionListViewLastViewPosition; + newTop = mentionListViewLastViewTop + height - lastHeight - getPaddingTop(); + } + + super.onLayout(changed, l, t, r, b); + + if (newPosition != -1) { + mentionListViewIgnoreLayout = true; + mentionLayoutManager.scrollToPositionWithOffset(newPosition, newTop); + super.onLayout(false, l, t, r, b); + mentionListViewIgnoreLayout = false; + } + + lastHeight = height; + lastWidth = width; + mentionListViewUpdateLayout(); + } + }; + mentionListView.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + return StickerPreviewViewer.getInstance().onTouch(event, mentionListView, 0, mentionsOnItemClickListener); + } + }); mentionLayoutManager = new LinearLayoutManager(context) { @Override public boolean supportsPredictiveItemAnimations() { return false; } }; + mentionListView.setItemAnimator(null); + mentionListView.setLayoutAnimation(null); mentionLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); mentionListView.setLayoutManager(mentionLayoutManager); + mentionListView.setOverScrollMode(ListView.OVER_SCROLL_NEVER); + mentionContainer.addView(mentionListView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); - mentionListView.setBackgroundResource(R.drawable.compose_panel); - mentionListView.setVisibility(View.GONE); - mentionListView.setPadding(0, AndroidUtilities.dp(2), 0, 0); - mentionListView.setClipToPadding(true); - mentionListView.setDisallowInterceptTouchEvents(true); - if (Build.VERSION.SDK_INT > 8) { - mentionListView.setOverScrollMode(ListView.OVER_SCROLL_NEVER); - } - contentView.addView(mentionListView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 110, Gravity.LEFT | Gravity.BOTTOM)); - - mentionListView.setAdapter(mentionsAdapter = new MentionsAdapter(context, false, new MentionsAdapter.MentionsAdapterDelegate() { + mentionListView.setAdapter(mentionsAdapter = new MentionsAdapter(context, false, dialog_id, new MentionsAdapter.MentionsAdapterDelegate() { @Override public void needChangePanelVisibility(boolean show) { if (show) { int orientation = mentionsAdapter.getOrientation(); - - FrameLayout.LayoutParams layoutParams3 = (FrameLayout.LayoutParams) mentionListView.getLayoutParams(); - int height; if (orientation == LinearLayoutManager.HORIZONTAL) { - mentionListView.setPadding(0, AndroidUtilities.dp(2), AndroidUtilities.dp(5), 0); mentionListView.setClipToPadding(false); - height = 90; + mentionListView.setDisallowInterceptTouchEvents(true); } else { - mentionListView.setPadding(0, AndroidUtilities.dp(2), 0, 0); - mentionListView.setClipToPadding(true); - if (mentionsAdapter.isBotContext()) { - height = 36 * 3 + 18; - } else { - height = 36 * Math.min(3, mentionsAdapter.getItemCount()) + (mentionsAdapter.getItemCount() > 3 ? 18 : 0); - } + mentionListView.setClipToPadding(!mentionsAdapter.isBotContext()); + mentionListView.setDisallowInterceptTouchEvents(false); + } + if (mentionsAdapter.isBotContext() && orientation == LinearLayoutManager.HORIZONTAL && mentionsAdapter.getBotContextSwitch() != null) { + botSwitchShadow.setVisibility(View.VISIBLE); + botSwitchCell.setVisibility(View.VISIBLE); + botSwitchCell.setText(mentionsAdapter.getBotContextSwitch().text); + } else { + botSwitchShadow.setVisibility(View.GONE); + botSwitchCell.setVisibility(View.GONE); + } + if (!mentionsAdapter.isBotContext() || orientation == LinearLayoutManager.HORIZONTAL) { + mentionListViewScrollOffsetY = 0; + mentionListViewLastViewPosition = -1; } - layoutParams3.height = AndroidUtilities.dp(2 + height); - layoutParams3.topMargin = -AndroidUtilities.dp(height); - mentionListView.setLayoutParams(layoutParams3); - mentionLayoutManager.setOrientation(orientation); if (mentionListAnimation != null) { @@ -1858,8 +1868,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not mentionListAnimation = null; } - if (mentionListView.getVisibility() == View.VISIBLE) { - ViewProxy.setAlpha(mentionListView, 1.0f); + if (mentionContainer.getVisibility() == View.VISIBLE) { + ViewProxy.setAlpha(mentionContainer, 1.0f); return; } else { mentionLayoutManager.scrollToPositionWithOffset(0, 10000); @@ -1876,17 +1886,24 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not preferences.edit().putBoolean("secretbot", true).commit(); } } - mentionListView.setVisibility(View.VISIBLE); - mentionListView.setTag(null); + mentionContainer.setVisibility(View.VISIBLE); + mentionContainer.setTag(null); mentionListAnimation = new AnimatorSetProxy(); mentionListAnimation.playTogether( - ObjectAnimatorProxy.ofFloat(mentionListView, "alpha", 0.0f, 1.0f) + ObjectAnimatorProxy.ofFloat(mentionContainer, "alpha", 0.0f, 1.0f) ); mentionListAnimation.addListener(new AnimatorListenerAdapterProxy() { @Override public void onAnimationEnd(Object animation) { if (mentionListAnimation != null && mentionListAnimation.equals(animation)) { - mentionListView.clearAnimation(); + mentionContainer.clearAnimation(); + mentionListAnimation = null; + } + } + + @Override + public void onAnimationCancel(Object animation) { + if (mentionListAnimation != null && mentionListAnimation.equals(animation)) { mentionListAnimation = null; } } @@ -1894,9 +1911,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not mentionListAnimation.setDuration(200); mentionListAnimation.start(); } else { - ViewProxy.setAlpha(mentionListView, 1.0f); - mentionListView.clearAnimation(); - mentionListView.setVisibility(View.INVISIBLE); + ViewProxy.setAlpha(mentionContainer, 1.0f); + mentionContainer.clearAnimation(); + mentionContainer.setVisibility(View.INVISIBLE); } } else { if (mentionListAnimation != null) { @@ -1904,21 +1921,28 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not mentionListAnimation = null; } - if (mentionListView.getVisibility() == View.GONE) { + if (mentionContainer.getVisibility() == View.GONE) { return; } if (allowStickersPanel) { mentionListAnimation = new AnimatorSetProxy(); mentionListAnimation.playTogether( - ObjectAnimatorProxy.ofFloat(mentionListView, "alpha", 0.0f) + ObjectAnimatorProxy.ofFloat(mentionContainer, "alpha", 0.0f) ); mentionListAnimation.addListener(new AnimatorListenerAdapterProxy() { @Override public void onAnimationEnd(Object animation) { if (mentionListAnimation != null && mentionListAnimation.equals(animation)) { - mentionListView.clearAnimation(); - mentionListView.setVisibility(View.GONE); - mentionListView.setTag(null); + mentionContainer.clearAnimation(); + mentionContainer.setVisibility(View.GONE); + mentionContainer.setTag(null); + mentionListAnimation = null; + } + } + + @Override + public void onAnimationCancel(Object animation) { + if (mentionListAnimation != null && mentionListAnimation.equals(animation)) { mentionListAnimation = null; } } @@ -1926,9 +1950,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not mentionListAnimation.setDuration(200); mentionListAnimation.start(); } else { - mentionListView.setTag(null); - mentionListView.clearAnimation(); - mentionListView.setVisibility(View.GONE); + mentionContainer.setTag(null); + mentionContainer.clearAnimation(); + mentionContainer.setVisibility(View.GONE); } } } @@ -1948,22 +1972,23 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } if (result.type.equals("video") || result.type.equals("web_player_video")) { BottomSheet.Builder builder = new BottomSheet.Builder(getParentActivity()); - builder.setCustomView(new WebFrameLayout(getParentActivity(), builder.create(), result.title != null ? result.title : "", result.content_url, result.content_url, result.w, result.h)); + builder.setCustomView(new WebFrameLayout(getParentActivity(), builder.create(), result.title != null ? result.title : "", result.description, result.content_url, result.content_url, result.w, result.h)); builder.setUseFullWidth(true); showDialog(builder.create()); } else { - AndroidUtilities.openUrl(getParentActivity(), result.content_url); + Browser.openUrl(getParentActivity(), result.content_url); } } })); if (!ChatObject.isChannel(currentChat) || currentChat != null && currentChat.megagroup) { mentionsAdapter.setBotInfo(botInfo); } + mentionsAdapter.setParentFragment(this); mentionsAdapter.setChatInfo(info); mentionsAdapter.setNeedUsernames(currentChat != null); mentionsAdapter.setNeedBotContext(currentEncryptedChat == null || AndroidUtilities.getPeerLayerVersion(currentEncryptedChat.layer) >= 46); mentionsAdapter.setBotsCount(currentChat != null ? botsCount : 1); - mentionListView.setOnItemClickListener(new RecyclerListView.OnItemClickListener() { + mentionListView.setOnItemClickListener(mentionsOnItemClickListener = new RecyclerListView.OnItemClickListener() { @Override public void onItemClick(View view, int position) { Object object = mentionsAdapter.getItem(position); @@ -1976,7 +2001,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } else if (object instanceof String) { if (mentionsAdapter.isBotCommands()) { - SendMessagesHelper.getInstance().sendMessage((String) object, dialog_id, null, null, false, chatActivityEnterView == null || chatActivityEnterView.asAdmin(), null, null); + SendMessagesHelper.getInstance().sendMessage((String) object, dialog_id, null, null, false, chatActivityEnterView == null || chatActivityEnterView.asAdmin(), null, null, null); chatActivityEnterView.setFieldText(""); } else { chatActivityEnterView.replaceWithText(start, len, object + " "); @@ -1996,6 +2021,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not SendMessagesHelper.prepareSendingBotContextResult(result, params, dialog_id, replyingMessageObject, chatActivityEnterView == null || chatActivityEnterView.asAdmin()); chatActivityEnterView.setFieldText(""); showReplyPanel(false, null, null, null, false, true); + } else if (object instanceof TLRPC.TL_inlineBotSwitchPM) { + processInlineBotContextPM((TLRPC.TL_inlineBotSwitchPM) object); } } }); @@ -2035,6 +2062,12 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not }); mentionListView.setOnScrollListener(new RecyclerView.OnScrollListener() { + + @Override + public void onScrollStateChanged(RecyclerView recyclerView, int newState) { + mentionListViewIsScrolling = newState == RecyclerView.SCROLL_STATE_DRAGGING; + } + @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { int lastVisibleItem = mentionLayoutManager.findLastVisibleItemPosition(); @@ -2042,8 +2075,26 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (visibleItemCount > 0 && lastVisibleItem > mentionsAdapter.getItemCount() - 5) { mentionsAdapter.searchForContextBotForNextOffset(); } + + mentionListViewUpdateLayout(); } }); + + botSwitchCell = new BotSwitchCell(context); + botSwitchCell.setVisibility(View.GONE); + botSwitchCell.setBackgroundResource(R.drawable.list_selector); + mentionContainer.addView(botSwitchCell, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 36, Gravity.LEFT | Gravity.TOP, 0, 2, 0, 0)); + botSwitchCell.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + processInlineBotContextPM(mentionsAdapter.getBotContextSwitch()); + } + }); + + botSwitchShadow = new View(context); + botSwitchShadow.setBackgroundResource(R.drawable.header_shadow); + botSwitchShadow.setVisibility(View.GONE); + mentionContainer.addView(botSwitchShadow, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 3, Gravity.LEFT | Gravity.TOP, 0, 38, 0, 0)); } pagedownButton = new ImageView(context); @@ -2160,9 +2211,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not stickersPanel.clearAnimation(); stickersPanel.setVisibility(View.INVISIBLE); } - if (mentionListView != null && mentionListView.getVisibility() == View.VISIBLE) { - mentionListView.clearAnimation(); - mentionListView.setVisibility(View.INVISIBLE); + if (mentionContainer != null && mentionContainer.getVisibility() == View.VISIBLE) { + mentionContainer.clearAnimation(); + mentionContainer.setVisibility(View.INVISIBLE); } } else { allowStickersPanel = true; @@ -2170,15 +2221,15 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not stickersPanel.clearAnimation(); stickersPanel.setVisibility(View.VISIBLE); } - if (mentionListView != null && mentionListView.getVisibility() == View.INVISIBLE && (!mentionsAdapter.isBotContext() || (allowContextBotPanel || allowContextBotPanelSecond))) { - mentionListView.clearAnimation(); - mentionListView.setVisibility(View.VISIBLE); - mentionListView.setTag(null); + if (mentionContainer != null && mentionContainer.getVisibility() == View.INVISIBLE && (!mentionsAdapter.isBotContext() || (allowContextBotPanel || allowContextBotPanelSecond))) { + mentionContainer.clearAnimation(); + mentionContainer.setVisibility(View.VISIBLE); + mentionContainer.setTag(null); } } + allowContextBotPanel = !chatActivityEnterView.isPopupShowing(); checkContextBotPanel(); - updateMessagesVisisblePart(); } @Override @@ -2219,7 +2270,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not replyNameTextView = new TextView(context); replyNameTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); - replyNameTextView.setTextColor(0xff377aae); + replyNameTextView.setTextColor(Theme.REPLY_PANEL_NAME_TEXT_COLOR); replyNameTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); replyNameTextView.setSingleLine(true); replyNameTextView.setEllipsize(TextUtils.TruncateAt.END); @@ -2228,7 +2279,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not replyObjectTextView = new TextView(context); replyObjectTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); - replyObjectTextView.setTextColor(0xff999999); + replyObjectTextView.setTextColor(Theme.REPLY_PANEL_MESSAGE_TEXT_COLOR); replyObjectTextView.setSingleLine(true); replyObjectTextView.setEllipsize(TextUtils.TruncateAt.END); replyObjectTextView.setMaxLines(1); @@ -2270,22 +2321,24 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not stickersPanel.addView(imageView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.BOTTOM | Gravity.LEFT, 53, 0, 0, 0)); bottomOverlay = new FrameLayout(context); - bottomOverlay.setBackgroundColor(0xffffffff); bottomOverlay.setVisibility(View.INVISIBLE); bottomOverlay.setFocusable(true); bottomOverlay.setFocusableInTouchMode(true); bottomOverlay.setClickable(true); - contentView.addView(bottomOverlay, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.BOTTOM)); + bottomOverlay.setBackgroundResource(R.drawable.compose_panel); + bottomOverlay.setPadding(0, AndroidUtilities.dp(3), 0, 0); + contentView.addView(bottomOverlay, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 51, Gravity.BOTTOM)); bottomOverlayText = new TextView(context); bottomOverlayText.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); - bottomOverlayText.setTextColor(0xff7f7f7f); + bottomOverlayText.setTextColor(Theme.CHAT_BOTTOM_OVERLAY_TEXT_COLOR); bottomOverlay.addView(bottomOverlayText, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER)); bottomOverlayChat = new FrameLayout(context); - bottomOverlayChat.setBackgroundColor(0xfffbfcfd); + bottomOverlayChat.setBackgroundResource(R.drawable.compose_panel); + bottomOverlayChat.setPadding(0, AndroidUtilities.dp(3), 0, 0); bottomOverlayChat.setVisibility(View.INVISIBLE); - contentView.addView(bottomOverlayChat, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.BOTTOM)); + contentView.addView(bottomOverlayChat, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 51, Gravity.BOTTOM)); bottomOverlayChat.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { @@ -2301,7 +2354,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (botUserLast != null && botUserLast.length() != 0) { MessagesController.getInstance().sendBotStart(currentUser, botUserLast); } else { - SendMessagesHelper.getInstance().sendMessage("/start", dialog_id, null, null, false, chatActivityEnterView == null || chatActivityEnterView.asAdmin(), null, null); + SendMessagesHelper.getInstance().sendMessage("/start", dialog_id, null, null, false, chatActivityEnterView == null || chatActivityEnterView.asAdmin(), null, null, null); } } else { builder = new AlertDialog.Builder(getParentActivity()); @@ -2317,7 +2370,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (botUser.length() != 0) { MessagesController.getInstance().sendBotStart(currentUser, botUser); } else { - SendMessagesHelper.getInstance().sendMessage("/start", dialog_id, null, null, false, chatActivityEnterView == null || chatActivityEnterView.asAdmin(), null, null); + SendMessagesHelper.getInstance().sendMessage("/start", dialog_id, null, null, false, chatActivityEnterView == null || chatActivityEnterView.asAdmin(), null, null, null); } botUser = null; updateBottomOverlay(); @@ -2349,8 +2402,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not }); bottomOverlayChatText = new TextView(context); - bottomOverlayChatText.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); - bottomOverlayChatText.setTextColor(0xff3e6fa1); + bottomOverlayChatText.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15); + bottomOverlayChatText.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + bottomOverlayChatText.setTextColor(Theme.CHAT_BOTTOM_CHAT_OVERLAY_TEXT_COLOR); bottomOverlayChat.addView(bottomOverlayChatText, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER)); chatAdapter.updateRows(); @@ -2375,20 +2429,160 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not updatePinnedMessageView(true); try { - if (currentEncryptedChat != null && Build.VERSION.SDK_INT >= 14) { + if (currentEncryptedChat != null && Build.VERSION.SDK_INT >= 23) { getParentActivity().getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE); } } catch (Throwable e) { FileLog.e("tmessages", e); } + fixLayoutInternal(); return fragmentView; } + private void mentionListViewUpdateLayout() { + if (mentionListView.getChildCount() <= 0 || !mentionsAdapter.isBotContext() || mentionsAdapter.getOrientation() != LinearLayoutManager.VERTICAL) { + mentionListViewScrollOffsetY = 0; + mentionListViewLastViewPosition = -1; + return; + } + View child = mentionListView.getChildAt(mentionListView.getChildCount() - 1); + MentionsAdapter.Holder holder = (MentionsAdapter.Holder) mentionListView.findContainingViewHolder(child); + if (holder != null) { + mentionListViewLastViewPosition = holder.getAdapterPosition(); + mentionListViewLastViewTop = child.getTop(); + } else { + mentionListViewLastViewPosition = -1; + } + + child = mentionListView.getChildAt(0); + holder = (MentionsAdapter.Holder) mentionListView.findContainingViewHolder(child); + int newOffset = child.getTop() > 0 && holder != null && holder.getAdapterPosition() == 0 ? child.getTop() : 0; + if (mentionListViewScrollOffsetY != newOffset) { + mentionListView.setTopGlowOffset(mentionListViewScrollOffsetY = newOffset); + mentionListView.invalidate(); + mentionContainer.invalidate(); + } + } + + public void processInlineBotContextPM(TLRPC.TL_inlineBotSwitchPM object) { + if (object == null) { + return; + } + TLRPC.User user = mentionsAdapter.getContextBotUser(); + if (user == null) { + return; + } + chatActivityEnterView.setFieldText(""); + if (dialog_id == user.id) { + inlineReturn = dialog_id; + MessagesController.getInstance().sendBotStart(currentUser, object.start_param); + } else { + Bundle args = new Bundle(); + args.putInt("user_id", user.id); + args.putString("inline_query", object.start_param); + args.putLong("inline_return", dialog_id); + if (!MessagesController.checkCanOpenChat(args, ChatActivity.this)) { + return; + } + presentFragment(new ChatActivity(args)); + } + } + + private void createChatAttachView() { + if (chatAttachView == null) { + BottomSheet.Builder builder = new BottomSheet.Builder(getParentActivity()); + chatAttachView = new ChatAttachView(getParentActivity()); + chatAttachView.setDelegate(new ChatAttachView.ChatAttachViewDelegate() { + @Override + public void didPressedButton(int button) { + if (button == 7) { + chatAttachViewSheet.dismiss(); + HashMap selectedPhotos = chatAttachView.getSelectedPhotos(); + if (!selectedPhotos.isEmpty()) { + ArrayList photos = new ArrayList<>(); + ArrayList captions = new ArrayList<>(); + for (HashMap.Entry entry : selectedPhotos.entrySet()) { + MediaController.PhotoEntry photoEntry = entry.getValue(); + if (photoEntry.imagePath != null) { + photos.add(photoEntry.imagePath); + captions.add(photoEntry.caption != null ? photoEntry.caption.toString() : null); + } else if (photoEntry.path != null) { + photos.add(photoEntry.path); + captions.add(photoEntry.caption != null ? photoEntry.caption.toString() : null); + } + photoEntry.imagePath = null; + photoEntry.thumbPath = null; + photoEntry.caption = null; + } + SendMessagesHelper.prepareSendingPhotos(photos, null, dialog_id, replyingMessageObject, captions, chatActivityEnterView == null || chatActivityEnterView.asAdmin()); + showReplyPanel(false, null, null, null, false, true); + } + return; + } else { + if (chatAttachViewSheet != null) { + chatAttachViewSheet.dismissWithButtonClick(button); + } + } + processSelectedAttach(button); + } + }); + builder.setDelegate(new BottomSheet.BottomSheetDelegate() { + + @Override + public void onRevealAnimationStart(boolean open) { + if (chatAttachView != null) { + chatAttachView.onRevealAnimationStart(open); + } + } + + @Override + public void onRevealAnimationProgress(boolean open, float radius, int x, int y) { + if (chatAttachView != null) { + chatAttachView.onRevealAnimationProgress(open, radius, x, y); + } + } + + @Override + public void onRevealAnimationEnd(boolean open) { + if (chatAttachView != null) { + chatAttachView.onRevealAnimationEnd(open); + } + } + + @Override + public void onOpenAnimationEnd() { + if (chatAttachView != null) { + chatAttachView.onRevealAnimationEnd(true); + } + } + + @Override + public View getRevealView() { + return menuItem; + } + }); + builder.setApplyTopPadding(false); + builder.setApplyBottomPadding(false); + builder.setUseRevealAnimation(); + builder.setCustomView(chatAttachView); + chatAttachViewSheet = builder.create(); + } + } + public long getDialogId() { return dialog_id; } + public void setBotUser(String value) { + if (inlineReturn != 0) { + MessagesController.getInstance().sendBotStart(currentUser, value); + } else { + botUser = value; + updateBottomOverlay(); + } + } + public boolean playFirstUnreadVoiceMessage() { for (int a = messages.size() - 1; a >= 0; a--) { MessageObject messageObject = messages.get(a); @@ -2451,6 +2645,13 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not runningAnimation = null; } } + + @Override + public void onAnimationCancel(Object animation) { + if (runningAnimation != null && runningAnimation.equals(animation)) { + runningAnimation = null; + } + } }); runningAnimation.start(); } else if (!show) { @@ -2471,6 +2672,30 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not }); } + public void shareMyContact(final MessageObject messageObject) { + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + builder.setTitle(LocaleController.getString("ShareYouPhoneNumberTitle", R.string.ShareYouPhoneNumberTitle)); + if (currentUser != null) { + if (currentUser.bot) { + builder.setMessage(LocaleController.getString("AreYouSureShareMyContactInfoBot", R.string.AreYouSureShareMyContactInfoBot)); + } else { + builder.setMessage(AndroidUtilities.replaceTags(LocaleController.formatString("AreYouSureShareMyContactInfoUser", R.string.AreYouSureShareMyContactInfoUser, PhoneFormat.getInstance().format("+" + UserConfig.getCurrentUser().phone), ContactsController.formatName(currentUser.first_name, currentUser.last_name)))); + } + } else { + builder.setMessage(LocaleController.getString("AreYouSureShareMyContactInfo", R.string.AreYouSureShareMyContactInfo)); + } + builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + SendMessagesHelper.getInstance().sendMessage(UserConfig.getCurrentUser(), dialog_id, messageObject, chatActivityEnterView == null || chatActivityEnterView.asAdmin(), null, null); + moveScrollToLastMessage(); + showReplyPanel(false, null, null, null, false, true); + } + }); + builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); + showDialog(builder.create()); + } + private void showGifHint() { SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE); if (preferences.getBoolean("gifhint", false)) { @@ -2499,7 +2724,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not gifHintTextView = new TextView(getParentActivity()); gifHintTextView.setBackgroundResource(R.drawable.tooltip); - gifHintTextView.setTextColor(0xffffffff); + gifHintTextView.setTextColor(Theme.CHAT_GIF_HINT_TEXT_COLOR); gifHintTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); gifHintTextView.setPadding(AndroidUtilities.dp(10), 0, AndroidUtilities.dp(10), 0); gifHintTextView.setText(LocaleController.getString("TapHereGifs", R.string.TapHereGifs)); @@ -2546,23 +2771,29 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not private void checkContextBotPanel() { if (allowStickersPanel && mentionsAdapter != null && mentionsAdapter.isBotContext()) { if (!allowContextBotPanel && !allowContextBotPanelSecond) { - if (mentionListView.getVisibility() == View.VISIBLE && mentionListView.getTag() == null) { + if (mentionContainer.getVisibility() == View.VISIBLE && mentionContainer.getTag() == null) { if (mentionListAnimation != null) { mentionListAnimation.cancel(); - mentionListAnimation = null; } - mentionListView.setTag(1); + mentionContainer.setTag(1); mentionListAnimation = new AnimatorSetProxy(); mentionListAnimation.playTogether( - ObjectAnimatorProxy.ofFloat(mentionListView, "alpha", 0.0f) + ObjectAnimatorProxy.ofFloat(mentionContainer, "alpha", 0.0f) ); mentionListAnimation.addListener(new AnimatorListenerAdapterProxy() { @Override public void onAnimationEnd(Object animation) { if (mentionListAnimation != null && mentionListAnimation.equals(animation)) { - mentionListView.clearAnimation(); - mentionListView.setVisibility(View.INVISIBLE); + mentionContainer.clearAnimation(); + mentionContainer.setVisibility(View.INVISIBLE); + mentionListAnimation = null; + } + } + + @Override + public void onAnimationCancel(Object animation) { + if (mentionListAnimation != null && mentionListAnimation.equals(animation)) { mentionListAnimation = null; } } @@ -2571,22 +2802,28 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not mentionListAnimation.start(); } } else { - if (mentionListView.getVisibility() == View.INVISIBLE || mentionListView.getTag() != null) { + if (mentionContainer.getVisibility() == View.INVISIBLE || mentionContainer.getTag() != null) { if (mentionListAnimation != null) { mentionListAnimation.cancel(); - mentionListAnimation = null; } - mentionListView.setTag(null); - mentionListView.setVisibility(View.VISIBLE); + mentionContainer.setTag(null); + mentionContainer.setVisibility(View.VISIBLE); mentionListAnimation = new AnimatorSetProxy(); mentionListAnimation.playTogether( - ObjectAnimatorProxy.ofFloat(mentionListView, "alpha", 0.0f, 1.0f) + ObjectAnimatorProxy.ofFloat(mentionContainer, "alpha", 0.0f, 1.0f) ); mentionListAnimation.addListener(new AnimatorListenerAdapterProxy() { @Override public void onAnimationEnd(Object animation) { if (mentionListAnimation != null && mentionListAnimation.equals(animation)) { - mentionListView.clearAnimation(); + mentionContainer.clearAnimation(); + mentionListAnimation = null; + } + } + + @Override + public void onAnimationCancel(Object animation) { + if (mentionListAnimation != null && mentionListAnimation.equals(animation)) { mentionListAnimation = null; } } @@ -2598,7 +2835,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } - private void checkScrollForLoad() { + private void checkScrollForLoad(boolean scroll) { if (chatLayoutManager == null || paused) { return; } @@ -2606,7 +2843,17 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not int visibleItemCount = firstVisibleItem == RecyclerView.NO_POSITION ? 0 : Math.abs(chatLayoutManager.findLastVisibleItemPosition() - firstVisibleItem) + 1; if (visibleItemCount > 0) { int totalItemCount = chatAdapter.getItemCount(); - if (firstVisibleItem <= 25 && !loading) { + int checkLoadCount; + if (scroll) { + if (lastLoadIndex < 3) { + checkLoadCount = 5; + } else { + checkLoadCount = 25; + } + } else { + checkLoadCount = 5; + } + if (firstVisibleItem <= checkLoadCount && !loading) { if (!endReached[0]) { loading = true; waitingForLoad.add(lastLoadIndex); @@ -2737,14 +2984,14 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not FileLog.e("tmessages", e); } } else if (which == attach_location) { - if (!isGoogleMapsInstalled()) { + if (!AndroidUtilities.isGoogleMapsInstalled(ChatActivity.this)) { return; } LocationActivity fragment = new LocationActivity(); fragment.setDelegate(new LocationActivity.LocationActivityDelegate() { @Override public void didSelectLocation(TLRPC.MessageMedia location) { - SendMessagesHelper.getInstance().sendMessage(location, dialog_id, replyingMessageObject, chatActivityEnterView == null || chatActivityEnterView.asAdmin()); + SendMessagesHelper.getInstance().sendMessage(location, dialog_id, replyingMessageObject, chatActivityEnterView == null || chatActivityEnterView.asAdmin(), null, null); moveScrollToLastMessage(); showReplyPanel(false, null, null, null, false, true); if (paused) { @@ -3035,7 +3282,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (mess.length() > 150) { mess = mess.substring(0, 150); } - mess = mess.replace("\n", " "); + mess = mess.replace('\n', ' '); replyObjectTextView.setText(Emoji.replaceEmoji(mess, replyObjectTextView.getPaint().getFontMetricsInt(), AndroidUtilities.dp(14), false)); } } else if (messageObjects != null) { @@ -3121,7 +3368,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (mess.length() > 150) { mess = mess.substring(0, 150); } - mess = mess.replace("\n", " "); + mess = mess.replace('\n', ' '); replyObjectTextView.setText(Emoji.replaceEmoji(mess, replyObjectTextView.getPaint().getFontMetricsInt(), AndroidUtilities.dp(14), false)); } else { replyObjectTextView.setText(LocaleController.formatPluralString("ForwardedMessage", messageObjects.size())); @@ -3153,7 +3400,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not replyObjectTextView.setText(LocaleController.getString("AttachGif", R.string.AttachGif)); } else { String name; - if ((name = FileLoader.getDocumentFileName(messageObjects.get(0).messageOwner.media.document)).length() != 0) { + if ((name = FileLoader.getDocumentFileName(messageObjects.get(0).getDocument())).length() != 0) { replyObjectTextView.setText(name); } messageObject = messageObjects.get(0); @@ -3191,7 +3438,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not FrameLayout.LayoutParams layoutParams1 = (FrameLayout.LayoutParams) replyNameTextView.getLayoutParams(); FrameLayout.LayoutParams layoutParams2 = (FrameLayout.LayoutParams) replyObjectTextView.getLayoutParams(); TLRPC.PhotoSize photoSize = messageObject != null ? FileLoader.getClosestPhotoSizeWithSize(messageObject.photoThumbs, 80) : null; - if (photoSize == null || messageObject.type == 13 || messageObject != null && messageObject.isSecretMedia()) { + if (photoSize == null || photoSize instanceof TLRPC.TL_photoSizeEmpty || photoSize.location instanceof TLRPC.TL_fileLocationUnavailable || messageObject.type == 13 || messageObject != null && messageObject.isSecretMedia()) { replyImageView.setImageBitmap(null); replyImageLocation = null; replyImageView.setVisibility(View.INVISIBLE); @@ -3502,52 +3749,44 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not checkActionBarMenu(); } + @Override + public void onRequestPermissionsResultFragment(int requestCode, String[] permissions, int[] grantResults) { + if (chatActivityEnterView != null) { + chatActivityEnterView.onRequestPermissionsResultFragment(requestCode, permissions, grantResults); + } + if (mentionsAdapter != null) { + mentionsAdapter.onRequestPermissionsResultFragment(requestCode, permissions, grantResults); + } + } + private void checkActionBarMenu() { if (currentEncryptedChat != null && !(currentEncryptedChat instanceof TLRPC.TL_encryptedChat) || currentChat != null && ChatObject.isNotInChat(currentChat) || currentUser != null && UserObject.isDeleted(currentUser)) { - if (menuItem != null) { menuItem.setVisibility(View.GONE); } - if (timeItem != null) { - timeItem.setVisibility(View.GONE); - } if (timeItem2 != null) { timeItem2.setVisibility(View.GONE); } + if (avatarContainer != null) { + avatarContainer.hideTimeItem(); + } } else { if (menuItem != null) { menuItem.setVisibility(View.VISIBLE); } - if (timeItem != null) { - timeItem.setVisibility(View.VISIBLE); - } if (timeItem2 != null) { timeItem2.setVisibility(View.VISIBLE); } - } - - if (timerDrawable != null && currentEncryptedChat != null) { - timerDrawable.setTime(currentEncryptedChat.ttl); - } - - checkAndUpdateAvatar(); - } - - private int updateOnlineCount() { - onlineCount = 0; - int currentTime = ConnectionsManager.getInstance().getCurrentTime(); - if (info instanceof TLRPC.TL_chatFull || info instanceof TLRPC.TL_channelFull && info.participants_count <= 200 && info.participants != null) { - for (int a = 0; a < info.participants.participants.size(); a++) { - TLRPC.ChatParticipant participant = info.participants.participants.get(a); - TLRPC.User user = MessagesController.getInstance().getUser(participant.user_id); - if (user != null && user.status != null && (user.status.expires > currentTime || user.id == UserConfig.getClientUserId()) && user.status.expires > 10000) { - onlineCount++; - } + if (avatarContainer != null) { + avatarContainer.showTimeItem(); } } - return onlineCount; + if (avatarContainer != null && currentEncryptedChat != null) { + avatarContainer.setTime(currentEncryptedChat.ttl); + } + checkAndUpdateAvatar(); } private int getMessageType(MessageObject messageObject) { @@ -3575,52 +3814,52 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } return 1; } else { - if (!messageObject.isMediaEmpty()) { - if (messageObject.isVoice()) { - return 2; - } else if (messageObject.isSticker()) { - TLRPC.InputStickerSet inputStickerSet = messageObject.getInputStickerSet(); - if (inputStickerSet instanceof TLRPC.TL_inputStickerSetID) { - if (!StickersQuery.isStickerPackInstalled(inputStickerSet.id)) { - return 7; - } - } else if (inputStickerSet instanceof TLRPC.TL_inputStickerSetShortName) { - if (!StickersQuery.isStickerPackInstalled(inputStickerSet.short_name)) { - return 7; - } + if (messageObject.isVoice()) { + return 2; + } else if (messageObject.isSticker()) { + TLRPC.InputStickerSet inputStickerSet = messageObject.getInputStickerSet(); + if (inputStickerSet instanceof TLRPC.TL_inputStickerSetID) { + if (!StickersQuery.isStickerPackInstalled(inputStickerSet.id)) { + return 7; } - } else if (messageObject.messageOwner.media instanceof TLRPC.TL_messageMediaPhoto || messageObject.messageOwner.media instanceof TLRPC.TL_messageMediaDocument) { - boolean canSave = false; - if (messageObject.messageOwner.attachPath != null && messageObject.messageOwner.attachPath.length() != 0) { - File f = new File(messageObject.messageOwner.attachPath); - if (f.exists()) { - canSave = true; - } - } - if (!canSave) { - File f = FileLoader.getPathToMessage(messageObject.messageOwner); - if (f.exists()) { - canSave = true; - } - } - if (canSave) { - if (messageObject.messageOwner.media instanceof TLRPC.TL_messageMediaDocument) { - String mime = messageObject.messageOwner.media.document.mime_type; - if (mime != null) { - if (mime.endsWith("/xml")) { - return 5; - } else if (mime.endsWith("/png") || mime.endsWith("/jpg") || mime.endsWith("/jpeg")) { - return 6; - } - } - } - return 4; + } else if (inputStickerSet instanceof TLRPC.TL_inputStickerSetShortName) { + if (!StickersQuery.isStickerPackInstalled(inputStickerSet.short_name)) { + return 7; } } - return 2; - } else { + } else if (messageObject.messageOwner.media instanceof TLRPC.TL_messageMediaPhoto || messageObject.getDocument() != null || messageObject.isMusic() || messageObject.isVideo()) { + boolean canSave = false; + if (messageObject.messageOwner.attachPath != null && messageObject.messageOwner.attachPath.length() != 0) { + File f = new File(messageObject.messageOwner.attachPath); + if (f.exists()) { + canSave = true; + } + } + if (!canSave) { + File f = FileLoader.getPathToMessage(messageObject.messageOwner); + if (f.exists()) { + canSave = true; + } + } + if (canSave) { + if (messageObject.getDocument() != null) { + String mime = messageObject.getDocument().mime_type; + if (mime != null) { + if (mime.endsWith("/xml")) { + return 5; + } else if (mime.endsWith("/png") || mime.endsWith("/jpg") || mime.endsWith("/jpeg")) { + return 6; + } + } + } + return 4; + } + } else if (messageObject.type == 12) { + return 8; + } else if (messageObject.isMediaEmpty()) { return 3; } + return 2; } } } else { @@ -3642,46 +3881,46 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not return 1; } } else { - if (!messageObject.isMediaEmpty()) { - if (messageObject.isVoice()) { - return 2; - } else if (messageObject.isSticker()) { - TLRPC.InputStickerSet inputStickerSet = messageObject.getInputStickerSet(); - if (inputStickerSet instanceof TLRPC.TL_inputStickerSetShortName) { - if (!StickersQuery.isStickerPackInstalled(inputStickerSet.short_name)) { - return 7; - } - } - } else if (messageObject.messageOwner.media instanceof TLRPC.TL_messageMediaPhoto || messageObject.messageOwner.media instanceof TLRPC.TL_messageMediaDocument) { - boolean canSave = false; - if (messageObject.messageOwner.attachPath != null && messageObject.messageOwner.attachPath.length() != 0) { - File f = new File(messageObject.messageOwner.attachPath); - if (f.exists()) { - canSave = true; - } - } - if (!canSave) { - File f = FileLoader.getPathToMessage(messageObject.messageOwner); - if (f.exists()) { - canSave = true; - } - } - if (canSave) { - if (messageObject.messageOwner.media instanceof TLRPC.TL_messageMediaDocument) { - String mime = messageObject.messageOwner.media.document.mime_type; - if (mime != null && mime.endsWith("text/xml")) { - return 5; - } - } - if (messageObject.messageOwner.ttl <= 0) { - return 4; - } + if (messageObject.isVoice()) { + return 2; + } else if (messageObject.isSticker()) { + TLRPC.InputStickerSet inputStickerSet = messageObject.getInputStickerSet(); + if (inputStickerSet instanceof TLRPC.TL_inputStickerSetShortName) { + if (!StickersQuery.isStickerPackInstalled(inputStickerSet.short_name)) { + return 7; } } - return 2; - } else { + } else if (messageObject.messageOwner.media instanceof TLRPC.TL_messageMediaPhoto || messageObject.getDocument() != null || messageObject.isMusic() || messageObject.isVideo()) { + boolean canSave = false; + if (messageObject.messageOwner.attachPath != null && messageObject.messageOwner.attachPath.length() != 0) { + File f = new File(messageObject.messageOwner.attachPath); + if (f.exists()) { + canSave = true; + } + } + if (!canSave) { + File f = FileLoader.getPathToMessage(messageObject.messageOwner); + if (f.exists()) { + canSave = true; + } + } + if (canSave) { + if (messageObject.getDocument() != null) { + String mime = messageObject.getDocument().mime_type; + if (mime != null && mime.endsWith("text/xml")) { + return 5; + } + } + if (messageObject.messageOwner.ttl <= 0) { + return 4; + } + } + } else if (messageObject.type == 12) { + return 8; + } else if (messageObject.isMediaEmpty()) { return 3; } + return 2; } } } @@ -3724,7 +3963,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (replyItem.getVisibility() != newVisibility) { if (replyButtonAnimation != null) { replyButtonAnimation.cancel(); - replyButtonAnimation = null; } if (copyVisible != newCopyVisible) { if (newVisibility == View.VISIBLE) { @@ -3755,13 +3993,20 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not replyButtonAnimation.addListener(new AnimatorListenerAdapterProxy() { @Override public void onAnimationEnd(Object animation) { - if (replyButtonAnimation.equals(animation)) { + if (replyButtonAnimation != null && replyButtonAnimation.equals(animation)) { replyItem.clearAnimation(); if (newVisibility == View.GONE) { replyItem.setVisibility(View.GONE); } } } + + @Override + public void onAnimationCancel(Object animation) { + if (replyButtonAnimation != null && replyButtonAnimation.equals(animation)) { + replyButtonAnimation = null; + } + } }); replyButtonAnimation.start(); } @@ -3799,20 +4044,20 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } private void updateTitle() { - if (nameTextView == null) { + if (avatarContainer == null) { return; } if (currentChat != null) { - nameTextView.setText(currentChat.title); + avatarContainer.setTitle(currentChat.title); } else if (currentUser != null) { if (currentUser.id / 1000 != 777 && currentUser.id / 1000 != 333 && ContactsController.getInstance().contactsDict.get(currentUser.id) == null && (ContactsController.getInstance().contactsDict.size() != 0 || !ContactsController.getInstance().isLoadingContacts())) { if (currentUser.phone != null && currentUser.phone.length() != 0) { - nameTextView.setText(PhoneFormat.getInstance().format("+" + currentUser.phone)); + avatarContainer.setTitle(PhoneFormat.getInstance().format("+" + currentUser.phone)); } else { - nameTextView.setText(UserObject.getUserName(currentUser)); + avatarContainer.setTitle(UserObject.getUserName(currentUser)); } } else { - nameTextView.setText(UserObject.getUserName(currentUser)); + avatarContainer.setTitle(UserObject.getUserName(currentUser)); } } } @@ -3852,13 +4097,11 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } private void updateTitleIcons() { - if (nameTextView == null) { + if (avatarContainer == null) { return; } - int leftIcon = currentEncryptedChat != null ? R.drawable.ic_lock_header : 0; int rightIcon = MessagesController.getInstance().isDialogMuted(dialog_id) ? R.drawable.mute_fixed : 0; - nameTextView.setCompoundDrawablesWithIntrinsicBounds(leftIcon, 0, rightIcon, 0); - + avatarContainer.setTitleIcons(currentEncryptedChat != null ? R.drawable.ic_lock_header : 0, rightIcon); if (rightIcon != 0) { muteItem.setText(LocaleController.getString("UnmuteNotifications", R.string.UnmuteNotifications)); } else { @@ -3866,189 +4109,22 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } - private void updateSubtitle() { - if (onlineTextView == null) { - return; - } - CharSequence printString = MessagesController.getInstance().printingStrings.get(dialog_id); - if (printString != null) { - printString = TextUtils.replace(printString, new String[]{"..."}, new String[]{""}); - } - if (printString == null || printString.length() == 0 || ChatObject.isChannel(currentChat) && !currentChat.megagroup) { - setTypingAnimation(false); - if (currentChat != null) { - if (ChatObject.isChannel(currentChat)) { - if (!currentChat.broadcast && !currentChat.megagroup && !(currentChat instanceof TLRPC.TL_channelForbidden)) { - onlineTextView.setText(LocaleController.getString("ShowDiscussion", R.string.ShowDiscussion)); - if (radioButton != null && radioButton.getVisibility() != View.VISIBLE) { - radioButton.setVisibility(View.VISIBLE); - onlineTextView.setLayoutParams(LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.BOTTOM, 74, 0, 0, 4)); - } - } else { - if (info != null && info.participants_count != 0) { - if (currentChat.megagroup && info.participants_count <= 200) { - if (onlineCount > 1 && info.participants_count != 0) { - onlineTextView.setText(String.format("%s, %s", LocaleController.formatPluralString("Members", info.participants_count), LocaleController.formatPluralString("Online", onlineCount))); - } else { - onlineTextView.setText(LocaleController.formatPluralString("Members", info.participants_count)); - } - } else { - int result[] = new int[1]; - String shortNumber = LocaleController.formatShortNumber(info.participants_count, result); - String text = LocaleController.formatPluralString("Members", result[0]).replace(String.format("%d", result[0]), shortNumber); - onlineTextView.setText(text); - } - } else { - if (currentChat.megagroup) { - onlineTextView.setText(LocaleController.getString("Loading", R.string.Loading).toLowerCase()); - } else { - if ((currentChat.flags & TLRPC.CHAT_FLAG_IS_PUBLIC) != 0) { - onlineTextView.setText(LocaleController.getString("ChannelPublic", R.string.ChannelPublic).toLowerCase()); - } else { - onlineTextView.setText(LocaleController.getString("ChannelPrivate", R.string.ChannelPrivate).toLowerCase()); - } - } - } - if (radioButton != null && radioButton.getVisibility() != View.GONE) { - radioButton.setVisibility(View.GONE); - onlineTextView.setLayoutParams(LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.BOTTOM, 54, 0, 0, 4)); - } - } - } else { - if (ChatObject.isKickedFromChat(currentChat)) { - onlineTextView.setText(LocaleController.getString("YouWereKicked", R.string.YouWereKicked)); - } else if (ChatObject.isLeftFromChat(currentChat)) { - onlineTextView.setText(LocaleController.getString("YouLeft", R.string.YouLeft)); - } else { - int count = currentChat.participants_count; - if (info != null) { - count = info.participants.participants.size(); - } - if (onlineCount > 1 && count != 0) { - onlineTextView.setText(String.format("%s, %s", LocaleController.formatPluralString("Members", count), LocaleController.formatPluralString("Online", onlineCount))); - } else { - onlineTextView.setText(LocaleController.formatPluralString("Members", count)); - } - } - } - } else if (currentUser != null) { - TLRPC.User user = MessagesController.getInstance().getUser(currentUser.id); - if (user != null) { - currentUser = user; - } - String newStatus; - if (currentUser.id == 333000 || currentUser.id == 777000) { - newStatus = LocaleController.getString("ServiceNotifications", R.string.ServiceNotifications); - } else if (currentUser.bot) { - newStatus = LocaleController.getString("Bot", R.string.Bot); - } else { - newStatus = LocaleController.formatUserStatus(currentUser); - } - if (lastStatus == null || lastPrintString != null || !lastStatus.equals(newStatus)) { - lastStatus = newStatus; - onlineTextView.setText(newStatus); - } - } - lastPrintString = null; - } else { - lastPrintString = printString; - onlineTextView.setText(printString); - setTypingAnimation(true); - } - } - - private void setTypingAnimation(boolean start) { - if (actionBar == null) { - return; - } - if (start) { - try { - Integer type = MessagesController.getInstance().printingStringsTypes.get(dialog_id); - if (type == 0) { - if (lastStatusDrawable == 1) { - return; - } - lastStatusDrawable = 1; - if (onlineTextView != null) { - onlineTextView.setCompoundDrawablesWithIntrinsicBounds(typingDotsDrawable, null, null, null); - onlineTextView.setCompoundDrawablePadding(AndroidUtilities.dp(4)); - - typingDotsDrawable.start(); - recordStatusDrawable.stop(); - sendingFileDrawable.stop(); - } - } else if (type == 1) { - if (lastStatusDrawable == 2) { - return; - } - lastStatusDrawable = 2; - if (onlineTextView != null) { - onlineTextView.setCompoundDrawablesWithIntrinsicBounds(recordStatusDrawable, null, null, null); - onlineTextView.setCompoundDrawablePadding(AndroidUtilities.dp(4)); - - recordStatusDrawable.start(); - typingDotsDrawable.stop(); - sendingFileDrawable.stop(); - } - } else if (type == 2) { - if (lastStatusDrawable == 3) { - return; - } - lastStatusDrawable = 3; - if (onlineTextView != null) { - onlineTextView.setCompoundDrawablesWithIntrinsicBounds(sendingFileDrawable, null, null, null); - onlineTextView.setCompoundDrawablePadding(AndroidUtilities.dp(4)); - - sendingFileDrawable.start(); - typingDotsDrawable.stop(); - recordStatusDrawable.stop(); - } - } - } catch (Exception e) { - FileLog.e("tmessages", e); - } - } else { - if (lastStatusDrawable == 0) { - return; - } - lastStatusDrawable = 0; - if (onlineTextView != null) { - onlineTextView.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null); - onlineTextView.setCompoundDrawablePadding(0); - - typingDotsDrawable.stop(); - recordStatusDrawable.stop(); - sendingFileDrawable.stop(); - } - } - } - private void checkAndUpdateAvatar() { - TLRPC.FileLocation newPhoto = null; - AvatarDrawable avatarDrawable = null; if (currentUser != null) { TLRPC.User user = MessagesController.getInstance().getUser(currentUser.id); if (user == null) { return; } currentUser = user; - if (currentUser.photo != null) { - newPhoto = currentUser.photo.photo_small; - } - avatarDrawable = new AvatarDrawable(currentUser); } else if (currentChat != null) { TLRPC.Chat chat = MessagesController.getInstance().getChat(currentChat.id); if (chat == null) { return; } currentChat = chat; - if (currentChat.photo != null) { - newPhoto = currentChat.photo.photo_small; - } - avatarDrawable = new AvatarDrawable(currentChat); } - if (avatarImageView != null) { - avatarImageView.setImage(newPhoto, "50_50", avatarDrawable); + if (avatarContainer != null) { + avatarContainer.checkAndUpdateAvatar(); } } @@ -4254,7 +4330,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not user.first_name = name; user.last_name = ""; user.phone = number; - SendMessagesHelper.getInstance().sendMessage(user, dialog_id, replyingMessageObject, chatActivityEnterView == null || chatActivityEnterView.asAdmin()); + SendMessagesHelper.getInstance().sendMessage(user, dialog_id, replyingMessageObject, chatActivityEnterView == null || chatActivityEnterView.asAdmin(), null, null); } if (sent) { showReplyPanel(false, null, null, null, false, true); @@ -4309,6 +4385,10 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (id == NotificationCenter.messagesDidLoaded) { int guid = (Integer) args[11]; if (guid == classGuid) { + if (!openAnimationEnded) { + NotificationCenter.getInstance().setAllowedNotificationsDutingAnimation(new int[]{NotificationCenter.chatInfoDidLoaded, NotificationCenter.dialogsNeedReload, + NotificationCenter.closeChats, NotificationCenter.botKeyboardDidLoaded/*, NotificationCenter.botInfoDidLoaded*/}); + } int queryLoadIndex = (Integer) args[12]; int index = waitingForLoad.indexOf(queryLoadIndex); if (index == -1) { @@ -4402,8 +4482,10 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (currentEncryptedChat == null) { MessagesQuery.loadReplyMessagesForMessages(messArr, dialog_id); } + int approximateHeightSum = 0; for (int a = 0; a < messArr.size(); a++) { MessageObject obj = messArr.get(a); + approximateHeightSum += obj.getApproximateHeight(); if (currentUser != null && currentUser.bot && obj.isOut()) { obj.setIsRead(); } @@ -4449,7 +4531,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not dateMsg.id = 0; MessageObject dateObj = new MessageObject(dateMsg, null, false); dateObj.type = 10; - dateObj.contentType = 4; + dateObj.contentType = 1; if (load_type == 1) { messages.add(0, dateObj); } else { @@ -4474,7 +4556,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not dateMsg.from_id = group.max_id; MessageObject dateObj = new MessageObject(dateMsg, null, false); dateObj.type = 10; - dateObj.contentType = 4; + dateObj.contentType = 1; dayArray.add(dateObj); if (load_type == 1) { messages.add(0, dateObj); @@ -4490,22 +4572,24 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not messages.add(messages.size() - 1, obj); } + if (obj.getId() == last_message_id) { + forwardEndReached[loadIndex] = true; + } + if (load_type == 2 && obj.getId() == first_unread_id) { - TLRPC.Message dateMsg = new TLRPC.Message(); - dateMsg.message = ""; - dateMsg.id = 0; - MessageObject dateObj = new MessageObject(dateMsg, null, false); - dateObj.contentType = dateObj.type = 6; - //boolean dateAdded = true; - //if (a != messArr.size() - 1) { - // MessageObject next = messArr.get(a + 1); - // dateAdded = !next.dateKey.equals(obj.dateKey); - //} - messages.add(messages.size() - 1, dateObj); - unreadMessageObject = dateObj; - scrollToMessage = unreadMessageObject; - scrollToMessagePosition = -10000; - newRowsCount++; + if (approximateHeightSum > AndroidUtilities.displaySize.y / 2 || !forwardEndReached[0]) { + TLRPC.Message dateMsg = new TLRPC.Message(); + dateMsg.message = ""; + dateMsg.id = 0; + MessageObject dateObj = new MessageObject(dateMsg, null, false); + dateObj.type = 6; + dateObj.contentType = 2; + messages.add(messages.size() - 1, dateObj); + unreadMessageObject = dateObj; + scrollToMessage = unreadMessageObject; + scrollToMessagePosition = -10000; + newRowsCount++; + } } else if (load_type == 3 && obj.getId() == startLoadFromMessageId) { if (needSelectFromMessageId) { highlightMessageId = obj.getId(); @@ -4518,10 +4602,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not scrollToMessagePosition = -9000; } } - - if (obj.getId() == last_message_id) { - forwardEndReached[loadIndex] = true; - } } if (forwardEndReached[loadIndex] && loadIndex != 1) { @@ -4679,7 +4759,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not progressView.setVisibility(View.INVISIBLE); } } - checkScrollForLoad(); + checkScrollForLoad(false); } } else if (id == NotificationCenter.emojiDidLoaded) { if (chatListView != null) { @@ -4688,6 +4768,15 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (replyObjectTextView != null) { replyObjectTextView.invalidate(); } + if (alertTextView != null) { + alertTextView.invalidate(); + } + if (pinnedMessageTextView != null) { + pinnedMessageTextView.invalidate(); + } + if (mentionListView != null) { + mentionListView.invalidateViews(); + } } else if (id == NotificationCenter.updateInterfaces) { int updateMask = (Integer) args[0]; if ((updateMask & MessagesController.UPDATE_MASK_NAME) != 0 || (updateMask & MessagesController.UPDATE_MASK_CHAT_NAME) != 0) { @@ -4695,24 +4784,17 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } boolean updateSubtitle = false; if ((updateMask & MessagesController.UPDATE_MASK_CHAT_MEMBERS) != 0 || (updateMask & MessagesController.UPDATE_MASK_STATUS) != 0) { - if (currentChat != null) { - int lastCount = onlineCount; - if (lastCount != updateOnlineCount()) { - updateSubtitle = true; - } - } else { - updateSubtitle = true; + if (currentChat != null && avatarContainer != null) { + avatarContainer.updateOnlineCount(); } + updateSubtitle = true; } if ((updateMask & MessagesController.UPDATE_MASK_AVATAR) != 0 || (updateMask & MessagesController.UPDATE_MASK_CHAT_AVATAR) != 0 || (updateMask & MessagesController.UPDATE_MASK_NAME) != 0) { checkAndUpdateAvatar(); updateVisibleRows(); } if ((updateMask & MessagesController.UPDATE_MASK_USER_PRINT) != 0) { - CharSequence printString = MessagesController.getInstance().printingStrings.get(dialog_id); - if (lastPrintString != null && printString == null || lastPrintString == null && printString != null || lastPrintString != null && printString != null && !lastPrintString.equals(printString)) { - updateSubtitle = true; - } + updateSubtitle = true; } if ((updateMask & MessagesController.UPDATE_MASK_CHANNEL) != 0 && ChatObject.isChannel(currentChat)) { TLRPC.Chat chat = MessagesController.getInstance().getChat(currentChat.id); @@ -4726,8 +4808,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not chatActivityEnterView.setDialogId(dialog_id); } } - if (updateSubtitle) { - updateSubtitle(); + if (avatarContainer != null && updateSubtitle) { + avatarContainer.updateSubtitle(); } if ((updateMask & MessagesController.UPDATE_MASK_USER_PHONE) != 0) { updateContactStatus(); @@ -4739,7 +4821,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not boolean updateChat = false; boolean hasFromMe = false; ArrayList arr = (ArrayList) args[1]; - if (currentEncryptedChat != null && arr.size() == 1) { MessageObject obj = arr.get(0); @@ -4754,21 +4835,39 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } } - if (currentChat != null) { + if (currentChat != null || inlineReturn != 0) { for (int a = 0; a < arr.size(); a++) { MessageObject messageObject = arr.get(a); - if (messageObject.messageOwner.action instanceof TLRPC.TL_messageActionChatDeleteUser && messageObject.messageOwner.action.user_id == UserConfig.getClientUserId() || - messageObject.messageOwner.action instanceof TLRPC.TL_messageActionChatAddUser && messageObject.messageOwner.action.users.contains(UserConfig.getClientUserId())) { - TLRPC.Chat newChat = MessagesController.getInstance().getChat(currentChat.id); - if (newChat != null) { - currentChat = newChat; - updateBottomOverlay(); - updateSubtitle(); + if (currentChat != null) { + if (messageObject.messageOwner.action instanceof TLRPC.TL_messageActionChatDeleteUser && messageObject.messageOwner.action.user_id == UserConfig.getClientUserId() || + messageObject.messageOwner.action instanceof TLRPC.TL_messageActionChatAddUser && messageObject.messageOwner.action.users.contains(UserConfig.getClientUserId())) { + TLRPC.Chat newChat = MessagesController.getInstance().getChat(currentChat.id); + if (newChat != null) { + currentChat = newChat; + checkActionBarMenu(); + updateBottomOverlay(); + if (avatarContainer != null) { + avatarContainer.updateSubtitle(); + } + } + } else if (messageObject.messageOwner.reply_to_msg_id != 0 && messageObject.replyMessageObject == null) { + messageObject.replyMessageObject = messagesDict[0].get(messageObject.messageOwner.reply_to_msg_id); + if (messageObject.messageOwner.action instanceof TLRPC.TL_messageActionPinMessage) { + messageObject.generatePinMessageText(null, null); + } } - } else if (messageObject.messageOwner.reply_to_msg_id != 0 && messageObject.replyMessageObject == null) { - messageObject.replyMessageObject = messagesDict[0].get(messageObject.messageOwner.reply_to_msg_id); - if (messageObject.messageOwner.action instanceof TLRPC.TL_messageActionPinMessage) { - messageObject.generatePinMessageText(null, null); + } else if (inlineReturn != 0) { + if (messageObject.messageOwner.reply_markup != null) { + for (int b = 0; b < messageObject.messageOwner.reply_markup.rows.size(); b++) { + TLRPC.TL_keyboardButtonRow row = messageObject.messageOwner.reply_markup.rows.get(b); + for (int c = 0; c < row.buttons.size(); c++) { + TLRPC.KeyboardButton button = row.buttons.get(c); + if (button instanceof TLRPC.TL_keyboardButtonSwitchInline) { + processSwitchButton((TLRPC.TL_keyboardButtonSwitchInline) button); + break; + } + } + } } } } @@ -4788,10 +4887,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (currentUser != null && currentUser.bot && obj.isOut()) { obj.setIsRead(); } - if (currentEncryptedChat != null && obj.messageOwner.action != null && obj.messageOwner.action instanceof TLRPC.TL_messageEncryptedAction && - obj.messageOwner.action.encryptedAction instanceof TLRPC.TL_decryptedMessageActionSetMessageTTL && timerDrawable != null) { - TLRPC.TL_decryptedMessageActionSetMessageTTL action = (TLRPC.TL_decryptedMessageActionSetMessageTTL) obj.messageOwner.action.encryptedAction; - timerDrawable.setTime(action.ttl_seconds); + if (avatarContainer != null && currentEncryptedChat != null && obj.messageOwner.action != null && obj.messageOwner.action instanceof TLRPC.TL_messageEncryptedAction && obj.messageOwner.action.encryptedAction instanceof TLRPC.TL_decryptedMessageActionSetMessageTTL) { + avatarContainer.setTime(((TLRPC.TL_decryptedMessageActionSetMessageTTL) obj.messageOwner.action.encryptedAction).ttl_seconds); } if (obj.messageOwner.action instanceof TLRPC.TL_messageActionChatMigrateTo) { final Bundle bundle = new Bundle(); @@ -4868,10 +4965,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (currentUser != null && currentUser.bot && obj.isOut()) { obj.setIsRead(); } - if (currentEncryptedChat != null && obj.messageOwner.action != null && obj.messageOwner.action instanceof TLRPC.TL_messageEncryptedAction && - obj.messageOwner.action.encryptedAction instanceof TLRPC.TL_decryptedMessageActionSetMessageTTL && timerDrawable != null) { - TLRPC.TL_decryptedMessageActionSetMessageTTL action = (TLRPC.TL_decryptedMessageActionSetMessageTTL) obj.messageOwner.action.encryptedAction; - timerDrawable.setTime(action.ttl_seconds); + if (avatarContainer != null && currentEncryptedChat != null && obj.messageOwner.action != null && obj.messageOwner.action instanceof TLRPC.TL_messageEncryptedAction && obj.messageOwner.action.encryptedAction instanceof TLRPC.TL_decryptedMessageActionSetMessageTTL) { + avatarContainer.setTime(((TLRPC.TL_decryptedMessageActionSetMessageTTL) obj.messageOwner.action.encryptedAction).ttl_seconds); } if (messagesDict[0].containsKey(obj.getId())) { continue; @@ -4941,7 +5036,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not dateMsg.id = 0; MessageObject dateObj = new MessageObject(dateMsg, null, false); dateObj.type = 10; - dateObj.contentType = 4; + dateObj.contentType = 1; messages.add(0, dateObj); addedCount++; } @@ -4960,7 +5055,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not dateMsg.message = ""; dateMsg.id = 0; MessageObject dateObj = new MessageObject(dateMsg, null, false); - dateObj.contentType = dateObj.type = 6; + dateObj.type = 6; + dateObj.contentType = 2; messages.add(0, dateObj); unreadMessageObject = dateObj; scrollToMessage = unreadMessageObject; @@ -5214,18 +5310,20 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not TLRPC.Message newMsgObj = (TLRPC.Message) args[2]; boolean mediaUpdated = false; try { - mediaUpdated = newMsgObj.media != null && obj.messageOwner.media != null && !newMsgObj.media.getClass().equals(obj.messageOwner.media.getClass()); + mediaUpdated = obj.messageOwner.params != null && obj.messageOwner.params.containsKey("query_id") || newMsgObj.media != null && obj.messageOwner.media != null && !newMsgObj.media.getClass().equals(obj.messageOwner.media.getClass()); } catch (Exception e) { //TODO FileLog.e("tmessages", e); } if (newMsgObj != null) { - obj.messageOwner.media = newMsgObj.media; + obj.messageOwner = newMsgObj; obj.generateThumbs(true); + obj.setType(); } messagesDict[0].remove(msgId); messagesDict[0].put(newMsgId, obj); obj.messageOwner.id = newMsgId; obj.messageOwner.send_state = MessageObject.MESSAGE_SEND_STATE_SENT; + obj.forceUpdate = mediaUpdated; ArrayList messArr = new ArrayList<>(); messArr.add(obj); if (currentEncryptedChat == null) { @@ -5284,8 +5382,10 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } else { updatePinnedMessageView(true); } - updateOnlineCount(); - updateSubtitle(); + if (avatarContainer != null) { + avatarContainer.updateOnlineCount(); + avatarContainer.updateSubtitle(); + } if (isBroadcast) { SendMessagesHelper.getInstance().setCurrentChatInfo(info); } @@ -5369,7 +5469,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } else if (id == NotificationCenter.contactsDidLoaded) { updateContactStatus(); - updateSubtitle(); + if (avatarContainer != null) { + avatarContainer.updateSubtitle(); + } } else if (id == NotificationCenter.encryptedChatUpdated) { TLRPC.EncryptedChat chat = (TLRPC.EncryptedChat) args[0]; if (currentEncryptedChat != null && chat.id == currentEncryptedChat.id) { @@ -5405,14 +5507,10 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not int count = chatListView.getChildCount(); for (int a = 0; a < count; a++) { View view = chatListView.getChildAt(a); - if (view instanceof ChatAudioCell) { - ChatAudioCell cell = (ChatAudioCell) view; - if (cell.getMessageObject() != null) { - cell.updateButtonState(false); - } - } else if (view instanceof ChatMusicCell) { - ChatMusicCell cell = (ChatMusicCell) view; - if (cell.getMessageObject() != null) { + if (view instanceof ChatMessageCell) { + ChatMessageCell cell = (ChatMessageCell) view; + MessageObject messageObject = cell.getMessageObject(); + if (messageObject != null && (messageObject.isVoice() || messageObject.isMusic())) { cell.updateButtonState(false); } } @@ -5424,27 +5522,15 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not int count = chatListView.getChildCount(); for (int a = 0; a < count; a++) { View view = chatListView.getChildAt(a); - if (view instanceof ChatAudioCell) { - ChatAudioCell cell = (ChatAudioCell) view; + if (view instanceof ChatMessageCell) { + ChatMessageCell cell = (ChatMessageCell) view; if (cell.getMessageObject() != null && cell.getMessageObject().getId() == mid) { MessageObject playing = cell.getMessageObject(); MessageObject player = MediaController.getInstance().getPlayingMessageObject(); if (player != null) { playing.audioProgress = player.audioProgress; playing.audioProgressSec = player.audioProgressSec; - cell.updateProgress(); - } - break; - } - } else if (view instanceof ChatMusicCell) { - ChatMusicCell cell = (ChatMusicCell) view; - if (cell.getMessageObject() != null && cell.getMessageObject().getId() == mid) { - MessageObject playing = cell.getMessageObject(); - MessageObject player = MediaController.getInstance().getPlayingMessageObject(); - if (player != null) { - playing.audioProgress = player.audioProgress; - playing.audioProgressSec = player.audioProgressSec; - cell.updateProgress(); + cell.updateAudioProgress(); } break; } @@ -5558,14 +5644,10 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not int count = chatListView.getChildCount(); for (int a = 0; a < count; a++) { View view = chatListView.getChildAt(a); - if (view instanceof ChatAudioCell) { - ChatAudioCell cell = (ChatAudioCell) view; - if (cell.getMessageObject() != null) { - cell.updateButtonState(false); - } - } else if (view instanceof ChatMusicCell) { - ChatMusicCell cell = (ChatMusicCell) view; - if (cell.getMessageObject() != null) { + if (view instanceof ChatMessageCell) { + ChatMessageCell cell = (ChatMessageCell) view; + MessageObject messageObject1 = cell.getMessageObject(); + if (messageObject1 != null && (messageObject1.isVoice() || messageObject1.isMusic())) { cell.updateButtonState(false); } } @@ -5655,7 +5737,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } if (updated) { updateVisibleRows(); - if (chatLayoutManager.findLastVisibleItemPosition() >= messages.size() - 1) { + if (chatLayoutManager != null && chatLayoutManager.findLastVisibleItemPosition() >= messages.size() - 1) { moveScrollToLastMessage(); } } @@ -5773,6 +5855,48 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } + public boolean processSwitchButton(TLRPC.TL_keyboardButtonSwitchInline button) { + if (inlineReturn == 0) { + return false; + } + String query = "@" + currentUser.username + " " + button.query; + if (inlineReturn == dialog_id) { + inlineReturn = 0; + chatActivityEnterView.setFieldText(query); + } else { + SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE); + SharedPreferences.Editor editor = preferences.edit(); + editor.putString("dialog_" + inlineReturn, query); + editor.commit(); + if (parentLayout.fragmentsStack.size() > 1) { + BaseFragment prevFragment = parentLayout.fragmentsStack.get(parentLayout.fragmentsStack.size() - 2); + if (prevFragment instanceof ChatActivity && ((ChatActivity) prevFragment).dialog_id == inlineReturn) { + finishFragment(); + } else { + Bundle bundle = new Bundle(); + int lower_part = (int) inlineReturn; + int high_part = (int) (inlineReturn >> 32); + if (lower_part != 0) { + if (lower_part > 0) { + bundle.putInt("user_id", lower_part); + } else if (lower_part < 0) { + bundle.putInt("chat_id", -lower_part); + } + } else { + bundle.putInt("enc_id", high_part); + } + /*ActionBarLayout parentLayout = ChatActivity.this.parentLayout; + if (lastFragment != null) { + NotificationCenter.getInstance().removeObserver(lastFragment, NotificationCenter.closeChats); + } + NotificationCenter.getInstance().postNotificationName(NotificationCenter.closeChats);*/ + presentFragment(new ChatActivity(bundle), true); + } + } + } + return true; + } + private void updateSearchButtons(int mask) { if (searchUpItem != null) { searchUpItem.setEnabled((mask & 1) != 0); @@ -5784,16 +5908,18 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not @Override public void onTransitionAnimationStart(boolean isOpen, boolean backward) { + NotificationCenter.getInstance().setAllowedNotificationsDutingAnimation(new int[]{NotificationCenter.chatInfoDidLoaded, NotificationCenter.dialogsNeedReload, + NotificationCenter.closeChats, NotificationCenter.messagesDidLoaded, NotificationCenter.botKeyboardDidLoaded/*, NotificationCenter.botInfoDidLoaded*/}); + NotificationCenter.getInstance().setAnimationInProgress(true); if (isOpen) { - NotificationCenter.getInstance().setAnimationInProgress(true); openAnimationEnded = false; } } @Override public void onTransitionAnimationEnd(boolean isOpen, boolean backward) { + NotificationCenter.getInstance().setAnimationInProgress(false); if (isOpen) { - NotificationCenter.getInstance().setAnimationInProgress(false); openAnimationEnded = true; int count = chatListView.getChildCount(); for (int a = 0; a < count; a++) { @@ -5806,6 +5932,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (currentUser != null) { MessagesController.getInstance().loadFullUser(currentUser, classGuid, false); } + if (Build.VERSION.SDK_INT >= 21) { + createChatAttachView(); + } } } @@ -5887,6 +6016,94 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not checkRaiseSensors(); } + public void showAlert(TLRPC.User user, String message) { + if (alertView == null || user == null || message == null) { + return; + } + + if (alertView.getTag() != null) { + alertView.setTag(null); + if (alertViewAnimator != null) { + alertViewAnimator.cancel(); + alertViewAnimator = null; + } + if (Build.VERSION.SDK_INT >= 11) { + alertView.setVisibility(View.VISIBLE); + alertViewAnimator = new AnimatorSetProxy(); + alertViewAnimator.playTogether(ObjectAnimatorProxy.ofFloat(alertView, "translationY", 0)); + alertViewAnimator.setDuration(200); + alertViewAnimator.addListener(new AnimatorListenerAdapterProxy() { + @Override + public void onAnimationEnd(Object animation) { + if (alertViewAnimator != null && alertViewAnimator.equals(animation)) { + alertView.clearAnimation(); + alertViewAnimator = null; + } + } + + @Override + public void onAnimationCancel(Object animation) { + if (alertViewAnimator != null && alertViewAnimator.equals(animation)) { + alertViewAnimator = null; + } + } + }); + alertViewAnimator.start(); + } else { + ViewProxy.setTranslationY(alertView, 0); + alertView.clearAnimation(); + alertView.setVisibility(View.VISIBLE); + } + } + alertNameTextView.setText(ContactsController.formatName(user.first_name, user.last_name)); + alertTextView.setText(Emoji.replaceEmoji(message.replace('\n', ' '), alertTextView.getPaint().getFontMetricsInt(), AndroidUtilities.dp(14), false)); + if (hideAlertViewRunnable != null) { + AndroidUtilities.cancelRunOnUIThread(hideAlertViewRunnable); + } + AndroidUtilities.runOnUIThread(hideAlertViewRunnable = new Runnable() { + @Override + public void run() { + if (hideAlertViewRunnable != this) { + return; + } + if (alertView.getTag() == null) { + alertView.setTag(1); + if (alertViewAnimator != null) { + alertViewAnimator.cancel(); + alertViewAnimator = null; + } + if (Build.VERSION.SDK_INT >= 11) { + alertViewAnimator = new AnimatorSetProxy(); + alertViewAnimator.playTogether(ObjectAnimatorProxy.ofFloat(alertView, "translationY", -AndroidUtilities.dp(50))); + alertViewAnimator.setDuration(200); + alertViewAnimator.addListener(new AnimatorListenerAdapterProxy() { + @Override + public void onAnimationEnd(Object animation) { + if (alertViewAnimator != null && alertViewAnimator.equals(animation)) { + alertView.clearAnimation(); + alertView.setVisibility(View.GONE); + alertViewAnimator = null; + } + } + + @Override + public void onAnimationCancel(Object animation) { + if (alertViewAnimator != null && alertViewAnimator.equals(animation)) { + alertViewAnimator = null; + } + } + }); + alertViewAnimator.start(); + } else { + ViewProxy.setTranslationY(alertView, -AndroidUtilities.dp(50)); + alertView.clearAnimation(); + alertView.setVisibility(View.GONE); + } + } + } + }, 3000); + } + private void hidePinnedMessageView(boolean animated) { if (pinnedMessageView.getTag() == null) { pinnedMessageView.setTag(1); @@ -5981,7 +6198,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (mess.length() > 150) { mess = mess.substring(0, 150); } - mess = mess.replace("\n", " "); + mess = mess.replace('\n', ' '); pinnedMessageTextView.setText(Emoji.replaceEmoji(mess, pinnedMessageTextView.getPaint().getFontMetricsInt(), AndroidUtilities.dp(14), false)); } } else { @@ -6034,6 +6251,13 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not reportSpamViewAnimator = null; } } + + @Override + public void onAnimationCancel(Object animation) { + if (reportSpamViewAnimator != null && reportSpamViewAnimator.equals(animation)) { + reportSpamViewAnimator = null; + } + } }); reportSpamViewAnimator.start(); } else { @@ -6059,6 +6283,13 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not reportSpamViewAnimator = null; } } + + @Override + public void onAnimationCancel(Object animation) { + if (reportSpamViewAnimator != null && reportSpamViewAnimator.equals(animation)) { + reportSpamViewAnimator = null; + } + } }); reportSpamViewAnimator.start(); } else { @@ -6191,7 +6422,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not readWhenResume = false; MessagesController.getInstance().markDialogAsRead(dialog_id, messages.get(0).getId(), readWithMid, readWithDate, true, false); } - checkScrollForLoad(); + checkScrollForLoad(false); if (wasPaused) { wasPaused = false; if (chatAdapter != null) { @@ -6199,7 +6430,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } - fixLayout(true); + fixLayout(); SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE); if (chatActivityEnterView.getFieldText() == null) { String lastMessageText = preferences.getString("dialog_" + dialog_id, null); @@ -6339,7 +6570,34 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not MediaController.getInstance().setLastEncryptedChatParams(chatEnterTime, chatLeaveTime, currentEncryptedChat, visibleMessages); } - private void fixLayout(final boolean resume) { + private boolean fixLayoutInternal() { + if (!AndroidUtilities.isTablet() && ApplicationLoader.applicationContext.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { + selectedMessagesCountTextView.setTextSize(18); + actionModeTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); + } else { + selectedMessagesCountTextView.setTextSize(20); + actionModeTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20); + } + + if (AndroidUtilities.isTablet()) { + if (AndroidUtilities.isSmallTablet() && ApplicationLoader.applicationContext.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { + actionBar.setBackButtonDrawable(new BackDrawable(false)); + if (playerView != null && playerView.getParent() == null) { + ((ViewGroup) fragmentView).addView(playerView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 39, Gravity.TOP | Gravity.LEFT, 0, -36, 0, 0)); + } + } else { + actionBar.setBackButtonDrawable(new BackDrawable(parentLayout == null || parentLayout.fragmentsStack.isEmpty() || parentLayout.fragmentsStack.get(0) == ChatActivity.this || parentLayout.fragmentsStack.size() == 1)); + if (playerView != null && playerView.getParent() != null) { + fragmentView.setPadding(0, 0, 0, 0); + ((ViewGroup) fragmentView).removeView(playerView); + } + } + return false; + } + return true; + } + + private void fixLayout() { if (avatarContainer != null) { avatarContainer.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { @Override @@ -6347,39 +6605,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (avatarContainer != null) { avatarContainer.getViewTreeObserver().removeOnPreDrawListener(this); } - if (!AndroidUtilities.isTablet() && ApplicationLoader.applicationContext.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { - selectedMessagesCountTextView.setTextSize(18); - actionModeTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); - } else { - selectedMessagesCountTextView.setTextSize(20); - actionModeTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20); - } - - int padding = (ActionBar.getCurrentActionBarHeight() - AndroidUtilities.dp(48)) / 2; - if (avatarContainer.getPaddingTop() != padding) { - avatarContainer.setPadding(avatarContainer.getPaddingLeft(), padding, avatarContainer.getPaddingRight(), padding); - } - FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) avatarContainer.getLayoutParams(); - if (layoutParams.topMargin != (Build.VERSION.SDK_INT >= 21 ? AndroidUtilities.statusBarHeight : 0)) { - layoutParams.topMargin = (Build.VERSION.SDK_INT >= 21 ? AndroidUtilities.statusBarHeight : 0); - avatarContainer.setLayoutParams(layoutParams); - } - if (AndroidUtilities.isTablet()) { - if (AndroidUtilities.isSmallTablet() && ApplicationLoader.applicationContext.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { - actionBar.setBackButtonDrawable(new BackDrawable(false)); - if (playerView != null && playerView.getParent() == null) { - ((ViewGroup) fragmentView).addView(playerView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 39, Gravity.TOP | Gravity.LEFT, 0, -36, 0, 0)); - } - } else { - actionBar.setBackButtonDrawable(new BackDrawable(true)); - if (playerView != null && playerView.getParent() != null) { - fragmentView.setPadding(0, 0, 0, 0); - ((ViewGroup) fragmentView).removeView(playerView); - } - } - return false; - } - return true; + return fixLayoutInternal(); } }); } @@ -6387,7 +6613,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not @Override public void onConfigurationChanged(android.content.res.Configuration newConfig) { - fixLayout(false); + fixLayout(); } private void switchImportantMode(MessageObject searchBeforeMessage) { @@ -6446,8 +6672,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } - radioButton.setChecked(!radioButton.isChecked(), true); - channelMessagesImportant = radioButton.isChecked() ? 1 : 2; + avatarContainer.setRadioChecked(!avatarContainer.isRadioChecked(), true); + channelMessagesImportant = avatarContainer.isRadioChecked() ? 1 : 2; SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE); preferences.edit().putInt("important_" + dialog_id, channelMessagesImportant).commit(); waitingForImportantLoad = true; @@ -6610,7 +6836,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not return; } final int type = getMessageType(message); - if (channelMessagesImportant == 2 && message.getId() == 0 && message.contentType == 4 && message.type == 10 && message.messageOwner.from_id != 0) { + if (channelMessagesImportant == 2 && message.getId() == 0 && message.contentType == 1 && message.type == 10 && message.messageOwner.from_id != 0) { switchImportantMode(message); return; } @@ -6708,12 +6934,17 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not options.add(4); items.add(LocaleController.getString("ShareFile", R.string.ShareFile)); options.add(6); - } else if (selectedObject.messageOwner.media instanceof TLRPC.TL_messageMediaDocument) { - if (MessageObject.isNewGifDocument(selectedObject.messageOwner.media.document)) { + } else if (selectedObject.isMusic()) { + items.add(LocaleController.getString("SaveToMusic", R.string.SaveToMusic)); + options.add(10); + items.add(LocaleController.getString("ShareFile", R.string.ShareFile)); + options.add(6); + } else if (selectedObject.getDocument() != null) { + if (MessageObject.isNewGifDocument(selectedObject.getDocument())) { items.add(LocaleController.getString("SaveToGIFs", R.string.SaveToGIFs)); options.add(11); } - items.add(selectedObject.isMusic() ? LocaleController.getString("SaveToMusic", R.string.SaveToMusic) : LocaleController.getString("SaveToDownloads", R.string.SaveToDownloads)); + items.add(LocaleController.getString("SaveToDownloads", R.string.SaveToDownloads)); options.add(10); items.add(LocaleController.getString("ShareFile", R.string.ShareFile)); options.add(6); @@ -6729,13 +6960,25 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } else if (type == 6) { items.add(LocaleController.getString("SaveToGallery", R.string.SaveToGallery)); options.add(7); - items.add(selectedObject.isMusic() ? LocaleController.getString("SaveToMusic", R.string.SaveToMusic) : LocaleController.getString("SaveToDownloads", R.string.SaveToDownloads)); + items.add(LocaleController.getString("SaveToDownloads", R.string.SaveToDownloads)); options.add(10); items.add(LocaleController.getString("ShareFile", R.string.ShareFile)); options.add(6); } else if (type == 7) { items.add(LocaleController.getString("AddToStickers", R.string.AddToStickers)); options.add(9); + } else if (type == 8) { + TLRPC.User user = MessagesController.getInstance().getUser(selectedObject.messageOwner.media.user_id); + if (user != null && user.id != UserConfig.getClientUserId() && ContactsController.getInstance().contactsDict.get(user.id) == null) { + items.add(LocaleController.getString("AddContactTitle", R.string.AddContactTitle)); + options.add(15); + } + if (selectedObject.messageOwner.media.phone_number != null || selectedObject.messageOwner.media.phone_number.length() != 0) { + items.add(LocaleController.getString("Copy", R.string.Copy)); + options.add(16); + items.add(LocaleController.getString("Call", R.string.Call)); + options.add(17); + } } items.add(LocaleController.getString("Forward", R.string.Forward)); options.add(2); @@ -6769,8 +7012,13 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not options.add(4); items.add(LocaleController.getString("ShareFile", R.string.ShareFile)); options.add(6); - } else if (!selectedObject.isVideo() && selectedObject.messageOwner.media instanceof TLRPC.TL_messageMediaDocument) { - items.add(selectedObject.isMusic() ? LocaleController.getString("SaveToMusic", R.string.SaveToMusic) : LocaleController.getString("SaveToDownloads", R.string.SaveToDownloads)); + } else if (selectedObject.isMusic()) { + items.add(LocaleController.getString("SaveToMusic", R.string.SaveToMusic)); + options.add(10); + items.add(LocaleController.getString("ShareFile", R.string.ShareFile)); + options.add(6); + } else if (!selectedObject.isVideo() && selectedObject.getDocument() != null) { + items.add(LocaleController.getString("SaveToDownloads", R.string.SaveToDownloads)); options.add(10); items.add(LocaleController.getString("ShareFile", R.string.ShareFile)); options.add(6); @@ -6849,283 +7097,342 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (selectedObject == null) { return; } - if (option == 0) { - if (SendMessagesHelper.getInstance().retrySendMessage(selectedObject, false)) { - moveScrollToLastMessage(); - } - } else if (option == 1) { - if (getParentActivity() == null) { - selectedObject = null; - return; - } - createDeleteMessagesAlert(selectedObject); - } else if (option == 2) { - forwaringMessage = selectedObject; - Bundle args = new Bundle(); - args.putBoolean("onlySelect", true); - args.putInt("dialogsType", 1); - DialogsActivity fragment = new DialogsActivity(args); - fragment.setDelegate(this); - presentFragment(fragment); - } else if (option == 3) { - try { - CharSequence str; - if (selectedObject.type == 0 && selectedObject.messageOwner.message != null) { - str = selectedObject.messageOwner.message; - } else if (selectedObject.messageOwner.media != null && selectedObject.messageOwner.media.caption != null) { - str = selectedObject.messageOwner.media.caption; - } else { - str = selectedObject.messageText; + switch (option) { + case 0: { + if (SendMessagesHelper.getInstance().retrySendMessage(selectedObject, false)) { + moveScrollToLastMessage(); } - if (Build.VERSION.SDK_INT < 11) { - android.text.ClipboardManager clipboard = (android.text.ClipboardManager) ApplicationLoader.applicationContext.getSystemService(Context.CLIPBOARD_SERVICE); - clipboard.setText(str); - } else { - android.content.ClipboardManager clipboard = (android.content.ClipboardManager) ApplicationLoader.applicationContext.getSystemService(Context.CLIPBOARD_SERVICE); - android.content.ClipData clip = android.content.ClipData.newPlainText("label", str); - clipboard.setPrimaryClip(clip); + break; + } + case 1: { + if (getParentActivity() == null) { + selectedObject = null; + return; } - } catch (Exception e) { - FileLog.e("tmessages", e); + createDeleteMessagesAlert(selectedObject); + break; } - } else if (option == 4) { - String path = selectedObject.messageOwner.attachPath; - if (path != null && path.length() > 0) { - File temp = new File(path); - if (!temp.exists()) { - path = null; + case 2: { + forwaringMessage = selectedObject; + Bundle args = new Bundle(); + args.putBoolean("onlySelect", true); + args.putInt("dialogsType", 1); + DialogsActivity fragment = new DialogsActivity(args); + fragment.setDelegate(this); + presentFragment(fragment); + break; + } + case 3: { + try { + CharSequence str; + if (selectedObject.type == 0 && selectedObject.messageOwner.message != null) { + str = selectedObject.messageOwner.message; + } else if (selectedObject.messageOwner.media != null && selectedObject.messageOwner.media.caption != null) { + str = selectedObject.messageOwner.media.caption; + } else { + str = selectedObject.messageText; + } + if (Build.VERSION.SDK_INT < 11) { + android.text.ClipboardManager clipboard = (android.text.ClipboardManager) ApplicationLoader.applicationContext.getSystemService(Context.CLIPBOARD_SERVICE); + clipboard.setText(str); + } else { + android.content.ClipboardManager clipboard = (android.content.ClipboardManager) ApplicationLoader.applicationContext.getSystemService(Context.CLIPBOARD_SERVICE); + android.content.ClipData clip = android.content.ClipData.newPlainText("label", str); + clipboard.setPrimaryClip(clip); + } + } catch (Exception e) { + FileLog.e("tmessages", e); } + break; } - if (path == null || path.length() == 0) { - path = FileLoader.getPathToMessage(selectedObject.messageOwner).toString(); + case 4: { + String path = selectedObject.messageOwner.attachPath; + if (path != null && path.length() > 0) { + File temp = new File(path); + if (!temp.exists()) { + path = null; + } + } + if (path == null || path.length() == 0) { + path = FileLoader.getPathToMessage(selectedObject.messageOwner).toString(); + } + if (selectedObject.type == 3 || selectedObject.type == 1) { + if (Build.VERSION.SDK_INT >= 23 && getParentActivity().checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { + getParentActivity().requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 4); + selectedObject = null; + return; + } + MediaController.saveFile(path, getParentActivity(), selectedObject.type == 3 ? 1 : 0, null, null); + } + break; } - if (selectedObject.type == 3 || selectedObject.type == 1) { + case 5: { + File locFile = null; + if (selectedObject.messageOwner.attachPath != null && selectedObject.messageOwner.attachPath.length() != 0) { + File f = new File(selectedObject.messageOwner.attachPath); + if (f.exists()) { + locFile = f; + } + } + if (locFile == null) { + File f = FileLoader.getPathToMessage(selectedObject.messageOwner); + if (f.exists()) { + locFile = f; + } + } + if (locFile != null) { + if (LocaleController.getInstance().applyLanguageFile(locFile)) { + presentFragment(new LanguageSelectActivity()); + } else { + if (getParentActivity() == null) { + selectedObject = null; + return; + } + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); + builder.setMessage(LocaleController.getString("IncorrectLocalization", R.string.IncorrectLocalization)); + builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), null); + showDialog(builder.create()); + } + } + break; + } + case 6: { + String path = selectedObject.messageOwner.attachPath; + if (path != null && path.length() > 0) { + File temp = new File(path); + if (!temp.exists()) { + path = null; + } + } + if (path == null || path.length() == 0) { + path = FileLoader.getPathToMessage(selectedObject.messageOwner).toString(); + } + Intent intent = new Intent(Intent.ACTION_SEND); + intent.setType(selectedObject.getDocument().mime_type); + intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(path))); + getParentActivity().startActivityForResult(Intent.createChooser(intent, LocaleController.getString("ShareFile", R.string.ShareFile)), 500); + break; + } + case 7: { + String path = selectedObject.messageOwner.attachPath; + if (path != null && path.length() > 0) { + File temp = new File(path); + if (!temp.exists()) { + path = null; + } + } + if (path == null || path.length() == 0) { + path = FileLoader.getPathToMessage(selectedObject.messageOwner).toString(); + } if (Build.VERSION.SDK_INT >= 23 && getParentActivity().checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { getParentActivity().requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 4); selectedObject = null; return; } - MediaController.saveFile(path, getParentActivity(), selectedObject.type == 3 ? 1 : 0, null); + MediaController.saveFile(path, getParentActivity(), 0, null, null); + break; } - } else if (option == 5) { - File locFile = null; - if (selectedObject.messageOwner.attachPath != null && selectedObject.messageOwner.attachPath.length() != 0) { - File f = new File(selectedObject.messageOwner.attachPath); - if (f.exists()) { - locFile = f; + case 8: { + showReplyPanel(true, selectedObject, null, null, false, true); + break; + } + case 9: { + showDialog(new StickersAlert(getParentActivity(), selectedObject.getInputStickerSet(), null, bottomOverlayChat.getVisibility() != View.VISIBLE ? chatActivityEnterView : null)); + break; + } + case 10: { + if (Build.VERSION.SDK_INT >= 23 && getParentActivity().checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { + getParentActivity().requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 4); + selectedObject = null; + return; } - } - if (locFile == null) { - File f = FileLoader.getPathToMessage(selectedObject.messageOwner); - if (f.exists()) { - locFile = f; + String fileName = FileLoader.getDocumentFileName(selectedObject.getDocument()); + if (fileName == null || fileName.length() == 0) { + fileName = selectedObject.getFileName(); } - } - if (locFile != null) { - if (LocaleController.getInstance().applyLanguageFile(locFile)) { - presentFragment(new LanguageSelectActivity()); - } else { - if (getParentActivity() == null) { - selectedObject = null; - return; + String path = selectedObject.messageOwner.attachPath; + if (path != null && path.length() > 0) { + File temp = new File(path); + if (!temp.exists()) { + path = null; } - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); - builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); - builder.setMessage(LocaleController.getString("IncorrectLocalization", R.string.IncorrectLocalization)); - builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), null); - showDialog(builder.create()); } - } - } else if (option == 6) { - String path = selectedObject.messageOwner.attachPath; - if (path != null && path.length() > 0) { - File temp = new File(path); - if (!temp.exists()) { - path = null; + if (path == null || path.length() == 0) { + path = FileLoader.getPathToMessage(selectedObject.messageOwner).toString(); } + MediaController.saveFile(path, getParentActivity(), selectedObject.isMusic() ? 3 : 2, fileName, selectedObject.getDocument() != null ? selectedObject.getDocument().mime_type : ""); + break; } - if (path == null || path.length() == 0) { - path = FileLoader.getPathToMessage(selectedObject.messageOwner).toString(); + case 11: { + MediaController.SearchImage searchImage = MessagesController.getInstance().saveGif(selectedObject.getDocument()); + showGifHint(); + chatActivityEnterView.addRecentGif(searchImage); + break; } - Intent intent = new Intent(Intent.ACTION_SEND); - intent.setType(selectedObject.messageOwner.media.document.mime_type); - intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(path))); - getParentActivity().startActivityForResult(Intent.createChooser(intent, LocaleController.getString("ShareFile", R.string.ShareFile)), 500); - } else if (option == 7) { - String path = selectedObject.messageOwner.attachPath; - if (path != null && path.length() > 0) { - File temp = new File(path); - if (!temp.exists()) { - path = null; + case 12: { + if (getParentActivity() == null) { + selectedObject = null; + return; } - } - if (path == null || path.length() == 0) { - path = FileLoader.getPathToMessage(selectedObject.messageOwner).toString(); - } - if (Build.VERSION.SDK_INT >= 23 && getParentActivity().checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { - getParentActivity().requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 4); - selectedObject = null; - return; - } - MediaController.saveFile(path, getParentActivity(), 0, null); - } else if (option == 8) { - showReplyPanel(true, selectedObject, null, null, false, true); - } else if (option == 9) { - StickersQuery.loadStickers(this, selectedObject.getInputStickerSet()); - } else if (option == 10) { - if (Build.VERSION.SDK_INT >= 23 && getParentActivity().checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { - getParentActivity().requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 4); - selectedObject = null; - return; - } - String fileName = FileLoader.getDocumentFileName(selectedObject.messageOwner.media.document); - if (fileName == null || fileName.length() == 0) { - fileName = selectedObject.getFileName(); - } - String path = selectedObject.messageOwner.attachPath; - if (path != null && path.length() > 0) { - File temp = new File(path); - if (!temp.exists()) { - path = null; - } - } - if (path == null || path.length() == 0) { - path = FileLoader.getPathToMessage(selectedObject.messageOwner).toString(); - } - MediaController.saveFile(path, getParentActivity(), selectedObject.isMusic() ? 3 : 2, fileName); - } else if (option == 11) { - MediaController.SearchImage searchImage; - if (selectedObject.messageOwner.media instanceof TLRPC.TL_messageMediaWebPage) { - searchImage = MessagesController.getInstance().saveGif(selectedObject.messageOwner.media.webpage.document); - } else { - searchImage = MessagesController.getInstance().saveGif(selectedObject.messageOwner.media.document); - } - showGifHint(); - chatActivityEnterView.addRecentGif(searchImage); - } else if (option == 12) { - if (getParentActivity() == null) { - selectedObject = null; - return; - } - final MessageObject editingMessageObject = selectedObject; - final ProgressDialog progressDialog = new ProgressDialog(getParentActivity()); - progressDialog.setMessage(LocaleController.getString("Loading", R.string.Loading)); - progressDialog.setCanceledOnTouchOutside(false); - progressDialog.setCancelable(false); + final MessageObject editingMessageObject = selectedObject; + final ProgressDialog progressDialog = new ProgressDialog(getParentActivity()); + progressDialog.setMessage(LocaleController.getString("Loading", R.string.Loading)); + progressDialog.setCanceledOnTouchOutside(false); + progressDialog.setCancelable(false); - TLRPC.TL_channels_getMessageEditData req = new TLRPC.TL_channels_getMessageEditData(); - req.channel = MessagesController.getInputChannel(currentChat); - req.id = selectedObject.getId(); - final int reqId = ConnectionsManager.getInstance().sendRequest(req, new RequestDelegate() { - @Override - public void run(final TLObject response, TLRPC.TL_error error) { - AndroidUtilities.runOnUIThread(new Runnable() { - @Override - public void run() { - try { - if (!getParentActivity().isFinishing()) { - progressDialog.dismiss(); + TLRPC.TL_messages_getMessageEditData req = new TLRPC.TL_messages_getMessageEditData(); + req.peer = MessagesController.getInputPeer((int) dialog_id); + req.id = selectedObject.getId(); + final int reqId = ConnectionsManager.getInstance().sendRequest(req, new RequestDelegate() { + @Override + public void run(final TLObject response, TLRPC.TL_error error) { + AndroidUtilities.runOnUIThread(new Runnable() { + @Override + public void run() { + try { + if (!getParentActivity().isFinishing()) { + progressDialog.dismiss(); + } + } catch (Exception e) { + FileLog.e("tmessages", e); } - } catch (Exception e) { - FileLog.e("tmessages", e); - } - if (response != null) { - TLRPC.TL_channels_messageEditData res = (TLRPC.TL_channels_messageEditData) response; - if (mentionsAdapter != null) { - mentionsAdapter.setNeedBotContext(false); - chatListView.setOnItemLongClickListener(null); - chatListView.setOnItemClickListener(null); - chatListView.setClickable(false); - chatListView.setLongClickable(false); - chatActivityEnterView.setEditinigMessageObject(editingMessageObject, res.caption); - actionModeTextView.setVisibility(View.VISIBLE); - selectedMessagesCountTextView.setVisibility(View.GONE); + if (response != null) { + TLRPC.TL_messages_messageEditData res = (TLRPC.TL_messages_messageEditData) response; + if (mentionsAdapter != null) { + mentionsAdapter.setNeedBotContext(false); + chatListView.setOnItemLongClickListener(null); + chatListView.setOnItemClickListener(null); + chatListView.setClickable(false); + chatListView.setLongClickable(false); + chatActivityEnterView.setEditinigMessageObject(editingMessageObject, res.caption); + actionModeTextView.setVisibility(View.VISIBLE); + selectedMessagesCountTextView.setVisibility(View.GONE); - chatActivityEnterView.setAllowStickersAndGifs(false, false); - final ActionBarMenu actionMode = actionBar.createActionMode(); - actionMode.getItem(reply).setVisibility(View.GONE); - actionMode.getItem(copy).setVisibility(View.GONE); - actionMode.getItem(forward).setVisibility(View.GONE); - actionMode.getItem(delete).setVisibility(View.GONE); - actionMode.getItem(edit_done).setVisibility(View.VISIBLE); - actionBar.showActionMode(); - updatePinnedMessageView(true); + chatActivityEnterView.setAllowStickersAndGifs(false, false); + final ActionBarMenu actionMode = actionBar.createActionMode(); + actionMode.getItem(reply).setVisibility(View.GONE); + actionMode.getItem(copy).setVisibility(View.GONE); + actionMode.getItem(forward).setVisibility(View.GONE); + actionMode.getItem(delete).setVisibility(View.GONE); + actionMode.getItem(edit_done).setVisibility(View.VISIBLE); + actionBar.showActionMode(); + updatePinnedMessageView(true); + } + } else { + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); + builder.setMessage(LocaleController.getString("EditMessageError", R.string.EditMessageError)); + builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), null); + showDialog(builder.create()); } - } else { - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); - builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); - builder.setMessage(LocaleController.getString("EditMessageError", R.string.EditMessageError)); - builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), null); - showDialog(builder.create()); } + }); + } + }); + progressDialog.setButton(DialogInterface.BUTTON_NEGATIVE, LocaleController.getString("Cancel", R.string.Cancel), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + ConnectionsManager.getInstance().cancelRequest(reqId, true); + try { + dialog.dismiss(); + } catch (Exception e) { + FileLog.e("tmessages", e); } - }); - } - }); - progressDialog.setButton(DialogInterface.BUTTON_NEGATIVE, LocaleController.getString("Cancel", R.string.Cancel), new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - ConnectionsManager.getInstance().cancelRequest(reqId, true); - try { - dialog.dismiss(); - } catch (Exception e) { - FileLog.e("tmessages", e); } + }); + try { + progressDialog.show(); + } catch (Exception e) { + //don't promt } - }); - try { - progressDialog.show(); - } catch (Exception e) { - //don't promt + break; } - } else if (option == 13) { - final int mid = selectedObject.getId(); - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); - builder.setMessage(LocaleController.getString("PinMessageAlert", R.string.PinMessageAlert)); + case 13: { + final int mid = selectedObject.getId(); + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + builder.setMessage(LocaleController.getString("PinMessageAlert", R.string.PinMessageAlert)); - final boolean[] checks = new boolean[]{true}; - FrameLayout frameLayout = new FrameLayout(getParentActivity()); - if (Build.VERSION.SDK_INT >= 21) { - frameLayout.setPadding(0, AndroidUtilities.dp(8), 0, 0); + final boolean[] checks = new boolean[]{true}; + FrameLayout frameLayout = new FrameLayout(getParentActivity()); + if (Build.VERSION.SDK_INT >= 21) { + frameLayout.setPadding(0, AndroidUtilities.dp(8), 0, 0); + } + CheckBoxCell cell = new CheckBoxCell(getParentActivity()); + cell.setBackgroundResource(R.drawable.list_selector); + if (Build.VERSION.SDK_INT < 11) { + cell.setTextColor(0xffffffff); + } + cell.setText(LocaleController.getString("PinNotify", R.string.PinNotify), "", true, false); + cell.setPadding(LocaleController.isRTL ? AndroidUtilities.dp(8) : 0, 0, LocaleController.isRTL ? 0 : AndroidUtilities.dp(8), 0); + frameLayout.addView(cell, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.TOP | Gravity.LEFT, 8, 0, 8, 0)); + cell.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + CheckBoxCell cell = (CheckBoxCell) v; + checks[0] = !checks[0]; + cell.setChecked(checks[0], true); + } + }); + builder.setView(frameLayout); + builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + MessagesController.getInstance().pinChannelMessage(currentChat, mid, checks[0]); + } + }); + builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); + builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); + showDialog(builder.create()); + break; } - CheckBoxCell cell = new CheckBoxCell(getParentActivity()); - cell.setBackgroundResource(R.drawable.list_selector); - if (Build.VERSION.SDK_INT < 11) { - cell.setTextColor(0xffffffff); + case 14: { + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + builder.setMessage(LocaleController.getString("UnpinMessageAlert", R.string.UnpinMessageAlert)); + builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + MessagesController.getInstance().pinChannelMessage(currentChat, 0, false); + } + }); + builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); + builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); + showDialog(builder.create()); + break; } - cell.setText(LocaleController.getString("PinNotify", R.string.PinNotify), "", true, false); - cell.setPadding(LocaleController.isRTL ? AndroidUtilities.dp(8) : 0, 0, LocaleController.isRTL ? 0 : AndroidUtilities.dp(8), 0); - frameLayout.addView(cell, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.TOP | Gravity.LEFT, 8, 0, 8, 0)); - cell.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - CheckBoxCell cell = (CheckBoxCell) v; - checks[0] = !checks[0]; - cell.setChecked(checks[0], true); + case 15: { + Bundle args = new Bundle(); + args.putInt("user_id", selectedObject.messageOwner.media.user_id); + args.putString("phone", selectedObject.messageOwner.media.phone_number); + args.putBoolean("addContact", true); + presentFragment(new ContactAddActivity(args)); + break; + } + case 16: { + try { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { + android.text.ClipboardManager clipboard = (android.text.ClipboardManager) ApplicationLoader.applicationContext.getSystemService(Context.CLIPBOARD_SERVICE); + clipboard.setText(selectedObject.messageOwner.media.phone_number); + } else { + android.content.ClipboardManager clipboard = (android.content.ClipboardManager) ApplicationLoader.applicationContext.getSystemService(Context.CLIPBOARD_SERVICE); + android.content.ClipData clip = android.content.ClipData.newPlainText("label", selectedObject.messageOwner.media.phone_number); + clipboard.setPrimaryClip(clip); + } + } catch (Exception e) { + FileLog.e("tmessages", e); } - }); - builder.setView(frameLayout); - builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - MessagesController.getInstance().pinChannelMessage(currentChat, mid, checks[0]); + break; + } + case 17: { + try { + Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + selectedObject.messageOwner.media.phone_number)); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + getParentActivity().startActivityForResult(intent, 500); + } catch (Exception e) { + FileLog.e("tmessages", e); } - }); - builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); - builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); - showDialog(builder.create()); - } else if (option == 14) { - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); - builder.setMessage(LocaleController.getString("UnpinMessageAlert", R.string.UnpinMessageAlert)); - builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - MessagesController.getInstance().pinChannelMessage(currentChat, 0, false); - } - }); - builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); - builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); - showDialog(builder.create()); + break; + } } selectedObject = null; } @@ -7215,34 +7522,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not return true; } - public boolean isGoogleMapsInstalled() { - try { - ApplicationLoader.applicationContext.getPackageManager().getApplicationInfo("com.google.android.apps.maps", 0); - return true; - } catch (PackageManager.NameNotFoundException e) { - if (getParentActivity() == null) { - return false; - } - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); - builder.setMessage("Install Google Maps?"); - builder.setCancelable(true); - builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - try { - Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=com.google.android.apps.maps")); - getParentActivity().startActivityForResult(intent, 500); - } catch (Exception e) { - FileLog.e("tmessages", e); - } - } - }); - builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); - showDialog(builder.create()); - return false; - } - } - private void updateVisibleRows() { if (chatListView == null) { return; @@ -7304,7 +7583,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (message.type == 3) { builder.setMessage(LocaleController.getString("NoPlayerInstalled", R.string.NoPlayerInstalled)); } else { - builder.setMessage(LocaleController.formatString("NoHandleAppInstalled", R.string.NoHandleAppInstalled, message.messageOwner.media.document.mime_type)); + builder.setMessage(LocaleController.formatString("NoHandleAppInstalled", R.string.NoHandleAppInstalled, message.getDocument().mime_type)); } showDialog(builder.create()); } @@ -7337,6 +7616,22 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not return currentEncryptedChat != null; } + public TLRPC.User getCurrentUser() { + return currentUser; + } + + public TLRPC.Chat getCurrentChat() { + return currentChat; + } + + public TLRPC.EncryptedChat getCurrentEncryptedChat() { + return currentEncryptedChat; + } + + public TLRPC.ChatFull getCurrentChatInfo() { + return info; + } + @Override public PhotoViewer.PlaceProviderObject getPlaceForPhoto(MessageObject messageObject, TLRPC.FileLocation fileLocation, int index) { if (messageObject == null) { @@ -7419,6 +7714,24 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not return 0; } + public void showOpenUrlAlert(final String url) { + if (Browser.isInternalUrl(url)) { + Browser.openUrl(getParentActivity(), url, inlineReturn == 0); + } else { + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + builder.setMessage(LocaleController.formatString("OpenUrlAlert", R.string.OpenUrlAlert, url)); + builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); + builder.setPositiveButton(LocaleController.getString("Open", R.string.Open), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + Browser.openUrl(getParentActivity(), url, inlineReturn == 0); + } + }); + builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); + showDialog(builder.create()); + } + } + public class ChatActivityAdapter extends RecyclerView.Adapter { private Context mContext; @@ -7491,49 +7804,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } else { view = new ChatMessageCell(mContext); } - } else if (viewType == 2) { - view = new ChatAudioCell(mContext); - ((ChatAudioCell) view).setAudioDelegate(new ChatAudioCell.ChatAudioCellDelegate() { - @Override - public boolean needPlayAudio(MessageObject messageObject) { - boolean result = MediaController.getInstance().playAudio(messageObject); - MediaController.getInstance().setVoiceMessagesPlaylist(result ? createVoiceMessagesPlaylist(messageObject, false) : null, false); - return result; - } - }); - } else if (viewType == 3) { - view = new ChatContactCell(mContext); - } else if (viewType == 4) { - view = new ChatActionCell(mContext); - } else if (viewType == 5) { - view = new ChatLoadingCell(mContext); - } else if (viewType == 6) { - view = new ChatUnreadCell(mContext); - } else if (viewType == 7) { - view = new BotHelpCell(mContext); - ((BotHelpCell) view).setDelegate(new BotHelpCell.BotHelpCellDelegate() { - @Override - public void didPressUrl(String url) { - if (url.startsWith("@")) { - MessagesController.openByUserName(url.substring(1), ChatActivity.this, 0); - } else if (url.startsWith("#")) { - DialogsActivity fragment = new DialogsActivity(null); - fragment.setSearchString(url); - presentFragment(fragment); - } else if (url.startsWith("/")) { - chatActivityEnterView.setCommand(null, url, false, false); - } - } - }); - } else if (viewType == 8) { - view = new ChatMusicCell(mContext); - } - - if (view instanceof ChatBaseCell) { - if (currentEncryptedChat == null) { - ((ChatBaseCell) view).setAllowAssistant(true); - } - ((ChatBaseCell) view).setDelegate(new ChatBaseCell.ChatBaseCellDelegate() { + ChatMessageCell chatMessageCell = (ChatMessageCell) view; + chatMessageCell.setDelegate(new ChatBaseCell.ChatBaseCellDelegate() { @Override public void didPressedShare(ChatBaseCell cell) { if (getParentActivity() == null) { @@ -7542,10 +7814,19 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (chatActivityEnterView != null) { chatActivityEnterView.closeKeyboard(); } - BottomSheet.Builder builder = new BottomSheet.Builder(mContext, true); - builder.setCustomView(new ShareFrameLayout(mContext, builder.create(), cell.getMessageObject(), ChatObject.isChannel(currentChat) && !currentChat.megagroup && currentChat.username != null && currentChat.username.length() > 0)).setApplyTopPaddings(false); - builder.setUseFullWidth(false); - showDialog(builder.create()); + showDialog(new ShareAlert(mContext, cell.getMessageObject(), ChatObject.isChannel(currentChat) && !currentChat.megagroup && currentChat.username != null && currentChat.username.length() > 0)); + } + + @Override + public boolean needPlayAudio(MessageObject messageObject) { + if (messageObject.isVoice()) { + boolean result = MediaController.getInstance().playAudio(messageObject); + MediaController.getInstance().setVoiceMessagesPlaylist(result ? createVoiceMessagesPlaylist(messageObject, false) : null, false); + return result; + } else if (messageObject.isMusic()) { + return MediaController.getInstance().setPlaylist(messages, messageObject); + } + return false; } @Override @@ -7586,6 +7867,14 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } + @Override + public void didPressedBotButton(ChatBaseCell cell, TLRPC.KeyboardButton button) { + if (getParentActivity() == null || bottomOverlayChat.getVisibility() == View.VISIBLE && !(button instanceof TLRPC.TL_keyboardButtonCallback) && !(button instanceof TLRPC.TL_keyboardButtonUrl)) { + return; + } + chatActivityEnterView.didPressedBotButton(button, cell.getMessageObject(), cell.getMessageObject()); + } + @Override public void didPressedCancelSendButton(ChatBaseCell cell) { MessageObject message = cell.getMessageObject(); @@ -7635,7 +7924,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not @Override public void onClick(DialogInterface dialog, final int which) { if (which == 0) { - AndroidUtilities.openUrl(getParentActivity(), urlFinal); + Browser.openUrl(getParentActivity(), urlFinal, inlineReturn == 0); } else if (which == 1) { try { if (Build.VERSION.SDK_INT < 11) { @@ -7656,23 +7945,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not showDialog(builder.create()); } else { if (url instanceof URLSpanReplacement) { - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); - builder.setMessage(LocaleController.formatString("OpenUrlAlert", R.string.OpenUrlAlert, ((URLSpanReplacement) url).getURL())); - builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); - builder.setPositiveButton(LocaleController.getString("Open", R.string.Open), new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - try { - AndroidUtilities.openUrl(getParentActivity(), urlFinal); - } catch (Exception e) { - FileLog.e("tmessages", e); - } - } - }); - builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); - showDialog(builder.create()); + showOpenUrlAlert(((URLSpanReplacement) url).getURL()); } else if (url instanceof URLSpan) { - AndroidUtilities.openUrl(getParentActivity(), urlFinal); + Browser.openUrl(getParentActivity(), urlFinal, inlineReturn == 0); } else { url.onClick(fragmentView); } @@ -7681,9 +7956,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } @Override - public void needOpenWebView(String url, String title, String originalUrl, int w, int h) { + public void needOpenWebView(String url, String title, String description, String originalUrl, int w, int h) { BottomSheet.Builder builder = new BottomSheet.Builder(mContext); - builder.setCustomView(new WebFrameLayout(mContext, builder.create(), title, originalUrl, url, w, h)); + builder.setCustomView(new WebFrameLayout(mContext, builder.create(), title, description, originalUrl, url, w, h)); builder.setUseFullWidth(true); showDialog(builder.create()); } @@ -7693,7 +7968,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not MessageObject messageObject = cell.getMessageObject(); if (messageObject.replyMessageObject != null && !messageObject.replyMessageObject.isImportant() && channelMessagesImportant == 2) { channelMessagesImportant = 1; - radioButton.setChecked(channelMessagesImportant == 1, false); + avatarContainer.setRadioChecked(true, false); } scrollToMessageId(id, messageObject.getId(), true, messageObject.getDialogId() == mergeDialogId ? 1 : 0); } @@ -7718,7 +7993,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } else if (message.isSending()) { return; } - if (message.type == 1 || message.type == 0 && !message.isWebpageDocument()) { + if (message.type == 13) { + showDialog(new StickersAlert(getParentActivity(), message.getInputStickerSet(), null, bottomOverlayChat.getVisibility() != View.VISIBLE ? chatActivityEnterView : null)); + } else if (message.type == 1 || message.type == 0 && !message.isWebpageDocument()) { PhotoViewer.getInstance().setParentActivity(getParentActivity()); PhotoViewer.getInstance().openPhoto(message, message.type != 0 ? dialog_id : 0, message.type != 0 ? mergeDialogId : 0, ChatActivity.this); } else if (message.type == 3) { @@ -7738,7 +8015,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not alertUserOpenError(message); } } else if (message.type == 4) { - if (!isGoogleMapsInstalled()) { + if (!AndroidUtilities.isGoogleMapsInstalled(ChatActivity.this)) { return; } LocationActivity fragment = new LocationActivity(); @@ -7758,15 +8035,13 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not try { Intent intent = new Intent(Intent.ACTION_VIEW); MimeTypeMap myMime = MimeTypeMap.getSingleton(); - int idx = fileName.lastIndexOf("."); + int idx = fileName.lastIndexOf('.'); if (idx != -1) { String ext = fileName.substring(idx + 1); realMimeType = myMime.getMimeTypeFromExtension(ext.toLowerCase()); if (realMimeType == null) { - if (message.type == 9) { - realMimeType = message.messageOwner.media.document.mime_type; - } else if (message.type == 0) { - realMimeType = message.messageOwner.media.webpage.document.mime_type; + if (message.type == 9 || message.type == 0) { + realMimeType = message.getDocument().mime_type; } if (realMimeType == null || realMimeType.length() == 0) { realMimeType = null; @@ -7797,75 +8072,12 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } }); - if (view instanceof ChatMessageCell) { - ((ChatMessageCell) view).setAllowedToSetPhoto(openAnimationEnded); - } else if (view instanceof ChatContactCell) { - ((ChatContactCell) view).setContactDelegate(new ChatContactCell.ChatContactCellDelegate() { - @Override - public void didClickAddButton(ChatContactCell cell, TLRPC.User user) { - if (actionBar.isActionModeShowed()) { - processRowSelect(cell); - return; - } - MessageObject messageObject = cell.getMessageObject(); - Bundle args = new Bundle(); - args.putInt("user_id", messageObject.messageOwner.media.user_id); - args.putString("phone", messageObject.messageOwner.media.phone_number); - args.putBoolean("addContact", true); - presentFragment(new ContactAddActivity(args)); - } - - @Override - public void didClickPhone(ChatContactCell cell) { - if (actionBar.isActionModeShowed()) { - processRowSelect(cell); - return; - } - final MessageObject messageObject = cell.getMessageObject(); - if (getParentActivity() == null || messageObject.messageOwner.media.phone_number == null || messageObject.messageOwner.media.phone_number.length() == 0) { - return; - } - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); - builder.setItems(new CharSequence[]{LocaleController.getString("Copy", R.string.Copy), LocaleController.getString("Call", R.string.Call)}, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - if (i == 1) { - try { - Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + messageObject.messageOwner.media.phone_number)); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - getParentActivity().startActivityForResult(intent, 500); - } catch (Exception e) { - FileLog.e("tmessages", e); - } - } else if (i == 0) { - try { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { - android.text.ClipboardManager clipboard = (android.text.ClipboardManager) ApplicationLoader.applicationContext.getSystemService(Context.CLIPBOARD_SERVICE); - clipboard.setText(messageObject.messageOwner.media.phone_number); - } else { - android.content.ClipboardManager clipboard = (android.content.ClipboardManager) ApplicationLoader.applicationContext.getSystemService(Context.CLIPBOARD_SERVICE); - android.content.ClipData clip = android.content.ClipData.newPlainText("label", messageObject.messageOwner.media.phone_number); - clipboard.setPrimaryClip(clip); - } - } catch (Exception e) { - FileLog.e("tmessages", e); - } - } - } - } - ); - showDialog(builder.create()); - } - }); - } else if (view instanceof ChatMusicCell) { - ((ChatMusicCell) view).setMusicDelegate(new ChatMusicCell.ChatMusicCellDelegate() { - @Override - public boolean needPlayMusic(MessageObject messageObject) { - return MediaController.getInstance().setPlaylist(messages, messageObject); - } - }); + chatMessageCell.setAllowedToSetPhoto(openAnimationEnded); + if (currentEncryptedChat == null) { + chatMessageCell.setAllowAssistant(true); } - } else if (view instanceof ChatActionCell) { + } else if (viewType == 1) { + view = new ChatActionCell(mContext); ((ChatActionCell) view).setDelegate(new ChatActionCell.ChatActionCellDelegate() { @Override public void didClickedImage(ChatActionCell cell) { @@ -7899,6 +8111,26 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } }); + } else if (viewType == 2) { + view = new ChatUnreadCell(mContext); + } else if (viewType == 3) { + view = new BotHelpCell(mContext); + ((BotHelpCell) view).setDelegate(new BotHelpCell.BotHelpCellDelegate() { + @Override + public void didPressUrl(String url) { + if (url.startsWith("@")) { + MessagesController.openByUserName(url.substring(1), ChatActivity.this, 0); + } else if (url.startsWith("#")) { + DialogsActivity fragment = new DialogsActivity(null); + fragment.setSearchString(url); + presentFragment(fragment); + } else if (url.startsWith("/")) { + chatActivityEnterView.setCommand(null, url, false, false); + } + } + }); + } else if (viewType == 4) { + view = new ChatLoadingCell(mContext); } view.setLayoutParams(new RecyclerView.LayoutParams(RecyclerView.LayoutParams.MATCH_PARENT, RecyclerView.LayoutParams.WRAP_CONTENT)); return new Holder(view); @@ -7930,15 +8162,15 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not view.setBackgroundColor(0); } - if (view instanceof ChatBaseCell) { - ChatBaseCell baseCell = (ChatBaseCell) view; - baseCell.isChat = currentChat != null; - baseCell.setMessageObject(message); - baseCell.setCheckPressed(!disableSelection, disableSelection && selected); - if (view instanceof ChatAudioCell && MediaController.getInstance().canDownloadMedia(MediaController.AUTODOWNLOAD_MASK_AUDIO)) { - ((ChatAudioCell) view).downloadAudioIfNeed(); + if (view instanceof ChatMessageCell) { + ChatMessageCell messageCell = (ChatMessageCell) view; + messageCell.isChat = currentChat != null; + messageCell.setMessageObject(message); + messageCell.setCheckPressed(!disableSelection, disableSelection && selected); + if (view instanceof ChatMessageCell && MediaController.getInstance().canDownloadMedia(MediaController.AUTODOWNLOAD_MASK_AUDIO)) { + ((ChatMessageCell) view).downloadAudioIfNeed(); } - baseCell.setHighlighted(highlightMessageId != Integer.MAX_VALUE && message.getId() == highlightMessageId); + messageCell.setHighlighted(highlightMessageId != Integer.MAX_VALUE && message.getId() == highlightMessageId); } else if (view instanceof ChatActionCell) { ChatActionCell actionCell = (ChatActionCell) view; actionCell.setMessageObject(message); @@ -7951,22 +8183,16 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not @Override public int getItemViewType(int position) { - if (position == loadingUpRow || position == loadingDownRow) { - return 5; - } else if (position == botInfoRow) { - return 7; - } else if (position >= messagesStartRow && position < messagesEndRow) { + if (position >= messagesStartRow && position < messagesEndRow) { return messages.get(messages.size() - (position - messagesStartRow) - 1).contentType; + } else if (position == botInfoRow) { + return 3; } - return 5; + return 4; } @Override public void onViewAttachedToWindow(RecyclerView.ViewHolder holder) { - if (holder.itemView instanceof ChatBaseCell) { - ChatBaseCell baseCell = (ChatBaseCell) holder.itemView; - baseCell.setHighlighted(highlightMessageId != Integer.MAX_VALUE && baseCell.getMessageObject().getId() == highlightMessageId); - } if (holder.itemView instanceof ChatMessageCell) { final ChatMessageCell messageCell = (ChatMessageCell) holder.itemView; messageCell.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { @@ -7978,6 +8204,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not return true; } }); + messageCell.setHighlighted(highlightMessageId != Integer.MAX_VALUE && messageCell.getMessageObject().getId() == highlightMessageId); } } 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 ed2c6c4cf..c9c17d729 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/AlertsCreator.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/AlertsCreator.java @@ -16,7 +16,6 @@ import android.content.DialogInterface; import android.content.SharedPreferences; import android.os.Bundle; -import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.LocaleController; import org.telegram.messenger.MessagesController; import org.telegram.messenger.MessagesStorage; @@ -161,7 +160,7 @@ public class AlertsCreator { builder.setNegativeButton(LocaleController.getString("MoreInfo", R.string.MoreInfo), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { - AndroidUtilities.openUrl(fragment.getParentActivity(), LocaleController.getString("NobodyLikesSpamUrl", R.string.NobodyLikesSpamUrl)); + MessagesController.openByUserName("spambot", fragment, 1); } }); break; @@ -212,6 +211,12 @@ public class AlertsCreator { case "USERS_TOO_FEW": builder.setMessage(LocaleController.getString("CreateGroupError", R.string.CreateGroupError)); break; + case "USER_RESTRICTED": + builder.setMessage(LocaleController.getString("UserRestricted", R.string.UserRestricted)); + break; + default: + builder.setMessage(error); + break; } builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), null); fragment.showDialog(builder.create(), true); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/AnimatedFileDrawable.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/AnimatedFileDrawable.java index 098a000a9..649694d7e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/AnimatedFileDrawable.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/AnimatedFileDrawable.java @@ -9,9 +9,14 @@ package org.telegram.ui.Components; import android.graphics.Bitmap; +import android.graphics.BitmapShader; import android.graphics.Canvas; +import android.graphics.Matrix; +import android.graphics.Paint; import android.graphics.PixelFormat; import android.graphics.Rect; +import android.graphics.RectF; +import android.graphics.Shader; import android.graphics.drawable.Animatable; import android.graphics.drawable.BitmapDrawable; import android.os.Handler; @@ -43,8 +48,17 @@ public class AnimatedFileDrawable extends BitmapDrawable implements Animatable { private boolean decoderCreated; private File path; - private float scaleX = 1f; - private float scaleY = 1f; + private BitmapShader renderingShader; + private BitmapShader nextRenderingShader; + private BitmapShader backgroundShader; + + private int roundRadius; + private RectF roundRect = new RectF(); + private RectF bitmapRect = new RectF(); + private Matrix shaderMatrix = new Matrix(); + + private float scaleX = 1.0f; + private float scaleY = 1.0f; private boolean applyTransformation; private final android.graphics.Rect dstRect = new android.graphics.Rect(); private static final Handler uiHandler = new Handler(Looper.getMainLooper()); @@ -74,11 +88,13 @@ public class AnimatedFileDrawable extends BitmapDrawable implements Animatable { if (nativePtr == 0) { if (backgroundBitmap != null) { backgroundBitmap.recycle(); + backgroundBitmap = null; } return; } loadFrameTask = null; nextRenderingBitmap = backgroundBitmap; + nextRenderingShader = backgroundShader; if (metaData[2] < lastTimeStamp) { lastTimeStamp = 0; } @@ -107,11 +123,11 @@ public class AnimatedFileDrawable extends BitmapDrawable implements Animatable { } catch (Throwable e) { FileLog.e("tmessages", e); } + if (backgroundShader == null && backgroundBitmap != null && roundRadius != 0) { + backgroundShader = new BitmapShader(backgroundBitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); + } } if (backgroundBitmap != null) { - /*if (Build.VERSION.SDK_INT >= 14 && Build.VERSION.SDK_INT < 21) { - Utilities.unpinBitmap(backgroundBitmap); - }*/ getVideoFrame(nativePtr, backgroundBitmap, metaData); } } catch (Throwable e) { @@ -197,12 +213,12 @@ public class AnimatedFileDrawable extends BitmapDrawable implements Animatable { } isRunning = true; if (renderingBitmap == null) { - scheduleNextGetFrame(renderingBitmap); + scheduleNextGetFrame(); } runOnUiThread(mStartTask); } - private void scheduleNextGetFrame(Bitmap bitmap) { + private void scheduleNextGetFrame() { if (loadFrameTask != null || nativePtr == 0 && decoderCreated || destroyWhenDone) { return; } @@ -242,12 +258,14 @@ public class AnimatedFileDrawable extends BitmapDrawable implements Animatable { } if (isRunning) { if (renderingBitmap == null && nextRenderingBitmap == null) { - scheduleNextGetFrame(renderingBitmap); + scheduleNextGetFrame(); } else if (Math.abs(System.currentTimeMillis() - lastFrameTime) >= invalidateAfter) { if (nextRenderingBitmap != null) { - scheduleNextGetFrame(renderingBitmap); + scheduleNextGetFrame(); renderingBitmap = nextRenderingBitmap; + renderingShader = nextRenderingShader; nextRenderingBitmap = null; + nextRenderingShader = null; lastFrameTime = System.currentTimeMillis(); } } @@ -260,9 +278,33 @@ public class AnimatedFileDrawable extends BitmapDrawable implements Animatable { scaleY = (float) dstRect.height() / renderingBitmap.getHeight(); applyTransformation = false; } - canvas.translate(dstRect.left, dstRect.top); - canvas.scale(scaleX, scaleY); - canvas.drawBitmap(renderingBitmap, 0, 0, getPaint()); + if (roundRadius != 0) { + int bitmapW = renderingBitmap.getWidth(); + int bitmapH = renderingBitmap.getHeight(); + float scale = Math.max(scaleX, scaleY); + + if (renderingShader == null) { + renderingShader = new BitmapShader(backgroundBitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); + } + getPaint().setShader(renderingShader); + roundRect.set(dstRect); + shaderMatrix.reset(); + if (Math.abs(scaleX - scaleY) > 0.00001f) { + int w = (int) Math.floor(dstRect.width() / scale); + int h = (int) Math.floor(dstRect.height() / scale); + bitmapRect.set((bitmapW - w) / 2, (bitmapH - h) / 2, w, h); + shaderMatrix.setRectToRect(bitmapRect, roundRect, Matrix.ScaleToFit.START); + } else { + bitmapRect.set(0, 0, renderingBitmap.getWidth(), renderingBitmap.getHeight()); + shaderMatrix.setRectToRect(bitmapRect, roundRect, Matrix.ScaleToFit.FILL); + } + renderingShader.setLocalMatrix(shaderMatrix); + canvas.drawRoundRect(roundRect, roundRadius, roundRadius, getPaint()); + } else { + canvas.translate(dstRect.left, dstRect.top); + canvas.scale(scaleX, scaleY); + canvas.drawBitmap(renderingBitmap, 0, 0, getPaint()); + } if (isRunning) { uiHandler.postDelayed(mInvalidateTask, invalidateAfter); } @@ -288,6 +330,11 @@ public class AnimatedFileDrawable extends BitmapDrawable implements Animatable { return null; } + public void setRoundRadius(int value) { + roundRadius = value; + getPaint().setFlags(Paint.ANTI_ALIAS_FLAG); + } + public boolean hasBitmap() { return nativePtr != 0 && (renderingBitmap != null || nextRenderingBitmap != null); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/AvatarDrawable.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/AvatarDrawable.java index 22694ce13..cd1f12515 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/AvatarDrawable.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/AvatarDrawable.java @@ -24,6 +24,7 @@ import org.telegram.messenger.FileLog; import org.telegram.messenger.R; import org.telegram.tgnet.TLRPC; import org.telegram.messenger.ApplicationLoader; +import org.telegram.ui.ActionBar.Theme; public class AvatarDrawable extends Drawable { @@ -31,12 +32,12 @@ public class AvatarDrawable extends Drawable { private static TextPaint namePaint; private static TextPaint namePaintSmall; private static int[] arrColors = {0xffe56555, 0xfff28c48, 0xff8e85ee, 0xff76c84d, 0xff5fbed5, 0xff549cdd, 0xff8e85ee, 0xfff2749a}; - private static int[] arrColorsProfiles = {0xffd86f65, 0xfff69d61, 0xff8c79d2, 0xff67b35d, 0xff56a2bb, 0xff5c98cd, 0xff8c79d2, 0xfff37fa6}; - private static int[] arrColorsProfilesBack = {0xffca6056, 0xfff18944, 0xff7d6ac4, 0xff56a14c, 0xff4492ac, 0xff4c84b6, 0xff7d6ac4, 0xff4c84b6}; - private static int[] arrColorsProfilesText = {0xfff9cbc5, 0xfffdddc8, 0xffcdc4ed, 0xffc0edba, 0xffb8e2f0, 0xffb3d7f7, 0xffcdc4ed, 0xffb3d7f7}; + private static int[] arrColorsProfiles = {0xffd86f65, 0xfff69d61, 0xff8c79d2, 0xff67b35d, 0xff56a2bb, Theme.ACTION_BAR_MAIN_AVATAR_COLOR, 0xff8c79d2, 0xfff37fa6}; + private static int[] arrColorsProfilesBack = {0xffca6056, 0xfff18944, 0xff7d6ac4, 0xff56a14c, 0xff4492ac, Theme.ACTION_BAR_PROFILE_COLOR, 0xff7d6ac4, 0xff4c84b6}; + private static int[] arrColorsProfilesText = {0xfff9cbc5, 0xfffdddc8, 0xffcdc4ed, 0xffc0edba, 0xffb8e2f0, Theme.ACTION_BAR_PROFILE_SUBTITLE_COLOR, 0xffcdc4ed, 0xffb3d7f7}; private static int[] arrColorsNames = {0xffca5650, 0xffd87b29, 0xff4e92cc, 0xff50b232, 0xff42b1a8, 0xff4e92cc, 0xff4e92cc, 0xff4e92cc}; - private static int[] arrColorsButtons = {R.drawable.bar_selector_red, R.drawable.bar_selector_orange, R.drawable.bar_selector_violet, - R.drawable.bar_selector_green, R.drawable.bar_selector_cyan, R.drawable.bar_selector_blue, R.drawable.bar_selector_violet, R.drawable.bar_selector_blue}; + private static int[] arrColorsButtons = {Theme.ACTION_BAR_RED_SELECTOR_COLOR, Theme.ACTION_BAR_ORANGE_SELECTOR_COLOR, Theme.ACTION_BAR_VIOLET_SELECTOR_COLOR, + Theme.ACTION_BAR_GREEN_SELECTOR_COLOR, Theme.ACTION_BAR_CYAN_SELECTOR_COLOR, Theme.ACTION_BAR_BLUE_SELECTOR_COLOR, Theme.ACTION_BAR_VIOLET_SELECTOR_COLOR, Theme.ACTION_BAR_BLUE_SELECTOR_COLOR}; private static Drawable broadcastDrawable; private static Drawable photoDrawable; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/BotKeyboardView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/BotKeyboardView.java index b8a091bee..7c1bfa0d3 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/BotKeyboardView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/BotKeyboardView.java @@ -34,7 +34,7 @@ public class BotKeyboardView extends LinearLayout { private ArrayList buttonViews = new ArrayList<>(); public interface BotKeyboardViewDelegate { - void didPressedButton(CharSequence text); + void didPressedButton(TLRPC.KeyboardButton button); } public BotKeyboardView(Context context) { @@ -99,8 +99,9 @@ public class BotKeyboardView extends LinearLayout { float weight = 1.0f / row.buttons.size(); for (int b = 0; b < row.buttons.size(); b++) { - TLRPC.TL_keyboardButton button = row.buttons.get(b); + TLRPC.KeyboardButton button = row.buttons.get(b); TextView textView = new TextView(getContext()); + textView.setTag(button); textView.setTextColor(0xff36474f); textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); textView.setGravity(Gravity.CENTER); @@ -111,7 +112,7 @@ public class BotKeyboardView extends LinearLayout { textView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { - delegate.didPressedButton(((TextView) v).getText()); + delegate.didPressedButton((TLRPC.KeyboardButton) v.getTag()); } }); buttonViews.add(textView); 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 299508c7c..92884aa38 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatActivityEnterView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatActivityEnterView.java @@ -21,7 +21,9 @@ import android.graphics.Paint; import android.graphics.drawable.Drawable; import android.media.AudioManager; import android.os.Build; +import android.os.Bundle; import android.os.PowerManager; +import android.os.SystemClock; import android.text.Editable; import android.text.InputFilter; import android.text.Layout; @@ -64,18 +66,22 @@ import org.telegram.tgnet.ConnectionsManager; import org.telegram.tgnet.TLRPC; import org.telegram.messenger.UserConfig; import org.telegram.ui.ActionBar.ActionBar; -import org.telegram.ui.ActionBar.BaseFragment; import org.telegram.messenger.AnimationCompat.AnimatorListenerAdapterProxy; import org.telegram.messenger.AnimationCompat.AnimatorSetProxy; import org.telegram.messenger.AnimationCompat.ObjectAnimatorProxy; import org.telegram.messenger.AnimationCompat.ViewProxy; import org.telegram.messenger.ApplicationLoader; +import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.ChatActivity; +import org.telegram.ui.DialogsActivity; import org.telegram.ui.StickersActivity; import java.io.File; +import java.lang.reflect.Field; +import java.util.ArrayList; import java.util.Locale; -public class ChatActivityEnterView extends FrameLayoutFixed implements NotificationCenter.NotificationCenterDelegate, SizeNotifierFrameLayout.SizeNotifierFrameLayoutDelegate { +public class ChatActivityEnterView extends FrameLayoutFixed implements NotificationCenter.NotificationCenterDelegate, SizeNotifierFrameLayout.SizeNotifierFrameLayoutDelegate, StickersAlert.StickersAlertDelegate { public interface ChatActivityEnterViewDelegate { void onMessageSend(String message); @@ -134,8 +140,7 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat @Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) { super.onLayout(changed, left, top, right, bottom); - seekBarWaveform.width = right - left; - seekBarWaveform.height = bottom - top; + seekBarWaveform.setSize(right - left, bottom - top); } @Override @@ -152,9 +157,28 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat private int userNameLength; private int xOffset; private int yOffset; + private Object editor; + private Field editorField; + private Drawable[] mCursorDrawable; + private Field mCursorDrawableField; + private int triesCount = 0; public EditTextCaption(Context context) { super(context); + + try { + Field field = TextView.class.getDeclaredField("mEditor"); + field.setAccessible(true); + editor = field.get(this); + Class editorClass = Class.forName("android.widget.Editor"); + editorField = editorClass.getDeclaredField("mShowCursor"); + editorField.setAccessible(true); + mCursorDrawableField = editorClass.getDeclaredField("mCursorDrawable"); + mCursorDrawableField.setAccessible(true); + mCursorDrawable = (Drawable[]) mCursorDrawableField.get(editor); + } catch (Throwable e) { + FileLog.e("tmessages", e); + } } public void setCaption(String value) { @@ -217,6 +241,21 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat } catch (Exception e) { FileLog.e("tmessages", e); } + + try { + if (editorField != null && mCursorDrawable != null && mCursorDrawable[0] != null) { + long mShowCursor = editorField.getLong(editor); + boolean showCursor = (SystemClock.uptimeMillis() - mShowCursor) % (2 * 500) < 500; + if (showCursor) { + canvas.save(); + canvas.translate(0, getPaddingTop()); + mCursorDrawable[0].draw(canvas); + canvas.restore(); + } + } + } catch (Throwable e) { + //ignore + } } @Override @@ -231,6 +270,7 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat private EditTextCaption messageEditText; private ImageView sendButton; + private ImageView cancelBotButton; private ImageView emojiButton; private EmojiView emojiView; private TextView recordTimeText; @@ -254,6 +294,7 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat private ImageView notifyButton; private RecordCircle recordCircle; private ContextProgressView contextProgressView; + private CloseProgressDrawable2 progressDrawable; private MessageObject editingMessageObject; private boolean editingCaption; @@ -299,7 +340,7 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat private boolean lastSizeChangeValue2; private Activity parentActivity; - private BaseFragment parentFragment; + private ChatActivity parentFragment; private long dialog_id; private boolean ignoreTextChange; private int innerTextChange; @@ -319,6 +360,9 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat private boolean allowShowTopView; private AnimatorSetProxy currentTopViewAnimation; + private MessageObject pendingMessageObject; + private TLRPC.KeyboardButton pendingLocationButton; + private boolean waitingForKeyboardOpen; private Runnable openKeyboardRunnable = new Runnable() { @Override @@ -450,7 +494,7 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat } } - public ChatActivityEnterView(Activity context, SizeNotifierFrameLayout parent, BaseFragment fragment, boolean isChat) { + public ChatActivityEnterView(Activity context, SizeNotifierFrameLayout parent, ChatActivity fragment, boolean isChat) { super(context); setBackgroundResource(R.drawable.compose_panel); setFocusable(true); @@ -486,12 +530,10 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat emojiButton.setScaleType(ImageView.ScaleType.CENTER_INSIDE); emojiButton.setPadding(0, AndroidUtilities.dp(1), 0, 0); if (Build.VERSION.SDK_INT >= 21) { - emojiButton.setBackgroundResource(R.drawable.circle_selector); - frameLayout.addView(emojiButton, LayoutHelper.createFrame(44, 44, Gravity.BOTTOM | Gravity.LEFT, 4, 0, 0, 2)); - } else { - frameLayout.addView(emojiButton, LayoutHelper.createFrame(48, 48, Gravity.BOTTOM | Gravity.LEFT, 3, 0, 0, 0)); + emojiButton.setBackgroundDrawable(Theme.createBarSelectorDrawable(Theme.INPUT_FIELD_SELECTOR_COLOR)); } - emojiButton.setOnClickListener(new View.OnClickListener() { + frameLayout.addView(emojiButton, LayoutHelper.createFrame(48, 48, Gravity.BOTTOM | Gravity.LEFT, 3, 0, 0, 0)); + emojiButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { if (!isPopupShowing() || currentPopupContentType != 0) { @@ -513,11 +555,10 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat messageEditText.setGravity(Gravity.BOTTOM); messageEditText.setPadding(0, AndroidUtilities.dp(11), 0, AndroidUtilities.dp(12)); messageEditText.setBackgroundDrawable(null); - AndroidUtilities.clearCursorDrawable(messageEditText); messageEditText.setTextColor(0xff000000); messageEditText.setHintTextColor(0xffb2b2b2); frameLayout.addView(messageEditText, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.BOTTOM, 52, 0, isChat ? 50 : 2, 0)); - messageEditText.setOnKeyListener(new View.OnKeyListener() { + messageEditText.setOnKeyListener(new OnKeyListener() { boolean ctrlPressed = false; @@ -624,6 +665,13 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat } } }); + try { + Field mCursorDrawableRes = TextView.class.getDeclaredField("mCursorDrawableRes"); + mCursorDrawableRes.setAccessible(true); + mCursorDrawableRes.set(messageEditText, R.drawable.field_carret); + } catch (Exception e) { + //nothing to do + } if (isChat) { contextProgressView = new ContextProgressView(context); @@ -641,11 +689,9 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat botButton.setScaleType(ImageView.ScaleType.CENTER); botButton.setVisibility(GONE); if (Build.VERSION.SDK_INT >= 21) { - botButton.setBackgroundResource(R.drawable.circle_selector); - attachButton.addView(botButton, LayoutHelper.createLinear(44, 44, Gravity.CENTER_VERTICAL, 2, 0, 2, 0)); - } else { - attachButton.addView(botButton, LayoutHelper.createLinear(48, 48)); + botButton.setBackgroundDrawable(Theme.createBarSelectorDrawable(Theme.INPUT_FIELD_SELECTOR_COLOR)); } + attachButton.addView(botButton, LayoutHelper.createLinear(48, 48)); botButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { @@ -673,11 +719,9 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat asAdminButton.setScaleType(ImageView.ScaleType.CENTER); asAdminButton.setVisibility(adminModeAvailable ? VISIBLE : GONE); if (Build.VERSION.SDK_INT >= 21) { - asAdminButton.setBackgroundResource(R.drawable.circle_selector); - attachButton.addView(asAdminButton, LayoutHelper.createLinear(44, 44, Gravity.CENTER_VERTICAL, 2, 0, 2, 0)); - } else { - attachButton.addView(asAdminButton, LayoutHelper.createLinear(48, 48)); + asAdminButton.setBackgroundDrawable(Theme.createBarSelectorDrawable(Theme.INPUT_FIELD_SELECTOR_COLOR)); } + attachButton.addView(asAdminButton, LayoutHelper.createLinear(48, 48)); asAdminButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { @@ -694,11 +738,9 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat notifyButton.setScaleType(ImageView.ScaleType.CENTER); notifyButton.setVisibility(canWriteToChannel ? VISIBLE : GONE); if (Build.VERSION.SDK_INT >= 21) { - notifyButton.setBackgroundResource(R.drawable.circle_selector); - attachButton.addView(notifyButton, LayoutHelper.createLinear(44, 44, Gravity.CENTER_VERTICAL, 2, 0, 2, 0)); - } else { - attachButton.addView(notifyButton, LayoutHelper.createLinear(48, 48)); + notifyButton.setBackgroundDrawable(Theme.createBarSelectorDrawable(Theme.INPUT_FIELD_SELECTOR_COLOR)); } + attachButton.addView(notifyButton, LayoutHelper.createLinear(48, 48)); notifyButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { @@ -820,7 +862,7 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat audioSendButton.setSoundEffectsEnabled(false); audioSendButton.setPadding(0, 0, AndroidUtilities.dp(4), 0); sendButtonContainer.addView(audioSendButton, LayoutHelper.createFrame(48, 48)); - audioSendButton.setOnTouchListener(new View.OnTouchListener() { + audioSendButton.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) { @@ -906,8 +948,32 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat recordCircle.setVisibility(GONE); sizeNotifierLayout.addView(recordCircle, LayoutHelper.createFrame(124, 124, Gravity.BOTTOM | Gravity.RIGHT, 0, 0, -36, -38)); + cancelBotButton = new ImageView(context); + cancelBotButton.setVisibility(INVISIBLE); + cancelBotButton.setScaleType(ImageView.ScaleType.CENTER_INSIDE); + //cancelBotButton.setImageResource(R.drawable.delete_reply); + cancelBotButton.setImageDrawable(progressDrawable = new CloseProgressDrawable2()); + cancelBotButton.setSoundEffectsEnabled(false); + ViewProxy.setScaleX(cancelBotButton, 0.1f); + ViewProxy.setScaleY(cancelBotButton, 0.1f); + ViewProxy.setAlpha(cancelBotButton, 0.0f); + cancelBotButton.clearAnimation(); + sendButtonContainer.addView(cancelBotButton, LayoutHelper.createFrame(48, 48)); + cancelBotButton.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View view) { + String text = messageEditText.getText().toString(); + int idx = text.indexOf(' '); + if (idx == -1 || idx == text.length() - 1) { + setFieldText(""); + } else { + setFieldText(text.substring(0, idx + 1)); + } + } + }); + sendButton = new ImageView(context); - sendButton.setVisibility(View.INVISIBLE); + sendButton.setVisibility(INVISIBLE); sendButton.setScaleType(ImageView.ScaleType.CENTER_INSIDE); sendButton.setImageResource(R.drawable.ic_send); sendButton.setSoundEffectsEnabled(false); @@ -916,7 +982,7 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat ViewProxy.setAlpha(sendButton, 0.0f); sendButton.clearAnimation(); sendButtonContainer.addView(sendButton, LayoutHelper.createFrame(48, 48)); - sendButton.setOnClickListener(new View.OnClickListener() { + sendButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { sendMessage(); @@ -931,7 +997,7 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat } public void showContextProgress(boolean show) { - if (contextProgressView == null) { + /*if (contextProgressView == null) { return; } contextProgressView.setVisibility(show ? VISIBLE : INVISIBLE); @@ -939,12 +1005,21 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat messageEditText.setPadding(0, AndroidUtilities.dp(11), show ? AndroidUtilities.dp(38) : 0, AndroidUtilities.dp(12)); } catch (Exception e) { FileLog.e("tmessages", e); + }*/ + if (progressDrawable == null) { + return; + } + if (show) { + progressDrawable.startAnimation(); + } else { + progressDrawable.stopAnimation(); } } public void setCaption(String caption) { if (messageEditText != null) { messageEditText.setCaption(caption); + checkSendButton(true); } } @@ -1025,6 +1100,13 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat currentTopViewAnimation = null; } } + + @Override + public void onAnimationCancel(Object animation) { + if (currentTopViewAnimation != null && currentTopViewAnimation.equals(animation)) { + currentTopViewAnimation = null; + } + } }); currentTopViewAnimation.setDuration(200); currentTopViewAnimation.start(); @@ -1068,6 +1150,13 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat currentTopViewAnimation = null; } } + + @Override + public void onAnimationCancel(Object animation) { + if (currentTopViewAnimation != null && currentTopViewAnimation.equals(animation)) { + currentTopViewAnimation = null; + } + } }); currentTopViewAnimation.setDuration(200); currentTopViewAnimation.start(); @@ -1095,7 +1184,7 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat if (allowShowTopView) { allowShowTopView = false; if (needShowTopView) { - topView.setVisibility(View.GONE); + topView.setVisibility(GONE); setTopViewAnimation(0.0f); } } @@ -1103,7 +1192,7 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat if (!allowShowTopView) { allowShowTopView = true; if (needShowTopView) { - topView.setVisibility(View.VISIBLE); + topView.setVisibility(VISIBLE); setTopViewAnimation(1.0f); } } @@ -1245,7 +1334,7 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat @Override public void onAnimationEnd(Object animation) { recordedAudioPanel.clearAnimation(); - recordedAudioPanel.setVisibility(View.GONE); + recordedAudioPanel.setVisibility(GONE); } }); @@ -1275,7 +1364,7 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat if (playing != null && playing == audioToSendMessageObject) { MediaController.getInstance().cleanupPlayer(true, true); } - SendMessagesHelper.getInstance().sendMessage(audioToSend, null, audioToSendPath, dialog_id, replyingMessageObject, isAsAdmin, null); + SendMessagesHelper.getInstance().sendMessage(audioToSend, null, audioToSendPath, dialog_id, replyingMessageObject, isAsAdmin, null, null); if (delegate != null) { delegate.onMessageSend(null); } @@ -1310,7 +1399,7 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat int count = (int) Math.ceil(text.length() / 4096.0f); for (int a = 0; a < count; a++) { String mess = text.substring(a * 4096, Math.min((a + 1) * 4096, text.length())); - SendMessagesHelper.getInstance().sendMessage(mess, dialog_id, replyingMessageObject, messageWebPage, messageWebPageSearch, asAdmin(), null, null); + SendMessagesHelper.getInstance().sendMessage(mess, dialog_id, replyingMessageObject, messageWebPage, messageWebPageSearch, asAdmin(), null, null, null); } return true; } @@ -1337,9 +1426,11 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat } String message = getTrimmedString(messageEditText.getText().toString()); if (message.length() > 0 || forceShowSendButton || audioToSend != null) { - if (audioSendButton.getVisibility() == View.VISIBLE) { + boolean showBotButton = messageEditText.caption != null && sendButton.getVisibility() == VISIBLE; + boolean showSendButton = messageEditText.caption == null && cancelBotButton.getVisibility() == VISIBLE; + if (audioSendButton.getVisibility() == VISIBLE || showBotButton || showSendButton) { if (animated) { - if (runningAnimationType == 1) { + if (runningAnimationType == 1 && messageEditText.caption == null || runningAnimationType == 3 && messageEditText.caption != null) { return; } if (runningAnimation != null) { @@ -1361,60 +1452,116 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat runningAnimation2.addListener(new AnimatorListenerAdapterProxy() { @Override public void onAnimationEnd(Object animation) { - if (runningAnimation2.equals(animation)) { - attachButton.setVisibility(View.GONE); + if (runningAnimation2 != null && runningAnimation2.equals(animation)) { + attachButton.setVisibility(GONE); attachButton.clearAnimation(); } } + + @Override + public void onAnimationCancel(Object animation) { + if (runningAnimation2 != null && runningAnimation2.equals(animation)) { + runningAnimation2 = null; + } + } }); runningAnimation2.start(); - updateFieldRight(0); - if (delegate != null) { delegate.onAttachButtonHidden(); } } - sendButton.setVisibility(View.VISIBLE); runningAnimation = new AnimatorSetProxy(); - runningAnimationType = 1; - runningAnimation.playTogether( - ObjectAnimatorProxy.ofFloat(audioSendButton, "scaleX", 0.1f), - ObjectAnimatorProxy.ofFloat(audioSendButton, "scaleY", 0.1f), - ObjectAnimatorProxy.ofFloat(audioSendButton, "alpha", 0.0f), - ObjectAnimatorProxy.ofFloat(sendButton, "scaleX", 1.0f), - ObjectAnimatorProxy.ofFloat(sendButton, "scaleY", 1.0f), - ObjectAnimatorProxy.ofFloat(sendButton, "alpha", 1.0f) - ); + ArrayList animators = new ArrayList<>(); + if (audioSendButton.getVisibility() == VISIBLE) { + animators.add(ObjectAnimatorProxy.ofFloat(audioSendButton, "scaleX", 0.1f)); + animators.add(ObjectAnimatorProxy.ofFloat(audioSendButton, "scaleY", 0.1f)); + animators.add(ObjectAnimatorProxy.ofFloat(audioSendButton, "alpha", 0.0f)); + } + if (showBotButton) { + animators.add(ObjectAnimatorProxy.ofFloat(sendButton, "scaleX", 0.1f)); + animators.add(ObjectAnimatorProxy.ofFloat(sendButton, "scaleY", 0.1f)); + animators.add(ObjectAnimatorProxy.ofFloat(sendButton, "alpha", 0.0f)); + } else if (showSendButton) { + animators.add(ObjectAnimatorProxy.ofFloat(cancelBotButton, "scaleX", 0.1f)); + animators.add(ObjectAnimatorProxy.ofFloat(cancelBotButton, "scaleY", 0.1f)); + animators.add(ObjectAnimatorProxy.ofFloat(cancelBotButton, "alpha", 0.0f)); + } + if (messageEditText.caption != null) { + runningAnimationType = 3; + animators.add(ObjectAnimatorProxy.ofFloat(cancelBotButton, "scaleX", 1.0f)); + animators.add(ObjectAnimatorProxy.ofFloat(cancelBotButton, "scaleY", 1.0f)); + animators.add(ObjectAnimatorProxy.ofFloat(cancelBotButton, "alpha", 1.0f)); + cancelBotButton.setVisibility(VISIBLE); + } else { + runningAnimationType = 1; + animators.add(ObjectAnimatorProxy.ofFloat(sendButton, "scaleX", 1.0f)); + animators.add(ObjectAnimatorProxy.ofFloat(sendButton, "scaleY", 1.0f)); + animators.add(ObjectAnimatorProxy.ofFloat(sendButton, "alpha", 1.0f)); + sendButton.setVisibility(VISIBLE); + } + runningAnimation.playTogether(animators); runningAnimation.setDuration(150); runningAnimation.addListener(new AnimatorListenerAdapterProxy() { @Override public void onAnimationEnd(Object animation) { if (runningAnimation != null && runningAnimation.equals(animation)) { - sendButton.setVisibility(View.VISIBLE); - audioSendButton.setVisibility(View.GONE); + if (messageEditText.caption != null) { + cancelBotButton.setVisibility(VISIBLE); + sendButton.setVisibility(GONE); + sendButton.clearAnimation(); + } else { + sendButton.setVisibility(VISIBLE); + cancelBotButton.setVisibility(GONE); + cancelBotButton.clearAnimation(); + } + audioSendButton.setVisibility(GONE); audioSendButton.clearAnimation(); runningAnimation = null; runningAnimationType = 0; } } + + @Override + public void onAnimationCancel(Object animation) { + if (runningAnimation != null && runningAnimation.equals(animation)) { + runningAnimation = null; + } + } }); runningAnimation.start(); } else { ViewProxy.setScaleX(audioSendButton, 0.1f); ViewProxy.setScaleY(audioSendButton, 0.1f); ViewProxy.setAlpha(audioSendButton, 0.0f); - ViewProxy.setScaleX(sendButton, 1.0f); - ViewProxy.setScaleY(sendButton, 1.0f); - ViewProxy.setAlpha(sendButton, 1.0f); - sendButton.setVisibility(View.VISIBLE); - audioSendButton.setVisibility(View.GONE); + if (messageEditText.caption != null) { + ViewProxy.setScaleX(sendButton, 0.1f); + ViewProxy.setScaleY(sendButton, 0.1f); + ViewProxy.setAlpha(sendButton, 0.0f); + ViewProxy.setScaleX(cancelBotButton, 1.0f); + ViewProxy.setScaleY(cancelBotButton, 1.0f); + ViewProxy.setAlpha(cancelBotButton, 1.0f); + cancelBotButton.setVisibility(VISIBLE); + sendButton.setVisibility(GONE); + sendButton.clearAnimation(); + } else { + ViewProxy.setScaleX(cancelBotButton, 0.1f); + ViewProxy.setScaleY(cancelBotButton, 0.1f); + ViewProxy.setAlpha(cancelBotButton, 0.0f); + ViewProxy.setScaleX(sendButton, 1.0f); + ViewProxy.setScaleY(sendButton, 1.0f); + ViewProxy.setAlpha(sendButton, 1.0f); + sendButton.setVisibility(VISIBLE); + cancelBotButton.setVisibility(GONE); + cancelBotButton.clearAnimation(); + } + audioSendButton.setVisibility(GONE); audioSendButton.clearAnimation(); if (attachButton != null) { - attachButton.setVisibility(View.GONE); + attachButton.setVisibility(GONE); attachButton.clearAnimation(); if (delegate != null) { delegate.onAttachButtonHidden(); @@ -1423,7 +1570,7 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat } } } - } else if (sendButton.getVisibility() == View.VISIBLE) { + } else if (sendButton.getVisibility() == VISIBLE || cancelBotButton.getVisibility() == VISIBLE) { if (animated) { if (runningAnimationType == 2) { return; @@ -1439,7 +1586,7 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat } if (attachButton != null) { - attachButton.setVisibility(View.VISIBLE); + attachButton.setVisibility(VISIBLE); runningAnimation2 = new AnimatorSetProxy(); runningAnimation2.playTogether( ObjectAnimatorProxy.ofFloat(attachButton, "alpha", 1.0f), @@ -1447,52 +1594,70 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat ); runningAnimation2.setDuration(100); runningAnimation2.start(); - updateFieldRight(1); - delegate.onAttachButtonShow(); } - audioSendButton.setVisibility(View.VISIBLE); + audioSendButton.setVisibility(VISIBLE); runningAnimation = new AnimatorSetProxy(); runningAnimationType = 2; - runningAnimation.playTogether( - ObjectAnimatorProxy.ofFloat(sendButton, "scaleX", 0.1f), - ObjectAnimatorProxy.ofFloat(sendButton, "scaleY", 0.1f), - ObjectAnimatorProxy.ofFloat(sendButton, "alpha", 0.0f), - ObjectAnimatorProxy.ofFloat(audioSendButton, "scaleX", 1.0f), - ObjectAnimatorProxy.ofFloat(audioSendButton, "scaleY", 1.0f), - ObjectAnimatorProxy.ofFloat(audioSendButton, "alpha", 1.0f) - ); + ArrayList animators = new ArrayList<>(); + animators.add(ObjectAnimatorProxy.ofFloat(audioSendButton, "scaleX", 1.0f)); + animators.add(ObjectAnimatorProxy.ofFloat(audioSendButton, "scaleY", 1.0f)); + animators.add(ObjectAnimatorProxy.ofFloat(audioSendButton, "alpha", 1.0f)); + if (cancelBotButton.getVisibility() == VISIBLE) { + animators.add(ObjectAnimatorProxy.ofFloat(cancelBotButton, "scaleX", 0.1f)); + animators.add(ObjectAnimatorProxy.ofFloat(cancelBotButton, "scaleY", 0.1f)); + animators.add(ObjectAnimatorProxy.ofFloat(cancelBotButton, "alpha", 0.0f)); + } else { + animators.add(ObjectAnimatorProxy.ofFloat(sendButton, "scaleX", 0.1f)); + animators.add(ObjectAnimatorProxy.ofFloat(sendButton, "scaleY", 0.1f)); + animators.add(ObjectAnimatorProxy.ofFloat(sendButton, "alpha", 0.0f)); + } + runningAnimation.playTogether(animators); runningAnimation.setDuration(150); runningAnimation.addListener(new AnimatorListenerAdapterProxy() { @Override public void onAnimationEnd(Object animation) { if (runningAnimation != null && runningAnimation.equals(animation)) { - sendButton.setVisibility(View.GONE); + sendButton.setVisibility(GONE); sendButton.clearAnimation(); - audioSendButton.setVisibility(View.VISIBLE); + cancelBotButton.setVisibility(GONE); + cancelBotButton.clearAnimation(); + audioSendButton.setVisibility(VISIBLE); runningAnimation = null; runningAnimationType = 0; } } + + @Override + public void onAnimationCancel(Object animation) { + if (runningAnimation != null && runningAnimation.equals(animation)) { + runningAnimation = null; + } + } }); runningAnimation.start(); } else { ViewProxy.setScaleX(sendButton, 0.1f); ViewProxy.setScaleY(sendButton, 0.1f); ViewProxy.setAlpha(sendButton, 0.0f); + ViewProxy.setScaleX(cancelBotButton, 0.1f); + ViewProxy.setScaleY(cancelBotButton, 0.1f); + ViewProxy.setAlpha(cancelBotButton, 0.0f); ViewProxy.setScaleX(audioSendButton, 1.0f); ViewProxy.setScaleY(audioSendButton, 1.0f); ViewProxy.setAlpha(audioSendButton, 1.0f); - sendButton.setVisibility(View.GONE); + cancelBotButton.setVisibility(GONE); + cancelBotButton.clearAnimation(); + sendButton.setVisibility(GONE); sendButton.clearAnimation(); - audioSendButton.setVisibility(View.VISIBLE); + audioSendButton.setVisibility(VISIBLE); if (attachButton != null) { delegate.onAttachButtonShow(); - attachButton.setVisibility(View.VISIBLE); + attachButton.setVisibility(VISIBLE); updateFieldRight(1); } } @@ -1604,8 +1769,8 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat params.leftMargin = AndroidUtilities.dp(30); slideText.setLayoutParams(params); ViewProxy.setAlpha(slideText, 1); - recordPanel.setVisibility(View.GONE); - recordCircle.setVisibility(View.GONE); + recordPanel.setVisibility(GONE); + recordCircle.setVisibility(GONE); runningAnimationAudio = null; } } @@ -1644,9 +1809,9 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat } else { TLRPC.User user = messageObject != null && (int) dialog_id < 0 ? MessagesController.getInstance().getUser(messageObject.messageOwner.from_id) : null; if ((botCount != 1 || username) && user != null && user.bot && !command.contains("@")) { - SendMessagesHelper.getInstance().sendMessage(String.format(Locale.US, "%s@%s", command, user.username), dialog_id, null, null, false, asAdmin(), null, null); + SendMessagesHelper.getInstance().sendMessage(String.format(Locale.US, "%s@%s", command, user.username), dialog_id, null, null, false, asAdmin(), null, null, null); } else { - SendMessagesHelper.getInstance().sendMessage(command, dialog_id, null, null, false, asAdmin(), null, null); + SendMessagesHelper.getInstance().sendMessage(command, dialog_id, null, null, false, asAdmin(), null, null, null); } } } @@ -1680,10 +1845,12 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat layoutParams.rightMargin = AndroidUtilities.dp(4); messageEditText.setLayoutParams(layoutParams); sendButton.clearAnimation(); + cancelBotButton.clearAnimation(); audioSendButton.clearAnimation(); attachButton.clearAnimation(); sendButtonContainer.clearAnimation(); sendButton.setVisibility(GONE); + cancelBotButton.setVisibility(GONE); audioSendButton.setVisibility(GONE); attachButton.setVisibility(GONE); sendButtonContainer.setVisibility(GONE); @@ -1698,11 +1865,16 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat ViewProxy.setScaleX(sendButton, 0.1f); ViewProxy.setScaleY(sendButton, 0.1f); ViewProxy.setAlpha(sendButton, 0.0f); + ViewProxy.setScaleX(cancelBotButton, 0.1f); + ViewProxy.setScaleY(cancelBotButton, 0.1f); + ViewProxy.setAlpha(cancelBotButton, 0.0f); ViewProxy.setScaleX(audioSendButton, 1.0f); ViewProxy.setScaleY(audioSendButton, 1.0f); ViewProxy.setAlpha(audioSendButton, 1.0f); - sendButton.setVisibility(View.GONE); + sendButton.setVisibility(GONE); sendButton.clearAnimation(); + cancelBotButton.setVisibility(GONE); + cancelBotButton.clearAnimation(); messageEditText.setText(""); delegate.onAttachButtonShow(); updateFieldRight(1); @@ -1794,11 +1966,9 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat viewGroup.removeView(view); } if (Build.VERSION.SDK_INT >= 21) { - view.setBackgroundResource(R.drawable.circle_selector); - attachButton.addView(view, LayoutHelper.createLinear(44, 44, Gravity.CENTER_VERTICAL, 2, 0, 2, 0)); - } else { - attachButton.addView(view, LayoutHelper.createLinear(48, 48)); + view.setBackgroundDrawable(Theme.createBarSelectorDrawable(Theme.INPUT_FIELD_SELECTOR_COLOR)); } + attachButton.addView(view, LayoutHelper.createLinear(48, 48)); } private void updateBotButton() { @@ -1851,9 +2021,9 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat botKeyboardView.setVisibility(GONE); botKeyboardView.setDelegate(new BotKeyboardView.BotKeyboardViewDelegate() { @Override - public void didPressedButton(CharSequence text) { + public void didPressedButton(TLRPC.KeyboardButton button) { MessageObject object = replyingMessageObject != null ? replyingMessageObject : ((int) dialog_id < 0 ? botButtonsMessageObject : null); - SendMessagesHelper.getInstance().sendMessage(text.toString(), dialog_id, object, null, false, asAdmin(), null, null); + didPressedBotButton(button, object, replyingMessageObject != null ? replyingMessageObject : botButtonsMessageObject); if (replyingMessageObject != null) { openKeyboardInternal(); setButtons(botMessageObject, false); @@ -1897,6 +2067,92 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat updateBotButton(); } + public void didPressedBotButton(final TLRPC.KeyboardButton button, final MessageObject replyMessageObject, final MessageObject messageObject) { + if (button == null || messageObject == null) { + return; + } + if (button instanceof TLRPC.TL_keyboardButton) { + SendMessagesHelper.getInstance().sendMessage(button.text, dialog_id, replyMessageObject, null, false, asAdmin(), null, null, null); + } else if (button instanceof TLRPC.TL_keyboardButtonUrl) { + parentFragment.showOpenUrlAlert(button.url); + } else if (button instanceof TLRPC.TL_keyboardButtonRequestPhone) { + parentFragment.shareMyContact(messageObject); + } else if (button instanceof TLRPC.TL_keyboardButtonRequestGeoLocation) { + AlertDialog.Builder builder = new AlertDialog.Builder(parentActivity); + builder.setTitle(LocaleController.getString("ShareYouLocationTitle", R.string.ShareYouLocationTitle)); + builder.setMessage(LocaleController.getString("ShareYouLocationInfo", R.string.ShareYouLocationInfo)); + builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + if (Build.VERSION.SDK_INT >= 23 && parentActivity.checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { + parentActivity.requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION}, 2); + pendingMessageObject = messageObject; + pendingLocationButton = button; + return; + } + SendMessagesHelper.getInstance().sendCurrentLocation(messageObject, button); + } + }); + builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); + parentFragment.showDialog(builder.create()); + } else if (button instanceof TLRPC.TL_keyboardButtonCallback) { + SendMessagesHelper.getInstance().sendCallback(messageObject, button, parentFragment); + } else if (button instanceof TLRPC.TL_keyboardButtonSwitchInline) { + if (parentFragment.processSwitchButton((TLRPC.TL_keyboardButtonSwitchInline) button)) { + return; + } + Bundle args = new Bundle(); + args.putBoolean("onlySelect", true); + args.putInt("dialogsType", 1); + DialogsActivity fragment = new DialogsActivity(args); + fragment.setDelegate(new DialogsActivity.DialogsActivityDelegate() { + @Override + public void didSelectDialog(DialogsActivity fragment, long did, boolean param) { + int uid = messageObject.messageOwner.from_id; + if (messageObject.messageOwner.via_bot_id != 0) { + uid = messageObject.messageOwner.via_bot_id; + } + TLRPC.User user = MessagesController.getInstance().getUser(uid); + if (user == null) { + fragment.finishFragment(); + return; + } + SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE); + SharedPreferences.Editor editor = preferences.edit(); + editor.putString("dialog_" + did, "@" + user.username + " " + button.query); + editor.commit(); + if (did != dialog_id) { + int lower_part = (int) did; + if (lower_part != 0) { + Bundle args = new Bundle(); + if (lower_part > 0) { + args.putInt("user_id", lower_part); + } else if (lower_part < 0) { + args.putInt("chat_id", -lower_part); + } + if (!MessagesController.checkCanOpenChat(args, fragment)) { + return; + } + ChatActivity chatActivity = new ChatActivity(args); + if (parentFragment.presentFragment(chatActivity, true)) { + if (!AndroidUtilities.isTablet()) { + parentFragment.removeSelfFromStack(); + } + } else { + fragment.finishFragment(); + } + } else { + fragment.finishFragment(); + } + } else { + fragment.finishFragment(); + } + } + }); + parentFragment.presentFragment(fragment); + } + } + public boolean isPopupView(View view) { return view == botKeyboardView || view == emojiView; } @@ -1939,10 +2195,7 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat } public void onStickerSelected(TLRPC.Document sticker) { - SendMessagesHelper.getInstance().sendSticker(sticker, dialog_id, replyingMessageObject, asAdmin()); - if (delegate != null) { - delegate.onMessageSend(null); - } + ChatActivityEnterView.this.onStickerSelected(sticker); } @Override @@ -2004,6 +2257,14 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat sizeNotifierLayout.addView(emojiView); } + @Override + public void onStickerSelected(TLRPC.Document sticker) { + SendMessagesHelper.getInstance().sendSticker(sticker, dialog_id, replyingMessageObject, asAdmin()); + if (delegate != null) { + delegate.onMessageSend(null); + } + } + private void showPopup(int show, int contentType) { if (show == 1) { if (contentType == 0 && emojiView == null) { @@ -2338,4 +2599,16 @@ public class ChatActivityEnterView extends FrameLayoutFixed implements Notificat } } } + + public void onRequestPermissionsResultFragment(int requestCode, String[] permissions, int[] grantResults) { + if (requestCode == 2) { + if (pendingLocationButton != null) { + if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + SendMessagesHelper.getInstance().sendCurrentLocation(pendingMessageObject, pendingLocationButton); + } + pendingLocationButton = null; + pendingMessageObject = null; + } + } + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachView.java index 97a47121f..86c3d2aa5 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachView.java @@ -37,8 +37,8 @@ import org.telegram.messenger.MessageObject; import org.telegram.messenger.NotificationCenter; import org.telegram.messenger.support.widget.LinearLayoutManager; import org.telegram.messenger.R; +import org.telegram.messenger.support.widget.RecyclerView; import org.telegram.tgnet.TLRPC; -import org.telegram.ui.Adapters.PhotoAttachAdapter; import org.telegram.ui.Cells.PhotoAttachPhotoCell; import org.telegram.ui.ChatActivity; import org.telegram.ui.PhotoViewer; @@ -60,12 +60,13 @@ public class ChatAttachView extends FrameLayout implements NotificationCenter.No private RecyclerListView attachPhotoRecyclerView; private View lineView; private EmptyTextProgressView progressView; + private ArrayList viewsCache = new ArrayList<>(8); private float[] distCache = new float[20]; private DecelerateInterpolator decelerateInterpolator = new DecelerateInterpolator(); - private boolean loading; + private boolean loading = true; private ChatAttachViewDelegate delegate; @@ -106,12 +107,6 @@ public class ChatAttachView extends FrameLayout implements NotificationCenter.No super(context); NotificationCenter.getInstance().addObserver(this, NotificationCenter.albumsDidLoaded); - if (MediaController.allPhotosAlbumEntry == null) { - if (Build.VERSION.SDK_INT >= 21) { - MediaController.loadGalleryPhotosAlbums(0); - } - loading = true; - } views[8] = attachPhotoRecyclerView = new RecyclerListView(context); attachPhotoRecyclerView.setVerticalScrollBarEnabled(true); @@ -132,12 +127,6 @@ public class ChatAttachView extends FrameLayout implements NotificationCenter.No }; attachPhotoLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); attachPhotoRecyclerView.setLayoutManager(attachPhotoLayoutManager); - photoAttachAdapter.setDelegate(new PhotoAttachAdapter.PhotoAttachAdapterDelegate() { - @Override - public void selectedPhotosChanged() { - updatePhotosButton(); - } - }); attachPhotoRecyclerView.setOnItemClickListener(new RecyclerListView.OnItemClickListener() { @SuppressWarnings("unchecked") @Override @@ -215,6 +204,10 @@ public class ChatAttachView extends FrameLayout implements NotificationCenter.No } }); + for (int a = 0; a < 8; a++) { + viewsCache.add(photoAttachAdapter.createHolder()); + } + if (loading) { progressView.showProgress(); } else { @@ -288,6 +281,14 @@ public class ChatAttachView extends FrameLayout implements NotificationCenter.No } } + public void loadGalleryPhotos() { + if (MediaController.allPhotosAlbumEntry == null) { + if (Build.VERSION.SDK_INT >= 21) { + MediaController.loadGalleryPhotosAlbums(0); + } + } + } + @SuppressLint("NewApi") public void onRevealAnimationStart(boolean open) { if (!open) { @@ -523,4 +524,98 @@ public class ChatAttachView extends FrameLayout implements NotificationCenter.No public int getSelectedCount() { return photoAttachAdapter.getSelectedPhotos().size(); } + + @Override + public boolean hasOverlappingRendering() { + return false; + } + + public class PhotoAttachAdapter extends RecyclerView.Adapter { + + private Context mContext; + private HashMap selectedPhotos = new HashMap<>(); + + private class Holder extends RecyclerView.ViewHolder { + + public Holder(View itemView) { + super(itemView); + } + } + + public PhotoAttachAdapter(Context context) { + mContext = context; + } + + public void clearSelectedPhotos() { + if (!selectedPhotos.isEmpty()) { + for (HashMap.Entry entry : selectedPhotos.entrySet()) { + MediaController.PhotoEntry photoEntry = entry.getValue(); + photoEntry.imagePath = null; + photoEntry.thumbPath = null; + photoEntry.caption = null; + } + selectedPhotos.clear(); + updatePhotosButton(); + notifyDataSetChanged(); + } + } + + public Holder createHolder() { + PhotoAttachPhotoCell cell = new PhotoAttachPhotoCell(mContext); + cell.setDelegate(new PhotoAttachPhotoCell.PhotoAttachPhotoCellDelegate() { + @Override + public void onCheckClick(PhotoAttachPhotoCell v) { + MediaController.PhotoEntry photoEntry = v.getPhotoEntry(); + if (selectedPhotos.containsKey(photoEntry.imageId)) { + selectedPhotos.remove(photoEntry.imageId); + v.setChecked(false, true); + photoEntry.imagePath = null; + photoEntry.thumbPath = null; + v.setPhotoEntry(photoEntry, (Integer) v.getTag() == MediaController.allPhotosAlbumEntry.photos.size() - 1); + } else { + selectedPhotos.put(photoEntry.imageId, photoEntry); + v.setChecked(true, true); + } + updatePhotosButton(); + } + }); + return new Holder(cell); + } + + public HashMap getSelectedPhotos() { + return selectedPhotos; + } + + @Override + public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { + PhotoAttachPhotoCell cell = (PhotoAttachPhotoCell) holder.itemView; + MediaController.PhotoEntry photoEntry = MediaController.allPhotosAlbumEntry.photos.get(position); + cell.setPhotoEntry(photoEntry, position == MediaController.allPhotosAlbumEntry.photos.size() - 1); + cell.setChecked(selectedPhotos.containsKey(photoEntry.imageId), false); + cell.getImageView().setTag(position); + cell.setTag(position); + } + + @Override + public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + Holder holder; + if (!viewsCache.isEmpty()) { + holder = viewsCache.get(0); + viewsCache.remove(0); + } else { + holder = createHolder(); + } + return holder; + } + + @Override + public int getItemCount() { + return (MediaController.allPhotosAlbumEntry != null ? MediaController.allPhotosAlbumEntry.photos.size() : 0); + } + + @Override + public int getItemViewType(int position) { + return 0; + } + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAvatarContainer.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAvatarContainer.java new file mode 100644 index 000000000..c851dbf9c --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAvatarContainer.java @@ -0,0 +1,366 @@ +/* + * This is the source code of Telegram for Android v. 3.x.x. + * It is licensed under GNU GPL v. 2 or later. + * You should have received a copy of the license in this archive (see LICENSE). + * + * Copyright Nikolai Kudashov, 2013-2016. + */ + +package org.telegram.ui.Components; + +import android.content.Context; +import android.os.Build; +import android.os.Bundle; +import android.text.TextUtils; +import android.view.Gravity; +import android.view.View; +import android.widget.FrameLayout; +import android.widget.ImageView; + +import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.ChatObject; +import org.telegram.messenger.FileLog; +import org.telegram.messenger.LocaleController; +import org.telegram.messenger.MessagesController; +import org.telegram.messenger.R; +import org.telegram.messenger.UserConfig; +import org.telegram.tgnet.ConnectionsManager; +import org.telegram.tgnet.TLRPC; +import org.telegram.ui.ActionBar.ActionBar; +import org.telegram.ui.ActionBar.SimpleTextView; +import org.telegram.ui.ActionBar.Theme; +import org.telegram.ui.ChatActivity; +import org.telegram.ui.ProfileActivity; + +public class ChatAvatarContainer extends FrameLayout { + + private BackupImageView avatarImageView; + private SimpleTextView titleTextView; + private SimpleTextView subtitleTextView; + private RadioButton radioButton; + private ImageView timeItem; + private TimerDrawable timerDrawable; + private ChatActivity parentFragment; + private TypingDotsDrawable typingDotsDrawable; + private RecordStatusDrawable recordStatusDrawable; + private SendingFileExDrawable sendingFileDrawable; + private AvatarDrawable avatarDrawable = new AvatarDrawable(); + private ChatAvatarContainerDelegate delegate; + + private int onlineCount = -1; + + public interface ChatAvatarContainerDelegate { + void didPressedRadioButton(); + } + + public ChatAvatarContainer(Context context, ChatActivity chatActivity, boolean needRadio, boolean needTime) { + super(context); + parentFragment = chatActivity; + + avatarImageView = new BackupImageView(context); + avatarImageView.setRoundRadius(AndroidUtilities.dp(21)); + addView(avatarImageView); + + titleTextView = new SimpleTextView(context); + titleTextView.setTextColor(Theme.ACTION_BAR_TITLE_COLOR); + titleTextView.setTextSize(18); + titleTextView.setGravity(Gravity.LEFT); + titleTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + titleTextView.setLeftDrawableTopPadding(-AndroidUtilities.dp(1.3f)); + titleTextView.setRightDrawableTopPadding(-AndroidUtilities.dp(1.3f)); + addView(titleTextView); + + subtitleTextView = new SimpleTextView(context); + subtitleTextView.setTextColor(Theme.ACTION_BAR_SUBTITLE_COLOR); + subtitleTextView.setTextSize(14); + subtitleTextView.setGravity(Gravity.LEFT); + addView(subtitleTextView); + + if (needTime) { + timeItem = new ImageView(context); + timeItem.setPadding(AndroidUtilities.dp(10), AndroidUtilities.dp(10), AndroidUtilities.dp(5), AndroidUtilities.dp(5)); + timeItem.setScaleType(ImageView.ScaleType.CENTER); + timeItem.setImageDrawable(timerDrawable = new TimerDrawable(context)); + addView(timeItem); + timeItem.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + parentFragment.showDialog(AndroidUtilities.buildTTLAlert(getContext(), parentFragment.getCurrentEncryptedChat()).create()); + } + }); + } + + if (needRadio) { + radioButton = new RadioButton(context); + radioButton.setVisibility(View.GONE); + addView(radioButton); + } + + setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (radioButton == null || radioButton.getVisibility() != View.VISIBLE) { + TLRPC.User user = parentFragment.getCurrentUser(); + TLRPC.Chat chat = parentFragment.getCurrentChat(); + if (user != null) { + Bundle args = new Bundle(); + args.putInt("user_id", user.id); + if (timeItem != null) { + args.putLong("dialog_id", parentFragment.getDialogId()); + } + ProfileActivity fragment = new ProfileActivity(args); + fragment.setPlayProfileAnimation(true); + parentFragment.presentFragment(fragment); + } else if (chat != null) { + Bundle args = new Bundle(); + args.putInt("chat_id", chat.id); + ProfileActivity fragment = new ProfileActivity(args); + fragment.setChatInfo(parentFragment.getCurrentChatInfo()); + fragment.setPlayProfileAnimation(true); + parentFragment.presentFragment(fragment); + } + } else { + delegate.didPressedRadioButton(); + } + } + }); + + TLRPC.Chat chat = parentFragment.getCurrentChat(); + typingDotsDrawable = new TypingDotsDrawable(); + typingDotsDrawable.setIsChat(chat != null); + recordStatusDrawable = new RecordStatusDrawable(); + recordStatusDrawable.setIsChat(chat != null); + sendingFileDrawable = new SendingFileExDrawable(); + sendingFileDrawable.setIsChat(chat != null); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + int width = MeasureSpec.getSize(widthMeasureSpec); + int availableWidth = width - AndroidUtilities.dp(54 + 16); + avatarImageView.measure(MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(42), MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(42), MeasureSpec.EXACTLY)); + titleTextView.measure(MeasureSpec.makeMeasureSpec(availableWidth, MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(24), MeasureSpec.AT_MOST)); + if (radioButton != null && radioButton.getVisibility() == VISIBLE) { + radioButton.measure(MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(24), MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(24), MeasureSpec.EXACTLY)); + availableWidth -= AndroidUtilities.dp(20); + } + subtitleTextView.measure(MeasureSpec.makeMeasureSpec(availableWidth, MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(20), MeasureSpec.AT_MOST)); + if (timeItem != null) { + timeItem.measure(MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(34), MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(34), MeasureSpec.EXACTLY)); + } + setMeasuredDimension(width, MeasureSpec.getSize(heightMeasureSpec)); + } + + @Override + protected void onLayout(boolean changed, int left, int top, int right, int bottom) { + int actionBarHeight = ActionBar.getCurrentActionBarHeight(); + int viewTop = (actionBarHeight - AndroidUtilities.dp(42)) / 2 + (Build.VERSION.SDK_INT >= 21 ? AndroidUtilities.statusBarHeight : 0); + avatarImageView.layout(AndroidUtilities.dp(8), viewTop, AndroidUtilities.dp(42 + 8), viewTop + AndroidUtilities.dp(42)); + titleTextView.layout(AndroidUtilities.dp(8 + 54), viewTop + AndroidUtilities.dp(1.3f), AndroidUtilities.dp(8 + 54) + titleTextView.getMeasuredWidth(), viewTop + titleTextView.getTextHeight() + AndroidUtilities.dp(1.3f)); + if (timeItem != null) { + timeItem.layout(AndroidUtilities.dp(8 + 16), viewTop + AndroidUtilities.dp(15), AndroidUtilities.dp(8 + 16 + 34), viewTop + AndroidUtilities.dp(15 + 34)); + } + if (radioButton != null && radioButton.getVisibility() == VISIBLE) { + subtitleTextView.layout(AndroidUtilities.dp(8 + 54 + 20), viewTop + AndroidUtilities.dp(24), AndroidUtilities.dp(8 + 54 + 20) + subtitleTextView.getMeasuredWidth(), viewTop + subtitleTextView.getTextHeight() + AndroidUtilities.dp(24)); + viewTop = viewTop + subtitleTextView.getTextHeight() / 2 + AndroidUtilities.dp(12); + radioButton.layout(AndroidUtilities.dp(8 + 50), viewTop, AndroidUtilities.dp(8 + 50 + 24), viewTop + AndroidUtilities.dp(24)); + } else { + subtitleTextView.layout(AndroidUtilities.dp(8 + 54), viewTop + AndroidUtilities.dp(24), AndroidUtilities.dp(8 + 54) + subtitleTextView.getMeasuredWidth(), viewTop + subtitleTextView.getTextHeight() + AndroidUtilities.dp(24)); + } + } + + public void setRadioChecked(boolean value, boolean animated) { + if (radioButton == null) { + return; + } + radioButton.setChecked(value, animated); + } + + public boolean isRadioChecked() { + return radioButton.isChecked(); + } + + public void showTimeItem() { + if (timeItem == null) { + return; + } + timeItem.setVisibility(VISIBLE); + } + + public void hideTimeItem() { + if (timeItem == null) { + return; + } + timeItem.setVisibility(GONE); + } + + public void setTime(int value) { + if (timerDrawable == null) { + return; + } + timerDrawable.setTime(value); + } + + public void setTitleIcons(int leftIcon, int rightIcon) { + titleTextView.setLeftDrawable(leftIcon); + titleTextView.setRightDrawable(rightIcon); + } + + public void setTitle(CharSequence value) { + titleTextView.setText(value); + } + + public void setDelegate(ChatAvatarContainerDelegate chatAvatarContainerDelegate) { + delegate = chatAvatarContainerDelegate; + } + + private void setTypingAnimation(boolean start) { + if (start) { + try { + Integer type = MessagesController.getInstance().printingStringsTypes.get(parentFragment.getDialogId()); + if (type == 0) { + subtitleTextView.setLeftDrawable(typingDotsDrawable); + typingDotsDrawable.start(); + recordStatusDrawable.stop(); + sendingFileDrawable.stop(); + } else if (type == 1) { + subtitleTextView.setLeftDrawable(recordStatusDrawable); + recordStatusDrawable.start(); + typingDotsDrawable.stop(); + sendingFileDrawable.stop(); + } else if (type == 2) { + subtitleTextView.setLeftDrawable(sendingFileDrawable); + sendingFileDrawable.start(); + typingDotsDrawable.stop(); + recordStatusDrawable.stop(); + } + } catch (Exception e) { + FileLog.e("tmessages", e); + } + } else { + subtitleTextView.setLeftDrawable(null); + typingDotsDrawable.stop(); + recordStatusDrawable.stop(); + sendingFileDrawable.stop(); + } + } + + public void updateSubtitle() { + TLRPC.User user = parentFragment.getCurrentUser(); + TLRPC.Chat chat = parentFragment.getCurrentChat(); + CharSequence printString = MessagesController.getInstance().printingStrings.get(parentFragment.getDialogId()); + if (printString != null) { + printString = TextUtils.replace(printString, new String[]{"..."}, new String[]{""}); + } + if (printString == null || printString.length() == 0 || ChatObject.isChannel(chat) && !chat.megagroup) { + setTypingAnimation(false); + if (chat != null) { + TLRPC.ChatFull info = parentFragment.getCurrentChatInfo(); + if (ChatObject.isChannel(chat)) { + if (!chat.broadcast && !chat.megagroup && !(chat instanceof TLRPC.TL_channelForbidden)) { + subtitleTextView.setText(LocaleController.getString("ShowDiscussion", R.string.ShowDiscussion)); + if (radioButton != null && radioButton.getVisibility() != VISIBLE) { + radioButton.setVisibility(View.VISIBLE); + } + } else { + if (info != null && info.participants_count != 0) { + if (chat.megagroup && info.participants_count <= 200) { + if (onlineCount > 1 && info.participants_count != 0) { + subtitleTextView.setText(String.format("%s, %s", LocaleController.formatPluralString("Members", info.participants_count), LocaleController.formatPluralString("Online", onlineCount))); + } else { + subtitleTextView.setText(LocaleController.formatPluralString("Members", info.participants_count)); + } + } else { + int result[] = new int[1]; + String shortNumber = LocaleController.formatShortNumber(info.participants_count, result); + String text = LocaleController.formatPluralString("Members", result[0]).replace(String.format("%d", result[0]), shortNumber); + subtitleTextView.setText(text); + } + } else { + if (chat.megagroup) { + subtitleTextView.setText(LocaleController.getString("Loading", R.string.Loading).toLowerCase()); + } else { + if ((chat.flags & TLRPC.CHAT_FLAG_IS_PUBLIC) != 0) { + subtitleTextView.setText(LocaleController.getString("ChannelPublic", R.string.ChannelPublic).toLowerCase()); + } else { + subtitleTextView.setText(LocaleController.getString("ChannelPrivate", R.string.ChannelPrivate).toLowerCase()); + } + } + } + if (radioButton != null && radioButton.getVisibility() != GONE) { + radioButton.setVisibility(View.GONE); + } + } + } else { + if (ChatObject.isKickedFromChat(chat)) { + subtitleTextView.setText(LocaleController.getString("YouWereKicked", R.string.YouWereKicked)); + } else if (ChatObject.isLeftFromChat(chat)) { + subtitleTextView.setText(LocaleController.getString("YouLeft", R.string.YouLeft)); + } else { + int count = chat.participants_count; + if (info != null) { + count = info.participants.participants.size(); + } + if (onlineCount > 1 && count != 0) { + subtitleTextView.setText(String.format("%s, %s", LocaleController.formatPluralString("Members", count), LocaleController.formatPluralString("Online", onlineCount))); + } else { + subtitleTextView.setText(LocaleController.formatPluralString("Members", count)); + } + } + } + } else if (user != null) { + user = MessagesController.getInstance().getUser(user.id); + String newStatus; + if (user.id == 333000 || user.id == 777000) { + newStatus = LocaleController.getString("ServiceNotifications", R.string.ServiceNotifications); + } else if (user.bot) { + newStatus = LocaleController.getString("Bot", R.string.Bot); + } else { + newStatus = LocaleController.formatUserStatus(user); + } + subtitleTextView.setText(newStatus); + } + } else { + subtitleTextView.setText(printString); + setTypingAnimation(true); + } + } + + public void checkAndUpdateAvatar() { + TLRPC.FileLocation newPhoto = null; + TLRPC.User user = parentFragment.getCurrentUser(); + TLRPC.Chat chat = parentFragment.getCurrentChat(); + if (user != null) { + if (user.photo != null) { + newPhoto = user.photo.photo_small; + } + avatarDrawable.setInfo(user); + } else if (chat != null) { + if (chat.photo != null) { + newPhoto = chat.photo.photo_small; + } + avatarDrawable.setInfo(chat); + } + if (avatarImageView != null) { + avatarImageView.setImage(newPhoto, "50_50", avatarDrawable); + } + } + + public void updateOnlineCount() { + onlineCount = 0; + TLRPC.ChatFull info = parentFragment.getCurrentChatInfo(); + if (info == null) { + return; + } + int currentTime = ConnectionsManager.getInstance().getCurrentTime(); + if (info instanceof TLRPC.TL_chatFull || info instanceof TLRPC.TL_channelFull && info.participants_count <= 200 && info.participants != null) { + for (int a = 0; a < info.participants.participants.size(); a++) { + TLRPC.ChatParticipant participant = info.participants.participants.get(a); + TLRPC.User user = MessagesController.getInstance().getUser(participant.user_id); + if (user != null && user.status != null && (user.status.expires > currentTime || user.id == UserConfig.getClientUserId()) && user.status.expires > 10000) { + onlineCount++; + } + } + } + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ClippingImageView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ClippingImageView.java index 615777efe..64790946f 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ClippingImageView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ClippingImageView.java @@ -51,6 +51,9 @@ public class ClippingImageView extends View { matrix = new Matrix(); drawRect = new RectF(); bitmapRect = new RectF(); + roundPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + roundRect = new RectF(); + shaderMatrix = new Matrix(); } public void setAnimationValues(float[][] values) { @@ -109,10 +112,32 @@ public class ClippingImageView extends View { canvas.save(); if (needRadius) { - roundRect.set(0, 0, getWidth(), getHeight()); shaderMatrix.reset(); - shaderMatrix.setRectToRect(bitmapRect, roundRect, Matrix.ScaleToFit.FILL); + roundRect.set(0, 0, getWidth(), getHeight()); + + int bitmapW; + int bitmapH; + if (orientation % 360 == 90 || orientation % 360 == 270) { + bitmapW = bmp.getHeight(); + bitmapH = bmp.getWidth(); + } else { + bitmapW = bmp.getWidth(); + bitmapH = bmp.getHeight(); + } + float scaleW = getWidth() != 0 ? bitmapW / getWidth() : 1.0f; + float scaleH = getHeight() != 0 ? bitmapH / getHeight() : 1.0f; + float scale = Math.min(scaleW, scaleH); + if (Math.abs(scaleW - scaleH) > 0.00001f) { + int w = (int) Math.floor(getWidth() * scale); + int h = (int) Math.floor(getHeight() * scale); + bitmapRect.set((bitmapW - w) / 2, (bitmapH - h) / 2, w, h); + shaderMatrix.setRectToRect(bitmapRect, roundRect, Matrix.ScaleToFit.START); + } else { + bitmapRect.set(0, 0, bmp.getWidth(), bmp.getHeight()); + shaderMatrix.setRectToRect(bitmapRect, roundRect, Matrix.ScaleToFit.FILL); + } bitmapShader.setLocalMatrix(shaderMatrix); + canvas.clipRect(clipLeft / scaleY, clipTop / scaleY, getWidth() - clipRight / scaleY, getHeight() - clipBottom / scaleY); canvas.drawRoundRect(roundRect, radius, radius, roundPaint); } else { if (orientation == 90 || orientation == 270) { @@ -182,10 +207,7 @@ public class ClippingImageView extends View { if (bitmap != null) { bitmapRect.set(0, 0, bitmap.getWidth(), bitmap.getHeight()); if (needRadius) { - roundRect = new RectF(); - shaderMatrix = new Matrix(); bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); - roundPaint = new Paint(Paint.ANTI_ALIAS_FLAG); roundPaint.setShader(bitmapShader); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/CloseProgressDrawable.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/CloseProgressDrawable.java new file mode 100644 index 000000000..7ddd35863 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/CloseProgressDrawable.java @@ -0,0 +1,91 @@ +/* + * This is the source code of Telegram for Android v. 3.x.x. + * It is licensed under GNU GPL v. 2 or later. + * You should have received a copy of the license in this archive (see LICENSE). + * + * Copyright Nikolai Kudashov, 2013-2016. + */ + +package org.telegram.ui.Components; + +import android.graphics.Canvas; +import android.graphics.ColorFilter; +import android.graphics.Paint; +import android.graphics.PixelFormat; +import android.graphics.drawable.Drawable; +import android.view.animation.DecelerateInterpolator; + +import org.telegram.messenger.AndroidUtilities; + +public class CloseProgressDrawable extends Drawable { + + private Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); + private long lastFrameTime; + private int currentAnimationTime; + private DecelerateInterpolator interpolator = new DecelerateInterpolator(); + private int currentSegment; + + public CloseProgressDrawable() { + super(); + paint.setColor(0xff757575); + paint.setStrokeWidth(AndroidUtilities.dp(2)); + paint.setStrokeCap(Paint.Cap.ROUND); + } + + @Override + public void draw(Canvas canvas) { + long newTime = System.currentTimeMillis(); + if (lastFrameTime != 0) { + long dt = (newTime - lastFrameTime); + currentAnimationTime += dt; + if (currentAnimationTime > 200) { + currentAnimationTime = 0; + currentSegment++; + if (currentSegment == 4) { + currentSegment -= 4; + } + } + } + + canvas.save(); + canvas.translate(getIntrinsicWidth() / 2, getIntrinsicHeight() / 2); + canvas.rotate(45); + paint.setAlpha(255 - (currentSegment % 4) * 40); + canvas.drawLine(-AndroidUtilities.dp(8), 0, 0, 0, paint); + paint.setAlpha(255 - ((currentSegment + 1) % 4) * 40); + canvas.drawLine(0, -AndroidUtilities.dp(8), 0, 0, paint); + paint.setAlpha(255 - ((currentSegment + 2) % 4) * 40); + canvas.drawLine(0, 0, AndroidUtilities.dp(8), 0, paint); + paint.setAlpha(255 - ((currentSegment + 3) % 4) * 40); + canvas.drawLine(0, 0, 0, AndroidUtilities.dp(8), paint); + canvas.restore(); + + lastFrameTime = newTime; + invalidateSelf(); + } + + @Override + public void setAlpha(int alpha) { + + } + + @Override + public void setColorFilter(ColorFilter cf) { + + } + + @Override + public int getOpacity() { + return PixelFormat.TRANSPARENT; + } + + @Override + public int getIntrinsicWidth() { + return AndroidUtilities.dp(24); + } + + @Override + public int getIntrinsicHeight() { + return AndroidUtilities.dp(24); + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/CloseProgressDrawable2.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/CloseProgressDrawable2.java new file mode 100644 index 000000000..7d93f1253 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/CloseProgressDrawable2.java @@ -0,0 +1,143 @@ +/* + * This is the source code of Telegram for Android v. 3.x.x. + * It is licensed under GNU GPL v. 2 or later. + * You should have received a copy of the license in this archive (see LICENSE). + * + * Copyright Nikolai Kudashov, 2013-2016. + */ + +package org.telegram.ui.Components; + +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 android.view.animation.DecelerateInterpolator; + +import org.telegram.messenger.AndroidUtilities; + +public class CloseProgressDrawable2 extends Drawable { + + private Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); + private long lastFrameTime; + private DecelerateInterpolator interpolator = new DecelerateInterpolator(); + private RectF rect = new RectF(); + private float angle; + private boolean animating; + + public CloseProgressDrawable2() { + super(); + paint.setColor(0xffadadad); + paint.setStrokeWidth(AndroidUtilities.dp(2)); + paint.setStrokeCap(Paint.Cap.ROUND); + paint.setStyle(Paint.Style.STROKE); + } + + public void startAnimation() { + animating = true; + lastFrameTime = System.currentTimeMillis(); + invalidateSelf(); + } + + public void stopAnimation() { + animating = false; + } + + @Override + public void draw(Canvas canvas) { + long newTime = System.currentTimeMillis(); + boolean invalidate = false; + if (lastFrameTime != 0) { + long dt = (newTime - lastFrameTime); + if (animating || angle != 0) { + angle += 360 * dt / 500.0f; + if (!animating && angle >= 720) { + angle = 0; + } else { + angle -= (int) (angle / 720) * 720; + } + invalidateSelf(); + } + } + + canvas.save(); + canvas.translate(getIntrinsicWidth() / 2, getIntrinsicHeight() / 2); + canvas.rotate(-45); + float progress1 = 1.0f; + float progress2 = 1.0f; + float progress3 = 1.0f; + float progress4 = 0.0f; + if (angle >= 0 && angle < 90) { + progress1 = (1.0f - angle / 90.0f); + } else if (angle >= 90 && angle < 180) { + progress1 = 0.0f; + progress2 = 1.0f - (angle - 90) / 90.0f; + } else if (angle >= 180 && angle < 270) { + progress1 = progress2 = 0; + progress3 = 1.0f - (angle - 180) / 90.0f; + } else if (angle >= 270 && angle < 360) { + progress1 = progress2 = progress3 = 0; + progress4 = (angle - 270) / 90.0f; + } else if (angle >= 360 && angle < 450) { + progress1 = progress2 = progress3 = 0; + progress4 = 1.0f - (angle - 360) / 90.0f; + } else if (angle >= 450 && angle < 540) { + progress2 = progress3 = 0; + progress1 = (angle - 450) / 90.0f; + } else if (angle >= 540 && angle < 630) { + progress3 = 0; + progress2 = (angle - 540) / 90.0f; + } else if (angle >= 630 && angle < 720) { + progress3 = (angle - 630) / 90.0f; + } + + if (progress1 != 0) { + canvas.drawLine(0, 0, 0, AndroidUtilities.dp(8) * progress1, paint); + } + if (progress2 != 0) { + canvas.drawLine(-AndroidUtilities.dp(8) * progress2, 0, 0, 0, paint); + } + if (progress3 != 0) { + canvas.drawLine(0, -AndroidUtilities.dp(8) * progress3, 0, 0, paint); + } + if (progress4 != 1) { + canvas.drawLine(AndroidUtilities.dp(8) * progress4, 0, AndroidUtilities.dp(8), 0, paint); + } + + canvas.restore(); + + int cx = getBounds().centerX(); + int cy = getBounds().centerY(); + rect.set(cx - AndroidUtilities.dp(8), cy - AndroidUtilities.dp(8), cx + AndroidUtilities.dp(8), cy + AndroidUtilities.dp(8)); + canvas.drawArc(rect, (angle < 360 ? 0 : angle - 360) - 45, (angle < 360 ? angle : 720 - angle), false, paint); + + lastFrameTime = newTime; + } + + @Override + public void setAlpha(int alpha) { + + } + + @Override + public void setColorFilter(ColorFilter cf) { + + } + + @Override + public int getOpacity() { + return PixelFormat.TRANSPARENT; + } + + @Override + public int getIntrinsicWidth() { + return AndroidUtilities.dp(24); + } + + @Override + public int getIntrinsicHeight() { + return AndroidUtilities.dp(24); + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/LetterDrawable.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/LetterDrawable.java index e8567c3e7..91bd7ead0 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/LetterDrawable.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/LetterDrawable.java @@ -23,7 +23,7 @@ import org.telegram.messenger.FileLog; public class LetterDrawable extends Drawable { - private static Paint paint = new Paint(); + public static Paint paint = new Paint(); private static TextPaint namePaint; private StaticLayout textLayout; @@ -36,7 +36,7 @@ public class LetterDrawable extends Drawable { super(); if (namePaint == null) { - paint.setColor(0xffdfdfdf); + paint.setColor(0xfff0f0f0); namePaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); namePaint.setColor(0xffffffff); namePaint.setTextSize(AndroidUtilities.dp(28)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/LinkPath.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/LinkPath.java index 4f146c6dc..f7203005e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/LinkPath.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/LinkPath.java @@ -16,15 +16,19 @@ public class LinkPath extends Path { private StaticLayout currentLayout; private int currentLine; private float lastTop = -1; + private float heightOffset; - public void setCurrentLayout(StaticLayout layout, int start) { + public void setCurrentLayout(StaticLayout layout, int start, float yOffset) { currentLayout = layout; currentLine = layout.getLineForOffset(start); lastTop = -1; + heightOffset = yOffset; } @Override public void addRect(float left, float top, float right, float bottom, Direction dir) { + top += heightOffset; + bottom += heightOffset; if (lastTop == -1) { lastTop = top; } else if (lastTop != top) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/PhotoFilterView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/PhotoFilterView.java index c7825462e..c5a162982 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/PhotoFilterView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/PhotoFilterView.java @@ -40,6 +40,7 @@ import org.telegram.messenger.AnimationCompat.AnimatorListenerAdapterProxy; import org.telegram.messenger.AnimationCompat.AnimatorSetProxy; import org.telegram.messenger.AnimationCompat.ObjectAnimatorProxy; import org.telegram.messenger.AnimationCompat.ViewProxy; +import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Cells.PhotoEditToolCell; import java.nio.ByteBuffer; @@ -2068,7 +2069,7 @@ public class PhotoFilterView extends FrameLayout { cancelTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); cancelTextView.setTextColor(0xffffffff); cancelTextView.setGravity(Gravity.CENTER); - cancelTextView.setBackgroundResource(R.drawable.bar_selector_picker); + cancelTextView.setBackgroundDrawable(Theme.createBarSelectorDrawable(Theme.ACTION_BAR_PICKER_SELECTOR_COLOR, false)); cancelTextView.setPadding(AndroidUtilities.dp(29), 0, AndroidUtilities.dp(29), 0); cancelTextView.setText(LocaleController.getString("Cancel", R.string.Cancel).toUpperCase()); cancelTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); @@ -2078,7 +2079,7 @@ public class PhotoFilterView extends FrameLayout { doneTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); doneTextView.setTextColor(0xff51bdf3); doneTextView.setGravity(Gravity.CENTER); - doneTextView.setBackgroundResource(R.drawable.bar_selector_picker); + doneTextView.setBackgroundDrawable(Theme.createBarSelectorDrawable(Theme.ACTION_BAR_PICKER_SELECTOR_COLOR, false)); doneTextView.setPadding(AndroidUtilities.dp(29), 0, AndroidUtilities.dp(29), 0); doneTextView.setText(LocaleController.getString("Done", R.string.Done).toUpperCase()); doneTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); @@ -2169,7 +2170,7 @@ public class PhotoFilterView extends FrameLayout { ImageView imageView = new ImageView(context); imageView.setImageResource(R.drawable.edit_cancel); - imageView.setBackgroundResource(R.drawable.bar_selector_picker); + imageView.setBackgroundDrawable(Theme.createBarSelectorDrawable(Theme.ACTION_BAR_PICKER_SELECTOR_COLOR, false)); imageView.setPadding(AndroidUtilities.dp(22), 0, AndroidUtilities.dp(22), 0); frameLayout.addView(imageView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.LEFT)); imageView.setOnClickListener(new OnClickListener() { @@ -2217,7 +2218,7 @@ public class PhotoFilterView extends FrameLayout { imageView = new ImageView(context); imageView.setImageResource(R.drawable.edit_doneblue); - imageView.setBackgroundResource(R.drawable.bar_selector_picker); + imageView.setBackgroundDrawable(Theme.createBarSelectorDrawable(Theme.ACTION_BAR_PICKER_SELECTOR_COLOR, false)); imageView.setPadding(AndroidUtilities.dp(22), AndroidUtilities.dp(1), AndroidUtilities.dp(22), 0); frameLayout.addView(imageView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.RIGHT)); imageView.setOnClickListener(new OnClickListener() { 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 ffbf63466..3da5c1ac1 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/PhotoViewerCaptionEnterView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/PhotoViewerCaptionEnterView.java @@ -9,13 +9,17 @@ package org.telegram.ui.Components; import android.content.Context; +import android.os.Build; import android.text.Editable; import android.text.InputFilter; import android.text.TextWatcher; import android.text.style.ImageSpan; import android.util.TypedValue; +import android.view.ActionMode; import android.view.Gravity; import android.view.KeyEvent; +import android.view.Menu; +import android.view.MenuItem; import android.view.View; import android.view.inputmethod.EditorInfo; import android.widget.EditText; @@ -34,6 +38,9 @@ import org.telegram.tgnet.TLRPC; import org.telegram.messenger.AnimationCompat.AnimatorSetProxy; import org.telegram.messenger.AnimationCompat.ObjectAnimatorProxy; +import java.lang.reflect.Field; +import java.lang.reflect.Method; + public class PhotoViewerCaptionEnterView extends FrameLayoutFixed implements NotificationCenter.NotificationCenterDelegate, SizeNotifierFrameLayoutPhoto.SizeNotifierFrameLayoutPhotoDelegate { public interface PhotoViewerCaptionEnterViewDelegate { @@ -47,6 +54,8 @@ public class PhotoViewerCaptionEnterView extends FrameLayoutFixed implements Not private EmojiView emojiView; private SizeNotifierFrameLayoutPhoto sizeNotifierLayout; + private ActionMode currentActionMode; + private AnimatorSetProxy runningAnimation; private AnimatorSetProxy runningAnimation2; private ObjectAnimatorProxy runningAnimationAudio; @@ -65,11 +74,14 @@ public class PhotoViewerCaptionEnterView extends FrameLayoutFixed implements Not private PhotoViewerCaptionEnterViewDelegate delegate; - public PhotoViewerCaptionEnterView(Context context, SizeNotifierFrameLayoutPhoto parent) { + private View windowView; + + public PhotoViewerCaptionEnterView(Context context, SizeNotifierFrameLayoutPhoto parent, final View window) { super(context); setBackgroundColor(0x7f000000); setFocusable(true); setFocusableInTouchMode(true); + windowView = window; sizeNotifierLayout = parent; @@ -97,6 +109,63 @@ public class PhotoViewerCaptionEnterView extends FrameLayoutFixed implements Not }); messageEditText = new EditText(context); + if (Build.VERSION.SDK_INT >= 23) { + messageEditText.setCustomSelectionActionModeCallback(new ActionMode.Callback() { + @Override + public boolean onCreateActionMode(ActionMode mode, Menu menu) { + currentActionMode = mode; + return true; + } + + @Override + public boolean onPrepareActionMode(ActionMode mode, Menu menu) { + if (Build.VERSION.SDK_INT >= 23) { + fixActionMode(mode); + } + return true; + } + + @Override + public boolean onActionItemClicked(ActionMode mode, MenuItem item) { + return false; + } + + @Override + public void onDestroyActionMode(ActionMode mode) { + if (currentActionMode == mode) { + currentActionMode = null; + } + } + }); + + messageEditText.setCustomInsertionActionModeCallback(new ActionMode.Callback() { + @Override + public boolean onCreateActionMode(ActionMode mode, Menu menu) { + currentActionMode = mode; + return true; + } + + @Override + public boolean onPrepareActionMode(ActionMode mode, Menu menu) { + if (Build.VERSION.SDK_INT >= 23) { + fixActionMode(mode); + } + return true; + } + + @Override + public boolean onActionItemClicked(ActionMode mode, MenuItem item) { + return false; + } + + @Override + public void onDestroyActionMode(ActionMode mode) { + if (currentActionMode == mode) { + currentActionMode = null; + } + } + }); + } messageEditText.setHint(LocaleController.getString("AddCaption", R.string.AddCaption)); messageEditText.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI); messageEditText.setInputType(messageEditText.getInputType() | EditorInfo.TYPE_TEXT_FLAG_CAP_SENTENCES); @@ -116,11 +185,15 @@ public class PhotoViewerCaptionEnterView extends FrameLayoutFixed implements Not messageEditText.setOnKeyListener(new OnKeyListener() { @Override public boolean onKey(View view, int i, KeyEvent keyEvent) { - if (i == KeyEvent.KEYCODE_BACK && !keyboardVisible && isPopupShowing()) { - if (keyEvent.getAction() == 1) { - showPopup(0); + if (i == KeyEvent.KEYCODE_BACK) { + if (hideActionMode()) { + return true; + } else if (!keyboardVisible && isPopupShowing()) { + if (keyEvent.getAction() == 1) { + showPopup(0); + } + return true; } - return true; } return false; } @@ -187,6 +260,47 @@ public class PhotoViewerCaptionEnterView extends FrameLayoutFixed implements Not }); } + public boolean hideActionMode() { + if (Build.VERSION.SDK_INT >= 23 && currentActionMode != null) { + currentActionMode.finish(); + currentActionMode = null; + return true; + } + return false; + } + + @SuppressWarnings("unchecked") + private void fixActionMode(ActionMode mode) { + try { + Class classActionMode = Class.forName("com.android.internal.view.FloatingActionMode"); + Field fieldToolbar = classActionMode.getDeclaredField("mFloatingToolbar"); + fieldToolbar.setAccessible(true); + Object toolbar = fieldToolbar.get(mode); + + Class classToolbar = Class.forName("com.android.internal.widget.FloatingToolbar"); + Field fieldToolbarPopup = classToolbar.getDeclaredField("mPopup"); + Field fieldToolbarWidth = classToolbar.getDeclaredField("mWidthChanged"); + fieldToolbarPopup.setAccessible(true); + fieldToolbarWidth.setAccessible(true); + Object popup = fieldToolbarPopup.get(toolbar); + + Class classToolbarPopup = Class.forName("com.android.internal.widget.FloatingToolbar$FloatingToolbarPopup"); + Field fieldToolbarPopupParent = classToolbarPopup.getDeclaredField("mParent"); + fieldToolbarPopupParent.setAccessible(true); + + View currentView = (View) fieldToolbarPopupParent.get(popup); + if (currentView != windowView) { + fieldToolbarPopupParent.set(popup, windowView); + + Method method = classActionMode.getDeclaredMethod("updateViewLocationInWindow"); + method.setAccessible(true); + method.invoke(mode); + } + } catch (Throwable e) { + FileLog.e("tmessages", e); + } + } + private void onWindowSizeChanged() { int size = sizeNotifierLayout.getHeight(); if (!keyboardVisible) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/PickerBottomLayout.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/PickerBottomLayout.java index de73728f3..8aaf358f1 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/PickerBottomLayout.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/PickerBottomLayout.java @@ -19,6 +19,7 @@ import android.widget.TextView; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.LocaleController; import org.telegram.messenger.R; +import org.telegram.ui.ActionBar.Theme; public class PickerBottomLayout extends FrameLayout { @@ -43,7 +44,7 @@ public class PickerBottomLayout extends FrameLayout { cancelButton.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); cancelButton.setTextColor(isDarkTheme ? 0xffffffff : 0xff19a7e8); cancelButton.setGravity(Gravity.CENTER); - cancelButton.setBackgroundResource(isDarkTheme ? R.drawable.bar_selector_picker : R.drawable.bar_selector_audio); + cancelButton.setBackgroundDrawable(Theme.createBarSelectorDrawable(isDarkTheme ? Theme.ACTION_BAR_PICKER_SELECTOR_COLOR : Theme.ACTION_BAR_AUDIO_SELECTOR_COLOR, false)); cancelButton.setPadding(AndroidUtilities.dp(29), 0, AndroidUtilities.dp(29), 0); cancelButton.setText(LocaleController.getString("Cancel", R.string.Cancel).toUpperCase()); cancelButton.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); @@ -51,7 +52,7 @@ public class PickerBottomLayout extends FrameLayout { doneButton = new LinearLayout(context); doneButton.setOrientation(LinearLayout.HORIZONTAL); - doneButton.setBackgroundResource(isDarkTheme ? R.drawable.bar_selector_picker : R.drawable.bar_selector_audio); + doneButton.setBackgroundDrawable(Theme.createBarSelectorDrawable(isDarkTheme ? Theme.ACTION_BAR_PICKER_SELECTOR_COLOR : Theme.ACTION_BAR_AUDIO_SELECTOR_COLOR, false)); doneButton.setPadding(AndroidUtilities.dp(29), 0, AndroidUtilities.dp(29), 0); addView(doneButton, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.RIGHT)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/PlayerView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/PlayerView.java index d85fae84a..18cbeaf85 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/PlayerView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/PlayerView.java @@ -32,6 +32,7 @@ import org.telegram.messenger.MessageObject; import org.telegram.messenger.NotificationCenter; import org.telegram.messenger.R; import org.telegram.ui.ActionBar.BaseFragment; +import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.AudioPlayerActivity; public class PlayerView extends FrameLayout implements NotificationCenter.NotificationCenterDelegate { @@ -54,7 +55,7 @@ public class PlayerView extends FrameLayout implements NotificationCenter.Notifi setTag(1); FrameLayout frameLayout = new FrameLayout(context); - frameLayout.setBackgroundColor(0xffffffff); + frameLayout.setBackgroundColor(Theme.INAPP_PLAYER_BACKGROUND_COLOR); addView(frameLayout, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 36, Gravity.TOP | Gravity.LEFT, 0, 0, 0, 0)); View shadow = new View(context); @@ -76,7 +77,7 @@ public class PlayerView extends FrameLayout implements NotificationCenter.Notifi }); titleTextView = new TextView(context); - titleTextView.setTextColor(0xff212121); + titleTextView.setTextColor(Theme.INAPP_PLAYER_TITLE_TEXT_COLOR); titleTextView.setMaxLines(1); titleTextView.setLines(1); titleTextView.setSingleLine(true); @@ -163,9 +164,11 @@ public class PlayerView extends FrameLayout implements NotificationCenter.Notifi lastMessageObject = null; if (visible) { visible = false; - if (create && topPadding != 0) { + if (create) { clearAnimation(); - setVisibility(GONE); + if (getVisibility() != GONE) { + setVisibility(GONE); + } setTopPadding(0); } else { if (animatorSet != null) { @@ -233,7 +236,7 @@ public class PlayerView extends FrameLayout implements NotificationCenter.Notifi stringBuilder = new SpannableStringBuilder(String.format("%s - %s", messageObject.getMusicAuthor(), messageObject.getMusicTitle())); titleTextView.setEllipsize(TextUtils.TruncateAt.END); } - TypefaceSpan span = new TypefaceSpan(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + TypefaceSpan span = new TypefaceSpan(AndroidUtilities.getTypeface("fonts/rmedium.ttf"), 0, Theme.INAPP_PLAYER_PERFORMER_TEXT_COLOR); stringBuilder.setSpan(span, 0, messageObject.getMusicAuthor().length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); titleTextView.setText(stringBuilder); } 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 c68e8709b..a6a40c039 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/PopupAudioView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/PopupAudioView.java @@ -25,6 +25,7 @@ import org.telegram.messenger.FileLoader; import org.telegram.messenger.R; import org.telegram.messenger.MessageObject; import org.telegram.tgnet.TLRPC; +import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Cells.BaseCell; import java.io.File; @@ -60,23 +61,23 @@ public class PopupAudioView extends BaseCell implements SeekBar.SeekBarDelegate, super(context); if (backgroundMediaDrawableIn == null) { backgroundMediaDrawableIn = getResources().getDrawable(R.drawable.msg_in_photo); - statesDrawable[0][0] = getResources().getDrawable(R.drawable.play_w2); - statesDrawable[0][1] = getResources().getDrawable(R.drawable.play_w2_pressed); - statesDrawable[1][0] = getResources().getDrawable(R.drawable.pause_w2); - statesDrawable[1][1] = getResources().getDrawable(R.drawable.pause_w2_pressed); - statesDrawable[2][0] = getResources().getDrawable(R.drawable.download_g); - statesDrawable[2][1] = getResources().getDrawable(R.drawable.download_g_pressed); - statesDrawable[3][0] = getResources().getDrawable(R.drawable.pause_g); - statesDrawable[3][1] = getResources().getDrawable(R.drawable.pause_g_pressed); + statesDrawable[0][0] = getResources().getDrawable(R.drawable.play_g); + statesDrawable[0][1] = getResources().getDrawable(R.drawable.play_g_s); + statesDrawable[1][0] = getResources().getDrawable(R.drawable.pause_g); + statesDrawable[1][1] = getResources().getDrawable(R.drawable.pause_g_s); + statesDrawable[2][0] = getResources().getDrawable(R.drawable.file_g_load); + statesDrawable[2][1] = getResources().getDrawable(R.drawable.file_g_load_s); + statesDrawable[3][0] = getResources().getDrawable(R.drawable.file_g_cancel); + statesDrawable[3][1] = getResources().getDrawable(R.drawable.file_g_cancel_s); - statesDrawable[4][0] = getResources().getDrawable(R.drawable.play_w); - statesDrawable[4][1] = getResources().getDrawable(R.drawable.play_w_pressed); - statesDrawable[5][0] = getResources().getDrawable(R.drawable.pause_w); - statesDrawable[5][1] = getResources().getDrawable(R.drawable.pause_w_pressed); - statesDrawable[6][0] = getResources().getDrawable(R.drawable.download_b); - statesDrawable[6][1] = getResources().getDrawable(R.drawable.download_b_pressed); - statesDrawable[7][0] = getResources().getDrawable(R.drawable.pause_b); - statesDrawable[7][1] = getResources().getDrawable(R.drawable.pause_b_pressed); + statesDrawable[4][0] = getResources().getDrawable(R.drawable.play_b); + statesDrawable[4][1] = getResources().getDrawable(R.drawable.play_b_s); + statesDrawable[5][0] = getResources().getDrawable(R.drawable.pause_b); + statesDrawable[5][1] = getResources().getDrawable(R.drawable.pause_b_s); + statesDrawable[6][0] = getResources().getDrawable(R.drawable.file_b_load); + statesDrawable[6][1] = getResources().getDrawable(R.drawable.file_b_load_s); + statesDrawable[7][0] = getResources().getDrawable(R.drawable.file_b_cancel); + statesDrawable[7][1] = getResources().getDrawable(R.drawable.file_b_cancel_s); timePaint = new TextPaint(TextPaint.ANTI_ALIAS_FLAG); timePaint.setTextSize(AndroidUtilities.dp(16)); @@ -91,7 +92,7 @@ public class PopupAudioView extends BaseCell implements SeekBar.SeekBarDelegate, public void setMessageObject(MessageObject messageObject) { if (currentMessageObject != messageObject) { - seekBar.type = 1; + seekBar.setColors(Theme.MSG_IN_AUDIO_SEEKBAR_COLOR, Theme.MSG_IN_AUDIO_SEEKBAR_FILL_COLOR, Theme.MSG_IN_AUDIO_SEEKBAR_SELECTED_COLOR); progressView.setProgressColors(0xffd9e2eb, 0xff86c5f8); currentMessageObject = messageObject; @@ -123,8 +124,7 @@ public class PopupAudioView extends BaseCell implements SeekBar.SeekBarDelegate, buttonX = AndroidUtilities.dp(10); timeX = getMeasuredWidth() - timeWidth - AndroidUtilities.dp(16); - seekBar.width = getMeasuredWidth() - AndroidUtilities.dp(70) - timeWidth; - seekBar.height = AndroidUtilities.dp(30); + seekBar.setSize(getMeasuredWidth() - AndroidUtilities.dp(70) - timeWidth, AndroidUtilities.dp(30)); progressView.width = getMeasuredWidth() - AndroidUtilities.dp(94) - timeWidth; progressView.height = AndroidUtilities.dp(30); seekBarY = AndroidUtilities.dp(13); @@ -248,11 +248,11 @@ public class PopupAudioView extends BaseCell implements SeekBar.SeekBarDelegate, invalidate(); } } else if (buttonState == 2) { - FileLoader.getInstance().loadFile(currentMessageObject.messageOwner.media.document, true, false); + FileLoader.getInstance().loadFile(currentMessageObject.getDocument(), true, false); buttonState = 3; invalidate(); } else if (buttonState == 3) { - FileLoader.getInstance().cancelLoadFile(currentMessageObject.messageOwner.media.document); + FileLoader.getInstance().cancelLoadFile(currentMessageObject.getDocument()); buttonState = 2; invalidate(); } @@ -269,8 +269,8 @@ public class PopupAudioView extends BaseCell implements SeekBar.SeekBarDelegate, int duration = 0; if (!MediaController.getInstance().isPlayingAudio(currentMessageObject)) { - for (int a = 0; a < currentMessageObject.messageOwner.media.document.attributes.size(); a++) { - TLRPC.DocumentAttribute attribute = currentMessageObject.messageOwner.media.document.attributes.get(a); + for (int a = 0; a < currentMessageObject.getDocument().attributes.size(); a++) { + TLRPC.DocumentAttribute attribute = currentMessageObject.getDocument().attributes.get(a); if (attribute instanceof TLRPC.TL_documentAttributeAudio) { duration = attribute.duration; break; @@ -289,7 +289,7 @@ public class PopupAudioView extends BaseCell implements SeekBar.SeekBarDelegate, public void downloadAudioIfNeed() { if (buttonState == 2) { - FileLoader.getInstance().loadFile(currentMessageObject.messageOwner.media.document, true, false); + FileLoader.getInstance().loadFile(currentMessageObject.getDocument(), true, false); buttonState = 3; invalidate(); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/RadialProgress.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/RadialProgress.java index 4f68cd136..a21a27f36 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/RadialProgress.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/RadialProgress.java @@ -27,7 +27,7 @@ public class RadialProgress { private float animatedProgressValue = 0; private RectF progressRect = new RectF(); private RectF cicleRect = new RectF(); - private View parent = null; + private View parent; private float animatedAlphaValue = 1.0f; private boolean currentWithRound; @@ -37,8 +37,9 @@ public class RadialProgress { private boolean hideCurrentDrawable; private int progressColor = 0xffffffff; - private static DecelerateInterpolator decelerateInterpolator = null; - private static Paint progressPaint = null; + private static DecelerateInterpolator decelerateInterpolator; + private static Paint progressPaint; + private boolean alphaForPrevious = true; public RadialProgress(View parentView) { if (decelerateInterpolator == null) { @@ -46,7 +47,7 @@ public class RadialProgress { progressPaint = new Paint(Paint.ANTI_ALIAS_FLAG); progressPaint.setStyle(Paint.Style.STROKE); progressPaint.setStrokeCap(Paint.Cap.ROUND); - progressPaint.setStrokeWidth(AndroidUtilities.dp(2)); + progressPaint.setStrokeWidth(AndroidUtilities.dp(3)); } parent = parentView; } @@ -55,6 +56,10 @@ public class RadialProgress { progressRect.set(left, top, right, bottom); } + public void setAlphaForPrevious(boolean value) { + alphaForPrevious = value; + } + private void updateAnimation(boolean progress) { long newTime = System.currentTimeMillis(); long dt = newTime - lastUpdateTime; @@ -105,10 +110,17 @@ public class RadialProgress { } public void setProgress(float value, boolean animated) { + if (value != 1 && animatedAlphaValue != 0 && previousDrawable != null) { + animatedAlphaValue = 0.0f; + previousDrawable = null; + } if (!animated) { animatedProgressValue = value; animationProgressStart = value; } else { + if (animatedProgressValue > value) { + animatedProgressValue = value; + } animationProgressStart = animatedProgressValue; } currentProgress = value; @@ -125,10 +137,10 @@ public class RadialProgress { public void setBackground(Drawable drawable, boolean withRound, boolean animated) { lastUpdateTime = System.currentTimeMillis(); if (animated && currentDrawable != drawable) { - setProgress(1, animated); previousDrawable = currentDrawable; previousWithRound = currentWithRound; animatedAlphaValue = 1.0f; + setProgress(1, animated); } else { previousDrawable = null; previousWithRound = false; @@ -156,7 +168,11 @@ public class RadialProgress { public void draw(Canvas canvas) { if (previousDrawable != null) { - previousDrawable.setAlpha((int)(255 * animatedAlphaValue)); + if (alphaForPrevious) { + previousDrawable.setAlpha((int) (255 * animatedAlphaValue)); + } else { + previousDrawable.setAlpha(255); + } previousDrawable.setBounds((int)progressRect.left, (int)progressRect.top, (int)progressRect.right, (int)progressRect.bottom); previousDrawable.draw(canvas); } @@ -172,7 +188,7 @@ public class RadialProgress { } if (currentWithRound || previousWithRound) { - int diff = AndroidUtilities.dp(1); + int diff = AndroidUtilities.dp(4); progressPaint.setColor(progressColor); if (previousWithRound) { progressPaint.setAlpha((int)(255 * animatedAlphaValue)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/RadioButton.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/RadioButton.java index 1dd5e1a50..93bd1efff 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/RadioButton.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/RadioButton.java @@ -21,6 +21,7 @@ import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.AnimationCompat.ObjectAnimatorProxy; import org.telegram.messenger.FileLog; import org.telegram.messenger.ImageLoader; +import org.telegram.ui.ActionBar.Theme; public class RadioButton extends View { @@ -30,8 +31,8 @@ public class RadioButton extends View { private static Paint eraser; private static Paint checkedPaint; - private int checkedColor = 0xffd7e8f7; - private int color = 0xffd7e8f7; + private int checkedColor = Theme.ACTION_BAR_SUBTITLE_COLOR; + private int color = Theme.ACTION_BAR_SUBTITLE_COLOR; private float progress; private ObjectAnimatorProxy checkAnimator; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/RecordStatusDrawable.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/RecordStatusDrawable.java index 8f93244c5..6bcf6de14 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/RecordStatusDrawable.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/RecordStatusDrawable.java @@ -15,6 +15,7 @@ import android.graphics.RectF; import android.graphics.drawable.Drawable; import org.telegram.messenger.AndroidUtilities; +import org.telegram.ui.ActionBar.Theme; public class RecordStatusDrawable extends Drawable { @@ -27,7 +28,7 @@ public class RecordStatusDrawable extends Drawable { public RecordStatusDrawable() { super(); - paint.setColor(0xffd7e8f7); + paint.setColor(Theme.ACTION_BAR_SUBTITLE_COLOR); paint.setStyle(Paint.Style.STROKE); paint.setStrokeWidth(AndroidUtilities.dp(2)); paint.setStrokeCap(Paint.Cap.ROUND); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ResourceLoader.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ResourceLoader.java deleted file mode 100644 index 5d705c37d..000000000 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ResourceLoader.java +++ /dev/null @@ -1,166 +0,0 @@ -/* - * This is the source code of Telegram for Android v. 3.x.x - * It is licensed under GNU GPL v. 2 or later. - * You should have received a copy of the license in this archive (see LICENSE). - * - * Copyright Nikolai Kudashov, 2013-2016. - */ - -package org.telegram.ui.Components; - -import android.content.Context; -import android.graphics.drawable.Drawable; - -import org.telegram.messenger.R; - -public class ResourceLoader { - - public static Drawable backgroundDrawableIn; - public static Drawable backgroundDrawableInSelected; - public static Drawable backgroundDrawableOut; - public static Drawable backgroundDrawableOutSelected; - public static Drawable backgroundMediaDrawableIn; - public static Drawable backgroundMediaDrawableInSelected; - public static Drawable backgroundMediaDrawableOut; - public static Drawable backgroundMediaDrawableOutSelected; - public static Drawable checkDrawable; - public static Drawable halfCheckDrawable; - public static Drawable clockDrawable; - public static Drawable broadcastDrawable; - public static Drawable checkMediaDrawable; - public static Drawable halfCheckMediaDrawable; - public static Drawable clockMediaDrawable; - public static Drawable broadcastMediaDrawable; - public static Drawable errorDrawable; - public static Drawable backgroundBlack; - public static Drawable backgroundBlue; - public static Drawable mediaBackgroundDrawable; - public static Drawable[] clockChannelDrawable = new Drawable[2]; - - public static Drawable[][] shareDrawable = new Drawable[2][2]; - - public static Drawable[] viewsCountDrawable = new Drawable[2]; - public static Drawable viewsOutCountDrawable; - public static Drawable viewsMediaCountDrawable; - - public static Drawable geoInDrawable; - public static Drawable geoOutDrawable; - - public static Drawable[][] audioStatesDrawable = new Drawable[10][3]; - - public static Drawable[] placeholderDocDrawable = new Drawable[3]; - public static Drawable videoIconDrawable; - public static Drawable[] docMenuDrawable = new Drawable[3]; - public static Drawable[] buttonStatesDrawables = new Drawable[8]; - public static Drawable[][] buttonStatesDrawablesDoc = new Drawable[3][3]; - - public static void loadRecources(Context context) { - if (backgroundDrawableIn == null) { - backgroundDrawableIn = context.getResources().getDrawable(R.drawable.msg_in); - backgroundDrawableInSelected = context.getResources().getDrawable(R.drawable.msg_in_selected); - backgroundDrawableOut = context.getResources().getDrawable(R.drawable.msg_out); - backgroundDrawableOutSelected = context.getResources().getDrawable(R.drawable.msg_out_selected); - backgroundMediaDrawableIn = context.getResources().getDrawable(R.drawable.msg_in_photo); - backgroundMediaDrawableInSelected = context.getResources().getDrawable(R.drawable.msg_in_photo_selected); - backgroundMediaDrawableOut = context.getResources().getDrawable(R.drawable.msg_out_photo); - backgroundMediaDrawableOutSelected = context.getResources().getDrawable(R.drawable.msg_out_photo_selected); - checkDrawable = context.getResources().getDrawable(R.drawable.msg_check); - halfCheckDrawable = context.getResources().getDrawable(R.drawable.msg_halfcheck); - clockDrawable = context.getResources().getDrawable(R.drawable.msg_clock); - checkMediaDrawable = context.getResources().getDrawable(R.drawable.msg_check_w); - halfCheckMediaDrawable = context.getResources().getDrawable(R.drawable.msg_halfcheck_w); - clockMediaDrawable = context.getResources().getDrawable(R.drawable.msg_clock_photo); - clockChannelDrawable[0] = context.getResources().getDrawable(R.drawable.msg_clock2); - clockChannelDrawable[1] = context.getResources().getDrawable(R.drawable.msg_clock2_s); - errorDrawable = context.getResources().getDrawable(R.drawable.msg_warning); - mediaBackgroundDrawable = context.getResources().getDrawable(R.drawable.phototime); - broadcastDrawable = context.getResources().getDrawable(R.drawable.broadcast3); - broadcastMediaDrawable = context.getResources().getDrawable(R.drawable.broadcast4); - backgroundBlack = context.getResources().getDrawable(R.drawable.system_black); - backgroundBlue = context.getResources().getDrawable(R.drawable.system_blue); - - viewsCountDrawable[0] = context.getResources().getDrawable(R.drawable.post_views); - viewsCountDrawable[1] = context.getResources().getDrawable(R.drawable.post_views_s); - viewsOutCountDrawable = context.getResources().getDrawable(R.drawable.post_viewsg); - viewsMediaCountDrawable = context.getResources().getDrawable(R.drawable.post_views_w); - - audioStatesDrawable[0][2] = audioStatesDrawable[0][0] = context.getResources().getDrawable(R.drawable.play_w2); - audioStatesDrawable[0][1] = context.getResources().getDrawable(R.drawable.play_w2_pressed); - - audioStatesDrawable[1][2] = audioStatesDrawable[1][0] = context.getResources().getDrawable(R.drawable.pause_w2); - audioStatesDrawable[1][1] = context.getResources().getDrawable(R.drawable.pause_w2_pressed); - - audioStatesDrawable[2][0] = context.getResources().getDrawable(R.drawable.download_g); - audioStatesDrawable[2][1] = context.getResources().getDrawable(R.drawable.download_g_pressed); - audioStatesDrawable[2][2] = context.getResources().getDrawable(R.drawable.download_g_s); - - audioStatesDrawable[3][0] = context.getResources().getDrawable(R.drawable.pause_g); - audioStatesDrawable[3][1] = context.getResources().getDrawable(R.drawable.pause_g_pressed); - audioStatesDrawable[3][2] = context.getResources().getDrawable(R.drawable.pause_g_s); - - audioStatesDrawable[4][0] = context.getResources().getDrawable(R.drawable.cancel_g); - audioStatesDrawable[4][1] = context.getResources().getDrawable(R.drawable.cancel_g_pressed); - audioStatesDrawable[4][2] = context.getResources().getDrawable(R.drawable.cancel_g_s); - - audioStatesDrawable[5][2] = audioStatesDrawable[5][0] = context.getResources().getDrawable(R.drawable.play_w); - audioStatesDrawable[5][1] = context.getResources().getDrawable(R.drawable.play_w_pressed); - - audioStatesDrawable[6][2] = audioStatesDrawable[6][0] = context.getResources().getDrawable(R.drawable.pause_w); - audioStatesDrawable[6][1] = context.getResources().getDrawable(R.drawable.pause_w_pressed); - - audioStatesDrawable[7][0] = context.getResources().getDrawable(R.drawable.download_b); - audioStatesDrawable[7][1] = context.getResources().getDrawable(R.drawable.download_b_pressed); - audioStatesDrawable[7][2] = context.getResources().getDrawable(R.drawable.download_b_s); - - audioStatesDrawable[8][0] = context.getResources().getDrawable(R.drawable.pause_b); - audioStatesDrawable[8][1] = context.getResources().getDrawable(R.drawable.pause_b_pressed); - audioStatesDrawable[8][2] = context.getResources().getDrawable(R.drawable.pause_b_s); - - audioStatesDrawable[9][0] = context.getResources().getDrawable(R.drawable.cancel_b); - audioStatesDrawable[9][1] = context.getResources().getDrawable(R.drawable.cancel_b_pressed); - audioStatesDrawable[9][2] = context.getResources().getDrawable(R.drawable.cancel_b_s); - - placeholderDocDrawable[0] = context.getResources().getDrawable(R.drawable.doc_blue); - placeholderDocDrawable[1] = context.getResources().getDrawable(R.drawable.doc_green); - placeholderDocDrawable[2] = context.getResources().getDrawable(R.drawable.doc_blue_s); - buttonStatesDrawables[0] = context.getResources().getDrawable(R.drawable.photoload); - buttonStatesDrawables[1] = context.getResources().getDrawable(R.drawable.photocancel); - buttonStatesDrawables[2] = context.getResources().getDrawable(R.drawable.photogif); - buttonStatesDrawables[3] = context.getResources().getDrawable(R.drawable.playvideo); - buttonStatesDrawables[4] = context.getResources().getDrawable(R.drawable.photopause); - buttonStatesDrawables[5] = context.getResources().getDrawable(R.drawable.burn); - buttonStatesDrawables[6] = context.getResources().getDrawable(R.drawable.circle); - buttonStatesDrawables[7] = context.getResources().getDrawable(R.drawable.photocheck); - buttonStatesDrawablesDoc[0][0] = context.getResources().getDrawable(R.drawable.docload_b); - buttonStatesDrawablesDoc[0][1] = context.getResources().getDrawable(R.drawable.docload_g); - buttonStatesDrawablesDoc[0][2] = context.getResources().getDrawable(R.drawable.docload_b_s); - buttonStatesDrawablesDoc[1][0] = context.getResources().getDrawable(R.drawable.doccancel_b); - buttonStatesDrawablesDoc[1][1] = context.getResources().getDrawable(R.drawable.doccancel_g); - buttonStatesDrawablesDoc[1][2] = context.getResources().getDrawable(R.drawable.doccancel_b_s); - buttonStatesDrawablesDoc[2][0] = context.getResources().getDrawable(R.drawable.docpause_b); - buttonStatesDrawablesDoc[2][1] = context.getResources().getDrawable(R.drawable.docpause_g); - buttonStatesDrawablesDoc[2][2] = context.getResources().getDrawable(R.drawable.docpause_b_s); - videoIconDrawable = context.getResources().getDrawable(R.drawable.ic_video); - docMenuDrawable[0] = context.getResources().getDrawable(R.drawable.doc_actions_b); - docMenuDrawable[1] = context.getResources().getDrawable(R.drawable.doc_actions_g); - docMenuDrawable[2] = context.getResources().getDrawable(R.drawable.doc_actions_b_s); - - shareDrawable[0][0] = context.getResources().getDrawable(R.drawable.shareblue); - shareDrawable[0][1] = context.getResources().getDrawable(R.drawable.shareblue_pressed); - shareDrawable[1][0] = context.getResources().getDrawable(R.drawable.shareblack); - shareDrawable[1][1] = context.getResources().getDrawable(R.drawable.shareblack_pressed); - - geoInDrawable = context.getResources().getDrawable(R.drawable.location_b); - geoOutDrawable = context.getResources().getDrawable(R.drawable.location_g); - - context.getResources().getDrawable(R.drawable.attach_camera_states); - context.getResources().getDrawable(R.drawable.attach_gallery_states); - context.getResources().getDrawable(R.drawable.attach_video_states); - context.getResources().getDrawable(R.drawable.attach_audio_states); - context.getResources().getDrawable(R.drawable.attach_file_states); - context.getResources().getDrawable(R.drawable.attach_contact_states); - context.getResources().getDrawable(R.drawable.attach_location_states); - context.getResources().getDrawable(R.drawable.attach_hide_states); - } - } -} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/SeekBar.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/SeekBar.java index fddeafa74..87a77c457 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/SeekBar.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/SeekBar.java @@ -21,36 +21,25 @@ public class SeekBar { void onSeekBarDrag(float progress); } - private static Paint innerPaint1; - private static Paint outerPaint1; - private static Paint innerPaint2; - private static Paint outerPaint2; + private static Paint innerPaint; + private static Paint outerPaint; private static int thumbWidth; - private static int thumbHeight; - public int type; - public int thumbX = 0; - public int thumbDX = 0; + private int thumbX = 0; + private int thumbDX = 0; private boolean pressed = false; - public int width; - public int height; + private int width; + private int height; private SeekBarDelegate delegate; + private int innerColor; + private int outerColor; + private int selectedColor; + private boolean selected; public SeekBar(Context context) { - if (innerPaint1 == null) { - innerPaint1 = new Paint(Paint.ANTI_ALIAS_FLAG); - innerPaint1.setColor(0xffc3e3ab); - - outerPaint1 = new Paint(Paint.ANTI_ALIAS_FLAG); - outerPaint1.setColor(0xff87bf78); - - innerPaint2 = new Paint(Paint.ANTI_ALIAS_FLAG); - innerPaint2.setColor(0xffe4eaf0); - - outerPaint2 = new Paint(Paint.ANTI_ALIAS_FLAG); - outerPaint2.setColor(0xff4195e5); - + if (innerPaint == null) { + innerPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + outerPaint = new Paint(Paint.ANTI_ALIAS_FLAG); thumbWidth = AndroidUtilities.dp(24); - thumbHeight = AndroidUtilities.dp(24); } } @@ -88,6 +77,12 @@ public class SeekBar { return false; } + public void setColors(int inner, int outer, int selected) { + innerColor = inner; + outerColor = outer; + selectedColor = selected; + } + public void setProgress(float progress) { thumbX = (int)Math.ceil((width - thumbWidth) * progress); if (thumbX < 0) { @@ -101,19 +96,21 @@ public class SeekBar { return pressed; } + public void setSelected(boolean value) { + selected = value; + } + + public void setSize(int w, int h) { + width = w; + height = h; + } + public void draw(Canvas canvas) { - Paint inner = null; - Paint outer = null; - if (type == 0) { - inner = innerPaint1; - outer = outerPaint1; - } else if (type == 1) { - inner = innerPaint2; - outer = outerPaint2; - } - int y = (height - thumbHeight) / 2; - canvas.drawRect(thumbWidth / 2, height / 2 - AndroidUtilities.dp(1), width - thumbWidth / 2, height / 2 + AndroidUtilities.dp(1), inner); - canvas.drawRect(thumbWidth / 2, height / 2 - AndroidUtilities.dp(1), thumbWidth / 2 + thumbX, height / 2 + AndroidUtilities.dp(1), outer); - canvas.drawCircle(thumbX + thumbWidth / 2, y + thumbHeight / 2, AndroidUtilities.dp(pressed ? 8 : 6), outer); + innerPaint.setColor(selected ? selectedColor : innerColor); + outerPaint.setColor(outerColor); + + canvas.drawRect(thumbWidth / 2, height / 2 - AndroidUtilities.dp(1), width - thumbWidth / 2, height / 2 + AndroidUtilities.dp(1), innerPaint); + canvas.drawRect(thumbWidth / 2, height / 2 - AndroidUtilities.dp(1), thumbWidth / 2 + thumbX, height / 2 + AndroidUtilities.dp(1), outerPaint); + canvas.drawCircle(thumbX + thumbWidth / 2, height / 2, AndroidUtilities.dp(pressed ? 8 : 6), outerPaint); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/SeekBarWaveform.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/SeekBarWaveform.java index 385893d12..776fbe48c 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/SeekBarWaveform.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/SeekBarWaveform.java @@ -21,13 +21,13 @@ public class SeekBarWaveform { private static Paint paintInner; private static Paint paintOuter; - public int thumbX = 0; - public int thumbDX = 0; + private int thumbX = 0; + private int thumbDX = 0; private float startX; private boolean startDraging = false; private boolean pressed = false; - public int width; - public int height; + private int width; + private int height; private SeekBar.SeekBarDelegate delegate; private byte[] waveformBytes; private MessageObject messageObject; @@ -128,6 +128,11 @@ public class SeekBarWaveform { return pressed; } + public void setSize(int w, int h) { + width = w; + height = h; + } + public void draw(Canvas canvas) { if (waveformBytes == null || width == 0) { return; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/SendingFileDrawable.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/SendingFileDrawable.java index 3e68de538..60c13ea66 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/SendingFileDrawable.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/SendingFileDrawable.java @@ -16,6 +16,7 @@ import android.graphics.drawable.Drawable; import android.view.animation.DecelerateInterpolator; import org.telegram.messenger.AndroidUtilities; +import org.telegram.ui.ActionBar.Theme; public class SendingFileDrawable extends Drawable { @@ -33,7 +34,7 @@ public class SendingFileDrawable extends Drawable { public SendingFileDrawable() { super(); - paint.setColor(0xffd7e8f7); + paint.setColor(Theme.ACTION_BAR_SUBTITLE_COLOR); paint.setStyle(Paint.Style.STROKE); paint.setStrokeWidth(AndroidUtilities.dp(2)); paint.setStrokeCap(Paint.Cap.ROUND); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/SendingFileEx2Drawable.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/SendingFileEx2Drawable.java index 25f0ae6b0..5770e9d04 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/SendingFileEx2Drawable.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/SendingFileEx2Drawable.java @@ -14,6 +14,7 @@ import android.graphics.Paint; import android.graphics.drawable.Drawable; import org.telegram.messenger.AndroidUtilities; +import org.telegram.ui.ActionBar.Theme; public class SendingFileEx2Drawable extends Drawable { @@ -25,7 +26,7 @@ public class SendingFileEx2Drawable extends Drawable { public SendingFileEx2Drawable() { super(); - paint.setColor(0xffd7e8f7); + paint.setColor(Theme.ACTION_BAR_SUBTITLE_COLOR); paint.setStyle(Paint.Style.STROKE); paint.setStrokeWidth(AndroidUtilities.dp(3)); paint.setStrokeCap(Paint.Cap.ROUND); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/SendingFileExDrawable.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/SendingFileExDrawable.java index 48d5d917e..9953d0bfc 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/SendingFileExDrawable.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/SendingFileExDrawable.java @@ -14,6 +14,7 @@ import android.graphics.Paint; import android.graphics.drawable.Drawable; import org.telegram.messenger.AndroidUtilities; +import org.telegram.ui.ActionBar.Theme; public class SendingFileExDrawable extends Drawable { @@ -25,7 +26,7 @@ public class SendingFileExDrawable extends Drawable { public SendingFileExDrawable() { super(); - paint.setColor(0xffd7e8f7); + paint.setColor(Theme.ACTION_BAR_SUBTITLE_COLOR); paint.setStyle(Paint.Style.STROKE); paint.setStrokeWidth(AndroidUtilities.dp(2)); paint.setStrokeCap(Paint.Cap.ROUND); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/ShareFrameLayout.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/ShareAlert.java similarity index 73% rename from TMessagesProj/src/main/java/org/telegram/ui/Components/ShareFrameLayout.java rename to TMessagesProj/src/main/java/org/telegram/ui/Components/ShareAlert.java index cad5ced81..440205d3a 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/ShareFrameLayout.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/ShareAlert.java @@ -8,7 +8,10 @@ package org.telegram.ui.Components; +import android.annotation.SuppressLint; import android.content.Context; +import android.graphics.*; +import android.graphics.drawable.Drawable; import android.os.Build; import android.text.Editable; import android.text.InputType; @@ -20,10 +23,8 @@ import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.EditorInfo; -import android.widget.AdapterView; import android.widget.EditText; import android.widget.FrameLayout; -import android.widget.GridView; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; @@ -40,13 +41,15 @@ import org.telegram.messenger.MessagesController; import org.telegram.messenger.MessagesStorage; import org.telegram.messenger.R; import org.telegram.messenger.SendMessagesHelper; +import org.telegram.messenger.support.widget.GridLayoutManager; +import org.telegram.messenger.support.widget.RecyclerView; import org.telegram.tgnet.ConnectionsManager; import org.telegram.tgnet.NativeByteBuffer; import org.telegram.tgnet.RequestDelegate; import org.telegram.tgnet.TLObject; import org.telegram.tgnet.TLRPC; import org.telegram.ui.ActionBar.BottomSheet; -import org.telegram.ui.Adapters.BaseFragmentAdapter; +import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Cells.ShareDialogCell; import java.util.ArrayList; @@ -57,18 +60,22 @@ import java.util.Locale; import java.util.Timer; import java.util.TimerTask; -public class ShareFrameLayout extends FrameLayout { +public class ShareAlert extends BottomSheet { - private BottomSheet parentBottomSheet; + private FrameLayout frameLayout; + private FrameLayout container; private TextView doneButtonBadgeTextView; private TextView doneButtonTextView; private LinearLayout doneButton; private EditText nameTextView; - private GridView gridView; + private View shadow; + private RecyclerListView gridView; + private GridLayoutManager layoutManager; private ShareDialogsAdapter listAdapter; private ShareSearchAdapter searchAdapter; private MessageObject sendingMessageObject; private EmptyTextProgressView searchEmptyView; + private Drawable shadowDrawable; private HashMap selectedDialogs = new HashMap<>(); private TLRPC.TL_exportedMessageLink exportedMessageLink; @@ -77,10 +84,19 @@ public class ShareFrameLayout extends FrameLayout { private boolean isPublicChannel; - public ShareFrameLayout(final Context context, BottomSheet bottomSheet, final MessageObject messageObject, boolean publicChannel) { - super(context); + private int scrollOffsetY; + private int topBeforeSwitch; + + public ShareAlert(final Context context, final MessageObject messageObject, boolean publicChannel) { + super(context, true); + setApplyTopPadding(false); + setApplyBottomPadding(false); + if (Build.VERSION.SDK_INT >= 11) { + setDisableBackground(true); + } + + shadowDrawable = context.getResources().getDrawable(R.drawable.sheet_shadow); - parentBottomSheet = bottomSheet; sendingMessageObject = messageObject; searchAdapter = new ShareSearchAdapter(context); isPublicChannel = publicChannel; @@ -110,26 +126,91 @@ public class ShareFrameLayout extends FrameLayout { }); } - FrameLayout frameLayout = new FrameLayout(context); + container = new FrameLayout(context) { + + private boolean ignoreLayout = false; + + @Override + public boolean onInterceptTouchEvent(MotionEvent ev) { + return scrollOffsetY != 0 && ev.getY() < scrollOffsetY || super.onInterceptTouchEvent(ev); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + int height = MeasureSpec.getSize(heightMeasureSpec); + if (Build.VERSION.SDK_INT >= 21) { + height -= AndroidUtilities.statusBarHeight; + } + int size = Math.max(searchAdapter.getItemCount(), listAdapter.getItemCount()); + int contentSize = AndroidUtilities.dp(48) + Math.max(3, (int) Math.ceil(size / 4.0f)) * AndroidUtilities.dp(100) + backgroundPaddingTop; + if (Build.VERSION.SDK_INT < 11) { + super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(Math.min(contentSize, AndroidUtilities.displaySize.y / 5 * 3), MeasureSpec.EXACTLY)); + } else { + int padding = contentSize < height ? 0 : height - (height / 5 * 3) + AndroidUtilities.dp(8); + if (gridView.getPaddingTop() != padding) { + ignoreLayout = true; + gridView.setPadding(0, padding, 0, AndroidUtilities.dp(8)); + ignoreLayout = false; + } + super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(Math.min(contentSize, height), MeasureSpec.EXACTLY)); + } + } + + @Override + protected void onLayout(boolean changed, int left, int top, int right, int bottom) { + super.onLayout(changed, left, top, right, bottom); + if (Build.VERSION.SDK_INT >= 11) { + updateLayout(); + } + } + + @Override + public void requestLayout() { + if (ignoreLayout) { + return; + } + super.requestLayout(); + } + + @Override + protected void onDraw(Canvas canvas) { + if (Build.VERSION.SDK_INT >= 11) { + shadowDrawable.setBounds(0, scrollOffsetY - backgroundPaddingTop, getMeasuredWidth(), getMeasuredHeight()); + shadowDrawable.draw(canvas); + } + } + }; + if (Build.VERSION.SDK_INT >= 11) { + container.setWillNotDraw(false); + } + container.setPadding(backgroundPaddingLeft, 0, backgroundPaddingLeft, 0); + setCustomView(container); + + frameLayout = new FrameLayout(context); frameLayout.setBackgroundColor(0xffffffff); - addView(frameLayout, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.LEFT | Gravity.TOP)); + frameLayout.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + return true; + } + }); doneButton = new LinearLayout(context); doneButton.setOrientation(LinearLayout.HORIZONTAL); - doneButton.setBackgroundResource(R.drawable.bar_selector_audio); + doneButton.setBackgroundDrawable(Theme.createBarSelectorDrawable(Theme.ACTION_BAR_AUDIO_SELECTOR_COLOR, false)); doneButton.setPadding(AndroidUtilities.dp(21), 0, AndroidUtilities.dp(21), 0); frameLayout.addView(doneButton, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.RIGHT)); - doneButton.setOnClickListener(new OnClickListener() { + doneButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (selectedDialogs.isEmpty() && isPublicChannel) { if (loadingLink) { copyLinkOnEnd = true; - Toast.makeText(ShareFrameLayout.this.getContext(), LocaleController.getString("Loading", R.string.Loading), Toast.LENGTH_SHORT).show(); + Toast.makeText(ShareAlert.this.getContext(), LocaleController.getString("Loading", R.string.Loading), Toast.LENGTH_SHORT).show(); } else { - copyLink(ShareFrameLayout.this.getContext()); + copyLink(ShareAlert.this.getContext()); } - parentBottomSheet.dismiss(); + dismiss(); } else { ArrayList arrayList = new ArrayList<>(); arrayList.add(sendingMessageObject); @@ -145,7 +226,7 @@ public class ShareFrameLayout extends FrameLayout { } SendMessagesHelper.getInstance().sendMessage(arrayList, entry.getKey(), asAdmin); } - parentBottomSheet.dismiss(); + dismiss(); } } }); @@ -153,7 +234,7 @@ public class ShareFrameLayout extends FrameLayout { doneButtonBadgeTextView = new TextView(context); doneButtonBadgeTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); doneButtonBadgeTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 13); - doneButtonBadgeTextView.setTextColor(0xffffffff); + doneButtonBadgeTextView.setTextColor(Theme.SHARE_SHEET_BADGE_TEXT_COLOR); doneButtonBadgeTextView.setGravity(Gravity.CENTER); doneButtonBadgeTextView.setBackgroundResource(R.drawable.bluecounter); doneButtonBadgeTextView.setMinWidth(AndroidUtilities.dp(23)); @@ -162,7 +243,6 @@ public class ShareFrameLayout extends FrameLayout { doneButtonTextView = new TextView(context); doneButtonTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); - doneButtonTextView.setTextColor(0xff19a7e8); doneButtonTextView.setGravity(Gravity.CENTER); doneButtonTextView.setCompoundDrawablePadding(AndroidUtilities.dp(8)); doneButtonTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); @@ -181,11 +261,11 @@ public class ShareFrameLayout extends FrameLayout { nameTextView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT); nameTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); nameTextView.setBackgroundDrawable(null); - nameTextView.setHintTextColor(0xff979797); + nameTextView.setHintTextColor(Theme.SHARE_SHEET_EDIT_PLACEHOLDER_TEXT_COLOR); nameTextView.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI); nameTextView.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES); AndroidUtilities.clearCursorDrawable(nameTextView); - nameTextView.setTextColor(0xff212121); + nameTextView.setTextColor(Theme.SHARE_SHEET_EDIT_TEXT_COLOR); frameLayout.addView(nameTextView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.LEFT, 48, 2, 96, 0)); nameTextView.addTextChangedListener(new TextWatcher() { @Override @@ -203,6 +283,7 @@ public class ShareFrameLayout extends FrameLayout { String text = nameTextView.getText().toString(); if (text.length() != 0) { if (gridView.getAdapter() != searchAdapter) { + topBeforeSwitch = getCurrentTop(); gridView.setAdapter(searchAdapter); searchAdapter.notifyDataSetChanged(); } @@ -211,9 +292,13 @@ public class ShareFrameLayout extends FrameLayout { } } else { if (gridView.getAdapter() != listAdapter) { + int top = getCurrentTop(); searchEmptyView.setText(LocaleController.getString("NoChats", R.string.NoChats)); gridView.setAdapter(listAdapter); listAdapter.notifyDataSetChanged(); + if (top > 0) { + layoutManager.scrollToPositionWithOffset(0, -top); + } } } if (searchAdapter != null) { @@ -222,39 +307,37 @@ public class ShareFrameLayout extends FrameLayout { } }); - View lineView = new View(context); - lineView.setBackgroundResource(R.drawable.header_shadow); - addView(lineView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 3, Gravity.TOP | Gravity.LEFT, 0, 48, 0, 0)); - - setOnTouchListener(new OnTouchListener() { - @Override - public boolean onTouch(View v, MotionEvent event) { - return true; - } - }); - - gridView = new GridView(context); - gridView.setDrawSelectorOnTop(true); - gridView.setPadding(0, AndroidUtilities.dp(8), 0, AndroidUtilities.dp(8)); + gridView = new RecyclerListView(context); + gridView.setPadding(0, 0, 0, AndroidUtilities.dp(8)); gridView.setClipToPadding(false); - gridView.setStretchMode(GridView.STRETCH_COLUMN_WIDTH); + gridView.setLayoutManager(layoutManager = new GridLayoutManager(getContext(), 4)); gridView.setHorizontalScrollBarEnabled(false); gridView.setVerticalScrollBarEnabled(false); - gridView.setNumColumns(4); - gridView.setVerticalSpacing(AndroidUtilities.dp(4)); - gridView.setHorizontalSpacing(AndroidUtilities.dp(4)); - gridView.setSelector(R.drawable.list_selector); - addView(gridView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.LEFT, 0, 48, 0, 0)); - gridView.setAdapter(listAdapter = new ShareDialogsAdapter(context)); - AndroidUtilities.setListViewEdgeEffectColor(gridView, 0xfff5f6f7); - gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + gridView.addItemDecoration(new RecyclerView.ItemDecoration() { @Override - public void onItemClick(AdapterView adapterView, View view, int i, long l) { + public void getItemOffsets(android.graphics.Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { + Holder holder = (Holder) parent.getChildViewHolder(view); + if (holder != null) { + int pos = holder.getAdapterPosition(); + outRect.left = pos % 4 == 0 ? 0 : AndroidUtilities.dp(4); + outRect.right = pos % 4 == 3 ? 0 : AndroidUtilities.dp(4); + } else { + outRect.left = AndroidUtilities.dp(4); + outRect.right = AndroidUtilities.dp(4); + } + } + }); + container.addView(gridView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.LEFT, 0, 48, 0, 0)); + gridView.setAdapter(listAdapter = new ShareDialogsAdapter(context)); + gridView.setGlowColor(0xfff5f6f7); + gridView.setOnItemClickListener(new RecyclerListView.OnItemClickListener() { + @Override + public void onItemClick(View view, int position) { TLRPC.Dialog dialog; if (gridView.getAdapter() == listAdapter) { - dialog = listAdapter.getItem(i); + dialog = listAdapter.getItem(position); } else { - dialog = searchAdapter.getItem(i); + dialog = searchAdapter.getItem(position); } ShareDialogCell cell = (ShareDialogCell) view; if (selectedDialogs.containsKey(dialog.id)) { @@ -267,18 +350,62 @@ public class ShareFrameLayout extends FrameLayout { updateSelectedCount(); } }); + if (Build.VERSION.SDK_INT >= 11) { + gridView.setOnScrollListener(new RecyclerView.OnScrollListener() { + @SuppressLint("NewApi") + @Override + public void onScrolled(RecyclerView recyclerView, int dx, int dy) { + updateLayout(); + } + }); + } searchEmptyView = new EmptyTextProgressView(context); searchEmptyView.setShowAtCenter(true); searchEmptyView.showTextView(); searchEmptyView.setText(LocaleController.getString("NoChats", R.string.NoChats)); gridView.setEmptyView(searchEmptyView); - addView(searchEmptyView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.LEFT, 0, 48, 0, 0)); + container.addView(searchEmptyView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.LEFT, 0, 48, 0, 0)); + + container.addView(frameLayout, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.LEFT | Gravity.TOP)); + + shadow = new View(context); + shadow.setBackgroundResource(R.drawable.header_shadow); + container.addView(shadow, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 3, Gravity.TOP | Gravity.LEFT, 0, 48, 0, 0)); updateSelectedCount(); } - public void copyLink(Context context) { + private int getCurrentTop() { + if (gridView.getChildCount() != 0) { + View child = gridView.getChildAt(0); + Holder holder = (Holder) gridView.findContainingViewHolder(child); + if (holder != null) { + return gridView.getPaddingTop() - (holder.getAdapterPosition() == 0 && child.getTop() >= 0 ? child.getTop() : 0); + } + } + return -1000; + } + + @SuppressLint("NewApi") + private void updateLayout() { + if (gridView.getChildCount() <= 0) { + return; + } + View child = gridView.getChildAt(0); + Holder holder = (Holder) gridView.findContainingViewHolder(child); + int top = child.getTop() - AndroidUtilities.dp(8); + int newOffset = top > 0 && holder != null && holder.getAdapterPosition() == 0 ? top : 0; + if (scrollOffsetY != newOffset) { + gridView.setTopGlowOffset(scrollOffsetY = newOffset); + frameLayout.setTranslationY(scrollOffsetY); + shadow.setTranslationY(scrollOffsetY); + searchEmptyView.setTranslationY(scrollOffsetY); + container.invalidate(); + } + } + + private void copyLink(Context context) { if (exportedMessageLink == null) { return; } @@ -301,11 +428,11 @@ public class ShareFrameLayout extends FrameLayout { if (selectedDialogs.isEmpty()) { doneButtonBadgeTextView.setVisibility(View.GONE); if (!isPublicChannel) { - doneButtonTextView.setTextColor(0xffb3b3b3); + doneButtonTextView.setTextColor(Theme.SHARE_SHEET_SEND_DISABLED_TEXT_COLOR); doneButton.setEnabled(false); doneButtonTextView.setText(LocaleController.getString("Send", R.string.Send).toUpperCase()); } else { - doneButtonTextView.setTextColor(0xff517fad); + doneButtonTextView.setTextColor(Theme.SHARE_SHEET_COPY_TEXT_COLOR); doneButton.setEnabled(true); doneButtonTextView.setText(LocaleController.getString("CopyLink", R.string.CopyLink).toUpperCase()); } @@ -313,25 +440,27 @@ public class ShareFrameLayout extends FrameLayout { doneButtonTextView.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0); doneButtonBadgeTextView.setVisibility(View.VISIBLE); doneButtonBadgeTextView.setText(String.format("%d", selectedDialogs.size())); - doneButtonTextView.setTextColor(0xff3ec1f9); + doneButtonTextView.setTextColor(Theme.SHARE_SHEET_SEND_TEXT_COLOR); doneButton.setEnabled(true); doneButtonTextView.setText(LocaleController.getString("Send", R.string.Send).toUpperCase()); } } - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(310), MeasureSpec.EXACTLY)); + private class Holder extends RecyclerView.ViewHolder { + + public Holder(View itemView) { + super(itemView); + } } - private class ShareDialogsAdapter extends BaseFragmentAdapter { + private class ShareDialogsAdapter extends RecyclerView.Adapter { - private Context mContext; + private Context context; private int currentCount; private ArrayList dialogs = new ArrayList<>(); public ShareDialogsAdapter(Context context) { - mContext = context; + this.context = context; for (int a = 0; a < MessagesController.getInstance().dialogsServerOnly.size(); a++) { TLRPC.Dialog dialog = MessagesController.getInstance().dialogsServerOnly.get(a); int lower_id = (int) dialog.id; @@ -350,7 +479,7 @@ public class ShareFrameLayout extends FrameLayout { } @Override - public int getCount() { + public int getItemCount() { return dialogs.size(); } @@ -367,35 +496,28 @@ public class ShareFrameLayout extends FrameLayout { } @Override - public View getView(int i, View view, ViewGroup viewGroup) { - if (view == null) { - view = new ShareDialogCell(mContext); - } - ShareDialogCell cell = (ShareDialogCell) view; - TLRPC.Dialog dialog = getItem(i); + public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = new ShareDialogCell(context); + view.setLayoutParams(new RecyclerView.LayoutParams(RecyclerView.LayoutParams.MATCH_PARENT, AndroidUtilities.dp(100))); + return new Holder(view); + } + + @Override + public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { + ShareDialogCell cell = (ShareDialogCell) holder.itemView; + TLRPC.Dialog dialog = getItem(position); cell.setDialog(dialog, selectedDialogs.containsKey(dialog.id), null); - return view; } @Override public int getItemViewType(int i) { return 0; } - - @Override - public int getViewTypeCount() { - return 1; - } - - @Override - public boolean isEmpty() { - return getCount() == 0; - } } - public class ShareSearchAdapter extends BaseFragmentAdapter { + public class ShareSearchAdapter extends RecyclerView.Adapter { - private Context mContext; + private Context context; private Timer searchTimer; private ArrayList searchResult = new ArrayList<>(); private String lastSearchText; @@ -411,7 +533,7 @@ public class ShareFrameLayout extends FrameLayout { } public ShareSearchAdapter(Context context) { - mContext = context; + this.context = context; } private void searchDialogsInternal(final String query, final int searchId) { @@ -629,8 +751,17 @@ public class ShareFrameLayout extends FrameLayout { MessagesController.getInstance().putChat(chat, true); } } + boolean becomeEmpty = !searchResult.isEmpty() && result.isEmpty(); + boolean isEmpty = searchResult.isEmpty() && result.isEmpty(); + if (becomeEmpty) { + topBeforeSwitch = getCurrentTop(); + } searchResult = result; notifyDataSetChanged(); + if (!isEmpty && !becomeEmpty && topBeforeSwitch > 0) { + layoutManager.scrollToPositionWithOffset(0, -topBeforeSwitch); + topBeforeSwitch = -1000; + } } }); } @@ -650,6 +781,7 @@ public class ShareFrameLayout extends FrameLayout { } if (query == null || query.length() == 0) { searchResult.clear(); + topBeforeSwitch = getCurrentTop(); notifyDataSetChanged(); } else { final int searchId = ++lastSearchId; @@ -671,7 +803,7 @@ public class ShareFrameLayout extends FrameLayout { } @Override - public int getCount() { + public int getItemCount() { return searchResult.size(); } @@ -685,24 +817,22 @@ public class ShareFrameLayout extends FrameLayout { } @Override - public View getView(int i, View view, ViewGroup viewGroup) { - if (view == null) { - view = new ShareDialogCell(mContext); - } - ShareDialogCell cell = (ShareDialogCell) view; - DialogSearchResult result = searchResult.get(i); + public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = new ShareDialogCell(context); + view.setLayoutParams(new RecyclerView.LayoutParams(RecyclerView.LayoutParams.MATCH_PARENT, AndroidUtilities.dp(100))); + return new Holder(view); + } + + @Override + public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { + ShareDialogCell cell = (ShareDialogCell) holder.itemView; + DialogSearchResult result = searchResult.get(position); cell.setDialog(result.dialog, selectedDialogs.containsKey(result.dialog.id), result.name); - return view; } @Override public int getItemViewType(int i) { return 0; } - - @Override - public boolean isEmpty() { - return getCount() == 0; - } } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/SimpleTextView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/SimpleTextView.java deleted file mode 100644 index 4b135739f..000000000 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/SimpleTextView.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * This is the source code of Telegram for Android v. 3.x.x - * It is licensed under GNU GPL v. 2 or later. - * You should have received a copy of the license in this archive (see LICENSE). - * - * Copyright Nikolai Kudashov, 2013-2016. - */ - -package org.telegram.ui.Components; - -import android.content.Context; -import android.graphics.Canvas; -import android.graphics.Paint; -import android.graphics.Typeface; -import android.text.Layout; -import android.text.SpannableStringBuilder; -import android.text.StaticLayout; -import android.text.TextPaint; -import android.text.TextUtils; -import android.view.Gravity; -import android.view.View; - -import org.telegram.messenger.AndroidUtilities; - -public class SimpleTextView extends View { - - private Layout layout; - private TextPaint textPaint; - private int gravity; - private CharSequence text; - private SpannableStringBuilder spannableStringBuilder; - - private int offsetX; - private boolean wasLayout = false; - - public SimpleTextView(Context context) { - super(context); - textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); - } - - public void setTextColor(int color) { - textPaint.setColor(color); - } - - public void setTextSize(int size) { - textPaint.setTextSize(AndroidUtilities.dp(size)); - } - - public void setGravity(int value) { - gravity = value; - } - - public void setTypeface(Typeface typeface) { - textPaint.setTypeface(typeface); - } - - private void createLayout(int width) { - if (text != null) { - try { - CharSequence string = TextUtils.ellipsize(text, textPaint, width, TextUtils.TruncateAt.END); - layout = new StaticLayout(string, 0, string.length(), textPaint, width, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); - - /*if (metrics == null) { - metrics = BoringLayout.isBoring(text, textPaint); - } - if (layout == null) { - layout = BoringLayout.make(text, textPaint, width, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, metrics, false, TextUtils.TruncateAt.END, width); - } else { - layout = ((BoringLayout) layout).replaceOrMake(text, textPaint, width, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, metrics, false, TextUtils.TruncateAt.END, width); - }*/ - - /*if (spannableStringBuilder == null) { - spannableStringBuilder = new SpannableStringBuilder(text); - layout = new DynamicLayout(text, text, textPaint, width, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false, TextUtils.TruncateAt.END, width); - } else { - spannableStringBuilder.replace(0, text.length(), text); - }*/ - - if (layout.getLineCount() > 0) { - if ((gravity & Gravity.HORIZONTAL_GRAVITY_MASK) == Gravity.LEFT) { - offsetX = -(int) layout.getLineLeft(0); - } else if (layout.getLineLeft(0) == 0) { - offsetX = (int) (width - layout.getLineWidth(0)); - } else { - offsetX = 0; - } - offsetX += getPaddingLeft(); - } - } catch (Exception e) { - //ignore - } - } - } - - @Override - protected void onLayout(boolean changed, int left, int top, int right, int bottom) { - if (changed) { - createLayout(right - left - getPaddingLeft() - getPaddingRight()); - invalidate(); - wasLayout = true; - } - } - - public void setText(CharSequence value) { - text = value; - if (wasLayout) { - createLayout(getMeasuredWidth() - getPaddingLeft() - getPaddingRight()); - invalidate(); - } else { - requestLayout(); - } - } - - @Override - protected void onDraw(Canvas canvas) { - if (layout != null) { - if (offsetX != 0) { - canvas.save(); - canvas.translate(offsetX, 0); - } - layout.draw(canvas); - if (offsetX != 0) { - canvas.restore(); - } - } - } -} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/SlidingTabView.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/SlidingTabView.java index d81c556fd..8cb1adadb 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/SlidingTabView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/SlidingTabView.java @@ -20,7 +20,7 @@ import android.widget.LinearLayout; import android.widget.TextView; import org.telegram.messenger.AndroidUtilities; -import org.telegram.messenger.R; +import org.telegram.ui.ActionBar.Theme; public class SlidingTabView extends LinearLayout { @@ -58,7 +58,7 @@ public class SlidingTabView extends LinearLayout { tab.setTextColor(0xffffffff); tab.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); tab.setTypeface(Typeface.DEFAULT_BOLD); - tab.setBackgroundResource(R.drawable.bar_selector_picker); + tab.setBackgroundDrawable(Theme.createBarSelectorDrawable(Theme.ACTION_BAR_PICKER_SELECTOR_COLOR, false)); tab.setOnClickListener(new OnClickListener() { @Override 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 97916e024..eae765ee7 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/StickersAlert.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/StickersAlert.java @@ -8,80 +8,545 @@ package org.telegram.ui.Components; -import android.app.AlertDialog; +import android.annotation.SuppressLint; import android.content.Context; -import android.content.DialogInterface; -import android.database.DataSetObserver; +import android.graphics.*; +import android.graphics.Rect; +import android.graphics.drawable.Drawable; +import android.os.Build; +import android.text.TextUtils; +import android.util.TypedValue; +import android.view.Gravity; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; -import android.widget.BaseAdapter; import android.widget.FrameLayout; -import android.widget.GridView; +import android.widget.ImageView; +import android.widget.ProgressBar; +import android.widget.TextView; +import android.widget.Toast; import org.telegram.messenger.AndroidUtilities; +import org.telegram.messenger.AnimationCompat.AnimatorListenerAdapterProxy; +import org.telegram.messenger.AnimationCompat.AnimatorSetProxy; +import org.telegram.messenger.AnimationCompat.ObjectAnimatorProxy; +import org.telegram.messenger.AnimationCompat.ViewProxy; +import org.telegram.messenger.Emoji; +import org.telegram.messenger.FileLog; +import org.telegram.messenger.LocaleController; import org.telegram.messenger.NotificationCenter; +import org.telegram.messenger.R; +import org.telegram.messenger.query.StickersQuery; +import org.telegram.messenger.support.widget.GridLayoutManager; +import org.telegram.messenger.support.widget.RecyclerView; +import org.telegram.tgnet.ConnectionsManager; +import org.telegram.tgnet.RequestDelegate; +import org.telegram.tgnet.TLObject; import org.telegram.tgnet.TLRPC; +import org.telegram.ui.ActionBar.BottomSheet; +import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Cells.StickerEmojiCell; import org.telegram.ui.StickerPreviewViewer; -import java.util.ArrayList; +public class StickersAlert extends BottomSheet implements NotificationCenter.NotificationCenterDelegate { -public class StickersAlert extends AlertDialog implements NotificationCenter.NotificationCenterDelegate { + public interface StickersAlertDelegate { + void onStickerSelected(TLRPC.Document sticker); + } - private ArrayList stickers; - private GridView gridView; + private FrameLayout container; + private RecyclerListView gridView; + private GridLayoutManager layoutManager; + private GridAdapter adapter; + private TextView titleTextView; + private PickerBottomLayout pickerBottomLayout; + private FrameLayout stickerPreviewLayout; + private TextView previewSendButton; + private View previewSendButtonShadow; + private BackupImageView stickerImageView; + private TextView stickerEmojiTextView; + private RecyclerListView.OnItemClickListener stickersOnItemClickListener; + private Drawable shadowDrawable; + private AnimatorSetProxy shadowAnimation[] = new AnimatorSetProxy[2]; + private View shadow[] = new View[2]; + private FrameLayout emptyView; - public StickersAlert(Context context, TLRPC.TL_messages_stickerSet set) { - super(context); - stickers = set.documents; + private TLRPC.TL_messages_stickerSet stickerSet; + private TLRPC.Document selectedSticker; + private TLRPC.InputStickerSet inputStickerSet; + + private StickersAlertDelegate delegate; + + private int scrollOffsetY; + private int reqId; + private boolean ignoreLayout = false; + + public StickersAlert(Context context, TLRPC.InputStickerSet set, TLRPC.TL_messages_stickerSet loadedSet, StickersAlertDelegate stickersAlertDelegate) { + super(context, false); + setApplyTopPadding(false); + setApplyBottomPadding(false); + if (Build.VERSION.SDK_INT >= 11) { + setDisableBackground(true); + } + + delegate = stickersAlertDelegate; + inputStickerSet = set; + stickerSet = loadedSet; + shadowDrawable = context.getResources().getDrawable(R.drawable.sheet_shadow); + + container = new FrameLayout(context) { + @Override + public boolean onInterceptTouchEvent(MotionEvent ev) { + return scrollOffsetY != 0 && ev.getY() < scrollOffsetY || super.onInterceptTouchEvent(ev); + } - FrameLayout container = new FrameLayout(context) { @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec((int) Math.min(Math.ceil(stickers.size() / 4.0f) * AndroidUtilities.dp(82), AndroidUtilities.displaySize.y / 5 * 3), MeasureSpec.EXACTLY)); + int height = MeasureSpec.getSize(heightMeasureSpec); + if (Build.VERSION.SDK_INT >= 21) { + height -= AndroidUtilities.statusBarHeight; + } + int contentSize = AndroidUtilities.dp(48 + 48) + Math.max(3, (stickerSet != null ? (int) Math.ceil(stickerSet.documents.size() / 5.0f) : 0)) * AndroidUtilities.dp(82) + backgroundPaddingTop; + if (Build.VERSION.SDK_INT < 11) { + super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(Math.min(contentSize, AndroidUtilities.displaySize.y / 5 * 3), MeasureSpec.EXACTLY)); + } else { + int padding = contentSize < (height / 5 * 3.2) ? 0 : (height / 5 * 2); + if (padding != 0 && contentSize < height) { + padding -= (height - contentSize); + } + if (padding == 0) { + padding = backgroundPaddingTop; + } + if (gridView.getPaddingTop() != padding) { + ignoreLayout = true; + gridView.setPadding(AndroidUtilities.dp(10), padding, AndroidUtilities.dp(10), 0); + emptyView.setPadding(0, padding, 0, 0); + ignoreLayout = false; + } + super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(Math.min(contentSize, height), MeasureSpec.EXACTLY)); + } + } + + @Override + protected void onLayout(boolean changed, int left, int top, int right, int bottom) { + super.onLayout(changed, left, top, right, bottom); + if (Build.VERSION.SDK_INT >= 11) { + updateLayout(); + } + } + + @Override + public void requestLayout() { + if (ignoreLayout) { + return; + } + super.requestLayout(); + } + + @Override + protected void onDraw(Canvas canvas) { + if (Build.VERSION.SDK_INT >= 11) { + shadowDrawable.setBounds(0, scrollOffsetY - backgroundPaddingTop, getMeasuredWidth(), getMeasuredHeight()); + shadowDrawable.draw(canvas); + } } }; - setView(container, AndroidUtilities.dp(16), 0, AndroidUtilities.dp(16), 0); + if (Build.VERSION.SDK_INT >= 11) { + container.setWillNotDraw(false); + } + container.setPadding(backgroundPaddingLeft, 0, backgroundPaddingLeft, 0); + setCustomView(container); - gridView = new GridView(context) { + titleTextView = new TextView(context); + + titleTextView = new TextView(getContext()); + titleTextView.setLines(1); + titleTextView.setSingleLine(true); + titleTextView.setTextColor(Theme.STICKERS_SHEET_TITLE_TEXT_COLOR); + titleTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20); + titleTextView.setEllipsize(TextUtils.TruncateAt.MIDDLE); + titleTextView.setPadding(AndroidUtilities.dp(18), 0, AndroidUtilities.dp(18), 0); + titleTextView.setGravity(Gravity.CENTER_VERTICAL); + titleTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + container.addView(titleTextView, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 48)); + titleTextView.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + return true; + } + }); + + shadow[0] = new View(context); + shadow[0].setBackgroundResource(R.drawable.header_shadow); + ViewProxy.setAlpha(shadow[0], 0.0f); + shadow[0].clearAnimation(); + shadow[0].setVisibility(View.INVISIBLE); + shadow[0].setTag(1); + container.addView(shadow[0], LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 3, Gravity.TOP | Gravity.LEFT, 0, 48, 0, 0)); + + gridView = new RecyclerListView(context) { @Override public boolean onInterceptTouchEvent(MotionEvent event) { boolean result = StickerPreviewViewer.getInstance().onInterceptTouchEvent(event, gridView, 0); return super.onInterceptTouchEvent(event) || result; } + + @Override + public void requestLayout() { + if (ignoreLayout) { + return; + } + super.requestLayout(); + } }; - gridView.setNumColumns(4); - gridView.setAdapter(new GridAdapter(context)); + gridView.setLayoutManager(layoutManager = new GridLayoutManager(getContext(), 5)); + gridView.setAdapter(adapter = new GridAdapter(context)); gridView.setVerticalScrollBarEnabled(false); + gridView.addItemDecoration(new RecyclerView.ItemDecoration() { + @Override + public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { + outRect.left = 0; + outRect.right = 0; + outRect.bottom = 0; + outRect.top = 0; + } + }); + gridView.setPadding(AndroidUtilities.dp(10), 0, AndroidUtilities.dp(10), 0); + gridView.setClipToPadding(false); + gridView.setEnabled(true); + gridView.setGlowColor(0xfff5f6f7); gridView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { - return StickerPreviewViewer.getInstance().onTouch(event, gridView, 0, null); + return StickerPreviewViewer.getInstance().onTouch(event, gridView, 0, stickersOnItemClickListener); } }); - container.addView(gridView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); - - setTitle(set.set.title); - - NotificationCenter.getInstance().addObserver(this, NotificationCenter.emojiDidLoaded); - - setOnShowListener(new OnShowListener() { + if (Build.VERSION.SDK_INT >= 11) { + gridView.setOnScrollListener(new RecyclerView.OnScrollListener() { + @SuppressLint("NewApi") + @Override + public void onScrolled(RecyclerView recyclerView, int dx, int dy) { + updateLayout(); + } + }); + } + stickersOnItemClickListener = new RecyclerListView.OnItemClickListener() { @Override - public void onShow(DialogInterface arg0) { - if (getButton(AlertDialog.BUTTON_NEUTRAL) != null) { - getButton(AlertDialog.BUTTON_NEUTRAL).setTextColor(0xffcd5a5a); + public void onItemClick(View view, int position) { + if (stickerSet == null || position < 0 || position >= stickerSet.documents.size()) { + return; } - if (getButton(AlertDialog.BUTTON_POSITIVE) != null) { - getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(0xff37a919); + selectedSticker = stickerSet.documents.get(position); + + boolean set = false; + for (int a = 0; a < selectedSticker.attributes.size(); a++) { + TLRPC.DocumentAttribute attribute = selectedSticker.attributes.get(a); + if (attribute instanceof TLRPC.TL_documentAttributeSticker) { + if (attribute.alt != null && attribute.alt.length() > 0) { + stickerEmojiTextView.setText(Emoji.replaceEmoji(attribute.alt, stickerEmojiTextView.getPaint().getFontMetricsInt(), AndroidUtilities.dp(30), false)); + set = true; + } + break; + } } + if (!set) { + stickerEmojiTextView.setText(Emoji.replaceEmoji(StickersQuery.getEmojiForSticker(selectedSticker.id), stickerEmojiTextView.getPaint().getFontMetricsInt(), AndroidUtilities.dp(30), false)); + } + + stickerImageView.getImageReceiver().setImage(selectedSticker, null, selectedSticker.thumb.location, null, "webp", true); + FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) stickerPreviewLayout.getLayoutParams(); + layoutParams.topMargin = scrollOffsetY; + stickerPreviewLayout.setLayoutParams(layoutParams); + stickerPreviewLayout.setVisibility(View.VISIBLE); + AnimatorSetProxy animatorSet = new AnimatorSetProxy(); + animatorSet.playTogether(ObjectAnimatorProxy.ofFloat(stickerPreviewLayout, "alpha", 0.0f, 1.0f)); + animatorSet.setDuration(200); + animatorSet.start(); + } + }; + gridView.setOnItemClickListener(stickersOnItemClickListener); + container.addView(gridView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.LEFT, 0, 48, 0, 48)); + + emptyView = new FrameLayout(context) { + @Override + public void requestLayout() { + if (ignoreLayout) { + return; + } + super.requestLayout(); + } + }; + container.addView(emptyView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.LEFT, 0, 0, 0, 48)); + gridView.setEmptyView(emptyView); + emptyView.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + return true; } }); + + ProgressBar progressView = new ProgressBar(context); + emptyView.addView(progressView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER)); + + shadow[1] = new View(context); + shadow[1].setBackgroundResource(R.drawable.header_shadow_reverse); + container.addView(shadow[1], LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 3, Gravity.BOTTOM | Gravity.LEFT, 0, 0, 0, 48)); + + pickerBottomLayout = new PickerBottomLayout(context, false); + container.addView(pickerBottomLayout, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.BOTTOM)); + pickerBottomLayout.cancelButton.setPadding(AndroidUtilities.dp(18), 0, AndroidUtilities.dp(18), 0); + pickerBottomLayout.cancelButton.setTextColor(Theme.STICKERS_SHEET_CLOSE_TEXT_COLOR); + pickerBottomLayout.cancelButton.setText(LocaleController.getString("Close", R.string.Close).toUpperCase()); + pickerBottomLayout.cancelButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + dismiss(); + } + }); + pickerBottomLayout.doneButton.setPadding(AndroidUtilities.dp(18), 0, AndroidUtilities.dp(18), 0); + pickerBottomLayout.doneButtonBadgeTextView.setBackgroundResource(R.drawable.stickercounter); + + stickerPreviewLayout = new FrameLayout(context); + stickerPreviewLayout.setBackgroundColor(0xdfffffff); + stickerPreviewLayout.setVisibility(View.GONE); + stickerPreviewLayout.setSoundEffectsEnabled(false); + container.addView(stickerPreviewLayout, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); + stickerPreviewLayout.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + hidePreview(); + } + }); + + ImageView closeButton = new ImageView(context); + closeButton.setImageResource(R.drawable.delete_reply); + closeButton.setScaleType(ImageView.ScaleType.CENTER); + if (Build.VERSION.SDK_INT >= 21) { + closeButton.setBackgroundDrawable(Theme.createBarSelectorDrawable(Theme.INPUT_FIELD_SELECTOR_COLOR)); + } + stickerPreviewLayout.addView(closeButton, LayoutHelper.createFrame(48, 48, Gravity.RIGHT | Gravity.TOP)); + closeButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + hidePreview(); + } + }); + + stickerImageView = new BackupImageView(context); + stickerImageView.setAspectFit(true); + int size = (int) (Math.min(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y) / 2 / AndroidUtilities.density); + stickerPreviewLayout.addView(stickerImageView, LayoutHelper.createFrame(size, size, Gravity.CENTER)); + + stickerEmojiTextView = new TextView(context); + stickerEmojiTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 30); + stickerEmojiTextView.setGravity(Gravity.BOTTOM | Gravity.RIGHT); + stickerPreviewLayout.addView(stickerEmojiTextView, LayoutHelper.createFrame(size, size, Gravity.CENTER)); + + previewSendButton = new TextView(context); + previewSendButton.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); + previewSendButton.setTextColor(Theme.STICKERS_SHEET_SEND_TEXT_COLOR); + previewSendButton.setGravity(Gravity.CENTER); + previewSendButton.setBackgroundColor(0xffffffff); + previewSendButton.setPadding(AndroidUtilities.dp(29), 0, AndroidUtilities.dp(29), 0); + previewSendButton.setText(LocaleController.getString("Close", R.string.Close).toUpperCase()); + previewSendButton.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + previewSendButton.setVisibility(View.GONE); + stickerPreviewLayout.addView(previewSendButton, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.BOTTOM | Gravity.LEFT)); + previewSendButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + delegate.onStickerSelected(selectedSticker); + dismiss(); + } + }); + + previewSendButtonShadow = new View(context); + previewSendButtonShadow.setBackgroundResource(R.drawable.header_shadow_reverse); + previewSendButtonShadow.setVisibility(View.GONE); + stickerPreviewLayout.addView(previewSendButtonShadow, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 3, Gravity.BOTTOM | Gravity.LEFT, 0, 0, 0, 48)); + + if (delegate != null) { + previewSendButton.setText(LocaleController.getString("SendSticker", R.string.SendSticker).toUpperCase()); + stickerImageView.setLayoutParams(LayoutHelper.createFrame(size, size, Gravity.CENTER, 0, 0, 0, 30)); + stickerEmojiTextView.setLayoutParams(LayoutHelper.createFrame(size, size, Gravity.CENTER, 0, 0, 0, 30)); + previewSendButton.setVisibility(View.VISIBLE); + previewSendButtonShadow.setVisibility(View.VISIBLE); + } + + if (stickerSet == null && inputStickerSet.short_name != null) { + stickerSet = StickersQuery.getStickerSetByName(inputStickerSet.short_name); + } + if (stickerSet == null) { + stickerSet = StickersQuery.getStickerSetById(inputStickerSet.id); + } + if (stickerSet == null) { + TLRPC.TL_messages_getStickerSet req = new TLRPC.TL_messages_getStickerSet(); + req.stickerset = inputStickerSet; + ConnectionsManager.getInstance().sendRequest(req, new RequestDelegate() { + @Override + public void run(final TLObject response, final TLRPC.TL_error error) { + AndroidUtilities.runOnUIThread(new Runnable() { + @Override + public void run() { + reqId = 0; + if (error == null) { + stickerSet = (TLRPC.TL_messages_stickerSet) response; + updateFields(); + adapter.notifyDataSetChanged(); + } else { + Toast.makeText(getContext(), LocaleController.getString("AddStickersNotFound", R.string.AddStickersNotFound), Toast.LENGTH_SHORT).show(); + dismiss(); + } + } + }); + } + }); + } + NotificationCenter.getInstance().addObserver(this, NotificationCenter.emojiDidLoaded); + updateFields(); + } + + private void updateFields() { + if (titleTextView == null) { + return; + } + if (stickerSet != null) { + titleTextView.setText(stickerSet.set.title); + + if (stickerSet.set == null || !StickersQuery.isStickerPackInstalled(stickerSet.set.id)) { + setRightButton(new View.OnClickListener() { + @Override + public void onClick(View v) { + dismiss(); + TLRPC.TL_messages_installStickerSet req = new TLRPC.TL_messages_installStickerSet(); + req.stickerset = inputStickerSet; + ConnectionsManager.getInstance().sendRequest(req, new RequestDelegate() { + @Override + public void run(TLObject response, final TLRPC.TL_error error) { + AndroidUtilities.runOnUIThread(new Runnable() { + @Override + public void run() { + try { + if (error == null) { + Toast.makeText(getContext(), LocaleController.getString("AddStickersInstalled", R.string.AddStickersInstalled), Toast.LENGTH_SHORT).show(); + } else { + if (error.text.equals("STICKERSETS_TOO_MUCH")) { + Toast.makeText(getContext(), LocaleController.getString("TooMuchStickersets", R.string.TooMuchStickersets), Toast.LENGTH_SHORT).show(); + } else { + Toast.makeText(getContext(), LocaleController.getString("ErrorOccurred", R.string.ErrorOccurred), Toast.LENGTH_SHORT).show(); + } + } + } catch (Exception e) { + FileLog.e("tmessages", e); + } + StickersQuery.loadStickers(false, true); + } + }); + } + }); + } + }, LocaleController.getString("AddStickers", R.string.AddStickers), Theme.STICKERS_SHEET_ADD_TEXT_COLOR, true); + } else { + if (stickerSet.set.official) { + setRightButton(null, null, Theme.STICKERS_SHEET_REMOVE_TEXT_COLOR, false); + } else { + setRightButton(new View.OnClickListener() { + @Override + public void onClick(View v) { + dismiss(); + StickersQuery.removeStickersSet(getContext(), stickerSet.set, 0); + } + }, LocaleController.getString("StickersRemove", R.string.StickersRemove), Theme.STICKERS_SHEET_REMOVE_TEXT_COLOR, false); + } + } + adapter.notifyDataSetChanged(); + } else { + setRightButton(null, null, Theme.STICKERS_SHEET_REMOVE_TEXT_COLOR, false); + } + } + + @SuppressLint("NewApi") + private void updateLayout() { + if (gridView.getChildCount() <= 0) { + gridView.setTopGlowOffset(scrollOffsetY = gridView.getPaddingTop()); + titleTextView.setTranslationY(scrollOffsetY); + shadow[0].setTranslationY(scrollOffsetY); + container.invalidate(); + return; + } + View child = gridView.getChildAt(0); + GridAdapter.Holder holder = (GridAdapter.Holder) gridView.findContainingViewHolder(child); + int top = child.getTop(); + int newOffset = 0; + if (top >= 0 && holder != null && holder.getAdapterPosition() == 0) { + newOffset = top; + runShadowAnimation(0, false); + } else { + runShadowAnimation(0, true); + } + if (scrollOffsetY != newOffset) { + gridView.setTopGlowOffset(scrollOffsetY = newOffset); + titleTextView.setTranslationY(scrollOffsetY); + shadow[0].setTranslationY(scrollOffsetY); + container.invalidate(); + } + } + + private void hidePreview() { + AnimatorSetProxy animatorSet = new AnimatorSetProxy(); + animatorSet.playTogether(ObjectAnimatorProxy.ofFloat(stickerPreviewLayout, "alpha", 0.0f)); + animatorSet.setDuration(200); + animatorSet.addListener(new AnimatorListenerAdapterProxy() { + @Override + public void onAnimationEnd(Object animation) { + stickerPreviewLayout.setVisibility(View.GONE); + } + }); + animatorSet.start(); + } + + private void runShadowAnimation(final int num, final boolean show) { + if (show && shadow[num].getTag() != null || !show && shadow[num].getTag() == null) { + shadow[num].setTag(show ? null : 1); + if (show) { + shadow[num].setVisibility(View.VISIBLE); + } + if (shadowAnimation[num] != null) { + shadowAnimation[num].cancel(); + } + shadowAnimation[num] = new AnimatorSetProxy(); + shadowAnimation[num].playTogether(ObjectAnimatorProxy.ofFloat(shadow[num], "alpha", show ? 1.0f : 0.0f)); + shadowAnimation[num].setDuration(150); + shadowAnimation[num].addListener(new AnimatorListenerAdapterProxy() { + @Override + public void onAnimationEnd(Object animation) { + if (shadowAnimation[num] != null && shadowAnimation[num].equals(animation)) { + shadow[num].clearAnimation(); + if (!show) { + shadow[num].setVisibility(View.INVISIBLE); + } + shadowAnimation[num] = null; + } + } + + @Override + public void onAnimationCancel(Object animation) { + if (shadowAnimation[num] != null && shadowAnimation[num].equals(animation)) { + shadowAnimation[num] = null; + } + } + }); + shadowAnimation[num].start(); + } } @Override public void dismiss() { super.dismiss(); + if (reqId != 0) { + ConnectionsManager.getInstance().cancelRequest(reqId, true); + reqId = 0; + } NotificationCenter.getInstance().removeObserver(this, NotificationCenter.emojiDidLoaded); } @@ -98,7 +563,24 @@ public class StickersAlert extends AlertDialog implements NotificationCenter.Not } } - private class GridAdapter extends BaseAdapter { + private void setRightButton(View.OnClickListener onClickListener, String title, int color, boolean showCircle) { + if (title == null) { + pickerBottomLayout.doneButton.setVisibility(View.GONE); + } else { + pickerBottomLayout.doneButton.setVisibility(View.VISIBLE); + if (showCircle) { + pickerBottomLayout.doneButtonBadgeTextView.setVisibility(View.VISIBLE); + pickerBottomLayout.doneButtonBadgeTextView.setText(String.format("%d", stickerSet.documents.size())); + } else { + pickerBottomLayout.doneButtonBadgeTextView.setVisibility(View.GONE); + } + pickerBottomLayout.doneButtonTextView.setTextColor(color); + pickerBottomLayout.doneButtonTextView.setText(title.toUpperCase()); + pickerBottomLayout.doneButton.setOnClickListener(onClickListener); + } + } + + private class GridAdapter extends RecyclerView.Adapter { Context context; @@ -106,45 +588,28 @@ public class StickersAlert extends AlertDialog implements NotificationCenter.Not this.context = context; } - public int getCount() { - return stickers.size(); - } - - public Object getItem(int i) { - return stickers.get(i); - } - - public long getItemId(int i) { - return stickers.get(i).id; - } - @Override - public boolean areAllItemsEnabled() { - return false; + public int getItemCount() { + return stickerSet != null ? stickerSet.documents.size() : 0; } - @Override - public boolean isEnabled(int position) { - return false; - } + private class Holder extends RecyclerView.ViewHolder { - public View getView(int i, View view, ViewGroup viewGroup) { - if (view == null) { - view = new StickerEmojiCell(context) { - public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(82), MeasureSpec.EXACTLY)); - } - }; + public Holder(View itemView) { + super(itemView); } - ((StickerEmojiCell) view).setSticker(stickers.get(i), true); - return view; } @Override - public void unregisterDataSetObserver(DataSetObserver observer) { - if (observer != null) { - super.unregisterDataSetObserver(observer); - } + public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = new StickerEmojiCell(context); + view.setLayoutParams(new RecyclerView.LayoutParams(RecyclerView.LayoutParams.MATCH_PARENT, AndroidUtilities.dp(82))); + return new Holder(view); + } + + @Override + public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { + ((StickerEmojiCell) holder.itemView).setSticker(stickerSet.documents.get(position), true); } } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/TypingDotsDrawable.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/TypingDotsDrawable.java index 41d4bd9a8..34a95d0c7 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/TypingDotsDrawable.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/TypingDotsDrawable.java @@ -15,6 +15,7 @@ import android.graphics.drawable.Drawable; import android.view.animation.DecelerateInterpolator; import org.telegram.messenger.AndroidUtilities; +import org.telegram.ui.ActionBar.Theme; public class TypingDotsDrawable extends Drawable { @@ -29,7 +30,7 @@ public class TypingDotsDrawable extends Drawable { public TypingDotsDrawable() { super(); - paint.setColor(0xffd7e8f7); + paint.setColor(Theme.ACTION_BAR_SUBTITLE_COLOR); } public void setIsChat(boolean value) { @@ -90,9 +91,9 @@ public class TypingDotsDrawable extends Drawable { public void draw(Canvas canvas) { int y; if (isChat) { - y = AndroidUtilities.dp(6); + y = AndroidUtilities.dp(8.3f) + getBounds().top; } else { - y = AndroidUtilities.dp(7); + y = AndroidUtilities.dp(9) + getBounds().top; } canvas.drawCircle(AndroidUtilities.dp(3), y, scales[0] * AndroidUtilities.density, paint); canvas.drawCircle(AndroidUtilities.dp(9), y, scales[1] * AndroidUtilities.density, paint); @@ -124,6 +125,6 @@ public class TypingDotsDrawable extends Drawable { @Override public int getIntrinsicHeight() { - return AndroidUtilities.dp(10); + return AndroidUtilities.dp(18); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/URLSpanBotCommand.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/URLSpanBotCommand.java index 61b7433e4..adb870543 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/URLSpanBotCommand.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/URLSpanBotCommand.java @@ -10,6 +10,8 @@ package org.telegram.ui.Components; import android.text.TextPaint; +import org.telegram.ui.ActionBar.Theme; + public class URLSpanBotCommand extends URLSpanNoUnderline { public static boolean enabled = true; @@ -21,7 +23,7 @@ public class URLSpanBotCommand extends URLSpanNoUnderline { @Override public void updateDrawState(TextPaint ds) { super.updateDrawState(ds); - ds.setColor(enabled ? 0xff316f9f : 0xff000000); + ds.setColor(enabled ? Theme.MSG_LINK_TEXT_COLOR : Theme.MSG_TEXT_COLOR); ds.setUnderlineText(false); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Components/WebFrameLayout.java b/TMessagesProj/src/main/java/org/telegram/ui/Components/WebFrameLayout.java index a9250c135..43a315199 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Components/WebFrameLayout.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Components/WebFrameLayout.java @@ -16,6 +16,7 @@ import android.util.TypedValue; import android.view.Gravity; import android.view.MotionEvent; import android.view.View; +import android.view.ViewGroup; import android.webkit.CookieManager; import android.webkit.WebChromeClient; import android.webkit.WebSettings; @@ -28,11 +29,13 @@ import android.widget.TextView; import android.widget.Toast; import org.telegram.messenger.AndroidUtilities; -import org.telegram.messenger.LocaleController; import org.telegram.messenger.ApplicationLoader; import org.telegram.messenger.FileLog; +import org.telegram.messenger.LocaleController; import org.telegram.messenger.R; +import org.telegram.messenger.browser.Browser; import org.telegram.ui.ActionBar.BottomSheet; +import org.telegram.ui.ActionBar.Theme; import java.util.HashMap; @@ -48,11 +51,13 @@ public class WebFrameLayout extends FrameLayout { private int width; private int height; private String openUrl; + private boolean hasDescription; @SuppressLint("SetJavaScriptEnabled") - public WebFrameLayout(Context context, BottomSheet parentDialog, String title, String originalUrl, final String url, int w, int h) { + public WebFrameLayout(Context context, final BottomSheet parentDialog, String title, String descripton, String originalUrl, final String url, int w, int h) { super(context); + hasDescription = descripton != null && descripton.length() > 0; openUrl = originalUrl; width = w; height = h; @@ -67,69 +72,18 @@ public class WebFrameLayout extends FrameLayout { if (Build.VERSION.SDK_INT >= 21) { fullscreenVideoContainer.setFitsSystemWindows(true); } + parentDialog.setApplyTopPadding(false); + parentDialog.setApplyBottomPadding(false); dialog.getContainer().addView(fullscreenVideoContainer, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); fullscreenVideoContainer.setVisibility(INVISIBLE); - LinearLayout linearLayout = new LinearLayout(context); + /*LinearLayout linearLayout = new LinearLayout(context); linearLayout.setOrientation(LinearLayout.HORIZONTAL); addView(linearLayout, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 32, Gravity.LEFT | Gravity.TOP)); - TextView textView = new TextView(context); - textView.setTextColor(0xff666666); - textView.setText(title); - textView.setSingleLine(true); - textView.setEllipsize(TextUtils.TruncateAt.END); - textView.setGravity(Gravity.CENTER_VERTICAL); - textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); - linearLayout.addView(textView, LayoutHelper.createLinear(0, LayoutHelper.MATCH_PARENT, 1.0f, 16, 0, 0, 0)); - textView = new TextView(context); - textView.setTextColor(0xff999999); - textView.setText(LocaleController.getString("OpenInBrowser", R.string.OpenInBrowser)); - textView.setGravity(Gravity.CENTER_VERTICAL); - textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 12); - linearLayout.addView(textView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, 16, 0, 0, 0)); - textView.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - AndroidUtilities.openUrl(getContext(), openUrl); - if (dialog != null) { - dialog.dismiss(); - } - } - }); - textView = new TextView(context); - textView.setTextColor(0xff999999); - textView.setText(LocaleController.getString("CopyUrl", R.string.CopyUrl)); - textView.setGravity(Gravity.CENTER_VERTICAL); - textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 12); - linearLayout.addView(textView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, 16, 0, 16, 0)); - textView.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - try { - if (Build.VERSION.SDK_INT < 11) { - android.text.ClipboardManager clipboard = (android.text.ClipboardManager) ApplicationLoader.applicationContext.getSystemService(Context.CLIPBOARD_SERVICE); - clipboard.setText(openUrl); - } else { - android.content.ClipboardManager clipboard = (android.content.ClipboardManager) ApplicationLoader.applicationContext.getSystemService(Context.CLIPBOARD_SERVICE); - android.content.ClipData clip = android.content.ClipData.newPlainText("label", openUrl); - clipboard.setPrimaryClip(clip); - } - } catch (Exception e) { - FileLog.e("tmessages", e); - } - Toast.makeText(getContext(), LocaleController.getString("LinkCopied", R.string.LinkCopied), Toast.LENGTH_SHORT).show(); - if (dialog != null) { - dialog.dismiss(); - } - } - }); - - View lineView = new View(context); - lineView.setBackgroundResource(R.drawable.header_shadow); - addView(lineView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 3, Gravity.TOP | Gravity.LEFT, 0, 40, 0, 0)); + */ webView = new WebView(context); webView.getSettings().setJavaScriptEnabled(true); @@ -203,10 +157,117 @@ public class WebFrameLayout extends FrameLayout { } }); - addView(webView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.LEFT, 8, 49, 8, 0)); + addView(webView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.LEFT, 0, 0, 0, 48 + 36 + (hasDescription ? 22 : 0))); progressBar = new ProgressBar(context); - addView(progressBar, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER, 8, 24, 8, 0)); + addView(progressBar, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER, 0, 0, 0, (48 + 36 + (hasDescription ? 22 : 0)) / 2)); + + //TODO 16m + //TODO 14 + + TextView textView; + + if (hasDescription) { + textView = new TextView(context); + textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); + textView.setTextColor(0xff222222); + textView.setText(descripton); + textView.setSingleLine(true); + textView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + textView.setEllipsize(TextUtils.TruncateAt.END); + textView.setPadding(AndroidUtilities.dp(18), 0, AndroidUtilities.dp(18), 0); + addView(textView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.BOTTOM, 0, 0, 0, 48 + 9 + 20)); + } + + textView = new TextView(context); + textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); + textView.setTextColor(0xff8a8a8a); + textView.setText(title); + textView.setSingleLine(true); + textView.setEllipsize(TextUtils.TruncateAt.END); + textView.setPadding(AndroidUtilities.dp(18), 0, AndroidUtilities.dp(18), 0); + addView(textView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.BOTTOM, 0, 0, 0, 48 + 9)); + + View lineView = new View(context); + lineView.setBackgroundColor(0xffdbdbdb); + addView(lineView, new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 1, Gravity.LEFT | Gravity.BOTTOM)); + ((LayoutParams) lineView.getLayoutParams()).bottomMargin = AndroidUtilities.dp(48); + + FrameLayout frameLayout = new FrameLayout(context); + frameLayout.setBackgroundColor(0xffffffff); + addView(frameLayout, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.LEFT | Gravity.BOTTOM)); + + textView = new TextView(context); + textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); + textView.setTextColor(0xff19a7e8); + textView.setGravity(Gravity.CENTER); + textView.setBackgroundDrawable(Theme.createBarSelectorDrawable(Theme.ACTION_BAR_AUDIO_SELECTOR_COLOR, false)); + textView.setPadding(AndroidUtilities.dp(18), 0, AndroidUtilities.dp(18), 0); + textView.setText(LocaleController.getString("Close", R.string.Close).toUpperCase()); + textView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + frameLayout.addView(textView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.LEFT)); + textView.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + if (dialog != null) { + dialog.dismiss(); + } + } + }); + + LinearLayout linearLayout = new LinearLayout(context); + linearLayout.setOrientation(LinearLayout.HORIZONTAL); + frameLayout.addView(linearLayout, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.RIGHT)); + + textView = new TextView(context); + textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); + textView.setTextColor(0xff19a7e8); + textView.setGravity(Gravity.CENTER); + textView.setBackgroundDrawable(Theme.createBarSelectorDrawable(Theme.ACTION_BAR_AUDIO_SELECTOR_COLOR, false)); + textView.setPadding(AndroidUtilities.dp(18), 0, AndroidUtilities.dp(18), 0); + textView.setText(LocaleController.getString("Copy", R.string.Copy).toUpperCase()); + textView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + linearLayout.addView(textView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.LEFT)); + textView.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + try { + if (Build.VERSION.SDK_INT < 11) { + android.text.ClipboardManager clipboard = (android.text.ClipboardManager) ApplicationLoader.applicationContext.getSystemService(Context.CLIPBOARD_SERVICE); + clipboard.setText(openUrl); + } else { + android.content.ClipboardManager clipboard = (android.content.ClipboardManager) ApplicationLoader.applicationContext.getSystemService(Context.CLIPBOARD_SERVICE); + android.content.ClipData clip = android.content.ClipData.newPlainText("label", openUrl); + clipboard.setPrimaryClip(clip); + } + } catch (Exception e) { + FileLog.e("tmessages", e); + } + Toast.makeText(getContext(), LocaleController.getString("LinkCopied", R.string.LinkCopied), Toast.LENGTH_SHORT).show(); + if (dialog != null) { + dialog.dismiss(); + } + } + }); + + textView = new TextView(context); + textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); + textView.setTextColor(0xff19a7e8); + textView.setGravity(Gravity.CENTER); + textView.setBackgroundDrawable(Theme.createBarSelectorDrawable(Theme.ACTION_BAR_AUDIO_SELECTOR_COLOR, false)); + textView.setPadding(AndroidUtilities.dp(18), 0, AndroidUtilities.dp(18), 0); + textView.setText(LocaleController.getString("OpenInBrowser", R.string.OpenInBrowser).toUpperCase()); + textView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + linearLayout.addView(textView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.LEFT)); + textView.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + Browser.openUrl(getContext(), openUrl); + if (dialog != null) { + dialog.dismiss(); + } + } + }); setOnTouchListener(new OnTouchListener() { @Override @@ -248,6 +309,6 @@ public class WebFrameLayout extends FrameLayout { int parentWidth = MeasureSpec.getSize(widthMeasureSpec); float scale = width / parentWidth; int h = (int) Math.min(height / scale, AndroidUtilities.displaySize.y / 2); - super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(h + AndroidUtilities.dp(49), MeasureSpec.EXACTLY)); + super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(h + AndroidUtilities.dp(48 + 36 + (hasDescription ? 22 : 0)) + 1, MeasureSpec.EXACTLY)); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ContactAddActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ContactAddActivity.java index 2719ce944..c4a0da7b5 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ContactAddActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ContactAddActivity.java @@ -98,6 +98,8 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent user.last_name = lastNameField.getText().toString(); ContactsController.getInstance().addContact(user); finishFragment(); + SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE); + preferences.edit().putInt("spam3_" + user_id, 1).commit(); NotificationCenter.getInstance().postNotificationName(NotificationCenter.updateInterfaces, MessagesController.UPDATE_MASK_NAME); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/DialogsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/DialogsActivity.java index a6b256bfe..c5771d909 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/DialogsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/DialogsActivity.java @@ -72,7 +72,7 @@ import org.telegram.ui.Components.PlayerView; import org.telegram.ui.Components.EmptyTextProgressView; import org.telegram.ui.Components.LayoutHelper; import org.telegram.ui.Components.RecyclerListView; -import org.telegram.ui.Components.ResourceLoader; +import org.telegram.ui.ActionBar.Theme; import java.util.ArrayList; @@ -111,9 +111,9 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. private String searchString; private long openedDialogId; - private MessagesActivityDelegate delegate; + private DialogsActivityDelegate delegate; - public interface MessagesActivityDelegate { + public interface DialogsActivityDelegate { void didSelectDialog(DialogsActivity fragment, long dialog_id, boolean param); } @@ -186,7 +186,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. searching = false; searchWas = false; - ResourceLoader.loadRecources(context); + Theme.loadRecources(context); ActionBarMenu menu = actionBar.createMenu(); if (!onlySelect && searchString == null) { @@ -625,7 +625,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. textView = new TextView(context); String help = LocaleController.getString("NoChatsHelp", R.string.NoChatsHelp); if (AndroidUtilities.isTablet() && !AndroidUtilities.isSmallTablet()) { - help = help.replace("\n", " "); + help = help.replace('\n', ' '); } textView.setText(help); textView.setTextColor(0xff959595); @@ -1011,7 +1011,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. } } - public void setDelegate(MessagesActivityDelegate delegate) { + public void setDelegate(DialogsActivityDelegate delegate) { this.delegate = delegate; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/DocumentSelectActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/DocumentSelectActivity.java index db9e4887c..1e93dd0a3 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/DocumentSelectActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/DocumentSelectActivity.java @@ -33,6 +33,7 @@ import org.telegram.messenger.FileLog; import org.telegram.messenger.LocaleController; import org.telegram.messenger.R; import org.telegram.ui.ActionBar.BackDrawable; +import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Adapters.BaseFragmentAdapter; import org.telegram.ui.ActionBar.ActionBar; import org.telegram.ui.ActionBar.ActionBarMenu; @@ -186,7 +187,7 @@ public class DocumentSelectActivity extends BaseFragment { }); actionMode.addView(selectedMessagesCountTextView, LayoutHelper.createLinear(0, LayoutHelper.MATCH_PARENT, 1.0f, 65, 0, 0, 0)); - actionModeViews.add(actionMode.addItem(done, R.drawable.ic_ab_done_gray, R.drawable.bar_selector_mode, null, AndroidUtilities.dp(54))); + actionModeViews.add(actionMode.addItem(done, R.drawable.ic_ab_done_gray, Theme.ACTION_BAR_MODE_SELECTOR_COLOR, null, AndroidUtilities.dp(54))); fragmentView = getParentActivity().getLayoutInflater().inflate(R.layout.document_select_layout, null, false); listAdapter = new ListAdapter(context); @@ -453,8 +454,9 @@ public class DocumentSelectActivity extends BaseFragment { }*/ } }); - for (File file : files) { - if (file.getName().startsWith(".")) { + for (int a = 0; a < files.length; a++) { + File file = files[a]; + if (file.getName().indexOf('.') == 0) { continue; } ListItem item = new ListItem(); @@ -514,7 +516,7 @@ public class DocumentSelectActivity extends BaseFragment { String defaultPathState = Environment.getExternalStorageState(); if (defaultPathState.equals(Environment.MEDIA_MOUNTED) || defaultPathState.equals(Environment.MEDIA_MOUNTED_READ_ONLY)) { ListItem ext = new ListItem(); - if (Build.VERSION.SDK_INT < 9 || Environment.isExternalStorageRemovable()) { + if (Environment.isExternalStorageRemovable()) { ext.title = LocaleController.getString("SdCard", R.string.SdCard); ext.icon = R.drawable.ic_external_storage; } else { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/IdenticonActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/IdenticonActivity.java index 80409c3fd..401a1b005 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/IdenticonActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/IdenticonActivity.java @@ -39,6 +39,7 @@ import org.telegram.ui.ActionBar.ActionBar; import org.telegram.ui.ActionBar.BaseFragment; import org.telegram.ui.Components.IdenticonDrawable; import org.telegram.ui.Components.LayoutHelper; +import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Components.URLSpanReplacement; public class IdenticonActivity extends BaseFragment { @@ -114,7 +115,7 @@ public class IdenticonActivity extends BaseFragment { textView.setClickable(true); textView.setMovementMethod(new LinkMovementMethodMy()); //textView.setAutoLinkMask(Linkify.WEB_URLS); - textView.setLinkTextColor(0xff316f9f); + textView.setLinkTextColor(Theme.MSG_LINK_TEXT_COLOR); textView.setGravity(Gravity.CENTER); frameLayout.addView(textView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/IntroActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/IntroActivity.java index 006bc6b22..05755ec14 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/IntroActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/IntroActivity.java @@ -32,6 +32,7 @@ import org.telegram.messenger.BuildVars; import org.telegram.messenger.LocaleController; import org.telegram.messenger.R; import org.telegram.tgnet.ConnectionsManager; +import org.telegram.ui.ActionBar.Theme; public class IntroActivity extends Activity { @@ -50,6 +51,7 @@ public class IntroActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { setTheme(R.style.Theme_TMessages); super.onCreate(savedInstanceState); + Theme.loadRecources(this); requestWindowFeature(Window.FEATURE_NO_TITLE); if (AndroidUtilities.isTablet()) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java index e42fabcfe..d636ea4bd 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java @@ -47,18 +47,19 @@ import org.telegram.PhoneFormat.PhoneFormat; import org.telegram.messenger.ChatObject; import org.telegram.messenger.ContactsController; import org.telegram.messenger.ImageLoader; +import org.telegram.messenger.MessageObject; import org.telegram.messenger.MessagesController; import org.telegram.messenger.MessagesStorage; import org.telegram.messenger.NativeCrashManager; import org.telegram.messenger.SendMessagesHelper; import org.telegram.messenger.UserObject; import org.telegram.messenger.Utilities; -import org.telegram.messenger.query.StickersQuery; import org.telegram.messenger.ApplicationLoader; import org.telegram.messenger.FileLog; import org.telegram.messenger.LocaleController; import org.telegram.messenger.NotificationCenter; import org.telegram.messenger.R; +import org.telegram.messenger.browser.Browser; import org.telegram.tgnet.ConnectionsManager; import org.telegram.tgnet.RequestDelegate; import org.telegram.tgnet.TLObject; @@ -70,15 +71,18 @@ import org.telegram.ui.ActionBar.BaseFragment; import org.telegram.ui.ActionBar.DrawerLayoutContainer; import org.telegram.ui.Components.LayoutHelper; import org.telegram.ui.Components.PasscodeView; +import org.telegram.ui.Components.StickersAlert; +import org.telegram.ui.ActionBar.Theme; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; -public class LaunchActivity extends Activity implements ActionBarLayout.ActionBarLayoutDelegate, NotificationCenter.NotificationCenterDelegate, DialogsActivity.MessagesActivityDelegate { +public class LaunchActivity extends Activity implements ActionBarLayout.ActionBarLayoutDelegate, NotificationCenter.NotificationCenterDelegate, DialogsActivity.DialogsActivityDelegate { private boolean finished; private String videoPath; @@ -144,6 +148,7 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa getWindow().setBackgroundDrawableResource(R.drawable.transparent); super.onCreate(savedInstanceState); + Theme.loadRecources(this); if (UserConfig.passcodeHash.length() != 0 && UserConfig.appLocked) { UserConfig.lastPauseTime = ConnectionsManager.getInstance().getCurrentTime(); @@ -329,7 +334,7 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa presentFragment(new SettingsActivity()); drawerLayoutContainer.closeDrawer(false); } else if (position == 9) { - AndroidUtilities.openUrl(LaunchActivity.this, LocaleController.getString("TelegramFaqUrl", R.string.TelegramFaqUrl)); + Browser.openUrl(LaunchActivity.this, LocaleController.getString("TelegramFaqUrl", R.string.TelegramFaqUrl)); drawerLayoutContainer.closeDrawer(false); } } @@ -357,6 +362,7 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa NotificationCenter.getInstance().addObserver(this, NotificationCenter.closeOtherAppActivities); NotificationCenter.getInstance().addObserver(this, NotificationCenter.didUpdatedConnectionState); NotificationCenter.getInstance().addObserver(this, NotificationCenter.needShowAlert); + NotificationCenter.getInstance().addObserver(this, NotificationCenter.wasUnableToFindCurrentLocation); if (Build.VERSION.SDK_INT < 14) { NotificationCenter.getInstance().addObserver(this, NotificationCenter.screenStateChanged); } @@ -607,22 +613,24 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa error = true; } } else { - if ((type == null || type != null && (type.equals("text/plain") || type.equals("message/rfc822"))) && (intent.getStringExtra(Intent.EXTRA_TEXT) != null || intent.getCharSequenceExtra(Intent.EXTRA_TEXT) != null)) { - String text = intent.getStringExtra(Intent.EXTRA_TEXT); - if (text == null) { - text = intent.getCharSequenceExtra(Intent.EXTRA_TEXT).toString(); - } - String subject = intent.getStringExtra(Intent.EXTRA_SUBJECT); - - if (text != null && text.length() != 0) { - if ((text.startsWith("http://") || text.startsWith("https://")) && subject != null && subject.length() != 0) { - text = subject + "\n" + text; - } - sendingText = text; - } else if (subject != null && subject.length() > 0) { - sendingText = subject; + String text = intent.getStringExtra(Intent.EXTRA_TEXT); + if (text == null) { + CharSequence textSequence = intent.getCharSequenceExtra(Intent.EXTRA_TEXT); + if (textSequence != null) { + text = textSequence.toString(); } } + String subject = intent.getStringExtra(Intent.EXTRA_SUBJECT); + + if (text != null && text.length() != 0) { + if ((text.startsWith("http://") || text.startsWith("https://")) && subject != null && subject.length() != 0) { + text = subject + "\n" + text; + } + sendingText = text; + } else if (subject != null && subject.length() > 0) { + sendingText = subject; + } + Parcelable parcelable = intent.getParcelableExtra(Intent.EXTRA_STREAM); if (parcelable != null) { String path; @@ -631,11 +639,8 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa } Uri uri = (Uri) parcelable; if (uri != null) { - if (ContentResolver.SCHEME_FILE.equals(uri.getScheme())) { - String pathString = Utilities.readlink(uri.getPath()); - if (pathString != null && pathString.contains("/data/data/" + getPackageName() + "/files")) { - error = true; - } + if (isInternalUri(uri)) { + error = true; } } if (!error) { @@ -694,12 +699,9 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa } Uri uri = (Uri) parcelable; if (uri != null) { - if (ContentResolver.SCHEME_FILE.equals(uri.getScheme())) { - String pathString = Utilities.readlink(uri.getPath()); - if (pathString != null && pathString.contains("/data/data/" + getPackageName() + "/files")) { - uris.remove(a); - a--; - } + if (isInternalUri(uri)) { + uris.remove(a); + a--; } } } @@ -1030,6 +1032,21 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa return false; } + private boolean isInternalUri(Uri uri) { + String pathString = uri.getPath(); + if (pathString == null) { + return false; + } + while (true) { + String newPath = Utilities.readlink(pathString); + if (newPath == null || newPath.equals(pathString)) { + break; + } + pathString = newPath; + } + return pathString != null && pathString.toLowerCase().contains("/data/data/" + getPackageName() + "/files"); + } + private void runLinkRequest(final String username, final String group, final String sticker, final String botUser, final String botChat, final String message, final boolean hasUrl, final Integer messageId, final int state) { final ProgressDialog progressDialog = new ProgressDialog(this); progressDialog.setMessage(LocaleController.getString("Loading", R.string.Loading)); @@ -1073,7 +1090,7 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa args.putInt("dialogsType", 2); args.putString("addToGroupAlertString", LocaleController.formatString("AddToTheGroupTitle", R.string.AddToTheGroupTitle, UserObject.getUserName(user), "%1$s")); DialogsActivity fragment = new DialogsActivity(args); - fragment.setDelegate(new DialogsActivity.MessagesActivityDelegate() { + fragment.setDelegate(new DialogsActivity.DialogsActivityDelegate() { @Override public void didSelectDialog(DialogsActivity fragment, long did, boolean param) { Bundle args = new Bundle(); @@ -1088,22 +1105,32 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa }); presentFragment(fragment); } else { + long dialog_id; + boolean isBot = false; Bundle args = new Bundle(); if (!res.chats.isEmpty()) { args.putInt("chat_id", res.chats.get(0).id); + dialog_id = -res.chats.get(0).id; } else { args.putInt("user_id", res.users.get(0).id); + dialog_id = res.users.get(0).id; } if (botUser != null && res.users.size() > 0 && res.users.get(0).bot) { args.putString("botUser", botUser); + isBot = true; } if (messageId != null) { args.putInt("message_id", messageId); } - if (mainFragmentsStack.isEmpty() || MessagesController.checkCanOpenChat(args, mainFragmentsStack.get(mainFragmentsStack.size() - 1))) { - ChatActivity fragment = new ChatActivity(args); - NotificationCenter.getInstance().postNotificationName(NotificationCenter.closeChats); - actionBarLayout.presentFragment(fragment, false, true, true); + BaseFragment lastFragment = !mainFragmentsStack.isEmpty() ? mainFragmentsStack.get(mainFragmentsStack.size() - 1) : null; + if (lastFragment == null || MessagesController.checkCanOpenChat(args, lastFragment)) { + if (isBot && lastFragment != null && lastFragment instanceof ChatActivity && ((ChatActivity) lastFragment).getDialogId() == dialog_id) { + ((ChatActivity) lastFragment).setBotUser(botUser); + } else { + ChatActivity fragment = new ChatActivity(args); + NotificationCenter.getInstance().postNotificationName(NotificationCenter.closeChats); + actionBarLayout.presentFragment(fragment, false, true, true); + } } } } else { @@ -1241,14 +1268,14 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa if (!mainFragmentsStack.isEmpty()) { TLRPC.TL_inputStickerSetShortName stickerset = new TLRPC.TL_inputStickerSetShortName(); stickerset.short_name = sticker; - StickersQuery.loadStickers(mainFragmentsStack.get(0), stickerset); + mainFragmentsStack.get(mainFragmentsStack.size() - 1).showDialog(new StickersAlert(LaunchActivity.this, stickerset, null, null)); } return; } else if (message != null) { Bundle args = new Bundle(); args.putBoolean("onlySelect", true); DialogsActivity fragment = new DialogsActivity(args); - fragment.setDelegate(new DialogsActivity.MessagesActivityDelegate() { + fragment.setDelegate(new DialogsActivity.DialogsActivityDelegate() { @Override public void didSelectDialog(DialogsActivity fragment, long did, boolean param) { Bundle args = new Bundle(); @@ -1391,7 +1418,7 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa } if (contactsToSend != null && !contactsToSend.isEmpty()) { for (TLRPC.User user : contactsToSend) { - SendMessagesHelper.getInstance().sendMessage(user, dialog_id, null, true); + SendMessagesHelper.getInstance().sendMessage(user, dialog_id, null, true, null, null); } } } @@ -1419,6 +1446,7 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa NotificationCenter.getInstance().removeObserver(this, NotificationCenter.closeOtherAppActivities); NotificationCenter.getInstance().removeObserver(this, NotificationCenter.didUpdatedConnectionState); NotificationCenter.getInstance().removeObserver(this, NotificationCenter.needShowAlert); + NotificationCenter.getInstance().removeObserver(this, NotificationCenter.wasUnableToFindCurrentLocation); if (Build.VERSION.SDK_INT < 14) { NotificationCenter.getInstance().removeObserver(this, NotificationCenter.screenStateChanged); } @@ -1434,7 +1462,7 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa public void needLayout() { if (AndroidUtilities.isTablet()) { - RelativeLayout.LayoutParams relativeLayoutParams = (RelativeLayout.LayoutParams)layersActionBarLayout.getLayoutParams(); + RelativeLayout.LayoutParams relativeLayoutParams = (RelativeLayout.LayoutParams) layersActionBarLayout.getLayoutParams(); relativeLayoutParams.leftMargin = (AndroidUtilities.displaySize.x - relativeLayoutParams.width) / 2; int y = (Build.VERSION.SDK_INT >= 21 ? AndroidUtilities.statusBarHeight : 0); relativeLayoutParams.topMargin = y + (AndroidUtilities.displaySize.y - relativeLayoutParams.height - y) / 2; @@ -1463,11 +1491,14 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa relativeLayoutParams.leftMargin = leftWidth; rightActionBarLayout.setLayoutParams(relativeLayoutParams); - if (AndroidUtilities.isSmallTablet() && actionBarLayout.fragmentsStack.size() == 2) { - BaseFragment chatFragment = actionBarLayout.fragmentsStack.get(1); - chatFragment.onPause(); - actionBarLayout.fragmentsStack.remove(1); - rightActionBarLayout.fragmentsStack.add(chatFragment); + if (AndroidUtilities.isSmallTablet() && actionBarLayout.fragmentsStack.size() >= 2) { + for (int a = 1; a < actionBarLayout.fragmentsStack.size(); a++) { + BaseFragment chatFragment = actionBarLayout.fragmentsStack.get(a); + chatFragment.onPause(); + actionBarLayout.fragmentsStack.remove(a); + rightActionBarLayout.fragmentsStack.add(chatFragment); + a--; + } if (passcodeView.getVisibility() != View.VISIBLE) { actionBarLayout.showLastFragment(); rightActionBarLayout.showLastFragment(); @@ -1489,12 +1520,14 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa rightActionBarLayout.setVisibility(View.GONE); backgroundTablet.setVisibility(!actionBarLayout.fragmentsStack.isEmpty() ? View.GONE : View.VISIBLE); - if (rightActionBarLayout.fragmentsStack.size() == 1) { - BaseFragment chatFragment = rightActionBarLayout.fragmentsStack.get(0); - chatFragment.onPause(); - rightActionBarLayout.fragmentsStack.remove(0); - actionBarLayout.fragmentsStack.add(chatFragment); - //actionBarLayout.addFragmentToStack(chatFragment); + if (!rightActionBarLayout.fragmentsStack.isEmpty()) { + for (int a = 0; a < rightActionBarLayout.fragmentsStack.size(); a++) { + BaseFragment chatFragment = rightActionBarLayout.fragmentsStack.get(a); + chatFragment.onPause(); + rightActionBarLayout.fragmentsStack.remove(a); + actionBarLayout.fragmentsStack.add(chatFragment); + a--; + } if (passcodeView.getVisibility() != View.VISIBLE) { actionBarLayout.showLastFragment(); } @@ -1628,6 +1661,18 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa AndroidUtilities.unregisterUpdates(); } + @Override + protected void onStart() { + super.onStart(); + Browser.bindCustomTabsService(this); + } + + @Override + protected void onStop() { + super.onStop(); + Browser.unbindCustomTabsService(this); + } + @Override protected void onDestroy() { PhotoViewer.getInstance().destroyPhotoViewer(); @@ -1743,7 +1788,9 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa builder.setNegativeButton(LocaleController.getString("MoreInfo", R.string.MoreInfo), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { - AndroidUtilities.openUrl(LaunchActivity.this, LocaleController.getString("NobodyLikesSpamUrl", R.string.NobodyLikesSpamUrl)); + if (!mainFragmentsStack.isEmpty()) { + MessagesController.openByUserName("spambot", mainFragmentsStack.get(mainFragmentsStack.size() - 1), 1); + } } }); } @@ -1757,6 +1804,38 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa if (!mainFragmentsStack.isEmpty()) { mainFragmentsStack.get(mainFragmentsStack.size() - 1).showDialog(builder.create()); } + } else if (id == NotificationCenter.wasUnableToFindCurrentLocation) { + final HashMap waitingForLocation = (HashMap) args[0]; + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); + builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), null); + builder.setNegativeButton(LocaleController.getString("ShareYouLocationUnableManually", R.string.ShareYouLocationUnableManually), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + if (mainFragmentsStack.isEmpty()) { + return; + } + BaseFragment lastFragment = mainFragmentsStack.get(mainFragmentsStack.size() - 1); + if (!AndroidUtilities.isGoogleMapsInstalled(lastFragment)) { + return; + } + LocationActivity fragment = new LocationActivity(); + fragment.setDelegate(new LocationActivity.LocationActivityDelegate() { + @Override + public void didSelectLocation(TLRPC.MessageMedia location) { + for (HashMap.Entry entry : waitingForLocation.entrySet()) { + MessageObject messageObject = entry.getValue(); + SendMessagesHelper.getInstance().sendMessage(location, messageObject.getDialogId(), messageObject, false, null, null); + } + } + }); + presentFragment(fragment); + } + }); + builder.setMessage(LocaleController.getString("ShareYouLocationUnable", R.string.ShareYouLocationUnable)); + if (!mainFragmentsStack.isEmpty()) { + mainFragmentsStack.get(mainFragmentsStack.size() - 1).showDialog(builder.create()); + } } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LocationActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LocationActivity.java index 5c8e98130..78bc7cb0d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LocationActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LocationActivity.java @@ -363,6 +363,15 @@ public class LocationActivity extends BaseFragment implements NotificationCenter routeButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { + if (Build.VERSION.SDK_INT >= 23) { + Activity activity = getParentActivity(); + if (activity != null) { + if (activity.checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { + showPermissionAlert(true); + return; + } + } + } if (myLocation != null) { try { Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(String.format(Locale.US, "http://maps.google.com/maps?saddr=%f,%f&daddr=%f,%f", myLocation.getLatitude(), myLocation.getLongitude(), messageObject.messageOwner.media.geo.lat, messageObject.messageOwner.media.geo._long))); @@ -382,7 +391,7 @@ public class LocationActivity extends BaseFragment implements NotificationCenter Activity activity = getParentActivity(); if (activity != null) { if (activity.checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { - showPermissionAlert(); + showPermissionAlert(true); return; } } @@ -539,7 +548,7 @@ public class LocationActivity extends BaseFragment implements NotificationCenter Activity activity = getParentActivity(); if (activity != null) { if (activity.checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { - showPermissionAlert(); + showPermissionAlert(false); return; } } @@ -646,13 +655,17 @@ public class LocationActivity extends BaseFragment implements NotificationCenter return fragmentView; } - private void showPermissionAlert() { + private void showPermissionAlert(boolean byButton) { if (getParentActivity() == null) { return; } AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); - builder.setMessage(LocaleController.getString("PermissionNoLocation", R.string.PermissionNoLocation)); + if (byButton) { + builder.setMessage(LocaleController.getString("PermissionNoLocationPosition", R.string.PermissionNoLocationPosition)); + } else { + builder.setMessage(LocaleController.getString("PermissionNoLocation", R.string.PermissionNoLocation)); + } builder.setNegativeButton(LocaleController.getString("PermissionOpenSettings", R.string.PermissionOpenSettings), new DialogInterface.OnClickListener() { @TargetApi(Build.VERSION_CODES.GINGERBREAD) @Override @@ -935,6 +948,13 @@ public class LocationActivity extends BaseFragment implements NotificationCenter FileLog.e("tmessages", e); } } + if (googleMap != null) { + try { + googleMap.setMyLocationEnabled(true); + } catch (Exception e) { + FileLog.e("tmessages", e); + } + } updateUserData(); fixLayoutInternal(true); if (checkPermission && Build.VERSION.SDK_INT >= 23) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LoginActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LoginActivity.java index bb6491688..7dc0183ad 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LoginActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LoginActivity.java @@ -290,7 +290,7 @@ public class LoginActivity extends BaseFragment { @Override protected void onDialogDismiss(Dialog dialog) { - if (Build.VERSION.SDK_INT >= 23 && dialog == permissionsDialog && !permissionsItems.isEmpty()) { + if (Build.VERSION.SDK_INT >= 23 && dialog == permissionsDialog && !permissionsItems.isEmpty() && getParentActivity() != null) { getParentActivity().requestPermissions(permissionsItems.toArray(new String[permissionsItems.size()]), 6); } } @@ -906,7 +906,7 @@ public class LoginActivity extends BaseFragment { req.api_hash = BuildVars.APP_HASH; req.api_id = BuildVars.APP_ID; req.phone_number = phone; - req.lang_code = LocaleController.getLocaleString(LocaleController.getInstance().getSystemDefaultLocale()); + req.lang_code = LocaleController.getLocaleStringIso639(); if (req.lang_code.length() == 0) { req.lang_code = "en"; } @@ -1339,7 +1339,7 @@ public class LoginActivity extends BaseFragment { timeText.setText(LocaleController.formatString("SmsText", R.string.SmsText, 1, 0)); } createTimer(); - } else if (currentType == 2 && nextType == 4) { + } else if (currentType == 2 && (nextType == 4 || nextType == 3)) { timeText.setVisibility(VISIBLE); timeText.setText(LocaleController.formatString("CallText", R.string.CallText, 2, 0)); problemText.setVisibility(time < 1000 ? VISIBLE : GONE); @@ -1412,7 +1412,7 @@ public class LoginActivity extends BaseFragment { if (time >= 1000) { int minutes = time / 1000 / 60; int seconds = time / 1000 - minutes * 60; - if (nextType == 4) { + if (nextType == 4 || nextType == 3) { timeText.setText(LocaleController.formatString("CallText", R.string.CallText, minutes, seconds)); } else if (nextType == 2) { timeText.setText(LocaleController.formatString("SmsText", R.string.SmsText, minutes, seconds)); @@ -1431,25 +1431,33 @@ public class LoginActivity extends BaseFragment { waitingForEvent = false; destroyCodeTimer(); resendCode(); - } else { - timeText.setText(LocaleController.getString("Calling", R.string.Calling)); - createCodeTimer(); - TLRPC.TL_auth_resendCode req = new TLRPC.TL_auth_resendCode(); - req.phone_number = requestPhone; - req.phone_code_hash = phoneHash; - ConnectionsManager.getInstance().sendRequest(req, new RequestDelegate() { - @Override - public void run(TLObject response, final TLRPC.TL_error error) { - if (error != null && error.text != null) { - AndroidUtilities.runOnUIThread(new Runnable() { - @Override - public void run() { - lastError = error.text; - } - }); + } else if (currentType == 2) { + if (nextType == 4) { + timeText.setText(LocaleController.getString("Calling", R.string.Calling)); + createCodeTimer(); + TLRPC.TL_auth_resendCode req = new TLRPC.TL_auth_resendCode(); + req.phone_number = requestPhone; + req.phone_code_hash = phoneHash; + ConnectionsManager.getInstance().sendRequest(req, new RequestDelegate() { + @Override + public void run(TLObject response, final TLRPC.TL_error error) { + if (error != null && error.text != null) { + AndroidUtilities.runOnUIThread(new Runnable() { + @Override + public void run() { + lastError = error.text; + } + }); + } } - } - }, ConnectionsManager.RequestFlagFailOnServerErrors | ConnectionsManager.RequestFlagWithoutLogin); + }, ConnectionsManager.RequestFlagFailOnServerErrors | ConnectionsManager.RequestFlagWithoutLogin); + } else if (nextType == 3) { + AndroidUtilities.setWaitingForSms(false); + NotificationCenter.getInstance().removeObserver(this, NotificationCenter.didReceiveSmsCode); + waitingForEvent = false; + destroyCodeTimer(); + resendCode(); + } } } } @@ -1559,7 +1567,7 @@ public class LoginActivity extends BaseFragment { destroyCodeTimer(); } else { needHideProgress(); - if (currentType == 3 && (nextType == 4 || nextType == 2) || currentType == 2 && nextType == 4) { + if (currentType == 3 && (nextType == 4 || nextType == 2) || currentType == 2 && (nextType == 4 || nextType == 3)) { createTimer(); } if (currentType == 2) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ManageSpaceActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ManageSpaceActivity.java index a2e77c3d8..65430d061 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ManageSpaceActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ManageSpaceActivity.java @@ -33,6 +33,7 @@ import org.telegram.ui.ActionBar.ActionBarLayout; import org.telegram.ui.ActionBar.BaseFragment; import org.telegram.ui.ActionBar.DrawerLayoutContainer; import org.telegram.ui.Components.LayoutHelper; +import org.telegram.ui.ActionBar.Theme; import java.util.ArrayList; @@ -56,6 +57,7 @@ public class ManageSpaceActivity extends Activity implements ActionBarLayout.Act getWindow().setBackgroundDrawableResource(R.drawable.transparent); super.onCreate(savedInstanceState); + Theme.loadRecources(this); int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android"); if (resourceId > 0) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/MediaActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/MediaActivity.java index 76553ab3f..716dea31e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/MediaActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/MediaActivity.java @@ -42,6 +42,7 @@ import org.telegram.messenger.ChatObject; import org.telegram.messenger.LocaleController; import org.telegram.messenger.MediaController; import org.telegram.messenger.MessagesController; +import org.telegram.messenger.browser.Browser; import org.telegram.messenger.query.SharedMediaQuery; import org.telegram.messenger.ApplicationLoader; import org.telegram.messenger.FileLoader; @@ -60,6 +61,7 @@ import org.telegram.ui.ActionBar.ActionBarPopupWindow; import org.telegram.ui.ActionBar.ActionBar; import org.telegram.ui.ActionBar.BackDrawable; import org.telegram.ui.ActionBar.BottomSheet; +import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Adapters.BaseFragmentAdapter; import org.telegram.ui.Adapters.BaseSectionsAdapter; import org.telegram.messenger.AnimationCompat.AnimatorSetProxy; @@ -336,7 +338,7 @@ public class MediaActivity extends BaseFragment implements NotificationCenter.No args.putBoolean("onlySelect", true); args.putInt("dialogsType", 1); DialogsActivity fragment = new DialogsActivity(args); - fragment.setDelegate(new DialogsActivity.MessagesActivityDelegate() { + fragment.setDelegate(new DialogsActivity.DialogsActivityDelegate() { @Override public void didSelectDialog(DialogsActivity fragment, long did, boolean param) { int lower_part = (int) did; @@ -442,7 +444,7 @@ public class MediaActivity extends BaseFragment implements NotificationCenter.No searchItem.getSearchField().setHint(LocaleController.getString("Search", R.string.Search)); searchItem.setVisibility(View.GONE); - dropDownContainer = new ActionBarMenuItem(context, menu, R.drawable.bar_selector); + dropDownContainer = new ActionBarMenuItem(context, menu, 0); dropDownContainer.setSubMenuOpenSide(1); dropDownContainer.addSubItem(shared_media_item, LocaleController.getString("SharedMediaTitle", R.string.SharedMediaTitle), 0); dropDownContainer.addSubItem(files_item, LocaleController.getString("DocumentsTitle", R.string.DocumentsTitle), 0); @@ -491,9 +493,9 @@ public class MediaActivity extends BaseFragment implements NotificationCenter.No actionMode.addView(selectedMessagesCountTextView, LayoutHelper.createLinear(0, LayoutHelper.MATCH_PARENT, 1.0f, 65, 0, 0, 0)); if ((int) dialog_id != 0) { - actionModeViews.add(actionMode.addItem(forward, R.drawable.ic_ab_fwd_forward, R.drawable.bar_selector_mode, null, AndroidUtilities.dp(54))); + actionModeViews.add(actionMode.addItem(forward, R.drawable.ic_ab_fwd_forward, Theme.ACTION_BAR_MODE_SELECTOR_COLOR, null, AndroidUtilities.dp(54))); } - actionModeViews.add(actionMode.addItem(delete, R.drawable.ic_ab_fwd_delete, R.drawable.bar_selector_mode, null, AndroidUtilities.dp(54))); + actionModeViews.add(actionMode.addItem(delete, R.drawable.ic_ab_fwd_delete, Theme.ACTION_BAR_MODE_SELECTOR_COLOR, null, AndroidUtilities.dp(54))); photoVideoAdapter = new SharedPhotoVideoAdapter(context); documentsAdapter = new SharedDocumentsAdapter(context, 1); @@ -516,7 +518,7 @@ public class MediaActivity extends BaseFragment implements NotificationCenter.No @Override public void onItemClick(AdapterView adapterView, View view, final int i, long l) { if ((selectedMode == 1 || selectedMode == 4) && view instanceof SharedDocumentCell) { - MediaActivity.this.onItemClick(i, view, ((SharedDocumentCell) view).getDocument(), 0); + MediaActivity.this.onItemClick(i, view, ((SharedDocumentCell) view).getMessage(), 0); } else if (selectedMode == 3 && view instanceof SharedLinkCell) { MediaActivity.this.onItemClick(i, view, ((SharedLinkCell) view).getMessage(), 0); } @@ -564,7 +566,7 @@ public class MediaActivity extends BaseFragment implements NotificationCenter.No public boolean onItemLongClick(AdapterView parent, View view, int i, long id) { if ((selectedMode == 1 || selectedMode == 4) && view instanceof SharedDocumentCell) { SharedDocumentCell cell = (SharedDocumentCell) view; - MessageObject message = cell.getDocument(); + MessageObject message = cell.getMessage(); return MediaActivity.this.onItemLongClick(message, view, 0); } else if (selectedMode == 3 && view instanceof SharedLinkCell) { SharedLinkCell cell = (SharedLinkCell) view; @@ -1064,7 +1066,7 @@ public class MediaActivity extends BaseFragment implements NotificationCenter.No } } File f = null; - String fileName = message.messageOwner.media != null ? FileLoader.getAttachFileName(message.messageOwner.media.document) : ""; + String fileName = message.messageOwner.media != null ? FileLoader.getAttachFileName(message.getDocument()) : ""; if (message.messageOwner.attachPath != null && message.messageOwner.attachPath.length() != 0) { f = new File(message.messageOwner.attachPath); } @@ -1076,12 +1078,12 @@ public class MediaActivity extends BaseFragment implements NotificationCenter.No try { Intent intent = new Intent(Intent.ACTION_VIEW); MimeTypeMap myMime = MimeTypeMap.getSingleton(); - int idx = fileName.lastIndexOf("."); + int idx = fileName.lastIndexOf('.'); if (idx != -1) { String ext = fileName.substring(idx + 1); realMimeType = myMime.getMimeTypeFromExtension(ext.toLowerCase()); if (realMimeType == null) { - realMimeType = message.messageOwner.media.document.mime_type; + realMimeType = message.getDocument().mime_type; if (realMimeType == null || realMimeType.length() == 0) { realMimeType = null; } @@ -1111,15 +1113,15 @@ public class MediaActivity extends BaseFragment implements NotificationCenter.No AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), null); - builder.setMessage(LocaleController.formatString("NoHandleAppInstalled", R.string.NoHandleAppInstalled, message.messageOwner.media.document.mime_type)); + builder.setMessage(LocaleController.formatString("NoHandleAppInstalled", R.string.NoHandleAppInstalled, message.getDocument().mime_type)); showDialog(builder.create()); } } } else if (!cell.isLoading()) { - FileLoader.getInstance().loadFile(cell.getDocument().messageOwner.media.document, false, false); + FileLoader.getInstance().loadFile(cell.getMessage().getDocument(), false, false); cell.updateFileExistIcon(); } else { - FileLoader.getInstance().cancelLoadFile(cell.getDocument().messageOwner.media.document); + FileLoader.getInstance().cancelLoadFile(cell.getMessage().getDocument()); cell.updateFileExistIcon(); } } @@ -1139,7 +1141,7 @@ public class MediaActivity extends BaseFragment implements NotificationCenter.No link = ((SharedLinkCell) view).getLink(0); } if (link != null) { - AndroidUtilities.openUrl(getParentActivity(), link); + Browser.openUrl(getParentActivity(), link); } } catch (Exception e) { FileLog.e("tmessages", e); @@ -1150,7 +1152,7 @@ public class MediaActivity extends BaseFragment implements NotificationCenter.No private void openWebView(TLRPC.WebPage webPage) { BottomSheet.Builder builder = new BottomSheet.Builder(getParentActivity()); - builder.setCustomView(new WebFrameLayout(getParentActivity(), builder.create(), webPage.title, webPage.url, webPage.embed_url, webPage.embed_width, webPage.embed_height)); + builder.setCustomView(new WebFrameLayout(getParentActivity(), builder.create(), webPage.site_name, webPage.description, webPage.url, webPage.embed_url, webPage.embed_width, webPage.embed_height)); builder.setUseFullWidth(true); showDialog(builder.create()); } @@ -1632,14 +1634,14 @@ public class MediaActivity extends BaseFragment implements NotificationCenter.No @Override public void run() { if (!sharedMediaData[currentType].messages.isEmpty()) { - if (currentType == 1) { + if (currentType == 1 || currentType == 4) { MessageObject messageObject = sharedMediaData[currentType].messages.get(sharedMediaData[currentType].messages.size() - 1); queryServerSearch(query, messageObject.getId(), messageObject.getDialogId()); - } else if (currentType == 3 || currentType == 4) { + } else if (currentType == 3) { queryServerSearch(query, 0, dialog_id); } } - if (currentType == 1) { + if (currentType == 1 || currentType == 4) { final ArrayList copy = new ArrayList<>(); copy.addAll(sharedMediaData[currentType].messages); Utilities.searchQueue.postRunnable(new Runnable() { @@ -1664,7 +1666,8 @@ public class MediaActivity extends BaseFragment implements NotificationCenter.No for (int a = 0; a < copy.size(); a++) { MessageObject messageObject = copy.get(a); - for (String q : search) { + for (int b = 0; b < search.length; b++) { + String q = search[b]; String name = messageObject.getDocumentName(); if (name == null || name.length() == 0) { continue; @@ -1674,6 +1677,31 @@ public class MediaActivity extends BaseFragment implements NotificationCenter.No resultArray.add(messageObject); break; } + if (currentType == 4) { + TLRPC.Document document; + if (messageObject.type == 0) { + document = messageObject.messageOwner.media.webpage.document; + } else { + document = messageObject.messageOwner.media.document; + } + boolean ok = false; + for (int c = 0; c < document.attributes.size(); c++) { + TLRPC.DocumentAttribute attribute = document.attributes.get(c); + if (attribute instanceof TLRPC.TL_documentAttributeAudio) { + if (attribute.performer != null) { + ok = attribute.performer.toLowerCase().contains(q); + } + if (!ok && attribute.title != null) { + ok = attribute.title.toLowerCase().contains(q); + } + break; + } + } + if (ok) { + resultArray.add(messageObject); + break; + } + } } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/NotificationsSettingsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/NotificationsSettingsActivity.java index 0ad05c2d7..513a21ae7 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/NotificationsSettingsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/NotificationsSettingsActivity.java @@ -57,7 +57,7 @@ public class NotificationsSettingsActivity extends BaseFragment implements Notif private boolean reseting = false; private int notificationsServiceRow; - private int messageSectionRow2; + private int notificationsServiceConnectionRow; private int messageSectionRow; private int messageAlertRow; private int messagePreviewRow; @@ -85,6 +85,7 @@ public class NotificationsSettingsActivity extends BaseFragment implements Notif private int eventsSectionRow2; private int eventsSectionRow; private int contactJoinedRow; + private int pinnedMessageRow; private int otherSectionRow2; private int otherSectionRow; private int badgeNumberRow; @@ -97,8 +98,6 @@ public class NotificationsSettingsActivity extends BaseFragment implements Notif @Override public boolean onFragmentCreate() { - notificationsServiceRow = rowCount++; - messageSectionRow2 = rowCount++; messageSectionRow = rowCount++; messageAlertRow = rowCount++; messagePreviewRow = rowCount++; @@ -138,8 +137,11 @@ public class NotificationsSettingsActivity extends BaseFragment implements Notif eventsSectionRow2 = rowCount++; eventsSectionRow = rowCount++; contactJoinedRow = rowCount++; + pinnedMessageRow = rowCount++; otherSectionRow2 = rowCount++; otherSectionRow = rowCount++; + notificationsServiceRow = rowCount++; + notificationsServiceConnectionRow = rowCount++; badgeNumberRow = rowCount++; androidAutoAlertRow = -1; repeatRow = rowCount++; @@ -319,6 +321,12 @@ public class NotificationsSettingsActivity extends BaseFragment implements Notif MessagesController.getInstance().enableJoined = !enabled; editor.putBoolean("EnableContactJoined", !enabled); editor.commit(); + } else if (i == pinnedMessageRow) { + SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE); + SharedPreferences.Editor editor = preferences.edit(); + enabled = preferences.getBoolean("PinnedMessages", true); + editor.putBoolean("PinnedMessages", !enabled); + editor.commit(); } else if (i == androidAutoAlertRow) { SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); @@ -332,14 +340,30 @@ public class NotificationsSettingsActivity extends BaseFragment implements Notif editor.putBoolean("badgeNumber", !enabled); editor.commit(); NotificationsController.getInstance().setBadgeEnabled(!enabled); + } else if (i == notificationsServiceConnectionRow) { + SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE); + enabled = preferences.getBoolean("pushConnection", true); + SharedPreferences.Editor editor = preferences.edit(); + editor.putBoolean("pushConnection", !enabled); + editor.commit(); + if (!enabled) { + ConnectionsManager.getInstance().setPushConnectionEnabled(true); + } else { + ConnectionsManager.getInstance().setPushConnectionEnabled(false); + } } else if (i == notificationsServiceRow) { final SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE); enabled = preferences.getBoolean("pushService", true); + SharedPreferences.Editor editor = preferences.edit(); + editor.putBoolean("pushService", !enabled); + editor.commit(); if (!enabled) { - final SharedPreferences.Editor editor = preferences.edit(); - editor.putBoolean("pushService", !enabled); - editor.commit(); ApplicationLoader.startPushService(); + } else { + ApplicationLoader.stopPushService(); + } + /*if (!enabled) { + } else { if (getParentActivity() == null) { return; @@ -350,7 +374,7 @@ public class NotificationsSettingsActivity extends BaseFragment implements Notif builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { - ApplicationLoader.stopPushService(); + final SharedPreferences.Editor editor = preferences.edit(); editor.putBoolean("pushService", false); editor.commit(); @@ -364,7 +388,7 @@ public class NotificationsSettingsActivity extends BaseFragment implements Notif } }); showDialog(builder.create()); - } + }*/ } else if (i == messageLedRow || i == groupLedRow) { if (getParentActivity() == null) { return; @@ -641,7 +665,7 @@ public class NotificationsSettingsActivity extends BaseFragment implements Notif public boolean isEnabled(int i) { return !(i == messageSectionRow || i == groupSectionRow || i == inappSectionRow || i == eventsSectionRow || i == otherSectionRow || i == resetSectionRow || - i == messageSectionRow2 || i == eventsSectionRow2 || i == groupSectionRow2 || + i == eventsSectionRow2 || i == groupSectionRow2 || i == inappSectionRow2 || i == otherSectionRow2 || i == resetSectionRow2); } @@ -709,11 +733,15 @@ public class NotificationsSettingsActivity extends BaseFragment implements Notif } else if (i == inappPriorityRow) { checkCell.setTextAndCheck(LocaleController.getString("NotificationsPriority", R.string.NotificationsPriority), preferences.getBoolean("EnableInAppPriority", false), false); } else if (i == contactJoinedRow) { - checkCell.setTextAndCheck(LocaleController.getString("ContactJoined", R.string.ContactJoined), preferences.getBoolean("EnableContactJoined", true), false); + checkCell.setTextAndCheck(LocaleController.getString("ContactJoined", R.string.ContactJoined), preferences.getBoolean("EnableContactJoined", true), true); + } else if (i == pinnedMessageRow) { + checkCell.setTextAndCheck(LocaleController.getString("PinnedMessages", R.string.PinnedMessages), preferences.getBoolean("PinnedMessages", true), false); } else if (i == androidAutoAlertRow) { checkCell.setTextAndCheck("Android Auto", preferences.getBoolean("EnableAutoNotifications", false), true); } else if (i == notificationsServiceRow) { - checkCell.setTextAndCheck(LocaleController.getString("NotificationsService", R.string.NotificationsService), preferences.getBoolean("pushService", true), false); + checkCell.setTextAndValueAndCheck(LocaleController.getString("NotificationsService", R.string.NotificationsService), LocaleController.getString("NotificationsServiceInfo", R.string.NotificationsServiceInfo), preferences.getBoolean("pushService", true), true, true); + } else if (i == notificationsServiceConnectionRow) { + checkCell.setTextAndValueAndCheck(LocaleController.getString("NotificationsServiceConnection", R.string.NotificationsServiceConnection), LocaleController.getString("NotificationsServiceConnectionInfo", R.string.NotificationsServiceConnectionInfo), preferences.getBoolean("pushConnection", true), true, true); } else if (i == badgeNumberRow) { checkCell.setTextAndCheck(LocaleController.getString("BadgeNumber", R.string.BadgeNumber), preferences.getBoolean("badgeNumber", true), true); } else if (i == inchatSoundRow) { @@ -837,13 +865,13 @@ public class NotificationsSettingsActivity extends BaseFragment implements Notif return 0; } else if (i == messageAlertRow || i == messagePreviewRow || i == groupAlertRow || i == groupPreviewRow || i == inappSoundRow || i == inappVibrateRow || - i == inappPreviewRow || i == contactJoinedRow || + i == inappPreviewRow || i == contactJoinedRow || i == pinnedMessageRow || i == notificationsServiceRow || i == badgeNumberRow || i == inappPriorityRow || - i == inchatSoundRow || i == androidAutoAlertRow) { + i == inchatSoundRow || i == androidAutoAlertRow || i == notificationsServiceConnectionRow) { return 1; } else if (i == messageLedRow || i == groupLedRow) { return 3; - } else if (i == messageSectionRow2 || i == eventsSectionRow2 || i == groupSectionRow2 || + } else if (i == eventsSectionRow2 || i == groupSectionRow2 || i == inappSectionRow2 || i == otherSectionRow2 || i == resetSectionRow2) { return 4; } else { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PasscodeActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/PasscodeActivity.java index e3848972d..64f5deb6c 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PasscodeActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PasscodeActivity.java @@ -53,6 +53,7 @@ import org.telegram.ui.ActionBar.ActionBar; import org.telegram.ui.ActionBar.ActionBarMenu; import org.telegram.ui.ActionBar.ActionBarMenuItem; import org.telegram.ui.ActionBar.BaseFragment; +import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Adapters.BaseFragmentAdapter; import org.telegram.ui.Cells.TextCheckCell; import org.telegram.ui.Cells.TextInfoPrivacyCell; @@ -255,7 +256,7 @@ public class PasscodeActivity extends BaseFragment implements NotificationCenter } if (type == 1) { - dropDownContainer = new ActionBarMenuItem(context, menu, R.drawable.bar_selector); + dropDownContainer = new ActionBarMenuItem(context, menu, 0); dropDownContainer.setSubMenuOpenSide(1); dropDownContainer.addSubItem(pin_item, LocaleController.getString("PasscodePIN", R.string.PasscodePIN), 0); dropDownContainer.addSubItem(password_item, LocaleController.getString("PasscodePassword", R.string.PasscodePassword), 0); @@ -362,7 +363,7 @@ public class PasscodeActivity extends BaseFragment implements NotificationCenter @Override public String format(int value) { if (value == 0) { - return LocaleController.getString("Disabled", R.string.Disabled); + return LocaleController.getString("AutoLockDisabled", R.string.AutoLockDisabled); } else if (value == 1) { return LocaleController.formatString("AutoLockInTime", R.string.AutoLockInTime, LocaleController.formatPluralString("Minutes", 1)); } else if (value == 2) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PhotoAlbumPickerActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/PhotoAlbumPickerActivity.java index 909fb7c94..c4b50be27 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PhotoAlbumPickerActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PhotoAlbumPickerActivity.java @@ -37,6 +37,7 @@ import org.telegram.ui.ActionBar.ActionBar; import org.telegram.ui.ActionBar.ActionBarMenu; import org.telegram.ui.ActionBar.ActionBarMenuItem; import org.telegram.ui.ActionBar.BaseFragment; +import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Adapters.BaseFragmentAdapter; import org.telegram.ui.Cells.PhotoPickerAlbumsCell; import org.telegram.ui.Cells.PhotoPickerSearchCell; @@ -111,8 +112,8 @@ public class PhotoAlbumPickerActivity extends BaseFragment implements Notificati @SuppressWarnings("unchecked") @Override public View createView(Context context) { - actionBar.setBackgroundColor(0xff333333); - actionBar.setItemsBackground(R.drawable.bar_selector_picker); + actionBar.setBackgroundColor(Theme.ACTION_BAR_MEDIA_PICKER_COLOR); + actionBar.setItemsBackgroundColor(Theme.ACTION_BAR_PICKER_SELECTOR_COLOR); actionBar.setBackButtonImage(R.drawable.ic_ab_back); actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { @Override @@ -160,7 +161,7 @@ public class PhotoAlbumPickerActivity extends BaseFragment implements Notificati if (!singlePhoto) { selectedMode = 0; - dropDownContainer = new ActionBarMenuItem(context, menu, R.drawable.bar_selector_picker); + dropDownContainer = new ActionBarMenuItem(context, menu, 0); dropDownContainer.setSubMenuOpenSide(1); dropDownContainer.addSubItem(item_photos, LocaleController.getString("PickerPhotos", R.string.PickerPhotos), 0); dropDownContainer.addSubItem(item_video, LocaleController.getString("PickerVideo", R.string.PickerVideo), 0); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PhotoCropActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/PhotoCropActivity.java index 95c30acc1..b3d8d6590 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PhotoCropActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PhotoCropActivity.java @@ -28,6 +28,7 @@ import org.telegram.messenger.R; import org.telegram.ui.ActionBar.ActionBar; import org.telegram.ui.ActionBar.ActionBarMenu; import org.telegram.ui.ActionBar.BaseFragment; +import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Components.LayoutHelper; import java.io.File; @@ -417,8 +418,8 @@ public class PhotoCropActivity extends BaseFragment { @Override public View createView(Context context) { - actionBar.setBackgroundColor(0xff333333); - actionBar.setItemsBackground(R.drawable.bar_selector_picker); + actionBar.setBackgroundColor(Theme.ACTION_BAR_MEDIA_PICKER_COLOR); + actionBar.setItemsBackgroundColor(Theme.ACTION_BAR_PICKER_SELECTOR_COLOR); actionBar.setBackButtonImage(R.drawable.ic_ab_back); actionBar.setAllowOverlayTitle(true); actionBar.setTitle(LocaleController.getString("CropImage", R.string.CropImage)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PhotoPickerActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/PhotoPickerActivity.java index c7cb26b90..c7d9915b8 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PhotoPickerActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PhotoPickerActivity.java @@ -60,6 +60,7 @@ import org.telegram.messenger.UserConfig; import org.telegram.messenger.Utilities; import org.telegram.ui.ActionBar.ActionBarMenu; import org.telegram.ui.ActionBar.ActionBarMenuItem; +import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Adapters.BaseFragmentAdapter; import org.telegram.ui.ActionBar.ActionBar; import org.telegram.ui.ActionBar.BaseFragment; @@ -161,8 +162,8 @@ public class PhotoPickerActivity extends BaseFragment implements NotificationCen @SuppressWarnings("unchecked") @Override public View createView(Context context) { - actionBar.setBackgroundColor(0xff333333); - actionBar.setItemsBackground(R.drawable.bar_selector_picker); + actionBar.setBackgroundColor(Theme.ACTION_BAR_MEDIA_PICKER_COLOR); + actionBar.setItemsBackgroundColor(Theme.ACTION_BAR_PICKER_SELECTOR_COLOR); actionBar.setBackButtonImage(R.drawable.ic_ab_back); if (selectedAlbum != null) { actionBar.setTitle(selectedAlbum.bucketName); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java b/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java index 9d4b170ab..9071f57d8 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java @@ -31,6 +31,8 @@ import android.os.Bundle; import android.text.SpannableStringBuilder; import android.text.TextUtils; import android.util.TypedValue; +import android.view.ActionMode; +import android.view.ContextThemeWrapper; import android.view.GestureDetector; import android.view.Gravity; import android.view.KeyEvent; @@ -67,6 +69,7 @@ import org.telegram.tgnet.TLRPC; import org.telegram.messenger.UserConfig; import org.telegram.messenger.MessageObject; import org.telegram.messenger.Utilities; +import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Adapters.MentionsAdapter; import org.telegram.messenger.AnimationCompat.AnimatorListenerAdapterProxy; import org.telegram.messenger.AnimationCompat.AnimatorSetProxy; @@ -101,6 +104,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat private boolean isVisible; private Activity parentActivity; + private Context actvityContext; private ActionBar actionBar; private boolean isActionBarVisible = true; @@ -294,7 +298,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat progressPaint = new Paint(Paint.ANTI_ALIAS_FLAG); progressPaint.setStyle(Paint.Style.STROKE); progressPaint.setStrokeCap(Paint.Cap.ROUND); - progressPaint.setStrokeWidth(AndroidUtilities.dp(2)); + progressPaint.setStrokeWidth(AndroidUtilities.dp(3)); progressPaint.setColor(0xffffffff); } parent = parentView; @@ -389,7 +393,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } if (backgroundState == 0 || backgroundState == 1 || previousBackgroundState == 0 || previousBackgroundState == 1) { - int diff = AndroidUtilities.dp(1); + int diff = AndroidUtilities.dp(4); if (previousBackgroundState != -2) { progressPaint.setAlpha((int) (255 * animatedAlphaValue * alpha)); } else { @@ -886,6 +890,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat return; } parentActivity = activity; + actvityContext = new ContextThemeWrapper(parentActivity, R.style.Theme_TMessages); if (progressDrawables == null) { progressDrawables = new Drawable[4]; @@ -911,11 +916,26 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } return super.dispatchKeyEventPreIme(event); } + + @Override + public ActionMode startActionModeForChild(View originalView, ActionMode.Callback callback, int type) { + if (Build.VERSION.SDK_INT >= 23) { + View view = parentActivity.findViewById(android.R.id.content); + if (view instanceof ViewGroup) { + try { + return ((ViewGroup) view).startActionModeForChild(originalView, callback, type); + } catch (Throwable e) { + FileLog.e("tmessages", e); + } + } + } + return super.startActionModeForChild(originalView, callback, type); + } }; windowView.setBackgroundDrawable(backgroundDrawable); windowView.setFocusable(false); if (Build.VERSION.SDK_INT >= 23) { - windowView.setFitsSystemWindows(true); //TODO ? + windowView.setFitsSystemWindows(true); } animatingImageView = new ClippingImageView(activity); @@ -935,9 +955,9 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat windowLayoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; actionBar = new ActionBar(activity); - actionBar.setBackgroundColor(0x7F000000); + actionBar.setBackgroundColor(Theme.ACTION_BAR_PHOTO_VIEWER_COLOR); actionBar.setOccupyStatusBar(false); - actionBar.setItemsBackground(R.drawable.bar_selector_white); + actionBar.setItemsBackgroundColor(Theme.ACTION_BAR_WHITE_SELECTOR_COLOR); actionBar.setBackButtonImage(R.drawable.ic_ab_back); actionBar.setTitle(LocaleController.formatString("Of", R.string.Of, 1, 1)); containerView.addView(actionBar, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); @@ -965,7 +985,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } if (f != null && f.exists()) { - MediaController.saveFile(f.toString(), parentActivity, currentMessageObject != null && currentMessageObject.isVideo() ? 1 : 0, null); + MediaController.saveFile(f.toString(), parentActivity, currentMessageObject != null && currentMessageObject.isVideo() ? 1 : 0, null, null); } else { AlertDialog.Builder builder = new AlertDialog.Builder(parentActivity); builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); @@ -1159,11 +1179,11 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat cropItem = menu.addItemWithWidth(gallery_menu_crop, R.drawable.photo_crop, AndroidUtilities.dp(56)); tuneItem = menu.addItemWithWidth(gallery_menu_tune, R.drawable.photo_tools, AndroidUtilities.dp(56)); - bottomLayout = new FrameLayout(parentActivity); + bottomLayout = new FrameLayout(actvityContext); bottomLayout.setBackgroundColor(0x7f000000); containerView.addView(bottomLayout, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.BOTTOM | Gravity.LEFT)); - captionTextViewOld = new TextView(parentActivity); + captionTextViewOld = new TextView(actvityContext); captionTextViewOld.setMaxLines(10); captionTextViewOld.setBackgroundColor(0x7f000000); captionTextViewOld.setPadding(AndroidUtilities.dp(16), AndroidUtilities.dp(8), AndroidUtilities.dp(16), AndroidUtilities.dp(8)); @@ -1174,7 +1194,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat captionTextViewOld.setVisibility(View.INVISIBLE); containerView.addView(captionTextViewOld, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.BOTTOM | Gravity.LEFT, 0, 0, 0, 48)); - captionTextView = captionTextViewNew = new TextView(parentActivity); + captionTextView = captionTextViewNew = new TextView(actvityContext); captionTextViewNew.setMaxLines(10); captionTextViewNew.setBackgroundColor(0x7f000000); captionTextViewNew.setPadding(AndroidUtilities.dp(16), AndroidUtilities.dp(8), AndroidUtilities.dp(16), AndroidUtilities.dp(8)); @@ -1195,7 +1215,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat shareButton = new ImageView(containerView.getContext()); shareButton.setImageResource(R.drawable.share); shareButton.setScaleType(ImageView.ScaleType.CENTER); - shareButton.setBackgroundResource(R.drawable.bar_selector_white); + shareButton.setBackgroundDrawable(Theme.createBarSelectorDrawable(Theme.ACTION_BAR_WHITE_SELECTOR_COLOR)); bottomLayout.addView(shareButton, LayoutHelper.createFrame(50, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.RIGHT)); shareButton.setOnClickListener(new View.OnClickListener() { @Override @@ -1261,7 +1281,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat dateTextView.setGravity(Gravity.LEFT); bottomLayout.addView(dateTextView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.TOP | Gravity.LEFT, 16, 25, 50, 0)); - pickerView = new PickerBottomLayout(parentActivity); + pickerView = new PickerBottomLayout(actvityContext); pickerView.setBackgroundColor(0x7f000000); containerView.addView(pickerView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.BOTTOM | Gravity.LEFT)); pickerView.cancelButton.setOnClickListener(new View.OnClickListener() { @@ -1282,7 +1302,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } }); - editorDoneLayout = new PickerBottomLayout(parentActivity); + editorDoneLayout = new PickerBottomLayout(actvityContext); editorDoneLayout.setBackgroundColor(0x7f000000); editorDoneLayout.updateSelectedCount(0, false); editorDoneLayout.setVisibility(View.GONE); @@ -1310,10 +1330,10 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } }); - ImageView rotateButton = new ImageView(parentActivity); + ImageView rotateButton = new ImageView(actvityContext); rotateButton.setScaleType(ImageView.ScaleType.CENTER); rotateButton.setImageResource(R.drawable.tool_rotate); - rotateButton.setBackgroundResource(R.drawable.bar_selector_white); + rotateButton.setBackgroundDrawable(Theme.createBarSelectorDrawable(Theme.ACTION_BAR_WHITE_SELECTOR_COLOR)); editorDoneLayout.addView(rotateButton, LayoutHelper.createFrame(48, 48, Gravity.CENTER)); rotateButton.setOnClickListener(new View.OnClickListener() { @Override @@ -1358,7 +1378,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } }); - captionEditText = new PhotoViewerCaptionEnterView(parentActivity, containerView); + captionEditText = new PhotoViewerCaptionEnterView(actvityContext, containerView, windowView); captionEditText.setDelegate(new PhotoViewerCaptionEnterView.PhotoViewerCaptionEnterViewDelegate() { @Override public void onCaptionEnter() { @@ -1392,8 +1412,8 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat }); containerView.addView(captionEditText, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.BOTTOM | Gravity.LEFT, 0, 0, 0, -400)); - mentionListView = new RecyclerListView(parentActivity); - mentionLayoutManager = new LinearLayoutManager(parentActivity) { + mentionListView = new RecyclerListView(actvityContext); + mentionLayoutManager = new LinearLayoutManager(actvityContext) { @Override public boolean supportsPredictiveItemAnimations() { return false; @@ -1404,12 +1424,10 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat mentionListView.setBackgroundColor(0x7f000000); mentionListView.setVisibility(View.GONE); mentionListView.setClipToPadding(true); - if (Build.VERSION.SDK_INT > 8) { - mentionListView.setOverScrollMode(ListView.OVER_SCROLL_NEVER); - } + mentionListView.setOverScrollMode(ListView.OVER_SCROLL_NEVER); containerView.addView(mentionListView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 110, Gravity.LEFT | Gravity.BOTTOM)); - mentionListView.setAdapter(mentionsAdapter = new MentionsAdapter(parentActivity, true, new MentionsAdapter.MentionsAdapterDelegate() { + mentionListView.setAdapter(mentionsAdapter = new MentionsAdapter(actvityContext, true, 0, new MentionsAdapter.MentionsAdapterDelegate() { @Override public void needChangePanelVisibility(boolean show) { if (show) { @@ -1788,7 +1806,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat imageMoveAnimation.start(); } else if (mode == 1) { if (photoCropView == null) { - photoCropView = new PhotoCropView(parentActivity); + photoCropView = new PhotoCropView(actvityContext); photoCropView.setVisibility(View.GONE); containerView.addView(photoCropView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.LEFT, 0, 0, 0, 48)); photoCropView.setDelegate(new PhotoCropView.PhotoCropViewDelegate() { @@ -2173,12 +2191,12 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } else { size[0] = -1; } - } else if (message.messageOwner.media instanceof TLRPC.TL_messageMediaDocument && message.messageOwner.media.document != null && message.messageOwner.media.document.thumb != null) { - size[0] = message.messageOwner.media.document.thumb.size; + } else if (message.getDocument() != null && message.getDocument().thumb != null) { + size[0] = message.getDocument().thumb.size; if (size[0] == 0) { size[0] = -1; } - return message.messageOwner.media.document.thumb.location; + return message.getDocument().thumb.location; } } return null; @@ -2366,7 +2384,9 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat closePhoto(false, false); return; } - currentMessageObject = imagesArr.get(currentIndex); + MessageObject newMessageObject = imagesArr.get(currentIndex); + sameImage = currentMessageObject != null && currentMessageObject.getId() == newMessageObject.getId(); + currentMessageObject = newMessageObject; isVideo = currentMessageObject.isVideo(); if (currentMessageObject.canDeleteMessage(null)) { menuItem.showSubItem(gallery_menu_delete); @@ -2391,7 +2411,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat long date = (long) currentMessageObject.messageOwner.date * 1000; String dateString = LocaleController.formatString("formatDateAtTime", R.string.formatDateAtTime, LocaleController.getInstance().formatterYear.format(new Date(date)), LocaleController.getInstance().formatterDay.format(new Date(date))); if (currentFileNames[0] != null && isVideo) { - dateTextView.setText(String.format("%s (%s)", dateString, AndroidUtilities.formatFileSize(currentMessageObject.messageOwner.media.document.size))); + dateTextView.setText(String.format("%s (%s)", dateString, AndroidUtilities.formatFileSize(currentMessageObject.getDocument().size))); } else { dateTextView.setText(dateString); } @@ -2986,6 +3006,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat AndroidUtilities.runOnUIThread(new Runnable() { @Override public void run() { + NotificationCenter.getInstance().setAllowedNotificationsDutingAnimation(new int[]{NotificationCenter.dialogsNeedReload, NotificationCenter.closeChats, NotificationCenter.mediaCountDidLoaded, NotificationCenter.mediaDidLoaded}); NotificationCenter.getInstance().setAnimationInProgress(true); animatorSet.start(); } @@ -3047,6 +3068,9 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if (parentActivity == null || !isVisible || checkAnimation() || placeProvider == null) { return; } + if (captionEditText.hideActionMode() && !fromEditMode) { + return; + } captionEditText.onDestroy(); parentChatActivity = null; @@ -3914,9 +3938,9 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } if (loadFile) { if (!FileLoader.getInstance().isLoadingFile(currentFileNames[0])) { - FileLoader.getInstance().loadFile(currentMessageObject.messageOwner.media.document, true, false); + FileLoader.getInstance().loadFile(currentMessageObject.getDocument(), true, false); } else { - FileLoader.getInstance().cancelLoadFile(currentMessageObject.messageOwner.media.document); + FileLoader.getInstance().cancelLoadFile(currentMessageObject.getDocument()); } } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PopupNotificationActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/PopupNotificationActivity.java index e63a43f7e..41e6345d3 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PopupNotificationActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PopupNotificationActivity.java @@ -63,6 +63,7 @@ import org.telegram.ui.Components.LayoutHelper; import org.telegram.ui.Components.PopupAudioView; import org.telegram.ui.Components.RecordStatusDrawable; import org.telegram.ui.Components.SizeNotifierFrameLayout; +import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Components.TypingDotsDrawable; import java.io.File; @@ -160,6 +161,7 @@ public class PopupNotificationActivity extends Activity implements NotificationC @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + Theme.loadRecources(this); int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android"); if (resourceId > 0) { @@ -347,8 +349,8 @@ public class PopupNotificationActivity extends Activity implements NotificationC actionBar = new ActionBar(this); actionBar.setOccupyStatusBar(false); actionBar.setBackButtonImage(R.drawable.ic_ab_back); - actionBar.setBackgroundColor(0xff54759e); - actionBar.setItemsBackground(R.drawable.bar_selector); + actionBar.setBackgroundColor(Theme.ACTION_BAR_COLOR); + actionBar.setItemsBackgroundColor(Theme.ACTION_BAR_SELECTOR_COLOR); popupContainer.addView(actionBar); ViewGroup.LayoutParams layoutParams = actionBar.getLayoutParams(); layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT; @@ -359,7 +361,6 @@ public class PopupNotificationActivity extends Activity implements NotificationC countText = (TextView) view.findViewById(R.id.count_text); avatarContainer = new FrameLayoutFixed(this); - avatarContainer.setBackgroundResource(R.drawable.bar_selector); avatarContainer.setPadding(AndroidUtilities.dp(4), 0, AndroidUtilities.dp(4), 0); actionBar.addView(avatarContainer); FrameLayout.LayoutParams layoutParams2 = (FrameLayout.LayoutParams) avatarContainer.getLayoutParams(); @@ -398,7 +399,7 @@ public class PopupNotificationActivity extends Activity implements NotificationC nameTextView.setLayoutParams(layoutParams2); onlineTextView = new TextView(this); - onlineTextView.setTextColor(0xffd7e8f7); + onlineTextView.setTextColor(Theme.ACTION_BAR_SUBTITLE_COLOR); onlineTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); onlineTextView.setLines(1); onlineTextView.setMaxLines(1); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java index 16ebe2f88..4ffd7be05 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java @@ -20,14 +20,13 @@ import android.content.Intent; import android.content.SharedPreferences; import android.content.res.Configuration; import android.graphics.Bitmap; +import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Outline; -import android.graphics.drawable.Drawable; +import android.graphics.Paint; import android.net.Uri; import android.os.Build; import android.os.Bundle; -import android.text.TextUtils; -import android.util.TypedValue; import android.view.Gravity; import android.view.MotionEvent; import android.view.View; @@ -38,7 +37,6 @@ import android.view.animation.AccelerateInterpolator; import android.view.animation.DecelerateInterpolator; import android.widget.FrameLayout; import android.widget.ImageView; -import android.widget.TextView; import org.telegram.messenger.AndroidUtilities; import org.telegram.PhoneFormat.PhoneFormat; @@ -70,6 +68,7 @@ import org.telegram.messenger.UserConfig; import org.telegram.messenger.Utilities; import org.telegram.ui.ActionBar.BackDrawable; import org.telegram.messenger.AnimationCompat.ViewProxy; +import org.telegram.ui.ActionBar.SimpleTextView; import org.telegram.ui.Cells.AboutLinkCell; import org.telegram.ui.Cells.DividerCell; import org.telegram.ui.Cells.EmptyCell; @@ -90,6 +89,7 @@ import org.telegram.ui.ActionBar.BaseFragment; import org.telegram.ui.Components.IdenticonDrawable; import org.telegram.ui.Components.LayoutHelper; import org.telegram.ui.Components.RecyclerListView; +import org.telegram.ui.ActionBar.Theme; import java.util.ArrayList; import java.util.Collections; @@ -97,20 +97,19 @@ import java.util.Comparator; import java.util.HashMap; import java.util.concurrent.Semaphore; -public class ProfileActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate, DialogsActivity.MessagesActivityDelegate, PhotoViewer.PhotoViewerProvider { +public class ProfileActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate, DialogsActivity.DialogsActivityDelegate, PhotoViewer.PhotoViewerProvider { private RecyclerListView listView; private LinearLayoutManager layoutManager; private ListAdapter listAdapter; private BackupImageView avatarImage; - private TextView nameTextView[] = new TextView[2]; - private TextView onlineTextView[] = new TextView[2]; + private SimpleTextView nameTextView[] = new SimpleTextView[2]; + private SimpleTextView onlineTextView[] = new SimpleTextView[2]; private ImageView writeButton; private AnimatorSetProxy writeButtonAnimation; - private View extraHeightView; - private View shadowView; private AvatarDrawable avatarDrawable; private ActionBarMenuItem animatingItem; + private TopView topView; private int user_id; private int chat_id; private long dialog_id; @@ -154,7 +153,6 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. private final static int edit_channel = 12; private final static int convert_to_supergroup = 13; - private int overscrollRow; private int emptyRow; private int emptyRowChat; private int emptyRowChat2; @@ -182,6 +180,38 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. private int addMemberRow; private int rowCount = 0; + private class TopView extends View { + + private int currentColor; + private Paint paint = new Paint(); + + public TopView(Context context) { + super(context); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec), ActionBar.getCurrentActionBarHeight() + (!AndroidUtilities.isTablet() ? AndroidUtilities.statusBarHeight : 0) + AndroidUtilities.dp(91)); + } + + @Override + public void setBackgroundColor(int color) { + if (color != currentColor) { + paint.setColor(color); + invalidate(); + } + } + + @Override + protected void onDraw(Canvas canvas) { + int height = getMeasuredHeight() - AndroidUtilities.dp(91); + canvas.drawRect(0, 0, getMeasuredWidth(), height + extraHeight, paint); + if (parentLayout != null) { + parentLayout.drawHeaderShadow(canvas, height + extraHeight); + } + } + } + public ProfileActivity(Bundle args) { super(args); } @@ -309,17 +339,25 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } @Override - public View createView(Context context) { - actionBar.setBackgroundColor(AvatarDrawable.getProfileBackColorForId(user_id != 0 || ChatObject.isChannel(chat_id) && !currentChat.megagroup ? 5 : chat_id)); - actionBar.setItemsBackground(AvatarDrawable.getButtonColorForId(user_id != 0 || ChatObject.isChannel(chat_id) && !currentChat.megagroup ? 5 : chat_id)); + protected ActionBar createActionBar(Context context) { + ActionBar actionBar = new ActionBar(context) { + @Override + public boolean onTouchEvent(MotionEvent event) { + return super.onTouchEvent(event); //TODO + } + }; + actionBar.setItemsBackgroundColor(AvatarDrawable.getButtonColorForId(user_id != 0 || ChatObject.isChannel(chat_id) && !currentChat.megagroup ? 5 : chat_id)); actionBar.setBackButtonDrawable(new BackDrawable(false)); actionBar.setCastShadows(false); actionBar.setAddToContainer(false); + actionBar.setOccupyStatusBar(!AndroidUtilities.isTablet()); + return actionBar; + } + + @Override + public View createView(Context context) { hasOwnBackground = true; extraHeight = 88; - if (AndroidUtilities.isTablet()) { - actionBar.setOccupyStatusBar(false); - } actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { @Override public void onItemClick(final int id) { @@ -358,7 +396,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. MessagesController.getInstance().blockUser(user_id); } else { MessagesController.getInstance().unblockUser(user_id); - SendMessagesHelper.getInstance().sendMessage("/start", user_id, null, null, false, false, null, null); + SendMessagesHelper.getInstance().sendMessage("/start", user_id, null, null, false, false, null, null, null); finishFragment(); } } @@ -421,7 +459,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. args.putInt("dialogsType", 2); args.putString("addToGroupAlertString", LocaleController.formatString("AddToTheGroupTitle", R.string.AddToTheGroupTitle, UserObject.getUserName(user), "%1$s")); DialogsActivity fragment = new DialogsActivity(args); - fragment.setDelegate(new DialogsActivity.MessagesActivityDelegate() { + fragment.setDelegate(new DialogsActivity.DialogsActivityDelegate() { @Override public void didSelectDialog(DialogsActivity fragment, long did, boolean param) { Bundle args = new Bundle(); @@ -482,6 +520,12 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. public boolean hasOverlappingRendering() { return false; } + + @Override + protected void onLayout(boolean changed, int left, int top, int right, int bottom) { + super.onLayout(changed, left, top, right, bottom); + checkListViewScroll(); + } }; FrameLayout frameLayout = (FrameLayout) fragmentView; @@ -491,10 +535,12 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. return false; } }; + listView.setPadding(0, AndroidUtilities.dp(88), 0, 0); listView.setBackgroundColor(0xffffffff); listView.setVerticalScrollBarEnabled(false); listView.setItemAnimator(null); listView.setLayoutAnimation(null); + listView.setClipToPadding(false); layoutManager = new LinearLayoutManager(context) { @Override public boolean supportsPredictiveItemAnimations() { @@ -550,67 +596,6 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. }); builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); showDialog(builder.create()); - } else if (position == usernameRow) { - final TLRPC.User user = MessagesController.getInstance().getUser(user_id); - if (user == null || user.username == null) { - return; - } - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); - builder.setItems(new CharSequence[]{LocaleController.getString("Copy", R.string.Copy)}, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - if (i == 0) { - try { - if (Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB) { - android.text.ClipboardManager clipboard = (android.text.ClipboardManager) ApplicationLoader.applicationContext.getSystemService(Context.CLIPBOARD_SERVICE); - clipboard.setText("@" + user.username); - } else { - android.content.ClipboardManager clipboard = (android.content.ClipboardManager) ApplicationLoader.applicationContext.getSystemService(Context.CLIPBOARD_SERVICE); - android.content.ClipData clip = android.content.ClipData.newPlainText("label", "@" + user.username); - clipboard.setPrimaryClip(clip); - } - } catch (Exception e) { - FileLog.e("tmessages", e); - } - } - } - }); - showDialog(builder.create()); - } else if (position == phoneRow) { - final TLRPC.User user = MessagesController.getInstance().getUser(user_id); - if (user == null || user.phone == null || user.phone.length() == 0 || getParentActivity() == null) { - return; - } - - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); - builder.setItems(new CharSequence[]{LocaleController.getString("Call", R.string.Call), LocaleController.getString("Copy", R.string.Copy)}, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - if (i == 0) { - try { - Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:+" + user.phone)); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - getParentActivity().startActivityForResult(intent, 500); - } catch (Exception e) { - FileLog.e("tmessages", e); - } - } else if (i == 1) { - try { - if (Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB) { - android.text.ClipboardManager clipboard = (android.text.ClipboardManager) ApplicationLoader.applicationContext.getSystemService(Context.CLIPBOARD_SERVICE); - clipboard.setText("+" + user.phone); - } else { - android.content.ClipboardManager clipboard = (android.content.ClipboardManager) ApplicationLoader.applicationContext.getSystemService(Context.CLIPBOARD_SERVICE); - android.content.ClipData clip = android.content.ClipData.newPlainText("label", "+" + user.phone); - clipboard.setPrimaryClip(clip); - } - } catch (Exception e) { - FileLog.e("tmessages", e); - } - } - } - }); - showDialog(builder.create()); } else if (position > emptyRowChat2 && position < membersEndRow) { int user_id; if (!sortedUsers.isEmpty()) { @@ -652,26 +637,6 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. args.putInt("type", 2); } presentFragment(new ChannelUsersActivity(args)); - } else if (position == channelInfoRow) { - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); - builder.setItems(new CharSequence[]{LocaleController.getString("Copy", R.string.Copy)}, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - try { - if (Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB) { - android.text.ClipboardManager clipboard = (android.text.ClipboardManager) ApplicationLoader.applicationContext.getSystemService(Context.CLIPBOARD_SERVICE); - clipboard.setText(info.about); - } else { - android.content.ClipboardManager clipboard = (android.content.ClipboardManager) ApplicationLoader.applicationContext.getSystemService(Context.CLIPBOARD_SERVICE); - android.content.ClipData clip = android.content.ClipData.newPlainText("label", info.about); - clipboard.setPrimaryClip(clip); - } - } catch (Exception e) { - FileLog.e("tmessages", e); - } - } - }); - showDialog(builder.create()); } else if (position == convertRow) { AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); builder.setMessage(LocaleController.getString("ConvertGroupAlert", R.string.ConvertGroupAlert)); @@ -684,134 +649,126 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. }); builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); showDialog(builder.create()); + } else { + processOnClickOrPress(position); } } }); - if (chat_id != 0) { - listView.setOnItemLongClickListener(new RecyclerListView.OnItemLongClickListener() { - @Override - public boolean onItemClick(View view, int position) { - if (position > emptyRowChat2 && position < membersEndRow) { - if (getParentActivity() == null) { - return false; - } - boolean allowKick = false; - boolean allowSetAdmin = false; - - final TLRPC.ChatParticipant user; - if (!sortedUsers.isEmpty()) { - user = info.participants.participants.get(sortedUsers.get(position - emptyRowChat2 - 1)); - } else { - user = info.participants.participants.get(position - emptyRowChat2 - 1); - } - selectedUser = user.user_id; - - if (ChatObject.isChannel(currentChat)) { - TLRPC.ChannelParticipant channelParticipant = ((TLRPC.TL_chatChannelParticipant) user).channelParticipant; - if (user.user_id != UserConfig.getClientUserId()) { - if (currentChat.creator) { - allowKick = true; - } else if (channelParticipant instanceof TLRPC.TL_channelParticipant) { - if (currentChat.editor || channelParticipant.inviter_id == UserConfig.getClientUserId()) { - allowKick = true; - } - } - } - TLRPC.User u = MessagesController.getInstance().getUser(user.user_id); - allowSetAdmin = channelParticipant instanceof TLRPC.TL_channelParticipant && !u.bot; - } else { - if (user.user_id != UserConfig.getClientUserId()) { - if (currentChat.creator) { - allowKick = true; - } else if (user instanceof TLRPC.TL_chatParticipant) { - if (currentChat.admin && currentChat.admins_enabled || user.inviter_id == UserConfig.getClientUserId()) { - allowKick = true; - } - } - } - } - if (!allowKick) { - return false; - } - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); - if (currentChat.megagroup && currentChat.creator && allowSetAdmin) { - CharSequence[] items = new CharSequence[]{LocaleController.getString("SetAsAdmin", R.string.SetAsAdmin), LocaleController.getString("KickFromGroup", R.string.KickFromGroup)}; - builder.setItems(items, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - if (i == 0) { - TLRPC.TL_chatChannelParticipant channelParticipant = ((TLRPC.TL_chatChannelParticipant) user); - - channelParticipant.channelParticipant = new TLRPC.TL_channelParticipantEditor(); - channelParticipant.channelParticipant.inviter_id = UserConfig.getClientUserId(); - channelParticipant.channelParticipant.user_id = user.user_id; - channelParticipant.channelParticipant.date = user.date; - - TLRPC.TL_channels_editAdmin req = new TLRPC.TL_channels_editAdmin(); - req.channel = MessagesController.getInputChannel(chat_id); - req.user_id = MessagesController.getInputUser(selectedUser); - req.role = new TLRPC.TL_channelRoleEditor(); - ConnectionsManager.getInstance().sendRequest(req, new RequestDelegate() { - @Override - public void run(TLObject response, final TLRPC.TL_error error) { - if (error == null) { - MessagesController.getInstance().processUpdates((TLRPC.Updates) response, false); - AndroidUtilities.runOnUIThread(new Runnable() { - @Override - public void run() { - MessagesController.getInstance().loadFullChat(chat_id, 0, true); - } - }, 1000); - } else { - AndroidUtilities.runOnUIThread(new Runnable() { - @Override - public void run() { - AlertsCreator.showAddUserAlert(error.text, ProfileActivity.this, false); - } - }); - } - } - }); - } else if (i == 1) { - kickUser(selectedUser); - } - } - }); - } else { - CharSequence[] items = new CharSequence[]{chat_id > 0 ? LocaleController.getString("KickFromGroup", R.string.KickFromGroup) : LocaleController.getString("KickFromBroadcast", R.string.KickFromBroadcast)}; - builder.setItems(items, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - if (i == 0) { - kickUser(selectedUser); - } - } - }); - } - showDialog(builder.create()); - return true; + listView.setOnItemLongClickListener(new RecyclerListView.OnItemLongClickListener() { + @Override + public boolean onItemClick(View view, int position) { + if (position > emptyRowChat2 && position < membersEndRow) { + if (getParentActivity() == null) { + return false; } - return false; + boolean allowKick = false; + boolean allowSetAdmin = false; + + final TLRPC.ChatParticipant user; + if (!sortedUsers.isEmpty()) { + user = info.participants.participants.get(sortedUsers.get(position - emptyRowChat2 - 1)); + } else { + user = info.participants.participants.get(position - emptyRowChat2 - 1); + } + selectedUser = user.user_id; + + if (ChatObject.isChannel(currentChat)) { + TLRPC.ChannelParticipant channelParticipant = ((TLRPC.TL_chatChannelParticipant) user).channelParticipant; + if (user.user_id != UserConfig.getClientUserId()) { + if (currentChat.creator) { + allowKick = true; + } else if (channelParticipant instanceof TLRPC.TL_channelParticipant) { + if (currentChat.editor || channelParticipant.inviter_id == UserConfig.getClientUserId()) { + allowKick = true; + } + } + } + TLRPC.User u = MessagesController.getInstance().getUser(user.user_id); + allowSetAdmin = channelParticipant instanceof TLRPC.TL_channelParticipant && !u.bot; + } else { + if (user.user_id != UserConfig.getClientUserId()) { + if (currentChat.creator) { + allowKick = true; + } else if (user instanceof TLRPC.TL_chatParticipant) { + if (currentChat.admin && currentChat.admins_enabled || user.inviter_id == UserConfig.getClientUserId()) { + allowKick = true; + } + } + } + } + if (!allowKick) { + return false; + } + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + if (currentChat.megagroup && currentChat.creator && allowSetAdmin) { + CharSequence[] items = new CharSequence[]{LocaleController.getString("SetAsAdmin", R.string.SetAsAdmin), LocaleController.getString("KickFromGroup", R.string.KickFromGroup)}; + builder.setItems(items, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + if (i == 0) { + TLRPC.TL_chatChannelParticipant channelParticipant = ((TLRPC.TL_chatChannelParticipant) user); + + channelParticipant.channelParticipant = new TLRPC.TL_channelParticipantEditor(); + channelParticipant.channelParticipant.inviter_id = UserConfig.getClientUserId(); + channelParticipant.channelParticipant.user_id = user.user_id; + channelParticipant.channelParticipant.date = user.date; + + TLRPC.TL_channels_editAdmin req = new TLRPC.TL_channels_editAdmin(); + req.channel = MessagesController.getInputChannel(chat_id); + req.user_id = MessagesController.getInputUser(selectedUser); + req.role = new TLRPC.TL_channelRoleEditor(); + ConnectionsManager.getInstance().sendRequest(req, new RequestDelegate() { + @Override + public void run(TLObject response, final TLRPC.TL_error error) { + if (error == null) { + MessagesController.getInstance().processUpdates((TLRPC.Updates) response, false); + AndroidUtilities.runOnUIThread(new Runnable() { + @Override + public void run() { + MessagesController.getInstance().loadFullChat(chat_id, 0, true); + } + }, 1000); + } else { + AndroidUtilities.runOnUIThread(new Runnable() { + @Override + public void run() { + AlertsCreator.showAddUserAlert(error.text, ProfileActivity.this, false); + } + }); + } + } + }); + } else if (i == 1) { + kickUser(selectedUser); + } + } + }); + } else { + CharSequence[] items = new CharSequence[]{chat_id > 0 ? LocaleController.getString("KickFromGroup", R.string.KickFromGroup) : LocaleController.getString("KickFromBroadcast", R.string.KickFromBroadcast)}; + builder.setItems(items, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + if (i == 0) { + kickUser(selectedUser); + } + } + }); + } + showDialog(builder.create()); + return true; + } else { + return processOnClickOrPress(position); } - }); - } + } + }); + + topView = new TopView(context); + topView.setBackgroundColor(AvatarDrawable.getProfileBackColorForId(user_id != 0 || ChatObject.isChannel(chat_id) && !currentChat.megagroup ? 5 : chat_id)); + frameLayout.addView(topView); frameLayout.addView(actionBar); - extraHeightView = new View(context); - ViewProxy.setPivotY(extraHeightView, 0); - extraHeightView.setBackgroundColor(AvatarDrawable.getProfileBackColorForId(user_id != 0 || ChatObject.isChannel(chat_id) && !currentChat.megagroup ? 5 : chat_id)); - frameLayout.addView(extraHeightView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 88)); - - shadowView = new View(context); - try { - shadowView.setBackgroundResource(R.drawable.header_shadow); - } catch (Throwable e) { - FileLog.e("tmessages", e); - } - frameLayout.addView(shadowView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 3)); - avatarImage = new BackupImageView(context); avatarImage.setRoundRadius(AndroidUtilities.dp(21)); ViewProxy.setPivotX(avatarImage, 0); @@ -840,27 +797,20 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. if (!playProfileAnimation && a == 0) { continue; } - nameTextView[a] = new TextView(context); + nameTextView[a] = new SimpleTextView(context); nameTextView[a].setTextColor(0xffffffff); - nameTextView[a].setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); - nameTextView[a].setLines(1); - nameTextView[a].setMaxLines(1); - nameTextView[a].setSingleLine(true); - nameTextView[a].setEllipsize(TextUtils.TruncateAt.END); + nameTextView[a].setTextSize(18); nameTextView[a].setGravity(Gravity.LEFT); nameTextView[a].setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); - nameTextView[a].setCompoundDrawablePadding(AndroidUtilities.dp(4)); + nameTextView[a].setLeftDrawableTopPadding(-AndroidUtilities.dp(1.3f)); + nameTextView[a].setRightDrawableTopPadding(-AndroidUtilities.dp(1.3f)); ViewProxy.setPivotX(nameTextView[a], 0); ViewProxy.setPivotY(nameTextView[a], 0); frameLayout.addView(nameTextView[a], LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.TOP, 118, 0, a == 0 ? 48 : 0, 0)); - onlineTextView[a] = new TextView(context); + onlineTextView[a] = new SimpleTextView(context); onlineTextView[a].setTextColor(AvatarDrawable.getProfileTextColorForId(user_id != 0 || ChatObject.isChannel(chat_id) && !currentChat.megagroup ? 5 : chat_id)); - onlineTextView[a].setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); - onlineTextView[a].setLines(1); - onlineTextView[a].setMaxLines(1); - onlineTextView[a].setSingleLine(true); - onlineTextView[a].setEllipsize(TextUtils.TruncateAt.END); + onlineTextView[a].setTextSize(14); onlineTextView[a].setGravity(Gravity.LEFT); frameLayout.addView(onlineTextView[a], LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.TOP, 118, 0, a == 0 ? 48 : 8, 0)); } @@ -968,11 +918,6 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. needLayout(); listView.setOnScrollListener(new RecyclerView.OnScrollListener() { - @Override - public void onScrollStateChanged(RecyclerView recyclerView, int newState) { - super.onScrollStateChanged(recyclerView, newState); - } - @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { checkListViewScroll(); @@ -985,6 +930,104 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. return fragmentView; } + private boolean processOnClickOrPress(final int position) { + if (position == usernameRow) { + final TLRPC.User user = MessagesController.getInstance().getUser(user_id); + if (user == null || user.username == null) { + return false; + } + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + builder.setItems(new CharSequence[]{LocaleController.getString("Copy", R.string.Copy)}, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + if (i == 0) { + try { + if (Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB) { + android.text.ClipboardManager clipboard = (android.text.ClipboardManager) ApplicationLoader.applicationContext.getSystemService(Context.CLIPBOARD_SERVICE); + clipboard.setText("@" + user.username); + } else { + android.content.ClipboardManager clipboard = (android.content.ClipboardManager) ApplicationLoader.applicationContext.getSystemService(Context.CLIPBOARD_SERVICE); + android.content.ClipData clip = android.content.ClipData.newPlainText("label", "@" + user.username); + clipboard.setPrimaryClip(clip); + } + } catch (Exception e) { + FileLog.e("tmessages", e); + } + } + } + }); + showDialog(builder.create()); + return true; + } else if (position == phoneRow) { + final TLRPC.User user = MessagesController.getInstance().getUser(user_id); + if (user == null || user.phone == null || user.phone.length() == 0 || getParentActivity() == null) { + return false; + } + + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + builder.setItems(new CharSequence[]{LocaleController.getString("Call", R.string.Call), LocaleController.getString("Copy", R.string.Copy)}, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + if (i == 0) { + try { + Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:+" + user.phone)); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + getParentActivity().startActivityForResult(intent, 500); + } catch (Exception e) { + FileLog.e("tmessages", e); + } + } else if (i == 1) { + try { + if (Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB) { + android.text.ClipboardManager clipboard = (android.text.ClipboardManager) ApplicationLoader.applicationContext.getSystemService(Context.CLIPBOARD_SERVICE); + clipboard.setText("+" + user.phone); + } else { + android.content.ClipboardManager clipboard = (android.content.ClipboardManager) ApplicationLoader.applicationContext.getSystemService(Context.CLIPBOARD_SERVICE); + android.content.ClipData clip = android.content.ClipData.newPlainText("label", "+" + user.phone); + clipboard.setPrimaryClip(clip); + } + } catch (Exception e) { + FileLog.e("tmessages", e); + } + } + } + }); + showDialog(builder.create()); + return true; + } else if (position == channelInfoRow || position == userInfoRow) { + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + builder.setItems(new CharSequence[]{LocaleController.getString("Copy", R.string.Copy)}, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + try { + String about; + if (position == channelInfoRow) { + about = info.about; + } else { + about = MessagesController.getInstance().getUserAbout(botInfo.user_id); + } + if (about == null) { + return; + } + if (Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB) { + android.text.ClipboardManager clipboard = (android.text.ClipboardManager) ApplicationLoader.applicationContext.getSystemService(Context.CLIPBOARD_SERVICE); + clipboard.setText(about); + } else { + android.content.ClipboardManager clipboard = (android.content.ClipboardManager) ApplicationLoader.applicationContext.getSystemService(Context.CLIPBOARD_SERVICE); + android.content.ClipData clip = android.content.ClipData.newPlainText("label", about); + clipboard.setPrimaryClip(clip); + } + } catch (Exception e) { + FileLog.e("tmessages", e); + } + } + }); + showDialog(builder.create()); + return true; + } + return false; + } + private void leaveChatPressed() { AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); if (ChatObject.isChannel(chat_id) && !currentChat.megagroup) { @@ -1115,19 +1158,21 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } private void checkListViewScroll() { - if (listView.getChildCount() == 0 || openAnimationInProgress) { + if (listView.getChildCount() <= 0 || openAnimationInProgress) { return; } - int height = 0; + View child = listView.getChildAt(0); - if (child != null) { - if (layoutManager.findFirstVisibleItemPosition() == 0) { - height = AndroidUtilities.dp(88) + (child.getTop() < 0 ? child.getTop() : 0); - } - if (extraHeight != height) { - extraHeight = height; - needLayout(); - } + ListAdapter.Holder holder = (ListAdapter.Holder) listView.findContainingViewHolder(child); + int top = child.getTop(); + int newOffset = 0; + if (top >= 0 && holder != null && holder.getAdapterPosition() == 0) { + newOffset = top; + } + if (extraHeight != newOffset) { + extraHeight = newOffset; + topView.invalidate(); + needLayout(); } } @@ -1139,14 +1184,11 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. if (layoutParams.topMargin != newTop) { layoutParams.topMargin = newTop; listView.setLayoutParams(layoutParams); - ViewProxy.setTranslationY(extraHeightView, newTop); } } if (avatarImage != null) { float diff = extraHeight / (float) AndroidUtilities.dp(88); - ViewProxy.setScaleY(extraHeightView, diff); - ViewProxy.setTranslationY(shadowView, newTop + extraHeight); listView.setTopGlowOffset(extraHeight); if (writeButton != null) { @@ -1228,9 +1270,9 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. continue; } ViewProxy.setTranslationX(nameTextView[a], -21 * AndroidUtilities.density * diff); - ViewProxy.setTranslationY(nameTextView[a], (float) Math.floor(avatarY) - (float) Math.ceil(AndroidUtilities.density) + (float) Math.floor(7 * AndroidUtilities.density * diff)); + ViewProxy.setTranslationY(nameTextView[a], (float) Math.floor(avatarY) + AndroidUtilities.dp(1.3f) + AndroidUtilities.dp(7) * diff); ViewProxy.setTranslationX(onlineTextView[a], -21 * AndroidUtilities.density * diff); - ViewProxy.setTranslationY(onlineTextView[a], (float) Math.floor(avatarY) + AndroidUtilities.dp(22) + (float) Math.floor(11 * AndroidUtilities.density) * diff); + ViewProxy.setTranslationY(onlineTextView[a], (float) Math.floor(avatarY) + AndroidUtilities.dp(24) + (float) Math.floor(11 * AndroidUtilities.density) * diff); ViewProxy.setScaleX(nameTextView[a], 1.0f + 0.12f * diff); ViewProxy.setScaleY(nameTextView[a], 1.0f + 0.12f * diff); if (a == 1 && !openAnimationInProgress) { @@ -1241,13 +1283,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. width = AndroidUtilities.displaySize.x; } width = (int) (width - AndroidUtilities.dp(118 + 8 + 40 * (1.0f - diff)) - ViewProxy.getTranslationX(nameTextView[a])); - float width2 = nameTextView[a].getPaint().measureText(nameTextView[a].getText().toString()) * ViewProxy.getScaleX(nameTextView[a]); - Drawable[] drawables = nameTextView[a].getCompoundDrawables(); - for (int b = 0; b < drawables.length; b++) { - if (drawables[b] != null) { - width2 += drawables[b].getIntrinsicWidth() + AndroidUtilities.dp(4); - } - } + float width2 = nameTextView[a].getPaint().measureText(nameTextView[a].getText().toString()) * ViewProxy.getScaleX(nameTextView[a]) + nameTextView[a].getSideDrawablesSize(); layoutParams = (FrameLayout.LayoutParams) nameTextView[a].getLayoutParams(); if (width < width2) { layoutParams.width = (int) Math.ceil(width / ViewProxy.getScaleX(nameTextView[a])); @@ -1447,7 +1483,6 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. updateRowsIds(); if (listAdapter != null) { listAdapter.notifyDataSetChanged(); - checkListViewScroll(); } } } else if (id == NotificationCenter.didReceivedNewMessages) { @@ -1490,6 +1525,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. if (!backward && playProfileAnimation) { openAnimationInProgress = true; } + NotificationCenter.getInstance().setAllowedNotificationsDutingAnimation(new int[]{NotificationCenter.dialogsNeedReload, NotificationCenter.closeChats, NotificationCenter.mediaCountDidLoaded}); NotificationCenter.getInstance().setAnimationInProgress(true); } @@ -1508,22 +1544,32 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. public void setAnimationProgress(float progress) { animationProgress = progress; ViewProxy.setAlpha(listView, progress); - ViewProxy.setTranslationX(listView, AndroidUtilities.dp(48) * (1.0f - progress)); + + //ViewProxy.setTranslationY(listView, -AndroidUtilities.dp(48) + AndroidUtilities.dp(48) * progress); int color = AvatarDrawable.getProfileBackColorForId(user_id != 0 || ChatObject.isChannel(chat_id) && !currentChat.megagroup ? 5 : chat_id); - int rD = (int) ((Color.red(color) - 0x54) * progress); - int gD = (int) ((Color.green(color) - 0x75) * progress); - int bD = (int) ((Color.blue(color) - 0x9e) * progress); - actionBar.setBackgroundColor(Color.rgb(0x54 + rD, 0x75 + gD, 0x9e + bD)); - extraHeightView.setBackgroundColor(Color.rgb(0x54 + rD, 0x75 + gD, 0x9e + bD)); + + int r = Color.red(Theme.ACTION_BAR_COLOR); + int g = Color.green(Theme.ACTION_BAR_COLOR); + int b = Color.blue(Theme.ACTION_BAR_COLOR); + + int rD = (int) ((Color.red(color) - r) * progress); + int gD = (int) ((Color.green(color) - g) * progress); + int bD = (int) ((Color.blue(color) - b) * progress); + topView.setBackgroundColor(Color.rgb(r + rD, g + gD, b + bD)); color = AvatarDrawable.getProfileTextColorForId(user_id != 0 || ChatObject.isChannel(chat_id) && !currentChat.megagroup ? 5 : chat_id); - rD = (int) ((Color.red(color) - 0xd7) * progress); - gD = (int) ((Color.green(color) - 0xe8) * progress); - bD = (int) ((Color.blue(color) - 0xf7) * progress); + + r = Color.red(Theme.ACTION_BAR_SUBTITLE_COLOR); + g = Color.green(Theme.ACTION_BAR_SUBTITLE_COLOR); + b = Color.blue(Theme.ACTION_BAR_SUBTITLE_COLOR); + + rD = (int) ((Color.red(color) - r) * progress); + gD = (int) ((Color.green(color) - g) * progress); + bD = (int) ((Color.blue(color) - b) * progress); for (int a = 0; a < 2; a++) { if (onlineTextView[a] == null) { continue; } - onlineTextView[a].setTextColor(Color.rgb(0xd7 + rD, 0xe8 + gD, 0xf7 + bD)); + onlineTextView[a].setTextColor(Color.rgb(r + rD, g + gD, b + bD)); } extraHeight = (int) (initialAnimationExtraHeight * progress); color = AvatarDrawable.getProfileColorForId(user_id != 0 ? user_id : chat_id); @@ -1543,7 +1589,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. protected AnimatorSetProxy onCustomTransitionAnimation(final boolean isOpen, final Runnable callback) { if (playProfileAnimation) { final AnimatorSetProxy animatorSet = new AnimatorSetProxy(); - animatorSet.setDuration(150); + animatorSet.setDuration(180); if (Build.VERSION.SDK_INT > 15) { listView.setLayerType(View.LAYER_TYPE_HARDWARE, null); } @@ -1559,14 +1605,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. onlineTextView[1].setLayoutParams(layoutParams); int width = (int) Math.ceil(AndroidUtilities.displaySize.x - AndroidUtilities.dp(118 + 8) + 21 * AndroidUtilities.density); - float width2 = nameTextView[1].getPaint().measureText(nameTextView[1].getText().toString()) * 1.12f; - Drawable[] drawables = nameTextView[1].getCompoundDrawables(); - for (int b = 0; b < drawables.length; b++) { - if (drawables[b] != null) { - width2 += drawables[b].getIntrinsicWidth() + AndroidUtilities.dp(4); - } - } - + float width2 = nameTextView[1].getPaint().measureText(nameTextView[1].getText().toString()) * 1.12f + nameTextView[1].getSideDrawablesSize(); layoutParams = (FrameLayout.LayoutParams) nameTextView[1].getLayoutParams(); if (width < width2) { layoutParams.width = (int) Math.ceil(width / 1.12f); @@ -1878,7 +1917,6 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. blockedUsersRow = -1; rowCount = 0; - overscrollRow = rowCount++; if (user_id != 0) { TLRPC.User user = MessagesController.getInstance().getUser(user_id); emptyRow = rowCount++; @@ -2011,15 +2049,11 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. if (nameTextView[a] == null) { continue; } - if (a == 0) { - if (user.id / 1000 != 777 && user.id / 1000 != 333 && ContactsController.getInstance().contactsDict.get(user.id) == null && (ContactsController.getInstance().contactsDict.size() != 0 || !ContactsController.getInstance().isLoadingContacts())) { - if (user.phone != null && user.phone.length() != 0) { - nameTextView[a].setText(PhoneFormat.getInstance().format("+" + user.phone)); - } else { - nameTextView[a].setText(UserObject.getUserName(user)); - } - } else { - nameTextView[a].setText(UserObject.getUserName(user)); + if (a == 0 && user.phone != null && user.phone.length() != 0 && user.id / 1000 != 777 && user.id / 1000 != 333 && ContactsController.getInstance().contactsDict.get(user.id) == null && + (ContactsController.getInstance().contactsDict.size() != 0 || !ContactsController.getInstance().isLoadingContacts())) { + String phoneString = PhoneFormat.getInstance().format("+" + user.phone); + if (!nameTextView[a].getText().equals(phoneString)) { + nameTextView[a].setText(phoneString); } } else { if (!nameTextView[a].getText().equals(newString)) { @@ -2030,19 +2064,14 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. onlineTextView[a].setText(newString2); } int leftIcon = currentEncryptedChat != null ? R.drawable.ic_lock_header : 0; - if (a != 0) { - if (user.verified) { - if (nameTextView[a].getCompoundDrawables()[2] == null || nameTextView[a].getCompoundDrawables()[0] == null && leftIcon != 0) { - nameTextView[a].setCompoundDrawablesWithIntrinsicBounds(leftIcon, 0, R.drawable.check_profile_fixed, 0); - } - } else { - if (nameTextView[a].getCompoundDrawables()[2] != null || nameTextView[a].getCompoundDrawables()[0] == null && leftIcon != 0) { - nameTextView[a].setCompoundDrawablesWithIntrinsicBounds(leftIcon, 0, 0, 0); - } - } - } else { - nameTextView[a].setCompoundDrawablesWithIntrinsicBounds(leftIcon, 0, MessagesController.getInstance().isDialogMuted(dialog_id != 0 ? dialog_id : (long) user_id) ? R.drawable.mute_fixed : 0, 0); + int rightIcon = 0; + if (a == 0) { + rightIcon = MessagesController.getInstance().isDialogMuted(dialog_id != 0 ? dialog_id : (long) user_id) ? R.drawable.mute_fixed : 0; + } else if (user.verified) { + rightIcon = R.drawable.check_profile_fixed; } + nameTextView[a].setLeftDrawable(leftIcon); + nameTextView[a].setRightDrawable(rightIcon); } avatarImage.getImageReceiver().setVisible(!PhotoViewer.getInstance().isShowingImage(photoBig), false); @@ -2098,18 +2127,15 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. if (chat.title != null && !nameTextView[a].getText().equals(chat.title)) { nameTextView[a].setText(chat.title); } + nameTextView[a].setLeftDrawable(null); if (a != 0) { if (chat.verified) { - if (nameTextView[a].getCompoundDrawables()[2] == null) { - nameTextView[a].setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.check_profile_fixed, 0); - } + nameTextView[a].setRightDrawable(R.drawable.check_profile_fixed); } else { - if (nameTextView[a].getCompoundDrawables()[2] != null) { - nameTextView[a].setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0); - } + nameTextView[a].setRightDrawable(null); } } else { - nameTextView[a].setCompoundDrawablesWithIntrinsicBounds(0, 0, MessagesController.getInstance().isDialogMuted((long) -chat_id) ? R.drawable.mute_fixed : 0, 0); + nameTextView[a].setRightDrawable(MessagesController.getInstance().isDialogMuted((long) -chat_id) ? R.drawable.mute_fixed : 0); } if (currentChat.megagroup && info != null && info.participants_count <= 200 && onlineCount > 0) { if (!onlineTextView[a].getText().equals(newString)) { @@ -2250,7 +2276,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. presentFragment(new ChatActivity(args), true); removeSelfFromStack(); TLRPC.User user = MessagesController.getInstance().getUser(user_id); - SendMessagesHelper.getInstance().sendMessage(user, dialog_id, null, true); + SendMessagesHelper.getInstance().sendMessage(user, dialog_id, null, true, null, null); } } @@ -2363,9 +2389,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. boolean checkBackground = true; switch (holder.getItemViewType()) { case 0: - if (i == overscrollRow) { - ((EmptyCell) holder.itemView).setHeight(AndroidUtilities.dp(88)); - } else if (i == emptyRowChat || i == emptyRowChat2) { + if (i == emptyRowChat || i == emptyRowChat2) { ((EmptyCell) holder.itemView).setHeight(AndroidUtilities.dp(8)); } else { ((EmptyCell) holder.itemView).setHeight(AndroidUtilities.dp(36)); @@ -2475,9 +2499,21 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. if (part != null) { if (part instanceof TLRPC.TL_chatChannelParticipant) { TLRPC.ChannelParticipant channelParticipant = ((TLRPC.TL_chatChannelParticipant) part).channelParticipant; - userCell.setIsAdmin(channelParticipant instanceof TLRPC.TL_channelParticipantCreator || channelParticipant instanceof TLRPC.TL_channelParticipantEditor || channelParticipant instanceof TLRPC.TL_channelParticipantModerator); + if (channelParticipant instanceof TLRPC.TL_channelParticipantCreator) { + userCell.setIsAdmin(1); + } else if (channelParticipant instanceof TLRPC.TL_channelParticipantEditor || channelParticipant instanceof TLRPC.TL_channelParticipantModerator) { + userCell.setIsAdmin(2); + } else { + userCell.setIsAdmin(0); + } } else { - userCell.setIsAdmin(part instanceof TLRPC.TL_chatParticipantAdmin || part instanceof TLRPC.TL_chatParticipantCreator); + if (part instanceof TLRPC.TL_chatParticipantCreator) { + userCell.setIsAdmin(1); + } else if (currentChat.admins_enabled && part instanceof TLRPC.TL_chatParticipantAdmin) { + userCell.setIsAdmin(2); + } else { + userCell.setIsAdmin(0); + } } userCell.setData(MessagesController.getInstance().getUser(part.user_id), null, null, i == emptyRowChat2 + 1 ? R.drawable.menu_newgroup : 0); } @@ -2501,9 +2537,12 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. if (checkBackground) { boolean enabled = false; if (user_id != 0) { - enabled = i == phoneRow || i == settingsTimerRow || i == settingsKeyRow || i == settingsNotificationsRow || i == sharedMediaRow || i == startSecretChatRow || i == usernameRow; + enabled = i == phoneRow || i == settingsTimerRow || i == settingsKeyRow || i == settingsNotificationsRow || + i == sharedMediaRow || i == startSecretChatRow || i == usernameRow || i == userInfoRow; } else if (chat_id != 0) { - enabled = i == convertRow || i == settingsNotificationsRow || i == sharedMediaRow || i > emptyRowChat2 && i < membersEndRow || i == addMemberRow || i == channelNameRow || i == leaveChannelRow || i == membersRow || i == managementRow || i == blockedUsersRow || i == channelInfoRow; + enabled = i == convertRow || i == settingsNotificationsRow || i == sharedMediaRow || i > emptyRowChat2 && i < membersEndRow || + i == addMemberRow || i == channelNameRow || i == leaveChannelRow || i == membersRow || i == managementRow || + i == blockedUsersRow || i == channelInfoRow; } if (enabled) { if (holder.itemView.getBackground() == null) { @@ -2524,7 +2563,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. @Override public int getItemViewType(int i) { - if (i == emptyRow || i == overscrollRow || i == emptyRowChat || i == emptyRowChat2) { + if (i == emptyRow || i == emptyRowChat || i == emptyRowChat2) { return 0; } else if (i == sectionRow || i == userSectionRow) { return 1; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/SetAdminsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/SetAdminsActivity.java index 614c5bab7..c5cdcaf67 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/SetAdminsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/SetAdminsActivity.java @@ -379,10 +379,6 @@ public class SetAdminsActivity extends BaseFragment implements NotificationCente return true; } else if (i >= usersStartRow && i < usersEndRow) { TLRPC.ChatParticipant participant = participants.get(i - usersStartRow); - TLRPC.User user = MessagesController.getInstance().getUser(participant.user_id); - if (user != null && user.bot) { - return false; - } if (!(participant instanceof TLRPC.TL_chatParticipantCreator)) { return true; } @@ -451,7 +447,7 @@ public class SetAdminsActivity extends BaseFragment implements NotificationCente userCell.setData(user, null, null, 0); chat = MessagesController.getInstance().getChat(chat_id); userCell.setChecked(!(part instanceof TLRPC.TL_chatParticipant) || chat != null && !chat.admins_enabled, false); - userCell.setCheckDisabled(chat == null || !chat.admins_enabled || part.user_id == UserConfig.getClientUserId() || user != null && user.bot); + userCell.setCheckDisabled(chat == null || !chat.admins_enabled || part.user_id == UserConfig.getClientUserId()); } return view; } @@ -548,7 +544,7 @@ public class SetAdminsActivity extends BaseFragment implements NotificationCente for (int a = 0; a < contactsCopy.size(); a++) { TLRPC.ChatParticipant participant = contactsCopy.get(a); TLRPC.User user = MessagesController.getInstance().getUser(participant.user_id); - if (user.id == UserConfig.getClientUserId() || user.bot) { + if (user.id == UserConfig.getClientUserId()) { continue; } @@ -651,7 +647,7 @@ public class SetAdminsActivity extends BaseFragment implements NotificationCente userCell.setData(user, name, username, 0); chat = MessagesController.getInstance().getChat(chat_id); userCell.setChecked(!(participant instanceof TLRPC.TL_chatParticipant) || chat != null && !chat.admins_enabled, false); - userCell.setCheckDisabled(chat == null || !chat.admins_enabled || participant.user_id == UserConfig.getClientUserId() || user != null && user.bot); + userCell.setCheckDisabled(chat == null || !chat.admins_enabled || participant.user_id == UserConfig.getClientUserId()); return view; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/SettingsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/SettingsActivity.java index afdfe696a..308309019 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/SettingsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/SettingsActivity.java @@ -61,6 +61,7 @@ import org.telegram.messenger.ApplicationLoader; import org.telegram.messenger.BuildVars; import org.telegram.messenger.LocaleController; import org.telegram.messenger.FileLoader; +import org.telegram.messenger.browser.Browser; import org.telegram.tgnet.ConnectionsManager; import org.telegram.tgnet.RequestDelegate; import org.telegram.tgnet.SerializedData; @@ -93,6 +94,7 @@ import org.telegram.ui.Components.BackupImageView; import org.telegram.ui.ActionBar.BaseFragment; import org.telegram.ui.Components.LayoutHelper; import org.telegram.ui.Components.NumberPicker; +import org.telegram.ui.ActionBar.Theme; import java.io.File; import java.util.ArrayList; @@ -296,7 +298,7 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter @Override public View createView(Context context) { actionBar.setBackgroundColor(AvatarDrawable.getProfileBackColorForId(5)); - actionBar.setItemsBackground(AvatarDrawable.getButtonColorForId(5)); + actionBar.setItemsBackgroundColor(AvatarDrawable.getButtonColorForId(5)); actionBar.setBackButtonImage(R.drawable.ic_ab_back); actionBar.setAddToContainer(false); extraHeight = 88; @@ -420,7 +422,7 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter final TextView message = new TextView(getParentActivity()); message.setText(Html.fromHtml(LocaleController.getString("AskAQuestionInfo", R.string.AskAQuestionInfo))); message.setTextSize(18); - message.setLinkTextColor(0xff316f9f); + message.setLinkTextColor(Theme.MSG_LINK_TEXT_COLOR); message.setPadding(AndroidUtilities.dp(8), AndroidUtilities.dp(5), AndroidUtilities.dp(8), AndroidUtilities.dp(6)); message.setMovementMethod(new LinkMovementMethodMy()); @@ -492,9 +494,9 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); showDialog(builder.create()); } else if (i == telegramFaqRow) { - AndroidUtilities.openUrl(getParentActivity(), LocaleController.getString("TelegramFaqUrl", R.string.TelegramFaqUrl)); + Browser.openUrl(getParentActivity(), LocaleController.getString("TelegramFaqUrl", R.string.TelegramFaqUrl)); } else if (i == privacyPolicyRow) { - AndroidUtilities.openUrl(getParentActivity(), LocaleController.getString("PrivacyPolicyUrl", R.string.PrivacyPolicyUrl)); + Browser.openUrl(getParentActivity(), LocaleController.getString("PrivacyPolicyUrl", R.string.PrivacyPolicyUrl)); } else if (i == contactsReimportRow) { //not implemented } else if (i == contactsSortRow) { @@ -537,7 +539,8 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter mask = MediaController.getInstance().roamingDownloadMask; } - builder.setApplyTopPaddings(false); + builder.setApplyTopPadding(false); + builder.setApplyBottomPadding(false); LinearLayout linearLayout = new LinearLayout(getParentActivity()); linearLayout.setOrientation(LinearLayout.VERTICAL); for (int a = 0; a < 6; a++) { @@ -583,7 +586,7 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter BottomSheet.BottomSheetCell cell = new BottomSheet.BottomSheetCell(getParentActivity(), 2); cell.setBackgroundResource(R.drawable.list_selector); cell.setTextAndIcon(LocaleController.getString("Save", R.string.Save).toUpperCase(), 0); - cell.setTextColor(0xff517fad); + cell.setTextColor(Theme.AUTODOWNLOAD_SHEET_SAVE_TEXT_COLOR); cell.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -1096,7 +1099,8 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter photoBig = user.photo.photo_big; } AvatarDrawable avatarDrawable = new AvatarDrawable(user, true); - avatarDrawable.setColor(0xff5c98cd); + + avatarDrawable.setColor(Theme.ACTION_BAR_MAIN_AVATAR_COLOR); if (avatarImage != null) { avatarImage.setImage(photo, "50_50", avatarDrawable); avatarImage.getImageReceiver().setVisible(!PhotoViewer.getInstance().isShowingImage(photoBig), false); @@ -1255,9 +1259,9 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter } else if (i == raiseToSpeakRow) { textCell.setTextAndCheck(LocaleController.getString("RaiseToSpeak", R.string.RaiseToSpeak), MediaController.getInstance().canRaiseToSpeak(), true); } else if (i == customTabsRow) { - textCell.setTextAndValueAndCheck(LocaleController.getString("ChromeCustomTabs", R.string.ChromeCustomTabs), LocaleController.getString("ChromeCustomTabsInfo", R.string.ChromeCustomTabsInfo), MediaController.getInstance().canCustomTabs(), true); + textCell.setTextAndValueAndCheck(LocaleController.getString("ChromeCustomTabs", R.string.ChromeCustomTabs), LocaleController.getString("ChromeCustomTabsInfo", R.string.ChromeCustomTabsInfo), MediaController.getInstance().canCustomTabs(), false, true); } else if (i == directShareRow) { - textCell.setTextAndValueAndCheck(LocaleController.getString("DirectShare", R.string.DirectShare), LocaleController.getString("DirectShareInfo", R.string.DirectShareInfo), MediaController.getInstance().canDirectShare(), true); + textCell.setTextAndValueAndCheck(LocaleController.getString("DirectShare", R.string.DirectShare), LocaleController.getString("DirectShareInfo", R.string.DirectShareInfo), MediaController.getInstance().canDirectShare(), false, true); } } else if (type == 4) { if (view == null) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/StickerPreviewViewer.java b/TMessagesProj/src/main/java/org/telegram/ui/StickerPreviewViewer.java index 7abf9ddf9..9970ed5e3 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/StickerPreviewViewer.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/StickerPreviewViewer.java @@ -27,6 +27,7 @@ import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.ImageReceiver; import org.telegram.messenger.FileLog; import org.telegram.tgnet.TLRPC; +import org.telegram.ui.Cells.ContextLinkCell; import org.telegram.ui.Cells.StickerCell; import org.telegram.ui.Cells.StickerEmojiCell; import org.telegram.ui.Components.LayoutHelper; @@ -88,6 +89,8 @@ public class StickerPreviewViewer { ((StickerEmojiCell) currentStickerPreviewCell).setScaled(false); } else if (currentStickerPreviewCell instanceof StickerCell) { ((StickerCell) currentStickerPreviewCell).setScaled(false); + } else if (currentStickerPreviewCell instanceof ContextLinkCell) { + ((ContextLinkCell) currentStickerPreviewCell).setScaled(false); } currentStickerPreviewCell = null; } @@ -116,6 +119,8 @@ public class StickerPreviewViewer { ((StickerEmojiCell) currentStickerPreviewCell).setScaled(false); } else if (currentStickerPreviewCell instanceof StickerCell) { ((StickerCell) currentStickerPreviewCell).setScaled(false); + } else if (currentStickerPreviewCell instanceof ContextLinkCell) { + ((ContextLinkCell) currentStickerPreviewCell).setScaled(false); } currentStickerPreviewCell = null; } @@ -148,13 +153,23 @@ public class StickerPreviewViewer { if (top > y || bottom < y || left > x || right < x) { continue; } - if (!(view instanceof StickerEmojiCell) && !(view instanceof StickerCell) || view == currentStickerPreviewCell) { + boolean ok = false; + if (view instanceof StickerEmojiCell) { + ok = true; + } else if (view instanceof StickerCell) { + ok = true; + } else if (view instanceof ContextLinkCell) { + ok = ((ContextLinkCell) view).isSticker(); + } + if (!ok || view == currentStickerPreviewCell) { break; } if (currentStickerPreviewCell instanceof StickerEmojiCell) { ((StickerEmojiCell) currentStickerPreviewCell).setScaled(false); } else if (currentStickerPreviewCell instanceof StickerCell) { ((StickerCell) currentStickerPreviewCell).setScaled(false); + } else if (currentStickerPreviewCell instanceof ContextLinkCell) { + ((ContextLinkCell) currentStickerPreviewCell).setScaled(false); } currentStickerPreviewCell = view; setKeyboardHeight(height); @@ -164,6 +179,9 @@ public class StickerPreviewViewer { } else if (currentStickerPreviewCell instanceof StickerCell) { open(((StickerCell) currentStickerPreviewCell).getSticker()); ((StickerCell) currentStickerPreviewCell).setScaled(true); + } else if (currentStickerPreviewCell instanceof ContextLinkCell) { + open(((ContextLinkCell) currentStickerPreviewCell).getDocument()); + ((ContextLinkCell) currentStickerPreviewCell).setScaled(true); } return true; } @@ -212,7 +230,16 @@ public class StickerPreviewViewer { if (top > y || bottom < y || left > x || right < x) { continue; } - if (!(view instanceof StickerEmojiCell) && !(view instanceof StickerCell) || view instanceof StickerEmojiCell && !((StickerEmojiCell) view).showingBitmap() || view instanceof StickerCell && !((StickerCell) view).showingBitmap()) { + boolean ok = false; + if (view instanceof StickerEmojiCell) { + ok = ((StickerEmojiCell) view).showingBitmap(); + } else if (view instanceof StickerCell) { + ok = ((StickerCell) view).showingBitmap(); + } else if (view instanceof ContextLinkCell) { + ContextLinkCell cell = (ContextLinkCell) view; + ok = cell.isSticker() && cell.showingBitmap(); + } + if (!ok) { return false; } startX = x; @@ -240,6 +267,9 @@ public class StickerPreviewViewer { } else if (currentStickerPreviewCell instanceof StickerCell) { open(((StickerCell) currentStickerPreviewCell).getSticker()); ((StickerCell) currentStickerPreviewCell).setScaled(true); + } else if (currentStickerPreviewCell instanceof ContextLinkCell) { + open(((ContextLinkCell) currentStickerPreviewCell).getDocument()); + ((ContextLinkCell) currentStickerPreviewCell).setScaled(true); } } }; @@ -260,7 +290,7 @@ public class StickerPreviewViewer { windowView.setFocusable(true); windowView.setFocusableInTouchMode(true); if (Build.VERSION.SDK_INT >= 23) { - windowView.setFitsSystemWindows(true); //TODO ? + windowView.setFitsSystemWindows(true); } containerView = new FrameLayoutDrawer(activity); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/StickersActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/StickersActivity.java index 1c6b00917..a6644a08a 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/StickersActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/StickersActivity.java @@ -14,7 +14,6 @@ import android.content.DialogInterface; import android.content.Intent; import android.graphics.Canvas; import android.os.Build; -import android.os.Message; import android.text.SpannableStringBuilder; import android.text.Spanned; import android.view.View; @@ -167,18 +166,7 @@ public class StickersActivity extends BaseFragment implements NotificationCenter if (stickers == null || stickers.isEmpty()) { return; } - StickersAlert alert = new StickersAlert(getParentActivity(), stickerSet); - alert.setButton(AlertDialog.BUTTON_NEGATIVE, LocaleController.getString("Close", R.string.Close), (Message) null); - if (!stickerSet.set.official) { - alert.setButton(AlertDialog.BUTTON_NEUTRAL, LocaleController.getString("StickersRemove", R.string.StickersRemove), new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - StickersQuery.removeStickersSet(getParentActivity(), stickerSet.set, 0); - } - }); - } - setVisibleDialog(alert); - alert.show(); + showDialog(new StickersAlert(getParentActivity(), null, stickerSet, null)); } } }); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/TwoStepVerificationActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/TwoStepVerificationActivity.java index bc5f0afec..25c793b26 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/TwoStepVerificationActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/TwoStepVerificationActivity.java @@ -680,8 +680,8 @@ public class TwoStepVerificationActivity extends BaseFragment implements Notific if (text == null || text.length() < 3) { return false; } - int dot = text.lastIndexOf("."); - int dog = text.lastIndexOf("@"); + int dot = text.lastIndexOf('.'); + int dog = text.lastIndexOf('@'); return !(dot < 0 || dog < 0 || dot < dog); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/VideoEditorActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/VideoEditorActivity.java index 64db21a64..111f7be53 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/VideoEditorActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/VideoEditorActivity.java @@ -49,6 +49,7 @@ import org.telegram.messenger.R; import org.telegram.ui.ActionBar.ActionBar; import org.telegram.ui.ActionBar.ActionBarMenu; import org.telegram.ui.ActionBar.BaseFragment; +import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Components.LayoutHelper; import org.telegram.ui.Components.VideoSeekBarView; import org.telegram.ui.Components.VideoTimelineView; @@ -225,8 +226,8 @@ public class VideoEditorActivity extends BaseFragment implements TextureView.Sur @Override public View createView(Context context) { - actionBar.setBackgroundColor(0xff333333); - actionBar.setItemsBackground(R.drawable.bar_selector_white); + actionBar.setBackgroundColor(Theme.ACTION_BAR_MEDIA_PICKER_COLOR); + actionBar.setItemsBackgroundColor(Theme.ACTION_BAR_PICKER_SELECTOR_COLOR); actionBar.setBackButtonImage(R.drawable.ic_ab_back); actionBar.setTitle(LocaleController.getString("EditVideo", R.string.EditVideo)); actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/WallpapersActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/WallpapersActivity.java index 0e75d8250..e2ee12828 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/WallpapersActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/WallpapersActivity.java @@ -16,6 +16,8 @@ import android.content.Intent; import android.content.SharedPreferences; import android.graphics.Bitmap; import android.graphics.Point; +import android.graphics.PorterDuff; +import android.graphics.PorterDuffColorFilter; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Build; @@ -61,7 +63,8 @@ public class WallpapersActivity extends BaseFragment implements NotificationCent private ListAdapter listAdapter; private ImageView backgroundImage; - private ProgressBar progressBar; + private FrameLayout progressView; + private View progressViewBackground; private int selectedBackground; private int selectedColor; private ArrayList wallPapers = new ArrayList<>(); @@ -80,7 +83,6 @@ public class WallpapersActivity extends BaseFragment implements NotificationCent NotificationCenter.getInstance().addObserver(this, NotificationCenter.FileDidFailedLoad); NotificationCenter.getInstance().addObserver(this, NotificationCenter.FileDidLoaded); - NotificationCenter.getInstance().addObserver(this, NotificationCenter.FileLoadProgressChanged); NotificationCenter.getInstance().addObserver(this, NotificationCenter.wallpapersDidLoaded); SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE); @@ -97,7 +99,6 @@ public class WallpapersActivity extends BaseFragment implements NotificationCent super.onFragmentDestroy(); NotificationCenter.getInstance().removeObserver(this, NotificationCenter.FileDidFailedLoad); NotificationCenter.getInstance().removeObserver(this, NotificationCenter.FileDidLoaded); - NotificationCenter.getInstance().removeObserver(this, NotificationCenter.FileLoadProgressChanged); NotificationCenter.getInstance().removeObserver(this, NotificationCenter.wallpapersDidLoaded); } @@ -171,9 +172,23 @@ public class WallpapersActivity extends BaseFragment implements NotificationCent } }); - progressBar = new ProgressBar(context); - progressBar.setPadding(AndroidUtilities.dp(6), AndroidUtilities.dp(6), AndroidUtilities.dp(6), AndroidUtilities.dp(6)); - frameLayout.addView(progressBar, LayoutHelper.createFrame(60, 60, Gravity.CENTER, 0, 0, 0, 52)); + progressView = new FrameLayout(context); + progressView.setVisibility(View.INVISIBLE); + frameLayout.addView(progressView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.LEFT, 0, 0, 0, 52)); + + progressViewBackground = new View(context); + progressViewBackground.setBackgroundResource(R.drawable.system_loader); + progressView.addView(progressViewBackground, LayoutHelper.createFrame(36, 36, Gravity.CENTER)); + + ProgressBar progressBar = new ProgressBar(context); + try { + progressBar.setIndeterminateDrawable(context.getResources().getDrawable(R.drawable.loading_animation)); + } catch (Exception e) { + //don't promt + } + progressBar.setIndeterminate(true); + AndroidUtilities.setProgressBarAnimationDuration(progressBar, 1500); + progressView.addView(progressBar, LayoutHelper.createFrame(32, 32, Gravity.CENTER)); RecyclerListView listView = new RecyclerListView(context); listView.setClipToPadding(false); @@ -313,11 +328,12 @@ public class WallpapersActivity extends BaseFragment implements NotificationCent String fileName = size.location.volume_id + "_" + size.location.local_id + ".jpg"; File f = new File(FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE), fileName); if (!f.exists()) { - progressBar.setProgress(0); + int result[] = AndroidUtilities.calcDrawableColor(backgroundImage.getDrawable()); + progressViewBackground.getBackground().setColorFilter(new PorterDuffColorFilter(result[0], PorterDuff.Mode.MULTIPLY)); loadingFile = fileName; loadingFileObject = f; doneButton.setEnabled(false); - progressBar.setVisibility(View.VISIBLE); + progressView.setVisibility(View.VISIBLE); loadingSize = size; selectedColor = 0; FileLoader.getInstance().loadFile(size, null, true); @@ -337,7 +353,7 @@ public class WallpapersActivity extends BaseFragment implements NotificationCent backgroundImage.setBackgroundColor(0); selectedColor = 0; doneButton.setEnabled(true); - progressBar.setVisibility(View.GONE); + progressView.setVisibility(View.GONE); } } else { if (loadingFile != null) { @@ -373,7 +389,7 @@ public class WallpapersActivity extends BaseFragment implements NotificationCent loadingFile = null; loadingSize = null; doneButton.setEnabled(true); - progressBar.setVisibility(View.GONE); + progressView.setVisibility(View.GONE); } } @@ -386,26 +402,20 @@ public class WallpapersActivity extends BaseFragment implements NotificationCent loadingFileObject = null; loadingFile = null; loadingSize = null; - progressBar.setVisibility(View.GONE); + progressView.setVisibility(View.GONE); doneButton.setEnabled(false); } } else if (id == NotificationCenter.FileDidLoaded) { String location = (String) args[0]; if (loadingFile != null && loadingFile.equals(location)) { backgroundImage.setImageURI(Uri.fromFile(loadingFileObject)); - progressBar.setVisibility(View.GONE); + progressView.setVisibility(View.GONE); backgroundImage.setBackgroundColor(0); doneButton.setEnabled(true); loadingFileObject = null; loadingFile = null; loadingSize = null; } - } else if (id == NotificationCenter.FileLoadProgressChanged) { - String location = (String) args[0]; - if (loadingFile != null && loadingFile.equals(location)) { - Float progress = (Float) args[1]; - progressBar.setProgress((int) (progress * 100)); - } } else if (id == NotificationCenter.wallpapersDidLoaded) { wallPapers = (ArrayList) args[0]; wallpappersByIds.clear(); diff --git a/TMessagesProj/src/main/res/drawable-hdpi/addcontact_blue.png b/TMessagesProj/src/main/res/drawable-hdpi/addcontact_blue.png deleted file mode 100755 index a90b6ce9c694f0968ee270a64972c4a3ec2dbb4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 966 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 S5OBl>@Ka>sVY>=K0PBBM5X8Lz delta 1702 zcmZ{kYgm#8AI8B4D9>qx4jl2CVJ8&QN5L}1dCXzjJTxbYP88G>O&w0w;XI^hWujEa{ZMHHy;JymsyV*!}T;-M{O1{lDDu9RucV-g*%f z5OngU&}aui4<`!63#8J(PiP)qUSz5>2-2zE)&%}Z9)scHnet`ENp^C&pQo$!=EW|S z8|(5fOaBmC-k?YRzrguJC2PW|^yBO}m)H*rs2^g>?EnwR@snd942JCT^P~s!r=Brq zi$lFE>zJO-Uj-@CgJQl=kN@e>?JGLhKZ{vn{~oCUdYe{x8cRGGNeyFsFAVk zbz7hrgngdd>LRVpwi%(4cKw(rB>RqKX(D(gRFVhjW0SJzv(@iqGVTvq_`~}6FJEPU z1{BoL&6B_$gap$kKu!?mYFRt^+ok~s4_`rRKXUg-f!Uv)6_WJNxsB!44rHzx=rGRg zGZc*(Z`UMJfCva^-==h6>yELoL_yz{aL)U1#hBg-vN9c+S6K5^yw zi&S1tq)|0OV0dJ4xCH*>iQ^(^6m?j?P7hZCaWuWIl_3C@A4?n78Q%Y5%VaeOC{ibu zDf4c7E)>#+E|Z1CJ0`wWMOO8qwZqnisAq`y%X86~MORlK*|D{OuDbSP&k4ZzK2{Pk zY4=cG`jp>EokHUvD1S8ZaX6I81Tvd-r*|zd18NBs@7OwiP}k18)|`%MzwHIM;lw+| z#K+fbxEieSh!U-}Wdf>ZohgFbaby@P968qdTyPOvP|)<2zpk0>j(SY~<9*U<+f((r z8+^k=)rfgX3;{y@i&s8Uba?-dvF)f^?rY=m9-Eoymb*}5|3*H;d9nc?VX1wPszTnL zv(`S5zVVB)KO4Fn0}5}|`FHYs6fvAoQk+n~%0Sihvxq)t|BWN7ECGuX#Thgl0Tyl? z?Rt>vF0bBy98gvT&1TkMmL{w9mKB#y!pNf>LLsTHlI-p;bFHzdgCFbpwB2@IxUJM2 ztdBH=IzXboB{?XgQ-RP26isESJEF47t#5d>9+H>AI9|#VQRrk6pcu ziA@w=B5NdmSw14G`J_jvF=^K;4yg^2vpHcMz;^AoWaK{Q8@^pW^TPS#yQ1a#BxU=s z9T#?TZTzPiZxlDf^C8T{g<5~pTS4bwn)?->R(xRSuo<*?XAUbfv!JH&4fOn>q zd7L<8Xd|#)e3OYWB0%Z2tdylF1H!vj@kH|Z;t+#N1_r~j=k2`=o*kbSMDq_sD1q_<-2n-e7k#jt08X-0`rr+g|@@%^pkeIn@ER(_4N{5ApzxU|oy(`P<{e)Nb&nA#V@r-j-He;|Z*NhJ z(Sf%sN8@sw2?(zlrT@FVL~7T$gu>!`QRx?)lH;&cLbV850;WWF^_bLQIW9x9KBOI=BojxWfr+pbr4?#o+9kk2PUjsvMu yHLl*c>e6c%KsZRVDt9? diff --git a/TMessagesProj/src/main/res/drawable-hdpi/bot_file.png b/TMessagesProj/src/main/res/drawable-hdpi/bot_file.png new file mode 100755 index 0000000000000000000000000000000000000000..81a867e92f449d29d5b767aae0674cd4d246d9f6 GIT binary patch literal 1114 zcmaJ>T}TvB6rRlz5iNs??2qg8r{vD;%>J}Hx#{YxxzL)dOYT!N&RpF=XYMp}ZC9a? zKqDh038N^C3aWpz*bM72# zsNYqXzb2oesKQ8{7$Y+vUuj-08HdV#o*`2)4kvIUYQZVVgj7gD%@9O1sTIbcq;wv5 z3M(iohgRbWoQUogWTY{YjbYN7LD&>kQJFR*xea2_3|mz_NPoL~p9ZQDq?^1^SJbG1 zNwu!agpFPGak;Ba4k&cxPEe5+h=2yM1kzf&ZVBliJ*z7a+umkrFblzLL3%EzM6?0a zAQJ*F<95m}jsrd)!+E?uA6E`|7ssdNAUUtemj_dXyVOOT7;NbJMW9Ef^-sN zLtxodD#fJS3^H3;E)WRV8a(eL2&dJlV=3*_t&JH45n8gT8dya-uob0d)PaLEiF7Un z%~+7tt@&dj2gar)gXI{Pol*uEjs731X$xoz$KaoM|0!(6I}OOjpoKb2nG~*NqwUHN zYD_3$WX2I{&zxdI5@BQ|kpXHNeW0{S)fJSo%4YG=s1VUDEa@_gh(VetFsiBu{_P%5 zK;%8O)m(_?GNcY(0LfewXLgPc7bh}B~`uIRUxh>Ra zL=45#Z@;|YmOcb4a`$gKf8w-j--8@HQM>-~@ktNkDqc3eysJPS`*G#dccO`bBV`P%4fuNSGxzV-P#jM_Eru( zUM)8ko&7#WhF{+>?Zs6`-)%c}bd;fTmHu-lhpQ(2sh-gf&Jk+qBlp*- SEe`viK}Ev#;*IM4M}7m=iEOa| literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/bot_lines.png b/TMessagesProj/src/main/res/drawable-hdpi/bot_lines.png new file mode 100755 index 0000000000000000000000000000000000000000..3d80a3e4073e1222e58935cbb7dc67eec0221df6 GIT binary patch literal 1110 zcmaJ=PiWIn9M0TWhfeLB$~FX_*+pe-ns$jcTP?L|x5_e0SFqs0rODeCw&ca+&2~fG zrWdCN4?~n41m{Txf}R9Hhjh4!;1CoM#WC?FiU^`0)R(zV57v<6{o(t*-|zi?-t5E-n?!SHbu3E^QNo}LJYF7Uo%4V=lc(7ps6AH7$^B8GYSW^ z&QS~YjCQA$(Lp7s(&0m(JueUe9by^e^&!I+@*#RvS0Hm|o1wuf1P_Mj-$`YpB#0sl z0?r%oC_a`2Jnv;&Ii6=*fZxaZ86SCh58Enmyx>0o)*hNfv(!EzCC1lckyVHuz}OTR zCYQ^3a{({1`WZGD3_2QqzlR_^_K1PyyvMMcO9~>i6-zU*h78~+%2_mwLo~_s_Yrh+ zUDmMI%0vprkzAFAu?Xd9>CpM3u*Y^O&|$fTf+hAo9OuCLh%WeQOX z${1N`goa90Ob#H7>;YtgXb%te9@7jJ|c#8Z4vi4({UyaMfwoN(~;#a_8s5;I=CpKRi7= zey`@j)#BqSz-}3umL|S0jXhd!a9`Rp__S)}U2)RolAGQar>Z|y+~GTK?sAXK&n)k7 z@1Cd6He87Hp8XV`dP5cXrR0Z>spGYUj|(@>H14ms8`|EHo|w6{GdSHlJ+|S?3Gl5@ z_bgLi)Ah9jT%Txu5aB1^9}&UILHBHZr|2a!?l5uKQEA${=&yWJt*vBTN#ErF~-!w6C;pu5dsk zG2(&5#Ha@oFY1k`F(xE%;KD@?YSd`NlP41|+&t((U&l5)IGeWbPrmQ_{oe2Qy<6#_ z3oXqjn<rit6ceOj((R7)-(`&4|*w8=ExH)F?d`l6;aGhXt*F z-hw0ZLs?~hT8XH1UoYr!1R|hAECWZMF>Jw!(q&zN%-wC424x7Ij?#Nc<)k!-BMX8M z6YwfNjsrZ;aKRAIb6vpiiVA)cs z#FPRIvZh!r5{bAPe!rI>y!M=dWyfpS9aRMp+KQ!_SVIPI73E1(#8H}Lx_1QKtjQX7 zrA(w?tRtH&$N1bMRe_T9f2gk4&^FG%{e1r^Y-i_8$Y!98ik3nem+x>xnL^xxGDcPw zp_ytG(*=Z)T|g#?kMQ8^m}aP`WOtVFk|d-I8_R|QQ(}}R3XGzmGL9 zg4P?de#*OkbFDD(KroMcwny6r-;B2@ckVU(9_Vcxmc;M7sz(k#Jlgo8^USwn%_{(>ZLlgGuwd+#X!jh-yqHj5}`gwghp57WgfG-7SXWq6hUjF%mJM0-g g{p$nXezwzif=YdP^2xKZ`PIFhsl<@@^!$~jKNPG=;{X5v literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/bot_list.png b/TMessagesProj/src/main/res/drawable-hdpi/bot_list.png index d87b1878f99424f0aacc46b9e326e29534d3b958..cbcfa1f250faf50affbbd9b88e37bb8e2ec73d7e 100755 GIT binary patch delta 660 zcmeyyF@;O9Gr-TCmrII^fq{Y7)59eQNJ|2-5CwjtEr=bftib=nSq6+qnV45i-nRxMQ(wwua!%Fa%paAUWuoRtrAc~FC{a@3aZx; zm)^;Xm<(VRnB!8Uq)=QEl$vIhg4+TMTzV(#F+0^?Ta>ewfq}8Z)5S5Q;?|xi*51sH zBCX|*-8L91H2q)>>R5lyUD#WjTel{}?3}V=%%3H;!xIo&nxyR4eiE-Wn-nNCY*W(o3FDxzOV9b0HW#=S0 zEm3yzdIw+SN!Pcs6)c=Q>-~oL!o`Oqc_&O z@|o2yV_b^+l5Q)c7$lwhKDFEbbxN>HqWv6!E!}Y^yia7>|J0kEJ#jhbvP6wV*T0wY zlvyqcsbgDxYvQI?2Cu||DxK~B-MsyM>I74bLv9NeL@X}caQ=Jm@Ap>CeEXbhgN KelF{r5}E+{#QwYh delta 501 zcmbQj^^HTZGr-TCmrII^fq{Y7)59eQNDF~52OE$KJJ%P!QBjpC#@N8g#nRQu&C=M} z!qCvw)X~z!#KOqM#lps$!D)e$D=xj0^_ZRN)0?Ya0e$q!)5S5Q;#Sg?YuC~o zn0p-Fupbe0$l*I;6!1~qp+=}9oav*R!ashYJw;EsA||n(6$nD_#D43ka)s&im=51rkRM|3T>8X< xuOS8*q8h(8FPP(?@J#8dYCyXP1B(Ph-8{`Yr4{1JKyNc}c)I$ztaD0e0stWRpWOfe diff --git a/TMessagesProj/src/main/res/drawable-hdpi/bot_location.png b/TMessagesProj/src/main/res/drawable-hdpi/bot_location.png new file mode 100755 index 0000000000000000000000000000000000000000..e587748fe6367201d0f92db3d59fbd81ca0189cc GIT binary patch literal 1586 zcmeAS@N?(olHy`uVBq!ia0vp^DnP8p!3HGPoUoh>q$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~;1Ffc1+hD4M^`1)8S=jZArg4F0$^BXQ!4Z zB&DWj=GiK}-@RW+Av48RDcsc8z_-9TH6zobswg$M$}c3jDm&RSMakYy!KT6rXh3di zNuokUZcbjYRfVk**jy_h8zii+qySb@l5ML5aa4qFfP!;=QL2Kep0RGSfuW&-nVFuU ziK&^Hp^k!)fuWJU0T7w#8k$&{npqi{D?ot~(6*wKG^-#NH>h1eo~=?wNlAf~zJ7Um zxn8-kUVc%!zM-Y1CCCgTBVC{h-Qvo;lEez#ykcdT2`;I{$wiq3C7Jno3Lp~`lk!VT zY?Xj6g?J&i0B&qvF*KNf0j6J(SfFpHX8`gNOrftYexnUy@&(kzb(T9Bihb5uTZsl3!k| z30CjxYvq|&T#}fVoa*Ufs{}MbFEca6%Gkin+04z@+0D(^$k5Q$)Y8<<+0x0-z{JAY z)Wpci9H!SLKe;qFHLnDwHwB^B1*cw6Qpha;+U$~Alv$RV;#QQOs{r=0RVHq?IN~%9 zsy79@rWLL=`vY92xHP{mPw3ik@9Z4o;_J-z?C)%g-0vuG!y(Du46mYan{-SiKV2ilZxhpbE-EZ8z)-Hv#|JRzw?{4cPo==5);!h zx$j(O*E3F7bL6PQ-;HM$_DLO7$(#KmpkH9I@`U7!g-SoeOPFolwJ)fdcwh8$tLI$& z<^21Z6NUEpaTasVRd{*4Yws(aTaPn$b8KBuEwzAmR;|#4+Nu1qcj68_dthE&l;gwf zHQRZ$O=sOg<#`g7|8EO#4zgZZE1l3evBEl*;eD#=RGZ3YS&cQjzo$RV`gGJZqj6s= zPpQM5a@`Br{)1{Lk)4K+|)ly&JE1#+pd!yc`~$FO1k{{WEsxhQ)c~7y?oH2vg;f#N&1tuXtdhJo(J=iYjq+jBj_?p@R2+q0jEhe7u8HQ&ZAS8q@$?&<31vd$@?2>^Fc BOm6@H literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/bot_music.png b/TMessagesProj/src/main/res/drawable-hdpi/bot_music.png new file mode 100755 index 0000000000000000000000000000000000000000..03857ec841cfbb7a78140dba6b566ec6427b97cb GIT binary patch literal 1573 zcmeAS@N?(olHy`uVBq!ia0vp^DnP8p!3HGPoUoh>q$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~;1Ffc1+hD4M^`1)8S=jZArg4F0$^BXQ!4Z zB&DWj=GiK}-@RW+Av48RDcsc8z_-9TH6zobswg$M$}c3jDm&RSMakYy!KT6rXh3di zNuokUZcbjYRfVk**jy_h8zii+qySb@l5ML5aa4qFfP!;=QL2Kep0RGSfuW&-nVFuU ziK&^Hp^k!)fuWJU0T7w#8k$&{npqi{D?ot~(6*wKG^-#NH>h1eo~=?wNlAf~zJ7Um zxn8-kUVc%!zM-Y1CCCgTBVC{h-Qvo;lEez#ykcdT2`;I{$wiq3C7Jno3Lp~`lk!VT zY?Xj6g?J&i0B&qvF*KNf0j6J(SfFpHX8`gNOrftYexnUy@&(kzb(T9Bihb5uTZsl3!k| z30CjxYvq|&T#}fVoa*Ufs{}MbFEca6%Fx2Xz{uIq%+1Nj(9qD;)WX2g%+bKm(#6=+ z+1b^}8K&1IKe;qFHLnDwHwB^B9H(ATQpha;+U$~Alv$RV;#QQOs{r=0RVHq?nBX)I zsy79&=X_-XVb!$KLPVRm>vTQj)rmPvsVSUCx=QTUXpx6K~=+EWD}qYW)gV>DUgQtaZ1n z9t(uDU1C?0sA~v(5x~9Jb;`;F!?Qp3e2SY9ch0taoz-&3ng_=V&f7kpmwvADyzTp) zWj1o#onG1OV3cwcUcs1JlP{jrB)WlX*}+-w64$-{R~##K$U|O&CETR+)IrIDnd{}7 zECrbRKfgS3a`8Fe4{|;%Gd>2ZZ;xHVXxXJW`~OXm9V=E&XS4Q+3VtuN;D^Lj$xpL4 zX-#0!wfjE5@p%H{n&$a2ag48a+zq|3G{gJyJ)U*V?|(|HV#)t;Fev$fAp2Uc{RhMi znB@wNmpkrXah>g6Q`raQj8kbMX(t@mB`(Ye%#^(I>_)Wc_g4qI7f37;+@Wwv$cAdl;{)3-QMGCpNRsEA+WGnL<2iq3&Y|IE6yXh+|qg;^V!g4lSM z9`RaNSTsrdlH3iWjEwHzUqlKm&VHEkFwkh}7LUjrqbZ?J9G9hZ|JzhltXh1VjW_o+ zqh{!ve^=-HT{-2ci=A{5%PEt^auX%nOPXoKfTEoxT&Eoos%+OEQ1^|6}*F-ZjYmTbKNMiF{(; s^^otY{n;F)-wRbRDIbn|xQ~IEVN-Fh`TfHk6F>#Gr>mdKI;Vst06d~u-T(jq literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/bottom_shadow.png b/TMessagesProj/src/main/res/drawable-hdpi/bottom_shadow.png index 5dc9ed10aef9c9ee90bf30059ed95de4a395af47..c2d6c37563044781eef29ec0d4901ac24470d59c 100755 GIT binary patch delta 325 zcmX@XewTfMI9D?V8v_GF{4T?F8x>WVVoVJ!oQw<%E!->&O$`lQO)VV_%w1d!oq!Ar zGXqmYC54LI0$*P%m;B_?+|;}hPZwJypom^dW{MS5uO%+MlNT`=z$`GsrASGkxFjew z%_;@A1?IT)PS#^~%6WVVjPVu9W5-33>{tE3=IukO`Hszja~ zjol0_+>{h5atnNYtz7bxOLJ56N<3X`m4G68DVZr&P`yUD^iE#HWB|3m&<&R&C57UW zpwu+06xp#Sgt7`&kxo?H{o&IeJI~CVbG~`s_q&|$ zJX0JV`T^d?*#?Kh;e!IX0&Mg(Jyw?3oALaX5*t>dyf`!xNki2lC4^&1kW>f=f<@_& z01`=ZKkk7rhFO|4Dh`d~hcLtlOca?gL=CLK*qE5VMj;Z*AQVW2(xq}HVXEZ^0w9$z z39&RjnXlkL8PdQ!B@~$#8YRw?iG3sle?P!i!@vY!2o(VuI7_Z#XqbeTx(sY?GLs0v zO9(1s5?%!r#}5ZMh!O&5M5?El41xfiP6WMZbUNq(P{<&KM8 zNF`QE6{r-E113dLDw2&d30S1BQh*hF{u^Pr>UE*8l94nb1qmdQNib~6>m^!+3ZVan z@m91dDpvuK1ds~JR*JFxNON5zW3~HpM|gd)l)1j$GGT!N@oTTI*YDqAk3l;%K^03`wgFYC*YzQsS6jYUoaS!5QE`}VwFaV7sx%}7`< zBvW(zPqQqVunsg$-?Toqcyo9lId)={*wNTGKd;8&%#(w-tSHUk(9wiIhX|Lh1zBp! zEys+i_)$)HV6c;x&2QPpBHhA2q*>(^C2c>y&ef{q!N~zPa&L{>$7 zeUo>jn}_P=jZ2%B=G&>;Ikiy&7gEUS2=J2bu94NWV%X}Z>DA-*&mG$Ak_-LQ)+p8v z*-qKu%57h4+U}gc+`*faB7R^9?LT;Xy-us`(a%OFK4uj>wICLf+Gj_F4K>2(@s0hK z?z(4&^Tzc(6?V1shxRL*aPq>RqwFiB4S4u7j=0YF(T!st6~nktNwhV_ZT27r$DA5};gzr_!4>DOH9X8Zf|^~S7Vm#DdVRRm zcCLyW=DA>YZ!~cwYt&iN+_$VLzVh_Fa@{_|vFgeNmvvwC^aPFEjV}dlGdG`U)#HcE z$B!2I8a>yCwfJ|Rp54)QBK{t&m(rz6>2OfArB+xD%icfhe0X$%Ez{>8zB~2p@Z<8U z|4G7sqjvhtemk#FAaq&S{Bte4MbuadIEtOGZz6hFwZ_{%;&rBiwZevw-eAXSi$@j- z+Q0M{b(Zbnc3sP@j^#|S6AJo;VWa)kr>bq>)usQCOhvBf{wVSJA*&{~Fo! z*#WG+M3lRWHr^3#SJW0&qLkA9aIr&LRRPmgYzopDNQ8lZdZYGqKC zl}~O|oQL(2i|X!wGR^Zpx7ORT{5Km{e!PEG+}=i8eiw1c%(;*w#YM%*VhY*&7n#7& zJi5)J%d4t>Oe124`PP>gHD$E7P9**NC)-~9wUPL*K)h5N;h$-+97vCRCLAg?gcgn% z3XgzP+43h_o$R`evBwPGD)!di&&oL1a2UdO2-fb-M#ds)HeC2JO=UJyaru;0haWrV zuNQaLmRc=2u2=w9&h7WE$*!!-k<8{$QXa(V-Q7M6c5^JpmxWzDz{SmVU#(eKFss%K zPO|MTCE>D;4)~YA(=JZq=CbUYBPz@au#)JS8)(;?Df|ndMJ>TV206bZ)X=z!=+dabL+(>Wz>N z(at1(&B5b;)5Lsd(^kRKyBmZ19j(`BGO6qe@f^O?$>l(&kMCgBAn^UpM(@y>&V6}v zmcA>N{IXknjgeW9^Hp{7O`+Y4gM0GLL7+Y9X5Oa0T)407%p}i~)STRTXN#GihU7RE mJ8jvS3+NiWZpKc(up#5jN6Z2XKDk3S{lbHIq1<|QO2Ho)4_6`p diff --git a/TMessagesProj/src/main/res/drawable-hdpi/cancel_b_pressed.png b/TMessagesProj/src/main/res/drawable-hdpi/cancel_b_pressed.png deleted file mode 100755 index 58add0c1478f9a10393981e52414a38a995640aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2095 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 bP6<#5qr(0(?d8{T$ky4C9EtUSf6~7IG2i>U delta 1733 zcmZ|Jdpy$%9|!RLwv0ow2h)*BE@v($myOXl5o0tRYUR>#%VjoqEtE^_7xI*;BcsL< z;yf-JQc-duZH48>%jFEoac@o{~CcBVG)(0tMYXZrcYY*4@KXUmh zlEMjoe-Al*&FJaGC!7dl*wW)d6Jx?+6R6I1dPy;7%;*tx+kc*L{#uuN7C~lL-oypL zU~(f=XGhPZvBdztI8QH3pyenz>dtZBE58?DOgyZN((u`%hI&c5nzNbaS(8)d_#HSq ztCOcuX&;Vn56&n)A_-rG7tZ{LRn?ER6*bR(N*S)L?&{lEy#K+*^6k;~-Ay8BC5^e< zHf)=^`QrH5yIdQg7ULa58PERA3xHx7-ld4~kOoT*q#A$qk3b|JQL7xA0JRy{Y>X?IrftiuJVMXb_2kN1yE{^~L$t%}qiO4r zj4feFaA5wxU_Np&$iDAFj!i*-;=JaXlJp^zS|0*ySTW=cLFsHadGDfm-ek7|wI1M& zlrilc-aI=E{T$YIq!3V0`?;sE>~=z>$;m;cs?=Zt6hYtO>Y{Nv(c70la^GAUn2WL# z9TG2=4?F!ktLHb~T2%$^q<&D|N5wVANVExlGStj4c-Nt4heYE}OPPVvP)I=Iw$vbX zIBA7D0&$a?E&F-aB_n;^9Ke-ljtz7jL~c#)S4SvXqd=KCt~@tymqVs&x1e1bqmjow zaQgYACiG*T4=W&d2;8=qpR6wSAx`_ef9I-kFz9&2tpI+a7V zF_2li!7sK3mP(_BL6-PEW&m&OYfXoxr<0p4v(*Zl8tAZhbd(^r6K_&H90t2L9wC89 zRSyL^(M*_P%r^ffYn}7J3*}%p%ZpUUUZeeKMjr*8d}A-G|0Ytu)Cip9(-wJrx&xXW z(bk15XT{-XzA@PC5qGbk=ky5BsHKs{Q)WEDTJSqMQ@ zR(z}i3NR-A&_qtG%aM0s$Y}M`FIL&unc6Es2uSSEJn5h(z4*lxLp02#owMybMR?oTkQzbpjr!^#7nkdQ!on6RHXWf4IY8nA~cYwid)%lDTt@Ps&GSPjM2%bN*EwRL-(gPd*FA5bwb9E4AY9LFqK$LnI-osVHhlrruqmN z*r&qb7ZKPFJw;3D*XvaUrCxvJPMdfcZFnASm1gYyr6R%~V_Hi?fX9wJtao;#66-Ge zc6m?eF4I@2l6%G%y0-D0{QE6a`#_=9^1BKFjOe>Qq)t$n7^jA19Y`tlcRv zbbn3{j7{rI9~4Cj4PL0O636H2Uus(<6N1U^qb=_b2c=I!hp!C+#^#m56<0^HUP0%L z$*H0m)0&`;$GrXl#>}_4u}7M(DL<~m{0dX#Z5K8kT#+g1rRy#z6-5fqaUYi&Ysh`} zVq@O)Or@p~Yh*b*NcW60Xo$W-gvG6Sg#XYQay{YD2|e0Io0Q*`{@X9V$|daK{z zKJc2}T69$wTo~!ZwqEvLDJ6BJxM>HZ8?su2cYj*QICLY1Gp*W1DrJRQ z((D63KIYDOsw~AJzg0K04DDmZZ!xMqef^A$%7<2N3I2A}fmZa@yb-ZF^VP-`+8_6- xWRE)c72W6PnY@r1?J+wVcp{HZV99(y09I_Wi~j2-rvvuos1y(9269lwe*s2bB>MmW diff --git a/TMessagesProj/src/main/res/drawable-hdpi/cancel_g.png b/TMessagesProj/src/main/res/drawable-hdpi/cancel_g.png deleted file mode 100755 index 7c9c3decb01b4499e5d24b9ad9bd6d285fb7b1b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2092 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 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/cancel_g_s.png b/TMessagesProj/src/main/res/drawable-hdpi/cancel_g_s.png deleted file mode 100755 index a9d24b6fe22fa17b3b33b338b8aa799a60390ac3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2060 zcmaJ?X;f2Z8V(fEu(;5S17xc4QZ0*FA%O%!8X-U|iR?rrF(J8-2w6;mghfHHascs6 zWkf}bP6aKpMMdF2*rZaJ(t!%N6r>535fwtvj;3H?Zmih(G0Z*p-fub2^Stl-z0Wyc zVFWwW(azNl27@^=!-AurF~IVzv4#GWHxHH2;G$-5)Y0-Jb-F+a!ssG-B8Xy21<7C( zC=g{F=mR0f2Y@7oqvo)}DMGmvBd}mF8mR(eLt-?ILLf{5)u==;St6qXv#lKfN+O~H z@kADmr3eDWlCVrA7@f(E5oV?c$s&Ljhzih9AOR_;7N9iJRGEsRp#pDpDbU=qjRjC| zA?g$=@Ox4mRsB$4pjQ3M>GfW<*C361xm5J?n*FY4U` zK+%+;(Ko;x&L#5L9 zXq7q&{3GB0DXfagP=MGdP$f@O3Zcd&xmiLfC_ze4pq49RRvFg-@| zJMZeIdBDQV#R!?UzETl$RIs>8n?{HL^| zv~~W)(QhgPbg&BhT?I(Ptid{=X51UL*OX)W&>Wckq4DTK{+P&M{{HW-v2`xjtrj=% zRu2?}mY5dzfIQ!ZpJzAgpPL#?9_H$L+c-(l4d+G2MWoC?3xw5P2&r~Pd%is0R_T;` z&al?(q`Mp*M$_~xe)gz_4A&Q$@Mb_4)-U;@m{51MXE zudZhANevpkIbK?4@@+Zt?d_aS8gsHxO0l0h(31OnSal=8GyX4IF|d~U1peXF#iLKc zCR4VJt)0q_(Yq2&17*L6H;y_?mAiK?=)seL=xFJ>RsF`p1(ossf1PB}kC3})z|;GJ zPkn8yWU*f5jl~WNq1HURhEvmG^mX0XI!%LUS8IoDe^;wVekZHmMOn5VxAczk4!s zro1uN-ro9jt0681bGo$Jv9zk)#B~>AAI$Htx_0>ip4d0;Tzj|8)y`hJ=H5tx^}ygq zME6DkXFnyYp~nws9bB8bZ$mk-9&|3-|FNmE`Ktx`zHmhI|b_6}7edD}t^Y!EO4#AZ> z*h|Rp+b!L9O($x1IqoifoLzCjyPJDi0RNdvE~E}|ZQ7Gv@8yJS^!nwH^-nvkNn57Q z*|cwCvpzq-=^hkKe~haEDQUskzZt*OO*H{5Pu)eAVmz^01(~hPf6lMYE%9*wnM5oS zw2if!c@uEwL^YEnWRFM=7lKOPprhgZU;u*K1`1d~L_MxW#Bx>rmKl9_4bUn4IBO9K*DX?_Q1MglV znZ|$iq&Ys~n8;(J3%nUQUSXx5>6N9g=NF9}EQoT*TBDWnux9DpG~!AgQTi-GdRp6= zZ?ZMZiue!jrS%&52>#VS^Q?Yi!>8>!U(L69^ww{^BB~AP;B;wE88Lp>$5#hCCg)|JhWVUscQY*EG+*`{Ca3QCOyDKO>Sfk&(Yy{}_H-$?|92WK7sz zt|*K?)-i0#dwkXJ&ZWIE$Zrr@uMdfEeBuydw#skc8pU?UGz7Lb a5RQXwiZox#$xjwr?q?>09bCVIpZ6cv3sG|b diff --git a/TMessagesProj/src/main/res/drawable-hdpi/circle_big.png b/TMessagesProj/src/main/res/drawable-hdpi/circle_big.png index bdad5c8021fd677b4480fd5b7a0215f340b54d0d..4a0f8dd5ffdba8eda0ee34b9d8a7dda5bf7e1b1f 100755 GIT binary patch delta 1759 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 E0VS5dr2qf` literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/contact_green.png b/TMessagesProj/src/main/res/drawable-hdpi/contact_green.png new file mode 100755 index 0000000000000000000000000000000000000000..1b3c67d76edc0f7a53005dd3faed0747e059abc2 GIT binary patch literal 2339 zcmaJ@XIN8d8VyYthB7E9B8wrBCWH`3u8Gk8M0)EDtd7q6LXx6ugr zCx|HB7x8CO@svn-AS3|cICn1;(*uKn1AsdQivs|R8{E?aRX1r9q&C**p_^8cY+ z?iaLBLBU?5~0f{JcWWM^MoQgj|q~Az6gziJBP!`_D2bK^J z5P-u19^ND(#%qB~gqUJ3$P+DaS$}cYe3h%U0++9eOauj-ERaPKKwS8zlJT6c=YsvJ z-e)fB>$%{*%0+9EL2DcPUyWYa(zr)E{bF0q;*0S?p2qD0jjc;eMmk|IgZ*S8Ax1j% zqB=WcZ;G^_tLH+%KMTh61`#}MXW4+B1uSZ<3J;o5z-j4de zG;W_mjRQ?Kdx`3+2>wfhMsY#sxR-jHaWrd1ri;ob?H{MRHkasEZFk94BpnHh)rlp) ze=J)T)P0Ez*jKnjY+I*3S%02o{i^g?XZcp_gR>v6n@`xUw{=A-w*u;F>o*LSJfoK> z1w5qO(2%gayIkrxWSFH}m4(-f_w0{H&%q1RY7Tzh|+$S!Q~&Gb?F>B zP~CTR^Nio-lCdf7<+5=X*IqL2&KXV_j&E-Jy7b{N*Hpx7iYT-QwB0dC8!%s<%)Dr} zWcCiUK5M4bakj2`_<{-TG-*BEItBB6h_@yJP~F7ZDxf(`(ey@OFE<6!j|aW?h?& z%C^Hu;+ASUP2?7Xri={O`$oT;jCa;<%F{=RZ|dJa?i5RV#YgQB@2lMR%kjB4wzsc1 z*LX&IvE|5J)E8|H82qm%+k*{HLst$jBHhc~|M*(qZ$mdS0a=(UmDbU^7rVOG{pjwy z-H)rQFt6F$n`I9-_~jp+89Qst+v=kCQ-AL6q5D~V{vKq|97O&exi1&w`OqG_m9uwY zxPrn=TJ~V}YwvgIuDBXb6pgk&IpbEy^v8j)L8ie$SFYm54t_dkw)vlqPEKIl)xyc5 z$@9YGgh-cO{d_A1=Uy^t+tANN5co9lk~$QuNr)OfM=GiKv7$U0?q z=kCv&XsO@JTFaHRftJ!o)#mgOwChvCOy5tywYiX(oVm+mMQ#a)i#Rd2ch5a(ltjsj zl1CYoPM(edn-7#2qlonXGqJCy?8AZUG*c2Mee7Bn2f@>u>lNlzizv zP{4+C=MC(>(|g`#ZOw<(BgZThr)2&KlFsbNAH&}C#woUTp#2f=D6z7t9*M=8v>w0q z!PTd%9=$l1V)fpvHMo|JG0ig>)yuz~6*oX2ZMZRQseU5%>$qa8ZuFWvoTkn^VHwrd v>_2UxCr`R?YR?h9&B1LYmqQJw@(rwEci+aYO!Sk-Yp*TjpmoHCfE3vu^Aya^ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/corner_in_bl.png b/TMessagesProj/src/main/res/drawable-hdpi/corner_in_bl.png new file mode 100755 index 0000000000000000000000000000000000000000..de26931537f3cd7c343c807925f32c1a3ecbd43e GIT binary patch literal 962 zcmaJ=zi-n(7&UEFL8VGX0tw2%aa}+nw$Dl2*s3XMoKQ|=PPlt z!9*7%79=)ihVG~XNU$)nAtuDc#y@~m&S?@D2$t>pq4(bR-S@patk>==Ev_sIg0N(5 znGHUkOTV)V{QvF6!ZIH&vr3yaNtg8SV&K89AjU;m1JvK81M2d|byw3+kzS_QVT85_*`HLg-Xn~}JraR(Qw7(z z{m>)*_{Iot+qxCT%n4m=nFizvqVIdUswriyqEsv8Tos{8p;#)e6%kSpl8fr5tW3Bj zaSs9RxYsNGBsMXK{|A3g_tWkq>Vwvv%0vBEob!LBhGQ$GIX0Q+A{AV zn|QpHVEEVz7@OmA`8crbKBl0JyRNUop9k+Da2*xyWzDo1Xt?L@jzioSSDW^@Zz~SW z-vPN8F#!)#3&h^OAE8)<6J5mS$+iH&1VZ~NJWi@*)__Jr46=MCWv4|E$TBZ(Wo22s z1*Ehn32FAqDRB#BWhC7O(+9F>q0>Qiy*!P@Rx0dK8X!R!4u||O!;`Qph>D^l8j_S^ zh*UK4sTHUEXmh5ZG2V~U@q%N(=xGw39%IjBA-rBsWPeu0T8~f?^+*7;h74}( zxxPb&(aj0oG*QKmsO8(ZqN|W8@UH71S>G0AX}e@-nX)JvS*2){HK|<6W(-+3G-bxs zi9PVJPiI``gsUy&CRXqQ7Foxk`w%_3g3 zZ87&G)46TgVs3owGq;D#*3WnDt+FeTsp!RK{JH)6=qSH@{lj75%I7o0Sdmybr%B2{ux#HCz4yNFzVF@h`tHNcjhh=3MQzrq zN`s8o!f$6zJ)$>0lGtAXL;kXow}6WO{i7%UQ_U-mFZdU~Hf{EXTydBh7)T z`hTcpEzllrz^i=!DeSdI4rCk9Lqk_5jq66kP>v|OP{YV=A#^maV!e+r^7_aDa#H|z z4ourXzIS(uS5>iQdswq|SW_gLC@`jJh-smisR$*xEGH@)S59SQp;XGIi^Xy>$tQ)( zoU0&xXh9p#xyBV&S;`HqU^yhR0$uYdG%7B#!1TzXxjdKRQoR}1Se{F1DVHV5uwi5W zYV>@IxF?)0Y)cjk<3pRc-6ghueDS49u0+136kEZ0=hsW>&E)IWv(e;rWIIu~(R%mj z?Y;BUy~xg4^mh5QaPsQ-_cYYz9&`~LW-kghpG|ff8f)96-GC{jEo@I>noQf+O(rH&oA$OI z)CCWE^z7X~;K8&00`VYw@+62i55hX>w$+0*B$*GM=Xu|G-)Bynjr#W1?iRx^+vcI( zqT{9X%Vy~R>{Vum4%dj$C2ia%6FWjo*~L8sOy3@$7P8&xqYtRaFq_cpbV=8`r#jeY z?G(c%en{C2Q!FK+?TiosJv8tF4Ss+39suyW+SKI!qOd3 zOjIi1BVvQZKMrCw(coNHrSo)~gJ2FJBMn|8)wP@>{BqUThZZes$6N$yqfD;OZLaHH(If}@| z(}37XE{OM*3Ob6N$P0;w1CT1(Jv=5Fq?ukE!4FrmLA)pvEf|;BAt$hWdZZ=Lvi=YC z{S`VUE%Ybfe+tK)X^6NMit#vdXyf{OX{b=GM#v^O>R^1ltYUMB366(21l6_zZXS7o zizo4|Io`5VGl+>DILOpBNEKMmbJcyZaF7?Ino*T%f?&v%yrdk+IxmXlnk);IC0EDJ z*hc|ba@`d-&#&dCR`5d_Sx1rg7`e3w`(S=#)mxv7zE*F+b=T%18Ed&5O@>Pw`&Xlv zThu-2bY)w*SQ#G$)a?qf5*zWlnebv1kT@FlG6 tJYzoTFJQfQ<;UeW&reQIvUfFu*~l=jlY05-xBEtVt4yPzzpXrY@*AERCiwsW literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/corner_out_bl.png b/TMessagesProj/src/main/res/drawable-hdpi/corner_out_bl.png new file mode 100755 index 0000000000000000000000000000000000000000..6209ba0bea4c97f2e18946a3e5f52d112bcaecd5 GIT binary patch literal 987 zcmaJ=yKmD#95xhLw5U+265_F3uLD#fekFE^71KxT&`3CxG*UAGj(th2);?ojv0EWg zmu7LQHU%>%qPDxV6{3}`O3mI{v-1v| zy9Nr0N(DSbERcBXexxQE?CPp?o^JCHbRlF-gNIJl&1F!;Ap$a&&Deq{0!87(oUAC~ z6(9+s#0&IQGGb1Z6;+xAy$4cjq0>~WdZ}lNt~A&tBv5%ij$5GpZx9VqPY*-zf`P0b_0mKW#wS+5i=2>#)CZd8 z|Dm2YKu4sCj{N% zTOVFLgY4^<=N|3vKP+q?dn#}5k4zb0{mk!~DMOgtovfaS-dvpcdi=-U{J|;kiTV8V U9htA3-A%7s*{JC67w}%s> zL1GFF2!22ZegH5d22_~%1qh~s#K3?6sRKwIIHyUK*c@+B9~5@DF}fi zad1hLB)ABK6cqRreWfH^l0``tmcig*X*A#3l&e~C5R0x9wnd01^L)GA=Gtiv`&&HB zX0wroAS5Xw8FXA?gh@A;A1Y`lFn!x2Hg-XzXf*LIQCOPk$q^iHBeUmnBb3O{?$*PYGg8e$iJHskgTA1LV zg*~9wByerrb}ifv7W#NymrHIy4A(>@O<}15XWN#XfyI0}pH>TMx(H!G%oL=enqAIF zQcl$hf;i-A*xYrHONLzQl&g*9Mpke<8d*cWy@#x#j~&oIvTTpfB{x=Yz_rHbk{`?E zX)=7&*uNS*+@kJ@rX$KA;5vh8VkC zAr*Z|GO@!N5rz#NkFo(+$b_C@ZXyC}Xv218=I5)|474qoSrhbx?kT8l7g|1AZ7rA0 z)~1=Zn9OCk5K2_QLBxQev*iX-C^H>hiO!>Kj)5Hr*_4^1q$>IfRIrbrz^3A6g6E+q zviz(diu@&*Oz=rAL0>V>&q{(QCFfxGVQ4hpT9-;{z8j0KWTsAtCvjY((O?@X7W*3< zpH8PEjbt)T5%Hku5+jVe!Awsczszn=$45Vj0+8q zOgK}1;?Y2Rpi?@k(Kwc13O2S?7_KY2kLdX*5F)n z1GyYchKm~eSEGAd)IHI(Z(F+P8y~sU?LM`&t{zO$D{-}`X3OE1+CjUW8JhY&{5Ey> zK%8i+Pd`P*`_PO>IyB&~P zKx&y_qQ3%(4XF}k=z>@n5mWyG8>$3SIj2d=K(K7Tcc z9&e=>KJfy^=D69pB(UsNOhF5GTwjGh4h|u39ThGY%$ynMxa-bug?MRepW+9e0h z-2=0U!UQ}_Es%I?exxKS?CC0OogNDi^dNLqg=axE%|)P-5Q73QW$he7K$dxwFUT^w z1H>E>g&ce3EXpedSrPAo{sWn}&}l1mquTeyb}H;r8YqGg$1xvEJPA7jDwRs9hA3tk zA{%Y`)Jn2`G&4{zaAb#WKwaX4RMBdY4XQ#G=~)V1FqHM9ewkRogv1I2#OKnK20+vN zKh*Pv=!n+wdA$D=jvAW*7V0=68==h_*PcmT1&SVGi;}QG$l9Qai(NuV)FlDXmt=5j z+4UU~N4I-;(^P7HL@nROHA96=fp=X;DQbo$>LtCROI3s_1+AouWl@t*F)vk%Wof`Q zh`r%qpANXrIoBA;O-I2Cm}dir?o;ekL*jv6%8ENW7HyXTR3KZt00+&bE)Z*No%xeHgg*4X=aM|k-x Oy=t|}g7L1rvhxQ}O*Lo$ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/delete_reply.png b/TMessagesProj/src/main/res/drawable-hdpi/delete_reply.png index 213ff5b5069475a20fbf59e9351e6537f776f6f4..d225e7e22a2c19019a0ffe8f7dd04a2bafc1c804 100755 GIT binary patch delta 539 zcmcb~xu0``8&iynft!=1xw)&GlexK}p{uErg}JMxg`=^Hxq-8hnSrH}LPc(YudkI$ zesXDUYF>$_i>(q+L@y;X#R{s|4VT`@i5|o-|m4e#>7hHNL>oGgk z-(BD6%D}*A?CIhdQgQ3ejk8=$4g%~2TX$8gbk|zZS1Z9%`s$&Q)l5fOmgf}5~EH5oPw&F&ky~d({1$PTipZ|R4_cE?M`r7P83R$M5?2jzgeLWT^^7s6NtqRc| zT%5Y^6wjShkoGuSb%JYa+nJ|jOfwzwILFuF!4vU<)dsgrrpU}De zeT&OVgOz*4BvsndTO3{*1fQ6@nm^QaqQQ;K|8A*LB9h6M+gY;KI8HR&)*INal&mo~ zs#Pi3!cNxrtm$9>`nN~9Yg$S~j~kqw%(~>zlD3=S+8*sQrPAUf#80&Bluo-Z*UUA; zVA;*<#}_aKy76$Y;?i(TI2B;ccj4-$mn#F(`$QiLeVW3(RdN&a{=i3?@e0~}7Z&H- sjAS(ZbMt=czTe*uH_EJdR>f(+pkbc&O54~`j{yigUHx3vIVCg!0H({$MgRZ+ delta 565 zcmdnbd6RR48&iz4n=u$Vn_C(g8oHV|nVTBAS~@x!8k-v!IU5-(DOBVZ`1)G8-9*O$>19oxF(20A_&;E=5WT#U(+hX;vvXEiiV)rFXI(vs3*| zlWH~w21Z{`7srr_TW@B3R>L&8x*zS@ zH}W)^A0Kc0Zn)LZZSBgGtW;G-)dl}qq}md_mtFMC$Vsc!VRGrqTJ`M;icW$Is1Fl)Vxp)9wt zv`53GjRpc2j$B(2ArWDfu}D1sa<1o$`-0(#r?W!R6c%*)?~Y{BispEBWV9Mee7jWoxE+Ui|k1|%Oc%$NbBBuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFe_z-M3hAM`dB6B=jtVb)aX^@765fKFxc2v6eK2Rr0UTq__OB&@Hb09I0xZL0)vRD^GUf^&XRs)DJWv2L<~p`n7AnVzAE zshOFfj)IYap^?4;5Si&3npl~dSs9rtK!Fm_wxX0Ys~{IQs9ivwtx`rwNr9EVetCJh zUb(Seeo?xx^|#0uTKVr7^KE~&-IMVSR9nfZANAQKal@=Hr> zm4GgVcpgi&u1T;Y}Gc(1?#m&&%%+bWr&CSfk(9qS?(#6Qx(bUZXC~jfo zYG47=>yn>bnwy$e0@Is<(CdU#FDNPG765H_NiE7OOHFYr%Fk5*d)X=zw_7Z5ng`XJ zg4->YIQ8lS9itD5Sfq%C2?0|NhzU=&Kn^_Nr{)1udl4{M&wOXNje&uQ!_&nvq~g|@ z8P@(xjv}q>OI)RslNE1xEn;2TwUjZbU+vf=H!bHx9=8tOrGJ=(e=@qsE%oqD^4Z|B z!60i5kBOA%d6n|gh{Wl!-wo9*XMUJ5Gyi=`**n=|YXay0$^Y3?b|WL_{DRIyf)*_7 z56XZ2WPNwQcL!VeL-n;E&mCUQ%>T@oVN;VD@A_<;6DF2C?+?r`U_E!Z)LV&VLZyj% z!I>jmJ_ibmIQte+0Wep6I9fMocXO=!no_kQz*`eX4d-0Js z!t%cpbQGeNC8zB#DscL{)SXq>rI`8mOygIFx^Mi-O})KZIix_K?P5&pLP4jJX~%2B zZ!8FPS-Gw+VAjs%dmA|}7Jf*0rm@jO{)5hO`jVbiS*SFJt z+<7XmP}df4^3k+aM+_zyK8s~J_1`m5Q(ki?L-4Yl?a!`gw%_-xS$B7$r=3To;Pes! z4bS4fbygqR7lqwTS;)8Y-R1SC8Ky4gD?60J8@jIHk?ghy^I8>brHr#zZCm~{dQ-;t zshMjQy*$m-(1r_AF9< p8Th>MXn!s1it|qFt)MuFOp`)U*mWl?sUYAh)e!3r^b%SsADsFXL1?mXAFDU|&)pM?kr7O~0!1~oMjNyh27fg0$ssr%H-MJZq~30)`AIE+JIEp?Ly?7w;MXg?XS*Cm>w1xlT)_$4AZREdPdF zt+u@mfzkHKRSML5yx3KpI*_55?caCip#T5?07*qo IM6N<$f*lOo>;M1& diff --git a/TMessagesProj/src/main/res/drawable-hdpi/dialogs_badge2.9.png b/TMessagesProj/src/main/res/drawable-hdpi/dialogs_badge2.9.png index 76ff17ccc61a9b8fe6a2201ff4dead97efbb00fc..3a857ff236611f80f073c14e49775d18425ebac9 100755 GIT binary patch delta 745 zcmbQp-OathjVZ?2$lS@m$l1`%$;{l)(ACt^$E(uCavr55jfdMYPll7RL z>dp4fk~(`OPow`Mtz5(!D4C zhh4~QFWbGhLyhtHLk*d>`!7Fo-)Xll5Y9W`fB9H__tB&_@yjv|Ig3snwC0O@BE0Uf z>W)-)jSS`#*0YjxN;WbT7j(t6ZvJq03m+r*43k;e(+$#8GuOn1J2aeJyz;>3Gu9tB zo_n}QS>b@pBFn_h!t%dQhzaOk)||b!tKin3#c55Q3wAa-pONQ%VESguynUz72x|T2 zIGnNW(+v(qE9v^l`$X+BxC66hDo;uNRFcpkAj{65*C*8fg;8J8>wHy(xi1hcHV{5*Qvk2_oC73$goPAYlxCK;sksCGImwb#^nsvKI+X<$05I>&GB*PpYG zJij%6#*^kL;)Rm(jYcNVpR8i8U*WTQw#^m8tF_lkB^PvENt|ZD>ONI_K}EZ5#S6s~ z6OQTZSoJpZ=QZ0~wWd<5AN|_YxL{X7*QGn$yOK7p)_*0u{B+y8Q1;`M0-+k7->MV0 z^5|c99R6b--zjaYNpiYzHwxtKmoWFvkh-*wRf0ilWutem(zG-NAnn%e7 delta 751 zcmeC?p2)qyjVZ>_#Kg_a)!EeC(#68i(ACt^(9qb$(#YAs$Wxc~AVG zc0a4VYOh_t8k_qA1DTflFQ1F=;NJd#Ev9*XPyMlOx5du<&$cscYE)y+m$o?}Q^|X; z+5VwcOvCIx7Y+sQjB^im^oq`C6MkYer|o@@mCwurDi>pJw_McrOMZKUiOEOImvdg? zxz7GlzI0ti#%BU&Ig9;k-Yo8H$e8Ij^Y^L4o`0v?$@*}d<&{aew}O3r!t3%ax$FA_ zE;>uN6^qupyK!8Moc|^EVUwBQ(q(o|l4}0!&Vq{`KR9?U@X-Xj2dpkHBfA59lzPgN zjvUFAPyDo1m8n&fAxf;ViHo6i%ht!8S7$RhFd919E$djuv1~bmw|`H7JL7_N93`t6 z0=!vvg)pp8WD0%xRoA=b-6?(nd*>A?6PHRE@}%~#b~?1y+iU7PRZitJ5S>+>;y3r( zkGV&l-;$sGq}B4mni)UJwu?Yxlce0xpvQ=1O0DHgx? zZis40fB8K8$2`7M+E%KQkVGKav>FVdQ&MBb@ E0CR&U2LJ#7 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/doc_blue.png b/TMessagesProj/src/main/res/drawable-hdpi/doc_blue.png old mode 100644 new mode 100755 index a6a72c978f353b12563dea9e8c06faab88a47c92..2e5b702f534e07214e87b0d7768f9c4212b0b273 GIT binary patch literal 1412 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n3Xa^B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvv ztM~P_^2{qPNz6-5^>ndS0-B(gnVDi`VQ6e_=(WVD7nBro3xGDeq!wkCrKY$Q<>xAZy=;|<+bw1|&4cPq z!R;1voO<iUsAzTlC}*Bq#oX1z>iT^hAFJZx*%lqmi}@CHFE&qLZ`a~;Iv6VOI&2Tq zMOX9KJ2^G|p5mE`mM1Mwir?pt+o!0SIe*R{lP5bI1uWJ)d@9u8z@jA3$l;>EBxoHL9?&VRLs`R^{@2O4@p9=2@t4S^jt384m*C=|jZE8}H_4q4p+@&IS!X!wu z!AEH-+X<1Nl?_QsTN^@5d7p5(MY&0(N;yu}oKV)L6W70cULd1G^a;~X4L*Nm_gciT zy{llTT@-Kmuz7Fh-9|;m48EPt`zFcUY6$k1IX1D=M0z^ImH+dMD|2>~gc~vmb~yZJ zI-xw_f%QuzhOZn)oO{$WL4rw*OiUl`I@%>5p#u)6ZeVClFj%1eaR2UXsTV?(f?c0` zwmhnfs6Ljs`R>Py=UAC?e|^2xTDXA2^K7WCSj%SiIWC)3HqW@S`$@~>s_?lVM5nG% z|N3fL)r#fIa%(Lf{&rPA@KP;~b9t*UA|f`jUF~OJW^j%^W*u@R7MKPY7(8A5T-G@y GGywnyS@9tN delta 1103 zcmV-V1hD&r3y2AjNPh$>Nkly3O(Y8miL~X#QtSnif1{98D(K&!jKUwGVJ>Py1%E6$Mfv&+Ig7%S)D5y|>I0D?V$Y}!kAO%bUOTcoF z1wvpMs29ppet$LoXaoEvh~(6ObiVEYJHS|Q5`40G57nxREUpmz;{5T{FF{hkFM>=t zL;3nE*Oa}WJ=&YmoI1dMB-aA7znBL$`azJLoQ2?OtT%$BGQ8{)vWjFhwV;A>s=IN| zBJe~QJFWMspbQt}P%Ub=)S@+B6qLatx*}&dSVWI*?tgr{66g4y6q#sdX=i*ya%wE)CW1TsGiy*Ss^alaXYoi#5A%YcSmaa* zQw*9mRDx@ujq`egQ#|T+idG?=th%6By{dw`E9ZWcz9q?F@*J>q-1jFIM7IWlU{X1p9VBHJ#$lOwASD&P^W z@8nPXF@vK z{`qm6JZ0s`YGOBpekU6YjN!dX%aJ9B4u4jfhXrWKbGKjQ$Q(%@64G?GIX_DIJTJ(R zDd-BgBwU{WhmF5?Kk2|hF;7dBmm_nkVQ{Uf<&K)Rf43TugOqo<8K(1WU;Lvq^Rz@s zIkE+P=1%&w5jl}z_DRzm%G1DcHF#?%9J1Gg=!E-xu+p&K6Q?l~?Ska8M5X1(u1G;< z&}jJ#GX!LEe?$Ll(rDNp3RgDt|BGosT96i`1!+NAkQSr`>Cl3-AT3A>QZ9ZAFaTBp V0{LnJ{3`$e002ovPDHLkV1mH3355Uv diff --git a/TMessagesProj/src/main/res/drawable-hdpi/doc_blue_s.png b/TMessagesProj/src/main/res/drawable-hdpi/doc_blue_s.png index d5f3d88bf3d1b88e19ed333f5dca40bffe67f6d9..0484f441a6f501778ce7b125ca8455aabe79cf7d 100755 GIT binary patch delta 758 zcmX@ZKZARN8&izAtDAw7rIDGNtGSDzp{uEdo1>GZtDA+Zo0F-tvx~WsLPc(YudkI$ zesXDUYF>$_i>(q+L@y;X#R{s|9GBk7i5|o-|m4e#>Q(Sr{>oGgk zyWE@miGhKM$J50zq~g|_JNvy32S~7fSP~}k@jiFSgnbQ*6hbcUw6OZZ$--VJ(5}H} z#Stk}%f#NU#m9Fvbi<ixTMwW<=;vA^SIlsThw0a?|iv;yJyb% z&pOlIsk$>U33fQJC6CSFdaSmo%4>!(`;g)Eq+aG@YVUafJ-+Qk}uOE#+O zb}cDgq1aZxq*6z%X-VydEE&(g8FI~`i#=w}cxTW#W#&(XV2_!z42&D6?36qzH(`~7 z)-1M7qRP5TQ+4J#CL2!Jwp%CeZK-V~tAq3j(W3sI|F+c^W31#V7-|>n+tSpzw{wMh z8{2}+Ct^R}EYD;2E`C~S3*YrMgqBn(pFq5uxJBt?*Fo)s(qRGa%S$10rnDx5cARiMK1m{0kxmH}K_ z`v2CO)bSp2I~VX)^YG21b@RV}X0(2HJ02L!2f5^4#cpeg4q^KnkbmWo|Er(n_h$_i>(q+L@y;X#R{s|5|`e|i5|o-|m4e#>b6k2S>oGgk z7uKfbGBB_>c)B=-RNQ(qC(|P&P~`ai8%((^ksi}jLtL~4U8E&%C8dgeUHHPA`%1e` z(~HT8E>7NAVKU^6s zCG7RH)Luy~*cxDD!WzZ3w&Bu3l?=-e^;^NUstRAfODi-5vo8Hus6Bx=e~H!NiK}j6+?HeA4Q@sqeFr4@ zo;sYi_)&Jm>*uVL#~05A?PWQ^=eLb_j!B=hzQuP-_Pgmz-9ISpdX^h#dR4n&&V!KF zt+RRVKK*{Ech8EZ&-1^%nW(}4nQ1}BgOCoLS#7-G3$>Ms-!aa8vgY&Gr2>%&3rHT70$VN?)kEgPt~!EN4cKI zwcMEW!eF-m2lo^HQkExdGTpmlPQ+PmnW<;7EY5VZ@}2WyLiuwqr|xQg5Yw+bCra94`oeok73l}7_mx^I+=-cfsPX2( zlMHj*LJJpPUM*!K>1ye=Dy={&#IDrpt>cb~`hRZl{u1@`kyEkJoNgR*|Da;<#!XQv z!Q%cFGxH7>YESMnpR+u#Z<}!a9v=20(Y`E)$SL*|`-b zXZ<|w#@wE8?IoN0RQA%%|6&*1ek5+O%BDkY#iSj7?qtmlC~pc@yp_cdl=c;Py4r?c zIM4IXyyXv8Fip`pwO;nt1>v;~?W*${7q99*sheMWJG1;s*6qu|Z$&LuG1v+}t@n8S z{CLi*Ev-QLy8?yk%u*spcSao!WPQ>5wR|&!Z{@pB+%i*VesK(3w)bqd@|N@8m}I6l zoLb2J=!ZqgiC^_!C!5KLeA?hrZK2gJC02dbm+#7!KfAAH-S&t)eAl4Y{r4yL%qNMR z(+WbEe;soCwdLwIWo41cX%<_SA1O5ba_v&ejga%~wM}9Ut95>x7M_}!A(|rSd_}4+ zi=Rs}^>liK^Ma2u`7io?<)XjMKD2df!_Vs?AKxZ{vg;WJqXuAhJprX=FpAv#$6>%Q X_vV^sc{57A7=Xaj)z4*}Q$iB}icUOh diff --git a/TMessagesProj/src/main/res/drawable-hdpi/doc_green.png b/TMessagesProj/src/main/res/drawable-hdpi/doc_green.png old mode 100644 new mode 100755 index 72180a744413e6c09fad19df4bd7926b1013ed09..9bc676c993623cf7862a8f121e17e9d5f75859ba GIT binary patch literal 1420 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n3Xa^B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvv ztM~P_^2{qPNz6-5^>ndS0-B(gnVDi`Vd`vPWbEYP=4$R@Xy|Hc;o@xWVs7YY=;Y{V z;A(0L)9aF-T$-DjR|3v4~Pj*wm=R%;iu*SQ+p9GSvRE zBzR)YsjZJ>+L%*VXFBbhP`7G#NBbVd?I#33-HM7h6~2ZkHR;itL<`YdGmTG}ZEDj| z)EAQen)E<~rLZnsY-j(mgDgzvY}y{P`12-tEHloKJ*isr?~mi5bEo)}F04^FqFgjh zWRm8E2?`f@Hwnk?Ju=a!aaNPV;fobBSSCGxp;f4o>+r}!s?lZQ7N$U1d@M=fZCS*gTW_n3xEi)i z$bP~o`QN&_aL1Or9~pifsCe4K|4q$Dy^U=_<`cf3Z=POYi}`RQkwvn1b0M$8+V_?- zkF*7siz)+y;ER5P4U^`+$#N_U)EX-~KC1Wv!^A^(g1^E&_KyM}6`()@hF21Z2x7Yu z@Nf6)ZH;;p)0bNKdu+YUFTFiwTJ}+2p66VRW?nx}wU#d6(0mcPR^!l3c0d2vNq;k5 z#TFb|b}v=E#&zj^-@VI3ZLVFVdQ&MBb@0Gb&7fB*mh delta 1105 zcmV-X1g`sx3yKMlNPh$@NklV<+q~r}Ex%sn@l(xKB3NMiS8%b^1pX9}`jIuB>VaRA!WZ3onb$_QG$2q&Z?sKl^ zoISt#v~!+4_uP9wd!FBUp65IZgu`J&hjRq9AT3A>(t@-gEq_Q0(t@-g9a@kUq@bYU z>K%#roGD-o$l&u<&;`Gwe9bqo z4;+H1pMDlJ7+eBVEag8y19%I*gF)P?k}dUW!E#9YBoNAE8=bc~|7z<8;&o-~2R&|-hQ8WI<<>M(YK~lgk zf=oF>`TQ%ll>MM1+KbVhIzcfG*8wwM%mj= z6xhhg;ym;cl=IlAfys^1is+iRg`&w`5#%JN+EQ;KxXZt@2DPF}9{+R|kA>r5UJw+E zoJwJeLDPl`a1*q1S#NNfN8L`*DjcV&E+|$xDZ-bW4(5S{V3g1@`hm?+X8(rpe##1p zN6s8jCx6sw0egh={4U-%Lpc7Rs-Sq~JcyE8QXD4F0ZSr(q@o}<v^b(ppglbGnYryqJNy3+~xXk5v^5klkvr5EV+`LTM3k7 zO}ZrK2Iwm!?-^)4&Hr7HqH^*er%6`c_-8@97)4`@Oux#BD+l3&wDD~>>{mIma!?VE zaD69-B1ytEN^Qy#DJS18Ic|-l6D{YNo3rhpm*oIg<;WH^+HZ1X3ZiG^R|PpA{UAqH zl7FVy$zYnf_fQ$KA_v;7df(85G_!p^6?8JvY_rHr&6e^yc}6A zXq<3d!Rs*ANaf#oN{%c+>B8|FhdOje3-PqXGje2gF>%XV|1RnsHzIp_>bxRHmZ0at zakS^>Cv3`;l_RT*)d+bf4-AaqwMxs8C4Y!ER+^gyXvuT0U*yOfNgol8X>W63l==l; zkRwyjHE=~ZKM9T+e?R@C4F@GWEm2;M%&CUKt)`X}H9h{_YD6|t-s5hV#j}0!kJ8N3 z5+&ux7SzT``m7PzkzwYfX%6*i;J607GZYTl>p`@`eF0c)*gq4eF%vxnS;P{RmP#YL z1(`vk<#Wsski+?g{@J9_u-_D}Z0P?N(}J`hEl3N}g0vtlNDI=T1!+NAkQSs|{1#vU XUnK!o4#5(b00000NkvXXu0mjfwJH=U diff --git a/TMessagesProj/src/main/res/drawable-hdpi/download_b.png b/TMessagesProj/src/main/res/drawable-hdpi/download_b.png deleted file mode 100755 index a9f428125946887f87711329d7c740c32248eefa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2031 zcmbVNdr%Yi77ieR!Uc<>0=BRQ3&N0u-Gm5{s38xGTrfa@@M;ao0wE+DlT8yvlxPtJ zMJqnASX3Nj1Rtfouq`!8#bT7orAk$>0X1Cc6@o>QDX873*!zdmJ9Bq-_xITIecw6f zch2lKenPB=o1YsFhx6dAU?*W?wEc0#V{iJ@T@^O?q8uTbjO3zPkqX8!B}fho@Z_RA zI0+U>)~@M*F@#gDR3Jo!@&BZY5jja@w;}1|N(_yWEz>DQVi}AAIdGm-!61x&dx-!@ zB@9AZM0|L>k_G2WSFBUP$?FmX;&n1{l!UNsDG;rrV+3*-6#+VVp+Zg9F$k}C>Db)9 zO(p=ZOi&qv@Y*S1JRe{oDj0|$QHbJj5Cmv65=f1p(ZDbO3I`!_ICj&BAeA0LqeF{< zHx~g@Q%Q2^No?*LEo{Xg`+97Y(%V)!wQtgW)QG1 zB#Bf)r?9vn2aI4tTn>vv1wkeR#W1n|3YQu47RytpQISFnPwPrC-8WeF-(u-36)Zv#l>k8srz?P;kD!P;A5j9V zWE!w2O{$O}T6Kv1cwR@#hE>u}VF_1-$bnb+rAyzT|G(pYjg|aAIU{4vknP3sU&S)L zg;k(^`nL43#oOkA6 zwkPJ9A5bXPPM3g6?MV8DgG&Z$A8(9a=JdRdmu{J>3(Ue#nsRhYqhtHJU0h73EwMIY zufv75*3Z3nSMBvpsgI^P74>J>aNqgXdWo05G&NXKY|vE5-I69#knWK4kH<}jp}{nn zs_zad`bm;zr(1Pj@zKb%9r=&j zKA-s42c}Djo7V?dRP9!c_a17H_26`4#$Y#Kj+I42`-a^8|JJhn9TTT=N>W#^+E!z#>dpk~ewJa(v zsp!svDCL6RU893bO9qee3Zz>N#UV3#V@=E599}N4^mseI=uBq^f7j8Owb45B`oHrZ zS*;Tu2`%Qa!*O3Sj0#hNqq_9#JDpjRE-$Vdt=T1&+yCe=S{Hofe_WVY=VT)W3=Mud zm{Gmtlk5A7u7&!atllC$P=?pMZ`Tac6Ar@guc>Z z&T}%%cRryF+YxkbPy*v`=&#MmuHWM=F%H*vUqF3F`dj@pSF^?rlggWK)pIJ`=dC=B zJdJX@l=)c^wLl2s^&1UxdR$i0p1`K{vmf$xJARd>&QA-w=9Cl;=xF1gR*Z!2Z3w&KngHP#T)&pp~zSmrafuOrm6ddh6+3bp*w zxWlLad0y4~69@gW#@Q-$Sf0O6z4qf-0hF8ENXJ{ou7&0Bf?DT2Uv!_GF*GYUqmfiM zzxt0LuFq1ZyZ%?b#+!XEAJsH^&LXc)UcX8mG*EWBEzl2$6+GAwQFZ3$wfBnoGOrtp zQvH7($hfd~bH-0UZ0#{`4H@z*DDAc#)oq7N?MwF4u6%fP@}u@GxL@ltb`CtBw;DHg X6opCrEQ53-!V`H%GneKqS*)MKuvB3isNYFS$i5jF@2**_*G6)c zA~VW2O2dQFR1uk4C@wQPUY?mD4^)stLx5l-8xv4Ns1z`&*TOoskwbp1%f{xmZ5kPP z4M8(FPV0{XF;EH>RAcyp04 zYg&bpE#?c~*uqvEavF+i*fg5KV4xZpR79If0|NsCZ5nhs1w&AD8(>swq`P=ur+C^K>!~uE2l7F1O5>f}zyOAT%cTo=EPoIb_=WL>VFDhL z>&N$J2?JREQ(O_OL#41BnzF01*`4Hqf6Ha_w2%}rFQq(TB>9J;4rrqMz`3Eu-{i}l-E~fW*jyY_K7surHvC4;! z*->K~_hyQcpHSA#yK4W$Zuq-8d!(@arn1)YYKx{y2qWIzcu9XDu@SDTDgL7d6u6oHf-43`fS@U^7II;H3 zBP%}SA1!UUby?$2YqWsIZB^YOPtD$dM73%Eb$F~|o5wfrJtLlTdcIk05#BX7j*m3W z-sp4nJf&V*SiLoG-LEC^9BUPb^W2?`*00y5aC<(z#+X-}PL@N5t_XQgj^>zuQ4tz) z&E0->BeQB3ewDS1F`rJ)OQ<8XL@(&s7b&8RI|c6%nhObK5es@gBD^XRnkzg7F3TRs z&=;duTG!Ckzy4hC)KuJbxNoN=0Z*E}n^ANnq3oHJ*4Qxr)snX5;?U1Hp3XBmiQVG) zW?n<({*{{(3|nfd*Q|I-)0kxQZ~PMIm-dbMYfFUpiTJHQC7psR$C(*7q{&2bFD`oz zg;Cz?Ecj_Sl56sLly*Jq!sF8EXmGtgxw00BxsjPiE|Ghbbo_h3obRX?<>yiRX;rAY|Rg2o<+8Fz1mw%CV_m#%n?o^v-Ab2k;S$ryJ1AXl4+s(~E zLrlkK-yT1p-)O}jDhN~%maXZa>xCI#WfhWa}u>ax6)UHV(@-{DUr-W9q*t%*xYS1wzBDcy4M`^XiX ztj*a2@&XFphZM|e!*+?{v92TyI#CAq`i-Sfb?gfVJI ez1!e%93J=af34GBw02&z{ftF|XnsvtO3oiiyEZ!j diff --git a/TMessagesProj/src/main/res/drawable-hdpi/download_b_s.png b/TMessagesProj/src/main/res/drawable-hdpi/download_b_s.png deleted file mode 100755 index ee0cc68fd3178ef37aa4f3d8dbc4a4a87efa2648..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1975 zcmaJ?Yg7|w8V(nMg0Zw!xhN)QETBRzlN%6?3JJkLgBoCif{>6*AR)=b$zWncG$8FN zC@zX^(ZW`xNWBzA4-{w#rDEB#tSoR4v=Z5hltq%%qv9&K6DxLqES)nm-{m~d^SNEi6_Fwb(65V_2hSIUQ2qZ;eBpHU)bEmi^2S#Ci4y+?`lUT%6 zVx?9N8}zGR;e|rBK&wZkS{WqZaR5w#tW?U`Tq=_n!(>K9Gw4wu7|V=d@whw&6O7_T z^P?j`<{Xy?%kngk7M-TRDF&5%cQ3=E~>K zC30Ra1xtqFZ0!FudTtAIk8}FQw%Fp0@gXhdb_BEa3lVS*hjR}T@S>BA!#|(gwkdh5 z|BW^f3~#7cbR)}3&Z$2S+|JXe&4n3P@RLk0;I!Y!#T#CQXV01ryPh$9$x!z$O6L|HX}-&zzii1?Ul7>3@6hQ_dkC}EJ9~OKBW3g+&V!bbyq|2dA(f1GGF+Zp zMYnu5e-zrj?Moryj!&C8)3VvRs3~YxuJEm1OF#YBf091z{;08iz)mxEuX@;UdNQ_N_sH*-v|gqyy<(ee-L!}3Ut7*zMZb;@P1md$0L4v<`$*{ibhRpJjWD=hH2ZRdF)I zU+&p+EGc&W&Lga>6XG)W*3472%`aUZjqRA)XhpgaDAKxp=Oxw4M4Zt&7)T>_^rN*a zCmne|?rk=E8lO78rneN))6Xnpwa1G~xtYHRNAoq_uAU7giG$wSaIf?b6SB1{gm$84 zNFA~Ge7<{Cb&RFP{mB=;^&eaML|#TyC3hEJQ6aQmSnOJLG^DPk!1Za3ua02eljJq+ zV;(u{YhODBG|Q(u#y@%d?B5Xy!`WqoY^Ki7Oek^m-=*!HndPqF*vi}6qmv%OhV?;D zhVCO>g#j5smd(=@1(L@pkG}Z%ht~4Z5p&#{C(_IeZV}rnKdtnNYwpL4sV>n3=}`XV zlJ%44qvh&Q>Un55uk@(xQ=lez?DL@$dl_{i#0-)+5p8Gl>V zKP2faVh8h2CzN>WIkeg)Yukg}M>Gu8MsSgfq2urDxbVu#u!fS^;xVwQ?}9=R&NbJ$ zHOG;9eyrG5ysrv&z$;3MKD-r^)NsMvyt=Y_{qYY@t}$g%*4nJF`XoTLEsLHszwtRCamhV=uz=q=NiQQ9Sbj#xN4+GT; zZ{u!t>O%SPj>#ow3J0{Rq{|6sEi-mSQy;&+^jcuUZ33P;;P#c7FzmhyFWJLa$wP9x zf`{V43DU8Y2+2O(GygEVExgqK{!CoC?~_%nOX~^3VE@y`2j&!0==%<4->CyZIL>>5 z+MIVC%O#1rmI~r$WBi2cK(o27G3)p}aUDLc6-_7|?G0Q~^u15ys=Kw%MvDpG;yf7} zJ^HWBs6zev%4$<8)?WNu_x<`q6%-XX7^GRf;63fr@6Qd69a{ZMM!$FMO|c^tvUu9M rZx-)aVk`20+ucYR_|KZV6c-PiQaNS}?G$|Fyh;VJiM&fOlEVK2qx>W( diff --git a/TMessagesProj/src/main/res/drawable-hdpi/download_bb.png b/TMessagesProj/src/main/res/drawable-hdpi/download_bb.png deleted file mode 100755 index 20e5507999071f599d2fd013b9721390a40a950d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1086 zcmaJ=Pe>F|9G)_>wL}XNv!K^lk>t+o+jT~F*v;HsHy7G%Sr^))volY3(3v;RJloMj z^ar9qvM2?yB089Ks0ccB5Q+|6JVX#k1Z4;55>bTE!QQB=9omMOH}CiOzVG+|-86>MCLvK)s zVJcWHn^rdSR<1h?2hztUoOEW~qHrCKg}!MXfMfAjFh-zE~`B z#Q=w`ejWycL07}?_fmw{9x;gQcn!O$q!2^4VreGPumM~}Igf`)n5B`frJ$P|vWC50 zCR#Awkxd?QJ~yQjFq!;6RM$7qHp!sPc>gJEXGcuLXONADErm9&ugP^~N>K~R1Y22* z2TN5<7cjwg0h=J&BZ6aRHABTkyLlC#OiBsECbFTRL@dlw1y0jcsU5aQf-utB8R&{b z*d?_4;=xE;Tcj=O7X={@DRE<18P<_ON?di5E0pEBqoAAAa|~J9Ii$udtb^5*C9Qlc z{<3=OT(x{GfwEkl2E)6J{j1TXBRW0qc4KU*u`&3_pwn*Au^wM4x>xF1BG#F87V?81 z$<-}Y%j3~IyQg{<2X@X(HOy{{*E9-+clQtV)$Od?&%l6ZbnIr(J6(Hub`D%_z34#C zmAjpbE0v#fH{MTH4EeJcvdr6CyIMX>zIs_WRQK>x^WLF}``XE9{e!AsAutc#K3z#a z|6#sfXaVy_dK$s=b6gSkiX;JqjAjZSo>Vvi%em;L~pgIiYs diff --git a/TMessagesProj/src/main/res/drawable-hdpi/download_g.png b/TMessagesProj/src/main/res/drawable-hdpi/download_g.png deleted file mode 100755 index 1c57621323bfbe1ac6a37fcb4e0e4354c8500de2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2053 zcmbVNc~ld39uJXAFzZqAT8|L$LXt2c8B9tP$bo=?2tlwxAjd!k$YC-e0YRcD(nSjF z3JQyLU3QDYqg4cz!w{?#T2Z=-tWdxP7Ryn(Agl{ZK{`>f{lnLNZ|BYY&hO{*z2AJu z5BA47Y;wS0Ft~sN>`-*}wtV)s=*XDwQKQpFgcFH`DdP~GNDX0prAje`50H!Ep-@O9 zO*!@@gd!GcI6l6R0HQOZdoiwsFGSD|Q>Y`8r3MQmsfiN0l(2sv-doQ=3FHtW!t3Qp3JpWgB)sBfpli!9nSg&K zf+R8tuZ@c2@$oFB8p6{^ol^|+T6o^PqRA^k57}$_T zqJ~untW@AFj3Tj8i!ceOrLSF(t9ZP(#0t%uK%pTc>qROuK=L5V--6i5J@NkDH%Qdr9H zWN`rwKx0$592SQP0KOE8pD!2mV}YI&IvW6%INpV20W?1kjxUG90%-uiq565Tec8T# zEKd#%q&>Fq5psT{TeI%e_}>PjUii#;}^xUbc9x* zW%;)B(aqcDffQ)RsL|F4mYE7L7;9Pp+gG6fX6TQ?q!ouYf3esL7E;6ggcqVC8?r6MC z+PV`~6K5|J8*=}0P@B7uFqHB`;Wf;7X2ZbulXH8WU7DxAc_I)RrI?V+-hs+VbwFuR zCD#r~|@fm1c%FRmQfsRH|KbyqXY(wy`W{oLJh+}3#7q<+@Bkrf&;-pTO^ zsdl*Iv!EE;u5Bs5@8q-ozGHjuci2XLXw0;kf80`kPEkN-Kty=39`#qov3ogPF-M3lsX=7gr76|O--}^emks_GB<)kTuUVb+re`&yI~tT z?YnvAQP?`_{6KzT!I5XH_j=_TTH_C-!uh6Uu(h{OY{n+5jO{9PY<{dNB6)MaDt({Wv06b0DXkzgLSKH>Vsr+2k85A&?*ejGmukL*cjmc_1rc(u!_ zuT?l_?1~^3dmmj_pP2Rj)~d*}+7ukF-rp<~4+$bGs^`T=_*)mKm$Z=)nQh%cu`dm& z+8TZ|e~lCMLG?#FUZkoUUz+cih4m)gy)H<2P|@lhA&h259WG;Ju3kBIdc#Q)vEpLr zj_JVR`5Ety@U=ywrx*UZfn}O7lP(b-m5vpa{Qav#ttsb*sg*ga9~77#@9VEh{p3;p z*zbF;Ow6}Smh-daQdtq5pN3E9Prpd3^246=8PQ-LXa4Pn-`E|jy>|hb`BQbxl1ztU{Wj_+RMQQPUfXIGQB;D#ZlxpxbuaZA~cU#;+HNosHbvzXZK zk5oGeXY|P*7BnY#X)BFEHKxo-?(CJ^*q$f24gJlLhHEQT%jQixuHy^~tFGl2U)^3V zZRa+X+`Hb_HDgnr_Z%A*W3HXNvi3A{#b;LI{+?&bdR{E<=2nn87xIFpG@sDzdoihQ zC4o1r2YY-VRb8R$rPJ}1#%x9GSndXRw({{QmqYctxl<$Sy6ghhs`zQa(=CqM+Sgt( z*tQw!Z-rD14bDy1xM_y#DH3YC_*u>e=d`UQfz5{AEx=SQT~a;HAx4~vZjrd=iE`7H pFS!=#LLwGOK*4I~ zpm>M^);^q`S_B=CD2N0oRe?gm2nv=4Pp8zP2SpfOJ#M37?+>Rpb342Hd+g`)`96N% z@9Zbrqr#WDu5ra+Fv|oH+!%BWu|FkQ5f-rBex!+wmN=7RJ*_RHB3of_Mgl1k&gX1{jE^kUtyBiZaQUxnp(_?489_7<0O<94lAcOZYvlmQWHRj<6bcbV5OoJsh}b|>>3kOz zxUf#5RcH`}T7|bOij&mo2#bJv`Z5HiCNlE1uuAtTQE18lgIEKABr>2>+T(hG)*&(Q zpKiPnt&2OLfq@uUr%u;O(DRV_E|SsQ{k0)G5cLKUY8B|Ah*P<0NxBkNAp$OofPNuK z6;g=G;e$Mo&ZY2q93Bk>!zdJX7@xuBFsKwJ7X%kI-o)k5PzIZcG8uFb?;I(4xEwkN9*wJuq$!E<66 zct4RsB~|Nno9xH)GFmRIRb;?YzE-WozsN77c!T}_9rsJF^#92jfI0)%i{rnFWpN9w zK>PG{>7$F+%>%2@j?tp6vDD92j=|s<0&ZBGVc=2uu85V<>%Lz|5qp%uzhzO0^+$Nf zWxw{m+JY}iudKDE;3K#|qp0v*oPamEX33VB6+C`?*@jbLMO%d*9a?pNNkD@ioRxSm z(cgJdzsHH^1+>Pxv*2JCiFnDDz zb+=?+b$@0G^|}^OGAO?gdz_g6+!8#TX`qKFa)1A*z0&MII_*B~)7g`J_{^@m&2GmA z&gTQo-M04)7ai^;mz^C*j`8iT3p$IvR=I6-=&DJZ|Z(~Tg-7P`Glf|1a ziuyyooh@2ndpagDnBNmN?0Bc{H(b}D^5NC#&QW#u3Qo+a2g`;x#XHJdMYhJ`%%n3_ z4p6_pEo3q$HsE|f*V{pu)1Cl1hannXRXn@X)$9mujJIv0j{}}_$=-8rBb^Dx!j`pd z*#qZhRjwz^bNtKIYryv4Pq8{v&d$;5SmTtJgDO6FO~Wy_o9|<*Oj!@t&5+x#^cdZb zO(0`AmWu2B%oT?9{A{QaKhqnt7laCnZzx><3hmPD#@vQD$Hh;QCSTY#2 za^3Krdhzkf+eg9Y$A|p8`up%2a{UN$arpaO%ed2n(XW0sHM^BR&3|}z3lJ^kBtJF^=W{OCpY5fJ zoG+aT{na_%yt9b9)qhKSj{ZSqLP7fde5Xl|=_;JoKX6Bnn>o;*MBP)Eo*>G*b&s=8 z*71DgDto*$B=*O^4yeo;`*>=Zv!{<|Epe}I0v3-~EbSoT0z39w5AXXf587z@uypkS z?OW2Y=wEZXCn~~$QGJ^i)+cu`eQ(-SCHqw3G(amHuaI4#CV4O4w!SCpZjAoR&VZBa zXS=#XPGAn-YvI&%nx3rwLHJJl??=g@g#{mM{O~8QpQ<7(*0AaNsY{$}0ipDGK}*wo zBWu(+xUM!s)jG1b&}rLK-L2*O6E5H4TJkh`j>fg*`aHgIlWg#GEjTK$)NvsX;&(NP zSntY=*wQBrCztr-nVSn!aUD1MB*@Jqhi`_O)5kdFmOh86J+*B9S0{ECgKPhgxwa1F zH#R?(T(?-m4b+cAmWYLxa?IRNgqSM)BYZ>Ag$`taT0CE&Sl;4etSdXeax4CG&vPy+ zbMe`UPd(4wIHKD3qy*PHmSWBKjjs1KJ?hzW!M)he_Qhu5MB7`y$KF2u7-rSL)P>W# zcLxc-rRbrOYpwFt0g2Y6%HX~@SEmOj|A|CjoDDn}-SH%DLq?^5Ilm)B<~`ON-1^yP pd)p2Mn4GZ{TO%8f%Hx}GUYOkZM-G17P6GR%S-^|pRXL8kx! diff --git a/TMessagesProj/src/main/res/drawable-hdpi/download_g_s.png b/TMessagesProj/src/main/res/drawable-hdpi/download_g_s.png deleted file mode 100755 index a6fea44b6a13063709a247b5b351207c11c7a80d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2310 zcmaJ@X;c&E8U{hMD2rP~DjI_VJ%((MKtdvr1V|)68Yr@uLY4tWnang9AO_SZDhMcx zLd6!>>Zzy*D%dNE(H0Q7f)$WOjKvMFC@7#Pn|ETx_Q&t{0SG{)I1QAjR5LYf{0Chowl|tdc-#jFx}J^y zE2xMd5snM10340z<|-#sC^$NuNO7mp=@bHvN~TarWbCH9Qrwv|I+N;w`*`6oZz@F` zQ_S=K=nFfs@d+r3FiE78loVo$8xdB;lPC-Z!>B=}x?%`d^#&y>)wn9vj#COeKrL5+ z2nxbVoKaCKgOgA;9*gv^6d>f2tWy24OjyB48Yx1e5Xr`rrhq{~{~roLpU`Sl4E!DM z{}fh-Z9o8$7*NAWDmm7;I7g!^gvnI_QWRE&!EoYK6-5a!3ab-f1jh}f<6PE&N(G#v z{`vzxD2ORgs!^#@4hVQ`Jf=VdK?T!|>OrUZ@~FPv#%fIHhMZ9`LM{(9s;MN15MJ3Wd3IpHkh)l_v6QK)l{7z^sh$ML_C$q_g=5oA(pqzsjw(OM^9V0{+v3v=D{`}9?SyXzVkl`@dEWW+s zr)^>KT?<{JC-zrd56Gf!nwDoRTsp(Uv$tX{=LnK-yS4=B-67S43tNWt)a)zyg*(TB zK}D19Kuz4!$Fp$H4=>-I>Y2OPGPOL?d`N#u0jNxd!rMlha~!}k7>yzt4Io3)KT z+PoQhuHh^zX;$Mks+;xfvb)FoCKuWMQU9(_T(Io7v*kjf3Owi5bhMn zshH_dQP{y_4gR16dSyF0SdsUnxqv{GoE#5qzwEHIz2?gE2&?q5R?#YtJy3Zvlfebs53yIo&K}`JB`jmC`(?uL z{5LOwDK~Fa#P3q$;f8WrtgD!1gnVF+m`M3s0&IvuEt_Twh{+@Si^PBcF zZ>H~vd1TSxW_H}b-tv9c4-GqgoSYX=^whT}o2qNN0|#5H&hFH_pjY0wq0ztCI%6`e zs&_;(aH&rf{hjr2#=)xOj3%2-ny_=-L9aa{iIkOB_aR^%zGQhbl%C&XzGa9H)|fdu z1{3U#K6^Z#-0Pv-bt*?xxo3XXH?Q%n$f*jEW=o~%`i^KH+H)WWTz$2b+>&M2|9ZaA zYF>#_nYdtEfZ2M}Hf7pRwGX0;wo9+yKsHw)y5a`J?INN(whvd7lS*9?9Jg2!69}HS zmqg!nyk;wodh~MCyWFxx?4(KSy+?_bHiaR-g_#?aF#xmfqDYThcUkJ}tMnD6Rd?(u~uk-2wa8iSKjj;$KEC)Jk7^zDwN! zH`?uRe&(O|OYj`~mhkFnfitOC9YVUyY+8o9or#gRdYyM2-p_53+6()NAaa+!C{lIL z>Vly>&)cWTd?ceTbzfbrFR+zjN?0l9?&z1G=WI@WVb13wDe=1dJ!}uFPNY^f&$Iub zVbuk%$u6Ji42eVc_)_nODayOyRS>E2&s0%y$HuquliMdo!hmlrVjGW?6#l@1kK5c; zjw<71nHh(Qb(QIbJ=K+`X#;6c!>x^^L14z5h$mhrwWU=dwkiM84TLt%Wq1QT3q>c} z(I7obo#eN3?mr%vS(DL>t|bnZIZh2NYmzR@+~cLbW3{pMZI|0wZ=e@7^i1T8y6he& zB)w}S=22(;Hr8CqaH)-Oh}T50JrsVc+pr*wR6s>!=JeUnVFzkd^Yn;TOUKfl^xF;> z*MT-(l_E90+QXWNx^`ToqzPwrSj%p7?uymh&F{yfyK5-)+Cz zqm7&>&yy#T?#FSxciD>q*SvOyoyW@1)%xgaLeOcrJ?Z_>!@lJ4_eU&R3!a?|=-QyW z+Awd~mmv?b6FW9h+r!!4xC{ldrs?c=7X(B_yJDaGyqG47IWczHcSpRkXYP$PL|F9B zu~{<6clHQ)Q{=O4V@|*>8VW`|jb|wem#}KP)?U3tZvLHe;BIh2(y$`xfqA6OCWCf< z^QJ~!>36G>7L`E(uW)boAt!$2E2D0_y>nC}I=XwT@%^;fCS~VBiznhUo*4g31b)H1 JGEVH){{nz@%wzxn diff --git a/TMessagesProj/src/main/res/drawable-hdpi/file_b.png b/TMessagesProj/src/main/res/drawable-hdpi/file_b.png new file mode 100755 index 0000000000000000000000000000000000000000..b9b9fdbc1e5978ef665d6ad798ed4e30c982bd2d GIT binary patch literal 2112 zcmbVNYg7|w8jcVkP{1e`0TG5!1-d24gd~uZfD4M#A*%d|OjU%k(rd%qXD$s>hcY@&V4^MyWoSFH)_nY^5 z-uszK*~T>g0-C1P8K^Y*Z_tO?>|Y z4M3Fw+GdWFDb*z)Iq2FVJ+i52V~V0ESHV-#;^Tl=BcCA9Ah;YbYVx!OzEMD%k*oxjeCOE^e5cz~jUa zGMC5!7(<)KD*vCHF$iZE_U8DXW?48QI?%p-)%t|+YIqPWF)?~#G`wDPpd=DmCxM|9 zW6$`}Eo;4#yf5v`Sl5#dJq_tub+{1T=Z_hUU7Vqf&ayS~@g zS38-rBm#IpRKrlE*Pjyl2lTfb%)Q0yy6dNmR~1ZDMSWwqf3^R+9TU9x?5+#b_ul#G z6Vtza@UPud=;}Arg11&QFKzZ78oX+h4Ok{DP|9NK8#gOQZ+A9*SA0UXZJFBE=6GNq zzpQ8Xx=oK)g#F2<+2`FiXM3qukNn_CcTQ-Jyc-C=?`D(R0@{BK%3e~l!?Ha5+~psR zQvMG2!o}iGmbr&ey+;SUrawl>R6Jr^|7>gE0n$vG!?dJ$+rgoLUdX#4uC5EM&8_L{ zJ21Y!@>5{xzsz~>)siP!zYQ&#J!s)jmW}#sGmD$`Q{9a|lz{77pPcBHHlJPx<*gB{ zX)H0lU0&SfDy?XgU!OG3z7-~&Py6LUF_d@@f(Xnz$2AFHunM>CXq?&1q zk}&g+mQ|%(i&IkG;}BNzJDp7t4!^jIx*Tp%bNE3Nn8PSPrS{H{#!$y(U$oB@>{58R z)vG^UCM%-btix@;L|a1wm)yMJuqJT)YC%VfO;qiDS}VEH_n!-Gl3Z z?`QNI68*dlZGrHYNoVd{`!*5ta~T5Ms%oz1S0vqcfsQcf%-Rvk#c~tv;_%U>X?KT7 zKYJc&KPg@Ek?RphBc<%pFv*LYWg8|nkUKO6QgrFVX5Q+>rN(SS3EiO^HI!_0=nft* zb?mt@^XC_3RzU^ykDng7bO&Ap4i5o*Stu=IdPc>b+$x(54V?Xu8fV+Ge{b80=Z%^I zL*lNSVb5WgV}WFU&7s6f{n^G#jtuAX%!uDR>!vKdEq#`AR`*YbpeBVq5abUspQW;CA9d1`&8XA^Oa zbc%0Yc_Q31)7H@jzmM)N@T&dXnw`Y6WYEU^-NsyP55(0$C41Ck$u@1wslmOac>e|8 z&s^>{pLbHXGDg2igd6JjIbEw3ebINjeyZeY%2$-|gnPctBmHq@o zecY$}*bg74^VLpj*R^2IT*-<5jk$L5nW^03W6!)YNu7Pv;lEZanYI7Z NC8CY+SHjGl{{fcOG(i9W literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/file_b_cancel.png b/TMessagesProj/src/main/res/drawable-hdpi/file_b_cancel.png new file mode 100755 index 0000000000000000000000000000000000000000..76fccb3beb67b5f2ef29d4f195bee26b1e2da9a2 GIT binary patch literal 2253 zcmbVOX;c&E8jeXs$|6x(1reDf)k15QNk||gk*sV@kX>4Z7?J@ZW??cw1nY{5<$_kQ zC`EBcw3SAd%A&a7MTNRmfl#knz$<8!x_}E8>_o+Te|Y-i&Y79-d%t;~=iSelO%dV2 z&JHsia5$WEXow^VTSd0V-VS^B#^Cy~#T}K#qtW_gG)sxVIH6jf1OuU3WeOYxE7i-> zFTepf93fc~6OYErWspj*r7LYZbd%PAp>eo?K$AhKN`p}#2~N@I_>{rMW(uHD^C=5C za;DrMhEp{m*$5n+9Uh~~PE+yJl)(8wfC<6~v@og!Oxk5SBV^)J-ta=$-geBO0B=;# zG(P36Q}OZ$K&(e#fJ0}~R7?;AxLi8u%i(gtxd4j^vKUP4=F&i4h{J_ge!#nnf>}e< z$xxIe=$$Q0;!{#l)BrIUSy@^1EH+(_q%c4pk7wgxv1phE&A42LDor$hR|XMC3^EM*Ln(!c=eOomo#i|dWH5siZX>&6GQ zjWNp&Fe3^!>N5}(R*z)rI2g;_-y5~5m<@pkr=&x*?0#;r0P+#L-;9 zd!a_B)@K=gY~^_ytpr9inXozt(QAP>`GqteurFnEm|UJ%#N`Ev-o!28ig_G=Oy*)a z0R1WNu9o?k8!by@Kg7s1Ve-@?8dqv4b;y}vo-xvKa(g^= z&hV4CoX{a*QJo9TE$M(>KHzv}T@=lAifpMolIVp0q%$z3K-bD+-*d_-Z)-3A5BXGC z?ej7J6h+6ajeGqXA8ncRt=Yq}+1y#3))i~r*md{G4xeG-$n;_RoIL)iN2*qN?2pwj z+>>VB^I}S-YYro4Qe*dN&fOl4Rc?*Do29Zcy2`6_EUN~N{;VUV8YYcMhpDB#Cn)9f%uhJf3j+ zk%Wa6z%I2yRdw*s)Y|Lyk<;^nEsA4b_^c4^%qhF+ZV~Jz-2cAP5Wl`bajC4!etv&_ z1G4mRh6|zd&etu1xngEwgwXdv;mIl`k00@D@cBHyi-+u2x~3O5`f` zHtbWJ;Ey(!^VWaoK#rCS~~QpEY}WPB3&Aej>+JIZXHkvWO# zN^D^rvRmD?ov{0nNub*5eU1R}wgZ^hJ~Rg^!$K6P)&Rde~n% zY)?au$XZoB>|DuYJK*!CxuA!W7a;g#$`hgE=|#qNe9Qil+1&+`>n{m78VBIuTKwr? zw<28nrxOFQ^Z<^C(5<|;_n3$N-@hju@mdCv230tq<2voNiLBzQLBOvW+o zaCI1bs3MyhnNl5PK8X54t{;ba*VaBEMlm?aLjUN z5M4!n?yk~1IJJmmgs>X^M?HHV^{>lH?k^gM(_u zUr@{quZfFP4$vD*y$b64Ji*ra!RsrkSMQ!bgH+d+;%JZW&ZfL9aKKYrU*hrUiJr9R zl0OE`_Z)F&nrgOL1$SCTf+ym7w%6R4MnrQ*qi2Z)zfZ0hV|v=RCnf%>B2^t|JKc5Q zKHYq|kDSZSENYeUzMQ$&?L5_qGU44Q_Gr z5RV|%H|IkkuT36hWH%RbZu*)noR@v5qIXVC{-&n&!h*1!p0jt|T=wURv$xvEpiez} zr&Y2C>?Vw!Um2G0BQc`FvLNMw>oiCFtLQn4bMRb(G{N9~l>b}*Zr5CB;IJy|Ra1o6 z;uV&FT&kgEy1GT*_@!&ex|x3|r9Eti$A#<(nURZ18ZytCx6TuEYR zZt=?#g}WOzPh4{TOy%=ht5$tt+Y!RW?Jc7AL&bYCy#0p4@MFzqW5JJ$uG+m0A#Chi z+T~JRQk0RD60UowxBwko?f#JFZugjycJrBW_!k@j_n;~_`I`Qk?S};yDh-z$6)jo& E7mb;PGXMYp literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/file_b_cancel_s.png b/TMessagesProj/src/main/res/drawable-hdpi/file_b_cancel_s.png new file mode 100755 index 0000000000000000000000000000000000000000..212a68f294957bed3a0b58ce75321579ee4736d2 GIT binary patch literal 2256 zcmbVOdstF;9|!V6spUI!nWY_}mYRYf7vYr@IH0JgDVDXFAsm$yP&f+N?5^p$EXz!% zGjHiDY2}l1TA495TQ)D<1Y22aTA4kSEmv9dJy^E)kDmSUp68t3_51mJ@6U5`!$SjX z<~Ytlp-?u0KrjNCIi?S5fsFS>sE5e35avb0k;-^jBUV8uwp1Ah0Rp)=0g8ac(oLy9 zL%t}~tazCy8jco*FeOSkL2QyCXyqvg8in%p)24_eNe~RgK?yPi3-|PF8xD|3S-3S+ zp_ed)3nj_|GgMGyMyN=VktAVAaegZSUo8_MkVCK-(8`k)YNnQjo91OAYtu0i2TY5= zNi5uZqoRf309UDk04l-TQ{qJ;0W=zcM4{4XBoBb>MIsZukeB93qA;m6CYcU=cyNd| zl{B6i0rEfSLUt@%A`GW6iA0S?L(q5=l&S}s z5|u0kmMIm0iBTM5zyae zd{SC1+LQtjBOtXhO(j9{5s#k%BeDBuMJ7SS8fKVEh9pIt3@RmQa!3ISKo$DQt!hoy}v@X)_$3!jd^O5}WSh&F9cbBodFxpmX>< z9?0W+aj6Url|6$MDAcf6A%SM}$`HLDu;hQlGPx>93@cS4r80S@0>TrOuu`3vQOyec~iY;3@(Sp;B%(^25DRd)d$(r zkQk7Ba38SJ|0iZd#2BKfIR2+tW{!{wG%Y`tKC=1PJdgtE7!}eQZYS**pit&00mv3< z2Y)YFn;f#rp{p&lvBJ&0Ao2Qvrh*`kyuf;*{jHs4j`KdtbuCTKeYr2dEcXeo?q9@$ zj03g}tmwz+7jfTg6y=)nWJ}k%4Q(AM9?`XU|9PiWeWYmXc-RjkTOO3eK4o=ldgMLd zSt&1>A3n9hU}vl};*DIxJEQq{5iNbiq}|!vnBM)T9vk+ZaZj(y0LPMu!spzvpb7E> zCcPmmX--GG;gDgE_0*sHGxuedW)|PBJ@b=}U8a9*=r*?7cg5f>^3`LNWATUE820Ya zl7zN+cu72u%O6w^U?B?sZJfArRTRsNn#~0pWpFF zt5w;7OInsCd8Y4B%uZ`rn)bMI5m@-nUmEB3bLl4BPgtFH#q zwdb~})a6a>)@CZ~3fIkzKNZqRJE9+`R_c?61;tb7yzcb^W6j|tB5l}_eWhBvdTs6H zJ>#-lZ|_lB>yF-cX#SjJ8@#h`BnY2#j0uQ@&S0yWOF8>B>KE73ZC~lB)Ax3JH{x?z zbd|&sp97rok`qr?bX&>w7ZOs11Kw8}Y$JD$eBr<0#j-l)o7U``Q(NNg`5Nr(+nG0X zv%td1+=B;hbY#V_5?_V>__)oOEw(^6IG_LP#PMr&*hgQ9?>rbPb8@H!ejQNLmr~Hc z#fKhxck6jB9d9PqS83MhtoU`$C00{A^Tvh<+?A@kE?X$4qL$;gB{my@>Zk*LIj~+}}2UR@n&+ees~w9ekv^knR>b}4Y+X!KD%KwH|a zFFZC%I2{H7yCUNcb%_|kiz{-Zw!5$k=Vlww+h32xebbh<04}%LQzdL-`xkEQt$dY~ z!;U)MSnhUXcU{$syk`Bv9Ypl5XFQ-vxN`070qtIR+x~M|d}{Fbp36$dlArk|^h*7# z0=s;IM?-XMf2A>U-yZuVqf0kuoLO031C+&*@9D;k*7MW!<;~xTDt89iUK9*OPi*;i z!A94~ZPzHFr{&tgum|{4 z0hc*NCq-sanI0(a=b^3lza?KOfAwXHd)c`|(K!nX$oX@J&#V_*7}7MmWd}(c^-Hc^ zxc5Wem_B*TaJM6L_pgJoZd*do-h&Is*1z#?@^AMVW6>5U`Y+kR$-^#pP5&4IUMP5i Ivth@70c1&$c>n+a literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/file_b_load.png b/TMessagesProj/src/main/res/drawable-hdpi/file_b_load.png new file mode 100755 index 0000000000000000000000000000000000000000..d704af86ea58ee19f0dcc1780404c6049adbfd36 GIT binary patch literal 2117 zcmbVNZB!Fy7LI@zC?6465xQ!K6+s|hBq7NfAju>UA#8vgL0hUJ8A2e*#L2J;2$m0p zSdH3(x~(7>J+?v@q`FY$KvxdCd@LZLAfUB~bV*vZv~CoSN7$Vx*!|(@kDW6!@B7}l z&vWm6-us?8EJ;c5_6+vKU@+dIL?8_vdCmvxj=pE57&|%yA%aXK9m+urG8n{g6;L*a z7inZlFb$L`3itJc+c6l|9F;T^$rLBE<&cIbbNUdC8XbzpV7A8@buxKAh~Tq9rAo^o z%y)cEz^fD-LIzz-7VG$6t}3wz2GfgDr1GMCIZHu^i^Xp@vQYvJh{*6pjasW`8##oR zyliytG?NJUmo7*?hwv(?OtA#dhhPv-Cq_rf$rK8n!5~s-bOwVGiKmh&R1z7z8Br7( zo6cZUWAMut0gVPLa@c8ra5)yb;t+BXM8_tP3QZ0y>4lqH=kxXd0KrjNuBnF^m0T|Oe+Uh;;PWN%UIfPV%dBclpzo-g&_4x2S{=u z1k&e1Iy^s}fe*`2X%&z`AMV_qSJeU_tojqE5WJ9M)(R4Bc&6L3s@?O>r zF!(Gw6J0Y<4Jb^)GFI{bXhuSlAvv4lf0|{*gm$2F`nvVe#p}ZZYS9w|qer8o-CvEt zxD|*1uGDz@VQo^PR2I;Cyh8NpPMqpvv8B_iNZoDvcD?xfe~jg>{i^@=R7JAiZhL57 zV#r^zzz|KjdhM>*&&5F7r74G`S{*PrLQROS+h{Z1>=V!Jn;%^4`eeUy>F0!6#{t`m z>kIp9=Q~1cOK2{BH5J1N^YIW*dHx$~#K@%=(OQSw^N1qc;>Jh7Lcf;ZFvH!9_4RMy6Z+qPc49GiQe`nC_jzc2$%-OEF)VV#b>CvR!$&i+q5!@EL!Jb!E zV!qYe@u58YqzB;>sGni3YluvZTwt{+toVoaz~Urf(>A8CBMe8o(D{9fm3X%`Z*}Wi zi(YjebE%=dwNQXbV<$Rxkn6+de4-3OGHz_uU;izg{K7K1$^F5kYgwWdUR51-L@)AK z4OENRLe7TVEAQjBq{af3jq=(vp}0$BeY@g^x-QOk#g9Esn{2dv`(t_8WNEDHtqIle zILY)Wmeimij^({5YY67CdX5c@7x>dnJNlm-OpG|JKbzqa2%RoXb4fb=yT1z(*pcGo zXY*HrZtnSNgtg7zoqlQ@)zj9w`Dy>b_}yMNrj_LaR$${MGu4!}VP}P|hm5TXbklTA z%GV$4Y+Ot_CeEMfzCX~uOMNJ)vCZE!w9n^+(zUfC?cxtxu|18{a=J5jgbx>`$f%OLHvshqC6SOP5=|nTpxs=h8327XfWQUzp(3Co*yD=LZ*T97nE~ zE-pkpG$Zb5-M5Rz)6L8>@6|~POj@(ws9u>^e)&X4AaJH;9liSmRu*C)nY5A}ch**g z1a*hmx-i*3B?&tpEbUFKjK414ADoAK=Qgq49B>pH-|${b;n%6qv(Y}Qr=PD$a(`NR zAY%6PgU=pLDVmCQb{c~Ycs%+j$a|Fu%}<|ZcJWxm267Cciw%rMY@2wo6W^WErlL0%R7abx>X_A6v+lJt7~>}3AU#Fr$OSt zxj*Yiy~`aQC77BC+)$&(u#7z7s|vTJ&r}ZMj-J7FGx^xv#iQ3-e(}u0%r!#SnK|M^ zTRCrUhphXpQ1U2coo;Y14LhoIXrE+n@ho_&b8BWjj))y4oz$^|n)U98_m_crvFjw}-zW8*Y}3V*sTzxX>Z-cJubjQ1Nj>u}w{R8Xi|oqOj+v_; z|G{VA@IsL!<(ChO-G00lm3QT)=}2%%WNBq2`$^Zv&P_G#u(_1lGhxZUea)L+1*f*W zGcs+k=TyVStLNe_aH}T1v^H7)$z`=h_qIQcksJ#jIr`Mqx57bqP-?e5tjD-wZoN+! U-uAcY)6O5eNRR?F^Y)hi7t3%;mH+?% literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/file_b_load_s.png b/TMessagesProj/src/main/res/drawable-hdpi/file_b_load_s.png new file mode 100755 index 0000000000000000000000000000000000000000..23a413daa4a5a91792c1d76fbd2cb92354bcdff9 GIT binary patch literal 2119 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/file_g.png b/TMessagesProj/src/main/res/drawable-hdpi/file_g.png new file mode 100755 index 0000000000000000000000000000000000000000..6b805748cff12e488d45bdf594f9946f6d4d91ff GIT binary patch literal 2129 zcmbVNc~ld39*=@tPcES?$KsADt0_Xl1Ts00l4BB}%6-To3n3XokYr*qn1H5g5F}m| zP^v)7pq=kvYa=p(~} zZEf6a2n2#{Xb2pQ&s@`IWr2@(V+mvU`+Fw2m}CSVC+>sTUGMi!c6$QqdfM-vEZf;0-DXd{9F>4-!s4o*@EKaUgL$ zEzCDe!9y~oA$dw9CNDfzl($jD6cd9!2G(d;IDrhogn&ktEmyHLfy6mp7QQweQ;5Kv z2(~eh_{OM&utf*=4vWYC`mL7+E4^#!REU;Kr9Kz|kuVo~Y9{6oaG zDa9GAXjm|>3*QA2GcioTqEOUoHCgRPMwJo@$Ye5298{_gF5#ofm19DUk6iWP0t1Yw zL`tawlcI9K#3)QhbFe@nZs{8rWQwq`x5RSQe4y}<|+_MG@?Rtlp;JI86Pfy@!0*jB9kC)4J$$^#gih;hEY+D43T4@a3B%CA&aGA zmM;(H!VEr_$`|WK_Hm#2!%PZni~%* zQ$n1hoclhj5ER5aB$mmI{ESqK;==YwfgqwzV9x;((VLcu;)tPASJz|H@kc@^+!+Vw zl2~!5jgT8VbE;vZuu$Mx(=f;kkcbYXsK4v-yK?!;j-WkFTPB!66P4}H{u$sNGc{s9 zmPU?U>E&TuW^_JORGz>4{ux*J68srj|`MwAcfWc>a^?WGz z3Vo=mCpr8cX&91LwujG`Fv}847ez@+ z&Kp+lh;LX@EP0YVB7Ow))my8oum)0d1h5^nF`)VzXo zaNXqMPkt;&y7&iuv4FPItTwOweLvgN?O&&brF&g2`l4pMHKH?VI8oj7i!bRHRnG;F z*`g;!&8xCg%9gl)P}fw*F6;6%JI(NWYLIBYOLg01;1+i^ryOwm>3)tbN>ks!2)9cQ z2#G_4(2-(x{Lk^nS1sMm47RK7Atg4eTOv@GEu(;P-@$>L!eVyzr@+JUMd)Vd z-w*ZJPjy9fsIKa&&4{9Hebtkq(o_p$(rk0yOX|xtS^hT5Mo4`&HSB)2&Me+eWXhw6%>*ZOPIC>#y@y zWU*gzA1!*&5YXy=p`}6;ZL4c`GCCdWbNC@Eh*5Y#|L>4cW|a*cD@^Oz>0sf)y?&>3 zKx@mobI(FGNY_4Wt!@9d+;(}=sQBpL%RRx4A&CRd;BHLpP5`TKv5|sH*2Ox&{hsyu z?%s^*k+q8`Zrd7ODLl7S`9DZ1XgqwUz-?Nq*B-&@duOHyX_k7 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/file_g_cancel.png b/TMessagesProj/src/main/res/drawable-hdpi/file_g_cancel.png new file mode 100755 index 0000000000000000000000000000000000000000..5fbc87d9b74ccf7822098ed900cf1b946d5e392a GIT binary patch literal 2297 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 x9!Z(j0PGv`#%qHo`wJb literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/file_g_load.png b/TMessagesProj/src/main/res/drawable-hdpi/file_g_load.png new file mode 100755 index 0000000000000000000000000000000000000000..741b69864612d7faa1793ceb07cca661a54c4ee7 GIT binary patch literal 2131 zcmbVNc~ld39uI;v9?-B>L4|Y-v>-_CgQTR86H*Ft1i?~#<`_tXWI{4A5#*3Va6P&z zqAnof%2BRzh*VtgSP&5vMMOaR)&hb@#1*=MLUngQu=|Ivf9$-O-}(J~zW1Ab!9jjD z%hxSOp-?s=e|{)3bLT#^H8Kv1QBRR+Ei8zH!=M=0Akl&-jvSJLfJh~Y1w%oJd{;sz z=#4^I#wf*+aAe@uEE%N2OXg(oMwJFZqfp*HMvX)k2f~09j8&@HxK|f1;Q*zajf{x%*G*>zH>pP2@HHstkx|A3JDp(DA5o|cp^cin)7R3S_g-Mznk$v zX`OhN1|)=nI!LdTA^C`LUIZht`(s6Of`~P&%~~ar6iGZElIc~T8W!={IOGN|SISvL z9-qti5^%`^Ayq&lk(gu-mr0>=m|hHyfWx3Ka(oC&=QDUb8dE6bGDswnfX3nQghD!n z>cyv17$gpL5i3&bV2N4=F6vbxdKa*QKg6228q;y7B2g%-3=y9rHV&E! zqWr}ihmK2m)D=X6M7>XU>%2g~1q3ldDH3E~$dyL2hp4N8oZ!C!+uC zzr3f4R&Fjy>S?wvR_3fJw@Xg#Zqgo!o^qVJX*$&~o9#2y`~~Ho-4tC+>&b?U8%5*J zHtur!y0QAQI@gAdTEDu<5w??wzLWCB&6IB2x(ridxJ@NmZ2rx$s(kmSNo$jwlW0ll zS=}T1IvU369-MgFcRl5DYkSJgw=dv~LhC(g0sZ*{tDNwLGKXMwZFhrn(A%+sJD->Z zW_vRydqZ1#I_t}T!mu6-EBuq;o}#7(oqv(`Y*26VRcfE&qq;+H4ki2k94Tu|IxdRp zdtr6hqVI0!NyTtv~+=s6|Th~8pNxJ!!1^%wpKCs`{w;-YO zvLY76jjACt$jJ(8Ud#l z^V8nR6)Xu=QXg(tZaTEhu1n8No8jh6{Z+bQ6dbJy`TAs~O$^3^;?Q=(4ISS)O>xNl zPq2P#arcg)tHbUSyW+E$!M7}Oo^7?I-t*gGDEXEWgyN^cH*r(y;uJ#e==srRnGlr=bV}l z!f<9i&5!z*&)zP5hTafrS6=m9P&u}uruy3GvEpT1$P|Jxz`csqdxhwhIzNv1@ZrHe ztH0r+0jkK<0yGaifbVZxRkMGYRYvkAiPP3yOvN+zvA!-GFzt?RO-Bin~co{vkfjB(HrLxI@YuB}qG;{+xXbJBKi zzs2kPmb?RH|nVqhc zv+GXGT3?U;^;XWgfu5oE+tweKrUeW@-;#;eXK#&A(dBzu?)*Jc#EXt01W`YCS+V4K z?y?6n)cieXJlpFPzp1AF(P>JS_Run-H|{?nUZyX~J-^cHUY_Z5Vrj+f0A=7fJW4r> z?`7^k@X_|8gU#>`hNH&?CwYO0syBXH+K5T9KLtu=3t>2LZX;~EhWs%%5?D7F~#v|+3 gKwQi76!YdZ3sm)4r}aj0`uuNRBnaZyaJQ%b7vz9kpa1{> literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/file_g_load_s.png b/TMessagesProj/src/main/res/drawable-hdpi/file_g_load_s.png new file mode 100755 index 0000000000000000000000000000000000000000..2449001207d6504ce02941f940be8047d8444c5d GIT binary patch literal 2137 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 delta 3094 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 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/floating_m.png b/TMessagesProj/src/main/res/drawable-hdpi/floating_m.png index 7b5f02ca52ad8676f2e8e75838044932d6555c15..be31f6d4cf696a2e75c0241f1ebf1137e90ac2df 100755 GIT binary patch delta 1491 zcmZ{bdpr{e0LQ&*L%7Y19-C__Le>~-`MVz~zWyr+Jje=_jNK92D zv}ubVn{UBbX&KAanKPXO*mE}_w43qS+joF{S7u*b2(LBmAG*k zIPR8I{&xHp2jqgumg*D3>srRA)EpaVoUxjDC&2i@%)(7+0o4Wyb##*(}V z5Lv}c*w&}6!kF>)H^$v=XSO3P{M=`wH_YWVrkoK0gGJMHx_2u&%G`G}P_=QCRpFg= z!+q-IrDWheX%sbs4~NMfWd-Se`u@eC!r#4!ImJ2d(@$(lE5rFC=Qfe;~Rp-RSOmqE*)1K*V)s~J5iFf>avMP<*Vm9>|!IuieyJ7{$@^QMhd}BFH ziF&>x9!ymkqXh5`0?+twCO89s_7{612J;QH;vCbI_)^Re#}4T|F^F=EF#fB$b{B-x z{33|aU6RS23vGV+>em6=K)Ia2aTev2SiEyCq*?i$c*{PY+?QJ3z_b+^QJ>{kqiz%B z!8;m;-s&hvUK1yHfv-G{Zb3~>^rhR?eSjzZjii~%j(QUNav``4f(RF)gHgwMz4RE~ z1YK!?j@y?;yzS9YGo#Rg4eZSE>fjitVWL3+AR_3X=%KQG^Fv4g3toDNE-F}u0!YB= zb?_81)`8)q&OU0N)Pvslk*$Y62`}Z{l!Cs#&+db)v?NBq(AC2;;iV|D=xGTcVw*^+ zxjvB~5^JEk_=;5e;ln6srFLqLm+0WH+C(b@5`xs?T?^~&_u1Tznn-#EM8&CRK%MmIh0p?Gs_A|IWRO&e`o-ZLDj} ze{gwxLg_u?WeWDS3e(Jop$fa&2*PgUivMu`mOi5@m)S#vXE|O%pQina_>s69i-|k* zMBIW$(|MQmNv6OjvcWI{2NI68I2(lLyt{HX(ZQqmhBbnB zYNAgezuMlFLJF#_8i^cfjag>F9M(2m`tBy`9VzgYy;m{xr8p<+h8?EVr?Df zsFFX0@r(K=2OfMIAt~OVy9RyES;kraIjz7S`eJ1|Xti)cSfFOBJ3a&aD6Q`Z&jZ=> zRS9Z1QZTIE5tb3sH}m2!T_L}dHGO>H+G6{sy`d9;O%X6a3?4EUZz8|g&=Zo@pXqlj zw(|6CN%|u%j}VtGj|*VjxN@&@K{L%lQC2>>7%}=Nxy@B=^GxFp^N$558)mj>tcOPN KB-av;rv3{j2D-Qa delta 1528 zcmZ{bYd8}M0EQ(=TaqlKa+#JW8*-h{X3S<6_v_lKtqcvJLRc3o%I4CTr%0=jGPiQc zR-=SDBw;GI(>bG2OSRBB#p(Fb`FHxB=lk=$@0X)nt6T4_9*Oj_cXaW#wL>^Ky4c!! z**hbgJdyUcD961B2Tw<&BiJ;Bk$}g;QSsChj3aT$7?c}$Wr5P7Y4D%l74v_;SNQ6- zCO;jUUpb%ExButZ{>rgl?a73oX(!dx)_^f6L{Q48vg`mI6l!>Z7=#Tm--)fEM}ux@ z1!J^>ae~3co8A>~SS57k!{IaM=&%o7W8&hNtxZmAKHqkP7?8sp$gjZ3s~N*pVH(wq z`XIzRovS;u3nlT2v1HL4;jKccRL*^E2gdcm75ncuHnTSHvdTF`1i$*v*A!BL1_3>ZBBLkwzsuOCaG~AX z(GeTombChB-M?44u*WZnsmB2|o{pvrX#fqkiu3qK3A^x+fM=nr(oTeN2%MZh41xK} zQoKMfI%oDla3WJka9PZZ_U!>oze!x*x+@BIH=CM_9c^z;hcR|<;ls?(`R=r)QcKKP zMmU7w3TEJiew^;Hg55r+pP=4u8iO(>;*y{Zkj7OQ^Kvsee%6LOT3Xx^o3rs7=iyq? zF|0xJ^27NGIk}ha%xhI;|RwX1$x4S5?%@^EGfNzsX1EUKbY@E68hN z=|@=jil-}=!l4;8ySW1xDMs)jXajptfoWzX=DTO_u`OErJ^j^3)O6^KLONEN7;e2m zsFl%zi~4e7;PGjHR=<}dfM>4Mv*2fOiW;cr(zYFXLYLp+4dA8K?>=prp(Xk8hw_QT z2bg4ceYAv?X>_#64>5enoPspiqPTC;xfLFxGM_iUqP*OJ;bTdufa!qP3XuvQJ0?kD zlaVd6uebcQXQG(6tM0Ba7=1SU^8H3AZ(yPFfyqL#mF3qRbNZvTamb-!>txMAAsIQ8 z%Ue!v83-xM1rrIoCy=34SERxOAj6+&QV`vvRaO?yuhTee)b-*uNaS}QjB3W}57ikd zA@a4~JvPz?MbsG!{fT^7)!Nf~dMtwf3c~SaE65U1R<(jW`FXPQZoB6BG4);Mn`3y0 zm5M>%cxm-r48U@rTbNvvMGn*%dEm|G$<8}K17{!$2id-$v@+)TJEClNvlA!m4?It= z0(1tdvfG+_?b-zyhCVZw6}c-masDoEVE*vZ!)bl2XxNu7>0Nqk&8Kt?E*v>+yiw}pbjt)kZj?_sKSkE~%C5GPmsbs&~3E@&l6h!bv} z<)5p}-azK>9JgXC= z>DxQ_a=)yzBPeRh>a4hnQ{2#ZYp}b$y0d=4^J4D(7Rk1#AB5R4zY+`dorGQlJWwLs zHo2tZLuvk2cIFuHS-YKBDEQ)=1G6x|P{4<(vCg47y@s6*D}J>@0m+7r9&x2^AONWqN+rFw9J$)#TdMVFNY zeff}yNU0sQPEEb;=8vpWyZ+lPPV!7kkk5M#MLF|wlU?u9DWF4~Q+W=~q2E17AMtFQ wG8LcNCS~iN%Kx4HWjQ1hD5e-26frdn)m&?pR<{CPT~J#I#*2WeMIJo&FALMeasU7T diff --git a/TMessagesProj/src/main/res/drawable-hdpi/floating_pressed.png b/TMessagesProj/src/main/res/drawable-hdpi/floating_pressed.png index 1edf010e586ba22f8dc327443ca21eecdebc2f92..b4579d8bb368087c57916b024880b4de11556f79 100755 GIT binary patch delta 2929 zcmZ{ibyO387RF(WRuBOtq$Q+ABh5yLj*?LlGHS3P9Rdo2k%CAmJvv6o#7Vb`NJ%ql zq=1Ap2qHYsJMaDJ{qOtk{hjZgd+r1m<`!NTU<1+8fk5u+Xz4-}<)o!`Ld{70NPurlStIAm36;)@H%O5Ie{IESN4N=6dygO+2qf@s{HS)L_M zI#x#<6UL8eIc_~6<<76p9sy2jYsAF8LS>&GlYh*ecWHnAZD)28omi;n2OTQ72#l}i|9 z?;aM z_+>#m2);f?rTzrXlCU^(omiIcX>jXMZ^Tcs>u$pL!%Vr4w_TGnL}JF zElSdI{`WAK_RMViSL}7s<3C(bdzn^zYqo;`sMhulgS%xQpXGuYmDOtJlL@z(Hda}m ztzdJ{9tMF9Y`DrcHHRqFg6DF1Q&GyRU2WEGC@Z+AcxjQjH0%BR*;>tV3J(a9v=$}p zlt_fXlrl%N$-d;$=C6$Hs@%||I3Rv{Y1Z7WD_s0MQmBzYYQSrzBD`V#L4(5s@imyH zhoKNl%a|(DQMKlu9gyX)PU|6Um!IQ(cOMdnR-6{0Z9*zHTYdb$&&@e=arb!NL3Z=B z`UYlu!~64s)trpX3G6;#CHI(F-Y>@0k+e)Q+52eI0MpeagWrubqhcZMm%v^m(+ZVR z^u~<7NYZGY9c$j%Y%MzftCOMK96PWP{3^*!1fL1#)7V?8i54=*O-)2Ce>LS{>|yeW z%87^?08#`kowIru<>nkcHGQP2dz2bx!{^eY#zxc+OUlehUe+%X9yq-gva4N@N4fIS z=MqiB22=*ikcZwmLqZiVxlbp=EAps%LxiNrZiMeT0)DB@F;1@jF?Epx6`lo=QGDX3 z&OPf(IvSPn8%^`byoOC`VI0p;jsup+X4FQ%ycq24?K%&p5?4Mc^M>$ zhwY;Thh}jvr$C3qpqs7DKxy6pkmwY3krQWhkBA8p$R2B3ml7hyHP&C;zS~V>?wO&N zM0vAA^3SQ+i?Ik<2Uf7}o@1LzJX#-9z^->*^y8Z!A<-~jp#R}0ZRHR^)|B$%pDVcc6Ynz+}X4^^_IC$0~^kzq3VPvO@Ty+6Vc_X#L1(bU1=&`5@ry z@Dhkp< zyv9r@g+c69APmP`&`fUWphJ%p(!$@UpR>|7j#~dVFXacTg-T8b$xYj&{q`@TsrY+H zzdJz$i{bjXM4qCiyS~`S9eI1R;dcOe9cV>BI`_hhA#sKDrE zkB$Vc(PP9L@T7M7t(-Q^h%wtqy5p4>g$ukyz~PloRfp@sLBu>t`Joh}W>FC9tUp14 zi*Fr352xC4%D?m14k5Zh2SYW5K6e0Zt$luK!6%0m#x%9=FNx2d1SF46`$X>^fWpic z(QO8o-53480oxxK2~(&x<<=$g7%hIU1YwuoS`k2ymruu@Z*t;z>zP_e zpI=_$O6z<<=fO*H(Q#sK-`3tn=y3JhG4y`1btP)H zeTqAv?n{+HeA!G${&Ut#23^K#tagBQEB#V8?FCmZS#8FqRG*{I}_cq(edPt3eh7XO2XHM)AMOL)@<1s#N(#4DhmPt8|o-5&>Bgw`hY|y19AJ&nFIBU1@|2`t+c~4=HF4NyVfTM#Ri?%{S7S&&>X$#tAo_ItGObs+N86P>J!EV#~=3;4(22+u#nFgq^`4v*C6M!0e_oXgLmU~Re2Hh3Dv@$8wcQ{x7pEr2JS$KNqGS3@*Z z|I8BRXH!d(lR_uQOR0DHG`VJdry9QEsF~*2aRVL`Y_T#o&@wZ=5n2ccj&ny% zwa^l0;e8K>B*QBf0I|+(>jVL_uxHi<4(mBr+Ro*nY7LFCEsLJbYH=f7w4NSQs~fvb zCv}kVe5&*a7gla0WzTEC6Xf1)5!GH5@e|9!MHbX{g)s8Xp6G{)yUG66eH}yXw-7kyKU_0`i2wiq delta 3142 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 delta 451 zcmX@Yd4zL>ET@5Ua zjg2f!OkJH!9F3F|Dsl^aeXU&blS^|`^GZBjY?Xi_dMTMHR#3fexb#k5#AE=oz!{e! zC57UWpwu+06xF|9G+5BOvQvi!|E{>D75o$-PIl3blta`OYJJ_g4-pUoq6h@GjE!Cy5mwH z(!mHqB0NNp9)b=Lb&w7T1$L1js)L74>Q$vK-UNH2u61Y|X6F6j`@Y}r{eItjFp#=d zTYavYVVK%PA57D+k$yE*r|91m?oH64iNvyG5D$~QVk0J^;T!@9Lm5G7q-axjR#6wj zl(BjyOR~uuvWg8(@i3fgSd`5$UEQvwsAGtL92(KhF#GfU2NvjBm>mivg`^clqk3P# zMuUY^MlFn~A&u?63c6gG3K)nez%|BAM|Q*Pfv!yF-ZsyI0|*%lvxiA#lLH`%Z3F_G z-=_+q2!cUQY!3v3;uRnXqQndI4f@1(IS`bk4si6aG@7jq%V`)tibYppc9alH=J|X+ z&*l9bwnum|6bgA7lH{WZpEG3=#r2s^OHlzLN40f}=-33FqLRZCB+SxG507A2$Fin# zR3=(5-c>AKfabOe^?2KXyL*JKGs#h3`icyC9i zD8>R2sUreI5^Rt8g-(AQ7P%0s69zI#k*odTN+r3T6%30;hRD_@krubH0S=BV>m_rE z#!KoQakbL92qn2ZO@{Xx`&XljThu+?^w_p^acq2KQn%aG)&UNFp;zKf0!A|KkKEq= zes`IaUEYEIIjMYeJ}^Pd3jB^<$lDoq$cv2A{Q_wz9oXHekh>`Sl!FvmX0E aB~#wWEHO$?{)M^c-RDFs1z-2xp7{+q`B^;x delta 382 zcmV-^0fGL!2)qN3Bn<>-K}|sb0I$e51&ZmBAt!$UPDw;TRCwBAT(tE#0}wm};$=Ww z55&J1NC2^378qiSx1G=hQoTSqHzp+U3LriP#3~FF0HEPTK)8% zfp`Il28#lzML_Id>~!{#Qa1W4l?vAn&GdJEocQ|XCQurq#zvX z8%uvYW^)1!p8%w{1F9z+L$SP$y@K&Y4^5Fds{eg~2-K|l-YOI;+fFF>3Q zjNE1DK?DOIfj9_=Q-Jt8RE!yjTYz{k5KBYFGNBQPY&a-6>LDAB%>o#h3&e&%d>Kj1 z9*D02@hKpl1_~ai_+Mxc+X4;0k8ThPp73V93B)Eq+y%t>P%%CrHbqhcinBPN!3S{} z!bBi}fHGYH5c>o1Z#21s&>%U8&j2POlldlSgx`T$R0vHa9|>t>At5h41!7fb*ncNh c6F`6g02a+l?VfV-)&Kwi07*qoM6N<$f+Q4>7XSbN diff --git a/TMessagesProj/src/main/res/drawable-hdpi/ic_msg_panel_kb.png b/TMessagesProj/src/main/res/drawable-hdpi/ic_msg_panel_kb.png old mode 100644 new mode 100755 index 4a9ed0d818cd52250deed5e149ee4e6efafd9c2c..c6985f3577d95e43e7f3b6f176e2684435ecfde0 GIT binary patch delta 427 zcmcb>F`YxPGr-TCmrII^fq{Y7)59eQNXr4S7zZ1Wyq>IcexjlVqtZmLK2>AgWCKG( z1v4`}LlaXoGeaE(BLhPteFGpe(={})GBvX@GN1UjWbz$GrO8>0*^_rMsc?j6=B4D9 z7i&(gVv?12GqSX>a58ptG6NdqYU=3ZXkuY#Vrc5@V(#K%Xg1jnuEqqXniot43g!@l z3~?&5VU~d@GQz2-g4wD5=sZ3@pg+4kT^vIyZYBNs|KI+w1H-h^*VihUUhZ_z@nru! zkGZfYAmBoonpM;(hOO)=^31}rx~|(~ay}k7Vrb@=AY*Xo#sQNL^MmZntl7>SXHGMG zd~0j=%Xt$W0}Z8)AGYsvj|e_57T7OSkKU7cV0`F#xDvVozA zg1M!hp{b#Xg`tjuk%6JHzJam6p|P%^k(Gg^m7(dxza^7rF{Vt;V$`fJ@b$IwFUm~M z%uCF1$xklLP0cIubg@;c$Su%I$xN|wH8FN`bTc+IGBGkRvoJKYFfwwq1oDhc%#7U3 zT`iRqfGUAzVAE@EVQT8)W^CeSWMFA%=xXF>M})@72ChbS|~ zrEKyqMh!0C#N^DplKkQf&B=?H3=)i!OwA3`3@mgF3{1>)O$-bTbS+YhjdhJoOcRsM zlTDM23{#X8ic5l0)2vd+@YZBKW~cg7A(`8O0bJ$j;uunK>&?`&TnvgFEyXVnR+Zd8 z6S`vd+gs-k9zL_sp>yKFeh(L~uu$uc6_viSbN2pQv+hw{`)jej=lOE}o;p0+wXIm4 zzCV5OcY6J+C$G4A%{67eMt)i#x~1vb)cvMj@A;P2pKK1hz!ha1#r$$h_dFg2hwQMu c;!HdYn)f`kr3IGR0G+|$>FVdQ&MBb@06|Ep2mk;8 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/ic_send.png b/TMessagesProj/src/main/res/drawable-hdpi/ic_send.png index 50e63ae1ec05da8c71fb04c6e925ca40575891a2..30feca08dbac0d19f379626d06ff6804111f9d7c 100755 GIT binary patch literal 1404 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%u1Od5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|81#=KlDb#X~hD#E>34K5C;EJ)Q4 zN-fSWElLJPT$(b-ssbzLqSVBa{GyQj{2W*)24v)y2=9ZF3nBND}m`vLFhHZsTY(KatnYqyQCInmZhe+73JqDfW2&$iQ6s4IL(9V zO~LIJ6P$YWfsWA!MJ!T8!-RmT2gHOYTObFX@Kf`Esl5o8tiAfK>|D$61m6E<*7ux9Ja^#+s+j75)nzBhRuNjJZzr3=N@2J)#ul6$ji*d?J zuU^Y?)pXU_=(0v>Q?2~|hm~n%&(F_(dEDLF`2Ek?dwcBnd(J-_R^ofv%8`G^MW#N1 z4Cd$uGBFJw7qIR-Ai>dWVZnMmK}n-AK48kb{sv*8nO~wC-0wZI6t`sCUe_tX)XMg@ z&GQML59?31ClXBUDn@IA9`Nq5esSED@4(*hi4#6pzhCrUq0^>8ay=6(KXYeetmBfC zy$6;yX_~ssd(+jyQWvu+uS)`Q58X3v#wo0u+BQhZr;cscWVfl5ZsKo@sY zlh+rxcePxe;LhUGdR2azlUT802pji+e<`wW~Fv6Bi5Kwz}ooxa0T{$yv$nuD(a5Jua`(+xhZL z3#&xoh5q^z?}8t>>#sj6AhGr4KlV3)kHST{+iu=ryszNed0K0`molSr;iOYrKWz|N z(IhLiQNPo*(e8rR_4x^t_i@`b{kYz9@%ay%sh31NS;VT=hF$(={EtO~;iY~eYecYr QF{nKBboFyt=akR{0PEfLuK)l5 delta 530 zcmV+t0`2|$3eN-K}|sb0I$e51&ZmBAt!$U;Ymb6RCwCNm+wbIQ5eVX))6Bj zM#P9QN{kZw10s6WtLRm)Vt+#vBkR>(r4%XB^s4(N+S^DmyGj#HDaMG15fRb%@LV3p zPP;$Oy?y!G?z#7PKIfe0KIfjqP_v(0_tJ9^sX+08WU3T6e$dz+3Qv z4j||#M=0^~)K;c8ovwuD-Ik-zYVM_!wqeb)IhrAzTJWw4unw>Nm9+-cr0K893l*Rk zVQ^XKHes7La)1m=Jd=_IuB7|i6UyFiQkU=s{c0tYJ>P_CG-6MsodXm?2DWL9eQkPb zCT5^YS=|iMS+E35`{*Y>WREFuE6lXH0J9#S|Avn!@T-Z05gy-wFIl%KaL44U(htB5 zT%zsTxO4#WxVBFtjwCP#$g&+v9?`bxyWk^^qnThwGn;~U<2;-S%H|pCpY$uh0I5n} UxOU<0y#N3J07*qoM6N<$f}COfBme*a diff --git a/TMessagesProj/src/main/res/drawable-hdpi/igvideo.png b/TMessagesProj/src/main/res/drawable-hdpi/igvideo.png deleted file mode 100644 index 92c22481fdd781e382fc4e0835ad0d807214f149..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1955 zcmaJ?e^3)=8qNua0;N%p3P%rIR$6E!+1(@rvzLG&2@ua9CQ(s4O4w{j&}2h)F#)Ao z+qAS5Ez^VZGzTgLP887tkx02p1*}J@LU9B{3v!M{poM6`Q0(2titQiAeKWh?_kQy} z&-?3{`QA@WNeb`_@nbL;0rF(2lHOVL7rw}c{wsRHA$t2gB}=1JgpRUmEI31~B{Fb8 zZq#JrN?fDO&Ay5Y84Rx#26Y;hrdW$&gpsZB_^@q8GmU02gz+}B2HSyCKn9*^Fp0qL zn?3^pgH{A?ic!D{vjo>0lJhLMDlbKi2SL zxnhn%ij$bdV5SU&3Ggs#GKd^X1k#!QT!PX3oYq7>YZKit$fhwv2pjg4H0P*L{C`)Y z@wqoiDe+(O{h!37I@gRtN}MEeEEqjF-3m`AGb*v*8j7%}31a757gO~FMUZ;J3`itE zltP0UOdk8SrvQZlm77RPW5RH`R0Pr#Y=c3I@?`=(%#|cad3+9n$ao2{NTMu3O5bp0 zFi$L=!%7J($B3J#Ijr^ZrMa#!?e6CyCc&>chM9bYm>pGT-)-V{}%j8nA+SWgiwmn(3KG=Ff z#V_Wax1@xUSx3l%uW3~E4lT@ucvG38c)Z3Kd@^@{zUc#a__X`8`1ryZ`}EjY_?C~?~bv4Bebsy z62|QxcD95L24-hQBtLYyTvCxpR9I0_aY3n4aqqSW!B23XfAmmnZ0!A} zrl##<2asO9+8f1*xP-ts;a7? z&Ic6;j_Wcri<_I9nf`u$)k98@v$dkLvooi>yxc46{EV0C?u6q&NubScw-=KnNxbz5 zm(c)fyE{5M{4LH|cDlWB&*89hwPjCo7q)G_Sit4L@I>&o>wj1+YgL=DG;=rqu4mRb@jNmm|bSx+9jpe?WdkCX*HX zX~o|0(b3T|c&a?5f5_Zh;Fx`7tJppHSL%hvKo^qt%E(VY{nJ<1ADYws20ONoIqYpP zXu6TXZ}SA(q5>cktzyVA5<7}jxNJjmp^?vWU}mZ`<3=~pPG%M%TG3w@6y7j+ zmHF~JIq2WBY$=z!1Vm)!RW{~_R->*B?WK4Q1w8d(zbaaAQ^i1!X=lquUZ>OTjK Qd7e$VEJb=IA$|XU0Rq(?f&c&j diff --git a/TMessagesProj/src/main/res/drawable-hdpi/link.png b/TMessagesProj/src/main/res/drawable-hdpi/link.png old mode 100644 new mode 100755 index 5ad1fcb8f8f3509f92a42ad33e24028b0916f7ae..987f4cc5216751e4eb51a08766fcdb1e54e74bb1 GIT binary patch delta 805 zcmeC+?&O}}$*45Zt54NfH`&0@P{GVh&(Orw%*;?n!N|bSNZ$a6%ybP+tW3?UjLbLw zRb=E2HdD|D&&*57FE5^~#UvZ!Y-r(Z>1b%+=4NhWXy|I{Xy{~OX=d(fVPb0R=wxQB zq)?Gt;OlGUlAm0fo0?bR>0+w{6wyn`OtFIMHN>TN@?s_fs09YDxD+WV6qf|0rdg%n zv;gQf9FCi;&+JscwL0uS0|Vn9%j$ktQXVlYS~eZ{F0j zOkz#VJk&CC)1-dS!#8edmYvwJQH8th%?*!9DT#;r0+pZsyl)k}{QB=5&PLtUudeTW ze{c2Y{m<`|-@8x}TfTJC(w#wPrYNX-a0WH~yM1Y{*_S-m*$-biipkbDY%k-L5j+&d zVO-6g{-DJ_@0-Xe&ZY@@J2C?vFR+}?`HJ~4-*5ecJRIKBd6Jw8ZVM#|sryIxB-QKQ zV02tL$+3t3+~H+@2jwc32xaEzio4wS%(jCyKgUnK%Yi*(!B4{vJWMwGj_v;@5X@J8 z_}cP-#|?*Ny}#Z2bx@~T&$-9Ce)Xi@4IgJso*{orCL;a3-0n$RC;ex!o1C*l^J?D7 z2l5G>dknq*itIn@7hw1^JLUON6$iDs29nXHf+9;-2l9HQNG+bG)%%e#q|s~2a)!t% zqcz7h@1C5ZlV_yAE0MML{aY5<2@80%&Q4gkx{KlS{+iP*x*Kk^m#Ic4K6YgJ{NJ%Y z)aAQ;!g1t>)rfktFpcy3O}-LF}6+Wz%vEw{7A+HN|}8e0c#;w`J=L za@cznjwfXwG0@w3Lwxbq+KbQEJj!}y9}bER*`_HAM8v=79$@%o*8cIrwFyxSK;Y@> K=d#Wzp$P!V7D%c9 delta 804 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 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/location2.png b/TMessagesProj/src/main/res/drawable-hdpi/location2.png new file mode 100644 index 0000000000000000000000000000000000000000..84e92b27b991de34417035bd5bc291a57b930a1e GIT binary patch literal 824 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 Ef=-N}wg3PC diff --git a/TMessagesProj/src/main/res/drawable-hdpi/miniplayer_pause.png b/TMessagesProj/src/main/res/drawable-hdpi/miniplayer_pause.png index 390a69c76ecf113c596d55659a9df796e0f2170e..f173ae63ab69088feffc9ff58687e6fd28910236 100755 GIT binary patch delta 269 zcmcb?euI638&iyhg}I4~iGiD&lev+hp{uE-nX`eLvw@kJnW2lZxr>{ULPc(YudkI$ zesXDUYF>$_i>(q+L@y;X#R{U=&;Xa-$%~i_U>3OGQlz9%ToRO;W|e}|0s~iEdME2K zJ87wzbo4SXF!*@7IEGZ*O8WEvzdf@lgD~?{2JQ}zdq18rO}OMf+1mDc{E^ACn6*S? XnM6#Zx2sqIwJ>$_i>(q+L@y;X#R{s|5trV{i5|o-|m4e#>3tW09>oGfN zu{!Mk!@$7cucqb zpIn-onpfiKVygrc(M!opv4ZL~#-(@iA|?Zv1qQejDJc|}1f`}~rQo)}5SQM`ddyDs zkIIf_GB7YQdb&7A!0-4$-k`H zO{ur@HbnHy;?euTIE%L}_JUf|y9&KCw+$R?-k)tWHh%db;oa`U>!r?)0#n^{e^@^* zJ$Aj$($ti*^{GosUyXWT-}gq}rs}x?N92!j)#r6uOBnNN3jJuie}v0S(N*mD5j(?N z;UJrbZ4um$%@iG(a$^LvZ?=d?$_Pm(9#dPQ@n}}WT{D#v6(vm^b1!VgEAi*P zsc+d0g%7E}uIt^Hs`%Bt#LwiQIFt6}lm8BCJ$vu^Zte^I>U(uoHhXUDsSG&tapnP^ qYUe|jy7$U=yR37QHsZ)*;$fKS6~cF{H6efj2s~Z=T-G@yGywp2rnL3| delta 481 zcmeC>Y~|eG#uQ_2X=!F*WMp7&;p${)=xSucqb zpIn-onpfiKVygrc(M!opv4ZL~#HDxgA|?Z<1%|G;6e%ebmjtDzS*75#z|aks-pP8* zPW2h{r3voEf-m%^BW=g#@3-dgOnyd9Um-Be>CN-$_hh<58 zk)3r;Q7UV#JDj+wnLohW4)7KnxhxLK>=Tf@xoTwiwtQOQdcByUhqSIWgw^V ii8+T_PBMrKBrs@S&{}JqyFmgN3=E#GelF{r5}E)moS+E+ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_in.9.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_in.9.png index 974d60e2d7aeec5229de2b26495af671ddb579ba..984a1871c3ad38fff6da6f0fd2dabde02257b7ae 100755 GIT binary patch literal 1718 zcmaJ?eOME993LVG7~l&c(kACHMPn~F*kpsr%U*bCBLYGKHID6o1GbyHn;WR05F#|m zha$-^XOJeMI1Np~AVGu}Vc<(Dis=)X(jyuwBDih{*dNh7clZ1KzR&0L`M%zBMNyHV zjt=e)BofInJWLo(tjmbU)6SN74-e`n#Igt%#p5w(3a*9JFezA$Cc{9u0!oFWVMv~} zp&bq&k*ujmY&;$>mGES!f(}_Qbe%#)ut}tVK%EMbWxzO)45uPWKJ{UJBNag8eCisu zlqppS;4~yGTMfr#N5;ysGh|#jHE=Z$pyLq&3K)j~og!0-@pOFZxGs;_Tg(h9Fb=^p z_|#WH#Y>|A0jh=pHrRpPxvBEd}u_OT#E*aMI#V2EK7+)I+_ymoKz6Pm`shR za0FEX7DXr-)!=+85$UTG6sjp%B{oqeqF@Xiq+)<{rX{6Gpj7(*P=#U&jp5Po>v;cD z7>mtP!Hj4aLp5p{(YO>(iz^jRpoSqFRmY-e=42J4(oh`5(ohv3h~WTUYY?Rz)nY5g z@lq)-T#4b3QU-?$`BXxIjv#U#)5n*~4h|8C*}=geC}IbTS*t`WKemX&=7w;BS50z- zs7#}PmG~rA{+cVEmTMUWg^KVjgw@DKST0th3Sc~C9x{C_f@$?8xbo>^5l+ix5Wz4k zjr~`nCr!lkShiDROB|*KA6636t|rDh#i5~x_*zzm3xi{I*ON!h=0Iy2$eLr~Qj6Cj4@3`IT8D#u0D0H-W zf!k+1J^Y|Ij*VG&BIJS0r{Aypxvi_E#l&d3P-)+S)JE3c)ZQ7bBO5A}*58RdX;Z&FI%TWoZ zQxeXu*a6m!BF*(%m?brf-ABEsD6Cd&yq zHfX@yzMV6qF<$b}FKP9rwxGOwWLt^8CU0{CC%+TY*JW+Ev$kTOKmRAlTO#rPZMBoV z;oO4qPt8$1bDORVIE%x2zLXb&t+VRwi;Co!dm48Dxyz1p_jJ~Oa>XifVPp6Pw~i9g-u`L_7N)A} zTw&u8n9FzBb5k|vSJIeN!my8(8p-juGGtXpPP*TFbA5u}{b&0c(f-=&>m4%hY=(hd ztwB!7pSv#XZ!m7kIcY4p?iz99iQoLuzQ%{A{__8-n=QMhNlF{be)ju?+=?Z(>0SG7 zusT8$LaNGkmWe)&L++1V=z7s#du#nwK6d_n!`{BFB_oBWnrEA~m{_G>pKWrjp2w!l z7%0dc9edH$aTN`$@Y6hM-QIh~e)-nZgFYAE>)Tc`^3Jj4PBoS0jt@S{i`Ym{s$%We z9%`F82+lS@joX|?tiJnWmKVoZ;1XA8mFR4kH#R>lGv5{*cHaJoYj?QW;GW}H46-gZ jQQ9f<+^wSyy8}%mmotwYtDLbg%bz4%6e&C!l9cxkqvV?_ delta 932 zcmV;V16%yI4ZR03iBL{Q4GJ0x0000DNk~Le0000o0000u2nGNE0KcTG*8l(j1ZP1_ zK>z@+$TtOw>5(BQe@{t7K~#9!?3!Ij6j2n%@15OQx6PLp!-6!i@A5f%?ja(gAbhAm zB0)ruKqw4?0*P42L@~{Z#Fs)yF~bxWs_l#X2>PJyL4sa_T(Nao*4f#wxt+6(G0M`e z?aZ`S=D>wz7|wrwbMCqKoY_ms|1+lfP4jh@cEA`TJR7Bye+gubm_6GK#Z^aF6J7Kt z!m#NvT{KfL1tS3?shyIM&m*~mWHWRIuo&5OU%b5yr6n6qIz;PM<|depb4_`WXC_@UfR7qF0WH{_%TF zMnj;X25PC(e|MP)I;2x_6G0TCf0ydl$;anwRh zBc_(=dr>A$VMVF%FQoxB9VCP1n%UXc6bQ8$v%S0r%4m_tDoifPu24!Ofzr9A zmYYLEf8(z_P+uwBfdnHmew>H{ObB3R&t2&leDZwaMxnvvw2!QWslV9TKjxck=dz4f zVPa_*f&Qp#zJA~Pa=MetTI&xCAqxOAd-lAi&o}Ym4wu#MG8jq%ry5)OxNWRd7#Vi@ zAR}yn>ke@V2KE(+`<@+P*zf=Mtgk2*hy`MSe^?-RbE0wao=D{r#vGIt|# z3SbtouZIyP#+;zT1W%~#12F_d`+-6orW@5z^KA5&00RJOVNxlE#4I)d00008U}fi7AzZCsS=07?_nZLn2Bde0{8v^Kf6`()~Xj@TAnpKdC8`Lf!&sHg;q@=(~U%$M( zT(8_%FTW^V-_X+15@d#vkuFe$ZgFK^Nn(X=Ua>OF1ees}+T7#d8#0MoBXEYLU9GXQxBrqI_HztY@Xxa#7Ppj3o=u^L<)Qdy9y zACy|0Us{w5jJPyqkW~d%&PAz-CHX}m`T04pPz=b(FUc>?$S+WE4mMNJ2+zz*$uBR~ z1grP;werj>E=kNwPW5!LRRWrzmzkMjW$tX@>}2TbTK?8Y3^)f zU}Wj)2Gi@3pIn-onpXnTn}X2mj8iWtDdZLaZFWg5$}CGwaVyHtRRDY0DigO`EOD9# z)tiFbEsi+#>H{644~kf%h=vIPQxAvH;PPRf!m%`6ze)=6jw$jov@&SM>L_|9tba=3;5K@s-Ad@)i#k>ns(%YZSBT-k$YS z4h7u0(#ptgQxVjuWa^*(oX>EBm$boygO^pVesPcbF1L3=YmahoyVvvH>(~F?_N#05hL_&g*V#WYihQ__KrH4E^fVld4H|F=ERLtq*Z~~f`bi6R$Vi615zyMj=qiz4C_yrvv$3l zsHk4gBX23LIQ~eq87Hy7=BHS^Q=f zDHNL{qm}2E$Jb;prd~KPE4$U~?^Lzt)uvO!f@g18CRWKW*ZSn$@4t7x-j#jgkg2<* zf7^rbJ(nE4R+e}(G+fzd_hx>~k79$hv5jwX_pJSwS3mgzkJr&FbIT5`&X~Nx@bnBd zz7wCUgKwRC_Ugs0Plx_FsMsj8^!zy%pM2YBs$tRdjf;Pn@x3_7SQ6(uZ72IWJmU2+ZWJ znmUoava;#Wua_4?>P@A7Typ3C^ofNvAhJ~Umd^fa(*~xC2W4X_nzJ76$&x&E)cc1` zjJ1%{%R>noZAsYBCvH}o;Qzc`cBQu+XIsl%5*87g8LKn1bHTzB%y#QsXE}2+KD+z( zu;+znpv&IUuf?aEv!7qN{q?3)$+t}t z*fJ-offVeV;{W%oM(kAH@81P;B<8z+JS(t|&(rl)#H6=t!vb;w4zL7#%9z8}pkjA+ zZyNXf($qV1y{@k|&1y-geDkGgF1Lo5lj~pcZ30HirA{TM8E|iPxSCOMzr9zN$)eb0 z%dETmuL?U@Mec3U+0FQuBXq9eA5F`f8yjW?mUti7&A`ksTTed!{om3IVESS3boFyt I=akR{01K`XMF0Q* diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_in_photo_selected.9.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_in_photo_selected.9.png index f88932d190c932bccb7a2715acfae399818c0166..e279dc81e993f241fe55cc76a712770190a926ac 100755 GIT binary patch literal 1640 zcmeAS@N?(olHy`uVBq!ia0vp^vOuiN!3HEV9y4A7Qj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS=07?_nZLn2Bde0{8v^Kf6`()~Xj@TAnpKdC8`Lf!&sHg;q@=(~U%$M( zT(8_%FTW^V-_X+15@d#vkuFe$ZgFK^Nn(X=Ua>OF1ees}+T7#d8#0MoBXEYLU9GXQxBrqI_HztY@Xxa#7Ppj3o=u^L<)Qdy9y zACy|0Us{w5jJPyqkW~d%&PAz-CHX}m`T04pPz=b(FUc>?$S+WE4mMNJ2+zz*$uBR~ z1grP;werj>E=kNwPW5!LRRWrzmzkMjW#MRH=;Z3?>}KldXlUqa>SSQ(=wfJQYG7_^ zY-na|2-EA5pIn-onpXnTn}X2mf>SRjDdZLaZFWg5$}CGwaVyHtRRDY0DigO`9C4Zl z)tiFbElxP~>H{644~kf%h=vIPQxAvnw~BHmVE5H3GdAfvrSHh2^eiSlVz{*~oFr#V z6?i1G-*!uW@bO>Hy?Np5HMrgys6DGax>M)$ss0Kj%g;|=fA3Uw|IKVLt!aOVvV~!R ze&6kNJaa$3yR$F%$kURF@HhKHtStV%JNz=3d3y7QU@f-h>Yejeb1Xel_y5?@=Gy8q zpD?CBpFbGLzr7$=`ejixzZOrt#m&o`uNL$7#9U?JzO~Ty)r;Ij!zpVri*}d4eC3hx9ehq8Cwy-qgXh6^h zsV6-fr>u;WND+G)c1p#wZw4ppUIU%Bsa4;#E-w8sXXb_Yi#K#sT?|`-vQC~mTVI!{ zW@576fKmJGlph_J-&o!ct=E}nkh*n6@jY`Xhgjzo8B4X^IDR>~`9Q;}RVSkwGX8)0 z`9uNa(h|do4=02y&A(e~^LYL&yTDwP#j>~V@A>?~7ASjc@z4I;==@h<>EQLd6E-D_$FH zB2MM98)__wSXY;LboJ^b4X4<{{d`Py^DnJj6TW-meI_1;JuNCVYJ&Z9KxMzDtDnm{ Hr-UW|@34Y? delta 655 zcmaFCvy#=YGr-TCmrII^fq{Y7)59eQNUH*|1qU0Dth#3C2BcWh9eo`c7}lRKXYG19 zQBl2~$=cJ!F{I+wo0;dmr2_?ye}CKWrgX`za}m4dJe%nb{Bc?x;$IhZ+~acPsG3;i zRrO-;GkJ{&n{M&^CU$)}n@%|vR{U3`1gp%GkgvNneg5nSpK=?S08z`U9pTAQ-%>w5I{j_- z_H4^L7dZK1|5g_4S#V|M%Z2~`y!lb}sPWq63snctmX~Bxd#Ql z$5Q&Yo)n+lyk45OzT~ooS*FEP#k*Xp%{On&^|S5%HDw}O=FcXf1XUB?+ZOD?z;cH7w?OH z`tkjS+*fWdm9jK0Dd@%r7|r-~?_d2#w<`fl9HaIvFgbl8{u!6Iyqy^TVx~nmz+xi1 zW3+1b*Vvnx?%%L;>*glLJ}uG99NbQZ8e&J6fRvOzeJm1FsxWz~+{@)Gx4E2NZfc!$ zEM3||squc>&g%gzIf@6TGQ6J66DBzSxy8T7#h(hl2E5(Jd|gk>*U3Ouyf!HGz@jff z!R=PeUMErl*Y{h6iG0@H70CQ#M!K+&dNfO${As=kcN(hCmd!cfW4>U&)8BJ5m_z$M ke-gR+{jQ1HI#vmWaGTrQVarZg0}~g6r>mdKI;Vst0DPDoO#lD@ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_in_selected.9.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_in_selected.9.png index a7638c2d60b42b98050b0d69ac86872f568986e2..8ddd4059e6904e4d8280b7b55a315a586ebcb86d 100755 GIT binary patch literal 1735 zcmeAS@N?(olHy`uVBq!ia0vp^YCx>a!3HFMe5jBGQj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS=07?_nZLn2Bde0{8v^Kf6`()~Xj@TAnpKdC8`Lf!&sHg;q@=(~U%$M( zT(8_%FTW^V-_X+15@d#vkuFe$ZgFK^Nn(X=Ua>OF1ees}+T7#d8#0MoBXEYLU9GXQxBrqI_HztY@Xxa#7Ppj3o=u^L<)Qdy9y zACy|0Us{w5jJPyqkW~d%&PAz-CHX}m`T04pPz=b(FUc>?$S+WE4mMNJ2+zz*$uBR~ z1grP;werj>E=kNwPW5!LRRWrzmzkLY3`z?(a|=UrH&aJPLqk_n3o{cJOBZ7o14|1x zQ%gq!m|mCs(jGV0eCR@%UXB^IOnNF7Ul@rnZ z-|&N9;6K}={Q-tNAD*5P^J$;>S|Q;=@wxdIUoBapAbjHd@$9pwPARdABsXjR`u_g@ z^85Aw_Wbzq@$|;(@AB(?Ppz`#@Nv5T(NaLQccMg+g8N3Z>(5?R?Yimr;Mt=sieZnR z>&NrIy;Z$t!LrOpp&1E=imS%-O7NzKiAO&Nr$@0~HROKAbE5;`N^LYfs$L zGrlA<6v-aD6EuB&erDc=md?)3`7+E6zgX6u;T5|YnwFX99rVPaXJTjP#M^g|RxueH zZ&py{6j>2}C1YV_aTBo<kXID^h*NC z!66emm!!>Hx=2O7ciuIRG6`X2Wov%^>4K)R$Bv&~%WgDXsol`XXv2n$o4SH8CmtyB z7m0A$uz;1}as4IP<0qVa+Zl^BXm zIa$BrWk>!0fBzM(C;If2r7bEl3i`N3<0nw)FH^=d`yg4iD~C^nhR%vReCUvlTX#nF z=Wl;A-Pn%ZUt-ZCDA6j@owl9b+p9zEvX*V^?z(hlVd2C6NwREt*T0uexh?TB+n2FT z%6HZJ@A7tX+UsB5>B;`b7H1%^M~eQz@+$TtOw>5(BQe`rZWK~#9!?3!yx6j2n%=gzwB`os__3Z$TxC?cbWp+wNPC@B0^ zL?5CgP%K%4q!RRl<TVnmI9NH>~fnHacG zQ08&E-0wa(zCJj5_F5xc`W^&ZT8^lQ2u33J^2mC!{%Z<#mIyr z!YfCN4_m6tf3b!@Lk-jlcH!S_*&u`|nWl~Fj>jvhQ42M>gUE~;(~PO>;{}3Rs2Kwg zzXAGa+=g+~LQU=khEBKV)I?nZOz-W{8(Ma_`_f5cte`7`_SO*QeXdU=8bAlj|v zr}yvKT9-@^O98>(W!|xrojg#mtsWrsQj(dh7NWJj^u)o!?Y3luP&;brIvXmE6z%g;@T|!pB zVK5T_GgeV$?GSch6&@Kz=xfx~xprnnZ|Q}F^pE!5-=A~V11&D)Q|@d80D)Z`A5LftO&<(u~LiRt&ThCmI} zLQVc4ihE&ZVtnjSacSA$(5ueL>De*f0N5tBjT)$hnh{+*m_Yx|fhfC!a$KMAVPr6( ze_KO|ZZ#aUnIxxj91$szsFyHh4yx^Ma2$tg&On_PwmWFq`?at^fN`OK4)PwM@a2od z?`ttWWiQ@5_&nx2YDV-79!k)#0x&4#0iTr?zn|~~!BGk~oB96+!3`u7nc$Q2CSpP) gVbmfU`6<8vio$;Nga}YQ00000NkvXX1g=70g8F31WdHyG diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_out.9.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_out.9.png index 08fd35b4cbdba08150bb224a4981df94431749e7..5034ea1f06ddf06c6c0027a4b714b20cdbe4f4e1 100755 GIT binary patch delta 1273 zcmX@lw~ucqiS6q^qmz?V9Vygrc(aX$Cu`+Tqc62s# zGjlU_bTl+{HMMkcGjMSqV~oO<=`6m0a1QqrtkQj3#|G7CyF^Yb7=lP55%*MFbR^pk;s zd8wz1V@SoVGc#U$iv)@sNKZ>omtSoB`rWQwuU<{+zp}J!yUJD_9bV-nK?aN118cb# z)hGTAk+StMsRa9DAF2%jJd*+w!k)$pBoK?=^PHJ26 zv+d94RlnOQ{=8C7SlgoSzZp}tOmMwpfo4KyQRN2TX@A4c|BL)@q4_7ldz*LJotvSG z+;8gdt3ChuF-F46F?NCGf|5h8EiyR1u)Yw!P^h}B$Ztd6xzIR?YfFu`Y3;T=oM|-c z(pDAMY!2S36Ov<8#D1E6O*Z=RuGm0e)|?NAlk0oSlkfi#kn3X3ey_8B`PVPsmRim; zsy}uj?c7EIlPa(CuU3|rot+Z*Mb&0&iN=RDTgo3iJIZ_S*6JW-w=>^9l(^p%HLquFVT(MuTJh^U8ULLR{LOBhte=+JDw$TjwbSopNK&e!)Q!zL zk)hY+VoOglJucjLD6#aJX5>NHYj0wHc(vLX^qf!SIT@yUFu`z%lAP!X7H6F+nu{kT zh+MJ#Fk4AVr_kArhD3%`c=-ZdSLC$46QsQmoP-4o2|vnO6@fc-gpC&FLbJGhSA-b#WOr%ZHPDuJZEih$XY$1dAF_Q^>oqrs@9Hw@E;qk# zbxnb5&ECSIk{@SR*qfMs44Zn{)FZX<>MNh(YwLt<-CrNsa;-+C>D@QJGW%J5zU@~V zny1aawPjCUZQs?M?<>kLZ)}ZON=CBn z@SEon;@ujYC!}spx!O8)sYKtkbKkofc3%*ZYbacicmBrOh1d1N1FUKc9TU`Kj`MhU z9XcrXci!`j)k%7xEw)-!Z*x*uj%}PdN99V!%{0CADZAx^SFZW9OWxaNf)0z|u2=J! bco;e^gvl?uXb=J{%@{mg{an^LB{Ts5D4{7a delta 1237 zcmdnUcb-qNGr-TCmrII^fq{Y7)59eQNE-pM1qU0D+`nY?^@)lajF}s~)EU`=GSf3k ziYFH`%CQwen0<@|ld~8#0}CKhR=$Zv*{LbEN^Xfc#i>dP6}bhzzE&>z$)&lec_p4M zwn{(|y_C!pD;F~hCubLP7biyxH$y{L6DLb^CrejjOAB)sBWD8xgUMPBtW?rv`NIv#Y@8SB zn-)ntp22Lhx%|_v#>H)y|0qhZX+Lm?t5c}4>;;xIyt-S2(o9=5W-BI`xqV8cn zVcilFrZms(lmE^5;y24VThL?r(mx76Ef!zS&^Fr?xl(JXmg}(-D|)K=if@>|zU+V2 zXIig+zr50PE020d z#Zk=S-5k5%_=C$fW`|c#W8}TS(10D$P-*mn#1ka~2ThC@8wv zE7pJEj4mV=>ykoyU=*>_RvsM!D*nj!e zww-OaUT4dgJ}J?g_IG{#gOhd!m)=Vj++sW=qV3|O^83Mxv$rqX1|DZuN-XQhkE^cx zq`O?@)V#UdH-ywo=;EKGJV{xpjD>TfOQfp1*dxn54%{Xyn+s&5zMrcUf5gfZwZKzW z<-zk^bA{j6eq>_Qy|9GuQ)$k=#s8D%m!C4W+%TvKZ2l?^3)vNW7a#6jHuZUx zihwJNbP0 Hl+XkKv3mr8 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_out_photo.9.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_out_photo.9.png index f8f07f7fbe87d9681aecccdb224fbd29a1cf1e2d..a6604011a559c63e57c554593f5670b78abb478a 100755 GIT binary patch delta 1156 zcmcb~vzJ$~Gr-TCmrII^fq{Y7)59eQNXr7TG6x%w%y`UrX`-SAqtZq%b;ij;OiGg% zFlJ9a%B1LSrl1j?nU|7ZUaYC4P?1~U>ucqiS6q^qmz?V9Vygrc(aX$Cu`+fuaWgY8 zad9(sbTl+{HFYvJb8>Vtv@kSvH8wYLcA4zSB%=UTqWJoO<=`6m0a1QqrtkQj3#|G7CyF^Yb7=lP55%*9%V%k7Hn9 zHuQ9H45_$vW%_M@VMmen@@;RKBJ)}$G9A6IcsT4-pODeB-TeMug?_bt318wBK03Z`KS6=jP5s-5nZBHFb44r#o;*`!woJS-Nz$_2V9?plNxU8(J++p4>L~ z-22mWjGv#8b9kGxV8;1|U;J!~zBkve@_*((_gi}EkHG%5BGLPj=C>Aa@iLp@!ZNqM&Wpx63<-CgITR(PE;>|HanfG=i+^$V=Dk0j z>tD~x`x{WaUTaJ3i<47hu2uYf^04dInJ;UaQew9Yah~0|=P>ggft>6WJO7$xzL38C z_;h_mxw)3^Rq>2jW;y0*0!|kVbKiet-#NW^Yx%w0$_a7&c2>RRHzE>OTJ0BBkW7({ z^e^eSx9sN){q=QrEEaC&+Pb03OSbggJj<#2x|8ps@~%|@o>Tm1eCG1asd~n!8`S(l zz;@AUE?0)DGe38AZ9U_;$i3w1LJ=+FO*>hmoI2&|FZwdHy1C6imc^-BMH+awd z`n}#KH`SP#ecUSH!oPfi-8(-kTdo_j8cr6JJhkYULx*pWy@$~gCg&?APAydv}O$(z|^txqALH-==zro)}@(d54VT zioD~T1OF}j!=u*hdv9rXBY*SzYMXl>`=Qi<#5= zH2fz+-R{Ykc{6+B(hVMTSK4kbjPpJ;OJG*yho8TW|9W$mZ}r^YN4IaWi+HPa`AD@_ z#-VLWySFu-JH>itDciC+XPLILu?0`LU@}!$TC8P-hMvV9jYXV_Ejib|tuQ{aSmU1J zow8^_X14#Uruju46#1*wC=jmX$|L-BTlMw%O|=V}?=$f*T=}!`L`jY7HekWR;OXk; Jvd$@?2>_lP@>2i+ delta 989 zcmdnXdy_}8Gr-TCmrII^fq{Y7)59eQNUH*|1qU0Dth#3CHc?T7F>|ArIwM<9W_m_R z@#I2AIkqAQvyZW0au%azU;#wR$~UnnJ2k~t$t^LbI8{lZBDcWT*UBY7ximL5uf)^E zRtYGgmy(%c+JXwoLMggkG45y-B zjH;YQ3gMY~Df#8alNT{*#Fdr;4YxFLG%+-GaWZf=HFY&MG;}nvFm-jZbTx7_H8wDJ zb5>F)E(uCavr0j77(}BnevOm$n4RjoHht4&U|?$Vba4!+xblEN{u)h4$swJGg`HpuD@8R<@I5a zuWiJsyd?>@R13?EANyp8UeB~Hw3jMiYfDXUudLhi-uOLV57)o7f)_ixr&{i~{eAP| z`sx3qf^T!RG&rm4moa_y&e&(d*<|wgNUQz5*ZFe7EW0+WRGOS&BJ|~=f3?zrdEV8! z=97x+`EB3xWbK<_?HBEP+rcZNbrz4}q#q=*P1K%4h zJGiA~0fP$jtW}zU&Rb1aOp_2%G}yN2$i-WVwJLUMePXu~Zy%G;uoIa$QK)Cimnl6V zUnagf_vN9)<@Wle7yolFKK??pDfL&%+*|XlT9bQ3)ILoS`1Njbsn<2l%n}f+l;P73 znsA&ysb}h!kR9`w4jeWV2@q3VbycW2Yhvi`oiAN^x8A(-Va7CpDX$-@pMJL7?MguC z=i=rpT@J^!b){+d*Xi60yIZn|DJk2yH|nhR&;5n^JJ*#O zk`EC^OP7mq1Um31Cj8$Jt$nTN^Wo{`-@flM{+e*i=@AAEquEpXwx~fiRFLK z3GA!Q<^8en+b+q}(t|f&-BEWF=ewI9TiMR@{bBlc^~?T@Yz)Ufv@m9Myk8H@u?(KB KelF{r5}E+9{hTlW diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_out_photo_selected.9.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_out_photo_selected.9.png index 3d5b1f9faa96a9c209fffeaaf8e42c87776ca321..8a4bd61f39b34ae3e32bbdc8be1866d13fc98705 100755 GIT binary patch delta 1079 zcmX@j^MOaPGr-TCmrII^fq{Y7)59eQNXr7TG6x%w%y`UrX`-SAqtZq%b;ij;OiGg% zFlJ9a%B1LSrl1j?nU|7ZUaYC4P?1~U>ucqiS6q^qmz?V9Vygrc(aX$Cu`+S8bapW` zb#yazbTl+{HMKOgG_o`>F*P)IGqV?oO<=`6m0a1QqrtkQj3#|G7CyF^Yb7=lP55%*Beh$6=Gmu zdgAHg7*cWT&2(RXVMmDu>)p4VZbw9E)P)4?QIysq!rM#2hxKF(c+GYLtw_EZw)!Wl{dGz=h-ONpYUioR? zX5-DyGFwH{cBuF5UtsV~WsQ?5zioZL-K&PvqATVG%=Z0jvO?&J#FdrOw&h7vE0#2^ z;n%zVcVF9T#`*S7zE;d)i7OCxs!Q!KbTf?&PIW!`qd&*_yJy zKNMVe{Eer@S@-R{s`B8iD}%pXIpbDT92YqC#Myhh7l(Q~S}9g zPpQv}7nTm}_@mjOEE>P$#FrDM9XT7q6vf`O|DD*p$NB9s`Nfy{If^&jUaR}?TvV%@ zVbO&481I$qHm-AvS9q~*HUAAm(+SNsPolgy3%{`b`8Q#1u~6lSty7$|toG#PU+~lX zG$C7)HTQxh$Ja8i`VSEobW+rc`m+>tFeM z18&&w+a}>GS5)7d`={|sSD|}}>Yt^%udBY9I>q>G@AC77ra7fnXBvK9tq8d@=~!F4 znR;2;vEJge4)byb!|ruk&c(h_Q`tW|x1s+H+w{v%*M)KDC%t?8-2dW}X|ArIwM<9W_m_R z@#I2AIkqAQvyZW0au%azU;#wR$~UnnJ2k~t$t^LbI8{lZBDcWT*UBY7ximL5uf)^E zRtYGgmy(%cWngS!Y2;>R=;UZ=U})%S;%MRM?Br@@;B4&XW@_eSK3R)NMggkG0H>l~ zjH;YQ3gMY~Df#8alNT{*#Fdr;4YxFLG%+-GaWZf=HFY&MG;}nvFm-jZbTx7_H8wDJ zb5>F)E(uCavr0j77(}BnevOm$n4Rjk{!V6MU|_27ba4!+xRsQs!2d@*?BS{IV2O_> z+h0FV=-Akh`{V!o#``K=BJKxuXW5>g)hKizU8eKU|B|ww^=fU791$IXEIhnn3aVU3 z)`;BtF5MCTdd14WZXB|zX9G7skBnqoY2oI^W*;Udmd57hc4`ibkJ|qKe}0xfy>_;@ z-r=5-tm)TemDVe3c22vgbLLEG(4$8+d+yl0>FJrWi{sh4|Nrgl{|fzo^YrwA)8_dm z%&p57tUfqvS=za+R}#|F)`dcE{dW-2Wr0rN}&SBX{_$Mad3{|ym;}yUN`xz zi}Ovs^FD2{ld5<=;)+@~mIxQ5Ag?4o&WRDsp)L#TU}LHtvh_x4bmE9zRur^ek*`uIn;`4(WBQI~AMXG6-~ac|xAtp&Og9-p-uV0TbN%1N z;r;tA-wN!HxBbVrC7U_0uj=EM_lvUm*VotnetB0v%911H+tv2#`}WoT%~#wdbB%NH z)#82oz1An_SQRAJ&)>DiYWtcQI_&Dw>c&fhO%|AZ`Fs8Q{{DFT`hSI=FP>dL-~O*= zl-b+c-X*0y21g^(+-Bz9z3F1g6Y=P#rKIi584^bt^O6=BEdKlZd;i0y=imP?zq9L4 z`on{{`{Ni}1BI+I(nRJjPPllQ>1fXluBb`fsvK;oi|ko-@BCN0Qj_XXF0ycDV1Vd9 x?yikY3l4_(=QkJe%@ov(VDFWj&A`ONpjq9fU_GIV6_`gEJYD@<);T3K0RR9)noa-! diff --git a/TMessagesProj/src/main/res/drawable-hdpi/msg_out_selected.9.png b/TMessagesProj/src/main/res/drawable-hdpi/msg_out_selected.9.png index 5e01d8fe39eae4b7dbe4cf26850e76b6af49751d..82b6bc2db284bce27020d10a40078758c9a05422 100755 GIT binary patch delta 1226 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 HDWM4f4A}|| diff --git a/TMessagesProj/src/main/res/drawable-hdpi/newmsg_divider.png b/TMessagesProj/src/main/res/drawable-hdpi/newmsg_divider.png index b6c3c9a33559e3ceed68cb70aace8a9a63a08b22..58321338a9aad1f5309a3cd39435ff2595bc71dd 100755 GIT binary patch literal 976 zcmaJ=&ui0A91jkP4hlmMbf?Fg$SgL$x@PpzIMya{6;ozfSdUAS*CuSqi^-c!dvl%y z{{#=7J@^lJ@FoZzJb3cpQM`%sB*^MZ*LDhaA<6r`$LI6;{(R4NoA>g|tIHh6*=C)nZ#h?+`eQaUd9X@)Gs~ook{dR|T%m>IJ z0dHp*J`Ezq=D6xs8rjYPrl5=aeyGClZ{9-SyDHo(o1z)jvFGoMV%!=v+s^2~skm_K zE~uu62?UthAPo+~1f?pR=ptrk#{vWs2t82YSx_Bw7t~3NL76WV9Z`~iqVUp2Sy7}r zKo%ug5ZS8~r43Y8kh}?|4`kkAw}&jvnEGNn6?&9LNDu~t0Y515B<>4RrBcZ>WVy%? z#bg*#J1vIE+Dt*ii4*$~^+^aaMY~Ims0vx6XDI~HTsBOmWnu*rQachPUd&RO0ZsE_ zXb{ZN3AONfy#EzW+QSG77EZ`f?6Ai5)-qQSs>j%-ByJOOIIH5WM<_`=5`lV40qc8y z=#oKldxAGj)Cd!5hYoINDr5@0@4HCZG&aSWBpI4fk|e!cGi2Q;8QYq!Rb*XOW?YRp zM*$A$jO(6r<%QgA6oQC()^O}U#;y^Q08COw{=!&9W1-%Z>n@H(T*wtzFhbVYzZyL| zV$+kE^RZ={`QYP_O?%A7TK#eTgk1@(p>4O*&)whS@pvy+;BMs#PaZxs@~dU<)60Jh vcuhPhe7kRX?*wrA;nK}7E$`zNI9*!V=f197d43Fjq3n(|^rrT@wtxHw4xcdW delta 74 zcmcb>zLar-3NK5#qpu?a!}=5EtX(fBDys7_n0vZ7hE&{2`t$$)f62)$%nI^G9hsl` dwZs`&Bp6iRv1CYH*jdB?1fH&bF6*2UngF`%83zCW diff --git a/TMessagesProj/src/main/res/drawable-hdpi/pause_b.png b/TMessagesProj/src/main/res/drawable-hdpi/pause_b.png index a9ac7a7948b5596cf7f0b139c184948529c35f3c..d8547fe069a79f049d02b40cba66f48e82d308b9 100755 GIT binary patch delta 1336 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 B3Jw4O diff --git a/TMessagesProj/src/main/res/drawable-hdpi/pause_b_pressed.png b/TMessagesProj/src/main/res/drawable-hdpi/pause_b_pressed.png deleted file mode 100755 index 9f4b6e1db77779635e36cc70e1f4b417f63d3fa4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1889 zcmbVNc~BE~6y{P81+^*$k8ur%Fq$lzghhfuAO}GOVn7oS#3flm$gwe5$fDwC6cqtc zp~|61>nK$OM_UDi3dEz;;!#j4)(dY@8!8IaV(CW2_7BI-bZ2*e$G-3T-h03IX0t?* zVJ^;-oNa7uT*8GsF*(k)K2F2QH@m-GPY&)lUy4U#Nw^Wwqc$OOED;65HHZQgqli3x zP*e5Atq_{La6ZIBAQH^EgL z>Y!872ob==^eEs*XVPT85Cp(59b);xFf@yB8gZk&Y_Z?4u+u7MMQig)*3z}icA?uAUY7D`+^#cHLmy823(B(LC_G#C$T&T4h;?U=W}6y2;#E>V1JnFF9?CSELMOY z({BhHt~KC@R)!AgDy_PMSopJ8Hdl`#IHr%mF!fLch>|fJGbCd=fEx`1-V&u&ju{O; z*5etBmWS$yHF^keChi;vBN zYRQh#ldVzQx!j%XxE+j;FpsgL(M zt}T21qIuv+U|{#@Z!OEZltEsuGaOPvT)uIbP&P_!doHB}ZM1vb80PEZ6*7J{s^9*q zMYM!J;pXhxk$W68_r^FKY(Fh+>YbXiI%7h;Lv@pH;fabyyOP)%+t;T3?!u(W7w_6n zY?4;dru=xU(1{|+oMH%GaxJLVQr;=u5to*{+UZ#G!i{cgY*MaFkha+o5TFCWL4pYR)ASI%rMF-o}| zzOl8_i*!eymfSg8f&28`ZyYzK`r$-NP)#COXxf{0F|z&-prS%Guqx>npL1m@s4}s z(J|jy(kHAjnFBLCfhd4}!pk|o~tFFZO>=O5O1_UD@oL0^=Xcje@5 zRCv!NflB9wo*iADnF(8<%HZCs(0t_buB^Agb7GfI+FCRWk|Kv&?yo zTLi~Fl5cN5w6Ta;oKu!~k>4_+dvdqdWn2v@9 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/pause_b_s.png b/TMessagesProj/src/main/res/drawable-hdpi/pause_b_s.png index 6ae227b1a5d889d66fd88e863b90ebc014f13214..fe250126eb2cf26a2afe2ebe03f36514721b8677 100755 GIT binary patch delta 1409 zcmbQp_mW?+Gr-TCmrII^fq{Y7)59eQNIQWr2OE%l9K!HoqM`<4+D0#R#>ul7QzmCI zYStI{`daxHWu|B5CFZ!~Czs}?=9PH5*eX@z7U-p9rdSy`yEwU6xH=iRx|z6|8X8&} zIXYPyn>bopm^->Unwu#p0969bz^2#9&B@Hjzye5_8yFh8np&Ee891657@N2_y11Ad zIsx@g)@71ZfU0xErEc;sM#IUAnGB+gO%2Q}ot?}q-JHN~aWQkYG_?To&4BJQv`|tg zE(uCavq~Y|ACq;No$EL3aedCfz#{4C;uunK>&+Z*kB~r# z`TM+%*?ji#xigE`7t7cGP>y?kulU^g&wtMCoP4q7yLRM)pfc8K>1yWP^(}Lc$DRCk zIz8=1@SFHIf!_?OJ8VzL8EPlr{d#oa{L?;F`}+6JuI<=6KQ`ro-2NRC_Rfu6{QI`V zZ^Pewza@Y7zv5ZV*2uJd1OMjhnss@bB?9s`uix0L^}kpvg@CF09@TkC=@Uy&O){DI%{4Z@KH0J(>Ra`)ENxrDKN;VhS`gRUbmL&%IX#8nD;z$>EaW;O z_D%Sk)~5Lro--<&D$8+{IP|Az<%BD~=YL%KW~0LsiOL4w5S7%Eo@_45eXWkUSY24> z;#hxW*-wF)Yx+EH@-%)puJoLt)OA*$JJUrq@5JR?soDMPNw&X5EaTOet_gJ9qW6*M z)T!2}Y!iVFMUx5DR~Gcoe&M(!LdHKLE7f!6f5wR?^HjdC{CH#UMW0Jw*{eOewN}e+ z(f+)$;OnRV>+0vvSvpVLe#+g+O#x{vGuaQBK3bspxIUzX>FBO`Z)`PJ#oaeqb#m`2 zzUBkZybl~zV7lW!=1oXpa8$oXOsu(SWn-Km>=?HL8KZTP0VUo5iy zl#G(S!;>l*jqA@1IWqYamf7-|Fbf#VvCm@bDC}qMWp=sn*uk;k$BV)Ri47Hx3l}Ih zNPMxlpy1H6W6%70jEd#EU2*-x z=QoSTFeEyj^1A5o;K*-L@rD;uHo37fZcW}&WWX|IZSKdT9tr~UE$ZJT2&ii~@u)?u zc*nT=dZR$qVqdxBqdJ8hNhdtDeJ;uJc(NSH|HgRf-mcBN1KOlCgAXYvoZ0_<;y0;9 zv8Jl261`s)l^@oyoB6qy z48uI#V~>aha~{E>o)&EDPtCn0=$=x^$qarfLmE(3=9#TOc`AKthO QSgJC3y85}Sb4q9e0Ap%fX8-^I delta 1168 zcmaFKKao$dGr-TCmrII^fq{Y7)59eQNZWug2OE&I`g5~rqM`<)(nc?J#>saWl_qB~ zW>4P5q&vBqNm}03(bCw(%);2w#Msi%(ACt!%+$@<(Z$lmz}(c-!eFv3ldJ+%jR_7l zW|N;W8Ad_OF~p@tNujtTC^gM0B|o_|H#M)s)5TV)BDX*o$G@H zpGPn-Ft>WTIEGZ*dNMoKLnKh5&A$AofQj<01yc^}c2ZikH0a8;`3DwAn{t0K6Hr+s z{eJCfj;kkx@VQiugh!RrZ+EGvb)7V`ScAht|d#p=bk%}blb|>`t`Xvl@A%~ z)6&m9mMlMK`Frl3=f?Ib-kOY46?n89EHzlO>m4RqrSTm(Xi~wg=D_1}FkD-lvz_a5 zR>;1?lTsfTWH9b_ESUMYTcqahx|aF>+58Wd8gSgRyn4W z@$S;XTNmo5`95U2z|D5Wx?tU5GoB-Mf8VgKo+GBmW_~cRF#g7}+Y{nmPbu*Dd*7s^ z`tb52wjS+9qR(=TdCIzeZ|3cB*mY!GL1Wd2_X6)ztZ(zYWU@Y#?y$E)|Ldx^nVg^B z?(^O=Tkp#!#np#o9>fd1f3CFT^cs%ut0a4`JGU2~=DgmRcClXl?2D&uA&1mm_ka20 zKZE~$7H{k7i>J4qY}xI4zeHa&j(?VkSe}#q<-)?w<*_m`? z;@X>sVHfS!KGV%zr}t`}m!FPCjOxwE?xN@y5uzV%2;r%eyI}iEUTQYUQTA zZGPjhDSnC6IT`WAO;@uegL9{sv_3!R_~DfErkrf4bSP)AkBm`5%IZaXqf@S+Y^gPe|-uphcx3PX>CcThm z7-puts#oYZOTW3PN&3I}{?!p3=1Hkes(71ptq?H<2R9HXdsY)wkmc;&d54x6CI#JE zoz%@W#l{|MB^WmL0?KBX<&`+F>^35xfts$b!lM_jA#fcPZb~L^1{!L)tGy6ad+Rm3 z*S7NxT)7UGV}%NMh*%)@I)0?YD(vejbe?Q;5cDCWt-_O}>gEQ}aEO4!W-~S~2tbxu zVM&r@;VKY$LF9P)${Arvkz_^8fx!c5w9wgBD!MU*m`*_n-%6>#F-$rF!g;arcT}QcAEDDlQEETdPLl8<*kr#`GBrauh zxk6qOb3?9<}-g~*fPp?FwtQTtWr$*;9`F1{)N^z+xzo*~a zoBlX)`{!Ey?0oR(%fVOFIGnv8wLTo)dT7inJej=z79O8_eDUe`i8Is8uc`FhkAvsO P$ptHy*7aw_tp|SqvkNbx diff --git a/TMessagesProj/src/main/res/drawable-hdpi/pause_g.png b/TMessagesProj/src/main/res/drawable-hdpi/pause_g.png index b8bd88ef3ec4c047210f3561b452d8b89ba8e083..1f1f85d824acea5739ceb7ef59a28dd277e5d229 100755 GIT binary patch delta 1342 zcmaFK_nu#|Gr-TCmrII^fq{Y7)59eQNIQWr2OE%l9K!HoqvBsi1p{XnCl?D>CnHxk z6IWA1LrWt^Cre`!M@tKHM^{I4v&nW$G76@amX5BLW)^Nv=7xrbuBMizMka2~Zbn9y zrY||!?<^;CR#mw2#)B?yi16plpp`=h;5|o-| zm6D%anwy$e;^|_mRFPYtmy(%cMbN25%ue-_FM5?TFtEsbx;TbZ+3ws0O15BIn}(y-#s6>S^q%~dT=xCkj?W+4?H}zh{yuMh`MW#S@8-r{`0+(0a)Htg zo_kE|>zlbBihdBfp+A3Sllp`A9}H|b_z%>6m=GzN&AF|$UeDy^FS`o$8isq^;u03e z_2XEl9}?ZQzxM$D!`mN{e{6rnwVLf9EQQk!1uc>Q`rJ>MdsI_CLi8`m3FRhxUn zu3E#g(PLK1_Je*GvE=?B62($@ucrlGxs+8(j8{ zpHJGInr=0HCDTUEIu?D^-<_}TBri!-VLB*#fmxF4c4*A^-GMrf zCa$x;;TjbdnR{D%?XsymEC0*>xBA(;>(_e?YjxhjGjmejb#CeSoA#hjtUh4RyPM_C@TYQtJ4@ks08&}YRrc#K1H(*$1I@`XH7E)HLsbJ^dZ zBUO(5)aSri-l=>O=Q}>BlF_*S+>j%CmZMLVOh%WZPo+%8B*z{g+2hz^!zYp?@ZN^c z~r z7JJKGF)WL`?N`mS=Cx-(zl-6}nj>Bt9X|AZ_ts;$sJHPL%fYO+{T32T$FG@uPpCH$ zm^0tvRf52A4KF^muvPEm?!0v1n7fg!|6|d#J)KDhJdJ%W~`%880ddU^9KYVkkb=sv6u|MTN=+s2zfOXvY zU8}plmjrM+*}u5Ou>I_3m)_I+G)g@!FHd`?WWXQle^B*Nz%R$fFF2yzYX1@%& znq_hR3E$*xkM~a9B7XDi9@eO(I(nb?c6G11Cw8D;=ib+SZ1;R`Meo#F&~swzk6DbG z&Mz0=Srabg{NuN5)zLLdmA5{KXMT9L)v3aA&x|dy*2b5%)KA#v+vvU}|Eb{#{Y`u` fYv=zJOkh}5ddYQbP0l+XkK0~$j5 delta 1207 zcmaFQ|B_F!Gr-TCmrII^fq{Y7)59eQNZWug2OE&I`g5~rqvBsi1!HG7Lsvsn7b7=U zXIB$LLq{VcCr39kCucKbBTE-U!^w6`G72V+CT?!dmL{&wW~PRQt|pdlE~YMSZjOc) zMkdC_uI7`g5Q>a(D%!@B5JSj1C57UWpwu+0l>Fq<+|;}hPZwLIirfOdl*|+>LV70` zF+0^~d~&d2U|^o<>EaktaqG$KSPzjvi8lM|M;%O*jWkq0IBBRXnsO*2_irapQ^012 zd}c?bT_5l5;#uh7wJKUOz)PviOzZNRr2!mXO-(%pswZ!pYI0fnz4ZJkwbxeG*1wI@ z<0>4E-!y*yagB9x-~E#n|9{U^(WqP?Go?`|fQ9QoJ==uE=Vr1p8gSY*85%JCdC)$w zTO_?Y>D83mNhh5Om`oaK6^eU57mL)~y|>{p_XE`(yuS{lueN%zX~kTx0`VHAxe5Cj zZ)Thf$t_tmG5t3CCC3}wZ3h%AgqEk6RBrnl5_@_!*F)U}>^u!zo^e`NOshlWCn?=w zxz{M>85XfoE5mC0 zJ!i;&&rQ0&C2>l>wCFSDf2JGj*E#LF&`~gb*2NpPB|ElED-c~FUSAv3AGoelt;X+* z_wlSldn&6} z^UZ)gnu|a9v2#uj*m1(~kgG`jy;lkknWn25D=&`pe<;Jw`Fz)r$eD{jtZ8mZ*OV!k z@Ijx;-^$~McI$Cj6&t^Y+xdj#7JpdL+~ThB$EnFwbXR*{9oOclWA7Of>kGH33simB zk(zosW}acunKwVxHb0rM@YR+b2fn(l(NFf8Ua)rsgR+gR)WggNmw&u{vsh<8M}7S? zyY(ACY>M7tkiDSIbc*b;7ksWlX;vm8cGCaOdObY8AYS=qUC+D48Hdhf`lbaiK2^%* z^lu2`ZHYGACG6HB8Fst$cEmR6O?xNS3FLM@?_tr7csot;YI$d91)mIaevZoNeP#(I z&(Cle8!r&sv#m2nHzj@1+?157lloKExXF9eCrA2m>{)pHctz{X`40?s%xT*ce!%fW zow>>6?u8Hc3+Y@<-TA-Nv-YeB`$H9%-$|7dXSP-!tPhyDp50LPD+rh z3!S7cb6z#V=GK~D3MYm5TEA!J?fKADonXi~se4s!++pGO?aM>8WtzKk8$#FIS#h*C zJk48k#{-*hUQJ(b)g*1oSsdmzY1^ZXryBlO+*g^n{ZZ}Y2lgx#`o1s1_S7@+Fzj!= W@mca<9V4(TV(@hJb6Mw<&;$U_mjqV; diff --git a/TMessagesProj/src/main/res/drawable-hdpi/pause_g_pressed.png b/TMessagesProj/src/main/res/drawable-hdpi/pause_g_pressed.png deleted file mode 100755 index 19c76b441c38ac1dedc1b8b4dd1802b2ee2670ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1902 zcmbVNdsNeQ6s~0==$HaBP(fos1eK;KZMCrlN*`;1vJOx|5iL!SDs8$nNT}iy$C#oU z^9k4^0^$%If)6&CVg*5bJ5kYzc8;m&qzpINL|Llf_J?OXXE{lJkKFJ3?!CWzPjXe! zAGi!3JDf(NxhUk47-|&QA16oZ4fnO-)G&sS#uKqv3X!44QJM(Bl2JgRQ!heeP&JbI z@fnmtIHYLf;)!@=6s*B?OtsyHN$Ly~nj#A&4QkC2lmL>^MOwX((RJ(u1JEKu#vHDa zr8J1qRIS{Eqp_ywIE`tEhL12pLjVB@Qv^DcPy?hcO>cxrA>$PSQdP5HcuFUx%PGD3x!B^~QljQ7HpSwE={fEKsMj$MwqENW`FjyYW_QV_c>I z1!GVnmX2$v^GNX>1XH>DcOknWZgQO5w z!j?(JQVs-(*z9nTj2ABE1+)1Q2pZ&g8pPYe|GoZaV{!uK0TT}(wr*BH1TD)l< zR8MsbPPNA8UG7|}_^^BEA`1>f$P}KZoRV=lCRbk^ZMU${4S~{ zY=MJ_Vd}nZdbd~}Q86b_)shpyp3;xxMNJHN6y$rZIrL!5Hovm2>pRcn^ShorIkN2H z3(GLVe0y1lS@+CbbLWg#;W1DV!3-Eyw##euYI>CmvX8eOa7wA4%yK?0qV;j`{A$6< z#GNgN;;Tm$4RN{aWYb>>nRoKO&qi|jm^w%AybxPs#e1e{aI^l5BW0$~i%%UspS^GOf~UC?N)pFK_U1p>wlOa|v-`j$RV}?F(L-4~ z|Eco1$?CH!Nn!u*|l?)7dk&wpnVCj&AQ@ zSm~SmgMCZdBCKhi&iBcN`3bviyVqxX26_`;*s$RjYvsK&*Oe#w38dC%OgD3>Eqi@- zQ(#|2IM?IboQ*?<*Ua_5OSgt4m_xmech@d@*zo;5?$hmUzx&s8ZZGaUR9pYstV&Q* z9r+Ufah0ptWs_~1*QMSLL0H1eQJG*?g2u`{Dpy|%%Uc{U^Rvr7x&G&f)PUvCuiJjJ zTnsxQtA62iyZm7Gj-G;ZyVkTwdG2P%{bQYuCKKg(PQjH&9xbg(n~p3ic`@;t+r^>I zv#Q`A--<4`uWfEKhPLzNTeEca512b#Q{E5rAs>xugPWNRixH$X|0q%^n{eph;}Lg9 z+zIiYa;}d)xjubdOFOM;;`3ATdt}N7EB)ds&f@*I@?REc-?Joq`g>!KU+{=-!O0}U zul7QzmCI zYStI{`daxHWu|B5CFZ!~Czs}?=9PH5*eX@z7U-p9rdSy`yEwU6xH=iRx|z6|8X8&} zIXYPyn>bopm^->Unwu#p0969bz^2#9+|Aj@)WFTn$=uM;(ACt^&BDym#mLpr%+b=! z*w6x~cd{;%qyki(D=u}De=!z4&JC8{RkL zexA{(p7poa_MBXD|0eevb(@W@#oiUJiA}on*Y?fbH_dNq-zYI(uQT?^i1T+e`e+yJ^ee~O`oAIgHKA$p&r{>F@mcGe;!~dqZOR=T7$>g5* ztfem*m_mOxZF#O%CbrZsa+2DmeJftqX9w{un)Y{A?X@HOj%9qd)2&?Tt=f^ZauPF} z^}!I%%9qpkq|W9&bi7U})F}35^gi5wRei;fI>w%;LTlk~~TEE}^Mb3AwbOW@B8OkKL_ zewe5Br%(T@|DW#nd{u9^=FKdX79-^oHX^G8zotE?=L=tu@m{^kcaqhDe5ueUF`=yv z37?NXPY|$sr|xCr#w>0YzVmpR_8FJ0k_y*$%d9x#{Op}q1c$=|Rx~28TVRmKP)(_7qrN&~WJ4 zA(O$f&}#n|;d;N=VwPR2tN$$IygH#d+j+wqMFHltB@GSPHegqAO|x}Am!!O;S9mQe z-)i3Yo33|Eo;jN)&8t1#c=nN+!i(8#EpI4>~QnezglCNdX6LNeYYi!aB>MZcZ#gq zefr&2#g=;>laFT@ddn=5*m{|3atXWhBgT)D_s-w4{M{P8DGS|BiI{V|P_EX`>{pBm zy&Tl`F+<)+=$!ilwsekVIvj~!3P*VCB=26YIJQn9`=~kdq;%)TJNVe8uSARs1q%SA_3j=xK?nSWnW z(!Vm{Tk1*gLld{9m^T`R+8)+Rj`uILN%p&R$Kw|B2G88sRkwJLd+{0CE?p!+60 zP58xxEfbzui<*bl>M%Hq`R!ew7(VG+$T}_!;UfJzm(?>hWKW%~QeoWh`2Irx&(sqc z&GMHHJlvY}t*A^cQ@!lj(yV&*w=c}6w{)$zopr07simqyPW_ delta 1531 zcmZ{kYd8}M7{|@E+-7w$T4%A6TS9EdR>EduJF-uM0T`@hfgKF|OEegdv&>0fqpb<$AXsVXNY zr-65Nbl;qZ|E(>`n;rGFKb)g)1b|f^H3V=60WdBVaF*LBZ^n(4hv*@(SS-#4gLbgC zLR(s5;b^o2(h-itVXbj+3nbibutAM_O*U0-9wUePi=N#c8~w!wKfVSkCLv?M^?nPxj94-0p7rxNq+s%J zLUYW!%tI81J{lIk9G1uO0rTn_6leI2Cup$CQ8|>!hF?{bLF>FG+j1(4H2(g@s{y@Z ze9TZ8Dn?1%ikQ(<_jyF@$TZfn}5^!~=J#am@al~tf z#dR-z3e=*x&+&r4+)zq3_ru6ihpo%xrF=-J;gQ;0N*4)a;VMJlwspKfEm_B{uGH5g z_}yG}HYzn|rM=eB_1$)ecfewD(aznZbR>}jI2~`aRXuDv=D>v5*7ohH?6JPy6~pT!!WdN9WyE zLiobxu?sSl^7uTP)hfgBay)EI_l0pL@I_77HhL_pf2Ad@oPxGWNz6c2A)wkM-#hj|L(G^2GU~UC zVm&En{j8m8SrOmyU5(iX1rFuXV)NiifK-?r0dH=605rucG${T3j3)S z)2M|f8lv_rdG`fB*F=QN1fyue&pzg@?b!(t+$;nt@b;g>H#}#Yr7s1QKnF22izCb? z3rWdvxLwDVz?DtsuNQ-cdo~@vH#%-1x*@2@RGzfaQPcSfYE0Z1c+%@C9QiK};xf;E zt=z%w{^x*Da@)Me>k5`q-IpCCfW5|B(Qyxg!%0JPsU$>ezQ~NxNpm^J-c|t-j~*_U z8l)4bi+j`MVd1?@mw+>^HU4%IgYtn<V3Np|6ZQ#);A>`xle=02U?3s9^sq+Tn>+Qb*w`B GCjA3n)Wcc; diff --git a/TMessagesProj/src/main/res/drawable-hdpi/pause_w.png b/TMessagesProj/src/main/res/drawable-hdpi/pause_w.png deleted file mode 100755 index b3ba2dce6dda59a94bcc98d73ad9f01d1ee4cfdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1852 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 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/pause_w2_pressed.png b/TMessagesProj/src/main/res/drawable-hdpi/pause_w2_pressed.png deleted file mode 100755 index 7fdae4f8abb8830780e1515223daf970162dfeb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1888 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 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/photocancel.png b/TMessagesProj/src/main/res/drawable-hdpi/photocancel.png old mode 100644 new mode 100755 index fb7572ece09e8d43c83e85d1f299aa4848dcb52a..06eae4553120e4c4014116c2cd78d932e15c1a7a GIT binary patch literal 2292 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 O`*<>a8TGWN^#20lw%V5f literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/photocancel_b_s.png b/TMessagesProj/src/main/res/drawable-hdpi/photocancel_b_s.png new file mode 100755 index 0000000000000000000000000000000000000000..6c2bc841fb96fc93b02bd0181e1799430f758f3a GIT binary patch literal 2319 zcmbVOX;c$w7EKfo5C&S2s5nr@1%)O_g)Ah^7P80|i2+3s#ViGckW@&DPFNHWH3GIE z2rAl2w+M&|xZ(n+45AF9BBL_u*b-@6SO#PiP!^}6;>-_E|Cl;e^(}SpearXWIh7?? zxx(6Vz9j~Ou@3O(2+`5s_?Vla@74WhSD?c@gu50Ag`*LzNDX0FQdkTD0SZwJB!ooL zq=Xj86N8x^Eel(VtmOwYC9r}ZGGYiig$iY3FrGd-l}I9o5I_vY$dq3Afh$+>fK2Lz z52x};d=(ptmH8*Dq0r=&VUlFIgdxTIcmtj~CMuwS5D}nL#49ySofrO-E)$&_w~2V* z69kca;XgaImM;L!li;BgUs?{xKmgR4?2s>qSK}{zQqMeeq6F23*>RxAP91)9t=8{ zOJT7IDJ9U9T^VZk3zzhVTqau$i4a&F2E*}F6(ER(5m*xos{nQ= z4OkW~Q%Yg2X1VcrK1a)e)UqETDNhY6fKT~l%D!Qrn^$Fmx z!gP=O4n2YAthQ?o4_O}}3%0P$wz;oc0qptfF@JoSr`>GQ-1cjkS@4I(6O$I6Z!8-I zag<1t>D%_(+U?pC!Tl)`ufuMPs91&m=_BX`>F zt|zCrTM)M&(I46VWYKsTe}Yn1@%(JUsLQxRDz-u5K5CzHa|3qd+EZ1*b;;~O*B-uQ zkMs6-*AjiL8gLtDYNc;)HB>A;xp4Gk5xE>gb=^-t@7=<#Tex|UIl60WF@kN=4BDSk zZLoy}K6RGfmLCt}O4e9Q&l{M{dv$;LO|LiHHHeGSbwhu~&TFQ=X+CwYk5O@Z`#%aJ zBkM6~0#ntv_@q-@-x_Sa*;U+Wx31#Hl;Oe)j;B{g%%caq%Qh9Ch<-W{TvXCM_`*fs zRlSeaOPz;pqBOXPHg~H79+!0#S?29KReWr?N&fiF@XZw5V$=JTs>jEEd{C7aQGn^G zJ`;Ah%%aT+C#b!U*ULSzD*N)$X)gB#&Dn*IFvo38ZBx282-AAn-(QxUL=RL|1cXUyPViAsP^f{xm=#DaYzlcDw=`qk<}!XcDP~_fAPKeP?NZXYs>jne!8@b_eD0Jbk%2&W!wD$4CyP zNA0@^$>};=)jH36H}<;y{s?%~etz~9?aE~Ar1%X7p8LxCZzi((8yAT=#9Kl32j4mv zYD>q9WFgrNg)_3??vq!y5$Lc4-1m~;! zc1+%Ew0Y$@9+k<@y8a&U4VK3^q)N?m!$I@BWhE(zR{D;~rg+5?V7M=&11xc0=G7%i zuM<)t^eWzxO;tYTw&fdk2i;-+JTIpsdBL$57fT?!wMyS>-bU(-wEh5`SF$Ygqr`T>|Ml`-9z0T@->&53sNNUg*_WK-^%~@fxS^n=lngr!pV?k=pWL# z9*p}gCXYeevgA%~{@!g-hRyl6<99B9+P1&CX+qS#0tyZpJ=OKD{ao|K5XtUSloYMq z`7>SDE(IMtsC!PcyQEY;hs{#)-4G{IUNnN=1ale>^e5EuIywd!rZ=p)OtP6K+{yW< zB%(}PBHk2rEh-=>hfr0#4nO=bgQWQQi|mTag;zsweKX5m1|*%f>hM-QT-?8Y;^dge zy`*&xHLEYR9E?f}N&>Q9oU?w`_p-HjQZemi+?C1)Gcx+^|5P$oYazYt*m4FQ6{KS^ YFep57rTB+%<1b18cO|FFZ`0QQ0N0zqfB*mh literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/photocancel_g.png b/TMessagesProj/src/main/res/drawable-hdpi/photocancel_g.png new file mode 100755 index 0000000000000000000000000000000000000000..23200be5d8f046cde659f496389b705d761394cf GIT binary patch literal 2424 zcmbVOeK?bQAK!As5lY0U!_K@`X13XEJ7~69B<~wDFB!X+#a?VQ@ z2&CoaO7T^$uFH@5YUP{${K9tSVkmK8Nc;pGiIgP*K+bGIH~@9yv33K#0E;b)=>{A? zAQcXm#*i>Pb`l~4JR8=sj!isIs6>N64%^~|tcWN;0u2XtbNP<2*`^j4l*@L61z!P5fTsxsZ?qsMcW8OyAen{9>2_iLcx_9aIuUpVa3DwV$&4{ z3LuUUafK4DfDc_}WQ7Z2C5|wqr=LRL2|YZ%5c9>K6QxWUBAz8gAZ=_BJl=9#AGO62 zU*NxPd{tXalL-NYFCZ4giXxQt;Fzv}mAU(8L(7UvZwOu@uCgesXo?^rmIv@9ZWKqD z@{0|d%O=>8C?pEbg@kgU+PPqmNIc4!gh$&s<8k)RF3$GY6^^fA(HMIy#f6HZlCWqb z(glM(L>dEf-mfzKk{x?18M%~i==`$soB&|~pDGd$`j zgQwcjJAYGH@epr8|I_U1E;CLLXw*V$z;`mzTv5?csdtM!2d)UvI4L>N@!`-GqSs}U zq1@o|Yww(LFEKQxlN&>CAh-?lK*E(?|oqyw);SUhIyJIrF;Z zb^96&2mIJQ$x*G0VvoJb^k14mJ=e?q7Yp=?IBvh6I_v+_*+~jmX6`7(tFL=g zrTABYLXd`+CE* zNnzUI+{=~w9KJJrc6R)>j$ih}HoU0W-5kp4YrWlH5&bxLZqs*8_jBxu2P&PjS?u2 zG8_`xvC++_jTO?CGC4H5$J%vSF3=}tkanOq`GZvocJ8K6X9kWpJWQ+%)tuhRG|H-G zmiXo~evRSFg16%eh#Fv{JF40@@tofEE`)Bl_ROkuOEwzFAQj37vYxC;57>I4?j%f0 z=sw!m>Q>iEFS6m6_*vo#oS#0@C&(|9GZ`VW!%tp)Z(Mv;qhzDbwc-O{kG6DLoiFyB zl?RrbrFy)|#m2Gih-Hqbbmz|5gupd0feBSz8dt#m1 zo+M)|QqQl-%>Dkiz?vG>62xBJ1rcg*{;bd2{r8Bg+sE&jWJg5XFPC=-Mz|%X1!d#K5#<9EdA#u#S z5oS`9h?W{`(fhO+?s}-TjXparmu5WI7t0l4U4?qdX97brr%q>& z9z>Y$zutAM+3?D&{;>IJvLa|~P7#*q0bT0LAG>ixzyRR{<64r5s8tK;`iT{ZJ(V-B b_kmY~`0WPe1qq=o%l|@dE}oQ1QdsKWKD_ko literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/photocancel_g_s.png b/TMessagesProj/src/main/res/drawable-hdpi/photocancel_g_s.png new file mode 100755 index 0000000000000000000000000000000000000000..a8aad3a0e088e0a33c24cce5726e7400e0168af1 GIT binary patch literal 2424 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 U?%yT6R{jflF}BjH+`m2a59eg!CIA2c literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/photocancel_pressed.png b/TMessagesProj/src/main/res/drawable-hdpi/photocancel_pressed.png new file mode 100755 index 0000000000000000000000000000000000000000..3aa1632d8442cc33d98fa4e70a72931632fc79b0 GIT binary patch literal 2304 zcmbVOc~nyQ9tW3lNu4oUr6P13a}opv1p^Vmu-sBm(-v7SiVF7%S4C|>ORa3|y(SmT zSJb4YEmo6R*;rQMt1&VyCoL<{Cfk&jQ#M)6rLy<_=*&Ck-E;5#E%)>Je3#$%d(Pb) z8NS%gX0{Cqg|Z9bvZIiZYkI6EA#eWEUlt?7ESM7qM}rbLOP~NyfnrbyU_)erBp?b9 zh_ll#0gF&5bBUA}2gikl(nO#PFEC;7Dj9^ZQK&@$Do7wo1z@ZYNRrCwxY6dbIIL7m z$HkJvyuzR$AX&=IQ2^07;XF}Js)#Da1u(FSR5V0D2EYQWN|q*9(o}TZM_n2+H*FJe z*pCo6m5%%5R9sjjHV9MzSTf$*Q{+V?Vks0n(T7Z-5Eo)eUPKbX3%MztL?0TNLL>QN zKVLY+nnEn0MX`fF+d@`!TrvzpGy)+jD+{0HjRzG;1R|A6HEEDYo(RHInJtF}Do?r6 zWkP`sC`Ae>1WQ3V)}$y9f*CL!hj{ua1Q`?-_C;8({G2ExWdxM~A`tOj1ewef*GIGx zjspJU##hlwUN!^}q5vhBp%5YGA#s@?Bf0x~Lna{N4J|?;MGi%f#s)gZ`FF3sL|A7*y~;Fm0j&B9lQF zR3?KEHYl2cb&r+G#bB0lf$4ZYMau>h(o8@ctN>-$kNKrZzheJ?$Nh;b{(o{tK%60% zisQeEWnv4dK-2U~=_89T%>&4hj!_`3@hIFHheBC;g|Gv8s=g;x{Sg@cOx@M|YD>cL z8x&8nF5YfLzU78)(@g8_vwy6)F+I%sqU|Q)DlYfT>xOeo;lGy%vD{k~iQ~AuC0mcz zZH|EkScihE$!*(C=r}E>84guPetYa7^rGsjV)^4J+NRbLB+{pmO^vJkDN)n?L=sAxTiGc%hi_$ z+V?eCgKbM8M}}>~Bh>J!G3u;TxQjm)G`2TZU6HY?EIl}Br8=N=`86`re?ao4+d;S) zve}ho-ucd$-kU$}s;hZDFv>H_v067BKlS}}yD^dGDQ5CZtMRSw_G``7KXlca8(-l0 zcjTLR!EuQ+baKENRu8SswTC;3?sO+l>6JB%N*D!XI3Z?^({F>$;;ZeFL&_Bh#DJFYYBq{MRdO4NW=wm#!w zM2)#Yr60tdtam72mBy&KP^ua&TMBaO)P9NUxI190L&?RnwC2wpZBKiAR~)9cFT0s0 z5up0;PFEP(Q-wJ>Iri;?&wPst3rqNXe(y;4Gq9+rXy=>d{r&wB9u~)Etj^6%nRBuA z)di1|>$h&bj2F@n3AA6Q)8!N#Nejz@ zL;vcw0z>YYREO!Z(D!{~h5i+N_mM=CVtFZaZtI@+f+>o%%sU=#Qj4N`_h^m5wqS@@ z)yRur9ylLV8W_{y;+joceu>aD)RuQBDtmsvV^L!$^9S1bYZhIO=ywNfF*;0hzau9e zt38{McR`(2o3J+hqKXF9-Gy6+8;JsIbZu5t@YZJF2KytR|N1E z508$nZ8umP{Jsb6wdS++n{mYnu&E>Hj!^N{sM;eZ4I38N*Kif%raXtCsqm0UbJU1IO z1J|DNzo*vM-kDv+n6A`6)gO=;PVMgZnp^s+aGIv~m8DbXgJimMPkE`_aAraGPQNRE zl0x46G1+|5u+QVUzw`**?DHV{+Y#-)jB`}*73)N`Rl~U~Cu&u|J%<0%Z}+c+n%zg* z7LKCyrJ7p@A9Vhy5F%BX%juX{$yR$zdABkr5$<0c lab=4u=8VkCS^L3aChEZvUG1)v{wJn?k`PWf`!Fjp|1X0Qy%_)i literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/photogif.png b/TMessagesProj/src/main/res/drawable-hdpi/photogif.png old mode 100644 new mode 100755 index 0033e3db69a1b132f4f4d64742b17446959f127f..2c71a64202762532f7952076a9009e2474f19a02 GIT binary patch literal 2364 zcmbVOdpy&7AK#E`$#aq{mwt^T&o0KyEDN)-#k4lJhF`3OaSyIidyJL!|gyNu! zRmaewTp~MpbdaY=rM#S{R6_JRrR(!k>3RO>b)MJj`MrL>-}n3d{66pZ=l**A_OpWg z7a1=%hQVNq7<4KdTIq9-p+58uc~R>REeJU+T+R^-Ln(kjvkm zbOZE+!E^<};Ba|3Gmyj+i!j_d9gIRGfzU9Rrfix ztH`&Kkzbq&XR-iau@nT{Fs^8xGY$t32pAmRjX=Pm02gPR3)UIB31}Ri7m(Ogzpu8S6B!vNmrF=kY)VQBCdCyamd0Xn9v&WZ94;nCJK&))nVQBvL*6{3vcT z9FFEjaVEO?(I~D2Um^uZBe>3E8HqAEH<1U<+Z94~zhY^Bi6!|;L9SdZ4HkshYsI{2TX(}MhcC_{km=d23wH8p!x(WhQ^DTfmZ(JTCMt0 z+v%jy40=mz#aX&_fFq5vu|UHHlExO5+NBdK23oUo?W!fd#VYAYe(gx`4ZR2>{}4>; zsllxEiz*h0?3*d;4b2K)?3h3uR}cKTyhojKcQ#-*cl7r8Cspnl+k*1h(zpLfzU@iKS8BysC)vLBd(GOQ#i3%5oWavKH(7Gc10qtmt-ba%wrn~fq z8<1tMTT3&o9L=xVZ)CM(gtdJtvN7}XH%wa)$(79PGzn4`#^oO~RvpRs)%Z`2FKFe<4)pp zqBIpRPv|oP4izsMu1Nm7v6<5FtF-7c_>EbJ8b5o^j5ZOe zRF!Evm7ZOWQm0#~`wX)OHIu=CtGgDI;xiA%D=|idV<^6NfqdMKs!i|hcG~0(Z?pG> zTd-;#<(-N^s5tlw=WllJe|r8vrQ*kb_Vzw{F*zxoo=w}5*3#6}L0M>6*rb6D{CyBVKHh0)c-Xdm05&^4H8r&p{o2OT($Wfn*z}l{ zO=OcU7+BYzK1&AD2QRLwUYe2-h20UEIS@qpdEc_ zYHB(R_g-vr)xeLTcIZ6gG}$y}x$oT2(9lG6n-6y^EG*0)ie+--U1w*f!yAq>5X5vW zb^7s2)iTSKmWb(h&CSi1r;nGElx$bl2XIHY!c07LkIHKO}_oK{b&!1~iu4iAAEEqczg8yYe^-BjoEgL7!!U~8Tc-9q2X@l_Xi9wy+y##H#mpf z+U#VJ0Yx5zwr_rpmYyy&Bk!Q%7(1OV^M8qkk381swmIBmh_zOuu3&i=J+sZzsSn@G3UBaFh`{QZ8RupeIV`UagCtc# z<&4t+En?T=cF}FGAAWiQ7I}vkmeNbmqY>~M{i-(zovh?p=0CDyI2Q&jKDL-{dMz6H zWomrI{T#(GQnD@1@Aom)^*-}eq~jR{#QW6DKSq<9@jef;cHY#%^}QsX|KmgG;Q0Ea zR`y}@%atL|>>4Elhe|fQ4A2sn4``IB)Q)&AiksUJ5`LL#OXv)B5eABe5A#!KP zQX5;xTqC*b6kCJcXuD+J)6^qR?mMq2+r7XNHWo8nS17v`F!w*hpaoIYl<16q1MQZ} A^#A|> delta 1606 zcmV-M2D$mX68j90NPh+$Nklqa zU}myqfJ^WJ-tdW-5R&p}cmUooyeuIk<84f$#$ba!p###*DvU5GI+bk+lnoIaI7)^3 zedU~bDYxYoPRqT$_n-WeCcWIt`Q*aBfZWC z-UL4fFN6OCFM$`qUhp=re<%wIv5Y zFM{8v30F?S#D6{n{^O_s8Ne68XA_j{50rz!Zt%BYe3?+Qg90*8I3|+3GEqo|g8;gy zpgQL;I!W6a6QDv`A*)4aA&Ls60@5eZh!xYw29Wep0O71Wm#9y4zp&`rRa8y{W)>CO| zX~Dki_xpYG^Ye3Vx7$-&TRSQCcY}k2#bsq>#rQcdFYku%yNQX3Y70op^T)=}Iskyx8X$FJQX0yGDURYQtu79hmyE!^Kx@!j%pkx69o7jCVJF-dn zAK*T7oSG8^#BE8VudmO};H4qtTd*i~B~5AbtgCh2E9?zFtT9Ly!z+1a_}<>kqeu>VFt%RKHhG&JO4pMSf$ zx{_sW`!59agvXsaIy$_p2EvgBC#_=FVRU6=WMnA>&?4p_Zq=;A;rOz*xA!AVz&L4z zdDkgOsvbyB!8}(~RAi~FtgK)O8YZ4{ucW;Uke|nz5Y{yL`S~|mTU)PSF2YGEo0tlP zYeO)bzuD5#GACm=eg+5&#Ybf4$A6hzx*GU8PF|s_*|R|GJD<0OVqe_Ba9sG$tV-iy8dD0Ih-_Yg|Hl z4AHYH1cdrYD^+nKFM$mVz)q1gLYZ;_)pVCe@E z9902+xK8Wjc1s{jB107*qoM6N<$ Ef>Vw6L zO6rv>BFa)x>0T)!b4yZPZAx9b3U!Z4@B2s3eV^w&&pGF}oX_X;U4Gy1^PH?e|K<9+ zX1V|X==*qcg3!@>`oU?T@6h2h%hACU;f5i>(ikL(FNXo9P#O(`K4N|>90c=)DeJDm zbO6wZ5ru>yVLU%bAQcn%(-=asScb9zfW9nQ#uvoH2pA2=iX;sDtA-{#C=xR8tEfB@ zPsWDhMBb@#I5^cmM35RUa2Mj2d4Tj}2o(^+2p>!qCrA`fG6Vlf7eeRL+eAG034+8k z@SmLu;{}3jsT>BW1ZO7!iA)A*Gy>U$N~4h-K?;dXA(GIW=0tXZs5FS;3Vylps5QAT z1`6VMeX)hE82C5@kwHXaQc@Bj$(bOP#}diz?(WkX6p9mya8jg55Pq_gL}4?dz=0J4 zxk!eHq!MsiksmEpA`Cq0>E{r{G9K@%utf1CQE1AD$$S}+Odt`(;_0|Pp%q9F{2w>I ziB^Q9$Y5d+tdJ_@0`xp$Y-Y%4?*87;G!XR$3XqG?L*XZIqynWFmLNVH1|I!F5Q>Bl ziN#@Y+_)?X*UN=VC6nDLOqRQ|3)9`rmC0qg(q=Ti#dUV^a&dNZrFpTaTr!zUWqL8$ zUal-Mjm&a(b9N!maD5~Sgf9`mGj>I&-7j3~-*O?g9OffZd5Bb+FjE16aZ*I8h?B}d zb}$XJT_utTrAZ3A>ErnvEeDp15@Dg2Tq*`X9>_A6)8(OFp6}uPQ@*`tXbFTpnEqh=hWGX;JI#KW{7L4 z2rS7?3zFIU?RfZ)Ev(2t8L>Tm>gQwX;x&mECVakMu)gN`yVo)Ozr5(!n^{HKGCa`R z{CFU!Qh!qS&TK--70WG#EjOA2S}-Goabl&R1%E69pX=RDbga#8p$_!6ghu%m4ozsE z*X##~Kd>WaU zU9E`%0MVM%+zC4A{B}$<@=A_Poj<8FKI`VO51I|4vjT%B*m1#b^Y>Phc_yAgHV-Vs zISQ`7I+tf>rz&qbWar|zLhd(i=d^mIisZZIC(D+|?+TypyCy8ZYLZiQOzwPb4fi@O z=a(WtzP9X8-cI|=>RzGB!t9ClnGgmimu(N8+V8~KycXk~5(GRzxaSNo1zlC!u@~PR zFwESf)H!n1UJIuafy^!=d1Q~PWEUstWW?%7nJ2E(J)(7#-~i_WW&KfkSJN~?SdT7D zlu!?DUAyw4_Gn?tLMC;Cr__u-E0%mj^=8Mjg6e&bA6N!1O-TtjaIU<(Tz4r1^%Lyv zv-^p987%F8p6(q=Y}lAKHB~roeRz1d%l?Xr3ax=VjF)sCkGK0nu0o;sZT0Ha+Toj& z!sz9m#~-CR(`bpM=gyrYf0#OZmUgSF>x>7TKFOxrCV#ZqcF9;@y63u58~F8Me0taY z`q1*|b8}tTTtSG5IX1O`3LfuD z3C9`evYV=_NBv`Chm?~I6%{WXtqNaK7la-Tv1fVu9lF?zYq>h`!OGP1b=&vO5LACx zt*-a)COTlFp`qEv#_^-BuCBd#@OPP2>+}K2(DkCh$0lCo*wE7eCL@bgtK2=;K5vt6 zRlcFBG5Xy>Rg%!LsPK2wXGR#yO209;{LE4y zuxe|HSUem<>s?_x_;y|8d)MpEgKpc`uL%zqN#o*dZ;q&_>8dox8<~QWQKSXt(CFCM znwzAO<6*6nr*1&*?xxS}dV6|`4;B|UdMsT!0UF^fJc;#2P?o+Kruqk!)fo?mxA|h) ze!W}oLk;FcJh@X;RFqN>L+TdHN*A{oKR2)un!ajlYqOfoG0&j%w70jv>F&;7)hf%$ z+O^)c{NVZIDCWG@fW#9E+CQc)%JqIUPaAhA=VQ)-!RO0?>Smt$v>AQQsL^JbisU3U z_ls6=|h?{LH9BvSDUx&9mhJgqXX0r zDQ!z2)gS4F1xNL8Oa74NEsSRIY-q b2dFRrA@%-ATebD@^e>MO*Pm0tic0$nSWD83 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/photoload.png b/TMessagesProj/src/main/res/drawable-hdpi/photoload.png old mode 100644 new mode 100755 index 2dbd58252a7c0509ccd2dca924002706ffeb2941..57c2e5240f8e882a6e18dd8c46fea022248c4cc8 GIT binary patch literal 2087 zcmbVNc~ld39v_lG0*Zh@RZ!j-M8M`gAjBXEIRG_?0V)-U4#@xka*zxVvhL5irjDSgSib@kqeAak{2&$C9#0_jI zO{x>Zsj6_39*#Ce#wbkbiXbI1WEIFWa!~>`j6k4KouM&sjlsm%yj*l{-KG-3*CI%I zFmcAHIB66p)aqf7O<|H1G&&s&2%yke?0^6|31rad3@Q!11ITn1mmR=m1cGlaBC1WV zOyh)UHWT0^Q<2MVJD zK)($tjZ&Lq@VBOC##<4rS7pOWiC(J)U&oiLdYAtH>Gup)`TxX>iW)<;7RP@T%j_0f zf!68U(nl9>n+MjQ9ivBEqlw^>0RXrS5h6j1vF~YxV4bVLtv#hzMynS4mh+UdkUU%oJ8+s(!>S66Kwu%euRr*w!tmu=kk!Q&oT#`-xicgH*86H7IX zCq}PpR=yh8^5K*0q4w*C$4krBFWlt+5O~Qu@A?#WnVHJda;M{} zjo0v+hP;Qg3C0BR`}jxGV=X_mY-+K8P7TCxv6nHIBcnWg3i+q=L-Jp7mN<{?^_y5e zK^p3x^qlgV+G{HN7f_8$c7E{f)ikH3)s^%92|Sr^EWw=l#Pab+E>luB(8;)v*IaR$ zV_cLlU{Cl*7w-J-3&Ibd^Ip^xU>&wTy9-?$B+q?7ZK;-EF4|od3houQR!$e(+IkT? zjQ=V5#!^c|GQRkSBRyfv*!t9xKIQvc>X?N^nJd;9?^+ah&XoiG8SGzvJ``O&`pK>; z4?X-)V3`~?eB9JA6~ zMP@Xtc08Nv!8L5`2ZPDus`<|tuos{l}T@#N+QICw=buy@Z~N$>TUN?n_NMX zZ1XEyyK1go{)WO{S@oUvD8Jvsd%RzaxL^4(Kd)qxuy4`c@7Q~XKZXXG7>BNXS)q`3 zrM&Zz#gxUb>F9sFxt|v868V*X+?wg5%@05*xmi$5P>;sy>bCS^sQSR7u{ zkXJ*ZesgdM;iObw8*><^#P%E;*i6PXQ0Z~QfQ`G)_J5nlmf_d9JNK;XY>_n*{CtDr zRus9Xm$nD`%-=b=FML44K6;Zis;VCG^zqCyXxo{FB_kG zF`3M6&Wp;qnAN`>>P)JOGnq_(M39T0*BhOh7T`G@%TD|5is${g_$<2lo4m~kv=Q`G>f%caC zuhV-8gtKicJN@txV1bF=jPi3|(!OtMY%MK} zw(`jntIm<_E`4V7;QR6BB^_Z8T`8!Q{syFc_JDft-k{}v&89l;k%RpJ6fduLh;JLk z-0CX6wj5(ozf=w_c>JmS0(mNqubDWfOEiu-{VGAah8svXI(#u-^2$SdZn{Z2zm{f% zhj^uQ*woo8Zp05(KFZv4YdpTc)-|(PR?+;uym;v!J17s>w>x5|JRFZXUH1t?4$MDO zRcIFCPTh^27Mt!DA6IrC*xqztckB-(UWbb8fA@Ik?q7;duKvPJ?Cz_bUwH*H7qCk_ V#cWBZOj>{45#mVEnb6H!{{p)6Fev~4 delta 1205 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 Y=3eJjW_19YG=Cc$b`YzX@t2(608!MOng9R* literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/photoload_b_s.png b/TMessagesProj/src/main/res/drawable-hdpi/photoload_b_s.png new file mode 100755 index 0000000000000000000000000000000000000000..563dd17c5fa697065694f32b2e8439ee95f5cee1 GIT binary patch literal 2200 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 UliZ4d9KRe~b|mXW=!(q00Bd8QI{*Lx literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/photoload_g_s.png b/TMessagesProj/src/main/res/drawable-hdpi/photoload_g_s.png new file mode 100755 index 0000000000000000000000000000000000000000..027d0da085a2e5aaf50542b0cd1983555e176f80 GIT binary patch literal 2269 zcmbVOc~lek7EZ$Af>2Z_i?+m23I&odAq$BF$jTxh4FrNpG0OzTki}#m%b|#%Ao5Dx z5UE;_=Q|CuxIL?&C?Gtoq9C|D6%~rs3IeH$qELMk72o^A(?8yvnfWbqzwh4r{q8+y zN)qBD9p`$^MWIlR(NSChGDcaS+4jg=IC?Y^89ZQ~2u@VXVZB%jqF6Gu1jI%w#TlRg z6w8cje*r^LC>uGHB!We8u?(qNNf29Y2nMAFL8DNi;RcOZssLfE1k8X`Ox*a%GdL_H zW8zXMaY1n!4wwl=nY3V{DLzSRQb_4CTzD8Z)WARplprj|8kAWo9mBxHz2#*fbL%z{ zhka`TE10-scxey-V5w9BK&DWsKp>VB1dxb9$W6rqWCn%GAknbz zFC5}cE0Z$>T>g7s$cl-}gkcSXNYv}~1br|;t<4|;bUNM2K_cN13%t&#g2e{BO6NVp zzy)+!tHmJ4d398kvBs+HKc`ZA!8_@{8GA#@srLkZ@y-{#Gwa_E#0 zHkD3AGyss;-(h9{k7h(97^1Z}{-;=GwvY<6PCt}BviQ(EpbF_2Ez%m$L@yeJvU7~) zvXTt99`9L}pTKkg25Km)5L zfM?m7gXaEC6;zOw0A$YV+2~yTZvh_5E+M$|Nfxbm)tr|;zOG9&{@KI3mGq3Uy)U;B zaHy~dv(D8#@v)8te3 zd8qhFg9?);n0CsY{o4Jm!zVA(w(jqKShr#K;4+H}0!s2vW_eGS?6?^SY;fvHn&eHo z}xp4*jxYeXpKJbkPce&j?Y@I~ z)pc6=0Yhi=sNMc2xu_Q5>O|w|1Le)X*_v4k>dodk4dym{wII5C;e1R-^Uo+j?V^Z9 zgGPVT55C!Y+YZ)oZSXxpZJO ze8O{4pC-sQif+Q;znh+-zaj+rvk{vL&Y*PYkDb;I^AE2TD_A!ZZ@Dg8by0 zs`)*ScX5*MY~8WgFIg`19eS|w@2Vx$5Kvs-4A|eVpNsJy z$wIt2EiyVh?ezYlqLvJo&~x82-Lj8W=U^Ci=?=~N+XhD#zR4zTF$8wE=^*FIJ-F)m zljgDoEfK#0zR%kBm8qb9sw8cDSan@evV~i=B`}2ZY9Jw9R7pPO75~WJ=r=2>Xkbg{ z!<-1FX7}aU{ShSF;x(KX!-s8Za)!&==WJtzTqR6NuJ!(8an)^UEVgsIfPrgPps zE*FZ*@Xhlq;(VJwM#=n>WW0FuWRRDnfrPGYsN?u7oJ09Brm~>VL4AB(kg>Q`IO({( z)T>Zqrd=^LGSD@5hdjS1aOiV-#2S8s`mTKu{2OnH^GGwgA>*nec6d`vxMjZUG0f$y zvFRbB0+YwsX4D=+ZQTV|=ai!tWdnrd!>Wrtrp5<0n}$D)>NF@aMFSz<75W5S)6u4vV`PpzpfeX_{8^PGFr z;M0Sc4QF>%B^-G}_lvlC!-AQNMYqwt0k5u!)?B?pzid5H>=l9qLzt4(M;O_I=#jxr zOOtau-S==q%I9OZCJ*1MO7x)>oZjEQw(87sNo{uUcOxj7Puj}CrGu9&02XJDO4@mN-^RapCxa+j#jvZqWU&%k!#IE6?dZ zxp1wB=(8SwzT(u)PJOA;ZTb2UF!#`zFSjgJHXYs9Peli*2kqb~1*Yjr!SM@`@Wkyi acJ3(Lvf?!A-kKik4@WdFp4-S?UGN{qCz;Uz literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/photoload_pressed.png b/TMessagesProj/src/main/res/drawable-hdpi/photoload_pressed.png new file mode 100755 index 0000000000000000000000000000000000000000..588a4fa7b63c536fc4ebcd7e84a3782e9a27b7af GIT binary patch literal 2120 zcmbVNc~ld39-kz%1Q3KG5Rk58pmK$rBq7mA0tp69FcL1Q3x;GM5t2YMKmd=ZEFicQ z@t_J=E6VTbHXF#IVp0M0w1&)++<)Q0%{1Bfd+M|M$a~I@Nab4NZ&k7 z!h>%ha0&;%>{P5+0)}XH5J)G|{N-c{1!ORYlmI$|K_P%tGKESaBR9jJ62PW2*i7$XjYUZYBOLC9`STJ1a+EN{7zV-f14;IWh8?vjYJ`mNout@t~Y2s z90C2ujrXGUk=bbwDFV`KGjwufKaxCF$Vl#f+mIQEc*EYVQz4roOXX|j8EQxahw(Xh zWQC|uDcIy-elR~!5KI+>1_PiJjlv-G; zS8CJ15Ge!nj!|h8+AO_~d3%4fVL09Y8p_`FEN=xoKd?NS~t|8iuU^1>Aq zzKm}#o<&!EWc#=j7>B-W%#xuAuP}KXkD^~;+#IVSoKt(czxvVtthcrG9S~dB0J{A1 z#XZ*3*xc~#TH5sDt@76OCvPw2E)DLbjhuN(ZdfQ;+i%&|Jo(F{o6b1v5wkF@KF;j7 z(j9&E$5zqn;CN53;%E7#{fc|cU3=y}vFxv#Ols`7@!iX?b6y8LJ2v!IVwEl?oGGy7 zYTmrV1Fr>}1;2$qKR`vD*x2ut-Q?gC(2F(sWIxatTPJDXM~Ui(Exsu6>fe|Nz=eB{ zzo2K{b~8Dc4imUn*ln#}G&Ei6pJ?^9#zbyuzj=Vo!{NXGDKurTuk&7w(kX=v6U6l!pFCkVm!G1cDVH} z(q5n9xLS1Z*sS~~={nv*94c?BD9#04J=IW-?#dZr{XM?&BB7dru{gBf1yjBCTRaCO ze4a(VXg6?SKx7=vcGO?5W)+{z{KvM++N=NyCB3Sp#dQ94gUMuSsjsgeYaD22OngUG zuJfDwdiABP1@gtux%3^hvCEclWOMDWYwlp!wFbqm9wBOBAT^%heD;is(e3^ZPr6UN z{`h$ST5>p1b|v4sjG&sV$pJ=d0&&$J8Z-Uu@<%aTR8Oa26vf@#(K%CTlmD4xGf)UY;d#5Gda9eY8a~?JaX6flg=L&@!-xOLeHE{Sc^L8IM+&sXBjH4&jn}2Z zZ0awaBICT(XD#-_xX__!fY(GFXy=O^EAER9kjGTVpHUY6>B6ah-5s_oXi_})^qcM>*X-*nG9={No}8o%DsnH}bu1v=8oi3456K67 zGp>Bi@9nxqp8j~Jy^gR;%6X}G`P@zcA7c~hw4HuW=0qWweeIzh~aM|VUeFQSZ5GpBVW?3jhEB literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/photopause.png b/TMessagesProj/src/main/res/drawable-hdpi/photopause.png deleted file mode 100644 index ca0653d40d53559c3f9a187bfb04fa65df4f0412..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1088 zcmV-G1i$-k7RCwC#oXbxWQ542+Tgr0*0Rp%H zqlQ;7F(`@~S+c=sLZa^dM~wf7dvIZ5)P+mfh&H|w)cDp79r7mm3weXQ zN=}mx{QAQ&AAX~qJVHK7K1^<|@O-=EPvrOH7v!xV0%{;1Cy$c{s`xtx4C*<<`d#mU z&^so{XUJ_nU%uPqhvX&hWpxE8!C=nucv4GY+*)K%*?ItUgnXU{+($^stM=>`64HL zK@`%0+vKOEL?2z9B3}qF9HT=FlYf#|yaY5B@SbCZG{{qzb)C79P8gpJ2^@2~XSr<^ z0WzXhLWNHWZd+HmfRcQIW))sFa~qT80GbX^o>Pf>xUD4t8sH2$Dw^OnYXQP%Gj%+D zs8(c~vEyL}2($8D6+QKG+g$-+(3(=w)s!_TSpi|8t0lsKTCBY&ZVBsWm1xo&_T!f6 zM62-0GZ?c2G%jrZ>ZI|efnVF5@>D%jK@w#@JZwx);ZLsD5Vh-RMCh5zBjY@}g1m zB{n2XiZo~diu-YS1yEp;0GvZ^v)Kp>O!|z62}JhF1L_eD&hs+>>J$!+>WFi^7ul;l zF4GHFwEIVRA3I|7h z1)w$I;HXsqN(%=^r42wCVNs-v0SJlWXW>yKFv%Kg(yxU_k=_`YH1tXp9=aA41Qsvx z#(b;is*=Tf^W}BJ+=HOU!ljsn8PGEMm$1n*ShfR%u(l+8@-=4}J3xv7?L-(3+Wx@& zffW#D_6rdPw5Tkr8+Okqq8F`3ao%O^Jx+j75pyqMc~Oqre4qmeLfLgHLV!}-W~B=V zLK)+F1mLW5TUDum5bEYsxR+#ixs91}06`mkf-v41%5vK_+z!$ybNZ$V#jv9)Jdf#N zFutX;ijgScIz<`dPzWF)V%;S_(>b`5Lb(<0O~V0(WEAy2(fvZXW#O0AzpZS7BHTf~ zNq$?(m&)x4-3%#68wf`jlyiH&$=T%7)1mrDPKsRp_h;W_ub8h%YfB^tSC%;W;5~}V10000AUn!L4fOI}RgY_^L! zM0C2l2M-=Z6h!dsVWJG&L2q8%K|uuZB0G5*%$Kh1JXk}L_lNKMe!utoeeYgj=3=b( zR4+wQvHX-)Bx7In9q%Fk=P&9bWH^blWju=(aozACHEE#=1bN4(!Xh-R)oVL2MN!?f zT`J?UKCPI@VT=gFgpNnp6qT9?J;Pjr7*t@@cGL8)*IP8Otu#F+>YVPWux3xK`EYh^ zrev-ynX*MsTmY$1Ap#D>1_+&HH&DVf-OyFYJlbYy(175jG<}#JJ;5Nq z%JQ--M;d|S7~|yTNcvL4$$m+a9)&3nE3Mf>v;vCYc@{!SUL%ZqO_fDHt0X z9?LUabfgwg*Z&W7oHjbZMR=6&KZS$Rst4I34A6>ilEy6#N1;4L^`U{0UqWcPRmDOL zVHDJm2h>>!oSU;<3)O?s242^dyc=M{HDO*$(?o%>ZA%%;2uWE~`P`U1&huGO&Pb}7 z%&A%;%gI`jYjHJXt~k)eEv|LM6*_VwD>xpBtU=$t4y~Mz9MCwjVt33Xlk2G0stSBj$8>VuT7T1&z1dygNbfo!Ln}m zQQwCyotfOY^)Pn#Y}elI!LzTYOOIkt2A+m*Z|pzrzPvZzwee+rAd$JU{?lEiehl_} z9v#{FFkRTZe_|+gY<_&}-QdRuVEg^6JAF4R{ooDtP28<+ZeRTr-NAfzMthlASpNg) CgFyoT literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/phototime2_b.9.png b/TMessagesProj/src/main/res/drawable-hdpi/phototime2_b.9.png new file mode 100755 index 0000000000000000000000000000000000000000..a0e4a272bad18ef09d49754f1d13e7fbc14fd700 GIT binary patch literal 1029 zcmaJ=O=#0#7|z%fS)HI3@#o-2CPT&MuWel8YS%WcD=f2i#T73uO}?&SOTH}mwx&a5 z9RqdXec-`)QxOq8dKh@~?!iA0Wa32-PdX6hm#ytQSVNNUhv#|T_j}*xyOSTg)Yp5w zm!hb?+=yHtW5ECR?Ir(5Pig~XIEFJNJdP^3raF*H>ZlAs&Qzyh0jhd^_B9-$sBYRQ zmT*ZKl{92Bs*hnj(ohR*I6VlRkMkmdHb6lCaXj$va1S-@9R%V-YAX_D#A5lp)+Yq`xbk%F(`=(%T!6dz{!`d3)@{fZpo``ljWn*(?}xIbv;$R)oFYOqtt#fL z2qU+OY>*xo!RZOZ(oxMlvyE32DQCG@wKSNM<1|rV3`3W~Tsq4~Q+#$%2=jaNUA~ z=UljsT$Uum`i=do(XB1w9)H@lEm^dU4=v($huE5P8mr_=)N^vO=)Euh-r7oZ3zNFO z9H71&y|OX9(&$}XoC$!dd&={tHt!GLIC1+j_2c@HhhXHvf$o9HTPs^#v#V=MkN5v- z43zjccfa)nU-aJ_4FZLacsCE_e;$6f@u4U9i8}af?Ls4X_U)_9$n($Z%O3*{GrZVE WeGQz9p~|&{e=&2JG5Kj~a_J9M2t|DW literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/play_b.png b/TMessagesProj/src/main/res/drawable-hdpi/play_b.png new file mode 100755 index 0000000000000000000000000000000000000000..702c57a9a3e36a47243af01b1a5f74e6dd5f1e90 GIT binary patch literal 2303 zcmbVOX;c$w7A+7N5wz1Po3^A3ji59MNl0ap0NGHMU-_E|Cl;e^)2=8eeb^Sy>n`l zC~V=B$ulPd05BzJ5nqgrT=O%@8hhW51Ri38Gb)HiBaj4CD^bG$M~1}1V30zR2#aBf zEF-lQ_62|m3G&EjG+G$Sk|GMC#B4*DYu1yew>P-X;;i z4<=|boA5EHXrTz?A!-<;5vg8MZ!#H#AR^g^20`TSK#Dh+Lh{CL$cya5qCqSQ9sG0= zFmGyE0!z#f{NxK;u?a~is$!8yTCJ9-r4kW!B8kjoGR+(miWg?#rO8mD5}lV)<2ug3 zhc!~QT!qRJC1_@p#3N}an}9|7QG!Ax6n-XFYCa_jOBqQgQIW_*Z<0b`*7dFe8U|)zb zxs2t_<8%280hb~O^byd=WG02fWm0`OOa`4J;LxFQjxS+-m=Kx4q|*brbTXMNpfR{~ z1}BhA2^287R0iWSHb|*KB}yqg?pKca{e*@763gPLVF`+;BM~HJyaGf?2#RQu5EaOa zfIyEZxl)E`HS^5J^HD7yR?E|2S)dwGfFJV9l7GR!fJ*a*m^?1T4CH>$&4+kQOaX*x zVp7Nq!Y8ck|H&B%3x;Gaj{hl^@hz+Z&C}1Nk1ako53IyGMvb*bG8DZH049=x_?$>x zPv4I*p^;HDa9XqT3!a1&cWrF3z4p`4xf#><`|1qOvuAF$&=)$&N@~_6NYc~dE}y;KPkGl`c9$~v zE4_cP{`&2a-k5d0E~avEIx}n9$eMJUET;u!yFH(7I()Bh*W)%}jm zD<|Z(y{_v&?4P)<%>}-TsGD6)#U|U5JGT<>@nbE1Eo&4J+;Zp1Hc0V`6ftV#;itnI_mUEuqGtwHw z%Bm$eeC?LHgXC`^-G6)T=Rre-9_nhSC?j5ZlLABKB`|rSJ1;b)zFDO&#t!bJu-Cex3(7^ zo=yGMIL@O##{y)vhFQBi`x0ALCY~wf(eUcxrRT!vBNO;_xd$dtrI+P+gIDPE`gQrgL5t)Lyb1BeaB9! zBsYFRRO=5_*o&@qXB)3WmA<{#>@>c2=0Dr?tk~$af9g@|mlid7WaXZrc4EET%^h!B z2Wv_kD(^zFxi=jq@b^YNxUl|k@OiJ^q;8e}kfy4=QWX;szNju(joSZUi_2Kqz7v=4 zdGU|V#?Iw_7k&LRVlCKgUE#C0mqPC6>}vSt!KUj$Y-;DE0DhzOz4qOSXx`-|h2DmN!FH6S*XYE@ccGywOiXIX$F ze24s$Zflw)UtbC^N^n?Wq5A^Z8pg{+Dspi}tH_<_}1xQ{Prx z_L)>hN@e)A-}SEc|E6Le%l<-mx~+3;>(u#K&QK1oYIV`+Gs~O*EgMUzZK>0ig};Oy zM?0ivkGaR(0xX6%UECNpl)wJ)io%X?S5N$zACt8)IW42d8%Ac)w7fp!;t2~!f|%X! zGp99dpFJDE?dysfu(1kjeCh;%>A|bAtSl7gtVjiO%8}AlV-f-`y6g?5fKy%MH+Q1N z=(*d5T->X)#pTu6>s5LC$OWL!HnsP+_P9%H9mMY{7yN9yCK_B5>}-YV*<0>ynUlHX zN!P~GQ>R+n;u#J~Rc?8Q9@k^V?P_+fYOwsL$^O9e=iCL?oDX#DaM&X@xtut=r`fN+ zXu}b1Pv}Wbz%k?RS7puL4;QgrO*^lw!ihG99(OpAVx51qR}`CubaLD$rFGGEtaz;2 zmwWPz;b`|z{nq!&z43>JX$}7v)%U$guW>KGoH}D20Ckm}N1x=n7B}s34{JpBztIoQ zMK&nJjsuN{_KR*^w8Yh_24-hfmWkd~#?BTgLza2eMGst=*(Th5r)f;fn4cT$*3*lZ z_dZ*0Gvf6sF2Bt9s3c^>qIt`_xWKGs=Rp_Ql+x3`y`LTj;H`t}3^D&IG5?YT3Bvd_ I+_>!j04oErbpQYW literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/play_b_s.png b/TMessagesProj/src/main/res/drawable-hdpi/play_b_s.png new file mode 100755 index 0000000000000000000000000000000000000000..fd1dc1228026a0e8175815863c07c5a90e1b895f GIT binary patch literal 2326 zcmbVOSyU5Q8V<6nfNX6Iu)6=xni{V;W^>fZm>|9$^{PGxb|uQHo! zHy4A!m<6q7^U#&4drXYbcYio$1YH&(oG2s=jz^OD3JAjx!2$>flJXNE9>f=I-`WiM zU@-de;_xUWDtH}T2ulfkoen`Qm7{13#>ZbR=L?e{1Q0+8Vwo>);(9#}5Q}_qk(6Lk zu$%=YidUy7psj0YUOgz@0>PCz8+`#FIVg6p-%j1$?=1s5ONs zp3Y+jezAp0zPLmLk<*F90*NS<>f-vOtweaxf8F?| zwlaLX93t`{C9F~i(R#!$odu)0`+Gw=MbsO5h(e4Og)d>lLX{MfAwg_k9QuVI5{u|0 z7MsbYa+vO%Ku->ZOs2Urm^2Sh294^);4r+vS&naES)Md1g~p);GQH4Ba41aBlgeR} zyeJ@(%A$dcS!|F@iST7YXx6S6wfhB2{aY-ZrGWSdtO$o;$!rI36JZ2aCc<)n6$S#! zBgHZioUB}-E6?X>*^olK4H5+^U@7n^zjX08>~lOQB#_2pf~fbO;%0*^8ik6=AesX* z754=z`hRjpM4ch(n&W?(W%dZ|K;8Ch>!ZTg;ell6#3<0w;J+(z#9#~qgV>C4^}~S^ zv6Aozn~bi59gPB_YfLQO;dDlMT%Uu)#Ln!FkFcP=I3b?$Q??@C?{>yRKin9< z+W9bPqJ!J9$8oY@h@sN9Xj2mj;pRsfx8HlPxc2XDNB==DHb3XEzsIioNk-yJ55f6q zQiWBDNsL)U&0GK57oHcz7Ns=Rzh*fxCK!bQC1;E!b_OoBwkg=-!s=dU+v3`Jbw;oA zKepswwi_`!xA}eW}=MyLG(M3o|-)jbTa(|+G1W& zWKI)jRV$y@8ibx+d!^?m>sNQE$1D&Dr-~8ID*WT{t5V7+wp6-j^XjCIkowq8p=#c# z@91+Q*2v3vO>qfxHC7|S5ryf=t@nQHEjzdl7)di1yV{5Mcl+NP=yuU3-woE+D|aop zTXsIJ+hIXdUbcSk5qxH)pT(iD%2g`a#Q>X-K!SxNM^_XCwGbo40)?t0pM8i`*8Qn4Qs>nRhSY-?wSLNp_0WK%O&G2gO>)KeVpgH z?LS@VMv(R<)Qyn#F#mp&S$$q(lzPrLM+ihaT58|zO@Sp^1nOP}6yD@_aA zxO+!U*(H4LeqP)DXDZA3anf*qXt7^Y$xCrppJ8ifV@I=Xc|%)to5PdzM;w0n4p&HX z;wiYrXR;&j z^v*kI)3x@NmHa?@wxrK0RoiOR973HU;8)i^6b8DtFWHNoYnKUsXlrh7Wn>jPk$)SA z-is|_na@dkvd90>uBIb}8PYUBJv{{a>-WJY-O}7{9)4}f&MjP`&JiSAX(D$SH1sC8 zZMfO&VM@IA9LU_}uh*wBZRnS(y&0MZAp=O;A?%`-2>uxuW_f}qFaKqJb107S)@c3Z z+Y;)%MspWykLgoAU?z8Y4rpHm*gJYTnO`lBcgb9;T~Qv@OsHNq08x>ov&i_&hVmba zlO=E7_GT$xPL1SMEct#{-C%-$KvA993~4OR($g{bFZqKt#eeqY);BW>rIAIEP4)6| zzeTh+ckh)?KdXMQYZCmpJyB#7fNih2!v@s-(?=I!1pjJPF&9)6XtR7W8fsotzy0SQ z0hj$I)sFkr%;7vs_WfqohnEX(-Iz4EgEz4wh9U!&>E>JG<~JK@oV0d9b*hC(zx}9c zee}Mf*8x*OqZCb1Ox&>6yT_tt#qd@6FWv@c^-Z2uFn^6oRqVJpX;=|A|Hh^fP64B7 z?82WpEqZNJ+5&Bt-qwS6RrdsT1}~@;4{D+(i|Y*WcL%J`%-j1W*E#Na>ajhFm9;iq z)M$icdMh8nr*FD58JNAZzDy`Sxn*gGuR;8U_wy@EQo^R*ZtAq|9u@@EVZ1#H8rKzM zC|#P4yTG**haVgm1D*D4e7Nw#$98tfnM;Nw(PXE08!s|w^yfHh?)yr7RrJq0v1Wr+ z7q7pZ@U{$1sfckCejx-eQ;Rd{u`0T$CO WSR2WBYP?qWrxL_j&%Vgqy!Sr<+s5Jm literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/play_big.png b/TMessagesProj/src/main/res/drawable-hdpi/play_big.png index a4e74383ee20c58a67ff4054d8dfe848dc70d2fe..ede6189a8eadbc501547fcee3ab0ea4ade8a0152 100755 GIT binary patch delta 2401 zcmbVLdpy$%AO3AjGn8Y;y_&mlVl%t3u$jx;G9nyDrZt!2ZpkIKToM+;Ar-kLa;qWa zM2i!moYcrYQ3r+2l3O~wKJVxK^L_t$pTD2y`8?n6=XtUf<`j8U5R-4O3(CI%V&n&d z^w<$jPNpZLf&zlV=pmHwv*$z4g|VoV6B@Ch5r&K)hAEOvAye?yWMgX^6Kf0#MKC6j z31|}%0goeDlWXyZCA>E6fA#>`vM zSq&~7Yp>dtU4xeTLKB8M7pOC-*s9HqxS_tCt_61I!fkj=d1YZbv#ikS_{|%)ymc@# z52U{@n>_Fe4hudS>?YK?>*S(pmC!wx;~22$%khLi7!h*qF5d3vU9>&MfjS5G2rs+T z{HA&Q>6wpKU;_ zRK%hS6rG8DdJ}k==Ud%+MAzFlH|=Tw!Fd8rgaT)mCWW^&2T0~HkQBc6@g_-b{`bQErp4B6gh!nx@AM8AQ zgog05i_e{aiWZ9V41pF7E^_&_K?~kUJTHj~2fzic60e~3lvhYO%Z>9U%HaB*LZkjO zP;^Jl{BTG1uwOyoHa&r?7xkMg$dAUzAtzoWETo?3FQ^9tOJ#8|6^)IJLjwZ?h1uEJGzb*X&RG|KlZPRJ#L$CTK|w)l zn@#5i3sL>URzh*-@AkDD}a?~a{s>z~ey2!$c@%NwU1AhR93Q9oooF=AHGmy(i_ zu9t~dx%`(nhh2-c)|!FAV42RP=80ST&WM770)AI2toV~9@N|TgJUJm0vX;Bkq!OB% znmik)2HkE0oafJ<7k4IXcHxl7h({eA@$f-#y&B9WDXD8|akx@GF)>kIAuA2jHc~cr zR95<9ZCGtx-A+?O!^(7Co}9<46@r@OL7JqA%2jru^U#Nql9E29$e)`@z=-?rv^ET4 z%H#LxUF*#0QAZhCz?$jzjqJezu2ln;@H~j zBrzC_nmc#?(kNksH{(_GTMx8PuRa^RX2fpu`bnW~@Pq%zYt{Y7>ah&Y$^jdXF7g*C9H>74qzGV;(8%XFyJ;;oODS6tTo5_=${ z*l5gU4&(r~954U+pl|+q@IFqk7F~9>wzj0-scwp~1CwVMy=U&s@4)Z=?B(mbyWW+! zQx8*Pd+2k%@~NJRv4u!i-BX^Pi&!P;iRgtP%uB!87h!FCbvz`bcXvjRHA}r9BMQfB z@$fCKsy-o5SPfboZ|~DD_cuFX*dP4Y?UY#*6S&YAD-LC;-<&lL9@9|n);!K0N-Ga^j8H-K^3WRB z0N$k*IktR>Wo&zHoiYIeSRSn`xZ*!kr4nqAp;4-^0y-$`Y^AOk5~?{Q8*3T^{(`Vs zJIOCD1JRDW&m4sfDVC*dojj+Vp#T7olP*)i3Mc4|AH=r*;eU@NRv)|SAMWWO+$no& z;@rOB`B-fx`VY3B`4&7Oc_JGN3a{3lK%EH#L5B{=MhI?Mjq9uLg=<-?a``?1R5GOJ z^B;Ttb+mWydom_hqMlNsZry=7gj(ToML*)T;&@wcuW+kFbmxflB1Jzhc#PIFH|X}} z%RWTzP8R%p1(uTP611r(LR@~tb(^De_p&EK^Ej_t*l<0LN#bz&4<;d(pA6ouoAvze z_#JB2684SrN0SjH$m_{`t@CYSi+6or4u$$_pY!bnqISsI_J zB|R+DRKD$yd#f8EEnzm(Xp7dNNw*)+?KRq@7FYYPjf#;;IjaWC$E41EiBgn2P_aR0 zUAyl2$(%{Zy<>&L9$L71nA@_BPY={Sp+x-ANW%7L@mJkvd%C~m(C_yj-i7-C{znn< SrI_4$U>{U#XG$a4FZo}IhCG}A delta 2165 zcmZ{cc|6mPAICqNBXf)q@g-(CD#Iqr5i{*@4vk-lIdVnrD{^f}b04inazx}vq+dm@ z#H?}+MUEoN5k(T>OTNDzkKgb2XYYSruh--8e7<>yvSo5DK!`?5brADC2*JDr@@KYy zHJPzsdAL5wRR82jQ;wB4FObI{nidv1VLBukZpRO=5$Og|$AsM7Y$i_jT>?<`l+O{LzQ)2Z^^ znTMIii)sLz&2wovC{LbXV+r@rHAx_d*Vi_$j`Hm0GAc6O4@kSxt5O@nn?|hZQ!%XV z`_*8T^|Sx9L7d{7r$bW4tH)Fxu*!5&Thsh+Vb;{YTk)EOz(%C^-7n)cX5Dy;Y!luw zpnROBmu6Lf3C-UYaGM-*p_AhtJwf~Pg}->mF5Nr`aA@6ZW+0Mzg0O8N4pNBgdScN! zbAZtQgsrG4;Ang|FN@E`k5mxe&0K2Ww-U(GRA9IR|`Z>M7zb|i7^(IgU#*%DJ`Y`ZuQ{=)} ztOC^Ra(w)+eGZ3HY+zvEGZ}m>%N`HO?c<;FYJ>?33$GiVIwf9=jgRrSw6rXT@YAyn zm+^-PeZfln-j_wi#gz;b_GsIrk)F?pJzKyUdaK+dGA8El^xocH7hSy@t5Z$E#fbv1 z9E`|BdVtRzNj!@83OR!*v|UeVOx54&7> zpg{6PA~iB{Q$$Wqu3Qy%vA~J`5m(>b9DS-sd_GAaY)O`pyP`(5`}A|yWN0~9913m8 zRy2<3xOa~uz1XmnL<6Leb{Q{pz-!OBlT%Zzy?uT1OOZM@ZsGkLWXlf19NzT1l=#&1 zhv}NMDKT(b=;pbM%ElrI1}><^$P0F{Q@e!KPDkq{dZhH3Wh*SLMH^v@v0GaFYv(7{ zTpND6;_-O-EBJxmp;&B^APBZTKP)B57AsByf?%I$fTpq?eBl}(g&=h~xqEncT&E6j zJYQx{PESL~8F*c6RPkOMBd_eqZc23TWR1FzNclN;;JqdHOx3@Pte|}=V zqXP?*YU7YKaJIHNOlq&l+-#=sUcnIw;7Yo_zI(b$V_sg~u#~zDRX=k1hJA!tX0$zo zJwy``ZP!+)!d*h+xEn`L5%45wAo1<9@I@z$H*Fo_#E*HizYpb3 zT&M>cQgub;;JN9M+e;8tz_R&n%r;YpmOFCLM#e#l7POXvkNJjzXeLtf+j~tGpn9J{ zo+G5f3z<{VGG&9*fwdBN8CI*Y6FvG6eCL%!FQu0vunc~J78f6+rytC1WGJON(hQ?$lJ;kZU%p8O_@GO zUh*iaXtZi2@v|vPjY5`(%>E6_`TC5qRH!9HPLI;S34Ulrt{1*J%jdLLWqo&jQ+Q4Q zT9$};%uW3@ym!5=i*Oho@++M-F1MoHYZdp_Z>PnLCuOAY+P{t$k#!S%-*s+b!83uX z9cEA8^`1sxFTp;EMBXd|i{b_P_wuhiZS3?esjYbV>Px^8#@f3HK|Z3pNSZv^BhH~E z(EY+$3{eUPvMD+;(N|sb%`w%88?9I+GvrxEDx&wnf6KMCFnWN09nH(t`>)cwW8sh3 zDp{?N5>Fn>qT5gTeL+0=fyG%BP?Cw1KwZ5M0m_0fc*%5(K?aG%ia6j#%sH5}M zXoQpE>qo7gkFz;bKdQO8j-DD2%RoMcDApieLQXj-!k*93z@k9qK5lQ-MadcXeHKI; KLj7s?r2ha#S=68a diff --git a/TMessagesProj/src/main/res/drawable-hdpi/play_g.png b/TMessagesProj/src/main/res/drawable-hdpi/play_g.png new file mode 100755 index 0000000000000000000000000000000000000000..6b61de3ffe32dbc72d0722979c8dfd8963d6d8b9 GIT binary patch literal 2316 zcmbVOc~}!?8Xtm03S!ctBG)umLA+QA$$$}Zm<%C+ARYZM_FT1cD`DUoF)%b0Rp;9`(%U?Bub2$q5dWr|A2G6dk>^Rke=<(P;A->bmM z0k{uNEsKZ-gVb6Gq!RpmWh62gq|pdue=3beUIS+@&jfi1ynMbN#XLCe*Ro0gU%Ij>9k3X&ta(oiXV^0rw8-sWHMPm<sn{O%4hiLhbR-uRF!CJKve4k&I;xqOIepC{T8N{P8gL&`c=F@_hR0bl` zkQ|U1xQ|%*|C2K!;tbK!9RJfSlSfDgTDG5B9}zwc52QjSMvIIF>RD1V0NAjFe6GZB z^Figxa7pZpe5dO87Hj{;?z$YO7DHjnclhFOy;@uMHx{Cbg~F{}imWO+@yk6gB9x)q z){ZYtcCE%lgw6@S*|L*nrF7eRJ-w_d=E2%3d_F~qD;OCYTKFs1`QbFv$*at>d)_h& zjt~b-C;NVO@2(rxms$NYsp81$_`s__T)HAnYToqR?`u7#qv-ZURl<^fslK@(*ByVT zFu*%GH1O2l&)zwgU9@}nZd&f3(d1-wP5HC$^tOsA0s?Q)I>K zu#hRx*g-9!Ms~c4oF8^vh!xieZ?N2^M0^3g;a;T0&X3jkYDh1RGes@A2yp(0oC}i20^{ zBx*{6)wnD)E6X#r*uLuK?>5^ne6u2zjqMNW4|iO$Yh>I@kBwoyay+_lfS(y!|EM+n zaCFx`n3(fx84F{*v0T~v{jlzIWxo!3qP3eD+udEsBcAGSKbD=;?tX4qKH`%s9^m|W zt#7%Q@_6J-t7N$(INjKMYsyB};l@orUE4FXA!@xhF_U%{U&_6(^DEfCYmvMNt8RbO z_~WjHm5WQSw8s6IUlO*zxwJRnP`hgC^wp|IS4OtQ{FYu8&Ym?;qQ7pufo{K()#JG} zH>aoAUYtQ=Z1VZ8p?1r>;rT-clER^t6l48@%Qm-S;^A*~N{6%Pl@30B2=V$S*oq1C(&bXG`BU)24)tP$-|YPb`NSRX>L!+zblu}wSV)7x5E z+d1b&U1*aN_@r^@wG}5b%DZ>;g=^IL_Nmym?9uWHtGnBl*mJ_Jou3Uhq&w&Cov(M~ zta^?E4lW*Ec?KTZ)8W-r1n~RAfarAq>BKaQHNSbQV?zUT3_W)1<_<+*^okxf!}YX# z?kf@A&CBCoS!?PWmeLDaS~!)O*$;<&>8`Rv?&qB0sP49HyH&gFTx~a(Z1y}bevLp& z=t*PgQcUf^)}`nK@nE%6RE8Dmg>NZl!aU3BUYpzI>J^b4k<=VoMnb-)_26oAaMPXk(T?cN4x-w9 zT#m0PRem!6QS8eQ_Z3UV=X(G4W|`Cd>D*(Oxv+g+UUFvbkc)#!Bzm2(w=fGmzqz`& zRzBU}Vyrh-WC3$=SeM=Jcun4MN>jy1(M-%AuI4(v?2LiS!N||VJZW^sU(5|#xA%J0 zrckU|*oV^>U$Un@m^i+@Mt`ty>nrSRac`XIys5gWi++4h4!ff4B`O7G7am|a{1Q4n z^M|%)*#!rkjH&vKLFG=*--ZdQ>JHn0@_RQHT@m$_zg*g2hj%ZZ)qS~wy**zWci8jp z(?ykE293_Uc^9L&yR?6md76IKa=L!3Mls+$yc3n!5<73&px{R0?FrKcD>QH-EPP7! Sj(3*-9zZCFTr(5&wO literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/play_g_s.png b/TMessagesProj/src/main/res/drawable-hdpi/play_g_s.png new file mode 100755 index 0000000000000000000000000000000000000000..0cffb436ff59f0999df114cbf911e4673ec48b0f GIT binary patch literal 2308 zcmbVOc~}!?8Xp9aQzPdV0f#79EIG+R0#R~7kSm6WRK${FAOUhT8A3pi=;FB#sEZ1S zf*^<$iuJy#s351SMR5&KRuLx9xn*hhDQs69+1_GE;l^6me6rxl}0Ewj8-*-SE z0AQIS7bd_7(NT1XN`V!bb+CGc8bJd<$WpypBuR&0PzNzqG}fFXK1LZE}`ZKXo`zcXK%5Zv-8b`q5aSDYwt`FK;SOERkjW23z zh1qHdCxEo7OpOGoN6La}Fp|4JH)K{syrIWx zp35dv*%an9HbSX|MM?=YZC8%i{e;E;DVEOGKq6SB5vo)f(;dKrc#6KI12dn zO1V<1%F_Cq%kwc>4y2LmAZeIJr2s$VmoEQ;eQqEbPoc3{6j~VTL);t+n??>oWD1f4 zLJ;~BR{Hk|H=vp}z0o zzQhdS3YSgpx9xw4s^u{wyYTX3eD*1ey-p7n9=hZ7Xk+klXD9LC%(+oL?ejwHn9hF- zsWSK!w6wfS4)8(gEmwIb8$#_@t*R?c2v|n<;YAL;8*Ug`9~GS1cX6DS`mVUL>e)}Y zd!~zbFYS-%eLoscJfP8eO=RkPgRfUKS6rFhxz@?F*)(DD*3AlTRZ6m+EH+j>9(lI6%LY3nDn@iff@F5f9#`OxNP(b%hShNgSMP9 zC7NQ%MdX+Z<86XHnSRWu62IODY81(L*Kf1@`{4nQWwO7u@Zu3ae+kdsrr>1ctC37- zb$lI|);rwm`*8klUfEOO`ok%eBKMtB1;k3-E#j^9mw}$eaiS(WXv%-!@)EZ#GZxvt z>S)_#`wS zIiJ&eG)ZuGIn$)ewtzHMr`M8DMz%4kIK2GXgr5!-3_o9#vAU1fe=m1)ys(GArf88z z(xsk1zCvZ2Fm&zyq_@?s*M~9HS?LFbe+Z2B_|v(+oX6apUA?{`2~v3E(#P_1E8;^{ zD=>9r@@vu=+39kSKb#Z1<+XB`SlR8lsXNrs!8hpCWz1jZwY&Lv4E#I6O+)p^VGni< zP#>rL+zh`dT!5Le8Rv5*_#11!LrwXfA8TF)92`A|+V1?DMcq92LqgAe5#1v;T=($5 zPf=>luRhv{Z@yL=aj^bCmvL62V~!(6Tvd1XM#@#i3d2~%GXL%qgYl8O=2)}@G+p2N zqdHNwv0uKd`B|66-uuhT5(nJ|YR{h(e0$Jx3u|d(DN4EEXh2opOR;N*t9AQur{lxJ zyhpZIhYgjjwiA7|lg~4^z1AJ!VJ%R$P3zB2hEtQyuPt=iKL3Yh8UTFPJ30y6A8(pC zynoS3{fdTlhRd(Zeb-nUV!bf{hFSao_`bgj%GE{=|1 zkc~P4LQep=dY})ej%>AEdDm0+4y(A{GKV`StI)(BoP8z!3<$phjfW_nDb=?-wwC2~ zSI=v4d0$NTTr+%kLP=?L3*K@f!zxt~+#7M#ZzgY~82 z-(%?6=kC~}4oE_lIP@i26%1)Si_&P%=-N^AR9<(a#fa_1)15d|eJrPFh?EWQ%P8rq z{BBeJ4ez~Hs7*DEBoCWk^;2n12HBqTMRqg#x-OMmL-EfrZsrHN+L&TfpJ=`FSGVM&3!f4= zO(Ru3RjCbBTJMdvR>$Y4ke5CMvu5}_dsKW|Td30&xGY&C6IU`jO|l{XV#|th6VTvV;}sXBb7hZ8}D^`+|$b;fF#?h9-@jNM` zz43&-srcs|!(Ogik6dyy?AVz2A}BJiyrE9BBJ|1blRHv)ulOFFnFF)iUStJ*v#Ha! z@4mbI{;O4`g%{dzJ2EAy{JoT-Q`XY3et!{a&T-w7=c!Y6cwl=4tEV>2cG&!162Xn( JG_sO6{0CE^tQ-IU literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/play_w.png b/TMessagesProj/src/main/res/drawable-hdpi/play_w.png deleted file mode 100755 index 3b9bac66892217b23a976a164c7d7f3fef3b3c85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2200 zcmbVOc~ld39uFcB#0#woSTGHUa^xnFWDN*81T~<5f?OsfgG?a@$v_egK@cbv6m_i> zDHIezs#L^^9BQ~M_aO>Yk+P6|Dxe{J!7!CT*Yl zu9eG8mm?5}m2R#~Pk7v+ee{v=n>PQO6dp_%9VVE}{*29AItI{HQRJv0gw(9u3* z4xS@n0HL63v=s1)cK7B-hw-Tbw38!hhk^zR2my$PQV7FEGMa*pey>Y|=h|%?8ucCm zh0)O;obu)DLovis07b@a1bZ@tLa;*-@dP3c58o6F!JbB@(1_bnA1^d) zO)3bXc{14_ZNV!#IuwE=G#pMYmt*B5tXO&kN1#%vS`8u*10ygpr3m6FFd~`7q5>0; z@ui>y0>vVfR*@Ghj)drF*wYUo2qhfOCt;E7W1`@c;S@Xxj)2AEghFjx@6j^I6ZnrC zpGC{Ol@b8w3CP5eQa*ehAr^~dICp<-NDG9$p?OF__)vJ^Off%F2#6pzCLIlb!3sbD zjl^IRSOhYY$YwEE_5^}6k?7*grnoRDBqEhbAS`Npj!PgC@MIS@gT$smiXpKqR4hR; zyeOz`KA=b-mdmWQ$MYdtCLjf)00CPn7NXwgmj-^u{{N2q16T0>ba>8H|%7oVC35WyWIgFlj|JaEB3-21>6DGO9H+Rma?g%fMQ zBx{4T0rZm7u6~!+?@deb2h*;3+|4X@4tjgpKvSH-Hnp>{O3biaJ5{?ULBFu@i#@lM zI&QAF?a}#HXrvz=Z+L9dr@8w5O+8vgc_;8r9S?fE4m#XPjhVPJ>sZ=CugG_G)Re3L zsZLfCr3OmmZ?=8Mn{_mK>Tz|eTBatcfBg2x0c3^G?!n!IdxM-i+$48=+TvfgW#yeZ zQ{9}}oZ3WZ>lK?k?6A>Ps4u9kG%c3gtzIW@c3aAGpB(L2rTVGaOdX}!W8&hD>=fqx z{q8}3oq31Ka|7(s1Z7F4qyHA9S3+3xy|bIRKbTsk_?=T#szWqB#3lZiyoNf0G9B5m zbz$dG-Pv`&Lg_ntwhaX<#kr|*jfaMhH)I>(ohZASTDkFbmSgs_$ey(|&Q3OST-AP~AfhUZCr1zM)>sKn zQ8;^x)*X|7HFtA*zbdDuwS3L(fPQm?$h-T=Tb44*Yv`6~RYY)Oy+`T6?w*qe9MhQv z4)d)Dzs^)6^OL?h0hshVWq%7;J<>{#s3dP3`%Y1|066uw=dC*53UMp&_cxE4lAku<8Qv0k{I8b3%uJa z-;60@+=gNtdM?+k`0~1~M6xZhvvYQ&+E&+?9Maz1sj4vv{CexY6n;}@)m%nU;8S2| zlkq(h;T7xyes#6QH~tIh#i8$zx(mp-zCq8Y1{no~w%>G&Gi<6W+f@I$w$!Xl@H_0gWt(X3;(sw69AI?;ynv6tV#WlZh-XGYCWYrk)(sgHD ze)o^-ewM39dH9rc+?)(r9Wq;gKO%Beeqg5I;?IrONBZwCnKmhQ7v#~BCv>>I9d=8P z9vS#HtPXeT?7e2RZ^)YnBDXi{kTW$|v7iYNK-Hn==eDVo{lB{%UFkVE){1sXsQ~J7mtmM>uBct zrLAZ)ODF5HOP3(I`Q%Qgl*6DVam0S6{^F~(x@}8NrcFc1D~x|Xd*JG%#RJOg{kfw< zpm*}cz#Y2=Z99?!#@#FMO?nmOU7e28>CM+y|B{X!m2f%3WqHF>*1CfVTwT3W<9O2D iuT+)ZqeY4Z13ZGmvp65|vP=69f^cKGGfQ2#iGKo9IGWS| diff --git a/TMessagesProj/src/main/res/drawable-hdpi/play_w2.png b/TMessagesProj/src/main/res/drawable-hdpi/play_w2.png deleted file mode 100755 index 330da7e1e3197f1f28ef8d32dc048afbc46562b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2240 zcmbVOc~}#78jc{MP)`t{q8nmW5J@s22@sQD$OR%G1WdeukW3&zGU;T5fJ*@dDHdu) zgq5Rp!Bs&~upkyxKo>6%IYi`AtBV|>sO3IPCo1m#;nP2Mo|*X_^Slcp_?nm2Oa6UXZ}3&O`C3q(ZK@YiVy)LLn6g6h+#>gAQ0=O5C?-kpjaC9 z?Hv$h=*#53B1Gh|l_r4{c(D$H*CnK3<{z>eI?Oh5+^CnnTe%qXsCb!M8sH)B3!AaX&ATk;gVH8-hVB1#fRBAp!uFO2q?Y3Y7|M#FB^ri9keesvSV4QK&SM1NPH}L#@G5 z8O?{o`(z7UF>oOWqM{K9k&%)3NP9d42NM7%Cnuc-iDZW&?9@?8M69t>s@Kdaa6q*L zma7msq{QkJ#X-gn{TPBm<>B#JSgHP$C^TgRjaWqh@I-<_p^NJST8;RC|8?Vw zXti&Y3MBY|YG^MkLC-_BW|oZR?yn8$fT%Y#FIbKqia4ADN%ks0CE~_m;LtC4sa#64 zXY&9qK;e*hTsD^s04x&8g~g+~u&MSWCk_D2YJ7?7;KC!>+Y>2VHq`+DxMUXx7SV<6 z-~s?d7R8Cjp5?kJ)reRr0cY*XQM;eGJUhUWeccS zYoS~zg(B59y5sp6EeC|<5ulU@LkjGN{L9!z>GE%VcTxw+;q>(=32xm z*Q>YL0x7JJrHnQzCxw%wZfLB=olGKbAX0bIo7pDk+)JbjF{ zvPb;GTYg!PYr5b~C*m}C8g3mcjsq*4^`-{q^P^(VR9~#oVn*Ah5*myRF0*n&2JvD| zu+7s|$l4(OG0UFZnz#V|VE-fSoVsVPQdoiO`B9xg)%=m~xBo*Bm(p{}YXN^~Zo{d_ zm+;T~s*`7GTdns@Ii{JU)$2XJ=iTu0;=eEHIKA(EC1knCw0nx^Z|xM9de#Ap$2WvL zom=Z@xEtg=NIz+MnHtV-&Dhd)G($l~{4kC`?ICa7QLy7o*ED^D(cKbU)NkHm_nts2 z_A147yP%>v|0GJ}g_^|&Ry4(w8QMR#VBDBkc3{!3UhL$z$<}wC9Lg$cy?wtTU`SP~ zH~rIcv%2AQGW}}54SiRs;c;8ih>^g$dSZLW+W*L2TP?FM9$H+9;s@eiFB8zy1cmCY%8817|NPMQea}_jq^P6L z9qubXA@HwzIg-~qxpw#XtNjn_ww}rIPEp6b>kQ2s3t3f=YCrV!4VJFe)aR_s9#@Zc zJO44(3=J$Tm`BTBxE0WZ-tb{6G;oTYMgb7LuX+B}uu+&j&>W1^zqnkS_kDol; zpIS(0TqzpfG!2e#`iiN_IZ&k;J~5!5qPNKPp*-sCb#5#^IEL}guuzfwdrHK+2ODmD z%bQ^CEEM%{?e6U5XPKub>{>rP(s5DJJjk^x6407UqI)JTJaao1PuJYP{_MiDg*DpE jn;$k8`_~!^wMImYa>hNraP0%F?w`Vq>&ZFq61e|QWU94_ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/play_w2_pressed.png b/TMessagesProj/src/main/res/drawable-hdpi/play_w2_pressed.png deleted file mode 100755 index 7b7018e2ab8b0a9c51450446d04d28fe800ed6bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2238 zcmbVOc~}$q8O{oVpn@)2sEUvcxZ(l1ha?cL9LN#50z^b0Boh-QnV19uQ3%N5E{IS- zMG$ehMASkAMIS&6Shii*T15k5LButcQ?zDfrLuIQV*7{PKRVCM{Em6w_d9;y_dJsu zy3>EP<$6m50h}Aw_&D zDw@c`u%t9lDB7Wtff1^mY@TXAkIYATdm%kjDX@STRB(~0;v|Wjl1fFr)1|<3<2D+F zd7i3QOc45(TFWoywJ>v2GZ&SZs{z9a^pk z2mj;7C(&|tniNEbgK{WY#)Hp8;Iu@BbNAbZj6m2MN{CDZ9||{#4)K!3phOWsr=s95 zZhR4+f~PUD3@nk3V=`zA0v79w!}<9#0Y4gm$C2q+?2^W(xb7q}hK^&988pBhi)9eV zI1-)g=T4#lBpjK*z%OwFByt5;!ULD=ieS4RxTN3YQfM-etAJ!|2ufP2fKVZ%faF3* ziljvVNSA1lgbyj@Ta3r^K3X~`6QzKBrVJ7z-{qGg`hS4ERO#wmZdGY0*%v;r4KJYHV-I)J4Ob#MpnW20R+PIc>vv)o%(S2^zPu;$S;nl z%_@pA4a`XfJE6qycH04@aiC{$lFCYC&Y&!jOn_S@GAk$|3O!fex z>WWWMf`%wwi{-df>53D-_p>O7eQVcZUe(2Qdqz?J^X4l2!I{GJ+d~JNT2g{Xu1Usg zSq2Bn+1uyv6KoZJCVaH4nrfiV10x}Gcd3T>F4Kl4(uVN*Cxj!xHKWyqcb6-s*N-Z< z^v%Y_ynbUp5~OCGt@pn=`5mn$C2s;6U)z?Iv1!EvpS(yh;e1hPYtSV`Y@o7#qhV^T zpV{Hk)~55EIsw9)b+!h5kAd0A*!mB$&YYH6c+W&Z{4wI{@a@Uc%5Uh=)kAlZ z3r#lP)2rxPMoDZZl3eBLuXe5rEG)+XDkMM=9&+8o#%7#hLOzEt0Auqs7s z(Hw5`aIt3jiS}(_k)b)x(Zv$G6NtSrq7#28I{umR@&@x3>q+b}u$Nkqc(ty`>HDm= z`G=;1hjJU^+ofW|dRtrDD?*Bnt3PvB^-N{|Fj;tDeNag7VD%5jmQ5e-*>sQdbDxe> ze9*c796(BN5^4Ni^-?{-pTjyAUwA#tklZ?x>rn&{H)$O%E(==JD*<#RklwKi^k3InJ2OoT?}zpeiu0S7_LM zJ9PP63(qn^IRyOF_^h#LakO$iuf;(f^K6?_rem7pST8zS%9}nCwg0D3=lr0wOXzXy zs))G#k_@YKr}S}$$pKZlMN~`P0Sjq`q-xuh0_TuNRWH8`4rZNtlaw^3_w2lGv->so zhC`7Gnk!%3eppP_-1phTFidRqza}Rp+?{YS%}_IBV=s3Xbgp4&>_~0mtW3u2`Hja% z^kLgMD^v3uk1cx~Q}CRF(V`k!J$Sqa_^-t=GuBz*p0nN2UHjaVFLXMw6VMB0>GznL z{z0Do9*Cqx?ZQsitD7yRGrG-U^`<3Pk8dht*TlDClI-?O#(Oa>x2tyCWU3Q=AB0Sp ze7%4_h5n}5V}3(t_?|6ur8Uli!QejRbqkf(amSpJZ%Yv#Z~yLEV%W6MF}c!UX1ib& zzwXz#Y?Gwj{duo zPup&>Rt0v?nEx_)73`@U@^$@V1f~D7nO^VzvbNVJuA}ebg0A36z(6|ZuXSH;>{%JP bXo*3*vJQ6a_%)qr{G$k9?4&pPB^>@YU`(0; diff --git a/TMessagesProj/src/main/res/drawable-hdpi/play_w_pressed.png b/TMessagesProj/src/main/res/drawable-hdpi/play_w_pressed.png deleted file mode 100755 index 7261585f5d50b236cb0fd85182806cec07d8c5b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2252 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 delta 1349 zcmV-L1-kma68s8~NPh($Nkl4T`o_56eN4 z2E=HC(T3DS4s9dCp16<@;{}d{yEWlr2v(LDBL*rFvn8?Z(xf3S8mPFnm!-;|wzNek ztluBZtIyZ{S9ovU4DWrDFNbB>+4o`Q_xsJfH{)Sq<%NsjLVtK4Tma|8*>D!TlfUmD zcnQ7_&%!hC-|#dXgI7g;VUK_|a^VvAS@;kj{K7R%u78L9^qBuMXpNE%40;1k>0)B$2p_}kmyjNKc=sEa(6VkP4QEhb& z{@qGIFTwBff=@+JS@11<)e1nb@?h*?YAeoz_Z2e%9faRgxaTD5NkKSb1|Uk~AM#pf zD~W2PFVmF)=>So-I;~(pew=yT*;Luhlcvr&txzi8On(V*Hd&pN3Q!GvggHZDxIfV^ zk_FvjULiY0hxs*U1jx&KkH_uKfT7R9nI?7o*0*Iy)yInqO3=Sp&RPM5Qs8@`Da+B2oRwxpQoUE#<+AlGn z1Dwf2Kz}77>z>lm(&zj8`#&BU8hXp;^T{}@iN%Y0Kre{?241MLvhv8-*jS*etLu%N zoE+I!3w#DNBr)4jdDXF{RSI}*gFHGe?Tt@n5!zu#XjL3}DCK>4!fS_$IQ zUayw#WtNTcDc7sg^g%F4=e1T?va0A;B(2hieEI2;aicX#{q^76J@naPv`q$vxk ztE+o+YHF$p!|xF4PAi((NhS5COz=Igcs%}@*`GNuFmSQDx_Z#`il43D)K^yX^Ygdb z+ke}GH8nMZ7JU2?jo&4v;5yI}6buGO8XFsbo|~I{U{x~&Xi+6F7@qNwk&&xSO-(!^6W@8X6jY!mzq0TNs3Y z)dRW(-(Z3k@5jf-uQfL}pU3>^FG&;V4bJ3$J?3TjICDk%hVf^q^=kz5NbEhA&3_t$ zh<-M&PivQ4K5Ki0p6#sj`*XfV4WvJ(?oJGQd6DB#pG=aVjJzDzy~}X^zLyOWSWnn}O{( zU@6Q@UemJrh%VYSbAVZUL|2rjZ6%KAN~FDPeX|VheJEy|zk^G`mTv0NeLgE%J67_L zw^XsJh?fWYV*+>cx@w0G0@W?FfUZ9#kkWO`jM$Q?{uN*VEcb)MnOVvd00000NkvXX Hu0mjfJ$#NZ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/playvideo_pressed.png b/TMessagesProj/src/main/res/drawable-hdpi/playvideo_pressed.png new file mode 100755 index 0000000000000000000000000000000000000000..63b03ebb4b3bb195a087bc22b6dcfd28e5e59be4 GIT binary patch literal 2388 zcmbVOc~Db#9!~%{MY&e-D8w*IKyqOSA8Dp;xFh@w_u0hKB!-uqB-_YbE#vv1z}o!`&rd(XT~AFijd;YLFk z3})=bX81ufd->DXg~q_gEuPS{LCy@8`-744B%Tz2Q3YTGfbbIWq5waDCrFMT0$gD* z?MPujusoQvi_8Z_7~ZlBMj?_wXc)}ZLm}buV*xoL0*Dfd-H=Z^yO0Q>zzrGX#KCbS zbRb&DPLTrsDck^lN-W<+fb?)jxGKmHfe4WE5DHP8SVmU3AwTkxq4n}H7K!*MB9C=L zeljYUt!V!me#Nwcrh{hAhPDHY!Gvf1ugtSQo zkz_vx>$5Is=Z1`y%OzwiHYq6yle7Z^N~5rN7Z;ah4o62cB!QMCi{(58S}e0!VPF6< zzEmiY3qdhrnUNO(Cdl28kfono5J@IR2|x zR*s+wTwZ=DeQ5Kgc>pogF;b{C_V$!V!eFaZUJPo0;?`URXV)fAi@`zSqrO8IggIj* zRc!)thK@7~C`dQN1Wpj@*@%p=kklf65xW9+zk4t>&-|AyCTZsD4;ofeXy()KRNw5X zs=$M0w@%t|f8fw56n@nBc|Cs2*?waBgqrti=K+(*hvTn=k$1|+)uSfKC*XU#!Bozq zbB|}Yt^^tE-DsqIH|aEQG=DeTdI@`4&*8}p-ZDfjyb z>N4X32DC03zTa0X%&d_0UX7l3p`(BNdP14L6@jO2h$WOQDBxSK`5a@fX&}z(=bJr% z3#L$4$Fr~59BypXmS-JYo$OI;Tt6LfN_iR#+cxtXpsdMWWr7Jh8lZoXF>7UN(lGUh z>Eeu8YjqJ@nIB%51>c%+rrL+12|q?(Q>td3qLr%b zs;iso93CFV+nu+%yLJD7-KNpUiQYkhffMCwb!frK)gD@}GwOWuo+(_t%gf51EWCK( zUaUEppwmhtB~vsV9Ua%k#uBU}-}|Q_4mnz!%~6&F>$NmBZOO^a?SMQ#|1#wlEa32Z zmDaQ7)lp*c6W@e{#qR$8{%WlOETS^XA#G1cNJt!X0fOLxQUM#`2o&yD zHInUPH()4}ipv@4ZC+ATk_nfDD9YxBjoF`iqnOsa^-bB0qgn97^w~XmI;fjj`|VW^ zj6kx-756bZvd32-DRz6RICohg#0&_URS8w#(?) zIcpJ^QJ%8(*1CTlo<9RnOGNjmr9;1q8DWX5cqO+v2iFv6o6O8dXITO#9++ikl&@xF z2S}~+WSOZ=nP(rw(|%}t9$GWX&D1WbosQ`b`PHDnFn7Awlj&i~&7HpGrHQ@38njon z-LTbYHj}*v*Qt6RZUGA}*c)-o@4IX>>1&Phm`Wdoz1!Xm)0`Xkp1eJzUjEPVVsaS` IwD7cl1J7R42mk;8 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/reply.png b/TMessagesProj/src/main/res/drawable-hdpi/reply.png index 98db79e65019a248c801667e109db836bfccf751..f928532000125dee24c683913c1fd14bc1b541e4 100755 GIT binary patch delta 733 zcmeC?{?E0+jVZ>-(b3J-!o}Rp&D_Y)(ACt!!p*|M*woV8(8$Ts!pu!cp(3}y*VoD= zKe;qFHLt|e#a0O@qL-4HVg=P}flKe?MN9@T3ruk-Qc@@`2}(_~O2KV`87{q(^_ZRN zdxIu$GcYiI_H=O!skrrKhQ9_&pu~aRSVg@_M;I-4JaF?AQP);g{l8R$@6H^Hjzv$@ z%!?L0@h>cxJbQwf`BBG778Vu-H*z{Y{(dEE_V&#g1LNLX;rru&tbhBy@B6;jeD%v+ z^BygqHtW&mX(GSMoeu7|TTuP{;)@{7JG1WYzgr*r;3h|| z79Dh6V`Ibou$vvT4*A&YR(pPOK2ex^bM-WC(Ezri0UWMu_t!QjXSA`qx2&+OELnSD zLEVBQ&y-I+6mcpLt#;hJ>$dVlx9g0D1M*cJb+@E*_B^Uc^5&T7x2rY2r)8>GtK5=r zzO4c$7eu$#+fASRSJ-W0l%a@|TK7ALryb#I&8|AQeM&y>EGfCr(Cx*UjH$kkliiK- zFZ7?uyCaiSl67U$mqi)-JT|&K(|D)l?51)k;Avxz%o3*)F)CU;d&N@Y9?IxF^mNsl z@45C=Tg}%sHO;@*hkD(S49jwJUp(7GK`?OkR&evaDBh})qB%Vxhm(4TFzy?E0f!JkD6>1K%n_k8((@>Cl<`%}$7x#(Y+ zhs!Ocp5~W!qCGR;m&|CbbXmmL`9f<4>+bcAMnY3N?pW+tW1qlrEoc99MWM2nC$g*^ mbbr2g57N+lQuJFaf#J7sSkIjsT|aL#0D-5gpUXO@geCwg(=!49 delta 745 zcmey*)y=)ZjVZ>$)WX2h(bCA-+|tO<(AC7z*ucom(9Fox)Xd4)$;nblp(3}y*VoD= zKe;qFHLt|e#a0O@qL-4HVg=P}j7#t2MN9@T3k+~6Qc@@`2}(_~O2KV`Auhd>^_ZRN zU5g*>XJBCb@9E+gQgQ3ebYG3sK$!#gANzIms-zxFNj!WzP{=gQ!_#+4f80zXZtjz( zbX)>AO_q&Rm>FrqZGDr|v+Rh|EVa!WHW+kI7k~6q_V3i0_jbxZyZ2h}-OBjo-{0AO z|M&0t7~-rt#aVMo=DXYm z*^Jiv>o_J>cdfkjaPpo9ix0bp9F*H~;N@%~Wg+<$R*4K!Z+!x!pGL8|72PRSY4H)i zdPchHke{bxy?K!IG^dUyLAp-sk5B%~$Tl(R0+-@s|E-$EN7e`BXQW*D6Y)LJ?dt^r z+b!#(QenS4g~i{j)H7VR(QT18H(Q#os|6{)m&ZsAnL#VULYjrwFQw4`D`P?#R6nf|^8IZ*Q)vH|nX~S72KCPJP)V&XjtN~k|HL~Tzn-m9 zilQE~S(0{5H}&*7FLG8!M|t9(^NB&yuhTit6&3gXFZS(yJ04|7Dk3qH2`v4 zq}24xJX@vryZ0+8WTx0Eg`4^s_!c;)W@LI)6{QAO`Gq7`WhYyvDB0U7*i={n4aiL` zNmQuF&B-gas<2f8n`;GRgM{^!6u?SKvTcwn`GuBNuFf>#!Gt)CP zF*P$Y)KM@pFf`IP03tJ8LlY}gGbUo-h6WQb!1OB;3-k^33_xCjDfIQluQWFouDZA+C>7yetOgf{R2HP_ z2c;J0mlh=hBQ8xDWL1Hcb5UwyNq$jCetr%t6azByOY(~|@(UE4gUu8)!ZY(y^2>`g z!Rmc|tvvIJOA_;vQ$1a5m4GJbWoD*WSr}V7nVOgyx|v&=8ydQrT3DEyxw^O+8;zkXJD41_$rY g&v`;v7#P_Yer^a+d7kGn6I8Hxy85}Sb4q9e0J@`)tpET3 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/share_round.png b/TMessagesProj/src/main/res/drawable-hdpi/share_round.png new file mode 100755 index 0000000000000000000000000000000000000000..d21a328b5507007bbdf10900818b99ca2b47ba81 GIT binary patch literal 1530 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 JemysJ{Xb#Q&Y1uJ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/shareblack_pressed.png b/TMessagesProj/src/main/res/drawable-hdpi/shareblack_pressed.png deleted file mode 100644 index be1b13bf803d82132ec0b2bf0bdd572565ba5a4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1855 zcmaJ?X;2eq7!D9nK~N(iQqVON2Q(y`Kmv(`7zt4lgACzF0gtfRkQA~TH;Y6>3{|YC z)lsB~2Zz=X6;Vc1K+vc~MU=y%6-7zCfT|Vi0Uov8C}@9_?(FXOeeXQa^PW4K7Zo|j z+0nz1L?Ssy%oRlwD`inF2?{O4YI@ zO>hW_WcRf;Mu972^LP-dqbsc#x>2Vm*d$Vjz^GS3sW1*C!zo&XPknasG!@XQ_|$l| z43z1^V2yTeCI-thBV(Ye3Jc&&a2K)a4O-tC>LsK0@$R zKJ`;j3Rx5ohGH#Ad?AjICN$po5Nw!02at(F+k$x_%j1}Yz~hV1PoqO!W*Vi z^P)xKL0`m)Pu1YKp2uKhWMt4Y0_Z4~!eDZ_T&o6)UVm5B6H3OfB~S;R0{CZb>rqf*ac(m`uVLqM7A|DihFXS4y2hQGx7 zpTdTiWqOzq4I9vO3?dq*_O`mx^TIG#iKAEyilz-!F-n8ts6m73fiO7-@RcbcEn+qJ zePqaFya>dAD-j5e5b>#m23@OF@mL@$EI2F(3J4&L!^Xl956fi` z!7!|?{a34pOvLID8&`7$N2zBL+Lc`-ms;y;MbrgfYfj*AwnYN?Q#_kzWg0jC<54K{_nLDPENFL{{aO6_mPsJ)gfCfAVX`T3N(-5gb4eC=$7d2#|d zn~cOtNMq_pJt<)7nNyw2An3i%6kraua3d#G*mSjJaozSw%AZVcix@BWvw#g^TaJQk z2|n$7-EhecN*#e*Qx(!I4s9(p(M?s7<5#h-3aO<92@9`S3`>e0h3|H?aW>ENX&JM3 z`8{d&DNFc|mrgm-^J(R~Zw}ngG>bc850>vu8aLr_4o?!DFo)6jw#0<|;Nn$Pc6}Fv z6r}d*Y!Z%W%+Irpy&9SSbOoFs=JS0ZQQtF!?xy%-8TL1{W-6qY+GLQ!S^De!=bc-kDz(QCsnrL>mNxIA+S=Me&WG@x$AL<` zZ-2~mZfNKSl}6LUhhm%GdbWmd_R@w--sJ4!($dn}diZFZeJ90*InIZiWgG12g3{b> zZ!W7_YdJA;j%4D#jkyXJeM`vsc3)L;;Ci?DZAHe-$)WcoireD;{_x*6cM) z?T?!s86M;MA{G7834p3jM=6t6J?u($p}m|{B^~Yhe3i&|#cw&y4v#+~=#JOd#NUBCib+J2dmiXl^a{Z>^K_@kf^j0(ACJ+@qr_?8zcX-wc z*k*^b^PRJ$n2r0w%w)mqv3A=b4P{U3y10j0iegv(YS3J=6^iQx8q<8=k6%oJz!#$r TOi8i+9!U}5k)q1ki@*B^9bD5; diff --git a/TMessagesProj/src/main/res/drawable-hdpi/shareblue.png b/TMessagesProj/src/main/res/drawable-hdpi/shareblue.png deleted file mode 100644 index 0171ea6f1e766a7cf8d64d15ccb440d617766dca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1883 zcmaJ?X;2eq7>*=FL@0_U5io?K=$MlbBqUTIL9PHM(S%GzmSlkib~h#q1avfL@v2r3 z4~kM1MX?H6Y!MYDih_!W2-c!p#X-eUBU&%i+KmeKN9oS)e&6@b^E~glv+HA{=iA#- zYzYK{eR!BiimxooV?)N@3adA3@x=)fD=`_Ggk=FbkPxIn6G3V?3?ze65YS{Vy$lKn z1fmBdS7J&@6km)G%BPK(iFZDmP8u@ zra)miI#8AqEm!BHsr@yyZvv?T10NTFK@6Z8;B-XKHwbATb@}+-VrJ5)A0b$pkoGAk zr6iUbg6cr3FT;nfX0h2+9*@E1`to?}IaCgd&0(_en@4AJ`Mx|p$B+8?qT$|jnk2qd z6#Cg0eiG7BFigv5GPAO>7+F3HRF}+T`}_M_G&meOj-cza5ezWU5xx7cf(X>Bb&wW= zP=snx1QO8o@C ziG&}H=rI6MgW)0}4cA~mkcQ6+!E56aD)QrsgV=1bZxGj)6B-o6o6GVK=J$3HoACLuY)1wcKa7k%h~V?C!w0(#w$H)8m*#L$klb*)UDXvS1E#Oc;&mN}qK zi=m{5sj`i8+`=ByY|z?#+fz5buY443^L8wyUpzUecT=nz3DEetDSs?m(9C=nb+w3F z;h&*jB8&+v9O!K9@DI5EdiBiJ$IrC9d7s(6`F?iKzSL81x2`9+Jf*V67m=gN(kMgS zM9fN&o7s!@(iTr5Z8BD?5?lx8ZSC=z)cWmL$JSLc$0V<39I|_m+n8%@^??xDPym`{ z_1b8K3&?VhS~=;@fW2f_;yohWv~*8Q6!EQbq3QjcU*-u98c&)WOm(dkEt@1H9Vwi* zob@#RHw+CTAKSf~=*1q`yLZ{N3wQEtbNi#>dutBwX&Dz7W3u70`%R+aM2=DaB2HH^ zxjam!;u4*kd6WZ!l&~4oE)y#AouW=&vQb?Ov3md&Ncj=rY3p(w^D;}iPDw9E6IH5) zSGLc>pKs3jE#^P~oxrK6f;&kYx zDlV&8F!020^R+lwP|v?kc(U-`r57z9syg0YZRrV&kJF#Ln}W`dmi@g)xN zf1PohkTlL-SvJ)?IOHtc-Ee!!*%M0Ankq7RaEsh&;Ag$Ma$mCP9h?d*Nbqj2b@g^j zE@K_5dGy*)clcF7^Vx@!-8vnn%8C1Ot3->y!E5nAuk|&OLSv|5omrdO2i>TJ6^TW# ztMx1w*Bg|oidA2`Zx<$*&aaAIn(3uCaH@_Z3^wgA$n!Ba^3C4oWR%YR&C@QMKD2)a zyP985@#u~zUKG4xFUx*~)z~STgnVw^_WctnlKkg7ub#Lu-5-3koOFqcr^%y?lB_9r z612nj+<$Lllg<-_jxEtEjcDom&Hdv@4(WEvtGpA{leXy$Pyq#`&BVqY_ybTiv|d`^ z)t$X+M_=Dza@ulAgF8WS&W%&pn7FLNT^b>1@>tQa+S=22SJdfTFG=i7zE}~_`M9m> q@zFaq<$qVprlf$hTI6|*aSWkp?tR5dvDn`7y9*abiz*L%2 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/shareblue_pressed.png b/TMessagesProj/src/main/res/drawable-hdpi/shareblue_pressed.png deleted file mode 100644 index 02e40e50f1ce262ed0993eb0dac39a772e470e88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1897 zcmaJ?do)ye9G{U#k151YOw7Gw<}wqi>7mDvsM(Yx zVwdEUtwlu|sfke8qZF1ST9Q&xo3eKAh}u8a-gEE${eIu``Fy_5d+s5BKQCj$Wri3G z#@NT39f+=E?K4{+eTV3b9YB|*h({}&1#koi_=tE>U?9j7Y>#UIoiUhM zcwulT63Y3W&WA-ro)$xti^M1!gK>71i+TJQ5CI~D~^rceMHjYzSxr_m@j0F_LklE~;yBT($<_B1-x0hqdQs5glqk{-zR zobrX97`SKz5z|Q|nM_8M*%Dz%6p7;GQ8G{->}s zc)J)R1%gsIUcyHk7r9F7N=#=-Kpp~1f?+szx{ChMFak@XVKKl8q5)PM9$yG)4c3zk z4u|doNf92z2YuKK9I8PS3I%j3naXlx(O3?49!v_w!=7npPxWLnX^vzkcdCOYdz#CJ z`SBtULZ-QbuUz(wTpXfPyg zYyZ{iX%jj>+U=LYMGs#_AB50(m!N|!GJideelHz9Y-X^$y*2xj?}C5@cZSoeTxf(X zEf3XR8&whee=1&mv~_n$-oV!4gFD}5)tBiQ?X?4!#%zbA3a+xbye2npnVeK(|S)ROv)0BtWj{LVgA=-1YTQO=>syT~v}{ z+tQqVGnW^08Jks@q5g$#R>!)L(V^1tst3%xebzC{@>DyMQmS{`sc*INE#F!LSjUj8 z%x&c-_9s(6n5tW13;2V!%f~ch^A#h>=0O*4XC5&#JXq+l{w3F~CUJIskg)AZ@!Drs zjSl94$>&2Y$Et|{OCT6*8zgP$x{`RUaD9<+55CyX*X5#-cUHlZK-0Nb+s^yOoW*mYxhTg}kW|^HGwGQ#i9!yxR@k}jUGe-|^ zMKR1bTT05cx|Z={MNm_RgG5!gCZZ?*+JF?)i%&5~DAN5zjkEJII?chKZY^K=G3aMj zdBDdq%_FEWPyLhnI<`nRK*1I6U-CQTf&0y1&x9@_E?X$Nkl% z87GV1Kk99))wp*}oVrXLFWxnAfhUhm9qpr9qgvA^-lPa=Zq2KyfDM@(x*U4V3-q@)bNYevzi}CRyLQv#HeP@sq|>r~3YP zX>;c-*01pQb9Qt2yK-$yGxx}zR;aP>{GAHJ+%yEjVo#^Zl)WpOdK&5rm8Z|(ElxUM z<)tI;9PA3$FkCk`dCrH$Tgx8yF3(ct$TEMheYH#8Xs}IL5G#}>+gks&)h=h6OT09Lq`Szw*qCM@@x zFTo+$VM@1gp~A!~=U1Jb_?3al+tkCvP}0tAuQz+whHsi5QX7J|d~k%3oO0{ZuAy2v zHt(dmnbL{Z?BI5mbk=g`0q)yVO}bpYtcM&|2cC7U99yf#Sc?0Ze|(5b)c*W@Jp9-f I+{5?$186w}%>V!Z diff --git a/TMessagesProj/src/main/res/drawable-hdpi/stickercounter.9.png b/TMessagesProj/src/main/res/drawable-hdpi/stickercounter.9.png new file mode 100755 index 0000000000000000000000000000000000000000..e17364d60c65a02c771711c0b73488a76baf2020 GIT binary patch literal 1425 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbBBuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFe_z-M3hAM`dB6B=jtVb)aX^@765fKFxc2v6eK2Rr0UTq__OB&@Hb09I0xZL0)vRD^GUf^&XRs)DJWv2L<~p`n7AnVzAE zshOFfj)IYap^?4;5Si&3npl~dSs9rtK!Fm_wxX0Ys~{IQs9ivwtx`rwNr9EVetCJh zUb(Seeo?xx^|#0uTKVr7^KE~&-IMVSR9nfZANAQKal@=Hr> zm4GgVcpgi&u1T;Y}Gc(1?(b>t|)YQ_@)x`i9>aM1aCgw(t&Tg(wu11cA zrjF(?y)OC5rManjB{01y2)#x)^@5T@ZUN9{m(-%nveXo}qWoM1u$Qeeak|CA4X1ff zy(zfeVt`YxKF~4xpom3^XqXT%^?;c0WDDfL6MkwQFtrx}ll9bTo8K@nFtK{NIEGZ* zIx}OpACsd<8~YMh>EvX^8(xcAmv${>jAO{r$y{P2ax9_cM!+fK9s3$$ye6_6s6`ZQ zG{{DdNVs+ntgbQKPWT+sNSQ|wo>rg%pJCx=0MhTn|p zN6GTOtS+}pPTdLb^k4qpXhC!5qMfaW&q%NQpe6Tr-nSdCl|w!Xv|Wsux>3-n#B5n@ z_>Kj-E-RPz2h97qym=zW#ljB>&ov4?oVt4)D5f%9*dpb^6 zaZFiisU9x-qd6(W+;Tc-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvv ztM~P_^2{qPNz6-5^>ndS0-B(gnVDkcYH93bY3%6gW^QR}Xy|Hc>15{QYGPn!Xky`J zU}ES9)9aF-T$-DjR|3v4~Pj*wm=R%;iu*SQ+p9GS@(WpjALM6l<{CTc(OaHjL;Qv$UHASb^ zAKK8JFWG-+Lo@$2!M3%v;XbQ(1{%HY|NqWzbNUR^2&?D5e^-iJPA~9_E9f;;`M%~G z`%j;Hlea&KjXhQU^jN<3vbL|!&bNN}Rk>f>hE;;0d}igcIt}Y~P}$+>>gTe~DWM4f DI`pIy literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/system_black.9.png b/TMessagesProj/src/main/res/drawable-hdpi/system_black.9.png deleted file mode 100644 index 14865b7abbb2cb73105bf376c29dac3699498376..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbBx;~)ylw!KgIhSTf1!hUtU>0b4%pytu`x)uLqTPAGOMr=GfV6 z$^FSbDe7L65`#um026~M_bG*`-!^e7btp7(z=>atEP^cG16zK39hQ~8^I-Rd*Otp< n*M#Zvw6yH{T(m(;;UuGm%Wnt8Jqyc$&SLO%^>bP0l+XkK5C=(% diff --git a/TMessagesProj/src/main/res/drawable-hdpi/system_blue.9.png b/TMessagesProj/src/main/res/drawable-hdpi/system_blue.9.png deleted file mode 100755 index 65ad2140d6b7f74cef8a166cc80584115e3f323f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1127 zcmaJ=TWHfz7!Fg1co!9QqQuOH2{viEB_maY=Wp+;n}Lz0T9^=+6^mAjr852NJ9@(O`H-`Yzd@{Rb38f z?20F~t`1GmsTIq~8c)OmCO|6bnOiJZ^upAru88;kHA9i35Y!Q-emm8yG>{T>0Ljsn z0WHX~B+t`q702`JGBOloLrf44KEPIq9505d$+3^Z)*QV}Ovv?Pw(u!Tr4X`3hRI|y zbf%JqPCLU2g5Ya}LII2jxSbYKy@2JG=M`k&YK~ze16ri7sJ6m13RBqA-yxWGLDq7| z(u5Pnc&g2?bkGke4^))@Lrt@Qc2NTS@%Nv?ZnDz`Oaizt?P$1gZRNfxTa+B2BIqO` z+>*~?Lkc43rl3tqjXYV=WLP@PxJyUziXz4=7pay8Vseu4ZmQg z?F!B=ee-Q^@27)ZFIl@)G@9=PYc5OD>{WM$OJNNF9;~Q?wDqHh@(c+Po z)jjF>@ByQC%FEaHY8O_V{laaH7~@Z$nY_OzdwbL8?#L5mBDs?&DNH}6zuW#@tJ_>F zmOOksft$HAPJf)?tsW{nb^6i+rnh3?`ht`9wNUs7m+Rm7sQYs6!}_C#c8`=yAx`{c T9uDfMsQ>h1(YSoAu4UIRcQ1bv diff --git a/TMessagesProj/src/main/res/drawable-hdpi/system_loader.png b/TMessagesProj/src/main/res/drawable-hdpi/system_loader.png new file mode 100755 index 0000000000000000000000000000000000000000..f6a19f0704d80d15c678bb7a497ddcab50c5846f GIT binary patch literal 1647 zcmeAS@N?(olHy`uVBq!ia0vp^W+2SL1|)l2v+e>Z$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%u1Od5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|81#=KlDb#X~hD#E>34K5C;EJ)Q4 zN-fSWElLJPT$(b-ssbzLqSVBa{GyQj{2W*)24v)y2=9ZF3nBND}m`vLFhHasTY(KatnYqyQCInmZhe+73JqDfW2&$iOVf6Zmu}Z zgX&GeWpX+|Py_b1pDD-o>$SUqrKfi95=?^X65cYyIsEe!SLi&e_f(~4j*s~qHNSn8{4K|A#&NfxVEU!A`;ISrBy;8Y3o)J5 zzt=U#w%)VexBrcX@r#ufIth<$WJEXezG!)zaHPPi|3)ffK#KZKnUDNy{7-JIlYO&G zVMDgn4OPbk@zM=tjtS`{8_XONj(>R>7iD?lv_|E&#mkcd1tJ33f9r9)na;OOk0ZyK zJzA7y+p1<=Zl>r<2cNMto^9K%8^7@JrER(?`YbNln`#y|`*JYM?qFIR<#;V|#hOc5 zW)D@bDz_gj`zfclKk(v2KBbt|x_YY?Yu<^Ba&v2cS@NprM$n4+S{A9DZ(gk2a&gIIC#%{_d}MKkoaWAKr8?yb8zx1F`q4XHY@#Kd4}lkzNI?geHyr?1T7pLNY9&0;>cZ;RFj zeq%NM_e*Cu-}{`*h>=p8u=b)Hc>I|61{>H%o|n`&ZtZx2~lJD?bx| zG1Y6O;N{iM{swdXzpnnjcJuPk3pqs--v1AC3_qLxg4v&I^QlYMB458*&%n&^pUI2o TSm=U3pen%A)z4*}Q$iB}ggJe) literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/system_loader1.png b/TMessagesProj/src/main/res/drawable-hdpi/system_loader1.png deleted file mode 100755 index c73039957e6efac56da0261b2bea026405b550b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 839 zcmV-N1GxN&P)8hEGGwn>fr!#y1$$!(NlYU)?z1NH6i&enxCU3@x{8Odt}MHLo>UBx zhA+Vv;EVuu(r>r|e}i}76IDM%1z1*Krs1)G-_3|G!Z+a`0=WerM+G(xFG_S&X+nG* z-hoRJ)q#Kw!v*+Ch;?bn^Jn0X0@w%>Yzn>&pP|8s0rLX*3O)?-ML$ZwOYr>xLOGk# zLwHVQ#D?Iz60Im@$)C&1#=CyO80rB$N%7H~WX*c7shE&R#R;k{ZY(!?1uMiL{W@s@ zo(&2%9i&hr)Y9Xp&$E8PcpG$!^br64dw{e2fE6NY>Ah;qExRn2EzJz+r#zxI+6iot z^b{{!^Il+FggMezR}r;gH?UdKTO75^PB2SmD&6%TSWdG}=%sT=$CMpxlFU)g88K6I z-VT;A2rSzMOOyK3swkCigQdtUCDA}eEW@Jp56)DuA&U$ZgPj`4)nKr?fncW$Ry7T3 zb!GX4!Hx|}$Etnj@yj5vvK{QeAh7RtuziET4xC^$1E3DkIF9UKO?cY?ux;lA&Dzqv z&D$9)M>pBk80<6Bu3pfnUZfaz#>b9ik2Q zTIQU5l;b|vl;0gvGGI>g&iM|t?jR0QJTI;VnHz&1z45H`f?Dr<=PCT7J6?3(!(U~i zPGNzy*N&p>Q25pEHELaUQ7K+a`PSQ~UXLyM`NwOL^B<`7!i_IePW17-rewsPwDG=9 z&s3z+k+j~D)ZUapo+Wuf(4}@N(slPq;Za~RgqrvwCP~q(M|8?z7Uy391^`Acm=@7g Rrb7S#002ovPDHLkV1jafgSh|z diff --git a/TMessagesProj/src/main/res/drawable-hdpi/system_loader2.png b/TMessagesProj/src/main/res/drawable-hdpi/system_loader2.png deleted file mode 100755 index 30432e96db2f3f4d8d4cc9942958d4b192093937..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 813 zcmV+|1JeA7P)cOG}{Tu<^>1+K!Q@E`a$+=4qM9v%ci?Ds>4A!_h>cnTgm_3^I4za5AX*3v!96d19k$QSJ5%81GovlRuLTt*a&^SaNSD!K@wQKM8hvmH{h%P3pQQwLXlN>JkOiR3dS_(uGk^I z{{z7JS-|QA>{I=SY25WRu#@lwu}^b|+GrBkyx1w8Qf7OBaT1;udvyg-8;Jv(5xd2x zU5tYH>VRmw{sH3>Z&|{dIcmN*DuQ(!iPn&TL`wyY$FMbTC!|~{3_jBPDuk}=geb^hTx+h=33KF*u8C-Z_mKA+v_~m zOB|B#N({A>wD+c+pr3@fSIN{!8&O%>Aqam@%5!hF48ICLnCQ&83C|S>#FnGy(G1B{ z%MnZAY&ohFaK>5;&suqaQLIDq&UaSwuSvGmuzRZ#b;%Pf6mJiCwL2qb`W|&L=UY{a zL}J+@53o=ykzaz(NcVF7u;LqTNw*QRsS<_sKjjFfi*xUsbUS)@gHy{ecXri&xh01v r1r7=2H4q$sir^1q7ryWN|MUOfIaOV? zJuhcf4nYukkqRk>$Hn+toxKSE2hQ~!#luPzszWs}fl{&sh=2+k02$HcMi2wC+Irvx zC?kl4loqc;ba=NpiwhK>hsWJiquq*+T)9|Q8Ngd zw2C$h)U;K_m9}QZuTopLkY$d51$2O9($SNKEjS`IqbuOKyUkGK3g`-(&LWoJ>xmb85QcVb% z0>h+IDLPd`L#vVD{C>Zy;q`hj!eh4@NOnAiU6@vofUQ`Xi8N@CuAa9oHF1OuhvQlI3NHu+0Kd}*31L8V0p21;|)Kip78u4@I|#E~UnX$OHCwxCYV z99hsZ=Te?gZ;q>G&Lx082L^V#g>BvOJhvEMiQ$M8 zh&yjSp68Z6WphK9dqWN7@AKK+53^pH1U+&i__h$q$8U*Q3v-L*9j7mio~ysmy?KX6 zT>CARe750dCzT%#FKfT850wmeU9nSL`$i^yJQM1V zU0?l)zOjC-?daJx;O3eB#OS^9i$$kc-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvv ztM~P_^2{qPNz6-5^>ndS0-B(gnVDkcV(#K%>}u}pW@P4KXy|Hc>11K*v4~Pj*wm=R%;iu*SQ+p9GStoHE|G>b&$nNRl7*cU7 z>CgZF_ROjcobywnqi4$qbWh4<5HMjX z1wJzs@&)QK+&aaxWJzNLYlk_rp?JtEUIBKdkG2YRd?jb=MVK3;vK!y9C`@a;)y4mZ z<&nFC4Rc0-{2A`Q4u2Xr&MF+>J2Jhog3E@dL9LcCD9&L|BM0*{#zKjJ^ZGG~8^k*P ze$4Q5@~ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/attach_video.png b/TMessagesProj/src/main/res/drawable-mdpi/attach_video.png index 67ac2e3c76effa5301ff32dd9d951f0d826b67b7..4a956ce6a9c1f30c32e81117653cdb181380ff5f 100755 GIT binary patch delta 1218 zcmZ3(|Cn!rC!^9vFLlPrcNmo>XEA0^-o>Olxtd8@!Q8^x)YQ_@(AC)zM4CDpxEi>b zm>C#38#}w27@1DCW0HX>GQz3o8IwT_#3TbZT#A$wic5l0)2veRlS^|`^GZBjY?Uf< z3-nSlQ>>t_Fu~)iT3pn4HVh8zGa0AxAtk*`t|k~ zT|)#MbyrPaeT6G)GOL>->&}bUmlX+%q_Bv(aIbZJ8e`x#{%lw>&XFdEdc zwpkyTWOM)Iug0|nPWcIn43DoTRjg?IsM6iQ9&ve>gT#Sj<;<5&tC#(B+#YN2aAQ7C z!^cpc>bpJaGu^TeORcU=WDq%jj`v5Pas*E5a;bTwlW7xq3!qsL&TLmlrzi>$U{5 ztr2C{ONYC<<>O=9sBJ7KWkj04-069x%gt0GN3n^cw>@pSlHK2X6Y zVS3@3;7oylXAHfQ9<1PDwv#x~@ZE@~A~`{*M)h#RayFv{$2T%RD7EtUmQ1OM-)5x{ zZdt=`k>Vk==XL!vhb5O4*h+R;3M||vV&yYO{F92siESqg8H9uV{dP0%z7KLf!%5b} z(t_5|7ZHChx!4zcO6#z=Ar!t>)5=im2$lm){9Q zvP}@4m%M^?Uv`F#spr+C-t#GXlkz4%)?0IS)?LYr) zlV?fS_a2%t;Z|B0_v%>Fc&Fm^MYmO7on(B&VwHYdbgtTYxJUS2z5Azp=a27;SKd7I>iyrNiNG ues;6!ND+=d#Wzp$Py}kWnHjm7xj4DHC@BC{0?ojt*V)C;)X~7z z$iT$J#L&>y)Bvq)7QJ}QtSSY*SByxDhY{6 z#AbH4^eQT2vx{ywlhfq%x9L(Iz#loV+1kiNs$rn=w1;qHUn z4~jpIi!p~ZomDvMww2v7@mb&p;~R`|Z2M=EiBFbLU>K-sf5Ja@yC1DnXem-jxhVZPO;yZ|Iv>s_NL!;hZL#qPqEOgQ-%*im9B9 zqKqa7v}UU8@CaYurs8-gNs@mB&jR)-rz;Ndh7Pf}Rubc~s6Sw?~pa}Qgu9!{hONCbkAX5ki6<-CjWsqn!}|R z?RfoB`0`);H~$#9m|Cu#CiOrlZNKYNod?G(7w$CDc3)sPKh&0IXEEd7Gk1~}GA2n> zAM2dFl7C0@vWr4b-#h(O(?9;O#6n}vBj(E&&nJsU@g7)M?;!W#Xu{LX9N(K^?I)@j zBp<5IV*9YX@l^1{5awe)oSrGaG_qWG=vLZ|Qx3**6W0m^8#SEfn0?@T+mSzMJuf>? z9Y3}8(2EJD(ynnXk1>s3uBrBs7wZeURz3bxKJ~}{i&tzOUitp-*#^mHGncssZ@ItW x-^D8~Dl-cwm-#Pzbo(Kb`$dMd6Y-xZOyAC zuMl}mha_=BxmOmhb}fv1io$N^-21QZpWpNSeE<4>mlQgccqc(V##n-xF@a!bYi^Fi z+2KhfBQqNk32TnSc(92pWtr;shRemR)n@L&tVf2{d#Y;HLS z_kX|XZW%399NjG>)FOEIezV=!TnyNTxs(yK1pv}K3Yp{{|54=QgPBi-JNbeVvk|66(^#U5hT@{a^-)l1}5D2J^c||r8l#YZR50GJJ(x# z2z#pCdo1(Ms&PhW>&KYZhtG^VjvIGa5AzQ#4sUjEN>;2Tg%Z~RI3<{(3BfQaKn|eO zR*+{JW5H;ylN^2RgHKg%$x~`qVvg`lA7V`@?G8d!(WjsUs$7B%T*#PN(zrLiJTucF zmO2}6XqizY4d_}Oh|uUQo*_XB9~(7<0&eNw zE=cuXZDKanb1smLb#Ao!?dSV`sl>|w+)HLn zPM^=1@yR|%WoA_*leseL6J={>jl{8c^csNznk+`qJ}zEuVRQrRiA9!)Jt_yY4c!)= zQGdK-(ip+R(E^<*%am@&yu#e2$9&HtBGB82?}b2M{xT;KK8+S?$+M=H40np(E_n|p z`;vWG^}o#tW8e4*Edz&HOR*kU`BANNa7g_veKJ#2!u71?z#sUdw~ibw zQpDC&rUeYs!1gJ$l)I>H^>>SC=UmhzB^jO=LcD;4LQ-Ac%cmA;l6qyy4y#?_a+HvH ze?N;)lN|KKhN*)pkFgh|1Y?5YsYo*ii$vRa8);rMTu-(|&gI5xqe|D>xR-6NlQ>4w}~U*xZ`w1}THSPX7GaP2~`(Fuf# zi(*xs@a;E>lq3%mq|(p{cs zw-V^%{I1#Q8&0?dv(~h~oX!ZlR-gotMId#e$|^rWHKaNh((cy|FkQU$HD7Ca_}!J+ zf^`M3RUP{jTym!J$2$4N*0UmEdnvsq&0zfVuXot{Wv5X;R1_X}n0FLe3a*uDT= zrEktfe}}GZew*+Z$trort9e|HSYvDyF}16XuD^koV<2Zt@}*qkdz#g{`y%xeYi)Pz uPAiJ5(}PI5CeP`nJ%=GgC`oGgk zcPKwDU|?Xr@9E+gQgQ1|v~P}2pvXRF;d)0KEK;roToC?tJ5I4g~PIlt^S0h!jlulS_(T0yRXjoV>^9d=L4Mr zr5We%*D~F2j(t$PVXjNGU{uM|q%vLu9=9g#gI^zH8L0iNVaj1$-&lS?KB~$=%H^O{ zfpx?i2fv=3+%?>0&FTmFcRg$P_#p6u=#3WvKleLs;@k8l`Ofq(wiT?_2X<(#yUTDg zk70h(>`;#S9*am$B}TCYnM~#>nw{~ioUd zyf56j>`-~g=Y!s{Emws36Q15aP&jLC=DrKr;`2TnFy(LfwDirlU7G$9-pPk0PRD#? z;F#C&OmY3A61Jx;M?bXGU6m`i$9{_cX$!ZPGsEWnoM)rt-_{qdGI$oHs>tBjnlZ02 zxMthM*Ua7mT=H|P4%EqO=~tX#m#Jh(vp@Cvea%Dvnx(v=dlp=Om$%{Ex=)MG&;56| z?)J{_^UoV8-Zg%9Ud4dz&S7cIodO5mJpVZD+WQ;Fc6mH+5bfH&<))M2Yb9Bx*CAi> zuD+dXH<@vX_v$t5Asr7EIMttG7BK$8)w%LTWT;R{heV0iq1y_XSDD2+9xMz|V|m7M zf#Gw?qz5LUd$T67a9&QeQIK-r*O>6JA#hdIRTWMlE})2sEAxNj0|^YJvJ*HNQ`s(P zaPpn1I53-`>Oi(6e}&)yl^dFm8T*-DFut9}+hA%uceyIllA7>cwGPYPeyGnaD0i6j zK-ZdGNtf|cgBXwwnda2q8C*M$r8-jFlHcJ>fUjRLL)!kCr4#uW4{0Wb6#Nt|(Wy(@ zAs_KGy(6ngswS&Jc*fr<>uN^hK8~YPBjp;8)!cZOc47|qi~MI*@=^+Y8`I}l%>32x zI%8GMqCdPE@o!VC=kP_h2G%UFuHRL;#%U#^g~$o!dzou&de`2{D(zUqK0$Eaf|V@x z*(+>BJwuav`cvg5=}msDwI+1dUdfDOr&G0$s@7G#UG?0Hjv0fxY3zqYE01e`@VnZsSp#lUcLm7fusAywHpTlm7 z^3i%OkMrq1K}80mco@btEW)O!?wzissKXG00vyuKIQ{khLmKE>oIb#(LupHdMZI_2 zh6CgMIdyzkjcN4G9iZD4h=2jH0$gLnbObj}FX#$n?rpO)Sb*T+IK7xuKAiy~vLWD^ zNKg%N9Ee64u7i(8x$Phv;=*i*ywM=nA@ETl+zFN*nnbg;K_M$8mtv7soGxN)2`pPK zmzi>eLG}>K#bPl}BODGAM9>*CvEl|zr@f*eK}WT93+u=Po}yAfB^;+ori(`~tg5W( zER~5AjCB=@<(QCnqzW*d{y)?(s%Qsi;h%i}DeUCNEXZb|gG#na8aLSPg|Y!VOh+QmnF%tUSt1ibY+XU$D3AdOBPk*LzB4OCbm{L&qv6Wc$Jb8IrnYh z-Gi}vYkj^a-C(q?u)ksU(Q(jUKl^ZI%fTCs?>6-MPVaiL?CJBFriN74`QnG;flaGm zM2%d$B#8qz9@p1R?|RVu{_xh-e(l@b+>hnFyD}GOJ+;2Qt?%y5%;YcMR0p_TzwXSk z*;}u>=vSF7laZ5dLoTrK)RoDJ3nSvWrk8cIQ<=OJi8n` z^m9#CoZhqBzlq0hUhfmn`R9``a$>S6ECVR) O@4Bbte(844;fdcmg=gXb literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/bot_lines.png b/TMessagesProj/src/main/res/drawable-mdpi/bot_lines.png new file mode 100755 index 0000000000000000000000000000000000000000..8f7e13f52dd2301940d29a77c3a30a041d7a8b74 GIT binary patch literal 1014 zcmaJ=%WD%s9A0S=jZ|9j(b~(n1!=|XBWbqDlC-wj#0I)GCV}Rro84)%w!1U#PR+I; zeH^47q@J|>BP!@guu{PX6+|zBqBl<-1dsMo;%u6v9*oPd^PA!OzTb21Whbw61kME* zhUv(RD>=IRcHr1i`oACg_=0XdBvmANG)*d+1DR0+l_1Di+6>G=%~-hg4#pX#jWr8J zQdB2o9a)^_V>r*kl+7^l5f5wnEF_==XG}Z6{(8Q{0@FyaQxR2AaT1oz@kIyb7bgq) z;;bGs*pXon_hc$yL81ZAnzLQmORzOvncDs}&w?6+%qG}_po(f1B#{F_gbN3CK@@=` zapGV^lEh0OB#0qipi2shgK|WYLqnkcvDBMmOv^bXUH3ARiKmU+HXsc@ArhnyK+ zjKyNUMko}dh@iV*6U__SZeK$|fv)bDn3%{0zM@t_^CZF2NDor5a8uTH>t&(^<2?=Y zA}9DMHGr!6f2d_O(Jsls!+8HG>=qU<k( zTSgcp^AhNvGHnA@+<_WiRppHB63y0OMoF+#fiq1*9!yJ8IHDxeikK3`R3w@jQlg3| zNJ=y;48^1dS3&x`1#Qyc8i!n^CD$JX3scVubj;h(NIS>^wUlMEbu6PT_3B)sbu42o zxjYSq_Z$0HqZ?OrdVI4vw)D^(d}z~Ycj#E3%wBj(pTy0KGFtGymiDUEk+w7O<7=A_ z-gM*s_Lb9@-`~A@{@YUfm$uj2KLT6J-iglY-g@8z^CUWPZMd_#zux@c+WB5bF literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/bot_link.png b/TMessagesProj/src/main/res/drawable-mdpi/bot_link.png new file mode 100755 index 0000000000000000000000000000000000000000..76d34b503eced9d14b7f68231cbbda9524b4efa2 GIT binary patch literal 1002 zcmaJ=&ui0A9FI=6F&*r%gU-t%y*RK*U%I4CTn+NCNrUDn9GQO8d|blmHqze4GU~bW#>dap?g_Ww`bOUG`n7` znCr`?Y_XY(U@}ywfP;tuLTAMdlu%_`x(c9fhVz?$MXevt;INP?AtT-X0Q|VM*gEi2H sz4vWucWmon^JnV*z}x1X&&qAy?F%U0T@u1Ck^>;{X5v literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/bot_list.png b/TMessagesProj/src/main/res/drawable-mdpi/bot_list.png index 0c79af3e2f37c2549764ab9d34e334fdbbc43d98..41a7ae2f0296cf9114f62c57e806acc70ac693ec 100755 GIT binary patch delta 514 zcmX@W(afpX8Q|y6%O%Cdz`(%k>ERLtqy>SPhl34Bwy1{f->9g{6k}v$X6y_^Zcc8F zhK8=D7H+QQ&Mq!Srj|~w7KW}CN(vRZ1-`ykF8Rr&xv6<2o-VdZKoPx^%oHoAUKd~RKLfja}&@<-#uL%Ln>}1{rUgjp4loO zG}M$S=%~XRh9gN1f22CTGZ(&pdwcu&g{#wD%vmxV>^uwwjExhT_A4B2Wb<_qOK~zj z!0hqWnRf>Fky{RDIF~+mIQo0xD*=WlLK0ztftFlH{x?<_ZL*m3CuPN-z?4EYljl;7 zFZI~oET|Xul2+p0#4xu^Ld49W{uVtm*xb#muIYGdm=O;E!*Vi?;1+;3yeu;&D?mL|EYT0)`;FpG560=pU z<%BMULld4J=;%1~bZ&{lJk}%g3p3a{&$B(^NpWmoU>0S#s1U2}Kbi3%Fc26#UHx3v IIVCg!0K~ERLtqNUls zck&`81DFLyxD+WV6qf|0rdg%nw!j#d-pP8*PW22z*Y*K@w8hiKF{I*F(x3nT?U^}V zym;|}VI_|OA9Io}8^;c|BdZ%Kj!o4L-`Bt*;V9M6<;Z2muu+S-tU$Vhxnb5i!>sJ= z&&-zL4H0dO_7zM=cKJ9gYT-D_6JUDOC&0Yc-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvv ztM~P_^2{qPNz6-5^>ndS0-B(gnVDi`V(MsMWa4b<=4NbUXy|Hc>1JYXVF`o=1}1JM z&K5AeF8Rr&xv6<2Fuf@Vy=FM|f|5dR0nlcb)S}F?)D*X({9FaFm#s2!yTur%c~HG6 zxZPrcQ?EYIG5Vm0MT%&c5HR(CnDAr^Chh|l-Qv7$K+v$<%493!3?--{iG)3-a(7GhNgthtV zv`1m{uk4z0>6RF;0cZJxd7ZZ-rgknjY35g3D6cZJV$!+h)w|L@Xl;2bB^>|!)+O75 zb&ioY!f)3_CkXH~=5A14qnjODvhd4KHNmBezOnQ_xUyyagsc_nmFtj#a+p&-7w_%rjK;L%9&Dr;Cx^A0F-;yyu_2o>JM9S2cQa^(%8Cjp! zHC~%h#>>;onYSV|GiHV#@4lB$c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvv ztM~P_^2{qPNz6-5^>ndS0-B(gnVDi`Wa47v>|$!}=451OXy|I{Xky^vYU*a>WM<@K zX<}dj)9aF-T$-DjR|3v4~Pj*wm=R%;iu*SQ+p9GS-Vee%3)w&Z1;3=45_&F zW~#OK;Q)y?|L$zvj?H>{AI&Np)!kdA_Po(s)VzKEf+p8L%t^8(1s~*9!Y(eo5-Kh( zyKBX4ahFR@10Ooxpm1!w&tOtrMmk4$;Gqg9Md@+6u*Skr-5;vd4o{}1M39# z-ODn?nz)WIvG^tkF9}J#$-G%0wp#y4Et`L{w|`;fBj*jyeK($`NyOaTX8U!n0`Imh z-#GL0Sez3k@oe&6H#h6?cEw0ep)-xD{=3Cf4(>khvsAx3_2t3BxYzM*DaW)kn5Azm z5UFqOV)AU;TsXOLNvQam%6T>Mp^_dc%edd2W)6#WG?#eTT4U<}PI+ReMOv}U<`+T- zXPBkMUX|N>Yz4=!8#|cU6*-n1vpxUYHDN;`Ti4dG<3^TiR1IAwBs>mloh~i+`mxrd zKPwg(AK5j3>#Hq(&Cwg@xnDT5IDS&a_0(jaf1Rqo#Q)5DpnK@odZiPt8Yemv1oyZE z{E5u!eju}@c(!h%`h$Xii_afl4!%~F(EfeekNz8tbH6@vZeV0!I+k=~X~!H#P%-7{ L>gTe~DWM4f8^p_Q literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/bottom_shadow.png b/TMessagesProj/src/main/res/drawable-mdpi/bottom_shadow.png index 3e170fda5d87e06ded15ef241c749653b6909de4..08ede3f2923c3f0843ae86e5939ee8738c7cc84c 100755 GIT binary patch delta 350 zcmeC?=;xRq&K1tV#=yX!E@vXOQBjpC+SJU{*v!J*)Xl=s)X>n?)XCDq+{Mhu%*4&i z9LO+JQmDu+@b$HF$xklLP0cIubg@+eis+?erdUDsn&Hqpc_EXbJXDP_E;S#SWMOJd zaH-K{cCP;&wF!PcB_#Yj6-~eVC@L=_%x?BGlR8^5x(8tuO2T?_TSB z_HFvJGX{&ce)Cb?&!+f+lc{Nff>H;kP}39zBbunzlgs1t(k6!~~@o zoMKH=6O?ao@(IVBe|DSst3%t-g0Ei-o_^wcS`^DtSlO;{zopr07LS15dZ)H delta 346 zcmeC@=;oLp&SlNP#=yW3q4C>#qoOKPw4=F+le4Llxuc7lp`oFxiKCN~v$L6@xrwWp zp@FlTnUX?9Zh^0_l}mndX>Mv>iKmOL5>P}hB{Rhes@DRC-pLD@4CSF}OmV6C$RrC> zV}?tOF0*s}gmY6L1KnNk>EaktaqG(EK=wlk608r_=4&op;*&P%W*3#+(wRiJ2=)g zITZ*`Y4Qr-e%I9gK(m5V>R|K-!7WXB9749|{5c+np3SL|aq0M<_gMP?!weyo@T2|C R&wy@W@O1TaS?83{1OSFAaE$-} diff --git a/TMessagesProj/src/main/res/drawable-mdpi/cancel_b.png b/TMessagesProj/src/main/res/drawable-mdpi/cancel_b.png deleted file mode 100755 index b0dd70ea03953451a6f044cbca1f31f1d007923f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1731 zcmbVNX;2eq7!HS)LmE-B>VUH>crlV>0|_J&X*P+PLO=qNfLIC10ueSFlEnm6nnF>D zR;FXA2tt%9RzX^h7Dl8P94b`tVo<t9SI_l>=KnxQd}wuWy>*?BC}#BdQ?rYNu;1)y;>$uL2w`eNm8mf;80^T2q+aC zP{I(=L~0(AtlX5TK_WB5qU4z=a+U%NUJnH6*@OU!;4(murmD1TJqMiBWfODjHWdUW zA$ST0oN`Jk+6?e84FWJIe!g-V1OZGY1@dPwnb2B*PJ`%F8gVmyA%8Z5$)*PY(-%ls z(Hs5P!hv=$d5|GF_N zS{s$2MyO&$i=}Ji#Caro&5()Qz2A@(NO;2z*C>fYk)`r6c{+-ya3P-q5??3^rGm|a zAubDI`ZE~c1xO6(q-N1x-Og}n{4?!~;vvFx$m`4lX1`7Ce1_TNGVHgg8{b3p( zVzM9sgE7Mus|jK#HDcs{MqB4;wt`6&ZvYlRBLhk zr&wmThzhh$-<3YGc-K6Lis%>((HbY?mc)@rwxdEmH%i}o^{6>zA$LjZs*s}i6xUQt z=~j8tn4RrX`Z&ht(?vgSJfS?tdEA=g^y&j?uTd|K44=cj&{G>r&UIMXosE7%?l7K0 zPv-3(8ca2(2Q=2M6ONf1@uZ)}2Z~F2#>=a}99jn&<^|f3TkO=!!pt5cteh&dKyOpJ zFZg2flh4nS>+X20E_dj*yKng3+++;i;gmql_9L4VsEtSa^0)KG_?!K`d zx%0p>T9(l-Wt|RX+pN#t#~)>QU#@a)JF=5s7v|O0?^chNhg4OnZpQA($(OzE`5|dI z%ii)`&M;@!T(Wt)h3V?jW%;(P-&kP2>0owjr|%F!oXT6f9$v1}o3<}*>@t<2J$uof zjS-imw7uy*gAs${N~Nf<_-_BUtTPmEQ?<+8n*6f1uRSfSuF})Dn#$zcN5Z3j1AGI2 zl5HJxJkGT(jd)rRT9;S5D!&2l?d$$#k8QHS@P?cDHuuSEve?VL>pEJ#Hem4M8oQVS zo9x^XdQOQ9^j`SvGx{0VLy!EI)fcqZ@jWfkg`}}HW3l&)y`behB`~a_v&Hd5y6xg@ zbCD0&=ptR`@)`|8XFUu64E~FW|P+&u)O3!&ucmL=k}<@(Gw97Tj)aPVnF(0n?{cxX;2@! z)LFzFJ$taVkab;-8A6_?#r%1Cky*MV_^>3kmwK~=Zu*MBxN^Jhi~Cd)7P7xA=vtGT f&EGE1wi;|ml0b!b^&^K?>u*IU2;*15@!9_XRqdkK diff --git a/TMessagesProj/src/main/res/drawable-mdpi/cancel_b_pressed.png b/TMessagesProj/src/main/res/drawable-mdpi/cancel_b_pressed.png deleted file mode 100755 index 41215327442bb21c6ffb51a02475132141b155c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1712 zcmbVNeNfY894^%o8k z&Q203c}kNEOT$;@m@!R`N{i;CqhdWfG6D#*NoWBAqjZ3c$S_(Yws7`@u7sXDmq9i# z0in{v*^^EsD-!@2X~qB%SHMAe5Cp(57ZQqK7zzgXJctkS=o{uhLWu~L@I!#9i%nZI z>kSgMJZj1o{T0qmqbQRE1g%yp*DBzW=2Q?8i^Wb2KA%G)IF@W9rL%F27Qbl)Ic7o4 zxQW6^Bj8ljZ6dR%a5nAfWC(;wseC1Dv`i(6P8n#^nLvok0|~+z*96)^sj+|Em=SH! zW}7fjjakSnGfLOP;5SXCbN6~fP9W`#B;JhEMbTx*Ni>VVj8u#~oK5d=^|)RllR}6X zf`zb1AyWt;2;uXkNE9rU!2-Tm4nflzGjVx}D3M4gQYhqn5dRkD!WT!;#fTCs zq@rnVjL|~rj3_p37pLt`apkY&N@QkCN0DYNNoGuUKtdWxk(M;l1jsZn5Ril$^`zCZ z+*zKiJ~3wcXxwTl&t))}-7#`RYwNsn@R#&O$l{Csu}hYw%>H0DPSkHk z<9##6^GAZcz)w1JHIX?3NX_p})n$o|8quHH1&v?4n00b){Glgp=d_QG0Lf)`BDTmZ4qCkD`lfqM3QyQ)Ttb`vgJIZ%fOsY5OS8 zZ5|s61%c=J3yUC7;S$#{JS4CuHGvn`ri_nRd{qvnp$D@c9ogW6dY7!xthk``j5yxu zU!0h+zuA!gSC3oAHs$4;1^LgfsZO-w?rUngD&~(|{<%N#%MOoGVgG$=-kiZ@jA9A% z?&DMw0{A8Op5 zS+g#tPTA(sThV#C<6McakK@dqvdh9%^_h;t4gO==krm5$dvgVset5J8qKe$CH0N&q?&#DB^~y(y#W<|0>WWHuI;)A;*J|{ehlC%C)BQtafQ-u}{UR zrvny6b;^qp+H}y#!X3emEqla3-KpnW`c}CKqV1Y0v^uLjA*}0xPgQa9**;wJV8qa_ zF1qP4V9P4;-x`ASwt1D`=0sk97J%gMDXnFVAN&=r+v=9@*Ko>kNflu)Wz>7?$;yr@ zo7=Xli2bAd+=}Wo2MUf@8O7)wVbxf-`@O!G*gHMzO>z1*QSI%Dh6fJeZJ+zh?tb_N zd8elexYgA)mv^y-`5m*%wbP@&ai?G&*r>g-ZgorpX14~NY}fXadL=AEWJ>; zuqEw%wdeS*#h;@OOETd3&BGg>WTou=qbtbk3Hfmza~|XCd+P%0SO?y4{zGCED*0*Y H#_j(AzE7Br diff --git a/TMessagesProj/src/main/res/drawable-mdpi/cancel_b_s.png b/TMessagesProj/src/main/res/drawable-mdpi/cancel_b_s.png deleted file mode 100755 index 7de64f7acad859070f695a03653a6a635b9296f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1648 zcmaJ?c~BEq9FAN?5S#&vh)&(EQ=kJmAu(Bq3}iV{2_i`))B{7ZK!D9I*+oKdGzx=& zVry-wRSOmwZ$LyWw3N$=6)RShv0AM`j#N|*Er)=#8wBhhr8~R(-uun>eZO<& zI@r0{(P%UWaTpv$t)Ax3)`t4;o2o&nWf>VPC#6_CnXb?xv_KUWhX7(!k$^-Y3ROnx zHN>Arvjo*LIVqQfLrM%~D9jj!4#g=pjpiSq!xhS8gaqP{1hqy84*bvn0&0~IjOI#M z5?q8Ns>AeJM5>RFDfP)pfeH**1NiG8N&rPj1)xJyGz6p*g44PXwKtoYATSLflZD`$ zpyZNBK!j-#fXncqD_Lwdz~eF4zFZ!U?G12PYz~t}y*xVG7vl0D&T3%h0V!`J&JW&0v{RngvQE{|`mcIW$2=A#daTPhmoq zfg{W)guv3YN~&@3tIV!&NTfv+B&L;NSjub_BNH(aBN8zj5J`D}XS72psx>~%?{=U@%ijvI0S}yu#bQh95l;?F=ZNx zXvkTv>MfT&FV{Q@C{B5X5v_U~q6*PsC@`Heq@FhxLGZkKGhEfYu?RxuS&m((@ zaLWsqnLvQVWevT++0?q>tcu&1Ie6Z8%Vp?0FQDP#@pk`$lKiD!vAG|o+!1e%dDyE~cNC&cgyPSw4v-SdTUr8*5+@G6tL(yHReGXB**|mS>^ipB{oMu&Kg(qt>sa zjLiK#uKSUF--evu>OCQAS314wzaAYk5%X8}#ZG=9dx4|7rPT^ffq&|s2J+GXUZz5N z%x2%P#)Bu;qeC@Ep~GhuKFRKqw^&6UHk<|yR0E>y<53UdH%u1YsB>Ac>sjy;ixt(a zcJ6)GjOSFjxUBi}+`Wb?dMEzM%Da6$*#W~^Mbl8__htRGPr$A3d-Hdg>MjAIcWuYq zz4;9jrMq4f@;XBF6GK&|q_iN8yCL3|pWGfMy*e^*uzd5vn`J-cbjw>@^TP#eD^|Hn zK*>mL>ql-$PNpV$=1SGc*!*8dqN7gy9lE3NWokC9_?X_lt*F~&=LAR#%{kI>KcYUB zZei#;^+!@!z0PjOZ*WbhA+tBFisjglXtBan*Kg{}^2&Yq`m9a!kKIR4ZMin^+~r7* zkAwcf(JpTzFTDKGvtGgRj!pM$SiN;t=NE0-=C@d%XK%8d1WIqzmDV2ed1`9x8@+wu z_CVG^Ys2#GQhHKKaqo*^SzOwb1G^MWZs6Vb8-5)-{?zy6)!MsGgII2Z#Uk31ZR>LE S!4kRo4iE=Nz~w<(cmD&MNtciS diff --git a/TMessagesProj/src/main/res/drawable-mdpi/cancel_big.png b/TMessagesProj/src/main/res/drawable-mdpi/cancel_big.png index 8ffce8e40d17669ef1d81a537ffc1577d3b2ef86..105022781478591cd09bfd3afceff4bfee9a12ca 100755 GIT binary patch delta 1641 zcmbV{Ygp2U0>(j-W|kM+@|qAcQ8N`11aks^|1e2Qv^wT=X5-=wi_#R6#4-~XM#kJo z^EO@0G)lHaUApq9*hE3ko;;G7;!>)a;>mk?=CkK~Jo~cu^Y8aQ?^|XyXM2?aid zKxJi6wk!qeDdHbE5EyYfIWhUfaUOV*bta8-B7*^bf)=Fleb~wDKtBKkKq3vm(dhm( zJQhpBQ329ke=3O>K&4Rw2x!y>xzX|eTz?|gk4mJ1bRYo0Vrh5)PxJ?YkPv(Tj)cY0 z{5M?L9y3SO|G1F9;$*8(tgP0|H;%d&N5X@CB*I=g@aGti5JJKe0RoAzF$_yYqtY{? zINU(?-#8-kfdL}l*Y|255OWj*q#hRNe~Ud378mUh%1zx6+#SM8HgQXry?Uj7yZ+%Na}uDYcjt}J4vG1XGU5P`1yM{iQF!~HX> z!HexLXJ$sP=OhlimtWuPsyjY45Tre)CCz5f=A6E`AP`j@1%vv7XhNy+ZIV^+MX$WNbqsw02=J8D4p|+M=qNGEnwVlHIs6vy|@Y?wM?|x8SK8!Q$aCBs-nb#efJo`&{6yvH3D&LJ1TeJ zhgMN6|3dAlZ>BB!wo+Q2hYk@NCML@BA1@d1U{`Es=e%b#KRlJOPM7@R2QiR8&h;MJ zYz~r5F=#u910U1hwVT*2Tkx%S;8zG3b-p$h@di2$o&dCZ4j~h>IfD9tj)f;HvFLRE zWxOL{oN%kB_$c@iHXzi4F-c~=;qCv z<9fZ`Fh4(^TIBwY5f{C+#WQ^o>Fm5_W-w)0)wH#>4M{9)p6m6i_;YVPfcE&4@hF=) zD{E`t(1TZiWwT#rBKjnE>+9<=gGq0hD@Z{9^y%!v($cW}BkS?c?Ck8w3|F{LXlBdo zbVer2D=WvmyuC-Q;Q6Iuh^V%t8q;z2?#a5Jep)LsmrZQn`Vc0OvX42U`{gzf!szH> z>GnJDeSYK0dq(P|NIMsVHJCstU7n7q;CEi^>FJ3o?1G6VHlO2s2i*dP!&5fCyh$$b zlGVWs=ZD34shyW_s(3dK(LR(b@#5U;%okNn;e6)1NOz&;joYYb(qzoV>!(byO4~gR7gdh8I{#slrDTh^lXqzSuiMjT_61GHUTnoD<=k(E4{z2 zg=k=5F$oW^F&7+DvpB}~V)ngd@uGX`Hp--l2Y2>s*fG`grCrje&ovZNdE)^$97Ny| z#S6)DT#PxS`SR*mcx!66`{SJ&BkjzCD2LToI=1}HwnLUdt(HH)Aj%AhDj1Cmh-Rbyo)V^CeHy>r)Sw>a`;<%?F+s|6?K#kBIXxdWuz3VB}fN_-Zw5eDrbr~nc!`~eeG=rsTU delta 1145 zcmew$IE!zBC!^9vFLlPrcNmo>XEA0^-o>Olxtd8@!Og$imRfaIzhf3`~&)PDRg{3}T=rnc`BUq)=QEl$vIhlAm0fo0?bR>0+x? zkz1gbl9^%!)oX@J@8lw8r+QIVUPcB6<~~ms$B>F!PiEiF5)Kq;`>tZ@yVfj1SbLJ# zM2)1C%h^`Fm>at1V@c%R&#qnikAyX}Tm|2(Oqv?v)4K~wdD_wjqvzY!ny=LWQ zMYYL3X;#Ls+yA>QD_o!dE%WWo)$W$-87(-~A6V=WzQ^``lc(r6{v8bZhbt}Wx$BEJ z725LseJ5AJbML(4_DOun4garcG<_7SW3B&U#K4sxV|OfncXZcg|DyF3eD;s!lB1)< z>y)|XH>f|bd)jxZfUS;e{mq{XH~3b#KU{t1>UNFqF8{B`{ji8>D$Zk;Xj%Sa?QY2m zWdZhwwIA5uN%k>Iw66b{^G@{W4)eOFmGy@N8Lm7%fAG0%jO`o07hj5$KK#yOUhsU~ zfy}41yv6V5v}doC$+aLKcnZi%r@?ZU4K3hF_M)+8C7P++m3oes$mT3L8VF_~)NzMUGnJu`Q7NAJ}l|SJ#5{ zQcv|ux1-jY-7TnJn`yr5;~rk#qBGu#&VBm6i;pQz5aLi+%DiCliyaOOBE>pKk{wq~ zVoBJZz~IcHpeW(c#BhX#`G+-ojyO+3c1JP8%C454&iY1&uWeHb1RJ^@{Lp4upe5lj zm7xZxU@C(ME3<}B!=40&N~Q_IJPPg%o0=F?zFH8-6q9N3}*_@Nblph`1SIph6kr*RvR%dSfZiK;BagP z!>r4RyQ-tP3hF7 znU%|5rFWF@`PNI{Z^>G7X7?&3=NoHI zZ4CXv_-DgqAG4gzjPotG{y8bUBwFE=&9!{(+3mZc#HF8xyj&AFPiJnfidMt2qN&V# zYHkVkzOKA?rDShKRPn;yubzH3+#T}QY*n1y{o~GU*IsF<>s;B&{YL*(>!+XgOgs#& WtCmIxnKvjh0D-5gpUXO@geCy>Lgvr_ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/cancel_g.png b/TMessagesProj/src/main/res/drawable-mdpi/cancel_g.png deleted file mode 100755 index 43b0a71e47a26cd1d9b25520fa3fa01df88aab40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1724 zcmbVNX;2eq7!FV@pcD~BL4+mf0BVlSu_loab0KjEVgNz0*d)*|9jfl<+R>PQviF&v||-Ei3cVEoaY-S2##=e=k5Mue|* zcJg#0kx0(6P>F(=1FWCJEMnaMSBr+2JaB0&9*HL61{gy~LKT{T05T1ngeVYLmGP+= z2_li~64g<$c&t2(r$jYW*eXLcYIFpeL<$lZb+9r8!GQ!MNv-9RpPAaofLg^T$FSve zxlW8Et3xv}Br-ERN|~9W&iNAd3w_;7Wi&2N^Uv@j?`k#bZM}#wuXyArsm#RU%Iz z37OJG?D*tl9M|z^G=srFH880tmP7-&T&|Ua!JrTl6n%ykhm91i-fx;gg6Nf)T8FDq zEnsDY6VNoAPbMs#bU~w&%ij@e^;3Z&LPj&fIvPl&(=-~ZUlY=LT!H*+#*EVXs0F8*2GQa&37<^dP*rLbPb>n3To7VG zY^hkv0zn~zArgi_A~D2da3vr(%`p>}&K9x7B05tlVX#3^%Hn_wrW9g|LquFA#F22O zu`;b5hqX#%TCbYWJB4Mu7t0f42#ljx6pE%!S3pEEilh2uR0oJ7As`?|tyQ50eV{cx zlio@YOr4IXLNHVVOvIO`o+DppY(IvY!o~LTC4pUA&S;ILD>$ibpN$k&LoSeq?hW#*+&-?+p3X0IsX6y{pqVo8 zt>*OR+xcD{rbVmLm)+%+^fg}_del(4dF=-{1XYZ2*Plq0E8r$IZz}s&4hXM12rEktS>bzc-A3W~T4Qw23SnM!bs3d2x z8>-_LjNy6St1fZuS_;o_&Dipa4AzKy>(+wEg50n@`v-RR$d7Q|S~`l|UzWe>3TDPb zb@9*2N_Tp;R;Pzs(wco6)sJfjmj$?6lJ>X;#$}!C8UE_exEEP3tgo`S6~N|6*aB8NcKIZBN#CsilVGeXw^A!Z>(U_eMMU^b*-CZSoxnBo;ubK5qH z0Zf^YsUpU-Q?ZIjK#CIxz+-X(bZig=_^87*ohVx*9yQOIItWo0q5I82;KW`P2Mz{UYV0hC36DH|iT<^as(Gs^%Y zCLMtqNfgHb8>2Q6&mct%%G2o(3`T|G4KZe#NfebbmRW0LflM~bV6eqCWo;r=$iHsP zX>HPE8xfWYG2t16jyjJdpII=KySEG33@LAf8wr#;6m1%e>oN=oM#^CkgZjeMqk5rK z0*VD7pUdaTq%tlDiXliM4&zItd=4alL2#C1E-V`gf_MTxM+QSY5R`ERY*;Gc%A^7~ zhyx0^L9F({_T zvrKDj$1@!*j1Xuhq7Nf*12C0eAv%XXEa3@I(%w|Hcu9w^x4gPB|3l2O=Ab0> z-KE!ma!ct~Ips4ltM|P8@!S{9wI2P^b&NB0wH^-n&1cV)*LhUSy;mPU=c1mMny;uf zE1`z2kg{ zMq^@v-Qj{iCwM`OvKaWQ4)9i>Lsx$&y|r+p{nK=7QM@3SzDr}*GVGr#vm{jbxO8DB zcjlHY$c?jXtXQkl$bH&2n2Ewo}G?;XAe68v1eHsHU~|cUNOO zSX22?P88%a*t)yw+ii!;9gCXmE~vil_37-m@`0=^z0W$b+s^&>0pGRgg4!$K=Z)6% zBcT0ZRqs>hqK@uKcXfnlrLJ^Da%|p8qPW|s*m1vS`zEPfMNNRrKGSBVOb<>c27blH3EleX0-Io@tfZ0W1739!e^?{xN;Sz;eDE#kKPa;u@Z zZw0vdAu|dXq6ZqQ{Le3P^DZf9s*S!|qPmlL?x}ZZ$(I;ysZ;auyAl0aw|qLUUHRGW zemz{E_ctw(orsT22)CZnH~Do>YQtZ}I}m1kam?*pzr&CE{t{=tdg`a(*#4prMl=3fOHxD?*M;&^gFGa%>_FdZLWf}V6i2qXf`dCPc zFSEk^#ewkhYz0*T9Oc5(%Bq8v>pty#bu_)8p)R8|80hp1ma8s386CU1XX1X-uvdxU v*YDCS&wH8&q0A`H(ML|jJEZr1siHa1jBycXuWd!LZND11ObMTnY|sA(@h_eD diff --git a/TMessagesProj/src/main/res/drawable-mdpi/cancel_g_s.png b/TMessagesProj/src/main/res/drawable-mdpi/cancel_g_s.png deleted file mode 100755 index 0748731872cd7fb57700f45e36749206bed7a598..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1680 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 delta 1049 zcmeyzyPJ1{C!^9vFLlPrcNmo>XEA0^-o>Olxtd8@!Ohjs(#_P_)x^!w+0f9{#L?N@ z#Ld*iz{$wM$<^GzVzM2R3`~(5PDRg{3}T=rIpb2Kq)=QEl$vIhlAm0fo0?bR>0+x? zkz1gbl9^%!)$4*w@8lw8r+RzYUwI4+%=(@#jv*Dd-poFoEgUFv%zu)dtM0a|O-D4O zTy?K{)dt4y2sqfgqd@sz?W0Yu0KnN08B;XlX0c8WH&PTmps?Ue``GFA26ZYw)k!re(U|0GrIR4|+z6))`3`@T>{WI^b{i zfW`HF$L`2gsH8;5sW;si7J9Q`eHX9BW=7ScY*TJD z>`7w&lyhKC67#bg4M4Iejc3O79l|Eb4B24|8I98vkIV|oIIty`Vg5vMQPF)GssA1) z9g*qJys);4tw!nnp#xu68}1X8T5J`bY^wRk>^ScZ-nd(5?}^=?TfAZO>UNd;OTX2w zKQ6wsb4QhD)!F(lwf4*&(~jLf*}bB`Q^voh_GNpWV^IFdZkBRYkFMs$dY-TOQW)%i z%)GPHP-?Q6gCnoPO|{Q!CUjOlw5+H)^#1fzCD-`L<P zdqPSNwdiiuG~O1X?t62;?6ka#r?yz;y_>_0`ff;@@A3Z(7k=@@dO_pI?8}J}nCL{Z+GFXKUrUbzZ^Gmc!4S Z9)@QjOZpG7pZ(1M1fH&bF6*2UngC>KxlI57 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/contact_blue.png b/TMessagesProj/src/main/res/drawable-mdpi/contact_blue.png new file mode 100755 index 0000000000000000000000000000000000000000..1b2beced2f198bcc4e1123c3bcb94b28e0fae5c1 GIT binary patch literal 1796 zcmaJ?Yfuws6b&EIypim%T0|_J$O&|dxhF7SBmo<+CQb~46789bPg#uM< zWf-iApx6R~r9ef7+Cr6w4-iBuh=M$&N>N7?5o8eTh646S>CWzck2&Yud%t^j_DFD` zpDES~i@{(_dH$SGbac`^#zyG-ldmH6(7_Vn3K0Pmi>O6P5W|*2VvxX-i{ijgP$W%G zYyrJ67z3g#Oo#~iI~fv4P7>)bB#j(K*%*x1b`30&>;(~m7>tuCn8fkgt3-lK$|QzU z`7V6e2aK2bYn7lt8yF_h?v>D`#O>P%UK$1}AO{flB4Gi7 z>}3-FNlM5MCip-~kU%B5I!jytfIy>>05>X)1~?HYE&zq>g5ES|z>PtrF(~eY#fykW zQ%YkQp&Z}ESm=sLj7JcdK_;u!YLeQO1S#Xl0G&?PX;3K6D8gBltUyE>XNAgUNr3~Z zBuW{K$RGtlrzjFbNeGjOX8KPFa(G!*p;|m9^uWj(5ljY1F1nJIfPDV{L*?>iv+Dkw=QK^qrqqYDKye3YOFfs|nol(2M)!SN6Rsp27+;3J?B?89XW zDWq08Ea3Tk22Y_vL<$MW<1mS+0!b#5GCb%W9IiXt#h1hJ1pqG9+uNP(;YO#i0lF{6 z-GjTtz8dGA_b&RCi;TWV`q(%}=!X5+X4MZrPbslv@j+71UT)?jm0YnrGB zZ_;RMgLSr}`ghjV%HKok?@F%6jMlt(H@v!5HI+XD?2l~+ciyzx&+~c2B0Vssu&_d7 zC-KaxwtMp;bB zXO}m1r3tYqL^i%CsLZ?qbHZ(!ZZfu`xN&QJ1UBZ@9Pf^8ooW6L9ht?`?OWQ`&Us4n zySy3H?3etH*f(y;4>fve&9h(S*x{p#8mZF0uo>*=VQOR)_4L=>TOvw5nx15Ae+}Ss zQp=+43*K$&?iF)R9hoXW7bIIV-><*XBFbT7SB=@-qR!$sIKPIND~*5b$?Wc?6?5md zJ~Oo*q2P0lmnFmvA4n8-<+j;o4OS)X%i4V~`BKF5t9k3z$;^T+N>0MxMnpTr2adn2 z{*jW-iyOAnR!_cdEgh^XxnrX>A&ZAK%t-C@!F;RUOqutD+t8f@$66=zQnA`Tc);tK zRdM%OAku36i}?Y%3wNZGbQefvF)|H3Q+683o7Y_{zWn5YT;J|yhCp1+qGgR90o>*@ zwTFTP)0GZSE$=?Qp{jaWco`Q?#f=uXH@QA|YGH=6NXdFJQKZU^e!9P9)w#!x!VA^0 zb<{Q{ZtD%>s`q-e&KXrX4up0BDhK}h;D_K)@ z?^B!4Cb+M55J5XoAX**VAC^_&BXn+S~-vyZBTZ- z!A_Xm6rgF|)e@1|oY(#8iCOaQB>H5p73*zzh$)BMT3$HG#E)B7>R3?zG?Dn3u z!V1o=7V|0o@6D8n=Z`cc`$eO}?gI*&ygRKSiE#tjBzOrr&R9Qahyk OFY&m6oC@zfsec2bFT*PU literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/contact_green.png b/TMessagesProj/src/main/res/drawable-mdpi/contact_green.png new file mode 100755 index 0000000000000000000000000000000000000000..0cb733438d53111f8831b2974830db17acab84a5 GIT binary patch literal 1828 zcmaJ?do)ye9G|iZvsPQ!M0H(njv%qs4RyxWWT)*Dz24IfRG+jeLVb&CoExkGc$WuHPntz()uY%>+Ls z6(aBl*sux$sDx$CViK7Q&}am*3zbGA;{ghZOd*oco90Y*VNhudiYxH>0?}wHNhBkX z!}}ZyT`@r^f+!h8VoXd7A!Zo?Rz(rXbUIzHL7_OK2xoPy0ugDP6>7UF1rDSZt7J+< z1}gx)q9_91gfKxg(@!PHm0x5P>d(i79vD$0QWD7olD?!Vpg{2dP`UgIT8#ukU-SJ> zVYM(;2@wM!HM~hBMjIDtrw^rMuvL%)i>D`x&f{=+WHOiP=ENX&&73Gz0X|9^trfA%O#@8 z5cQ4ySEHx4Q1|GkUu=smz8D`;pl(;8wm$7zTa11!nS2gQsJY#hwbol0Fu$dKZJ?UJ zYN4RXDA~q3XlAbY_c@MfU9ILjC|g>0pY#S3w7Bxwra9>#Uu%*8?t7Ut_b_EIE$EzQ z=r`RbUF=JA6WRBZbr<^XLPuW2y>Gb6963JTcQtEEMu$b$BET>UJNFW9j%gzccr&-n z>r&L4MHRpBZeX->3v>Gn@7kPz-=uR}4P`qja(B(ddRusy#p9G#LZ7;`;g3eQb~5}8 zR7X>f;XDBAyE6}9U%YkosR?-^Ic#K*52S_7%XpCVYJj)jvfX?vyGTM`dcvyYSdp+A zBgDk1wz;#c@(#3F5c(IBKTO&rA_s-N?1yeOM8k-iLB=pEV^GXvs+8rS()~w!5Zx77iudT=#OeYjwi5244Poh+8me zAB|mnr97{wqfIA$OtSQ~Oyu^EpMGop+#2suKZtdx^DRvr46VBnXVF~fn(DjcesImc z>jAa{T2cN9N4r}AW20Aaq3sZEP?VC8@WbhV&dxKD9py`YB6evnT#M?BUEhUNS+JAh|*%Eq#ITldp) z+v|?_W{Z~odEU0$9ZcSS2P`&wo&0#SXpe15YURwrk z!F;Pjc6Xcnk`JrSTqTvNLvML(6(rKR3T)NWgum=`#sgGcT;`bW;_wXYgWiVSkvzqn z&D+lmR26UR8RsV38&@vvdS-Q_w%}#3&0Xi)RQ#Rjb^C7n1-_%=!*;(S(bm3qDC|D5 z!CG?V^00lS)Zgt+2d~YmOu#N5mEMc=YCP)nFmsmVI%~MUe`kbKlU@IP(*|tnJ?5GQ zWW4EBs)s?3``N~4x9;QX(w^i@@`nM*h#R9J>)MXJ0B?R+Sh_=aBfIj?EQ_R|PDa@g zhl%HH!Q$wZMw8J(la6!k;lQTli6aLN$K#LFXVmy4Eht;aS#>b|W@B2A?Hty;@iwRU zEQg8Op^BnzT(Q;i*vm7`Sk9#rkGI>`8_vg6@4Pd9ViLDp|KH+seK}`5f8OyAVy@zw literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/addcontact_green.png b/TMessagesProj/src/main/res/drawable-mdpi/corner_in_bl.png similarity index 53% rename from TMessagesProj/src/main/res/drawable-hdpi/addcontact_green.png rename to TMessagesProj/src/main/res/drawable-mdpi/corner_in_bl.png index a553f495ff0bede90e72055d7597aedd07aa2256..51b1c281023c9fe938845884c6326d18522a1664 100755 GIT binary patch delta 264 zcmX@czJpz{Gr-TCmrII^fq{Y7)59eQNV9=32Z(%d=Do*8MRg`QGXo=M16NmPV>d%X zS5pgPOGgW5CnFOVS94QyC!@(}OmYwBTX-skuCFVGlEMhWJ2b*GoONo*~aY;~WnpMi=d?rzd zai+M`PS#^~3Y)|BgBj>ZD^C~4kcwMLJ@MiP9aw(!A4zkW79p@h#@SGqnfJhog^SyQ xBn_B^|No!(x>oGV9-CR;-Fam-+n87+7`m2ms)iYLo&uV};OXk;vd$@?2>=PhOBw(G diff --git a/TMessagesProj/src/main/res/drawable-mdpi/corner_in_br.png b/TMessagesProj/src/main/res/drawable-mdpi/corner_in_br.png new file mode 100755 index 0000000000000000000000000000000000000000..ef954307f3757ebb488a185e1fe8d5a05e2cd994 GIT binary patch literal 947 zcmaJ=O^ee|6b)2F2L@yoLR~%5g$mPrwMi$Tv8G9C1E!R=FkL8`Ca-PiBrhhfHtlA_ zm2O??KXBn6a4~KLe}OA^E(iC*_|j=QF03KR`{0~&@4NTBx82U8{k=PT6h-Y@ZKFrV z>)CfB`~UcM-X=p4n?u}3W4v%;NNFA#L0|>W1ooigEnj?vb&4v`{$PlQ_G86G0pnyC zCJiFOrl@)&jU0CdF&M##AFA~E=QA4ko=P8!HfKjVocirm4Ew9jz+KH;*`pf|Ks{B6 zKmf4=(%>XalvJhHx(bO7w9O4Kx8Uqm*aULNeo{VC5b--0>=w1 zM_#GSR~1oGgc{g9G>H~_W2I-bHnGS`rKcE23d=4Q3uaMaP&{FIS(Y;mK`0YMIa!9- zNy}kU$`uTlxUnB$AB7-ObVg{7Rhndad4wR^%7)3NOr&6J>O?HhaM_V^pl$yj8U$N( zf_v~P-+u}xgJlHS9!$_Yc1h#Lr7TpW=rMFKiU$atQ)gFaV>d%X zS5r%4XJ+}%OptK#aTRlz7H~xEAcu;CWWy(( kj0V9qyxa#g83hs;m?WHR=WH@&25M#SboFyt=akR{0PYw=q5uE@ delta 268 zcmdnZzK310Gr-TCmrII^fq{Y7)59eQNb`X(2OE%-_t3q#QBj>q&c)Tl$-vdr)WXux z(AC7z+`!e@+}O>+)X31x(8XnP8j~DEi5pHOig02r7UkdRmr6XFkaWk4$DG)@^BEZg^?=Xu`u-uJl|&Bp!pwd-pP!>sGO zT8oaW$#*gN|NMHqONVQu)+KG+Cy^N-refnB0=jDsPz#y%7COuKT;Z@Y@e$WTAsz=7ZCpQ_gz}YYfJ}me4#o#*6`Mm$a5%(1sJ10=d*AVF z9EF=RykRK17ZTI6kglnaDzJ`YE3#IX`GT-rtLE#1P%G{fB(WxLOEtM7h`dxtxf-^{ zF7imqwa>WnQf^`e*Qb#+6gW?jT@SDeW=B?><+(^p_2yiAc`jQ^xg1S~OB(x6qth+w zo@BbPEnO^(k38!3fZF=mt(RBnmDtp^N+d%X zS5r$PCu3J5HzQXIV{=0@7pKW-OmYwe)5S5Q;#Sh1|NsB{v$3(6v6V1PvG^y?&EWau;iLriN8C45 t93rGT&L>Z1NHkM8$NuQD!yi_K0}LMF#d`yJt3Y06@O1TaS?83{1OTx3N{9de delta 268 zcmX@YzK310Gr-TCmrII^fq{Y7)59eQNb`X(2OE%-_t3q#QBj>q&eF}v)WXQr)WXux z(AC7z(8AEg+0f9$!obMI(8OhO8j~DEi7`$ki96F|89PBoYo$5~&$+>`P*$_PO>2I}r;V zP$MKJhKik)i2;cL!G_cURwShS2bEx8L5Oo2rwjzk_WjU%@B8li-c9PYdx`bUb&8@A z)r#66<7)J+MgQsPS%nN6xYWi?)Ww1BK}s=E2ZE}t_h19+=IHPf%v01Q+G@3NTe~kA z$Y%5i!-Td=*c6rD4PD(BKnyytXE`!`_U=6mEK{cU1&!0(BJ5k0u?L&uTFV#@jGRgD z-UazkA_6wVItc9p$CpBxp6N}FLoLr^k(EsMF?J=E4T69PG7R#1ET7BeB8_x9 zMGz@}9qUDeSjKE@T_fM?=pbjq4_(P_9(;ppKE(Lg*l_V!e+r^83gI#ij^u z?OTqC0{`|5uW3@%@v-h0u&T;5QD7{~l$63wN!`f`rDCSc^Cdx1I91K6LRk^`LWUD! zu8NGI4ILbF%?qx$lp9&Wc1dIvde$RomOW&H*^wn{c`liydULM1JeTdIT$UumMveWe z(eV~>Pc&WFmMj*=hYoSOM{NDzVA5TsaTWcSwl~wA+&DyswKi_PSKD=7KTjOK?4Yyo;89UXgRZsPq4@^S=R0LNY8wt*~sIp z1jEH%K-mmaEX9FkPapvUIC6cRy?pnc1+JsBXNoD9K^2bO#vH@bd8=#BCw9SMODCWh zYgE94!~(H*?uS~evrAo#&XaAP1xpB-=$L2WQkCVJe3WtxWKTWl zla%XRbLEZP#0p+OBO4IAPoY!C$OFqGYwqS;gpGPDuCqB8aU++f$?!>I|7vu)MctE3 z*S4jLweg`(-HxfPe{Pd3y%NVwquhe^%+0neGP(VQ)9?4~M_DGb#k~9xzRf+yzmu!gthJ2SmHx9ogTyKV literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/corner_out_tr.png b/TMessagesProj/src/main/res/drawable-mdpi/corner_out_tr.png new file mode 100755 index 0000000000000000000000000000000000000000..c549ad93625526436bf31bde0ce15ef5b5beb90d GIT binary patch literal 963 zcmaJ=zi-n(7Rfe8>2V+9ifqMXwtWgu9#?}y%d-*?~l?m@kFeSLLfm0_55 zt*SQYxDtP7u`I|yiw(L)VnSfktTP@Z9yq1|eewtiDK zvBMfMhK(GLvKb~{h&;m_AObq5XS)hKdie?h+fv|eMo;Qq3H9yj*hkHAt!0h}X3m0z zEs&37D&QbufXLZ%136OQL|3Nsc$!5^v1Tt(YVJ3MVh$73UGor{} z145D)xFmhW1fP~OqAX;=^no;*Z*}E{TA9Y8D+Trm@nnt*!;lSAEcSaGpUdT94M9jy zL?Rfu#E24ZusKsuQDFMEM{MkZSkdUwQdc(8nGqHAQe` z*LE!&23IF|U6(aCAckuqO;sROU~SuychX`>ET)s?QmVr9<&2b-GLl#kBta^xysFN) zDmI4>a>P@-U!dz07gYjKyw=G@FjgMUFcAwh%{fpoC>6OT8YOxi4?EE}FKJJ07a|fgC!bVg_dij=KKyv{?R-zH{r|AFf+3 Ay#N3J literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/delete_reply.png b/TMessagesProj/src/main/res/drawable-mdpi/delete_reply.png index 2fd1c1ac9056f1daac8780efd4d1187cb85d9f81..8808768e4eaca6494fd1f86f6f1ce8d71661158b 100755 GIT binary patch delta 457 zcmey$@t$LYJ5#i&rK_Wfp@Ex|xw)aCtEr`#tFfh}laaHfp{1j_nVFJ8MQ(wwua!%F za%paAUWuoRtrAc~FC{a@$_1j=5SQM`iRJdME2K zJJna6-oJ~1f#I>Ii(^Q|tv6GBxegf!v`&6u7_uSmNZdl}gR?pQHOje^+}7Tro_V$V zNcf3GJag0BG?gNLm@Tc9_q-?Ydat>&-8r5=fA%H##6PM07nm?Db&+V#0lqV=Gr2dg zhHZA0-oUQvq4bc|qNV;wlXgW@B!@@Uq2&)4^Q0W>Sue?P^5*YbyH)p*%A*hG#0)1b zQr&o|;HAuksU3$+o6|gbb;D1Wvy_}qejCKOi_he$M~upzH#a_eDHl%sz*)Q?iBmmd z`=RMR(JNAx&TLlBShtIN2e;OpmieYk@+xi?>gwC>|F{16x@kHCGlP@2r@a#^R>F delta 463 zcmaFQ@s(qPJ5#i)g@J*ile4qArIDebtBHl7g`=~9lYxb$g@L1^qluD2MQ(wwua!%F za%paAUWuoRtrAc~FC{a@$_1j=1()8*ioGgk zJBG=*GcYi`^mK6yskrrK>OOfyJc(S|txvXLr5I=vCwv0Ch7k*w|MTBqnF4mMA2p zrf25aD!t#mUr8Y|#a1cY)Yrhbz&SM|)1#^=HMq(zB)KX(*)m1R-cG@$!U||WZfZ%Q zLPc&)Ua?h$trFN=DVPg@)As;uP=V3xw&xF#U(+h2=`(&xHzP;AXPso zwK%`DC>a=WY04n03ap%qQWHz^i$e1Ab6}wukda@KU!0L&px_*Arl1j?nU|7ZUaSdL z@9S&jnO9trn3tUD>0+w{G(j&jGsVi;&CJBq*woO?&CJEn(ACt^*wEO?)X>?`$lTn` z(##yD*Cju>G&eP`1g19yq1OnfUQklVEdbi=l3J8mmYU*Ll%J~r_OewbPPdr2;WQ7b zHwCv_3~=hz2RcR{6tPGV4HE*U9uO0rY=Inj!cWZuruHIWvOcoJ=@SD3W00qdV@SoV zq$CB|KkA{(+;*P(jSGDoPH}cLH{1~F5M2=TzVQd6fIR!7QinbHlTR+H-yw6f<2aMN z!d1>AQ7#tWqy(lj>)vvjqUvz?X2TT~1wVCVjdaFBy$hS-Ep!{BHVAguN}OP~Znz&p+(a~%DJfSgsz|n@v_b4|E9-RO zsk#h|z6xb*h6&SH3@@;;C`Bi^Dtqfp)Sb9|qH5QMq^I`GZyD^*s4o!t*622^#)WTP zyUC^}cAHd>XQrIwO!2;U>BOY3C#Jn=eip!{_56ozf%gJYKgp@On(d(}AA%&JW}IC( ziM6=#S#De5h3;QD8MO|aH#m<(o?z0L=AbQA&sAe091BqBRi-*ByH)U@~>21Yi9onncdR_}i(fJz)sS3j3^P64_(@D09|OW zp`HK M07*qoM6N<$g6DjcUjP6A diff --git a/TMessagesProj/src/main/res/drawable-mdpi/dialogs_badge2.9.png b/TMessagesProj/src/main/res/drawable-mdpi/dialogs_badge2.9.png index 45eaa60e0211a38358bccf1d16320bca03a61799..26856e0f32703328e1a4925e35519e5357c0f825 100755 GIT binary patch delta 427 zcmcb|d6#p82a}welcA-dxto)jxuKz}simv4p`*E(i;Jtdfs2uw<>WLbIfxPqoJtlk z8L5L!F~y}sNujtTC^gM0WpX}~D8x83TxuulF+0_Nt2Ld-z`z*j>EaktaVsf7LH3V& zD6_KN$;Ze0jTtr775JEvycNP2k{A{KF&yD{@M@@#6?ngS%a%XwrvrN`bUrW!&2?Dg z+LFAUvC#6uB3+kACX+e59==SEN{pI{!~~u*>HcoLEVP1Ey75MHW6cKUj=vLiew}Yw zmcZ32X5hf~)&Ho}M~BH@nC-I^np)><>R>s*|Cv*Hi_Rj}A009={Fx~yYg4@YE}xhr zd}7*~r4vG$hnWz7f$O1{M|USYuXRS?kQ()bp5*Npw-GHc7`=-LeuIM z=i9EaPidIzFsF5UUwc?g@X0S1VEtvfIfxQxoJtlk z8L5L!vBafBNujtTC^gM0WpX}~D8x8NTxuulF+0`sbe_*(U| zl$qP^XdJ1+Zy7|6yC;y+G7Ya;mOoduYmsAc?3MXBSRlEpB|4+g5m?`&Ujz ztpn!`&Lfd0m^7w2XiL>|)tHEP{JoIn#^yA69*ed}-{;uyR=GLz7=Xaj)z4*}Q$iB} DS{Reh diff --git a/TMessagesProj/src/main/res/drawable-mdpi/doc_blue.png b/TMessagesProj/src/main/res/drawable-mdpi/doc_blue.png old mode 100644 new mode 100755 index 153d689ba9a7c8176491b03d005f96f84f84eec6..6412768dfabc4012290946bacbcbee8328779a84 GIT binary patch literal 1273 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%u1Od5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|81#=KlDb#X~hD#E>34K5C;EJ)Q4 zN-fSWElLJPT$(b-ssbzLqSVBa{GyQj{2W*)24v)y2=9ZF3nBND}m`vLFjeDsTY(KatnYqyQCInmZhe+73JqDfW2&$iQ6p}IL(9V zO~LIJOPqT3fsWA!MJ!T8!-RmT2gHOYTObFX@Kf`Esl5o8thYwh|6pKX%=L6}45_%4 z^ymM7`@;cjK0MAcJyi);n3eA`>m1RF+4HtVYC;xclDk6M(gWv~JJ`r}EN`&b7$>&n zJHv&KS`M$21d0O`FZ^h%FcRoyC}iF{DZqZJOh3=7moFKkwJd&E3&^{EXE7*~e({ho zE9KjIhaBc3JFk3U*~s_XnU#No<6Gv`du~~kP4kYvsLxx z1wQ6SvJPiDuAFmPncpyP28#$c%O=?cNlnd1nHNYza2}E8G?DqgVC(L>pu@~PAzwJ` zw|+XC(VwGH*-&W0=4NZ~sxgos?El4b5?>FjU~gN;9>I2@SI60wZN;U9mPQS77CyZE zPlR91zQpmT;a2bN#ZGTr%r|Ua%eiFM!o{px&I#{ttdJMDeyl3;&Y~`Mx9*Ej^Gp~S a7}*%?A0^dwx2Xk!3L{TfKbLh*2~7ZDD7EMS delta 726 zcmV;{0xA9Z36choNPhyfNklpBw}S|-r?{c$!5s9aD7eLi95kSZ zAaM2#Q9(WAAh;Za84-g^GJXXQX_|J@UDMsu zfhzc@nXaCy_xi8uS|(pEmvenN<(&a%z!`7`oPnAexN!4H*neAxLIX^KA@CKR!lRXq z)Bj}Iz;M_F8)0BT`4`v&CoodZnt^F>9Y#a9dD`$0icklOpkDXhfM!hm$clkka0>=Q z2W)^h0rxG1Q!oN9LrauM6cQR+Uhx-U-hagB5Njed7fP@K)0kH ztW95c6V*bk41f5=uT$R-)f?eGjDeZ8Fi=VSYIqEta1Z7OM4?9m-lTXI1TTh zU44C|XAba2$D~h*8}Nxg*NgbOzHU26pMU$RZB+g|QGWvg;#)(CH|2*kGk1FD2I`!n z?pV^SoQ#1g#UF+(>g(orJ*u-#uThf@@<#fW$WkH(@of@s%5SU8h<~6r&waB#!a#TI z5eO2mhT;{PO~usti{t(VhT z5pQK6OMl{R=YjokiPz37mzn{d{%o=xTHiPE^lZg9#39}$0^1~XUzOrZajoH_8knK{ ztnd2XT8OtXFiM+`55DVH;bYq3Z47+YSQzWO{sJbZE#AgJhw|otvaYnn+ZZ^hyqzf2 z2b7ObQ@rg&c1hk(s%(iGhootGSDzp{uErsf(+Hxuu!0vAL_Wfvby>LPc(YudkI$ zesXDUYF>$_i>(q+L@y;X#R{s|6_?)0i5|o-|m4e#>XIy$G>oGgk zpK2~IU|?X(^>lFzskoK&=l_5E!vSnQJkBybRS8#^mG3g^9MO7nqt1udV=Kc(Wr58> z3D1KS=J6c~c9_HEuYIeU;YEe0LaAVf#Yjqy=TR#j6(ef!^qP3$)od}}nySKeylcs}Wiy$Q3i z!)3cr8^`xm59EbrYt55*(bbdW&r{*cv*v`xry~n8yaFC^R#iW+mz?JzuOr8B^J{0v zj1%mS;xm4>d^#p0%3v@Bn@F?@*qc0%lG0tLWU|?qW+?O~{$|q2VhXDvYUHx3vIVCg!0H^KTi~s-t delta 938 zcmey#d75W~8&iz4v6+#Psi}pdv73RRp{uE*k%5Jylc}S#tFfz@sj-`qLPc(YudkI$ zesXDUYF>$_i>(q+L@y;X#R{s|5|`e|i5|o-|m4e#>b6k2S>oGgk z&tHCG8v_H=eoq(2kcwMxW?E*51j-yMZw^;%3SU*RFe8ym*Y&8j97mQzx57c~jEACI z0vEL=1?1RBvwpPGV)cC3x}YUtp+*N+)@N@F`2b|7Oq4)}M#_ zx6d^H{q6U&|LZDGKKuOB$JE_-*(qhy2~r-sOX}Gs^(qERXS{#GQ~f$4qv53i*S^EW zFKl*X{kwmJr=??K0mHV#9~yq;+q4{>^4uWk)2dm$yM)9~9?03jExh2qO>PC3Z2m1@9E8>C!nztO3;5lf#B-X<8NaV>~=DwHZ{)YqN zqxa9rQW;5sNg_NJk4DCDa;PO#Dar&=aKkqf%T65VX>yd?VP`*xd zr%^}#)QaHx_)@n&!e?#z&;H|J{+oK;@W^^uSESFCFn ztmi6g7uY|=tUBqopK@8f*wM5b(VCCeZofQL>0X)GDv6KVULUwv)OmgO%-zA9^Zqe) z)!w>q{^?83QS&Lzdwkixd1O?(eB8O@TQ{nt*#+LQ<)5nwLf6Z#jbnhKI z5Z>GBx$pJ*gjv}@sa+vvtXID76w6P3u;-N7rU3Z>`=d)MR!^09XkJp6yez@7SmlR< zzNU79eUGNA&Eu0lAHEASn7zC7R_d?EeSV5{78d1O?W0tLS8JLb@YyT8r_I~Sj8ity rc!KZ$v$H@ch%JbDWn)%fJrfVZgu9+Mw|Z>3&Hx0Su6{1-oD!Ml3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|81#=KlDb#X~hD#E>34K5C;EJ)Q4 zN-fSWElLJPT$(b-ssbzLqSVBa{GyQj{2W*)24v)y2=9ZF3nBND}m`vLFl!>sTY(KatnYqyQCInmZhe+73JqDfW2&$iQ6rvIL(9V zO~LIJGn{($fsWA!MJ!T8!-RmT2gHOYTObFX@Kf`Esl5o8tP2HFw=gg;W_!9ghE&{o zGt)8aP=G+2aHrA^frH8&7px;X+zTFy#&}-i_0a9oV->Y&HZM?Z-Nyc6TQz@zfW*uG||P${V3uXRxrxVw*! zp)2LSBku}tPQmLNg&7?j--)Zd=N4@_cYMVJ&YY9g^I4qAWq)wXPIg!ldt!=W(E1}9 zDP96IGgLzqN|-yO6|5o|Illes6XfLo)%m2e%GfrmXzbrfxKuA*YXl*#M3jb~5;N*;y@fZ%A2C=`Z-8 zm+8Q6v)O7X>^r~zZ}z&we^+9g{05#Ux0{v}KN62}w!JS~Kat@>@)Smi21cQcn;DoH XcB;ka`QB9(1{Fn~u6{1-oD!M_w delta 743 zcmVQW!5Yk>SC;M9N*BsL6v{YNE*lQ9|Ki9+XQ_Gg6bw%<)_GrPFFVXJ5|Qd!JgX ze*MqhYwxwcZ?EfKCzH))E6O=lR+M>i2AlzBz!^w34T@U8;eXD3elHybbubM^!Z&yd zkN4KL|4Gb%k2D7M!!{V|k^hC4&_+Cqk!;$U&>VOH&3aj#(5B;~@CwGm8R)>s@H82i z50791bipiG2(54ecEe1lhp(^_&SN5z1_MU?9T)-EU=h6Wx{zkmA!EI;4mKriAXoeq z3Hp`q227Zy)PJPIR%)R#DFe3nEzs}t-mCB)Cc?ZV4CE8P5uQLdJb=X>wJ=~hvJRKV zJ&gWOyy=jqV0+HB)#?-L;f7VtYsD#X)<8b-rzO4*8elrK>$xXkuvOO2Scg$MTOsj{ z5^sje3-AtF)YivBja6i|;-``uu*6?3ApXA9Y=`OhZ-1-U6^hSGYQRH$gHQ1$|ClDX z?%cV7GHcZw&3tgXWCkLNKMp(8*3EqbDzi$%s7Xf{k-q!YlL@jbQ3UZ#5^wVFDz8dw zBs20ngk>1$FM17liPwXQCH@(#4kF%n4Iq99;jKoAf8w?9DkR=4+;;j9zl1V-f;MU2 zO$f2G34fbmS6aje?gKeyQXxL8}c^zre*I)4*B#w|XKfzRp-ldSV*>tt%&;=>r| zQe5ki*B7_=Fb2*kwonT-9{H2w6d!6PM)-B@-(d7;m+hWDQkI+U0i%P6r$5EMxw{q2 z;%<#rnRdFRU5Fns?7N0r3#len5jMaKeG|Ndi`q8voubx2#{JFe3^)VMfHU9>lymwk ZzyJ$LKn8ENAZ!2t002ovPDHLkV1kN+X|4bO diff --git a/TMessagesProj/src/main/res/drawable-mdpi/download_b.png b/TMessagesProj/src/main/res/drawable-mdpi/download_b.png deleted file mode 100755 index 7c3fb80ce999ad3705ce16276bacdaa49b9bb10b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1684 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+nA0*tB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`kBtHuNWFoz#!AFNG#Ad)HBe}%?0@jth%@)C>7xhtg4GcDhpEegHnt0 zON)|$@sXws(+mtd{1$-}0$pR}Uz7=ql*AmD{N&Qy)VvZ;7h5Huj9yA+ij}dmo1v?r zsf&@DtFx<#p`oLZk&~mFnUk}bv5}>Vp&`r+YxAZ!`CVki~WTC4bhuIPMGNf9itCQ z97u@;CIn1@ASOKN13B=_lbQ$2F-5?v@o|bxJp%*N5lufAey zlyobvVCh1}o-XdpDH%xzrgk3Oaq-7SlZC8L{Rpwh zqL0oEd+7c_)*_PYf>!c@(;s;5L^E1kG^{E;qy03-yETNJ|Db=R+LBL?W-RtTy;5<< zIX#8Pc5LoTem#;&Zs3{1eIj1CS>NOBk)26Dm1go6Fua>~YjyNjx6!_Pl2zkSE)Q)R8fgiF3{TPIM9z?6(f70^rfd0ly|LpITyv?xgFXV9djgAVjzO?hP>?Yla9XYA;{e=rX znfy}4FO^-rdQI_P>`LFaImz=+rzqyVEIZP%n*G_v;7zt)h7G!LJxvkFRe{FTI{lTX9%l7UnOsXV8z-9y9lp6g?z=imoCS5x>iIS@0n_K zc-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`kBtHuNWFoz#!AFNG#Ad)HBe}%?0@jth%@)C>7xhtg4GcDhpEegHnt0 zON)|$@sXws(+mtd{1$-}0$pR}Uz7=ql*AmD{N&Qy)VvZ;7h5Huj9yA+ij}dmo1v?r zsf&@DtFx<#p`oLZk&~mFnUk}bv5}>Vp&`r+Y=poJ=ju z%$?m_oDEGKT})tlJ@bl767!N%VfJPM?S<+!!K>HGxhOTUB)=#mKR*YS0s=DfOY(~| z@(UE4gUu8)!ZY(y^2>`gLD2*8txIZAW?5>ATTyhjqPFcop;(Fo8+|=BJT!TE5SMm-Y56)^WTrB-v=z>IeMxkp`(jCtjtSLHWXana`!xe|;{$j9iP=6r0yJ6bd2Xm!<$lAPP z@++BL*lW1ZFjsa}loj{>R{eu(AH}Yf>NY%I$(Ylq{?NU^;g$ZeIVWp=S#fT+V9jYx zf4Jn$K8xcz3b)@d73Bwg(9E1;5xy!$?KI=Pw)UkTrLOH<&Gc!B?8Il8ERiy+cy#z}^!{%Vr!5Y<}Pp>DDc&@??`; zdhF}UUuW(2`>XX;wm$j1Yk9;}mm@Y4GaDM5lh(0uRvbz=z{2>Om+g&u!ij_f0*ux? zY;QIkDG)5Uo3O8x=@}2(nT-xH4gJ=4jV7P=){Eb%T=TIi^S2Mb%!G&&p|YC}@a!wv ztg8OyefD&Dd+z#}Rga3+Jr?ToioO-H`_jaDd7R}xwfl;DURPX@VT^y5vt;fnbFnEN zAL>2y9?v+Qlz8vbb-~MVN=Fwvc9!LTfB5HIs+?(WRl(|r4Q^W=f4?$g|M_*N^lRk! z@)ah|>T7 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/download_b_s.png b/TMessagesProj/src/main/res/drawable-mdpi/download_b_s.png deleted file mode 100755 index 09ba0e35de6e7876e2ee296e31fe4c963fd4bb5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1623 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n3Xa^B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvv ztM~P_^2{qPNz6-5^>ndS0-B(gnVDi`Vd!LTU}E6pXkzSWXy|I{=w@tbX>4w6>1yU; zV&UQp)9aF-T$-DjR|3v4~Pj*wm=R%;iu*SQ+p9GStsp0bCZFA>9nVdV@SoV zGc$etg#$&}{M9=Ik4i*OyfsZJ)Nau_ozCcpody!givsHzTqkbje(Yxc&UAs{x(koG zjvRU6B@}+_+KvKc4K=UXYBf6?vm07|%&Stnve9_%%;;Oc)%+WF8h^L5J$&YlHE)Vo z_Y-Bd7wpUmoVy%Z-c0)zufYGzLF`Ne&y6i*Q*1VzE?l72pA=ZY8^dVW{HZxn1d zG4?I!x__3dFGI!skx^3E1l9c~i?5Z(?LGVN^Y@p*o}r#~amUX_dQSPmZT)rg1BI8f z8O3Z?ZcLcOT5TfsCh_2gV@-)-Iaeb#Tva%GxM{W2@3or}9Fq?+`3s~UEL`ticUD|u z`;MI3|DGK_zScS~x?`8pzI8_<*FC7VcmLFIu(o>Tj%{Iwq>8QIKMwAjY?>1IR{J>L zam{=8(r%y2-P7-s7V%;3^wuq=wR2^!NZS3lUv}?UZr9}29>w*_YN1uHdXKMo9q{|w z%j56&_!>^0!Jjuv_}Yp!Kc3sKO!O)$h6B-iEX=p!Jz8V*~hOKDMah>$o z$#A1_+Yj-)O%?o*uGuO|&zmTuUb@$6@mmgWGUX8iOX87*2(UG8p!jKT2a^6lm s{!}jWzo!3k%bDl)s?Cpg{v(*cP+hok?veGo)`Nv#r7$TW z*2^=%6951&d7Lzvo`W5qyBj?gjhxZblRqU>QHzNT%7hqDK%^zqC@9w>Iy4zYw3gME z&?o?K$-q)nlu8jV)DU_$;*epR^(2i3fT#s#647L#6sSgZ7#_{+t3A&IF>N$+NrWOy zK}yg}EN-miX>1%7*H^R9nR8(!7#|oG_RJh0!mM1#^WFJRv6%9DkU!HiI@p zm@JJM*G2E5nVA$t3L(g3GOg7^J9CW57rX zBXH2ch^UDiDw;`KI_83&R485&|Bp%y^}=F~vfn zP%>&Hats71(W5vemqs(`8@3kH3d1Eaundln za$;l>85f2{9FABN!xKw*;T(Y!h9@{)g_Vi;Vo5lkM$+MjWn4ZtOf2Ba_yWFT6XKTZ3w241^vWjjs@Uh5rBcdkm}nKQV)7V<1Oy{Hs_dj_3+>EMJyBy?NO@C{A~b zfo=`>?fM%4;Cxjs6{VQlzb|P?^bz?r==N=q@7kl9e!S+Y>X2W>HTTl9b;^8rcEG(r z+hBeD4#s^MRC>|YU>0v>NYv_nt)k!6Y=iZac-D7dN*|3&9}45TQ4+|-lch;+qq}cepd+A1~{NYwjyff#)o7+q~@>)M@FVvvN znb;)0^FVp~vBU6Z5KEALy>#>Cze2OWQe_CL{&0_Nah+ZM=aKt` zr{Ckfo86Pvm}L!KSQipmNL3eqK~>ZY7mUo+`S)1aZyj|xH52YFD?8j$pq#UJ=*6=} zxY@dDMo+yWe5?9sZfBypwAd7UA*`l&p5~mc)eC9Avk&11${YI9e1Y(%e%F@Gxgy8w zvjVIyn#k*OF!e>H7f>+un~2)8X6N-uv1bZwA1uXnh~N4}41Tet<wWC8SbMpW(Od|5mu-SAL%Rmu zKawBx51O1>W@?T<_~gg;pXwN0mAgOHCqG}B)7E5v7AdVdQu%0mX5a4Tft-0iYXt)_ fmZ9nQz64x=uCz}gMb$wSj(>(+mLNSLPT%l14786* diff --git a/TMessagesProj/src/main/res/drawable-mdpi/download_g_pressed.png b/TMessagesProj/src/main/res/drawable-mdpi/download_g_pressed.png deleted file mode 100755 index a1270b164e85ddeef662f6b8375acd9bdd92b8e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1697 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+nA0*tB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`kBtHuNWFoz#!AFNG#Ad)HBe}%?0@jth%@)C>7xhtg4GcDhpEegHnt0 zON)|$@sXws(+mtd{1$-}0$pR}Uz7=ql*AmD{N&Qy)VvZ;7h5Huj9yA+ij}dmo1v?r zsf&@DtFx<#p`oLZk&~mFnUk}bv5}>Vp&`r+YT~doO%TiO^it=+6z~O6^iN$`x{)XsHAt%iAfsWA! zB@U#-0uutJKoAq2^no0B=1I*1=9nU2*0`>^`6vSe(?w4g$B>F!XJ%Sw1P96-^LL6~ zxUIw2Y1R#uqZz9L)TO^)3)ONAIO5y>>&*idCB0o1(V3!!tCs1pu@qjivQ#M*kjYuF z;KuO@BJEj6Ij+9n{6D1kyW01O$A3OxKUq8H^X}*0?#=nXQa!q2k<1b9NeL1>jVw1< zx1IjCK7sSeL75q>mKy?Z23(rI>Q>-v-;H(!jB}VKY8}sIwtc{0p?2G@vHbyG#1>q{>jc1(ZO?&=Meqi`v^{@8ab5FWv zdR|Bi-yocFAoA*u4gEYS)@!*wWnFsEkrj6%{8olaFN^wt6!D{2C#2U`zIzS)b+tc4V6CzJ1%fD&oQU-}C10Je#^~^1mx?JG+vW z*5C9^+@~&a(E9Y^x<|z}FRF?{gqE-6)NcR0?{-+Z^BTUQGt52rl2Uz(WY=VUc(?el z>EcD5)_PeA7JV0^O;>lPAGj-a>TdI$#ZlVaj~`@mKe_Q-Roh#>rYYjCeg2|5#@{+G zYDWsDTswGC?QY(;iA{HQT|AfNeZc<8vr9L$3wATE=5wu7xU}_I^VUP`>Gm@w-Hz{{ z{$a|NncIvKw^nUk^X2h_X}4kyZlA4cX|9(mx^_-V`PBLO<$5jgQ=95tPF-sexfNS< qN8Hj(|MJf1r=Hvw*!s!4fssL2a_$$A-!<1jm4>IQpUXO@geCwo+M*T! diff --git a/TMessagesProj/src/main/res/drawable-mdpi/download_g_s.png b/TMessagesProj/src/main/res/drawable-mdpi/download_g_s.png deleted file mode 100755 index 7600aa2591051423c1a60a8ad72ff8dc862a69ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1855 zcmaJ?do)ye93Lqs%2F$*MCTekDD%WH!_b%^Llb$#Stl7Y*SP7<9e3_DgPc6_>PcZ! zZOZ0Rgd&fmjdfUxm56G^uuI#f+ENMC-l^37vG$&O@9%LwpU?OE{e3_8+;pEUoAmWe z^auokKHr1qi;tF?XQ2-MKKQ;C#)lP{TM*`lgkwq}3KBSCBn$-juuuZ}fBVo=a8W{bZlCQ`%{6J4AEClw19fI&aJ~5>aV1fWaWsZ0#5fnl(VD(&!W_eltikTb3PzMYjh&Uqn0_Dh_A) z^4vei!dGl!1cu326pB)*Br9#m2r8k_m`tWdgH9*m2$DQniV0ODsoY{#fd|S(C?vxm zL<(pWg<*&SV-xXAKa~K>zQ{`DpN|PYFp5ejqtM7yO-Zvrf#Cn4F#H8A$9%!B`TnP{ z+&@|dQhY%Q=9#ciDu6lsfpEtPy8$6s~-R_+7uZ#hP(l5mOAD=aG* zs>{mn9wwQ`-%it7-5fY_Y_japfxQO}npJTO6VbtP=i>C@t%>IDu~TQ`+EQ2hSzS(`oE!~k%AwG9n*MmpvaqMeQeheL zy>F)P&O)Q9YZ+69OA=bO1oh9lw#JrRynFd({nT)7e6IVu6)o>ydxH5}d-c}@xOgro z=;_uCUd$;nv{l@9eWrNw{EXqWG-7JfvD~@NzM_9g%V-`n)u-b+zs;T6t|zhS*jG_g zz07o3{$zgPkwfR|j}-hBntP?j9}Y_^NiS71ybP<786+FjaXhKuL{bZS%|k6uI<+oL zYyduJq_vWvC#BMm7fy*ew|%ri2j7@<{vaCCj%zqQ<*(K?+;rHga!2SyJOA{)>s@0v z+Y<7t;`h_-k9*f1%6JqTxbajKH9>T4qw8RK(e%^tg=t>8fs(S!d5e~pT|4pE<&u7e z)yrRnQ3c65Je`*JP6P8JOi~{>c(k+mBTe6U&REp7&$pOzrrm() zmo`I>8+s3fOziESn4W3#t26f;P@f~;pssIQCPhZ`&jKrxGR~iz3|QXDaZ>iw>@kd_ zFHG{B(M#L4m?-S6iNDcuw+Y)jkCn9~?|?9IB+x;uy|Lp3lpiRcDo`v!?d)t-PEvu`R^BhzUO4dvVO2P-g-sKbWK3yc>lVU4)zU+r%v#f zsE&?ra4@-Ok-5Jo=}2FN_iNqIA=-xSD#u!yByz+9&f;;^@OXbpAF69yVbWM(ss#;( zl8-T0onNC+x4#;kbgBM>C}wScD6Y?5V7)1{CC@8tRZ04dhx~!!%h#{2?dwIdA?~m= zxG^*PF-M);wkNiD!*#25jo+nbU9g_HU*xGa+R>k5D>QGdZhE8V9J6h*vF<`nrrFD| zfaxf+kXJ$Kp~MlhY)S0y@{V7+jVBY2zD<$GwRewJ6&REqA}=f&t{pM@&}s1-W#V4Q zy{Zi3uDIT*N2L|qD{oZ;kFo3KjuZ#0`56Z)o;2gOQBtl;t8}ZM)uh%B6Kamf zxNWwWky+csnD(tT7+{l{A{N1kh)f)Sq*I9Vq&&nWlEaq{z!s)XvU z!XmoI+AZ5kUXq^D_NiBKG12|2=wjh6W=dDzVe=I8_0juQx&-{ad|2Xc@Y*|Gi||32 U??_bUXnvIhzS|aFnQLg`KW*apnE(I) diff --git a/TMessagesProj/src/main/res/drawable-mdpi/file_b.png b/TMessagesProj/src/main/res/drawable-mdpi/file_b.png new file mode 100755 index 0000000000000000000000000000000000000000..463d64525b58cfa2acbd7e0b3f798a0db29108a9 GIT binary patch literal 1858 zcmbVNdr;GM9Ix{L0ntOIA{#7LwxRZw(xx;}T%Wcg4@!HHHjfSF}% zqc~BJ=uo0Ln6{8aQwx&}rovp4)XZKG55&1(hQN-}2;j2Ya0+(G*rU8Kv-ckJ*}$j@ zohxHMb1E${1yB+s3W#~pT$2C<0SMxOA~6Jk96%@lg?s^XLtIbGj0md#iV~sRh zV7*E+W{Z(z>>QeQzb>Et=1c?4hU5~7Mj?@apjs>!$kl34A(AUWjR2Hu z#<4n_q7mGLj@!i;yJJ}BKe4cqL=l=G4Fq8u?|_sXf+naO!T~5#At1_#;by`~&GnY& zS+pvY#MYo@4N2I6(fq>L3+$_-#R5pGR6tUVVl-|Qq?C$d7#U)60LHM#u;%}hGd|-C z-`gDjYL@XMrUSj(=dI5O&xZ%anTa8p(MamwHN;FDsZ+@fuIrcT6SRgUq3x|j*5X+I z^5a;Da5LL-IPe@a*WVpFST^Ihj-Dba`JD zaj3q#yFTyn+GuM|sHN|sEZP~dc6fHoPO6lO8@frgHf9vYCj0N6bZK2-iqG$5WC|zV zS?2R_VzJ+kt6qw!2p<%Ga6hbzGkb5DrfbTFa`}6$-06n$84e#?nZy$u>Ju-kXoS%l zUy58)YjV$O64vFMFIk*b+S0Wz_vr16Y12P>?bX?)N5OPP=@Hs12g?UA2(yFGM0ElC*+pep=4VGZ$dmbIe(oHm&!u7MxkHk*fJE?l|w360bx zWB$M4g172xCuogdPx~dg+h+#BX`AbIeDqcNw!yl$m*asm`{qCLMRDBMS?yWwo-pv; zjfCEdajOqBrR3pvE@+m%fPm7z~BhCv&+^tqU zcBxORdOSI>@%B4C?C+E{XR1r`PbUn$VZ_e$H~8iTi&tz63C6!_iqd~m0A=m*8(K5) zZQ!rfPxc@0e{v__nxrM<14}!+^wm>Af&5w9+VAe_kJMgmb{yH<#yP*7D%fka)%S%* zv=07ot4erlY4f4WQP(nR6(<&ve>Qj83Q7iTeS}A`|L|EF>s{&Yj6%M@!i(U%-ZJzw zwQGIaaON(J=gkqsd&|A0~Cl`OLllRyo2kUDd)V2tRvrkm_ zdIHz3F4e7@m%XPq#GIvSOrR}22d?vWxM%2(#TP*pm9c^o3rzmhu`jNFG@FiuL|-=e+gfqgQK4Q}n(sYQ1Icz1r;)s7HH zS~BfAMt(!KaszMZpWr=$IdC(6Yu=%6+nz1dzW zYbvzF6x%mVI#zkQ;h@qDoEFzSG`4Jf*_9vb7hl1@J)|Fb^Gnu9R?vfipWa>L{j2HJ LNvea2RpoyJnoH5b literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/file_b_cancel.png b/TMessagesProj/src/main/res/drawable-mdpi/file_b_cancel.png new file mode 100755 index 0000000000000000000000000000000000000000..d2e69537563a3808333f4bb26169fa6501bada76 GIT binary patch literal 1859 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/file_b_load.png b/TMessagesProj/src/main/res/drawable-mdpi/file_b_load.png new file mode 100755 index 0000000000000000000000000000000000000000..4038ef607c6c4fb0fa2afc1d39c802d954c4e9c8 GIT binary patch literal 1710 zcmbVNdr;GM94}*V%EWW58{!nQ0=|HzDWoNl;@T#ag5~W1m1$_xQcIiK1}Kc1h+0L@ z$%JD%aq6a0<)J4kpq?TK8@Ty?q96=W#t9<6a1*x_!R-&vKbA}K`+a};em>v#B|kcH zo~z3g7Z!` z1y5m=lBwFTY!exm9T~68)+rGcXKpAEVnG=KJxLRQMW1FcqZScogcoJ@_G6F(jHu8$ z5$Cm2iHc}IN|{Ii<^~2Rc@P8$1Y9Tx76>4JfX{>YAdk5P0Z z#$vKjTZ|;)q|&qz1;NbBOm1c%mojNU2tg1#2cI9nXatzE3^ZX0Fqpl^7%3Y&Y%P|p$`NCCcRVYu2Nw8pC z!pCJnI1E7uUo1fagTzR%P>hR(f-#P_Vc|e2E)0T$WfGwff^b+Y;ma_LCxkE|B;Y~P zF|6ERrU`?R9J8xs?2clE@5G`~6G_mNDW0Oz#yTK6m7*zgDrE$uaROjwg4Up-GR?E> z<#`<~Mw+x4q)KL@^uS1dQSDpo!}Gz ziIPlG<^`}^fA0ZxVLgq zQEz=udu#ILrS2&?cg}5%wW=yLo42}qj?>>OS-Yt)P;*kAoIM;N@o{vn18%rx-t~($hv#xF%c7n;E7CpuhOfa-lA^=Qyi+2t+ltGFtE_hq`tz;mdBe9uYrk={ zqB%2sSF!se3XEQBs>ZvWi>;X>u5Ys*8}{{0w)*(9E2sZb9p2gf{&?_lWP-z-Rf|O> zeMP&{njX!0CTl((u2B1xiP!j*52RcuLm;OU(|7w{;?e0U;US3tI~)dzF|;abHZ zx}5#gHO?uKTo$F-3vGK!AD=&lKvWyPV;W{tBA>HxQNzOZ5YD0Kfveh>DwW- z8umQZ)G8`whxYt-hW=Z$vYV$|vFvNE+8r{ySlTS;jbNu_lvU0y-Mf+fOmn_5%)-7p z-0Aach*KO?us!cVp{(?Xtk$K!I_9Wt>X|a$wr2OnG;TFoQgxwxSKpIQ^4%A^KTcoZ z_x)|<&lI`@!4cSEcHj-7*_{o=aA)dFHu!>iunw$D!<8+HlJi|T#2a&Sqm0}IEl Uv>j+gCfWZWay$~Nlq}8r2e>buxc~qF literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/file_b_load_s.png b/TMessagesProj/src/main/res/drawable-mdpi/file_b_load_s.png new file mode 100755 index 0000000000000000000000000000000000000000..68251f82f69d93e6f82e64c6a4f26419038b0eaf GIT binary patch literal 1713 zcmbVNX;2eq7>-myQ7X{ER;;irUI;lhkc0$N%t0W

vuV=aMY2hU})h3kg`T2r3>^ zE8u~E+9D!MrPdoM$0W5VFiw>sBZDIttgRN0v5Es)yFsx1;rOFFyZe3bx9{`3_w2UF zh)^d-cSi<;;iL?cN7JjH?U`*)zdcIU&7hZsR7gA(gJ)1im_Qg3EuM}5NFj1-x~;3Thz-rJ7ZATX&y z>BQh`r{YzSfD9)PfXDJ@YB&%C@cAq#fXC-UegKyPaoHUD<};xH5sxq83V^8#q^%L! z3{kXPF=dOE#9$Uh8ANQh(P(5D{aHAX$%ceNp^byfWzrf1ypq`eV+Mxb<2;A}ar$t zJs{+3hwhtuwa__yV0+U_P@C>Pe&Y^^Y=5>6o!c-Ndg*+FDmcyF?W$bwp6I)I7AiU8 zE9hI%TzYiu=|SJz%I5aWj0Xk7MR4_oE0)g3gJgSEV9?V9=@A#IIOW8Lr;8V-of@Cu zKDS@cu_2P-pLWqbjoW)$XVx+<&kUS5F7eDVJRi-y=<&6kWk_JM!;0=69?2vu_1W${ zMVUh-JF@Enj_HIy4|Wu@JHLqSww7hh`e5j=dO3Ubf^KX1SB{5fo{Ft-<300hELgc_ zbMxBHj-?IyrcEyDmXUgMMQfBpLKGQscwkPjxxXW?A=Q3Q@p8DS)~jLTmdHE3n0e5N zaIF~uZr)qcb6gi*Qc_hBlQ2x}IoH&Y=+RhxcJ7m4Lj7%(@AW2lj;GxO=r`DKg?)eP zp~7VE`JOj@l$Js1s~616PwP{2oC@qm%I}r#zs74^s(baFmyh2Lg{&r1p!`eLiOCkX zS<6x!jX#B*FE;BTSFF}R?kuTt%9+>^eqi3VgcV6UcjLRw;gD;}?HbJG&-YLJJQ!Fe z9!*@l(f``m#@Zt%9>t^-JacDo&%pU+!<^vnK|3gkDRq}l$P;!vlPI!omK)~3Go zpX$o$tn>Ogi^yGS%aV!!O=|A}ZDnV9aN~5~N!_OwAf{T7g%!v}lW*<2b9OUdZ zEK!fumUBqYouR99KR!9uRdc=T4tPEx^hPz|{JlAQS*r7?=A`?EE7^5h&h{oQNiih! z^v9mba{b%xE|A|j%6Pc9Wr%TZ-+C;$+M>E%Xnj;>P3JoW@wT>D*gsW;oKkL`Y3d&{9Kc!oWr Xe@)-)1*^y1Z9frZNQAsenzrd56Mc~> literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/file_b_s.png b/TMessagesProj/src/main/res/drawable-mdpi/file_b_s.png new file mode 100755 index 0000000000000000000000000000000000000000..970f88a98abf6ab2f8fd9b793032522db080ebed GIT binary patch literal 1864 zcmbVNX;2eq7!C$dVGum9QWV$4t4fZ|v5-KNB%1(LkV^ptblGemLb4%QAwlbbs3T}q z!~@5I;!&>(7Hm|i2$rEB9>`%uIaLl7t$5+x4T9|t#~a?EHL@U}|+UKf|o4w@cbW3u_0B6qvybMB$K#h|qU{EJ$^g@FO?B^9yviX<=0{tpvya@c{ zRJea2ASHA-z-Mw97#o5B7-m8|J`6){0EZ26SZwNs84yp%hlLz>VBi8NYdVEe7>vjV zY*9NA7)O#?A&ZrqoXkw-G6`KQ3lazfW)2RAL1{4bMh%G?7#h9nAOnKyF`Y_Fst65W zW<+C%WuyqCJpB}cTI=usnOLJANEDSamI2kWASRooR-5DM*VdE4_`hy^QClBs)Z(mQ zTu&_1VN^You7hAIcV9PTR;0WU&eN%=qM!)~fh|+x8qyCDfz%hKLZuM0rHBOakV!Z) zIZwuiAOS}#5pa28frqr_d&Larm!K!1LPsxR1=artamAeF!ZxuidC1eOZ;9@HMDasYXN16alX$r+1s zhGlM!|1`_s5!Hca@pJ1_o6p08Yp99QQKK>J#P=F%;tYO>IMmQsm+kKx8Z@Tj+V65T zyKwTU1x&{u2mgPK9_i0qWLEym-z6v&+ezqZ=V^S7&~)fJ!?O%8x_cmw7Xe$U+WZU zNjS88T;JI`ywCMf+6L4Fi|1jd_FMIg+6wp4?pRJtodB&gc^igC+Am(ctIeX%<=vt44y^HcJAE&>lCMw3@lm>duZl`q=zl%Mhg1dV9z&vPzoeT(;&l52L5rx+XLGzHj~5s>&Oy z!XM9UnR_c~-TGOKsY8B9U*i}AHe9Y=vN$&5_51dTtfs`P*Hf2oURu?AH0kYOWc9;S z44q@pwUfKDOCM%LISC8qD_8z=18>GxfZS6KOj#N4h4U!z% zJH_V85cz@wwe^eE?%U%P&2L}1%3E0_DK@;zo_e)hP*swUcc^rJ?ig*3M3w0e(+V;; zK1}PJYe1{fI;R?F^|N-N!d-KzTF%Tj_Pr z2_ILTjOZ(fsz@4^*0LveYon}aPc;2yV$lWUc)3eGvvkbqZDsFoDQzuGz`0z^qVUZ5 zM%3c35f@*|jx~VY;0n*p1x=}I+O0Z98(l7BTZcy%&cAH)Q8Wo_F?Mr~<{uBPnS8I| zdc^AHn=@NqJf}5Z>MpOYE06CgeIWA)T@ie?(3n+s7{xQaD_WiR8{wRpnIoV6QQWpx zTcX&}Ig)C}8LkC#aQp?+&~>jJ8K!ef5$XEn>iCRd8wr6;X&A@xWXgk_}lBG07$pXb=+=2Cs%>A!|rBBnwFZsWN!r zEg}lGIC$cL2dRih74ZbERb)gIEm}pVsGz7gBDEU?+aHcUy0g3A_kR06&wJ12#Y9i{ z9z1$5g+lRGL?9}1rMsR%p5!|qH(>y|_z|*rLX9U8HjM?Ph;?`(N>vy&$*2m|=p3oF zsE|T&OTuE~iFoDruogEmH7*^d-DoD!6pAq1Zq{fGC_zm`lQEMBXg_%dpkg`^5XV!p zm1Zfb$09N;s5&D$R-0ka3UomDRI1PplLSVT&`|Bh6q6OUi-2BUnB2RLSpcL?R5Qdfwf>a1%f?OU1fpjW|4RTm)@`e~77v@1QhfnRh0MeR8mjtU2 zd7mv(5&?RGFvBdC&1PfTLYTNEnFR_20v88|!yq*nR)>ku*cm1(t)Brwty&9aCNSJY zbunrZ@iamNke+@D!Dv=0KNFj*eTgDd#D3jNoOFKSz39cGlJ zLalh3MN8HriPjG$bN6*aE=AHCc!mWdi=s(EaBZ3qH4zF#1dv~tI!p(%rHBLxl}R`< zIakI5K>6F#Cgwx^9ACmh0*M^ra3Hya&j&#nFH|a!h-Cr^2qGK=;&b}3 z3X_%4n6zlWU5vEbhvj`03rj7ihQKYcIG)nq0Wo@ZCZ#q{D62$*%Hz ziWWgFSURecTW}+_H@`6U1^coP9vc!!C6GWa>5UtKqykH>*vgadmSBKLEj#)9=fkO{ji5m zj__sAm@V$w7PnFE(d>0~4x&rvr{vTU+8n zj_*`e22@RBh5AS#)uR;#hgaOH&S%-PnpRpBx2H|KEq#xK>uX-UD_HFn=t+a?@<(O5 zH%-ltSmr3N%;_w+Q{~A7?q>7+lA8Rn^+90r#0sN|mNoXL?XP7!%qya{G|mj!6<)mI z@s1<84!(JPYRv#_4p(#k#I4a0_BH0gQ|2D(ytT`5MOxSvH@I`GBX70;=1udYdxI8M z4?Vi$_A9>XO>1O=(fdb9R6de@X50Kl{<|NvA4GDake>QIgZO&CUFinz@(SIB5BFXu zeGAaa`sUPw_E+=wz^-u;;z=nGHMfk8xeeU${=0Q%Xg<5!k~^WdBeA|Q&B!o zgXl%$;n^AMg%w>3E~2)Un@_qhzlv&LZFs#JCfd}0zr7rwoPHF+hHR{K@93FUG~7uS zZW7n1>B16m&7X8(vAAYOzCI9*^r~QYohW=gDLX%l5e7Q~TQ4@NZ?I?jR?L{-lw*fx z%+9QJR@SX`>Wfk*|yJ^UU#I-aD-tWfwef*&xv`ZGsZN_vL*(1S7{U9M=kbo zKlx_q)SIbuo~~SiSMHB&3x2K7mYij7zwyvR7dZW|D6ZeLvJ&6uVg8eww}~{=2XdVa zC}v+;blpU0O22%6NL=~SRo0fI(dgKkB@caD!(MScwqDsgw8S}CCB6GyPtj&(Oh?+R z;NsknmhnjY`QR4qg?WcJ9vdk-#w?)~rX2A4Xe*m}*y&iDqdb>CKJTELs+u{W`Ec*?c^_R`-w2$}S4fM%M>kc^OE`9j1 d_~AN=8wFY35xXa|y2SO5Q^=x`gOVR|{sDEV;@JQI literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/file_g_cancel.png b/TMessagesProj/src/main/res/drawable-mdpi/file_g_cancel.png new file mode 100755 index 0000000000000000000000000000000000000000..8697a7efda06b1225b4abdffbbd778b47c33a20a GIT binary patch literal 1841 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 G`TqcWzSkoF literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/file_g_load.png b/TMessagesProj/src/main/res/drawable-mdpi/file_g_load.png new file mode 100755 index 0000000000000000000000000000000000000000..9a760469d9a05758e149752c8a03a3177867e946 GIT binary patch literal 1731 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/file_g_s.png b/TMessagesProj/src/main/res/drawable-mdpi/file_g_s.png new file mode 100755 index 0000000000000000000000000000000000000000..e72c909d9cce09f162bca2ba12c2a53ab79da679 GIT binary patch literal 1856 zcmbVNdo)ye9G_6hh92Zd3@Ryx@`qTN3_{jvAl`+I&rpYQwJ{D>tB?Cqx7 z(P%XL@Gv-%ntd&w?HFpDkrO+Lnp{b747nUrlPPi?LKCSl1pwnU~(OH%Sx^!Y(Rpg}+pXc1Bl7_`YKAutH(L%afNZ8>JqfguqxNl5=> zRE#tN2*q>=05Q1?B^v|*9*+t7K|CJl3vk#VhsCB|9s~3fKs*7*9~geL@G+k4Gfg<9ASVFLaEc>qy|F) z3!_|t=}94-vh$2l$J`B7fcp$Ct2t$X~?faX?9kzds0yArT}NNhG2G4o3{}0{HL< zHXJ2LIjTfP^lB)*!&vrLv4T(?A}2AO48xK~Dj*^eBQYWo!-3G{JisejgQ~C;!rPLb zPu{|aPV*h2lISokFce>b<_r48T!_u%hlcR@l8_<4VO}U73ZV8pDh6NxeHg3yKQUub z#;`2K@taciS&kndS}T4Q@95eb2pqeY22|XsT0kx+0jX9HPzpJMH^? z3?~dh)*Eu?n;-N6fi_iElg~uy_r*r+{9e|17oT43ay|d$ZRc7s4y9Wi+_?V!TzvjB zuIa+sN$1AQ$aOal*vET%FDU5dOZNA=-%ap|1<`z~3)9PICi&6)CHPb^vrFL)!90x z!PLI;kMdR0?x&4jbGY+9oIG;e%PGBIp)2?{Gt> zHT{fhi;WfePq&tBTrqL=>l)#&v3+Sr%Gd6WoSEx%k%m_u>EFIH>)3C$h99%$P-Avh zJvAKJsn@pdN%%e3{<7tf4$t6kBV9@eU3l}ee J%R}O`{{g^4+SdR8 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/floating.png b/TMessagesProj/src/main/res/drawable-mdpi/floating.png index 4f11fc26445925bda8d8d7c7ad59e5f71198f973..465b28eb7954ce883d4d336fd10859f77eeea3a0 100755 GIT binary patch delta 1950 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 Of{u1S!y90z`~Lyv=WwS0 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/floating_m.png b/TMessagesProj/src/main/res/drawable-mdpi/floating_m.png index 6d1b38184f1e2b3d363f07f7d5aaa43cd1615b30..650c4626eda389250efec6e074f8190939a556d9 100755 GIT binary patch delta 1065 zcmcb^dy;p98&iytqm#LlnTxBNlewv(p{uE-lbf-lk-3?po12BPg|nHGLPc(YudkI$ zesXDUYF>$_i>(q+L@y;X#R{s|4VT`@i5|o-|m4e#>7hHNL>oGgk z&*J+3hk=3F*3-o?q~g|{+5R3OjxxuO=f0hgAU18Lw%n2ClAEGk*P7Y=zomCOd`P-< z%qd{I6-!)`!lI4^&Fx9Xx;7kfn-0xp=g$*aVb1^5@s^Qs5KHqV=llBq;?|u0SNZ;J zajkLu51E+q@;dovZ}-f+d9&;FVdGPeWf&6+xav)s)e3k*8f!nz(cQo}?VwTwgZu%R zh{8)Z9O9Qe_}?t&Da&S9AUKCbarS!aiC@d5YFO4El>V^#${{b&6#iJY@FmN=d_8uk z*jls1dGhb}I`H&$)utSKttv6?yyNmu{#Hwu6|8Jpn-KFZxsE$q zYX8TgZCBSSw7=H8u;P#OH8a+e6M_$V8N4dX&?}C3tf8Vkm!oJ&R`{2U`1n7Nfvj8nQHN! zZjl_rhz+U>-sFFLIm3BpOg&`(z*QVrFATP9p8QYZxGPuXDkxKtjWw8%v?Ls^tGFP+JXl&wk}Hl zvGmy_$0F}XU*acB&%C5?P(}Z|kK;4VFYUM(}ODecGN!+ev)yE zxh_lLxK#Cp>e+rQQ*{T1giKlBf-k5jBX2*fn#q#2t*YFm7Zk?Bsez~(f z z2b&&le5`)z?!qrI+tuP_y|y26YGeJkMnP%OOnYsM2^Zz^Pwl^YZoX(h&b3_sr>E^1 a*%)MAuQA)^^Vx&}2s~Z=T-G@yGywnz3)5@> delta 1084 zcmX@fdxv*}8&iz4vzxJ*sk4crshOprp{t3LrK_W>fvJU=le3AXlbf@WLPc(YudkI$ zesXDUYF>$_i>(q+L@y;X#R{s|6qnw~i5|o-|m4e#>V_bSC>oGgk zf4RtgfPsNIz|+Msq~g|{+4sGJ6D5w{58I&;Yd__{hC8h*O9M}I)j2qpDmpGL3B3D* zeaqU?NP#Lcy_Ko z_qk2{j{|ekpV!)3r@yZ}zdJo!??~H}vyt3P4>am;aF;boZQ%S-F`MNF@3I5wALMwN z5;x>5*|;x3;rajTH&vdpu6v39&)a^PF`SfI+;mTfPi+~Syhl|pN15dtj>18=gH641)9(n)^ws6e6Vutz%2M0Js%_&{Hc7=oKcb+KrJhr4j`~6UCRTON zf{+alG&uV>#blHZUTWfBsr{3e^KPnC$gkaVzHIgPm1UuKFYmoB?Dl_iQ>|9$B+si2(Fff=^!r;! r75qClUFmH)>lf+vRBQj{|4cj#Y8>kxWGrg*W&i?DS3j3^P6e8^%#f4YPdI9N(jyBecwX%%riA&yl4~!-zR-R5G8l;YyCOaKwW+1{_}b6-*sQlAI~jQuhwXEQ6M?n!4Oz0INHU@ z#_GrsEW!?EW94Lt#@JvGPR=ll4b&hp`ka>+5_9$pJvuxl&JE)L{V}l!iwr~lk9GPP z%PCiY{Xf9=XC|n@g}4*p6lB=X1MGgrax8W@u?BaAmdMHN;=5tc_(bt^Ns6c6DTwGp zE$*p6A+zkH&L1UUx;JdH$BvJ*H2R#YQmEBpc7zxjcbYfS-tUN{#~c}v?kh6?gf6|J zj`*btgT3U5*2-u|f9lbAf2Vudhxpm7MaoJm00|C4vkkBtWiuk=wqb`a?H$k{!+ks7mL)*<%3dMheEsP zQ63a?x$8L!7B+cqmk?)}!Vt^07ycMWsqr=d|UzL?La#Fna3^e{Amf=F9G! z2WF9oUnt1sG3T1wwz?*T`V_*Gs9;verkUL0oNz+%Yi4TbY@!Nl2}vT0UkGriXV-e+ zYMC|4ngF)u_Gia{^#AVfkDYs%#fa_W8s!_l32kdple%up3edYD(=zIFznRKLUiOOf zd1;y4%YlSa;!Xh*GL3`pyQVdNA27|J|6N(}tz9}GymMHQ8l1!lEM;9F*JAXVZ&XT$ zn@q9iR>1zy0cO%`cVfc(HwvBgW734VyURneg#%Pj(}~G`!BY2DEZnR}uSk}x7A9+9 z7hyi`zB1 zZTd@XHu{X;%;I0re|0FsgZC8NiRrA5d3IxJe0mMvj0zys@t;;Qfv5h+2bA94MX~ zc5I)a08D_M!ZO^mF=-O@Fxf88!`uHX;xBPL)s^HA6NO6L`tlae5O zXr_)G@t?B>yCE)3qa^zj9n+`S|S~ zh&h#3VfckG7hjR90GH-p2xfzfKCwKKcJz(T z1fEW2M)>qwE(M)V4l!x|D0!?6`>VMLb#~S()#Fhf*R84lou36vxZLE*pG^DabfKEy+p+Bg?75t%x{11%zlTW(Sc_Y49I%o zfZ+J1qsa4@(3)B{xw1zu+l(@&NP+iMNOt?X+B(JpgVVl=X?5my!MYr)0gdvjN#=8A zD%|K){I@Mhr#49BUs8pUD8W>ttA)(fpq`68Z++PDdb$Qm%ytlKoIw17eVuEk7}8Sc zX}Q6-QgJzNqB`RfFD=7s1?<%;%Ij++O%S@p=9PVlSQDFqg;iT;Gpf$u$_m+BV(ca= z?>Hs9wGx8uIvC0IukksM1EBrrfy~+m4B=|XCn@XrAn12u5QFWC((}-;pt)AmPp^;l z5S46VEqi->Spg+A4Tn4K)_z%f#t3~C^XJXdE;(iFFuY*6JG|zPr612ffXIfA=V;hw z+(Z59NcgkELG|rpNNwP7a?4i@vFjW8^JT4@BD-pmgZ-fhG`{nSVZ`j~8x;S5p7kC)HgPmA z8?}Hfma^o?+^~Da$x)sgUr+1i)_Q#JWZbzWCkwZ4n|bO3gi2Qan1^AsHIZd=~%^U@|N-ie&?Z|=c*!vFvP delta 1881 zcmZ{dc{~#g1IHQRF>^0>BIYQ}&6Y6R$}?9yN!!XC^SJM0LUYSKbEI+?pL*P}+{I|Q z#!GvgN$$rzy@jmu^vC=D+3(Nq@Av)uo=bj`XhH+Ej9epKJ6hH@^x1{r`dfuSUw} z!@?bjUNFyJ9~k_~&DZ8ZkhMlsEV#J%ysVLye~{)@AN%=B-jIA7bq>z)-ke1EU@UPK zmYOIP?xZtT$y_vBA@TB$Qs7s`qRp}rS`^Ct8m&)#QdMXi*a69#MW}Vb&Sw;);ZzYC z1XtXNd)MyX&fZSe1_f@S&_--qcnM!oiTbl;=mY1J8NC1xOQVuihS+47%eO(T6Cx63 zPJMvVTD)sgs{3f&(LkT)UT1dICa(#u;}MStXx;Zqc&iFdioHa~XV;o;D)GzZCF5XWx1C3ThpUo2j}mz>%B zoewdcxZHlf1Nb>5&V3Qeh=NYhml8!}W@clRbUE4Okzvj_L#A}g^$!B;ve&p7H=xeo zoOF*|S!l>&+A?JPSyJukXmF1TzQ+WT1Ck9*b>D3oAWs#o>et@UnHScM6mSoibSXS5 zFJ};&iFI7pCelxWp55yF@;+qb>1<|3e+FqI{!zH{%RozvDga7<;x73umGH5Q-jQ8lq%7X*~10`&dLUJ=UYBBsOR=}?;tt;k}sN;V(R2ihxEK(;3|@$XsAPnMllul z$5}vV(2*a0>hJ8uyPE6GDF`*07pZk{z{Nx3|4P~rH9E*e|7tJ z%k)DxbN;>vMd|BqN!Nf{51r9&mn!Rg33%s+Uq(1OkA-YxRE8RHKn%5_p`XuMs6Bk7 zmXM!N9shBkbrISWq4Y%DM3fz^y$yDejLjxF0x}b)>v4qFZzIIA=f>$D%7nY_Bt-wo z+4m(>ezmz(XqhW_CI0!^PA>VFZSxO*EbWAlS-uZ%gh%l~Jh%BvoLthmnK2D*gS3+dT~pf<0_ypdN@f3$h=^Dka_2p2W84 zxNYVybSOe+g&6Z9k~jJbpHFm0#B}*lQU)3&N9lajp}UWKbHUzZSW(cx-UPriuO-ZZ z;7%O>dSSmL{B~F8)!Oc73NjRwLRsIr2g~4)GVNJ>#hXotFM4;d;$@%%VRl&is#REj zdYn$*^^sGy7 zCmc6Cwln*(o|Dm&FmOpx(0`_pi?Z8!Tn9EzP#cR@3A(k_y%t?(>b3O`%f;T~znh8~ zJFZd%RMM^zkVm6cRC*aM!j&UZ!w&pG8uP^r$Lq zbKA6WeHM(}2j{jd?D?N;v(_?n>#&s+W>fA6?qE z=xNp)>z6DzwS9&p*Z)upN(A$M*gZUq?6^DM5ZU_u`ovjwjM>xH_MwMr5jPx?a!lD= zY;>rzQLG(CBM^4qliKM2qwjng$mTlhnwm?70rp_Q;zcd8qB^hamGZVZK!^*Md3J#& S@){M#^)uEeJ7fcbkoYeje0;b7 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/forward_blue.png b/TMessagesProj/src/main/res/drawable-mdpi/forward_blue.png old mode 100644 new mode 100755 index 7f4ec885ea4818bd6de21f3c6d6b7d6877ebabfa..992a34f5be93ccf957c78b63cfa582e8baf04833 GIT binary patch delta 363 zcmZ3-v6^FoC!^9vuN#c);hA|U`Q^ovwVCAP939OKTpiuq+{}#(4P8y0EDg;ZUCmuw z-5lKvOk5_X!<0A~;8L=f$w&iYiVF@UMoJ3BB|)iaRwohu9*95C6Cu!G%rx?aOuud43bmnaGaeZnRGEYMdDGP^pvJ!voB?SUYN^c#9p=A zllM$SlYrGpLC%O;2gW;TMtdvQ8DCD1w5gE~&792JT^(}4@6n_N@4}U0nPT#vnop_O n$L7xXbxHD<{of#6CLV^)6OH`A1}3aPw=#IT`njxgN@xNA$INl3jV#R#EDQ}@O)QLE4J?g~ zjVw$|U7buEjg%BBatnNYtz7bxOLJ56N<3X`m4G68DVZr&&JexEIP^|l$Ydl3QDT5g z$wwwRs1ie5N_3f>>z5u`<<7vsu)x#BF{I*F(x3nT?U{8Mg_(N~KG?P(;o?)PsNV}F zPEftVp|odOfHt4Qv@4gbCP_C;Gr3?TdX-r>(?u+SCDmks!q(#G%PkgntD>GYTg~u~ z$e3~5VVc1uEA{`&m$E*nSTL2fcY{aTk|jHiP5dR*&~|vT)>h@6av2r2!fTDB+8$on z!m#?`6|O~A3m%@`A*^LE>EzL$-1=7qf(~0my%c6*U}R&EcWq>AI^TT)=vW3%S3j3^ HP6Uku^yuux+0#t+YCiEAZR{DohDV1^JEg*faGb; zuLf9_6a<HH~i|;)(^B0&w7xt>VU2hTTw>n6!a{pk0J; zp;g6v6(ZZfdaR+-%@wSNUAq=Un)XTm~n@xQ+d*(XB1)9(UTdEnc*Z4@~TK8{3-SS6|>Ov6hwM#rpU1?~{`; zk9Xv7`Ps$HZO`J=?)JyNo)Kc_`cTH-eRTQhlb%iArLE|vYZY?#T+z2N!EtZG2gJ_C zqx|`Yj|bx44!m!#cKejs@k0OBZtv0F_?6zm{YmbQ=e6&{`Xrb0?Ds40pAWw3$~*}C g_&T*ul!@{6E@JU889Dy4`P03g*;Gz?nYerJ4~Tq4Q~&?~ delta 247 zcmV-K}|sb0I$e51&ZmBAt!$T$Vo&&RCwBA`v3nw!=kOn?*Xwl zh)oOzs#OHybs#nq0|W>G@s`EgPILh=8v`Byl=lNt=YiN5#D^Ks4a9$exD<#F02Rq$ z(Z~kG6M)Q(K+F%s$KeLVdReprDK{W~3dEKm8=yA9G%EtBV?dk_wWt!PCjunL2=WJ# zLQ!8JwG@b5p+bE?d=!Z1L2U(D5CPPD1f~bY03?GdfK&?*Gb0J_2I6R-=GVw-u^Iq1 x1mwg;K+Fo_0yV~ARY)MZWP#WhpBjJw0|0j|nOXImxNZOd002ovPDHLkV1hnDU+Mq= diff --git a/TMessagesProj/src/main/res/drawable-mdpi/ic_msg_panel_kb.png b/TMessagesProj/src/main/res/drawable-mdpi/ic_msg_panel_kb.png old mode 100644 new mode 100755 index 44b4285c576d6b15058973bdc1a9e83b46a62ca5..57919b9acef2f33965eee2fc3b7d94d7dc5f5b1d GIT binary patch delta 403 zcmZ3$@t0k(Gr-TCmrII^fq{Y7)59eQNQ(e59|s$d)IVbLVWOf2qtZmLK2>AgWCKG( z1v4`}LlaXoGeaE(BLhPteFGpe(={})GBvX@GN1UjWbz$GrO8>0*^_rMsc?j6=B4D9 z7i&(gVvOo(*{S|_%Fb&*pB8$$IEGZ*N{ZQCmaD+be3(Z;EO`OX9=1mzYFd(P zOp6?Bx;wqv4mL;#&tgy(5kAYu#g*h@*3j8_s)4ol|NM||yGmb6eArpQQZ@6Ho(sQ! z%>#Qg$5p#0aL!^c+{qw+j4iH-$A|S%cu2t=?+K9%jBE@cf0Rpnt@yMBfVMMuy85}S Ib4q9e02l0W*8l(j delta 483 zcmey%zJNoqGr-TCmrII^fq{Y7)59eQNJ{~+00$e8Vxpo3W6ngcK2=lQWCKGJ z1#?S1LsLT&3qu_RBLhQYeFI~CLt|Y-BP#<-D?`(Xe@iCMVoaHw#i&_d;OlGUUzC}i znU|R3lAm0fo0?bR>0+x?kz1gbl9^)VYGUl>=w@taWMX7sW?^V(VPxcJ3FH}@m>Id5 zyILwK0969bz^2#2%+%4s(#*}x$iUIi(ACJ%$kEKn#m&jg%)k)HaRcg|tji>+09EIT zOWovOj2c|NiOHFHCHch}nv)kX86=pSrJAM~o0{q-0ZCmGQ=?>E3rkB&-PEMSlvG2r zwA3_nBPE66lAzQys}wT)HCd0@Ded&{HO#;e_VRRb45_%4^ymM7duC{( zJaZG%Q-e|yQz{EjrrIztFe_z-M3hAM`dB6B=jtVb)aX^@765fKFxc2v6eK2Rr0UTq__OB&@Hb09I0xZL0)vRD^GUf^&XRs)DJWv2L<~p`n7AnVzAE zshOFfj)IYap^?4;5Si&3npl~dSs9rtK!Fm_wxX0Ys~{IQs9ivwtx`rwNr9EVetCJh zUb(Seeo?xx^|#0uTKVr7^KE~&-IMVSR9nfZANAQKal@=Hr> zm4GgVcpgi&u1T;Y}Gc(1?(%I3>(Ade?&B@To(9qS?$k;F|h>49(3`SpU1x_;u$)Vp$SgUJ;YhfrsZ81nO`EKQw)+f^ zT#rcfonLyxLFdYcr4DPnJH0nHYAEbuF|w(AEX{LRvhk(JF*es}0y72o$#uML%=~7w z$=fl3o7K};;7QSf)q5}UE@cyNFu&5yblBnEb>=F0kwzY!07p)v!^M&UDbcxg>9t*Mm-YKC*??NT6oGqrz!0Q(+czV zlP8Nfw0&auD6257RZK$miBwz8i`-K}|sb0I$e51&ZmBAtylr4@pEpRCwBA)SmVzje&u|7>HYe z_z?q%;7X<}h8PnNzXM{B!MA~UCJ-w!PzXSVUVyUMkPM$giQyna?*Q>@lfDBze_Ut! zV+_L?f$0>+ehb7xWJdUUAg%|d*~{pLE(GE@3X>?v@H{348UPj~whx6agnJ)ms05ke zxeSOqV1}W))QlX%fcP@D0tIHMF_DHXhL&bGi3wADF8vENtb>qY#JH4X!;lSC0b)@! z!xlijd7s=QWdLRWf*RIAu3^ZAD1wsGEOM(8Y=H6q|Nm6aQ2+r3027QvFKhdTJpcdz M07*qoM6N<$f?KU@`2YX_ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/igvideo.png b/TMessagesProj/src/main/res/drawable-mdpi/igvideo.png deleted file mode 100644 index e7b93b3b70d7caba4a434154fcfd199105ccfed1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1553 zcmeAS@N?(olHy`uVBq!ia0vp^azHG`!3HF+C+nOCQj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS=07?_naLn2Bde0{8v^KDjP)EVYz|dIVz*yhVSl7_V%D~df&{P2mlz_GsrKDK}xwt{?0`hE?GD=Dctn~HE z%ggo3jrH=2()A53EiLs8jP#9+bb%^#i!1X=5-W7`ij`p|xTF>*7iAWdWaj57fJ{tG z$}cUkRRX#c;)UD-xUqS~&|m@vn0`fKfxe-h0mw@*g}%P{mFDKcRTq~8r6Sym)!^cg z%7Rq=pw#00(xPNw#HA^NtSYc_E=o--$uA1Y&(DE{Vn9ZINq%ugeu09svx0_iVsd64 zh_4CO;OlGUnO9trn3tUD>0+w{G(s;kGsVix)zZws*xB60#LURh(AC7r+|bR{$;H^& z$=KDv#L*F^*Cju>G&eP`1g19yq1OVZUQk-dEdbi=l3J8mmYU*Ll%J~r_On$c7Pq)K z8Ctkmx|#vaGsNx|h~5<3ZUO1V?hk#SWAs5Wixkr^Az<(#kT1*9Wu`uHQV9!ZU~2_JO#;oYKXI-M`?6dPhA{zniz+{A}drn>M;4T=B&_?+Esqn0Nf)`M2jy zIMb5=jW4UB)`m&-9^*eFpV>K|pRIXe!-lyYDs~6_jz4FT`>-)6<^cdstAB*J&~Tyu9=FljpXFg#Nvfwbf5w!Q|4MFFE&@ zd}VrW9c*{FTik%dg1dcnTzPKo26-2ZW~X37VxzPj&Wi`uTsZcBqs-eW0T88U07eEi>g z7AcWsN0T;g*PHG=Q6)3eMC$CH*U6i29y{^FPUvm5iIlC&v-var{>zx_{l|yGc!XS1tSAPBYguPGSf9Qu`)HYGBV%z zSCNrB*i1nqJTosPzr1*|7L%O3rJIwRtCNMBo4Jvpp{uE*qoK2txv{y4sjHENg@NVd zbS7D-8cUpN7Bd-WxK??y)t_q2=2ga}MhjG)K1SoC}`s!nyH>wcWox^BjcFu8MWA ziz_^`wx!?T@#Y`p5eD2spVg|K$*k8aYI>t&xkxl@f^=Eax}35eUP{{iYxDBAn#V0zbDO4xly}bzKg;keM0s&f z-u=(A4{jXJdAWFEgNTZwo?WiTWvl5Sy&3w7>1zMCHh(y;r}M#_yN26_5c6? delta 635 zcmaFB`G|9ZC!_L2uRc{%-DCqp69sciJwsDN6AMEf1tSAPV|@c-eM4hiLnA8#ODjXu zjeivxd7KqAd=ry1^GfoIGbU>?$wfOETDV!dIJ=mb85$b8nmCyoy16>J7&|)|yBe4{ zIw~nt7PSS;Xv z)1KCFX9p31+lyBIwbqQA&ARHD`Gh3L$@UCKCO2kXQ{*;UD0z={NtiS5f5s#08-C~t z)H6L&_wbs}^f6tbjyaS$=rzNU?8dZ`gs+SNhr~T{nI6SE$nYJx-MH?jr;h={*G=`z zn)wQGoL^`12fPm};XcQ#$*jP~;+1zGQ9!?g?Nt3SMR_LP#$pH4V=u%SB;p%|Y%SSAH=u9zVZ t!t3$2PJz$KtY*sw>8%MJ5exze3}-&C{XA7wvx@-;JYD@<);T3K0RXPI)4%`# diff --git a/TMessagesProj/src/main/res/drawable-mdpi/load_big.png b/TMessagesProj/src/main/res/drawable-mdpi/load_big.png index ea86a87606a40ce9128e7f536e15d35f787b30d3..6cc2fabe4cde798993a987e7c6831d21f6aab4d2 100755 GIT binary patch delta 1425 zcmbV{c{r2_0LJJ0n1(@)TusrWXB`PM=5{snnZd{rTi9Y9O$H&#wIwq~bckrm6-Fkv zL?ms}grSt9lw(MFCJ!~PE_Bd(_Srvo|JnEN-}`&sw^+46EsF^RH#i#s`~rZ*4+Bg% zQLe65?#Dvep^<^%^rMGjBMwK#FzL1i2@z4|tWcH}2BJfBG6S+?IN%usES6$PgD5yW zjY1~T7&H>m0KHDGJN~Up!Vu_K2y5>EksvIVL7-t76grtg#1Tm}doq@>-sPKto6-Mp z(0_6KZvd7r1TB1NI7;vOge2}g5>SNJ?@)4G}|k&+Ltxz?D zb!T^jJJMX4ctf+>kbiU80Pp(Vuxs!e(~m;UcGy>3v@YsPe0(RAZDs4s;08(B41b6r4U9hzR zp-4S|WE6NvL?}sbbx;ROOfSl1hzt!?Jw^LVQlN@3P+6{m+gocz1|?kCF{J^Z2}I;s zssZMJR6OD1-`-INEO-#Tk&;JSq?e6a6uI+}J3Yt~l@;3%{0|OgaLxe0HhE&IxB9jS z2q@P8OFqOWd;d09f*3)3*3zJzhcyy{6Sa#j*RD<}U=&-$VLCI4DxxS8FaW|fO1fb; zl(7vf+6Sl2Tx{#JTra`vJ&pb9{g36|q?KLsR7c@1f?&8b?(T+2t5YScA(vU6J z%aYy&@y~O-<}jRF93v05yzZ6g-Ttolsoc*H(8TkN9!8H)AMse0Ut7w`%4~n$?&#={ zOL@5HRDN@SMs$q*W4|C=4P~)}V*B>1CY!pP)P0KNPA~bPG+_~ugC4s=v~oSTzpE$> z)C^XBpKgc2Lx$^NbH-d+2Z)z_lm)4j(q!OFtc#S&0Wt~UoC7kjumr|bQHnYZZVmC_ z%Gs!nNWZ+>ct)E1ETk~@65zD`?kFJM!!F-YI$sK zNvr1Nw@e{owiGtjYGs6n<9O8JC7GIcz)F81E5xR#~;2H7iO z3XpayRjs|-`c z4aHBMOnUGdKAPlaD3!84<^P1Y^)xI(kPSy(y_hb17SN|-e=W9g^hXez?O0chXCFxt zpy!bbxcoIe)Rrwr{Cs^A70%5oWV{|9cX`aRv14z)2UjCHPZ(Bj7Myd@1v%-YI7w2q zL?S3!(#2tc`VR>VF<84-;VhEt^CZ~m%66!^0RquEKKT(d&ekjFt84bF@O%xTgo=y!~Goojn!X;#c=2&BXebc&}QR!fbtKTXHdqpg(;f$Kp?_^G!^g-!k@aFT&~7 zY%5zUB&Tnn>zXjl=AnI;&bZs2A|0ywkA3FL!_=o1IK@U#tRVW>r-Gquw48FyxNb6L zef}=+(=J>Q!o dQQHJRcZgusYiQ4OF;5P*9wx($UIzv6{sLTUXUzZr delta 1278 zcmZ|HX;{(+0LSq^hl!Zx3KmXHp_Ce#poZW<;8kd;D6^HBIv^nrdQc{L3?7j!Mbknb z5e>{9mz9w&513ZwdOTLCxk~KRNnt7;*=cIqi|u8<*PriCWv5}O56A(sm z6qKU)9qg{i0Xw*a26+*Q1RB{plomuFgm?#fl4!KhP*N~H$cwbod#8c|cKjdFzKC9e z@rV9<^7#_NxMXBTbB_43`7B`?Cq0uM9Dos}9oxa?v3>t*NndIe0!X0v3Z8Qg0HEvX z!8E4mk+C{09Kk^J&dsPwE7+=vOQ-`)>+0(m*9xKXY=*%>Xbyj4Q^y~wgdt_Q6As8j zHeu39TJhGL-(YvVXKpgN?Tdq6g!I{g#*U1vBeTw{O;g2JO+N3{`m9;Kswp9-A0$BP zPj_lMs}J4!`Qhj;abLL6!x-{<_iG=&8#PD%`W&#ALZkH1k~epWLeyxnz!P|K_iKUI z^EAJL*ahYCiMZm;075ZX7O4m?a9qJeD$e(%d<07}9Qrr**JE}abS*8@oZjFGVwU;! z3A^o8*mb8Wy#nstkjiEKBjjqokQYX`*ZT)Hv;jjpeF8?j5oWp|;YXl9?$d(CbScKz z@!SW3>0F+x#|QT{&aRfS9OgbPdQe51kK?{`+F|`n+3@~U0vl3$CO1sCpKH}I{GuQe z2sGaAUb#4d{i7|?GNDK@l&OW!O~QNGR+1k38-^gDi0pP3E(x_PnHM}os_p=i`xfKz zt=RS%F&j`ms5p+I+V|=>9~v%|oo|UQ-?Jq>o$jytF?_iGs|m`GxR1V&2D#<7%+creWRErJN9 z1sbAJR3uQ2TRXiprP4X+ z%|y)lLdSk%=j!U}0@vG@mtl=sSY+Wbsf~+CuzZ*MaW>aGIv&rCF-pax3mzw94J(HM zyYBHOmyv3yv%=2*O|k!Z2-Sz%_NfR0fkr9mSrFfWRsC}6j2f@ksB00;gZJtQJn8KPZX6KGQLRC%<*zJQtC0ogh!xQ4P7qqZ1BIM{)7 zJvWrC!`zKnup7;EmDaE3!$2Hm@%{RtVVR^9y&f#Ce(ATm8@e zXyYF5B`~IEu*#jmoMhurCQrTLlnw6T8OyHPFua2y4zVW4s~XcTuj))YjOiIHQ))0L zP@7LoJ3M3AWy%fjV3NXFG5XtKub9TPlN8N6ShZog-(%e&S?BCArD+QCN{;(adZkX= z_ysY&l1hkILb220%s7S^7IhHEw&_^H0&Gsvghl?Gs)++bRuM^Fc!t6lPO=PFKk*Z} z<{9i%u8Yquu)!mV`Bx3LU!6o~qIg!gof|AgZGFsO2V`|mat#F=-!fQR#oB{wuwwmT zF;x;Tt(gwMmBp2Bi0)3SB;DbL7gkr|^N9Y0!Yc8DOO*+Q;^oJV2vClFm#Jn+a literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/location_b.9.png b/TMessagesProj/src/main/res/drawable-mdpi/location_b.9.png index 3f0abf8b467364dbb91b3f468074d7724c9c60e5..c3f9b241779791c77037beb432cf20a400c2aeff 100644 GIT binary patch literal 1677 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n3Xa^B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvv ztM~P_^2{qPNz6-5^>ndS0-B(gnVDi`VQB7RV(jGV=49byXy|Hc>Fi=`>1u9iWbWwb zW?^aq)9aF-T$-DjR|3v4~Pj*wm=R%;iu*SQ+p98Szmsj3(PHyo-U3d6}Qer zoGiNRAdq`<(^J*Bwg+pN zvYh%mILvNo&H1-t);IO2+pkuf6Hp1aSUE@fT(v5{Mkhx~+2RMEz1sf&Zh3c5`lvZi zm)w{3S#|Gc(!$Kw+J{B0UJ2-4Y);Y1Sp!Rm=O%cIIP}Uh0lzGeUQ)OYMA+VU!yFZNdE=uh>(+Z9Nvu zzUYQR@VT_&!>XHq9#VK9(~-2eDD?N`yN|ZNvGf#rtNvp8-nN~-sV?SI51hZR&wFZq zPW>#-#p_q@P~6d{IqS#aOI&%cgBO&XIpp?{uLYjKFGPEk_KxBeAz?RIUroXkwC$RGCwN_BSyw%%GfWyS38d$~E~vRO`^>j>9) upHcjVDJgjF>C>STax%5@We>$OvN1fl{xG-NPx&^eg79?pb6Mw<&;$U2-iV9< literal 582 zcmV-M0=fN(P)KPZX6KGQLRC%<*zJQtC0ogh!xQ4P7qqZ1BIM{)7 zJvWrC!`zKnup7;EmDaE3!$2Hm@%{RtVVR^9y&f#Ce(ATm8@e zXyYF5B`~IEu*#jmoMhurCQrTLlnw6T8OyHPFua2y4zVW4s~XcTuj))YjOiIHQ))0L zP@7LoJ3M3AWy%fjV3NXFG5XtKub9TPlN8N6ShZog-(%e&S?BCArD+QCN{;(adZkX= z_ysY&l1hkILb220%s7S^7IhHEw&_^H0&Gsvghl?Gs)++bRuM^Fc!t6lPO=PFKk*Z} z<{9i%u8Yquu)!mV`Bx3LU!6o~qIg!gof|AgZGFsO2V`|mat#F=-!fQR#oB{wuwwmT zF;x;Tt(gwMmBp2Bi0)3SB;DbL7gkr|^N9Y0!Yc8DOO*+Q;^oJV2vClFm#Jn+a diff --git a/TMessagesProj/src/main/res/drawable-mdpi/location_g.9.png b/TMessagesProj/src/main/res/drawable-mdpi/location_g.9.png index d77aa911d427999dd15f79cd14a3dd452cb41a98..b84039f32c23d5a8e443cafb34702fc35c1e1421 100644 GIT binary patch literal 1709 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n3Xa^B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvv ztM~P_^2{qPNz6-5^>ndS0-B(gnVDi`;bvsuV(jYb=49byXy|Hc>1yt5Vd`jXU}|RK zYG7#$)9aF-T$-DjR|3v4~Pj*wm=R%;iu*SQ+p9GS^qKH)D6rnik>cxAr-gI zMBEJ)3KX&5z2?MnrbRVNl{A!A28QL^T@Tj(%kInn*K^+&{V(r)jBP{qU1>JflnOCk z>Xgy8prIk-`I?-^N8%>$-hKFA+PMSw?pA-_{(Rnf?U+Tr~Wxapf z6C3v=>;0b}^{h_?ySRUK3r`81BF_2zQ{xrMn$AxwXBdMn1dC|LcF2a>v3+hV6JDZS zoo^PCCE&w%X~BWjM~h1~)Vy4-^E8U})!E?6GkIGZuUqmY<_jokbh&>Ldg8P&q~)vp z?11bmyYGJ3qILRQqTHNjJ`ewUZ41(SUfU}9ulc=YGjI0J{#8%@xo!oHvFq?mK9#Y$Wh5G@R2n! zU{hSOT=X#u&xb2Gj%WPHnjt0Ieza4>W7_Gbx1Q%lM&CTNeO;e*USHqjD zCA_XU+^fvb`lxT&G9#Ka>{r+ORSR$T7 z$-kCu>7JPZbG$#t#L8wG2=?6l)11_O#wUft(dktfQ}g!U`_HR7Uw%+rwL`Xh_5zKL z0{dzE!i?ioruFz_b9v8_D(7FeKPBSsYSk~d+COgjqgbn~k*`>_{Qlj!(eD%V-)yop zWiLC+a*|W-L0ItRB?*V*8#TUZRykZL(ph-GFr!`djWh{=bGatoKM|!b^9_K z3onc5XX|&VmTieJRW#puOVs-I?^`V_;i*kq&UZZ5Sii!;jB#UF`)T8&p6gy~{pNkx b&%n$Odg|rkDf1oJK^2IntDnm{r-UW|BkY^9 literal 616 zcmV-u0+;=XP)@15Xbr08Z~Mn3W(whc%WhwH6#cLM!={XMI(5C8W4{NMuUb2qoO{q`>)n}OG}qR z)FzWO-JO|V+uhljF&JJh@+ytKK5>wfr$keU1lP1+hF=ACSc#J5^I0;Lv5}#TZeotL zih}#8JsTaH6X)m#cKjrerL$==kmw+N(H2?3oFJVGow|bM=ogsSwN?fCDwF8}RbNjP zSpFeKMz>9>p(GjGHj6g6gUx5{HA6|_$vOCfZI%O?p(II`7x{s?GJ~?tOmsI6Z}pK8 zD%hEFbFpK&fMxI3M8_;gfIhfeeVdPaxfg-0TqU9%EMD?5oj6iPa`YJgrh{kpq>-s7 zloqsuA!e~0gp0FGy=6Ma(nD<13>G+bF&(U5`E^Tk31 zw|20^m9NG%*2C0;O%A&Dsc?9 zxCPiy(akOLhl_50V8|-^g?7zQu%RT&P<4oV^P`%6tf`4!R` zWEMh|Tub+E5AygR&36Ap8|uHKsQOoaXv#K=7@h$+Fd?2nE&UDv0000UF}Qck)6eLwTqg3tVbGGReZ!SmIKn%j~Rj#Acxi0|SGP zr;B4q#jT`2|Nq-FYc{A>KA!#DA&Ti#z18)2m&sF@4Mdoa3o|zLPc(YudkI$ zesXDUYF>$_i>(q+L@y;X#R{s|7>C};3z-b%p=u0psrkqx3sYl=ON}nGv&xcN%$FG$ z7<@ck978H@CH?vT-=0~s;b{HM<I2GVJo7JcZdnzopr0GU5V8vpZfsv(~levkZp{uE*v4N|jtEHonxtXPtk%^g-LPc(YudkI$ zesXDUYF>$_i>(q+L@y;X#R{s|5trV{i5|o-|m4e#>3tW09>oGgk zs~!5>%D}*|#nZ(xq~cc6kN^MeoiDXr4|6!fnIwG3heu$8ct^fUevR-E2L^+t5=PN~ z?n1YDkNhnD>$)!a@_`oDGol^(47@MdlH`(d9N5k`?hxsi&Y1hB|1?{Q0_PF$h93$S z0+>Nk^$ixiosA|RW=HTYZ@3}zqF=SeWKSUbBOZlqELwK#LJ0>K3OreU)FFl`sez%ffu*Urg{zaHp{uEdg{iBPtFxPdg@v<`nW>wSLPc(YudkI$ zesXDUYF>$_i>(q+L@y;X#R{s|442-?i5|o-|m4e#>6I^;H>oGgk z|7?Dy!@$6>$kc-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvv ztM~P_^2{qPNz6-5^>ndS0-B(gnVDi`ZsFu)YT@eaX6a&RXy|I{XzJ$bV&LlLv4~Pj*wm=R%;iu*SQ+p9GSwFdR?LziSnAw)G$%dRME)DU{hhyhU^Jhf&u+j9{N507u+3Y z&zLzw!qQ_a$BK6DCF1Xt7x4d6e#$Ia(Sa^CCZEb8Q+$&nfs zE-frKE1KmD`DJp*)7qMPTx>Vo5mY&@E^lAIH{`Oh z`PY}-*YhK0&it34D;Y6k=8Y*&m#9t1`tjbr-oEbNr?2m>-sU$?5BaK7`~Tr*?**#& z<>trymJdu(Vx8OKsh~bVlj(@ff}%Mm+5|Q{WYp1@l&oVgtzlMMq<>(?PsS}z{RA9gA;+tRjZ#n$zej{8We{omtF%E$QhQ`VH&$-(U3WG{bPgg&ebxsLQ E0QQRyz5oCK delta 643 zcmV-}0(||V3!McqiBL{Q4GJ0x0000DNk~Le0000Y0000c2nGNE0HM}N)Bpeg1ZP1_ zK>z@+$TtOw>5(BPe*!N_L_t(|+G1d!4fqemL<2^!uK)iT1`;qbGX7`5Cc&fQL&)(U zeXKyt4D$>LA@vuCe*^I!VT<_LTap{pZsrV&a;N{zE!PqYa}`hYSga{Qdps?`LXQ3^nI3Sq=dfY`-5qeX)ZY4gr}1GLO7YI3we? z*n-xEYquY)BsXM0`mWr(zdWw6tsZ0^-Vq~Q12sZC987=z{pSX%7Y6F!0}8Q`;g(-O zOFseoNxg4Dg(Rqa`g(Qif071jK$?J#`3iLZFCh0d89haikN-hOi++R5LkSTE5(nOB d02l!R3;;G1(}sS+6;uEK002ovPDHLkV1hl76fyt+ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_in_photo.9.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_in_photo.9.png index c5c6aa595e041dec7625f398cb850fd659e46642..5ac724e541f75ee169ba0615ef0cdb426313373f 100755 GIT binary patch literal 1502 zcmbVMeM}o=7(XcM5X!Qk2_G@za%@KD`f+Wq(1Y4ud+n$L?4V|KQKYnQq0siq^`M0b z45kE<%|R9y%r=>EnW&rMM|1=S3S&t4nAr#FGDKK5HwOW~W&kO^Wpw(-vOm1s-TOZ8 zJ-^@cea)ua?Qt>5F$jXh8MEj-xIPA-#ArTzFYcJAgi8{qw{ZE4gY#QifKYa(2%tu{ zwHV|9tG%jx2xKA%&*3y%I7?18X=B_XYe+{FaC;#dK{C|=uhmutIJ5{9J3T6FuDcgQ zopu$ri^!4Wcy*w}nN`h#{OVk@t-8#nv}5XL(98e{3EY6Qq5-$d<0AtqY?YUU`_Qo% zLswO}G8J~uDNBwC)iEqU36V@_li)b2P>66jp-|x4P^ko$iY4$?2yr<{C`f44-FTq3 z&s^mN;ymDEDp(t=ha)u%hPivVp^zfY-Rt#{w(Iux5sFg*(7h!f=eQgz=)fd z%5yJT8nDhvU^lRg8(qyW>3o2Fno5()wXoRGgHYV*ghWp3bvPw6$PHRqI<|(j|DT+R zp)=x8bNr`S!bh+JL)-hU4~6@~13YkISU4I}uF6paiQHhMDRbaz(bV`|2O8B=FtM0I z^R7ta^M?C0QRsQJZQzW+-mv?8BNJYDBV(X1v*QHfd@Wow;uBO1`y~&`zy0zq9F<Z?@+{@Sbrj+;G527>e=__dV`XAZ)Z@o=f?Qb=$_Zz zSH3eZjExQq4fgeo#El$sp+sFUxV(6K_=_V6A5Ffr@zCUpz@+$TtOw>5(BPe*tJoL_t(|+G1oN4*bU>$4E#sBe%9U11-VVt6TrGU~v^lj1`EP ziE$;GZ~p@EZy^4I?0aNOn3xzDInHgFkuEJR63fBPro+g{$V#*g|NsB^{^RG>r!U_w zGWN}w^Y8!v?{JGi!3Dy6x<2f8A3kgRPX%!6{*xMzdC;i%f6oMS2{RKDm$ZaP8a3iU zPD(5rWF9<-;E}<|z|PLbDnSiPK<0qV!(s^|6E#y6vUyBM$%>JxmLQqO1WLyYGzLrz zbO584j9M~k$*3ixmW*05Y6*%Zzy=uOXmF8Z$=~09{(h#0p-^-FVpsxf(*J(=^u-Qp zSOPK!WFCekf6R=G-(m||8?N1cu##LKf%ILud4G9aVOu@OJdB=}5Dy2_-+%wPfh~Vw zV3U#$D8xpFJ->iS^%Jli{Fa%C@$0)UKmMWgv_Jwti@pNw{RQN{hWe7!p4LBTFY7nR lJh%+3qe3eTG9Mto0H?Il+^n{&LjV8(07*qoM6N<$0fH+4#X|r9 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_in_photo_selected.9.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_in_photo_selected.9.png index 0658e94ae0a91ab20f889442a4e259b82911562f..324c656711fefae6f129daab3b895531cd298710 100755 GIT binary patch literal 1511 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 BHnac$ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_out.9.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_out.9.png index f22c541f7f9087c833dd863c6cf07faab5c1d58e..4e1c17baee3b46133b96087f0edc1bb818789f7a 100755 GIT binary patch delta 968 zcmbQs+r*>T8Q|y6%O%Cdz`(%k>ERLtq@{pZl7kIM>ff_Vn5d}1sI<{bopG`dlhWh` zjMx z9NjEk3=IukO`VJl4IC|;oQ#|uU5(7mT_<}o$tXY-IpI|Fo=Kw~%|r`aij@?KOM+6< ztWxrmOLJ56N?@)@LAb^er(S(K1snaMlr$@s)Z*l#%z~24{5*)z4 z*7_&hAk0@2=mA%VJ7AqOl_}@%S)Q~@p2k}2cB`|wMJLJWlc2_qNxmUx=5CB^5;T8vM@eC; zg6-wBS%%5I5=&axw!ip3e?Onrq^wmjZ|*o9QDd19H9>Ad+@jhq^B>Ni+OlAZ(8`s3 zE9%`PmrP&as_?$iz#u7g=ZzgL9)9=U+-ds%@BdU~#lC-=jExO9PskF~Xk?H*=@ubt zaGlxktg+c0cZcwaxg3U7FS7)dV{5-WxBn?-XlT6oO6lp%7j0gIs9agnIP+SIh5X;Y zzlAey<`?N)nsVt1OB#RrBAs780Ur#T5yuJTk-T$wDvx{_+64MgD8h$Dk6c_T> z%Mjvln%*w{K0b2GzswiL^);U!_DxtcW0Hirw7B`oX&a3;Z(8Y@rD0@baLW7j-e0em zJS*O~aigHhRfg^LD=L;f{U0eCFL!#?|H|^uXIbaf|NmF}Fy(Oyb5@$_QXZC-Q-vo^ zx32p9L0z18KX1T8wkfM@R`8bg=d#Wzp$P!WiIZ3W delta 1057 zcmZqTnaiu#8Q|y6%O%Cdz`(%k>ERLtq?LeJje`wHF1+S>Wul@6W9CLLbw;+J%=Cm@Ka%@EqW*=k0}VIZj2t z7*#oq6v8v}Qu51-Cof{sh$}4x8gArh;O6LNYGP<)YU*liXy|BSVe0B+>1yO=YHVQc z=B%VpToRO;W|e~EFo;G={2C|gF+0^Cy}%*Kz`%6M)5S5Q;#N|k0`H&pOFagSy5VBR z0ZcU|Ne4~1J02MKsf5WZGfzGE|NnnU2}#NSn-eC-Y`dV%;&GH=qntqTgoJnb3j0`& zcsEq2YVsW_IB|(}-rFRmBuODBp_n@|ch>my`1Gj!c=!Lhe7tJhp8CYkkM43aF9?vW zzf!owGUa5=_ZZE@l|HJTs&z$8k`hOHZ06YHXwA{e(eXJG*&lCT$0jn%rzcJ=MBebo z=?;(20m|?KHI1u9>gqb>LImKrd~;9#&MUtIYLv5BW}!WOxxCc=4k82 z>B=E~%4NI0CB0dbR5L}vjxcwY1^C6xF5Ihy7r%E3q#+o za|b3Q`ZLYC-?uttX=TTOhRO4|4N`6xIq zht!U4#Hf4tg$K7Lx*^f>L;Gnag3zpEz}CHB!^!_O~l2_7|(QPE|4*JLmH zHov~*5{K@l_scH7j@$eHOKN89&$FA(an7nQxak<&o@29>?M;2huddsvvVULIf0*fi zdBx99k6*`6P`>r+%0B_4+0WiiycRdr{>Y4ODJ7neyv;^D2gPnJc;&~_6=stq`2YR? zYP diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_out_photo.9.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_out_photo.9.png index ad4ad9ce288327e0f77f2fa1178e2e85bf0c2960..1a759a33e451222535e0b304280b15919aee42f7 100755 GIT binary patch delta 1033 zcmdnVeTzr2Gr-TCmrII^fq{Y7)59eQNQ(fm1P2?C{N;VOY@(tDW7 zeXab9GSf5j5_2X8GKnadx>y<;TevtI8oHUfni?8f8aX;y8k;y;T9`Y!I+~kJ_GFTY zF)=W8F*Y!Fax--_HZ*iKwKO($v9K^RFmW|BGBh`IQBtVLEdZMAnO9trn3tUD>0+w{ z6w%AfOtFIMb;PB2@S3B)9L-HkoGdLZf!aZ?voJL< zadCAvbToD|adR@ZP*Nx^2}(_~O36}%WQgJIOrm{|pSy3Qw#$S0C=Bq}FPA^?1^_Xuq++gfj+YljjioG%3;g3j1Kl8^r4f(6B|Ns4W7B5aqO!Ewx z7!WG_SUmhu!efzyq?9B!Pll`i{(gM@`**l}eC7Sh!q?B{@2`KxSl{}6p~MgQs}A9D ze*1WmQ;pUA7C62zYvg&B^js`ZAXr3Dd_sU-@pF~mJ&|JnjW7AVXrvK;h384GY)+}yzu zs&XZyu}XGg%#Z1eE&q-GY@SjtFd-mGLC}N4ON;Sq)WO3a-tXUUuuVkWdOE{OwxW%N z+)T16yyb~qsZZ-CEOa=-*6ka_AS^6=BJhm{r}W9GDU2z9osS%_|F3B*5NUrk_QaKK zt2+c$K0JSa|Nj4ffB!nSCDu1o)hj*~DVW6gY>NGPyT3pFG=?zSGk<0HYUln$q<%r7 z!k@>#?@#_7cW)%J)jcv6*zWvh;IG;Nq zPDPx_TS{SH&9m$M+w=G9$5t18z2|@5Zl7|574y|K_FL2bzrKE7y!p$aBQtZAdK*{| z*RvV3Z~Jd-z0YPs;Qy~rpS|XObEfBveS@n=y|lKmw6;NY<7Sl&4u4sTt{!a{*UPus z{_x4<^!d|tW_>9&*T{4DWIsPXGhxk*89hm#w=B!o5i;_rDT~YTt7+N>%YGI`+sx$_WxEN9-Z9puTVYVwaBqeyqyyFW?uZ$%sI;~(s3U{QiSSP z`B$^Q2xWm*1Xyt*hPh$n#ge=zfBNp~X#772zEU77XH-5mkI+|A(W>gTe~DWM4f D-^-p| delta 801 zcmcb`vy)q~Gr-TCmrII^fq{Y7)59eQNJ|2-8V4JYG(2h`JyB7EF>|ArIwM<9W_m_R z@#KY!a_mK5rvBtK#+f1zVJqLnqU_WZTP3%|oZ{5Uc1$t~7M2z!M$V3wPL7rahK8;t zj)vy0mL>)k=8i_D&aTczldBMlEO08?#-z$=q!6B&my%yzJoy=uMqFuWW{Q=mqq(_( zv#E)Jo2jX*v7w=(iG``FlclSXo2jvZxtp_+LUBn@YMNC_esXDUYF>$_i>(qwqa}Wg zlZ%+0>UYL1oyWky_{`JAF{I*F(w(AILuSPXi-mv7PnVfrsG_X+x93Pi6Ti#R{KMM+ zU%vVDU+2X%ra}vW;|v>>1dIhYrQCGVmk@q(JKbTAK!#!0>BxWo+uK?61@2D~nDk(h zz?27%5*{b0T@By=?@v(Ww{J5)USgdWb&>P7_QPooG7Kv9|Nr|>6rTQkqWI+Js^%{u zW<<^iSrWoBLt>`U^fTr4Vv~0i8+pv(d?L(|)-hdV(vzeGOcMkrK4YBO&Y`!$zhR@| zv15mh`S5z*h`2dZQsTdNVz=-rrj+8ye-}>(r4-L>;+fQVr=CZ_Cv?8T%;Qb(OlPr( zyF8HR)p7jHsr%@ud|SQ0M8*SQHlF!^7B~8{DLs1mM0nSdbr&rZkE$P5n}1<>#6ou= zIk%+-u{DPrn1N=TG)k-&RX$tmG+j+lx5&Dx&)p>W|KI;VUZ3}0b>qk9@B9gE|NrwH zo)o|T|Jwb(AAKv&ieNHgPmwz$#K!UG$H()FgtzzC?fdxU)^+>;|0akA)+^LrpBMA9 z>eIQ6=jHAGMD_@Nyu2&^p4Umy()&L%^B)P$V}AHX=Z%jFyRgBI{dGTgzd8JS|L5nv zm9^~mHov+P%MyMi>Z44G!RjR@+U?8a*iZhQ@_Kq*P2ImQ-}x0jn_H}Q*j>yM;QjA1 i7qj&`9tK7>hWA&a%xzmW!-0vO!PAw^&t;ucLK6V^RYQXS diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_out_photo_selected.9.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_out_photo_selected.9.png index 734f94360235f60e0dd1c52861cb576eabf07148..030a8a0a11b75086dd439e1ebdd382f5738d1426 100755 GIT binary patch delta 1010 zcmX@aeS}A`Gr-TCmrII^fq{Y7)59eQNQ(fm1P2?C{N;VOY@(tDW7 zeXab9GSf5j5_2X8GKnadx>y<;TevtI8oHUfni?8f8aX;y8k;y;T9`Y!I+~kJ_GFTY zHZiv_u`n=oax--_HZ*iKwRE*Kb#``gb2M->w{S9dRZ^(PEdZMAnO9trn3tUD>0+w{ z6w%AfOtFIMb;O}}@&P6_ZZidq@XWlF{PJSW$?uso>S20a9L-HkoGdLZfx1DCvoJL< zadCAvbToD|adR@ZP*Nx^2}(_~O36_l=STsZ1js#(yUxki<65o z3raHc^B_W#Corqm_sd+)VPIean&}u)aqG!c-wa_#k>lm*n>Sl7nJxOVT}qg1Z^eg@ z)eG9SI;M57_sdm%N;t~3NPMFRS5P2-(-w_Oi`mz61wGb`xY)dsaihqT1Am&L zdGlmb>&LUpgv%#;Y(6@hUvBoy%K!KGeE+mbQ2t0B_w1V=4yYcRFHo;-HgB$cr{y)d zg}m9US*b_O`ETBDkf`DKV^DD-s@V9zSdY}mgryEy`tGJTux)w0HK9(&uTT&{a>}m>K zVHk1#!&|6U?VEiQQx2Tf@_pShVD?XMb_gf!JF)iJz8$PhYKOP_?ti*7 z!|s#jU(1!kdvEBySstg?pmubtujIZt+Ap#zjg0q8)W@nl^<8MAwojtJHeU7n&TZTD zWu@)5{7d|>V*cG3Cse+@nOa|?owogO80+axI*Ok4ZQ^>543}kwF;4Nfg=}%mwVh;zt>*j^a}QZd%gJ~3T=+l zxhp?keY1FL`phW@wO3lj9Wqy*KKs;6nbS(yZmDss{i}QDOg*d5CpG(yr{cAb>Z%bA k-}GbN+Ux!iOAuvvXPC0wNI2{}FdH*?y85}Sb4q9e0P)M4LI3~& delta 808 zcmX@YbBJ59Gr-TCmrII^fq{Y7)59eQNJ|2-8V4JYG(2h`JyB7EF>|ArIwM<9W_m_R z@#KY!a_mK5rvBtK#+f1zVJqLnqU_WZTP3%|oZ{5Uc1$wzmZr`w#s)5CPL7rahK8;t zjutL1mL@KyPG)B278Z_^E16_rYD{sd*~+BGX`~RInU|7ZUOf33lSW)=X=aL*siV2M zfwQTJft#tRtFfV>qlty7tCOXxk(;Tpfw`Nrl0tDwP->c0N`7)_ZfahMr;Du;M585s zjgyO*o$8BrPqt%VV0`cC;uunKD=DV3kc(MSVBP%B^3!GJ7pf>L{_Qyu(Zs(*P4=kv z|Cet*{nvRhtx1OOh@rz8jw3!TIx}t0OC4kR`At$lpCxLKL?rL&dbSFW4@@6@73&!F z6zl5r%)-Lb*xcME)qMSZK7Z==_x2L!XQeNlI;~`lklMNWBOl~5I0gRy|8DQ<<1xcM zDrV07$<57EXU?42IkU4<<;=lj=eVxuD<~;Uuq^IN)w?4!!GD24T!ceIcO#br%ZrE! zl^qX$@$>5$iiwG(Wknp~GJC#X#LRmI*MzgFKaYRtSDU6V`?N@Q$RGI>?X9&fkAzDY zrJ_FdvrYTsy!DAZZ+*=t{=@1f9W^P&3+;ZoGtd7c-O#aovj2-oyWAePu*~OK-m%<$ zqfyNy17_Yy28TDS@sBD`H@{%JVp!lLUtjz8_j~=w zM2<`4-*4VsFaAFE&!3lv_aF5TJl<9BUY0!;i2p00i_>zopr0Q+D@tpET3 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/msg_out_selected.9.png b/TMessagesProj/src/main/res/drawable-mdpi/msg_out_selected.9.png index 7e29c8128722f6f25a2b4e25db9c0de61d09850f..388972c220915ef1488b218f67aff4cea292e615 100755 GIT binary patch delta 959 zcmbQo`;%L-Gr-TCmrII^fq{Y7)59eQNJ{~+BnKOi)W2t!Fi}y1QE8)>I^$#^CZ)*> z7_%oIWm0rEQ_u*{%uC5HFV<92sK_nw^|kWMD=taQOHTE4u~h1$SJ(ET~nu(6M6e}qdmjtDz zS*7GBm*%GCmB3t+f^dx!PQChe3O4#hDQQ+Nsl~}fnFS@8`FRkb$rG5>>sgqEI~W+4 zay?xfLn>}1{rUgjo>}q0i4z=QEFq^)7z8v#-<~az$|0_2ceh>VAk&dNhaC1JryR~O zivDLjQr`GOK;S*oBm0|@%L`}yd-`j;@m*KY#Mxym|9yLqnsc ztABt0|Ns8{e0%%4KYuR%e)>B6rh{GmiPGxMk3!ss{{}pV{Yff&eo7_2Tqn30cA>84F9nw%}UQ% z67s!2$GPJo_x2a^f~j(P4n1)bTzj04x%c?^oRO`SdSlYBY^W%>aew{)D8bZ=_v`=H z{rUaU+-UrPSC$c{meO58qqTTjrYsTxg?Yre{Du4WVy?y=rlN&o`cFuH-cRoL7{&e%z z8=V!Umb-@Q*Z=+b?(g}`^mX&B|31Avz5GeUv16x>WvtA%`4OqLOVZ)KR$IJgmuikO+ z)h9NwCtj5RGoSY* z?MTS}YCOS0Tf|s-wemGNg@2qmbN)EyvrdfH5s0i{V3A;$z3stj*)BfjQ@}jQ;OXk; Jvd$@?2>_doldS*% delta 1041 zcmey#J&#whGr-TCmrII^fq{Y7)59eQNGk!c8V4JYTzJj%%0xvC#>|ag>WpkbnduoN z#ghve<=BcK%s$3~$ytn=fdvpLE8oPT?9>!nCAY+!;#4JtirfNUUn`gV zZSqGZQK&*o{0eoMo$D9sZ@wJ&V#QTg%ifB$@Y)qAynGCse1%+9&|bFkx1M$Y-|D z4g)^1c7@D8?y2np`Ep+0{<=REs83{kCbMAXTZQ7nM46`?rOrnJoWpyjPF3a1$g@6? zlOy5Y5pZ2mAz{fvbvB-vDhqDDRrq|-@SDKGqALd)I+ry{Xme)^UHDTrLH5LqJVhqv zWl?Po#}nFk`UDovb#^%5b33Ak_l3j)+qVk4|NZ~({$HSxu~;_PaDnZ|7mA0R`c3Mc zd>oHEy%(@7dii5@{Qm!Xsfme4!WUe;rr548SNrwhULrOdUDISXf>Zo_#*lM;y>b!~fnk6&ZXSx0R`}@c5^ZA7d%59xN?hI#tvK#f^ zXyg&$uK)jU|HF%`-S4jylu{^mc(!o+iH@v=wg0}9Uu@kiZg;<`=r#8V_a|*f-Y(z1 zzv&F)O!k)^IgbuUEJ~}pzkT+?lXJGk+r@g=)c;O0P*!G^f5|!J;pP7P|JV1|e$9XQ zYUllY(QO|l%yV-%$+F_7+=M)qM`m9Hly{xxmYnl5_`;#T{Wn-ncbIvY2Q&yO9AMBd X|6Jg8!K5FU%Naaf{an^LB{Ts5eW1D{ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/newmsg_divider.png b/TMessagesProj/src/main/res/drawable-mdpi/newmsg_divider.png index 81afcd30e1eb319004ec6becf9c2b22997d6a1cf..61510e88730974a71c2522c22160d61e207ed714 100755 GIT binary patch literal 955 zcmaJ=O^ee&7!DMxELK=Oxn73Zi-OHZKhjNTT-&Cx1yj0hp}i=ZCet=_lZnaHq&<2N z7yJhvJP6`x@8Us0Fa8BDg5cRduvjPkS`XHcWIlMF=Y8gV-#KkI9;9~mb{K|9)oW^t zj#ue->q?UTYj52zbht^XJ<`Sl5*j{YN*3-TP7FL)pX* zYs45fay-grnBrmN8Ri%f&__etRp74=A0e!dO&Av$9w)GTe55r{*Z&W7 zoDDi4Ep*}cpTa?B>LIR$0zC0eTDZY}9Lkd`J~9aQI~bp=v)CMAf`bwEK&35$+g;nW za2VWK;B{TDy8$s=6V+7(QU%twExB+Y@uFBRX{weLglhgkQ-xABFK8t`$4hEy%~i2E zaga;aTO#nuR^c4 zX!pd^P21ANrty(WyWOX4ef0A9J-rfKT`hH@Z~gQ6eBMo7XKo};k2{~=JwHml*-O4k nYL72H+J(8_i67tZpC`a4=GyDaFMgiw7UJtvuQt@P^6|4jG<7E~ delta 87 zcmdnZKAmxb3NK5#qpu?a!}=5EtX(fBDyrKvXnMLhhE&{2`t$$)e@QkW24UvTgpk84 r+5&kOOR>#nb7M2itqU??V3A-@ThHPr#q%J70SG)@{an^LB{Ts5@VgsC diff --git a/TMessagesProj/src/main/res/drawable-mdpi/pause_b.png b/TMessagesProj/src/main/res/drawable-mdpi/pause_b.png index 4d74e901d7b8271f965badd85ce0de4e82a43f4f..8608ecd68b9e43479fd594d38832361bee105de9 100755 GIT binary patch delta 975 zcmdnb)6A>b8Q|y6%O%Cdz`(%k>ERLtq;)`;gAGW^wL~#)RQ$`RVBqZHTXlY^Y=;~;0Hrb9zM#03w7^u$0#m&jw+|ba~)Y8()&C=4?+0xO_ z+0E3@WpWilkuy$3+n5q!T#Zc)%q*Rq%q-oUz}C5#Ia``q0QqJ>s|_ub6pBlNQq!zb z@{>z*Q}aqZU2K&qatriQGE=MwI<<(|slG{lS{4HX(`HW>$B>F!S7vVX7jYD6zrR*& zLDIqrznMAIq?)9nmCT$}3}+b&zFjhL&M`OXfW?6mF9b*y@AQ&t&Ddh7<;J~tb6ds* zr!C@+TzpfHJ$Rpbf701!W#ws!@6+l|hU>gJS2y#_xxKZscm8?Ao~v-%QT+we?*noZ zSgoJb|JP2Ct6`0I;GA+WKfht)y*1Z(x2sJ!(;#<&zpwdNM{zl4^+8SpmVZspA23$% zUMtCamvQRZ0iFt0zvCy`mIkhSYM8ce&m8-erqNyAi$p~Z1bV6GJII}W{5$PTf&2`= zz-cLOGS7UQ*~{@cN|tSMg8EYVeaBgrv^%lso#Me@~Rldk!j zuK%1lrLFU1rOmb3Z$E!~Sjau?@Q(cr&-EUuH>cjrJ*9s}_k1)P_x)o<^%30rOzoAo zcV|T1bNZGU5wDbg!@tyZj+39@GKL-Jeu{E&A!^OUw{-q`55NIvAC?0>t}pSqR^%l%-mV4J71=2O_yD7nWA`qrG| zVZZ)u%7OVAJFk|`xYNe--J)rJUj3xsFTWXA@Y|iZFZ^^r12co-nU(eY=jS*9^C*L- LtDnm{r-UW|(59NQ delta 907 zcmZqX-Or=g8Q|y6%O%Cdz`(%k>ERLtq%}a8gAGXb{M(VcQSmRMg0Zukp{t>(i;Vcmh#_R1l0tDwP->c0N`7)_ZfahMr;DvpMQ(v!N@j``A-$7} zn4Ri{E>*l>U|`Dkba4!+xOHacMt|W%iDUQ8UNi^^Cnzq^V@XMvq?c!4Dbd62mTIz4 z!RYa$1!}+8Jpz(uTzTY@Bn zNRjpT0oelXIlMoY?rRE9U=&#-_J)c7KyE?MKmF7XOn2Cix;1&WGpZj*HxO=|^FqSd z>RIXZ`$22BG`fChOLtnte>~>q|G+4g+(g#M@1YZ>J?4KN(VDV*wZeX1wwQ_6T8mSg zv?Nu2i1c{BHeOd>d|mWOf0@^#(;}-X7GKL<=DmJRUZ?r}gRFPzzWoucNpa|V$-@6v z)P{ZALC%d6l`r&b)qT{m$o25Ml6q^kf@=8}%hz+h%bPC^S{dT+tfV+ypSRuWoq*l? z^VPAQ@i+XdC;z^`Tdq9ECrCs_c(>%z2d;;kltpArbSyj$${lX9trvM?pmSrQ$m4|% z7AEd@=6WY3c4ukAy$uQTnxxxUi#=mQqR(2f+W*}>p^R6$VZrxx$7N@?uDQ-{$M*Ty zs_!g+AK1RP+p$2qPFr*J<@?k2FSsojwyEcpXp@+4Wo@sqs~M+&&M$G_KZn;ezB*f3 z*w6<*Zy+@X7uimj|GwiDrPRc9@SudX>5@+H3AkxMB^QOL|hQ_?|D}8eoeGW6x zyc+x0;NiOe-YfGqy6)?g3;8)^-O8OgvH?FYSN&P;m6K`x-Er0*^CR+%Yz(cAD=h^! T`OUls%wG(iu6{1-oD!M<^iOdb diff --git a/TMessagesProj/src/main/res/drawable-mdpi/pause_b_pressed.png b/TMessagesProj/src/main/res/drawable-mdpi/pause_b_pressed.png deleted file mode 100755 index e300fbbca780143120f35c596378ffeb3421e691..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1592 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+nA0*tB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`kBtHuNWFoz#!AFNG#Ad)HBe}%?0@jth%@)C>7xhtg4GcDhpEegHnt0 zON)|$@sXws(+mtd{1$-}0$pR}Uz7=ql*AmD{N&Qy)VvZ;7h5Huj9yA+ij}dmo1v?r zsf&@DtFx<#p`oLZk&~mFnUk}bv5}>Vp&`r+Y?9jLlq) zEX>S}99<2ZOe|n}J@bl767!N%VfJPM?S<-f!mHQHxhOTUB)=#mKR*YS0s=DfOY(~| z@(UE4gUu8)!ZY(y^2>`gLD2*8txIZAW?5>ATTyEs!l~FuTC9%5mko|BUJh z;yF#G8yNqw3179Xol~Z)za)XTf;+DH)&%uZmS+c4EXqWCEY#LtIPyEeg4^<9a+~S# zCC^HBh0J`!dV?+BVdE3IqqDj#Ev|`F{{%0{3Hor|-yAE+pYfu%K+Rp!O zBg;vlaL0MRJSCq0nyQaZ3N@PffaS%sKknP#%?+Cnf2&S2=F8%)+LiN~MXS<7y%Ha@ zXB_+d(I(82^-1fvJmhBH$&?krb^tq33U)!c4 z)Oq{#gUU~Pwpw1<<^19Mu6ysjvJT0;&6oT0X4ktLGqwb82!7+n&Kk|jy)AIV$qfm@ ztgCsr!vZ(l*^p4_(!~_ugP(Q%1k!_KF+t)wGKxMh7tDnm{r-UW|)ZSWl diff --git a/TMessagesProj/src/main/res/drawable-mdpi/pause_b_s.png b/TMessagesProj/src/main/res/drawable-mdpi/pause_b_s.png index e29d3cf4167a3416f448f3a3e021dce95e507065..80fafabb37608f655a6030671a4436940c64d09e 100755 GIT binary patch delta 1052 zcmZqXY2{Vy4DfU3<&xrJU|`_&^l%9R(mEi_!3HGdTA~;yDrzvMZS+!SoIHy$WpWmy zW_^LLua$pMW_o5`Vvb9Ga%paAUWuoRtx`p9fnG{xij{%0i<66mtCNwdn~AHbp`oRb zqm!kviKC^3xudJ2xtWpzP$kd|Y?<9bH}AT#U_~T`e7r zUEF|rC+jjvDnQja;ZisG7o*|i#Z3A!uEwSYW|q!QW|nSFV8^(aIa``q0QqJ>hZ$NZ zDHN9krKVY>kl~TZddyDs-A~=L85o$hdb&7jnSYtD?bN)d6~J$LFMs}x6Bt0|5b(<%kt z{7$Y5KD@#B^Su{u_I+ALqHCw?+zlUWfMdv#tCl zc|>b|kMOh03ml#;VR$)B<6+HIIfJVvUBRvob56O3KT_sjJ%^X;vv6hWnX{qquY73X zZ;EB(F8BER$$v-xne&?Kr#%q*D81sc?87_%-fr3Xu>Rop+RWBG`~Pcddy}Re40C^V zbC*iJ@()+7+OWNDhHq}X^!S+Ty(?nJU8RR*VtHFVc1&%Zts|6I^yKyVX(m=Fkr6v` zCg#s<71tGtOL@rJ-69@QaZl-CrI=onN=(YbNg`smetxW0{j~X&snk*bldu2ycpN_R z#0D6k@4lXUXvn?o@QnQp&-ETcjrJ*Iy~_q<|rYyJ8}>osikrv8&}yPD{pSFjen zHvNR;x6oLzM%qi{))^RJNR!`}E;K!TF{m5a}p+7G3 z*v+#PP8UDh6RbF6#r-=qhf|B3_@BpM*WtZ9e1`NcgC&`84fmoLq8$-S>#<)}Wg`cixU}o5HZ)M8N9Y;BU8J@w@)z4*}Q$iB} DjjFkz delta 899 zcmZqWZRSzz4DfU3<&xrJU|`_&^l%9R(i$Ml!3HFI{_V(}sHnlHw9!kQaq=BTrO8>0 z*^_rM=}xX@l2$Ntv@mtHG<9+`F?KXGbTzefG%<8?GIDcvadC2UG&7uR$0P$&xfJ5FVm!c%1xWoIlT#Se_-R8Ql}k( z8sA$*FZvx1a}v0ucHQ)`ovQd$rIcM8dE5&A{QY1v@%Wk9zvmP_llhS_!}|Tb{ByI* z?_1{Y`SQNj()oyk`3pwQ3w-OEysiH6=QP!uPGCH(z{}Sxthz3SCw7I}q6qE^7P*FN z6V6|4bi2U$?p5{v12PqyW{Xk|sXns$XjKv9vMylDtBtR%!uP~9IX{rD;K*9~WyRH< z7S9Vbn{57Weqft1=@a|&m=ihw=d+pyvc5j3u@qXHrz4TM6 z(fkM82K5S4`x#@cLnheY5?mSAqtN}`Z~w!&w^lr^N;UN?O%}g%gl(VfnFm`KEidxc zY0Ws8{lI#Mg4rX6I}T#?za(W$Rn%V@y-J@j$^MJoYnl1`)_CYmx3=S*r(U~#w^FY) z%lqrs|E^l1`s(7pM+dL3d)(LRY0g@GH1A8mhSM7onwn(W>RGKdZsbI4nAybJ#wwkZ zWTUYo{YHL&Q*;~ac8wib5d~A5wA)yX4RcqmJ!ZtZ-z{^A|0@#_hM#e}`>e&dGxy8Y zEc4yEw4$%7;Lv^cn=jLOPo`ddx#UT@)qN?Un)WxjEY*`dHzYgs@%ew=I#))*Siz$2 z&0CRI-QovcYn|HLc&EN*qdNEF2hO5Tc05a-?k>Nl>Be3C(13T!*ImAC(re<$>uVOZ zx*PMD@5wjrsnLmNi-R`*d@ggu;(2X{>Osc{+X$VChj*CPpV~4ry;Seq%p%Q**!{ZJ zf6WY(kNbaEd~BKA?PbN5b4Ax5*{@i&H8=OV+wV<%|F7=8JZoC<{HHzj&Jr@51`P25 W^X~@ROERLtq;)`;gAGW^wL~#)RQ$`RVBqZHTXlY^Y=;~;0Hrb9zM#0?3)X>b))!fa=+}zO6)zs3|&DFxm$;s8& z(!|u++;DOgLXjCxMcbGXVqA?)4a_W^oy;uVoWRz(m^oXTS^)WGK&uTcloX0ff>P70 zQu32ab5rw5JY8&+Dsl_-QZiGl2s*Wh*{NRr;B7tz2BuA(E{-7;x30{z&lYi%X{+BJ z5p!Wh$3cDpB@IQbr0Fxfjyg>d?h$Lsnd0-3Cf}Xeo>*4)&U~iR&sA%bXFKY@V6Q%y zw}CsSKJfp4=6%ij4~#XMxqiGhGq`BJ^y{{ij~ z411VXTg|newaIb=LtK-w;3mh+;Pab$TOXd<8XUD)wAibpNy$R#WbK|^_Vh}C#q>{?rdFIhtnvKMp&I4< z&Ye5ou9I5#A#lU_gokol>m!BbL_QZEyz5=i{X;lqtN3Z>=c(0Yw{Lx2f2(WCJ^L&B z)YGyOmM{Lc`KF3)MZK$3?D4(oX)kWPUU7E2?#tx`+g%Uc6?wPGV@LNPSuxIXi&vl1 zy>H2G)Dc-1^(1=fhfS`BPK(5C@~G%M)GfxTAG9N9V!_NqqFXm!IOp}Y{6*=VY7;Yi z(e0m%S97VUJwNGk|4PGdKL2O~*=2jBE5ZcrrF6WvTdp_oo~O*leg9xdeZ<%QS#^3} zwH9SoGT%&hEbZKrIRDkEA}*aJ8|$=T_bxJQ=c;B-hKX|!i_nui*({g1lOuQ<=v4{4%{wjW5eB1wlZpHF{^ECdmN-#_~wo>8h<+%C4EXv^N L>gTe~DWM4f_7RmN delta 911 zcmZqTJERLtq%}a8gAGXb{M(VcQSmRMg0Zukp{t>(i;twlO8d5VB55p|~U{HO(p|Ke;qFHLt|e#a5{zw?Ho?GsTLK-pNJG zPW9K0C%ZE+Fco{cIEGZ*Ix};xcXXh{vGcqaomP2Y=6iH~L8w*9s+%z-Q<5e&x&C3k z5;j*?M4UVKxmKM*o|H8!SMGML8z*0^3uIsWXwhU-XO_30A5_a8@_o1S+3VT|?48G} z&%K}bFMrX5lXeEEaH=f{bsUW;X_6>43(Rd4W@9f%Id zRG;Q(u_A#*<-i8bS_?O(NrKUi^L%CYm^|e^ z-c@~e$@B*%FHGy7`mgVq8$KcamSXTuoT_g9vz z?Huo~pMAG(iQ(39{#d=K-hgjkxI;;yARxs#oCyWRSK@~)=p?Vb0Z&9is@Bc8w@ ZQWrnx1LwBS0l+-Q;OXk;vd$@?2>?LZe*pjh diff --git a/TMessagesProj/src/main/res/drawable-mdpi/pause_g_pressed.png b/TMessagesProj/src/main/res/drawable-mdpi/pause_g_pressed.png deleted file mode 100755 index 82e15e54dc5accbafd5b320449a6130fc81f2f95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1616 zcmbVMdrT8|96x0`g{f02ZY;xFjZRkjxGOE`jmoYssilCxv^pPL+oRmz?rQH?3o60`0DxKgR81B)E)6|1rgQJAKaY{z@FJ@%<&5fLduY4(dtF zhG*fJwRlq-o(upHc|?whH5t|#hH5tC#nu5mQOX5s(1@kBI} zQ*6h@SvW%%IV{|HRIXKX>4&t5Dz!q2N@0mgizZ3s zIyB7HQw)ny7Cda1;OtIvWl!ZIY6p(7v?GV63&RzVnNPDclTX`0b+#N_x|*P@w3CSs z9nVCx8r(s=gIjeDngqx5ix5w+|KD*>aIOC*XJXD7ai}={RV?8xt^z~T$ED9L9ybq8 zaUJ8}TEjmxxC#KKZqaMd99N*duEW5?UO3ykW>v&_!^xLxyJoxRb;kG2v3Fnz=-i(E z;I2!IhW%oPZGJiUS=Tp)D3rZ?!53G-OWrDoTbt2XIqUlOy`^%qr>A&h&%%xc%Ow5n zErYfjoAPe-UFm)}+PMydf)%I)cyQWie{;BgOT^Kr=F`(#E1GiEWpH-WzGM4L3tY25 zcMrs#T|ecTfBjHqS@*Mo+!)?E-I*mb3D=yKs_H|vl){-2SkYw|nmaQ4NA%?J(!c>> z^XLfdZh6E6BT_$pP)Yi3?>Me_-Z{S?P)Od6T{yhE!dmGCk1UBA_~g#Eckv%|aGHJk zb9HxYsSkYdtto-ImrqpX^6GP<)3&Zhqu_|PmoWEW?C)Qncuzd?E$WXOYQNhi(S6ld z?uRZmrXDqZT2;Bh`s{>A;z0@{hODWA1HQv(r@D5I|No)kL*#aIYDzscSm7xq45T zzSAq*e)-f)K_#Q#9o$^C;T2O&%arAjx9$!hhx2dlToC!pt5C`EE5F{99lfYJu5I<| zya{RU3}LmUK3Z;ASn4+QloJitZNu9;1wYS#4+ha1Drv0sje*2Mn|E=r_f9F%FYr*O zzf`Y`d%v)&RPtJ>ovIi`zH2vJis^0-q?yPgwR_6M9=K01;!{*Jn-6#!e$x96J)Ab0 zcj`lTiV!cT=LN3aI=0c#?@Q~uYTQ$<*4*9&L;%0k)ioNy12Mu1-d-ZYHj#hK80# zj!u@wCXSXC=8mq8=4MI?K$Soo|BH*j=z zu`mVdovh0wsQ^`Hic8((UyO#67c=R{xEh-pm{~eInOV9yfgR&w=4@$d0pyzj9cE~u zq)=QEl$vIhLWV~s>oGgkPp?)~WME)g@9E+gQgQ3b%=6wNi4w=>%UbPN!aC^-dxw+K zvXT!Mq_f-jbKkpnzv~_rOU$i&e)zEU`#ryXmi$lFpR17WDE)$gcY$0C%hdW$|7|yL z{%a_mz?8Y+J%8HoN$!mCOs!H5fMlmjT(Vf8(zS80+*P|J7|NRypx|^`GW0Oj<{^DET z{elwbt$v&^#cTHT2b!yDR|F+atBqxgoK#=!x9FCj=)>@YhEvn+3OQ8He9q`NHD590 z=f3#{>)AXnse5`{uj2fCsnk#Tp;qB3Z5i!Pmqe>hI!{gBdFYReopP=5vo%tEA504( zlOL+x+%LoZeZs%W7kge-bnoER3URNvP&N6SyLNwnIp4R8Z_nAE7Bi`F>qTsuzm~(e zDO%-zec^>-rZ(BzIyY-(PvR5HGx69lvGp~N(7NP@Qq3*dI+cHCPSWb;;pR@~`E+)} zhiQ(7qILEpPWZsaydwx{#V;4^;5Yf~;*pRIE`&pR(MkK6Wo#E;g?yNc@f&k{fRPU+RO{0XrdSEhGl ze_M5~Blw^j*Y|Y!Y?V9hul{`%Dx0>0lQ%_O;kViSJl%LVhebV`JPQ{r0D7Nq(%l%n z(jW6aI`QVNU++|7!ww?py{!+WQ9pEecg_Fr72v^wbFot=AC3hsAC$G%N5 xPuX#N;_sK=>~GG`yMCbjgY!Q*Eq5j!hTE1a%OWr7{RU=r22WQ%mvv4FO#l@>v}ynV delta 1133 zcmey*^O{$&Gr-TCmrII^fq{Y7)59eQNNa#F2OE&=`L`o?qM`<)(nc?J#>saWl_qB~ zW>4P5q&vBqNm{|lz}3~*(9zt{#Msf$(ACt*$kNin*uu!vz{ttO#L#WB9g_@9kp)gg z&zKBipeC8(Qlz9%ToRO;W|fkkT$-DjSK{ent5lI&pqG-FVg=P}hD-0{B4(%hLhVxq z3=GWio-U3d6}QgJJnJv)C~_b@Exp|P(ZYtMtjrQyU5~b0c;(0we{u6im3x18{WxBs z;Kq91ExG4oj*^Uk@RGJ>hv1|RH~mlC-rqN~_VYby ztBLhKTB5EcA9yeCalCOX)UEgO6v;#{-}>I5_D4Gex&)kzTUW2&=`>$8??tA^WjEPb z8_Qq4%G|SUxo#ZijLbO}=Wnb}T&PpFa@WEsv)xyEYi=z$#1%M0q;)=9Zn%8en;Si^ z<#sK8$vxRI_ftZ`$H_fw_g?tYFWa&s#hxiH%p%%P=+M0zVJeSzJ=C5xZ|?Ws@}FlX z%*_2BQlDEmZS~ID!@1(q7wBEdoVoUUZTy-$awcX%rCjlIAKHkkvukXVJ!w@|d;P)0 zC+`o)ZRzP#WB6Tiq2Qhzvvfvw&CA+g1&1#(!C`g{-}xqMao%#8y?+0a*ENiysin(i z75sNv^wyTK@bV$HzR6OYx8(j?83qXnICF+i&z~s8Z4gs0A6-?RCaw^CEzYT6=~gxu zwqtd6_t`R}j#pcrKi;Ww=xR+(PUfob`U=Udy9=6xDqTco9$1`ToS8TID6iM)`D>Rx zx%x#!g>}&mohdP1b602F5f6O9r|#~|vw4!&Lo?BiN#`Ap|NXvbp@MYtl+2D3S~Jc$ z+Le1n*_|+zT;lk3Q$3TCbhA&yR55`YH^OG=sV{JroERe^X0hpzqBKL+v^@>8jxI2X z0ZB_-SzEk`Dan^tj>mTLH}1x!`ByV4?DwqQ*J~N~F1==~y-qfF^|7MGybam!^Iyhk z$`+jBa1h%u%R3_N_2K3py8_i;)XTl?j`d-PSy?v&U1TF|4Y4p;-$d!BDsP$sB>acx!u!PXNh~JM+By= zoqb*4SYI|r?Q5wdzD<+V?;TwK$n?neuDCb-49pCcb7z>a&&<&T79b3su6{1-oR|`t E04a6iQ~&?~ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/pause_w.png b/TMessagesProj/src/main/res/drawable-mdpi/pause_w.png deleted file mode 100755 index a6416a69e454e741cd1ab317bc41a37fc086e9ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1576 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+nA0*tB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`kBtHuNWFoz#!AFNG#Ad)HBe}%?0@jth%@)C>7xhtg4GcDhpEegHnt0 zON)|$@sXws(+mtd{1$-}0$pR}Uz7=ql*AmD{N&Qy)VvZ;7h5Huj9yA+ij}dmo1v?r zsf&@DtFx<#p`oLZk&~mFnUk}bv5}>Vp&`r+Yu3_WuL zQ&Uqjpp=n0Os{8NaYu_h>bAii};Ey^rQO>ryA&s6}2uT>@%`w9CSqBn({Fw+M*MjwKz4<$5e#SHtYq4Q)FC?cQZvEG`=^*v+!z3e&oLjLU%Eplc9xDv%kBppcR05n`1*lea(}Dj4-vaI z{)fsI?`EASzO$cEuDSieF_Yh+2TTjB|9I9}w{L%-`s2`3j~f~)jprY%hPMcdL=`he?>^CI!JldN?W^l!aiR+9AY{Cmc>ptB2Dl$>L=4*X=gyLR0p z<~lve4V-djRbPB(#4)-*Fmi23J@lm}TKLoI?3TY7H!2Pu`25ZJ&&4lmj?6ix>$2>n zOX#HsF{vJ(p5)#xJbh?Mcf(z`^-3&n0(fqC9tb-jO#`U6~ zV}%WtNf@{t5I)+V&hlrq#0Luv->qS?LLd6QmFEg@H-y~Y_E=2m@lX-4FxpZ41?8E2rc z{bSv(DgVv9byjZ{I`PriW&4)3x|cG-PyXoL!|Atlj$q Nx2LP0%Q~loCIBA&Q3wD4 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/pause_w2.png b/TMessagesProj/src/main/res/drawable-mdpi/pause_w2.png deleted file mode 100755 index a5d419e7111ea4156b725d420485d684b2583f7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1606 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+nA0*tB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`kBtHuNWFoz#!AFNG#Ad)HBe}%?0@jth%@)C>7xhtg4GcDhpEegHnt0 zON)|$@sXws(+mtd{1$-}0$pR}Uz7=ql*AmD{N&Qy)VvZ;7h5Huj9yA+ij}dmo1v?r zsf&@DtFx<#p`oLZk&~mFnUk}bv5}>Vp&`r+YT~doO%TiO^it=+6z~O6^iN$`x{)XsHAt%iAfsWA! zB@U#-0uutJKoAq2^no0B=1I*1=9nU2)_Aof;ynWcQ<Hq5~z`{2$3@ z#Llwnu$N_7>b(3_OzE@^4$+s__-@%B7wX=j;j%mIBYWZHBc1|Xvp25370cRwsiWI( z8=vOYeffWtgz}2cU;I;}ZzE9j&i46E^?TLl%XwUc1&iBR9NAwmyPhdUMwB)qU4HXqx`Hzcg zpKMy{dCqpyKBu2THH_a5Mh9fRoA33qyO!^c`vm*{G7-%EKK~BeJr2ITxOl;x&<#>+ zniGS66!esOgx%))l$EsLxQM=t_A}GTaZSbwIbHKN^vn&OP`|}_S&8H!9lkVSp2}E9 zP9x@%R{94|GTmLf?jduXQt$@JJ!Vy(xHjLYiT=R5B0wcV(NC@6D3faaiRx=s^7H*? zB`kRJ|M}_F`=5Q@Zn(Ux`$O$ti@jQzCAQYK70=Rdmz{3)WM|#od#@z$!_1_EWn9}d z#c~!W>`gjY#dS?fYz?o}(}fRqChafgnx`RVv+zM<(m`gfx^SHx;!_qyWebViDb!qY z`61JR*PC;9KTS$BSBRDm)Ldnns&z?H*4Lgr^5t@olS_}hOgnh$WlWIDj-H#|Y1dR9 zKk#Xkkv+DjOU-OgxPnE~P3zNP;>Qm-JosTycYg- r==-gDT<%m+-szN|<}LC6I1LzrUQFL}`+?(YP|5D;>gTe~DWM4fEa_RX diff --git a/TMessagesProj/src/main/res/drawable-mdpi/pause_w2_pressed.png b/TMessagesProj/src/main/res/drawable-mdpi/pause_w2_pressed.png deleted file mode 100755 index 03dad74689e66a1759f48cba8de1b1e846e28785..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1607 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+nA0*tB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`kBtHuNWFoz#!AFNG#Ad)HBe}%?0@jth%@)C>7xhtg4GcDhpEegHnt0 zON)|$@sXws(+mtd{1$-}0$pR}Uz7=ql*AmD{N&Qy)VvZ;7h5Huj9yA+ij}dmo1v?r zsf&@DtFx<#p`oLZk&~mFnUk}bv5}>Vp&`r+YT~doO%TiO^it=+6z~O6^iN$`x{)XsHAt%iAfsWA! zB@U#-0uutJKoAq2^no0B=1I*1=9nU2)-c<q z!0C5T(SmXRBkNhYQH3%ZcNa$({$SYU*m<}zQh`6Dx$Ng{-UxPXg-5AsK0=fF)*qPB z9kXc4iLK$6!ZjkBWFN@zH2PFk8!gp;xB2qhCk=;fPsIP1ky!A5wyQx?^~dGYCC{)$ z+nt!$v+--@_u6eM70$;c8~lPuut<|DfZ9g&qdZbK>N$=v3;yk9_Q7suvWc z@b>GEpWlsp-}6>vnRD!4e|k-*=f>-+*B*S_?|Yk9T&+~+hC@~G`6kmY*6hd)K^qfP zxy7`^bW#q+9Bta^7$hfF6Y}Q!iKg-{*7p$~oHjmS<({W0X2a_hxYo2?r{c}h3EK{F zGwe>jTz2^Aq0Z1UKhMCmnwK?PkFR~M5dJIBwJ5Og*XD$$FJnSgcC_8>K5|_p{$Mkc zW!aCUaFfEr8<-9Tp1J3|Xjg@>&eDK9$s*}IYwpDf)~rP~&pJ+CWB=c@W7qxffqB!9 zA9>^I%VO!j;Og@AvyW#q-FVdQ&MBb@0P?k2vH$=8 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/pause_w_pressed.png b/TMessagesProj/src/main/res/drawable-mdpi/pause_w_pressed.png deleted file mode 100755 index b12e36df910afbfe1c326fe794e94ba7419b87b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1612 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+nA0*tB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`kBtHuNWFoz#!AFNG#Ad)HBe}%?0@jth%@)C>7xhtg4GcDhpEegHnt0 zON)|$@sXws(+mtd{1$-}0$pR}Uz7=ql*AmD{N&Qy)VvZ;7h5Huj9yA+ij}dmo1v?r zsf&@DtFx<#p`oLZk&~mFnUk}bv5}>Vp&`r+Y98Jt!9Zg-Gfx&O+YGUDH2-IS1 z>}u|4>}cs|4%6$IS6q^qmz)Z-Hxp#b&# z_chZz60WGBxuw%7C}Pc4373E)e%z*ZQJaM>Ni4b+80LCOb@fyMjxwzX4m&PiVb<;i zNsFg;9+m3(FMr-EBCY)03%hgt@;uhY-|LFY)1S@Ty-!@e?5yo0c3uURSB|C{tgV~= zn_DolCrGbp(k+;KyJEfv^eT!mMZ2suSY_mrpDan!}{4_B(UpzF@9T?zgjxrpNUpr5hbw za9Q+;Lhyu|S1Ld3oXb~V|G;QJO(TM_s%KtFvWWIS@i*+1T`ZrEocv)Bx!{R^<@u=e z+9lUm{_Ly2UBB-CtYatN&-)hL^8WRyA8VGJd42QaIpOWO-=qC}q%>}%d{J{b_`Hkt zwPwWPhz)H`s$Hz!8WC$EHr&Xc(%vNA^;b`$VpYV4DNVn-SifuTSR7GsTiO;`$9YWlo)SeAj*Z)FFc(vzRTvS*C3Ma?rZt z>fa)bP0l+XkKnygpK diff --git a/TMessagesProj/src/main/res/drawable-mdpi/photocancel.png b/TMessagesProj/src/main/res/drawable-mdpi/photocancel.png old mode 100644 new mode 100755 index e3e7a359572f8edcb51359e35b9d868daa2820b4..6014372e59433a0bb4ac86b71f066e86f099e904 GIT binary patch literal 1859 zcmbVNc~BE~6b^_7QB=eVNGr>FAQ6&mjtxW>OxQ%C1~GszP&6S~AVRX~W-&pSDZfE}17tc?0;a%J zn$#~YVE#1PxOi=N6d5I7Aynf!rpju=H0ul$nnv>vG#gavB#Z>&umr6h0Uw`g0s*ZC z0VDZxw%ibeC2E5=5LnoTkZ|>eB(oyAn zMoq{h1bpjMlsps&!U+uEGr2x$HUt4M%!GJ+7>2w74jbaI*whXCKs+HI7IFl@y9=b$ z2u-|DflA+LQ7Z&YBuRsi#WI;pOcR%h6A3KH&(F`w!QuE&7Cy#QJ*hJL=#6v77*Ncp zCbR}pi|YX^qbd$hArX-B^lb<_gIxZeSZ{onC@N(vv&z7Nm~56#XN_yr+DIy}f86+> zwJ|)^fUy*q5ljlF(9zqDn?_b&3wtlQI+msV_{8RwHDK zQ8DT(5pyI`o`erUejJh5kINJJ`3gi5kpLd!_z+ga=EHnHo>(g8OCU(X7jt-!2o?BB z#nK=imn#~>%JfE3rB`EPx>`#29ai*FtT2ecR3uJ><9PB|1%xKzByLQ^4M0#B3@nV) z>NU8@=w&^gx6z^)p_P{GXh$C}&vK;`mpwjBQaBXq~<< zeQNQ(c`!ZIF$C2b;EA$ws^g3@R1|K$*%RHK#UvJ_>*IYeF@L=)YMtcQ$~Kw$zba1-IsuSj!2vJPo4z6 zepU4<1CKBf;s4JR0Kv zD5!f?-PM$%ahK*+y7!!Zy>-H#Gxg2^tQl2^x9>n7%-XWVb6SyT6X+!h3o9`G3VYc_)_Jr*h z?kbBFWj9;{{r%J7S(`uW)BO%^Ya8$2*zMi8oyd(lIuiW(`Tijdyz5~^UMta`dMmSJ zQFTr6sc{J9MF@PUEjCu-nb8ep!yTv6Ej{L|E*03taa-L~E7)+au!y zvvwAzE`ISHX1TrgT90A>e5cjYhLkfl7fU>c+&eclo@5AJXFy4uTt?7*`^w2jC!o18 zmueCh zE5P#h_K9ugW6z4~ix0Z}VHwV%R}6icKHQrhF<>KaE(&mdGX3>FMsm))!G*(*fEL-^ zy0Ztb9$+j!*yU2b6@J-~qR&{nLsJK{CZ4QkP9GRIbwR|SZCdNRj*GVGZJsL!o99$r z^e8xX-i2!tS1fZp6#cx=HDI7XiR&H3J@XI)3mEwcXBWRei{h*+8VH|I{$FaQ7m delta 1003 zcmVo~ z#Dm0bIs8|O7$v?X4iTr;%0LORo>)sPkTilAp;yGm#Gk4R*ok#SpG4t${3ZH{&xms} z4LFFWd8n)fV#K?|F&PG`h^L5!Y;A$j=p_b43?R-=^6*&?B#94*FLE((jEgq|VB+~| z40wrW*YV05jeo=~VrV4>oWzR?GmXeS(XGF+^K?7m`#It!W*GAPWBFzetj*Ss(SwLEoN1$n&a z8%d8qjp#qx?JIv|A;mo7-1wb zWhc=Pf`Lid;&H=9qtQ6R23#)13g8b6OsEi#w10}2M~X!@Qe+|l1LLa1r+>$1MJ5tb zO9>Rw;q96ep`=IW~He$t1GO_v-5EvZkh{8`)B2B9WNs>+5^h($eDT z?Ck6h1Og)A3*(Q{qT5hch?dhZBYWR0_(JSTPiQbj6Dn_0sg#m^vml_I(7a*uEpDp- zT7QSMQ%YLkD{{+j}v`=MUUTXz5~3UiLGMF1VZ}`)AU5M8DQMy6b~me z;2}@-|Ia&?IndHeObf*(TfarVd&Cb}XJmdWZC@}8FSBaz7c77rXN&JZs3;MzTK|+u zUg*}Ml$YNsUNv|^{IRO$fxt;E`?7}-uy(bZExvBEg&Qo;+>j9Xl`Xz*^O^Wd^u+%J Z7ywnzjVQv7D^LIc002ovPDHLkV1iSS*SY`z diff --git a/TMessagesProj/src/main/res/drawable-mdpi/photocancel_b.png b/TMessagesProj/src/main/res/drawable-mdpi/photocancel_b.png new file mode 100755 index 0000000000000000000000000000000000000000..be189093f86a59512e1de025602a24f0bc70f2d8 GIT binary patch literal 1961 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%xRe+5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8KW+g=7RhMR$W{Yl!|Z$R@KEJl?AE#L8-<0 zrA5iW_()TRX$FQJev3c~fv&OgFUkZ)N@9*nesXDUYF>$_i>(q+MlU5Z#md0R#mU9O z)yc@!&BWEz(9qJz(aF--#L?2i+|kw1+ze(0HoYb;X0Ap~juviCX2ynwuBMhwZcc8_ zj!s7Aj*dO0Qv}Q! zok`tqfjRD`r;B4q#jPu|qCG?cC61qe5f!oeVpR6avh60Or-a^KeYJ4;tA!f79BoCM zoLKj!d=0qbe1TPENgRu3t!CGPXeug~3kX6D_w ze;*vz+gyC^&;ROYHO1#nwC1CKeyjXot!pUzAZF66c$53K z%Bi%*$qzJcFisJ8uE)YRf&belL-`EW-UV_!5`q(x7M$@aVE@vvdx1$$#omA&I#(}p zXF2%k@CIbZGR=Lk=-D>|WwFNM1!iqFU1=Z}8u1782Zl zgY8};^Cq@)4a*gRkJzs;owtF_nN91U^8_s+@s(>98bvYxw$P4H&58(iVKZxPWBLF2 zVAP_w}dO1h8Qg7q( zJsuWDOOG`l4`DWuyqULU+N3{MlN@LHu8Eqc+NG#7g)?-I_HD&WIV%?}N$BlioYnkf zLSro3@z4JxzVw`}E4Q5fYF5C}=a1&x+@!oemFI%1)(MB5KDzO{e!JYikl`VG@W^g< z+kcxT1!g_AT=Ve5&zeWY({KNe6@BsOyqTSxkImm_li#2DnWEsoZCZeu$XUb5M}MnF zr6}C)ndLOIV`4>D&MRigw5!WzUHH~1(Y5@9hu}x9S68}{%GSmi8RX47_VcFNBoS@F z$0-R0VUJ#JYUFkS1+lhEx2T7d~96(nZuV?95y!7jN4k%`zrDJwYO}SBv%AlFH~f% zpPb?57WH~7TbpC7kmQQwv&CVmc}<-v0`>=^p6jmu()`*p;Q?Fr-1LS=cB*3B-RimD zx3Dwu`ZOL+IMehf^Fn2d=_{!Z{rU$u4RRGfUf%QNvgD8Edo>SOS8STlsC7+6$+YwvMBOiSrMaFFFIr`PoMh-QPVhDSSRR4U4zfAgjD`s#VD)`piX4NG%w zu?NaNR%E|g%Q~g8gDv8s&#S!;rp>5)>ASPylFP&T1I!yb=Wn{_!7UXzb-`DMTUi^X z*+=u9Q@?UnE`)vUr%PeX79YfT8!TmE;*Mn^mC7)6><@Wt~$(695vZ2d@AC literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/photocancel_b_s.png b/TMessagesProj/src/main/res/drawable-mdpi/photocancel_b_s.png new file mode 100755 index 0000000000000000000000000000000000000000..2d4328698d8329107e5d256a139a42416efa3207 GIT binary patch literal 1846 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 bv8f!&*WJ<ABOwk literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/photocancel_g_s.png b/TMessagesProj/src/main/res/drawable-mdpi/photocancel_g_s.png new file mode 100755 index 0000000000000000000000000000000000000000..7d4af0439d4a01dd9a7425346a6be50bf27c307b GIT binary patch literal 1955 zcmbVNdsI_(93M_bVq+YhK1j#N4vK8Mm)*;@n6T|`Zs~N6sS_#O#Gz0U4x05|4ugND-(f6+0zJnu=B+gc6o!91J^}-62?ic>1Gz?!CX?_jkXa&-Z<9 zzH;4as`nyq5{X2W%McZ@vfa;16ym*k&ZGB;Wg#xn;PIFdPt)2_lF)$ZP`ccrO-5Cy z*0AgCuh1A0iEK2hHMmBxmaoSwOs!jo>9p7gG>H@w>$GY0DJV|Yp~+^efN{U`6oYOy z2pF3o1zTYgqb9Q~-HyhmuT$&OQ}jFoBX$)%#>poLEGVv}J1wbJ2j3}RO!M-Iz5AHO zpiisdDFVhbr!)#BU5wdLI>d~M)UyGA4#P}<1Hmw`k`A%~ki{l$I1=FSA(#(F(`POQ zVa;wZ@>Pg*#ugz77$zLI@mZ|2v@~W~6ce*2vj85C=jH&xNJ1mhvCE2Uosm{Y*enBr zI`nq44L4&}x|>m}!*<{T2I1+m5G*!@;yJO^F_S1FWh|%G#sZjZmc`G&Fow;7iQN6SA-5vo4S&7eOcX_%ieUO37SxK%5dnkv!Zer- ze6|P?AzX!kU%0tA{2>v zAdIj@Ajm^zv2v>e*IM=HtX(r+qin2j!uhw0&) z%~k`J=2-47&$DO|)NbC18l-m2LZ8kr-~0mm5CU^~(U2I5l8UC|Mqn`y;)-A%OymII zGG?%b|C2Ko;S9^&9RF&T*(0I@-P`A_PYBP42elFtV<$!<;i@czn7GSwM5uP&xKgoI z7O-JKPv6)Znw0X+*DC7zCDgEpde@xY{DIG=FO*B`a{ zj**&b7Va~CnMv) z%MH{<57rrI$oMd?axnK^Tki^T=b4C>;)_Y@oZxK-8ngX}JT%|jjx}-aIjADa_S3Hv z^_B$xoG4ZtrR;prI8EHNK9RQ`Dk#~w^2<@(*MiS{gKq9w(S3S^ zdUDHwc0VB`^H_L2w4<7~dg#ver=rlF6q6{hx_YGF5}{eIF3oNNyQaLnt{=J|1}Mhz zmr55uy^}G}rW_rH8f|+-p;yo46*+%Rn*7}59E?lqs4LsA0$UQ=4{2UAeQ5Dp%51$5 z=L!^@gSGpd1u+TaEt@9mDlRq8TYN6wPz!7o^`AN#zG*OAMmZl@+Ei*8mY?tg)=|1| zEOXTrZYempA4oV`ZHOu^c2-P`xAw0&(Q15kB&;y2kNF@pH_viQHg$RG(LP&QU{K}l zU19#Uc@YLGUgW`F7PMr|{gPigRJE@BM8($PMyl)MeN$~FR@FO#)a~gN)WW%IC%)LO zGjUGmm@W_84AW~ zbAU?Kg*g9fF?ZF&-iKu#5BwAF9?>7v+Ln91oOnCo&Vrf_&mXy(7;|TRm#<};_b*=iZ$+iPFZ89VX-j zYg_%xPi~Y>$$W9{ri*tXpOhT$wvJp~DVy9;$$ZPRee2sbzirO)AXV4#-yPjOaKruE NluOnj&7y5Ne*=T-^c(;H literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/photocancel_pressed.png b/TMessagesProj/src/main/res/drawable-mdpi/photocancel_pressed.png new file mode 100755 index 0000000000000000000000000000000000000000..491b3d43468d1ab7f8ac216d0e6b3f175d2dce6f GIT binary patch literal 1936 zcmbVNc~sMO9B%;y6=bN0$JAJ4%Cz*LEp2R-wrK^Sq7(%Mr=dw{fhM61P>NGfnQ~T8 zIlOhEOuSIQYal2hI`8|M$A%LX(aBWy#IY2`?GK-OZ+S_6*Z1@J-bv>4X;WPK4(m&! z(Od!ppipXL+a9Oh)H~en&t=pwlvG5JYFtYu!$y=QMet}82sFSkXebIJDG8@gF^y)g z)rUop5vpKNgByHcn~aayKu~BJO+495z?wLe1ftOxJtkp1KXQ}-=n)AcoUdZ52sx_L z2Uv`#+A=LnV~Nv<5XR(5fY=OD1O}9Z0ka_7|riRVo00MyzhsPHPI1>Oao5N+XsawG0@Ibx*JHM#5$$X7cP|fKZdhs3%B0jsZ4C zI2unRB@D{a_bwO+mFgogX8I5)Dr77(Ot3gUY?i@b^Q&9hM24dOnDI$zQ&>Zzo_@er;_G@uw62uT>!i4USjK(-8$K|+O$t5EV3 zd=5v%mC8iEJgG?NCsj!O1U(#|!ipe)%va8rDrI~Hhoj&Nc|xh2E8q%cGDsj*%6qVZ zn2Cfj4cenuPwD-D6@3;9%8e*Y;>Iu>kMF5~={lUmO*)(at5|xrs0y@AKbAhV_}DxsMsUctZEEo66|6<_UOHg*%iIb;WrrKXzy0q7d zjvK`X39rBC1B$RaWy66nSp2QFsN%BpvOcA`Rm$ZPR%N_O*XdlYRBv!?TTv0*?@Wyv zoM)6pZo6!1dvnl=#|P(KrK|ky_l_uYj7?W{b}dThy%^p>54Km=t!r_;?NEEf{e}J6 zI&8_C0Q&Q^1VHUg=N;ajc05g9;JDx4&Rk!EWYH!P1uKgbQ6WuE?7q!N-y8I(-bodw zZ}5Mzm}4O2Y}23pOFiw60Zz63pH4J9Fv@E{7K)Y*J`NQVPk5kgL zH-^s~0$Mhc^VU~XjTAbz#$3f44)reH~<4EasK&7{Ysmxxw(qe)Kt$5nG~w~ zvX2w(cFx`OfbV3RGea4zNk>%H1=M$HT+vVN4ia{Vh)_fRGnQ8_DVz5$$9Sx_Z>IR> zggz}R`EQ?OURZ;?%-+9`VS4O;b(vG%@vr?CCY%|h&D#~RO+C&#i;=o0U)}M`@<8X! zT?3MsUbE^3w{{Xc8l7Jb68sSMB%Ek!~)$GGyA2O|%g)W>!U zLYyqoSq?(F_2NWl7niEbWrgK}QmC@J`dY6g^{#eyTbdia-9}kz?#ko5S6jTUJ!(&J zkhgfI%ui3bnx6UEyK#AJT*11-OWwBDcP2C`IE*dcr~uu=|#?x+?l&!V{wM{`po_05;;HU zKyl@R${DI!r^wi)zHao`=*a4`JD3$Q9ioDg+_vx^uLT*%xU(lb7HP$?{tefwK=;6D z;Dyq;#W~9)I=HaV*a=^#wBDXxd!>E-UG1wsXdTB3Z^`bJG@La2)rUwHSl5iq|ML#RVFkma_6yAlU{H1PF|)02{K|WPxma$_y_= z%)Q%m3NT}W7w{=hg36U=0wNTH0XB`5pkaU@z~RuqL^g*5{smw%Kqj3*+?)h35n^*7 zW)kr9q7dFNtqxL%rB8hkD?Y`5<7S9Xw_2?ymS)K|-NJh7*%yf{(pd*MkuNi9# zu7Lj&#&fML%B^OYu7E9QA*LbDL$`DmOlbGVj=Y9MG*AX+Bo0NjS&V855!i&w#C!_z zg{C!XA%;*a6mum)rbL=3VS^x#DG>5li2@!sNgxp+7!7PVU9y~pz;TQQ6oi(su3LlIy`U�z|NlGhCs^(OqZyqDhVCtn|0AGCb9*lWVt(|hdb9+2vC}{;c^ik5W=u1Zy^aq^_JnlPGj|B7Inv+h-*dFK5 zO}JeeVP4%gFmvi$!~0Xlq2rr#RukX6Kxo==AX;;Ipt_bp|cY1%wxEa(!`h?2u`-X(P zDb|195_|6+PUPfyQB zv}$VAHrIFG72Vi+I;!~$URcPUDJdZZj~79QPNdjb!_&6m?(XhoXIwWX%fuh5@*Bh7y<0N=da`b}es6VkwZA-Q zdkPSPwN7M<{uJ-IvgxZ0Ing_uBhdxPK6}^Y<<+Mx+zl!y#&YPN= z;_9m=CnsMxb9Hd7dYT~V-At7H#D3!lYOqkERbbsSc5Yqg3 z^JX1&`1hRos*v5jC#Z>$#U~P!Tm|UWVUCS&(;^0rjrF%yJ&H8ktZDlo{e_m^ ze^dlL+#|fy-!AE1!E1dn>t9(rmpE3cP0H(QFZZ4?iM#&~E71r3TxY0`xLX|$TY7bm*L z&ChN&>xO>txw^ZvzHevVyf<%FLh%DRum*S?s03D!b24&$AAk587y$->TflX4E+Lr2R;Or@YI9YLmz?ffj{#lpa}RF*utaX$=Cxf z0#|?sdU!HX8xhsOy}Kr{gy9i%>QKu97idOo<1Hp718eiy{U=&+|A< z=7JJpn>1Yy=t*=HD-p_jDRO19Xd=y>1nb6Ow4pt;Xq4lJ{F)k zr(neuGGg;70fmNR0dfJ8G(Legmlu4s2v&_`twG)!^XZ3%Oi=iGJSa^L;iNjk9!P z`}+D!qobqt{{H@r_%bXOv!u+S0|B2(rJ818%1SX=!)6VW$y8yrT3^a!vQn?tySlu* zjNzSXYkzCgs@3Y+@$vCiolZBO?it~5`0Lcv)I3uUup9)HDBud47QMZ_jcB~X;g~ZR z3~t(R*>F0Yy$uZwIK`zE5RFE66Frh6;sWGsT2uk>NH-pV!^UEYjG65Y~jsi;g zdKwD{#N^Y7cQF!wXI1Y2;Bj(tvQ7liI8>CWY>|wyu`w(< zQ9V69UHHb)2NJ$eUtce@s1OdJEjBGMUFhiOnCtB9Y{%h(oS2x1Vr;^LoN)Gw@o0 zWusUpvL)67o&rp#*XRox6tG`F#-pvPbOBf_au<*QH?jFtRpK3~xriNm#MU!~Exd3D zyd`o0PT&`&x=?(DL!~KYivWINBb7=3Zhz~%CJCO{5GA&q+InKDPVZ1hJ0lI0c*^UC z#Q4qR3#s-8Ld47OibTNMRIy5$A=2TN=bdxx34HT!fFDxbAkD&Qz7i2aZ+PIW=*W~M zWV1_&>Gmh!O^R05&NFb$@d`^#nQoM3`M@0#{r&=PuxQ66MZk^jS?XwaG9$Q*?L~{! z(T;sSJ~eOwf3RuzUw-Vt1l+r-rcOS$xl9C>&>RvC3{xkc+iYYzOw!?>00RI+UOv)q S7v6IK0000l3^w)^1&PVosU-?Y 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 Rs{sH2002ovPDHLkV1n%Nj>P}~ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/photoload_b.png b/TMessagesProj/src/main/res/drawable-mdpi/photoload_b.png new file mode 100755 index 0000000000000000000000000000000000000000..fb97fc7c9d07fceb46dce28b202f883ff397494c GIT binary patch literal 1824 zcmbVNYgE%_7%ms9B9)1FK~zGR(s5~;wh3*eNZS;F30CNV>X}Mu0+iCGwm}Li6A&4) zc?FIlBBE1JM5a?z5M)k8=e%D~#3@sc7gSW7mw8!=;P%7gkL4u!zW2-fJn#LaKp8cK zO!^&X|0p+3 zjWo%LWL;RMnTW}ZQfV{wS`iLT4hDj(Vw%7}P#VB$NHto-Rteb4E2j6hV+aI#RVcj# z{NR*2QVGaOGXWqRet?z>!vKnMU;%=nus^`#!aRse-)I0V5F@CV7YOuSAZ^WzCyJx7 z&^}wVBmt8t$|Q!M^z?L2I-f(DlOR|m64^L-yZ~Awz>;C4G}Zv4#k-#YBP?38&P3@* zBVc3HB#>#81f)Iv5Q4!J8TpaeXz5E7oifO(F+nhg3mFWyxO%lMR5bCg8=us+s4`3h z6iryjG_#hjN1}H>n9kkj4cQcFZ^YBgI=U#DRE*T783-d4j!8iJ3kTQXVy+C6VM2wB zrwA1&5EvHmq%sj-AQcG%r3z^v+RyPRtQ3<9c!6>>RE7#*Sb+#dJidZ24HXG_3Ph@q z_hZA27D{8(68&~{wB0@|@>#4{ZYDGoX;zVBYJUePlSzuSB$FmU9)kkxIGqtE(=A`w z%JU&wj4AHh(eC=ih&{7_kM+!!hsAwn4{Lg^g9La+~u|DT*e zv@?*cIsVfu{YP{M+O{8CpB6q24`HMy#!Qcf*ZQ@lHU`oi#WH38f0W;Pv2ovo`mSx|d&0($7}oAC zap)P@_+^>rsF*+6s+p%IQFl)Yic0w`f5&5s=XbL8<-9YDh*@|=5i-rN)dR1u)9QC9 zFW#E?d=BVU9{erTP#~{R+{W?TuC4k`pXNBXNtxN^6;8amj$2txZPL<(c>Hb?d7--O z@Bt*HHKe$ZrCM#bvyf#y9DR7rzqI-78?Vu>@|B*kte$9>9`(YAL9!hA(J5eYF;EVMFz*%#HT$7~ z-bJx8p1VKo z_twgaab-oigii7sc39%;{3$rJ;bD#Fp{mn&^y(`oLWC*#FX2n#hw2H=oQ4~>)AII2 z@k7qqUl*%`bPdHN^OM}xF#c|Ve2mu)*6|w1T1_m!qiTRIGr44q{;lhX+N*3ZvK!g6$uUe{^Sef5*P>``&xM_ht`< zg>Jyxx!M5$fENbw!?BTUer&C=cZ9`c7B;w`f=F}=5|5@zH88-HBXKY&R7!Wk;jmPm zw)-~h3jmh!3UMSF86slK5G7G+wjt`2Y77kkzWzG3RF(*%U>v+tq2dr;)i)79g`7i( zpofq{)B$jUB1o@+x9CH~GJT?qB`5g%fxbF6MxcaIDX3E>skCezhcLs-#^&a25&@hs zK@&NIk4{B~gna}0b~ zE7K^{r~*-eW=3fol8kZ)n5Q2@P^v>hJ`t<5vx&k|M$$>uBnpvCQYy`H%~)&EaQI(0 zK5MNNr>S95IIKmIH8Six;yvcTSnj?oWH!XSVQ}x?K8JvPA<7kU zHkrrg@tFc1RS@Vcpi?L;DwoHid2?Az23NpkKyw_Q!_s+FE}0s@3={-VC=>ymNn_9i z5SdA%Fc|_GnKFkJs|ik|U|wHRj{_7%d;xC{kc~paxNbGx=pJKBLd2QCW08nFY}Tc{6eIp#T=0$%9xB zmIDftFpHJ{pPZ2}XGrGa_)oFSZDAE?o_;EQZ1JgiU=`Le8mu*XHv2!tIu0-7bH%!z zj^nW#9XC7QeCn2bwC5X7d(qXP1tTkI(G*pRYQ>Nl--W4-r+`CEQa93@}-;QsrcUy|fYVkYVGvNE!xytZ(IwOsYKiz!jjKx4R zIAo*PXJ4A>bK7OiE;sXr(Sj)f2Jm?g3!vKm(#4M4`Qjw&1e>Fe#I1!f$1Wxn{oT?A zMkLeREFwI}ueRCLwQ84GwWp-J$d~KO(_T(rfXZZ&$m46THJc_=8}eiOK<9$D2?t6n ztRC41TJ(Oqd3vG8#Nd+B{XVBxqz6BU&WX)f^c?r+IR|~E3)q$=esZMZAs!ccvu3zs zS8zoG4wa;c3x0{w$Jn>`yH2g-DkmD=fTQ!DEobboq`qKPMf)}CiL7n z)0<6)9eQ1jZ=m~o-6Kt&_4uzQ7W$4)zGKuq>rTN<6kE5)N`7xWGL&d^z7tKZ)>q@= z%h~sLoqK=_7`Re>w&QiK^;=?RRNSwQCl_RjInwk@H7~9H1Z4HB4AH2*KS+2`+ zJ}K#L(4WwxB3J9kYdVMdhGo>G^ZSbG?+NwO)!(Iib~-IK&=y%Pn|R+elzhD=yDHal z(b$AncA`_8&#|>p&+}W`eL2C`fbDyp<_rVXBE+c)_~3r84;Ohbf6__6eJnk!+FfT8 zD07q)mh9P(8h=@uy8?u{hOvFt#Xe_}PGUc#VLv|rC$EL{wfiiL^ zYAARsjtT~^qB5Q!9u@FxQR{^|UaeGGJcfF7a1^Vy8wA@w9RKLf?*5K_-}k-ue(%k? zHOW&rLBoSsEEY#K71uH&-}?mmGw)QN-bKtXj8>-6DO47nr+1JnjG!_}KxNfulUhCPD@{-iJjo6cZytG*ONSAxH_!6H%o?DMkbkB9dc> zd;qJmIcdGkKo01d7~OuX_=8x9!a?e3%Aunu%RmKaj1)~djg%cwq#(f9RFjRM@|>~W z<9Qn`PC87vB$4Q#tUzCWC8qc2!#E;FMX&;nPn7q?jUx&a7RwP7VR8V8x&2t;|Ktp0 zoB_SX@t~y5b^EZQ|pgrSi}5^ z)|DUIxN7eB(#D`zQ(?=as>ABTZCQE9joyyh(bd)Ycg~&fF5KT~ek21&pVWr<+-e=J z8GNSI=gr^Zp@U{T87cKU+Hs_P;XU!eTuAKmacNv@)z)t5o(dDkv3+g&nC zI^GqXk-jq8*NkN^FY3KfuxVu@2~TcMZ8{rYxe~fmJ?Yf8NHGTqeC%(UXviwADXl7d z-nrtb+bXml+uU^C(xgo}ToT=}Rui*iUzf@EnFk-`8(p7YfX)JslpQ@b;`r_dEf)xf zwntht;fPz|QFao<{vP+tzY@L|ZtO|~H6Lp+m})vy1LiL43K@2N+?7htX|#UF47L9k zu@+A`d)0W0X9IiHIEzOYI(Nzjc15gZP6fL#<$CLM!4pjHJHH`()6p{-F^#%4aS_MP zJWD@&^S*I&1*spTVE(pG>GB1LnBK`j8 z*pd_)>UM7@zad_1?tZYp8ouCCv`^>}@h<0%;hvZw>Uwjh9yZJ*1HYWn@oUcN#;l

uU%ZQ%O^-{DN2hQ91~0%!r2qf` literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/corner_out_tr.png b/TMessagesProj/src/main/res/drawable-xhdpi/corner_out_tr.png new file mode 100755 index 0000000000000000000000000000000000000000..ba5b3c2ddf51cd985822e35df81c784320635561 GIT binary patch literal 1021 zcmaJ=&ui0A98al~F&*|G=!WPc8|c91N4unLXxDX3>pDysUD;xuq7``UTwCE zPGRW5%e;CTIM9RtfS?|RA|AYncpAG5yvV@gWWIE5=fN71ydQi%pYQj5zn}MHu5@!~ zaAc68sG;JFTqff={~HLA|3dTj0U3sIzKZA35^kvuq_R4yK~OZ+IxIs~Ut9eIQxp}X zjY<_)m0OaAOh)xFjAz<}O;M?gXRF#W#GnT2hLxs&zIjIjLr>F-g2E|w4mOOLbqCI` zmnz!&vX<28%p^#85)m*VR)J@(Sgz!y>9(#!=KeNIgEj;&r|FZVs>&S5AqN71iA6My z=Yc3P{DdHi{0$K0_$bSfSB&rzk|0XaIOseyiRS1_Qdur^Vv$vvZeVOnEZb_em{yEI zPMzhG$)v9ljYbF};;va(^&*x#+EtLDt2u^^4P*gdQLUjSPSYgQlOvdRPu6lfWg-P* zJ=JD;hVzfq1uDw_p{ChGySNNb^Zlo=TUoOqTZS%bIvQ!*(x@NGmU0eMF>)#ht#qq6 z*FYG#4P=Adya=u@8kUY)?syxoC{odKv1)0sD5q(nz!-)u349_KkHxusE>__AypT;M z3yD0R6{ck&F`baRTp4Li6I!^-)la#6U#@Qj(J+hMcm_0d$uKup7EhY-0l!t@5O(#$dy@hbd|VHO zHm^+`g&&`%4rjsJFAvTheLQo2!y68N4)8(g!%iSH8C)G3ADP;_8os!-9oQLveqo3^ z*!aD>J9T+4uwM#4I?Q~#vi&{-7U-{`F!k~&$Oi`!Tl-^SZ}!#Z9V!r_O3!}9Q_PD? P{)H^&OY-aKyAS^WWD7uX literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/delete_reply.png b/TMessagesProj/src/main/res/drawable-xhdpi/delete_reply.png index ce9fd147b0b7afdb5d4c474fd3ad8d5802a7e257..b1378a6bb670917849b4a2e4fdf1dfb7bed1c777 100755 GIT binary patch delta 615 zcmX@Z)x)*HohjPMz}U#m(8bNk+}zO6)zrzr)x^@+)!f|0%+S!n%v?#KBDcWT*UBY7 zximL5uf)^ERtYGgmy(%cXBRFLno1NuLJ6Z$!2-GF0`JXv`Sjg zoHbCOMrn6PxA-zt3E>%v3H#V#vaSnMjMa7>7B(D(i!wfaFMlcJDN#W#~%B~~XNh(7*e#i_OD zRaL^BPxTw?6)$YLy&+9~sW0j3&#U)^FOC+g47laI6zy+J7R{waIiwsOq2owChjP zJ*8&WKlV_RQF!?yOUb&x&1U*iH}9`eOOR($OJGtnc=Ag)fx+i#cEWMK Rl=%!m;OXk;vd$@?2>^!C?mhqj delta 679 zcmeC-I>WWWohjPT)WFio*v#47(#X)z)x^ot#L?Bj(!j*h*uvP!&`C+5BDcWT*UBY7 zximL5uf)^ERtYGgmy(%cuh4o1w>>d3V~Bf`jP=>-{H2b_6ckazMW3Ve_&; zwoakrKLqT)xALE3X5kF02vXvn5MlXXb3jFr+P4V?AM*Krq;2wflVO^t-SXah#z@nkP!WuN;JfLTe;hZfmrKwGp{pz2&J}2$ziUq4$J!lnmbQzYHXqWFI^%aW zVaMGNei5-B&8b~$1HLR{;d0O2T=Im|taGP9&Hq-}bACF9JFhTrkkE8LwA-kxb@j%V ztO9k9Pi*)-F<2*3Nw6W`<}-_@5@$m^>!EHB6~+(S4(Y^y*Ew@TMM&+(gsOS2hnBO8 z^?aDFBB#pY!~do#p1l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|81#=KlDb#X~hD#E>34K5C;EJ)Q4 zN-fSWElLJPT$(b-ssbzLqSVBa{GyQj{2W*)24v)yG;}p}GIRw6m9dGLsgr@L zu{lhyOMY@`Zfaf$Om7N8uLVxMprnvn0JPa9wJ5VJHN~wcKUV?lWvfiwZZXAa9#n4% zZnv1>)TknMZjeJ`Z&jb1_q|{o-U3d6}PU; zI`174D02M#iU~8jnJ%v3FpQ2+V0rh4waKw9w`As4u}!W&;+G_{@^T59M&EYPa$+^x z)y*}LYtwv}OpdNEhs6T#AGX$CSAK7aasIv8)qFL3c`Wkx%`bny`}>_@`M@n7-9;i* z4#hnf0uvMNwfD343BO`fb&|N>x{Tk7yVP;1 zW!xk4FAQFe!VEt}xfy!iyBRaYHt~sNsMNH%El_c&b7N!py!=8;d!LKRlKT$L4KwsK z7<#5J-l*XL2h&zxdx!f@vLf}Q-P!FxW6yka}zb&tUyzCVpEYr&%&i9G9?MQ2<#_&c!$&czJfHQF&KU<1Kg)dm7Byuei}Yp<;<;)L zi=7(WgdePMYG4yi*zeS!^)Fbg^rrHm6UVnfi9t>w|LY zMhq$am641GHbj2e8r-=g=S?i{x3a^2swZBxI<_{{P0{X}fRp34YW6W$Dv4Gu|q5Zr1hJL?^8xB4P=IsPxG?%3m$z3@_V zV%M()x0yc1n_B4eSKF75AR5elF{r5}E+LYG4%r delta 635 zcmV->0)+kB43hY8mtPa2~_bI{)gwl?>JuL(|--}Hg+zeBbv?=DT7}E z!8*Wn3B2YCZJ@2t1gzc9kEuDftLp5-1L?o;i8j%8paRr89#swg<|FYofNhw=cLA_o zM`5WP1V_9TI2X?8i-7gp#VJ@W4`GqFp&7~(&OMNTt(-Ck#)@H+cc7Tk`K%`aiEMNR z43vgQ-bM+zxPKC`{kS|17v?1(ZzGSK`W67*;8-H^Hct8ykkZ+bgyb#n1l)QGK-U$l zpC8n{viCOk+A2UZcv@ESP4~*vT?Jq~()grHE&xz*JcXtJ45|o_x1IuU?GS*GAr%40 zwM78N<{m@hVWBSe6Q;QPN}LdR0VVDb!1t&Lz@42#0Dn8D_XJqRDWE`5K*1^Co1lO% zTYyQBJfik*1dv}s|KcU4?MAJ1AL$Pn@lb+dFt?G5O;Qf0uSsuc0Lcyk)`p%{$ZjdA zZ0a!$-!rX(sSC1c71IXLP8UnC%-Xfk?Qhso38m28 zt<}KljquiL(CD2AyVaoEz}P%#@Kuqb%)s4z5zQVy0#$J=gXiG6BA)lH*~27?$S>@; VP?n0AqzC{2002ovPDHLkV1f)gH0uBW diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/dialogs_badge2.9.png b/TMessagesProj/src/main/res/drawable-xhdpi/dialogs_badge2.9.png index ad1d30b654f752f0cec6948b57b8a9f9f0000a92..6ddebe8810259d5be070fb4377a4a8b551ffe132 100755 GIT binary patch delta 960 zcmcc5^N?qQ8&iynlasTXvy-cvlbN}pp{uE-nYpv8g}IT7laZ;Rp__q{LPc(YudkI$ zesXDUYF>$_i>(q+L@y;X#R{s|4VT`@i5|o-|m4e#>7hHNL>oGgk zhq?OcFfcG(^>lFzskn7z*6HkEN0DRxiyjm&3|OP@k`)``C=jD^B}zjh;^iql-F4jC zxIgaS&=qQ+(c!VJGeUnuk4z@bi0n&Dye#XC*>0h_9L zzB47M88Or!+P-in_x9jo6IOY~Be!=k3e@fPDYss^vx>c(@zG*#h1kc_68b=RZYX+3rdEtzTE2 zaN+TXHD{Il7$(HJa?;7h^A4Wz$c)Tt$qoMvw#)J8aAv$6^=gsd9 z5Hk0U>Dr#M`DW1#=DS^oCa1hLYro)lX}O;80%t{scFqmaiVnLuH$*BraQ}~#{Jzb- zC+h$HtdQPIpLBjKGWZ?7nSGfk)0vqJ>qVG+W-{oDGVL*7iDBK z^=>a^iQH@O#PGm|y-(vp&zwAW-IV`uy!$rJaKq;+t@A5H=53y{DztafV)1>8UpC*b z7MN%J#ZxURi+{qKSk2kC zU+JNE?D8wsXHKQFi+kQST+J#dS2BNL!s4xgPY-e&t-X-j*s@+~&Xn1=d#Wzp$PzDcaNO_ delta 958 zcmaFJbDw8}8&iy>k(-mVp`nqvrHh53p{uEdtCNYPfs3oNtGS_@qmh}CLPc(YudkI$ zesXDUYF>$_i>(q+L@y;X#R{s|7?5|o-|m4e#>LtJ_%>oGgk zA8}e@&%nTR+0(@_q~g|W#7)85jwiM%ff8wzqqABf2EElO`Lu9gJAtf#tQL0qW3i9f3wxM-9POAK*)w! zKh0?7i-*B0y;2xh;@i^%>^S9HuV48oy8q$s0y#PM6YE_V1ZtRPCH~Oav)EDjp>hr5 zImRdMISd^2JZD8K{C%8%iP|uASo5+veE6E7cS?VLOVORf3_o{fF|_168*|DpO8Lt1 zj{QhY3PVf%dxzi#>y?(XS`SXB3^r#t^nS|AJag0V{D*Q5H3f`Ivj2S2%}}%9@Sl|E zWE83y`*^SZ56ii3U8Zy|JM>9xID{BD}>n)A3-YOX$*a_3E8oaqk!`-@cK zO$!#K*i_kcUN9S#Kch|P}UIh>=0%k9dYvXA!GZb8Qm zHAizSgF!8{1Y@)^$8xkpn?suzr6%N@Oikf39p916_+Wg{?~ud(h<0}O_t?+p^Zoul z-|wz3$bW52-1Bh&fH71aSp>&L;YS?<-xs&~(%|r%Y;(%R!eZG+ODxD@gbEg=IJ%N8 zVri!OtrKiI08yBy#3?)NZxAkl!|5;vS2z)}0Z7kOMB25KmC*{e(!*P^-opV5^)Obf z%w*Tw#T?e{$*Ymr;+p&tSIttFg~2j2&~$}>0vs#TsKQn8UP7^AgSrHqhqrYYItY=M zTCpcdIqd~#jv%q92~XC#^acZJHsgjAli6&TjT-d^qfQTRv(}J8n9PJR6&<=T7)@dp z6Gde1P%OBzVs2R$37yX8^WnZ^T#zbt28+cK)-W2i5TW%}^D?bydGEA{0?B$^l1G$1 z0*{6j=?Y<)Y{g)vPmaKe!?L`0$R=o*PN7Ae0oR9*6am`p{}1K3VYF8+VxQ*wpTgdf zYLV3yv0h=Bm-2 z1jT!0ns>1jX~m!d?(r~$Ioq6TH0Pw{+EPh_!Dh0gm~0lKfh1GS$+>9;ON2`bu4Np{ z%MmW~lxrE08*T+ogpo;B^1RJ5xst%4gGVMjBj;isQE!OLjGRmAh+G{^Mi(yZzX~1M zg549I4!12_3^zW@!)}*gTeogf_ zMwR`zG1P6p+7ZlH{S}vRF4cWF;ln+oI72nQwIEJ)H1_JjQ4hccr|DEOgLLJoYw90V z{^bklvqSCuf#rQY=O=AVqw3WC#kC3W=TieP2M!1T;{fot?+WgY;Zx>sXx(!{cX^a! z-|u~gR?O}_(X%j+#kN$9_Qy@R(O0_C#nf3hf65MYu6=0vR#R~M)a|>MOLwjxnC|$g zvHF&(JU%h-<-J4EJI)R)*z((i;DawDt)Nj%^yqODC{eS>gOt^F*M}0?Ry7@)dG_XG zw^f6eW!ZATddv0CZC71DZw((fqwF8YuY)n7nmO z?*2Pt!Om;c4>Ox^wGNyte;7=v-xuRw`Dl{M;f!gsw*($lU;l1aJW<*h=xuA+hA7i} zk5BC1wfgqnOPNt`3Q;@C9hasQURiO*7OadtvKfSUyKQ^V+K(sBA8$eY(8_24PzUf| zJLI-?TuYqOC?Wn2Q1Z{{CmuW3V$k-K4DbR~2Z0dZwT6n=A7=aY;Mv_fdzu%<#)mo( ze~&8aKC5b@+Q9o-aAs^$+d&^_Xz2SK-v~AYT9#+-|3;d(<(a5g9@joR{d2G|`48-R z`Z4BJ|HXIa_LkmT(Z4C{Vxcv7q^qi>(|0|ieF+}hGvVCXC0Fvg8yx$o#E+u=_wU9H j<_v?YhWbIjYXFG{UmsOA#u;Dih93ZB%P03{FIx2vSPCUU delta 1457 zcmV;i1y1^q4Cf1wNPh*1Nkl3LK+pghK+pghK+pgh zK+pghK+pghK)6Sz?+QG<`0XMNv!~@&@JI0X{x2>adm zI5-R(1Req20DhRT@3Gc|Luo+sQO&F1X$kH59PlvkO0Wm~S^eg3aJ6l+jsYjx=!ioi zU$jHVvHCa$cd%w^c(XGCd2!EIl6Lz8j>Ef>dj|W%g`BRwi z3qGcRkEyRD!lu!H=HkB&o@qPU+<*zvIbUb{l{jX&Y>H|X5PzJ#xf(F6373PLV#T|G zw}foKUPXu>GeN|^RTW>2DA+wj14R6nixNMExwcd9$FAV{p&8&ye2D@X&OV`v&k4zZ zyy8n@ZGS5GoE;f0vv z@1C({WP!f7*t@C*3`BfAI{Ds2SrPAMs zd4CdL_J3S8Ilm?}N%49fjgRrFctNQR@F>3IbS_fmvl@+P>FyvC(QwZOz*(}MUiQ9lv&+*mpTDt{op)Ncan`Ht%*x>lh0ukC2!1C7KVi+V0A zVt`U>v-m@sh(Dg`lfel&3w`1;L#c#U-sQfk)O$WY6@w36n`T&S46BqJq&D{>g ze^NXzv-r*oNHK@vdrZbre2>Yv9Zq}`Jtbi(Zve&jn~alVJVo*SMZiq(;w16W{(lB7 zzHq-F0r!~gC%-p27Jpiq#CK`{u6|iCH%b*>;8^_o$|Sz)2slq|FM;@P zQ2gQy(9hG)qxi)daJbs;P5J%Q(8PCUfF1kCA8eI`Q`*#?tZ-ixlK3topl;a;w%LAT zQ7Ga&Gr+DcSsyEsp=ehNCY%z2_f#8VOW1$gp|P~Nu@{$QdND=QpCX{Gys{*(O5M5*cC9J|XtBVC9eLMI$I;ai(t zxXMJY5l(}=Qu0C*%^R;X6@`~K=h|eQOjpWM(4)Y8Otfl67DTKv(F4986m(&PX8_@$ z2_k3!4IpR$4IpR$4IpR$4JsgL01Y5$01co41P!181Purk{|GPuMXiP<>_e}k00000 LNkvXXu0mjf8Q#UO diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/doc_blue_s.png b/TMessagesProj/src/main/res/drawable-xhdpi/doc_blue_s.png index aa12f883466de3714e22b7c14236313aa530603d..ae8dcf5177717474e27795d9401286c7dade181c 100755 GIT binary patch delta 878 zcmbOw)X%fQjVZ>=(%9I|$=u1!)!fC<(ACt^(aF%!(Za~h#Ms!<*uYUqp(3}y*VoD= zKe;qFHLt|e#a0O@qL-4HVg=Rfj7#t2MN9@T3oLOdQc@@`2}(_~O2KV`BQCv@^_ZRN zrI()xXJBAz_H=O!skrrK?p`nDK#8{WBoS`GHR0J84;4*pm>Ln0lfOAji(>Ve^2q%yr)c{-?G- z`(K;Sn5%PxX~Ci6yK+ulc2kR-Z!_ngeetKNG~or0!jIpcZZGNkXVx8E{j{y@ITCvR z_KF#CI&7|YnVz3}>G!m!Q`e|I@Sd&f;G=R-wPB-K3~QBtlQ#o%8`tb5o2yS&3B{~y zvf^RfQ9mhM{$NC%tI#JqhbJ=Ut+aPdt-iEBT<)O3^p-Vwu1C%bMe4pO@3vK3vR7fU zCr7UFxfmg*JG`b-S*9~2O>$tmrN_BY{zQd8lX}v;$qWqVJvp{=&h}*D{4j@wp~8=e z;oi)aq?I=O4bQ$TxvrKND!|3CLceZbtLF?RhrR!{Z&0uIVR*1|)&9SdMR$ay=C1m> zzw|+k8)L~y`zPl=t!)07_vAF&`f!GT^^QL^R?X$#?NOEAd|ilP&zf^9zTFPkoTRPf z%pkzP&;Sh0C!7ohw&H7>i+-^NES$seK$+vB1tUm;g<;yl4i*N6t$YmblT;v~Z;~hk zk*a4<04iZr;9;G! z-oLime&eR1pIZO9R{UW9)H8GG;f9T%uyPv;Svvtn?>hT%qb17S! zW3Qaq_Nj+lx_U0ZGThEjJvK#%;n8hvh`WLA0Xhxrh68inu}Co7Hm)dqy!F;1psN@> MUHx3vIVCg!09kcQ1poj5 delta 1663 zcmZ{kYgp2U0>-&09KJ2hwR^G;^Jm z`Y6bb=y7vyUdu~rkj+(UE3@=~V`tOj@F=w&|0dem^PKH`>;3pX@9%lP{jS*8Vmdf5 zUPxr%UUm>AATo$U2?$`*BAJo<*nu22mCB-ULYNr6ouE1dLu zM=;S6g9{l_@RQ1Yo|k8t9>j=-)xS6c?M<@jrZEzXt$S&LUNUgL}E_q;KK zF-+%Ha_SMyqk)sp;o`RSgTE2zO;_(TTVsua=}US07Vg*I{Ai*u`)enf_q0trDC4}T0PC#Vpv2HkLemmc-58_^dR$cjieDBQ$m(zS3 zca#B1hcxiUN&)H1;nvDeXawlLDKH+Ao~#A0WrIh7)k8e{IO%~F=yy}_5*H!z_-X5z zoglo=!`eSCazyTwk@=%hf{3v5(nEdEs%Ov-5f%9hvu;T#fIj1mM?>u;7zY1GLD3ugnnCqRgQb9x)xN>omy?%5xo$xFd zI8tMiRWN{_sVua3u!niqbFUMe-`|Q}CFP#2Wt5|C|Cm7qzXjzap^OlJ+?q9?G&j|Z zh*3Q(-m^wN8PoF&cg>EtMH#xew0EX#|8T0>q#22#Z_6!lHC4nAE!$o7YeYMxWeS3M zGx(*>>EzyXOL%u%!(tt@U8nU`{Ro)bn!wOT`-5b<_w?P1q8Il*-e=sECR&=X4&ehx zFGeL)Q?S%YS~s#VQa$fIpH-rb$=F;eYN^E;Yl({2Zz3R@!@JnQ#LHlThKek?YxC}u zAVlGn{^4kL zV%@>C+GWcc6|ozSY?6eRE8ElG;YV3hk_)sm^nm8la7$jh@79nrBE-3IGAMm91^odV zJLu`9Ny`^WyewjtJp*{EH|J|-N`u#e)0H~yW||B4;ff3Qa9_j1PZ}<6;`?r>qh4G8 z(66b4)9vCgA$fp%{w3#SC#e?^;`*jAVaox`yu8@}L08h88b1ZZcXc~r5gWvzWjg=jjA#6T_X^gDLpg9d zc2?8B4wPe!Jy4Nix!O9}CT}cpxD^9Z^(WQDVURdwQgtTH_=y5c=U|htO(oY3AuhT*F`cQsVcQz zuIf!peLxC!OSQfk4O3`Ipl#7_Rq@YzUABZWJelmrI;Gx_j7OcJMhb2P>HpIe2W&HK zOrk2dVD%5^b9M8y(L7ahv_U8<{^_e`Rql(W^w{aC0&hRta3^z)EQ#DjO#ceyxw=Wx ypzko?ILBJzpNjj#akL1B_&+uHfB&UfzJ|ad{c1qRyE8zC{GKRwEUTT#m;Dzbg6^XL diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/doc_green.png b/TMessagesProj/src/main/res/drawable-xhdpi/doc_green.png old mode 100644 new mode 100755 index 7c4fba30a07305c46c1430c408b0b70e245224a8..05380876acfe6d427f2d6f5b605684e5717df579 GIT binary patch literal 1552 zcmaJ=Yfuwc6uya|Mr%c_Q)_Eo*Oclgc@VOYEs;kyK&XKT(V%E$*(@a0WVf4zJRF7< zsa5F=2+ULlupJ!~?eOSm89F$k0sEtLXYby7&;8DK zzI)Eu-KLbpSu+;S007J~BoS$F&I*j_Q{ng4K6ezH-r)5ad^(fEyGf1)aaJaqMhp%z zmrkQetM{XC>1Y6^pmuWxpJ7~$Q;b7K1~4*@gN5DzM8|kolG;M^NH(2ocWTjxZS5#x zw`x&~+NdzHI@)GW@^N&!FU3sxwon=?8nX(C_TZ4fLGvWyacp(EaE}%p<;CGTV3woE zD1_glMPG=@Fq#k@!_kOZrV67JN+p6}GG&As!;~wLaD_5lu7EEVri{SV7#<#pj6Eof z##wXlG$LUv7Tjr38_%=2T<&(eWp0&>;d13ljYbpT2oDc~h%lGe$&;Qir)%jr13|ke z&d&07#)$+N$!sQ%*P>AAiz_(T30kLXEKM+Bau3PMl`=)(O5;GI@&BO?#{}BNr_nF< z{wJ}^>}6?r8tr28I0_anXK5f5i|aU=eiK z*nbsz+yuKPu$*XHxS42t+6lXzgKbT$Ia&gMxY$6%nLWKjwU?6LT(jU@ZuUx9^69+1 zP5fngZxNF8Szp`o#>yvi%CA0~eS6;V#-i6OXzPQ7AW5=i`zj$bxIl1jpbq7BBsJ_s z21EUwHwLz!2@+rH^0!@hIM{#ctf8Ff_n*}8SUy3U&D z6{XvX`YPpjC~xX2?$2o#Rn;w^{?S*m&3F9?q1Wr9s|xm)-cRguh|SOW69rEjE}vyO zmJZ)L@kEgCEGax#w^7_ZRCuKGmN0U1tv8I3>|5L%ylc0#HAtZqzKnfnU?o{MOk~B@ z{HBc5qRzG5WlKQ&oj)=a>lT+4ADA5yeBs#ldm8T^zW&SCnToD=mNaF~d0a~z`gl{z zkMrVtXNFf5cVoAq{cN8p9daR|5^2^?n+;I;d+3|ScF#U%0U60f2z!SM*W<>I*?sxl}Zo{{xbW7e@ey0GJL)u*{U$ zu5WvFLF^f^@Vg+YSr6E`3W1slTBb~G{&i8TH|JPmXNqvH=|O+thV|d9?3gB+|99K- z(_L5AsBXG@e8mQ}aEqz)AKiBHK~7n#r8J_cCprCc`-KecrPKc6oR(fqrTeZAyN_0Y mkbw_Gf!dFX8&fbiVi82(4Cz^+7f!XoLtxOS5RLI!MgIV$sxdJD delta 1458 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 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/download_b_pressed.png b/TMessagesProj/src/main/res/drawable-xhdpi/download_b_pressed.png deleted file mode 100755 index 671f591b27f98c945fdee2ca8f9fd6db0109908f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2344 zcmbVOdo)!09^Vp`OnNv@I5EbpsLa^&!Zc%=m#Dbbm^4Z?V`dLy%xq`DHSI@NJUgSN(mi_Bu#ar(}=sL(!GDQ&Ry&7wfFu#_UH5YK7QZtT01j1 zXeG+Z!3qEXRDeI5i;TghXSyZw-ZSS-IWpL5IDAbAEYZXZRS>`s!x0cVKrW1gxR6ks z5PJin0)V+h%HwPJfomutSdJB%Fj%cziLe2HO4lldA{nGXM?jHM1r776rVfLaifNd2 zq(IL=B@2p@`X{QOki;OKC{ZTz5o74SXsVWi2*@Fg5UrKRDAW`!4f9Etg3L|ZI1Ks| zL?feNK0Cz^3`VnH6@(^X2_7O(5JZ#7Sdd5}lfh+ZyeEjqc_KI210+&NWD4F3{pG?S z)>L8%h0FH)VhdT(Fi{$fl7hp<$H!yi30PPai35Fnd`ud6ya$5tP$wufLam2F?K-Kz zhSVaJRH>1|3baX47y-v=Xc)xP&mqW_fq`Fz73wdELQ;m)3Y9nz>xq-gO>uoft2JEc zKW=;zt>z^tAsiP{!*MDRavl=bNiveVKR09oBHmE`s*)myB8*|fqBuFE&;+n)7~~69 zEEQ7-EI*I~lGu1Z4vRwsK?WYrWcZPpEHVM_!v?`gjc;+iIZSUd$RTl9WG@ip5E&!_ ziAiKL2}Cl%lgRwa4N#~xLWKyLv@1pIe&G`TluKc$AfX0U@nAS+vI2smU=6H}f|Y1i z2pR3RPO1>Y@oIO|@qCV!4XLDCAhDkcmZLxAmm>X!{r?^JXRi4F$r%oD24^ac|00jB2D$E%*U!22cBN=vX&wyVkbR#&N%MgQa`T%i)6_ z^6Dt(F?qyxFdD_5mvHA0QwzMloZ--IJ2BPs&ip%R?CF`Awa>RM`q|Pt)5XOl8l7*o zp(fZN>coK+)n{|`{Wa>MikHJ%o(&Imb{sYaUJM&(Y3_R4kre-|>-=c*>84(flBSd3SZBSK82o0R==R#HKc-NDF|=JD_& zDJ&qo!AV@Vv@Vu0Tjxp_q+A()^x|3H3CpLA$tn7tj>VgUwaBC9m%-gXqgny|?moxgQP(_sXj4vkWr@ zi;cu2!nT#U3yWG3&4-|g`r#r&$%cp*<=$8wdrRL*cAQo0BPkL( zqp}v=xIhCpmRJsx4JS`><{v0e)gKPA-?u&I4c?%P7os{NdVJ;{F@zfFO{=>e ze3y3j7-c!{-N*jCVH6X*JgAkT>Q6M0L(c#3Vr|xpDdbD#ya{`AAvb&M=`HgiuQlPN zb+&@MCr{QVlUH=^9t5f3Gn?lE?+bhZlK<1CK zRXW}8L!I=v$0>a~jAPb|r|IiH{E?aR7<;>6jMVqB^=Rc-GCb(d#b0c1Rkq~Mm>81v z$9`Nt>z7+^dw5t%EpPjjy@}Mc2iel4PHmAJrz|)A{dzzhoz`F$NjSr5 zmaKO_U|7&aB{=qg3l{pTdpc0%g9dH4hWSXqeSPf$&C7Dsr!k=I*C(aDAw()=I66;} ze!uG^$|aTj1$?>zDkd#4$tOzFJzJp;?;=rw0>zjoO?ib@})ht4dn zMrB_dv*hgFlvhZv2;!wx=a+N5sLk!Kj^o=N88U3*4$ab2+IGq!A}LN&wYOLDvSt)^ z+ICaJ2;e*2t^0~#U9&^~gX;!LR%(uSP1KH8Z!8>pP=DF=ptz=xBN$yZzQForvBmR{ zX8g2%Rc*7G;}EIV?s@W(Z0^ass}>eo{?X!@`@NkoC2V+iw5+cSBg@}-FK#t|?*_fM zqm6@(W9hmCaCy4c$5yD#*v8=a1o);yuZrCgOWRwkHVaxqA6>tZHQ{sm;EJc1skp^p zEA~u&TiJqvxwTiEb^^6v=5KdicI7m|7BW{qmNm?a&~!fRlwg@QePJWpW?!j6pF*AQ za4&lAL0cJGQBpPVOa0ReaU~Ks7jfi9>g-F)(Wlmw427>AUvczUx1`Q5bWgwEyqjYe z>OG4SXXEgEU10nAY`?+f1!exg_}cPmZj>KRs TRkA{f>E9)Q6U44y3V!@Ibg$0* diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/download_b_s.png b/TMessagesProj/src/main/res/drawable-xhdpi/download_b_s.png deleted file mode 100755 index 74646e396beb5c0ecc1a0a3f5a5ce10f1f9277e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2262 zcmaJ@X;@Qd8ohzA2!o)aLPjwLt5D5G2qqC^0s#RHU4# zP=&_2)Df3pv{+dRilPS5q7<q*~5dl4(&!Dy5R}%>wzV@)5sn)xAo|c z4+f4Vnj$kZl7RY4&f2c_G z2`!Vez`yeSpTaVBh6Kd3KpB)K<-v^;I2%JrXueXABZs7H2uhhf#n41Z4#^TB3EDTz z1MLza6!Rg4%=H7F$)p8}Wpa*~2L>{{Ft7qnDCE<~M5;f))y%HOmZn)5_PoH*Sn62E(ZD}x%UUZ@7K+=!E;Ep`hxcz%1p~tQ~4{2Fk z{9q)172AePEC^V|{aK|;vSykdKesh;=aU_8Hr6SAZ*10&)qYb)+93OO_lpjF_fkRsrv5cYrz6bTY3VBrG1I%Ocf4?%Mi^WSId{9eHow*t8U}%jXWLHB z4@_yLBWt+o1U0zE^~a!~T{8=1Xke@oy0|WUckI3z#RzhWVz4(XN;eHxqgGAcVJ(S6 zbUxYt3|s&8^9t?d8Iu}893MLTBJn_#Ym88(A06+HvEP^$c&}-#8KL7{i9TpB{6rP; zF}b}a`ulTXQ@`NA(hRc~#F1?R7n&~Mo8(qNSv#}NFT`cysu(fkBg6Yed{y1lk0aNV zSDtunUeY*LK^AA+5!!fi9(BKt45o-Kwcd_%f73Sp*8c+2p=0c>YyaWTY4XiD?Xi9J zIoam1TR+QZUPl#irs!6E@rmW`{(aAji?1X-ax&E%LFI4lL0Q&N_bwv@+ilU$Q&PUzZDXf6+~?p_W+q4lvN{_=`<4I?_!O6CLg0qOe4Vbh z=3(L5G?Vxfg9lG80ir>QOY&l%&vCvk3ZV*t0a5c*wl)@Nh)3DE^e-2gAKbunRE@dM zS8azOO{S{cf?VypcCU(B_4rhLW@dWY!Iy>eSG3hMB%L|k*mrAa7CB|YZ0 zE5!k85^jy06|3s9L-_6EiVzcSp@F(ZpH;>Wt94IoA1nUH(=vHLfRdz4yYfA_%cP^>e2p^07YK-N0WmVk+lgmuYbvf7kEMtRp zZ#7GSl@H!z<$EneD4kh-TJax!l((9A(Pc@|pv`8-F0m+>wDh~em!5_w%fXmE+8Bj2 zv~+0uh?!Q(%=cS*bW7Q`>ZHlWRPB=e%d8PCJl4L{y}9~f+so%C?vLKRru%oa$mfP; zv*Y*SAwz!VUAL}BC9{~>371QdkJJ~uDk7+C;*HWP3aFAix`?f>bT~WQ^W0i;8E+bae!+~>KJh#L16CEYGXMYp diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/download_g.png b/TMessagesProj/src/main/res/drawable-xhdpi/download_g.png deleted file mode 100755 index 1eaf6cfcd0b4eb450427be5104ed0cf5df02b5de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2272 zcmaJ@c~}!?9-e?8G0vftlkGLpDV2$Wbtl0fy*?DH>`@Y}2@B2Idn7uL4 zt8FZuEdclV*9aLba6sLIA*jSslnnsOSE{5uemaDJDUeVk3Br!H-oSz)K@c|1 zpG{&*nNXT2JX;2>&yMEuv(x!>0e0mIaJhwgbfbo^FCInU*TsOLaH8k}{Ywh=;&3E(~YPRxu_GMqqgwECreCsi0?^ zNFsnUK$a*d-PmZF|nkW8e61Yt5*41P?RA(}fD(wusqxPrN3 zAXJPEqeGo_>cshb{RU>H=h0E2LNW=2v#sx^-y4Q(ozF*8sMiTd0lmUg=zr|W2a z_!GtTFLew0TyJVeZw_f&zG-@#y0(5krQN+>pQjls)+|cPn;H9UdsMVtuzd=BS;ORf z`(!_ZkHI=H`iI!0l*NaRnPQ}u%gqeuWfN_hwnUtIcR#M*wW*ggBC6GFU-M$vTYW4^ z{;Hy@cT;ubFT}hr^k#acWl2lq$-ite)g|ZNj$Suidgz)$Wk%|GUof~z8@uy9`4v@t zKItrlGySWlqUf60Yd2Bi+3M`lql`M4>66_$T=m<0#)6|(c3+(^RA*nhasNkUC2Kt6 zz<%?6{)R%#@^z>2*2E1yxN;L+nf}b3oh{?u-DZ0vQxydX#X}BM4~$D?a%RMHPEw!G z-MfTsNJqt#@_X%(xb=cb+3hbMnoc>ZLSu3J$6VS~AI|c)9Jv2#KW6v=zx}nB*W&iT z#@z3k@qG^Y&sNN6YtD3M2E9qKYoAx+W^mbaZ#=q5j!z^Ww6^=%WFUB`#L?pL<`Eo> zNj}9Jj^C!t`@Uc|e=-#_EaBE@weiV|Ox5CoU5zgD)h->u35ftn9N_7_gj`$FSUOK_ zj+!QcE4QRE4;Vla`lZGka3wD;y<`rII@!K3QMa1!Y)rLQk5STrqvu4xyKWSD3JBl@ zc)p|!I5(SA-qoU^dDWFD))o8}f32bT_@L90b(OTGrC`dE z?`k5PcrAdPYfiPdbKWy0&=5Fu+QH?En*B>aWP^}ZYh77WJ>lb>b56nJOqorXcn7YE z+H&op--VX9OBGbH&y~g9ub1?^-55Utu$23z6svnTojP-?Q(u0YHZF``1lSzFJA_|% zyWVH@5?M`G8k~#XZ&AFTIonBnk!GQJvbWsrx_4O)#_9km#NauTl{_UL-FcedymZ@| z>uuz;qLPD7)i=1bpHD=#ou|1!rp(XL)@zScxR>IpxTlY=3AY)$#A|tGIdVA1s<7us zp!zz$ug5PSCXGkV3;5cV^6sfq)OjHPK-`F6VMm~cb@)PXf?-Hm*xu@?I48s0I_Phf z(pLDSDDvb7g(;Yyc#2pL$70$NIla)}zls9h)g?P^sCC~;u6BII`KULn?iRnQT+lmL)2Zw8l^ldoP2==mROCT*y&znbb z3CrVckSyQ-#4=%ld%$Y99LHdC=txFi*wvDb^Os)LI=v}vj%_OGP>Wl;E4LgQ`(R=X Y92>Lsr~)fa82>pULZew1Ly~v=2SzBb4gdfE diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/download_g_pressed.png b/TMessagesProj/src/main/res/drawable-xhdpi/download_g_pressed.png deleted file mode 100755 index 4d785fbbe6dbf98d8676242642bc985e80d94fd0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2282 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 iEr(jBLBcz<8fF+3ban2v2WE=?MuxsvCqmgY;$ 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/file_b_cancel_s.png b/TMessagesProj/src/main/res/drawable-xhdpi/file_b_cancel_s.png new file mode 100755 index 0000000000000000000000000000000000000000..0efa019d1bbcfee7d03753ffb760c8efc45d7e83 GIT binary patch literal 2706 zcmbVOdpJ~iAD14bAG?y_k2H}@BMjBX3$3O<+|p& z5C~+s&jxxhxP~o0I$Gd6?l9H`Tvo~$VX_brPnO7*01z*(C<;LM2-wj;Fu>*}#oYru zAP@~6KQv4h7T{0jhy-Z%q7GUv5QAt4#ABUY%;v-ZGDH**%@#!yaj42Q%;uJc5A$jKmq0Fbc}azU(6N|sZQpLogOeo>4;B0j0e zVkpSJoC*sFLeNAK06{=IJ8`f$9D+zh<6H?l#ZjDiF`{VN24I3VC}VxjbNqQI1423@vp22is5O6pW-iu0dcJU&)xq30YT!~8@|Acj+;~7LRf*X@cWZ-ZN z0*UC1r4pR!SSEu&WVqs&us%Ymj4k89qw9*Io(L; z0=N8XRV#}=+HS{3Zp!ivrq$ykb@qNC@ON<9Tz>MfpKo;#S}}Xss71SWZ)5tP*AwsR(Y6OgsHt?#pE>F><*x=Ux$nxqk@mN_75ijD z%oJ~uCGOWtqncdmlEP7AVUI}HQon|d)E(YU?%g1);(Z&xye;enT+i0P+{!h7oz-)l zR}Kd_f@dm<-mJ~^Mu}z8<=15<(nWU(K(9Sc)nww`8a{E$br< zyRdd=mF4>}rYnkGmX5)P;hvj&Gt|GD^YWf)4!hQ^D4T?(TO?>i`lT=~Tl92vwwg4X zX$}=?_V4Y7$FI1OsfSHrr~;b;aE)H9nuYrN_s_Oz$ldGLU(Tt3eH7Mc)@6Jsh&q4K zw8B`s3wHO-jjH#N1^%q7#}JAV=vI5fnAdmt#yDqMs%_zQd)~R)+;6A2mZ@d7_k$Yz z^*SSe*2uY)gSyjRL)_$G;IApSNc!m+H~isIwtw>~WuJ(Jh(XtUJ z`iR9nr?k+i@s`-j<7?)3J#!mFk%{eMuhE`VoP3jwsj%d{T~h>nl$X(_tH=V9LSo$$ zrW!-2ZTb%`cU0&XS%=3|7%S*7W?}bXy%}^|^xg5d>BckB`kvNL>*I(imU_T9W$T?xcyjj~5fD0eKf4|lMH9#J~ZMFoD>*;h$DxNJ+vmYMke zR6mzyx5VOh$GO%y&$#i>>w>&@!>1~*=`AR=8j7lK^C2GF&5nf&FPf)(957Kbhfg`0 zYMz^eY#slm#SFt;aogfW1Vr3)?5nVSlNxnD!yu(E6X3kH^P1?Q>=z|h8otcbvNEYt zKHmc~Em_w5u)#2QrP4EX)x`5*!~EaQX1qn4dhXQ&G+uW_X169^kQuD&@V+@Yko=D?CE$#ee@`Fpv~kh z;(n*^k>#^_y_<^-W|c2)w!Ugy==T&G>EYYSzJPCUUw&#}!To!vxt$9qRRiKAef5tU zA338;me0AOG=OsdOjyU)Q|lv6Xl7q~Dx40GtX)8@X~Kla;%5$w`KqkfHzn`c(5ckT zu>6e@+M74o8{yqI^mIdWP?di(TS7EUF792k>#Fk+{+vHP~P9<7~?G#-T3rQViR zR-N$G;8+-D;xYaGg^At%gB2`h3yO7S^`Y$7Sqr|LWj29y1;B&SP9Pgpt(T(6$V>9# z-QT>*WxjI0gE}L!ueO9`YcQYe7-K$hQU}5ZzD##w4jtb)eN|o(A+5Pkx>DaA8rCt_ zYi+MiuD(&xly-R6AGMuPBEwr%qvT_yeu8-1KIpVFvH{OJ6>T~&SA%7Z9vTU+g0Z$6 zJtf2&;R2Z_eCrPuugbURNLvkmO0g?3(h)lMyP>r@pi-q znR#EBwOAeKQUhv}uUiC9Rj$%)-}gbhOC!C0_lGwx(m&TP9tTQRNeq6?RUTM(nGZ^fGIvNXbKv8|i|?RXkoIVzSQMHaviO(i!`Mi#rn2__3AR6Z AzW@LL literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/file_b_load.png b/TMessagesProj/src/main/res/drawable-xhdpi/file_b_load.png new file mode 100755 index 0000000000000000000000000000000000000000..f9412a04f3809259b276220024dafc0c62b6cda7 GIT binary patch literal 2479 zcmbVOc{o&iA3w;RkQhmsrW?IsHe<$&C9{_9jKq*v)J!u6gIUasW+6>=r3Eb#FTK=TWVx10TBwM2A>Ec~eUD1-`$y0H<2}zg=lA>m&iC{A?$2{}2L-OQFmo^i z0Kg((6)hNA!>1n;Bj}x&gT_J2d^tT_9wLsGE4We+AoInWKzM+V8v_P|T)rx?74!iB zgJ=OeTprG1l6Ybvk~^(~R0<^!8UTD&C?#B8JSc~60%HUsU&KUxBLXhq`y$qPvd}CE z6^s?EQcJ-Qbs(Fkj^`2ih!uWtA0-JQ5Q1_pTq#Tt$w*3H#AjX-w4XjkA>f}?FCtbhmyl2>g+hT;cp$~n7!-y`Bu;Z+vF?zDyG$jLbCvEQ*^(Is8YtsQ z1roVHEP_unayN;S$ew1TvjWz|U}e59@`+U>Fn%mO;TYFc`Wgk>Q1= zP^ef>4?2O&z@cZb0V0{4E8>AOb_I~#uUH8GH&_x?3UcLQDO)T~nCXC^Sg~9zixo@Y z)DS#;**bxUFILF@FPNX0_<=lqfc-?2~k@I>Q@R0^KRpnQ&-hNlue zy&xG6Fu}HhlFp#1B#%DkwT-PxT4Sl0K>Zh zG%{OxYwTE5!o1LVEfeRH;!B-_O=eLmyJz(l__DM;8_Uac;@Iq;;+AO-r7Az(u1>nK+1trm@nF1D z=kiHj?d_dBE}j@9DmJS{3GMG1U8(F<74W-lNM6_CE@xP_7;c$u+`9F}-Myo!uLxtv zsaPvAq2dT(^s=_!@l&Mt7srM zJHFL&ins6*EQye8`P;rhrs!VFHZ8mfHP?U5{^V8*hvDeA!3*A0uaUUXb%1^PizTC? zao3zaB?loe(d>zN%d6qrOm-zXq%0|2;$8}6TZ19 zq;E%uvuo2E+hHr6noFW{q>r?gAD49+O(LZyDmzZC_9LkD8@4yl?QcB^cyh(GR`dLQ z>e=etU8WhYY)177ny2j4sD_?$+l~(Fp}A9m+y@cfT3D`^-uq=b=i&PioL6}ZIguTw zU||I>aWC(^VQL8bADX*#9qpR!p`S{z2g}dcH@m$qTP*MsM$`;U94(E`VHUd2nVot1 zcFQNM_0+S>_y=2Z?(B$XW#DWg>#tM7gm103?S;K=>v@*n-`k3eHq00XUMPxkI|S-W$97W1Z3i-rEF*0LsSh7TdJR_7XY& zu>Rzx;UX3YGz59Y_ELZXSH~Iw638_(7A`j&ici~tw>797WS3xIMnl};qBTIuT6Ao0 z5zv2Tt6}AaC}7AOB5@u+`F5>WY={%E73El?tzX7$x?er= zbz^%9f|4b7b=;TFEpuz0IlY@>Jx;SU8d@~vA8zgVY<{2q{CAiCMeXxHZCpy~J;`P0 zTRFYl(B@Lt9fM2BEK3dbv)hbwdiB=erd3_Hi&k4@t@)ryu!?+CXFI7FEtJm3-r-qA zR=)2yv!@S4Fn4#l^Aq;Iwm)v?u(hRJQ|z3Lkel7~uM3hr*=CC#j}dk)y}I*~@Z_Cj zHL0oFwTzx`T2(ALiDnvSeEQKZp2XiVTmbIOUX8k#rn=vrcQ4;W_i$?k^XIJk&Zw}R zrw{B*A3mZ+|K*?~*pyDZeNojaxj1(1FPD=BKF1H{tfr6m`Cm|6HRYIGaSk-|Xdzwc zI26*vTdqT$E4|bi#;G}?p2%C!6lAO_oUFd)w|(HiV|x7_mjPCON*-RzVYIn&jyt~A z@~>>|xu&1}uD2Ikt0_*+al>PfOcz7D{HrlzczFcDB6QWpc@^3Ed;cAXmxt)Y3v>&) z-WNIfy_x2bi|i~D#aX8#j$Evp)1>`bOryiBfd3keMd}$q!X?qs`E~!rUi-+UDrmQ4pOZuY?Yv!ny9Gl zTeE?I=3m{0Z`9oJckH_q=%vC{w-e8%_#4)CI`(HI=e|E|rfh9Rhjl&~8JxS~7xh1J z*LEW=#GXzn`Li{Z{GoAdLO6ON?nzbSsXvkzHo_FeL$JXY{JyZUn31gJv!R;ykGCGL a&@%#HdAZ10X_JN1zfb}6Kw1Tbv;9BW)C}za literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/file_b_load_s.png b/TMessagesProj/src/main/res/drawable-xhdpi/file_b_load_s.png new file mode 100755 index 0000000000000000000000000000000000000000..50cc62b0b9c37810052d9f45274ce519e7e44da9 GIT binary patch literal 2483 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/file_g_cancel.png b/TMessagesProj/src/main/res/drawable-xhdpi/file_g_cancel.png new file mode 100755 index 0000000000000000000000000000000000000000..376d89f64e5effc2be5131b7912ac0717bc822ab GIT binary patch literal 2724 zcmbVOX;c&E8XlIgFBQ>%h{m7=fvk|VCN?1n@{qGCP*RCBned@zz{2g3qW`&R3L(Y_CSfSI2?jVMB_XOL?X@|fyd(T7_9ClqHvy60+EU*A>Lm| zoi&wMLJeeb-rLeiG-QlMqoiUmNl8iQBoDMg6^+4BD3m1*JRYUfK&g}E8le^?S37-R zV1a6pN~+XI6>`K9qcBR5prIjkp8gqvOv&SYB$lh+CrXzxj8>?`;Luo%Otuu)J8iWl z5d5zjf2pkwPF8}LKv1nnP>FQ)kT`t+>vH$^hL#j{-cb1}sjeu(IF>?`AOqzZE{lfL zeL;(*Vk*{)#blA$Ogx+8$tK`%6g-1T@$h6&$Rq}vK_Y(O_$w?E$EJ`O1QLfyqCaFiXwxKh5&tNY{Z&+mEfU6Fv?PDA!GlN;ev#_BSE` zz~~;A#R%3uoG3~4E7)q+(F4=#jkDyX|K z<-_qwlVio>J6|RbFBHFOnp-_Qm~r2v$R)4X`*t)RI_jpgjzmA&`#T~HXrhG0;#MSyP?#eE1KF$E& zIrK;*)RAbi_8xOKWZGWkc&Tu$Z&3PmYn#t=j-)z;4w#T0W_;0}uy#yvBipEjTpYP! z;nLhUQ$MtJ-3>JD7#;6F(r98gb`ENbuYiWOe-}Cl*@ZrAzxFjVs}lwFbcS7f(>*Hq zlAQQJ-yf-PBIQM!PfCd$O@{|ZU0W!S2uiT3*d4Od{`}L6Py=i#N_E^ZqiC<|C=r!t zgKf$ic6yLMxx9=Y6J$`|>+FC%P}mIwPKUX?(1Y{6W^#4yzs%8)(rPkN5T)S_^`E8O^n;HCPfOZw))0d*{(T1X1XcMcDA+c8dF3`g zNp(=QUo2{76v_iI8=_tO%L`g9%Jd`7+O=2r^#V@P6IJuqt1oGexm|tkQMcK%x4$koNZ=kQ z=Iti0p1O;VO+_yB3YBNmSDTX7-`h{!5W9su0>j7BhwnPh5H94FwK`V5YL*YA!S?~8 z+S3BbE$1t5Mn?ujg^c^@gFXo*i-Q;kC9Wi6x!(M`(#hK@--N4Gw`@97MuausH;sLgs}br=PZd%8@3OTC6->z4fz{VC6ivKXStfRnQHhlX%pHEu4jo1YmG;k`SF=P>LAt^73S8h`|kkS>cP`^vw<_pQd=N#jJF|W-4#1I z0&X-yFBKmL8afW|k)DbA@pib+ovoqz_st&|Gj`giVRpdKO+T+f74OeK zCAaW=izrIglWQ-YBG|=qCGkeI`Ox#NG9rZmr7enzjlS|jbo<>z{o66*vq$;-&mQi* zb!{eqKWi{0onCRibq0XkO4nrf9kuGNwkI9?CX77xy|L;oWM8Ydwi12znRWP9I^x2= zZkk#P==G;ylvhKVfwX2z%Yrio^g9FY=!oXH*VlQTo!>wA8K0}wONCp_!&Md4$IcH= ztk^+ab%1ekdx*Qu^yUX>*e}cy8(87yr;L~c8~29?BJd;*6fj+ zumG?hi}v$@XMC2EHFTULo*UYwdFyClY|+C@s>o={1H4Wi z>2V7=0F#_#(UVCnK6X{Mn6}E(LxWYu*nRDv?hd%AsXBbrv@y+?HRW9QCbOixC1%CU zke*XoX~=Y9J3na9R37_JcwNY*WN%A4XH78HNw^Xl`1Lqj*`9jliGDsDc^6-nR;ore z^j|*}MO|N`-M=&B`QelYyf)YG*1DYY($7kvDLiYZhdI-snXF*s^&x2n_O$1{R+Cg_AdNWX@++85m+c|K_f z$|m+~KzKO$WX4>7)zW_> Mm+j9w$K00wAHK+aNB{r; literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/file_g_cancel_s.png b/TMessagesProj/src/main/res/drawable-xhdpi/file_g_cancel_s.png new file mode 100755 index 0000000000000000000000000000000000000000..4a8e785fff3c0070e9d18e7428d34c5d38bf3e5b GIT binary patch literal 2709 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/file_g_load.png b/TMessagesProj/src/main/res/drawable-xhdpi/file_g_load.png new file mode 100755 index 0000000000000000000000000000000000000000..8ef2faff73687b6b69b155cf08e608a95e2a0e86 GIT binary patch literal 2488 zcmbVOc|4T+8Xrq1+o+CYGL`Nqv88a^ivz+lVL!HQ)$RS5aNOdW$ ztrRM!NmsZnTBK|dIysRo=Sqt6s&wxkea;{E{k-q*`7O`)`z*ib`F!3K7biQohQ0<2 z27}x0V!1)md+AgA4jO;T#_fQ_dXVi6x{Cur8CMFxZ1~~;0A(-a1_5pWmml?08(;~8 zsRRlo5eNa0i;@e&MBy|!9sP-y2F;hYv1rsM6)=>J z{_K>uqYH{DmI5du#@vjD!{bpT5(dA6NFw1)Q3M>GfW<*C$qc`PMkLV)WYm`j4Ox@& z18Ht7+b_1D6&)Q6f)W}QE0f7EGINYr8id7DsnjJ70>KQ@Fbj_ofn2$nD17rW0}BY} zNd*#6AQqvP7`XxB2#}73JpCMkP~zzLl~@%1B~ehyuyU>hi^t%wLg7+epR~h4H{ic+ zd{aBzBT52b-GFd$gp>!}N8sjVFqFH$H?*V(c|&uS3ZP5jhOxxF2q7Q>?OAj*bb{dv z_%s}o#b8m`3HV+_zIz|e$#(vn)#*h zpz-lj*ttiJG8%ohPBz|aVSd1ABs*(=wxNlUSH=V{=hB2xzYWH)pRs9+zv1FdYrEE; z$KH-jv<>;G_IYf~d;1Y>a5$;;PFr~!aX1;lG1kr6)1^*7ei44U$gl_%vwPvFJR7I#6betV)97Z%G_TH_cyB|(AFp7=Lh%q9EB;=1Xg~N+|H*40uRN-v6 z-=2A(Vb){n!N99(kLH>gX;^cE8e+cU)vc+Fmc}PeRaXDPca8=W^GdnWUq5V$Dkk`A zQaiV`h)f5Nt@Et~!@4H3wQ;=u79n0^5 zzO~X&+6USkVlFZ}hLPW0f6TB-iMMawDk`V_F$PxqEsqH`f*GhSly_ zk=AbjUX51IRg9o)Fx4vcelMRkBl~>X?wTqU+C4YB8x~6bb1-Tz%-Z?4J@T$~xxzM8 zgr2#6LN>3_p|M_$QH-`}CS>uqC4oe^40`}Pvrr8Iej z^PptAvUkntkP3+a*oSz@gOcZHYo(mN$hznMB7Gdn$c7HY%>FP#45z<%4g=|9`!+&>1@?!0XUZ4yt7+-$u+ zlUS4qVG-c#xEu~-s>b6Al!v1Qds?e$ggM2l9f((IFQnsvWCH@0&~u%t|n zcFa*o9aUPM2}#Kh8=`Sw?1xJ!4_lJnJ0xiaPLwQ2NeVAdOZN+{h58p}{Vppb7#CBp ziFrT)5cqGC0d?KQ-EZov?`*?$J2c9gv^nSVulv6PIu6D46pY_tr>7KAb7jIkysc#qW;Hb&tr2qqT~`+-&$8 z{z8xag3B`}{4+tskaB)p@2PzI0{W$i5%e~uX5R`RmBgfx;>eSUainDEgNW-yoi%g`aT6(!0 zestV2uIHYRR`@2px9sd;b#jPmKkj@Tz*fqQG^-&zU4|Tui(LyGx#*?*7Y@8 znopF;%gUWp6p>QXJycRfzs^iqwT{y!v#~9fRR?{dyn?ieLsn=5*G)O6X3k3YroB2* zU-SB0aGCCktHB}DjDIBeovY0L*jRMk;hyPyYVURORR2Q7pzKD>*2NO&pjqcw|F%_k f76KnFDr>>s9?!C$9elQP>0ip8?Zm2NaN_;~RA~~! literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/file_g_load_s.png b/TMessagesProj/src/main/res/drawable-xhdpi/file_g_load_s.png new file mode 100755 index 0000000000000000000000000000000000000000..6eb2518ebfdb0011e883704cbddd90e84ca685f7 GIT binary patch literal 2491 zcmbVOX;>528Xg1$kwuHFmud`~3M3f_1Bn793yUQ|Ar%x9Vlp8CvXDebP$X3lwIawO zMG199S!63n0a2iWu_B7Npe!n))G87Mt32T4PE@@2hfjapd1mH2=gj-Q-*Ue5JhN{d z-QUQ-+5i9mqrd=42x7xEkN$k*osf^iBgRTf4VQ)rInpGi7zTXV!mThWkk5>PLtrLb zo^Taj0|43_9wS^DP75NkgnSHBgTcu7B7_Y9YkXuPCMyn>qPD^@Jb@Q_y!jFu#bbM+ z!`x{&nurW@c>&2{I5e5gU?s<~2yC>EH)@THhzRguDHA2*#|tDxnHTz_E)f}Pma%Bm zM~F1e3;ijmaN0T)Sty24?ie>077hea5QG8o?hphzqg-*ID;9^`kPC<>x&6d`LH9~MXhDPCyg z3x>^O6LDk;iQ-8mxl;Y`RCf?0xcZU^Zg^jUr-v`q*8`f<_!^fAK_r};ho>J2@&iGt zI|(9zzMdqAOorS%AYZ>ZZlFLSWeQmEoL?T|_cPbyAGt)b7-mX^Vunx{Ki2{4xI(E= z!WD{8_Q`tfo2sr&;EfkPg%gzqCFw`Eqz*0diu*$kEu1ud)FE z-4}rrUxw_#OJ!92k{_0Ij-RjB?MP$v>ez>)+VEU{v}s%lm}%0dcbZZMp3hn3+hdX0 z5pa1vXt`ciyOwLWwmb)a{PNk?R6~bwwv*YZO<;Y5E%ePwyK|)2S=mM9uW(=D>eR$n zU4zPL`>3Ypueyt;`&TD*D+^m3Yo{j8q@n+CEI2eCT~I4@cu2vZ9|kP7&C0>Pez;g% zl(Of8o4h^iSVZim(H$32-yK^l)|DGI9@*icT^F*v@n_}jmX%dnljACXRa8zYDp=!L3TwRz+R^mN^R*250|dINRHn}(4RMW_$fxRW+;_;eYt<$Ldytak?M z)(d(cptPRsow1%;BtNe5I!;64+WSxep8KG<;PR;MnhF2O`DfF*mU5O}qi>qO(ZDm( zeZ^~+ouo>$$Du9_UQyA2yksK{n-^W7c@I0AbW8|+v_FKmb9Sgx&qWFL2F=z_{B(O{5cNiJaEHNc(2PQZuQ&YsYJksc9A+EcE)Y* zG{Dh0c;1G}x9GRS?Tx^_Ll!)GW&K{O65W|1PF_tV(-Is!y64nXUThD<@Lplw)x7iW zs9)8Lld;V#gQ`lZzg<^MA8UKNw%fnAwLTdWedmnvVo&+&>Y-+@-eh7QwMzl6$&1Al zKZguWIjtsKhvK+QD^dNk$BkvViiFw|ArtDze7y0fwtB36NcnVAw@wKRL>}K55J~_F zc*eKtzENll!=UwhydH1UyjJ@oyYcyesOA}p)&Z;umSmTpfx9000bS`@vLH#eBe1l` z@)VDueYo7ox;oNGTV0JHQ?=AWg!fikjnx=4odxgjrrQr6-`|BPiN9DS=pOZ1ox+&$ zUbBQ@dSm{B-8VK9u}ym0PxF`c8!r-^(9>3LeA96Z?Fp(+E>ZP4od5P1#$h{dLk!WH zZMQ)6dMI+&!j#^SUgDt(WjpNtE#Ga>$4u5+se?z_;`bbQ zw?fCldHZ!m4L2fVRSzM(Nb#?*`Iy_jPsa1CaJNfB(h`?D>087Gd*ie_KU9EsP*;Xy zYK;U3lE+K$1LW})7A{)FMztqIF}NVz0}t&@N{y|u%+gn1HawHxq+@|u)89;tyhbxFsHItH;x^AHeYbpgw8S7Bk43` z_P>0;CAPsSIxE*hp9Qx@-oPZPt8uTMT`#P7Y+PMsz@iOCcIEbzY!aM&K_8)-?fSj_ ztZ$E!ENX6~Ww;Gyhi$`Wi%$C8j1VN*Q}NyWv$byf)TX$}W%7knOU1$F?PHJo8blFk zv5M=>VR>hAQrTL45}Ppq3;#`Q(nPqnO~32GZ6Tc*s!GR<3ybYL zHt4fT%Q3pGi3!e5o>1u})5-E`Q{$y$FP|2Lc{|LMyJZ|nSeEOv#Jix#@Pv4S&*VL fi2G4aAF!H8Q2~PloA_)aCaj63V7YQf` zE`g0<%L0HTQBal~2+sGbo6Uyktc z5U5^w90P{|tAZuanONEaHdvxi@+5pXJ z69Y&DA8=0ubAa_he8vj?pPZpVXVCM_@juP7a0GVXy!cn^gPXsG2atdhBL_!A`GemV z5D2s-m`;tz7}(*>${mC+{}Wz=(W}cgh8$(%o;&gvhBzG(t{S~Q1WV>0>7^<)?T`6gm)J~ zhdD~*Z18SRnt_VsPi&geuIjUzi>^AlY-5mdmSwhGEP9FLld=W<4kZ-6eX;^xF_1RASd5@N;`Ph>BK?(touk~ zbLt}`%*V0aW~d;}a{7J(>TO8F!8%BJ?H;-mN1DQq^kmpPth?r}=4wOpecD-v%bzvf zW9bcF&AH5)&xQo~ht*WI6j?t~k2g-+7@|t=qwEK6rloZovoe3>8OTA7XMZIN^P#Nc zBP+%nf+!DUL$O+j@0*AiGu@fUUj16*$?dzWjz2{}eG8#&(05e{zIEKn18dbfo4HLE z0$5gfze%slTD@|`lO?n1orXOKm%O;Stn5UD`uh_ewmtdZ3{RYDfpE1uqAX85U0;~+ zZJgdP)BZB9{bWUcU)=uZ{U$Beht9laHn~^Eu+-=84%*^}26DrWE{6?|-c>9|4lFY$sMq8i!`|^%@+ir;= zdz-#^fPlWqf+aExzx{}vJX40qyl5x85NnitXaBF+u4iq#AFS2)$9(4%gUg07UU5?L zVol$y$rlSQiUlP>E~fy~jFK82v(>n8W%n9g$(PhRkMsE9?SM0$iDSN;BS~U9w+E?5 zACa31`f?0I^b=&ywT3KqehxHF$LFzr+)%$hjkPoMP z%)`Go_Kc!foZD~yg1XqvE;o6D?Ug3-{h5NiC$qde1@A6z?T9@%!fUx~73=PyPcYQj zVTQu(zs^)X?ILVhR>bxUO*RT&Y~WRv8NQf1Wiflmy<#Z(`r4>(q|JGoZ+HBb`q1>Je#m1ZNg^`-*UUO6`E}%(9TA#HN^M#GH4d;C-XtGr; zw_Ce7UB0UX#_zmLxlq>h^8{aSn9a*JpOSH+>9m!3gRZ(T6Zb%u`)s9Zi9PnX&VKLC ztxc{=AE!5jE3{HU|9G|6v`p2LlcYFsxY^Id0OB?-#qaetcL7!(#w7rtG+m+ya4LK0oS9n*ev z`@OFoWDwb3G2Gfk-%Qi$O5YJ5Kb|iCahIku%@313xMN$jclC~)j(b%dXw8S*>cRK- m@|oL4=mX6ieTL%@6Uakp)sd(5sn_TK4TBjW^afh|-v0oyq-=Ho literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/floating.png b/TMessagesProj/src/main/res/drawable-xhdpi/floating.png index 5523f817d959e55d2ee051b13662c832aa69b853..7333b5429b275acd9f33f0476d8b2b55dd05e93e 100755 GIT binary patch delta 3913 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 MCN}6s6fW_90Jyt1TmS$7 delta 4057 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 Hb&dTWjLno| diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/floating_m.png b/TMessagesProj/src/main/res/drawable-xhdpi/floating_m.png index 0e5daf6ac6c2527b6314854cc567123ef0be290c..3e00bc95669c72444b735bc881eb2ec41592521a 100755 GIT binary patch delta 1974 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 F{{mMqo%{d* diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/floating_pressed.png b/TMessagesProj/src/main/res/drawable-xhdpi/floating_pressed.png index 7a28b212490e082111554029681f91ce056d8de8..98ce443c33e09e1d61cf7137b4136e1c13652578 100755 GIT binary patch delta 3906 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 LD|ns0XZ-&F1bb3m delta 4071 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 X1S_xc2+R@({4HbDO@j(Obmad4zqhJf diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/forward_blue.png b/TMessagesProj/src/main/res/drawable-xhdpi/forward_blue.png old mode 100644 new mode 100755 index 40af0d3dcfcf07b4297b8ca43822d057883f42eb..78a131b43604ca1ad1bcc28ca472f454363799fa GIT binary patch delta 609 zcmbQtHG^w{C!^9vuN#c);hA|U`Q^ovwV7lUEG-SpEgUUf+}zBK3=LgPEscx}T+Q4} zOr0&wO?qOJX4xqIfhn#bT4Czy z+P>e$&mD#L^e1iR)WGWCwbDgPMGUH@S4`c_y1GFn#jerZ zfIF&(sop<LgbOh^}d{KW10JY35+PPB^?YLP|WFQ~n=M&e5}uJn9OM zzvP7&-DG*v>py`(XXR=A=?Mi&a$Sx=DH^ zjt*JBt#}m3MJ6uIJUQwF0}yz+`njxgN@xNAjTY@3 delta 641 zcmbQiHJNLIC!@+nuN#b>ET@5Ua zjg2f!OkJH!9F3F|Dsl^aeXU&blS^|`^GZBjY?Xi_dMTMHR#3f8xb#k5#AFcTY+&SU zVD9P$RAi3bg5r{()HJIUY!-m^x*6coJ6Vs}ss7XNV{8lzjIEw7jv*Dd-pus(W(pKJ znqI_F_;7lba*&JQ4S6o6Xb)YL=$mGlli!^R6>^)Tn-d%up#7Vzb`p!W%gl4FxAO$l zk5;nZZ@&L&Z)N(uJ=NzzuYa#?uRLS<Feu#e$VWFAiO2gUx9PpL8i~@ zQyBOa&eqhkKYAdy#wh+#`= z#zyx}C5_iBFQhGW-YfoYgOHl(k7EgfmZp1c4HA48KN7tD>rm$7FKj!4zb|{s9%f>H zbf)yIEowJeirv-r9_jufc1CyU`5LD63anN=OmYW>ek9p6POC2~ui((Ze}Jc8N(v5wHx z2E7Qj{KtACtqpx?Kfimb=sdes|7tCR_5rSrl0RGq450=N-H*Rdn8pAEp00i_>zopr E0DX7)Q2+n{ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_new.png b/TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_new.png index 700ba4271469140a1bc667684571e56580746f0d..71a5fc29630dc326c9a4d4ab39c85d9b0f604180 100755 GIT binary patch literal 1142 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!3HGD8EPYelw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6H#24v4 zq}24xJX@vryZ0+8WTx0Eg`4^s_!c;)W@LI)6{QAO`Gq7`WhYyvDB0U7*i={n4aiL` zNmQuF&B-gas<2f8n`;GRgM{^!6u?SKvTcwn`GuBNuFf>#!Gt)CP zF*P$Y)KM@pFf`IP03tJ8LlY}gGbUo-h6WQb!1OB;3-k^33_xCjDfIQluQWFouDZA+C>7yetOgf{R2HP_ z2c;J0mlh=hBQ8xDWL1Hcb5UwyNq$jCetr%t6azByOY(~|@(UE4gUu8)!ZY(y^2>`g z!Rmc|tvvIJOA_;vQ$1a5m4GJbWoD*W8Cp6yxj2~^xjC6z7#g~oS{j;LTDqDWJ6c*8 zm^ita!1TK0Czs}?=9R$orXchhv@OxD}JJOJgfSDr48Ar-gQ zO!4JwG7xanJ~sEGmD8bnN31IZgat$%Iey{!7w544@ukqevm72J-I~egW0bkj;C-u~ z;k78|r!PNgO_-SP{Q%|RLcT??Od&%0G3EEG5xW%~*go2s&G4GjpMUVt^|AHssQSFzjJe!O~!ox4ZSo{^2g&*M7BeV(!tppwAT)z4*}Q$iB}o@RG* delta 435 zcmV;k0Zjh(2=D`tBn<>-K}|sb0I$e51&ZmBAt!$Uf=NU{RCwC7l+QK$-8Cw%@^`5P;pp%l zELMN9a2#a$<#9bA92*+JE;una1gMu^J!=c<4P02_Q=kC)1B)+%Te_<2$JW3E2e53s z+|DGc|0vu<_jc%}u6HozI)ZIZ=bN$K0Jgw6Xs%E^0iNidsWZ?A@=-JJ$d`^Sv2i9J zauiR499`2@rn{5i(`N|fJum~7z?TtgW08M#ZB4pz1vcrHF6rhV-HjYVoA$r}cs17R z!3MbDdCEZ@wd_Blo6oKS!egL{Y$9WcjetwgVysKoQXpCBRu!I8U1GvHk83)r;ot_8 z4w?MJ5kFAgWCKG( z1v4`}LlaXoGeaE(BLhPteFGpe(={})GBvX@GN1UjWbz$GrO8>0*^_rMsc?j6=B4D9 z7i&(gVvmBy+ zcbsl&YRWTUl3l^}WDZLbW7|PiJEo1S!V@y2Tl$z8>jKsoIW8{Uz@$Eb`6t^(=1K>? z6qzG@DG3La+uwcozeRxkS%^XU-Cd>sH(EAzCQfJ$WDip2eRN9Y|I1=UKA&o5dlvWN zj~mV(b>5~XdG_dH(~}O%9g|MG2Oa!>QA4g&AxetntMksxscjl8@iP|8eR7cNTZ2pl z+glZWvk!6|rycqBFupp-{824n0v}U*;T0Y@m_+SF`B7>)^ KpUXO@geCy)XreCw delta 536 zcmaFFafL&%Gr-TCmrII^fq{Y7)59eQNSgq$0tXwAjJ1zWo2aP4m@(0-Pt{a6*}%|5 z!Q4{M(A3bx!ca%S$iUE8-@sVk&{)^d$jZRd%FuM;-;&9*7*i%^F>2Nq`1)G;7iFer z<|XF1TGJ{=IG>RZUWRhS(iyt0jkas zm%7Qn7&W+j6O%LZO7e>{G$$`&GKeAUuHurQ)HJIUGW;}IkJ+jIYxa@tz|d{-ba4!+ zxbRQ74u+*46Yb{C5A@Ay=QH&UUin0#cbO|NADtrJaF^ zga6^e1i31Uq|~5XuXYA`rVK~^iwpac#S<8=2H0B*WJ+uVI)}m2)z4*}Q$iB}mSdx< diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/ic_send.png b/TMessagesProj/src/main/res/drawable-xhdpi/ic_send.png index 4c42bc008ef627b4eab3fa8493047310b170f30c..5413204cffa8c02248b7032cdc2beec38b6c2ab3 100755 GIT binary patch literal 1575 zcmeAS@N?(olHy`uVBq!ia0vp^S|H591|*LjJ{b+9BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFe_z-M3hAM`dB6B=jtVb)aX^@765fKFxc2v6eK2Rr0UTq__OB&@Hb09I0xZL0)vRD^GUf^&XRs)DJWv2L<~p`n7AnVzAE zshOFfj)IYap^?4;5Si&3npl~dSs9rtK!Fm_wxX0Ys~{IQs9ivwtx`rwNr9EVetCJh zUb(Seeo?xx^|#0uTKVr7^KE~&-IMVSR9nfZANAQKal@=Hr> zm4GgVcpgi&u1T;Y}Gc(1?(9PM+*~HAy&B@To(9qS?!otnj+1b?6$l1}{ z+11h!rq?AuximL5uLPzy1)BgED_-f?$@r6H-{NaADq5IDr zq1#@6S?;yUKV`IN$S%8C&spd9fOE&3@BmJmsj3AGyLja#w&-&|NY`sjjalbz;m2sF z_Ccijj%0@Mv5%>3POlCWR)>UpGMrz+sN-lKX%XM~)tup-KXVCxUZmA}mby&l9V=?{ zqvSSz{=m$1{t$B|>(m2}=gdmC41F$S!t*0kdYU)ds_bw@5`ZOBI3GxxO?$@Cui(?9=%?vKs$4Fs<#`|W2|x_rN@`_;1U z52h8D`wNm*Y8`gex4k-H+f=>QeOU#G%Qr}UT5NE^@!F2rlJ{#@++LhnAy`-?#kT9j zyK`RBYgWrY>9@*=Z#v+wCHnj_Lk!pLm(oY#ZUvn_?a8oi-c=9w(wnohKL|6dn`v^* zalI8oh^@I~>B4uL+^5etx-qY^Mt5SCCc~;XYmH|odpGe#`z%RVw{EkX+BCkb+*;1} zH)O=_2i3?Onu6TBeniaP@Uabclfg&L+J&n#Ojw5${F-+Hn(S8 zbFAk5&G_&c$LpB7ewVD`iszPhW_t4N4e4&+Rr7fkwBXg+6XJ*72^KV(8k&Q7wsu)J oAFY{WEowEl@4Nkr`3%eqv$STuI;;QTHmK4D1DvBn<>-K}|sb0I$e51&ZmBAt!$Ven~_@RCwCVnbAiqQ5?so?TA>G zh*&qGr>$j)`xN~Fz25uYQ$$2h5v7!RDREO;ts7}yuY0-l+EXkM+e0a(vP6oAi0Jp@ zJ2{To-7`C9&YUk_?aZDTpE>7ue!t&rZ3A0(9iHd?CI2Uv$ZwuSolShx8kZt}kVnYB z$hUvwX>!_gOg`u-j=RZg5fmT|$K7&w*9k|sQRh5>2*Wv({L5~gGFOB@` z19!&(`arH3x~~kpVFEa%99ImlSSNW3z+8W#dt3#TfhSR#893`IXb|vL7~nQ)^VD?n zL~gf~$KT0&jJorOF;_aawvY!`4YE2X2MsK6rPMmPysetV>yzAJw{ zR6X&7kMVUP#EoU;5DseU$pwtf)=Bg^&4=S`upb24iySwa@Y@H+<|;!{oPGp>9*~C< z1gv5cmF1HnASQ+q0^~SfCcr;IUkZ)bi(A}YE)w8jqd_XD&DlI6&lBL0&R`Yvy9Gd= zxy7)Jy3HBo*jsM(l}9KWDIWu18EJo}8s#Q3Xu;q{`YL_Mhmoa%8tX4nQH)6#ickJc zwFJOg904vO?sx{=2H<0ysX_#_Y&v=+7i|Elpn1SH(+l1J);+x+)r^BSTlQzbZ35Q1 zM3as5h~+I}xf7G9lbUJ(wEka`Mxb&{U60$#%N~@4 zKp^st4kS0pY9@J){va*+67;7;lH~wsO99>4L0~kM3qY*s>_7nS$fO1XZUB|ek9Y`3 z5K@{94+=;jyAWw?CX%}8gN$KvBxnhtWekT(3j;uSAP~%8nIjfEx)E>&-5lYKC!@(6 z8z6+?aFz?WpFQqDI~ztL&=HmvaI+Yqgn$WvRCo+CoW&!?m?OUM5+(c1V-y1Z#RUvA zNBkj*LUx7Qu(<#nkHj0$&=^CwF#(CeV+>6&N8wmB28Tl9P#By621`T}h!{Nl>w}O) z`L$bNSC=7u>K%ucHEY?8cVZh_FKx&Kui>JB8 zKmvF)E`tLy*ev)aBQ=m637R7$O8-cK$@xah;(aZXq+qBRDhGu@qBm38awL=gzbljZ z&6@|h0e|ZKpTs;5J_kU#0X%jjmnLakkmhD64$+1SP(e1=gUt@#s-kNM8)WlB*c`Zx z4P2K@r7>8Ww%!*2nM`zK@jxnz1~`(;5fTa{gFz>ftT85b1Y1Lrp%Dgyu{E?d#@N|f zlW;cHI9s%#mDLuO#HK|u0T#H0rT>Y=e;2zs3rvnAG6~=^q5!%bm(7HK$(hLbz836v z`MzT5-`9fsE*2#bgWBxuUpl>YBpIL0?YFs=7~duzU`fWEE1B!kVcl~O$o7wpBrA^? z;k@rNXPWme6eI~4j-A&KBL$QSQt;)W3R`>m!V6j8ibDeILA9sGQ zhl^)Y%cVPAYw-IS)|MXy*?ld3m2LXI?$e#C4l4 z43!k}V6dC}8OV^QFr6Ls?Pc*Ty7vTH;vIMUevI^y6`WT2{LrgjNTU1?Ei zakr($b8U+k!6$VfPTF00MMZw*SnOzbYiq0E*q$^cDsm{jy<7^UmcT?2*64r)XEBav_xLD2huP5FQsa6twYc$ zjabF!XJ*7=PW&-oTS?g=&`hQ&CE@tXT64=W*LM&4@nCW#Lg5{h4JCsOt7d8D7cSk2*R! zy0ywWM%y|&J5@vPil4shj{UtGDA&&Dm7OAGW@h5t-QCA>b8|~SeBh&m4PJH4wY7sD zK0ZD{Mnz22ZoNFRzNojeMkB{dE5eIRCOdk2d+&T0@2*mC?b@~b=X{i%So@k!i>3m6 zeE8!+;ksT{GOhiDK-oFdq=0aJN?d<17Goze8_9|s7sLAFo!RWgg$hrbi*++y1yTai zJhxpMB%a2bUI~wzd#F;$NJ=Bi(nqRy(a`&_2#8!50PDsOiR%rC5tpUnoW`f8r!)3C z7x!F;GHVv;Bc)^9fQ!x6(saFTf~+-#*H5EDEwTtNY$~d%s!r52`iRfx;B)tnkfRdq zqW0@)tW)a`+=9C&%w`8ao1C0 zEc<|=kqownfVGO?kWWE!Q<*fGJOpJ2WN6+%eQo2@#?G9?*p-=vY(2`sTe2E{&@<+rec<@oG-^Jsb|VyfQbZPddLEAZ^g6`0nfmzMVUA zx1pioawik!2gSyYjg9eYp)NDCn(Ku5jHD~!H%^*(SAnAy6^KKAlwoo<-+?MpuZ0dZ zFQvPN-sg@V%Ia6C%snWVq9R?l*U41J?PG)Ny(c%6Di-oW2c<98ryAtwB5fLReKik{wZ#?+wE`L>&>)`Iu_*T2es+*wOEQy8jH2kO}_-)=Cbr` z9bMl$+S?E8O8#furqs^P*lgz}duvwFAg@NMsV|V9nVYyrE%moHQzN7I91ceuR@nCz zvK}bsw{{gM(N<}>@o297I!ehmf92gf^D^<1c&iZ6f^OY>@(%`k4=cW!PrJnUpyt}v zMzpX{GvZVH{Xd(M;Y^2q%4DpbX_Xn;`eVt!6C} zxg^+E0K0TXNc(cLOx=pVle45V zEVVXTFYH`WNS%ud4%U%fs?_NBM6_wX??T%fnBWw6 z;RV{4dA?l9^uZyG;&PA%J;Pmc-R#DyhRJNnTG9*5)XxX?1S~rTonT z_-(40M-yGc!XS1tSAPBYguPGSf9Qu`)HYGBV%z zSCNrB*i1nqJTosPzr1*|7L#n0qlt^5iKDZNo13|jp`oj(rIERlqlJ-+o0FrHshgvt zl0rppfv>NXOMY@`ZfahMr;Du;P(&{!GsOz3*A=_o$qSi`VtFb$Bb8<~zc5r6 zW!-yZb(~AjFHRSMj~`hlbt`ZL@?V_nDCpXI%)R7~=@qBTKK|#w<%ul{{jfYO zeb?&O_e1Z-?)99tZ0Sv%Vz13HQyPQp9Cr zZ}G8mCZyQC>NOVTKTyZ>=ZwN_1Ey(bTUY$vlo@hV=Y#2%`FwAkZ2LYxF1dC6%#-vz z@+vdUunAYF!lcHJ?|L&4Qe8K&d+$9#$zmY<8jTqv$q64ckQgZ(%IuLe?Z$nRO6Y|+@w5< zfHO0#GMFPKe*7zRZvLvDb_z@1d_2Lq_Pd?H8kgqh46?o~d?%hRx@nZ=)o$~g`|gP~ zE*UZtUlmNB)3H!Hwfe}^OFCBscLv4fpO_l-e=01EEMNgA7-O}1RtbjWvmfmC*ewR8 PSq27AS3j3^P6?$wrwvI~kgqySccSm>C)xx|%qd8@jnVxfnY;8M_*o zI65jRROA-;`dYcbvFn|@fXPS>s>BJ0k`GLBFeT17 zl;|+K)bH8xp`C$&X_}{tV@SoVH`7mMiv$X^8yjYsTwKs0#PV3m{KKkp!w0Hq5))*O z$P^bkI_iI1B`)~*hd9f@W^bO4k3R9ga21%cqJ73>M?u%#W2(36_*X5|y!U$EOG$U- z&<}yOcmKY+nt$)oSFS)2)3fQ?GZ=&un0y*I4H(r9u*|4$_#bm%cQD>yuTGen zJ^NA$+qRDKYkc}g+RvzdVv{@c_tSxM6L)ba{A}K_dBe_A_RE>=PJJ!<5s>=(c>$ZE zc@ek5&(k}UE#0?=F>ahHShy#PQ6>JE>{pvA?#UlS#VY1)_jpwM!S$VPtD&IL^UTk} zQHhIv{BsX?SOjilm{hO-@XH0;#$r9ern74I)@BL{Y2SP=6eHM{&|bCm#O~yoOdOj8 zzI*)@E`PwlxUc%iHD3p%XGwQ*Z<-_(bJys;KmYRKwQK7q&0liypIct^ruT=lUm+v`4#&~*CKbf(DnC;HuX!Jw{d;@ zzO3iHYx$$R?5iIbgor%8E(TA}U2=W~|Vrt>OakUXI{&&$5xJkw5A)-&3lIVhAx?t#%g4xP1&Yt*B|Lj3d{uo` zKPUPb$BPvGC1);rh$Y+;oH0>iA=9Tl^}A{}3o%|_64Q}ud+?o8_Tp!zwL338mRl2i z`FYhchRC1Iugdssls+hO{yQ#IUb|yo!ul$k7q7@NAFa) z89sltfOo^C&wrFo&Oa0E7hm*FfBNNvURy3P`+D-3L`&-=IPsY*F0~X^ezGB?efQJu z8Kq0i-<&I4Qo{YUQATt9jfMAEP*TUA+ux!a7#S8U@H{E+b@w0x5O})!xvX&G|3pFlWEK?6%L!tF1gK^TegE^$SpQWL@tL`$;3wCzJGk@)bFU>)`V)|=yr5F z3WILSuqQIi@OY}J4V_9L+E6KE8-@*;lxGFSXxTGtsb&C`3BNmS966 z+2M#3GLDdU`o9q4e?s@5fqrz{4>9OevW-3cKXrDbf1>FmD(Ocxo}!}_`UJk3qJ6FPmO`m!Pl~~X8~Y)kdvK_2XFL)zwZeTw(6?|^uBFA z8KO({{X28J<lIstC=}m|r4nL$i|fAz9R8%7TN2+}vuJ*%uC=$#V?V*o*3b4h7&xpP zo^Dv6c&AXDSy!s7pS~hN&k?4H(HUzwtK%XX8@;6Ai6Sc%rDqxOB50*wGM`43@=_@_ z2?p>AqovRHl*okL^fs*8G%2>&R~eu5j27FPF3uWZ`DylV6z_SME|9o=^ppTc%1Xr7 zMjkL*S+o~X*LYd0jtEx_2}GHvN2JX9bV>{*cswnUwiL<9yZ*1dGZM)3&-f0y2sNQs z>lHs~ylgU^wg9JL+sDfOXuDK9#VMfDz2Rxf_r;}kp7FYm*C5R)=M>s-nWRITWSnET&pfYTyKpzBrrdJIVURt>ka&mAT}!z>b~h% zWiMfE3I8NoqZq?_7Y2xoPekW0rv0(!m>^a5gporWftFdcxlqpitHZZ9&cNTo`CTAD zJX~7w`N?iRNFCHC+30k`JLHSDK6vxny&2>5mdXJYZ=It+PxG3~!>@d3{ndc^{6La3 zJjvXe{dS;M%NrbA{R>60YKm#MSlda4yedWH7pYtdPg2{PFfgC`Tq7`SJS)at_O%)? zvx(d@hP1@n#l`JIz*?9Iw!}1vlCre?qO&@%v&tW}@d%KXJF)41iJR@ZS`G0RFt2oL z6-I$j{J$%`48vslA*fHtjEEuO0<>?j@nDUvaFnwG@;N?0&+Ns=nEo!s;chQj*{Qde zN5TXF!#$10z_0fj9sL?02IniDXRh}{%Oqp_@k5H&x@}Lr5<=qlUv0jnTXi|rhp8Rp zHW!iS9VR5P%RCN00?hZMjB<}w!f6AI0n;}vhvyGYuAs|&IY$xALNj28To#JV?W>4U zO|1e~5ZW?x3i6idvH(+%>mc(b0HGzM_DE3?+(U@|plR~r`}Z4ntEY@-rQs&k| zm7Ea{$d4mC`qe;00k26kp+s`vc+~E)L(@STg)iZuxjgSw`$kCccdL!t#$4d|g3iI# z4=`e#05a@sR3jaAk=MGd62}4XNgt-d@t&Q4p`PL}=e!yXp#{JF62PYmz=pI302?J6 z?)KV>?jMNFf7}c{fxvp4)M}&{L{2WnTd0c2$@#Hl5IEiF+dmQhNmJ{HhgszRFuQOa zBFO_E7a>FfJkVqrr4jYHl+ZDmu>zhl2WR+}t|JZViNem?%J#L_{V zRxrKz^8VL-9~ri=@sqnJv$HkSph(D{IR4yp`=A9kNzT8%0Ot~zv}$7ZOl?vw+Sz5& zX|o8PW-To=8PT4-*E@s0A{Pla`i6fhJzUm+heutV1ih8?agLkCaJ9X?8FHDs!2E^) zPSPpPc#_E*(t{l2G!m`X#>twmM^7?7Al7oxDj1V48KZB}0?Fa>We#leQU6U2lq&_R ze$p_!KLU&})|*Wqe>|St-`}tOMCw%&VOk1F3Qsxvc9;H}g@rG{P(N

Y;|GAxRG1 z4cEjVQ@`U`RMz!rWc|Hu3VsmjsbvS z#uX>~%{%hJrSZyiB0SCaf+oGk&?Q>VY|#-do3djJ$VffkD3RIufM~te_Tl5) zDvukQft$L^Y!=Xpww`x)-2%5Tr6;1YnYZ0gwiA4RzeGyc2nY@aFHc#m_%D5XDV7++7*he=odnb#qQ;FfR+pL}t%gnc!m%XQi8IU9=O>L1< zIK%6g4&PRSL6=|RO9U{vZJ>Q%4-Z+dA}-3a+s%JkXpF+9#KGLCW}?gDypiDarG4){ zS3-rP1 zgnoQxXNkoNk8|Lzp*JxxJhOSZg0#`vf%huq+Xvsx82H1nZt69agUfGts&ziRSs-QW z&tn<&r!+9?!u z20dI|m$7bIG5QqyvGeAkrTv=K*5sdEzsuu*Dr|TVi?6652mBZ(2FtFN9+><$T=OfH delta 2717 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 XKBoGjtIX*ta1f`64%XEKpX7f5_DJAn diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/location2.png b/TMessagesProj/src/main/res/drawable-xhdpi/location2.png new file mode 100644 index 0000000000000000000000000000000000000000..ade7b9ef908ec6d727b5eeb54a204aadcadc9d25 GIT binary patch literal 1053 zcmV+&1mgRNP)OH$V)+<%2O$z@+i>O{+#A}ott5*2$$q8dq&>Wv=Rb*snD@=dlI zFR_n@8TKZeVyoK;OK^>QVg4PS!LxX0X+YIGLw0yxVXt>n>{Tf4NB}R&-$faL1=Zj` zZaY?R3}=>X$BL}c9R>%~!{|3V&Q#f|B0$rEA$pRnxjrOa2X%WtVxOW}<$(T|ON)^0vP?+6xL$U?4AxTiMlU9j9vQ39(_Xj;tDve21vU66X1qv<&HAuEJ6u3Le zK*4vD{XuUdX||WVVzFGq5?te+Y`M{kDh*JWT|^vQTi$UPm(>pIkDty`xR>SM$pC}7 z&>KJM2Ziv5jO)?qPv+KvXEr6wj>`AGeo%-NiT0#LAlcI9&x-b}c%i8u6oPIdjmL0v zT35Ex7OE?pDC-A>D5Qwu?hEJ*yd%=9;4NqeCF0j%MiZ?sk}M1TG1@`F0(RPPO#hAwqgjt~PU?;%@fL>9tNTDKlrwkPQHmZR;kx9cfPMYAfSqgWdRTa*0tsy)y8xQ2b;*Fr)jD)R!S4BRaG@R2 z25&=uOn6CMCS0r3B;aizzncaBq)2#Jm7s2wy~)-6QN_lcHc*B7oxgV6eLcx}4(SW8 z(|21FYZ~k--)&7)xhG*!Ipm&!Z+8WE2R}X8rieOFm#_DkXFM<$GK$RsZJ7(9Q};HR zZSk@Llj6~O7`w8a8fBvFK;^=mU$vBjLYaZgt_msK=Na-~$Y}$G)f5%8Aj)X>Ccy;- z$=BsWF(_jxGC-pehA7@$np9cQR1mx)yGG}`oZ_4Nk(CYQBy;M<#hg6SS?YNQp<}Q0 z61jB#<4kQXBs{b9=N=#$x%DkS+eP8usg79s_J9a@{u}#Gckbbyn^6H@o}_`){AuNm zYgK7vfje@f*u1xL{vaiOZH^pyLDJ=xCFX1vb1aepWk4BF29yD%b=I44NT-ph155t` XkN}<8m2BmD00000NkvXXu0mjfygm2D literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/location_b.9.png b/TMessagesProj/src/main/res/drawable-xhdpi/location_b.9.png old mode 100644 new mode 100755 index ade7b9ef908ec6d727b5eeb54a204aadcadc9d25..3a59e957916876dca5a11148d1862a4501325bc9 GIT binary patch literal 2431 zcmaJ@c|4T)ADGWo3;qoF~@869Ih%)}gK9?Uq(l4@OPbL1#T zIZC60%3aciB-e%q-fEghS^cg5L8ivIp(1u1>EP6i-gF<7FD9Mf0M;qdeuy~9y?DGYec;kC| z;q6J}&%Pu(0-OngJUkK^7#N5MG(d3q-bl2GiOHG<2BR-Q=nF&~kS^5c2(;G~NPvLB zXYoK5mjhc}P7=|3s3d0%8Xg3o1=6bvb(^N?r+YAvO8AeH+6p=|aSv;edR z{*Cv43JV-WJOF7A2)O=yhNN*`+H0_Zq*BleS?g+%jsd8cUvCH(cKd_(C2W-J%E=P zb~j=-DsASY_P+0ZHyDVgu0e-SymmyjwY4o#k<*n^DG#l3%=2!F#f=B+MO~@s*Bf*` zV5?-%@y+OrFj$wu(t3FSY*<`Mgk#2?|L!whxL6t!4cj zV$`N&lOZ??!4+iXEH=N|-Wk%gFYL@%U)3L3CauS86xFKa zDMz2xQMqV`*}kh`rX6yp+pnvdtr9r;x>ZeI%t7DKcJ2rWD5haG^Rj$X`&;4zn7*~6 za*rCHc#Ujl`4{QrR2+tr2Wni$;?5%WmRuiTq^<;CI<8-MX(FvU@a0IW;k72#=+mwz z^q!!tf~p*Uegu z6`2t=+UxTT`QK65(dYSHAg z&C&`*d2#5;9`v1J@3e!eQW_J6S2S{&apO{9&m(G-3gb<}OLMYcQ)K0gt&%KZG(GhL z0k-jDgAMz?t@17iCuYQ1?$fwUE_)HYT>Q|nSaUUL>|uqCQp<+fC-nL78pJJ#wEB0i zj-0XW7w1@lk0KMP!L3_mONz@V(=qef5SEj(1+$KwaJ|KGNjL+Q|6@;DVMl)_EMxiX zEbLCc2;QcX1XcLmuqA1}dUER~(EnOS@@z$usO9P}V=jh@8sYJ9^94{!TnHP{Z1R>J zFY(sGZC!xs%P~^jvaF+v@hONahCFx#*30%1L8k<|3)J*?P$;Y-_mTZC6G`tfm#=hZ zk>0wh;jEXZa-z=Z8HUwJMY&a%s5pu`Rvx&Z4HVMrPRd{GyS*avUd-^3%C%_zWkM|P zjvG8(@l^8RiFkOmcT3b@8&r9w54Wl{vLfJ6UJ`$jX_Qt~l{xRU z@cxap`UNFso!%*@-R0WQ@aV|=-femc1vE3$#pvPWjm&t~RwVry5c-!AE6>bP&*?i{`xg{R0R52je> zR{na+E;)f@K-!68f|(sVc-N%~r=C+)B8M@*Cz+G)EBE8`)dY!Q#7sZm=4GeAtK*qt z00AgZ-13`KW%ab_c`biCul{`99kxfoBNpd4#~XA*jT}awKRx&`aoY}d~L#zC8O$q{f_#prD~CaI!08?hVxAQ=Y@7kvr@IZ zS2r%M?3~L{Ct;^l&)FW{{^xS#(+dytYa?ak-YxG6YPzu8g!H~XNIe&Tioerwr!%IwE6Bq@jX1c0Kr?j(AJTjYqE&7N~{KB>(3jJ9S=;! iUd&$RGgm+EeF8C1{$MPVHQ}}POGL4-Ar+dR4F4PGUKh#$ literal 1053 zcmV+&1mgRNP)OH$V)+<%2O$z@+i>O{+#A}ott5*2$$q8dq&>Wv=Rb*snD@=dlI zFR_n@8TKZeVyoK;OK^>QVg4PS!LxX0X+YIGLw0yxVXt>n>{Tf4NB}R&-$faL1=Zj` zZaY?R3}=>X$BL}c9R>%~!{|3V&Q#f|B0$rEA$pRnxjrOa2X%WtVxOW}<$(T|ON)^0vP?+6xL$U?4AxTiMlU9j9vQ39(_Xj;tDve21vU66X1qv<&HAuEJ6u3Le zK*4vD{XuUdX||WVVzFGq5?te+Y`M{kDh*JWT|^vQTi$UPm(>pIkDty`xR>SM$pC}7 z&>KJM2Ziv5jO)?qPv+KvXEr6wj>`AGeo%-NiT0#LAlcI9&x-b}c%i8u6oPIdjmL0v zT35Ex7OE?pDC-A>D5Qwu?hEJ*yd%=9;4NqeCF0j%MiZ?sk}M1TG1@`F0(RPPO#hAwqgjt~PU?;%@fL>9tNTDKlrwkPQHmZR;kx9cfPMYAfSqgWdRTa*0tsy)y8xQ2b;*Fr)jD)R!S4BRaG@R2 z25&=uOn6CMCS0r3B;aizzncaBq)2#Jm7s2wy~)-6QN_lcHc*B7oxgV6eLcx}4(SW8 z(|21FYZ~k--)&7)xhG*!Ipm&!Z+8WE2R}X8rieOFm#_DkXFM<$GK$RsZJ7(9Q};HR zZSk@Llj6~O7`w8a8fBvFK;^=mU$vBjLYaZgt_msK=Na-~$Y}$G)f5%8Aj)X>Ccy;- z$=BsWF(_jxGC-pehA7@$np9cQR1mx)yGG}`oZ_4Nk(CYQBy;M<#hg6SS?YNQp<}Q0 z61jB#<4kQXBs{b9=N=#$x%DkS+eP8usg79s_J9a@{u}#Gckbbyn^6H@o}_`){AuNm zYgK7vfje@f*u1xL{vaiOZH^pyLDJ=xCFX1vb1aepWk4BF29yD%b=I44NT-ph155t` XkN}<8m2BmD00000NkvXXu0mjfygm2D diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/location_g.9.png b/TMessagesProj/src/main/res/drawable-xhdpi/location_g.9.png old mode 100644 new mode 100755 index bbaeb93c431d98e14866252241d58402d16d7287..8934991096de03711a31cff2d227159ff16aafc6 GIT binary patch literal 2481 zcmaJ@c{r4N8y-j5m$V3t8bhZjvtcldZN@T(u`gpijhPpNS(=40POGgX9ofZj)D+Un zBvOq!LfHyA5ynY0rE>JimFn}2PCDNoU*CJZ@B3S>`@Wy&`91gbUhh#~Z+A^K12qr` zq)G6=`^!h~l}ANM{?4s~7|I8It}BTfz>MK0li2{snaYd?AOt!&7Vrni)RetlfISGL z2&Dy*xFn(%hQg%7$SW8apU#rAK_GiaK8s9A0JxB7AeP3!Lf_uF4TaFCSZIh95kX|( zfH<0mfDHr)yaOqM1d1&c>gWKm=VRmobbw2S@ac&R4u+3~e$mCq=PTQADC7%-n}CJ> zofL`a3&Anj0K^JrVNO9Hkq|T*hP1RoqmjEIC$EL^|7h}8%YWCjHw;IUA-0*pqZVyvxP(0CNy+06y%hD5qr+1k3GY+P*- zcnd2lR|_kfRW6=M;n4vGca=;1hwJiP?ur%YEO}%+z@{YuR5v!04*60thW7njY`&}a zl}r78F1Fw0!sW@pR~q|Yjb7c7yJuzk&9?HzH{$~gx!c)tTVJ|h4hDggwiEEqf&7u# z@`R8ru6iAn=@FfqPOd|&yCZf|-}sw(kap{iEcCuTRg zX83!W`ZnvTs7@)p`qZSlqhIf8{!Onv%jLEvPb!{tF=K@()1^Hm;f`~%<-wWKg1O2H z%5R=#?+yD}i%pL1);(5mAffH!yXcNCwpMwX=n`qETx3+#$`u#xq2-E9i*7Yf3p=OU z2<_4l(o(KSyDQN2bMK>Ajd24>=&`Ue)eEhX>5uJqv%FhP4}N@<9-QY!TB_E2s+dn` z7x-#0x~KfExB;w`;=APe8d7XxxoO7L=M~{yHEQJ^I~qBcJ;VPp9I?v|_;V*g7E#9T zXinZ#-;g&jZBqFFr^#^4*k`2n;RmW%FSU>E7Rk46_JLa$(_X*6UC@Iw6M4aQol6Tm zJU+|lpJ?=WkFj%2(|H-6>n9mtSxH_a_w)tN&^QN9-N>2UTU2x{>Orl@$P4#caj-M& znP^S&FKn;A;Az?Od#DEWm!X-*Kbw!_Favx%cWAmQ*Yw8Uw3qhx#OTJF?&nq!K9n4} zP5L=HiG9l9U?P@ezh|^5KSb z-a+JIJtl_2@%>{0FBCL=awx?V7>;sb0YS|r!sCL>cEzln%0JFNmCSk@#Bh2^HN>d> zcH!6XmzqKVTxIXPLIl9uBGU^rud5CVagD2qC^%hi@YJEj+LB;Me7IQERY5f$RxUGVC5$8O@l`3r?7(b|MxZ9AV7Tpap2p*c4y~x4z>o3t|wP0>KCwy)IA&7=_2I>bNZsi!-Ew!dWHy?Xcg*LgbD@Yo+Rwa?nZS)IAK*868ACLH2liQrfdJOLz z8mRWJOH)r#tXuLNQsdF)*S0GwFSrZR6^1v<9-oOIN+xLp>{fA$2a7h6c0sJD)ke?> z8*@s4hg1zBSnGo8a}s&i(J!kCEfurudT!KIXDXfkTqZ^n+cvfGa;^&0hjZd*ed6Ct zPvngC8q!~Ip4W@Y{MOx-IA7-3C#?S|BjE)Q!c)jvP{H2n_x;Fw(_x&x zMwypEi8$6-s0Jj<;?{GID~!Etsf|ZmffO9Qx=?UYidg%o`a!jqu<&!4g7U&Ou7AUA z!VoMQwNPXDJ&`iR+cFlzWzY6XKP?QxtQC*CFjp&OX?) z#rx}{bsDjQX3LhX>qC@gvLWQ)6YkO0_b<9lmgpFnO|}_@si)4sCZnVl-~m*1c!Lyj zZp?Yx;+TU4NxHCO)&jhNa0mP1&}ZD6f90IqzHHqab*xdcPkq|LDtE0DPD`$n~ySJC^QnCi*-@Sl#=`BE}o!^xq zD2wH(Y27Yu^?8d{MF)k&kt(A&K4<#uBni9609itj@N$7=XqSd?sx*f(EE_OR+2)PP euf{K{B0v-;$6Z%HX8gYL6Gd?K#$R;VbND}?I3*ka literal 1105 zcmV-X1g`suP)c# zo!Mkk)m2-`W_t5vrl-4SdI}28Uo4H}>nkG*w*6~b$t7aKQZN)K1xkUE8B~FSAu*`b zS&St<_p!dM5PQ0EpFNoMvA}dOtB4jFf@{3js(;qE9Ww64ck%|*{FedNx!%D1@f+;k z)HO@uj~BD>deCSiXF)CKKQ6T7w+ttfG%p3%!qH&vfZF^SW!-NdvGS=xZjekV*N14& z=3`w)%-f)n$HS~)u9Q2Ve-S@;1KR`1BKYl?hmTgXRCItj`eOe8G>uPXSdz1 zji4N$5YbZt+&_R`-(=&voowqYo~G?M8{2uV-&114T`0Dlb>IRD=?^=h$Li_Cl{!{W z#%;MBGY9?RK_Q<+?Mc}{GDXv2QHNsxcC&a;NV-uT9>dM5E(}A8uGWjP?We1Ga6N2yH-p3V}yf3e%tDUWBRA+>rFLU)>jcN5)X=!PH`Vp zp?FX=iCeA?y*9$ogLx1R>fwAD$!4U8#ymhU=J3~qgQ6H$2&Q_gx<+?8NV?iI3EYE$ z_pL;Sv&8VYU2!VCe9|nn#`F)t>=xjVW@%ZjmM0%Iu^W~)aYvan90RrSW76p2vO&T# z;n}3hnRl$!O9$%NYMp$G3s@bN4V2x4onz~IL4ud=|NoI>Spec5`(U8(x9emWpfD}2PL{!K{wCddpe8?cduzwtlf??xAwj3- zwkBfdo76RHo`h@#x;(opclLL8B5O|5V3X|VYP|d|3Sig_)MLoaj}f;Xz(xNj_XC2 z%Jn^Wy4(U{K;lR@0 X5&!Cg7{D>P00000NkvXXu0mjfyKxcL diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/miniplayer_pause.png b/TMessagesProj/src/main/res/drawable-xhdpi/miniplayer_pause.png index 38746874fa2e7c59ebde583cf9b0537b9b3a566d..556aec50007339314402b2c93069ab46ab128733 100755 GIT binary patch delta 272 zcmbQuF`Hw9J5#iwnTe%=g`1m`xsjovtEq*Np_8+*lYxtqtAVSbk&%)@MQ(wwua!%F za%paAUWuoRtrAc~FC{a@$^@*}(g2s<$%~i_q2{~bQlq3$ToRO;W|e}|d<$1xdME2K zJLy+dJP>DKVCeUBaSW-rmGtZXe|u(KLt*A#M(z%edq2_)Cv>qSrJ4M!ci2<5ZokLm c`OFz2f`<}5acIW?wJ|Vwy85}Sb4q9e0K(u;rT_o{ delta 272 zcmbQuF`Hw9J5#i=k%_6PiKDrNtCOLjtEr=fp{cW(iG{0)tD}*VqluD2MQ(wwua!%F za%paAUWuoRtrAc~FC{a@$^@d<376ioGg& z>x!$_i>(q+L@y;X#R{s|442-?i5|o-|m4e#>6I^;H>oGgk zU#!lGWME)S@N{tuskpUen!mP7phWxom`y=Gy{!8fxTQ7)=+rQ0cYDr^=t)aVTw@x~ zuyje97LsE6ez&qZ zM>1ow*p4HK!g&*XGB{$~9>|>3`;x^`r^dYGfuN_BmDat;T`Z}l9$xPiWIjJJ)oqlV zw3+8LJMY1|g_6Igyx%FPAo`i_WKfM#t*?EeXxrkaLe>_ou3e}9`<_hu#N{m_@4>%Y zYt3N?+o!$n9&j0n-1ppHa4&&TO$_i>(q+L@y;X#R{s|0+-&&i5|o-|m4e#>GhBKn>oGgk zZz%Yu#lXNA?&;zfQgLg`ReueaK#}7g&7H$OEsxl+Ex|EEEK6sNPUNX8OFE98@QR3D zbu(ackl2+oPG&(tr_wTJO_{RnPjqzP2{+FB%d201OR6$1KDW}}H~-n(`0wXxpSvF0 zv_4L^bV7#K@7gOrZJJGX*&Hll4%^rvbnSwMY(l-XS%T#D87?kb3K4TpJQUe0#kkF_ zpp$n?2Fs7oe%3pQyPAF<`hOwBdRt-N47Y~0iXt0L=T&E4=GgH4+^^ei9$clD7`H`D zJjkk8*vk;jd_s6rH(xKqd7CMocLXN=+53QJx3~#+TkXR5D%QN(--=O;?`I@UnQp@L z?V|JNHL{FBrC%TP3rop+%U|aItoM@JYpi5 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_in.9.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_in.9.png index f5db8372dda83faf1082e8700e0c2996c6801fa6..42b96820bf641bf0ae8d3e89cfeb3fdd5e20db47 100755 GIT binary patch literal 2081 zcmaJ?dpKKp8ctDli88b3RF%^xlPZZM5~Rr@iI7gCL=beWNDfIzP9#C7s_TwRqZsYj z-q7kL4ArXXuF`g9IyJ3QGp5varn;&ZZN~P38agMP>g*qD&vVZCU7q)Szwi5f@ALeM zLxKY>%7{mXt*)8qxuwE6wQ-whZs&u{rMEDD#co1Mo`H3J0 zD$b4zd7}V)%LtMlF@YYy^VhtCsTxNuUad2NT6IDoS_h3JMSl zsi;UI+k-8qgCcQIrUDGh4CV?llLS6OljK!v>r(@Cy7)X(b#rgR7=r!n1K`KZog5&@_ zj0B(~#WEq3uH5n#&t{WZGNpSkt;p3|K`MtMGeCtn4HPmJkQ8`ZGFiNGF5WBZ zz2gd3&c$a%E*4G(t8eUoHF|jqc8`Ag-nQ`Kz41XA>~;lgYjlAcLLiI|uo(Va_3-pR zl0?>#)?KsX8PiUOyIhzW7j5y-M?}d_6NapCGs&HZ6Ls^aer|}*sugLrJ8)aV&tQy7 zqZnTvx2bPBR11{kS$S?3ZTK56`U?8%fookZhsQFKZx^?2A7JfBOGr#Rxeg<2?WRt7 zy;1g3l~~h4n(c`-o9g$6{+cU_?MIgLDAjNLC+x08b#T+2DBT`$`T4$4)yUyOmQ%Ki zpy6s&T*)uhR@Tm9k0%SmcDwy~O=S}_$+yHw^Iankv|82ens83V!HFY+)|u7FlaJ!6 zb@WZ2wXY6MUS~9u(p4JSGZ?ev-FkUgX?gka2b-hp73Tv_1Z@s_aAA^LNsmCFU;oxW zl!|EKg~p@l*-JkTs+JVWo>T3w7m&`Y_J≶V>etR)3T7=-N_=_AjFj+gX*iZK2vr zmX1&7>f@h><~)kXH_Z>}RBS^2pm_G#)BaNP4Hsy?ej3w^+oLPvnEb=+uqWC7gBU5HaF=Dcef^bjHE$iY-;l1rLz(?pBa5~f(K;9p+)e$#(|2~6NG0iQXc6MVm(?{b+A1Nf+{oh|~6ItU`B7M9wj8*+1Oyx~w6@JrLLT)#ruE#LZp#s6(_*s)X%| zP_aKPAKkh3aLqOe=lIq<3#V=I)k%_X^8Jp@^hMte5|!7YaX*Le2^USy<4n!-=2zL2 z)_AqnyT!h$IOAu;O0Z9BblR50o5<^kpg#y69CXWVxk(u2-<>t;esVut3Y2f~96NA` z@-Ot>#`QZLUNr}IkF-ua^b4^t*}5?Fcj}XSZ0Yg!z^7wNzIDzO#4SH=v{LU(owS~< zo|Yy|(iVI-dTlvZR8fL_?K$4tI^FeoDL%r@wdr)#UG_vdc30<&`CUtfO|;3XNz#0m zu90HJaZb?Ayoj1Q30WS^y2^1~yWR*ZL7=p4+By<}+BWKDa;7RZhOBc`8=*}Z8(BV%OZ>6&ASpiN3mFa%8Y{4H%p!y8gzJF zaNC2`73Ttba*WMu?V^jx;{^w==O_2CIo7lI@l`}h#j~&16z@+$TtOw>5(BPe+55DL_t(|+U%SQY!pQp$7l9+$5V<#j2aV3h(Ym@YDfu+;wxe? z#%K*O8cDEdj8qFD7OOOZSYM~1HZ+u`Kzgy&K8R8SqJbzOsfn5>)&x-@jT$BNuI=6R zZtt<<_wDVS$8jf~b@$HBOgfo+G&}$O-S>U-?at0nQu>8uf4!$f6#HOHfl%fW;CKCbzXJ z_V{nJYnm%qPW}svf8xgifdC;u!MCsk}lwF)JR)GTjRRxD{rgl0tmBt8$QzzTDClM z?E}k~b}OIEzBU4{_m@|IAUe-LmguW`fb`Kuqgrw<@p!eeGh0fM@@ z_OW@@D=T|7Rk>_3q}T=L5sDuLs4Se{?(H}Ry*18s8 ze+=_DYA^^BF-l1gT7TERLxY<UzF@?BNDCn70AmbVU&r2q-@e@Jt&PRv zqg-W{nJ^?u0tjPg=f1BzZSSv-#S;Opt~F9HAkB_gF#Oxvd%kGe)w@2PNQAh$`pkkc ziZI@6?HXwDe(+qvFv48jj~E*0$%J9Xe~ed}y+_(Q`|ANllp7FPFv2Mq4R7x{yr<{m zOn#?s~x2tu*LL@*Tof2mYJ zj0MM!gGCsqjST(HoN^89Fn;3XFQ1kQ2-HF;MXNA~yUZC7vP{jp+)q63=?H|zPZk>j zYCtWh3AK@Ve!~$EiX<7}8v1X4oblmo7?|a$BD%z>x>tA9pcd4G+DLb|;hbww8iijV z(6|5dAC^|tJbLuYW7~ZrV}nise>meCJ%)W^-+K=nIgVOT6G<+V&mK*3M%SDNE_DBh z+0)&!!I%pUHx1s-faA`DBfAN))?V5*xF*jEPc{ZG!*KFA=>!l+2wlS$jGVJb-tKjo z26ha>kZqiSS;A*70H843L&C-r6dk7bqLzy03kyD+BV@_SGJP^UrqplRba77L^;&~w(Brw#KLr>7)=CgJM_{rr00000NkvXXu0mjfEN_oi diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_in_photo.9.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_in_photo.9.png index 248b9ba2b4eed8d59bb4fec11906d1aef71630c9..2e6c9da2390b36c34a57d0cad040c2b462f374f7 100755 GIT binary patch literal 1930 zcmeAS@N?(olHy`uVBq!ia0vp^YCx>V!3HE<^0E&DDajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_cg49rTIArU1JzCKpT`MG+DAT@dwxdlMo3=B5*6$OdO*{LN8 zNvY|XdA3ULckfqH$V{%1*XSQL?vFu&J;D8jzb> zlBiITo0C^;Rbi_HHrEQs1_|pcDS(xfWZNo192Makpx~Tel&WB=XRMoSU}&gdW~OIo zVrph)sH0$HU}&Uo07PcGh9*{~W>!Y#3Q(W~w5=#5%__*n4QdyVXRDM^Qc_^0uU}qX zu2*iXmtT~wZ)j<02{OaTNEfI=x41H|B(Xv_uUHvof=g;~a#3bMNoIbY0?5R~r2Ntn zTP2`NAzsKWfE$}v3=Jk=fazBx7U&!58GyV5Q|Rl9UukYGTy=3tP%6T`SPd=?sVqp< z4@xc0FD*(2MqHXQ$f^P>=c3falKi5O{QMkPCfHgq$vbTf6dG&FQIwKO#~c62o|H8!>| za5ZtUgz0t3PcF?(%`1WFO+n~&#HkmQ6mkoIHoK%2WtOF;xE1B+DuBIgm5JLe<~YrR z>P^Az77Ltu^?{Dj2SqGWM8kxDsRzV_CtDx~p72xifT_I*n5=)7={^GHmVcfujv*Dd z-pt7M5D64H{{7y}n`N<@=G==kHf&<&a{aonqe-J{-Z#EYpS&+LD;Q`kI`JpyBD3(4 z6&)RmgqF0cItGPsg{6t4iKRFSc<^t%6nlN{&h5q9A|un^pIf(U^VdXu9u4E~f9k*2 zzq@x_(aiDjoZD5GITVla9l5rDTjLSVGh)w=t$b^rd)K)%Rrg>10xK!49d~Z~l|@cc zxXSgXvsSgX!0ox@GG;kmInkiE`IV*7!biQ&#wlItl=PXXQTJLy@5V&S^j}X(Gns?a ztz^D!6k6Ksc;jAkS7CpA=(|tGo~NZAhNi!MU1X}avgB6kDnmPl z1~r|z){6xi#9sP+UAA#s{9Dm-xho=XbaX1!10VhV_DQV!iNvx?C7)ggXig39TYvuS z%y8BK@81lqy-D#Mfq$2LxsujnS#qiQ>_*|e@%-^|J1e8^)YupO& z&fQ!s`CQM~;$io}m3&OHvi;uOpN{oN)g8!TsEy<_a^t)G|3%eBwJQ#5XB^xUyQ-+> z{&#l z9wo+LXS(X{fgFE z$9BrFvE@${S*~mxn6Sb%iSe-ew2Y`l2OLhzUNLQwW^*i|Cs%KzF%U_ z6@i_p+ddiZm{@W!qfYn6j@>Wnu6EaKxF_8ICG`5W_w%Rke$8^st=FSjtcf+Yxz8?A z$^P>v{^@dhJ2$b^-I`ik(w`XLv9aRpx2A51;C7*1U%x*)Te(0+Zt#AuG^HN< zRm9vjdy=v)%A)#dN22qxopbswb}8*%xIgDcTFCzR+_xXf>i%5%^Y`f8cGIUv#ZTQk zxak7l%fs>_dCs?`!_xPv!RVT##A7~*WwO88#5#JTXR{TCR$OFtn7hlF zQK3X&;fKQ>34z^*4{l*nxO{nakfuSF<`X*&CT=^Qc1{M?VDXhvcWa&dOD9P%^g1YQ ykZYLuENK5ho`yTGVihfp>xjR4D%tx-Fo7Xc;`WxEOJ}_X)sCL7elF{r5}E+k@D#NG delta 855 zcmeC;|G;M08Q|y6%O%Cdz`(%k>ERLtqz!=Bi-QeF{@s0D0Z6f=JNh~@Fswge&f4{I zqM}AUlc$SgNX4x;vrlJV2@q+2?`bqSEP5sX7kz<1k%iiKIo`#H+Ov~qaKzA8zxn(4mox%t^ED<_+5G@IKq zk6Y1rrpou-Z{DJ>&NU^P0Od(@9*>PpJP-1_uJ*^`9(E5WK=dPaGRcGysWTkJ)hkD znkNVLRhL<9T`ODou6~O4`}Z~ywk6LleP~&|^>Od9KQbJroQ{0C_U_->TAup-u^%#C zNb@8xPL6-^i}S-__218qUUvV<7JX}O?g0idgP$L_$!y?hW(}#j+_v@i`M=FurXwSA#o}A`iVIR%TpWl+|Fjt=2?{U@M%>V7{3`6|Q}@;B>!aW+`D(2D zp6%M4@acvVi%90S(&C?wDuP%(wchOKiD!8x%W#!8P=H!^$NE`tBC!+13@`5?~@yj=*>)$_Bpi!G8Zu3iSk5LVmP6AW( z6#=cyAI~hl`22A-UmD;33e&P=t>4KxOAlz}RP`=`2IfBwa_Q^I#khEJMXy^=Ad)qa|U)YR8J>$x}<=Ipx?^hY*C{?#L< zeTsKh&6yTpnPBcsNW82l8TCFsFBHGpSCO-6j75=l<`?F|5@Y%%;+^6Dx6}@_X z=?_zfMRYQw%hlVjxD^hFL@rQl?6#da>$^x;4X2kt#fk&(l{{<37s;x<_RIMa+`!22 Y-;+dt5~YESgnZJxYO{Sh4-F?3|hTF6Vik_j%v% zJ?GmKAGh3Z8eESWKgNG0nOpGD)*SWW*3q@4JKjP^{U(8P>d3W#kYN&taLJzzt!P(oyrFkkD6sJUmG z%>-UU$V>_IH&aQPctDQfFu(`7EF%Yk0D%C6czl5XiU1-xP$Zi}y#f}*6Y&M2$Ug&b z9wrqHH>HWR3e}rf)JnokCrOKl&9+*tpp^?^_$D?a6bd~Wk&!G4!6LSzq~69tiMeA6 z3YakBW(#S?P{5<8H(;Ad36paATMCHftt?8sDHByNwoPwgLm^(2PtFf41Vit*_fi4p0T1(2^201MZc zQ4?k*!d~Mw8j%_$NIhzV)d~rdQUJ|nlSr|cE91#kG8JDcgdinf8Yz^j7ITF>4qwRO zOL=2l1!mlgz$iJ!HT}+&kIVJ60%D;eD`4Eb1vaU03;|xJEHaPpML4eB8?I@5FVb!Tdpy&(ZA&fQHa?6}-Huajy>?@dH;v}KNUf0SY_|qVlB0tX=&ik_ zU*6nu>Y}Tboi9yNYXhIVTAbcz_vpNf^{Oo&>;Qw5`G72>+*j>?Q^_nps1HaPIHw2+ zJ)86__1ULzV!`p6CEVU;xxb*tei`Vjy#g*B$Zvl5xZ~w$=Vp`G zzhc0J(Nhx*fhDPUkB(mX=(etBLGL?^g{?ye*H5!D1FHf<&P*D)1j?%weP@gRz2u|V zG9q|nbCVnV9Qu!ZcyFG=WOyJ;DT{B~9X(Zc5xZHxh~?-m3Jz=EvsO^UUtL_KxM7@e zyYT&3JiSG&8a*?4+UxP6}Lz|gI> zPTJwRgzv169{&0*cR_fJrK9Lr=-q9z24yK?tL=Ja{gdQu%Sl;N>&h#;ibD=0HqKkJ z{^*gN10`3OO)tc?NB^F~T83}~zDHEIcDRmLFS=Y9U$G{()$p@l(?6;zZLsQrs~w)N z$WB>2YbHNFd>*HC!g?|9!~X4(1KQ+DL-0O7h9e>ND*xzb`|kO*gfG}TYd?>DEkB6& zpnOJ#&!kvJMoU)KAuc!b%l4r~hqIkK|LUCG0Zr69+WHd0x+*@;`)S?b{_|f9W(hZi+JX&CCvb@=(8ju!moGd9m9)5tmd zwNU;MI?atE=f;I$A z>8M*gaAKX;GM|Zz;Gg@O?-2IxC58CkI>j6ma9^8rG|`dVcAwn1Y&IaNTe{8eXb<8< nHSVqsch4z26JN3tdKunGb4y;$K6ngrdu~#-GEPw|OWpooKv){_ delta 884 zcmdnS-^*^;8Q|y6%O%Cdz`(%k>ERLtqz!=Bi-QeF{@s0D0Z6f=JNh~@Fswge&f4{I zqM}BE@y@E$n_m`v(i-n|JT|{(Q z4?1y+HYX$|ChA8?thu7c<>k^VpCP1ovi6x?x$*h$(=2=M9iMmX?AwFV6*}9?cYpr< zc2DJ*gE}kzU;ZG!zWHjI%pC^7P<1l~hqYFFe(sliTW^2O@WGEyVQU?lMIL{M$q)}T zdwpoffwbZ?{Eg4w@7An}DY0bicy-X~hmq?=*Um+kJPzeEo!@XW*10))U95z)(U#H& z58A%&t`m(Y8Nd1Z#>Y1A{$6D?ZpUbO%7z;@=sxm1l5R2-S8H_+`O?CTz zs|#$Hwz}+a@CW5B*OFBAo*bK@Wc;ygQvu^IOND9m;+JlIFBFV8^TggzSR>n+)nrn` zrlr^O?R<{7Hbl`cp)--O>555;G%67iEXfmVXTTM~QmnWUa{p0WawwqnGJM4jR z@#o+>>fg`uoT)$Lb0+NffzY$h^0#jMaB=g4Qss)jC3jl9^1~KPUXd{O*H<}55#5S> z1`)mBizkEcoezGc!!XN4*1Nk?)}D3M?ETWYd0T53@9Mr?sHyxyCiEdoX9%m(+F307 zd^%Viq8FTJO)D%iUAvB9rc!THskl^YT4&!((eC{k@eL6_gmu1q2i=!w4OR)nZ-9z}#4|^JAEM?svcCJkRsK-}^r2-26cQ zgC<7SMi2W70|NO7Aq)ypgs={i`4SO|r^BFBA}Pp*Ks-EEQXW46P{5;sSfQALSZ-=Vz=Z+| zBACF!u%t8~PUxE=12`%ELHv{iK1qP^JOKAlkwF0wpy0t(qC~NrtfC;^>5{>=6;F!BqAZ~A=f|2QfOqc`+d}I<4{N0tw!tHZ$+g9&A zSFn99q;0uqFd4M2vH#WRts~Gqy5$Gkf}0P<2gIP;WuUF+Ycew+5d97&of@Q?dVC=v z(UNP~Gyg=ruz>5U6RA5xOP`&s_o}oEc}vY_jK*;=V`m)n4Dt|B9FDztai>GJZ~oM- zM=R7o=iOGwVtedmu0@qYcggp8>A2OM*`YUXFPHVa{4VLyt)>T!(`9A6)N{nHjw1m3heP!{HM@HNG6G*olnfj*k<X8hnjzmr>?Yy z`u%zDjH`LYl6F0~Rk?8`+3ZxG{90zMzJS$!RWOX`>gq~sQogugRx$~!56B>&?c|p-`lW~_Z`WaRZ(HhNvEO;GKp0N?Q35Sk2LpH zPtoWXzqq)!F0_zl-ZANUdBKR+=d}Dc*AQ9HIDBQ!I&yu%`LEq<^-cUn($nEv0iC_4 z67Jo;;yj8tscel2D7X4(%;sntF@X7IF0=Aq+PRL5XHF&=4X4}PdY6a7%AOZQwV+X< zXU=}}1H4jvcjND2fyZi?LKw?6D{biOxxP9V7l7*XYR5U(12@w9%XYzp--){lORm4Z zx#Z+`6c%Jx{!f{5tUX%#m#!rA1jc8oGC$Ke2fu-0tXB6&rrpioTN5Ae+8vF$Tuiou zEkt7p4j$JlZ#%gX;COH}%MxlBJlVRK5IncfMIMhz;bxTmq@8Ip9C<`w$`JF+DumO zKf4-#J|k=Q@Ykll(_Uy&UDC{#yQgi^)@#2p{hVY1y914$I9%)qE1F89Rjy6;D6I}@ zFIb&sLT0-M+S(}7!$H%d+AcI?#3E;SU=+jE7sID1n-O=^GoilRrqtB+&BiAq>Nox4 z^`-J+b$3Iq!|WW?HmJz`s|5r|X;UfzzpwVdUa!2A8SwN*eluhSvRrqk_|(HRV+ z@j(!be=^6&e9_8asUqLwVWH3}_6I(z)X~D!uKBeP8m&(Fbmn8_U~8#kp?-nY-O<}@ mWl__SjN-(e9ly+NSVTdt(;f>foU0~ve|RRtpI+@9mGK`>M{4B& delta 1501 zcmV<31tR*+5bz5ziBL{Q4GJ0x0000DNk~Le0000&0000=2nGNE01pR(g#Z8m1ZP1_ zK>z@+$TtOw>5(BPe+7a`L_t(|+U%TvXq8nM$KUgwd-vmB=cd$FgmaA|{}3q>3Z&LB zhKQ6aFQl2Yrps!qSgf^NEnP$g)e@K1ejqA}jedY4q07j%pdTx!gd(wAKinqU-LL!O zz3+R@(|PXB=G^X#)$Y6N&U@hDayPc;`+nZ%JkN99!+VI9fA|9?d?%VS;s;xI7>o>8 zOgsQ{{=x|%|32TQ0zsCS{Aa(?s5D(#JO`J?q`{mLkn9LBuQZ zfrMZR3rjPESuv9D)Kg)N`PiXU5iLuSGJd8tc9Xu9K? z{Q%6t;m}X#fB)(^@yw2<=CkL!FNz-rB%Dbw;uf9~f{Os3SF|pF+0n*r$CfS0sZ3Av z+!k*LG6%TP7y3lsr~$Ren@?;55!C`LB{w@W^SQ?ho4uZtn`bLAqHolIT2NCIL`MU$ z3j`$^c;BclE*3&^XS+(E2GoL@WWu&5B6P4^Vxp$rf4C@XRic#4s1~6qs?F!qXEa$( z4T9nS_N1qImm~@Z)S_$LBT}V{pIczbvKn6yg1iVnaO*m8B?^eB7T_XL6RL&%_T&hn zF`dMii?iNQMspX_we0I`OO_ZG3Aj>>tx2D%)0)AqG691kHV9`pARG`eK{$`ToQQBh zI3OGlf3pmNC=DWeMF|Cs;^M}AwSaKN0RqBJ0-}2>o>+H>k{~36WTHXF%g;WNzwv?m zSCj)W4nlfu`TBbwUYqwe)%8@Ra>VF#KnT^PzPt_h=hah6y-HP$@enGv7T#6lTe;We zqG_s?&oKy37p=K-%R>bSAw#u3LPFs4OE;}vfBw{_)s1eqYoTfl75<$YAw0Tn<*j8! zYnqai+}EhqS&~r*8`s{mwCc$R_X!ADDz?~^0QYRT@9tZ+mHPIjBqv=z7uFin?IQ^8 z5^Y{zkX^pH@PH>Zd6BYQc$ndLJHGuMnA#%l_NSxiD ze%Ah7RqdV^Lt$e;DG>dh9NZ#gIyXZCgkJ#Z`s8F=$M)BoYmA6Fq*P~l84Paq3m|`g ze6;ne*Xs7~h(yeQQfrMd7+?kw1_7(9$W`_Bi?bWKbZXQF`c4-B0{O+;f%>+AwsK9u(h$ zs6|4W9Kms&o1PpHQNg7ErUAnputDw8D^&43NMrnA8kRIJH>K$twFBTe=9V|KLQK@|4@%J3`f%H00000NkvXXu0mjf D2|&db diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_out.9.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_out.9.png index d7c2816f1339f91a2abe9fa4bd1b72b05a5b5f47..306d56769a8d3736f2f64059e4b6f270b7fc05d5 100755 GIT binary patch delta 1756 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 delta 1164 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 VpY}Yd6Ih%uc)I$ztaD0e0sviw+GhX& diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/msg_out_selected.9.png b/TMessagesProj/src/main/res/drawable-xhdpi/msg_out_selected.9.png index 65e00a868b7da73ec5a245241f873fbeb0b75d25..7f7551686d296bf80d8cd73d2d55213b7e4a9b7c 100755 GIT binary patch delta 1742 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 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/newmsg_divider.png b/TMessagesProj/src/main/res/drawable-xhdpi/newmsg_divider.png index 555f2bf134a68353e07411d57143380c82b6414d..935c3fb0f711b76f8f21333c75a5076383b71aba 100755 GIT binary patch literal 999 zcmaJ=O-K|`93Kl(B%woKb?Gry6t?rR>x|CeB)jvWBaZ31;F290XP)k$GjDqHY)8FB zw~o=tf}(Q}bm&kLd5VGvxmo%bZ_=A}clFRVym?>ze!u_cyFW8M-q(AsmtmMb zd%`Hw^$h)`o)dIlFb7Z3nq3 zQ+#&p8W>GgDiA{Af;3!>5;fJ>hOSEY*)`9C2866=?158NX9nm9Lm+X5oF|APkY!FB zl4M!D3i5)O=LI_CoH(RPvYHbNUZXFy5TBjTpHC>dxe7%=g05R(8!AX9V~(HhZM>ghoUVceFDl4hD{!uZsUd65&c zkXk^;`9Cxa+vtRp;i13(6izDZG33iIL2KBfgp-T|1Ahg=b;!F(@l+;iR z^f?(^o)01))srg?yyK{Lln^)aplxU@Rp5faS0%Hg8zWZ9GOU6qno>#71#3hq49QB- z)Q9yJ*FfG{2qV(s`iES-BR6Y>Fs7Cbh=V)Ow=fDpBV;w`?2FP-ugUd0`%>)4<*74# zR@ftjZe7vt$+qpbrH6Lo!-#e}rft2w^$F1@v0xj;O8Ra0>&w0!p~sm0j33Ld`akSH zR4(=pPCn?G+Pi*i_Rob$f75brobGNsqodQ0r%$%vdES2J-Te9J?dIP6ujk**oz4C6 ZyIoB8o0G5Kf4L-Qc-x#dUX*U#`wJ;7Hpl<~ delta 110 zcmaFPzK(H%3NK5#qpu?a!}=5EtX(fBDyoMuIC#1^hE&{obKa4cL4k*1BQNtGgT{LC z3Mnl&r%T2cV#2O=9&l4c)I$ztaD0e0suHT B9)bV> diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/pause_b.png b/TMessagesProj/src/main/res/drawable-xhdpi/pause_b.png index 851500ecd8363d112d4e358f597f5b8b448b4a0c..ae9b038134e9cfabfb2523355b680bcf6955968d 100755 GIT binary patch delta 1796 zcmbW2S5(sp7RD)oP(*qaFhD3n1QH0OfH;Z&1jtZEjDs|Zl!PWoVkn~IY!DfW5R8{?f zeedt3p=P2cCnu-j;|&DL>iK_#in1)Hl){lE7IyMf0m)XLTPYvSjhFw1b=l7k8$gev z#U))#1d^kemtvBx_y8v@(=T0ijE;-O!cPNu08PL<6NpHHD*}OW#^Et8NE`-@!Vz#N zH%o|2DVy=%ylyV8NIcFBO~ktq5eR}S290q6kN_NmAmDIBXS~eIbx<&d{6~lSUplT- z9>J|wa0(;1xWe5qr}1tWBL3enfZJ(|D_YjO$-oe3O9ZvgeE=LeeP*L3B2kZE`hwOxHFIFgGg0A*6jXV*c*Wev>j~Gsy=$ip?Z4lEpgb># zMd%1{M~II-jIE(M`s7I6!GeB6L?xxZkqp#D+EwO z_MU(pzpDAvVuJV4Ge`+smBFix| zQ7IyO1CVn1;-!L$pMeN9 zkauDwok2h8Z2ZA%C0UoB+jxesI3RfD24I&dxk;j5N@#r_^j@{-IyY}LNKk+@KjXYD)Y>7=uFvrHzEk~!D1)7E){cZ;ul7f9mk$&E6 zp*g8$n|`>tOx6;aJ!*BFub`^Bf3y}FOxwIvXwzsEP82U{h#Qw+@a2uXK=%7cB44OB zG9KIa*FI1)fm*;H9j4|gDJAQ9#k2`Hlr^N2{;8NYy{^0luFICjU~1LR=i63^%%JOy zbhWTI;%L?#X?!&K`sG6>*!q}n=H~gbov`loXKOFQ0Me6hi@FLM_hPB8Ap(iMuV1H# zsv79uT{bp+NnCS5v_I5z)_v$HJG3u1HH0BU>2uz`R}(X(8C0@3TiRngltbZ+6LscJ zI2Mip>|=e|2!q>;8A~D~4QP5%I=tUh$K$LA%P7i5wMkdA|Dly=G9MiEJBO0-u$K~1 z0V>V|GdPO{_eDnKKuho!Z4ng{zU%AA<>RJ)n+-j!RI@ikbTJ3Oeg7FAvh^2c$ zM808OWxaabc*L_JNagCSGQnTWM|LS+s~k!t#vvtl1Ke#wpBPkH98|O`=`Pr(EnD9k zzU5+zihyrd9(+>;GkvGd+p@0J^}2_7aa3K6H|y1$&mX-KwGaQn7rw2$Qy^43g2_Dj zwfL)Tg%lYsJ6(9})A}rsE^?}OlC?C9@|yl>2bLb#5z$bim1b?>wLW&$He1C;nG?R$ z4DEuX)r}VXO!Ua`_xH@NCAV1V{{UxVChXFBS#L<iPI$-3M`+xBNKZ%VM>tTOC|%9KQ0KWJv$@;cLSHlrPG{;qb&__vx~&*nJ< z6DFwjWyVXeHJgVe=Lj4u_N@{mVa{^<0 z*w}H_!*TsV9tv@?)^zV!97&)wXtwsqNjdVf@PxWBk=SD!n-FP>P2X41-<&3yp=ZyS+VwHX3Q)Q#CYc3;~r$^9P_Y; w1>4`;KQ7){+j-ox3rJF8Qf3wc4{e{xox`F(`|c(XWRFeGhu{x1;VJBY0%cw)g#Z8m delta 1453 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 delta 339 zcmaDNbc0>7Gr-TCmrII^fq{Y7)59eQNJ{{*3kKNSauhnVPveyO>V4W0HX>a>A+T z8IwT_)FcaBij)+JOM+6StJ-v9_5m~wdPh9&|C&jS3j3^P6jcP4pYf4nAJ!%`H z?a&z8Pz=$GYP6;3RD}?p%2?WtDuc;;=ly)|&--!jJ@(xs%4{D39=T9RBvxb5-mP1J~<)@ zml8#%#w4e^6m(H@R<@AsLhllxJJl3u(j8!N1 zEg5eIhayl|3<5>K{M!r;fknZQ(jFl-217!QUrhIpiFJ(rKNexxe1l;KQ!V6VWPluZ z9QsV=Z;~3nByGIjv$zXMW(ko$pkV-IoLBB6RYT3h%=ql94j#CIHcEm@^(N%JHUyDh zt7%OlC>G#=74?c@@34oO%;NZl$Tw$+KrJ24iK?rElN~FEYgaB*=C1v|{$eaSrQi7L z&BpiZFaAuUWxMjXT*Se#>@lW2T(W zFmdMl!#@R$#t2`~-EYqW`R9m@y&GiFYV!3x~}NzGrJT~ z51Rv$Y}P(G+ra)wG5`bb(2or@8PQrjJLl>AvuUSzo)TP9c#pzUS72XWYslojr18XH zy6%Dojf?D)r_m^DZMv34n!Q@hTI|csi{p(%CL7G)@FLLn+^huGb-aYaqx8?WZ27N3 zi8jh6UHFPA-qDGZQE}G*BcZuBMB{Cg=0k&p3a0~ zXz7>^sr=4!wNFZOrX_{30WO1+@u4FshpMBooQ9wrQr!=IT>0GHwJ;H1 z#1IY`=YE)&cz<@g?oR9m_u<&3Es-Y2?E5~Ge(lcFf+a+U6rfXhC1FtbY68bB)zIAU z9c4Lr=}Q0n8`_6Sfo1g)O{R5K zY}~GYHf4pfH(HXm@tD@R^HQ)f=Nk;*EGYNS8<&SAJ&)U9nbmHDCFLOaZE02~PVDeSl|J)faIwcnLnrgfKXzp+h zy4A5`QQcy=tkl@=>0(|2xmaSftmD;LItL<^uMVt6q&p4{|IFVISxOI9Gn*1h+Kdqk z&RAZrQ+@P>rZEU$cq6uok;-F=8I4S(d%o-UCrgTcW|q|zQ~ILa-RNSQ8CM- ztHTlbwv5(k?hX`BQ%|kIx_TPX&d!M{*P1dcjA3PYc8p8e>7I$?<*!56fs|gj*lJ@E+zaANHt5E7By(@lM zg-r#s>AwsYRfUpDc8lBVXClQu^fxS-HfM4rkBq2em{SrX%y&1D{NUmJ(PtHX^kvG6 zuF`V#+hQ~G#UNB-)m~+K6nykSGn)9vgXV*47!TK`kdWZ*&LhDO9*1nRmzVnr7+;LV tbNdI%Ujw87`yR#6_XvC6diYRIMMjw8v?n`hdQ1A;WZdySxW|}q=3ln(EYtu1 delta 1463 zcmZ{kdpy$%0L6bB+0eXMW|(n3x-(PETQ-|VsJI?ip-EF7Ys%zp^NQrzD&-Mz$!kQ4 zCYPuy&pSeBZj{GduSg${aBuhX>HgUt=bV4O=lppVWgbhZT|afg7AA%e0{{SKZ%1DdlJDlVq&TAor9b+vWtoJjO z==Ju4wB(pd_ze|F|1!@b_j= zoL~M5b#7^CWvOpf{H#J@;pFG9OD0D{2MRvt-;&&)&$i+aR!K~{4So7;m>`&8YAU-Y zWRbYvQ} zXz)+N91m2uFm#U%xq|li93ktH4y8d*KF&P8JR2(&`UO1UrGA! zQx#C&7e^DL-BcIOneiz^wX>WH@hyh1iRRfye3PC1UGIvxqy?+`2^5tMZ?E48@ve{(EcdyiVW#24wQi{XCGHS?@V+8yW4c z9B-J7^{)E3*8dbdZ#CE)FjEM(&lT!k2F9Hjf zhHa*OPrt zh!UL&nl7&K5DxLmtG{U}W43qSF833TgKgC!2EtX!zr4=~J3YP(*St1+f$1*}EU41f zw&og#8D%v0WqQuUh8Wz~tXIov{85#Hk*|#IWrPe~+OV&NqHmSAdew7_G%OE&Ei4n9 zrZ>_NJT2!c{cvmOn$5JFOU5JZ*fdNi4%^v_6u{<_-^zHiP&#Eqj%&#7gB- zNP{-HugF~#U*^{a_=A}KprP?*!qy%YR{_o@MY`pAAFNAOOuCgbPYf zMq&B+>6q;z2u(C8U&I??Jon6wZjkrHFTsrGhh-W4QIFtGF6wVr^CnWAA)QLIhhR-yr^Q|(lYT9+AtRd83 zTWDb^1`&Ix5&37g=HbuMnZ7<>tZQCVB2^ooXm$^Wmp8b8KSdA5WxJWU2HeeGsYD9V z#=2?|(?@pNOWwiVFRYb0Babh{Nyyy2Z;@JonSU0{agPhZ$XH=YiWjdJL7D=$B1gm k8mO_$S0gxYT@@q(@W*6lZnWsNeEVX+o_vB-OQaP$G~fD;(eBIUIU`L;>?8d?q)(4wHXo>TQ|GDl|8#TVD+NWV|!EY+`eC$7eb03aO{s zq2kL-Q)bSF>fp`h!YgK)yi?;?#gUn$q?o7OUEOnYZ|xt)56{ev{5II^p_m`}>RF}% zy0G29prWu`)cf1pM176!J{7^|k8LKEZO=vC8r#L(s123g3s&u!tI?l1i24$z-KKAG z^|R;S+AdnA+m2@an6>^Bi*`)vr>UD#T{XQ=p4{r&+xxW7y|1mo3Jh%)gs+! z^w5Qj@w(i5kM2Omy6vB)Ssi1(jzt%yWS0UpWjz(dvKr=Vp-tf;w)0ewYBH_o%BqGa zBkazUv%sFp`3e!vvu?7e?z;XpAl-mr&{0Ff4x=stetqt}R;FKu%8mtH)j9n_yklc# zQ~_4>Z3M6>Vc5m6xzeH2bI?dt)4K)thE2Nap|{<=I8WUYcUd!dJdE5k#QdqGZm`gB zd}gbdr|gTSiLLiDu3G#4G2A`;KyUl#GpCODGsj7`J5^ud9_stHnLWsA)k<)~|sVGbfaoyg7D{41G&U)JG< z3Nv9k^+7x;42R8k`yN=c$^f#mXiu9cJC8z9L#Ynua)2dM<5|4wvF_o9BYI`7d6;c6 zHh2}fgBf0m*?&O|(@hV|y{2WxNdNM+5viox&exY?w6 zbs95M{QOcq$>gE%KyqYJRXx>p!9cwvbF=X8?%5JJH1%+aFjIH1V_m1g?W)Z+^?64_ zi`XG&#y+v#c|B&28l!HAz*>8qjzhETO&f7P!fQ@rHid*6zo<53L4%EOg;{XxzFjs@{&&8zjB30=2G$|K3c>bMJ$7Vpko zTDVu{ICz^2%*3_s{nsMYdk&>$r-XJ-Ikzgh0Itrd*Jblh!PW(=2UU-1IAoatxKs7m zn?KBcckSejmoBjiPDAalyP#^_@#7(DTMAeOn&z2r?jKNsc92QYocav zmFGY6Z|{6HXJ64kRt(Zd()dJ+g#Piwy9}#L_Q+2qZvUD;(hY8r S>WKC)9^kv1eZgmc#(w~8l2Z5p diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/pause_g_s.png b/TMessagesProj/src/main/res/drawable-xhdpi/pause_g_s.png index c2736a5d28850c3b7e126e9d52dd257a9854a080..a7bb4434ae12cb59577398e6a8637841acc04765 100755 GIT binary patch delta 1796 zcmbW2c{JOJ7RRHFsPrJJ?CbsZ>quh zSKS#(5FH2z1X6N#qI$`q-@okiDVdKiMq&!!m*kkOE~avVGP!WU4Y|ueoSU1i2b&ei ziV2OT#(tG_Ga@F@nQCvuxfzEDXNB7$DO55QPa~sgbPNrPLJ`m;GQk={BH(REG?ER@ z2qq(CJ^ouQoq$KvsYnu?jH9DaG%OxXk#$2+@MtuFLZ{PYwF1i%=VAZh2>*){e3U~8 zYED=M(X6pZ9Dzc{$x_#v!UaR33^HE+(h zc^$FBesjUvIx^#f-Xs^kn3Q7j4F+)u;mW#0hJ8*_`X-4vvS0j z_UDF(kUodY^lIg2Sr+87g2(aFPDEu{O4_la9Qy71`@=k}5`9TVF zS|Q0X5{mv-N>AQ>GuO~^Kq{Oz9`$hIkwk|Mv&tE7jDvo32G(Ih+@_C{V`t^X73`oW z@Wxu(e!@c2#rq)vvAVH&OO~B;$mUdHN$X_M8L0Ur%zpHn(Zu4kx&;4kx}ru3FZMLq6e^4D*L( z7dQm8n;ng*L!2<@!QU_dcuxZ=Zm0vz0Iu> zd>gRvV9U|ELAmPS*;p#(`Ii2;S(=uWL5Dw=>@^IzJs)*GaC>F~-4QloB`iy9o>WsW zR2xB;i8Msdtq$ZCl5Rv61jn@>OuM(63K6~*>V}K{Sx0duij_57dw<03%hoZ9Dh4ssZz=m0m!nX%$dvc158Q3Iw032S8H zW{;+8jdl7(hmLoLva6-{JRai>@{*NP>&J}5XL(0l;BOhNhdcWdeuY2IoCQRmSFD6C z)2#PzQ<*IxL%qBY(aj9&3h{BC#@Mb>v(r?)eu-t^nOv2$FtW`HV+?yQR~o(3Og=}s1BSja>d*dpI=?-IeayiQXcZH^ z8ddU?J65tuU?@gBczq49K#qt@A!ZzJQE;QaY6=a`_<1Ik@%!nEsRfp6k1hqmI&D_7 zhv;^>Nf+v&~D?FrP*+ncJ*`O`ft*mp7ZA$JYiG(`%M zd*8A@bxDD*MF=w%_vqgB?>$U_3Q!pEs*UL?-Ef^8rp?nOCoq$oUjpVg>Pkt7C0E3D z1K$Q^U#0h6m*vvBFs8rNM3f7AEV5`9MbrCDqrMI^wdF`RCe||6jmK8(5-^d=Bclpq zdqslyiE`|3=~ud2bt0b4!hTA9=6%d}G2Fx^Ij|O2iTR?fF&4mzUfDhXjy-o?yy?$( p{G*lyNch9C#X~G0d$%8S5`^QEKh+qHyp%mQkTcDl`j8yL{U@?N9`FDF delta 1931 zcmZ{ldpy&N8^^zMS&1ET$z`fpLULzB$k-~$A;%eJ9Jy=^MJ~&AGV5nJ3I~x`ZiVKO zkjq9Wy2vb-<+h^iryoMHP2zN3uk-t}Kc46L=l%J7{`$NgzC1-ygXa3{8OT1heE0>ezCA;Nmv>atP;xx@xMatL~X_sVbs}fMIrO8tLBg+N#SN|SkVy`$jUm{&r zxCT325u!uI6t{X#rux6V(;h{z-koV=bCzT8HP1982`8dVcDUR zuWEx>ZONv5qVoKc1FyIL#0i%-NX3V8n{GzcTLz?}bCgCLO!134xo>r%Ps0~B9-b|w z!M{llEdQ^j0L;1xa3gL$ZAvz7xyPntsbb$>I+q(!3;-n)PyP-R%hpIdh#r&P&_Mbg9m2;wTl zHn%}xwOtF~Xm8P$WlG8=no`GTISnu0n

*%@|5qU9d>&|RWs`5;0JepQu~cRe}S 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 Le`c-6{**reKVyG> diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/pause_w2.png b/TMessagesProj/src/main/res/drawable-xhdpi/pause_w2.png deleted file mode 100755 index bcb65abfabb39be395d262137dc6a253ded231ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2222 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 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/pause_w_pressed.png b/TMessagesProj/src/main/res/drawable-xhdpi/pause_w_pressed.png deleted file mode 100755 index 214572b3edde43f4e4de3541270c3d526aa37eea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2154 zcmaJ?c~nzZ9)4jj5ha3F#YzkVf=V`$Kmq|FAtp*#0wPcmLh^u!S;%{kz$mMfs))>i zik77yGssdI5gkUf5J41i27?2Y0mBrTmZc(yaR4o~FIMdQG0Z#fz5BcOeBbw5&$%aq z1NT~4Zm|Raz>3FZ3y?L~@L8B4|3b|CWn|e5`$xc`@_1M!RDyu7SRMyrc~W5lC;)}x zwB-As7XTRJBw-P71V4Zwl1uSI0|u{_DiAgRc=@OmLQxV3W8=UCiHwPxz1e}oO2kau zK`NifSFpfD2{&B{hNcIGiPDoqbTQ7y8|$TJAOcbl7Gl-XqcVu0X5!xIG7#HvOu%8^ zLEt1N?$@9q_`z6~TnS>ScsExOkwn7MXm}EZN~4i>W64AknLtEdnk$LIpwbv*ckKHI zhj>$p;~4@r=e;jv$HXPVu!2D#s8lMv$_+19CJ;z;I^Cc_Cc7dCS13&e3)QYN$YDi+ z4MHNNL;*|WGOR&S7$;AGnK&fUUsI4OKFG?T_hmu~Mokv`6qcp{2?7w3rzk~8HiE>yDCCU|8RwxbY zd{812%TSqxzA_{wx}WMDnNj`Ekf>Hl4z9 z_h7R)9)2rawp^4V1!eFGSNt2-ZB?#e6r>8oGaFP&Qb93CDVJj3rOc459t&|*z4u)4 z>ambkDLChD^H>8Eb0P`U(Ir8RfBk!_>piDn|C( zCfnW%+7E{mYi-G->oalM?wO4FMstLOdeCXIAIXLIe_vdp|AvWu95tnBba z0>-4jTO<3d)}q=`&=k&23505EQ&b5Pt!^zhTPDyksX8#VZ|Q4jX*uJKXGi^yeO~z{ zN7klqNGGL#79MnR>#!DyciGF-(x!x2fts&l<+4l^&GuYZ(A&_ zt%io$Xm*uv{Z!SnHJ<&SOePah`s&uIg^P{a3$#q{@j2dnwyqr7nY<--^J`Q(N*#puXeD0)UiYi|O}~rY zpeW3^iTdG%bl-M$OkR0XWi)UpdF0W$DF>ekFWuU#Qf<=qWj5XYF1koYNx~jKAWChS zag$V1bLvP@ErczaT3e~mqd!h^)$+=hBd0HBN++V5js7TGU~#OnR+qGvg=fQ~PEzx2q~%*7UtmJ9kb}2zL9hjMXe$@+zeIjxV7X9f1m?xo`TU3a(p92Mnvy3 zXw4$U56I8Uz3OePIXqVNwaVnmUJvKSe8AggZSOQLE9gY-)onJK?eu~#^yh}AM7WC1 zuB(h!=Pc^^>WFVMjen%Hcsd8fg%@2|HsunYq>3Ka*!Yx;wj}+&4F2?Oepy`IFs6t_ zkC&pECwP?Z`kY&Z=%eMl=?(fFLfeo#wf|i7bKcXiCX7&y zYpC4pZ^AvYX93;Fn@*s`nicgrRjfZ;3~%WyDLF+6J-ILU2`2unuKEyqfphJK^7`b% z&gbiLhq-c&F?ZpFdEUS5&A!VF?~|vdi&ocMtfvO1 zhP&vQ*Nw4~^LE-?2_P?m&Pe|HIN`;o)i*H4+dgyG(C;3*7J2!Qe*HJwbThtcUHQoV zU3N>h9e=W_8vJtp)HY?{xwH7eX{kdMpCXw9ZkhFgY;asXZT@I*$vWLUky;tbw|yDd zH&!;CKNNC%-YF5{3+iVAngysiyB8Tn(bTZ|va-8jsVt=`?-f*lx*}QZe7>`N;55ro z7vyL3pd}yEtvn@4y8be^qRxSdih3w@Nu+Liz22hftf(qt+JnYT&1#!0{qx6r8rSgh z|CXXinDg#=V>#DO$ja^LOc53S6yz-_e${Q!b8XXYGBKt=6Mz_K?M8=5U>%+lYwMVL zn%_I#IEFiaYb(d;r(G;-apu#%G_-HMYo|Te#T|NBl8Gh)J(%Y~sEhVD47WeeKakzz H7n}17EO2Nl diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/photocancel.png b/TMessagesProj/src/main/res/drawable-xhdpi/photocancel.png old mode 100644 new mode 100755 index 4dc4b06be1d0f5b9cb4c53edf2580c8b521e41c9..fccbbd7f3614ccdb8fed51f8c84a3fcee40fccb6 GIT binary patch literal 2906 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 VDXkC`Z`A+*002ovPDHLkV1l(p;UWM4 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/photocancel_b.png b/TMessagesProj/src/main/res/drawable-xhdpi/photocancel_b.png new file mode 100755 index 0000000000000000000000000000000000000000..7fef9dc1d09f9a3ee14f69b29f3b89513bf5c175 GIT binary patch literal 2912 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/photocancel_g.png b/TMessagesProj/src/main/res/drawable-xhdpi/photocancel_g.png new file mode 100755 index 0000000000000000000000000000000000000000..e61452ac48302dab3f5608de86a2e1f522f37137 GIT binary patch literal 2917 zcmbVOdpMMN8=eWXlv6|wi!o}Hk2%jU!(hgYLs3IRO39dcF)@c`2189Q8&=vcD`lgozERol`(v;D<9o07eSe4dx$ozB?%(rV*PFrE;-$0F zY$XT;((&=81*pcbrAHH@dXE;wJE;a!2|ZY{O%Nf8XNdq1g(CLMkn2zY>m1(ot*_+pZj4ExMWQq7mPkud0I z6G=1~_9dubKL*r8AOfIx1lEC#LZhJs0s@W069{N~C$A03 z5&--+jK8%OGZTaWG5`<@VnuA#c|_POgH_u7v!f+LRWzinBChICSTQsKJC+CVB|bDV zO!Wo9;c`eQDve5WqEj(+PaGYOMiVgl7|RjNdzLMKoGNB0gNbt zL?Dh52%#R^2+$4NxqOZwUc7PXc)nyy14P_7fa56=@SvadC2{}8KLv#$;%O)%0qaTq zoHvc&LBu;z2}FWQ1GFmkFIdk1qZv{a405SB{-;=$w^S9lH2tgeRg1rx2jHtZMx<&D z-*|K$2=q;!4~@c<4!_(T9mAxracy+a&}wwAb3ksMT*a{e6U^LbLT$5Ef0)@;XK>%- zgTG<6+kEAxYi1~GlbMTJE7IrNylCf2!m`T)$GNLB*X+E0BKJ;ye&Uwt`q&{!{Pg3Z zM(mG8$amgDadXA*ni}ILik-!G=33uAclTG9|JE5WzGi$K=Lk{T^w*nH?!{ik5td$- z6iX@r)l)U7j5!?MK}S##v~GI0`}=R39Q9{RfkTT;dhfmwt$iIbKA^mU28FrQnAM-5 z_q?8T;*1-01}Z}dV;XQ3P2Y{`rQ5s0Ef!4LYl71)U$}(n zo;|Q%einAJe8;Rbf?y2R$~;86-0sluE6qCYsk@NgY=4K>HkRK< znu+RpwU2^+(B44(gVxVc?y#C3VceS2r&pPv^y=W^n_JE!98zRo*>JR) zoqW0go5DB-pRVyNHeqxQG|D~yU0~8;mX}G8(Vn)FZ&F6@-#4zXt=gv6FMC2PlCa^g z1N|Y4_L{z^-_7)#Uz{*BWq^Wq_Ctx)kvhi-G6cEav%QQme9^BT)Ns3LB&qA7l`4<1uIM!!<8gWA$^=6H`Zaw9hD zS>>w@FBYWO`Z*%G)g>bpJLpJxFpM9uPmum=)_rlG-^m}0C0|{YeNk` z=$y}A|1tH&05ut5@%7DS=H4|!(N9wtjSYvhS zp(aFYTJY$IQqTJyHbBA8!G#^H_RdNFl<}^S>Fd4DwY2i$j)=&gpnWpC9sY}bgCN_U z>nrgs8S`CJ4$_y2ry!lRIwijxIe9NL)zjHo?_o6z_Tro%p^y6n{%AmtKDVbJ*k1+j#EeQw%)WLtX#{% zqAwRz_UCnPwbmMh$9~;Ukg1}`!&zsQX;`Ump|yjS+wjH`rDQh3RNlL0#$qAvRtC1> zy@p$#$XDw6l<;i2zx-p*5A3PIIYY^u_dO4OP0B0!ODp#*NKWd`^;6i@WMxOQ(TL4W z@NDZ^Pph7*IX6f&Hn?tQ{wN zWgOhN$>a##FnU#n_9WF+Fl(UOH@n9cqJJJT5vn+aI+kw^Svc(09b9{760VJ}u4Joe z?m1Z7b)2$yuybc>h??fsgRKvOaP9^8G>(qb;iS&V0-U86p(0%N!6@-T)C;q+p>kTv zxJ2~Fab=>SlD*hncyNOnsl_hjY4|li&A!RFe%}JH`dzj?CC)s1toZ!qX1Z(F)O*nI zjfv1>v-1J_dNb-z;8$GMzTym29UO|pS-D$9zs??Ugf~*tHSB zV9OLtFga7v;SDHl-R0~3(Lx#9eym{sPp)C4XgZ_4R=0ZZ!7RDezeKi=?_ITj_V2|8 z$&+1o3yy3yJnqWwOAE8(_|=}M%!vpxqgQMkJzZeSsYmXIbvR*%8@Y<>y20aadg_)KU&x*-O7TNZZ`Le(fzCrN%{-{;4!}{${P(L0= wnqNF)OwLsGqK2jZ2NvnJ)Bpeg literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/photocancel_g_s.png b/TMessagesProj/src/main/res/drawable-xhdpi/photocancel_g_s.png new file mode 100755 index 0000000000000000000000000000000000000000..6600032fc148a3e89b4620836ddf490503b23a58 GIT binary patch literal 2882 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 J_C14X$Z zGuvg|`<|JdojqUj1r~;x;rr%X{{NggCx+=4bBSrhrNk6s5`S?aaXvAg7|V|VUJxgV zW5jXdQ{phuM(iW@@?&&|7#-aUgv}-{CuS0t2)w^3Vn6XQ@gea6H!A84SU}7p=5x_w zHM;I3H{&j`gZM0(48S#464wyl(NJ`6X8b|CNxaWXiy;k|MJynGKupzXyE8!ig?Nkj z+9(F#2`?mWAb&1mk%1B7WnvpIArWf;>h({E=`1o~CH~0Ui-#I7K;u% zA%0IB(nAS&n`j{}X3>L0;(NqLp$2iG8h|MFGxmQ@CV!eRhnw&ul#&pN0jr6h3T{Ut z4fx;R4pu-rJccwf0&a?bifYi^Y<(YSk*dyvOd`xifs~)Tv>2*GWxH4Qd?Q(>VoJL(@?i zW`DJP$uycqe*E}xb9HrfSwcdB$8^WU#Kep1*RQt}7Z?BR?OfNcUE8>B-MWwPeRFg3 zC3na7^z`gZPfyPZ=3YIWQxGt@_iI!^i?tHJqoZTnu3fvTy@?OR#l_8qur`}*@A~!Y zjXDbhnx~-((&T-uwzjr1v)SxOMhy)O^?x=sHMJZ)dbIQE)vM3(vm-~2m?|qPi?Xt^ zFtvjvCnu-X)YNP z%IEU(@&bcaLrE|oNzE&u4p*uapsudYuSTuDzP?5IK07Og$s@%k2EwITz{#%1H&+2 zK+P*)L}_$%bVT{QXV0FEQg;W2R5t)b|NJuB`GZ}Eq`4(MnP?D?KuM)fVU@~E2)UT)HVRw%`IEDoIG~y*hXb^ z3}e6O>wD_&qwP3z=1haXDeMTtVf$O@o2TfNes6US_;h5zbg5TnLm(3Vg2~jhRzUja8-GN?is0i+#kDad z-oW2n^BGV4J*kUkxT}2QYQUt_Mw9C2o;w4u`rm!2kLvi7Ijywl+UVYp`lyap=MSz1 zpaj^YMykQ)TFb<`36GnlPO71qxukvE_4^V0j7Y77<0;pc`7+=Yvu|D?Ar_apwmuC2 zuyaJe)JzzlItL- zD7_-A3XWwg=SY3MVwCtT|0>J?r9r{i@oFYV&b+mmHG$L?fq(8FfN&Z!D6nHhjMRGu zu=nJ5%)YS?Q_BFQQN{qcS(@O$6z}l_JbNS9J!E>h2|3b)=_kLA_**c49Lf$zy}UH! zL~)z&l6abhu)SfZTTsD(Zf-(cl!-sadpnOpIf;lpz(#n!13T&^Mv3@OxcGgco=DUt zY?yI&o0o!R27hiB(AfS;tYw0>wiUSx9)h(8ylu!fV3jn^g>PX3r|+osq+$`+GG?3& zAljKdr~j|$6RTZSU}Zq8`?DlMg-0i&k=f_+r~)nOYIIT85IoE!M{#vEk-zj zxFL@-Q$sT#I;M!<SMpho>4@T%^+<^6s)O#=7+!FyReK z>^_87n6Q&8-m+iFjf&@OiV|x~@H%^p3yZWll7&M&F6raJqVDjY00RJeKQ)51ZS7|O P0000ORz4zH?-J9s@;sB9R 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/photoload.png b/TMessagesProj/src/main/res/drawable-xhdpi/photoload.png old mode 100644 new mode 100755 index fb4eaec1861be10ef97183e5398a7e1e77cc01e9..e214790e2637fa3285b11dd8dc1e76c2c02bfb11 GIT binary patch literal 2596 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 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/photoload_b.png b/TMessagesProj/src/main/res/drawable-xhdpi/photoload_b.png new file mode 100755 index 0000000000000000000000000000000000000000..08d8ba1e14f3154efcdc6b0548c3d6eb62b1ae36 GIT binary patch literal 2655 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/photoload_g.png b/TMessagesProj/src/main/res/drawable-xhdpi/photoload_g.png new file mode 100755 index 0000000000000000000000000000000000000000..9ffbdfdd409c738aac51649865270f2444d0a8d8 GIT binary patch literal 2672 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/photoload_g_s.png b/TMessagesProj/src/main/res/drawable-xhdpi/photoload_g_s.png new file mode 100755 index 0000000000000000000000000000000000000000..c22b11e896a0fcdd307648f5004bd7e424ec93f1 GIT binary patch literal 2664 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 u7Uqjl)q@?6FN6uBap+-8FD9L_ecOGeEeHf= zv3>kS{_bw%P#(vcKJ8;I;qU=82xPlT!l#EuFh#HsW*D1m2Oqq43l3v5?BITQca%Hd znHkP@l?s^NQV*X{X+$WA0bgYgvz3qm0uEC|hex}h6dDa95UkNSJb{3=gkex<3=#$01S>R-j3B;u2iNU>OKEyh~&1Yt-tiA0*_z+kKZ4=dqzu81zN;tH3|Fi@Dn zPyw4SV)MALX-0YoFG^$w2QvLx0*CMJ{+pO9{3R418B#*$Bhl6k zH2&x<^x4j5BE6VGUX&md*bmmS88D#TzXzIj1hOHo6R?3zp+{19p-~(rS45-O!GSN< z3^s#|a-ujb0iUM9I1{rgc*)MVVyCKHZDXbyo(c_f<{yE zL}v;B#*qj%cqanU2|a_QafKo}HiRa@xKj?8XCt>YrSaoq;Ci}fVihZMXmj2!F;g1D8#QsLB^OKNQ zWwaQ%;gZp6%0_Q#mAOkP&TyV*0e*3xr;0^ea$(;W;`;+Hh*dca{lbP^<=FBq&F_`U z!N0=J-x%jq*9NsT{V?ta4O5JC(!~59?CviZ^9~3 zw^6Al*4W;$UG_Y)K;=-qS=KuA;APxEAl)R)1KYZ`8szsmh%HD`X;s!#qTu1+XzW*2 zjUu{A?2bJXJ4y{MBu?lFk%u6=LQ*hO))25s=*@d)@|r7Gj0k%hPj-YIY?a1W91EZp zCakEa7!oyRzq3+GRS%rLxm+1R0x8GL(%GxOtHFdjk5ufhn{{OQ&7(+M;>s4eb?=eo zZCzg-FUr1Wyq=Q>ee_UP#W%7bbeEa+Sh&Ws9a2X{AqBUKEEOBLD5Qe!kl8u0;`_7k z%;Pc(SFlMM;g;7}LtDO^>wm5<-lNh{c-cFDC?qPfQ4UQcsjxR8f2pU{qZN zbqu2$-hS`_XkVCZ$wqZWSS@z%Tm12ZbrGzUk&z?gmNy`yMJ}=V9Z>$`4)galJ6J51 zZuP6-eNTIuo16C!3=Dj-oYL^0lgu1X?lKEbO|2&i82YPP2Q5``19dHG%P&T0=+Mrq zv>7!OT-~EUG)<+9>Qp1t@ScKk!fr-8}I$zpYgOm5b_4$6)9S#gn!$46QAwJLLRChPQuc`=dw z?N?|G#aARPgDi+S=+_eD0X|GkoWJ(}m#|+s8dd@OMInX?Lfp zB0vh$T*T}}Z<93dBFaC{k4djSR_-I)Xa8!l$@jcUNqR=W_6vj~s5dog4*(Xgub&2N zx}J5^YF>@p`KH3nTy;2hc=UB^1n6G8Nv0(DtfsNCafYku#w5?lTeT$ZoWBjaqto;V zF&S zGDnZ7lxqh#0d=^ywy`va2l~ogX%9g;<6=q_R9;KGfJ081q`Z%{u#p z`jZx$g_N?Kp&cSLoT$|rJm8;M_8jWZ{ydK~rnb+ZJ81ETr$No`#!uymXH)N6UPnHD-Qy{5z&KeZ*Nlb?23wvrw=UwNOmZGz>EjwKYkw=UD3x zugCT~*Of(QvBB~MY;ft@Yb}krM-H>X?%%C;JDguBNG^NrMhxA#{CmP9 zoJj5BS-Vg6fev}7XlPr^`TCH{LETo@mZT+pay1(Lc&}RSFxO>?$wQ-tf?c^uZ~SF$ z$79?Za4)3?kn>r3@mcZ}dh5~)O9pE#{)!4z{qPVKgi5j`Al$uE)!r9j*=Kf>&BR{~ zFh0edEO2vd&yc^CGGidZlG229{Vqs{cdq0-ChCqC(WyaLlJ6#W8*e|;h+_u_KBns| zY4452nMUoegb1_}UnZVju;HXm%o*B+zGWS9 Mjp{);=M)_G57AR(&Hw-a literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/photopause.png b/TMessagesProj/src/main/res/drawable-xhdpi/photopause.png deleted file mode 100644 index 8c6463d64312fbbbeaaa979b4188868908fe2760..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1596 zcmV-C2E+M@P)vU*M1M5{ZeI2NMnYq9$r$L8IUWg%`W=@qmMbp{EnIkJ(#!w`!w8;Dz?WX3ULD_RHM`}QOke<(s+*zK;x~^ z8Bd6D@?evtQmMRB@A*t7^J<#!w*Y92_}bU;7EsWO(;5o#E(oXCMpYMU7!}Re4A@J$ z$7{PA+8Z@sOf|8Nv8Vys{kZ9d*6uXip?X*cG~WaRZlmr!&FnLv`3MXcRxO-iBy0f+ zH`t~IxWy0*7*ZXaVGsuNs}9c4pQY}*nXZ$tIZGOXaEV+r<%_~T`t<5|3>a`zWpIWi z7*JLnoM8n9lvD?2D8Yb5)xjASVZfZ~;0y~eU{-Z-hB+8;MRjn7t7?E-6k)*MWI0oy zVinMQI$VfpE3gmTJ$WMxMO;!ntYbA1U}(Sv)x$b2L=8Ag8j`SyvS_|$K#5Y!jj8w_ zeiO~tZN{8dU990$_(SwS7H%4NnRJKDM)&g?Nyhf5*!Yh#s!!@TOObT>@vD7G^+_Gy zME?;t04+d+bLn9=-pf?GQ5z|F_p4T^;8O~+?$&Gp0P@?+t5(LbAlg!+7JyM235N2j znNb{<`9C#k0RSpT%&2C@04+~cd!kmlnu-h<2UR;Gc(>N%re4M@WO%}DG&@zlwtxu3 z7qy;jlr!!k1&Nz9XH#lGczZiV1l& zVfD&?kNJI)H@8y(sVJ=>-@{`97Fcgn8|4kPkXv%#zKS==aUr)5s4sJbc}I_k?^P+o z5Xivz7kpG0%TZ{6Z~f+uAzF>vFbHAY}2Btem?6KQKRHUN`-V)9xye8SqK! z+>~gT<$X+Yjx!C|=&LbB#h${W6hu`!0XUR^NG7%sQ$4h7bFjo9joJhck-uruaJLXD zW}h@Q$ogbJ^fQsbdO{vuFXC{8F|93Bxw1T_%K{y?wsQsK_*%h(WR(2>#lZa8)oMH;rqVd@BMz?TN)bd zYiu~uKv7gl*yMlpb>x3M9oQhlVVun4VKjz|sspLGjz%HKm}&uLp{mbZd;wz= zRZAPWJkBcvqJ~UH^)ZZR+JsF}v2M>+wF!v9C@dJ3MDIL(Mgv2a=#hvLRO|#CH`22X z9G)G_X|oerRHwVUK+F?~fC;e*Jaf`=MNgtjx+0nT+bj)A5IiB#yGiAhA&@{01Q8|_ z(1IKX1cBkg5kcVE0UzXeHb`C}z=g$#Ao3lc{LmztqmPMMIaQ8DRuVmqu`RM}u~=k^ zAqF`GmWxKCz6Q?+2qNIlSXlJ}mfKcQkfEzNhK&tm0bfxaMN?R!Nv69;Fzr2A%Pp6Q z6pZy$o8_3Gf20afQT`7#%{{b>vv5D(e+s*~85^=$=%Oh{BaItt^F!HU!htGAP7a~T zN)?C35k~GfvO!{404GNbOGicbR0*#rV#ac@YH2VdOEghn3_}+qvYZU_osm>Ww3FkK zkzOGcOz^y%NOVSf`FOCxm60}OLJL>8`aV~v%Jr>a+9a|J9b+2mDF>OLbY#(}o=d2z zUYV;`&m~-y%aUYRzp;Ncy0S&w<4^Z&OBQ>^hZb?WLu{S9n(il8;#x+I=e&1o*^P$h zp#G(F{a14H)sI^3clh9?V!zN{xAnTIiIzfAkNl>Vx_M@OzN>JqaCTsAdD-}Sd+q1> z{KCBVvGrEV(0Zt`{hvcqWxfcG__cB wSLm5)K6>JE{p#An{gu``9pCF?H~OyBP^tId)VKGxxBbhSNe;>@y%!e#0NK`3I{*Lx literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/phototime2_b.9.png b/TMessagesProj/src/main/res/drawable-xhdpi/phototime2_b.9.png new file mode 100755 index 0000000000000000000000000000000000000000..504d8397af7e89a225d581cfbafdbb9503d1f0e9 GIT binary patch literal 1060 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/play_b_s.png b/TMessagesProj/src/main/res/drawable-xhdpi/play_b_s.png new file mode 100755 index 0000000000000000000000000000000000000000..9ab9ba848c27ea8e1d951e4bdb4830ee83e04173 GIT binary patch literal 2895 zcmbVNdpJ~iAD*8he^=$+U`WYgO za)ABilpoax>cZm#P-{yoI17nFL9tj%6vi5hMOi@6NE8}@l-*c33WK-C;?XwHFBeQ^ zjUO6@rxD3tY{^y*un3_r29H3*$H!a7TUqk>;RqBChg;V`qv0|HT#&#OGDUE%VAqBM z5fHHW>=+@N$AzvdGDCQALI;@4)4xLC#89b!3v&fu5+zF+Ld1+gpe&IH4re{C&uD>= z2K?8Je?$xD2{8bI1_*d@e3q;pVY@cSvfTZ

?3l8@xB4Eh`E$n#g0taR9E6LUe%1 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 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/play_g.png b/TMessagesProj/src/main/res/drawable-xhdpi/play_g.png new file mode 100755 index 0000000000000000000000000000000000000000..6c442666bcad9c95432e61b6616c770c00942445 GIT binary patch literal 2912 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/play_g_s.png b/TMessagesProj/src/main/res/drawable-xhdpi/play_g_s.png new file mode 100755 index 0000000000000000000000000000000000000000..95b40bc0e5cd44bf656d3132e4ae22a249d1aa48 GIT binary patch literal 2897 zcmbVOd00~E8V6J=bIEck$COZ;v}934A*onhF(PJMa)AI9lO@0)vvIq&ndMBImNtsH zl~dZHmXf5IS-CrAXlT>8rRGg-EL*(Ta46)9 zigXVS`lnNYR2qaR6muc2Fc&8_0*Qp6(J&;+6^%x2f;c0P&TxeGMmr%Lge~TYq&%SjvcSmNEsT}opjuD=41q7AQvV_rNWLaYn=-hZC4wVi2sod=5Z4!N ziImR$uN!}>En(~zap82XL>Mb(YwHnVy9n0i?w<`UC~CdIZWr^kMPbE|gzQ*8S0ME! z;h@?tFbryh(V5Ts@w{i(!0c+Sn>Rbe4e6r9NK&JgVH(XS9x9&Ek)V;$ktPE~rlOtLvjwM~!0CQkItQ4Gl$xpY$+ouu z*(bu1e@F`7xNa^tqRdS()?VGV`TecvWAryEcDaY!irNeG>kMb|&Q48kxnJ&n9FS== zJU9~k8b{8yyy@plw(@mqH2=j@H6uCq=0z2CP~%t>Abh#{oI?ZQs7-Jp%rha?df9J# z>>7hx%9k&%GLBny#~^3P+)nGpyGMJWrUQ%_)=YG|Z>?AM@c_v#IvMC;9GZ9kMM0i^ z6?OWiu3zNuv+W1kQ&e&Vdg3Ko-39imS6^!%L&2)M+OUEvp-w7>+iN^rZ#v4M5);f* z%{Y8cyl6bs884^~bx@(VFpk};af|???EwiYw){rg>X_rGft53x&3j?WWbNxM8 zW^QoCF2!pmS_$$CFxi*?a#P{#(aiB5UKR}^mB1Qc4!hi-*lLSgs-C;er?U-+V$J=q z5Qqih(}!-6Cw%=Xr21G!{_lV=@PqR;JA&Uo*<`0GA9-u;@+|nI(j9H8x~4e1tA>-7 zsWdl0P$Npaq1eOEjSh|*DT!gJO7}T@qD9_eo=H%5n=~+E-p-HOn!4KaW*E?zeFzA= z*5!D;?sUxRJ|V;}{+)^ZhpCW<)>|xN(4j`w0br0HS(5ktj<*x5B&}n-EInE>F7AFV zNeP7ANB!8jYQSDWKEJ|k^~IJPqZ~Y(Kqj2+RVh7TO6_E2iJK82D*Q=`o7ydypK&}6e>JmY7N?;o`W)pw9uTbo9feNK!V8|)dgSi5}t@hshjRgv2| zRPrB*IfKUXJDL_d-Px>~EQDm7ab&D_`~4O6g+>=kGZjzkTx^kR=t$21)YEOhJ_{ZZ z$&Rg5n?9-E_v#)Sa&zq`n}8-?yXG;CS?;N$q44O7{>4c;<4H4MV459HC?87N3t@>PPp$3H+mWyc#Y{$Nk35#;)@Ab5jy>r`RHRUUe`Llo6xnZea`XSwOeHP61DY{TI&SWr5pwD?!GawmB+;C zA!BJ_=v|A?i6@g}gZ9+dCWZAH*|1%+=u=Wj?oiztQCd#q0XpUn&8v%mQx&wr${0S;J6r)zw7(6F2$#+`UIcXZg_Sh;R``_9RvZFllG3PFw=z>p z^&`M}phDl$883cO1FZN+yZ*RRfJyZBpNU8dr|~IOE!+AHDt>FK_IOuj%B0;p4hc~) z#2(8vX7f(ZH}1Y(b|7fI1)^kGO&V3csW2334$uE4MTzW+?Tj+(IO%j%D>*>ipPzkZ zzFSdyqsPaf`_SCbhOEO4X?+)(FCToO%GYIvH&;Hqlrg)vmz!=_7qqn}ASiwhv}*J1 z=Ig_>`cU8n*fFK9<_s`BEHq}|=8EoAm8SHCKeJzF^86i2>8TRx^zC$(OyM<7D6^?K zKyx?LecHrV_xIYEmK;PC4;12(w=A2btt74OJEWk2O`<{TZ{3Dfg9?NOvtHjL>8*>_~qtM|6|ZJ=)JJQ1)F8e2sUOt;!)*?9ROo8mM1t!Jz) z-{I^sO~KVix`15|$~oegV;Y;>Zp$F)R8NEd@EtL-xU$u1V$Cd0KKY&&``FvbeBG5{ z^-r+ULpONQ8=T)3mVDMZ%}7jDLT`AS=GNBv{#^sgIjS)$B&oXhbI02B iMtlQ5A!RfH2nNUv{ym+WbMEoNPp&uFpLCVLO#TnjJKh2S literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/play_w.png b/TMessagesProj/src/main/res/drawable-xhdpi/play_w.png deleted file mode 100755 index 77d1a292d5f43a9a552293aee6284d916e238679..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2580 zcmaJ@dpwi-AAekuYm&;n_M4?#w=rY0h1hCkE_0bqZnHhJneAa4hD2AoC?QUv|rX2kj9!(A9`>?^}Ipts?CWVRvA+|V~Ap`+W78DJ_D11f?NCO$Hl!O}~ z0RYtC+@Mf#DAfngg!m4O1&o7)AFpHs0Kr`n&tUREF)SL4;R=ZG*G*U8FfNM-r#n+o z)OatD!`+lB1OrojgP5s2CXNMnUk@Wl@JazbC}zMU{5XLKFCoIe=;D?0g>57p_5~v5 z5#fI)6-xDoc|k%D=Ir2P&qSfoFf7&qjd8|e(RMIL6xtDqQr=j5GzRaC#XGvdzFu%; zG$D(Pr+JgV#!{|`aE@3Uk4GYtlan2iog5%x3=)mQ;TAL;9qp9}dr^u&%#hd%M3&za zyg?CD$c-0sApvYbkr53giivP#rhk{fkN++!5Pdx+<$)n3jCds40ku%lHz1Yz|Dk;T zceF@M1OJon{}dJlrNo0s8YqGig-m7R*p>^S;_+TWkRgVIK@b%8?G*hvkQfqipm>;9 zAQrZc&K0nrWRdk3Je7*42t;CrfC*B(iEyQY1DDIfyJ9?Dypg{bM%lgiBLH&@sU

GO{-)wZhTOnbh}V#>&HWq1OU*;rg(b> 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 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/play_w2_pressed.png b/TMessagesProj/src/main/res/drawable-xhdpi/play_w2_pressed.png deleted file mode 100755 index 9bdc7f202cccd5c91d00c770bdf5722300627fab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2656 zcmbVOc~ld39-kP&6ash@s-ifC%AFGuOdvtXAt0d`f&zv>NG1><_s|3ZMGDWODg;H; z^(>whQ3@1YKoPC5ieT|T4nbVRt0F=vw=}4@`$u2*y`48Rzw7(?eD8U)JtTOwh1p^= z001lk{8>EX7&85!OpWi|^9Ifvhea?u91c}VVVy_=0lpGtECdF~MR5=h5=m0j|AM>$ z04bI6!{Kml5KXL<<3!UkIK5nDL<4}gk6tAbCqgh73&qJ4bj;hzs~Auwp<~vQxdg6? z3B}9&H)^2Jjlq2J#zZkyg7IO1-g=smKn}qoP%lqXXlZ&n<^wOyIG^6eW55q0a3US^ z(Wr242*^}wAdrl6$BGF=B1oa&h#q7Lh3E#72t*Q|V7w_2NxCoKh2qCsL`@X$}$zYm~rhQxvdBk5y>xXBb$JR;-b! zV3|?@PBV&PmB}z2W3=?63vv~g`Usr7~%z0z%@Iuu>bZRDsM; z3h1<6rjRIgTIcEXeDszDX=L9*5{^bG2S3D@Ci@Hh|J(16SjqnrGrZ9l{B&{rSFy}& z87pvl`nmLti_gsiDU2PXF}B8-)i4?WOmhQRzI=V#Z-*zp2}@p5*Cklw03uTeTUPbk z5Z91;c>!)N#}8<4FZ%(GW$ePX7ja9cz{%y4h_(q|?LElnfz?0R%a0++lsgs-NDTHmCgT4+~XLw}yuba}YCT9@*u`uSk`*_fvYYxwuqgS2J?DlUV-8IM3rM^)vDiqZ5R6F z7;NjwJqa4?R?&(K%79moyvL&F46vE889{wo-GdldH1LIHMeEt*r)9jdug~NQd~pwf zPS%dR#IXAE;Xt=jh?O~2IUO8EkT5A`QDu1Slkh**Bn2Yf_SH`2^5_1zO-ywvu|9_) z9G+M(>Or-5<-(0E%H5w2Tw*6&!|Y$3J%7-~9>HKTIE;YZTSmXMFIiSl_QH%1&?aaX zZAy2O1vHz-n2yd*u`VhM%R7ZWkC5(pUB4!Vjy04)i6(c0-)A2}zjldej<@otVaZON zs2vN;FLN+8i^=*O`vzs#y5f!&iRiZ-NJKHz2XDuj=h`0hnp@S@eW64?c#rP7+W%Q- z^7yG)`uiv7XzWI})u+ubhL3%}oZjcPd87-tA70`A3Yzuf@=FV|2U!wqSyJjb8M-e>a2RbFcb%`OU`-Rc)KB%PSIy zBVET{&Gjibwd>xnWzX3WD4BIqxfkO}ZyBnrjSLccuC?iu!V<$ggHzhs zxn6@h44n}LZEH_MXojkM^Iu#F>ZsDVQ=TdO1pGrgfUfTv)Tu!6cZ@xq_jnIWBOV>T zYHQMJvJI6J;#}tBJYa|5f6I~YmRqiq7Q^{D)TU>kn_E!+-5pg3n=`^8cGIq#W64Y=d9= z20HF%!HxPC+vbUS29}QOh!_v+*47&0nwT%!cwdDe_g)9MJ}uWG4wS+H!Y}f~$%j44 z+IPN4k3YHh(U*IRaOyCM;N^>BK{zCq+;scS5=EZ`f9vM6hqup6mD%CPMd?v zF!{yeZFxjuiR!bYo7T@IDG_4wM1fJWYZhW`kj}sX!1;3(I zD;ENteOGqvKC-*U^JM*0ExkD*V2HMH?E`*xZ{?lHw6v=b!ZHV4nJ9X7HvZ8XwH}BJ zw9qY9T^aQr+d5W$g>QwNsB?KjOZ8G0zdQ6g%<(alA(zf+8NO&m_Dr}tqATnyP(T@2 zsYxAVTc8#^R3C`Th+O#Otu(7nXWNyWHoPdJgH+SiFuPCKMdu4IuvY7~nsp0A8N(}V zUFk)?kY8o@n#YfvLx{yle}7!PLX`O+!fsu^N&SXHZN~>~CPS|t$rRUj z-}>3%SGnj}-ta58M)&B~OD!s%2hGk&UMO_jGJ?A?zOQ3fuET;-YVYKn=nU`oTBjQ_ z-qQJ;J+mbF>PEAY#nEjj+Yw}aox@VpyTzyR#A^oL9xSJ~(07w1G4+S+fyb<={Rw29 z^JV;v#$S%XKWz>+$!*U{^_vi&+oZE{lbb8rEJ;hhGTraI>Y-!L7?`ylFRM#J41i0N zTjIaK=&^ad*H!_NclV!H_B4VSEzYv^A72XFJ+4}J+N$en`}_PCAEi}rb)k_9s5xnm zGy99zv>iM(=+KV7dXlUtFtN3DQ^>JzDT4%0<&|+%f>n01|4w#u zShfp5f4X)Fqj}PNq27CZ_S0}n|D@B%(QA>vo!^Wau9rJ>#1YDDQN>ZlucKvPQpnO{ ztE&cvP#um;&Aw4PQo)ZUrah5t%^Ul>D(hmqxR+ih?@CkcI5oXn=T)JntnB+8g|gr0 zbXeJ+$uwEUd4dgow20`sHsShLg!k%&YxPz4C968H>0wR(CMaqrSE8@)bDqN20A)^x V#*SuO&vX_USdi0rl7V49R!Q&ula~PzU!&kEbz{O3>r!m-|2ucUTSX=^3)zAWivO)3Nm z1ffj4p9kqnEcJ>23m1v_coZr+IvN@6faD3nP#9-t=Q#~~dpkA4PAK7uXkt6A5I(Qq z0SXxc7GK2TaiMdHG&(OzM1ZL?{ig&D|Enxl_~n??2Zj>U_$Uk#Jy+5^kV5(YP!8uS zS}5`Z|IPP*3JU`yd=TXa3VBfihPrV~_*^JHo+tomBAy_C$2&NGiay~y5l=@u24kdGC;Bi0j5?!vRI*br!5#Kq5}!zNyIr~FrJQ1?i)!& zM>Lk?fp*`x5$!b3_24n0I3QOv&kg;TYyVB|oE12Hbz~1vz&Zqmk_0>s^mEC0);DwU zBz;rw3pe!JxuCzvMX8fP%{BJF8a=ncv^5b^|f@ZBP!6q}2aCe#3{RibmHg@~B3p>fPg(d8t-7M=)_&#sPv02w=m1jz3 z)B6fN5gFcBMy^q8HryI)FA+vOs$Hl<+h774)Yj6DEr`8PPQAH8>!tGqVPaJE$CIXg zhaN~q9}rZk>1OM=zTp0EN~q3ez|s2+vL=c`)tC;hQ8*yZ^A`#l2QJS9tEw`~+fK>@725=*S-_CoK(4JoD82_QF2qZp zKZ{ZrPaP3JW?}^w`jUIM9U}Xzu0NJnrQs5ik}eFC*Y}fcOEkH6-bk+$a%*W*kzN-|s4=4AF3R`yul*H7N9C$%YF-jN`w^`Zx} zEM;C(ho+DM+m6zpqVTDUBGIEO5S$0G6Qisb+hJ=zAd-j zeB@Kg=;FhEPI?V;<*(Lv)Au{FT!N^(ww=A zWXHS1dSZjlZJP0ZA#v4ZPf$Dp5-G*q^dfnKhR-0RuA0WUO5X)@4arZq*ZZG~KCi!@ zFhWz`mZ5IBF6X%xq^vHtqU|YLl8flqObfegm0P?PCvjiqD#n}h2JvBnpCuLl#}aZed+tcc5N3u_*$_-lg>^%XzEz)}-iD9-BwC~p0?cIVc- zIr+c|jdkAhz<<+0(i_*>o~HE=|4f1kz&lx~YxYZY!mmhzxxey-C(je|n&7vwodZiD z2V88|am7OInh*7>s0sVv_Z(#Ff`Ud&6-e6a6kE$y?Z&-koq%eyNjT};YT+u43-B5T zS-}B7eCc6w=IJh}MNW?MN8NW`<%p=}CS6rvul zJF`&>l%2+vGgE=f zEPj$Eln(Ew7N(Xlq;*W~R?s{ra$jF$ZkRLzGQQp+TNqdOI`;b<9CYTcn#RZ?#- zY+O)^+kaC3>8dcPUB>CGHGR)k)+tUhhYH@d&3t{o{v8>r+5wC8(^9hL3h!63*c4PNbqcrLv;l)dLMbyJeQ>t@x#psoY z#_jlJB&T$!yWDHb#8%zJLAzM1vk>hx+T^A|QkKWkJZcPW zL6&4xtf@eF8+A*PXTNJuc8?A!+pk+a47uHoQ0WD7+gmP2JB}1MEOzPJC7#ski6_PA z&cNKKteG`WJ|xTn^+Ur;o++q%6VpSa6)*uK=`n!SH#gKy)9uBb5F2%yzp5@i+tMHq zv(tFQ4le8Bi`Q?@+~TtL5Sv%gC+Ju2kGbh;$~m{|)*eCXyoGDXhaR^K8QW*+Yo1yL zRU)PyLKC9{dQu-QcyS_D&x2!ft31mwL{Dq;@|}lWNve$cu`cH+tETO_%I&Krk6B3w6>c|<1s^; z+7Zc%773@HHT>ceyRO2Q-jP|kAwc7|#b=(q%6?gOM>aWlIEgX1t~yJ1O18(=UU@85 zfirkXFk5M;)ept+)n7y0560c_=IJQ&kxfKF_RKQ-oU&@XVxL6tlGFVPxsUKik1Ess z{G`N8<$8ovtWhSj8yj0RvrCjqp-iPV+c0cnn+#JfCsN5hA}8gf93^KW zN(@OvPN#C|UPPFvNQ(MRr_S&9$9bJUe$VT9p6})PeBPhW=l%J7p65y1>bXfv(?k;h z04+CHvbSQSFJ2mIiu=ogXa~ixLPVj7eE314Xoi3d5Lx^{HrS2J2xfb;8LXJd4z?oz zC6mZ?C=;Y9&Hc)en1q~ z1gs#uH<|j~mSW`u2@#1R@CZb7bTmBL7S0z0BTzUTZV>~Gwoypf2xE96hS-KDH2;A> zW(%1DPK1cV=Ybay8G-yLkrPDW>0cpmBRo9*2IdLB6Q!UGA!bA%P;exI%Uz7?o3v2m z&Hk?&|0pf=jfr3*yxBs2lz^$oN09jsWd(QtZfH?Z;SJtPz)>WH5l-eaqquCI$c^j- zQ9OaOI4nHUh3rChptztZR67a=g~FkUE;w5|BF@2{NFmx|e_;HRF4+M?!cnPcstbmU zLQya-_Bblh&d#1hq@pn>JKG<+Zakrg!DF(2*ySkfe%D3)t1g}-U^7H~fiIsQ{-Xl6 zhVVsvVF*70O!C2kp?(}5iytktT1?Mh(URE$&OSDaD&TX$-}uFI{=q(mjCH`-V@McV zs>`>y$ygE&FQ2&n*|VedvJ`idXQ1NOT6_!$$9H|H^jo5KqzhEgMDm+lqT z$D{!b7}@M-b9uQ=(A^NpUG-;l;eE31rsHe|a>b!_qI>M4YaqFauM-Ya%JZa?$(NRe zo<8`rcI0W?{*HWCZe8lL$*1oZa3hjv)j^{dbiCBKDg~6kG%j`F(dO%MjH{?3&rO4D|pWL7imQJB*CjAxU*pi#Jlt5AP zOoG$496;QSp>Gb*jDGr%5MD2uf~rv&8Ey_myF3 z;U$(Y+>oj=7&gOnOO4XGUuWoFr6&q~WU8_a^p)KUp%jfd)!@4bI*66<3f*`(rnyD4 zaEYnU)92Ajf4;tBG}P0MU(Y`J$tOXj@I6W88Sj*e!3#5NwdtCA0A(=o^U_MA?t@6Z z3C5mEd$BbTJ1@~E%544W&QIIFKa)9f5uk0|WnDL8g82PJTiG5f71vKF-gqHZm9^~r`FZ4k^BZZtwX-HW2GqEwxNdhg@Nq7vxtP`8pxd`} zNkUkiwJJZGu{Lrn4=`Rasv4Y4nuL#uEP)-kQkA{g%DC<+3!vBbsow56Exv6&q^tr6 z6Ifm0z`)$v+Et`g2&jy@hZ_5Cs3ZE(qelb;0`aT_sfWGliSwjSoXL!owyy#+~sicK-E_55ix8Xa4dv1-G<@EnkIFa|{LhPY{)XQZcloIigaIx3gX zLkI){u?%FPKT-|4z(DUB?7nqNTv1v1reb(_IK#)=duRtz^h;L3aLv)wSQ#*~`nT?KCMB z`wr#|^FfO60ol#;kJ4+`u7$TBTiq~s)wpe=5`wjHbd+zLe)DijN=k8LWF+I{GHVmn zLqY46+_#*rudja;7Z;~x1mAt@1>JS00XVyS+0KjDeUneGpDOGgR@QASQ;URVnUuZc zT4oY2rK-H4$HjdPR(ztGHQLPW+@Gk!%1-x<+b8oKy#4*>_DduZ@IrDB@3zr)<%)}O zALIi8d-pbN$jpDBF*d>s4eivsHGUe{N8FG}zw(H#`3Z|aOa_7xM>tnW6GKJrW#ebh zp2c)`cb6(PURGAED#z%LO-?o``%B->&%K{bvQt^9nV<#rje5tHNanXiMMbS10`(<1 z<}NV+GW^z^PZX!NzHKNkFK6^s2Kc3R|%vwH8tfWB_(Rv>x;Tl2uMF5xScj2KQ=x#c6Ixn zJ-mk4nK9)R8!!9Zn7aUoXX%oz1#R4sws+6v1Jw^wb<7%Vn9&&W$)0gue`__c?^=9I zh+VINk@XN1{-@A+uTmm-USjgLbL9ai&Hf?HZYLxj!>|A>J^7Lli-}3fH1_)IP z;`)`s%=`CcABlHKOG`5>_B0Ab8m~v47#kliqIUv!7OMU0EAF)&w=+X49eAl;wQ)qp z#D47Pl4J8JsNm`9Ou*Q50WN;Gl84Ga-u`A4y!N3~v(iEx`)*vc@JBIV{PKjN+e?e< zW}txiS*qeSz_|b9NmBt}Tv4m})PiKai$2>C=;rtJ@y|rrxeHegoc=nUJM*Q}A?C#i z_r%9Fun($U?O!6TbfP_eT?)@XNUc(D)Oaoe_lJk%Jr}w;pZi>N4iU3U+*%$&ju^vG z57}l+)xJNJylRPQlJ@d>xF*bGzs?8W%}OV=*_qwbPCrd*)B1yZ5$sx8=;UhmbCKqL zg}TiXu*AGOYbP3ZdA>Inb<(UiFF)DS+S7G}H|njCU|cpODi-UPO-d{d_{U{QIA1aD zUZnLtlSIO9%6!(`R4i%l=S%*#P?vldB0HjX-?=Bf-gYw5frJ@td27k`C38Ayl2g_< zy`#W47S0BQ58nzq)6&tt;Hu?*#_!SQ0g&KuHfCDOO7moPICvc zw9YmFXNtOgF{d^!99dZH5*Y0KSiZKexX+<|@K{)N6I}O@u_?({5~K8?Cx6Q>$ud|( zKts;l+^Q&W&Usz^mmW9y`IVc7SXmzvNklGS5nZjn!Iltxs7ApS zZQ7=lG(>9?K)^)fgE8U3Nc7F{WTM9SU;>xSXSjn0M{Pl2R{>W7BZ12#Y@ZR>2YdqT1U@FCRBu24Pzzj7 zqHA3Axl?3DGq4r-LQMwXXT}1z0@t`ubZcg`0ULnr)LRs3fG2P>Fafxf(|M;K_#3bh z_(mxP;1#|FxPKEE#N>ey;2q$f)I(%z0FLV)0mGR*@f=t}^M$Moz%X$)UHKkN-Z0XT zbc@1V?hRNAJV0Tkl7M0BkHCjgPmEH&*B)RJ(3>d_-V`qT0(DYFOH%cK5a8#)cbPiy z4EQ~8h=(2!1v~@{W$M9V;CsL>M;CF98i1?VgY5sDjDMQoLnb_Pq$fCHz$W0Q63-)Y z1ODwB$beo~8i3+|!a*8=2cQP)m?`_JcZC63y7GniZwE7R%#?BMbEW|iH0FB=&F3_s zgPHatBsU<0q8(qMwbkJ$juvYMDGk6yNE$QkObN^%9mN3evjrsb7HYu9%#_0ySQr9m zt?;)L27lnByIW{#GgeS&+Be^rWex8DQ-qdwBZV}y+kj-IysV}xf!gh}*ML>D$`f!5 z>q$$S48VWiE3}ggd*{-6E(35UYq`)(GAt)e7i0jga(4>NB*)I#G6=I7fQhysp_k+c zB5kc2fccC>p_S8+$SigtEe(hj=?14_iDgE?(tm($LL;YR+gt_&Fply)7cN}bqR}XF z%KvX!T)2C0z$=m=9X+AA_j9gkC8XCIf{Q2_-o12@zN=iyvCSwy~W*QJF zx7KU5+SMf`C7GqArF){HqU5+w9ceZIPqoSNN`f#|lboEK(AwI1EI&VgtCyFToQ}ey z=8MpPP$u&;{QiLB$B(CUc6O#8IdUXQMt|XG7#gsYDFhJ_5#d*_Uj4eZw)V65_;@)a z6vNCtKsl=%2wS&r-@f7Ay?fb(g@rppLPB^xL>8hr1I+LSq^72R*wN9Elbf5nj?-oa zqXEH8!3Yix4$8~R`=YI_?NCZe3U9l7foOm~QvqUQV`GYoi!&-KEBC?Iy!_4n8h@su zV<#B4?%K60zOk_}=iB39loZH+M);2K4mwJb%y2%PYTf z<%&)wP1d6U1I$$WMz*_R;{XgRPnFgZDCluKs?_L>)B*b8L0FN|SjMMcH$85tSB zc6WEblv(rf?#Y+t-J))}8PL+w@(31E6=h{*eKPI1Pt2(Z1df@qI2k=KFfa&V<*jq) z&OK!EhHj<-k0>RDDj066$HvCq$Xxs>(tO$g19gdL9>dC-nwqA}%*icP?7w2+p}Rs#^FjFShR$rJ|Ca8As3)AIx~ zRR&)#w6qJwj7k#NYkz=w0>S&ORtP<90tPa7=lh|B=Krx9>4l~XM(=z>k1ajG92H?z za4ci#BlNY3e}Lc8t7Hb4CluT}-o(VS1FX%N1-6V9wpJd&lGl4I@Q7HXjtQxAu;nOo$UE{CDLS0e}Cp=a(HRex#?~5U1if z0k;*uV-7st(9!BsXn>AP@K%}l;}q?5Ir1h_l>Zu`dH$LS2XVywmxbt`ZOlTTTE3@k8{*}$B9AGIqd zOFV~)<&ocK{FX@@pfMg($u7CE&mGYUekK;M-bSzPUc})Qj)$e{>DB0JG297UH)x5G zE;Iv0#}n7hw1#=%E&+Io*ZnAbT}g|&r4qIeuWHQVVoW-{lfq>#_PTjqFkv-Ztnn7c zOiyyfdOm?5$X002ov JPDHLkV1lKy`?LT6 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/playvideo_pressed.png b/TMessagesProj/src/main/res/drawable-xhdpi/playvideo_pressed.png new file mode 100755 index 0000000000000000000000000000000000000000..1f3374c2ea21b9a722da1484bdb07fef81a9522f GIT binary patch literal 3086 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 MgT9egLJipWABu-2`Tzg` literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/reply.png b/TMessagesProj/src/main/res/drawable-xhdpi/reply.png index ee23fc6b69b2e0ad4d2931557c80f02bad7f21bc..c7226c4f5d410b1cc055f27d96e8748682292474 100755 GIT binary patch delta 896 zcmbQwvyf+l8&iy>n~Srng_EP3o4Jvpp{uEro2i+brJ0G7fvcObtFfz+LPc(YudkI$ zesXDUYF>$_i>(q+L@y;X#R{s|376i5|o-|m4e#>OI&&<>oGgk zv+mq}n}LC8s;7%%NX4x;Gh;nO0!5CO|7qxAS*+p{u%x47Mf%zm>?h9{Tu!K6+3`YE z~tWTDal)BOVvx#nDae6^_3 zk37EhTf@SqEwEZE5%>KR`?T5Hg;?}Ve;UPfdCvUH{XFqZU;~@|n%A~|&Z{o*nR{m_ zv>n{vymv#yvkA3^6Zg$vwO=h~99VLZ;A@|KN9=*MvZ^VMhWt}8cx z>d7#3%Gs+EzyI~$!FiqIkMoJCX^c^c_fEThv%Zj2UG!_Qnwi6c_sSZR&p#BX@S7Ct zFk9~Z>38ZM#09VZ$c+6QX)k`8)#LR9wGX=mr9#|RpPh7{^9|E3j(^cD2m3ST#+&gO zb&7t;51XG_5?kjVY{a-!?qq#RX9GBK2xR;bPGDFSGDGWnj#x1R5O})!xvX CuYVK( delta 894 zcmZ3;GoNRJ8&iy#ftjnhxuc7-xuubzp{t37tD~i(p^>w(p@EBwtA&A*LPc(YudkI$ zesXDUYF>$_i>(q+L@y;X#R{s|6_?)0i5|o-|m4e#>XIy$G>oGgk zTW^>m!oa{Z+0(@_q~g|_nf@N4fgO;~L{ME)A-%MizuXg6p3P4-g{*h-vkr734O zM{8-sC>#4snsVyw2El96aW^&xaQe3L=<_h%PMELMx0`v|&zRRMq~_V|Z&O_$!*__& zVx6Skwuhbd;a3j*Uc|Y8ebVCsM!&*1Utz)HL0wbT7yMFWf1Kfx@aCoO<7P^odM7J;C^G>$!~Q8CL%eaOdud zJ0$&sVgEnl{Z73bj;F>7-edZE?5)Yo={m7SJby&*v{rw(*_>d>wpp)OY(XUN>C4|6 zN@}9H&-`E6{q3vSdzsLS^+)aAN50Kz_f>n&Z4s)FZN6~!0sGd9$keyWyLM~(Go4rx zvo5)^etx^-4z~yL&g)FxKM>gS_0yzc_Eoa+e*3Q;*~L+#)?{SK)_$;f(j2B&Uo4fR zogS=LUiI;C)w9iYab;W+t}X05An%e9;2f1J_DAo5$OVTF_mz3}#lQZOG{M#6l4E_^ x*GRYUr{7Ifg#%tq{Npx_1ClfvkHs^xG4M7`%>1Z2HG=^NJYD@<);T3K0RYtvavA^t diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/share_arrow.png b/TMessagesProj/src/main/res/drawable-xhdpi/share_arrow.png new file mode 100755 index 0000000000000000000000000000000000000000..f77b129c4292e020d7fedb1828fc7db616f4f656 GIT binary patch literal 1307 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 Bw*LSC literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/shareblack.png b/TMessagesProj/src/main/res/drawable-xhdpi/shareblack.png deleted file mode 100644 index 6f7d9fffb1bae6f834c068c96c3e9f8f65ee9159..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2057 zcmaJ?e>ha>9zVmH5&2OjMapr=uBQ2EjLe#%86zAzKBJ_#R+-Es6NIRLTFN|NA6 zSR%{Z-vj#tfVqbvIu?r+g>j{bk|r_v(6mYvM+1QWW-Tg_rob4O2q!62Jm^Vl8w4t3 zJSfIT#1Nr;I9ahZOASY5g-1)XQlx$|X!9n}U(3Y_lrSa%waQeLhO6a4uX(xn*<_|e z;ALfbT&(F`q!D3Ny52_|pg-NtjmBxLM zK>%x{Y6XfZ5EW=*lq4c)7!SggzDYrezN1xX-j)e37+ott=}a2Kl+vQ3Nc8_*mCASC z8Y~k2L+^WuHPM+UOpk;$NSa!TH%{(u3Waj{YFL6H>SzQ>U94h6GJ+wRWCR8IQ5^6S zkwmIcnG9a95h4*cM5VzbDk&Ty;6XSCO`(u+g#v*OQ^;ocvV;7X%pjjYwhv1f7|7Yk z@Y}-j6$%!y0z{gogjLugR)%94e7vsSLJp1%d@t5C3`!J_EP&ODbXX=-BTDdf(p<#{ zwRi`8Sj!u%>^)lEHFlFHa%5-fm(?|W{Wa&>RJ#6bks>ZlEl;1Be*PWFT0htS zV&;jTMqj2l9(~S6Yo>K6we=^4c|uJ`+jLU_uCpZ6qUGYF-ZJ(+Ux!k2|4<=?Q1CO6 zMi|yQ0>Q@Rvrti!V|&~;z)OMmVQWI9F0=i>!W!#TLQ<~gS-dX+ZTxqD^#BP%OXNXe z7VSmTp0n&R^RQLS58Q*LsGqQudS*!*kk+^F;g>pN2MAQ@w%v4l1HnQV$a&qbh zCjGzq%eRdb-6=0Saf(^p(3!gf1IGHBH(%uu`!4kDBpb-Xq~^|&(V?NCe+~{-cP>-% z3E}FT;_cy0P0h`|SFT(Uf0o_4Ok4S?m{H#M=kf7zQe|bO?_dIP75PTz^G&c9w@te4 zR)2qZeRK0%oLGGS(-mjpJDk4QSDjJ;T87{Rb7ES|QRn!=_J_fTujcm1meD5$lO)taDoEJ#mE0z42-2#h5d3c zF|Ra@w}#YpyWX7DZQ)ejbw0OfkL-v{-+R<5$8a~UB=_>OnXrpMsahZ2Q<7V_=X}N{ zws`kUj9aQ@Tc@&NBc*hH4@+~afBCiKZ3Ty@?3kagJKouZs`W0b#nvC!Sf1{O zu2|JCbf11)i*cN1L!)RvQO@pkmUqmaDyR7*tla+ONb)1&#m0n^iF}(o(W8k>TGj8= ZcEFMMiM&5fB{lt=LxREum$vN9`!DQKFfsrD diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/shareblack_pressed.png b/TMessagesProj/src/main/res/drawable-xhdpi/shareblack_pressed.png deleted file mode 100644 index 2d555afcaa4a570a0dfe2a66c109d70c1974ed5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2112 zcmaJ?Yg7|w8Xh2#yC5Q9?I~fn7z^YE2_z*DAc>?HmW2Rm1tcT`1WYC-g9LOHP!vT< zg(89o_2@1XUBOEfrD|lkC@Tv>)=Q}n7s5)G#ySt2C_1WVv#2*;C&QlThF zB+1@(8wvmb6E~?qhzR+c7-CpP5E*<3YMBB>13*BKS|Ji=KnN}wN|nl);ER?UAWkY_ zf^k$niLVHS(xhQIN+>!fLLkn`5Yr`KP#`Wq%|Hoc5F)~Ju~nL;F?FU_0m%b?O26hGXD z2SlSOB`J(3Hupm;^uz?y5JbTs60@?h2w6S^SeZ&B)9G{r2ZiE|dU&g{<%me_EmyfN zF|Z+(SSeK?Qdo{NFp84lOoR!dnf_LSO!1LcuKLg>v|&WGNI@hMNQRP@9QpkJ?<$jh z^j0BJ(C_*FPhyoITLBTHAQhac6r+PnaW#ZeFhZ4(2!WLX7~Zx`A(bb*Cu&Tg=Ue3SiM(o`*}d^=gsmV{TUR+ z<@#v-bQwo&fdqOjrRvrmzTR!@NU8BC&*xQ4zo(WtOji)9%fQxZ%%fkYf~wb>&QzVBEPjK(1gPUTkSdyN4$;3c2?DMqo8@-? zY+U0p6-*(O6HFT;jlPUY3CKE0GkQ{B7HM|Jbqbr4@6uaiyGnBT23J>N^-1vA`Gx4+ zTHXZ1o&5#=1g*e}wZVFu#@JP}!OckNba19E(PBKw*h$)SGA4d}2W?C4PVDM+blXtb zE6?1##X9cco^Elo@o3l49#8X&cOU-=DC&zFf1TreCI0MwhoZ6iw&<~0?2NnZL05No z_ip*+AtD}MSmD1Z;)%t#?WH9isC8iLB~uQEbHFa5ta}ZvOjD3fsr<&q+L~EkUmsSU zcCakaNO8^GcEu`3$E-7rjXhr{BzSX@_R*Xd3w5M|IMVr^o)#_fxf;{*KvyWa%A#LmslIanlo z)nKo!3+40q?RvdF(@4yo{CCYmL2T@x{l!y-VYQXz`TrPJ6ZNlTF_t76ZLVu8Ez8^~ z*%Yfd-K|hR%UM`hsAYBdPi$|=!di{p^#8t^G&{EbJ9TnuYHEu{^O}rd`+%G1&b+w{ zg&?oExVTZH(L6FSF^M?5FP>v`M3?kq|KwXiV&b3=nS9RWaZ@-xw=8p{&Zxb;{V#-y z@MqQwKJxq_Vd4tfvFDt`#KcBSN8@nAEH-52J*y!s%OW5$Ha2As=9cG8d&}!AGjeC? ze?BYeeAL_98?$B0;@7RxT@OFy?M^CR6Dw@@l)asuovmnSXppx&x(*KeKGlr}HM9}z zWV;8Ezd?>Y?BTiTb$_^*=tXVMwoAp-EjmgOEyxy zwD{eX3p-pWBLgnfeVp`l<{m)uQ8Ta5RIAOpzumB1l~mW33SHu2)Z4#}Gi_Mi#=@ND z>JmxR&n6}v&P3UJdYzNwzWQs2xb|+?_a-4ftm$ZYDsX5WCFPk9MuQ>eE>?J~^jMSK z>O~ElSZIx0z(!)uTFTyOF;9WfPn$Q>Q|#uha!EgG3fBE=5w5cHC*K=P ze)B`AOm*@d7;pu{N_zertIr1E5x11g)$HL89%1L-FFYwkV%E>kZm%NUV?4DHZc{p_ zzuY@7I^F@kFdOOaH@$g3ur`co;`&eFRfMD)biFa~0;?d_XgRoA372|Uq Sq@e^F?sOg}f_*k5DgVD`nox%T diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/shareblue.png b/TMessagesProj/src/main/res/drawable-xhdpi/shareblue.png deleted file mode 100644 index 5d249505c11b9e5ad3ba2e7485d4804a0526650b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2155 zcmaJ?c~ld39v^N&@K}RY@j(n%z?={QiCiH8j2cA_0TE3|h7d?HaWVk}Y@_HZXz&6o zqM)@v%X)!m)vTIDkOhglqAXNF4naIPM6E>-c4EcuAIr|0`5oW)`Fy_Tdy^BkHq^#y zi4_0v~q3X}~1z5(e9fiML`unC}8BKN}$Yj5JP5|JM++KWfw zDcE3=WMu{nMr5pw6lSCd86sSOKh`&$i3-R-M1W0~N##mrx*zVdE)zW)%w!z)GXzQT z!~GFd3@;4JhF}ouMe-yHDO4(!PA5@mUUWK@fc2nIJ;)UFr4y+%rWc**;f?+B;81U{ zD3KY?3Hjm+z4_si5JbTwlhe}DNNJuV2o{s63Z9GF5-n3vAl^X2DqIr3Quvl~-3M0tF zJA^aMD}43s0&T+yFg){I=kFvt|BXATHUQbAD&49T#clV(b0j>UUMy)RtR%(3{) z$R(q}kPWTX`8xWb9G!O<9qiRZ4nY85+QH?pBGZ3;78jRvJQ!2* z=|k&}F0#Q@noHbcycQ?A)0+pR99rbOl#`e6{oE}Zm&MEro@ZL+zuN9StMVj%FW%B@ zei_~>hnVkVtBsP9>T0giSl%v@zf=#^$KRuh!I(5{@h9WT-{Ce9i4L*v1=&>uT;$84t83e0Xo?s;-H}Y2_K1b zF+y`6qvO%B08Kah%n#>@R%LY?M{~D!LC>hGW_2020v{ec1&w#h%sVZX8s!<^+F+&L zqO}}I95b`(2&^4%Tt4a!m{*(VwBKJ+wD^p$-(`7u>!v~!v6`VD77~PaIY(ejWpH5QkaHcwJ#O-(N#hQ+M zK%-k#PIi|R-Q}v|bs6OWFXg{5e_YU&Cw&s?_}aC&dZDfXOx_K+w&xcBQModhBQLD< zuml2WIeZ6+%K$ZRIHd{44qs5Z%*7@Dl-izms zG;}_Rzr20lvvZY4%tpfUAO;+)UF$#rVDAgiWrknqa)SGe-$ zjOTN5I`ZEdpqUZhUOYbaq)iWu-0~2rtKOnls)iw%gX=2yla6B0h%-7||`tRMU5r_9Z;cIoi;j~xe&a?V^EFbZbMdIL=} zQ`nCh7YyED;}+UwH?F`IxEeR_-IIK$G;=biwLyP7hTU7c=j^|tIf4sA4iyb;7)5M}4Pf$90FIBwVhssVdI0XXN?6UtKJ{ zIbL6Xo=3N>R;8)}np^Jzgi!i;P7J~RrIwj`x#B|;XcWKplm+3%XdnB~z{FLDi3;+h zum7^28l5rx^%lKHvroNp$Wpy%9zggk{>6QG-SL;Vr>ZW%V}r`=;%^G0**l9%*hU*9 zOYlV)O^0>X*oJjm))DLv>`Qg8@vE{aiQ)klyqP|BvV(y2&C3m$=w!;CqZl3K)fqnciRd=D;aqx_|z}Aq{4zo6I+wXl(I~Vu^g` zFPm*`RM-=)x|SPub7=SBXSEjXb=9^26hC+2K_Hu;=Z!voWa_$uZN{IVwAZ#S55y%s zx!?A?9pRS#jkL1XB%ko&udz#3crFJvGaB|wgB*KZlbRQwza!3c-(}MsyXoN150WW5Gn!S24tdb}A7zhh1B`IxsahKp49`hUNE z-5FhFZ)tIVbLqBym=#}R9nnLtC4B2sw5XYk$@)7d_I zLSNXfxTe2f9`d50#kW5vpz7hh=lhbbwMlX`hh2BamXzL`a?}C-8r(m4KiCf&e*fIy LwVZQ7{GI;+dh39E diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/shareblue_pressed.png b/TMessagesProj/src/main/res/drawable-xhdpi/shareblue_pressed.png deleted file mode 100644 index acdc51fbbae0a55dd52b47bb76d58e848fa466a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2184 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/system.9.png b/TMessagesProj/src/main/res/drawable-xhdpi/system.9.png new file mode 100755 index 0000000000000000000000000000000000000000..2d50ef794f5a877dca89b2222fb79bb98cebf9b7 GIT binary patch literal 1276 zcmeAS@N?(olHy`uVBq!ia0vp^N+8U^1|+TAxeoy;$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%u1Od5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|81#=KlDb#X~hD#E>34K5C;EJ)Q4 zN-fSWElLJPT$(b-ssbzLqSVBa{GyQj{2W*)24v)y za&@wR>2=9ZF3nBND}m`vLFjeDsTY(KatnYqyQCInmZhe+73JqDfW2&$iQ6p}IL(9V zO~LIJOPqT3fsWA!MJ!T8!-RmT2gHOYTObFX@Kf`Esl5o8tbKy3_AxLp7I?ZihE&{o zGyS07VFRAF*`6KT;bn}XEanwm`xwGc#W5+)<5c@5(9@o9ytnZI)0_rorfVPEi(?b8_sX98V@A-aKLzQb<+f4F_bJCW%w8_=R(FZ!XTeELd?yab zMX;}aGuOO;KkuOE4hHl6zmB+dG>gn>){nif_GI?C=>2~d=?StwaMjOS|KLRU3B$jO zm#tw?FKv~Xlzcht!Y%ujGhShnr!a32d$C|f%RTn;bt$%&AFh4fbwW&{G3>#ozy{gk zGp9Q~@D?))a=xATnLYG0OLtaUcF;1dJPyuEhS`^e&d<8~yJwT^DZ4Xqp^CeNBz5n9 z{@1G0I6-65)}vl;Hz%0P%VEt`(0Fo7?MYC8$NjL#?FR!^ynNgAanCYyHrvLGFB$r; z9YoF^Ju!iOkJdB8n0fxm66#jnXH1_qT>aW}uBB!!^R)LTGAFI&4ZC4I|G~sbd;OOu pZwYa(5bE^Z{XSkh=sptHV|licww%% zCtnb2af8sF|Bjagg=RXnmR+^^&A;dG??>lm3fRs5wYbLC+hV23lrY`oJMLXFRFad4E3jW0X z_ilL9_3|NOw?e|l1{DsE=}{%$gPV1N>Z;1MFYb5AY8O@3+jjZpMt4!)3Z`}JIi8}Q R`HVnjdAjl3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|81#=KlDb#X~hD#E>34K5C;EJ)Q4 zN-fSWElLJPT$(b-ssbzLqSVBa{GyQj{2W*)24v)y2=9ZF3nBND}m`vLFjeDsTY(KatnYqyQCInmZhe+73JqDfW2&$iQ6p}IL(9V zO~LIJOPqT3fsWA!MJ!T8!-RmT2gHOYTObFX@Kf`Esl5o8ti{d#$}uo7YIwRhhE&{o zbIVrfV1NkggYR-$Qxn%H@Op1xTH6#Fu&HB7il~TJSOTZX&Bpy+PrvV}sL2vsL6UMw!@u|qv@O9odOS5;ZJ1Oyg_IhR4ssA?0zJ4)hC-a?D<%N6t zSNv#jI63ZLxfo_*yw!=v*Ij4T2U*oXu6O!t0jPfmZp-7xvU zyK4CjLL4`KHAE;Vd}HKJ(OvQ9Sm{2dLuH>kOhubE$f~dV{5YIL{>_GCCwL;2+C`?? y?eN=n`$nm+T6X-KVEIXU|5g;={U%o?n83hmYJZrUB{UvXj(EEIxvX+nF~2 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/system_loader.png b/TMessagesProj/src/main/res/drawable-xhdpi/system_loader.png new file mode 100755 index 0000000000000000000000000000000000000000..fe0a9e49dc507922204de97f5de608590e54ea0e GIT binary patch literal 1966 zcmaJ?eNYo;9!><5Zwje^DbREUl@PaqJS_;GL&zQ$QT+qL+A*OS(5__6_uO~sPYEKDm>BZMdknu$>O3Xv2^ zLPQdMPCpV!AXowNlvFHL5D$q_1x;kZ&~yqF&L$8dx9C(NaW;ZcG7+g<$pvQGI{}JZ z!UcA-1Pp;H29e3*^3+IjUP6jEFI&u!09!UwB6Schpg=GYMW@)O)Id5e@JbiL_ZBl9 zpuB=$*<9eapi%`wN(`z-C@flNu$TdY6gHa%GFfakNTq}@zz{kEf7!tx6JoKUkTA;Y z2f)3lC0S4s%zNz%KXCyWhN&PrU8~j7w4pRqEv17T4#%Pq5)zCff;D<2Cej5fH5*qH zU_>KU%T<^hRZ=X9qD(Xw;{tf3zonp1y^&RFUY7|k7+oh)(Lox+lF|xLAo%}Kh2jlb zgC!xq$NN8pH7R-(LQg_8Xs%j}H!f?V#gz(*Q6nM@Ri~inzLhEpWhjPfWT=V~lgy?B z?3ODfs8;ibS9pN{;wv?nNGV46Fc-iTXmYs(3IkzQR8$Pe3kSnNFqXxMj)r+04wDnZ zi)ON6-U=5+#kmSZiLG!YzjH%Y0g7PY5NWN+;(Y#glUUMa@ z$HG{ZOUHwuTN?Xcjb1U~(_`7b8C(4DX7CXuKJ99JtUv5d^CA$e0X`g+qPz3Usarcz zc6#;=#h1618b^$_4vlABvWI)VIcDr(zSmIvWnhh4VZC5sQ(RStdu9+TZ4@{!fTgxXLwq{REx_wp^dwRdk()Uw`220C( z?)w->-ns2aWy_iX-?|0FC#|TwKcu*YIOV@*y1N)Edt5TMx!&hv^V8BkyG4<|VZ685 zE7HzX9?;lgwJd8p!g@*g^D$%}cz4}cKcjeW%DGGB@#EJ5Bu~eQ4RZxBk-e#8dm-fA z`p|6q!A~zRR;gj9N!u`6_nG=gn3uzZ5|*7KczI5(g^5V+L3 zH&N3S)Bkaoyvu#W@YscXK$uTnFxOhaM(WFUpOSBZkyE}5wbxPSf@cmhe&ND!adVu; zet1d`-a!f`s;keGJiFhsmHJ?+!;>rPoaOxjQEz6-Y5>_>cNw5=9KOY>8!@d@?3b1e z=1sd!I}VRT?6xIM?g}NsZfq)>k?2QnWxd!@;plPdCaGTZ zyz^2i_5M<3mhq&W?#0_fH+RhydPP+eBCa2sv8&i~zBbIEF6i zxH{-^pXT`-u?p=DI#z9S`O&ADohLrp@qO)unkrrY-P%J@|F-pW6E+qIOENxxk~cxv fOFEhMtBohYI>3{*F}3NgLj}NvD9~ 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/addcontact_green.png b/TMessagesProj/src/main/res/drawable-xxhdpi/addcontact_green.png deleted file mode 100755 index fd4bada3d43829d58fc503fd56b63d988dd501f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1012 zcmaJ=J#5oJ6t+MuDA1Xo0Z#4$h}f}fCylA8oH%JCaEQ{NM!Yd;yEJzYIXrd_yD#}lZ51Kop^VxlPsO13@?t57%R&#b}`irP$D zwK}eAMZ_&~^!%qDDqTS2t!L22*g_a%B4J{l_%0Oqre(wUp-OVbdCKd2pgt zt{JTvBWu#5hrviF5dj-w9fbC*<4d7Tw{<15j*eLxv>|v#rq_e2YZZ`39t0vYlr&Nt z2hwSV6U20yI|%p`$FnK&rIVZ>iD`+?fR53`n`btps#@&$B0HIGV(dyR8w3Fp3^B-? zX1Q!O8)@)-k|2`)yo2>H>G*@Of(m`Zvs`Q;2Skec6q>^_O(I>tg6(!?9lw(%k}x*Z zU6x}~(UoGLru`pk+g-Get8gRUe+v7xc^9%(=%YE$AcboTMy^~b??D|SuZGZUoW)8L zVdOWF3-S|buy4|GOceP0+jvcrN{)|p$ABeOrilV$S*A413ra38@S-@J<+y^Nhy^Yu zWQzF=mn#UW5OY;z%-PVvG1uJS4)x?ltzf&vvkE=yEHsNAvO)XGlGQtwR8PGQ*X$h& z*OSYVVA!aze-%1DBHa@$yKPH0-NuIw>2{B__3u{~FOetFEU8K@eEa#0oLEe4?|)f* zaCN2Jy6ZSCwJ$ibWudZ`=|8dO+BxC*^l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|81#=KlDb#X~hD#E>34K5C;EJ)Q4 zN-fSWElLJPT$(b-ssbzLqSVBa{GyQj{2W*)24v)y2=9ZF3nBND}m`vLFl!_sTY(KatnYqyQCInmZhe+73JqDfW2&$iQ6q^IL(9V zO~LIJbDVnhfsWA!MJ!T8!-RmT2gHOYTObFX@Kf`Esl5o8tSyYPWEdEj&U(5yhE&{o zGs`wZ#8Kq<`*R&p8cr$#trCVEoG<3eXFL|y?1}mzxIt*krT}i%PR{hj9O0T}SxZ}6 zBQhVePdj+(5XU3&qB$`Og#>!L1gFl~zuZ5f@Ar(myKl}uSp6aSU77jj_xtmoy`6nh z)q82sp>%Imo9){g!lK<5%RVXE8MS=(1M8Y~WsYXEOU;;yA8^KeF6EGI%Dch+cOU13 zg_c4)j%(g$dDFh{z<1^gkGmUGdZx+F=2fp1+`xTFv`@ax)s91Aby1DnoPyW`X*WV1 z|1q5LepACntLNf}1jAWV5|$qa;||QN{Ovh2oqUyFNUV7pag};ymCfIr}wJ-&Ynp{i{s6e7}VRLO5!~ z77BCBSsCV+-(1Z%<>#cVa81YG3oo7vpTn%N+rRkQ#jU5!C5|1hxodeKz{;=qqQUAT ziNPDBpC9j4H&o)g6w?~1TUIAj_TZ1p3!Rn@TNCr-IeVU}O)j%Ox4&zSo1mdb@$Q?Z zJ&Chq5B*F!{GQPzXTeVHxrUbiBTfm;nV)lN_KZHci#e^^4K4JAOD`Px8L*T^*6wnU zW&XvV)>etj*IaQbi3t$&*R`l;{#MwZx%#M#d4+%R$)<+lFMo~KWtFUDWz2r0v)uR| zm%`Gr5RFZHx*Y0_r?>RFnLa)7L;SVMuDyjECsf`<9$U(BV%1A4n=O)eLr!qcF{$y| zWDvz4H0gBOb%Q+xicF^y9eY0qZRUUZFJMF6e%93wHTGmjvScmUwa6~F@)iH8n9tmL zhq+?6)vYZ!E41j2=<){tUB@>E9sk|qDF5h(q-c?At81P75+%Qco3cA5{Mfy)RBoBF z3bUlwCjVL2Sc8{T3Y3-WtPOpfxz^|P-|3f@Sk&l+YW&Svcy~qMMzw?n>AEc+nJ&n- qf80<%J?DSeBHah};vb?L7#ZfN@BAJ-f6G!(Vejec=d#Wzp$P!cHfP%a literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/attach_video.png b/TMessagesProj/src/main/res/drawable-xxhdpi/attach_video.png index fd4e0ce8ec81f2341617d362c32b53720abeacb3..0572bb47df68fa4b61e54f72fbc542983b3532f7 100755 GIT binary patch delta 3152 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 delta 3199 zcmZ`*c{J1w7yeDd*v1lh8^#`Kv5b8QnXxYk8EY72iKr}N*GzcHXL&7UY}Jr3V;dTZ zkOpHb#xjhxY?Vnw$eX3F_nhzh^SyuF`<(mS=bm%Vx#uaC>XD+DAG?Y&)6zyE)YTE1 z8oFv~W?CpsH3U)*i7-RyYNIreI&w16A$Kla(l@<*9UJ0zE5gduQ0_OP;v49z|39wA zzj5=*jv@XpfcUp2IhpVXM?Zgk-+vcS`!{Z$3K)eOht(bd0AGuhDbgu=dhO9oiZfcQ z_sMrDA;G60u5^FR3n1a+Ld3vhD7|T}@2G(uzT;)61qO>dS9}_u^Wxw`NV1UDi0KIT zn4r6@EGDq*n*BZD)ooBxQpKs#&YABoPo9!X4WA)2O&lHiAD!yjY+Gx8{OMO+)1=oI zH!UW25E>Y;=7#`za{|)1Gwqr z#)f+vOzft(936)dZ?sm~IZ0NFe~!o?H}gNi z?iu0M*KNm7yh6j#Hy?R9)jGCcvP2l?k5}8F6HK&hne{~3axq*@{g~^IsEP0zms)3K z7sJ{hd0!Z@J>CkN#nxnQh8#o=gEg+CqX!31)FX~ z`xiZpHQS*CHNcHPkUdyx>+RU$F-a0RZS4r6`_9?$Y0*Y(iX@CU8*jG*X3Fc(|B}?$ zQvbeFy!GlTmOExHNFX#MAVgPT!V9Ni4vu%&;bIyvk1vP5YS3=8X`(eL zL%y9T9&I1R&YkL;85gUIb;CB9Y9>gfgT!ZF99^~Y3PNhLf+oK>;hc85fxC$L1P%UE z7sIbt$v-y}K^TX!blThdsVCi^$SH>RP9GRC4aq|=8E+%i{?Ye*{av)eD)-ftQkYET zI_^gd6B9NJhrB9)_5xGaRG;6i|Ea0>NmAQ02p&rJ!3P(}_Qyv0#~j>M*?-8kfXR5) zxy+rZS>OSsj|@BMBn#DB1DP?YL8oIxC0t&zm>7Js;;%U}Y1xqy@109x^FnSIzTg=v zQA0T7Di>(Mh%2nYH~W`*gspiMEzyYpQFoYA3+; zk%M{6hpgcrG;6Y%2K%ri@htZ0F)t@hWqM@Mp*dC)vR8$yu@o7E4Q&0>uU0NtI42cWV?UOrO zwH@yOq5SD+l4htI>>lCo24z@a`PEVn3luoVB?o4JUAg6xw2D9WJYBHf#E~4vbC?E)QoR4Ef+b@UauV9=6M5LS14O_ew6x{QSl@+fplH(VJy0( zD5z<=PLQQ`w0QVyAWKOS=Kf_u+1;L8KL+kr=FslD`-(mde?g7IcgUW;$dSZ<@8`Y& zhqzgW%=M11&p{n#@wngFYBi|!z6Ba5>#o$xPSC{bJs(9GzStz;?4i7y^l~OB zg?C0u_M*~c$HzQSijYWOp{$V@2H3=xh$VxFZ=v6MfJg?;O?nZecYSdEOFRNEd0XV` zym!7yoK0={9jc>v+Kf>6`5A-O;qcWCZ*RKmdhPjEt{X!5MW_r6Kp5YHd`3zTWn%X* zfIvIGY%fC)^4ab;z*Yku6h?mX5+5UC)m|V5OWQvpq+{`2*KYazo_$GC8VcB-XflEk z`9kqHb-{Z;q5?m-?UDux*=8dM`1!vOghcCn{KH?5I=L3S!By@c8T(YeSR^rp%|JF< zElpH^mLldnhVfo27BnH&c7u4!M!3KSsk+9(uT!(4y!6UXM`Y5^{MdX;kUvt@h4NmU|JK;njGq zR?s@!f)y6)-v&7l~203v4(5b;gAKG72f&0n@gP@Rx@G&hFunt#`P6cjvi2` z{FDd3Z?3d61>jt270k1bH-A)OqPg5k)?d2H6$$w1QC$ok>~i@#z`ppPwetT6(4*?O z+8GKZf`SX#ysvHTm1>~q9T_kbJmvt?zp*cLLv_;9RFy8HLsp5Bj{vi#i5B-2 zsks(t)gBD6k)b)xJ*#S6wODRVGy~Y*j%?O!hA)se9T@`)*7tOd zE;FBXzuvaR<(S!_aU=m!b&6BK6G(+a)DXflX^6d zMRlJBBM*ZDf%@oCncG!E*%`YDi7so0w79v{bW-#ljZco&&aEw9ztm-YnN$B zo#lBPr{K2i+ym6=yfMpN6G%j~3>t37#-&8`e1~X?um*GC{m(v7KD{I@{$1mxkWDXH z?LI;J<(g6FrO1PqJ(`SxsXa0%o!i+%08z2!+y z9ty71g_M<-Ve=7LP5CpV*E;M!=@|Ul--Mt7`76QpO3mdlFQXfqE0rLK;Dy;g$vm{7 zMmdW1uR8fF%r`~^v>bQ$VeSJT?@M+cQy!`|G_Jgc9-5!a;plE2&vZI;El?N`E?#M% zp%qD9=?f|6j&t^EqdfvMku6CnB zViSyb$bws*Z-~lZf684$B~EO1+`MqJD@J(LW6ydSNtLS}Lwn~hXA9&zQr8Brr@_~4 z2@-tFYxuQjwAKVCR?Pf{@P)iV|0sIZk#h>X?txNgYjtC~(zIE1t!7LQ?BknxqYlpCwVr{7xAu}N&<44!1qbHb zQk0VgS%u*1W)-;F$^F43@}+D}zrP{9B_IWqGy7hjd99K^84i}n$joh9Q`^ZaPn-%Q zFQJ?6%_gDW-~GqPO%4Hgko!AatfGcVJKKrbPc9vj=zz-pc=?68V?T(#OxSLLfPF2O zjJmj=R?FKohRDtvSI+Bg3-5ltHP(9bQLuOSb9nFOOIus`Hzt|S(6951J diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/attach_video_pressed.png b/TMessagesProj/src/main/res/drawable-xxhdpi/attach_video_pressed.png index 292a0c3d5ec40db51a7206a6332e2aed95b506e1..edee8cc9190941bd0e7868aea55d08a293489f86 100755 GIT binary patch delta 3804 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 delta 3248 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/bot_file.png b/TMessagesProj/src/main/res/drawable-xxhdpi/bot_file.png new file mode 100755 index 0000000000000000000000000000000000000000..3fdbe9907e66ec3e80d1dc49532eca5b288d76ac GIT binary patch literal 1334 zcmeAS@N?(olHy`uVBq!ia0vp^4nQ2h!3HE(?k{!)Qj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS=07?_nZLn2Bde0{8v^Kf6`()~Xj@TAnpKdC8`Lf!&sHg;q@=(~U%$M( zT(8_%FTW^V-_X+15@d#vkuFe$ZgFK^Nn(X=Ua>OF1ees}+T7#d8#0MoBXEYLU9GXQxBrqI_HztY@Xxa#7Ppj3o=u^L<)Qdy9y zACy|0Us{w5jJPyqkW~d%&PAz-CHX}m`T04pPz=b(FUc>?$S+WE4mMNJ2+zz*$uBR~ z1grP;werj>E=kNwPW5!LRRWrzmzkMjf~fH{644~kf%h=vIPQxAv~Ud(|4Y!9ZZuGoIzo)b6!0Xx4~?wYrh%v#2oytPk8>Glb(O#=V6S9#2Rb$IvM->OfT zZn|4J`p@NEU+Tq>`H$}=kCnEhlj)v$+IjnWC$J=lT5_3bSv4`pXjDJjti*9(+9tMY zOF@=|NJ)pe!j24LqJ5QSEnXi#&u3j2^zV>&-vU_$%O=)_B^+T4lN2MEJem@C6|90|S#l1H&C=3q}@@Fpyio|9}N31m+&F zZ4id2fXRYnW-vY2{ovnzmIsRy8p;_fG$bCxF|f6o>DQl@=Qv zO|$A<{B9qApuVa3j+nu>=_l6BVR&5Kpzuaf`h@AHXHPn&xW!Mj+teo0KWq9g(F6ud WXaCjne#Nc=m1Lf-elF{r5}E))pSNNF literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/bot_lines.png b/TMessagesProj/src/main/res/drawable-xxhdpi/bot_lines.png new file mode 100755 index 0000000000000000000000000000000000000000..e5d26151c784cff524a72661a0183e863dba2ca0 GIT binary patch literal 1336 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n3Xa^B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvv ztM~P_^2{qPNz6-5^>ndS0-B(gnVDi`WNc#L=;rF?=3?k-Xy|Hc>Ehz(ELMkX4ceyZ~la1ZWn?a1$1(@Y}m@_ z($OL0c;uLx6pN#4PoT{C*2tJ?k!5L{tSvwI2ECcP`SY&wYiT`^a|3i*>~=Ng-m+ko zJIGkiSa~sIyW_0CtC`qRl9Ltnq8aBj?^$VDmMt;m;FQedAbtzR)yu9$EYZE7+SQxg zr*-yvkXt>46iAHEXS3Hray zf89Lh>ILRavHoq@iym*`>r*n?S`l}?a(TID^5Yd*;wpERv3?L;sK}dfc=ygp5A>Wa z^Bd@UDV%eheo=ZwgH%RC(1FjT0W9M8SSB%iZ7|Pksx{zz#HIOJh^MP>^<;%6v%?eI z*4eRX?zeF~+voqlc*a#7q1kmu59Y>*vcxs^xRqu#rp~<#F|d;FV9s?r-c16VYdy@_M=B{#U9^O!7ZsUrrPME*~uZOZs2^?I|mh yYuIKzxbQ@s$G22yziym*uT=Sy#c%x^7#Uc9*d^L6m%Icj%RF8ET-G@yGywoZwbO|J literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/bot_link.png b/TMessagesProj/src/main/res/drawable-xxhdpi/bot_link.png new file mode 100755 index 0000000000000000000000000000000000000000..411dc89d87d58c1c5c10ce00d7d229d3b0726467 GIT binary patch literal 1095 zcmaJ=TSyd97#_^TEKP#w0?9BEXtX;syY8x!t8P29xzMPrD;XB>Vn$9D9| z5`qwV=tBBb8A%r~tcMIh;JrN%l?hj^5eq2`txjN8@>%qEDs2HTM2BtT?0=u!0mwK6?Rk*X4)j`>7JG(w

DW#DcKK z(w&b>STUPAD9U{!>*5W=8&u(s@^`f^t4xh|e#O7Pz`lf`X+Jf-?x+H%Li?gy)^nth zW{OY9Er+Q@Mc+T(8ZtVvu(}DYOUEwymBEg=>4U(nxS4uiTqnlt*r6>j^)m$S6IY5x zsZZ>(X7#Ge!7p8N-+w6i)Z|+86j$PW8<&kl>Uo@lyJGY&$$ftiyF67@C&ZrT+jh3Y zQQ756%%YSCha_LmdY#s;_v~QXBfYj-M?&8q3OYhNWOx`b3}zmr8O`oUE9bDSPG<35 zt!jH8wX(t>fbsbVD0(cp6>v_hzZqfOKtLQHay-xHoeebJ3_d z;zDOl%V}^)GkNUB z&E~V3>gA^+lbH|8Z)9!~RTT%UkjYFVb<&R+Umk7`9tqj4w9UP}I}MwB)%NTc`w^w8 z{sF~Hz gOVX0s>lQ2m6iH2H8{g6l=5KZ`4sO(Q_Wp_g1wf8pga7~l diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/stickercounter.9.png b/TMessagesProj/src/main/res/drawable-xxhdpi/stickercounter.9.png new file mode 100755 index 0000000000000000000000000000000000000000..a9ff07a7fcc1815e124771e22256da50b96bed0c GIT binary patch literal 2068 zcmaJ?dsGu=79R?Npoj>q;v&TGwvrbnBq4zVNq|_wGhhS?hGc+%$%JGe0j0G(0*LrP zSPex{prA!+yV5NPA`mNzfZziJmr9^ZTm-~jW$_ecCsyqKvFx0gx!-rs@Atd+yZ4^+ z6@>-|n44`i0|3CB9motvY=Hh-YmEFOzmK*@j1A1FD2+;&DPz3`ho|h!_ud0S=Exkw_T)E+UD9--#mN@B}Olc}ed0T~s28O7KLz zf6z!YnJ|$W&h&pD3)#`p$uKOXVzCN^0;BN2K(Zt(oh{NraF>?)DDP;ZWHUIn0*`KsJ+(Miek2k&x=iV3Jr&f-j4SL#oaqQv8WTGSSnI zLGi=+GkwV`TqYz)7lRUbg)97n>$fUbKMGZvaUj~U$?~Y6rt)2^cRlWCI z;p(|iR^?)mWU%_i{#T<{T*&n3mmkI!*?bs$P=ZXm3>j<2#HS%+EmhkTQF&zMyh^I7>umLvD&n(Y;(1I^5M zN5|<#ZvIX8>EOtw=)t;Y%WCM?%GutznYo#aMBUQKFYEY8Iwsk(zcxtTohrzW?_gf8Qc*X{$G&t5wd_PR{Bk?WdG9gCwVazp0T% z`Gny1+6FjuKlBl7NOUu+-Si8lt^T9MPY&AsVy>v$DF^Bf)kk7;PW)Ihxiiqz_K;g= zogHS=+fd8ym{Kkoh*0%yi)(t#Zn0JD4Ic-33HwvVw|7--?RtSt|9C^kK+gh|7PuH= z{iXZm2UZ1|T&U5cPUKntTeM5=OTgs*E26R~5L+^p0XmgZ%DpSfC)7XhaL7hE_zjgM z$Rld6M@2%FGR<@;OJ%<0>fAk}5Hq0i6QwhdAMau|lHQPQV8EzYyN5g-b*m!nQQONG zSRvr}I^=$2RvvA$gIg2^g)IWmG zX>9znbl{sQfd_qDYNlpX_3r(&De&2)@v;=ma#Ogv@%V1I>K|WAm!nGTAFk6S45fJR zcMj|;OKaxMMP1ot#gc>M{EC9=y@W~|#L#T|d3}sQo=xyyr_Q?$=UJJ}KX>y2@2F4K zWV-g0Y2j46!&yP(rrmP`H0vMlsPBK9>6%imZ5yUpXP0Ve_i5JGPH1-_pb8;5glNGs zC)n;dIQKBjzs&v|(+@$Q<7g&hQWpi5rZa)r(i;PvHS4g83m=tggaIGUTeXIKhuNFGCI(r~t5O zb(T19UzPh>Gpl_1tLA8`47hN#^$}E+^SbZFFlB6eU5=C8$SKW}Y-82L=LSy-!TQq; zEx^-u+*$a*j1{iL_W3oQ;z+}T5))C@*S9l|<(^+Wd}e)n)b2$(aVd6)VyV0Gn7yg< zk<$^A=QU@NTbIpR!W`KK0})UFeLl6lc+yq&k+a)akMjkGF4xU9_GzYt~No$T&@Gc$F{<=Nl;VEap@94KxSb);vWVtV#?oN@3^ zA>ZbQJZZD`E-$s{(qt~23y=EOna?Nl!!kU%TRu+o(Z+XOu&JK5K%AVmzlcAJj3*{F g93Pn0OkD;Hfw*A9q7q=#P=8OeS;5Tj{PyMi2YRzn(*OVf literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/system.9.png b/TMessagesProj/src/main/res/drawable-xxhdpi/system.9.png new file mode 100755 index 0000000000000000000000000000000000000000..f4b4f35ec6b9a59466ee517e2883cf6d2a21b06b GIT binary patch literal 1479 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1|;R|J2nC-$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%u1Od5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|81#=KlDb#X~hD#E>34K5C;EJ)Q4 zN-fSWElLJPT$(b-ssbzLqSVBa{GyQj{2W*)24v)y2=9ZF3nBND}m`vLFjeDsTY(KatnYqyQCInmZhe+73JqDfW2&$iQ6p}IL(9V zO~LIJOPqT3fsWA!MJ!T8!-RmT2gHOYTObFX@Kf`Esl5o8tosyZuVG+dvi5Xw45_&F zX4ZLqW=E0Z>04b`%-vm-0`1p5S|GEeX~*PW;(va`tH@Yp77I-2S(@ZNF=ZhXC2fmzN`NacWCg+`{x7PlG!rosZIeI+kH9?d|nfogromxc$W|}d)wRU$qz1^mRdM- z*CXC@OFSACKWN4(e`fOva5*q%y6L8jf~c)3vC31d?_SJr>$=cTeQ@vXwWhfnS{`lm z^~_rv$i3-XVCRVitV+y66aBbdcBv}migj#x7H#p%KlSjmtd?MXyDP4*l>P^*`0JWw zAKbBdlH|zdNmD?Picq$boH=fw)qLSEnqSGbi{s$A+&l0h&FV4Qck}z@eo$b!s zYg6tfOf-FIZSCsucS^HTn`ea{`^DDNZ0C-his$s~auVH}+pMxJWa6pi(Wdjbj=Qh= z_4R(S0pq>TUVoM+vmWK`X+Evx5mR*kWzo`)`hV8vgatJH>MFY5lzZuS;tLfI){3$j zkL;N2ub#D?XQzAlyU$h!^Ied z(}Dbt<|s5NypsudUq8Voy(hqTQdnZx%kU5U7x>SvTa{@yyN>nm={G_5S0=xjwrl;G z$3OPPK5RFbX?At3z~T_|eY-n8Pu&&5_W6y`zIw6cYbDf}wia8&J~jBLKkZ@8!jxR) zb8;Tn>>kZ&Oqr{EPSoR?=_7`j*X;M7GI(&Hk(r%O#-iW>2bhF#55fcw2!f=bYMP)b zL0mt<i;-%fE?Kh+Zw(G%i%JniV>le*oBQS#6Be?K4RD7oz0 zZ_C*U8!IYb21uS+So!!<(430R*}V$+_usrS-OKfzyU^D2*Yl_;M}T3(;OXk;vd$@? F2>{;HjD-LI diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/system_blue.9.png b/TMessagesProj/src/main/res/drawable-xxhdpi/system_blue.9.png deleted file mode 100755 index 1321d3c150477c0cbfe57f8b5085f5cc92e2dd44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1309 zcmeAS@N?(olHy`uVBq!ia0vp^?jX#;1|&l_M9Bjw$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%u1Od5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|81#=KlDb#X~hD#E>34K5C;EJ)Q4 zN-fSWElLJPT$(b-ssbzLqSVBa{GyQj{2W*)24v)y=Hn%i3G;}qwG%+-DayGLxa58hW zur#xP>2=9ZF3nBND}m`vLFjeHsTY(KatnYqyQCInmZhe+73JqDfW2&$iQ6rfIL(9V zO~LIJN1S@~fsWA!MJ!T8!-RmT2gHOYTObFX@Kf`Esl5o8tW!HqoM2#JoapJ|7*cWT z&7FmQhaF^&f6QiH(WN;lSL2sd$Ih3XA4QxGIrDJ(GbU{=7T$AolIF1li6aIMVRh`X zJF~eDD!izzKY8B7^uK@A-fJ->RfVZ_vp-LMeCE&RjC(5#E^q(tX8&Nzm5|)kol>)Z zr7T`|wbe?V?^m~wk4S2$1@BjlnYte=CQ@g9c_k2*Dy#aDb5=N)RP+}C0WEqyOjz2Th7gSn^A*%tCk zXw|XkT@7sTK6B1m=**?PJAw-rPnBNH{%YY*n=gy<(#!Tfz5R8s)%N!@-UfY|H2>z* fi$Q01GcYrJ+t>H1b^qIBP=V#?>gTe~DWM4f``g@w diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/system_loader.png b/TMessagesProj/src/main/res/drawable-xxhdpi/system_loader.png new file mode 100755 index 0000000000000000000000000000000000000000..d2c6ec3a319e0d6dea2aa8a395a53b16b0e30a07 GIT binary patch literal 2517 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 LNkvXXu0mjfL*5to diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/system_loader2.png b/TMessagesProj/src/main/res/drawable-xxhdpi/system_loader2.png deleted file mode 100755 index dcf5caf473d2bf913c4d367913050c24f9d81c3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1596 zcmV-C2E+M@P)8&j5?(KWG=kE7ab>(%J7AXMsTfcytyU}6<7*bb)+MMd|<5PjQN3g5son zT?E|nmPOv*6#Lq`#EP=kep+Hu!T+;Eu|)BJVg`3U6lW|N^P3dEQ~W6{uq%YUPBANEl&$Pai~BXLIL*SiySqp+t+?1pQfc0ySnM=m z-0gi(V6|5?d|7adqHen|7Iaz4^NydikS_8U`P@2T6C$hMbQgRL_dUf+TZC1lsF*d~ zOGBjnqg@ym7N1j$8^GL^Zc?Q%?)tux>nm^wm;bl53FFy{ug$>>I`}`2DQ*~_xydqw z@eKNvE-WtM!t;?=DfZF`t7g!$zJ#nujLZ0*D(7jQJRq`OgNw-UU5HQ15Y{WQhTtGJ zJnQp*k;1Cdv{4Nv=Ym8b!Y<)DD-+(M7|mN4-wi>xSC3{AFXVl6j z(+WE&-61H34@p`zjWBLq738rnhQk_2J7E(jG)iHHT3JsLVecS!rNGtVTXBVrqIH$Z zG_|ry9AVSQS?OchR8(O+n{f&`E1h#uh4BP$5AszyQ+^Y}e!|WoS1PFbx$p`bLb0KW zP+_N$BUOx0w>a2N7+RM;CWC}kAxtIXLBd8*9jat3NEjB@=wyJ#v15M1&>iY!)K3`J z8S3S@R~WC2$C7J{gdIgrR5R=qhBfl~3y&VRup`KcdXBh-VO5lV`n^R5&`qCPSPl75 zPYuHCqSq}9YY#1tc6tAC2SX|P)`%W>|)m~>?QJ{o`zdk6Zx=9*cS4k8ZHX| zbqm`>PE@nqYPI&=!s^J0YUjhKVc6I?vH6;iMqo^6k#lD5&0^edw$;xT7<&~b7GxGc|4`owGv0z3%>ym z6h`0?R@Ed=0=e>>TGvt%VLU_p7xGs)^X+~ZwvhC$@j3Gfi~P!uMtE(Hk4A1?BK zY=s;s7GS>RH%>q6p*bvfIdKt~6!%FjAxl}(ATskNWcn!&VayK2H|AhwA4KDkv@TPIFoxIT ze+y}mW!*^oOS0PTfp^lmLU96KeEEaoj^7VLrVeux#_;AWUl?pf>*Xh@tc^BdP8WOG zVE=okFuO(ZpxuMY7Usam++H%>yTcAo;a!u724jOThR@IBL#4ZI^UP(rC~ib~uqI*7 zxb~6hjstjhWV~94^CWG;+^vnp9qUk8JZmv$61?qLt1#zp@z^$NI%m5-exn`V+)X@9 zr&*Z$nvD-c<%2nGJvxM!Ow3F7m+E$t4Z<9FpZpnfaBgwUq87#1REs8~`+_zJbLbOk zZyLS(=kwcE@0%P}L)$3K4WBV`MykrPclxeNOL}N>Ts3C9FbAG7;VG^$`8ZO*-{jR{ z{C?s!xt1#A)={Sj^U^Ew`0`*_F2>Uw?z1N?h^1_bq}4KBSf>gLg0JiNj7ay%76ayR uAN~#V>Q)wxAT`@Gb(=8ji7V_s0R{kAlW1F!HXn!p0000|6H_V+Po~;1Ffc1+hD4M^`1)8S=jZArg4F0$^BXQ!4Z zB&DWj=GiK}-@RW+Av48RDcsc8z_-9TH6zobswg$M$}c3jDm&RSMakYy!KT6rXh3di zNuokUZcbjYRfVk**jy_h8zii+qySb@l5ML5aa4qFfP!;=QL2Kep0RGSfuW&-nVFuU ziK&^Hp^k!)fuWJU0T7w#8k$&{npqi{D?ot~(6*wKG^-#NH>h1eo~=?wNlAf~zJ7Um zxn8-kUVc%!zM-Y1CCCgTBVC{h-Qvo;lEez#ykcdT2`;I{$wiq3C7Jno3Lp~`lk!VT zY?Xj6g?J&i0B&qvF*KNf0j6J(SfFpHX8`gNOrftYexnUy@&(kzb(T9Bihb5uTZsl3!k| z30CjxYvq|&T#}fVoa*Ufs{}MbFEca6%EHXq+11p-(!jvY(a_M<%)-pr#nr^o*u~Av z#mU6X5T@59Ke;qFHLnDwHwB^B5vN{IQpha;+U$~Alv$RV;#QQOs{r=0RVHq?nBz1L zsy79rKd6uT}?=ZR=OuE zHAOtByk~ff!~Ol{NHxz*x6}?b#`HXlG&EE`y-6=!SiJCe&x`=oyC!EpuXH+cbtl{8 zQ+AaHKbj@U2%CSlsh^`2B64(cjPAXare98;4N-h_Eh#wb%0chrg?@^wzi#Vde9pKt z#I#wye|kNCfdI=vR)P2R0+Gt>J4HS()%= - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/bar_selector_audio.xml b/TMessagesProj/src/main/res/drawable/bar_selector_audio.xml deleted file mode 100644 index f311824b8..000000000 --- a/TMessagesProj/src/main/res/drawable/bar_selector_audio.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/bar_selector_blue.xml b/TMessagesProj/src/main/res/drawable/bar_selector_blue.xml deleted file mode 100644 index 83e879474..000000000 --- a/TMessagesProj/src/main/res/drawable/bar_selector_blue.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/bar_selector_cyan.xml b/TMessagesProj/src/main/res/drawable/bar_selector_cyan.xml deleted file mode 100644 index e9fb9cc20..000000000 --- a/TMessagesProj/src/main/res/drawable/bar_selector_cyan.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/bar_selector_green.xml b/TMessagesProj/src/main/res/drawable/bar_selector_green.xml deleted file mode 100644 index 2e88b9f42..000000000 --- a/TMessagesProj/src/main/res/drawable/bar_selector_green.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/bar_selector_grey.xml b/TMessagesProj/src/main/res/drawable/bar_selector_grey.xml deleted file mode 100644 index f311824b8..000000000 --- a/TMessagesProj/src/main/res/drawable/bar_selector_grey.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/bar_selector_mode.xml b/TMessagesProj/src/main/res/drawable/bar_selector_mode.xml deleted file mode 100644 index f3319e321..000000000 --- a/TMessagesProj/src/main/res/drawable/bar_selector_mode.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/bar_selector_orange.xml b/TMessagesProj/src/main/res/drawable/bar_selector_orange.xml deleted file mode 100644 index e1880b1e0..000000000 --- a/TMessagesProj/src/main/res/drawable/bar_selector_orange.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/bar_selector_picker.xml b/TMessagesProj/src/main/res/drawable/bar_selector_picker.xml deleted file mode 100644 index 658f21444..000000000 --- a/TMessagesProj/src/main/res/drawable/bar_selector_picker.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/bar_selector_pink.xml b/TMessagesProj/src/main/res/drawable/bar_selector_pink.xml deleted file mode 100644 index 9d81d09dc..000000000 --- a/TMessagesProj/src/main/res/drawable/bar_selector_pink.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/bar_selector_red.xml b/TMessagesProj/src/main/res/drawable/bar_selector_red.xml deleted file mode 100644 index c00e47a4e..000000000 --- a/TMessagesProj/src/main/res/drawable/bar_selector_red.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/bar_selector_violet.xml b/TMessagesProj/src/main/res/drawable/bar_selector_violet.xml deleted file mode 100644 index 405397c10..000000000 --- a/TMessagesProj/src/main/res/drawable/bar_selector_violet.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/bar_selector_yellow.xml b/TMessagesProj/src/main/res/drawable/bar_selector_yellow.xml deleted file mode 100644 index 98da9c127..000000000 --- a/TMessagesProj/src/main/res/drawable/bar_selector_yellow.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/field_carret.xml b/TMessagesProj/src/main/res/drawable/field_carret.xml new file mode 100644 index 000000000..a19003262 --- /dev/null +++ b/TMessagesProj/src/main/res/drawable/field_carret.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/TMessagesProj/src/main/res/drawable/search_carret.xml b/TMessagesProj/src/main/res/drawable/search_carret.xml index a07ec56d7..3c44cd870 100644 --- a/TMessagesProj/src/main/res/drawable/search_carret.xml +++ b/TMessagesProj/src/main/res/drawable/search_carret.xml @@ -2,7 +2,5 @@ - + diff --git a/TMessagesProj/src/main/res/values-ar/strings.xml b/TMessagesProj/src/main/res/values-ar/strings.xml index ecb46923a..25365e769 100644 --- a/TMessagesProj/src/main/res/values-ar/strings.xml +++ b/TMessagesProj/src/main/res/values-ar/strings.xml @@ -255,10 +255,12 @@ يكتب… يكتبون… %1$s يقوم بتسجيل رسالة صوتية... + %1$s يقوم بإرسال مقطع صوتي... %1$s يقوم بإرسال صورة... %1$s يقوم بإرسال مقطع مرئي... %1$s يقوم بإرسال ملف... جاري تسجيل الرسالة الصوتية... + جاري إرسال المقطع الصوتي... جاري إرسال الصورة... جاري إرسال المقطع المرئي... جاري إرسال الملف... @@ -504,6 +506,7 @@ نسخ الرابط حذف لا يوجد ملصقات بعد + أرسل ملصق المعذرة، لقد وصلت الحد الأعلى لحزم الملصقات. تم تعيين كافة الإشعارات افتراضيا @@ -539,6 +542,7 @@ سجل الخروج من كافة الأجهزة الأخرى الأحداث اشترك صديق في تيليجرام + رسائل مثبتة اللغة نرجو الأخذ بالعلم أن الدعم الفني في تيليجرام يقوم به مجموعة من المتطوعين. نحن نحاول الرد بسرعة قدر المستطاع، لكن ربما نستغرق القليل من الوقت.
]]> صفحة الأسئلة الأكثر شيوعًا
]]>: يوجد بها حلول للمشاكل وإجابات لمعظم الأسئلة. اسأل أحد المتطوعين @@ -550,8 +554,10 @@ ملف التعريب غير صحيح تمكين تعطيل - خدمة الإشعارات - إذا كانت خدمات Google play كافية بالنسبة لك لتلقي الإشعارات ، يمكنك تعطيل \" خدمة الإشعارات \" . ومع ذلك نحن نوصي بترك هذه الخدمة مفعلة للحفاظ على تشغيل التطبيق في الخلفية ، ولتلقي إشعارات الدردشة . + خدمة التشغيل المستمر + إعادة تشغيل التطبيق في حال تم إقفاله من المستخدم أو النظام. هذا سيساعد في إظهار التطبيق للإشعارات. + الاتصال في الخلفية + استخدام اتصال طفيف في الخلفية للتأكد من وصول إشعارات تيليجرام. قم بالتفعيل لإشعارات أقوى. فرز حسب استيراد جهات الاتصال الاسم الأول @@ -932,7 +938,15 @@ هل أنت متأكد من تسجيل الخروج من جميع الأجهزة الأخرى باستثناء هذا الجهاز؟ هل أنت متأكد من أنك تريد حذف المجموعة والخروج منها؟ هل أنت متأكد من رغبتك في حذف المحادثة؟ - هل أنت متأكد من أنك تريد مشاركة معلومات جهة الاتصال الخاصة بك؟ + هل ترغب في مشاركة موقعك؟ + هذا الخيار سيرسل موقعك الحالي للبوت. + لا يستطيع التطبيق تحديد موقعك الحالي + اختر بشكل يدوي + هذا البوت يرغب في معرفة موقعك في كل مرة ترسل له طلب. هذا يمكن الاستفادة منه لإعطائك نتائج مناسبة لموقعك. + هل ترغب في مشاركة رقم هاتفك؟ + البوت سيعلم رقم هاتفك. سيكون هذا مفيد لتفعيله في خدمات أخرى. + هل أنت متأكد من رغبتك في مشاركة رقم هاتفك %1$s مع ]]>%2$s]]>؟ + هل أنت متأكد من رغبتك في مشاركة رقم هاتفك؟ هل أنت متأكد من رغبتك في حظر جهة الاتصال هذه؟ هل أنت متأكد من رغبتك في إزالة الحظر عن جهة الاتصال هذه؟ هل أنت متأكد من رغبتك في حذف جهة الاتصال هذه؟ @@ -955,11 +969,13 @@ فصلًا قم بالسماح لتيليجرام باستقبال رسائل قصيرة ليتمكن من إدخال الرمز لك تلقائيًا. فصلًا قم بالسماح لتيليجرام باستقبال اتصالات ليتمكن من إدخال الرمز لك تلقائيًا. فصلًا قم بالسماح لتيليجرام باستقبال اتصالات ورسائل قصيرة ليتمكن من إدخال الرمز لك تلقائيًا. + المعذرة، لا يمكنك القيام بذلك. تيليجرام يحتاج للسماح له بالوصول لجهات الاتصال الخاصة بك لتتمكن من محادثة أصدقائك من كافة أجهزتك. تيليجرام يحتاج للسماح له بالوصول للذاكرة الخاصة بك لتتمكن من إرسال وحفظ الصور، المقاطع المرئية، الموسيقى وغيرها من الوسائط. تيليجرام يحتاج للسماح له بالوصول للمايكروفون الخاص بك لتتمكن من إرسال رسائل صوتية. تيليجرام يحتاج للسماح له بالوصول لمكانك لتتمكن من مشاركته مع أصدقائك من خلاله. + تيليجرام يحتاج صلاحية الحصول على موقعك. الإعدادات تيليجرام @@ -1182,4 +1198,4 @@ HH:mm h:mm a %1$s الساعة %2$s - \ No newline at end of file + diff --git a/TMessagesProj/src/main/res/values-de/strings.xml b/TMessagesProj/src/main/res/values-de/strings.xml index 080418ecc..453f2a486 100644 --- a/TMessagesProj/src/main/res/values-de/strings.xml +++ b/TMessagesProj/src/main/res/values-de/strings.xml @@ -86,7 +86,7 @@ Möchtest du wirklich diese Gruppe verlassen? Du kannst diesen Nutzer nicht hinzufügen. Leider ist diese Gruppe schon voll. - Dieser Nutzer hat die Gruppe zu verlassen, deshalb kannst du ihn nicht wieder einladen. + Dieser Nutzer hat die Gruppe verlassen, deshalb kannst du ihn nicht wieder einladen. Es gibt bereits zu viele Administratoren. Es gibt bereits zu viele Bots. un1 hat \"%1$s\" angeheftet @@ -184,7 +184,7 @@ Du wurdest gesperrt und kannst öffentliche Gruppen nicht betreten. Dieser Chat ist nicht mehr zugänglich. %1$s zum Kanal hinzufügen? - Dieser Nutzer hat die Gruppe zu verlassen, deshalb kannst du ihn nicht wieder einladen. + Dieser Nutzer hat die Gruppe verlassen, deshalb kannst du ihn nicht wieder einladen. Du kannst diesen Nutzer nicht einladen. Es gibt bereits zu viele Administratoren in diesem Kanal. Es gibt bereits zu viele Bots. @@ -255,10 +255,12 @@ tippt... tippen… %1$s nimmt etwas auf... + %1$s schickt Audio... %1$s schickt Bild... %1$s schickt Video... %1$s schickt Datei... nimmt etwas auf... + schickt Audio... schickt Bild... schickt Video... schickt Datei... @@ -472,7 +474,7 @@ Geheimer Schlüssel Selbstzerstörungs-Timer Aus - Bild und Text zeigen den aktuellen Schlüssen dieses geheimen Chats mit ]]>%1$s]]>.
]]>Sehen sie auf dem Gerät von ]]>%2$s]]> genau so aus, ist eure Sicherheit garantiert.
]]>Erfahre mehr unter telegram.org
+ Bild und Text zeigen den aktuellen Schlüssel dieses geheimen Chats mit ]]>%1$s]]>.
]]>Sehen sie auf dem Gerät von ]]>%2$s]]> genau so aus, ist eure Sicherheit garantiert.
]]>Erfahre mehr unter telegram.org
https://telegram.org/faq/de#geheime-chats Unbekannt Info @@ -504,6 +506,7 @@ Link kopieren Entfernen Noch keine Sticker + STICKER SENDEN Leider hast du die maximale Anzahl an Stickerpaketen erreicht. Alle Einstellungen für Mitteilungen zurücksetzen @@ -539,6 +542,7 @@ Alle anderen Geräte abmelden Ereignisse Kontakt ist Telegram beigetreten + Angeheftete Nachrichten Sprache Bedenke bitte, dass der Telegram Support von ehrenamtlichen Helfern betreut wird. Wir versuchen so schnell wie möglich zu antworten, dies kann jedoch manchmal ein bisschen dauern.
]]>Bitte schau auch in den Fragen und Antworten ]]> nach. Dort findest du Antworten auf die meisten Fragen und wichtige Tipps zur Problembehandlung]]>.
Eine Frage stellen @@ -550,8 +554,10 @@ Falsche Sprachdatei Aktiviert Deaktiviert - Mitteilungsdienst - Sofern Google Play Dienste ausreichend für deine Mitteilungen sind, kannst du unseren Mitteilungsdienst abschalten. Wir empfehlen allerdings, unseren Dienst dauerhaft aktiviert zu lassen, um über neue Nachrichten in Echtzeit informiert zu werden. + Keep-Alive-Dienst + Sofern die App beendet wurde, diese automatisch neu starten, um Benachrichtigungen zu gewährleisten. + Hintergrundverbindung + Nutzt eine batterieschonende Hintergrundverbindung zu Telegram, um Benachrichtigungen zu gewährleisten. sortiert nach Kontakte importieren Vorname @@ -932,7 +938,15 @@ Sicher, dass du alle anderen Geräte abmelden möchtest? Gruppe löschen und verlassen? Möchtest du wirklich diesen Chat löschen? - Wirklich die eigenen Kontaktinformationen teilen? + Deinen Standort teilen? + Teilt deinen aktuellen Standort mit dem Bot. + App kann deinen aktuellen Standort nicht bestimmen + Selbst wählen + Dieser Bot möchte bei jeder Anfrage deinen Standort wissen. Das kann für standortabhängig aufbereitete Informationen benutzt werden. + Deine Telefonnummer teilen? + Der Bot wird deine Nummer sehen. Das kann für verschiedene Dienste nützlich sein. + Möchtest du wirklich deine Nummer %1$s mit ]]>%2$s]]> teilen? + Möchtest du wirklich deine Telefonnummer teilen? Diesen Kontakt wirklich blockieren? Blockierung für diesen Kontakt wirklich aufheben? Diesen Kontakt wirklich löschen? @@ -955,11 +969,13 @@ Bitte erlaube Telegram den Zugriff auf SMS, so dass wir den Code automatisch in der App für dich eingeben können. Bitte erlaube Telegram den Zugriff auf Anrufe, so dass wir den Code automatisch in der App eingeben können. Bitte erlaube Telegram den Zugriff auf SMS und Anrufe, so dass wir den Code automatisch in der App eingeben können. + Du kannst diese Aktion nicht durchführen. Telegram benötigt Zugriff auf deine Kontakte um dich auf all denen Geräten mit deinen Freunden zu verbinden. Telegram benötigt Zugriff auf deinen Speicher, damit du Bilder, Videos und Musik senden und speichern kannst. Telegram benötigt Zugriff auf dein Mikrofon, damit du Sprachnachrichten senden kannst. Telegram benötigt Zugriff auf deinen Standort, damit du ihn mit Freunden teilen kannst. + Telegram benötigt Zugriff auf deinen Standort. EINSTELLUNGEN Telegram @@ -990,12 +1006,12 @@ %1$d Mitglieder %1$d Mitglieder %1$d Mitglieder - und %1$d weitere schreiben + und %1$d weitere tippen und %1$d weitere tippen - und %1$d weitere schreiben - und %1$d weitere schreiben - und %1$d weitere schreiben - und %1$d weitere schreiben + und %1$d weitere tippen + und %1$d weitere tippen + und %1$d weitere tippen + und %1$d weitere tippen keine neuen Nachrichten %1$d neue Nachricht %1$d neue Nachrichten diff --git a/TMessagesProj/src/main/res/values-es/strings.xml b/TMessagesProj/src/main/res/values-es/strings.xml index 9e80947ee..fc5140f97 100644 --- a/TMessagesProj/src/main/res/values-es/strings.xml +++ b/TMessagesProj/src/main/res/values-es/strings.xml @@ -255,10 +255,12 @@ está escribiendo... están escribiendo... %1$s está grabando un mensaje de voz... + %1$s está enviando un audio... %1$s está enviando una foto... %1$s está enviando un vídeo... %1$s está enviando un archivo... grabando mensaje de voz... + enviando audio... enviando foto... enviando vídeo... enviando archivo... @@ -504,6 +506,7 @@ Copiar enlace Eliminar Sin stickers aún + ENVIAR STICKER Lo sentimos, alcanzaste el número máximo de packs de stickers. Restablecer las notificaciones @@ -539,6 +542,7 @@ Cerrar todas las otras sesiones Eventos Un contacto se unió a Telegram + Mensajes anclados Idioma Por favor, considera que el soporte de Telegram está hecho por voluntarios. Respondemos lo antes posible, pero puede tomar tiempo.
]]>Por favor, mira las preguntas frecuentes de Telegram]]>: tienen respuestas para la mayoría de las preguntas y soluciones a problemas]]>.
Preguntar @@ -550,8 +554,10 @@ Archivo de traducción incorrecto Activadas Desactivadas - Servicio de notificaciones - Si tus notificaciones funcionan bien con los Servicios de Google Play, puedes desactivar el Servicio de notificaciones. Sin embargo, recomendamos que lo dejes activo para mantener la app en segundo plano y recibir notificaciones al instante. + Servicio keep-alive + Vuelve a abrir la app cuando el usuario o el sistema la cierra. Esto garantiza que la app pueda mostrar notificaciones. + Conexión en segundo plano + Conexión de bajo impacto, en segundo plano, para recibir notificaciones. Úsala para tener notificaciones fiables. Ordenar por Importar contactos Nombre @@ -932,7 +938,15 @@ ¿Quieres terminar todas las otras sesiones? ¿Quieres eliminar y dejar el grupo? ¿Quieres eliminar este chat? - ¿Quieres compartir tu número? + ¿Compartir tu ubicación? + Esto enviará tu ubicación actual al bot. + La aplicación no pudo determinar tu ubicación actual + Elegir manualmente + Este bot podría querer saber tu ubicación cada vez que le envías una solicitud. Esto puede ser usado para entregar resultados específicos para tu ubicación. + ¿Compartir tu número de teléfono? + El bot sabrá tu número de teléfono. Puede ser útil para la integración con otros servicios. + ¿Quieres compartir tu número de teléfono %1$s con ]]>%2$s]]>? + ¿Quieres compartir tu número de teléfono? ¿Quieres bloquear este contacto? ¿Quieres desbloquear este contacto? ¿Quieres eliminar este contacto? @@ -955,11 +969,13 @@ Por favor, permite a Telegram recibir SMS, para ingresar el código automáticamente. Por favor, permite a Telegram recibir llamadas, para ingresar el código automáticamente. Por favor, permite a Telegram recibir llamadas y SMS, para ingresar el código automáticamente. + Lo sentimos, no estás autorizado para hacer esto. Telegram necesita el acceso a tus contactos, para que puedas comunicarte con ellos en todos tus dispositivos. Telegram necesita acceso a tu almacenamiento, para que puedas enviar y guardar fotos, vídeos, música y otros archivos. Telegram necesita acceso a tu micrófono, para que puedas enviar mensajes de voz. Telegram necesita acceso a tu ubicación, para que puedas compartirla con tus amigos. + Telegram necesita acceso a tu ubicación. AJUSTES Telegram diff --git a/TMessagesProj/src/main/res/values-it/strings.xml b/TMessagesProj/src/main/res/values-it/strings.xml index 45334c650..3588972a6 100644 --- a/TMessagesProj/src/main/res/values-it/strings.xml +++ b/TMessagesProj/src/main/res/values-it/strings.xml @@ -39,14 +39,14 @@ ieri Nessun risultato Ancora nessuna chat… - Inizia a scrivere premendo il tasto\nnuovo messaggio nell\'angolo in basso a destra\no apri il menu per avere più opzioni. + Inizia a chattare premendo il tasto\nnuovo messaggio nell\'angolo in basso a destra\no apri il menu per avere più opzioni. Attendo la rete... Connetto… Aggiorno… Nuova chat segreta Aspettando che %s si colleghi… Chat segreta annullata - Scambio delle chiavi di cifratura... + Scambio delle chiavi di crittografia... %s si è unito alla tua chat segreta. Sei entrato nella chat segreta. Cancella cronologia @@ -255,15 +255,17 @@ sta scrivendo… stanno scrivendo… %1$s sta registrando un messaggio vocale... + %1$s sta inviando un audio... %1$s sta inviando una foto... %1$s sta inviando un video... %1$s sta inviando un file... registrando un messaggio vocale... + inviando un audio... inviando una foto... inviando un video... inviando un file... Hai una domanda\nsu Telegram? - Scatta una foto + Scatta foto Galleria Posizione Video @@ -469,7 +471,7 @@ Principale Inizia chat segreta Si è verificato un errore. - Chiave di cifratura + Chiave di crittografia Timer di autodistruzione Spento Questa immagine e il testo sono derivati dalla chiave di crittografia per questa chat segreta con ]]>%1$s]]>.
]]>Se sono uguali sul dispositivo di ]]>%2$s]]>, la crittografia end-to-end è garantita.
]]>Ulteriori informazioni su telegram.org
@@ -504,6 +506,7 @@ Copia link Rimuovi Ancora nessuno sticker + INVIA STICKER Spiacenti, hai raggiunto il numero massimo di set di sticker. Ripristina tutte le impostazioni di notifica predefinite @@ -539,8 +542,9 @@ Termina le altre sessioni Eventi Un contatto si è unito a Telegram + Messaggi fissati Lingua - Nota che il supporto di Telegram è fornito da volontari. Proviamo a rispondere quanto prima, ma potrebbe volerci del tempo.
]]>Dai un\'occhiata alle Domande frequenti]]>: troverai risposte alla maggior parte delle domande e suggerimenti importanti per l\'individuazione del problema]]>
+ Nota che il supporto di Telegram è fornito da volontari. Proviamo a rispondere quanto prima, ma potrebbe volerci del tempo.
]]>Dai un\'occhiata alle Domande frequenti]]>di Telegram: contengono risposte a quasi tutte le domande e suggerimenti importanti per risolvere i problemi]]>
Chiedi a un volontario Domande frequenti https://telegram.org/faq/it @@ -550,8 +554,10 @@ File di traduzione non valido Abilitate Disabilitata - Servizio notifiche - Se i Google Play Services ti bastano per ricevere le notifiche, puoi disabilitare il servizio notifiche. Ti consigliamo comunque di lasciarlo abilitato per lasciare l\'app attiva in background e ricevere notifiche istantanee. + Servizio keep-alive + Riavvia l\'app quando terminata dall\'utente o dal sistema. Questo assicura che l\'app possa mostrare le notifiche. + Connessione in background + Mantiene una connessione a basso impatto con Telegram per ricevere le notifiche. Attivala per notifiche affidabili. Ordina per Importa contatti Nome @@ -645,7 +651,7 @@ Ora visualizzerai un\'icona col lucchetto nella pagina delle chat. Premi su di essa per bloccare la tua app Telegram con il codice. PIN Password - Inserisci il tuo codice + Inserisci il tuo codice corrente Inserisci un codice Inserisci il nuovo codice Inserisci il tuo codice @@ -679,7 +685,7 @@ Ibrido m di distanza km di distanza - Invia la tua posizione attuale + Invia la tua posizione corrente Invia la posizione selezionata Posizione Precisione di %1$s @@ -911,7 +917,7 @@ Numero di telefono non valido Codice scaduto, effettua di nuovo l\'accesso Troppi tentativi, riprova più tardi - Troppi tentativi, per favore riprova di nuova tra %1$s + Troppi tentativi, per favore riprova di nuovo tra %1$s Codice non valido Nome non valido Cognome non valido @@ -932,7 +938,15 @@ Terminare tutte le altre sessioni? Sei sicuro di voler uscire ed eliminare il gruppo? Sei sicuro di voler eliminare questa chat? - Vuoi condividere il tuo contatto? + Condividere la tua posizione? + Questo invierà la tua posizione corrente al bot. + L\'app non è riuscita a determinare la tua posizione corrente + Scegli manualmente + Questo bot vorrebbe sapere la tua posizione ogni volta che invii una richiesta. Questo può essere usato per fornire risultati specifici per la posizione. + Condividere il tuo numero di telefono? + Il bot saprà il tuo numero di telefono. Questo può essere utile per l\'integrazione con altri servizi. + Sicuro di voler condividere il tuo numero di telefono %1$s con ]]>%2$s]]>? + Sei sicuro di voler condividere il tuo numero di telefono? Vuoi bloccare questo contatto? Vuoi sbloccare questo contatto? Sei sicuro di voler eliminare questo contatto? @@ -955,11 +969,13 @@ Per favore consenti a Telegram di ricevere SMS così potremo inserire in automatico il codice per te. Per favore consenti a Telegram di ricevere chiamate così potremo inserire in automatico il codice per te. Per favore consenti a Telegram di ricevere chiamate ed SMS così potremo inserire in automatico il codice per te. + Spiacenti, questa azione non ti è permessa. Telegram deve accedere ai tuoi contatti per poterti connettere con i tuoi amici su tutti i tuoi dispositivi. Telegram deve accedere alla tua memoria per poter inviare e salvare foto,video, musica e altri media. Telegram deve accedere al microfono per poter inviare messaggi vocali. Telegram deve accedere alla tua posizione per poterla condividere con i tuoi amici. + Telegram deve accedere alla tua posizione. IMPOSTAZIONI Telegram @@ -976,7 +992,7 @@ Telegram
]]> non ha limiti di dimensione]]>per le tue chat e i file multimediali. Telegram
]]> ti consente di accedere]]>ai tuoi messaggi da più dispositivi. I messaggi di Telegram
]]> sono fortemente]]>criptati e possono autodistruggersi. - Inizia a inviare messaggi + Inizia a chattare %1$d in linea %1$d in linea @@ -990,12 +1006,12 @@ %1$d membri %1$d membri %1$d membri - e %1$d altre persone stanno scrivendo - e %1$d altre persone stanno scrivendo - e %1$d altre persone stanno scrivendo - e %1$d altre persone stanno scrivendo - e %1$d altre persone stanno scrivendo - e %1$d altre persone stanno scrivendo + e altre %1$d persone stanno scrivendo + e %1$d altra persona stanno scrivendo + e altre %1$d persone stanno scrivendo + e altre %1$d persone stanno scrivendo + e altre %1$d persone stanno scrivendo + e altre %1$d persone stanno scrivendo nessun nuovo messaggio %1$d nuovo messaggio %1$d nuovi messaggi diff --git a/TMessagesProj/src/main/res/values-ko/strings.xml b/TMessagesProj/src/main/res/values-ko/strings.xml index 121577771..6ebbc45f8 100644 --- a/TMessagesProj/src/main/res/values-ko/strings.xml +++ b/TMessagesProj/src/main/res/values-ko/strings.xml @@ -255,10 +255,12 @@ 님이 입력 중... 님이 입력 중... %1$s님이 음성메시지를 녹음중입니다... + %1$s님이 음성파일을 전송중입니다... %1$s님이 사진 보내는 중... %1$s님이 동영상 보내는 중... %1$s님이 파일 보내는 중... 음성메시지를 녹음 중입니다.. + 음성파일 전송 중.. 사진 전송 중.. 동영상 전송 중.. 파일 전송 중... @@ -504,6 +506,7 @@ 링크 복사 삭제 스티커가 아직 없음 + 스티커 전송 죄송합니다, 스티커 세트수가 최대치입니다. 모든 알림 설정이 초기화되었습니다 @@ -539,6 +542,7 @@ 다른 모든 세션 종료 이벤트 친구의 텔레그램 가입 알림 + 고정된 메시지 언어 텔레그램에 관한 질문은 자원봉사자들이 답변해 드립니다. 신속한 답변을 위해 노력하지만 답변이 다소 늦을 수 있습니다.
]]>일반적인 문제와 해결방법]]>에 대해서는 \'자주 묻는 질문]]>\'을 확인해 보세요.
질문하기 @@ -550,8 +554,10 @@ 언어 파일이 올바르지 않습니다. 켜기 끄기 - 알림 서비스 - 알림 서비스를 비활성화 하면 새로운 메시지의 알림이 다소 늦을 수 있습니다.텔레그램이 백그라운드에서 작동하며 알림을 바로 알릴 수 있도록 활성화 하는것을 권장합니다. + 항상 활성화 서비스 + 시스템이나 사용자에 의하여 닫힌 앱을 재시작합니다. 해당 작업은 알림을 보여지게 합니다. + 백그라운드 연결 + 알림을 받기 위하여 텔레그램 백그라운드 연결을 최소화로 유지합니다. 안정적인 알림을 유지합니다. 정렬 연락처 가져오기 이름 @@ -932,7 +938,15 @@ 현재 기기를 제외하고 다른 기기에 로그인된 세션을 모두 종료시킬까요? 그룹에서 나갈까요? 채팅방을 삭제할까요? - 연락처를 공유할까요? + 위치를 공유하겠습니까? + 현재 위치를 봇에게 전송합니다. + 앱에서 현재 위치를 확인하지 못하였습니다. + 수동 선택 + 요청시마다 봇이 위치를 확인합니다. 이 요청으로 인하여 특정 위치에 대한 결과 확인이 가능합니다. + 전화번호를 공유하겠습니까? + 봇이 전화번호를 인지를 하며, 다른 서비스와의 통합에 활용이 됩니다. + %1$s 님에게 ]]>%2$s]]> 번호를 공유하겠습니까? + 정말로 전화번호를 공유하겠습니까? 대화상대를 차단할까요? 차단을 해제할까요? 대화상대를 삭제할까요? @@ -955,11 +969,13 @@ 텔레그램이 SMS를 수신 할 수 있도록 설정해주셔야 자동으로 코드 입력이 가능합니다. 텔레그램이 전화를 수신 할 수 있도록 설정해주셔야 자동으로 코드 입력이 가능합니다. 텔레그램이 SMS 및 전화를 수신 할 수 있도록 설정해주셔야 자동으로 코드 입력이 가능합니다. + 죄송합니다, 이 작업이 제한되었습니다. Telegram은 여러 기기에서 친구와 메시지를 주고받을 수 있도록 회원님의 연락처 접근이 필요합니다. Telegram은 사진, 비디오, 음악 및 다양한 미디어를 공유 및 저장하기 위하여 스토리지 접근이 필요합니다. Telegram이 음성 메시지를 보내기 위하여 마이크에 대한 접근이 필요합니다. Telegram이 위치를 친구분들과 공유하기 위해 위치에 대한 접근 권한을 필요로 합니다. + 텔레그램이 위치에 대한 권한이 필요합니다. 설정 텔레그램 diff --git a/TMessagesProj/src/main/res/values-nl/strings.xml b/TMessagesProj/src/main/res/values-nl/strings.xml index 39682c9b0..bc38eea8a 100644 --- a/TMessagesProj/src/main/res/values-nl/strings.xml +++ b/TMessagesProj/src/main/res/values-nl/strings.xml @@ -255,10 +255,12 @@ is aan het typen zijn aan het typen %1$s neemt een spraakbericht op... + %1$s verstuurt een geluid... %1$s verstuurt een foto %1$s verstuurt een video %1$s verstuurt een bestand neemt een spraakbericht op... + audio versturen... foto versturen video versturen bestand versturen @@ -504,6 +506,7 @@ Link kopiëren Verwijder Nog geen stickers + STICKER STUREN Je hebt het maximale aantal stickerbundels bereikt. Meldingen gereset @@ -539,6 +542,7 @@ Beëindig alle andere sessies Gebeurtenissen Contact lid van Telegram + Vastgezet berichten Taal De ondersteuning van Telegram wordt gedaan door vrijwilligers. We doen ons best om zo snel mogelijk te antwoorden.
]]>Bekijk ook de veelgestelde vragen]]>: Hier staan de antwoorden op de meeste vragen en belangrijke tips voor het oplossen van problemen]]>.
Vraag een vrijwilliger @@ -551,7 +555,9 @@ Inschakelen Uitgeschakeld Meldingenservice - Als Google Play Services genoeg voor je is om meldingen te ontvangen kun je de meldingenservice uitschakelen. We raden echter aan dit ingeschakeld te laten om de app in de achtergrond te laten draaien en directe meldingen te ontvangen. + App automatisch herstarten bij afsluiten om meldingen weer te kunnen blijven geven. + Achtergrondverbinding + Achtergrondverbinding voor meldingen. Inschakelen voor betrouwbare meldingen. Sorteren op Importeer contacten Voornaam @@ -932,7 +938,15 @@ Alle apparaten behalve het huidige apparaat uitloggen? Verwijderen en de groep verlaten? Chat echt verwijderen? - Weet je zeker dat je je contactinformatie wilt delen? + Locatie delen? + Huidige locatie naar deze bot sturen? + Huidige locatie kon niet worden vastgesteld + Handmatig kiezen + Deze bot wil toegang tot je locatie voor ieder verzoek dat je stuurt. Dit kan gebruikt worden voor locatiespecifieke resultaten. + Telefoonnummer delen? + De bot krijgt je telefoonnummer, dit kan handig zijn voor de integratie met andere diensten. + Telefoonnummer %1$s delen met ]]>%2$s]]>? + Telefoonnummer echt delen? Weet je zeker dat je deze persoon wilt blokkeren? Weet je zeker dat je deze persoon wilt deblokkeren? Contact echt verwijderen? @@ -955,11 +969,13 @@ Sta het ontvangen van SMS toe zodat we automatisch je inlogcode kunnen invoeren. Sta het ontvangen van oproepen toe zodat we automatisch je inlogcode kunnen invoeren. Sta het ontvangen van oproepen en SMS toe zodat we automatisch je inlogcode kunnen invoeren. + Je mag deze actie niet uitvoeren. Telegram heeft toegang tot je contacten nodig zodat je kan chatten met je vrienden vanaf al je apparaten. Telegram heeft toegang tot je opslaggeheugen nodig zodat je foto\'s, video\'s, muziek en andere media kunt opslaan en versturen. Telegram heeft toegang tot je microfoon nodig om spraakberichten te kunnen verzenden. Telegram heeft toegang tot je locatie nodig om deze te kunnen delen met je vrienden. + Telegram heeft toegang tot je locatie nodig. INSTELLINGEN Telegram diff --git a/TMessagesProj/src/main/res/values-pt-rBR/strings.xml b/TMessagesProj/src/main/res/values-pt-rBR/strings.xml index 7a98dad6f..a69732ef5 100644 --- a/TMessagesProj/src/main/res/values-pt-rBR/strings.xml +++ b/TMessagesProj/src/main/res/values-pt-rBR/strings.xml @@ -90,16 +90,16 @@ Desculpe, há administradores demais neste grupo. Desculpe, há bots demais neste grupo. un1 fixou \"%1$s\" - un1 ficou uma mensagem - un1 ficou uma foto - un1 ficou um vídeo - un1 ficou um arquivo - un1 ficou um sticker + un1 fixou uma mensagem + un1 fixou uma foto + un1 fixou um vídeo + un1 fixou um arquivo + un1 fixou um sticker un1 fixou uma mensagem de voz - un1 ficou um contato - un1 ficou um mapa - un1 ficou um GIF - un1 ficou uma música + un1 fixou um contato + un1 fixou um mapa + un1 fixou um GIF + un1 fixou uma música Este grupo foi atualizado para um supergrupo %1$s foi atualizado para um supergrupo Usuários bloqueados são removidos do grupo e só podem voltar se convidados por um administrador. Convites por link não funcionam para eles. @@ -133,7 +133,7 @@ ENTRAR Info do Canal Transmissão - Transmissão Silenciosa + Mensagem Silenciosa Comentário mostrar comentários O que é um Canal? @@ -255,10 +255,12 @@ está escrevendo... estão escrevendo... %1$s está gravando uma mensagem de voz... + %1$s está enviando um áudio... %1$s está enviando uma foto... %1$s está enviando um vídeo... %1$s está enviando um arquivo... gravando mensagem de voz... + enviando áudio... enviando foto... enviando vídeo... enviando arquivo... @@ -504,6 +506,7 @@ Copiar link Remover Nenhum sticker + ENVIAR STICKER Desculpe, você alcançou o limite máximo de pacotes de sticker. Restaurar todas as configurações de notificação @@ -539,6 +542,7 @@ Terminar todas as outras sessões Eventos Contato entrou para o Telegram + Mensagens Fixadas Idioma Por favor entenda que o suporte do Telegram é feito por voluntários. Tentaremos responder o mais rápido possível, mas poderemos demorar um pouco.
]]>Por favor verifique a página de perguntas frequentes do Telegram]]>: há dicas e respostas para a maioria dos problemas]]>.
Pergunte a um voluntário @@ -550,8 +554,10 @@ Arquivo de localização incorreto Ativado Desativado - Serviço de Notificações - Se o serviço de notificação do Google Play for suficiente para você, você pode desativar o \"Serviço de Notificações\". Porém, recomendamos deixá-lo ativo para manter o aplicativo executando em segundo plano e receber notificações instantaneamente. + Serviço Manter-Ativo + Reiniciar o app quando desligado pelo usuário ou pelo sistema. Isso irá garantir que o app mostre as notificações. + Conexão em Segundo Plano + Manter uma conexão de baixo impacto para o Telegram receber notificações. Habilite para notificações mais confiáveis. Ordenar Por Importar Contatos Primeiro nome @@ -932,7 +938,15 @@ Você tem certeza que deseja terminar todas as outras sessões? Você tem certeza que apagar e sair do grupo? Você tem certeza que deseja apagar esta conversa? - Você tem certeza que deseja compartilhar suas informações de contato? + Compartilhar sua localização? + Isso irá enviar sua localização atual ao bot. + O aplicativo foi impossibilitado de determinar sua localização atual. + Escolher manualmente + Esse bot gostaria de saber sua localização todas as vezes que você enviá-lo uma mensagem. Isso pode ser utilizado para providenciar resultados específicos de localização. + Compartilhar seu número de telefone? + O bot saberá seu número de telefone. Isso pode ser útil para a integração com outros serviços. + Tem certeza que deseja compartilhar seu número de telefone %1$s com ]]>%2$s]]>? + Tem certeza que deseja compartilhar seu número de telefone? Você tem certeza que deseja bloquear este contato? Você tem certeza que deseja desbloquear este contato? Você tem certeza que deseja apagar este contato? @@ -955,11 +969,13 @@ Permita o acesso às SMS ao Telegram, assim podemos automaticamente adicionar o código para você. Permita o acesso às ligações ao Telegram, assim podemos automaticamente adicionar o código para você. Permita o acesso às SMS e ligações ao Telegram, assim podemos automaticamente adicionar o código para você. + Você não tem permissão para isso. Telegram precisa acessar seus contatos para que você possa se conectar aos seus amigos em todos os seus dispositivos. Telegram precisa acessar seu armazenamento para que você possa enviar e salvar fotos, vídeos, músicas e outras mídias. Telegram precisa acessar seu microfone para que você possa enviar mensagens de voz. Telegram precisa acessar sua localização para que você possa compartilhar com seus amigos. + O Telegram precisa acessar sua localização CONFIGURAÇÕES Telegram diff --git a/TMessagesProj/src/main/res/values-pt-rPT/strings.xml b/TMessagesProj/src/main/res/values-pt-rPT/strings.xml index a0870484a..fa030cb07 100644 --- a/TMessagesProj/src/main/res/values-pt-rPT/strings.xml +++ b/TMessagesProj/src/main/res/values-pt-rPT/strings.xml @@ -90,16 +90,16 @@ Desculpe, há administradores demais neste grupo. Desculpe, há bots demais neste grupo. un1 fixou \"%1$s\" - un1 ficou uma mensagem - un1 ficou uma foto - un1 ficou um vídeo - un1 ficou um arquivo - un1 ficou um sticker + un1 fixou uma mensagem + un1 fixou uma foto + un1 fixou um vídeo + un1 fixou um arquivo + un1 fixou um sticker un1 fixou uma mensagem de voz - un1 ficou um contato - un1 ficou um mapa - un1 ficou um GIF - un1 ficou uma música + un1 fixou um contato + un1 fixou um mapa + un1 fixou um GIF + un1 fixou uma música Este grupo foi atualizado para um supergrupo %1$s foi atualizado para um supergrupo Usuários bloqueados são removidos do grupo e só podem voltar se convidados por um administrador. Convites por link não funcionam para eles. @@ -133,7 +133,7 @@ ENTRAR Info do Canal Transmissão - Transmissão Silenciosa + Mensagem Silenciosa Comentário mostrar comentários O que é um Canal? @@ -255,10 +255,12 @@ está escrevendo... estão escrevendo... %1$s está gravando uma mensagem de voz... + %1$s está enviando um áudio... %1$s está enviando uma foto... %1$s está enviando um vídeo... %1$s está enviando um arquivo... gravando mensagem de voz... + enviando áudio... enviando foto... enviando vídeo... enviando arquivo... @@ -504,6 +506,7 @@ Copiar link Remover Nenhum sticker + ENVIAR STICKER Desculpe, você alcançou o limite máximo de pacotes de sticker. Restaurar todas as configurações de notificação @@ -539,6 +542,7 @@ Terminar todas as outras sessões Eventos Contato entrou para o Telegram + Mensagens Fixadas Idioma Por favor entenda que o suporte do Telegram é feito por voluntários. Tentaremos responder o mais rápido possível, mas poderemos demorar um pouco.
]]>Por favor verifique a página de perguntas frequentes do Telegram]]>: há dicas e respostas para a maioria dos problemas]]>.
Pergunte a um voluntário @@ -550,8 +554,10 @@ Arquivo de localização incorreto Ativado Desativado - Serviço de Notificações - Se o serviço de notificação do Google Play for suficiente para você, você pode desativar o \"Serviço de Notificações\". Porém, recomendamos deixá-lo ativo para manter o aplicativo executando em segundo plano e receber notificações instantaneamente. + Serviço Manter-Ativo + Reiniciar o app quando desligado pelo usuário ou pelo sistema. Isso irá garantir que o app mostre as notificações. + Conexão em Segundo Plano + Manter uma conexão de baixo impacto para o Telegram receber notificações. Habilite para notificações mais confiáveis. Ordenar Por Importar Contatos Primeiro nome @@ -932,7 +938,15 @@ Você tem certeza que deseja terminar todas as outras sessões? Você tem certeza que apagar e sair do grupo? Você tem certeza que deseja apagar esta conversa? - Você tem certeza que deseja compartilhar suas informações de contato? + Compartilhar sua localização? + Isso irá enviar sua localização atual ao bot. + O aplicativo foi impossibilitado de determinar sua localização atual. + Escolher manualmente + Esse bot gostaria de saber sua localização todas as vezes que você enviá-lo uma mensagem. Isso pode ser utilizado para providenciar resultados específicos de localização. + Compartilhar seu número de telefone? + O bot saberá seu número de telefone. Isso pode ser útil para a integração com outros serviços. + Tem certeza que deseja compartilhar seu número de telefone %1$s com ]]>%2$s]]>? + Tem certeza que deseja compartilhar seu número de telefone? Você tem certeza que deseja bloquear este contato? Você tem certeza que deseja desbloquear este contato? Você tem certeza que deseja apagar este contato? @@ -955,11 +969,13 @@ Permita o acesso às SMS ao Telegram, assim podemos automaticamente adicionar o código para você. Permita o acesso às ligações ao Telegram, assim podemos automaticamente adicionar o código para você. Permita o acesso às SMS e ligações ao Telegram, assim podemos automaticamente adicionar o código para você. + Você não tem permissão para isso. Telegram precisa acessar seus contatos para que você possa se conectar aos seus amigos em todos os seus dispositivos. Telegram precisa acessar seu armazenamento para que você possa enviar e salvar fotos, vídeos, músicas e outras mídias. Telegram precisa acessar seu microfone para que você possa enviar mensagens de voz. Telegram precisa acessar sua localização para que você possa compartilhar com seus amigos. + O Telegram precisa acessar sua localização CONFIGURAÇÕES Telegram diff --git a/TMessagesProj/src/main/res/values-v21/styles.xml b/TMessagesProj/src/main/res/values-v21/styles.xml index 79d3b0f84..746ee6490 100644 --- a/TMessagesProj/src/main/res/values-v21/styles.xml +++ b/TMessagesProj/src/main/res/values-v21/styles.xml @@ -16,8 +16,8 @@ @android:color/white @android:color/white @null - #435e7e - #54759e + #426482 + #527da3 @@ -69,7 +69,7 @@ @@ -95,4 +95,18 @@ @null + + diff --git a/TMessagesProj/src/main/res/values/strings.xml b/TMessagesProj/src/main/res/values/strings.xml index 8046380c1..bce1ee1f0 100644 --- a/TMessagesProj/src/main/res/values/strings.xml +++ b/TMessagesProj/src/main/res/values/strings.xml @@ -192,7 +192,6 @@ un1 added you to this channel You joined this channel You joined this group - "%@ joined the group" Remove from channel Sorry, you can\'t send messages to this channel. %1$s added you to the channel %2$s @@ -256,10 +255,12 @@ is typing... are typing... %1$s is recording voice message... + %1$s is sending audio... %1$s is sending photo... %1$s is sending video... %1$s is sending file... recording voice message... + sending audio... sending photo... sending video... sending file... @@ -300,7 +301,7 @@ Set self-destruct timer Service notifications Getting Link Info... - Open in Browser + OPEN IN... Copy URL Send %1$s Open url %1$s? @@ -505,6 +506,7 @@ Copy link Remove No stickers yet + SEND STICKER Sorry, you have reached the maximum number of sticker sets. Reset all notification settings to default @@ -540,6 +542,7 @@ Terminate All Other Sessions Events Contact joined Telegram + Pinned Messages Language Please note that Telegram Support is done by volunteers. We try to respond as quickly as possible, but it may take a while.
]]>Please take a look at the Telegram FAQ]]>: it has answers to most questions and important tips for troubleshooting]]>.
Ask a volunteer @@ -551,8 +554,10 @@ Incorrect localization file Enabled Disabled - Notifications Service - If Google Play Services are enough for you to receive notifications, you can disable Notifications Service. However we recommend you to leave it enabled to keep app running in background and receive instant notifications. + Keep-Alive Service + Relaunch app when shut down by user or system. This will ensure app can show notifications. + Background Connection + Keep a low impact background connection to Telegram to receive notifications. Enable for reliable notifications. Sort By Import Contacts First name @@ -933,7 +938,15 @@ Are you sure you want to terminate all other sessions? Are you sure you want to delete and leave the group? Are you sure you want to delete this chat? - Are you sure you want to share your contact info? + Share your location? + This will send your current location to the bot. + App was unable to determine your current location + Choose manually + This bot would like to know your location each time you send it a request. This can be used to provide location-specific results. + Share your phone number? + The bot will know your phone number. This can be useful for integration with other services. + Are you sure you want to share your phone number %1$s with ]]>%2$s]]>? + Are you sure you want to share your phone number? Are you sure you want to block this contact? Are you sure you want to unblock this contact? Are you sure you want to delete this contact? @@ -956,11 +969,13 @@ Please allow Telegram to receive SMS so that we can automatically enter your code for you. Please allow Telegram to receive calls so that we can automatically enter your code for you. Please allow Telegram to receive calls and SMS so that we can automatically enter your code for you. + Sorry, you are not allowed to do this. Telegram needs access to your contacts so that you can connect with your friends across all your devices. Telegram needs access to your storage so that you can send and save photos, videos, music and other media. Telegram needs access to your microphone so that you can send voice messages. Telegram needs access to your location so that you can share it with your friends. + Telegram needs access to your location. SETTINGS Telegram diff --git a/TMessagesProj/src/main/res/values/styles.xml b/TMessagesProj/src/main/res/values/styles.xml index 444570aed..84bd32693 100644 --- a/TMessagesProj/src/main/res/values/styles.xml +++ b/TMessagesProj/src/main/res/values/styles.xml @@ -42,7 +42,7 @@ @@ -77,4 +77,14 @@ @anim/no_animation + + diff --git a/build.gradle b/build.gradle index 2c397bc2a..7f37cedee 100644 --- a/build.gradle +++ b/build.gradle @@ -5,6 +5,7 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:1.5.0' + classpath 'com.android.tools.build:gradle:2.1.0-beta3' + classpath 'com.google.gms:google-services:2.1.0-alpha3' } } \ No newline at end of file

;MRFfMIg`=5Df{XIujaYaUpn4H9 zIGRqSQtp)34b2{!t*xzfG&~*`M!2j29Z9xJx5_gLJg{U_HINE*(ovMUVLu8`IMekb zXhv36w>HXz3r5?LL9=egIZ_5FivNddS{7}gDEO1_KZUK>fC1hBruo&fef?_J^32e1f%yFG{^RCXdi=*+esD9< zesLf+HZk|}#qPq}U!GlkXGE@Z?djE16DN$vUq&A6O1J#F*ZFz)Ri)%vJbUuvj;-mN zE1ma8w>LGq(!<}zrV`UDeI?0fjlyziY+H#S#ETZs->umC;f69gaw)#$O8!#bok-_W zOTAs%2tk+KE%$x@WbB!le=^m2`M@l5H?cELv@KMRJ`KhnIafO(H1m^(lR`KP%3CwtxS#>b~zZuca;` zr_(kcoL`)vT~dD_DuVCx)*PmL2em8M78^urhzQx~y!1TbWWlm~!PSi~&3CXq7yP_) zos+;sm7C1VnU&?QJ@J%nf6bwFHHJfJmgl=e-&*9W8EiX#1{y1BJ<`na__1~RhNV)5 zE47wiJ|XWSk|?ojf$THQx3kRGl=`UIxxY{r{Vlw3va(9L?osp9`hCWW9*frKC|EM@ z)(!1@^f)HRi6cSMGj99M1t&vpcs~E`#CM8slJ$j{FcZ$zAI!zBUwLKRF{Aa}2Bjkz z#qqaR^?&-jLVue2qRS7JQ%-gL;(Xz9Wb=z9iXSv1THfpLo9{8*@rb&_hYiuZE7mVa z-Qxc~ID4~Veuv<1$-8JT|*Abrej@e7H97Ll`gVVbi^wW)nZa;dmuK4=sQXsv`s_LHkJjD(a8u21_Eo#T z@1lCnWKYUA6)AH5-IMy;md8I!!ReQU#BEEZ>xGm2cC6?=yZ!8n_kM3r-(2*kK1KCp y+zl4*g-cI8*#G+77pG-FRfC7_62N@j``RIdpx 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 XYBw*bt>+?n?jGc|)|X!6wmtPP0$k{# literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/bot_music.png b/TMessagesProj/src/main/res/drawable-xxhdpi/bot_music.png new file mode 100755 index 0000000000000000000000000000000000000000..16bf5bc9e740c5ae8936d651016b56d93d7834d5 GIT binary patch literal 2081 zcmaJ?2~<;88cx|8jD+B%H5CkjVk<*7NPtL$NP>wqOo#!ZqLSr7LdaqgP1q_#WmTjo z?MP8V6huW1oxxG5Fdzh!l9XMiRZ&C*L=;h5aE{K4727#yn0MZL_x|^M-}kTQ+yYMY zdKeT1g+L%M7L(2eS0?yvba4Xz*36k0a9OTp@U@$iNm`vi4M1pOr4T@~s z!GPY>;v@=}9`()_Xi+f|tyV?B;dDA3Ru_m>s*`bq(9lqu29X#5A_6pN3avmNpwRd% zD9{0oNG(-qrAh_brYI09cWJ2@Fw);rkgMLyDm3rP1QraZ7pQOqEZ&yV0+7xA|4_O7 zJzAsX0>8)mKZP~CG!=m30vhEmwFqonl8?=miV~>?1X`tv3K77fQ!$_dRw@-!=%M&fI*||*wGON@fk6Vx6haFL z4JMO`fn)|LWPwXpigw8Xg?51}{+&x&lxrIWxeD}52h`HtfH+F6l%wCKOpz`g3vp4s zcU>y4#eu=#Y>oXxqZf|A>9K9!k1c4tAACRoPP-Z$>&c>n%ODVkG8Uc2)BiM8 z5ieO5vn+R2j8IrWDip%aNK4U-d1)c0?*oDx5}t_{J~2kQGw9d$HV4z|{84Rm^Sr5r zk1?Qp@;^o9JCbByq`qNUyAisFw{J~NS);8vPo&d5*366_F6lO`69}r@%}l$j2;^0V zZ4nfv{pricOo&XoClSl_c3#=Sn$_G@;_{mNFLPr``j?Mor{dwhvZ=#8jrPql`70+y zw#EnvyD&TU7;(hT&ydhNk}GmcCO6b&wYERQpbFgAZvUd8{9E&vpNu&`&y+d0x;8)? zRVHH;+AYk{KSJg+-{({}rr}RruQVt0x;%x~Ia&_ha2_&dP7mgpxg3uM=Y+AotJ1zd zC48`kc2DBk4bipo+UE$KH|?k>JE}vjaQdb#nK9?qqd`s-@up|}a$>x9cQh*9 zPkA{%mIwpeZo}_${4TF(d?@}dBCsQCmszF!*-2 ztRIf$IO(oZER$>g+R2^(mPGk?pX|!sd?znSvnGbe8>A-C*cZv;2jYBBu6)S&ZfVL| z`&OBy_WYzF1PYkRI=>P1Sye&skK9%HjmYSt`2jZ$acOOsTGyGrA+Cw+oo!A$vw~uWP zDGWtjdz3n88jCPUV4Ke)F8W2W5`ABt*i}fBrwzZUG$xpfgSN;?qv2#}4@@I-HEj(% z%%1|2P zXlkX=_xJ_AS9NIl3c;2{?QS~S{<6gNiBgxd+(b!=&@U9QchUrj%cK0=m25Y_AUTx|c zVK&U6UNd2(etrgei3@^;SU~)@H5$b!lenPDe8uLU>H>0)Ea-cO@xF|+0xpPPrT=k-m( zxBY#OWroqvwPW18ZN7Veh`(JsSH7b8`8wQXKl3Gcdfm~MtE!ROIhTsOsI!Ut-$3z@ X#O|p*L;a7NZI?ES5lydOmuUD8GnY&i literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/bottom_shadow.png b/TMessagesProj/src/main/res/drawable-xxhdpi/bottom_shadow.png index cf81b6c1476760e876dbf17350586a53fb9264fe..36ba70346ee9b8ffb50d029a2cc6c1994d04f785 100755 GIT binary patch delta 521 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 O`z}OJhZ;iIk$(dPl|4@Y diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/cancel_b_s.png b/TMessagesProj/src/main/res/drawable-xxhdpi/cancel_b_s.png deleted file mode 100755 index 908de523f85bcb985b895597c6ea6585e076e39f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3081 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 Axc~qF diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/cancel_big.png b/TMessagesProj/src/main/res/drawable-xxhdpi/cancel_big.png index 87537b0ba8ac3756207c5a9934d24eea270cdb64..96a6c3d71aef8d46e39b10fb204246c91e5b4a14 100755 GIT binary patch delta 4474 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 rAE2ye)phmI=~tPA{|`d^EA*8~!R~)a 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 k&yGvb#RGldQ(Bql-XVn9)fAc`U!7En40 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/cancel_g_s.png b/TMessagesProj/src/main/res/drawable-xxhdpi/cancel_g_s.png deleted file mode 100755 index 8aefeae6374a76ae097d73dbebce7320ae775524..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3107 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 delta 3243 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 QS_8kv)X0)pWpFv>f8nm^8vpr{`3vL%X_q#luq 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/corner_in_bl.png b/TMessagesProj/src/main/res/drawable-xxhdpi/corner_in_bl.png new file mode 100755 index 0000000000000000000000000000000000000000..feb15efe029f9cd2a3b42436e75d0e6b2da52ef8 GIT binary patch literal 1014 zcmaJ=&rj1(950X%Lj;M@7&yI@izKdHJ6f`aI=6O(8B3P2$WDZ=eQag4ue1+W;Gn=o zFD4RW@TLg|VvOOy&4V5c(Thh9CSLRpFvg1qb-s>mcyKna?^iyb&-drMm!F*;92gy- zC~7b_qZY_|KKjq}llkWR`}1TO!Pyd?Lrb`B_>f9ls0=~QF)FYC4QqY%9h{=5KH4sp za7n)*naE*`2*ZSqN7xiKl?pw>tU(OQuwuJ1{q^N58rYUh&kK57_Y_#QXEuB|w=r8Z zH)>|mqElDFR45Sv2Vw(+&WamIp-eY*C9;pMSsFAUxF*vlPL=dLP>>ISz$9X3oa2Bf zGTek9irf{z$2p#jlOe{q2}uwoeiF1knppF#C8?llEnDOy(^ZT;iDm2cI#W+D$gi+m zGMS7tcs@oDv0&ZBMi_I0v9^K=1Jk!XY$F#$ibff&VVNeLo`m3d9a%SMrHLer4GoXw zn0ORY8>s95hdNFN9pC~y_4l8`L2=!KYyk#n%{NKmmc}Aeo}~EDz{oEmw9?LEzKSpk zs>lP%oCq$@+pdM`!FUs|>r&1Qu;H38r^+-@U~JoxvYA9;Lgl!ulHkcKWRhG)Q}|?B zo75DIQ`=k>nQIPoahq$Ma`~>@s1+QKSXQBL--4FrBL_4?mh7&+#I>$^Ew0twmv~n$ zOPpb&!v0n0_7&-#XxnL9a_BTZbV;}Sq^<96ey)%wv7A%W#qeYKXQPqo6R0l->9J2> z0sMMg*x9>N+8t$jNA{;*iX{thL{f9}JBc`}^9S`E*jMcgt2NXa&;L!i6n60AVeUcLDq7APt~JJlMl z85czhxr`ZOn8@`Bo1zNE$TzKJh(R4LIi5s+fBlvQjxEviIU{ZO3T!x&YXO{Do2puC z%a&l%#dDw#iA2DK*aVTg;)P-)(QRFk%;RmA25kslmgv2tYQ{8BPyj)W$)>C{#{r&a zxUn41b7w&&&1Kj$dHEDKCgylCGY&crO`-+%qF7POomgZg(G84!k!4%07SqZyC|F`S zK@eh%OeRGTsc_Z9W|Z>6k*>v-sie?=(u|$(h_m1HDJy|d8l!+9KjZB~A zm~?!kF3>Rk4|UxhI>Z&YpYK0~!|JLJ*$NC%Gq6bG7DwVxzNiGy#3-mDw9>8ObOT`& zHjodL86J$zJD!bN;psNsFht!8vFTY*S0$P#Fpgu3T0UPEWM0vfY=+~sTz>opF~z+;M{_CIY2IGA6azz=OXvj>u~M{H zS&|GJH}Oev-U& zV2*;IIn1AJQaSUBjmrh^Js|-=WxD?%V-%lbq`V*6V)In+WHFApl-JAet^>yb(FR$ zRa{kX$Of_*J;X49?GiRcP0t3dZZseUHMn9qDf;KD*EF!q6ul&>oa*La-I`zbV0nF^ zVyrieq)E@tfayRc0ye}t2<%nImxC1D(Ur+O+-7Oef#61pK1iynmOu`95Qt1HYH&Oc zB#GhUq9pOxfWYwr%aK=#@^M*|WFY~%4^5(Z=CZ6Qg>EdeO3`(UU72N@%_h@~G00nC z`D8K~Y6wDF|+GCeqg?e=9Izgs3!FgDO# zmS?!|NIjsc{vT@FeYB4?c$n`$h5bs)g{%gBwB{M4am$loC|AyTP{+utAhg=6VyTWW z^6SV2xv~VVELo0;n*LM=uc~s<@v-h0u&AVHqQF>|DJu!Cpv1U%J{J>sJ}+joV&=M% zjVF^5pGhQgJ+6X`H5)p($2AYR;y`X_1=}T&73f*_pjq&c4LV1bt--kn1NFLGb8s%P zfn1g(!-kFhtI@qJ;+}BYw=G%pjSn5-c8}P4ZtGKM?U>>g<>8+4RlAi=odEdUwLySS;5@M`K4epS;=DM)od8PE(h_ zE%o_DZbRZqL+yyHj&G#(cgLUJ*WQAWJ1zU;_Q}RXx;;cye*J!2ZSOn_FJm#kpuEi9 Ge((n$@IAi( literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/corner_in_tr.png b/TMessagesProj/src/main/res/drawable-xxhdpi/corner_in_tr.png new file mode 100755 index 0000000000000000000000000000000000000000..a2c058a0b5086fb68891037061fee981aaadcd96 GIT binary patch literal 1008 zcmaJ=&ui0A9M3F_G8~GhITRk*MZqRb+GI8?wq4S=f*G^xTp0+a$!iu0v2l4J<1A7rfJj{#WLC=m|cM#`G*LEJPA<6r}=kxh~-}n1@+Y9s8$Hyke zD2f^{tMo{PWaDEZ&|^kkU~=W(fq7f}O;h7YNth3XKL9is^=(6H9;eSk9*m7wiv z4cGJ=l8GF~h%rp$c!W(+Gx^9f%vFd%9X4%OrVrlj(7?82dRfrZx~IUFJ-6Y*#f|x@ zxv^^IEINM;%tR6qa3D57%}4~nQme1Nh}+NArod8H4|SXYI=~fplJ7r-gX+2m*$NEMns1WEHKyWFo}~EDz{sy6)b3Ytp@lFC zTF3*+q6jW6+pdMe;BptQ>r&Ybu;H4ptjaV|U~JoxRE-n0lB$%H49{^T;p()O)wHyt zWr{h06H0xqip(_!y137^PPpn&Zfpg|Bav0;+xMZR`N#p?BTM%1T#7^WdR%LGF0(_q zEJ=oq8~azI`&-04@pNEYvKSa2y2R~1v30n!|BYM;tE?8Q(bxK~qoaIcWH-^_3+-fQ zv+(mwr#0z}0AiG-_VG=*`d+B6jV(Ij$?_a>DRd?A^~#vq`W^UHE-?cyRmWetZYZrFr$u?43t{0FpmJ*#H0l literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/corner_out_bl.png b/TMessagesProj/src/main/res/drawable-xxhdpi/corner_out_bl.png new file mode 100755 index 0000000000000000000000000000000000000000..64b85cc329566ac71c2bddac0663416097b70dac GIT binary patch literal 1072 zcmaJ=TSyd97@qYqsUTRrcp*594=J=eJA0XRCs)_q8FQ;KSr-){Xm;l44mxwjnWMW( zP(*}6bfE})h!P6wr3(Z-_z;*61yT_~(4+LyQ}|*K!FER7wTHH0X3mB0`~Ls@|96&# z22V6Lv^G!_)tDL((_}p4eswhYkG#J&N`@9Jjp1Q5f%A$DsXh&5AxIg@Buqm^o1b|H zyD6%g(KBOsOg=5B$nYsH##b;b!ltP1-h!p5QxJnJoYc)2^JDcj19UCMjD}^uY$ah% zA6T&A@WNn5U6@j%8q?bYx(fmkFd$Yy!I(B3p%7zsbOkbZw^;`4K=4$I*-dIp9s)^Z zLlE`_y{ez%0MGllP?+brV<6z?0<53Byq60JVO|JCz}~}9Mt-4WPqI` z3wq^TA{F)axLW00x+-#6k__uM_OC{lwupP&Y1y`9Q8qp_iQ8>r>kq@P*2tB3m=gOk zg|FG)#bWUcP18Kx;A#K(AQB&6Zl&)X_(b1sU9VaH()^f;(??dW^nqucp6|y2|A^+| zXQ6!aR-E?Ce7n%#*^oBk=W7?k9kU1PR);njI@EoAoSyM))t_9eYgw$?QozX3$kiJ! znw##gtWUjNKD;=Yegm54YB$?H`|B>>U0K?0ZYs9(&+9!B*sjU8<*M#fXL~ME)zqn< Vf$YoCUr*dSoRS8`r-^fy{s8x?QHKBk literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/corner_out_br.png b/TMessagesProj/src/main/res/drawable-xxhdpi/corner_out_br.png new file mode 100755 index 0000000000000000000000000000000000000000..50ae092c083893839764f0b0b5a1c679000ad98c GIT binary patch literal 1058 zcmaJ=T}TvB7#(vpv$dpxEDXl6punBkncW@R!OfqY)ixa4)+P6)bav+IPP;RAnz_28 zAW=#bg-_y31XAxwK?M3xkdXZ%(S!69AtCe-LiE%_chuD$+J>3AKb&*E?|$F8w-Y^G zHPuI}34*AJpB0mMJm7v+mH2=0!&Dz0j-Xf?^}<0^kS##8t1tt|xGoQYB#_n7tFJ)| zL6lQkDvi=ox1d0smR$_(=q6?pL`$n<%1RC(G6RM*BSQUHcutX;8ln0^l3y~TAgi4n zvq0}yPf8ifDPfgrJwvuQ0v6B#l1WF;8@Av?s102K&)sc?A~zr?7oj$jN=pec3N1i} z=zvf0vn`7P z{NC^JPEYjTO>t|-o_good=oRtx3f)G>O3FkI%+1S${vSaUVGDie91RGzgAiMomlTb zcWJfS+P&gCRL312tU6J7pUBYa#L}LJ_uBG%7w0Y+IXx- JeAF>;;}5`~Prd*E literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/corner_out_tl.png b/TMessagesProj/src/main/res/drawable-xxhdpi/corner_out_tl.png new file mode 100755 index 0000000000000000000000000000000000000000..1e3f529edb031210b304b60a89ce3026b51bb5e6 GIT binary patch literal 1087 zcmaJ=TWHfz7(QEP8D1VXRG7jDDLQ2~m#*#FxUQ{DrxjaAS6v@Xld~;s$%)C?n(oC_ zyi~-?lOVnfeH9Tz@PbU-%M=umJ&54Tkl~xmDToU5q^{KmYe;e~eBbx~=l{QRVK8%W z%f=lW0RUT4hr}!y+nuk~P5#GUT^=Sw2Ttbk5E{Wn$%G)TpaP^)nluWtP*O@KpTj-? zT(p|Y<9zyvAR~>D91LS?24Mrx7qtyZ9*3AJz)@9?(4QX9(Uhu0=;1(`OB)F|rXHF$ z;m~v@Cr^*dVTF$NQ+>8T1T=^x%GM@yORyt!RaYQ$XPc#|Dg=*5=-)}@(}Pq3nUD%F zJzkmPc`6uWcz+-muua{bXXcEm-Mue<5upW!7BJ>!>hQPAL zVv#BKFvuKb`EWSwX!v|yg78`;9ZR-Xw>&ik5n8gT8dya-IcL$@KRTG@~x7 zTkB;a1!HZ=V0ngfj#LAt)BlHRS{-fSEc}!2KZUJa$$)GYT4>UgN#jO5PAEf2m{7vV z%po*UtK#4o!pIs!29+2JQhSC~T|q@_Zxx?T3n|^gk}kuP7@>&*qpFJF3;W|CF%(QD zdVD;e48+CW14*t|6ayh&QWO(4u88DG4eGeYRsL{$8*&{hXag{_Wo|7G_;U}y%Gb3P(C-S(*vqHr zCMF@4zb&3>2cBzBw{KXQkKN8>x6VF1v#E0QXP0Ysr~gOvI*3dyxbJd>=B4h}Ed!l1 zk9L2Ko(0P{J+Xdqp iav!^{j@(+LW`GOKPtAq8k6rriT+)SGU@S7tr?h25RFZ?A<21w$R3bW^$_)W>;XlpN{DI?B)v%^0{YbW zkO^9cS~BubUgj05X(!oe3s^t{NFr^mU$+E1L@nqFcKIy!hojY`qZR1YZNW^iVjOsq_kIF}4&7uR>HGLWaOF zg+hTY_-Sb77?$UGN5kjyV1&mS)RAO+bgQef=3aKRW`G8mTjI!7u3lga->HEkJfp)~lD?>~jD%%B07G_c@+DdWcV);ggKAz}gv zK{Eqkf3b?GK8T>z2MsdP%8^^!Rb7DvYuf@onG_Pbg(O`D2{A-r1zJ@VffZwXkPU{T z5xUf%Q!y3O(PCqEsn zzBxCs=Uq+rk*-f8+{0^6Kf=z_=B3fvNgJGbRrURB%`wk>-TbYWxtRVnR(a*|2zS@* i?wE~_byS3!R;(q2k9#)`UogKpS2+=F5pVA5KKvWNMrBF> literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/delete_reply.png b/TMessagesProj/src/main/res/drawable-xxhdpi/delete_reply.png index 3cfc6883e5aa604f2d58743ecab60707a2b905b3..f2f98a68ef8a2fa4e79ca72a98cf265cca844f20 100755 GIT binary patch delta 777 zcmcc4y_S1}J5#iqfr+`3xw#t<8ydQrTAH~SyPBH1SejZoy1JT~C@ECr7Wn#Fx#TC8 z=BDPAc)Hjs0Y&suGE=OaAbKru>7BfY$q;J3DK0fi3dJQsscBXzxXm}irFXI(vs3;5 zGcno>3`~liE{-7;x8B^@=*8?P!1my@#A}fx7F`y{?hvuAsS-z>T1`IM26JRBR8im% z`_`nv$+-5ac*o`ncEuw*q|4KvJ&^w~o4avuKezSn$aO|iy+&8wyDBgUG%&CzFfejB zFgSq-rU_eDo%?;%Z+Y-4>D=wNE1K5)uRk))f`3le~P1XR8J}aTA4DO1goM<>_ zf}JNzC(ol9PD+a{(k7fR=;Kr|>Ra6BqIw|EbeVu!QJ5#iYv5SR^sfn|>rIDebtBIqjnX9X#o2iR|o3o|4i-D3tMQ(wwua!%F za%paAUWuoRtrAc~FC{a@$_b*^6qnw~ioGgk z8=iKb!N9=e?djqeQgQ3e9q+tD1_Epe8?-LY7Cp5{be1mss^v|9sD!aWe z#Z|!i#=MP7>s7RESd8R_+h@A;=ubb*QD`l~!N8)xz{ugiz$DNh03sMz794t{_=We? zuDtwnnR_lrT+G;E=MWnDEk-VL^U{qAkN4MGrcOBa^U7z_+nnFca|_B$;=W9K=U>b? zt32S@9S^Z{lPfclCZsKVZ_D>m;}Xj+gSreI$+GQweX?i&$3?tdYLszzvZmB}zd4?@ z7P)F`Rm(S;OV!>#SL~!B?l=3WwxNR8-D5gu?s)98@HTe8=sHWflUMy&;yza^iwXOf zCPow{)&HM#O*qP8LK>sT8w*XZ-VhHZi6zM=JY6-;Lu7JLqtoi5_ri>t6GN6++-16cbEZ%05~E`$ znLJbbl>3%&9T0R4YJE^LagI7ulH$syf*h6g-*S1DC@jzpFDv|7d}D%>afbDz*NVTD za#b76Y~|-I7JgxsEx2I*e*tEr>9_RODQwv4naQ{P*7kZyu`0`g9@k$9UQKP%%h@%# z{LUQyb8o>F<%Mj!TffM1yC0XR*HO674~pUz22eah;@ydX!@=-zcmpGYn6G$s>crU| P3_#%N>gTe~DWM4f=A=AD diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/dialogs_badge.9.png b/TMessagesProj/src/main/res/drawable-xxhdpi/dialogs_badge.9.png old mode 100644 new mode 100755 index 5de08904fae05610ffb85dd888cbc38883faf85b..1c07f6c9c1aa79f9c9d040ab11405766a464c635 GIT binary patch literal 2072 zcmaJ?dsGu=7N5BChM=@ZgCN9#0xIMIA%rXeAqg5ZJOWy(vJjF12FN7L4CEnFS3tVx zLP1?u6f6%dSQiAkVbR>)|E{w(_l?k|7ib6o3Tp15hMG9#m zB!Q%IZCW4X2LQhT;izalTD*@dQz~du1BRwis0cOy_yuTGQdtUwQ{$mT7~z4>+d4oh zEa!pmdW#ui6(351_vlb4QWqK})1}CKgxw2qM`Bxu0#<0Iu^0xfk`;7;?n7AwVI~(qAAftI@8zJ*P!9)=|LboFfD>hH694& zw5lM0Fc}J~a9D{@4T{ouWjf9SiA;YfL7{phi(s#hi8wI2MyjGSX$(V2t3a{%|3eju zH)sr(K)>euKZUU&BZDp&q1m%S#}FbWD45m^ACa0Vm~MwJTctCG3!+PQeGsrQ;I zUpp7pnp`@O4BgP!|7!HAiT|GA;h$!#8_W#-*y}T)}Imy0;4n!pI$t) z=j{l}7lqP@jPi!==_~S0q6Fud>T~&EeTB|c=T=M`-Wz2-YUCW-8ezsu4qve04QCJK zW}2CMPIq}$R=G7CDJi-vE&n-S>H;URbhPxF(wM}I0ml`~>8E8_)_m#hflMrCwm>&p z7NNTld;QtqNK&XHiGE_LQ~R_}<+5zzV5#oes6ngaB^}=o|M$F5-sb#Pg(kski{L~S>Ta&UB{lb_Qe zT&$Zot6NrSX8*F-$(otOW51Vw=rA7F+HPF9x#sfR*R`iK;KxI|8zt_I(NObSL)`)~ zlk6k>E=4RJoUl94b$#YE0lJ4{cE`0h>7z*#|GDXyIbNWEW z#?+bXIoULC$Gr2TywhLUzZ4D_mkS>z8GRg$J-L?*eHP?4h+R1_wotMuHLbqKN#zaW+gl1bLAWb!DZVH93h;pwgVVp>}*3DC(ElvC+7FfhYwSG z%6q3A`m4fv%U1&ITkB;*LpE0WxtId`Aw|D%g4)wk+fr>GbV<{`p{srF{wW&dU-sQn z?|e{aWib4{+r^XM&D7^_hr2dC+CmNxSSK$W{;=58-6;>3P=4GIX!F;lsALl#!r}S1 zfSIlHlIf@r|8<3vquG-8`gv_GW==CmGsE*vR%b^}k(Xf9ak4B%e4{}Tb|BU}ac9^} f!{o-xKfe_RlmI57x493}40p9i7%Hd@iaY)v0kBN3 delta 940 zcmV;d15^B%5WxqKBYy*kNkl#(H0nCD_!|F5RUE8i3VC0+D;(BP&JhTN~*T1%$HN$n*|UX;$YhS&;~H5uzj_tiVOI?iG=e&pFUUA#3wM2+K@29rLwQs z5BA4B9O<)oQPS8eFuV~d6u%m>F22V8xr0+uvZnybb1+a{r8^3hz0C;*q$FcE$>)pyaPY$7_6pX#-kAdt-qkSA|>9=}t1h zw6%kFM+&E?3DeL~D`8+9wb1@Z;1o5MgAVo+3dYgCq>6V&3P;k#8yrm2qnqwwJR^Z) zJ$%{rgn)6h-N!@P=s8^{XI47-EY@S14~N6QA2XbAe18MMk*ngpNe1I6WCk+=*Il6D z&osaR{R&to>JA4Qyi5rg>-N%x`M%&3wEX1+J9+~Q#`1fBgCCA6E)X13i+(to zuu5P|kAHc!0}jT0;J^{VF?Cc@vQuq1k|yK{%CYRoh2c1UWrE_4qzcd6aFz&4hdvy` z(O89mbVzr>Nxk#uiglyz9^nhvbp_wmKjn-LD*kvr9m_KXWo1 z=GSmFTalj==;x4!9O5CwS$a)T~1cs~x+B4Q7!3kPJrszX( z^ufM*HYjdI5zmuHJndL{Go^5vp|Nr+)s4MNBODwz<>v(C=RB;kE0ozaOlBA51X4EX z;Mt^Ryd9*EA{pg3T7{|NVJhw{x($y`?Vfhb+D&UZJFxILvJ(Fljd$m0Zy)0%{Zl0D^@dXEO^DVRk?cs74 z6j^0&WKH-RFBIqx`knolyOgB;bG}7g#EShqTFIYJ?#@fro;tM=1P-x%4Zkn3J1>Ro zvonRER!L<~@r@V;sn~mV{c)wXizaz&DMbg}{O4+3I71< z{{Uvc6Wlz75fl^aLft=r-OnvSDr4Bf?D+~1NF~n~=M}W(a1;qG6>_qIQ+w#I+NHmrIxb95KN(^UM~)^Sri^<>y^13TN!v!?`7|> z&v<}zkMzl}S}?jgx<1!8y>L1>$h;e zs>@rTeFsUI5Yeo4foX>IB5ksOOkI<)e!8Oq7V!Xu9#VTRKx3-griBiQbq7P3Qkm7e zq~0kjRj{aC3^-L=?zGr+em@fifHXTU%S8=Y{rJtl0Cp+sEuE?8_$WHLCS#Bms6{Y< z{Gd^Kz= z(ZtOxLoCoL?!-GPt@Y7I>K;ZZBCn3BM4TB=&=FnemyZjNfZHkb~#6jgOOc6RUPx~ zJg-DhjX6-cyVGQO@-Xr^$&Kbg;m%OKoi&BAlJ(3n@KmTkt5i^Ce5a(PXQB1 z$#z{j;+u^my(JyNIxe9}-SixX=oc=*@{Orz-j-Wk#g1+g^P3rXcG`|c%TrTqS$l(* z`(*s&B4Fl4WC$4WcO&JI-)zNumD!v5Yo)(Ee?-w7_{t2t)SBz?+Lf&}F|yX3ErCe6 z#_p3rI+-zxMWgB#BugLums?uj7og~BQHlqdj;xzCYYdJXwCWP&(-2|7?nmo#&&cmN zL{Dh2Sf_Bc4KVXi#%@L_Pd(YFFBb?w@AFV|jD*h`<;ObZ3*nxIVXY>R=Uvwa^$WT6 z-%4GKu66K=FD>s}cwwo%)brX`XJFd)cLRAt)TJJ_)&q9&&%XL~-E&0N{M0qbRKp{U z^4pB#RcC6Tga?MZxhrSwctm7(#tQHZpX}QEr45y4QK4bRskJmZV^QW%FtqztR%Vru za+C!=_xMgt*}X#+4%a9g18PR*_(F+^xXIP_hJWK?v;uw09Z@gPJzsyKZXsDU z*oiQ7#v*yUl=YXB!^dCW4A~4#xwkQaOn?PGAt|YW)a6Q8k8ti?(2x1ziMUP-ne#74 Ctc0fk delta 1405 zcmZ{deK^wz0LO=Ui_CN`U3-L8o0qm(8yjiaew&uO<)tgS%S*K8eaf!4q0LC7tz8l8 z;wS(Xz|kCu z0Kwj#iYL0#9LQKI0ie?Gcq*1=Wx=j+B{X-g7Tgr(i^aGTn6D^yeQu)W4zVPcs6m(j7;*Y$#;U$)L6jE?A#jPWJ6B zYY5onp6+mLwQ@cR8`1DOe=L8vOPR;{*o{*vzjVcP<*@$gaCFm~M!q<61uOWL!dY5c zV(%4ep_8YjJY{PYq>IOI8jA&~l1S1{C2i62Yx@CEZVC1Ak2%(LAaDp=0{h9Z#YPCq z4DOzoC;y$i?dj(UTf+{AVeJTW{7ER7WRn_$-6uXtiIkiun>E2NL zoBM5K@nw?Gpho$GA-`OfsOD&}!!FO}`;A{jJ;{~Ff%CAcWw!~XtNHOih*`8OW~_>6 zR*W9n;m0(dHZm)z zfTp_n4;Skc{RUchcBzZNC#-hPLqPN)`lKRD_sYLRkx zrul0q}}kZ^Vi;1Wdr^km^ewHuQtGS`OJjf=E8S&ufvFaw`O^H4P)K7!1!tRL)G zNBbAlePU3GqHAbzGrl=5D|(9G6MY-1R(vwI4j3%=)HqQv-&%Jsgx*(C%?KgggVQ zzanRG-kXO=SlGoh)xe-HbH7#EtN8sbJaOgQ9X=PlxT~QgLY|b>78>hWIDR{%DL9|| z<{bE7U{OGS3=*<+(BENZUxY>vQTBBxRnYrO((sn4)szR~tFustC&|ufXImFC?rF%9 zY%;%Hul(rJDfPZ!6Vf>o5+1+-c^eoh`cB5bYF=QZFSzZF4rufQ z#<;=M%oRwBPo&P3U1K%}y!kvaibi^?X`N~^5kF5faz_aUW@_GW8@ION*yyiK;mD0a zp5`}}2inlJOqS)y`Fhgjm{KSzJadGVhFvkhfZ9uS1ob1Y7eH&F MQ$2zEqF}g6l8A~> ziQJI<6B-Brb0CE{j))U(<;pM>Lt>6$=v5jL4FG`~^%{vxi4vd`O;o6P(DQ3`5U7yz zpjcm_mrx@>lN4d8S~Mm#QY=eV%3wLPF$fIQb4dafN=QJxYQGxi>UofbmrL4aHxmLa zA%v0#y-g}k7!3+AEeiTFygg-JEEdS&Fjzjm91d#($o68fnO@|}@nrdMeK}mVA2|I$ z|$V}fJL8Y0YRpZlTA`8aUOEgRt!^?amYoJj0|Dh_?Of*i2 z(0}v&Phwnb(4b5aieo8S8QHjm)#j}#7IKqQS28Kc*=duMH7-qqO&=5a_#R~C-ef<&GAMy4MLHswt z2-}K9FjLdTyd;`R5Vkd9EzwkGNj~-t0QS ze{%~D;^a8jk6!KSpR>oU-^*onW8VzbSV(LL{QBh738 zhwZ?OCV@@#-x(iJ?oUBnhv*-cm3bAvZW@aKyX>M%y92ewze&Y|hrfi{k@EPfJczuS2;rXwqq2xVK_=Di)^4jU(xI;9KTJuTs(2qMCbP|u*oI+Jl*BerN-`g z)G+r2t?t+8pgm|>)EY$^r9S-L8@BJnk!pC^(*I0rQG}aaV_Gp~S}FD<%6Crg1mCKe z8G2GiW)W?twKA{Oe4kzdB(*1RDDQLuuBXtq3=3(--Ej7WSI}I3j*Od)K6;vCGKkXn zPh@F*clyshiPuL-`wne=%AS-q7sz(T^+_2Qv`g!%X@&U54oc|H@r!aG#ff+9UWqK= z1*4%hJ+LvVb%fegx;Y zK`(yW{-}@nbO6~b4V6YVjO27K_bwP8i=J{nWPs}G3;Nc4!fO1wJYtd-^Ja8kjkRL$ k-U~|+?ZLsQy17e$2PbQbVg*hK=HFO&NF-9RY472G0NP=+#{d8T delta 2077 zcmai#dpy(oAIHC&VJRlJ0X9XYAt5X&kV<lP$*=qPbx)d;vy;Yj-*cA>2d3zrjt9H_o%MHY|B1g<1!Z~$I_Mk5 zB;GI0nYb>e+qg4MA%k ze3~Dh@lH-|I%>e`1duRAxGn<1BdHtQ0HF6bfMfqxz%d|gJ-C65?7!fm{{CH+!;2=$ zZY%esd-ZwsH|iVeYru+yJ(2`bR~x(4cP8r1-P1R0o4&~XOpkUuBJqzRMkPp6^qz8E zS5m?Jh0CP_)M)jqrBvWQYiU$7E2vzhF z@5PBS0E1);XPn`cv3+T?;QPO-DYe z=&5S+uAeXY_RX{eVeiMcqJ06Cn8JPG^mD}aPsx6Um!zq=6;YxZ$UEs2d!(newr!%e zZ+=*mBHAjd+J0MxQ;xA&(W-vyh~e z&=o;DX^J3Ua1Aq*?AG{8I_c}vKYerf!sgY|lZY-M%Np3Fjt)Cn^{8mkGP}J}IlE4B zs&K??Z(B^J;1MK`-;@@Vx1ivKfR3t?(v}^@9p>Y#oahFK2*MSWSG^*#w z{Vge2piL1i@BfFY_)b2}UIy`A8D`)urkL;=$W*JYns2=Ncb%Ond-BDT@AvXUGiQ4W z0R-+AXRmJX2mfUdfHR#h@-RA+zkFkGWvJ9Wc^p3|m_`x?u4jF^&vzZDERVM>2w-|i zi*2q{R7!H2%}4KLH8HH!tL@KzzrwK`o5mG3|LF>a%tfpj){a?9QFEob$fA&uI5J{2 zH59(8&z~^wzmY!S6|kbI$laz~96i*bfnE(t#5eYWj`fKJE*xx;TFAln1I$-Lu z0u7Um&gwqZ=UMhJ<6o6nnY2%Mj~Pq@_zr4Cgu+-)=afDpHnZ~gnGb*p1TK9ZZZtQA z&MHKWneb0!_j{f!-F*gz??|(cNkwDNDkWKujLtrgTWC}m+@AmJ$G2EIwnXiWI(YFK z^imnuOR{=CIq39YEUKw8c~KtoZdO2swz3!Yx%?d3wmwH=B_d^otM1{R#n?YxF~@(g zmo_6e>)!u{)oBUPjlrdYmtjZTrC0-F_Vusl^e%@2PWy3*2L-MJyLgY|W9ZN({MR)5 zQH`pe1H2z|k@N_lIF?sp@!S=SxnNjp$|yPmcd-~Yh5dJCUT?nS*Npb`G~F2u+4mmmIQXg`A-Mn;X@hE-)$NxE`C?{ zI>mnEX7jO@m|PNrH<#yBEi(*TZ)gCh;D$Y z29u$L>7_K}?K3WJmDep?EAOre+b#xN zb~mIt7e0?hu3vLv>*53ywfURDn+M>8O|Z{CjW!IzZ3P@aceKi9SiKmSWDXz~f@+kP0-+cpwKlp>&%Y5I^pw75?U@QyXvsTE5)xi>`w~P&b1Yhi`tQjOL;1)e? zw{$r&BDJ9NjqgK#O+NQzYDq~FFL@y{$z;s2!tBB_vA8dA$z5+P)J9#VYh{5ipGW@g zQ}SeA`iMut&DQ`5zj!U3Q*kN&ih!U(Hkv?6%ye^}s()GYIZw0?{a#P-3tFWN8Ol>V zG+X<#u;IpxgU7HL5sLGQ5U<2Uo9e+0dnh~#CFOx}`GY-MwIB0+F~07{nFj_Q3GX8U zbgjwG<{dsk{5Mx@!_;wna3aHK|B=>$R-KGNGgF^_lPn{4b;TU*Zy&|~WvBn*rU3Gv gZmQw4hE&@R)W9Ow5Qcw*0_(@o_LNQ4G5^&60id79Gynhq diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/doc_blue_s.png b/TMessagesProj/src/main/res/drawable-xxhdpi/doc_blue_s.png index 38910b121d5c446186236158b2638043ab0ad5ce..466b3cb3d8cfb44b65f7231379be0201680d5ae7 100755 GIT binary patch delta 1197 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 aDG%J&uWf+oA05FooTSx7=XqErgj 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 bt_>US>8(H3(qOL*TPRO=UpKzX(UkuH)%Vwc diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/download_b.png b/TMessagesProj/src/main/res/drawable-xxhdpi/download_b.png deleted file mode 100755 index 0199ccc179fd2fae0626f881c988b96fab2d83f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2878 zcmaJ@dpwle8lD@WQ3*-2%b59$iMcd0m_{U2%C1CiDcUKy zE0QT~+oe!pyCj8bCT&qJQzWs|8SUzvKThZSec!j%`~IHidEd3x^T#^2)oUX{bEPH- z1VVUhqIj!D$-=itUG;Zh5xZ2w3bC8NcsoB>9LW#@AZHdo2tayp8En8CV6gV@y9ba# zAgC$F$6xGEqmr0>E{d^$K}om*6&nO1ua^iI%uqm#3<*VM;@p4lL94>yTs#NhQDq#0;c_8^#lnBu=JZbV;iDLKd+kOUOohKa#qkwhX2YfB&!v1^ey3>JsRs9vHC)|Nydl5lp&uaBv! znvfMt@}{_dt)+^bOhd$C0SS$cjEqD@;!%7d8;x~va9Gg5;cQe08_|BAm?5#@iOjw! zPyi8A$PtJ+d>(Q^krBiX7dx4%I{jw}T)}r)p6Kf~sWuEPVF=Jz6lP&b-+(mQ|A%t9 z-_atmH}Ic+|EI9XXTJbIdjleVxR9wjxL~t|QUa2z5MYS;LLWXq?AtDG4dILVq7c3S z>AIbWwAjJnvG|c9%P)8ujpV@-i5Wa5;6ZURRVko292SY->THL@V%^L%h%n!K>R^SR$l_`Lb69KT?g?ujZ%aTc) zANNA}q25<6>xaEy-G0bLtC~SC9PED`^tY7CJqy$Cwp9h+jSuitZWpR--GnTnfnmPN){8;J=%TKV&WzV<$p2Ju1xY7- zub+s`jej02yL<8>M*l^`409%t7HgIcqcmd?yo5iFzH)%|DzCKytHs47Pbp3Q( zj`3=6lm~!qW&=&Fhxoi!xu!bcww{ z-BU%l(p{E;8@sUkTpOwVzGdCRJ0O z(=98{_%=PEUHwT}tjrK-18Fy;f+O8wP;xWHvA@PL?^m}Kyg_Oyh?;u?(NwD-XZW^c zd1DfNb)Cx%EkZx%QwX|Dvka;r0xXyUweOcP;dto>THK`^z zB>mCep*=QZ??)i{i~Fr7jUxhdqzk)$G5f>V>W{P5Yd%79EQ3^yCIStRtU6c}Vk z4!#{WUyEoeO?$t%s`{;u=c!yDJG#rYq%1`rg)NBBfwdQ#Z2QRxWK{gozWiE2zQ!FW zwRaooQ%|&RgS&%~?+&`-9W#J>Z z%x^Lo;oltnSD}@9<}|gegM6nDf+&3kTgVlqfV8^}@4U8zkT;2RicMgW#3AH|s7z4C z-X%djxu6f7hIfk4;PG;YmUZ#rgSeYk=5@Ml&Lx_Q%gPMT6dOsWHJ5>FFJlvZt--bB z4v9TZkb!)MMBi25TGh})fDDwVB0RXZNEP`)4tS}GOltbyXxEkRA!uA9xkiE}23=g= zv>vt|`j8Z1JCkcM!OtmKE{DjEHXiO(B;7E!RP(I2qCdaYQGRJyT7sUrmUP<5FfV{^JC3oLNN{Hh^yGB$x9>d(;ioh-tiORX9H=yJ7?M8C;$KfdV9mu`{zhEX#jjH!9os;v3ll2z6vugsP zBs5*)I5oI+@AI46e_>DEL)gKm_QcYS1w35R+!Gk};?Jlg!t)L{t@hbyK~a=AETK2F z>9>*X!GUoQs(-L8L+kOpG24#zW_ly=n6vig z6AyN1YJ=agV@m>ChYTdY0nHoD)?F_Ogx_wXL~d-kIh&^M0Do*9u*6<1XVED;#naLg z>d@)z;dMUO>G-LBlTF}JUpt=cq4NDp3mLi2V0~2_=Y+wSbVGELAL5uN%y7%^3WXA* z_dDQpQ)~PI>V>xZwO5Xl#LrJ#^E=N?hV`j^*8jVDOl^z$%zCgo$RRo&)$v#F`-K~= Mhnp9r%q1}H-xBT6K>z>% diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/download_b_pressed.png b/TMessagesProj/src/main/res/drawable-xxhdpi/download_b_pressed.png deleted file mode 100755 index ba3e4dab4b475381f7ce246ab86df9fe5e471354..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2949 zcmbVOdpy&7AK%O^Ly}IEwB}Nj-Pp95+%|HKp_xmPjBPgT(za~KNoAFXbUG;4PP$MD zN0hl`kwd~s9^_I@atPH*Jvp`N`RVpNf1KBOUa#l(`u)D2@8$D;e=gt8=k@xf2l#m# z=&jNNfj|a6TS-(vN*6y}ZD7PRaCZS=CMJi91Nkhmgf3))+!_2RCd`LRk6}`obVlOt zTTCJd1YvP#q2f@AFCm)GMbH;@5K^uHK!ZR;SE+y=9mf>IqL?upo(ueWV+$O{VYt9U zuoM(U;K^ijwk8Rgfk}R}=%l!4JOl2!1xAz-00J&kOovIi@jMYh>H`17O91AJ+ekR< zlZrUb1^(HoP)Y#IlP_e#um}hHXcQU^!{HEUM=TD9-UP#-&=@2Ncyaba$qp_fQG#&kte20?Rg^0 zuM8xnC|bx7h&g;7Y>|;3#or@#fdig?4uLD6P`(lKL|+mGqzoyg3y^383d!Xz#`Q^C zB&IU|~AH9dmT0n9TH2ip+B;W79Uk?rF3e2$jH6mk-n3@;&{3;UE`0_QL6dwTw_xIbeV z|4+`4fHTO&;`py(`ML#E;NtXK=>v;z&BNpY9U}x7@st?JXCLNh8-VskD zn|72IVfNpT(oB}S<(wX~(?n{{L5!D2NyoKP*1fo)a#Mmy21X`E zTS-6Zm_SR~1Hj9$+aNiGCiYZzdaC`0mS=UWlE$aQw}&0(pT6<`5HNkM_|K0Cr6SfJ z-M224x5R2r|0uOmqlo4fdQ&&v590+P@|7(g2x{b*zSFPB);%iQ1<8VDe9GoO>r)8o zy&*dEgu@x*#&UBD$kO!rD$7Z^lD!zp_%J_ktsI zTw|7uC6k#2psL9$)cg)x<-N%~!?g!m4n9=wKfbYR95W)dd+}O%KMqDM z#7MJl5&H%d{zdNB92HtBurz2@6`e~%_NHDjwb4=$7j)#^7h3Hm-0u-jg5M}-?;REJ znInG9_`*F!xq+!17XgSJwR~*doU1 zRTtHeH(B)CBtARwb#RAz9fbkqz~6r7TVbtGIbA z^wfsPkzbqdYBufOF>o3x^8Wu5PY8yGXq|jnYOK_ewdD+ex;@e@kQ@4UkfI0Fc;qik^al zq1ffh+kn_p#yCHIzKuO)#Z+>%T=yJo`^7rAU?BaS=*~NDg z$cFs&c9vXytciwOXef1rI*m zsyOF@7(8bnd;pRq*CiZwJ)+qJm@`;F8=6ZfuJlr;RdDJ*bF9;r^gX>c!OC3^GZ>-HC?`l^>jRGI0N9?RSR0*ZQK zKhf!xNI%oPvi%)79dw=J;a{|+D!+^}g`Y2c0y6)wKX4(;ce1JgKby9ShM8i#XM6bD zHJ{htyPWBqQG){-`>o!oX!HBLxcUwK^+nZ7^iUifb%BQ;KD^8E$>a!a4O70oaW*I6 z_KKp5)mj3%wSWKq5Nhlr{lIH|@PWg}pUHkXgtRM{?>SyGTG+*(>EP6KD9bYa4&6K( z);kw^sik^X$C7^R4!pYL$}DXbzj2pMmYRrsyLN$cwmhJkl;32Ce0(`GF12k$)0HlE z!BYo{ZfUpd3uy4$>)H-EQb%F&Ki2n}KoW|wr7BeoihYz`#yb26qx8ZtH zk4D`Y&`<=6c6#lu+q=HA_1??S;$ZEa+9wsinAZ8NlHXt=#tCz%6U4cjzfIZnxm3=N z6XnJa_;cYGW5=%q3Aay)hAWKMte^9MmUt`uWb50OQw08TXWLU#Y{Z5u?pK;EOc=cs zy*mOjzxa$OupOVhg;p7@^;SFTl_u9t{}WQ+a4pt{23N9YpvTg@^X^#ALgk}#zh6K0 z&=kL{#ex6wp+S6D55BE5Q01@KHyZJx7xZzx0(51GG`Y0X_V>jfV;`~~snR3zz`p@E C-tM6Q diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/download_b_s.png b/TMessagesProj/src/main/res/drawable-xxhdpi/download_b_s.png deleted file mode 100755 index 8e8a25943b7f1a9cbafdf35eb4e31aa20968608a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2886 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/download_g_pressed.png b/TMessagesProj/src/main/res/drawable-xxhdpi/download_g_pressed.png deleted file mode 100755 index 4a258462ae0b677d794bac7558ac3cf2548e9823..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2904 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 RXJqp)%$9tBRAuFJ>OWK$2Rr}( literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/file_b_cancel_s.png b/TMessagesProj/src/main/res/drawable-xxhdpi/file_b_cancel_s.png new file mode 100755 index 0000000000000000000000000000000000000000..5e323f92664e4c37a32286667486c483e954a1ef GIT binary patch literal 3603 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/file_b_load.png b/TMessagesProj/src/main/res/drawable-xxhdpi/file_b_load.png new file mode 100755 index 0000000000000000000000000000000000000000..dc4dae1fb85fa1d4d3a40dd92d7725d5aeb25fcb GIT binary patch literal 3301 zcmbVPX*`r`8y~|kmNIsUdW=&k%Ph>88QYAR!H^|OR5)2iwwYmOVvy|1BuX8vwxJ>= ziEK%fl9FaPq9kcUNOh*1@ai2c=Y2n%_k4Jt-}Bt}ecku<|6j{}T^}C4yQ{-01sw$t z2(*gkNb!)&87m)DRx)m*q*qF&HC(DM*OL{>jSFPcL8K5?5FMZ~0{758=z$^eF+FrE z5J);S+{>5i>#~&)%wm`ZuIQNZ7|{|m2xMi;iw+Eqq;r8F`krv6HGJ;c4LA@UVh#7f zxFB7k$@H*r#{@RrGr`p>I3Y3^9|E_v0jzig2?2x74Fq_MC?PmwSga|^9D~K8i~%$fg+?GHFV+NQPQYLZXba%S z1D9B1hlCP5DE2>WNhE7{7?&GOKp^7c;!NYrOj+zb2oxTVU*SNbO(Ys7oOmWTkY~c= z82n_Q&^f{E@Mvy0iwUeS1_rVAa;@PKPrrx2h<0)Li1j-bNU@%tV z`lij{deHyl#@}jlyyBzj2oE}kwU-?%xsOnTpI}Mu{@KuqqQo158#`QbDS=TGR`6a1 zoynz9tl^Rq(~$5G0+LLzqu{7^XsW$A6@xD+Td=k{KCvcA{XXY(!1WMkBh?0c{eMh4EI z$zGo;jLF*JN} z&AJ|~)&7~yyuTD1tRV%@K#NM>S1oh6jU?%@DCPiFT={gn6#Onwmr)t(EWF;~_lbgd z(|9a;1OhEho%MU?dR*YyVeK@IO=NB0Gv!`rh~>o*w-Phl-`;LIqNb}hBt`Onx0FTtX<_LcRSFhQhNxA9|h zV3L#dtFZp8Pfl~wi3fG}Q4r|c&-sFEr~MU=-1EmNqp804Mg!b>&Toj+vW!1ftp{uH z+m#id-vqtS(%+yvV%iE471Kivu- z?6$r7^uM;-1!};0+S(6q!XIe)i2K}A4I-tVW{D8aOx=O7KGG2d;=WYV!$r7D;J(ZX zVw-YFp?QJMmN!K>aMyHOAK>9^gtI_F(jE<3q#F~?SK<0xTrZ}SiDqKO2C9j4YRhAl z2fYS5fD_54s-Hy0`80yJ-IdlVuu1Q=yOvUB;!j62g-ok$vMN#CxiUH4&mZ45=yy)S z#T^5aEK@6KQCA1ep&W}i98uUW)@kt$OP=Vtd4K zU!96WcB_zNsk$5i?4&+HzY)0;m<;)7#TUe!k|VhmcV|!PdHk~f&gM+cS{0bM{G_U7 zFvd)H+8PF{?-;GD8$}*7T&)FNc%sWc`Qg+{#Mk8%ZMo3G4=P`VJd38WAARax`B#i- zBF>R+JR8?bAS71EKU&^5`YPJ}(!AWXe%0y_L5~VlE6Xu?yQhZf(>RQQHtc9eTFp~9 za^kq6)25eq^^4#fd!f_<>G!B%CQv@4)p)B8opgeO5b6L8bDWt zO{vPM7!{{XZj6D|wW`5BNW=?!&!W9w06}LR=YR+U@QcO_QdjjRV4b6cClp*xk{pd1 z0B=`#^rW^KNPrRYInxs0G(jq6<8k*U*rW8Q1rE z`)E>P%NQ@~*1CI-R7E;oIGU@PsCo{nL}Je> z=O`d~hq_YVzAuZGQkuXI>8F-)bRu2yDTaoViCMQmMK9&XL8K=s%iVeI!Xe34E_?Cp z4VDZz4Sq!=u4>4>xd929c*G*V)SS7lI!X1~@kXin`BXbiKBguai*0I_k_8KF-^Uky z-X)VhORCVi7)#E8${gHP9^Ox66*fm)s3{^}R)F?{5BEzE zseQOdV&dVjO??-3562L1Q|tQV6idT)?;SKvD<|GjN3AtePq}@l>2k%v5$kt1v9!LZ zfsOffuLq@PtEU}GuW1QvK|9*6c$nx8z@fpcbSEOuJFO(6eM8GkgJG5@?p)($%|hF_ zic*KKrue*_V$vWqEY4$>58x<%+^zT=ud?yL*0q1G(m1O6d)>uVTmN_!v`(p~?}D&; z+*f1Q)jMT6umDk3o}XB=C!WX{*Pi8nLc~@l;0Dc4<*&Ox?;!dboEf9L)}bWx4HqB( zM1ILQLBDx1L;GrRtcA7Q>LEq%@h{+c(S;5UsL-ahCQb$V>1k+$rQT_7Tl;Y*<)X6U zPG^x@g{|4X*%z8kb+%1APRfm+|8r(;r&yJ%nSkOsjh!g}k}K)LFr}8X>+KxYH{~~#m?cW(1AJT zb4>bJM}08A#NHDkYpBw@O(XHB+lXv=>A1*h)vFR>7FL?N0kQuNG=c literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/file_b_load_s.png b/TMessagesProj/src/main/res/drawable-xxhdpi/file_b_load_s.png new file mode 100755 index 0000000000000000000000000000000000000000..044304d96b5fd10e1f67b0e69af26d5ccfc98478 GIT binary patch literal 3303 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/file_g.png b/TMessagesProj/src/main/res/drawable-xxhdpi/file_g.png new file mode 100755 index 0000000000000000000000000000000000000000..7dd85a3b5273f5ebe2338fb432ddc02bdbbe746b GIT binary patch literal 3505 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/file_g_cancel.png b/TMessagesProj/src/main/res/drawable-xxhdpi/file_g_cancel.png new file mode 100755 index 0000000000000000000000000000000000000000..1ccbe9d93aecbbef496c47bb3839c9d7cab57e87 GIT binary patch literal 3605 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/file_g_cancel_s.png b/TMessagesProj/src/main/res/drawable-xxhdpi/file_g_cancel_s.png new file mode 100755 index 0000000000000000000000000000000000000000..de91f915809284b6babe99d01b1652d5b6b5b027 GIT binary patch literal 3579 zcmbVPdpy(o|DUE5}M@}u?xc%vDrjSm|Q9`Hny;7n>#gkij=5SZi`%#IKLv1 zGNn%B8d4p{z3ezCEvHG}Ii1e;_s992KYpLb=ks~J-|x@s`F!2~_++`c?o|eBfB^u2 zvXdjxLn>3(ACQ9d?M_Uol!~o9k`Ir<4(3HuIdlM?#tx*zoWiLgbPqa}7JKY5-5LOp z4Q6`!@O;QFxFB}8DRo`PG$uSkiUt6zZDS&+L7{XWERY_;WZA%fZ@mYHF=;k%Zwwhp zj-A#<9QLOQ zFVqJ9%_$$U8_b@~p~EnyW+p*M6bfcxVTv-xSXiKT!O%z)8iADF7A7cj9L55NwuJq4 z!KKzXv|yYE(cv#!(wz;Q!Q(~X5QymLXwzsjQ#L0Afx=?3>l|pbiB!Xc8_VKRV@z1w z9p4#D3<`xs;|W+Zb3E3{5>LWgT72jDC#*Tz+`$ZQ zfpj2PSfWrQ3>NKxl`bt&>ueaazp+j%E|1CzqJOu`l-m7<#W?&c7H7|)Q+aHTCz~Di zy#w4BY#y7-U`N30DHbq8ZzhYzj^^%MFVDAViF6J#icWLju)|@0<`>8O2m2Tck^|b3 zXhuZ;UvYoK(*8d=Lr9%LtT)I1YL@Ru(hgi-{@wc0&ELaAXGtf9BOQ&@Mo>2Z05*0a z;yq(th>DnD1te(trkV3Uz5sgIk!tJIWJpuVGODLQ&-0Q)SEvGEvY-mZat{)$bu^bc zxI-BcPOC|ZAcxwjGW}!?a(Nb1aT2VqNa};yPN%9-|gVyQ|$h^ z%Z2Ro+P4#t8M_Yb7aNKhVvv|AqKwLpRZJ41QvKkzA2vyl5?Cwg?&Y?WFWV#r;$X2? zRE9D>uKMU0>O`)OoEM9@ouQ~dDJ=5rY3GzE^3*^~{*3t3ut?lVW>;U5{2>Ok4 zcV0#w_9rDdUd4+HD!jjH##fQFekt>){7qC@UJoXobe#lleevqq;(l=rLb9iN0a)D% z+&pr#&HmD0#%LE*Tg|yBC^ye>G^siJRmbuB?|;-O`uy|Na(ti)4%SC(H=6p0DnH50 z7EWXCY411=aPMK!o&|q$Q@8^{wVV}Drp>|>1e@Yf@fZoQC;lK+uwawryM3JB5ubiz z?Do;xGm)XkYK8SLe}wgk5<9gk|LF0Z(oHubZq1>+`uEOm(LZ|HdW4vjSW*f|>g^d9Ib$r_nT^w>-VlCFv0nvt$?rg(qJL5hUtq?p z31AdY3%9`P^J5hbG%PnyKcv8rH`X-Xlv5zX_8iKh8f3nw{pZEXo15y+TrOzIw&utL z>byB+q-yTPnK6P44;*tZ9DH0Cr3l*fre^qf%CRq52cHCDk674QJNF;3Hfl2W;mjFA ze11qsdHCGtmEG3**?Q zlH2GnrrEtD{Q5daE4^KK*CnZAgf()}_r|#DjO}K~V0V2`f@fCbooSp2glq0q)_;X( zH=)^mG>5|QwE5cEB0F_2Vzto0`>d>UOWQ!lr0RU58A2dPe!V=iUwNpRdl@mKzMH1& zXTBPCG+c6F&-kj^Z>(3L`#|wdy%+RCb%G1!I-f3`W7@gf8f7jEPQF)UtX7A_9NCyK zt2Z+jeZK6cD%+k3bXk}J)2nf>g7%hk;zOkXleaNORsA;WEjfbL`iZ*^9(d1lE@ zy(#CbMC%aqOYSeR8%ej2rP-IG)))hfAP;NEITxeYPO<*}vTk{W{C=dCtPp#x;I*+K z0oduT07r|E@9)0xnJ^>!h$Lw8=n6WWN;C}MKa8*y7#z$zJND~8fpnBmkwDZ?`XwuQQYMw34$P$98oJi%ma3`1P{$R}Ertz8PU~B=rfDivDcLDC zT=&A-Z)T~N%EZuoTDoke2so&*Y*zj6uyiM=(_ zD5aBAsN!C0)K$XtsGWq|2dK@tUn~!qC|BdJ7$~XrL=Egb?)di6QC7(i7`8@Hhl1TV z@U5zlhERblKtQ6p84^tZ0^fDn3J?}Ibn?q8wkt- zpMhny$gJ)|Crf062(au=INVjqsD2U0Bx&g$lBP29*9_$7|T8mfmOIzv406 zczX2b>p5Wi`LcN$OhFizrnBr;m%AY_WoLzU^bSW- z}>?b;Arp{w|dr0TbKIyJw%&q1)Y zmkLYRf81(PGLd{jD=oMrmpS*wzZBm`Z4gYsL|U}I*pV7mb&*Z#q0Cp04}w-ZB^s4| z46?OS7N36<<67o^;jjTP(8RaVfl%OaZ(sc&Fey<3arAE8$f^8*{jQDI6P!omF~QHl zEs1*lwz{%{f;P{o;Opo2oiF=>A!>-TeGRMeN}#i`EGc>1)=gwbad+hC=#Y(cbjSoUire>~)n*>g_(9$WyOu$?rP5X{?xVJ3Y@O zwgy;zK`&(bM@V0rh^(>DQR~hjv1F6}XU4nf6Z5HTZDQWl6Kw$CiwDKmzhrf6M6m^$ zxv}%TPPcx)xqV<|gKPKWCx=fox9;6$i~oGd+OekK${Bw>D+L=Yu6K)WGW{!368T=!#kFGEw*mMWjGKt@yGRHyFc9-fA>Wm-X-==(} z9U<%H$t-!$w8vfzo6wfFZA+Er8U3)9*{2wj3+lU%$CVzkd^^z=uPmVsJT^9nBnBR| z-&z+AQh}gM0{pwy4splAb<#&1UHr~%iDq37_U~9b!oAe=PVkl>Ho9%wUF$shZZQZ* zicYO=98~!u?fvvSMFe}M(<-)@m(H6x5QlNDo5f-tLCj%+50Z0Gq7lrT)5kkPM$X7~ z(MVg7)gZ$n-e_xF@2yjbX-t)E{)>bU61aDroc6Q!j0bJ@N|BG=>TC8dEX0=Ko5wyO zCB9HFY~vANTOd#D=lXvHgekL@(VQI+i+wMQ-_3erfS{ zKapgNE|M6=E$5hgKJeC4KT_!>!x%AfkEB@9)#0qUOEJ_E0?dys7@{^0?QFR2FXZzl zHOq0R-hScoZ;>K!)HDA1t&ikS^d3L;#gvpAZ%)|Ud3+o)syB&86I%)CH&PN!4>e^& z0E-7>m$z1e3XSDf$*5H0F#VebPu?l3?oKmJ6ypocI`AVtH&e$MbS)M5wzgIaWvt?uY3V$wm-OCDLZ2UT=+7#1UFdZ)Hfwnz<*O1d$@>O0P(4vYf U_;k7d>H6=O6UmiWPY6i<4{OE_HUIzs literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/file_g_load.png b/TMessagesProj/src/main/res/drawable-xxhdpi/file_g_load.png new file mode 100755 index 0000000000000000000000000000000000000000..bcddac3bcd1f559e8987a547653d13618523974f GIT binary patch literal 3288 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/file_g_load_s.png b/TMessagesProj/src/main/res/drawable-xxhdpi/file_g_load_s.png new file mode 100755 index 0000000000000000000000000000000000000000..174947d793cea3c3d695024d6f625ad858a032f7 GIT binary patch literal 3295 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/file_g_s.png b/TMessagesProj/src/main/res/drawable-xxhdpi/file_g_s.png new file mode 100755 index 0000000000000000000000000000000000000000..8395b5ac857b1470edfa7d949b7621917fbdeb60 GIT binary patch literal 3492 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/floating.png b/TMessagesProj/src/main/res/drawable-xxhdpi/floating.png index 65abfe39fffe6019698449e0e31c5c7b9b2d6a29..76ea18c9301fdb6404501bb81cc5fa5289ba46c0 100755 GIT binary patch delta 6242 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 delta 6422 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 TS%D$E+oP%WRJB6II^zET4L>3u diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/floating_m.png b/TMessagesProj/src/main/res/drawable-xxhdpi/floating_m.png index 6a353103a949af57d51bc85c87455385760cf7c0..598b8953a5cf41eba4f7bdb7f77272acaf95b577 100755 GIT binary patch delta 4091 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 A=l}o! delta 2958 zcmZ{ic{~%0AIHfsL}HO2Qfw@niOA7bzq#jXDMzm4ockQJVH%Y)nPYN}Jcyi;TL&J^ z9P_xIPziJ8$dN1Rr`PNG{rP&^($H` zD*9?@4YZ!lB~2YQG+I+%UH7u=d4g|%nVGhpzYE^i%`XI_hmt*Z5U!rC+W%yA|0SDN zctSA%F=MwZ|>tDIa z-H%5LgA$m+_{DjvKZJ6PZG47~)Ze70CiNxxf+Z#5nO8LUas&`A@9M56(E&qc=kruA zL%7_YQf~3M(1$|`Z{M^+KUv!+7F5uJCO-wQ?{DM=cNEM?Mr8yIZbc9V$)thsK`l$) z3dfM*8v``^G6|T3oF_|dxnSHFiD__c`q{ne&Fsf4^>J#?ec$iVBi6eC-btSz`eu+VJsZ)d+AP>iV zGfipsa?evXwvtBrpnK$Y1S6QbO7#G@hUk^hFMe_ur1quP8yTGa)wXvk_$7~2rcZ`X zCh}>9CwhXr`|z6>CTEVw(Bk_fcKGO^WxlxBq0Vu$Y#{g|jxwJ%juA6*H}SG)N{+$% zN9R8Ap-w4>Yx{0lDeF&C9A+#S*Q6aLEEGNby+Z6J@sqS=2{I4AS8O2l2e{fKO1>G| z$=fdODJbM=_UBF3UKTjqsLpy*i4p#IPNH1>Lxp;_Df-#0GlPptgEW@-WQ!P(Z$6{d zyNg0`1SiJ^;s&wlmUpI2ej^v#)3^ zC4uqVuuIGJheM z?60G1vNuc^+Kfxu_a5Jy$RXJ$mF~=lfSA)YC4pqVu%-F1ea*WqcSxChXyqr!^#Oa7 zxleHW&I+YofY@yQMxk~g-i5lewpq`g@Piy+K>(BTYz(|kgn|}Et)o;X6 zfo#lzK~kEhDtW;lPmVg?eF{PwwoduhG^{wdmsw&A?Znl{58_Ixbv>o^yA4*{(#2b; z@;izz)t+<3!1)gZ#J}*_J7>D%-=@=>8orzFJcI@mjwaA)EmJ5Z`wYF!+s{R5e=0%! zh6$`dl!8{y)=2V&Kz?H5tTEv)jeyw&av)yR#*dkg^Cv0zftxaH_wjPWwV{w$I$&EXh;t2V2 z-9lhOqbb}a8S?-he9e(_&XCnAC3D|MvDDmw|27sGO1kE4a>BVo`%D)7dT0c>PK8gX zsU8VM2X_9nA4>Z zw0D0LfW3&3mC-jj1A-NJkY752o!yy!9j`#>3m$@B^<_&+{(fU)%CZ_u=+gW8UrPS^ z-j1M%%w<=NyPpf_m-7Z8`>}xcPWYM|Xn)saqrSdn6KqOrm~*t)hkjBwAa6cm3Z`RZ zq*k8j!Po0S5`jfDXVJ&&5M97wl0bq?wX;Lq>8b(ca|{7u{H&c8IZk?cl##-HB;~D> zq*94x4c49OI(v(sn_b}&r=AUkswm?uC(FfEE}-5Kg=5s50Mdin!q1W((c5<8Y~0`g z>HcFG@sJ|IOrp?}UvR1P0{M;M!$7p84X<-L5omjiGbx*#_qr5yFG6ekgn_-hBO(0@jsfyLDO9}Y`9%`^IH>|8X5-Hr>*obZWzu+aS{5hb5zMCQCW)^q4W#qVt?jrW<-*rv0fgPn->^JyV zouqFOKNTKOu64Eu%lW|M7X_%DF9hSCn&UU%Xq8jG9+5_UJ{kK9OU@LEf{l#G<-qcjTaJ)-8$OA!jy47iK?cysp+cOrBF8%Sz{)Y91fF`wa%ooFm`* ztJ7ArV7u(9LMI4xsK0r2EN9QPp=I`+7zmD!*gtWRoYx4x4qZ^rgh8#YDNk4Br#E>Q ztoKG}IzZMFKhK1{Gf`!7?� z%9c0B-OweQmWmJYpsEaad;Xs63N|I}6Ud-nS>j(FegXKsERI2$!=)!W-y_}=PWzvC zWQAlfQ70*2f$f#8s%eOwCkP}(wO>6TI9*iXBjS_ioJM}th!6A3dUaZZVN%v?JC6rD zikTj=1QkEcs&PbM^Y>yTp)UNAnl%YD>5_uvdSFw%Wr0ww?ets4tei^TN&*4MqTgWl zYxkR{*gb|RJJb9y-n#t4nd!0UtN4yBF^71mk%*F=>86ZRYzg>?6$8wW(abiu;#D-3 z=J1}TG%Q;-EN3t^Oi6o3TEgP!uf{zqKfl`JM9p#^zI07EhuIuTc`L+WQvYfaPR1&8 zc6XIa-`ki z1`w0nDw%}PFjuf6oZVCOh8Csxt#IYH-93`BHD`&GwS#aHLm|Z5OdglK1IFvNfz(`H zuO0LlMM3wiA9f?@>Sv#+e<;`%+_V^x>Z^!SY_?JDWas;&KCnFeoBZb^d`^$Ip!RTG z;OND?up`VZg=YP~$_1rzslHt<^^=ySQ=zF7w*p2HAL)VQk&)J^Kaj=xsIQ&B4>yE(L#o`W0RCm$(y0RT?`Qr`KN3aXc7(bG<4Z HC(8c-P5^+B diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/floating_pressed.png b/TMessagesProj/src/main/res/drawable-xxhdpi/floating_pressed.png index 26d91f19885c5dc05d42dad95d1b36998010a1bb..0904520c9edcf0e9c59a5e6616fa576b7cc0471e 100755 GIT binary patch delta 6298 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 delta 6417 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/forward_blue.png b/TMessagesProj/src/main/res/drawable-xxhdpi/forward_blue.png old mode 100644 new mode 100755 index 075a4f7f75db1182ad5df5b24c1575e6feaa3c8e..44c2b085ab51798d7b88a2d143ad6158193be51c GIT binary patch delta 845 zcmZqUY2umS$*8o^>jooxcxGNoetGd^Z6;X-6BB166DKnxH#aj^Lqk_n3j-$;XJ<=G z7YkPx3qxnu$r(&CFh#~V6)j;h(1e;~fJ>2*LUBn@YMNEb&J;E|FRFt@uWC(| z&Z^ukm%?n#Y!@uJ(yF&ah={O?2Hx5CShnfl&;BZD{WEj!v)^}m zH+ON(cZ+kD#%3W}qUt$PA|8!UR1ajWFgx}4@z+0<=O541VSn>F!>e}hl+FBKOuqf% z-xha&!<563^)mWbwSzR5FK;_sA^Tiog0J|!Lp!-riW%4o<}uxTb5Jp6frHuZ0ts=g z31`h}8oEVKq$&432x8q7*}r&4Ok+;e2SGESR8&omw#bPzQ@ewqTq&E4y0*AA*5}Mx zTztujbyH@K(pHTLXN_t)q?c76IO4VAj=kKaeXl3INZKSjKZ{LuGspYKWvrV%a^Fs@ ztG)%az>ZHSb3N0|A7{5QD#?Z@NblcXJK3XMM8oz{sFG};f^@z1OQnf^8Ua;H9|vU&3|=LDo(kj^=}eXC5&7s)SD=2xYb zzi5nmST9!d-@aMIbi#k_t)^Cn)~sEhZLFTxoJ!iTi1pLinA7uR!#E3gK^kWl9zanS^ZsAX&FUpOf6F#v(5tDnm{r-UW| D!5>&l delta 886 zcmZqTY2%sT$*8i?>jopIZ(?$0UP*p&#$-(<*%)U7BWDA1R~Jij19L+|R}%|kR|899 zV)zHiG91_q`IPZ!6Kid%2ySZ9bh%CtWZabZ<$a^hmm z6`3NExkb>_E`W!lt0PKAX~~B`7WvkVyek(i`Ec<^gRn@Difh0Wfsa=+k|!!eXl5vC zXmDvQnsfh-?x9J)Z-4EL$xj=Ye{Nf_Zo%gY!Qx*XH|HGF?(Mp=ruahPp3Y*?6VEj6olBDA z{TcnnfbUTa>!zFShj#=t=6rj=p%vK(%9XO2@p!>brkh(HC+CDJ z%r5=G60SAjtW-_cYS9yEp+cE!nQpG}sDHNPD_6?pSuR=O3bRvxaF}1Ka>`V_6D!gG z@@KJkk@3yW^ChgIX@+(OWVuovi*Hk|sj>oUXXF#i+|P9L$JuR;O0t0p()+i^DqJ#T zT_yL@YNDUUgx>loB{MzJMOIWTsZ)v#Snx{Z|9#JH&%|?lPj2gJ20XP;?=05cDkiM@ zuRckeIAe=;j?R|2jwJm*^KZ^Xt;;UmS$%cZk}bNtqD9{4;-LUrJIL*OX_j zM$c=`C2hFC^wa&M^~dZm<~ETGlbz20<~?1okY(3%@p&hiu4o3#QvA~2SAX`{gR^ok z_~c5S`sy!t$jnQ)H}(6ZxlBuUcExU%T^`B&^|9vkv-biD8mm6WEPhl`^s92tj_}W1 iOB|p`MN;P=d#Wzp$PyjhHzv6 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_new.png b/TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_new.png index 4a5f91710a36244c7f0e88e0ca6d6398058b1c27..57e0563e31bc57fe97fcb606cac99046ee2c8d28 100755 GIT binary patch literal 1214 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 hLkpPRiT~s#1igQu&X%Q~loCIH2>$zT8g diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_send.png b/TMessagesProj/src/main/res/drawable-xxhdpi/ic_send.png index eec17c5470f1060b24eb730617bcd731959c66f9..c64dbb21d11276fbcae0a361901cf07fd66ce45d 100755 GIT binary patch literal 1923 zcmaJ?X;c$u6b*z;1S7H)Y+)QlKp>kWlCWsV1Tsnx5d^eFhh#`1BomVX5{edMN~uU) z@F-BkRONt2XkCHI+G?v+s})E&62MEX|kzfi- zL>H;}s7x-*SEFn5u$PtH@SrxY|f?N|#H_E!#8@n1bM0 zk>Ec`rHT>&KBh(i7IkTen9g7TY&Mk<%3`w_!2pxaVAANs%?@FNa#?IHa~bgR0*Pp9 zNhUWDig_7}SVe*|99MB^w7k4LYTi;Rrk2te91h2#!DNOIh!BlVi6hz&rDox@0)%SB zYPkxRV@klHh-6?ncqB+<`cDZ8)hk)0=H)RF2S(E(DjI`Ix0Eyu6p8*Hs!+T_Yw$$$ zb-w>8tVzBg0exe=QpbNRcZg zSe_g`VjArp;q8U5}L%`zjAT}oyis1{wI7{g) z)-)Hw#5oF7iBEGSues2ST#FSHDk3t3s^z(;Bu0%XfT@zX@|knt&8YX1E15Z$=oz^* zA{m;cvHxoH^cLYB%k-6PiN!19qe{ZjK#sHY%Jq2>uZNV_l z;cNr2MBm$9CT;8sJrmwC_Nd=P_B|6Gu90?(+wXLeNH-Fo?2KZ$1fSnJ& zu>0H+y&&qdg2q0cz;KHd>+|4w_?*v~-TNFUS+LCyeI-64r=V1;>$m6YuI3j$?{r)N zhL*=|JAQ>7>~cHKmFL&tRPfu)bqB#ON#DtwbT(~=qgpY~dp;EV2EobNrW#UTBcz>O zb!&}H__O!tR^Oa+2XVPhKAu0?TIS%|8U79=>|G~(6qa2yd2OA*P|`_#C&IUJ{4uy| zOjRtf@i&*a{AIt&=9gIqkGk>f%?Hkry3-82bop&(U9!Q&fOvCojbCJEH;A8dpEjGRQOr{VVKV=-lQLV9P{JAyb^l<@|GXgEBLd{ z;R-MBWA+71iEhHVdG@X?t>)NjTkVbu+jeYrT@+m;=o!8BIOnbLn&7XpidbPvYuWgN zXUaEytUfSQJRz6c6`At&K{^lPA%AbZKsFH2hZ-Hkt*Wt@_9|YL&qwWneo^>n!J*)W zYj?vlJhm@MZrUC+_udK29K52YDPg!}?^y1#!;gL*!P`B1g8no`Iwq35uWU_fEMsU_ znBLUg8+~p&uudpH&>LYFYUNv2S-RT%q@9^|`LmmE7v|O(>W%N75T_+~1>spu z@~?hyr#h#_=%!mM%{>dgWjpNu6Lr74%`%f>d+ljWI;I+%blD-iLGE6W-`+Lfbh*|U zcu@tXw0)HcKI6ovwU4`tz|~gSNj9k&WztS}n0UOZQS&_C5S9!f&!|;0>y7*LV@B<%M0@b=9KouB03GF2CNc_&szm zyFp~<_Uq0Xu=}jC!WdjTZ9Gi(5KOx^nU}J5%%2x delta 995 zcmV<9104K=51j~*Bn<>-K}|sb0I$e51&ZmBAt-;ZNkl5%>-He0q}2tdtH`H zSODg15`P|`^_?cXq;N3WgpA|ww#Iu46Mlct3^HfB_+|*tm;!E)3HN~GX=r&j6V`yo zrkLOqe+2A>{LBf-1YAj8GDUpYt?x8pmBJww6WqkNBK{wQ3D^@JMQMTw;spx8r)0t+ zFrOyzvI#3>!cv$fxQXvk;)@$7`U#n^LZ*Z+KFXx$)r3V#j9N`liElCUAWXoX@JxS) z2{yF66F3??BokJzZT_0@d!sQbUAsNtwa>Ooog^tb8d>v7i=I?(qF`Iyus%_bXpyK@iOW!#fw`Zjg%hU0q)axcg zGGPZ;M+MCMRgC{(;xPul0BuE{Wa&(dU2i4}-)n zST4Ln!&+T+0w0oaYy_@It01~D>_k37ax)!Gn#y{9p-LtGx<#V*fR91+-l!L<#Fs4) z{fR{T-eR*+Ja+44reR;vCh-lLoMtN#J617E}` zS|vWLct0h<>tuit;2{rlJ&NZo7VHJb(8XspcKZ_&y-k_iNN~-`u3su*>i74J6d$D3 z`=uh9omqjP;ty!Jsxu40eP;R&wX~I@o#L||Gku#{y1^0vE+xA`FaJw5serJ{5(FV$ zwJC8?AEVF2L5O#57ilXM*&rUrW!y8va`kg&_S;z6#p8_ZK1&%gEXDXQzyN%p*HskP ReM|rV002ovPDHLkV1g)R-RS@T diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/igvideo.png b/TMessagesProj/src/main/res/drawable-xxhdpi/igvideo.png deleted file mode 100644 index d13eab92922bbcf410ee2e31e4d619a15fc4fbbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4398 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/location2.png b/TMessagesProj/src/main/res/drawable-xxhdpi/location2.png new file mode 100644 index 0000000000000000000000000000000000000000..01ea9f4dd5c6f373365fcc52cb80e02dcb2656d7 GIT binary patch literal 1544 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 literal 1544 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 delta 278 zcmZ3(v4&%V8&iz2nSrT`sfCNVg{zaHp{uEdo4KR2iMgS$_i>(q+L@y;X#R{s|6_?)0i5|o-|m4e#>XIy$G>oGeS z_x?}*$-uy{z|+Msq~cc6pa1{u4<|7B@HF%ASg~(x;P{_9e^J8~76mcY1^-M1#B+Kc eMNeMLTq<&bU(UVx$PXi+UItHBKbLh*2~7ZtZd5G* diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/miniplayer_play.png b/TMessagesProj/src/main/res/drawable-xxhdpi/miniplayer_play.png index ee163892d81450994d47a4c3752540dd6e775b16..e8a04810e22a0013da33e5c47a2525580dc87ddb 100755 GIT binary patch delta 722 zcmey)^@VGL8&iy$_i>(q+L@y;X#R{s|2$$Z;i*wXA7rw8xw!i;< z-uZQzvwW9&Y}6F%yWluo-QYm7+_{5$uT9%7{+hXd&*Ui#{{&0hsuX0U5~k0e>$LNX zsy2_b`61CocP1!1Pxw1MRkn%UW#@r)r-Fa4mn>eM7(+4L(1SQmv=`Z+kXChOmO z-Rl0r+^AON_rjQnHt!XonucLb;${mSruyjm#jD>roYD0A@{~&xdASRieYLJ`GO}n~ z%fT6*Rrt2Sx?ZB)By?4+*qIlH=4jpQPqJX(7g_nFJ?bF;<&-}>p**t$j8=-jO`9sS z*rM@wM^^aBL(2|L%9>}jV$y;I@1&*(d|}d^@z?og(~&i2I)$2NEKZSGEco#1^b_*0 zrBcc`cE4__vNiNNeI;JOrh+r4A#KUY|JgCGPZz7*uB$m<5OQ3*{@5AGTWx|Bn;*rA z>CSU7(dkQ_{l|YsQ&-9n2~%gKmAr>Gzp1{t`rY)oZk?VX6Fh!)2Y5}pJMnJL2S<6Q zytP@!Efy{LlefY+*hhu&{RBxPG0nIyEyo0eHbe?MY&vpp##P%c3tR29^C$Y*4%W}N ea;xDsUj8&iz2p{tXDi?gG-g{zaHp{uEdsf(eLrGc}lqpPKpv4OFYLPc(YudkI$ zesXDUYF>$_i>(q+L@y;X#R{s|376i5|o-|m4e#>OI&&<>oGgk zH+-?^Vqjo=?djqeQgQ3e3~vpWK$-UR2^|x9b8<8$i7ZvA)X_{yPF$!XFzLA0q9rMf zKBt_#azw=BxTho;_qtT79`Rd~rYL4M`QzMO+jmGLzk58VHNN)lyGMTa=Tx8j|L=Su zd$Z&8nOAgeXIIrNHhg)xc8d4LBNG2|)u(e>u+;N^d+o<9>Aphr(E^!k0(aVNW;#i> z{pPZ8JjJYO)N;pu&$YZAZmT5k_;Iy*Nu6otU+LtoRysqoO?k<)9ehpk*El5SXE#f~ z*s!T)#@~e@Ga8dM0v$d487mS6FNF$R3eOOZag1;Ie0iF`yOGZ!$&ghFOVq``CH$P- zr0weA&m2>Kh~da81(iu0i)Tel<#MXpl;FL^al*=`3G{N~V2Nq8Gcdnh{=}vz;e#G(}(NKAIY{s?49aoLBzjxGFD*Uit g{!jHi6A!~Xo@&|9pw2f8+zbp1p00i_>zopr0Do>J0{{R3 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_in.9.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_in.9.png index 3db9979cf1b13128da38558494e6604e730098b6..54475d909fbcf3a51f50ea3827c2620efeab8ba3 100755 GIT binary patch literal 3022 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_in_photo.9.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_in_photo.9.png index 7ca493f77e0479c4a82acac14d6f6673a01d6896..f1d14e0b5e1e1fbf1aa4623ac056f0e7989784ae 100755 GIT binary patch literal 2737 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 delta 1311 zcmdlex`oTIGr-TCmrII^fq{Y7)59eQNV@}Z9tRtcEEVQ^2&7oj9eo`c7}lRKXYG19 zQBl2~<(Q|7V@SoVH*@_nWI|<*-+zBLZ`10Hx3+9mkXYrhWU0s=%^R~L_~mk{-YyK- zyRu>x7uVMIFn+lxu0=ndFJM0yW^<)UX%TDY!Dga?@n?+_{zi_I+Ny z=JmUC@2;GB^W}Gfk^aq_Gr#}*@Oy9N?#7>;KkH}hW_&)SUfTA>3#N0Hhp(x+9f{0( zabF|dVRgy>#H{C!&9_cCcGS3MPRvB(LoRx@@1%kl)UGdn|LKmQw&l_reZE{uOQ);k zBp!cel6z;vWe?SM5&fH5C--$USsi8BwRLjs0;4LgQ`+jR{;eV3?LVIQa{BxmdxP5J zZMI)ecCvR{rLWok=e>TteynBjlOw<1*L*lB-u+A6UbMC2q|lf3t_l4H-iwziC1pML zpFihz-TgC$=WppgHrmLR_~ZJYLrcZwZ+-uAyz7<^>&iJBW}EMg=H1NU6TC9X^_6|y zw|ASZ)3@)n^-H>75Z5F9nB9F6W7yFXUv-#N?Y8^WeZKf{=gi&jY;4YLPwT0dmwDj1 zNpbrejVv4OtF`@a?`=sgyM57UP3!?ixq{L=K5o+&tA8;0t`=AM?!du9@1>5KY;pyS z`s-zCr=K!ROZt3_w|`pZQ*Mx0cvPt2<&Kp(cQ44=XnIpaRqRFKb!}TAxdjSnN)j#p+iLIu7GiUo+xKD1L zbI5xI_!qT0g9sW za}X-QT7dj|Bn@b)!MZ=kpA^hWcoM+(G~k@XiG#(Br#b9+u0KehJnfI&w4>7{EwxvN zN2iJy^GrX>Vg3E(^ylJpi|b|{(eUTcD`8)HeZlekN4*a(6)oPnXOmUDn&qitL12KS z@3TBU!@*zR&#&Y4^PitmVYhiOX~!MMbz8U=3wLDN*1tK+|F>*I2%F&p2L2sMcAW0h zg1_cu$EM=N*3IJke!uK36l?z2 z%xoh#{gdS6;&UH!M9Q>|uX$Nl`aW2HZ~3b?*V}9N@3jeAx#aQD9ftLF1u8bWA5zck z{HxvO<9{_rVi)JzYhOAvZQq%_Nq@hy`tn6*|95-;-<#QP?tg#Z;uS&D)|rSs6R-RI zsx|z+)!)zh`{ToIw0T7yjEm2U(q4Pi?X!I5)ks4XZ@&-`m?n&Zx>(VsW{{iK2Hla{v?CuL(di0Us{FUqKW<@?%8%lCz9Ewi5c$*s@RkHzz@xXkWT8HYV2J^kc8 z9UG69a2qZ5IH|hady=7QJ(u}@wX^f?{FM0?m-kOBfgvQ|a8lg$?hIgI$KdJe=d#Wz Gp$P!mR(9wB diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_in_photo_selected.9.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_in_photo_selected.9.png index 350b66faf1a98d85ffb1cc17790edb5e083415af..2f3076fc23148fe254f0406ae6050762c9525cf6 100755 GIT binary patch literal 2773 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_in_selected.9.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_in_selected.9.png index 09abd80ebd0c5e9d6230d3614bf7b828e6efa2a4..0502f0dd7e86b554847cfbb998500b852242535f 100755 GIT binary patch literal 3052 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 delta 2348 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 delta 2450 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 UfDE#3|IGqfnh{K&;5}*o0UnTQV*mgE diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_out_photo.9.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_out_photo.9.png index 02e3ad804ed1b79c258457715ba9ed6e638322d5..6498fa28c105f1f1f62ce760936e750d8d1b6749 100755 GIT binary patch delta 2161 zcmZ`*dpHw}8sFT)5OPUOqs?_`riLAtrn$^*bDxmQHjGSc4rN+a-xroXT9XpZrQA;B zRxTe!RPJKAi%LjB7q>>8`o43X^E~Hy`s2MkzxVgP&+m`lAMZ280%fgKf~&o(^gd|- z03eHVz`FmaWTiBM=j^a&~waC&>XgQP%wM* z_4CzFz^nGZg*bIbC9d>6jLc~}z925G`Zgoy#Q00$_nqbMH|hOUd@4)pzNmO1k!m=2 ze;88J!Coit4@qj?^;BmY934OE7ErEYscBsBV7e3&s7#a6TkgAbJ}-$4A!-xZggjy% z|9HT`@umkN$||%uCKH3H3!6@OBQyU7lYzy+gSCS7=(air23@wK+Q(8ov70%rnPJQS zq-o+-WFnB(Gt9OE7T0fpnYAMVNfxl9vCxx#P~75%X$Q-kzP^5Hzl3niC@;ui9j4 z7N(?oI4GCNyQSDb<(+VBrPm|OVI_Dw0!}LYKnev#scEuMyEisuH`cFC!K2zMdDABm z;nUL_jieT&!%e-(t9ZBBybBBMVsW#BN~Ktp-YRuneYWDo6q{fV14)N<#|*RB!%hcOJSGHgi@BXK`o4X-`D$~uc@2;#L| zuZbACOsF~>QPGr`B2|?PB#Q84uo;_QYI@q`Syd&FNZWO9|ERY4_jwXOr|0zLJ4?l0 zi9umUC-}Xup6vf^t^pu=55VQz%Fdk0EWExYWqiZO>r*z5sg?@>A%GLkVyT-6`mie* zO&)?$U#2?yc8O0|Don5(r{>s7zQUDmi3@-G1p4BWSgIbj&lHpDppEy0!IsXra9Ji` zOxOh1;n|;?;k^beaz(~|X#|H^mtmD1Y0b0IUYC&0nL6AHrJDvRV+FidX?2gfd=ZYY z<9mud%eSn+X&k~+prI-zY)wfrg{Od|9G(_WRv_+pd9c)=`qCYa9q!`O;vXgLlYOsk z(m!6qWVf2n)0wJDpbqz*G6wxS3r|Q^O!9WK04sYyVY5w;JbZ|q_w0kTHeGy+99iCQ z)pXCi2hc9)ZR~!=of{P2T0$C!H#6AD7uS0hRf3wrXU*HnyV$Rm_Cvbi5KL%Qnia>3 z;dUw*gannyA~{j3V;Y@sz7P_kVp4B5dP1Xf^~m{eSsunR?}LcHZ?G(75hCvyNVB;h z4O9zA@r=N|8V_Lh<4rR=yA4#YEjm_}N&<2-*Bk9kuPvzItE2@D$`$1)Z# zCJMKVN=(<~0EQzn$Xs+|!(E?|$MKjTG4J{8oMRGWY3`pN6=HU#v_6wwhAPyUt0lj< zHd&;0L9S~cy0SsI%5pUf6gT$cSu=cr{% zE-*7A4r1va@q_MXE2*oKrCrfoMS&XiEE}lZ_+_86!Af{}=Kws_#WmgU?qv?4yzSWAPXxCT zPX{U8fU7k6=*hw_C8x=P@Flgy<>+PVVoT-9i#1E~;-TDP^>@a9jAk3QOdV8}tmiKb z8n?R*E;s)HTo|mWRaqG+u1J(`4vE88`{UrsI6~1;hYMV&qJr3`11YN~SsKq18cl5c zGFvyZlLW)$kt5R#nR@bqREV5WEFop}QhxjX)K095`+%cC`P>NYce*>Zys z0N?2N{PIa^YvOLEo|jUL0rwiT}TMqfg^}7P-39W>R-fJ4K-dMCi!Fy1*LXxwt zZ_`2wN|M-n-`UG-DNuA$j#ir} delta 1746 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 Jm>P2e?Ju)t(b)h1 delta 1745 zcmaJ?X*3&%7EWxjR4Fylkq${~1hoW-gi0k%Y(v_bN?XeaVu@Npg7QQxWs3KdnpUYO zrnDF-8e69*hLl)GEwA!M3|drcY&A(HjGoSq`7`gwUCzDVch9}&eCOO$9ljPc`#i~6 zUG;NS005xw>O$~5h|UKVrL1(|}<$YKK7KQPxBo zG#-a`LLi7XID(}$0fockFldA=(#fXKL=Ix`7s&P>K@y;$ij~17S`;-pfl*i~2mdB6 z?&EMY5^dvz!dv2zNTM|YfwMs)iFgdr$_Z(0Y3p5`BO z;rayQqmuJP{E_;~8=^~BC5uKm+pZ0jSY7X&iyl(VpovLqajzv|zt_T$5{@>98zOhgT{1sOh>^S_NMI5eg}) zZrQ7(?*>KsiI$f~;?zY04nh0Z{KWHTd5}^vr;Plr<@juC;Z|Yc|JL|~>&)T^->>%e zRxUfwyF@=rJcpgA!giTSga5wghOFch()B;u8uPu%{YCm;n=O})7J{;to-ErLAxOGVc zRMdNJgv?6W@YX{WgddS?dC%)& zJ87ABGV0iy26UbYG9p|>1;kA2G@!4#@H?m8FncNBrpztda<%RDOfy?S#qGM5$f>oB zK~Eway(Q4;VRGbIQ5!-5barT){O6bqZ>@@b<`=9PjzImn03d3{5C!N=yM&>`zdi!R4;c1O^uDHP6 zUA8ekV8J```|a-qlW&Cd2w#Di{2R73wSel-n-o8~$IZ}l8({fJTJt?v_goM@?2~Q^ z8Uqcda*0)mRt~lv=CZ_WUt_)Ko1J7%{B0e!9uVoys>j_EP6KhOKjGHsqGmmXB& zNjhiucrtC+Ex}HkbE1@|6F9=&i!#G}&1X`UNw#_v(X--tKmLF>{f|=SxIrk=o(4Ju z_DKL7v# diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/msg_out_selected.9.png b/TMessagesProj/src/main/res/drawable-xxhdpi/msg_out_selected.9.png index 6ce8fda0ee507db4020273961623a2ba170b7ea2..64cf8e69de576dce48af89271e65c37aef860616 100755 GIT binary patch delta 2465 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 delta 2436 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 E0C2u2QUCw| diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/pause_b.png b/TMessagesProj/src/main/res/drawable-xxhdpi/pause_b.png index fa34156e3a0de4b181f795b5f420143198ce170b..091b06c671328f39961ab6a0c709f847cd36ab9f 100755 GIT binary patch delta 2561 zcmai$X*3iH8^>qHVC-Yxh8b?MWEsO?G-Zq#OV)(S_979oFIOouQ?|%DD6(7{3S|wW zWG^AfG+l)lZo`$O8Pt_5ci!{9AMbnK56|;E=Q;oXbN=V~^!$|lOF`|Hi<6C*u#zwU z01&gYCAjjK^6!EO@cL=O%?J5vTEL)|Q<^|(DKL;43e+Y=IXap<$AkojMEGAOL|%vw zzZel`M>wIL7#^h`7!qiXv?AaMW<)%SXl+bH8yaFzmUxVju_eaL)RJgvYNC$dDS12o z$!lmvFtx&?(bjkqjG-YB&2wU`Fji<2GXfE5h(zgmT^}|bDm*)%w!h2 zM!pBRhN@*6hPv(n)oY4nz{Yz>%K)G~7*8i=+}gQ6B=Q0R1}lT5NaPr_3s4#$%#I#P8(hQFvEe#jEq^7+Jv6R1>KPSmu35196g|wAjy^Z*oH}OiZPl6^w zdr$K(O;vL{ymJ} z5L~5DZw0=8_F-45!`VwXT7gGiM}F(+zcM(4DG#ph`)~?tRkSz1w%R?TtNpId9J@;c zI=i;-q?EDyavVqEMm<@f+%*{Y6$lL-nSCLrSgRxtsc3wxt~a1PuzAKdHF0L75En;1 za;GY}%i#fGO4=M`;;A$%a33NS+&sK5hgTr4>bYU z4#;O7t)j55d}|k`I++(7X&b zyc>(ECm|1*Ee^z%H1$#($06_}7F}^o_Qj(Z8V-y1gc$e?YUZ2Y%?BCU;DNKic{P*c zb2v`P`-_i;)+X2(v7JKk@!a!^q_;i z6HV`aJTGfCn$^DPEN|s#cH^7~Gk;2B^EoU4Qf`8>;txn+Bt7%1N$I?lKiw$=Zp!))JRr$&YT-ud<^1Qs@NaM>JpYZ4 zegl%1v9k(o3uo``&xoz=`HFLK?WLIm53xGPxECD*t< zRh10YhdR>UbH>{r6)V}OKx$F5S>#D$yKwhM6qa&g@qooti$i;CtOso!pfh&M0lEs4WCw_zt1=_LtS z3T9m03DsS#NgJ)lA=_j+#F6>tb>*$*&{@Tj+h@|F9Xt##|A4OQ$IZCk)pq_(<5*45 zXd@08Yiq-5|IW01T=B7u4n#vRUOn1({v<|@T3{Fr6ip<;i~4X)O8OA zXs1cVn>x--OMuQFXHsRJ3VGu}ZW{<*i2Z)QiypO{H`D-J;?|pMIbAELke~4(E zWcwO&ZNZGoG?C)IejHA_V@s;8jUJS*_dOck@-tiN8`PxdJ2!K4UQ!_7LeZY3Mxe+S z!pWlC;Sn}NabUFJ74z0vw#T^PpK=+1Zom8FC*o)c(wI5-Qd0H&hq~p2%?fL2yFuCS zA0s}U)sl*YU6Ct&ClSLg>YJbj9gCb-dpZ23;hwLH_*eP*LF)CddBu6VI)^o02A}+9 zj|{&ae$(kV7qiQ^vi&gFR}ovuOy5o&Th>=%EBqWa4BJ9rRVw#=oJ(y+)yCZq9!Jg& zC}L`17?Sn6wbw}Lp{!o9+)aZ;PHXdwKpNR%OAeEEGR9%LBl#qsDEoR|J+V9YsPlY} zqZ0nqVM4Ao%V@1BJKINNv_NfI8Fg))%?WOxN`eG`?JV29J^0{t zs@S2^(6*-7QQ1*Wwr0Z9>Fv33R4^xfv+3O81Gh=~;!4^{wrVIb>_*OG_{#Z}@mQM; zJJ+DRr&@<5ZzM*-4vMPg9odx%!he=+S^$3>S$Vi=F~Z4FPPaG|LIN~AYoED;@4NB7 OI)EL~iO`7myYV-{D2a6d delta 2179 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 U#1A3g5B~~~iJ>K?Qs3kDe@IjH0ssI2 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/pause_b_pressed.png b/TMessagesProj/src/main/res/drawable-xxhdpi/pause_b_pressed.png deleted file mode 100755 index 14417454f3f38d53ddc70349fd9e00c982553750..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2888 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 Nz}3mqvDQ8~?SJyS`wsvB diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/pause_g.png b/TMessagesProj/src/main/res/drawable-xxhdpi/pause_g.png index 58230127ce591841e493208f6b56516a1e15246f..d2ed392ad07dd145ef599fdb6935e0ec421d7560 100755 GIT binary patch delta 2591 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 Uor8GdBb@mFB)kibg9*&|4~S`nUH||9 delta 2183 zcmZ`*c~laJ6Grd~uku*$6W#SlLYHIMZ`TQv)>A}b-yThl}X@3PWXO;f|8 z6j3wt!pu?&O^{vNpSDGkhDo*Td;9ydKW665`@Z@9n0fPN_)1?Dw2SBreAc(ksObcjhp$;5|1W8wv%s+Kt%W&uMuIk-5P zo0*!r9CLIsMIfCmED)}i&aP%IFrpn$?f)dlACfkKu!#SZEPq7O(MrzoQca! zi9em;;cTmeOTj`hi5RQ@YLP#xC8mKK@quAK83O=fsUFS_LAclN8X`~02P@@|^zn7W zk9Qw&7ZHw?lhfA{xoyvXDx!sw)Iy6J9&*=_m5Uu<62b%wgW*dJH&aubBSM{lq-@#3}_{+Yd_?qmE_@Y|r@53c|ut%e} zSSXy04OrtaR@30wFzcK8sdGo{q|=QoB{g$DtjMD;>lqK2*nk>EeLn(Q`u0CusmOh+f+ z2AeFRnKP2B7%EKqBUJI}hfmr_l4D>_8AV1brvAz{(@-qyQ*avemp@m*Rz}g^B5e(0 zs)!d1N$J*xZ(k<@xG7T!Jk^1m)sVdU?dwNRzwH3dHc{liDK~mH_+G?YU{9FoXGn3h zcz_|pCl^BHUIdykkBUA5;_Ud42=BJ4wmWj>>j|_qRwl=FfMj;beOR|Hv$8svFbJ7| z=$BN*xf)k?d|?1_wx26Rv-yCijsb$LwQ?E1|dcG_Musv0m>%7bq>+h_CsY8H~Gonm3ae2U73Fd|$NJ z@75O5(IXjzeLECs2-h)_NG$uXQ3$-+<7mcVOEXEH)eqC3Cdok?9i(yPW6 z>41d1|9x6w0L8_s-lrctY%P|L?yRx#<6?b43kzFwgv>X~k=1af+1zND?HoZYQJS74 z4$^2w4jfp|5)P82>1{HgY_D`IT2FGIe3N-rVreY?eH&Rw@n5KrwMEQ*-&W8UHHn`f zoJo|Vw-pKX3y>`h(CH<$`d~PS+JdxfPnI0;7f6&z^4d0;9i3)OZf$Pw!yAOPrSqZ} z(E{Y85;j+Ws3>tVdCdu|`fMY?#C*$KG#72^DaI4O7~0$8Q?QU#&J&u=^5ypUB-T*G$RCO_8}Ta|2yys2;k+pyH8-bn&+GG( z>Z^cWJ4j7nkn%nDSaA+;(<0G$kzcypv-c+J`XN|}n?ql6{*xqYrp8~tf$Yo6sh(ei zn~RcU&8v)}qbm9xxyO8ro=(PkjK~nWv?G_|Dsf19lD+B|k=aPjvO8&)e4}ox8PP-t z;}^~Z;O8vPn&zfwTS%X{6$crLf?xI4JOlzuz_wGK=k25x!heRTvb;74+>Fvk5;eluk-} zm+Lm(J2f|nQ4!wy4Y?dD|2aGaH)>u^C_DTNDvxO=r7LTb{ya$4C^hJMnW*sWC037b zs@H_>cQHU4ujJ z_77}^0)1NFaIkj2qNqKMkzi7x+|Gpl9zWsDb$itbo4Ry|*j+Q~{1yNY7a!+N$LO4Y0BcP3xc~qF diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/pause_g_pressed.png b/TMessagesProj/src/main/res/drawable-xxhdpi/pause_g_pressed.png deleted file mode 100755 index 6afeea45e7f80633040adc8d817c72aa3a0d2905..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2829 zcmaJ@dpwi-AK%DmQ4Zp$u$I(Oc3~TKHkW25~HU@R3y z6_9{f_O@gp5RmLci%#Z5J2T;~E--=wuMyw^Vg^jYjpK>%5+eMgE?#3Vx{+|$M~Ik1 zg#VKio$3c8@r3{ki*T@uMxoI#91elTU~xF~W|%z+ZI480Zk!z&gU90V_KvVm7hDrf z$YkODJv=|f((H)vSg}}uMf(L`gg`Lt@7ht^2It z0f?f7Y=M}~=fM^g8BzQMF%hoG^q&&Af-kZ>(Wf?P8itfG1V}UjwOG<;AeH+6p5b+a)(VBx}ty>Hwz>|akL(CV_`24ufUG$6Pi}|8hz5qrF zz`-^Kvw2K@qUgJicq$c7;fcfyUNk`QAi^~Y2sWFE$GKxLD3r$*G6`poMw2n_?pT~V z&JjbxIglO6IPzz%2R}N23-H9Bxy*mLq_1)pM}aHQMD_rL>^%U}Q^@DSK9-DUe?1rH zuj+l`GQXaS`&YS0O)|*EgZ;0A{_N6B&!YKdY&DxNgAedD(=ODEwcL(030Y;}E&9lY5~Q_@ zp`{){utR%^P8`L6VmX1=J~FD)VV;bxThhQUAt87j?x5ZpLulykS`rBkJ(a zkcdAV)a~kGwapBfq;lEVbdjR=tP5%yTMBiWO;GO7X?@hfr?lNMeR2oeuOKSz*AJE< z;iOh4gWxt``SoXt(Fh+!BOnfz&x>l@TQ|a|Y1Y$yu;~FVNL0(zO*KT=Ob2eBo?}CY zoGU<+)1itl*rR^MVxK(hCM552i~Ml$F7Cm{!vP z{TsD!qib8hprsFM|oPeIyxdj;wymTpt>7>BOm#KzK3Mv8X+ft5^Bw zLsnJP8T7xSU4Z79#Z{LcHse*`dqds2x9OmICQLbLw=3xMSuN$R^j+7kd0Lg2#LR(} zJtL-UUf(k|W6WF)?NZ`@Q9~tK<0XfV*>1%WTb8M8yE;Py6CioD)I6DUNJY}dTknmV z)hbJilgwwwr(^~BWwYx9LkRkEtplXw|;_1J^nM`2mb>?e@#OonuwPZv_`MpOR5K z_X>XxpSpYR#f@*(cE?&mYEY^@8i^XTDrj-BS8dWz>szG-SlyUjr4-3o-u>KO+oi(U zsX_$3&n*Jv&AT-&GsuH7jmr~~YT;5H;v{qRdc%sy$srg2PAL3idVc#FLDAT7;d3Lf zRWIQIL>c&&+Vz|HYkdX@u1Zlm<{x#KTV+t0k|hnP(bxlKA2j|(K>;heF>m;^1-NO6 z)xFfp{wq0GTe%Uhh;FT_lv!bK$TxV>NNzka7datBzET-Yq`L_>!bx<$# z8p0efK{vtE>hsIhZ)TpQT=0eEmzgq1;X2A?Z-RE8xy@dmMBh9<1y&neP$YXBA=^VH zp14&@>y|Fy$FEu%iv#G_WyYwZR`DShXFU>p?`NiM(3ijFJ5lGN$|HMiLu9m)`m4TuIVLFqSX{?79Pu{WcH3lSq-pg)3Tds(0ud8B)N5SI+0OCYU|2=_nAq!(2gUrceh_g*bB2@Ct>jqGUd(1Q33=I{{9x1}d{`JtJ+OFLfD z>V4Pzxu^9(Ooh~O(@mcm@>M8PweimTb079SvMI{&vgsbBO0t;bU%}a&?+K^GF3vj= zay$A;ns?B@Z*rt)kAy#es7U8gAS*|sJ9{AV&1Xs?bX|4Q9~uk?DH^NK8#*#_Mv4p? zvJbZh?<%>UAJL!S|0-cQ`SS426UZksrj{#uY#gnQvrWn#KZ#hk<4=D0u+AVs3m58k z^YYrTq6doDOQ$BbCZR7j1j)kPPPdh+H<+Y^4w(*};vi0@l&vL2?1>slIX+|FPZqfB z)UmR5h$$Z!9Vj0SHS4HZUAp360WN4}W@8aEnkN@=@MY74Q3Swei+;F-RK}G8&JnuzAE?{6VFVeLSkR HMDG6^bz03D diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/pause_g_s.png b/TMessagesProj/src/main/res/drawable-xxhdpi/pause_g_s.png index ae9b96dea99cdb96dc02e7b708617e0e84bf6cc5..ce7328a18c4a2580288d8a902d5da3b5f461948b 100755 GIT binary patch delta 2584 zcmbVOS5y;-5=}^eNR1-BB(Sh(s7dHjLP$sg(#z7ziuB$D5ke?IK!p%t1&@&u6ct5~ zDjh_gu!3X}5LiQyB1H^M0a0JxIq&oB&-<9Ub7t<$nVF9{GbO(-qnz((PY@N769NDL zq9h{DnTI+55r_a!JK?hL)0EEugBxwsf%FPs5Ir1tmKSFykQ8+> zI+27kQ%Q-6)eZ^^GSRidVR1%yEDCR}hu23UjZv0ZW3-;7v5}!A-qO%O1cbbRy; z@YX0^O&scz8Gv0^nVOO*9Kw9^d2m4Q;=E`&eAnycJoeHq^p|@)j=8>UO3Zq z)k_mzD|HHKeZIiLgE?7}l}UyDO4JPSv#r(M^Ax7i{3Owk3s5 z7ISB$ism+yAWEroR&tbzcVm!k6T4|ltjre#+ms&)o7uSgSR~htLZofynogeCTFU== z_BlA~oS{WAwbI}Q(j)whdmiSB6#{3caNjYU6ACwXC->0wDh1V?B?x@mt=G_iZV%O# z{0Ml8PkPNjCH;mfF{eqL~arJ`mO#N zjeDd^{xQ|)gV)VdDZy}wL1L!*3`^(h{Pa&)>n#VmII?Ibe2K7!}qgtjbU9= z%J0(g>0a7pLw(hdOq($ILz~vL{g(A<7sBMw?cZ9`bp%5-^!=sRg^*)89t3YVmCW$J zznfH5MydfwtR|N z8k8O{Ve3KDPbX7%QN9mgG({PR<_AF#2!w=Yz@Ze%M{x^N2QnFc&qB8 zxf*N+3tY=a7r&X98g68ISIlt9Y-m3RB=q* z3dWU3^I65r=ZIt4Us2k@u*}$eP@I@KfTJL|XnF-OkSc~#ng`K!_CNo(RtjZV{8Znl6-}+SSMZAZZ4}HMuUy9o?^Yw47SX@fvBP?unZw zX!*>=WPiukVJ3^G1`Ma0+`|>(;J4JO{J_`lS%*KW76t1pcnbXV8IFHDuvi~E2h_Cm zA4p2i8`AoYX~%FMK5^jGM0nHT)f$xs0l!fgrStfxy>7hgt zg?XHWtVpwh55hHX*HT9wVsv3=BNYQw+?>x{OoF$gQ778OKHOqf&+I7A`hHA)0JUOZ zY~5{N-}I#ftQ6b#MSOZt>~*#i6j!82O%!HCjA}iY=uQD=8QWE4{>W)17u|x@$+V@0 zzP4{YM-*P@O^&r|9XeW^ijF$&7?@r%ar#x?$(}!pb5ghdC|>DFfAiFjU);gfj6Jb6 zK=`7JAX8x91U&F_3F#c@4O9;pCk*Z20z=?3jC{0@Y?HzpwWrhkBLfnm_2xR+R!&#V z@$*L_xg(1ov^I?}weH&Fzzrw#oQIB*cTZZSulhRo>(&s{;j}E2@6(g3U z5!&94!@I8L8TQ(=F=((~?tPmsL}U0h%Qnmb=Y)I*)2=R+Xh6;X@6(#Rhpa~ zT-0SIq%+K4*}p4pNmK8>c>HpCpAJ1(Bc=iRp>=oj-fuStzvZsSHhs2YIXmkte_Nlj z6}}e1d_AA+XW;pHPmr}%7s8M=y*o+YD;*uyj<%IgBi(K>hBypA>usQ~&`_j=(wGhT zwph#An`fgYx5CI8PP^>tq4=Q%owyXQ84$>-?`~>mbJhK3(%d8eCLndkoVcv=oXZx5M)DZKGjWvJy8mmpYIo|^ zzswv)Aa5i_+OF@?cPct}K3?)a6rdhIufL)WzpHk~wTCVOd%nHBY5^1g5VG$LBDJlA Qc`porgtx~%!3Jdg8$Q^75C8xG delta 2917 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 aKu|!lM-|{_I{QDLGr-Km%DBSFE&hLs_IITK diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/pause_w.png b/TMessagesProj/src/main/res/drawable-xxhdpi/pause_w.png deleted file mode 100755 index 31bdd7380f93533fa8d753b6466345f9842742de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2785 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/pause_w2.png b/TMessagesProj/src/main/res/drawable-xxhdpi/pause_w2.png deleted file mode 100755 index d4be9ec783d2625259921b556347bf4e2f235d9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2895 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 E1PrI@%K!iX diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/pause_w2_pressed.png b/TMessagesProj/src/main/res/drawable-xxhdpi/pause_w2_pressed.png deleted file mode 100755 index 94ce677c23bde7b0a8478029efb0e43fd821428e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2896 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/pause_w_pressed.png b/TMessagesProj/src/main/res/drawable-xxhdpi/pause_w_pressed.png deleted file mode 100755 index 0f81862fe67b541e0c1900b26f39831bad7b3b1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2830 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 EKa5k!8vp-9e0*L@$NdV4I?HP;0I z01Lf5iN2~aef|P!tL|gumzAo)OhgJ4(RpE_*bo5=fM@cyvp`;)kZ_hSD})&r{g8zP z05rnbj6hK!Wg{k($FUEYm$4Uf_$o92fOQq~Lqa22BG7hLIGc+Dzpt(bgV;k3 zQTXnx9c<5d0gE2*%?OQ;3`H}+t}Y;~7^5QKutXssF(-;E#E5a=AG{dVe101W2K^8b zMdH9ejS8etLGC;O3xu?HfP})}aFCOeJ=_uL)!!iU1`VNecd-mf3h zLXj`)f6Vw-X(1zy&w~20guI=CP*py{tbc)3vHS0e<^@&OV0;8@RZ>Eth`i9992QsP zMZ|$sPwbg&CI&_z5{S+u0)j+#Bq8B&Gy+dRJ2>Le&L}(yk8=9O@vm4S98HE1(PRRW z2#1r9csxPHQ@C& zcko0!;SL@j=+i4EZ}iKKjMpF|C|2*)9;^H=Km*V zP?a&z`QrFr#qw)QRe|%kEl$1hwjx+2-VQ~P=-mhtU_O%B6F98n+Oqqtxmlr+(`# zITf*{Y5((vK|0hsPBMPy{h@cB@W`EhRLEDm&xYd0wiKPJptsv3H6EwWZKVeH^rL7i zVdPpAD1JX z+S-3=t_iSiXC3p-!h+O0ZA�*6u1_7^L@?iTustzH8-Mob|q{-F=l0EB?OL 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 delta 2825 zcmV+k3-Xt*vVO8XWK9|WdsoQ5AsZu`WOpb4B`iSlJlO#r zahf!Jjujq}&VP|jkv$NA;?<*MFOcmI5R2$0#7XDLz9zdX07WYV!2>+%w{zQHYg3;{ZIfu|yVy)cbX^7nM_|u~m5XgJjQ;&2ouA0IH$wWJk$f zA={-ym9gJJ{`y^($^cmb2yx92*_&ifDf8-6QH2{QhJPL+D=Vi!Sr&kldXnrNvV9t- z<4N}!N*BFkH_3jq6(IcXmpInhE?k7xBka~%ILI#B1W-HKyUM8^i@R#fts%hfVThJ( z00>3Ew=K`EqE;J^M#$1`nF>%7XIC#vtP@-NVonfqgIAMsX-RctE4!>d>F3ym8rrjD z7s&3L0DsV9WFK$}DoRE>cr?1KVxH}f8z4+Yyszq8#3gD>aAm(zPQ7SOM}UwSpuV$J z`Z6^k#otTzJ=qa*DS;&Pn0K%TE z7o`uh*OMGjPuClj*CVXwIVx>$jE-`jCNcuyXE3ua>v_z|%&_z+!r(85q^*tB5chE`0O5OIQ|50iwppS3xG5x^`=pJH7t(qZ7q3S-0>MB2 zTH4kcp|5vD2@v*gZIO1hM(FF8qXGz9jrU8NTBp6-_YDJtv|Tp;*{7TeFw?LZKv)#t zEp2J7x|xBx0XiaWXuXcq3lKJ_?UDAgUVnR-h0p*ENZW~6gJA)}5>?rTEOJ#)J}1Wc z0dz<*FHu!Sb|@%7nBI`OkEmMvmB-YV7eF|RxmDUrRHatsv3%JJpaarYA|D;t3?ST> z)g|pD@=;f{cglOXFWHtXs+F}DY5~-5%9FOYx3{#lwKZko?|>PW(t84gDf~`T;D0%L z_UyZ7&YU@xCPera=mQwb2x)oV5dp6>4M&i?-Xp0prx;VBdf z-MziNT?Rqa%&a^FP>=3UwtM&Pb$Hf&ataVt!sEVX7(_jOBaqhc3=a=)fF})zyx^&V z=xqZadT0bf`rfYd6BUcaRWjd`CV!HEs1`gGf9HMtt-41FZaVJ*gk6bR&wb6$&#w#& z417F3K7J_;h=RZ~GBR>uXlUrK3kwS?ngf($W;Ot%z0!inGI(5dR03qo`94WQWGOuB z%(wtOZqS1z29d?^tTU760NS|Y>EedSa(EOovn{WC_LT-i0?*IY698oNIe$Mj{qV0{~rs}n_Emst9cc;DEBSR_ypt8VIyUtUsG5%v9U3M zNU1vjXjb3}22UkKgM)(tky0~m5IryOgp)wD#>|pCD|lPrsiOt$hG>l$7ocf@M<5ER z=}LgU6?g=qkh)O`5P$wr7I*}rfGWF#jtkJD3E5b!m0oee69%FjOY^3lWo9; zCz_qTPk&3YSG0(42~{;}|YC`ou~L1Yj-8(66v zN^yAfZ)y^f!BnE-JgVjx`pf+X=@|(B?r%eRnLjppQ(x^jUr=olVcwhH$WKPPD)m0 zT-J3`)v=tp-YvH7kuU{mdn1Inr>>>UjqK6BrJUPOqml*)!dwYzLp!7& zv=k0V_^j-=%9(%_B`+j5e~B{YNfIE%X(GsfPD!08Y2gl(KSY&nr3Da#d9zXFECG>< zbuvPQ`Hw1sI!_h=a{cfKk3uqc7Oyb3h3Sbzu5(W^z{Rx3MIKsvB)E>{LyB4TFI9ru zuz%9%#9N$Bc93nCevd?04EAT0!s&8pjRJ^^&hhUDNK$mHPbd!J-~%iMOXX0oG~Gy< z)60t-7d;|8gc7EWFsF51rMPoA3vmb*>i?I0c!$JBn+nTMu`c}|Dgze3P91xy%gpk*|QpFZY%7jaRNLhowd8s#{_qPtPSgqu#~n_1DIAgwtpE@ zPDOr6=f*cJp1`Gf*r(RRBU5`u{;pXbX)bX_Wz4p4(*sh(NgW)7`yTxZ(Jufevl<=GW(;h!n7>%rX9GTRaxcB9G2^~pA7+bcI zsGmueQw|9gP7)&YzX=rTVYXpZwP$)yV2@-{Z>q8Jma0JXqaH9<1CKx0NgD{2s zyr2R#CdCiqM6~*;C0JQN{n_kb3=9?)7G@Y`Y{+09gTc{g^d<)aVIZ(DV4bA1$>9cc z)~;U+L@LXdNegDv7<9-cBiV-$!nS}4JpDU_pkRCZe~9UHofhQSSuU_n8f zas9Anv7M;@>&CxYvksjMrox=4EJg^^S8yJFyMBQMx%=-zn}z~!FeD~Ta46(JBEvT% zh)QSM5G|mBFNPEv1!IIK;)!OKc!Z^ui6s&aMKe3emPtIThXJDJf@qdct*Os6HH>dxUzF_fB z^HAx6j$sN~Lrp1O(3TP_HbmT^@K-Zeq64$swzps9yyl_K-ddOSC)ZmBOZwap1Cy`3 zK7Ka3f@Q5J^sseGW8o?pHF3VdY-pk?`Y=~Zc?hCRO^0WCAjtcSK z7X@b3sC@_ReKR~68uqdI&PwE`)#;|muUc;|Tv}eX=vwGRPg;Cp4Ldh3BtN9&>h-(T zP8%P7SotKlH2n73)04|3;gE-sGx?HgzE^8?bBf@MKaiZ%hUDhBBh#ZSKhn1+r#?{C zs2hJqx(`+Xx!0J>QZufhwTmXWGS|V&pDh;cx@uOcrEi^)FYuSL37WA7^HapU$6k!S z9(V|TrZ&K#>X^9N5UNxz1X4Bc`zXL-b^EgVvcZh(*4Y%> z!iqD6AEy-{lb-yjj7UeVw%c3}pE=mQ&Gr`)^T!jI`|?L5q&3R z!)rjC>UUNq^R&ycMDi`ts-QQw-<7RmB}1&x0k)Q zMdOkys4jk}a~StIdgtUy_XEOg|D}Ggj3Q`5Az{|k>f6OuHY*Q=H(izCXmc)246^tc z{pIOP7j^NKGtH1GUKYeR#ZPYRZ46-_hG5nyTp4zM@MK^`&yp?-P&{Bs}WmlJO zg5%@#8-3j zpZcnkYLTuIW8}A9==Ww16{k^?6Ra!*0zx_rb!!v%T)^u3_kpJMw_| zcDZnMY;qg=wqE*<>~A2M<)G==LGc#&4K`p$uS z@p6JlJ1|sQ?VNmnL>?lq66rm5Q?~wK+Vz&hz>veleS+t^<_sPY2aKfOuUswB3fM~3 zUFi_*wjak;*XxCHZ|bYa)q?6=e2f0NrW&JuOOf1hitECys0jq1a#>o7O%~ho|)6nbE6@ML3aV(u2W;K`S3vMX>Gft z`Ib!a-z$f(NM|b=Neg>bU8t*^mv;;!B7RVPuCU%eswf%Y%e&qL>RMV~9_1ZQii_zG zHy>*uDS2tus=G;3@*J*4mc6~YBnK^?!!jf#FH3YUWrBESx1P6N+A+P?auU|0qDQ2^ z{raYR54&kHr4%4<3kcD|_EQ*?=(8dDliudrm5KC`7NqZy4oA)STxoz(p19wN5L==Y z&hvh|hz&r1zBRnB5Lbpi9?3nbCDnb_tWHNKNj`ri7ld_BDM__0TT8Sa$(6||wZ0s& zq996?=#n=O!Y-W%%b#f&i5+86W5;+C z;TS_b^Vvd~9wi{cZA3kxt20YM!1JoP@%t{)oX3u>FQj9h z>X{FWv|va%UWs<^VuaFH>b_f=-nKP+*u) zeCwE(M320xE$KQ(A)mK1MUN==!Jc&e+6@WP2{B`q~#%$6!`)FF=X1M8Vnqrnq>;m%t;UHyC>D}Ug==YDk=W5j%lURVpy;N>5C z>l*1nFmT};On!Z38IgtiG>g2QDBV)-OKN%>F@Ic9^qtU*tDINZ{L=b~{WicC>%KC1 zIn|DM?bkA*7Iu0rq2K-HO>01lN*+$y70kj~URxa?RU3A^=}_ik(k-|Fwj0*jt6Ih_ zZ`84KyaqI9RNQm&C~M{sTL9d?o`zE5zNbrSUx9CXRtwsmMySdw?hq1=+&^}#c^+{= zKjywRGV$f{4fYMk8Y~z_)31hDM7`CDbL^k?SDK2Jises#_vO+Oc5G`Bof0nieK}j#Meh39;x>);T~UDW z_sse71KgCp^BV2r+pyhX12F$`U+wWl@8SpJq7d`m4d`lIn>nfxf>!+v44KkgMx}BB z>+G2aa3EpwiRvT1jHXwmNeQDq(q4BnC8KN4y!&u*hm$)%e$tf8lvgQ*R=8<|JtTvL zuK^pZ85}lGf zN1}E%o~vXEt>#S_nKbL7r{<=mzeFB4mZ<4FXxBBC)F87^Kfds?9Fq2Z?^AC=qmODK zMsuS5`#J%4MdeNV{j|ja51HfH?kggn+cQ8YNf&z9EylCXdPe3u1KF|kf^~mHeBx;5 zCvEFG&taXGqAIZLThJ$uRgCivpc-r4lFX}a_z23mbj zyF-2V0iY-WI-514TKMO-tvwg8wHZ4U|I@Bez;;_BEXy8f9(P_DB`NsKC$;Jz2+;^1 z9EQK1!RD`K<%)mI&I!y?vb5?<5}i?-QCzO4tk_omc0kfoLo3}GF$!uOP~~5Y*b#Ro z7S;4+;d))jl{$;w$?P2FtWR+`d^KQ(Kl33c_Vm0{`Pf>VBo|InR-_1r?%}9&`Y* z|5MfaZbn5X#Qn(<^RbG^NJ>v};hmOP&1#QNdPU*l$tMrnAxONBun#_$`*-(8U1gse zt4VV@Ui3w#$e}gu8u literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/photocancel_b_s.png b/TMessagesProj/src/main/res/drawable-xxhdpi/photocancel_b_s.png new file mode 100755 index 0000000000000000000000000000000000000000..6d29a268198e7ad8c5f569e7109161a5adc608ba GIT binary patch literal 3642 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 H?LGW|8CrWA literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/photocancel_pressed.png b/TMessagesProj/src/main/res/drawable-xxhdpi/photocancel_pressed.png new file mode 100755 index 0000000000000000000000000000000000000000..1477b2476d0b06ef8c887322270d4d0ef74c5c26 GIT binary patch literal 4012 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/photogif.png b/TMessagesProj/src/main/res/drawable-xxhdpi/photogif.png old mode 100644 new mode 100755 index efc3a64d2c3d0352ee0d2edb8e82fa00d22b5247..ad4cd9c65e5f59267898e368e0160ee45fea2919 GIT binary patch literal 3884 zcmaJ^c{r47AGV$>*)kO>jZs+|%gorCOa^0L%RUYoGeZ-zm>Jth#!e9ZLnSAdA8V}Kz8o|NA>cKE|GSycDa_ZEnT@5Hyjf+sDg_7u)5H%7_ z@rMEmPs36P6gq)S0`4keyvc!d1c;mIzqdf7{3A=E{e4W_1Jek>P&6Rwn!8*20kpCC z|4<_FA2f}A4*#Eg|EDm`F_ePWIESZ^1F2YU;d~T#Ls8(yR6K@GraF?z{y$F9{sNg! zrd=RYfW{6wKxG#K2}cg5sr-evv4LBVXmkt-i?=`_KwJfN0s#ltG=dmHp*m1gEtnPr zVxn!NiGrFMYN9laObnqWCMG|)C^9yXh$qp1aB=_P!hXu#wE~gCjf}!m2|;+ADV0nF z{A;3lK7TiE|9^p7R3dv=Ha*p@r_$M|>>*X>lUt(%5- z`gnLm^DR(@jv+&Hx$f2gH@OZwT_`h3?^U9-{1dm=%%P>IDGSZdknOM+m>X-#&FbN6qM+{@98r0@EG8XZgCR9M5i)`rYh=;{nMVpzUL6 zUeDUV0>*=66b?ajG~s1LMOT23(lT#Na5c>S)M?C@S_hO+`R3f=mvaEg;%j()e-(woKZ6AOg92C2-6973 zR&Ht?qsi}-a-Ae8nHCfAzOiO$}RD-#6=4$F` zT%Ulf-yA9QeGJn+sQ&6EGSvQDbki2Ub3E|mWZD|0@u~dG>vSQZg+aSWnTgzdM&5pe zt89y=e}G%unyV2XBg0yPV>IMU^6Re3*w9nqYw?TFXl#Bw&@E7sA~p-^DuNqK>8$Dx z3@1(&7R>hx@5WnzdYte!S;44C zxRtNv0X_6ZRN_9Mjm$nt`H4meSl$YnAv{xi-t5`3JI>%%9KEbRUD8W3)wycy}~;EJ*` zvSM50ou z<&~9R0*J)<37GFoj?C6~_Zm`$le4pPS41P5&AwYw@-eDEtmXaU==^qWByvpjruLRZ z?`Kr}qYq`m_v-5ztz%Q6Q}tMB3R^4V!~xj9DSFh? z6A@><8&iPjELy|M+|xDKo$W1r<#^8O>gtW^>S`~(shpggDz7er}@uMixTKR|)F0Y@>@-$f3+dGn?t{G&4OUd*N0dO)OQh5bX+#~ z*Xr7kFXL({58CaFkP~H|Tfb+VH0Wa-cJOK%w1UoLgm>zB=L^?(eaJ-3erasfuQ)*; z;5S6xAvOPgA+{hpPI2m>sY1R~jo0zjpihW+B4Rk@8ibEmtYJ%4DrCkP}xg z?AaPlI@HsNqC-}aDeF^4fX=)#;Ts}4fQyLcfQj}a+_Jrkd?!nb{v6^SCi4dp#@2O_ zkrbIrHUl4<$ju&jS-vJGBn@gOdNp6(D)z{8ad+R8 zP;7u_3NEXv{|ai{Sf#W zvLr9?UZw(g*xz?`px)8a*Q+SY>y7b(6kMsQgs)op4;eyi&QSMMY+PJiJC0{$hg-WR z_4RP|mYR4ULduk=5IY@8I@Hc1vzpg^qy>3%Y#e&x4B6tO_Y-DuVWd>+v;1sM6%v`B z`!+sNH!^oKCBOYTY}hnO{Cx;tOW)l78tFUy9LNDHWPbA7#8(A@+x%$08A*}!I;e_o z6i3Ph37d7R6PQT$;@CB(69r>+ZnMG&Ua{_!YS~e{ckx|9LR!=Y$QO>J6|!XQ z<5cxm#JeKF*L-}V)XnwVnQ}sM_M=uL{#mDVKcYoEPZn{$Ebpo<#A)m49FqEPjeVGvQ0v0q6`5 z^;C#=1PHr^Y(5|Fyk;?oQ@*^Lqx{j|%{UbpUl&UDtgpw50GYIP|q}wGZ>^4qR8J_e0 zva!OK&p|EL7qg0(rwF>8=Bu2r^z@W4d)jT~$EdIR79QVhO-6p1^{EZmZ;8~y=E|jF zwrk9vp7kuX{Ej(%+0--P&zEUd(t@2Tr5HQ>l+0^$Tscbv-Ssr^-1hY|09Nd)bf;vv zc9-V~VxHESs$O}?X?;oYVem-l7?X9lB7lC4|d!ZH)2pU`c;hv%_ z0JHVc=jvZkRGSw9r{vO?#e3#T%|gD-Nf}fa8aldmc4c9+aI(v~$N*u@(72F>Bo9~+pwA#xLOh^|2c$}T^sOX80zn8Z5Qy6%w`vj^ft!Su8bpLGD6tJS zPHJNlumOW{&!0Vu*5h68%+Ad2otg8Kjw}z}-PwEpoO|xQ=YQPEP{Csi+0$gXQI^Bk zpWvUFY}x#pdt?vU?vVBJ&mOYwDEl8@4-6ST|9%k06tY6H0>3MA1mpomkrk6oBP(K0qXY0vEo7I;u8{SKfb<%YO2}rCg~+lrzu$hcX0ory8hJPr z0i_s-WCmFodw-lPkA9DS_DBt6O=J&5K<<)9HlJ)Z$2Wcgand=mGh|&NAZI}k{33gu zOrHn-4|!<&2M6IIAR8bMUd*vg5J9Z;DF@&pAPY=k;XJPd#c|Rnyd)q38iuiCFL8{M zA-WmF0LMrllid;l4F+*dIoTo=Uds{UgEgej$m%&>3V*zSo*`SN!Yjpsd9c!5OV$=t z0cCNVQyzesm76oRdJeSvgCwBwWXsw62=@6e*@tAEK@boEO)DWR3@_bLTxB&iV41hO~C@}*x>$_=uEWF1}> z5Vj&#s(*0Gg^+rX9eGH(xE122fTr=VHB$O9t=#9~?6Q{xgaoe@%DZ_weggsZ5weS3 z5D>)ks*=S)-N2&bVW&mpw16;dy)K?dYftonlf#*l0t%76DKU>HVxsp|IM+xU0bz>1 zR%TnCnw`DNQ~k6H2#bVkl&tf34Txutvbor3SARf=b!t>NXIbzb$hqFDY;1ej70}CM z^Q0d<&A-V0m<|Dnj40aE`cGCmF>%668o5HVPyW>4&AyMCofFPQ6N~$OP4yrxg zQGX^&hO7)>3&={PeSOc9D!kp%YSycm9Um7-+Xe>o^*ARz&`-&pm39pbS?q}trhb_5 zKoHJsY16(Pa$c) zz!PFESQgNW(slwpp^!*(%1u zb1VVjEan_(FTp?#4`m4jR3>dD#Gx#afbhJmVreHK4#mdNDKp0KC1uINaI^N3;RG~O z+DI@lrH?5fR9F;A`v?grQc=}7(E@soY=pFrkbn`al_3I}CT$~_WLi8ABnW00;(viK zeIGCFBA8@+WI7*-d2qUhXZF4}ZQ4{&QBe_^K7D#9J3D){@!z|N*4Ebcg9i^b?%TJo z+s@}qm@wh-`*(D7+}*ZqTl;XYS+#0aZfR+0t{dNb}$HZy1qGf?0?wFHEY&1TK&B1*RR(U6cjw3nYOpLw@jWqdGBzq zIeq$cMR|Gok6r1tjEuK6>W))ne~S!ZS{Dm0T)1#FI&<~v)vs9*55V8!bR)pKtH9c=h?h@^MA^moSY#= zZWvBzxMX4m#~@3WE)6YMu%OH+I(VZ42M)Xv3WW}(@_W?R*Z=Zb@=e%A>z4z|Ng!G`}ZG@7t2-jDvSkaKG??GZd z=~FNCG={KT9q$aCZ1f-y&wrLJTlSg_h#``rM~{AFyuM_~k_s7t93dY9%G2@AVs$b+ zPoimbED^P|v@}IugIB|hPWsp{`i3JVKE(*L%36hv#6|4e~y$Qb)1>wkSBoH=u*p|rGA zypFTvKtS3(p1`pfFHgI#DBA4!-iEB1@yLPz!nc7pa;?p?t)>+#%tR({%Q{(Amq|KDc$TI zI>#_JxeEc^@xwPcfBt;;aEV*R#l<1JS&hOF?m$32e)uMwNOm&bza!aQ1mrk9SO@CW z>5gK}jPmpIbEU8J^gs|$w{CZZ-S_CwgdtN}acF-ySmaKBzCl-y73pjp7t6^GGw1bdIY!-XRj{$Bi5Jk+HfI zB|q3WUB7<)%}bXqHJ&|twz<2z`*C^mtXZ=PrcRw&fXa(lWzm2oeL^09t?Cfd- z1m=~MmAgbdw&`Te3_2t6Yn|^HdtKPo-mzoHJ_x~V4AaxobF-nL;ftD@n%`0&eLVUk z4?0a=q#KsY@5 z*GkTc7Jr5Z35dTT>oX2vxX>!?BP5_DA|9iFz*o{fLZZ1y^e;vMT_o$5HWK3SkTnul zK)t%p#)P!bzHSdEAkZM~B*fw0#tX3o1Q*pKZ6(AQoi3UY5MrQn(q2N0k*VK|fWSYM zPbyXgM;KsDD6;~(5zAc(fu6eGup%H(FYP8Ur+?%9!*BvZibspIUEpb9Em#&1_(a+- z@C>VgOcUz+kF;T6xsqrU$~37!nUMu^=Jj!+Kgu%kMz>V>c^Xn)94yY0eVOQwGEKf2 zyilLCX<+Cx<9*C}AaIXeTCuckAUH{O$;=;GsltHR*2+-kdra{W3`Ou8M3!5 z41axsw?Mwndt_}^yowbNP>&>=DsAmcPI2&Tnq&$IA-Xl}jRgMyud_#4%t%eP5_JOE zIu)+u5d1OgdWWnd8E=vdkt1PBr0sn{tx7VLIm^a};t`T~T;{XV{+{Mbj(w8C?qLcL zU=3NJ^n)kC0SSARjY=FRPUFbopgLdr!+%rU;Go%7{<~Ahxr|rgMMgP(&Kux>2`m=c zK9R-A^MIZsdqaiSi3EMQPxd}pvlDOT^np^}BU@=RI2YUlvCbi7a-S<50#ZD+e^tqL zhi+h-;;?eKSi-F%?I5BR;)%5KJV%rZl{RjkiHPCsml6|c5%c`P$zdy10s=)G6Mv17 zeoPB@IOcJ!x+WE;vSQ!tO%+ay6;ekR&$c?;{E$=~>zl)#NLH*-XkhYktT*;zivS4u#hhTiF(tmWer4G-=fEQY(q}szOsGg`*782n7Dj>xk2%cz> zk~G;wApP_+_B;>MeKWc}oo6iBOB`rth*kzMzyUHUMsMkIQ@VE26tYSsm9P+QZ;PL#e2VVOEei#l=n}!6o znH(!+c|bIXY4BtuBzX0Dx$*rLPmJQ3+cfq}<2AXjPWCjHc}C@%!@B$)kmm4`0D^F= zbmQ6aV_p7CtkHbK*2+_F-$y=sB#4W381k^0i|4H7@y{pN#;|4bP#9Si@8h8dE5CQx odfD(y)-L|p;q@WOD*qQ?0BZQ~_D56{R{#J207*qoM6N<$f_=aAvj6}9 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/photogif_pressed.png b/TMessagesProj/src/main/res/drawable-xxhdpi/photogif_pressed.png new file mode 100755 index 0000000000000000000000000000000000000000..365f8f595d822ef9c9ba81a94c6d6f0cd3ef7682 GIT binary patch literal 4084 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/photoload.png b/TMessagesProj/src/main/res/drawable-xxhdpi/photoload.png old mode 100644 new mode 100755 index b720d6d37d30464e7e2161fe989d2bf68263c05b..efae871de6c2f9b6adc44511e19f69ad61e4434f GIT binary patch literal 3394 zcmbVPd00~E9u~9G%p2rVrX?P=q!e(0ghWLVB_$O%w8c>**8nawV zbIVL6DqEZ>O>+mkPNC*#O=*+mcC9IOF3wDI?;rEbeV%)sbI!ND@B3T6-}jv7Wccp$ z&{?--otm1O4#|^1QMI`%kLDWH`!#X=mZ~unx>JSzyhvdJjn7cS(|O?xD2YRhVo(?~ z`jObj3`aG!Rgug9s*pmn!q(Ma-HdlZZ;eg+Cv8w*c zGy;JB1`)Dw!0%2`$-YoG9-je4!R@RgkTy0@G#YMWk3yqutf00?8(RcYb)&6q?6D{` z)^<1aj|)&)wH8m|hiGU9f zDc@dX`4o8QwMQWe+#!&9&7$!ND!CTr7bd+zmadMV31xu^h14ArP8`yG|o$?*4s6XBZ*s@x$49?7w z)dA<}8ubnS>~q32@PIYvMQqN#jBgL^CMYU7CkYqm-tWzJKqk-2_9!KrlNT%8oZ8-# z#*GrrDE`T?Fl{NDs*!~dp*;M?#WG=_76ZL`a%3<*WMd4mbo|z+q(oXl!7%VSbb( zyNy_O|7K+8!)2FdX=yXkDtWVSS_Xa`VG_N+lH;wvE$8F4(3bE0C+cCvF3I&R6p&RE zX^qfqD|_I(N$@ByvsOHv`b*XPV{_xs3Z2GSUEdNJp0Rx9nM1BbHj$MjjwveFmJj7YY>%kI z>#GY2)|bpV&Rlj=!VRy8o&3^Pzc(*t7ogX>yHK~@%;$iU;%l}`z<2b)gLB5^@3Y5B zrA(;$gFfR|>0P(-o|*1Wj4^|O{JrV3ACnr?obb*@ zUam@q$&=#iysZ7a?x;HHjY{ZkN3-->+ z;w(vWy4S0%@vIXNw|=r~oo3E7X3qO7d0nPtK~Gz=4MLgUP>tU!ot20i=XI*{*%g`u zPuyMoWaQWH%fmb`3Ns^@H-WXybBWIgpuEVZzE;q8AAsye8P(|3tjy%});(x;x~Q}e^P2WX3Ny)&$z+y@ zTs!7uw^5ISdSZCz!AYNw)eQ{|{(g7h2XwFXKtVW|LBCr*_EmCnvaa7o`NYHo>_9&4 zm%f4qbv_~WMAkQ=HEY+BbvKAqc{5koT^TXm0{4a(S`{10yBoJ;d>|V~ov;8>+M2v~ zwW&9=-q79q0owzPT~f-HWQn(dyrZMT=h&}X7j+)CH3h)btsOG*s*N%HmmbdUsiWB~ zW!;e!{kqGDk+ZP_(?uW11WEeZQ=5+GTg{bVya+;t+sp+i!SR<+^#}cLi&vi(r=PeB z&P$K-d4Xyko`I!^6BYm zQfB4OAG&^OKfCZKEKo8<#U;*19|RsGS?T#4vM+n1-_K^s$PoS3ln<7lHwWuWoPuk6 zW96Df?JmwaZGRWFtU5p06l%yEeOH2JCC;S=zfLRjeQoIx*Wv2NKC6&1~CgL*Sq1TZ{B{~^Zp$0HjCuZ3d4|= zb4|AP5BgjT=r-xAKC`!)b|&-3O4fnq8-bmQ8Ytt|jw8ML`VH2vCeyL&FWU#?kE*_~ zJDBYkP9i<0G`(wLEh;mf^>fqV)>i>3?F-`_ea|Z+#seJq-p$g3XUrJub$c(o zbf`M9r6}rT?2^4%LQ?S1KRCFZ_nVZM$2{b^dzZsS!$H_9r%ztyWiZNFL)&jtY}Z`E za|Qm*HPn)Ixj{2)b*67pvk2vferd)6KYR=TdQ!heU7-et7N*(hAmO7?=Ae^fxA&i$ zJ^si@U_VfU^j~zD-5t@ljkK$&Fn@S_pPU5_tlZgchmk;7XX~{dHyQtGwfAP>xls%v mjMkUQCWZ)obw2utL24!!(d8Dc2g6qWYDn(;2-jQ>fAepz$hq49 delta 2476 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 Zbn{fO-O+g0~!@Bs-T5D4al*&yFGwjdEat_^Z8 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 UxDPKaE&uFzlPJWC_+9(|14K~2EdT%j literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/photoload_g_s.png b/TMessagesProj/src/main/res/drawable-xxhdpi/photoload_g_s.png new file mode 100755 index 0000000000000000000000000000000000000000..fdd610942ba3bbc377914e0e857dac40d6f89ad7 GIT binary patch literal 3424 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/photoload_pressed.png b/TMessagesProj/src/main/res/drawable-xxhdpi/photoload_pressed.png new file mode 100755 index 0000000000000000000000000000000000000000..df021f024292a33649fee1c5f34928999c30bd52 GIT binary patch literal 3558 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 Nqu~br?9%nye*@Lyc9j4C literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/phototime2_b.9.png b/TMessagesProj/src/main/res/drawable-xxhdpi/phototime2_b.9.png new file mode 100755 index 0000000000000000000000000000000000000000..6ce439aa246388610aca5ec47d7eb1a762b51889 GIT binary patch literal 1110 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 aITe|v;YR8tMx$iqkI|jzMX15=<^CJt%xQuE literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/play_b_s.png b/TMessagesProj/src/main/res/drawable-xxhdpi/play_b_s.png new file mode 100755 index 0000000000000000000000000000000000000000..c5c551054cf16296020056195113f9b6994d65f5 GIT binary patch literal 3696 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%0D~>O!8bg2*-QdaYL9 zEG6$Ll^vyO6&oNti;dWEN70C?Kz01 z_PVkB74c;;+Ba@bs_5@ic)zA$tmo)ny>iIz%Gtw_C|#4fnTnINroI}i%$S0Tq}fE7 zM&fgofr^>Exx)qCNz}T<50&WC1v-0{*9_P64*T>rFh9*~`?<3>|B&R6gPqLga|nf1 zJ?8ogVWLQM!dyBfHz{Geugv(>qxLMs;ta-XiaAyJ+Oq8me++$1;RGmd`-)!oYnU5P z<6+A{pI>_Q%(E8;!UNF#!UM@szn(U->SGyCV~h{8E*Wk5HwqFI;YiuvDe0pp{Q<8&Tu)dp!>W}m* zf7Uk_Ch8d)zoRM%j4@F@J_(Wdk}A2Wbv8nktHi|=a?BghBbVx)4e(@MBsT?Su`7@> z(cKc~(kSzS`es-B_XAIC^tgqPo!#fQk0S?LzZRkWz6|fEW>IaF#ua-rgd1IL4<7YC d9!XL=Cc!kTUdjVRnr{6AI+5K-KM{_l{s*_pAKm}} literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/play_big.png b/TMessagesProj/src/main/res/drawable-xxhdpi/play_big.png index 12ae350196fcde3d10d691ab126aeabba189d44f..b04acefb6aeaf26b7053e7d9f9b1a15215654e68 100755 GIT binary patch delta 4772 zcmbVNc{tSXyZ(%^3`3Tz$u^9#Gq%P$V+PqNr3hKGWS5lqjL1&5M6$#;`!p$Q_ARCc z(>Jn>vS$rNc7D#e&Y$P}bMF7%>%O1ox}W#C-us=B$dFDog1A>3Uw~x1fVgIOL8L%` zGcyf~K+ij#zD{@XelGWX+R5fOx*9_CRC(Itf2-9)WAzQtis}Y>>R2TueN{9{8D)URsiN>odMKQ#>S=9; z9G!sZ|LD~IFI~nyL@A?~PSH*og;vEYqScfQ^#0omUJZv(3uVuOiMUcF`JlXkjO9b0$85cNQXc4%hcu!JyXlTX3lH^k=y^I|bjC#%=C} zL1OG~X>zWJI$XVSR}&AdclVW}EjOwLRL)<&aQwhx)ZX_RO}gg?MA$hJPK#j-fYrBl z3Ui(a7ye!^n+}Pc@bR7R`~}+tU>GHj+q$2KZEr0%x3V~2=znUMp0hT9|90&+UJJj-)PNp4wJ=VuLs2KYIr&RAvW5KsVAlcj^zSA^=xC<@) zt|LDr+@Dm^R%z$NfFO+0A-}J9Plm`P_s6$79Ka$!7p9H_FHT?R z=OJ{=NBfBC)zI=68V4Kt*64y(u^2!D0j5s4`aaE3tlKeoFIgY@35nM=jwYE}H5mk&IIO)6v&cUWftP z0)1Uk*`# z;ni?n4#nynFc-U=l%gn9#k+(Brkyut%SmlxQ;I=D0!E1x?|B^rIob8b_>eep{sIJn z%?f;d`I|r?d%dIb(Z~#xspd*BVPY^F^1+?I{%1~cJug4Bf_$!@sK-xF?YO%|U%$la z#%d7#OKRJJx-fqaHZ>g@0LljqZ2&IH1oRoMx1Uq_`a}r;=Wo`|QAM^68l!S=pl4JL z1ICS20WqeEw0@`a68$jKyZ<5~g66=H0xbL!+Xwf^srhJ1SLkB6z{~^$&5GkOhIQ6C zSb+QBC`Mpsk(1gIa2e6ibG}#S+;u=@x4>m|jDg*S2hmVo0viIkG2rH0?-Y}e6KDM9 zz1mK(T6(HQ_aQ8dAfw#jpT=(^hy`l8_vpABrWP8`e>{I-Wb*5K;7}k-1G`gbnX|9k z{1EfJ|1+QBQ>P4gut>r=Mi{5ciV=`Wu|z9>5+sz;C&VtQYBLj3q_9qcmI=3&t|xAb z0>%y{v-yxGuRymg%}#FIlFgCjg%Mer%oNf+VGLsovHbTywkzkLJ#05Ysbti>B3+Cl zZ$z1U2No&-Ix(P5+sQv**>k(yn0vYX3w60`vr2CE@xjswt5H z!z41@pjXI)>*gQA1ILI>28@Z8hU{3yFdww=_C-*|%m>1{6}$|=U=0$K$`b%tSUBOI zSE<+7AeL!@#xEo9QnSy``ampmx~zB4UH)Xf;4YQYq}dT1D(7_=S+yG%`!G%29T>kS z$Rq+K3-r=P#X<~$4E_`q$bL41q?8;16LUtPP~;0mC=8qD3Ojm&hN=Zmt*u zH}*W&6)T776c!VzCwYJtGD+lc2SkXAN3o0O90nR2e}YFbv43=G+b4YV_b@zp|GsoA zI4180Qy-bUhr{E$FX_NXD=I3aL%`M1&1-k>-j&o6*B+z&JIM(k&m;;A>^>lrl#~!3 zZRn<2kFEWc2?z)yFE4SPjNK{Fo?TfWoos*LjPIrH?xZ!H4xxQHr3JDYbLhq>bQIi|s zQdclEc&dB6TjSE3(sKcc>}Q6-FmGO)p;#dv@dX8r?VV5Hj@1)uf+Ivb^>e~$IKUds zM|Vq~YMJtr8bq-pjBh_|&JFKG$e(c$Cf zj$RO7|N0{b=$ztXd#~*HL-^0nLC5y4qWkK;v^Yr#1(MNi#?;KIsj0VSxoRyBHfMT< z-`^RGpcl5f!&vC4&K;2!tK{<0RL6e`b9j7o;J7+M63HszF>lKrW%uC0DB|{_f_G0b zkgL94k4B@x2kT(Vj%25Jf)fvUFhRQT{`|C% zcWiy6ULX*mHYP_b5&&YSUTDb{Wl^@kt*!pBzpD?vxyt3JaRK{4`%xB!0nU3Uub|*J ztGV9nlC`5ZdXe5Xe!_2=qfhF&yuHTRvuEGS$jK3D?a#*urMmtswXVWip^Ev^W^A|Y z=HL**naxv#9jw)ZZgbwz0H!oLI(kd#A#5mag7xK>(a{?xdp`?GRn^t&`9W1;F_Pp? z^O}-nc6jgJ|7&PyXo9hoBFP1`VA;bUQ#$kW^RJninaR28egmkE`R{xfsIR7nhew%- zkRFbQi_PKgVQ_jHYP}R_PclQ(of%kMEFJr zla1-}V_PnaP|V}TG7^ad?(MITu4c*EW!YZ6>aw7pszCuH;rGo8bn-g7@>)vG^D3e> z&nsh84{tv*HZg(E%+6-i`Amececu%smH@PvlMdr5i9};_^W%`71Rh;A6_uKHad!Xb z^!|Jiinpt}_LfQuQe+)l4=1XsWGTP%V1+CZio88NJtJy&M^ksfQ<}F^&>l`u)Ar&Y zU>XK7cJ}srJ$#O<$?@@IMgOCeE7WYiyFOqg0oa0zto9o|6*db$+8((Y7!>3^#reFU zZD~XrkPbZuD_CT2nv6io%gcL?ys<}a#Mse%6@WtV)1dveI$G^w@n1RHJlzOp_dDvpG1akNTvT)%zVc0O z%jaTm@;BWY9*oo>g8jLIqt3xcLBG`nx{Fcj++gWY4&d9aFn-m_DnMCGZ2I$QKFEgR z>>;$-kl1*eKIpwyS>5ZGOtNIru0>gRxk4p}SyKQnMqjAICx5FiDL#HIBR@Za>HCHT z`;Z~}Y`em=_`QbkgAnq;dYj+EX~o55Qy`Ox>J_DMIHz5P+|2cBHM;pBxO~ix>)KOL zrO|%f6fmPDG_pmJn)N>CDBnpTIkY?^F*_QFL6Oc$_b&nn5xR}ecQ{Ya>4pB>v-Q4{ z30e5HKJOEem(1-0mb|a{YinzVo9?e4hm5^*Go+@MNtw+|e}4@uGQk2?hP zDR5FYv9W}EmQI(;G_{Pe`lW;P`^8pC_6y~J$2n}HJXO#p8@}G^U;F(htGA6l6QNrr zej`>231~PRAP!lA>5_+~kqp!qmZE&X!?+`R9bK{zWT+wC8Yom6t1|oAlujpVuH0n7$(_rJ}adECoDfN%ViAlA0X&EtziM7mN@R3qI}mfkC0VN4Guz zu;n*{PX;3;EL*^O=|FAIN4hc5{FgC#q5JpYxlE3xE5sVC+W8&8qt9xgqhlanI9$(( zOpLj>#|?dw67!Aw5Dv&UX!jUIl8TgE7%~AT)|m=_7Zgah=p5R7$Dw zvmD(HODM$nAxUO0QcdBoPje>dU^W86@ao(N+!!qDH_^>9M(Q;(%(g-p3dIk=t&dC- z&4ur3U>*Jo4NH5uMT zsTTBc4^DC^L-2scCqb!cIja@;@EIfNC$JbCeLFd$fDuf4;aH(>>L3;Pc)E`n)0EwY zUsC|Tc>z~0S<7~cRh`Mn{WhGRYx}4%%i^|1OQM6gG09~uGT^qcM|_a(*NtnpY-2^O zwG7w&gxcS_+*R|9?*MH+i-_S^&5>`0?9O*uYP$0N*6*|{-DXciGW+llrLM)2 z_cLFQrhea?8>D)W?w3U#i3ZJ5B2=pv+atRgw8guDEhuqAh?ALAb0c`hR3p%>q>qho zNcD`2bqil!u>y!mGk>|=q2&ep!LCLr4iRtlW6l5aA^4wcO7ftcH&&LjO%qdubW*{I zuaxRY#+s<>p^MQAT-wK>i352Sf_GdR%=B;kW7L3KpDP;SQeD|b$TBtx3Bv$jUE>OL`Ncg%4grq+!iAR6iS|U`OE54Q4Q>b3~oTJl&0!z@^ zB*jHKy457U=RaJqa!@pnHn>>n|1=Cl43XU#BOnPq66zV9udMV~U-3`mU6EuAPl1K8 zCig_EXVYV348;Y^tGu72-&`g)bX#9aWTH!jeqxJJGIV?=@R_uW#nbhs!z3t4z3)-N-@T~eQ zFAn&H34=dH8CJSy_ldb`4^`gm-UzM|&1=CMCJ#;V>H)^iXW#3ET@B0G&JX=iUoS~R zz%Z3sh&Z&`^uzd^D2iit0moBEL9trje^u)Q8n$PCl*_!SOa7A4YE9zTz@lg3L|}U{2M*G+mHVP*sHjQ delta 4053 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 BYl8p) diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/play_g.png b/TMessagesProj/src/main/res/drawable-xxhdpi/play_g.png new file mode 100755 index 0000000000000000000000000000000000000000..d4461d6579b2a5db76395619eed8bb1204f829ba GIT binary patch literal 3746 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/play_w.png b/TMessagesProj/src/main/res/drawable-xxhdpi/play_w.png deleted file mode 100755 index be2cb867fac26f618145fb0b76b54699bb42cdd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3433 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/play_w2_pressed.png b/TMessagesProj/src/main/res/drawable-xxhdpi/play_w2_pressed.png deleted file mode 100755 index 96e0e1276d2e3515472d55940a1b2dffc3b6246b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3547 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 delta 3210 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 wr=sAq{D)BrRY%Vdlpx?#bVc(f}{fh4rMHT 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/reply.png b/TMessagesProj/src/main/res/drawable-xxhdpi/reply.png index d08e72b8254c9f531bd2116db009bc20ac3dc5e0..d7b1f3354f82ea73be19a3b8bb3cef04edcd2383 100755 GIT binary patch delta 1232 zcmeys_l|Fa8&iyli<70ZtC5?Vo0+Sjp{uErftiVmo4JXRse!Spv5BRULPc(YudkI$ zesXDUYF>$_i>(q+L@y;X#R{U=*Z`N_$%~i_U>3OGQlz9%ToRO;W|e}|0wY&kdME2K zJJs7g31eqqV1DH3;uunK>&@(F50OBLq_v4j-sq6dN{tt33XMTGZ8fxXvwzp05r6sUjn(wK zw#GH`e?cV?M*_`)tjAx5=x=d-QT+*o^sM1vLGJ!+LQOSd)Q-M=(3YX)V&u@m0MPF}K|^>ebL@eJLjGs^5S>_3%G*tj*EPMFJK z)X!5OHl=fc#9l)S4!+Oll}@O5IhdwT#PQii0h2<1^`<0|DY|~#UiRFt zq66Ao0^T&$e`>qibcws^h1BupnF|APmKi@AE3 z+e^eOkcNE}rWfm>2ZqH7%KwQqL*HsTFZ1PvDD(<4qpV z%1*H@a$6dU-i7TIsnpS&!r>VCV2;tVl%`X=Cm!yP-rscT;wm;iGtSwo6IS(W<-fYx zmEGNB+Go^p`D5StCx5gxR)73I_2#gtJYGFq%JQX4JprW8+36IXb?dGf{^YV%L+WDq+(NjO}< zpY_exg>xofiEeyXA>VV|W4fmJwP}xz}W-PwP8g_e+VDv#lZR?|_7U-Uu;ZYtn z^-{t&C4S#HYl|>*|K%k&Zftj#Tz}$9^j*V*Nw$(YC-UyFr#r}|duToGHhOk&_M103 z(;T&@eBCL#%iF{?fKx8xlEmfidEN({ch|EU2yZ!f$naj%;s-3|TXwlvmp*>bI=PvJ ztzyryRR?u1?_*&?YXZVVkYyq`#W+TG0C!9_Uh@uFE3r@Dnwn-+0cARw5ZB- z`e#{@#x|FEDp3IvNmjN7Qva9qn7ibu|8n`uQt86id-O%^qV$s%Giw(50rL|ucR@3k h6NI;=dp{Eo!>O6te>~oXm@)u?rz@ME%Q~loCIFVz1Y`gJ delta 1234 zcmaFI_knMN8&iy_sjHcjk)esRxuubzp{t3bo0E~7p__q|g`t6oftjO{LPc(YudkI$ zesXDUYF>$_i>(q+L@y;X#R{s|6qnw~i5|o-|m4e#>V_bSC>oGgk z7rS?EW?*1`;_2cTQgQ3e>}U^>K#Al1n>+)<*wVfUOm%YfY-ADKE0XGFTjIEBwt}E7 z%hRPTal0J(-C7ewT=|zOxw^TAJ#coLp(@H+W;nrNOjrVzmtxo!vJ{t_h(FUOm&wk+V;wBR3W z>N<|DxcY#5TcQJgISSMs>r4ZI|X_~Pk!lgaaD z9QQ2_D+gBo)pcDt)26&`U0_lWCz)+D^VI%{2e;pDXu5Q99UGq+tN!%^Ul>B~nXD2G z7kzrg`jmp-@!gD*Kd)b~=J5aUyxn|G$y&c>S8U-biP(2^$M*cIOQwBPs%!M!aWqSp zyJ?PLMdstmAc4oy8ublxUQb&tHNpAwjLnSGJ`3tJ&oSFwyfG*)k0U7{aW=oD?6zMD zDg19g+z;1#Czc`7A9+qYdalWn08Iye?lZg#=0tDV#b7yq?wO-z>>=k|H>k{-Goz_O zGa;Vg>6|4OxxO5!N?zl)D`w}0?IOx`&E=;e^cP7zVSf?)-~8XD9nZW<>tELVu3Vbv zA=ov^c8lAdyUlzPw{ZsE!z%H-RQPgdd=2K#chqrVN$NA7py%M;ZYtn z^-{_=A%EXEYl|>`{pBS$Gj6Z$aZiz2W5zQx#h;6NlQjPU$$~y(m5Co+C0{={TP8I- z^@3MwZEpKIAzi_c=Jr`7$G$9h9`vF9#5=|_ETWMX$D#{F<~-;NoBm=+qRgIxq6rri zwqLI>-I9B2`U3@vqssk$h5gS$^I|p}e6`?^#N2Z88%&!5QbMye+S!_0^HM)2C~^7R z`^_lBa9nX&_+_REzYffp-MEeQW0n7tElox(^Zu@GnXz6f{CMc88-}G{cZ*JxoFe|w zdRG1V5C@;-$C5lw=%v0nzEf^ulh}vX!2w)`zO&A+{8eF8duz3@3)d{(vY=f~e)FFd z?Q1q&aPjnH7cQ-q8F}(&j@fHI=A399H$S66Vg8AQJ0)!Wzv#%RPu9PJ$XCEz=Gg(s gWn~}38yFcTe9`{AtHty@0}ya{y85}Sb4q9e02bT?E&u=k diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/share_arrow.png b/TMessagesProj/src/main/res/drawable-xxhdpi/share_arrow.png new file mode 100755 index 0000000000000000000000000000000000000000..4360f9638922fd1e9a6c44666a1a8195975e3600 GIT binary patch literal 1511 zcmeAS@N?(olHy`uVBq!ia0vp^T0pGM!3HENV{f$rDajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_cg49rTIArU1JzCKpT`MG+DAT@dwxdlMo3=B5*6$OdO*{LN8 zNvY|XdA3ULckfqH$V{%1*XSQL?vFu&J;D8jzb> zlBiITo0C^;Rbi_HHrEQs1_|pcDS(xfWZNo192Makpx~Tel&WB=XRMoSU}&gdW~OIo zVrph)sH0$HU}&Uo07PcGh9*{~W>!Y#3Q(W~w5=#5%__*n4QdyVXRDM^Qc_^0uU}qX zu2*iXmtT~wZ)j<02{OaTNEfI=x41H|B(Xv_uUHvof=g;~a#3bMNoIbY0?5R~r2Ntn zTP2`NAzsKWfE$}v3=Jk=fazBx7U&!58GyV5Q|Rl9UukYGTy=3tP%6T`SPd=?sVqp< z4@xc0FD*(2MqHXQ$f^P>=c3falKi5O{QMkPCP^Az7BifB^?{Dj2SqGWM8kxDsRzV_CtDx~p72xifT_I*n5_H$FR^A|V2bv1aSW-r zb!LXIhiIV4@$@&&TxSiK#1{&JlFouv%QsP=KS10v-sW4@;?e3 zd$?A~iN&z2TDjn)=8R@P@q>T3?p;*)QYpyhw11^Z)FpvAZK`kGT=f?)+hw1+Xd&A; zeM9{2z(8Z0=0#8GtW+`dU za(nov&+GuF1s`k1sh{r8AByn&|6gM;tFhUDrMt2EZ`-~XrkAC1+9xK|mWY}yHQmL$ z?(qDC+OG^!N1J{7#C+!Gt-3Vhw_DemIT!6DT6p71O=p_e{46*radp9aPfJUI7ZXMD zljoe=+~pIe8CrMc3FD8Y2Nv`!-J6*IFlkk5;f?U8HGeX9UH-cy?*8fnPfX^tgnRC- zv)vAuCxxJ`={-IG59_!_2s6p d#s66(7~F!s1gHHvwgFW1db;|#taD0e0s!i6JeB|e literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/share_round.png b/TMessagesProj/src/main/res/drawable-xxhdpi/share_round.png new file mode 100755 index 0000000000000000000000000000000000000000..64fe260bae31504aafabd0adc6dd812680308f4e GIT binary patch literal 2389 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 W)jC#1%4%EsQzQEY5~~Q&$^QYMBrKNz diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/shareblack_pressed.png b/TMessagesProj/src/main/res/drawable-xxhdpi/shareblack_pressed.png deleted file mode 100644 index 960261dd793d2c047887d518a43ce9971c751ed2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2617 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 GNc#^qzeslg diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/shareblue.png b/TMessagesProj/src/main/res/drawable-xxhdpi/shareblue.png deleted file mode 100644 index 217a889eca53c3b5990257c5b679d8443a400580..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2604 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

{>uVy3%<658x_Ez-Z)LqI z4W4|-KRN7B%#ixppXw*?s_5ojPu&7x?c@k^NG?Ys4SN~R0cOrvM6eo>n%KssK&h83M cS&*4hXVEA}VAP!msFj>#H^&eO$p(oM3%G7QUY=1cZ=+5qb-}~+RJnubQq>fqO z>E`c7p-?=PQE(i&avYC~Gx<*Z;N^O9p%V%%p}`GA7Ggyy5qdlY1(YTv6^%m?efEkA zXc&b;HDK{tLaT}v>u?hbap`%w_&9<>bktt)_5eu8k;;>C7M_i-YHX;uF*Nt~-+v2k= zC_4_d;h9z)Sr5akaWI*?_ZxC3lHQ0HTQRaINCu4SGEJzNP{I-h`Guv&^kR+-mcc@W zjHig?D?lz+#EX!LLirIQp&&vLA%Mm?-h~x~M)JT=5R8;Td@ff3${?OX1PWyw2o#3$ zVD30pX|@rFS%;3>#YnqjSpIvlV!0JX2;3Tv;~C=}piaXH+?Ix00J#PN<|JZfJ)UKo z>nP8gXkpZftwi;aR@?-P=2wip!#)T@LXiNJgQ1bK(YRqq?(iKFL1YfNLdFC^-1CF@StXLVyxt7)O@{gn4CDJ5{`(s-|VVXWkkpN6|~=` z&DFRwH!9(v1L+ahoo*qW-aenHX+C>)xzYlbxVOmigE#UsD)~3fF7*w(rQY(Bu}q8} zJG&QeB@5QF)uecst^R6R<6CWoT~Lq z76zE5N+`MSA^VFDm$$bDGB%Dx^KfP)5>_@yqZe44F|6WRir85U7bgqQcpg#^y zJl33QndIbNC~%)Su$Q;1daBcHzVzEn*W%TmV_&Q<)_&Nw2C38S&!8UZ^*%mvq~-LG zZF>9-pCspJYi}$+rTspQLhW6xq1H6(4#kD!s*PbOo<}_zSHG%`-o(17l`pDye)goc zw|r2qs_^Jqdxw_yr~46@ZM-zi#ui8Ve%{fKLKl$x&`#|Kpt1|+nM;_LnsA6Z9-kVJC3F_KdeLhFKWOs>2 zMtqNyNv}=lk%IJEb&qsia94?tz9qJ&$%F2f*wf_28;V7!Gt-!GYPl+Ap=*3X(O;Qh zcIQKri(zE`@ULZss>LFZ6V2rGHcq4Qo=FTM$=-6HiXn3z+$6l;xF@!-AtnD>u@3?* zF1_a)IXidO?p9fF;0E7=BEw~>7h0ZfkTuvhoEe@@r@weq;p*F3)?GykPixJVgndP4 zi{SL@Gq#t`zfK&!SF9-tSe{^Dc3fB?Xl-xk-lp?T?>D+dC*MdimQ2|2;ZXMveac%u z6`#&Z$Pe%3ytsdEU4XE~U*)-{+qYL3WseHOcJAKs<+e_*GLLrYH|sqb8-kJR6os!) z(^nC7sDO3YY28Y_S5q_XsjENBtKJ#8K{=<{dA2n9atEd!99Xj0EvWJ2?0qGw=fF)p zOB7w1B z8zz<4Cl4lip7B{)Sa$0p&25^~^pbTiPV5yFozD!&`*=OS?v}?B7AK@%diN}aN-5)Z VygJ&w?1AHFrBuYgb+YC8{{S9_uxbDR literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/photoload_pressed.png b/TMessagesProj/src/main/res/drawable-mdpi/photoload_pressed.png new file mode 100755 index 0000000000000000000000000000000000000000..87810072f20bf56b13580929c1df386d5c0825a4 GIT binary patch literal 1797 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/phototime2_b.9.png b/TMessagesProj/src/main/res/drawable-mdpi/phototime2_b.9.png new file mode 100755 index 0000000000000000000000000000000000000000..59f83e02f472d4544eafb319fa7a0578a41b097b GIT binary patch literal 999 zcmaJ=PiWIn9F7~zZfxwPo1na9A_{BLm#$eGmd&P{cWi!m;a_AZ68X};Mnzk#mKi<7(fo;j`YD!P&ULLjV!nTiAwo6rW zd(F&P?D7&=3?(YyAYy>fS$6{|l-Z81MCZ{q&w>twtjX+YQZ>B{^4Lcp#U~zW)>ss#_l7D=5I5zDXO`n2kbtQr<@f!G0Cv^yP(#ZqqAqx2R;R;g|aFlauA)@q{4kW^O|5 z?Ns4hId|ds&G|aF|7!s(#g3l6*c&>2K3*0JPj^Ni%pF`kU`MWv3_TkCzK3hy4rg9^ nG5z!E{?yltC$Fa`h0EXr^D}!TR;h2yL|3n{fMiJ)$Uw4Tvygzb0#yz> z6s#zxNJZiWcmf_=qKqQeqvDMU;%!wF4_d432Eq1+ zjHgg2R+5Eq2)VkOp0O6>+i~p*GjeetL}7#!iy`y~j#BtaEE)wQY9tm7K@nw2Vh8F& zp_s?0WMM>DU;tNvsi}xbhiXu3Ni>Dx<7dz!ig=U&qS08Dh6lbl)&c@5B@YZ`2GRqy zLNrdbFcn9osX;PDYP^D@1pRyg9|M;pP@@C_7}NuxhSssuVm&xKX*ud}wlGbo#3^xQ8 z58EOo9vDXuS}u*I*XyZzPb!AT(jX3pW8z>iJV*@>U5bW43?3St^9Tcs>J+$2OQ#sJ4QcC$5cFR+zNoE}rD#!F z2&%)9a0OY980Qf%nY*tWGAWYYaF^gJvM5Lbj46`TsD_ZhJdpfCRjQO+x)2t?-XZ}* zB=!<9A&A4^3pk!$e2zDpFXFRVBOG7CdU-+|K1BBx3)pN35;6H~m;p05Vi@*h^1bNL z2v(xe5r{^Cj@VU^c89U-uVT4E97PBWmtk1KNCyPRVFad&!?b`<$^u+NRT?Fx*SVR> z^C?;w#Z}3uQjBA2U?{&_)feoGJehPBM<`%%#Dbx?VV01?^d@B%nFGih9L6gDPtIth zGc;3k{HIw)j>rx)Z9lg@DSRFtR6|Y-PL9TvD~c9!;#NsuzRYmrZ1LiSGQ{@O`3R@J zO3B4c)kSb}WkB`5rD3)1HiF`cQ`GP|QaJd>L)%>@%LF((WPDWi;M!_ zim}H}fn_hDpSd5F4BVPN_u;wjhuwaEAw|Wjnw_#Kt=9qD;M>vEV<-o38X9BbI5AyHP#~cnQi~4AG^>NO!yU8IznQ)y8^(ekGE%_c=WVSlU z;+);LZolF%x(RV8>D{8rG#<0K35MD{yzcJoJW${BEV1c8{vuvbWgA1WZjSXGqbqG* z?vpbEf0y{ptXSmRT38Z!x9t91b#d1l^#`CFnZ4=toEz7_!zF8AxEPpAgE3|Mh++NhP zbwbOof%r6|dHf3M*4UnLhKB1Eztqu_oGZ=a;*n=+bw;}X$pt69tj<^e_H;kRV=e1- z<_yWSzDlv@f;BbOm-bu)a?jPwuse{Ko^r*G@ycgPq-@Vq8{J=wWmA#KiIauD)BusFCp1+?wCj6wkeTl zdp?~KHTu!i_8pt%jN+~9JknHj{iq=q-j~Dp#-mnNo>0F1^o4zAfeSRPl-L?L=(7_y zvuA=xkGx=8s>KVR`ah d$!q^KGs@bkm%Wvpk#f`TO(F_{YX$O*e*ing-ckSn literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/play_b_s.png b/TMessagesProj/src/main/res/drawable-mdpi/play_b_s.png new file mode 100755 index 0000000000000000000000000000000000000000..c3e88682fb69b9bcbe2dbb633144c3cc4650f7eb GIT binary patch literal 1874 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 T?;ue3t$@`q={so}C^q{qR2$5n delta 1430 zcmZ{iZ9LNn0LTA(B1ytxOg57|%QV|O49jzQnB%Bq=i@PKOg7|cYYCUrshM=RiEfe* zO|iruce2WQxIW?X6h1=_$0c+guNU3Rey_jZ@2lU4M%$he9|*4HhzUe63c(2yAc+Dg z)Jl*AMPqG&Q7}w%ymXo-$9DCl_gHpB)-h}hF^ODzaU2B@3X~>!UM||9V ztNrI&^%{jtO=fPM@V>+RBjPt0r|0)G=+HJYNHi)VbWwIHnhBSie!*hvi)O||h zs%m6aC%@zhNT1auo^$Sa!KMBUl#1fBy~<{BsC+c%j-y3PJC@AHyB?O-8} zJ-Vf;K8Q?Iz~e5v=s*r0dN-|U{E(xph3z&tCsi?o6KF6_L9=Pbl1DJ+I)GMXO}y#x}u*ZAXqoJ z1id$`_M0^|xB#5Sky2f%238bzCM-C3Mima-T3K01q&J7=&vQs48v(q?aU%zaP$<;N zFDO{}^1>_9v7|Z~4%vWM9~L05~#ivGE|8{JJ!^0*qn*#j88Am2-oKAe^%G8ngP z@h;Va_Ws7&PxzNH{GQ2TJ|Fu0UqcLHI4;ezcY{W!(|3+z9b7V4*m$vt)<-vkoh3$N z*7@xlx65H^1JdZA*@E8QUZzu}+{cb5p?&NFL2$FItSnV&mRqo^PHIz<=>?lyU2jHL zVr;7z0$8{B$?+c5SO}BJe9+d`b}hrHE8-b*mc~1C6>$t;r>C!mhK8=X<1V%L+!J|0 zat9o=cB!cqzZ@D$=djs7rRw1>LVfQDnPy^~c2O~jKw#V1*%h-467&$RoZmiwLbOz! zVlqGE-y7$u8+KzO22zmN*d=nnTZSoEJ~-{9+h3}0W0)D>8d2GN-p5!O>*=lnq!<*C z7c@|_iH0?ndD@gq@y@8l!X>#}zQ-~ytM>Vvl|oH~b>0erzh+&iB&b81KPzFk2^?VUN5mTz%*>1%0z0mHX7}m6!i1MmUR=N!xhAhGzWETkbR(dHyU6Cp%EJeOnx0kRvDjfoU326mPPdy7Z8Ay#@o0hp6M)ZtyZ{0QodAqsD;Y|Y z7)>s;Ph!gsGUy|7*PTN?8X$#!nX^+K3+b#cOKJ0pihNJ7J%=a zid9AcV%&@ZY#J+A%YYyNhG|d;8-}4EfXRTEbOw3D!B7aF4fB~Cp#K6%Yi6CEua?OA zZIO}yOe6>spH8>gY&08-hMN=U5Rb=maxj^}q(-o1DMldnV9eq>z#u^_TC>4K7;p@5 zG9vM~l@NfWr|&~Bnv}{9#F(W&QDn;KcEm)7Xbig1=!~mR+d`<(f8F?~wneklgwoZh z1-F{DWIgo017I?DpEl%FB)#F!G8@REASn`DYc--6p^ykb@(WF8(D4~!iAchgikMPa zh?EUMJf={@V}%HLT#isG|jAW&ad9fp4256(}dvYcq z3l3SETw=r9hODchKH>x4d$tY7GH2+Pb!=B&+Lt-(!Dk5psgaY$gQME48gb1!pX$yU zQ^h>j9f3;<$KD#dH*055!=eqcTvJ@c9nAdb*1S$eRrgoO{S7ezOIl0R?9t7m)*ocg zeO0UGmlbXN;n;Ow#l~v)>z?h~E>w7?o<#Q@EwaxI{i`8D;@>&qR>?z8y}Uq^wdsl? z+#-L0N6+cDzjZnGrbW6~M%{+Y@pH6C2OIUCPa6`gDvgYG}VnG!tJ>sm{PQKgLA zIJ5hSn*OHDC9-~Yj#XonZT{eJ$vPGeY!ILYQ>{y zFU?leu(ixlQgHJYy11t_q&&LoK#)UoZkbw_8}Ik?q>}S1zVYD5OVz}E*0aX6`9*>x zy0x?;YfHt0d#%4Vrz*5j9&xmSMa{_Z`jnddGjq(#pYB~iOWt?puxn{YdScFYFY$x0 zKd$Cv-YdPG8s&ON(okHc2~WIMsY3SP8RFCh55*W7+WXU6+p>-Bmd8vS97Sn6lP~ nUt4=zei}T##iD#3mhM7vN$Ac?o}WM2`MXm{Rg$BkMH&A9)I;bF literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/play_g_s.png b/TMessagesProj/src/main/res/drawable-mdpi/play_g_s.png new file mode 100755 index 0000000000000000000000000000000000000000..761fa5188cddd410b3d55a4fdfe38a8c8344a3e5 GIT binary patch literal 1874 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 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/play_w2_pressed.png b/TMessagesProj/src/main/res/drawable-mdpi/play_w2_pressed.png deleted file mode 100755 index 7b9fc05b352441071727d953881e4b889548bdbb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1802 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 iy=PGRieZ zu%MNzAXb6#1W{V!0izXR5YNgbig{-PzsWvG4o7_ulWl*}|~U zKswEtMxjvXiXdqOIkIezgB|&fo-~$E4s!`v4531ki7Yh+Q^Yz{0|N@ZIt7k^)jIRa zPS}@1p(Z1dF+_|qM5sme47JUMVbU8(G=<{pZ!)U2X)pn3;1t9l0`FT-fB>QsfzdoA zOKA*%S0F*FFj%!JG*Y`NO)JoW{(gY3Nk|gtVL}a<^yvm%XcB>Mc!lKLw#@{AHzq`y z2z={Qj4})eKrtBLF*sgY76bu&J_F+N_8>3o-W)LEf^z>~AdZSYLp4foDOB9(hrb%sNLJSsDueZhZ#u_Ig;D6lspfw(8 zHp0vZ7)LWOEqNZv?h{}#cOMtB8Is-zmtqKcDC%@6s?E^D20|eff#es44$%o&5~)P$ zBa^UYa;}UAK?1f|BH(bv0v~U&Ozh2{;P?<$DiO=1GLBp>;mIIK#uE!9TmjFA!{jVChBcqa{Z9Ynm1-Iu}9p)aRr`{+@I8;@^uf{9muP6TC?$j))xm(qd zvgQWfbhrO$)qT8YtopjSF$rsNs-kqXsf{^__=9ot0a`@T^zK|_?b#Af$Cp>8{N5Hj zd~wWGQ9>yNv|HDCo}cW@Mf(~W^89k5fxTThbZ+jFBq!C5`KBqFTHsQfn~{E*g>#+q z+Lz9?OBHh(ba#qUwUe{Cnp&4{czykr1_yBXm@;>i6v{lh^c{X``_%=FQuxQ*Q6Tk9Jq`!p;TMyB%t6t;w_w^_YB*@9E32 zcyEurU~lL=gBSfW^4BCT1VMj38@JasZ3}iUE6PvL9&z(h92C10*9)92cDe1fy|=MO z8jWk;Sm*3>lA~O(!|rgxlARG#hlYmMR99DrM}~$s7pmFD4R^@G@=T=Y=in z0$+jDXFALAK^{=nsoT1G^=kXUfq~P#SFX^6F6HjjwTR&UXLJX;qvPZ8?Bn&T?AI@k z&d7L@AWanE#krP+fmSe8A`*$5;^X36{%~xH4K9j0+w*mAZ|~^lAl+pB>%#WXmmO{2 z?eS=-Hh_YS48il6XZIetRbsnJD%Yn>>c%Z&kB)@JqDF@;PiB{fc`d%F^wW1R2K7<;f@2hhXNbVVy>{q@ zcgQ1oYg8G=efY|4yrDhqKy#^Um(RWMlv?CM8@DsW?_PNDz)gN&-|3a}>KE+qdN^s9 g$+|W3>YY{!l_D$m&jU(t9kTt;6tYn1K1ovU-!8?>)c^nh delta 1010 zcmV4_dV@eh!2^1_i20~bj=G=K(7Ko6~G#3E=6Nh>r!BgGFYA8Si}LmyB| z3rlx)+5VDWHtEOg`|X=~@6DT45jM~QD}V-I8SpfIR*2vK1AqPn{sJxmL%;xjCJHJM z|2+x34!j0Dm%~^I-~wao7(F1Ppc==)i?37m9(^C}2s906Nd_r9=}sL2WYwqqx|Q zEWif5EizKEh<}ooFx<``MF9QN-D5UB6_vOyB0>b5!8xxc%E7iLzNY63E`y+E3B#lq zXwbHTgFH}+*;T11##}L%$pa;rq?C?&v~{0=I)zT1OjGG*x&T_3SxNq&8g1SYU}2H0 zEEY?#Oacng=AA`+D|KGwirLv&x5;FRkBp2g@I0T8Sbqfdzy}UD9!!cf4WOl^r7;)` zI$K*?t0WdcZ7$((C&e`5>h=24&d$yUQ&Uq98yXtQBus7<9Bu<8f!S=X92^{c;_-MI zjYi`M32sr&;T~4Hk`mC=)KoJ)J?#RoSk-DZOKB9wOYkSJ}nhcBztM8QW3k|e%0&sx_Wzi>vTF@u9a^QNAeqS zs(eFkFC-EPGCn^3+2wK#!}Yg_p*GaGU6V~fC=^<3Z*L#y?(UvrFx)y7uq;O;S_O1< zbq%+*wN1ogF;-Hn0zy(556NrB?RLKc0Y4zio&z5*~?*o@#Rzo-xa1DLCbPyt(Y21y=yRvn`!=#%#V-)C(a z2v{^>6e0J42aSsT*`B;m0R+qKFF+$<&})7a2zs3K4EX)fwvE66*D(9Vfak@Q9EX$$ zqgW;gs;P3B+owqK#9oS54c-F(9I3-0;--1~vPUM+bAbzF_jMZ`3e==5NNV6uvirJC gQ0O!{2>%5b0NDBqS1#yadH?_b07*qoM6N<$f;tnw6aWAK diff --git a/TMessagesProj/src/main/res/drawable-mdpi/playvideo_pressed.png b/TMessagesProj/src/main/res/drawable-mdpi/playvideo_pressed.png new file mode 100755 index 0000000000000000000000000000000000000000..5a361fe42d5046dfc08d46ec512ad365f77c5c34 GIT binary patch literal 1978 zcmbVNdsI?)9KWEJQf6B23}<#jvlsGGP?%`Ig){{fD2OsexCRMa2FdZ2;d=u|;IoQ2^Z~w*F|is`AcdG+Yl8uS9w~sqbhCC5EQhsvXYnOC z836nWjY>79mS*yFh?%DK$D zRRkN1Y0GS|Vwp^-TUMmw>M5xyV6uaU6PRI43p&gu3(9lwDbIO%_}+I-r-08zup&O? zg;8p0HYh@DFvzCG$LSbMCdlE?myJG53hlg6N%%|5@LOQV<^{>O~hN~21r z6{gE!6j@@^;rS?x9tPvFd$S^+AZ`sW%VxxrqBTK?ZiyMTVCfK_f`6gujd~tK2nnGi zv5+N}B#7BeCYL1;a^n*O+@wT-SdhpW=6D?zlHf2d8(-LBCR5B7LTmvSpOZK&VLT)h z4r9|TD5kaO;9R{?C3OK zdR}-7!8YSkSTC_5X7G7@dB)f1|8KuvVD3-cm?{luSy?3ylNiU zf_ID!Z;ff5(~)?`^`%1srNeVw^J9i0Co;A1X%5JPKgMqUEyLPkIqjg z{Phj+1K}+q>h!1ymkCYH4GV}?ETjCbJ#+VyzYn-f{PEhnEl^p6qnbyr`e}hMxw+VT zwuVR})&lfUXTyl)86xVv!?CTwUd5ix?ISY*cUix3G(wo%{8f#KGNseq-)#0~r4UWc zr1I^v*HfLrpO4FWpC`DfJa}_RonJYKt{T@m*brn;ZF)G6dGiPo6mZyh>S|bzAfrSv zg;dAV%-crtI~tO5jGRB?<8O0jm;9O4T(YWSjA|-Bi3S|H8=F3Hyu5bf+46!NNI;9l z-Mc+AcGs2OQ5n>kQq?ExJ}$e6N$G)petz`&`ueqI&isQn`g2MC#Ky4F&RTMx$8j*K)73=B}&5tZ^dQD?8IVlMY;-L-p<*lc!qbaZs3R4NruFB>1eqwdzsOPjWB zgG~m*;U$f?A9rOq z?%i|x@4Za=th%*fNGUS_Jv}{7Dk>^=yHA~}GMv;@Ah8AVc_ojRl}K`Pb0_ORVx66{ zeG;jxCBJj9L;f_v6O?v|3Q;yUw02wV7?v3YIBHh!EsNWpsy`m`z>z$0zD6UduC8_m z)OZ900y!YE10Sc{?vSjktdZgdcR8^^H4i-5%lLNP?c2BS@09iKU0rx12jFOq%DGXb zRV$jBnp(Zjs8^D*-p`wwzmRls-&I3fkIm`vcrL7L@$QCxdKes#zs@CIA3lv2%zMx@LOI&xjeGgM}*W}bwCrC;YmZHm*UG3UYpUmtgrU2(`k5`R#u#VT~_o|L; zjM)vCZZ#b|QP2k@0Ycab+KagEN)IAs$o%<}kxC>Z!{m9bA!W7x)L${!vUq>khJa<1E zJEO5}p}VCh$l$_i>(q+L@y;X#R{s|4VT`@i5|o-|m4e#>7hHNL>oGei zsHltDGB7ZPdb&7$uvcEBZ6kV|Fy$7EWYtZrw zhxTx+NMqW>s1tD1%p>!cyuf<4M=KqUX0?CZ@r7MT`pIIK1;0{XbS2nzwCqaY6)nMCgFE!ZyZNyIcJQ iA7{+9c_7BXBEisIQSf}x&SFyrAn$_i>(q+L@y;X#R{s|7?5|o-|m4e#>LtJ_%>oGei zI2$HvGcYiQdAc};RNPAX^Z&m+vo51BbML_iTNfl;Or1P|*_D~IaM$D;%nJ1#$|rb^ z*(dtIWWV}!ys<2hMLsX+je8RzxIuSAZ_&ZWp3Ve)itkB){{dw@o53CC+nAt9x ztEpUPXVA=NlB#F=Sgr7{)!kQJK%J47{U|eYk-*i&z#7?Cv;I2Nu&#J%J*nBJ@rvda z1AV4dGaGUkxI;Gb2F?1%eq?oHg;qfJ$3z>wzl}%OergD=sFU2KG=pDhp@5nhMZ z>mD5M^&Mn*u59L>t#XFRQ=yDS%gQ4uWgpv7>45v0F#sNeE1oFz|+;wWt~$(69Au*pcMcB diff --git a/TMessagesProj/src/main/res/drawable-mdpi/share_arrow.png b/TMessagesProj/src/main/res/drawable-mdpi/share_arrow.png new file mode 100755 index 0000000000000000000000000000000000000000..b42481c86348f89df3d93e078a8ed8ca0c413bb9 GIT binary patch literal 1083 zcmaJ=O-K|`9G`U~Kfo}&Xec~K50&lA&aV40gPW{7t}eBUtP5^<$k~~vJLt@tW}fY8 z2i+jhQ>UVc=;I)HsSE@$-U=G)A&9OkOhxo1!|q@`fajK@2i*RMkWD&*c|1P?Zop=!?7KMg(Tn zz9|z9OeIqC)R@dGbk|wXnHPwF2C)S4+PH2B`4GLUD-hehW@)es!DAtMFQ|09A4HG| zfsgUJWH-kFzn|ece11Q726)_@hjo+XcX1tp&o6iaVE?0uH&YoAl45k<7deIKEXIbw zvbkK2$$1%MjZ3AHVG{>ValX&BdxY8Lx`AA z!pKY^G+wG=e->e6Wsw0Q1AcIFP}LQbvrg^e<8dLTTUgR%7!yM@QD9V65%>;180CUo zG{6TquE!Vl^oU_E&j;P^DA&zLN?Z}i6B^WUiK`rPJ!QG}C};-pEJ9Pg43(&fG_aep zpq7m#5G|{>&sECD;x5Z&NieM4*uNTGx+2qKn+Ib{4hMq|bu#TH8SC82gI4k+p2Wm( zD*q|7xwF&dbZk}6ZohxsIQy=uV!E(YGus&ZQ0076xK-cw_SH;tpL5Y!*Zy#>ms&hs zS9$-AUR7K!Y<`*ETIHY3XTb06d%<6o^9vhY>#L!EGnj&&B-7dD&fPf-mO z{dWs(>y5KxGwG&tkA6^@@VB+4${S0L=gmWS!@+r{DyVC#?cnCil3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|81#=KlDb#X~hD#E>34K5C;EJ)Q4 zN-fSWElLJPT$(b-ssbzLqSVBa{GyQj{2W*)24v)yhtGq*H1G;}q!urM%pHF9+}aB(zt zF?Do>>2=9ZF3nBND}m`vLFl!_sTY(KatnYqyQCInmZhe+73JqDfW2&$iQ6q^IL(9V zO~LIJbDVnhfsWA!MJ!T8!-RmT2gHOYTObFX@Kf`Esl5o8tpCqoJix%fxY*OhF{I+w zk?9+~4?Bn)(`R%Iyy)oYo*5&uYKNtlc;?+d=~h;+mh66K^XTa& z88uR))0UT2sGT`bHHR%c!81jDRqfe0W>#jICf|vBKfN)XaPYSSpG_m@Lbv+~vN!(m zOc9;M{Y~q)u|fO&a0BHltJuRb*t(?7uvUv{Iyk-vKKLYbrFUf%GoPNADQm@IhT0gP zEUpJLoi=MYxG%16XEHHi%Lr)Lb&R2uE8wEUf4 zQM`w7-rw2-Z0cO||4lj5%r5lbqip?y+YbMC$;L77?@Nh)z+fRc%lgejK5OA$>y!Am z7#ZXj=34t@ySYD)>N@^0YSJ;48?yqVpZ-03LwdU@_oidLY5I*DxzAPRq|_=WR_~L~ oIxqg?UiAvw{hhbx{pT=XNZFVdQ&MBb@0M^FW@Bjb+ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/shareblack.png b/TMessagesProj/src/main/res/drawable-mdpi/shareblack.png deleted file mode 100644 index 815e157dc9ec23ceca571ca0beda9ab859f1346d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1532 zcmaJ>eM}Q)96oTH+W9r-B07ZgFe+%TAGU|RQBCO;sk61VxK*9X(H^uw?~c2}mTqx; zX%Mz0>a;HEaA*{DsEIh0iBSCL&_d(PWI`rohG`~W9)Kw@B9Apd!FCd zlXsgzzigslrT_qdiP~h$$gg1N8}}CfXWi~zewo2(%$$iz=bSi004gh$Mu1ueoDQGLN<=0QIW{$bi&R>FvVnuBnpKh#37Xmc@H6*M{>AJNU|}*3>d*$7(30` zDH04Z;%QVar-b-SUzOmXM`%fQs7-vsL@t~bNnmlPq+v&$?*CmKjuCH`GZL@!{ZC>x zC66XVMuMes84EwS^q5d68dWm{&QVMXMP(0n(O{!EinUQRs5T+sd>wAFlOaRwAVQ}@ zwIs{oq=nF8N{Hux?RG0F(_rd&v0NQ5)2Jj8ja(&@OOsS8WU*M0D2-3ThOroB$#oDU zH;lEu#$uylLt=2yd}NGZ?3)N{5<@w_!J<+7=((sySF7I>D4U8$_%e)Hse(=0GS6y|`IYp+ zM^oPTG`Ui9d1q8_#Qy%th5D%_>p$Qo7s6>>${p|d!AH}|+Gh6`$k)Bo_(NLrA1m7D zMd6I^@&25v?jUQp_w>b*z(Dg8_3q2U3Hri!Q==+_;LF2BaNndQMJt1zpUSU=2O`7n zd8K7jB(2Ytwu0ylZx+`J7LT2je8&%*^ezz7F+s7p(=dQ@vOsqQJ})1s6-;Z~I4~YD z`^{n8ofhxx*oX&3M{Xq-Cp9N{J0@SdKQ($RRiKCqLM6++dmB9Nwz&KY7oonj{rEEP z*lW@1Fi+q0HQ)G~KR;x^7B{+(OX8^2al7Q6>$bqS@n&v&N7rxLI}LMpp1+ZeP{)qV zWO8Ot*VY$q%=yxHw`FbBt#0$e!vc5>7{+dnB4snzA8mQyJbnB75(~@Ckm|SjWKF&e z#rJD2u8Z6CaJpcN?#N{)Q)NPpNce{?r&K8RqlyWU;3QXvVnp+wBlrHY<@b|-jvbv?2L8p zO8NDlzwXRSG}U-#{q^$p?saWXR!4s*-%<;sd(3UUZwI^TBAU9k-ZaHH(~Udw;=Ae0 xmP^9Nsggj|XIAqs^>BI5^glOgd{5fLCjfiCtEn-}sMd$>W35Jyok&bA{0GpoQpNxP diff --git a/TMessagesProj/src/main/res/drawable-mdpi/shareblack_pressed.png b/TMessagesProj/src/main/res/drawable-mdpi/shareblack_pressed.png deleted file mode 100644 index 4bb5e13ed0d09b7e5cec25de58f4930218fb0db6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1526 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%qp275hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|81#=KlDb#X~hD#E>34K5C;EJ)Q4 zN-fSWElLJPT$(b-ssbzLqSVBa{GyQj{2W*)24v)y-fM)1rW~NvfJG&ZLI6E7go47g}8oHV~nwT27IXaqI7+5+P znY+2b^t$9Hm*%GCmB93-AoQBx)C)=sxdlL*T~doO%TiO^it=+6z@E0s#Nrks10!b( zXLBQ*=0WwQ;C2gcz4}1M=!2pbDXL*Y!1M!R!V@l#15f&?dBF5u1Wee56;?$I3``lG zE{-7;w~|s6|ri~KJr3bVX z?)B)JY_N2Y>1b}4(cQS~fwaJS=10>{H2Fl-$oVjzmRyj==KS`+D~5nMzZnhHncp&~ zU*QwW;oH!ZrXR%|xFS}APoQC0Srub)M92Y|gf>;%3ql5tZ&{3QENJDq`QZKi{jr~) zo!zV!D1E}uYyz{0r^dq#)$ANX!otk_vQ{ETPM-A4@o0JzlF~HoZ3yGGZQH`8>&1G7 zhJ~q_sh>0qw0^pJ#fla4EDDv*pFQi_GDC(@i*xgbr+@$d|Nni$;|cQibu~Z*5hjI? zj#yVrsclzvTE)!A$G2|ZzI|6_8mC7+3Owd^c@4YI>@yoTZhY7B>9Ky4<%5IG?BCzM zef#^P#!pr+=0FD>&ra7DFIi6f-=BJVn(f1f4|ngc|NoD_|Jrk(3uz)(4@}pOx0^m~ z+PQC^Ki~E|P$W=smMQn}%fQ2*c9*}u$H~bVS@rNx>v@-~N|vGnwHeZVQ=2q?Y_I$K z>+S)C`=6hmpZ{NFi}d@$Q7(B7Yfd}F7f5!LAKaw4;_I*ezG=;Gta@W)o29zbU%p_N z5c~dOw9D}obCnC0)+pHZt@UKf+Mdre^}NZJKh{_J?(c{?x?n{Fcdk>gbWQWDzl}Hg zI^{)Izq%eUU-+t_W8Si8N9hSZB1^t)eo}IFLZgDf>`6B)StHA2XI;G)e9PJ`@31EG tMx8C^JJwe7y<)awn|kU<*?C4L9tOLeON;IX`}KoLVoz5;mvv4FO#q=>J2(IU diff --git a/TMessagesProj/src/main/res/drawable-mdpi/shareblue.png b/TMessagesProj/src/main/res/drawable-mdpi/shareblue.png deleted file mode 100644 index 12a1c6ca58de9638a4053d2004088f960ad6961d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1559 zcmaJ>eM}Q)96nmUhG39Iqd4{TM5hQnTA|RBu3uNALZK9#HEQg&J=zm{*If^&%n3Nc z$7G@#Bub_!4i!JLYzu01Q-Qz+)+&FXQ?dmueq~M>i`z6H?23TLEJ2W~DPSYRToBqfE1zPkbg(jtX7 zCTSD24i#Y|(@Pj4wxLl`94-wYZt2{DxH% z2(1>?P)-)7%!CG$!W@TyBrWI~m0FadQYn)Y)e50douo)i5~V2=;*ucn`(w6&h9F*z22V}NNDm=|JFfQP{* zam&vL7z^thDu1y&QpWemI-}Qz{?7YmMWkmi=SDzRhx`oh?C8?SZ6UrJ_tCNi)rDmS ze)XaG>3ra9C^yWhrg_5z7|ZyC?<%_;9NkwBt*|}TK*KpZn##Rakg@foQF8H+;Py33 zN7TT+-WSc{yJd~uy`F$;y+*6my~tSA-(KqtxG0ZnlYa=Hv$MJa+}Mfha+!Pf-mruG z*6!}@ecg+U!K+*MFI||4gl+!fS;2#}qvHLC&w!Bhs7BHyPAHJ+@IKHXwz<~pI zw!PvpZ6UUd%2>!YQ1y$I&Kh8!UnSuBQb=+)sP#{!&^7*Y4B`NXte8Q zY;cfgHyBg!J*9H*SZ2#M=+}X#O$@uMtnuZMgZti!iz&)kTHK}|5p4Mgo5u_43IdmB z+2yg|{G*zcmc_b$iF)>@x$<4JtB;i%!uz{?itQPrmG5tNgWW-$*)>m(@B`;V8@0zH TVa17I|F2r3&ceP@8u$DIKZ`|_ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/shareblue_pressed.png b/TMessagesProj/src/main/res/drawable-mdpi/shareblue_pressed.png deleted file mode 100644 index 12a52ff432fb97978888002b771dccfd38482d58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1568 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%qp275hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|81#=KlDb#X~hD#E>34K5C;EJ)Q4 zN-fSWElLJPT$(b-ssbzLqSVBa{GyQj{2W*)24v)y-fM)1rW~NvfJG&ZLI6Ir0o47g}8oHV~nwT27IXaqI7+5+P znY+2b^t$9Hm*%GCmB93-AoN<`)C)=sxdlL*T~doO%TiO^it=+6z@E0s#O)SSoaRCG zrr>sq8BV?WK*#8Vq82HtVM4(417gAxE|3FH`l)%q^j-u^*jEc#vKbhdCV9FzhE&{2 z@_ZkA(m^GGHAz)r8go*h!ZY@yvK4py75;G?S>O0WP~blEqx(lBPC2zmF)ElbC-JUO z-oU7*F^wh3cEwZkh94pV^$OP+6)e3K%-E9B*e)@gSh&k!4eOET4L>9V{wp43REYo0 zv{8aNmElQ2u);L=mA+ERcQBa_eBzS;nvnZ(Oq#xVCa1Wn{W=#ZNzhr<-dA^O*t_k0?g96>}5Vq_<2^ zl=ji*dD~TNzEv$y`h=g^1ZI(sQwm%d-Q3*Nv~!Ohm{f3FAxtbyO^8d|RW0MDpXdT5 z-K&}Pn?MKk|h zt9;!b6Sd|2owwFMw5%eOmRKXklBMWC zZH9E;n@a)`PyXxOsoPZj?b_q&e}8}fpYM^YVEz8E&_iCJyv~H1+gJ7Q07dE#Zc<$F z^;du2R>c$RE}yt+sG&Y*>0)Mwvc2y4g0jueIHH&*$R6KldeY(TH(!T8bK9oXx8M3G z9llyZL^QkchcvIwe>T(K%nR!ddMm{FJ$+HZYx-H$P*ym?L#KJ!mHH5mx2Frf3V!^` z>zMgSKp?)YY`uwx#u|sJ_0GEW{+aJ3QV!@T+~YrT%0Y+wZC2vzdHb0j9e1die&d~` bLjxm2tHshoAJcusKxMY4tDnm{r-UW|hNM7l diff --git a/TMessagesProj/src/main/res/drawable-mdpi/stickercounter.9.png b/TMessagesProj/src/main/res/drawable-mdpi/stickercounter.9.png new file mode 100755 index 0000000000000000000000000000000000000000..217e9f16c18091ebe14a54a3dda2ea37d02af2ae GIT binary patch literal 1246 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%1|*NXY)uAnN?apKg7ec#$`gxH85~pclTsBt za}(23gHjVyDhp4h+AuIMD`kd6ltlRYSS9D@>Lr5I=vCwv0Ch7k*w|MTBqnF4mMA2p zrf25aD!t#mUr8Y|#a1cY)Yrhbz&SM|)1#^=HMq(zB)KX(*)m1R-cG@$!U||WZfZ%Q zLPc&)Ua?h$trFN=DVPg@)As;uP=V3xw&xF#U(+h2=`(&xHzP;AXPso zwK%`DC>a=WY04n03ap%qQWHz^i$e1Ab6}wukda@KU!0L&px_*Arl1j?nU|7ZUaSdL z@9S&jnO9trn3tUD>0+w{G(j&jGsVi%$61@lT>o-54zE?6|Nh?|JUG9~3|MHR_*ls1U{ZDpM< zJXM#0(O032%`jmai{S+}7NzJUS7mRViMkV)PgL#Nko44^`7ML}8TADs-x}Sf)wuAj zYd6{S#BP)7@ywKyoGISdE}fY4^~AI{&CdeZw4VR4E%06->L)o>SF=4dbYu6#5?|8$Z}(IDy2$}s z#~ZhV&6yabyrdxnPF~5yk54|Ihz_=U{Ww z#)^5%=Me-^5o;9VcwFp!bIb96+tZ`1c&I{=Hq-(;P)4=@5mI40AY;1R3F1IjyLUYT zbp$bo(h_Z`P1-CdP^V=FLuYjpvk9WEK5NQK3Lvr_bZSPB`Z9QzA~iKgwfZEFWQIXf zYwWQ=OHWfm=}9R8m8xG))@21OpaUe6S-s1!g=~-F(GTSIalmSa5l<=w1T@bLmyOXeR6N3+xpAudMqvG6KLB@r?O zhRI|ybY>k5txkpw1Oko*$GI`WZFd_;&bkfTRZtLttyr3gG-!~HqTCMCC`jQu@=tOd)Im z89^%nVOODw%}I!$orESCZsEx_t(u|2j9op0mn0!(*hn@M5EFwGR-iRa6+GVB29^`q zXl;OJ*@!RX7yTig;~K)DNZ9Wc3tSN@X&o4-z*YZnxsqJR3c86Si@?%$12t+vot!zc zpq0!e94)Dr=c=W1@s#8;I2p!i>|c#8Y+?5})1qzhqG)_zV7FV?)^v_NiLb=%m>5cA z-}D~~E$;KokE~cadSvzF;i0SkO-t#a>(44KE%QC^Ez>@o{qf?|)b}ShV#K2Nr-`wF zMxwu_b7BNE-Y6S>{c-rryWE`a`&XhLQvM6~>T_!c9!`%3Qhh(04kXFe%8L)s%gQxs zZ(r|*t?K#FL9dj!dA&FHme{_3Z2R=JbFM9i?hh>aHF4~Gri%I8@onVttw&SicV6YH zU0m0Z11nFQ+~eAq4t(8_TA;7m`*`2+xeLq6iFE&l>d6a>Eazs&B2D7uhMj%C0p?h6 AQ~&?~ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/system_black.9.png b/TMessagesProj/src/main/res/drawable-mdpi/system_black.9.png deleted file mode 100644 index fcb08a14ccf62190fb7f0e2e3381ec897ad9ceaf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 156 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%1|*NXY)uAI$(}BbAr-fh6AtkIo7}+3q^59< z`4NLc-x4OihFQm3-Z0c^N%r-9ov6#XXrij)iD@pE1o(};|Mf>1Wu081x_DZT*aYSr z&e$xssH-2@PE2cv5^Zyk@lZX?yztq=En)vI3m7vnO!EJ+pMUr3r9kT#JYD@<);T3K F0RX@)Ht7HW diff --git a/TMessagesProj/src/main/res/drawable-mdpi/system_blue.9.png b/TMessagesProj/src/main/res/drawable-mdpi/system_blue.9.png deleted file mode 100755 index c1ce3b4f6da3293aae2f89e95887d730687259dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1052 zcmaJ=&rj1(94{de2btnQ4aCHzyFfzQbwA2hHny>Dut<@NB`j(TUHf1Sw6C@gH%N?N z(13{vF_9RJ;=y=Q0|z`Pi5D&&)I_;x`~&pFK}j@Td>tEja5nAh`@VcWpYPANG(6Pr zZf`9=5Fv<0 zO3UR@UK$h>s57#IVamFR*#r@Zl}%Zh1c)qv3C)O7JFi|-q^3rx(V*m&%p@pk1G5$w znH|b0vy)0#rDDBgq%2?o9Uz%3>r;j;l%rHdSHOGcn5D=H1WiV%y`b{aFqwoFAcKsb zR=gZX@;t)@f;`W4kv=cyW4-w0X)YiHdBN9BRv!v`v(#}RE2gWyuob0>2$=%QmP#e2 z+ORz}1rgYarI|>B2I(lu1vrhO6pnN+1>M}2HSB7c zaKYHJY_c5VbyBJUCF%cAUEfFBC<_ka{im>B8_&I(?Vgp6S$*-$`6j8a&E(KJ=)=KY~?G7(62hy5Iv z3WSo0U|%ZTmk9eqA)Xg&ToEeMIxtX;s~&KJb-B(c=qC0o0!zCL)U*Y4vXZi()sMwj zSFg%d>&N1+%Vlvetkc-P8eKcW)8lOS#}*s=gAWWm?G_&Ei#zMP_)08i#6+(AxzPDw z^Jc@zukYNy-^U|kTb&IX3$8_aE`NOSQ(H$kCvufJ-52#{uc{R=6Y9_?+!MtpH0(k8|wD$M8UQ8p>WF0Wa(cS&-bg;dFy_9 y|k1|%Oc%$NbBBuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFe_z-M3hAM`dB6B=jtVb)aX^@765fKFxc2v6eK2Rr0UTq__OB&@Hb09I0xZL0)vRD^GUf^&XRs)DJWv2L<~p`n7AnVzAE zshOFfj)IYap^?4;5Si&3npl~dSs9rtK!Fm_wxX0Ys~{IQs9ivwtx`rwNr9EVetCJh zUb(Seeo?xx^|#0uTKVr7^KE~&-IMVSR9nfZANAQKal@=Hr> zm4GgVcpgi&u1T;Y}Gc(1?+|t6;#o5Bd&BD;a(9qS?!obkN!q~;gz|qmz z)zr`trq?AuximL5uLPzy1)Uifm4^+e=*s-kd&%e zBf)IztotEu)07ZFOAD=2J*NWBFYZ~j()QQnqdZ)-KCQcWTF$KqnB91RGxkdK`D_o% zH|9)f3tRR{?nnvAIPCCZD%V;`4%^^`qRb0bUtbE82^EvuygA^w>aXqlKWdcxzRtGx zM*kU`6K7sZUE97v_QQ!x?&v!^ie}8s*7|%u(5kfHkw-3n*UD_k$%{*Z4hLGTTy)c5 ztwUOv>*hwG)7QN6ZuZSQQQrHE)4SwCRFSjX>D=__?1`6pHRCwCV zm|IH%Q51#8V}=(RyNG7mdj&y-K@in1D*7iyKgl5I20d8OYgm|)s9TdN^n{kHk9Z1f>H)4&FBpkmEcv>3`Na)g3ronhSF>*XeF?0aba`A z^jfOm4KyrD2%BdjuN5UjKOr*oSJYo2^7BcCdLc5@6S9YKpVXm(Zu7DQ-HW=IK>C8m zmqrNEdC~7>)esn}>J8O+xC=^6ELU4^h^jsrSfEuJqQOd9-|F;?%5Otp-9$stoEb znt9@TcE|ntK{a&_vOFfKV;Xq{cl?l!KF4UPGg*elruc|!sL?+2mLT0u?4A}iV--$I oJ%=P)RCwCV zm}^S{K@^5}C$rR|vWu9A)gQ1AK@!=2?*O!KnaJ8>4)Wmoq;^TLA& zi$0v4Idf4J|H*<3SfEc0^oTBKyZI4a*C)QK9t8Na1+WKlATi_l0jPsV`V3WwiFDao)S*wsreMVIFtwKdA zpQz+er46&tt|C4=hR__XO`=mU`azbYL??~cmSO=G%qX(TXaSWa8AcsbmL#~4E|Jjx zEE`GWGvq=)5(#yg+s$}PY4bkR0%Hk!Q3so~KBMDHU4rVoo7b`@35059p;y{`i%J8p zt7R7Az34%p(7oM`v1WIWi{n+HIt`~i^(E-XInBY%v`v1G&P!ShGQZ#g)fvt@mo=$U z;|OI2bb9UB-Do&v9h`v0up1yaHDtVAHl)BI$cH5J46e-!y5H-VJROtPe2RR6I~opw zu4C-Pw&~cEa&gP?LQ8^UI|(W@vHv9!bSI$ER)!DQFS`NjM(9s~0RZd_e;jNX1)Tr@ N002ovPDHLkV1jXZ^Sl56 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/video_actions.png b/TMessagesProj/src/main/res/drawable-mdpi/video_actions.png new file mode 100755 index 0000000000000000000000000000000000000000..84aee2f587bbf620cf5631d9e4a135374aff2a69 GIT binary patch literal 1019 zcmaJ=O=#0#7!DMsOeah{=*C#cR3_N`w&@yIN87Y6YRc$3R`9Yk`PRlQ`C{_TW;>{; zAWrn67d@zW(UZ=D2u=|Xf)m8sm_HyM9l}l`BB)=ww)0>ONxmPR=Xu}neV^~*NbXQa zdsjO_5FN^}oX2Au{rq-i9m@u{p0KNODU8k169&emh$Rf4J@ zsyI@C2znLhkm*s8>>oF616I9#HN2`yitQoI)`21?D6Bx6rXi(b0?)A#j%Bk+j?0KC zIl~WRxL8aOVv(dEG`KRqm^6ZhP?(5AnR zuRU50ReHy|H?7WJ=iacp&o9is8ao_+_I*p_RL^5eaXvoHAMgEn`rD7y&Iw}2fy+wI RuXm~7Ix3l*d_OgD_78jrMo$0$ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-v21/bar_selector.xml b/TMessagesProj/src/main/res/drawable-v21/bar_selector.xml deleted file mode 100644 index 7c7941ef9..000000000 --- a/TMessagesProj/src/main/res/drawable-v21/bar_selector.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - diff --git a/TMessagesProj/src/main/res/drawable-v21/bar_selector_audio.xml b/TMessagesProj/src/main/res/drawable-v21/bar_selector_audio.xml deleted file mode 100644 index fc4dddc7f..000000000 --- a/TMessagesProj/src/main/res/drawable-v21/bar_selector_audio.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable-v21/bar_selector_blue.xml b/TMessagesProj/src/main/res/drawable-v21/bar_selector_blue.xml deleted file mode 100644 index 34512df87..000000000 --- a/TMessagesProj/src/main/res/drawable-v21/bar_selector_blue.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable-v21/bar_selector_cyan.xml b/TMessagesProj/src/main/res/drawable-v21/bar_selector_cyan.xml deleted file mode 100644 index 64d8697d3..000000000 --- a/TMessagesProj/src/main/res/drawable-v21/bar_selector_cyan.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable-v21/bar_selector_green.xml b/TMessagesProj/src/main/res/drawable-v21/bar_selector_green.xml deleted file mode 100644 index 49c5a35ea..000000000 --- a/TMessagesProj/src/main/res/drawable-v21/bar_selector_green.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable-v21/bar_selector_grey.xml b/TMessagesProj/src/main/res/drawable-v21/bar_selector_grey.xml deleted file mode 100644 index fc4dddc7f..000000000 --- a/TMessagesProj/src/main/res/drawable-v21/bar_selector_grey.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable-v21/bar_selector_mode.xml b/TMessagesProj/src/main/res/drawable-v21/bar_selector_mode.xml deleted file mode 100644 index 386d01cee..000000000 --- a/TMessagesProj/src/main/res/drawable-v21/bar_selector_mode.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - diff --git a/TMessagesProj/src/main/res/drawable-v21/bar_selector_orange.xml b/TMessagesProj/src/main/res/drawable-v21/bar_selector_orange.xml deleted file mode 100644 index 2d5c96c84..000000000 --- a/TMessagesProj/src/main/res/drawable-v21/bar_selector_orange.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable-v21/bar_selector_picker.xml b/TMessagesProj/src/main/res/drawable-v21/bar_selector_picker.xml deleted file mode 100644 index 8c28f1d3f..000000000 --- a/TMessagesProj/src/main/res/drawable-v21/bar_selector_picker.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - diff --git a/TMessagesProj/src/main/res/drawable-v21/bar_selector_pink.xml b/TMessagesProj/src/main/res/drawable-v21/bar_selector_pink.xml deleted file mode 100644 index 72f764054..000000000 --- a/TMessagesProj/src/main/res/drawable-v21/bar_selector_pink.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable-v21/bar_selector_red.xml b/TMessagesProj/src/main/res/drawable-v21/bar_selector_red.xml deleted file mode 100644 index 4badd6870..000000000 --- a/TMessagesProj/src/main/res/drawable-v21/bar_selector_red.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable-v21/bar_selector_violet.xml b/TMessagesProj/src/main/res/drawable-v21/bar_selector_violet.xml deleted file mode 100644 index ee31ab7fe..000000000 --- a/TMessagesProj/src/main/res/drawable-v21/bar_selector_violet.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable-v21/bar_selector_yellow.xml b/TMessagesProj/src/main/res/drawable-v21/bar_selector_yellow.xml deleted file mode 100644 index f0ee5a20f..000000000 --- a/TMessagesProj/src/main/res/drawable-v21/bar_selector_yellow.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable-v21/circle_selector.xml b/TMessagesProj/src/main/res/drawable-v21/circle_selector.xml deleted file mode 100644 index 25423fabb..000000000 --- a/TMessagesProj/src/main/res/drawable-v21/circle_selector.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/addcontact_blue.png b/TMessagesProj/src/main/res/drawable-xhdpi/addcontact_blue.png deleted file mode 100755 index 3ba0c9c352faf958ed7aa95c9d9041271147d84f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 982 zcmaJ=J#5oJ7_|f{s8ERk5LA^oxeJKKj-AAfPc>CyCvBjvN*bvV5)zJmZA@#Qd%j|~ z0}@CKFd!jyK|&04frX_oF@Tt0U_fH(0&H|DBa{KoX_7J!EZg^^_ulv2_r1G2Gd(fT zKiJQ4+(2d0sIqY=`40E7KN zrfc@vqOCgo_ysT)Lnh!MYJu2W@OOD%H|YB8Ub=zlEpN8m6Vi)IR(n2p#AVH8gb@f)hM@Pv6aR*DGi_~Mo}b083B_8 zQBqYk(U9d7L!`o0pIULs4~IJn1`2KB2GqqqNEEFGUZEP#GTl3Z7j$L)uw5orFfq0Q zQ4-S0kvc%r{6Ez5y6BKr(SE-F6b@^v0TQby#4E&Rjhi1%LIqGK$fB6kFkb3Zai)nW z4x2at`m6%Z&bhvWqwrh{Zb?RLZKOda)p9 ziiVuYsko@Cm!En9Srk9_8K!fbtW@ccHr5*I5*p%!m7=%d~BTgLY@4>!e2 z_Z}SoFm;snZJfM+C4c?v(>pH?jeJAH&)&FOo4+>-@XPYM$tRCL?gpRUUOqCB8hUx` b1b6ThcQxwI|M<1@Gr4J%(zNlscyf1Vy}h5y68uJqjN5rE5D6){vL?k>Bt4|9rQqD`(TGqbZK# z(v>B%#^z(mI5@$+B>nk5n~uJ8ek zmNf_ayq#e9*bf<-<4SXJXggg*K@+vTK!@L7zJkDWb-1Qjq7@pb<1K9yw7R`gcecAu z(S>uTK`GXlfRCsRVt*ruv{;9IU5%}iV*!Fbgm!hf>r}(40s|8S6h4=AL`edw%1e1g zRizmqi;^se>{YW;UQ<*}o&|#kGHb+bX*F|kV2kZ^*r7Dk1fkdK@x2_6Nn4PL#bTl% z%UOoVMq2^3<7^ORh6*N%9O8x4!vRPX?Izx&I%J;ihTw-I*&rIEi6u;k?NE?-F$rl1 zw5k~%FpJd=ra0>05E!c} zIJxEpF78FA`gqIIDnUf;z(EyLhfIO@JXb3ivkS^%Ij<;%q9m2`1=(OjmSja#MA0Y@ zxh8fteH73k*WKePW4TEy_#v}wBH~>|?jpfH=!dL%<9(6G>J7N=cwcg3xdL-WNDBK` zp@&DTdy?g-ZP{kj_$XlAPFP#NdEowHSK?g7oUg~9nzt`azdi$h-hFpr>czu*hu$ww z(uqfh?_4abe|dc4`GJ{lDDwo^J70f)1jm0A+!NQw{MbrHkB$&uRGV1 On^q~Wm`@ijU;6|1z%qFN diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/admin_star2.png b/TMessagesProj/src/main/res/drawable-xhdpi/admin_star2.png new file mode 100755 index 0000000000000000000000000000000000000000..6afc194ecc93f0d3300ae7691702bbb69cb273cc GIT binary patch literal 1394 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%u1Od5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|81#=KlDb#X~hD#E>34K5C;EJ)Q4 zN-fSWElLJPT$(b-ssbzLqSVBa{GyQj{2W*)24v)yG;lOA zHg`0I>2=9ZF3nBND}m`vLFl!>sTY(KatnYqyQCInmZhe+73JqDfW2&$iQ6rvIL(9V zO~LIJGn{($fsWA!MJ!T8!-RmT2gHOYTObFX@Kf`Esl5o8tT+9Y)?i>@eCFxm7*cWT z&Ghr$OpYSQjTbrF8!TL)aH@$fFn}}2asQcU1zDS`x+|hDIBIO!UGlj%GJ9!YdbQ_&pT&#|NGBxXV0uto_uo3)S@ZVr&j!V z%d+TV21ip`l10xqhC`(@RPH#Is|fwvvYY910QX#j%-6aP?uRFenFJ^9u1*kpWqN4eyVV=#4c;7oto{%tm$+@GgT)mgu-{dW4wa%NI5}>x><7)O3 zFIbHEGP$?^)0S}3p175Br@-N!6S`qvEt(Te-hE!jB=hKy;3KZ1{4S-Peh#x+_(WW9OAb80S)-MY440j7#@pg1yT%#VB z!Boq3`u(D+JWF1*plf)mdK II;Vst0B-R4MgRZ+ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/attach_video.png b/TMessagesProj/src/main/res/drawable-xhdpi/attach_video.png index 5dfd67b6c7dca3dc573a025e106725a52c403ebc..f3182c9da2ae32de81ce1d7b0ca3fe68038a4fc9 100755 GIT binary patch delta 2196 zcmZ{lc{tRI8pnS#G91QI-7G^HdkZpSW*8dVm@y_x3kKO4``EW8j4jncWE-T$mShRj z5aLEUgRI3NBO+lWOX=ve$kB73``qXL(fjB7d_V8^`~LNPAXO{XNCZ3U=%IB@bPz-W z9*adF2xt=m8bidRF(?Eci7_SWDZyiDp;lJby@2&qI7ODL! zHn$wC{a*vKUx}395s~MpKKkCjG(Zr3#pY@Wm@;k%4e|g$h-G1BVjIhQe=G2+Jwc|| z_hIwQ_z+6;AUW(0%TUo&=#Z$4i{Z;ZE0H9zZ$5r-*K9-EVx{P5eo8XzUu`ayY`%4X z>QTqaGyCs5lF3!}_gCrDYrC6<7D5*9P|155=ZVTq$aDg=%KjzQ4=My1rH63OYPBPii^SU@7glw!=Rru$E? z{1dbjL#SxOD76!*f6ALyqWsm4jepfm?2fTYpGFrm!LM7;8+n8lCG{q$PL_Hr?v zI4uctk0;^=LRKoEek-oN*0ANyM$|Cc&KPiHog~osD^o(DHkv5GufjYbw23aAlt39@ ziFpj{KSfK?&I!s3U58r4y=RX=?>J3cY`>r`TYt;q%;mFIEJ(JH z)`pMcy3$;5=GpjJD4dbyW|YX)>D^6#%E$A|J7kPseK(9e9B~1oT=qH67CZ@Q1?Z>c z%yMoTdrso)1xURV*3S^2YVU|k>{*%fp?qhG#E+tTYuD#$yD8@Ke-KoqrIBsYiPn=bVj`~~|K z`I+hOdTRpC9zzs-R?gnkPLsi|aY`PgZIY-v-lTPj=c+aPZ0#G6qfSYVFM zKTJ8~jvzk-al897LN+r-ogEv1l*|Px`KbsFMVS!OE@{e4o4 z$bYNl?tWEsk>uX)ta=X+i1j4&0MZctKr0dNCJkvV3>#vBaz25QOMoXgy0li-%E64# zDat85S>YOA=ZZ4*kpRybz+CpepI?+mqBs`~dp7%8yWb@-D1G7tryyLV@$~i9YT(Mx zyNc3~zw^T~(^9mco5~9?G3xSh3k7$Z|G7WT$ZN>u{J^V*2wxPVbN3;OQk9b!V`Xg!>k|Mh4!#nV7VA;5#H|PA z*=59p+UDhw#WvH9SxG8-z}p;_hk&E#wK}lJt)0GpMi}c*m!J8jiWdu;lTtbTjss6NOdgs2a^^kJWJ76MoVGKejh6EDnMx?vmEd*DWAUDWQB3=3NH#mN;niJ zb{Sa>)VX6-)q-SRo2qFFjQFBzs22T$0h)o*ysQU^o>A%C;itjCye=Q&D*nv#0r%b2 ztdm>V=5N*Z$&*D35lT&M{jqVXtc|uEBr}vfs}x=`7gP`s#EVbxmr6HK`GEA+sBkJV zKl6Jx4t8)uolsDFskrP$)yom_Xg_H21O3E0W=#L+QgaomrCZ7TH=I^*3fb>kgf8}QCI1c>GIwQ^OAmd z`g`-X#&`vayp~d_vD9|At^~d!pUfxlZBwrq-RU*7on{+7O@YSu2s_4TAA(hW?nh{l zaCN=B(%#tvAG^71uRg<0hRwRfj6{6UfsTW(&zo;s@uRC*M^ZwOL^Qw=#TL+ZvAWoN56L!E24h8LUON1vxluwFIA z2+?^~cuNzY4b&R?=z zX|6T+v@Dyeb52u2{X-9J;r~0a>}O4iJYj*Mz;=7O!Yy8`53n~D1Z%VVrtZoA0Q=I> A0{{R3 delta 2204 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 OcDcKdoNMp_$^QYY2kYbj diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/bot_file.png b/TMessagesProj/src/main/res/drawable-xhdpi/bot_file.png new file mode 100755 index 0000000000000000000000000000000000000000..2191a418d68879582ea53a3f2dd7155cbadf6d23 GIT binary patch literal 1319 zcmeAS@N?(olHy`uVBq!ia0vp^T0m^d!3HGFohwCwlw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6H#24v4 zq}24xJX@vryZ0+8WTx0Eg`4^s_!c;)W@LI)6{QAO`Gq7`WhYyvDB0U7*i={n4aiL` zNmQuF&B-gas<2f8n`;GRgM{^!6u?SKvTcwn`GuBNuFf>#!Gt)CP zF*P$Y)KM@pFf`IP03tJ8LlY}gGbUo-h6WQb!1OB;3-k^33_xCjDfIQluQWFouDZA+C>7yetOgf{R2HP_ z2c;J0mlh=hBQ8xDWL1Hcb5UwyNq$jCetr%t6azByOY(~|@(UE4gUu8)!ZY(y^2>`g z!Rmc|tvvIJOA_;vQ$1a5m4GJbWoD*WnVUHoJG&Sv@Ox9gDIQbbE7-xIBIEGZ* zdUNx>c5|T2@sFG3|FEB$f3Wqgkmk$ImPu3GKIwl@f1_WZI8miFCP)0;j%htopOnq( zwi@odcI5e$bo1BU^R_;(Jom-+>$@xaa`#%5&RZ*XI&E{?YGK_)a#zx%_J6x*@N32M zvxV<6OInUGJKZvE_!f}8_X6LRo=IvyOgqY6AB=jz-TH<$Z^X>w@z;|r@(K&oH&Voq1in$UT>r~E(rG&=pRis{&e)nP1`^ zyL}(%M7~HAcHq}BX||Jfi;6zx^mhKr;uVh+HaSJ_tC|@W$n|!?CguZ1x|+AnY-eC* Yxb-iX{i@V0W>C@P>FVdQ&MBb@0P1nzrT_o{ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/bot_lines.png b/TMessagesProj/src/main/res/drawable-xhdpi/bot_lines.png new file mode 100755 index 0000000000000000000000000000000000000000..11980a89408c8dfc8790c2e71c8be420d6a6cdb4 GIT binary patch literal 1154 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;=WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2cW~I!Kh>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v)=f4rG*mD%(=#+N zH8V5RQ7|$vG}1Q!A~Rh>6Dw0QDv55FG|-pw6wGYnPFt43sj+7T$xvrSfQI&tPC^3CAB!YD6^m>Ge1uOWMX1cerbuV z640d(FXR@$jm;~D1`{yA^eYkz^bPe4Kwg3=^!3HBG&dKny0|1L72#g21{a4^7NqJ2 zr55Lx79|5CE=?I^Re_arQEFmIeo;t%ehw@Y12XbU@{2R_3lyA#%@j1kGxJjN%ZoL^ z>V18!JoAc667!N%JzZ>-fF|f=W~NvfIXjv=yEz%Sxfr?{8oHWVS{k}qnmd{}Ik}lS zTROSG^t$9Hm*%GCmB93-AoLpI)C)=qxdlL*T~doO%TiO^it=+6z+Se>#OW4CSDfZS z^`_u-i=!J(z4}1M=z}5_DWYLQz|;d`!jmnK15fy=dBD_O1WeYBIvXwmv&1(~7srr_ zTSrjWjx^^RKO-s{2E}}6f!tBb=DGgaO z68jwfv@43As zHAjE5?u#OKS(1X4guY2COgl1dgS?Wa70VGDmnTzncU&=4P@SypaK_)|+H9^PXMS+C z%U>|qtfa&}ODO0thsrvp?xXGwZ#;WHiKZmjO<Ce4(Z3 za1%vQE%K0*BT5pt%aj4WI2T68Jt4nIIlX88qiS|0@+k2U=phO%$0T6Ls353 zNM~?HxhQJL45%I^P%v%6rl_92f~{(k5Q8k7Fsul@`QjA~3_U`R@CvKgF_<%kW*wNC z9ZqYrlUi7(`+7l7K_mhu#40G5QQyC=zV#tAj4}|<0 z%W*&u0$dj_2;5l^WVs;2k|FrHE|C|+U^l3IG_mIB<6=@8tk@!_2%W>&78xd=&j<3M z0CFZ6E*uVf8o{8SApGu(h1G)JayzOD5_C1ku(5$G;3=wEG>s!P@pL-`)83J_+)A2A z!kB_;GhBf6LaG84<^NFA+(ElI33vVdr?8uzu_2R$E}C{UQn>LB&y+339H?UCq!F5` zW-*aN7`ZuQgIG!cog;>&qr7{jj8_y(fKP0XFK_J+Rs z$8(DtYi%dni>=SVsr4NAy|?tX|65~e^UeCk;*Hf(eFIA=FZr*n(b2o!^OfVn(v#@e F{2v|f zo28+ltEq*7lbMC9fs?bjg}H^Lk&%)@MQ(wwua!%Fa%paAUWuoRtrAc~FC{a@3aZx) zm)^;Xm<(VRIO9^Jq)=QEl$vIhg4+TYTzV(#F+0`&ou?zfz`(@e>EaktaqG=A`wZbg zndAEDmmFnTauqM^@_6weNYtyfY4uWPZqufwdWFKte#^Q&76xq86*}?glE=}tZ?&ve zb|fs%+Z9vDG405L1ldOlPyhURAYLJ}^YOi}6ZrlfY`=ec_xFA8f4{5yt|xi_yXxn#{3hJfmoP@U}9R9rLyV%PcO=;4CQj4gwXpivIm^FJ-5@|^E&Hx|2ibcE($})D?EYLJ>Q$g-u>8c` z8(Yj88y_!`)!mo3rzMi5-c`chb=5)L#nD~gWIq49Vb>?k$QAk7nsDpe(PN0V_PR%IIQm7Cwygbe%BYD`f0JI6T)99Rw;Y>Y`9TyV(F}n&sIrS zFn>~C^OT**MwPq)_=kKJ!RfLQ?_ni`Zlk|zcTUjf!*tW?Jja~ zt37qyqddsuW7GAY>vDZ{oYYmBWv_15_KB%pBKf1%f!XN)tXHbP7oSd^==_S&N8?rD r?Cy;p;xi6tSDgCQyW-$~772#>Neg5g1us4ZrgR2RS3j3^P6Mv>iKmOL5>P}hB{Rhes@D>i z-pPxY3}6Wm^)k>ewYi`Ge0`+P$SS09>25bsg)kHL}5e%#}QeFH^&@gZm=E^b?82~ z*xMj6FoxsEau0(!jH|v)>Fe`Tw39br`WU0&m$HE84Ev*$1^NFL|6b6`)n@E)Hp7`; zDLO#HD4?Ey3Ul*mu{1^w|C9xK46NT-7O498T;MQDSzu?tG?RCeLPukn0!K=tsu*Vg zTNm>qPlrF^{fr7bPX=sd-*_T=69Xr!$-&(h5`MED>0X#rX`wTN$EWYX7Ji=hQypGO z31};y)NZIb(7WuV`IQ2RA6>`U?}NS^lOGGVrH!a{=o3TKQVP+)frUx7XyO};FYO!ATUlFU6Qp00i_>zopr0Q4-|aR2}S diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/bot_location.png b/TMessagesProj/src/main/res/drawable-xhdpi/bot_location.png new file mode 100755 index 0000000000000000000000000000000000000000..f66cdbd7b18509f5f7f0e17f1dccc86f9b6b1c14 GIT binary patch literal 1801 zcmaJ?X;2eq7+we}AfPBJIH*gaf=X@@%t|2S0>nrNv0y=ENmhxl*)>@tfKUiUt5}3` zD54m2)Kbe~brcm5JS&P7)K;knPK%|}89`wNFQ6L~+8?DmyZe3bH_!9D=g#g_t`2c_ zoa+bxfOA-=R7I{V^5NP~Cg1I4`Af*fgOJ4#QP@Tz6*eG1uog=|z%Ufvgs2c$o3`a9 z5&!@cs!kn4#3)ul8VqH?Rt&?0;v^dY0)k99tVu!$Fag=5(+jD+7cNmjomNPV<|$YT zT!JL(LemXMRQhVQCOt_b&{Bf}!2lCP3ZMu9gC;atZ-h)j>ZmS6?ybj6DmV%ul7!Tc zLB%MPpae4@AdkVNYglYH$mcWIemp*(?F({PYz~t}-h4XS590A5jz9S6qLSVW+KrG( zD*xn*w1m_|g1{jrGc`4pk;-LYhD}ViKp?Pca5!`lK{ux93D`u}8);(-QpBh+=x{=Z z=|QU^oPebeLMj>Q#}rU}Tvl)VR3@@uOcRVV*$kF7r7@sF@&8a19Y-4p74lEK|0!%# zr{M@wg&46EgNAI}Mw-?e~+1l(YrR4ifhgE?bdDW*w5 z5j`=+)sAzetO>c+Q9yChvlKDtwjx@&0Ykyjlp)>3u}CM>`^42w7>h(UA(u%8!?ZT` zUyU9+BB#f?9UoiL7$1B@Pfojm9P4SNlZVK!B{NJKtTuJtUaJUIN4hobFLy#W^Md8) z3V&pUSAm5+7%!g_r`LyGhQ{ZcH^V{q)k-(_GdmY9Jsn0f_k12k?ZxRo^1*T-?F^Pp*ms>i=C@Qt~5Sqra`7JkzCv3CK`7;(d#6=)lZ z?@#T?IX!ZvE2}}p5Ku64;X9yz(Y?T)H0q^G^Oa6Q}RIkotJIy$%CZs=K(Q;%!dfbt=F0ZmWW#&J34F4`F6i`L{`Nn0}CuO#1SZPDEqG#58WDv%^9uejD?nPamKz2 z4h*I5oumNlM#K;OEst8~w5_W+f7f|wn$M)Y9JC#-C~7Y_$Fjs(=G;4enNLfa$|@K9 zL9IR>^+E}>7T=!w^JMVL-1Py^DR)jKd#8AHn!XXJEAPPG2Os2hIkX<@G$xAPYrEZa zcJ?88-fFr$rfkb*AmDZ6mhJ792PX!Px`Lkmnhl?SuvI+J)V|JH73r=jku6M2@TjbM zC(eCR9;m+$ebzLywGJ;YLMUqrcFbcwmbc|DrF1P>$#N0+Sr)|(-Fxe{pH25553cG z@p@QlGZ1`aJ!xdMc~gc_>Gjw=s5Mj3#&R>k{$+j!Y`<2lhM{=B59&3g+s zPfNdI{-UG6(N%vdgJNITeBNO&<-;MPo5zS~%|+VA@6V*&VtRcs$sM?K=LNgBP?T={ OIfcnqOKZjP=Dz`D7`Lqe literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/bot_music.png b/TMessagesProj/src/main/res/drawable-xhdpi/bot_music.png new file mode 100755 index 0000000000000000000000000000000000000000..e1aebb69f7ec5fc5c48a4ca6018c6a2c23829f44 GIT binary patch literal 1710 zcmaJ?c~BE~7>%ZcD^ZbS3=Fs~I^bxs*+2pbL<31EQ34250WV^*kO;{x$wC5NM8*+? zsx1;61`x4IN>NdU!Bz_dmC{mlu-@94c((-sD~C89-5_B9DBaoJ-!bpK@B4k<+u42b zv7ggiyj@5n5=|N{P9R1W@dPd8a9|6Pq1Fn(!3%95pjHaN zbsQN>hKUfBIyzs6B<9B^De^NFJSDht1rToJ69O6pmjgykmR8R<3cv|nJ~6j%Lm)5# z!7~Nm$E1>F@qh@`ApnON#89wc7~pc5a4?6E!F&#v&kg}5FOZ0) zQ>OD1#8H#6h?M|T;W);JAcMicGz2kGT?Pd6cs#oXo6R5)41Jy!mm3*cz5kSg7|| z|5I3>l!qZu0-{HAbPA$z>HhXm7+<7AAPEBP$8L>wv#=0!!aVHlQhctq{RJU9{#hC{h*m^Z~0 zqlz32qQ$4U%1_*g8M$^VXfPtO7}2S75oMGP)c_Mm=BsDUC1gguNv?9{Tta8$LPRo< zy|Mpl^wbvN9{Y6Kw!~uE_=uKpyN#tZ}BwMrKr`vbMJZ(m& z)7;10eTS%^)ESEL4iEg^qeFbz2*fR}mVKQaCI`p%`ad0It)e5VF8^9eFTZqNNnIMG zc)hC%-P+R7Ja)Hftg()0q)LzU39Fq&8y$RpED9yFvssn%0UxiJ1m+PV9l!L zr0y6VM{D*E=5!wOD`WKB5;_|k%kEjz8yzmXVneM@z0TNLPF+V>OdqmzJ*BxXBzfRE zd#B`g#Gx%PCHp{6FKOgTUPZ{}&cf!FoZ<^uU2O^byhra>>;AXRRmCuP8S!Ql?S_Bgenn zpZU%j!;Y^{`QjE`X@fH|Q%-n6*~m@aH^bX48(&2Rq*OGIFOyd%!JefiP-5LirdhlW zO3djGM=uG<^+z6=(Yq6=tI|aig&c*%Z**35=snb=r-AT;k7v9 z_O&*KaM=~+!nVQr0}DH9;d%5Ts+aC;hi)#SR*yCwHCz+k-_vbwmDl>d^&Jft2Dxd_wRsoas!T=WPK!IohH8(4 z`kjSWecl;vq}6rx7d6Z-7M|^@?CbrOQP6gH*f+OPr1{SOwLjWPfL literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/bottom_shadow.png b/TMessagesProj/src/main/res/drawable-xhdpi/bottom_shadow.png index eeb3c83745bec1516fcdcc18d15d3d6abfd4c690..9e1a2a27426a81642628ee35e21bd22ace414d3b 100755 GIT binary patch delta 346 zcmcc4{*irxIM+H3HU7BfY$pB`7GcH9+3dJQs zscBXzxGiwOrFXI(vs1m}8=Yf7AEkP_IEGZ*dUL~(>wp3eYoO@+`lna4J9K%UvBvQI zoSf5St8~k+cUvR_gMz8S_19OeYWVLwaFAlKU}4L=q|~V*l$ornlUrz(yGCZtr6q3} v8GZ7BfY$pC7BsT(duN(#j# zL8)n0DYz{#z@>Mx9+`2xwb>Rjdk5?E?s4=2>bk(~`NCL@n<>ZirD{T-F%rTG8!-|zT+-}6jK zEHB)_&fN|G0Efs3Ry;b!TAvxy(0A#a-y6`uO~+2uC8*MLIYJEr&?PDn0!Au?=}0^x zl;p1IK!N~ZN}7zHs7vHV)5IzTUTDSO^$Io027sVYy;>-iBRWuoq|21S*r%t@VL_QB z7%L!i30yT3k;)?SG)O`ok1x)Xi>VT9Xb2djr=bE0L?;CGicF=JrVqxx*QKFz>o$Z1 z-$QirVC)B{61lM;Q>8&bGTt92CcrRAq2OT>nL>e=fkXmKgb3(O!NDXNnL;B5fFCa` zYE2_aqs6m0A8nzlV60T9Q_~!91X>*l2p&qBydQ2*? z5Up4vQ|n|ZC1_O?id0#;U@YqChY%EMF87nLQu{GcXv!eHPz}L&0;Et_<9d(Q>f(|A zy75`GmY=Iepm;>9%F>9@^GNfUB%`_eb3;}j>J2SMBSQ~Gn8{L!vlNI@7s(37qF?Y5 znS{nr3RS^ z6wq5BQ%Y1hS|982e2A8XXk^)lgriX@!1wv3$v$JB#qg&x$S|EiXR|&Z_Xn=z|H&DI zIs;jY<9~`}atp0M>-1CUql-_?gDBCC(V(r-N-viKz*Jr&i_X{IGFM%ZI}2P}?A6+ZgK5C^y?eUEyq>GPA=RZxb%RL{l_FV+w5z0h+G=}m=|5cCKc|Zdw*B8%3HcJ zI)FVp3U^4l@@NaEh!QuGT+&cRei2fkseS^&&|B76EcZmhnY zx$|azd$VbxB)BEyqLDYxv~YaU7-ejJ_PX{*HDOEp!uvyyf9dHAR^FX8cG$dIlpz%K zkN0gk_K7ElL|2$nb_#_Y$(iU=IV%J$i+2N^WFEKvLYk|E7ufBknq~1Qb z>`ELaGrby7?HiSDtoR`~(@@_RdSZ9no1daDo$_5~$Q^Su&yPBqRQql2bzpDp-tMSJ zg8GV+9Zn`H@lF*3+}oX z%U;dtCcD)|{-Zs~_}yq-!EJwibA}V=2-kJPuT`*JPdZP@GbH9^UVUY2$JLiFFe&0{ zLy{YLH{YFAy#2ZH;nVz)V$$WuZs9kP<$Oz~p<%0wd(jr0oux8=sGPI6;}%FjZko7G zzn2!=uS~D=qTORB&Kn-s6>xhKGc|5)jnMe)Ve((D-gu6e7473KHI@FDz|>~RlXfyj z3%8J>@3`Ca2&c4U^!UZqO6~UB=si0tF=|D{Izz@{--2}cBB1$;th${H{xrut2SB`H z*xO}4LmwOBGB|XAUmSIh4ju4VG)z0{u)6W@PanQr;S(gC3A7sRLyNPBKgZ5+Oe*#Y z5-@pZDo=>?{>;@t=C!f~kd^lwV`)D1dOt0y6tI-;>eL4-xG`a_J+7wfBCpEC!(>@m$5u|&rdx%D^$%cPqRFBD;b4cBMIz%BN` zEBV~te2QM#1EuWVZ@E|MybJVhW;1z5O|2=xc1`;iC1Hmz@D%sEetK4dfr=yiY^t(t zS~{M@Za;DqUx;Lg_PJu$r!1Pd@TP*W_s$-}xxkJILMMNuP_(U2GQF>PenyI|B_i<( zKX7ou)a6~Ni5g8=GjFrH7Dfp=+7?!(pn`R3JA{;I*m_3c}6E-w&tjT>-4(}4L*XB(4jXA{( zhx2|Bd)@_LX1njkjBax`!>ssX23W<{*Lz>FWzR zr_|2-VC}ezlUSeavKU(HsoLlTEldNInJM9BABTcQ*yxCO$mZLHV1TOQsT|+|Vk>X& zygXxbN1oexx2SuUXT0t4jJY^4Iyy{vyy#?BRQ~eTy0Kxx1a>&f^_U`Iy{8GVG=L|E Sl!;x|KbA-~k9CBxy6``qP`HNx diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/cancel_b_pressed.png b/TMessagesProj/src/main/res/drawable-xhdpi/cancel_b_pressed.png deleted file mode 100755 index 79f9517270a087ab6a877893c7faa8585bce3160..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2346 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 a(<(rNc-HCySJarU8=>rQ*0G>fS^oii8LIXG diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/cancel_big.png b/TMessagesProj/src/main/res/drawable-xhdpi/cancel_big.png index 90be05edfe0ae058ebd391fb0069a8680be2b0d5..843ef5eb6053e649a702796889ee3664a70e3b31 100755 GIT binary patch delta 3094 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 delta 2237 zcmaitdpy$%1IB+d?37z24LP-_k>j$PF>-BlNr(_~ncJGnTt{wgw6e*i%OW{AwcLq1 z6p>70MQ%e9$z>Wv2M4)3Z|`64U+?EU|2&`P`Fx+x^Xb9hM zq|pX%?i@EVUvM$p*+nt+Leoh^9gOLk;^gr_+uBb2WnUB+q|j`pd)!+wb4hm{lF`B) zPv*}`2=I2+8T*iq7{}xLpRAaD$?uQa=i#A2+3{YxP#`>*?|Bqd0mMmI6&j27Pw}B~W#IOirWirjR{Wtf@X29c6{FLz%3w3O+^3IaA`F z)GwS&&LM%JUECG?2j%mpJ)vHQybg>#0!>Lcgjbe%4L;oCa6pmcFsR#D_V^c>eW*e* zdsaz+74+ZzJaetgifW0`$m4)2{GX9a$xQ63yOhb1s5C>(9d^8!cy^8c%Gw=M%HeCqk!9! z_zQJ8IH>{!zHYAXvn5|;nI}#wM`qS;UmaQvqU?dw`vZ~{Hm7SyS*q%#+O2=^$2)Tx zK;QH>GP~@m;9RGTkHK%m-zx)pJN20@(3@>i*m}Q^Pe=LVeacNBL@%BFXr~R5nyXq^ zS!aJP6XcDhJ-cz-lz<-#gxQ0sTb7yH4WrBPRfdUM! z$kBt?r~BLey6xQObiTxbbd~5nCN}Ca!Pj;*Jd&}(a1rdQC|(#|Dfb@8U1;IcOwqy= zMqX`SBM|!WbLTKAHQ(eD^fejuq+y^tmy{JIPxRGcfn*iK#(Go>Mb(<%2VJ8bZloOh z^BiZNPGC!s*Hzo%1Sa;?r!2iY)h$JrnSi3W-uxcrA2}h(Se_p3cehfUOlb00#{HOi z*M1W%G$2H6tWlnY{m`mR+qj5XsKQ05V*3l9xUg#cy?wLYNr~C$v^WLBnE; z8kd>n3{bEV-g1jHQUIW7D))AiE-ebqTEcw-SFfl{y(2_Q*=qSyk*>I>!u>~l19QAH&fx1^iI2U zgd?VP*sb@PXcGx0`diBh{f&*`;qvDuOZsXvZmxE9L{64ZAlkN4XCy{D%VyOCgGt%| zmQ_f~ulhoz{hh7^Y?HQEL4MG;Ur(Md>d>9WhKLQ>?}SMpf%UYdKeLXe?@T61uG>=S z1<2aexx4|cBw&gN8$yKZgxDUG9^N~=w6f;x2V^L>_-~_npI#@$6no1Z-M5NLy5Rx=CC$sRi;!=#R3zkMaf{ur-T-30cpV)cTdsZRaqo(t4uB&{g-YI&lN!Vh- z2lbN9%ea^O!o($*NA%3I;?pETM~y~~R?(+E4^ZsE zrQ!i1(PiPh@WMs46V;^$tonuR_)zT-tS8>1?0s8;iR zpMwZrlARn>C7Fr%F_pvHMnp?f`fKq|{6GeXTsKrq24pAMy zudJm8wQJah+G!$G818HrnY`$0SQ@`#c9eE;W>#%;tAUcTX_X8D{PS($tf1Iw;HPW| L_V{WG;?@5EMb!j{ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/cancel_g.png b/TMessagesProj/src/main/res/drawable-xhdpi/cancel_g.png deleted file mode 100755 index a77e504f22f603678ca72afeaf17076b0566830b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2357 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 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/cancel_g_s.png b/TMessagesProj/src/main/res/drawable-xhdpi/cancel_g_s.png deleted file mode 100755 index 8817baf2394b0c27a29dea92664480a873a2bbfb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2332 zcmaJ@X;c$w7Af~m`7XYSV1QF5lX!cqvS1iQCCJbIBlo;6n;OnQ7z}zH64swt!0uc@KM{NTJ6!2)6 zC^DPKmINStL2#-R*^n9DjMdKF4Z_UZ4)ry zCx|?WhWRt8Xm%JFAeJH^8BfA-i4X)*D0s+=Orby?peGUXBoK`^1qXRi$rP&RO7QcA zF-DW}5~$$}=I2<(6%E6e%Oz9-L8(;Yl_b1ax`hDw`1qJKJUwwn1Wu+F$zc^vBwI42 zz(8bNsX!tZh((}D5$1>$avH{%>7OMCC0}Gkvd_n4JTQU^mJlF3(NxkDkj?)8P@(V( zS|$%i{>t}%3d7E1V5Eb6?{Dx(pU99 zb9rCS#p|nFf-xC_sj>gn=&3EEdrZ?Wwlyxk7#|TC-7YoSn$^F@2LLR-XEFRERKMzv zw~En`b8q+eIUMe5zeS&4dijc^^3q5eoSh6u)-Ahqf2Y$;b0h$>EYW;0J-*h#u_McZ zPd{}*zQZ~)pciYMv;I44?2iJWfc~x>dlh9fJl>-&vwcvwYV0m;NL!dT#47IDULxxo zeNj|63XK+DS%gn#S|{ShA;UDi<d z^Ql=&wH`K*^t*M!nd#LBdtFoB77e`!G`Jg-dTT?nA@eNi@;vWpGX0RQTNl%%Zhe}s z3(}paYC!rsVtr!iqiGsi)50xBZ5x-kpI(ZDvTR)h=GXSrYiO-~zbp(Mab5*N;1Sv^ zO(zf{OKwqHR- zcezdcjtRRo7xE7eSuQpeW+@>nOY@G!eH;Er6bVGNbX{6gc{;P>y*(Q6E-8$6g z*Ju3Be|7RoVHV!5up6&1^DStfxhr?(KYva&JHo3gc>b_Uom2@xFIOLg zV$RISVlQos<&7PV2p@K$M4EAi)0DTDN2J}k>ifM-L1DBe8P(|w&#`idYd8e$>8RZ- z+ME%cxOU6yYvLjFUaX*UB!oM-p{VTA3X!&FK&GNyk;w8(Pp69Y?kDF538e2=$_q)@dou$sMAF(aYQD6TJM}}XnNId?&?)5YM z?x93QT5V3krZ?sb9>zK!OA33i#|E-p*b=4?WZ$c@aX7brOoLsIX4niIAigkb{Do~W zbKc3f_KjKx44gg_vft*ur|RAkpy1BNpn3;fmL*!s%3Ynflke`!r%~H;E{xUyA2RCt zV^A|{EP>g1ryR2#Z+usCFDpvtz>1b#nY$UWvduUr%vpvyg^ZlE2kQI_IX1xLMc0C= z+R9;TtDQ9oc8yro5&EVo^Z3i#i(9O%>}vLiw5~Ca)#ABuY*ChYxszmiXt({kw-E(& zw%I^Q>xjp0Z|jVPF8el4b{Q~I=G9m|XD|;?-H#xBLq5l`z9owvx{$NB#G*LR!L8?j zm3*yIkWM(9pC`NtPR}p(f3i74RUMObHlY6M&2Ta_usizwPf_DHQvY6nqZMW>+Sar^ zas}fo_F;BpN=7gDv6cknWko*C8hy4FdyL=0KIJsQo_k|OC~2N1cw+JSJ2M<~xYedc zE>e5$cy}UfqTpLs?wsXSKEF-uSOj`b+n-QGCokVeH=|p2RnI$z979v)SU3m{84~J_ zJpUFI?2a~^ne}f<+!n3q#Xq(=zuBAkN6Sk_zZW+Ot|IA=b^@o?U0d-a3MRT(g7RDG z-6F`varzu5@XfMup3RL_?us&|*=DyPbau02=1Oy)rW&cN_M+f3iEt0 z@Gn6II;WMAI39_qj;Z!X^WlMAz0RJs_u_lG;t noxS!?Jbb$0rG|pnljgR-e)MbG+XZK3rvDXIU?}4PJwEe4G_=Qz diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/circle_big.png b/TMessagesProj/src/main/res/drawable-xhdpi/circle_big.png index 7a1e1061117cb808acc14ddaa01f358fac017750..a661d8baeaa1e104cf18531c1bb6f53f64609720 100755 GIT binary patch delta 2097 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 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/contact_blue.png b/TMessagesProj/src/main/res/drawable-xhdpi/contact_blue.png new file mode 100755 index 0000000000000000000000000000000000000000..0691158e3e9059e9f498defa5c52a9aa2f4b7860 GIT binary patch literal 2877 zcmaJ@c{r4N8%DH<3`ZJ~#>iH)7|bw}!7w93gKSNw$e6_pW*>%`mO~*C6(vrHvXmv+ zPO>YBnNyt7hf4^b7F!G2oX$5o)%pJT`rhk(f7^B6_w)Ro=l5|1zvyBV>y=|T81w}qiok;Z zPKr$O0l9JobPy6|1EpFa5Fiu^hOkAVPzVUf+6rL}w^F<)D8d$lL}9G$KwlrQBAS54 z!1&_bzQ$7QuwbT0#KXYhVzC$|wt;a4VQ>T*jb72PwuUMYP+=@bM2UfNgeKn<@N^+n zz~YHmTn=bOkrK*{5@ErLO#i+DoA+IoBm7z>MZw@P6doJ_vs$^*Hz0}h|DkO5ceGIC zOaCX||0yi=kLA(fzH}isNbDVT-rZe^bff!R$%iKk@0i^E1FJo6L8s}FIUE}ew+*Hhk9SR zv>)eU_d_mRkqmsLvH#WRZ$}FEtSrCVR=s$+!b2aiondwxOZJ z&MNHy9X#N;1>i{4I-p09MoL2BoUAsFJCbY7E}4y-Z{BG$@7dyGJ-;;aK{C?tE>AiV z%a@6ROo^vE4DT4;lQWj+ON`>=2jy~AJ{wzeeqVc2cat2#2oA~H1nCd$Rr{d7|#$-I+}dKV1w@ZGg^qFR3paY=ZmIwZX4brrXW)m#rqN*t5sijNmF9af3SIL zKE;Q&mJ=@@8NZNjB|Zs%53}($tfK6cY7cwozy+q8Zylu=r!;wPegb_i`kOa zZRji7)U(9;-^twv0I)clPO}bY&qFv5hn=)IJ4BCfE-`d!1LLj(uU9z^oz zcls%}n7jWK-N{DO49II=!+ zinwuScnFWgGZY<}ho%EmncW+x1B!ZT%#AabSyvC|CEuzIP|j#p%LB zG{!FJu>^RhM)VaI7Z6c#e#X3<$jg|grFOI%m?kHx2)=6obT?E4wTc@7P9 zd&r|xhp(F$rqFCdY{%Yk(@HxtLH_MJCtWO6 zM{nlQwJyt5GgmehZ+KM8E!X#U8QU*^`17J9%e57=`$aVA6D(f*Dl$Wh)nAqu=4Zw} zrgBtoGR$9kYq%ufx`d-_o7Pl!kM!wSW+CUANnc^UX2gJ9hgRd0GT?*rX$|KxOL_v- zI?~)d`|10Of^w#fqO}MkDyuA_7PntDY+0VEn%gOaRy7RHORo>QTjH3YJ5LPW?meio zDk0I)n7Y0(sb@)b&awqHt7LHhdCu*vu?xB3y!E$cK6$(m@)jaGo4f<_s_ zi3yiGizBE7b>Q@%B;`--ff|}kpzh~Y?bTX`I1hF*7fu%ZI!cy5-oLrD%_8e&dvB%R z41@n${X0rnWBs`+eB#{N+sLV=G}!aqA@bA*$wxJ7J5wT?@B65(2BhY5nS-lKU0Z8v zQkFGmA}N(fTlQV8$*{pBXK+~Az0&11mlB5`ehxNdGIgHH$(2FtvVM8<0#>KG+Q)PD zAy8MmMu@U3>AX_h)^-+HLwi4rZZ9u(L3bsZPRxX{GE+Wb-*$%>BuN}MQV4oW!=ip9NTj> zv2gsN_VtSwO(D@6S(!1FyQ=4caZT;h$_VP^a-jOL<2Bd%_VK$6L*|Tg-(VLG?Wpi0 zTQl`kq(4O+_kD4H`Uq6?Y|AAWZX2{vzRsw{x#y2jmw|`lVNZ65mf>wm@88`wiDN#_ QUiqOV61?!0E+O&%0lF>MC;$Ke literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/contact_green.png b/TMessagesProj/src/main/res/drawable-xhdpi/contact_green.png new file mode 100755 index 0000000000000000000000000000000000000000..d50586ac10b3f61fbef07f3748be76d2dce779c7 GIT binary patch literal 2867 zcmaJ@c|4SB8-A&9L|P~mO`~L+jf`gFFf$li*60)&GcP7)X=d!oP|6yK6p_6sV+)D0 zlzpjeQ6e3ph_7={DyK6#)%pJT`rhCBzR&WzuIs+;=f3}VqHS%=WTlm*0RWJtn3L>9 zqs!_iB_aABPeJYz4N82n3*Uk5$q%4%LBN>K_5dLiCe;hH2dVU+?x7&_F*5P}cHiUgP-p9%?N`m%V~KmzouE><*O-9|tmUm<)S0`wnKF4ndX zBAW|B^x=9i8WM$qpwV#DK7BMAr32ALqI3~R(Tj$m_F?tWSX~3iw+AYU#-)2=?MbHJ zVu@A+s5hU_!6Fa=0Riv;Jvf`|g+O62m{kp3U6=>~;{~z!)Ib=Er}kZe1oCKH28YjJ zvmmRAR1dZvp8yp({U-$`=Z7qd_wATO2Zjiwau6suay6yzKx^y&4`nicpm}_I@L#|G zQ<&!%!~qfZAdl_GrHKmXskR!5gC%l7Dxb}DWV3z0pQ5cdo6qKXvpEo=0~(^?%wW;k z0X)sGcx!7cg~j7jSu~JBB0xn7a0Y{pMPpDH~O>=FBgQ=xoz@6KKkDz^#%bibGMsBLv zUI|eQ*%7j@wq7tJmm<|xJ6vBHMtd^jcm6l+vn!AgU0kY)unD7k`rYK+9>b2mGFMo>6ww#Pm*`gz``z=8FwqVB%o~zNt6{Qfw zCyf7*Eb)6+S8$)U+qHHSh|Q+FJeRh~Tu?DIGh|e1miXBu0hA4iRbE~+c!9|w;jO~2 z;U1{GN8?P;4bREzR}5?Q)>XM}%@4}b5zH&(`)jRB_=Bvr-<91^F|>WSP(C!qGpxz2 zXq$U~_0A|m7IH@6C?sTkVCHo;ku0b)(QeSFnYWu}R2f8e(36jp6p@_(qwP6+o;cnA zOIR!;I`KG#@Meko8}u_QkKZ#8JXVP|_)wFdB7^DO((pb}m&$4*$a)yf|MDVVLNB2* z%Cf9kMdX4gEFB z3+mwbfwavyuwku5oDF9gBba)BCuLkNYw@f>Z)93*IbFpVUR_pQErhD7ftN{N2B8Id z*4sb-n$9^KF-JGr%Gll8HRy+I8R*sd&8DL!)-FF9i)T1NJI(+KFZsn9O zCHbn=rd#FEbmGrBUs*6@PHGMVQvm0{W$x*5w(Etdhc_Uyy%q&BfK95VnQV9bLSOV- z)oVnNBdcgY=Xrns*ktSLsV%rR&x#tq&x03gXBoR4<<&zr)4PW6RfP36KebR!O&NQ& zuv?kb0J{^Kw%aN15Pxr;;~i0~A=$x2mQx6fxF?aAW;LcI5ufwA#{A!Q`q*)T?NMUzc zakt~x$gld=m5$AeWe*lhRXCOVU=f;El4!8xf&6WLvGW#`k?T~3M#tye(->^gdIYX9%(;+|uD z#~*=xOA|1UzLR@E2ZI3x@La!a>6xjPh5PCuh!#{Htz_?HA=eLg#tB?1b#!ehei~WB zdi5r|O$m9rSm*{#xrV6Ue>>CUS07;lJmZsZp0BZYTWfmq-2nx6@BGGAuj0u!*#)qM zv9be-aiPaX4&uHvO}qqtSHjF!##pkChX}F}!_5-f2?JejqaRa+z?1SZWMI(E$s@s* zBVx1D2Wmm?5m{mz9fC~arn|Yp%Fm5vl+gx+~dK;jEz;Ig7U+ZJcl}R9F)(C8u*$W(%=Hm(qy+Cp2glD$HRC1VZ*1(<6SVf7j`1_C<8sS2%GOhI z8+e4#*EM8CoMQYo7#f;ehKe%E{qtN5&Qmf(@3s7V_S9iUCy8?A{yKLr+Rj}hE1cVV zpMo!AV#gFrA3@!|grp=V=7+5vQhVw3+~D2v0f87GxY#xrUz^dodX1%!ZAd~B_lUm% DYINqn literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/corner_in_bl.png b/TMessagesProj/src/main/res/drawable-xhdpi/corner_in_bl.png new file mode 100755 index 0000000000000000000000000000000000000000..0620792f89805ab1457e9ffc4828c3ec9f353a77 GIT binary patch literal 980 zcmaJ=J#W)c6g6p8K}AJZn4Vk-s6_18uI ziIT+K0DOt#*%EoBBDbW7lETYi^w1<)WYT%}UU zG>xh>FE*ta4Z|dqcV|#v8ffZ98=1U zlmiXp|4`o_qhoBsvwZ(49JhKQWK9^OZsd^0?JQ)WLZu!-3!|uo(0*RU^$x-)?w}CV zHzaU<(+gab#EV0`VJLbKV=Hi=uBkLpU_8%NgtAbrRBLjhF067~LoCZewbm$Wg1jX2 zC0@?C8gjZm3~H-Ie{+2MD;>^}YL~QepG?dEF=ZR~5NNpO0JV^5Pw#$4MTSYSPNz${#tp^7 zE@#FVE^>X!W|(3r@=a@m2PS2 z9TX#l3b=@vAaeJ;P>ED_p{vk&yv?&<0U;xmJxZ!;G=YW#1SBq(wFC%(EORg~$uhhO zL;;GtKwmiv^NJ)Z;x({*SQ;&``$|i%Eo0G@$_@$f6`r3=Cfp>);b6eSLZJ|Ah+>u^ zvf`Z;cw@`@3fkhkF-;6`~iWVS~;Gl!?ep1Ee5EC2@u@AJi46f`s zo{cBr)&g%BO2Z3@=~<|ut1MOE9LH92nj~svS*U8c8iZA;0%cJvXo4WXT20Pt30KF~ z*hL;mxb`s@uI0v7aD5tCM}cz>*|h+>U~y!{S(}SgU8}d`+G}%>YHPVXO@@yf`&Xlr zE$W_ly0R@@tc;I5>h^%z`c_-Z&?`}H=;coIrT1$-FQv8~96Z#8bpFk=SLNrO4EN;H z$JD1Er_&&#AAXzb+xCgWZSZ@i{`kU~%c-9)=XC~rV7f2vpM6?+cQL+Tjq0xcx^m~y EA61zx&Hw-a literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/corner_in_tl.png b/TMessagesProj/src/main/res/drawable-xhdpi/corner_in_tl.png new file mode 100755 index 0000000000000000000000000000000000000000..7c75fa2cebbc588072003495adb0782939c0cd47 GIT binary patch literal 992 zcmaJ=&ui0A9FMHXEEYX@*mm*x2I9cx*Osga&9<&-UBQge)vX7Grpa3yyX0lbtIc+q z6Au#v@#M}5UIfpA2QL#5_ZRpN47>>9VR+h0*LEJPA<6r}=kxh~-}n1@&sLW2q>>X! zhG9~rCB00?%kejQk^a}(_mAl?P6}1BiZ@8d3=osEaUFq@Yc^0BnfCV9SCnO#5$IH^ zq-xw%E$p&pjA0|!r)-AF&PTp!wGaVy)Nniv{`~j}0>{?ix@7Q%pGQq+X(vFdJIfVo zr)4QNoSy^PNTmWUA|{C3O)pd<4R&=^I*+$G2)Yo`(%@NARbvI@ae#otPNywi5P&SR z!i*%#!fhb(g2?gomD9qED#@xi3wjTv(E@uzE$hWzEV|NQlMr9!xK5|TcBWYzG&n&~ zlvqO)(-e^ow>@G;X)m1YE9fY+0>>u~_CTy?)^VF?kY;*z1lJ$PdSS0jv|wCh`kcV> z@savK!}vecbqDB>l+k&<{}c`@+dksTD8%i+qK(^_j6?ZqK0qeHK?UQ@eic`mnBcI9 zeUM+3!L4=2vvDV!>f#MUEqNg^Jqwj|4N?Wxacp%)DJ&LqqEg6D7X_gpWt2=t&+}qI z*F{lL^gdU|R@+4$>2vLKZf+ zO@@mb`&Xm;Thu-AbYNS$7#JUU)a?Pa_3;n4O0Ptvq~|Kp_xj0;Bs;Q|y!!2eFd`o@ z_fD?tzk7Ue>D3}hNl&lA)`!I5(c!~dy;eI&9PWBcRV3( zVS!3F@F#3oBOyU0Dx`h@LgEKl!m_N&I89O(1k3h3bk4bV?mhFmzW!)#W?@DUggL8b zHuyN3d^e`~f3x@W2OsXTN{elf4(lU|g;kfdF|d5JgBuvR2m5DuSrDc~ui0WP`?2N_ zUqT5+iv5tY1!1`yhsfE*47Bl%7wF>851&Nfxw^Qe*cm%CaM!CHQoM1v-gFLkosuh- zAA;pr;{rZr2*mzg5NWY44sPqt+d3?OV*7cY})*>zwLih&~K(oP0KpsEtgE2;{Y zKsE!ja)!TZ8s;@c)v^UJd_*3Nx*e@yR)?|pN*B9~g_v}CdVk0p_ECEGy>Z8 z|DnD=Mn|lHuk!t;aMU~qvE0BB=~0I_uCthg3N?db#0YH?vNx(?y-OI0x+Da~h6?U) zd4Ws%(Srfrwlyn=7z!M0nYzdoB+qlTyi%+bbI_<5xhjMerDPNer8Uzi7>ZFXLO9}@ z#Oe7sU?Z-3#Wg2#6D#;3k8EPreoXk#n|{b;BKef*7P|-{7Td;bF~?NZ=YXWl&5YkT|YfrdGWh^Ya66;*Yg__y`g(G5x+2~=UJz2V!msn={FnFU=j5JQ Lm38yo+V;^Oyy-6M literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/corner_out_bl.png b/TMessagesProj/src/main/res/drawable-xhdpi/corner_out_bl.png new file mode 100755 index 0000000000000000000000000000000000000000..b286218bea9ed3a2c617ccea7222161621d902e3 GIT binary patch literal 1022 zcmaJ=U2D@&7|u4RV>lg5LEX(ULsVFkrXSfF*0o)dx`G+At*#eEnkHv!*pd^I(>2?b zdLf(FA`V2o@KQwlzze}Cn-~6t{Q+-;A>Is8>q*ykURXnt^TG2x?|a_&IU94cmj(yU z3{Vs`n4OVwWIXDB{Q>g7Rx5oW!)YuRaULz;y6QkGt)mJASyNqvIjHKZH$KBjit3|{ zLJ=30%YueXM)fg_XWE2KQIko}R<$LFK?N=vR)XGpw?zX(Ptfx*C8XFQtQs?G4$QC3 z7PPe`Ew0naDKO~?M8Jet1)jNVxq_FVo4Nv-``auHnh?B{pbwHNDsw-Pe=!ObC)*Wds} zbP;Dpdy1&JPhL+7GYD=z@Td>Y6W6Yg5$awqkp}5M+04p(S?W{kS!6G^`U7S z=B7vT>U2frHG1$87;pt5U_h(@*O)LJ!Hv;%U4hKKZI%Xg2(HBFy`+lrC=ihiL4*nU z)d0tVXq4f?k!Y0b1Hk|nWCP@l`nj+Wi3-7spz+WonyrlqSt;F!MOHDojIkxKY^_#f zY9R*M<1EMXyr&Ti`U%4COqp15{if5~RFI&f+PZ~xWCBl7DWNKk(InHoBN$do)^r+W zA_Zez#bP-o;2o(6l;!_J4Wos2a2D?8`%hsfKV?BS3msIoRnoYzUN4j-h&EI(vhxT{ zG^;pTMi@C|WC1Z31!oJosiB&4u8x;wA!9mNF;$q6Vl+`;bX^l7$#95I_a{?gD9v%H z2rnhXL^#ETI4Kh3)6phZLTc53CT?=IeXiJ+>si6DNMs4x`faGCZDfG@kp;bdE__?P z23KpJOQJ28CCRW}WB+P&bBnmgo3?CA7A@mLlepa`wq9|6za>|ql93X5_iJhA=)um_ z`!|L=7iPXJ+*(S$c)0uY%=WjQV;AO2E9b%8<*n!aTiuVo$Df^k@0**?&1@fkFx#`! zv00j13w(+%cVGGVWK!QgvbwIA=?{JJ!me+#5WjQs#OIBTrP+0nI^d(aU#?zzy}0<( OyNa3Ai1aFX^WGmg4M|1- literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/corner_out_tl.png b/TMessagesProj/src/main/res/drawable-xhdpi/corner_out_tl.png new file mode 100755 index 0000000000000000000000000000000000000000..84433cf5dad46c5d025a096b4eabe71aa0e7d7cb GIT binary patch literal 1029 zcmaJ=&rj1(9DhKRg+MSNF_D8li!qw8b?vso>gERPCQB^fHf0(QbnSyR(7w{XxsD6q zMdcsRn-|X}#v=zkV1jxv;)#=q2Q?u ze-{9tCp#wP=-BOjzN7Sit#b1t9ZryRk>v3VsVX)CBN{Ftm^GAHltYSETX>0L0CX^V zp-77IWl_aOK=CjE*RUuXfLOw{6m<>}SVFV98E1CZo-t6@;>=V;4$4*vmG!Yj8|4?r z3+m#W8r7J@MHq8MDqtX@K-ZWz9np<52f8Aid)q7n4d+XzMiA-@{r zI4B4KE*udAZV>W8j%S1P75rRSj0hq>1nUn&quJVwn3FQ~SacO<%7j=V%T}w^Ks6M= z_AJXqqft+T=lvAncWNe4T)*iIG!!J{sJ3nq9h=ZoR7$u);tb97@Cb(0lr^1tnP|aS zSFuqx(2(}9t&o`<# zS;hoAWo*GzUV!JObW_7s=llU)mc^{;5XDqcR*ExJA)xCTt>*A>R7z#isZfUF(vi_H zAI|V0Au}osNdnI|xDr+?1~N&5t2Mb&uqD^Cf??6f60-GMNXyvRfConw_13vaE%oYL ztz|B$bW1KvlVQEa{?+Kl7Ilv|ZQ7PDn#M;ab-PV%-FN@^S$ZXES!tx;Zk2xR?$a~v+}l0XGo9b=Tz|Ot0eo8BUHQJV6a&{6hL7$4oB(j` z$L