From f76fa00e121511e2ae57ada6cfc37b3a7520fa57 Mon Sep 17 00:00:00 2001 From: DrKLO Date: Mon, 17 Nov 2014 05:44:57 +0300 Subject: [PATCH] More Android L design --- TMessagesProj/build.gradle | 2 +- .../telegram/android/AndroidUtilities.java | 21 + .../telegram/android/ContactsController.java | 84 ++++ .../org/telegram/android/ImageReceiver.java | 4 + .../telegram/android/LocaleController.java | 10 +- .../telegram/android/MessagesController.java | 22 +- .../telegram/android/NotificationCenter.java | 2 + .../org/telegram/ui/ActionBar/ActionBar.java | 38 +- .../ui/ActionBar/ActionBarLayout.java | 107 ++-- .../telegram/ui/ActionBar/ActionBarMenu.java | 19 +- .../ui/ActionBar/ActionBarMenuItem.java | 30 +- .../ui/ActionBar/DrawerLayoutContainer.java | 10 +- .../ui/Adapters/ContactsSearchAdapter.java | 1 + .../ui/AnimationCompat/AnimatorSetProxy.java | 33 +- .../AnimationCompat/ObjectAnimatorProxy.java | 11 + .../org/telegram/ui/BlockedUsersActivity.java | 3 +- .../org/telegram/ui/Cells/ChatActionCell.java | 1 + .../org/telegram/ui/Cells/ChatAudioCell.java | 1 + .../org/telegram/ui/Cells/ChatBaseCell.java | 1 + .../telegram/ui/Cells/ChatContactCell.java | 3 +- .../org/telegram/ui/Cells/ChatMediaCell.java | 4 +- .../org/telegram/ui/Cells/DialogCell.java | 16 +- .../ui/Cells/ShadowBottomSectionCell.java | 48 ++ .../java/org/telegram/ui/Cells/TextCell.java | 2 +- .../org/telegram/ui/Cells/TextCheckCell.java | 5 +- .../org/telegram/ui/Cells/TextColorCell.java | 2 +- .../org/telegram/ui/Cells/TextDetailCell.java | 2 +- .../ui/Cells/TextDetailDocumentsCell.java | 120 +++++ .../ui/Cells/TextDetailSettingsCell.java | 6 +- .../ui/Cells/TextInfoPrivacyCell.java | 50 ++ .../telegram/ui/Cells/TextSettingsCell.java | 41 +- .../telegram/ui/ChangeChatNameActivity.java | 30 +- .../org/telegram/ui/ChangeNameActivity.java | 68 +-- .../telegram/ui/ChangeUsernameActivity.java | 35 +- .../java/org/telegram/ui/ChatActivity.java | 352 ++++++------- .../org/telegram/ui/ContactAddActivity.java | 199 +++++++- .../org/telegram/ui/ContactsActivity.java | 43 +- .../telegram/ui/CountrySelectActivity.java | 43 +- .../telegram/ui/DocumentSelectActivity.java | 50 +- .../org/telegram/ui/GroupCreateActivity.java | 111 ++++- .../telegram/ui/GroupCreateFinalActivity.java | 7 +- .../telegram/ui/LanguageSelectActivity.java | 41 +- .../org/telegram/ui/LastSeenActivity.java | 469 ++++++++++++++++++ .../telegram/ui/LastSeenUsersActivity.java | 313 ++++++++++++ .../java/org/telegram/ui/LaunchActivity.java | 341 ++++++------- .../org/telegram/ui/LocationActivity.java | 2 + .../java/org/telegram/ui/LoginActivity.java | 13 +- .../java/org/telegram/ui/MediaActivity.java | 1 + .../org/telegram/ui/MessagesActivity.java | 99 ++-- .../org/telegram/ui/PhotoCropActivity.java | 2 +- .../java/org/telegram/ui/PhotoViewer.java | 9 + .../ui/PopupNotificationActivity.java | 138 ++++-- .../telegram/ui/PrivacySettingsActivity.java | 424 +++++++++++++++- .../java/org/telegram/ui/ProfileActivity.java | 13 +- .../org/telegram/ui/SettingsActivity.java | 75 +-- .../org/telegram/ui/VideoEditorActivity.java | 2 +- .../ui/Views/ChatActivityEnterView.java | 308 ++++++------ .../telegram/ui/Views/ClippingImageView.java | 53 +- .../ui/Views/SettingsSectionLayout.java | 85 ---- .../{TimerButton.java => TimerDrawable.java} | 61 ++- .../org/telegram/ui/WallpapersActivity.java | 2 +- .../src/main/res/anim/slide_down.xml | 7 - TMessagesProj/src/main/res/anim/slide_up.xml | 7 - .../src/main/res/drawable-hdpi/call.png | Bin 701 -> 0 bytes .../src/main/res/drawable-hdpi/check_blue.png | Bin 0 -> 1182 bytes .../main/res/drawable-hdpi/greydivider.9.png | Bin 0 -> 136 bytes .../main/res/drawable-hdpi/greydivider.png | Bin 960 -> 0 bytes .../drawable-hdpi/greydivider_bottom.9.png | Bin 0 -> 122 bytes .../res/drawable-hdpi/ic_ab_back_grey.png | Bin 0 -> 289 bytes .../src/main/res/drawable-hdpi/ic_ab_done.png | Bin 1333 -> 0 bytes .../res/drawable-hdpi/ic_ab_done_gray.png | Bin 1175 -> 0 bytes .../main/res/drawable-hdpi/ic_directory.png | Bin 652 -> 227 bytes .../res/drawable-hdpi/ic_external_storage.png | Bin 444 -> 373 bytes .../res/drawable-hdpi/ic_msg_btn_cross.png | Bin 1239 -> 0 bytes .../drawable-hdpi/ic_msg_btn_cross_custom.png | Bin 291 -> 0 bytes .../drawable-hdpi/ic_profile_send_message.png | Bin 309 -> 0 bytes .../res/drawable-hdpi/ic_send_disabled.png | Bin 599 -> 0 bytes .../src/main/res/drawable-hdpi/ic_storage.png | Bin 325 -> 198 bytes .../main/res/drawable-hdpi/p2r_progress.png | Bin 1385 -> 0 bytes .../res/drawable-hdpi/p2r_progress_custom.png | Bin 2991 -> 0 bytes .../src/main/res/drawable-hdpi/phone.png | Bin 1394 -> 0 bytes .../main/res/drawable-hdpi/search_dark.9.png | Bin 0 -> 103 bytes .../drawable-hdpi/search_dark_activated.9.png | Bin 0 -> 960 bytes .../main/res/drawable-hdpi/search_light.9.png | Bin 967 -> 0 bytes .../search_light_activated.9.png | Bin 971 -> 105 bytes .../src/main/res/drawable-hdpi/tooltip.png | Bin 367 -> 0 bytes .../src/main/res/drawable-hdpi/top_pane.9.png | Bin 140 -> 0 bytes .../res/drawable-hdpi/top_pane_custom.9.png | Bin 124 -> 0 bytes .../src/main/res/drawable-mdpi/call.png | Bin 501 -> 0 bytes .../src/main/res/drawable-mdpi/check_blue.png | Bin 0 -> 1078 bytes .../main/res/drawable-mdpi/greydivider.9.png | Bin 0 -> 123 bytes .../main/res/drawable-mdpi/greydivider.png | Bin 954 -> 0 bytes .../drawable-mdpi/greydivider_bottom.9.png | Bin 0 -> 113 bytes .../res/drawable-mdpi/ic_ab_back_grey.png | Bin 0 -> 240 bytes .../src/main/res/drawable-mdpi/ic_ab_done.png | Bin 1238 -> 0 bytes .../res/drawable-mdpi/ic_ab_done_gray.png | Bin 1078 -> 0 bytes .../main/res/drawable-mdpi/ic_directory.png | Bin 501 -> 207 bytes .../res/drawable-mdpi/ic_external_storage.png | Bin 330 -> 278 bytes .../res/drawable-mdpi/ic_msg_btn_cross.png | Bin 1171 -> 0 bytes .../drawable-mdpi/ic_msg_btn_cross_custom.png | Bin 275 -> 0 bytes .../drawable-mdpi/ic_profile_send_message.png | Bin 262 -> 0 bytes .../res/drawable-mdpi/ic_send_disabled.png | Bin 381 -> 0 bytes .../src/main/res/drawable-mdpi/ic_storage.png | Bin 253 -> 177 bytes .../main/res/drawable-mdpi/p2r_progress.png | Bin 898 -> 0 bytes .../res/drawable-mdpi/p2r_progress_custom.png | Bin 1897 -> 0 bytes .../src/main/res/drawable-mdpi/phone.png | Bin 1231 -> 0 bytes .../main/res/drawable-mdpi/search_dark.9.png | Bin 0 -> 91 bytes .../drawable-mdpi/search_dark_activated.9.png | Bin 0 -> 958 bytes .../main/res/drawable-mdpi/search_light.9.png | Bin 960 -> 87 bytes .../search_light_activated.9.png | Bin 959 -> 91 bytes .../src/main/res/drawable-mdpi/tooltip.png | Bin 285 -> 0 bytes .../src/main/res/drawable-mdpi/top_pane.9.png | Bin 118 -> 0 bytes .../res/drawable-mdpi/top_pane_custom.9.png | Bin 112 -> 0 bytes .../src/main/res/drawable-xhdpi/call.png | Bin 883 -> 0 bytes .../main/res/drawable-xhdpi/check_blue.png | Bin 0 -> 1238 bytes .../main/res/drawable-xhdpi/greydivider.9.png | Bin 0 -> 151 bytes .../main/res/drawable-xhdpi/greydivider.png | Bin 976 -> 0 bytes .../drawable-xhdpi/greydivider_bottom.9.png | Bin 0 -> 132 bytes .../res/drawable-xhdpi/ic_ab_back_grey.png | Bin 0 -> 336 bytes .../main/res/drawable-xhdpi/ic_ab_done.png | Bin 1316 -> 0 bytes .../res/drawable-xhdpi/ic_ab_done_gray.png | Bin 1233 -> 0 bytes .../main/res/drawable-xhdpi/ic_directory.png | Bin 764 -> 284 bytes .../drawable-xhdpi/ic_external_storage.png | Bin 651 -> 456 bytes .../res/drawable-xhdpi/ic_msg_btn_cross.png | Bin 1297 -> 0 bytes .../ic_msg_btn_cross_custom.png | Bin 392 -> 0 bytes .../ic_profile_send_message.png | Bin 344 -> 0 bytes .../res/drawable-xhdpi/ic_send_disabled.png | Bin 744 -> 0 bytes .../main/res/drawable-xhdpi/ic_storage.png | Bin 414 -> 200 bytes .../main/res/drawable-xhdpi/p2r_progress.png | Bin 1896 -> 0 bytes .../drawable-xhdpi/p2r_progress_custom.png | Bin 3984 -> 0 bytes .../src/main/res/drawable-xhdpi/phone.png | Bin 1571 -> 0 bytes .../main/res/drawable-xhdpi/search_dark.9.png | Bin 0 -> 94 bytes .../search_dark_activated.9.png | Bin 0 -> 94 bytes .../res/drawable-xhdpi/search_light.9.png | Bin 969 -> 92 bytes .../search_light_activated.9.png | Bin 975 -> 94 bytes .../src/main/res/drawable-xhdpi/tooltip.png | Bin 466 -> 0 bytes .../main/res/drawable-xhdpi/top_pane.9.png | Bin 157 -> 0 bytes .../res/drawable-xhdpi/top_pane_custom.9.png | Bin 137 -> 0 bytes .../src/main/res/drawable-xxhdpi/call.png | Bin 1293 -> 0 bytes .../main/res/drawable-xxhdpi/check_blue.png | Bin 0 -> 1396 bytes .../res/drawable-xxhdpi/greydivider.9.png | Bin 0 -> 179 bytes .../main/res/drawable-xxhdpi/greydivider.png | Bin 985 -> 0 bytes .../drawable-xxhdpi/greydivider_bottom.9.png | Bin 0 -> 153 bytes .../res/drawable-xxhdpi/ic_ab_back_grey.png | Bin 0 -> 425 bytes .../main/res/drawable-xxhdpi/ic_ab_done.png | Bin 1525 -> 0 bytes .../res/drawable-xxhdpi/ic_ab_done_gray.png | Bin 1393 -> 0 bytes .../main/res/drawable-xxhdpi/ic_directory.png | Bin 1160 -> 356 bytes .../drawable-xxhdpi/ic_external_storage.png | Bin 673 -> 620 bytes .../res/drawable-xxhdpi/ic_msg_btn_cross.png | Bin 1429 -> 0 bytes .../ic_msg_btn_cross_custom.png | Bin 485 -> 0 bytes .../ic_profile_send_message.png | Bin 443 -> 0 bytes .../res/drawable-xxhdpi/ic_send_disabled.png | Bin 1083 -> 0 bytes .../main/res/drawable-xxhdpi/ic_storage.png | Bin 589 -> 226 bytes .../main/res/drawable-xxhdpi/p2r_progress.png | Bin 2920 -> 0 bytes .../drawable-xxhdpi/p2r_progress_custom.png | Bin 7389 -> 0 bytes .../src/main/res/drawable-xxhdpi/phone.png | Bin 1860 -> 0 bytes .../src/main/res/drawable-xxhdpi/tooltip.png | Bin 698 -> 0 bytes .../main/res/drawable-xxhdpi/top_pane.9.png | Bin 193 -> 0 bytes .../res/drawable-xxhdpi/top_pane_custom.9.png | Bin 180 -> 0 bytes .../drawable/chat_incoming_text_states.xml | 7 - .../drawable/chat_outgoing_text_states.xml | 7 - .../src/main/res/drawable/fast_thumb.xml | 5 - .../src/main/res/drawable/gray_button.xml | 23 - .../res/drawable/launch_button_states.xml | 23 - .../res/drawable/messages_list_divider.xml | 10 - .../res/drawable/messages_list_divider2.xml | 6 - .../src/main/res/drawable/photo_progress.xml | 14 - .../main/res/drawable/photo_progress_chat.xml | 14 - .../src/main/res/drawable/progress_chat.xml | 14 - .../main/res/layout-ar/contact_add_layout.xml | 103 ---- .../src/main/res/layout-ar/document_item.xml | 82 --- .../res/layout-ar/launch_layout_tablet.xml | 128 ----- .../res/layout/chat_header_enc_layout.xml | 14 - .../main/res/layout/chat_header_layout.xml | 14 - .../src/main/res/layout/chat_layout.xml | 32 +- .../main/res/layout/contact_add_layout.xml | 96 ---- .../src/main/res/layout/document_item.xml | 72 --- .../res/layout/document_select_layout.xml | 2 +- .../src/main/res/layout/empty_layout.xml | 5 - .../res/layout/group_create_final_layout.xml | 70 --- .../res/layout/language_select_layout.xml | 32 -- .../main/res/layout/launch_layout_tablet.xml | 120 ----- .../src/main/res/layout/media_layout.xml | 2 +- .../src/main/res/layout/messages_list.xml | 33 +- .../main/res/layout/photo_picker_layout.xml | 2 +- .../res/layout/popup_notification_layout.xml | 233 ++++----- .../src/main/res/layout/popup_text_layout.xml | 1 + TMessagesProj/src/main/res/raw/sound_a.wav | Bin 352828 -> 0 bytes TMessagesProj/src/main/res/values/colors.xml | 3 - TMessagesProj/src/main/res/values/dimens.xml | 5 - TMessagesProj/src/main/res/values/strings.xml | 64 ++- 191 files changed, 3195 insertions(+), 2143 deletions(-) create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Cells/ShadowBottomSectionCell.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Cells/TextDetailDocumentsCell.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Cells/TextInfoPrivacyCell.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/LastSeenActivity.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/LastSeenUsersActivity.java delete mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Views/SettingsSectionLayout.java rename TMessagesProj/src/main/java/org/telegram/ui/Views/{TimerButton.java => TimerDrawable.java} (80%) delete mode 100644 TMessagesProj/src/main/res/anim/slide_down.xml delete mode 100644 TMessagesProj/src/main/res/anim/slide_up.xml delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/call.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/check_blue.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/greydivider.9.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/greydivider.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/greydivider_bottom.9.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/ic_ab_back_grey.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/ic_ab_done.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/ic_ab_done_gray.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-hdpi/ic_directory.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-hdpi/ic_external_storage.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/ic_msg_btn_cross.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/ic_msg_btn_cross_custom.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/ic_profile_send_message.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/ic_send_disabled.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-hdpi/ic_storage.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/p2r_progress.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/p2r_progress_custom.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/phone.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/search_dark.9.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/search_dark_activated.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/search_light.9.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/tooltip.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/top_pane.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/top_pane_custom.9.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/call.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/check_blue.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/greydivider.9.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/greydivider.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/greydivider_bottom.9.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/ic_ab_back_grey.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/ic_ab_done.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/ic_ab_done_gray.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-mdpi/ic_directory.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-mdpi/ic_external_storage.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/ic_msg_btn_cross.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/ic_msg_btn_cross_custom.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/ic_profile_send_message.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/ic_send_disabled.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-mdpi/ic_storage.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/p2r_progress.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/p2r_progress_custom.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/phone.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/search_dark.9.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/search_dark_activated.9.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/tooltip.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/top_pane.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/top_pane_custom.9.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/call.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/check_blue.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/greydivider.9.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/greydivider.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/greydivider_bottom.9.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_back_grey.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_done.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_done_gray.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xhdpi/ic_directory.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xhdpi/ic_external_storage.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/ic_msg_btn_cross.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/ic_msg_btn_cross_custom.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/ic_profile_send_message.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/ic_send_disabled.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xhdpi/ic_storage.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/p2r_progress.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/p2r_progress_custom.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/phone.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/search_dark.9.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/search_dark_activated.9.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/tooltip.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/top_pane.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/top_pane_custom.9.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/call.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/check_blue.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/greydivider.9.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/greydivider.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/greydivider_bottom.9.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_back_grey.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_done.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_done_gray.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xxhdpi/ic_directory.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xxhdpi/ic_external_storage.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/ic_msg_btn_cross.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/ic_msg_btn_cross_custom.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/ic_profile_send_message.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/ic_send_disabled.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xxhdpi/ic_storage.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/p2r_progress.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/p2r_progress_custom.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/phone.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/tooltip.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/top_pane.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/top_pane_custom.9.png delete mode 100644 TMessagesProj/src/main/res/drawable/chat_incoming_text_states.xml delete mode 100644 TMessagesProj/src/main/res/drawable/chat_outgoing_text_states.xml delete mode 100644 TMessagesProj/src/main/res/drawable/fast_thumb.xml delete mode 100644 TMessagesProj/src/main/res/drawable/gray_button.xml delete mode 100644 TMessagesProj/src/main/res/drawable/launch_button_states.xml delete mode 100644 TMessagesProj/src/main/res/drawable/messages_list_divider.xml delete mode 100644 TMessagesProj/src/main/res/drawable/messages_list_divider2.xml delete mode 100644 TMessagesProj/src/main/res/drawable/photo_progress.xml delete mode 100644 TMessagesProj/src/main/res/drawable/photo_progress_chat.xml delete mode 100644 TMessagesProj/src/main/res/drawable/progress_chat.xml delete mode 100644 TMessagesProj/src/main/res/layout-ar/contact_add_layout.xml delete mode 100644 TMessagesProj/src/main/res/layout-ar/document_item.xml delete mode 100644 TMessagesProj/src/main/res/layout-ar/launch_layout_tablet.xml delete mode 100644 TMessagesProj/src/main/res/layout/chat_header_enc_layout.xml delete mode 100644 TMessagesProj/src/main/res/layout/chat_header_layout.xml delete mode 100644 TMessagesProj/src/main/res/layout/contact_add_layout.xml delete mode 100644 TMessagesProj/src/main/res/layout/document_item.xml delete mode 100644 TMessagesProj/src/main/res/layout/empty_layout.xml delete mode 100644 TMessagesProj/src/main/res/layout/group_create_final_layout.xml delete mode 100644 TMessagesProj/src/main/res/layout/language_select_layout.xml delete mode 100644 TMessagesProj/src/main/res/layout/launch_layout_tablet.xml delete mode 100644 TMessagesProj/src/main/res/raw/sound_a.wav delete mode 100644 TMessagesProj/src/main/res/values/dimens.xml diff --git a/TMessagesProj/build.gradle b/TMessagesProj/build.gradle index 8eccd89dd..40415de7a 100644 --- a/TMessagesProj/build.gradle +++ b/TMessagesProj/build.gradle @@ -17,7 +17,7 @@ tasks.withType(JavaCompile) { } dependencies { - compile 'com.android.support:support-v4:20.0.+' + compile 'com.android.support:support-v4:21.0.+' compile 'com.google.android.gms:play-services:3.2.+' compile 'net.hockeyapp.android:HockeySDK:3.0.2' compile 'com.googlecode.mp4parser:isoparser:1.0.+' diff --git a/TMessagesProj/src/main/java/org/telegram/android/AndroidUtilities.java b/TMessagesProj/src/main/java/org/telegram/android/AndroidUtilities.java index ccaf8f101..84f46c41f 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/AndroidUtilities.java +++ b/TMessagesProj/src/main/java/org/telegram/android/AndroidUtilities.java @@ -17,8 +17,10 @@ import android.content.res.Configuration; import android.graphics.Point; import android.graphics.Rect; import android.graphics.Typeface; +import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Environment; +import android.util.StateSet; import android.view.Display; import android.view.Surface; import android.view.View; @@ -491,4 +493,23 @@ public class AndroidUtilities { } } } + + public static void clearDrawableAnimation(View view) { + if (Build.VERSION.SDK_INT < 21 || view == null) { + return; + } + Drawable drawable = null; + if (view instanceof ListView) { + drawable = ((ListView) view).getSelector(); + if (drawable != null) { + drawable.setState(StateSet.NOTHING); + } + } else { + drawable = view.getBackground(); + if (drawable != null) { + drawable.setState(StateSet.NOTHING); + drawable.jumpToCurrentState(); + } + } + } } diff --git a/TMessagesProj/src/main/java/org/telegram/android/ContactsController.java b/TMessagesProj/src/main/java/org/telegram/android/ContactsController.java index 45a85ecf9..ba0e4c0ad 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/ContactsController.java +++ b/TMessagesProj/src/main/java/org/telegram/android/ContactsController.java @@ -54,6 +54,11 @@ public class ContactsController { private String inviteText; private boolean updatingInviteText = false; + private int loadingDeleteInfo = 0; + private int deleteAccountTTL; + private int loadingLastSeenInfo = 0; + private ArrayList privacyRules = null; + public static class Contact { public int id; public ArrayList phones = new ArrayList(); @@ -119,6 +124,10 @@ public class ContactsController { contactsLoaded = false; contactsBookLoaded = false; lastContactsVersions = ""; + loadingDeleteInfo = 0; + deleteAccountTTL = 0; + loadingLastSeenInfo = 0; + privacyRules = null; } public void checkInviteText() { @@ -1568,6 +1577,81 @@ public class ContactsController { }, true, RPCRequest.RPCRequestClassGeneric); } + public void loadPrivacySettings() { + if (loadingDeleteInfo == 0) { + loadingDeleteInfo = 1; + TLRPC.TL_account_getAccountTTL req = new TLRPC.TL_account_getAccountTTL(); + ConnectionsManager.getInstance().performRpc(req, new RPCRequest.RPCRequestDelegate() { + @Override + public void run(final TLObject response, final TLRPC.TL_error error) { + AndroidUtilities.runOnUIThread(new Runnable() { + @Override + public void run() { + if (error == null) { + TLRPC.TL_accountDaysTTL ttl = (TLRPC.TL_accountDaysTTL) response; + deleteAccountTTL = ttl.days; + loadingDeleteInfo = 2; + } else { + loadingDeleteInfo = 0; + } + NotificationCenter.getInstance().postNotificationName(NotificationCenter.privacyRulesUpdated); + } + }); + } + }); + } + if (loadingLastSeenInfo == 0) { + loadingLastSeenInfo = 1; + TLRPC.TL_account_getPrivacy req = new TLRPC.TL_account_getPrivacy(); + req.key = new TLRPC.TL_inputPrivacyKeyStatusTimestamp(); + ConnectionsManager.getInstance().performRpc(req, new RPCRequest.RPCRequestDelegate() { + @Override + public void run(final TLObject response, final TLRPC.TL_error error) { + AndroidUtilities.runOnUIThread(new Runnable() { + @Override + public void run() { + if (error == null) { + TLRPC.TL_account_privacyRules rules = (TLRPC.TL_account_privacyRules) response; + MessagesController.getInstance().putUsers(rules.users, false); + privacyRules = rules.rules; + loadingLastSeenInfo = 2; + } else { + loadingLastSeenInfo = 0; + } + NotificationCenter.getInstance().postNotificationName(NotificationCenter.privacyRulesUpdated); + } + }); + } + }); + } + NotificationCenter.getInstance().postNotificationName(NotificationCenter.privacyRulesUpdated); + } + + public void setDeleteAccountTTL(int ttl) { + deleteAccountTTL = ttl; + } + + public int getDeleteAccountTTL() { + return deleteAccountTTL; + } + + public boolean getLoadingDeleteInfo() { + return loadingDeleteInfo != 2; + } + + public boolean getLoadingLastSeenInfo() { + return loadingLastSeenInfo != 2; + } + + public ArrayList getPrivacyRules() { + return privacyRules; + } + + public void setPrivacyRules(ArrayList rules) { + privacyRules = rules; + NotificationCenter.getInstance().postNotificationName(NotificationCenter.privacyRulesUpdated); + } + public static String formatName(String firstName, String lastName) { String result = null; if (LocaleController.nameDisplayOrder == 1) { diff --git a/TMessagesProj/src/main/java/org/telegram/android/ImageReceiver.java b/TMessagesProj/src/main/java/org/telegram/android/ImageReceiver.java index 36aeb3551..21229633d 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/ImageReceiver.java +++ b/TMessagesProj/src/main/java/org/telegram/android/ImageReceiver.java @@ -427,4 +427,8 @@ public class ImageReceiver { bitmapRect = null; } } + + public int getRoundRadius() { + return roundRadius; + } } diff --git a/TMessagesProj/src/main/java/org/telegram/android/LocaleController.java b/TMessagesProj/src/main/java/org/telegram/android/LocaleController.java index fb20c9484..6e47fe014 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/LocaleController.java +++ b/TMessagesProj/src/main/java/org/telegram/android/LocaleController.java @@ -783,7 +783,7 @@ public class LocaleController { public static String formatUserStatus(TLRPC.User user) { if (user == null || user.status == null || user.status.expires == 0 || user instanceof TLRPC.TL_userDeleted || user instanceof TLRPC.TL_userEmpty) { - return getString("Offline", R.string.Offline); + return getString("ALongTimeAgo", R.string.ALongTimeAgo); } else { int currentTime = ConnectionsManager.getInstance().getCurrentTime(); if (user.status.expires > currentTime) { @@ -791,7 +791,13 @@ public class LocaleController { } else { if (user.status.expires == -1) { return getString("Invisible", R.string.Invisible); - } else { + } else if (user.status.expires == -100) { + return getString("Lately", R.string.Lately); + } else if (user.status.expires == -101) { + return getString("WithinAWeek", R.string.WithinAWeek); + } else if (user.status.expires == -102) { + return getString("WithinAMonth", R.string.WithinAMonth); + } else { return formatDateOnline(user.status.expires); } } diff --git a/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java b/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java index f6332c27c..27fb562fd 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java +++ b/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java @@ -60,7 +60,6 @@ public class MessagesController implements NotificationCenter.NotificationCenter public boolean loadingBlockedUsers = false; public ArrayList blockedUsers = new ArrayList(); - public HashMap hidenAddToContacts = new HashMap(); private HashMap acceptingChats = new HashMap(); private ArrayList updatesQueue = new ArrayList(); private ArrayList pendingEncMessagesToDelete = new ArrayList(); @@ -317,7 +316,6 @@ public class MessagesController implements NotificationCenter.NotificationCenter printingStrings.clear(); totalDialogsCount = 0; lastPrintingStringCount = 0; - hidenAddToContacts.clear(); updatesQueue.clear(); pendingEncMessagesToDelete.clear(); delayedEncryptedChatUpdates.clear(); @@ -391,7 +389,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter if (user == null) { return false; } - fromCache = fromCache && user.id / 1000 != 333; + fromCache = fromCache && user.id / 1000 != 333 && user.id != 777000; TLRPC.User oldUser = users.get(user.id); if (!fromCache) { users.put(user.id, user); @@ -758,6 +756,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter if (user != null) { user.photo = UserConfig.getCurrentUser().photo; } + NotificationCenter.getInstance().postNotificationName(NotificationCenter.mainUserInfoChanged); NotificationCenter.getInstance().postNotificationName(NotificationCenter.updateInterfaces, MessagesController.UPDATE_MASK_ALL); ConnectionsManager.getInstance().performRpc(req, new RPCRequest.RPCRequestDelegate() { @Override @@ -1379,7 +1378,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter if (!isCache) { MessagesStorage.getInstance().putMessages(messagesRes, dialog_id); } - if (lower_id != 0 && isCache && messagesRes.messages.size() == 0 && (load_type == 0 || load_type == 3)) { + if (lower_id != 0 && isCache && messagesRes.messages.size() == 0 && (load_type == 0 || load_type == 2 || load_type == 3)) { AndroidUtilities.runOnUIThread(new Runnable() { @Override public void run() { @@ -3242,6 +3241,8 @@ public class MessagesController implements NotificationCenter.NotificationCenter } arr.add(obj); pushMessages.add(obj); + } else if (update instanceof TLRPC.TL_updatePrivacy) { + updatesOnMainThread.add(update); } } if (!messages.isEmpty()) { @@ -3299,7 +3300,18 @@ public class MessagesController implements NotificationCenter.NotificationCenter TLRPC.User toDbUser = new TLRPC.User(); toDbUser.id = update.user_id; TLRPC.User currentUser = getUser(update.user_id); - if (update instanceof TLRPC.TL_updateUserStatus) { + if (update instanceof TLRPC.TL_updatePrivacy) { + if (update.key instanceof TLRPC.TL_privacyKeyStatusTimestamp) { + ContactsController.getInstance().setPrivacyRules(update.rules); + } + } else if (update instanceof TLRPC.TL_updateUserStatus) { + if (update.status instanceof TLRPC.TL_userStatusRecently) { + update.status.expires = -100; + } else if (update.status instanceof TLRPC.TL_userStatusLastWeek) { + update.status.expires = -101; + } else if (update.status instanceof TLRPC.TL_userStatusLastMonth) { + update.status.expires = -102; + } if (currentUser != null) { currentUser.id = update.user_id; currentUser.status = update.status; diff --git a/TMessagesProj/src/main/java/org/telegram/android/NotificationCenter.java b/TMessagesProj/src/main/java/org/telegram/android/NotificationCenter.java index d85db21ce..661e5ff21 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/NotificationCenter.java +++ b/TMessagesProj/src/main/java/org/telegram/android/NotificationCenter.java @@ -41,6 +41,8 @@ public class NotificationCenter { public static final int hideEmojiKeyboard = 30; public static final int stopEncodingService = 31; public static final int didCreatedNewDeleteTask = 32; + public static final int mainUserInfoChanged = 33; + public static final int privacyRulesUpdated = 34; public static final int wallpapersDidLoaded = 171; public static final int closeOtherAppActivities = 702; 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 2c0c69e97..2fc145210 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBar.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBar.java @@ -17,7 +17,6 @@ import android.view.Gravity; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; -import android.view.ViewGroup; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; @@ -38,8 +37,6 @@ public class ActionBar extends FrameLayout { } } - private static boolean withStatusBar = Build.VERSION.SDK_INT >= 21; - private FrameLayout titleFrameLayout; private ImageView backButtonImageView; private TextView titleTextView; @@ -47,6 +44,7 @@ public class ActionBar extends FrameLayout { private ActionBarMenu menu; private ActionBarMenu actionMode; private View actionOverlay; + private boolean occupyStatusBar = Build.VERSION.SDK_INT >= 21; protected boolean isSearchFieldVisible; protected int itemsBackgroundResourceId; @@ -64,9 +62,6 @@ public class ActionBar extends FrameLayout { layoutParams.width = LayoutParams.WRAP_CONTENT; layoutParams.height = LayoutParams.FILL_PARENT; layoutParams.gravity = Gravity.TOP | Gravity.LEFT; - if (withStatusBar) { - layoutParams.topMargin = AndroidUtilities.statusBarHeight; - } titleFrameLayout.setLayoutParams(layoutParams); titleFrameLayout.setPadding(0, 0, AndroidUtilities.dp(4), 0); titleFrameLayout.setEnabled(false); @@ -162,8 +157,9 @@ public class ActionBar extends FrameLayout { subTitleTextView.setLayoutParams(layoutParams); } - ViewGroup.LayoutParams layoutParams1 = titleFrameLayout.getLayoutParams(); + MarginLayoutParams layoutParams1 = (MarginLayoutParams) titleFrameLayout.getLayoutParams(); layoutParams1.width = x + maxTextWidth + (isSearchFieldVisible ? 0 : AndroidUtilities.dp(6)); + layoutParams1.topMargin = occupyStatusBar ? AndroidUtilities.statusBarHeight : 0; titleFrameLayout.setLayoutParams(layoutParams1); } @@ -175,9 +171,7 @@ public class ActionBar extends FrameLayout { layoutParams.width = isSearchFieldVisible ? LayoutParams.MATCH_PARENT : LayoutParams.WRAP_CONTENT; layoutParams.height = height; layoutParams.leftMargin = isSearchFieldVisible ? AndroidUtilities.dp(54) : 0; - if (withStatusBar) { - layoutParams.topMargin = AndroidUtilities.statusBarHeight; - } + layoutParams.topMargin = occupyStatusBar ? AndroidUtilities.statusBarHeight : 0; menu.setLayoutParams(layoutParams); menu.measure(width, height); } @@ -330,9 +324,7 @@ public class ActionBar extends FrameLayout { FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams)view.getLayoutParams(); layoutParams.width = LayoutParams.FILL_PARENT; layoutParams.height = LayoutParams.FILL_PARENT; - if (withStatusBar) { - layoutParams.topMargin = AndroidUtilities.statusBarHeight; - } + layoutParams.topMargin = occupyStatusBar ? AndroidUtilities.statusBarHeight : 0; view.setLayoutParams(layoutParams); } @@ -343,13 +335,11 @@ public class ActionBar extends FrameLayout { actionMode = new ActionBarMenu(getContext(), this); actionMode.setBackgroundResource(R.drawable.editheader); addView(actionMode); + actionMode.setPadding(0, occupyStatusBar ? AndroidUtilities.statusBarHeight : 0, 0, 0); FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams)actionMode.getLayoutParams(); layoutParams.height = LayoutParams.FILL_PARENT; layoutParams.width = LayoutParams.FILL_PARENT; layoutParams.gravity = Gravity.RIGHT; - if (withStatusBar) { - layoutParams.topMargin = AndroidUtilities.statusBarHeight; - } actionMode.setLayoutParams(layoutParams); actionMode.setVisibility(GONE); return actionMode; @@ -414,9 +404,7 @@ public class ActionBar extends FrameLayout { positionMenu(MeasureSpec.getSize(widthMeasureSpec), actionBarHeight); positionTitle(MeasureSpec.getSize(widthMeasureSpec), actionBarHeight); positionBackOverlay(MeasureSpec.getSize(widthMeasureSpec), actionBarHeight); - if (Build.VERSION.SDK_INT >= 21) { - actionBarHeight += AndroidUtilities.statusBarHeight; - } + actionBarHeight += occupyStatusBar ? AndroidUtilities.statusBarHeight : 0; super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(actionBarHeight + extraHeight, MeasureSpec.EXACTLY)); } @@ -495,14 +483,20 @@ public class ActionBar extends FrameLayout { layoutParams.height = LayoutParams.MATCH_PARENT; actionOverlay.setLayoutParams(layoutParams); actionOverlay.measure(widthMeasureSpec, heightMeasureSpec); - if (withStatusBar) { - layoutParams.topMargin = AndroidUtilities.statusBarHeight; - } + layoutParams.topMargin = occupyStatusBar ? AndroidUtilities.statusBarHeight : 0; layoutParams.width = Math.min(actionOverlay.getMeasuredWidth() + AndroidUtilities.dp(4), widthMeasureSpec - (menu != null ? menu.getMeasuredWidth() : 0)); actionOverlay.setLayoutParams(layoutParams); } } + public void setOccupyStatusBar(boolean value) { + occupyStatusBar = value; + } + + public boolean getOccupyStatusBar() { + return occupyStatusBar; + } + public void setItemsBackground(int resourceId) { itemsBackgroundResourceId = resourceId; if (backButtonImageView != null) { 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 6a9bb5b03..dc1641d7d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarLayout.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarLayout.java @@ -56,14 +56,46 @@ public class ActionBarLayout extends FrameLayout { setOrientation(VERTICAL); } - /*@Override + @Override protected boolean drawChild(Canvas canvas, View child, long drawingTime) { - int saveCount = canvas.save(); - canvas.clipRect(0, 0, getWidth(), getHeight()); - boolean result = super.drawChild(canvas, child, drawingTime); - canvas.restoreToCount(saveCount); - return result; - }*/ + if (child instanceof ActionBar) { + return super.drawChild(canvas, child, drawingTime); + } else { + boolean wasActionBar = false; + int actionBarHeight = 0; + int childCount = getChildCount(); + for (int a = 0; a < childCount; a++) { + View view = getChildAt(a); + if (view == child) { + continue; + } + if (view instanceof ActionBar) { + actionBarHeight = view.getMeasuredHeight(); + wasActionBar = true; + break; + } + } + /*if (!wasActionBar) { + if (child instanceof ViewGroup) { + ViewGroup viewGroup = (ViewGroup) child; + childCount = viewGroup.getChildCount(); + for (int a = 0; a < childCount; a++) { + View possibleActionBar = viewGroup.getChildAt(a); + if (possibleActionBar instanceof ActionBar) { + actionBarHeight = possibleActionBar.getMeasuredHeight(); + break; + } + } + } + }*/ + boolean result = super.drawChild(canvas, child, drawingTime); + if (actionBarHeight != 0 && headerShadowDrawable != null) { + headerShadowDrawable.setBounds(0, actionBarHeight, getMeasuredWidth(), actionBarHeight + headerShadowDrawable.getIntrinsicHeight()); + headerShadowDrawable.draw(canvas); + } + return result; + } + } } private static Drawable headerShadowDrawable; @@ -79,21 +111,22 @@ public class ActionBarLayout extends FrameLayout { public float innerTranslationX; - private boolean maybeStartTracking = false; - protected boolean startedTracking = false; + private boolean maybeStartTracking; + protected boolean startedTracking; private int startedTrackingX; private int startedTrackingY; - protected boolean animationInProgress = false; - private VelocityTracker velocityTracker = null; - private boolean beginTrackingSent = false; - private boolean transitionAnimationInProgress = false; + protected boolean animationInProgress; + private VelocityTracker velocityTracker; + private boolean beginTrackingSent; + private boolean transitionAnimationInProgress; private long transitionAnimationStartTime; - private boolean inActionMode = false; + private boolean inActionMode; private int startedTrackingPointerId; - private Runnable onCloseAnimationEndRunnable = null; - private Runnable onOpenAnimationEndRunnable = null; - private boolean useAlphaAnimations = false; + private Runnable onCloseAnimationEndRunnable; + private Runnable onOpenAnimationEndRunnable; + private boolean useAlphaAnimations; private View backgroundView; + private boolean removeActionBarExtraHeight; private ActionBarLayoutDelegate delegate = null; protected Activity parentActivity = null; @@ -106,6 +139,7 @@ public class ActionBarLayout extends FrameLayout { if (layerShadowDrawable == null) { layerShadowDrawable = getResources().getDrawable(R.drawable.layer_shadow); + headerShadowDrawable = getResources().getDrawable(R.drawable.header_shadow); scrimPaint = new Paint(); } } @@ -113,7 +147,6 @@ public class ActionBarLayout extends FrameLayout { public void init(ArrayList stack) { fragmentsStack = stack; containerViewBack = new LinearLayoutContainer(parentActivity); - //containerViewBack.setOrientation(LinearLayout.VERTICAL); addView(containerViewBack); FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) containerViewBack.getLayoutParams(); layoutParams.width = LayoutParams.MATCH_PARENT; @@ -122,7 +155,6 @@ public class ActionBarLayout extends FrameLayout { containerViewBack.setLayoutParams(layoutParams); containerView = new LinearLayoutContainer(parentActivity); - //containerView.setOrientation(LinearLayout.VERTICAL); addView(containerView); layoutParams = (FrameLayout.LayoutParams) containerView.getLayoutParams(); layoutParams.width = LayoutParams.MATCH_PARENT; @@ -199,10 +231,10 @@ public class ActionBarLayout extends FrameLayout { @Override protected boolean drawChild(Canvas canvas, View child, long drawingTime) { - int width = getWidth(); - int translationX = (int) innerTranslationX; - int clipLeft = 0; - int clipRight = width; + int width = getWidth() - getPaddingLeft() - getPaddingRight(); + int translationX = (int) innerTranslationX + getPaddingRight(); + int clipLeft = getPaddingLeft(); + int clipRight = width + getPaddingLeft(); if (child == containerViewBack) { clipRight = translationX; @@ -296,6 +328,9 @@ public class ActionBarLayout extends FrameLayout { if (parent != null) { parent.removeView(lastFragment.actionBar); } + if (removeActionBarExtraHeight) { + lastFragment.actionBar.setOccupyStatusBar(false); + } containerViewBack.addView(lastFragment.actionBar); } containerViewBack.addView(fragmentView); @@ -513,15 +548,15 @@ public class ActionBarLayout extends FrameLayout { NotificationCenter.getInstance().postNotificationName(NotificationCenter.hideEmojiKeyboard); } boolean needAnimation = Build.VERSION.SDK_INT > 10 && !forceWithoutAnimation && parentActivity.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE).getBoolean("view_animations", true); - if (useAlphaAnimations && fragmentsStack.size() == 0) { - needAnimation = false; - } final BaseFragment currentFragment = !fragmentsStack.isEmpty() ? fragmentsStack.get(fragmentsStack.size() - 1) : null; fragment.setParentLayout(this); View fragmentView = fragment.createView(parentActivity.getLayoutInflater(), null); if (fragment.needAddActionBar() && fragment.actionBar != null) { + if (removeActionBarExtraHeight) { + fragment.actionBar.setOccupyStatusBar(false); + } containerViewBack.addView(fragment.actionBar); } containerViewBack.addView(fragmentView); @@ -553,8 +588,6 @@ public class ActionBarLayout extends FrameLayout { if (needAnimation) { if (useAlphaAnimations && fragmentsStack.size() == 1) { presentFragmentInternalRemoveOld(removeLast, currentFragment); - AnimatorSetProxy animatorSet = new AnimatorSetProxy(); - animatorSet.playTogether(); ArrayList animators = new ArrayList(); animators.add(ObjectAnimatorProxy.ofFloat(this, "alpha", 0.0f, 1.0f)); @@ -639,9 +672,6 @@ public class ActionBarLayout extends FrameLayout { AndroidUtilities.hideKeyboard(parentActivity.getCurrentFocus()); } boolean needAnimation = Build.VERSION.SDK_INT > 10 && animated && parentActivity.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE).getBoolean("view_animations", true); - if (useAlphaAnimations && fragmentsStack.size() == 1) { - needAnimation = false; - } final BaseFragment currentFragment = fragmentsStack.get(fragmentsStack.size() - 1); BaseFragment previousFragment = null; if (fragmentsStack.size() > 1) { @@ -657,6 +687,9 @@ public class ActionBarLayout extends FrameLayout { previousFragment.setParentLayout(this); View fragmentView = previousFragment.createView(parentActivity.getLayoutInflater(), null); if (previousFragment.needAddActionBar() && previousFragment.actionBar != null) { + if (removeActionBarExtraHeight) { + previousFragment.actionBar.setOccupyStatusBar(false); + } containerView.addView(previousFragment.actionBar); } containerView.addView(fragmentView); @@ -700,7 +733,7 @@ public class ActionBarLayout extends FrameLayout { currentAnimation.start(); } } else { - if (needAnimation && useAlphaAnimations) { + if (useAlphaAnimations) { transitionAnimationStartTime = System.currentTimeMillis(); transitionAnimationInProgress = true; @@ -712,6 +745,9 @@ public class ActionBarLayout extends FrameLayout { if (backgroundView != null) { backgroundView.setVisibility(GONE); } + if (drawerLayoutContainer != null) { + drawerLayoutContainer.setAllowOpenDrawer(true); + } } }; @@ -750,6 +786,9 @@ public class ActionBarLayout extends FrameLayout { previousFragment.setParentLayout(this); View fragmentView = previousFragment.createView(parentActivity.getLayoutInflater(), null); if (previousFragment.needAddActionBar() && previousFragment.actionBar != null) { + if (removeActionBarExtraHeight) { + previousFragment.actionBar.setOccupyStatusBar(false); + } containerView.addView(previousFragment.actionBar); } containerView.addView(fragmentView); @@ -891,4 +930,8 @@ public class ActionBarLayout extends FrameLayout { public DrawerLayoutContainer getDrawerLayoutContainer() { return drawerLayoutContainer; } + + public void setRemoveActionBarExtraHeight(boolean value) { + removeActionBarExtraHeight = value; + } } 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 fe6781241..8af54572a 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenu.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenu.java @@ -9,6 +9,7 @@ package org.telegram.ui.ActionBar; import android.content.Context; +import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; @@ -58,19 +59,31 @@ public class ActionBarMenu extends LinearLayout { return view; } + public ActionBarMenuItem addItem(int id, Drawable drawable) { + return addItem(id, 0, parentActionBar.itemsBackgroundResourceId, drawable, AndroidUtilities.dp(48)); + } + public ActionBarMenuItem addItem(int id, int icon) { return addItem(id, icon, parentActionBar.itemsBackgroundResourceId); } public ActionBarMenuItem addItem(int id, int icon, int backgroundResource) { - return addItem(id, icon, parentActionBar.itemsBackgroundResourceId, AndroidUtilities.dp(48)); + return addItem(id, icon, backgroundResource, null, AndroidUtilities.dp(48)); } - public ActionBarMenuItem addItem(int id, int icon, int backgroundResource, int width) { + public ActionBarMenuItem addItemWithWidth(int id, int icon, int width) { + return addItem(id, icon, parentActionBar.itemsBackgroundResourceId, null, width); + } + + public ActionBarMenuItem addItem(int id, int icon, int backgroundResource, Drawable drawable, int width) { ActionBarMenuItem menuItem = new ActionBarMenuItem(getContext(), this, backgroundResource); menuItem.setTag(id); menuItem.setScaleType(ImageView.ScaleType.CENTER); - menuItem.setImageResource(icon); + if (drawable != null) { + menuItem.setImageDrawable(drawable); + } else { + menuItem.setImageResource(icon); + } addView(menuItem); LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams)menuItem.getLayoutParams(); layoutParams.height = FrameLayout.LayoutParams.MATCH_PARENT; 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 92d0a1434..ba83613bc 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenuItem.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenuItem.java @@ -54,7 +54,7 @@ public class ActionBarMenuItem extends ImageView { private View selectedMenuView; private Runnable showMenuRunnable; private boolean showFromBottom; - private int height; + private int menuHeight = AndroidUtilities.dp(16); public ActionBarMenuItem(Context context, ActionBarMenu menu, int background) { super(context); @@ -135,7 +135,7 @@ public class ActionBarMenuItem extends ImageView { showFromBottom = value; } - public void addSubItem(int id, String text, int icon) { + public TextView addSubItem(int id, String text, int icon) { if (popupLayout == null) { rect = new Rect(); location = new int[2]; @@ -166,7 +166,7 @@ public class ActionBarMenuItem extends ImageView { }); } TextView textView = new TextView(getContext()); - textView.setTextColor(0xff000000); + textView.setTextColor(0xff212121); textView.setBackgroundResource(R.drawable.list_selector); if (!LocaleController.isRTL) { textView.setGravity(Gravity.CENTER_VERTICAL); @@ -203,6 +203,8 @@ public class ActionBarMenuItem extends ImageView { } } }); + menuHeight += layoutParams.height; + return textView; } public boolean hasSubMenu() { @@ -245,25 +247,31 @@ public class ActionBarMenuItem extends ImageView { popupWindow.setFocusable(true); if (popupLayout.getMeasuredWidth() == 0) { if (showFromBottom) { - popupWindow.showAsDropDown(this, -popupLayout.getMeasuredWidth() + getMeasuredWidth() + AndroidUtilities.dp(12), -popupLayout.getMeasuredHeight() + AndroidUtilities.dp(12)); - popupWindow.update(this, -popupLayout.getMeasuredWidth() + getMeasuredWidth() + AndroidUtilities.dp(12), -popupLayout.getMeasuredHeight() + AndroidUtilities.dp(12), -1, -1); - height = popupLayout.getMeasuredHeight(); + popupWindow.showAsDropDown(this, -popupLayout.getMeasuredWidth() + getMeasuredWidth() + AndroidUtilities.dp(14), getBottomOffsetY()); + popupWindow.update(this, -popupLayout.getMeasuredWidth() + getMeasuredWidth() + AndroidUtilities.dp(14), getBottomOffsetY(), -1, -1); } else { popupWindow.showAsDropDown(this, parentMenu.parentActionBar.getMeasuredWidth() - popupLayout.getMeasuredWidth() - getLeft() - parentMenu.getLeft(), -getMeasuredHeight()); popupWindow.update(this, parentMenu.parentActionBar.getMeasuredWidth() - popupLayout.getMeasuredWidth() - getLeft() - parentMenu.getLeft(), -getMeasuredHeight(), -1, -1); } } else { if (showFromBottom) { - if (height == 0) { - height = popupLayout.getMeasuredHeight(); - } - popupWindow.showAsDropDown(this, -popupLayout.getMeasuredWidth() + getMeasuredWidth() + AndroidUtilities.dp(12), -height + AndroidUtilities.dp(12)); + popupWindow.showAsDropDown(this, -popupLayout.getMeasuredWidth() + getMeasuredWidth() + AndroidUtilities.dp(14), getBottomOffsetY()); } else { popupWindow.showAsDropDown(this, parentMenu.parentActionBar.getMeasuredWidth() - popupLayout.getMeasuredWidth() - getLeft() - parentMenu.getLeft(), -getMeasuredHeight()); } } } + private int getBottomOffsetY() { + getLocationOnScreen(location); + int diff = location[1] - (Build.VERSION.SDK_INT >= 21 ? AndroidUtilities.statusBarHeight : 0) + getMeasuredHeight() - menuHeight; + int y = AndroidUtilities.dp(8) - menuHeight; + if (diff < 0) { + y -= diff; + } + return y; + } + public boolean toggleSearch() { if (searchField == null) { return false; @@ -407,7 +415,7 @@ public class ActionBarMenuItem extends ImageView { super.onLayout(changed, left, top, right, bottom); if (popupWindow != null && popupWindow.isShowing()) { if (showFromBottom) { - popupWindow.update(this, -popupLayout.getMeasuredWidth() + getMeasuredWidth() + AndroidUtilities.dp(12), -height + AndroidUtilities.dp(12), -1, -1); + popupWindow.update(this, -popupLayout.getMeasuredWidth() + getMeasuredWidth() + AndroidUtilities.dp(14), getBottomOffsetY(), -1, -1); } else { popupWindow.update(this, parentMenu.parentActionBar.getMeasuredWidth() - popupLayout.getMeasuredWidth() - getLeft() - parentMenu.getLeft(), -getMeasuredHeight(), -1, -1); } 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 d67db6c35..aeada83fb 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/DrawerLayoutContainer.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/DrawerLayoutContainer.java @@ -320,7 +320,7 @@ public class DrawerLayoutContainer extends FrameLayout { } } } - if (startedTracking) { + if (startedTracking || drawerPosition != 0 && drawerPosition != drawerLayout.getMeasuredWidth()) { float velX = velocityTracker.getXVelocity(); float velY = velocityTracker.getYVelocity(); boolean backAnimation = drawerPosition < drawerLayout.getMeasuredWidth() / 2.0f && (velX < 1500 || Math.abs(velX) < Math.abs(velY)) || velX < 0 && Math.abs(velX) >= 1500; @@ -458,9 +458,11 @@ public class DrawerLayoutContainer extends FrameLayout { canvas.drawRect(clipLeft, 0, clipRight, getHeight(), scrimPaint); } else if (shadowLeft != null) { final float alpha = Math.max(0, Math.min((float) drawerPosition / AndroidUtilities.dp(20), 1.0f)); - shadowLeft.setBounds(drawerPosition, child.getTop(), drawerPosition + shadowLeft.getIntrinsicWidth(), child.getBottom()); - shadowLeft.setAlpha((int) (0xff * alpha)); - shadowLeft.draw(canvas); + if (alpha != 0) { + shadowLeft.setBounds(drawerPosition, child.getTop(), drawerPosition + shadowLeft.getIntrinsicWidth(), child.getBottom()); + shadowLeft.setAlpha((int) (0xff * alpha)); + shadowLeft.draw(canvas); + } } return result; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/ContactsSearchAdapter.java b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/ContactsSearchAdapter.java index aa68e3572..d9999a6ae 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/ContactsSearchAdapter.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/ContactsSearchAdapter.java @@ -247,6 +247,7 @@ public class ContactsSearchAdapter extends BaseContactsSearchAdapter { ((UserCell) view).setChecked(checkedMap.containsKey(user.id)); } } else { + ((ProfileSearchCell) view).setData(user, null, null, name, username); ((ProfileSearchCell) view).useSeparator = (i != getCount() - 1 && i != searchResult.size() - 1); if (ignoreUsers != null) { if (ignoreUsers.containsKey(user.id)) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/AnimationCompat/AnimatorSetProxy.java b/TMessagesProj/src/main/java/org/telegram/ui/AnimationCompat/AnimatorSetProxy.java index be53d82d4..50ac0c1d1 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/AnimationCompat/AnimatorSetProxy.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/AnimationCompat/AnimatorSetProxy.java @@ -18,12 +18,33 @@ import org.telegram.ui.Animation.AnimatorListenerAdapter10; import org.telegram.ui.Animation.AnimatorSet10; import org.telegram.ui.Animation.View10; +import java.lang.reflect.Array; import java.util.ArrayList; -import java.util.Arrays; public class AnimatorSetProxy { + private Object animatorSet; + public static T[] copyOf(U[] original, int newLength, Class newType) { + return copyOfRange(original, 0, newLength, newType); + } + + @SuppressWarnings("unchecked") + public static T[] copyOfRange(U[] original, int start, int end, Class newType) { + if (start > end) { + throw new IllegalArgumentException(); + } + int originalLength = original.length; + if (start < 0 || start > originalLength) { + throw new ArrayIndexOutOfBoundsException(); + } + int resultLength = end - start; + int copyLength = Math.min(resultLength, originalLength - start); + T[] result = (T[]) Array.newInstance(newType.getComponentType(), resultLength); + System.arraycopy(original, start, result, 0, copyLength); + return result; + } + public AnimatorSetProxy() { if (View10.NEED_PROXY) { animatorSet = new AnimatorSet10(); @@ -32,12 +53,13 @@ public class AnimatorSetProxy { } } + @SuppressWarnings("unchecked") public void playTogether(Object... items) { if (View10.NEED_PROXY) { - Animator10[] animators = Arrays.copyOf(items, items.length, Animator10[].class); + Animator10[] animators = copyOf(items, items.length, Animator10[].class); ((AnimatorSet10) animatorSet).playTogether(animators); } else { - Animator[] animators = Arrays.copyOf(items, items.length, Animator[].class); + Animator[] animators = copyOf(items, items.length, Animator[].class); ((AnimatorSet) animatorSet).playTogether(animators); } } @@ -98,4 +120,9 @@ public class AnimatorSetProxy { ((AnimatorSet) animatorSet).setInterpolator(interpolator); } } + + @Override + public boolean equals(Object o) { + return animatorSet == o; + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/AnimationCompat/ObjectAnimatorProxy.java b/TMessagesProj/src/main/java/org/telegram/ui/AnimationCompat/ObjectAnimatorProxy.java index cd4df17e9..d4432f094 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/AnimationCompat/ObjectAnimatorProxy.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/AnimationCompat/ObjectAnimatorProxy.java @@ -8,9 +8,11 @@ package org.telegram.ui.AnimationCompat; +import android.animation.AnimatorListenerAdapter; import android.animation.ObjectAnimator; import android.view.animation.Interpolator; +import org.telegram.ui.Animation.AnimatorListenerAdapter10; import org.telegram.ui.Animation.ObjectAnimator10; import org.telegram.ui.Animation.View10; @@ -110,4 +112,13 @@ public class ObjectAnimatorProxy { ((ObjectAnimator) objectAnimator).cancel(); } } + + public ObjectAnimatorProxy addListener(AnimatorListenerAdapterProxy listener) { + if (View10.NEED_PROXY) { + ((ObjectAnimator10) objectAnimator).addListener((AnimatorListenerAdapter10) listener.animatorListenerAdapter); + } else { + ((ObjectAnimator) objectAnimator).addListener((AnimatorListenerAdapter) listener.animatorListenerAdapter); + } + return this; + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/BlockedUsersActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/BlockedUsersActivity.java index 5d361b094..421300773 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/BlockedUsersActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/BlockedUsersActivity.java @@ -38,6 +38,7 @@ import org.telegram.ui.ActionBar.ActionBarMenu; import org.telegram.ui.ActionBar.BaseFragment; public class BlockedUsersActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate, ContactsActivity.ContactsActivityDelegate { + private ListView listView; private ListAdapter listViewAdapter; private FrameLayout progressView; @@ -93,7 +94,7 @@ public class BlockedUsersActivity extends BaseFragment implements NotificationCe emptyTextView = new TextView(getParentActivity()); emptyTextView.setTextColor(0xff808080); - emptyTextView.setTextSize(24); + emptyTextView.setTextSize(20); emptyTextView.setGravity(Gravity.CENTER); emptyTextView.setVisibility(View.INVISIBLE); emptyTextView.setText(LocaleController.getString("NoBlocked", R.string.NoBlocked)); 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 8570dc306..2f12ebf40 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatActionCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatActionCell.java @@ -74,6 +74,7 @@ public class ChatActionCell extends BaseCell { textPaint.linkColor = 0xffffffff; } imageReceiver = new ImageReceiver(this); + imageReceiver.setRoundRadius(AndroidUtilities.dp(32)); avatarDrawable = new AvatarDrawable(); textPaint.setTextSize(AndroidUtilities.dp(MessagesController.getInstance().fontSize)); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatAudioCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatAudioCell.java index 271c863ec..9ab00e61f 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatAudioCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatAudioCell.java @@ -65,6 +65,7 @@ public class ChatAudioCell extends ChatBaseCell implements SeekBar.SeekBarDelega TAG = MediaController.getInstance().generateObserverTag(); avatarImage = new ImageReceiver(this); + avatarImage.setRoundRadius(AndroidUtilities.dp(25)); seekBar = new SeekBar(context); seekBar.delegate = this; progressView = new ProgressView(); 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 615c05c70..0440eb258 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatBaseCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatBaseCell.java @@ -156,6 +156,7 @@ public class ChatBaseCell extends BaseCell { forwardNamePaint.setTextSize(AndroidUtilities.dp(14)); } avatarImage = new ImageReceiver(this); + avatarImage.setRoundRadius(AndroidUtilities.dp(21)); avatarDrawable = new AvatarDrawable(); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatContactCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatContactCell.java index 4e47935c8..c7b316f19 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatContactCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatContactCell.java @@ -66,12 +66,13 @@ public class ChatContactCell extends ChatBaseCell { phonePaint = new TextPaint(TextPaint.ANTI_ALIAS_FLAG); phonePaint.setTextSize(AndroidUtilities.dp(15)); - phonePaint.setColor(0xff000000); + 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(); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMediaCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMediaCell.java index 754a7e164..bc31d48bf 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMediaCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMediaCell.java @@ -133,7 +133,7 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD infoPaint.setTextSize(AndroidUtilities.dp(12)); namePaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); - namePaint.setColor(0xff000000); + namePaint.setColor(0xff212121); namePaint.setTextSize(AndroidUtilities.dp(16)); docBackPaint = new Paint(); @@ -827,7 +827,7 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD menuDrawable = docMenuInDrawable; } - setDrawableBounds(menuDrawable, photoImage.getImageX() + backgroundWidth - AndroidUtilities.dp(50), AndroidUtilities.dp(10)); + setDrawableBounds(menuDrawable, photoImage.getImageX() + backgroundWidth - AndroidUtilities.dp(44), AndroidUtilities.dp(10)); menuDrawable.draw(canvas); if (!imageDrawn) { 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 4810729b3..575ded304 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/DialogCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DialogCell.java @@ -566,29 +566,35 @@ public class DialogCell extends BaseCell { continueUpdate = true; } } - if ((mask & MessagesController.UPDATE_MASK_AVATAR) != 0) { + if (!continueUpdate && (mask & MessagesController.UPDATE_MASK_AVATAR) != 0) { if (chat == null) { continueUpdate = true; } } - if ((mask & MessagesController.UPDATE_MASK_NAME) != 0) { + if (!continueUpdate && (mask & MessagesController.UPDATE_MASK_NAME) != 0) { if (chat == null) { continueUpdate = true; } } - if ((mask & MessagesController.UPDATE_MASK_CHAT_AVATAR) != 0) { + if (!continueUpdate && (mask & MessagesController.UPDATE_MASK_CHAT_AVATAR) != 0) { if (user == null) { continueUpdate = true; } } - if ((mask & MessagesController.UPDATE_MASK_CHAT_NAME) != 0) { + if (!continueUpdate && (mask & MessagesController.UPDATE_MASK_CHAT_NAME) != 0) { if (user == null) { continueUpdate = true; } } - if ((mask & MessagesController.UPDATE_MASK_READ_DIALOG_MESSAGE) != 0) { + if (!continueUpdate && (mask & MessagesController.UPDATE_MASK_READ_DIALOG_MESSAGE) != 0) { if (message != null && lastUnreadState != message.isUnread()) { continueUpdate = true; + } else if (allowPrintStrings) { + TLRPC.TL_dialog dialog = MessagesController.getInstance().dialogs_dict.get(currentDialogId); + if (dialog != null && unreadCount != dialog.unread_count) { + unreadCount = dialog.unread_count; + continueUpdate = true; + } } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ShadowBottomSectionCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ShadowBottomSectionCell.java new file mode 100644 index 000000000..39a4dfca2 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ShadowBottomSectionCell.java @@ -0,0 +1,48 @@ +/* + * This is the source code of Telegram for Android v. 1.7.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-2014. + */ + +package org.telegram.ui.Cells; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.View; + +import org.telegram.android.AndroidUtilities; +import org.telegram.messenger.R; + +public class ShadowBottomSectionCell extends View { + + private void init() { + setBackgroundResource(R.drawable.greydivider_bottom); + } + + public ShadowBottomSectionCell(Context context) { + super(context); + init(); + } + + public ShadowBottomSectionCell(Context context, AttributeSet attrs) { + super(context, attrs); + init(); + } + + public ShadowBottomSectionCell(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + init(); + } + + public ShadowBottomSectionCell(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + init(); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(6), MeasureSpec.EXACTLY)); + } +} 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 729a05286..cb10f1ee6 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCell.java @@ -31,7 +31,7 @@ public class TextCell extends FrameLayout { super(context); textView = new TextView(context); - textView.setTextColor(0xff000000); + textView.setTextColor(0xff212121); textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); textView.setLines(1); textView.setMaxLines(1); 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 e8cc2e6e5..a63237314 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCheckCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCheckCell.java @@ -18,9 +18,10 @@ import android.widget.TextView; import org.telegram.android.AndroidUtilities; import org.telegram.android.LocaleController; +import org.telegram.ui.Views.FrameLayoutFixed; import org.telegram.ui.Views.Switch; -public class TextCheckCell extends FrameLayout { +public class TextCheckCell extends FrameLayoutFixed { private TextView textView; private Switch checkBox; @@ -37,7 +38,7 @@ public class TextCheckCell extends FrameLayout { } textView = new TextView(context); - textView.setTextColor(0xff000000); + textView.setTextColor(0xff212121); textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); textView.setLines(1); textView.setMaxLines(1); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextColorCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextColorCell.java index 2d4fe3721..59b6c9e61 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextColorCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextColorCell.java @@ -40,7 +40,7 @@ public class TextColorCell extends FrameLayout { } textView = new TextView(context); - textView.setTextColor(0xff000000); + textView.setTextColor(0xff212121); textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); textView.setLines(1); textView.setMaxLines(1); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextDetailCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextDetailCell.java index e3b6c7c2a..86afa6085 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextDetailCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextDetailCell.java @@ -29,7 +29,7 @@ public class TextDetailCell extends FrameLayout { super(context); textView = new TextView(context); - textView.setTextColor(0xff000000); + textView.setTextColor(0xff212121); textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); textView.setLines(1); textView.setMaxLines(1); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextDetailDocumentsCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextDetailDocumentsCell.java new file mode 100644 index 000000000..46bcf793d --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextDetailDocumentsCell.java @@ -0,0 +1,120 @@ +/* + * This is the source code of Telegram for Android v. 1.7.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-2014. + */ + +package org.telegram.ui.Cells; + +import android.content.Context; +import android.graphics.Typeface; +import android.text.TextUtils; +import android.util.TypedValue; +import android.view.Gravity; +import android.widget.FrameLayout; +import android.widget.TextView; + +import org.telegram.android.AndroidUtilities; +import org.telegram.android.LocaleController; +import org.telegram.ui.Views.BackupImageView; + +public class TextDetailDocumentsCell extends FrameLayout { + + private TextView textView; + private TextView valueTextView; + private TextView typeTextView; + private BackupImageView imageView; + + public TextDetailDocumentsCell(Context context) { + super(context); + + textView = new TextView(context); + textView.setTextColor(0xff212121); + textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); + textView.setLines(1); + textView.setMaxLines(1); + textView.setSingleLine(true); + textView.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); + addView(textView); + LayoutParams layoutParams = (LayoutParams) textView.getLayoutParams(); + layoutParams.width = LayoutParams.WRAP_CONTENT; + layoutParams.height = LayoutParams.WRAP_CONTENT; + layoutParams.topMargin = AndroidUtilities.dp(10); + layoutParams.leftMargin = AndroidUtilities.dp(LocaleController.isRTL ? 16 : 71); + layoutParams.rightMargin = AndroidUtilities.dp(LocaleController.isRTL ? 71 : 16); + layoutParams.gravity = LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT; + textView.setLayoutParams(layoutParams); + + valueTextView = new TextView(context); + valueTextView.setTextColor(0xff8a8a8a); + valueTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 13); + valueTextView.setLines(1); + valueTextView.setMaxLines(1); + valueTextView.setSingleLine(true); + valueTextView.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); + addView(valueTextView); + layoutParams = (LayoutParams) valueTextView.getLayoutParams(); + layoutParams.width = LayoutParams.WRAP_CONTENT; + layoutParams.height = LayoutParams.WRAP_CONTENT; + layoutParams.topMargin = AndroidUtilities.dp(35); + layoutParams.leftMargin = AndroidUtilities.dp(LocaleController.isRTL ? 16 : 71); + layoutParams.rightMargin = AndroidUtilities.dp(LocaleController.isRTL ? 71 : 16); + layoutParams.gravity = LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT; + valueTextView.setLayoutParams(layoutParams); + + typeTextView = new TextView(context); + typeTextView.setBackgroundColor(0xff757575); + typeTextView.setEllipsize(TextUtils.TruncateAt.MARQUEE); + typeTextView.setGravity(Gravity.CENTER); + typeTextView.setSingleLine(true); + typeTextView.setTextColor(0xffd1d1d1); + typeTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); + typeTextView.setTypeface(Typeface.DEFAULT_BOLD); + addView(typeTextView); + layoutParams = (LayoutParams) typeTextView.getLayoutParams(); + layoutParams.width = AndroidUtilities.dp(40); + layoutParams.height = AndroidUtilities.dp(40); + layoutParams.leftMargin = AndroidUtilities.dp(LocaleController.isRTL ? 0 : 16); + layoutParams.rightMargin = AndroidUtilities.dp(LocaleController.isRTL ? 16 : 0); + layoutParams.gravity = (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.CENTER_VERTICAL; + typeTextView.setLayoutParams(layoutParams); + + imageView = new BackupImageView(context); + addView(imageView); + layoutParams = (LayoutParams) imageView.getLayoutParams(); + layoutParams.width = AndroidUtilities.dp(40); + layoutParams.height = AndroidUtilities.dp(40); + layoutParams.leftMargin = AndroidUtilities.dp(LocaleController.isRTL ? 0 : 16); + layoutParams.rightMargin = AndroidUtilities.dp(LocaleController.isRTL ? 16 : 0); + layoutParams.gravity = (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.CENTER_VERTICAL; + imageView.setLayoutParams(layoutParams); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(64), MeasureSpec.EXACTLY)); + } + + public void setTextAndValueAndTypeAndThumb(String text, String value, String type, String thumb, int resId) { + textView.setText(text); + valueTextView.setText(value); + if (type != null) { + typeTextView.setVisibility(VISIBLE); + typeTextView.setText(type); + } else { + typeTextView.setVisibility(GONE); + } + if (thumb != null || resId != 0) { + if (thumb != null) { + imageView.setImage(thumb, "40_40", null); + } else { + imageView.setImageResource(resId); + } + imageView.setVisibility(VISIBLE); + } else { + imageView.setVisibility(GONE); + } + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextDetailSettingsCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextDetailSettingsCell.java index 2c844aace..033306956 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextDetailSettingsCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextDetailSettingsCell.java @@ -13,13 +13,13 @@ import android.graphics.Canvas; import android.graphics.Paint; import android.util.TypedValue; import android.view.Gravity; -import android.widget.FrameLayout; import android.widget.TextView; import org.telegram.android.AndroidUtilities; import org.telegram.android.LocaleController; +import org.telegram.ui.Views.FrameLayoutFixed; -public class TextDetailSettingsCell extends FrameLayout { +public class TextDetailSettingsCell extends FrameLayoutFixed { private TextView textView; private TextView valueTextView; @@ -37,7 +37,7 @@ public class TextDetailSettingsCell extends FrameLayout { } textView = new TextView(context); - textView.setTextColor(0xff000000); + textView.setTextColor(0xff212121); textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); textView.setLines(1); textView.setMaxLines(1); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextInfoPrivacyCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextInfoPrivacyCell.java new file mode 100644 index 000000000..3cdcc8724 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextInfoPrivacyCell.java @@ -0,0 +1,50 @@ +/* + * This is the source code of Telegram for Android v. 1.7.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-2014. + */ + +package org.telegram.ui.Cells; + +import android.content.Context; +import android.util.TypedValue; +import android.view.Gravity; +import android.widget.FrameLayout; +import android.widget.TextView; + +import org.telegram.android.AndroidUtilities; +import org.telegram.android.LocaleController; + +public class TextInfoPrivacyCell extends FrameLayout { + + private TextView textView; + + public TextInfoPrivacyCell(Context context) { + super(context); + + textView = new TextView(context); + textView.setTextColor(0xffa3a3a3); + textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 13); + textView.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); + textView.setPadding(0, AndroidUtilities.dp(6), 0, AndroidUtilities.dp(16)); + addView(textView); + LayoutParams layoutParams = (LayoutParams) textView.getLayoutParams(); + layoutParams.width = LayoutParams.WRAP_CONTENT; + layoutParams.height = LayoutParams.WRAP_CONTENT; + layoutParams.leftMargin = AndroidUtilities.dp(17); + layoutParams.rightMargin = AndroidUtilities.dp(17); + layoutParams.gravity = LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT; + textView.setLayoutParams(layoutParams); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); + } + + public void setText(String text) { + textView.setText(text); + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextSettingsCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextSettingsCell.java index 5a3baf8ce..a69ebbc2c 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextSettingsCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextSettingsCell.java @@ -15,6 +15,7 @@ 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.android.AndroidUtilities; @@ -24,6 +25,7 @@ public class TextSettingsCell extends FrameLayout { private TextView textView; private TextView valueTextView; + private ImageView valueImageView; private static Paint paint; private boolean needDivider; @@ -37,7 +39,7 @@ public class TextSettingsCell extends FrameLayout { } textView = new TextView(context); - textView.setTextColor(0xff000000); + textView.setTextColor(0xff212121); textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); textView.setLines(1); textView.setMaxLines(1); @@ -69,6 +71,18 @@ public class TextSettingsCell extends FrameLayout { layoutParams.rightMargin = AndroidUtilities.dp(17); layoutParams.gravity = LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT; valueTextView.setLayoutParams(layoutParams); + + valueImageView = new ImageView(context); + valueImageView.setScaleType(ImageView.ScaleType.CENTER); + valueImageView.setVisibility(GONE); + addView(valueImageView); + layoutParams = (LayoutParams) valueImageView.getLayoutParams(); + layoutParams.width = LayoutParams.WRAP_CONTENT; + layoutParams.height = LayoutParams.WRAP_CONTENT; + layoutParams.leftMargin = AndroidUtilities.dp(LocaleController.isRTL ? 17 : 0); + layoutParams.rightMargin = AndroidUtilities.dp(LocaleController.isRTL ? 0 : 17); + layoutParams.gravity = (LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.CENTER_VERTICAL; + valueImageView.setLayoutParams(layoutParams); } @Override @@ -77,6 +91,9 @@ public class TextSettingsCell extends FrameLayout { int availableWidth = getMeasuredWidth() - getPaddingLeft() - getPaddingRight() - AndroidUtilities.dp(34); int width = availableWidth / 2; + if (valueImageView.getVisibility() == VISIBLE) { + valueImageView.measure(MeasureSpec.makeMeasureSpec(width, MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(getMeasuredHeight(), MeasureSpec.EXACTLY)); + } if (valueTextView.getVisibility() == VISIBLE) { valueTextView.measure(MeasureSpec.makeMeasureSpec(width, MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(getMeasuredHeight(), MeasureSpec.EXACTLY)); width = availableWidth - valueTextView.getMeasuredWidth() - AndroidUtilities.dp(8); @@ -99,8 +116,26 @@ public class TextSettingsCell extends FrameLayout { public void setTextAndValue(String text, String value, boolean divider) { textView.setText(text); - valueTextView.setText(value); - valueTextView.setVisibility(VISIBLE); + valueImageView.setVisibility(GONE); + if (value != null) { + valueTextView.setText(value); + valueTextView.setVisibility(VISIBLE); + } else { + valueTextView.setVisibility(GONE); + } + needDivider = divider; + setWillNotDraw(!divider); + } + + public void setTextAndIcon(String text, int resId, boolean divider) { + textView.setText(text); + valueTextView.setVisibility(GONE); + if (resId != 0) { + valueImageView.setVisibility(VISIBLE); + valueImageView.setImageResource(resId); + } else { + valueImageView.setVisibility(GONE); + } needDivider = divider; setWillNotDraw(!divider); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChangeChatNameActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChangeChatNameActivity.java index 89a82c3e6..2f5aac14e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChangeChatNameActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChangeChatNameActivity.java @@ -16,6 +16,7 @@ import android.util.TypedValue; import android.view.Gravity; import android.view.KeyEvent; import android.view.LayoutInflater; +import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.EditorInfo; @@ -74,25 +75,31 @@ public class ChangeChatNameActivity extends BaseFragment { }); ActionBarMenu menu = actionBar.createMenu(); - doneButton = menu.addItem(done_button, R.drawable.ic_done, 0, AndroidUtilities.dp(56)); + doneButton = menu.addItemWithWidth(done_button, R.drawable.ic_done, AndroidUtilities.dp(56)); TLRPC.Chat currentChat = MessagesController.getInstance().getChat(chat_id); fragmentView = new LinearLayout(inflater.getContext()); fragmentView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); - fragmentView.setPadding(0, AndroidUtilities.dp(8), 0, 0); ((LinearLayout) fragmentView).setOrientation(LinearLayout.VERTICAL); + fragmentView.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + return true; + } + }); firstNameField = new EditText(inflater.getContext()); firstNameField.setText(currentChat.title); - firstNameField.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 19); - firstNameField.setHintTextColor(0xffa3a3a3); - firstNameField.setTextColor(0xff000000); - firstNameField.setPadding(AndroidUtilities.dp(15), 0, AndroidUtilities.dp(15), AndroidUtilities.dp(15)); + firstNameField.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); + firstNameField.setHintTextColor(0xff979797); + firstNameField.setTextColor(0xff212121); firstNameField.setMaxLines(3); + firstNameField.setPadding(0, 0, 0, 0); firstNameField.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); firstNameField.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES | InputType.TYPE_TEXT_FLAG_MULTI_LINE | InputType.TYPE_TEXT_FLAG_AUTO_CORRECT); firstNameField.setImeOptions(EditorInfo.IME_ACTION_DONE); + firstNameField.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); AndroidUtilities.clearCursorDrawable(firstNameField); firstNameField.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override @@ -104,17 +111,14 @@ public class ChangeChatNameActivity extends BaseFragment { return false; } }); - if (LocaleController.isRTL) { - firstNameField.setGravity(Gravity.RIGHT); - } ((LinearLayout) fragmentView).addView(firstNameField); LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams)firstNameField.getLayoutParams(); - layoutParams.topMargin = AndroidUtilities.dp(15); - layoutParams.leftMargin = AndroidUtilities.dp(16); - layoutParams.rightMargin = AndroidUtilities.dp(16); + layoutParams.topMargin = AndroidUtilities.dp(24); + layoutParams.height = AndroidUtilities.dp(36); + layoutParams.leftMargin = AndroidUtilities.dp(24); + layoutParams.rightMargin = AndroidUtilities.dp(24); layoutParams.width = LinearLayout.LayoutParams.MATCH_PARENT; - layoutParams.height = LinearLayout.LayoutParams.WRAP_CONTENT; firstNameField.setLayoutParams(layoutParams); if (chat_id > 0) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChangeNameActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChangeNameActivity.java index b063700d6..f4176f9c7 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChangeNameActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChangeNameActivity.java @@ -15,6 +15,7 @@ import android.util.TypedValue; import android.view.Gravity; import android.view.KeyEvent; import android.view.LayoutInflater; +import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.EditorInfo; @@ -35,7 +36,6 @@ import org.telegram.messenger.UserConfig; import org.telegram.ui.ActionBar.ActionBar; import org.telegram.ui.ActionBar.ActionBarMenu; import org.telegram.ui.ActionBar.BaseFragment; -import org.telegram.ui.Views.SettingsSectionLayout; public class ChangeNameActivity extends BaseFragment { @@ -67,9 +67,7 @@ public class ChangeNameActivity extends BaseFragment { }); ActionBarMenu menu = actionBar.createMenu(); - doneButton = menu.addItem(done_button, R.drawable.ic_done, 0, AndroidUtilities.dp(56)); - - fragmentView = inflater.inflate(R.layout.contact_add_layout, container, false); + doneButton = menu.addItemWithWidth(done_button, R.drawable.ic_done, AndroidUtilities.dp(56)); TLRPC.User user = MessagesController.getInstance().getUser(UserConfig.getClientUserId()); if (user == null) { @@ -78,25 +76,34 @@ public class ChangeNameActivity extends BaseFragment { fragmentView = new LinearLayout(inflater.getContext()); fragmentView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); - fragmentView.setPadding(AndroidUtilities.dp(16), AndroidUtilities.dp(8), AndroidUtilities.dp(16), 0); ((LinearLayout) fragmentView).setOrientation(LinearLayout.VERTICAL); - - SettingsSectionLayout settingsSectionLayout = new SettingsSectionLayout(inflater.getContext()); - ((LinearLayout) fragmentView).addView(settingsSectionLayout); - settingsSectionLayout.setText(LocaleController.getString("YourFirstNameAndLastName", R.string.YourFirstNameAndLastName).toUpperCase()); + fragmentView.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + return true; + } + }); firstNameField = new EditText(inflater.getContext()); - firstNameField.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 19); - firstNameField.setHintTextColor(0xffa3a3a3); - firstNameField.setTextColor(0xff000000); - firstNameField.setPadding(AndroidUtilities.dp(15), 0, AndroidUtilities.dp(15), AndroidUtilities.dp(15)); + firstNameField.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); + firstNameField.setHintTextColor(0xff979797); + firstNameField.setTextColor(0xff212121); firstNameField.setMaxLines(1); firstNameField.setLines(1); firstNameField.setSingleLine(true); firstNameField.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); - firstNameField.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES | InputType.TYPE_TEXT_FLAG_MULTI_LINE | InputType.TYPE_TEXT_FLAG_AUTO_CORRECT); + firstNameField.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES | InputType.TYPE_TEXT_FLAG_AUTO_CORRECT); firstNameField.setImeOptions(EditorInfo.IME_ACTION_NEXT); firstNameField.setHint(LocaleController.getString("FirstName", R.string.FirstName)); + AndroidUtilities.clearCursorDrawable(firstNameField); + ((LinearLayout) fragmentView).addView(firstNameField); + LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams)firstNameField.getLayoutParams(); + layoutParams.topMargin = AndroidUtilities.dp(24); + layoutParams.height = AndroidUtilities.dp(36); + layoutParams.leftMargin = AndroidUtilities.dp(24); + layoutParams.rightMargin = AndroidUtilities.dp(24); + layoutParams.width = LinearLayout.LayoutParams.MATCH_PARENT; + firstNameField.setLayoutParams(layoutParams); firstNameField.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) { @@ -108,26 +115,27 @@ public class ChangeNameActivity extends BaseFragment { return false; } }); - AndroidUtilities.clearCursorDrawable(firstNameField); - ((LinearLayout) fragmentView).addView(firstNameField); - LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams)firstNameField.getLayoutParams(); - layoutParams.topMargin = AndroidUtilities.dp(15); - layoutParams.width = LinearLayout.LayoutParams.MATCH_PARENT; - layoutParams.height = LinearLayout.LayoutParams.WRAP_CONTENT; - firstNameField.setLayoutParams(layoutParams); lastNameField = new EditText(inflater.getContext()); - lastNameField.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 19); - lastNameField.setHintTextColor(0xffa3a3a3); - lastNameField.setTextColor(0xff000000); - lastNameField.setPadding(AndroidUtilities.dp(15), 0, AndroidUtilities.dp(15), AndroidUtilities.dp(15)); + lastNameField.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); + lastNameField.setHintTextColor(0xff979797); + lastNameField.setTextColor(0xff212121); lastNameField.setMaxLines(1); lastNameField.setLines(1); lastNameField.setSingleLine(true); lastNameField.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); - lastNameField.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES | InputType.TYPE_TEXT_FLAG_MULTI_LINE | InputType.TYPE_TEXT_FLAG_AUTO_CORRECT); + lastNameField.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES | InputType.TYPE_TEXT_FLAG_AUTO_CORRECT); lastNameField.setImeOptions(EditorInfo.IME_ACTION_DONE); lastNameField.setHint(LocaleController.getString("LastName", R.string.LastName)); + AndroidUtilities.clearCursorDrawable(lastNameField); + ((LinearLayout) fragmentView).addView(lastNameField); + layoutParams = (LinearLayout.LayoutParams)lastNameField.getLayoutParams(); + layoutParams.topMargin = AndroidUtilities.dp(16); + layoutParams.height = AndroidUtilities.dp(36); + layoutParams.leftMargin = AndroidUtilities.dp(24); + layoutParams.rightMargin = AndroidUtilities.dp(24); + layoutParams.width = LinearLayout.LayoutParams.MATCH_PARENT; + lastNameField.setLayoutParams(layoutParams); lastNameField.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) { @@ -138,13 +146,6 @@ public class ChangeNameActivity extends BaseFragment { return false; } }); - AndroidUtilities.clearCursorDrawable(lastNameField); - ((LinearLayout) fragmentView).addView(lastNameField); - layoutParams = (LinearLayout.LayoutParams)lastNameField.getLayoutParams(); - layoutParams.topMargin = AndroidUtilities.dp(10); - layoutParams.width = LinearLayout.LayoutParams.MATCH_PARENT; - layoutParams.height = LinearLayout.LayoutParams.WRAP_CONTENT; - lastNameField.setLayoutParams(layoutParams); if (user != null) { firstNameField.setText(user.first_name); @@ -190,6 +191,7 @@ public class ChangeNameActivity extends BaseFragment { user.last_name = req.last_name; } UserConfig.saveConfig(true); + NotificationCenter.getInstance().postNotificationName(NotificationCenter.mainUserInfoChanged); NotificationCenter.getInstance().postNotificationName(NotificationCenter.updateInterfaces, MessagesController.UPDATE_MASK_NAME); ConnectionsManager.getInstance().performRpc(req, new RPCRequest.RPCRequestDelegate() { @Override diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChangeUsernameActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChangeUsernameActivity.java index 82cee7a35..af617e515 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChangeUsernameActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChangeUsernameActivity.java @@ -21,6 +21,7 @@ import android.util.TypedValue; import android.view.Gravity; import android.view.KeyEvent; import android.view.LayoutInflater; +import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.EditorInfo; @@ -43,7 +44,6 @@ import org.telegram.messenger.UserConfig; import org.telegram.ui.ActionBar.ActionBar; import org.telegram.ui.ActionBar.ActionBarMenu; import org.telegram.ui.ActionBar.BaseFragment; -import org.telegram.ui.Views.SettingsSectionLayout; import java.util.ArrayList; @@ -77,7 +77,7 @@ public class ChangeUsernameActivity extends BaseFragment { }); ActionBarMenu menu = actionBar.createMenu(); - doneButton = menu.addItem(done_button, R.drawable.ic_done, 0, AndroidUtilities.dp(56)); + doneButton = menu.addItemWithWidth(done_button, R.drawable.ic_done, AndroidUtilities.dp(56)); TLRPC.User user = MessagesController.getInstance().getUser(UserConfig.getClientUserId()); if (user == null) { @@ -86,20 +86,21 @@ public class ChangeUsernameActivity extends BaseFragment { fragmentView = new LinearLayout(inflater.getContext()); fragmentView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); - fragmentView.setPadding(AndroidUtilities.dp(16), AndroidUtilities.dp(8), AndroidUtilities.dp(16), 0); ((LinearLayout) fragmentView).setOrientation(LinearLayout.VERTICAL); - - SettingsSectionLayout settingsSectionLayout = new SettingsSectionLayout(inflater.getContext()); - ((LinearLayout) fragmentView).addView(settingsSectionLayout); - settingsSectionLayout.setText(LocaleController.getString("Username", R.string.Username).toUpperCase()); + fragmentView.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + return true; + } + }); firstNameField = new EditText(inflater.getContext()); - firstNameField.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 19); - firstNameField.setHintTextColor(0xffa3a3a3); - firstNameField.setTextColor(0xff000000); - firstNameField.setPadding(AndroidUtilities.dp(15), 0, AndroidUtilities.dp(15), AndroidUtilities.dp(15)); + firstNameField.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); + firstNameField.setHintTextColor(0xff979797); + firstNameField.setTextColor(0xff212121); firstNameField.setMaxLines(1); firstNameField.setLines(1); + firstNameField.setPadding(0, 0, 0, 0); firstNameField.setSingleLine(true); firstNameField.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); firstNameField.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES | InputType.TYPE_TEXT_FLAG_MULTI_LINE | InputType.TYPE_TEXT_FLAG_AUTO_CORRECT); @@ -119,9 +120,11 @@ public class ChangeUsernameActivity extends BaseFragment { ((LinearLayout) fragmentView).addView(firstNameField); LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams)firstNameField.getLayoutParams(); - layoutParams.topMargin = AndroidUtilities.dp(15); + layoutParams.topMargin = AndroidUtilities.dp(24); + layoutParams.height = AndroidUtilities.dp(36); + layoutParams.leftMargin = AndroidUtilities.dp(24); + layoutParams.rightMargin = AndroidUtilities.dp(24); layoutParams.width = LinearLayout.LayoutParams.MATCH_PARENT; - layoutParams.height = LinearLayout.LayoutParams.WRAP_CONTENT; firstNameField.setLayoutParams(layoutParams); if (user != null && user.username != null && user.username.length() > 0) { @@ -131,7 +134,6 @@ public class ChangeUsernameActivity extends BaseFragment { checkTextView = new TextView(inflater.getContext()); checkTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15); - checkTextView.setPadding(AndroidUtilities.dp(8), 0, AndroidUtilities.dp(8), 0); checkTextView.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); ((LinearLayout) fragmentView).addView(checkTextView); layoutParams = (LinearLayout.LayoutParams)checkTextView.getLayoutParams(); @@ -139,12 +141,13 @@ public class ChangeUsernameActivity extends BaseFragment { layoutParams.width = LinearLayout.LayoutParams.WRAP_CONTENT; layoutParams.height = LinearLayout.LayoutParams.WRAP_CONTENT; layoutParams.gravity = LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT; + layoutParams.leftMargin = AndroidUtilities.dp(24); + layoutParams.rightMargin = AndroidUtilities.dp(24); checkTextView.setLayoutParams(layoutParams); TextView helpTextView = new TextView(inflater.getContext()); helpTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15); helpTextView.setTextColor(0xff6d6d72); - helpTextView.setPadding(AndroidUtilities.dp(8), 0, AndroidUtilities.dp(8), 0); helpTextView.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); helpTextView.setText(Html.fromHtml(LocaleController.getString("UsernameHelp", R.string.UsernameHelp))); ((LinearLayout) fragmentView).addView(helpTextView); @@ -153,6 +156,8 @@ public class ChangeUsernameActivity extends BaseFragment { layoutParams.width = LinearLayout.LayoutParams.WRAP_CONTENT; layoutParams.height = LinearLayout.LayoutParams.WRAP_CONTENT; layoutParams.gravity = LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT; + layoutParams.leftMargin = AndroidUtilities.dp(24); + layoutParams.rightMargin = AndroidUtilities.dp(24); helpTextView.setLayoutParams(layoutParams); firstNameField.addTextChangedListener(new TextWatcher() { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java index 120fb8dc7..94edf8c89 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java @@ -8,9 +8,6 @@ package org.telegram.ui; -import android.animation.Animator; -import android.animation.AnimatorSet; -import android.animation.ObjectAnimator; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; @@ -41,7 +38,6 @@ import android.webkit.MimeTypeMap; import android.widget.AbsListView; import android.widget.AdapterView; import android.widget.FrameLayout; -import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; @@ -65,6 +61,10 @@ import org.telegram.messenger.R; import org.telegram.messenger.UserConfig; import org.telegram.messenger.Utilities; import org.telegram.ui.Adapters.BaseFragmentAdapter; +import org.telegram.ui.AnimationCompat.AnimatorListenerAdapterProxy; +import org.telegram.ui.AnimationCompat.AnimatorSetProxy; +import org.telegram.ui.AnimationCompat.ObjectAnimatorProxy; +import org.telegram.ui.AnimationCompat.ViewProxy; import org.telegram.ui.Cells.ChatActionCell; import org.telegram.ui.Cells.ChatAudioCell; import org.telegram.ui.Cells.ChatBaseCell; @@ -79,9 +79,10 @@ import org.telegram.ui.Views.BackupImageView; import org.telegram.ui.ActionBar.BaseFragment; import org.telegram.ui.Views.ChatActivityEnterView; import org.telegram.android.ImageReceiver; +import org.telegram.ui.Views.FrameLayoutFixed; import org.telegram.ui.Views.LayoutListView; import org.telegram.ui.Views.SizeNotifierRelativeLayout; -import org.telegram.ui.Views.TimerButton; +import org.telegram.ui.Views.TimerDrawable; import org.telegram.ui.Views.TypingDotsDrawable; import java.io.File; @@ -98,13 +99,14 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not private TLRPC.EncryptedChat currentEncryptedChat; private boolean userBlocked = false; - private View topPanel; private View progressView; private View bottomOverlay; private ChatAdapter chatAdapter; private ChatActivityEnterView chatActivityEnterView; - private View timeItem; - private View menuItem; + private ActionBarMenuItem timeItem; + private TimerDrawable timerDrawable; + private ActionBarMenuItem menuItem; + private TextView addContactItem; private LayoutListView chatListView; private BackupImageView avatarImageView; private TextView bottomOverlayChatText; @@ -116,12 +118,11 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not private TextView onlineTextView; private FrameLayout avatarContainer; private TextView bottomOverlayText; + private TextView secretViewStatusTextView; + private TextView selectedMessagesCountTextView; private MessageObject selectedObject; private MessageObject forwaringMessage; - private TextView secretViewStatusTextView; - private TimerButton timerButton; - private TextView selectedMessagesCountTextView; private boolean paused = true; private boolean readWhenResume = false; @@ -130,9 +131,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not private boolean scrollToTopOnResume = false; private boolean scrollToTopUnReadOnResume = false; private boolean isCustomTheme = false; - private ImageView topPlaneClose; private View pagedownButton; - private TextView topPanelText; private long dialog_id; private boolean isBroadcast = false; private HashMap selectedMessagesIds = new HashMap(); @@ -188,6 +187,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not private final static int attach_video = 8; private final static int attach_document = 9; private final static int attach_location = 10; + private final static int clear_history = 11; + private final static int delete_chat = 12; + private final static int share_contact = 13; AdapterView.OnItemLongClickListener onItemLongClickListener = new AdapterView.OnItemLongClickListener() { @Override @@ -438,18 +440,23 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (currentEncryptedChat != null) { MediaController.getInstance().stopMediaObserver(); } - getParentActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); + if (!AndroidUtilities.isTablet()) { + getParentActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); + } AndroidUtilities.unlockOrientation(getParentActivity()); MediaController.getInstance().stopAudio(); } public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { + lastPrintString = null; + lastStatus = null; + actionBar.setBackButtonImage(R.drawable.ic_ab_back); actionBar.setBackOverlay(R.layout.updating_state_layout); actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { @Override - public void onItemClick(int id) { + public void onItemClick(final int id) { if (id == -1) { finishFragment(); } else if (id == -2) { @@ -606,17 +613,79 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not MessagesActivity fragment = new MessagesActivity(args); fragment.setDelegate(ChatActivity.this); presentFragment(fragment); + } else if (id == chat_enc_timer) { + if (getParentActivity() == null) { + return; + } + showAlertDialog(AndroidUtilities.buildTTLAlert(getParentActivity(), currentEncryptedChat)); + } else if (id == clear_history || id == delete_chat) { + final boolean isChat = (int)dialog_id < 0 && (int)(dialog_id >> 32) != 1; + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); + if (id == clear_history) { + builder.setMessage(LocaleController.getString("AreYouSureClearHistory", R.string.AreYouSureClearHistory)); + } else { + if (isChat) { + builder.setMessage(LocaleController.getString("AreYouSureDeleteAndExit", R.string.AreYouSureDeleteAndExit)); + } else { + builder.setMessage(LocaleController.getString("AreYouSureDeleteThisChat", R.string.AreYouSureDeleteThisChat)); + } + } + builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + MessagesController.getInstance().deleteDialog(dialog_id, 0, id == clear_history); + if (id != clear_history) { + if (isChat) { + MessagesController.getInstance().deleteUserFromChat((int) -dialog_id, MessagesController.getInstance().getUser(UserConfig.getClientUserId()), null); + } + finishFragment(); + } + } + }); + builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); + showAlertDialog(builder); + } else if (id == share_contact) { + if (currentUser == null || getParentActivity() == null) { + return; + } + if (currentUser.phone != null && currentUser.phone.length() != 0) { + Bundle args = new Bundle(); + args.putInt("user_id", currentUser.id); + 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); + chatListView.post(new Runnable() { + @Override + public void run() { + chatListView.setSelectionFromTop(messages.size() - 1, -100000 - chatListView.getPaddingTop()); + } + }); + } + }); + builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); + showAlertDialog(builder); + } } } }); - avatarContainer = new FrameLayout(getParentActivity()); + avatarContainer = new FrameLayoutFixed(getParentActivity()); + avatarContainer.setBackgroundResource(R.drawable.bar_selector); + avatarContainer.setPadding(AndroidUtilities.dp(8), 0, AndroidUtilities.dp(8), 0); actionBar.addView(avatarContainer); FrameLayout.LayoutParams layoutParams2 = (FrameLayout.LayoutParams) avatarContainer.getLayoutParams(); - layoutParams2.height = AndroidUtilities.dp(48); + layoutParams2.height = FrameLayout.LayoutParams.MATCH_PARENT; layoutParams2.width = FrameLayout.LayoutParams.WRAP_CONTENT; - layoutParams2.rightMargin = AndroidUtilities.dp(48 + (currentEncryptedChat != null ? 48 : 0)); - layoutParams2.leftMargin = AndroidUtilities.dp(64); + layoutParams2.rightMargin = AndroidUtilities.dp(40); + layoutParams2.leftMargin = AndroidUtilities.dp(56); layoutParams2.gravity = Gravity.TOP | Gravity.LEFT; avatarContainer.setLayoutParams(layoutParams2); avatarContainer.setOnClickListener(new View.OnClickListener() { @@ -657,6 +726,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not layoutParams2.width = AndroidUtilities.dp(42); layoutParams2.height = AndroidUtilities.dp(42); layoutParams2.topMargin = AndroidUtilities.dp(3); + layoutParams2.gravity = Gravity.TOP | Gravity.LEFT; avatarImageView.setLayoutParams(layoutParams2); nameTextView = new TextView(getParentActivity()); @@ -708,43 +778,42 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not ActionBarMenu menu = actionBar.createMenu(); if (currentEncryptedChat != null) { - timeItem = menu.addItemResource(chat_enc_timer, R.layout.chat_header_enc_layout); + timeItem = menu.addItem(chat_enc_timer, timerDrawable = new TimerDrawable(getParentActivity())); + } else { + ActionBarMenuItem item = menu.addItem(0, R.drawable.ic_ab_other); + if (currentUser != null) { + addContactItem = item.addSubItem(share_contact, "", 0); + } + item.addSubItem(clear_history, LocaleController.getString("ClearHistory", R.string.ClearHistory), 0); + if (currentChat != null && !isBroadcast) { + item.addSubItem(delete_chat, LocaleController.getString("DeleteAndExit", R.string.DeleteAndExit), 0); + } else { + item.addSubItem(delete_chat, LocaleController.getString("DeleteChatUser", R.string.DeleteChatUser), 0); + } } - ActionBarMenuItem item = menu.addItem(chat_menu_attach, R.drawable.ic_ab_attach); - item.addSubItem(attach_photo, LocaleController.getString("ChatTakePhoto", R.string.ChatTakePhoto), R.drawable.ic_attach_photo); - item.addSubItem(attach_gallery, LocaleController.getString("ChatGallery", R.string.ChatGallery), R.drawable.ic_attach_gallery); - item.addSubItem(attach_video, LocaleController.getString("ChatVideo", R.string.ChatVideo), R.drawable.ic_attach_video); - item.addSubItem(attach_document, LocaleController.getString("ChatDocument", R.string.ChatDocument), R.drawable.ic_ab_doc); - item.addSubItem(attach_location, LocaleController.getString("ChatLocation", R.string.ChatLocation), R.drawable.ic_attach_location); - menuItem = item; - item.setShowFromBottom(true); - item.setBackground(null); + menuItem = menu.addItem(chat_menu_attach, R.drawable.ic_ab_attach); + menuItem.addSubItem(attach_photo, LocaleController.getString("ChatTakePhoto", R.string.ChatTakePhoto), R.drawable.ic_attach_photo); + menuItem.addSubItem(attach_gallery, LocaleController.getString("ChatGallery", R.string.ChatGallery), R.drawable.ic_attach_gallery); + menuItem.addSubItem(attach_video, LocaleController.getString("ChatVideo", R.string.ChatVideo), R.drawable.ic_attach_video); + menuItem.addSubItem(attach_document, LocaleController.getString("ChatDocument", R.string.ChatDocument), R.drawable.ic_ab_doc); + menuItem.addSubItem(attach_location, LocaleController.getString("ChatLocation", R.string.ChatLocation), R.drawable.ic_attach_location); + menuItem.setShowFromBottom(true); + menuItem.setBackgroundDrawable(null); actionModeViews.clear(); final ActionBarMenu actionMode = actionBar.createActionMode(); - actionModeViews.add(actionMode.addItem(-2, R.drawable.ic_ab_done_gray, R.drawable.bar_selector_mode)); - - FrameLayout layout = new FrameLayout(actionMode.getContext()); - layout.setBackgroundColor(0xffe5e5e5); - actionMode.addView(layout); - LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams)layout.getLayoutParams(); - layoutParams.width = AndroidUtilities.dp(1); - layoutParams.height = LinearLayout.LayoutParams.MATCH_PARENT; - layoutParams.topMargin = AndroidUtilities.dp(12); - layoutParams.bottomMargin = AndroidUtilities.dp(12); - layoutParams.gravity = Gravity.CENTER_VERTICAL; - layout.setLayoutParams(layoutParams); - actionModeViews.add(layout); + actionModeViews.add(actionMode.addItem(-2, R.drawable.ic_ab_back_grey, R.drawable.bar_selector_mode, null, AndroidUtilities.dp(54))); selectedMessagesCountTextView = new TextView(actionMode.getContext()); selectedMessagesCountTextView.setTextSize(18); - selectedMessagesCountTextView.setTextColor(0xff000000); + selectedMessagesCountTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + selectedMessagesCountTextView.setTextColor(0xff737373); selectedMessagesCountTextView.setSingleLine(true); selectedMessagesCountTextView.setLines(1); selectedMessagesCountTextView.setEllipsize(TextUtils.TruncateAt.END); - selectedMessagesCountTextView.setPadding(AndroidUtilities.dp(11), 0, 0, 0); + selectedMessagesCountTextView.setPadding(AndroidUtilities.dp(11), 0, 0, AndroidUtilities.dp(2)); selectedMessagesCountTextView.setGravity(Gravity.CENTER_VERTICAL); selectedMessagesCountTextView.setOnTouchListener(new View.OnTouchListener() { @Override @@ -753,7 +822,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } }); actionMode.addView(selectedMessagesCountTextView); - layoutParams = (LinearLayout.LayoutParams)selectedMessagesCountTextView.getLayoutParams(); + LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams)selectedMessagesCountTextView.getLayoutParams(); layoutParams.weight = 1; layoutParams.width = 0; layoutParams.height = LinearLayout.LayoutParams.MATCH_PARENT; @@ -785,9 +854,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not emptyView.setText(LocaleController.getString("NoMessages", R.string.NoMessages)); chatListView = (LayoutListView)fragmentView.findViewById(R.id.chat_list_view); chatListView.setAdapter(chatAdapter = new ChatAdapter(getParentActivity())); - topPanel = fragmentView.findViewById(R.id.top_panel); - topPlaneClose = (ImageView)fragmentView.findViewById(R.id.top_plane_close); - topPanelText = (TextView)fragmentView.findViewById(R.id.top_panel_text); bottomOverlay = fragmentView.findViewById(R.id.bottom_overlay); bottomOverlayText = (TextView)fragmentView.findViewById(R.id.bottom_overlay_text); bottomOverlayChat = fragmentView.findViewById(R.id.bottom_overlay_chat); @@ -1148,37 +1214,22 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } if (show) { if (pagedownButton.getVisibility() == View.GONE) { - if (Build.VERSION.SDK_INT > 13 && animated) { + if (animated) { pagedownButton.setVisibility(View.VISIBLE); - pagedownButton.setAlpha(0); - pagedownButton.animate().alpha(1).setDuration(200).setListener(null).start(); + ViewProxy.setAlpha(pagedownButton, 0); + ObjectAnimatorProxy.ofFloatProxy(pagedownButton, "alpha", 1.0f).setDuration(200).start(); } else { pagedownButton.setVisibility(View.VISIBLE); } } } else { if (pagedownButton.getVisibility() == View.VISIBLE) { - if (Build.VERSION.SDK_INT > 13 && animated) { - pagedownButton.animate().alpha(0).setDuration(200).setListener(new Animator.AnimatorListener() { + if (animated) { + ObjectAnimatorProxy.ofFloatProxy(pagedownButton, "alpha", 0.0f).setDuration(200).addListener(new AnimatorListenerAdapterProxy() { @Override - public void onAnimationStart(Animator animation) { - - } - - @Override - public void onAnimationEnd(Animator animation) { + public void onAnimationEnd(Object animation) { pagedownButton.setVisibility(View.GONE); } - - @Override - public void onAnimationCancel(Animator animation) { - - } - - @Override - public void onAnimationRepeat(Animator animation) { - - } }).start(); } else { pagedownButton.setVisibility(View.GONE); @@ -1241,17 +1292,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } if (timeItem != null) { - timerButton = (TimerButton)timeItem.findViewById(R.id.chat_timer); - timerButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (getParentActivity() == null) { - return; - } - showAlertDialog(AndroidUtilities.buildTTLAlert(getParentActivity(), currentEncryptedChat)); - } - }); - timerButton.setTime(currentEncryptedChat.ttl); + timerDrawable.setTime(currentEncryptedChat.ttl); } checkAndUpdateAvatar(); @@ -1426,11 +1467,14 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not return; } if (!selectedMessagesIds.isEmpty()) { - selectedMessagesCountTextView.setText(LocaleController.formatString("Selected", R.string.Selected, selectedMessagesIds.size())); + selectedMessagesCountTextView.setText(String.format("%d", selectedMessagesIds.size())); } } private void updateTitle() { + if (nameTextView == null) { + return; + } if (currentChat != null) { nameTextView.setText(currentChat.title); } else if (currentUser != null) { @@ -1447,6 +1491,9 @@ 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[]{""}); @@ -1493,15 +1540,21 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } if (start) { try { - onlineTextView.setCompoundDrawablesWithIntrinsicBounds(typingDotsDrawable, null, null, null); - onlineTextView.setCompoundDrawablePadding(AndroidUtilities.dp(4)); - typingDotsDrawable.start(); + if (onlineTextView != null) { + onlineTextView.setCompoundDrawablesWithIntrinsicBounds(typingDotsDrawable, null, null, null); + onlineTextView.setCompoundDrawablePadding(AndroidUtilities.dp(4)); + } + if (typingDotsDrawable != null) { + typingDotsDrawable.start(); + } } catch (Exception e) { FileLog.e("tmessages", e); } } else { - onlineTextView.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null); - onlineTextView.setCompoundDrawablePadding(0); + if (onlineTextView != null) { + onlineTextView.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null); + onlineTextView.setCompoundDrawablePadding(0); + } if (typingDotsDrawable != null) { typingDotsDrawable.stop(); } @@ -1989,9 +2042,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not for (MessageObject obj : arr) { if (currentEncryptedChat != null && obj.messageOwner.action != null && obj.messageOwner.action instanceof TLRPC.TL_messageEncryptedAction && - obj.messageOwner.action.encryptedAction instanceof TLRPC.TL_decryptedMessageActionSetMessageTTL && timerButton != null) { + obj.messageOwner.action.encryptedAction instanceof TLRPC.TL_decryptedMessageActionSetMessageTTL && timerDrawable != null) { TLRPC.TL_decryptedMessageActionSetMessageTTL action = (TLRPC.TL_decryptedMessageActionSetMessageTTL)obj.messageOwner.action.encryptedAction; - timerButton.setTime(action.ttl_seconds); + timerDrawable.setTime(action.ttl_seconds); } if (obj.isOut() && obj.isSending()) { scrollToLastMessage(); @@ -2035,9 +2088,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not int oldCount = messages.size(); for (MessageObject obj : arr) { if (currentEncryptedChat != null && obj.messageOwner.action != null && obj.messageOwner.action instanceof TLRPC.TL_messageEncryptedAction && - obj.messageOwner.action.encryptedAction instanceof TLRPC.TL_decryptedMessageActionSetMessageTTL && timerButton != null) { + obj.messageOwner.action.encryptedAction instanceof TLRPC.TL_decryptedMessageActionSetMessageTTL && timerDrawable != null) { TLRPC.TL_decryptedMessageActionSetMessageTTL action = (TLRPC.TL_decryptedMessageActionSetMessageTTL)obj.messageOwner.action.encryptedAction; - timerButton.setTime(action.ttl_seconds); + timerDrawable.setTime(action.ttl_seconds); } if (messagesDict.containsKey(obj.messageOwner.id)) { continue; @@ -2383,11 +2436,11 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } private void updateContactStatus() { - if (topPanel == null) { + if (addContactItem == null) { return; } if (currentUser == null) { - topPanel.setVisibility(View.GONE); + addContactItem.setVisibility(View.GONE); } else { TLRPC.User user = MessagesController.getInstance().getUser(currentUser.id); if (user != null) { @@ -2398,74 +2451,13 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not || currentUser instanceof TLRPC.TL_userEmpty || currentUser instanceof TLRPC.TL_userDeleted || ContactsController.getInstance().isLoadingContacts() || (currentUser.phone != null && currentUser.phone.length() != 0 && ContactsController.getInstance().contactsDict.get(currentUser.id) != null && (ContactsController.getInstance().contactsDict.size() != 0 || !ContactsController.getInstance().isLoadingContacts()))) { - topPanel.setVisibility(View.GONE); + addContactItem.setVisibility(View.GONE); } else { - topPanel.setVisibility(View.VISIBLE); - topPanelText.setShadowLayer(1, 0, AndroidUtilities.dp(1), 0xff8797a3); - if (isCustomTheme) { - topPlaneClose.setImageResource(R.drawable.ic_msg_btn_cross_custom); - topPanel.setBackgroundResource(R.drawable.top_pane_custom); - } else { - topPlaneClose.setImageResource(R.drawable.ic_msg_btn_cross_custom); - topPanel.setBackgroundResource(R.drawable.top_pane); - } + addContactItem.setVisibility(View.VISIBLE); if (currentUser.phone != null && currentUser.phone.length() != 0) { - if (MessagesController.getInstance().hidenAddToContacts.get(currentUser.id) != null) { - topPanel.setVisibility(View.INVISIBLE); - } else { - topPanelText.setText(LocaleController.getString("AddToContacts", R.string.AddToContacts)); - topPlaneClose.setVisibility(View.VISIBLE); - topPlaneClose.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - MessagesController.getInstance().hidenAddToContacts.put(currentUser.id, currentUser); - topPanel.setVisibility(View.GONE); - } - }); - topPanel.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - Bundle args = new Bundle(); - args.putInt("user_id", currentUser.id); - args.putBoolean("addContact", true); - presentFragment(new ContactAddActivity(args)); - } - }); - } + addContactItem.setText(LocaleController.getString("AddToContacts", R.string.AddToContacts)); } else { - if (MessagesController.getInstance().hidenAddToContacts.get(currentUser.id) != null) { - topPanel.setVisibility(View.INVISIBLE); - } else { - topPanelText.setText(LocaleController.getString("ShareMyContactInfo", R.string.ShareMyContactInfo)); - topPlaneClose.setVisibility(View.GONE); - topPanel.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (getParentActivity() == null) { - return; - } - 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) { - MessagesController.getInstance().hidenAddToContacts.put(currentUser.id, currentUser); - topPanel.setVisibility(View.GONE); - SendMessagesHelper.getInstance().sendMessage(UserConfig.getCurrentUser(), dialog_id); - chatListView.post(new Runnable() { - @Override - public void run() { - chatListView.setSelectionFromTop(messages.size() - 1, -100000 - chatListView.getPaddingTop()); - } - }); - } - }); - builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); - showAlertDialog(builder); - } - }); - } + addContactItem.setText(LocaleController.getString("ShareMyContactInfo", R.string.ShareMyContactInfo)); } } } @@ -2475,7 +2467,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not public void onResume() { super.onResume(); - getParentActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); + if (!AndroidUtilities.isTablet()) { + getParentActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); + } checkActionBarMenu(); @@ -2605,12 +2599,14 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not return false; } if (!AndroidUtilities.isTablet() && getParentActivity().getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { - selectedMessagesCountTextView.setTextSize(16); - } else { selectedMessagesCountTextView.setTextSize(18); + } else { + selectedMessagesCountTextView.setTextSize(20); } + int padding = (AndroidUtilities.getCurrentActionBarHeight() - AndroidUtilities.dp(48)) / 2; + avatarContainer.setPadding(avatarContainer.getPaddingLeft(), padding, avatarContainer.getPaddingRight(), padding); FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams)avatarContainer.getLayoutParams(); - layoutParams.topMargin = (Build.VERSION.SDK_INT >= 21 ? AndroidUtilities.statusBarHeight : 0) + (AndroidUtilities.getCurrentActionBarHeight() - AndroidUtilities.dp(48)) / 2; + layoutParams.topMargin = (Build.VERSION.SDK_INT >= 21 ? AndroidUtilities.statusBarHeight : 0); avatarContainer.setLayoutParams(layoutParams); return false; } @@ -2799,21 +2795,22 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not return; } actionBar.showActionMode(); - if (Build.VERSION.SDK_INT >= 11) { - AnimatorSet animatorSet = new AnimatorSet(); - ArrayList animators = new ArrayList(); - for (int a = 0; a < actionModeViews.size(); a++) { - View view = actionModeViews.get(a); - if (a < 2) { - animators.add(ObjectAnimator.ofFloat(view, "translationX", -AndroidUtilities.dp(56), 0)); - } else { - animators.add(ObjectAnimator.ofFloat(view, "scaleY", 0.1f, 1.0f)); - } + + AnimatorSetProxy animatorSet = new AnimatorSetProxy(); + ArrayList animators = new ArrayList(); + for (int a = 0; a < actionModeViews.size(); a++) { + View view = actionModeViews.get(a); + AndroidUtilities.clearDrawableAnimation(view); + if (a < 1) { + animators.add(ObjectAnimatorProxy.ofFloat(view, "translationX", -AndroidUtilities.dp(56), 0)); + } else { + animators.add(ObjectAnimatorProxy.ofFloat(view, "scaleY", 0.1f, 1.0f)); } - animatorSet.playTogether(animators); - animatorSet.setDuration(250); - animatorSet.start(); } + animatorSet.playTogether(animators); + animatorSet.setDuration(250); + animatorSet.start(); + addToSelectedMessages(message); updateActionModeTitle(); updateVisibleRows(); @@ -2951,9 +2948,11 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not args.putInt("chat_id", -lower_part); } forwardSelectedMessages(did, param); - presentFragment(new ChatActivity(args), true); + ChatActivity chatActivity = new ChatActivity(args); + presentFragment(chatActivity, true); if (!AndroidUtilities.isTablet()) { removeSelfFromStack(); + chatActivity.getParentActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); } } else { activity.finishFragment(); @@ -3095,7 +3094,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not object.viewY = coords[1] - AndroidUtilities.statusBarHeight; object.parentView = chatListView; object.imageReceiver = imageReceiver; - object.thumb = object.imageReceiver.getBitmap(); + object.thumb = imageReceiver.getBitmap(); + object.radius = imageReceiver.getRoundRadius(); return object; } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ContactAddActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ContactAddActivity.java index 67dc13c19..618e9bb65 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ContactAddActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ContactAddActivity.java @@ -10,14 +10,21 @@ package org.telegram.ui; import android.app.Activity; import android.content.SharedPreferences; -import android.graphics.Typeface; import android.os.Bundle; +import android.text.InputType; +import android.text.TextUtils; +import android.util.TypedValue; +import android.view.Gravity; import android.view.KeyEvent; import android.view.LayoutInflater; +import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.EditorInfo; import android.widget.EditText; +import android.widget.FrameLayout; +import android.widget.LinearLayout; +import android.widget.ScrollView; import android.widget.TextView; import org.telegram.android.AndroidUtilities; @@ -40,8 +47,8 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent private EditText firstNameField; private EditText lastNameField; private BackupImageView avatarImage; - private TextView onlineText; - private TextView phoneText; + private TextView nameTextView; + private TextView onlineTextView; private int user_id; private boolean addContact; @@ -98,27 +105,148 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent }); ActionBarMenu menu = actionBar.createMenu(); - doneButton = menu.addItem(done_button, R.drawable.ic_done, 0, AndroidUtilities.dp(56)); + doneButton = menu.addItemWithWidth(done_button, R.drawable.ic_done, AndroidUtilities.dp(56)); - fragmentView = inflater.inflate(R.layout.contact_add_layout, container, false); + /* - TLRPC.User user = MessagesController.getInstance().getUser(user_id); - if (user.phone == null) { - if (phone != null) { - user.phone = PhoneFormat.stripExceptNumbers(phone); + + + + + + + + + + + + + + +*/ + + fragmentView = new ScrollView(getParentActivity()); + + LinearLayout linearLayout = new LinearLayout(getParentActivity()); + linearLayout.setOrientation(LinearLayout.VERTICAL); + ((ScrollView) fragmentView).addView(linearLayout); + ScrollView.LayoutParams layoutParams2 = (ScrollView.LayoutParams) linearLayout.getLayoutParams(); + layoutParams2.width = ScrollView.LayoutParams.MATCH_PARENT; + layoutParams2.height = ScrollView.LayoutParams.WRAP_CONTENT; + linearLayout.setLayoutParams(layoutParams2); + linearLayout.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + return true; } - } + }); - onlineText = (TextView)fragmentView.findViewById(R.id.settings_online); - avatarImage = (BackupImageView)fragmentView.findViewById(R.id.settings_avatar_image); + FrameLayout frameLayout = new FrameLayout(getParentActivity()); + linearLayout.addView(frameLayout); + LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) frameLayout.getLayoutParams(); + layoutParams.topMargin = AndroidUtilities.dp(24); + layoutParams.leftMargin = AndroidUtilities.dp(24); + layoutParams.rightMargin = AndroidUtilities.dp(24); + layoutParams.width = LinearLayout.LayoutParams.MATCH_PARENT; + layoutParams.height = LinearLayout.LayoutParams.WRAP_CONTENT; + frameLayout.setLayoutParams(layoutParams); + + avatarImage = new BackupImageView(getParentActivity()); + avatarImage.imageReceiver.setRoundRadius(AndroidUtilities.dp(30)); avatarImage.processDetach = false; - avatarImage.imageReceiver.setRoundRadius(AndroidUtilities.dp(32)); - phoneText = (TextView)fragmentView.findViewById(R.id.settings_name); - Typeface typeface = AndroidUtilities.getTypeface("fonts/rmedium.ttf"); - phoneText.setTypeface(typeface); + frameLayout.addView(avatarImage); + FrameLayout.LayoutParams layoutParams3 = (FrameLayout.LayoutParams) avatarImage.getLayoutParams(); + layoutParams3.gravity = (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP; + layoutParams3.width = AndroidUtilities.dp(60); + layoutParams3.height = AndroidUtilities.dp(60); + avatarImage.setLayoutParams(layoutParams3); - firstNameField = (EditText)fragmentView.findViewById(R.id.first_name_field); + nameTextView = new TextView(getParentActivity()); + nameTextView.setTextColor(0xff212121); + nameTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20); + nameTextView.setLines(1); + nameTextView.setMaxLines(1); + nameTextView.setSingleLine(true); + nameTextView.setEllipsize(TextUtils.TruncateAt.END); + nameTextView.setGravity((LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT)); + nameTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + frameLayout.addView(nameTextView); + layoutParams3 = (FrameLayout.LayoutParams) nameTextView.getLayoutParams(); + layoutParams3.width = FrameLayout.LayoutParams.WRAP_CONTENT; + layoutParams3.height = FrameLayout.LayoutParams.WRAP_CONTENT; + layoutParams3.leftMargin = AndroidUtilities.dp(LocaleController.isRTL ? 0 : 80); + layoutParams3.rightMargin = AndroidUtilities.dp(LocaleController.isRTL ? 80 : 0); + layoutParams3.topMargin = AndroidUtilities.dp(3); + layoutParams3.gravity = (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP; + nameTextView.setLayoutParams(layoutParams3); + + onlineTextView = new TextView(getParentActivity()); + onlineTextView.setTextColor(0xff999999); + onlineTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); + onlineTextView.setLines(1); + onlineTextView.setMaxLines(1); + onlineTextView.setSingleLine(true); + onlineTextView.setEllipsize(TextUtils.TruncateAt.END); + onlineTextView.setGravity((LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT)); + frameLayout.addView(onlineTextView); + layoutParams3 = (FrameLayout.LayoutParams) onlineTextView.getLayoutParams(); + layoutParams3.width = FrameLayout.LayoutParams.WRAP_CONTENT; + layoutParams3.height = FrameLayout.LayoutParams.WRAP_CONTENT; + layoutParams3.leftMargin = AndroidUtilities.dp(LocaleController.isRTL ? 0 : 80); + layoutParams3.rightMargin = AndroidUtilities.dp(LocaleController.isRTL ? 80 : 0); + layoutParams3.topMargin = AndroidUtilities.dp(32); + layoutParams3.gravity = (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP; + onlineTextView.setLayoutParams(layoutParams3); + + firstNameField = new EditText(inflater.getContext()); + firstNameField.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); + firstNameField.setHintTextColor(0xff979797); + firstNameField.setTextColor(0xff212121); + firstNameField.setMaxLines(1); + firstNameField.setLines(1); + firstNameField.setSingleLine(true); + firstNameField.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); + firstNameField.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES | InputType.TYPE_TEXT_FLAG_AUTO_CORRECT); + firstNameField.setImeOptions(EditorInfo.IME_ACTION_NEXT); firstNameField.setHint(LocaleController.getString("FirstName", R.string.FirstName)); + AndroidUtilities.clearCursorDrawable(firstNameField); + linearLayout.addView(firstNameField); + layoutParams = (LinearLayout.LayoutParams) firstNameField.getLayoutParams(); + layoutParams.topMargin = AndroidUtilities.dp(24); + layoutParams.height = AndroidUtilities.dp(36); + layoutParams.leftMargin = AndroidUtilities.dp(24); + layoutParams.rightMargin = AndroidUtilities.dp(24); + layoutParams.width = LinearLayout.LayoutParams.MATCH_PARENT; + firstNameField.setLayoutParams(layoutParams); firstNameField.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) { @@ -130,8 +258,27 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent return false; } }); - lastNameField = (EditText)fragmentView.findViewById(R.id.last_name_field); + + lastNameField = new EditText(inflater.getContext()); + lastNameField.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); + lastNameField.setHintTextColor(0xff979797); + lastNameField.setTextColor(0xff212121); + lastNameField.setMaxLines(1); + lastNameField.setLines(1); + lastNameField.setSingleLine(true); + lastNameField.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); + lastNameField.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES | InputType.TYPE_TEXT_FLAG_AUTO_CORRECT); + lastNameField.setImeOptions(EditorInfo.IME_ACTION_DONE); lastNameField.setHint(LocaleController.getString("LastName", R.string.LastName)); + AndroidUtilities.clearCursorDrawable(lastNameField); + linearLayout.addView(lastNameField); + layoutParams = (LinearLayout.LayoutParams) lastNameField.getLayoutParams(); + layoutParams.topMargin = AndroidUtilities.dp(16); + layoutParams.height = AndroidUtilities.dp(36); + layoutParams.leftMargin = AndroidUtilities.dp(24); + layoutParams.rightMargin = AndroidUtilities.dp(24); + layoutParams.width = LinearLayout.LayoutParams.MATCH_PARENT; + lastNameField.setLayoutParams(layoutParams); lastNameField.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) { @@ -143,7 +290,13 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent } }); + TLRPC.User user = MessagesController.getInstance().getUser(user_id); if (user != null) { + if (user.phone == null) { + if (phone != null) { + user.phone = PhoneFormat.stripExceptNumbers(phone); + } + } firstNameField.setText(user.first_name); firstNameField.setSelection(firstNameField.length()); lastNameField.setText(user.last_name); @@ -151,7 +304,7 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent updateAvatarLayout(); } else { - ViewGroup parent = (ViewGroup)fragmentView.getParent(); + ViewGroup parent = (ViewGroup) fragmentView.getParent(); if (parent != null) { parent.removeView(fragmentView); } @@ -160,15 +313,15 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent } private void updateAvatarLayout() { - if (phoneText == null) { + if (nameTextView == null) { return; } TLRPC.User user = MessagesController.getInstance().getUser(user_id); if (user == null) { return; } - phoneText.setText(PhoneFormat.getInstance().format("+" + user.phone)); - onlineText.setText(LocaleController.formatUserStatus(user)); + nameTextView.setText(PhoneFormat.getInstance().format("+" + user.phone)); + onlineTextView.setText(LocaleController.formatUserStatus(user)); TLRPC.FileLocation photo = null; if (user.photo != null) { @@ -179,7 +332,7 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent public void didReceivedNotification(int id, Object... args) { if (id == NotificationCenter.updateInterfaces) { - int mask = (Integer)args[0]; + int mask = (Integer) args[0]; if ((mask & MessagesController.UPDATE_MASK_AVATAR) != 0 || (mask & MessagesController.UPDATE_MASK_STATUS) != 0) { updateAvatarLayout(); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ContactsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ContactsActivity.java index f6716a91b..77286da30 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ContactsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ContactsActivity.java @@ -25,6 +25,7 @@ import android.widget.AbsListView; import android.widget.AdapterView; import android.widget.EditText; import android.widget.FrameLayout; +import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; @@ -183,27 +184,44 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter fragmentView = new FrameLayout(getParentActivity()); - emptyTextView = new TextView(getParentActivity()); - emptyTextView.setTextColor(0xff808080); - emptyTextView.setTextSize(24); - emptyTextView.setGravity(Gravity.CENTER); - emptyTextView.setVisibility(View.INVISIBLE); - emptyTextView.setText(LocaleController.getString("NoContacts", R.string.NoContacts)); - ((FrameLayout) fragmentView).addView(emptyTextView); - FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) emptyTextView.getLayoutParams(); + LinearLayout emptyTextLayout = new LinearLayout(getParentActivity()); + emptyTextLayout.setVisibility(View.INVISIBLE); + emptyTextLayout.setOrientation(LinearLayout.VERTICAL); + ((FrameLayout) fragmentView).addView(emptyTextLayout); + FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) emptyTextLayout.getLayoutParams(); layoutParams.width = FrameLayout.LayoutParams.MATCH_PARENT; layoutParams.height = FrameLayout.LayoutParams.MATCH_PARENT; layoutParams.gravity = Gravity.TOP; - emptyTextView.setLayoutParams(layoutParams); - emptyTextView.setOnTouchListener(new View.OnTouchListener() { + emptyTextLayout.setLayoutParams(layoutParams); + emptyTextLayout.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { return true; } }); + emptyTextView = new TextView(getParentActivity()); + emptyTextView.setTextColor(0xff808080); + emptyTextView.setTextSize(20); + emptyTextView.setGravity(Gravity.CENTER); + emptyTextView.setText(LocaleController.getString("NoContacts", R.string.NoContacts)); + emptyTextLayout.addView(emptyTextView); + LinearLayout.LayoutParams layoutParams1 = (LinearLayout.LayoutParams) emptyTextView.getLayoutParams(); + layoutParams1.width = LinearLayout.LayoutParams.MATCH_PARENT; + layoutParams1.height = LinearLayout.LayoutParams.MATCH_PARENT; + layoutParams1.weight = 0.5f; + emptyTextView.setLayoutParams(layoutParams1); + + FrameLayout frameLayout = new FrameLayout(getParentActivity()); + emptyTextLayout.addView(frameLayout); + layoutParams1 = (LinearLayout.LayoutParams) frameLayout.getLayoutParams(); + layoutParams1.width = LinearLayout.LayoutParams.MATCH_PARENT; + layoutParams1.height = LinearLayout.LayoutParams.MATCH_PARENT; + layoutParams1.weight = 0.5f; + frameLayout.setLayoutParams(layoutParams1); + listView = new SectionsListView(getParentActivity()); - listView.setEmptyView(emptyTextView); + listView.setEmptyView(emptyTextLayout); listView.setVerticalScrollBarEnabled(false); listView.setDivider(null); listView.setDividerHeight(0); @@ -348,6 +366,9 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter @Override public void onScroll(AbsListView absListView, int firstVisibleItem, int visibleItemCount, int totalItemCount) { + if (absListView.isFastScrollEnabled()) { + AndroidUtilities.clearDrawableAnimation(absListView); + } } }); } else { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/CountrySelectActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/CountrySelectActivity.java index 890ff6600..cb5689f53 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/CountrySelectActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/CountrySelectActivity.java @@ -18,6 +18,7 @@ import android.widget.AbsListView; import android.widget.AdapterView; import android.widget.EditText; import android.widget.FrameLayout; +import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; @@ -127,27 +128,44 @@ public class CountrySelectActivity extends BaseFragment { fragmentView = new FrameLayout(getParentActivity()); - emptyTextView = new TextView(getParentActivity()); - emptyTextView.setTextColor(0xff808080); - emptyTextView.setTextSize(24); - emptyTextView.setGravity(Gravity.CENTER); - emptyTextView.setVisibility(View.INVISIBLE); - emptyTextView.setText(LocaleController.getString("NoResult", R.string.NoResult)); - ((FrameLayout) fragmentView).addView(emptyTextView); - FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) emptyTextView.getLayoutParams(); + LinearLayout emptyTextLayout = new LinearLayout(getParentActivity()); + emptyTextLayout.setVisibility(View.INVISIBLE); + emptyTextLayout.setOrientation(LinearLayout.VERTICAL); + ((FrameLayout) fragmentView).addView(emptyTextLayout); + FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) emptyTextLayout.getLayoutParams(); layoutParams.width = FrameLayout.LayoutParams.MATCH_PARENT; layoutParams.height = FrameLayout.LayoutParams.MATCH_PARENT; layoutParams.gravity = Gravity.TOP; - emptyTextView.setLayoutParams(layoutParams); - emptyTextView.setOnTouchListener(new View.OnTouchListener() { + emptyTextLayout.setLayoutParams(layoutParams); + emptyTextLayout.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { return true; } }); + emptyTextView = new TextView(getParentActivity()); + emptyTextView.setTextColor(0xff808080); + emptyTextView.setTextSize(20); + emptyTextView.setGravity(Gravity.CENTER); + emptyTextView.setText(LocaleController.getString("NoResult", R.string.NoResult)); + emptyTextLayout.addView(emptyTextView); + LinearLayout.LayoutParams layoutParams1 = (LinearLayout.LayoutParams) emptyTextView.getLayoutParams(); + layoutParams1.width = LinearLayout.LayoutParams.MATCH_PARENT; + layoutParams1.height = LinearLayout.LayoutParams.MATCH_PARENT; + layoutParams1.weight = 0.5f; + emptyTextView.setLayoutParams(layoutParams1); + + FrameLayout frameLayout = new FrameLayout(getParentActivity()); + emptyTextLayout.addView(frameLayout); + layoutParams1 = (LinearLayout.LayoutParams) frameLayout.getLayoutParams(); + layoutParams1.width = LinearLayout.LayoutParams.MATCH_PARENT; + layoutParams1.height = LinearLayout.LayoutParams.MATCH_PARENT; + layoutParams1.weight = 0.5f; + frameLayout.setLayoutParams(layoutParams1); + listView = new SectionsListView(getParentActivity()); - listView.setEmptyView(emptyTextView); + listView.setEmptyView(emptyTextLayout); listView.setVerticalScrollBarEnabled(false); listView.setDivider(null); listView.setDividerHeight(0); @@ -198,6 +216,9 @@ public class CountrySelectActivity extends BaseFragment { @Override public void onScroll(AbsListView absListView, int firstVisibleItem, int visibleItemCount, int totalItemCount) { + if (absListView.isFastScrollEnabled()) { + AndroidUtilities.clearDrawableAnimation(absListView); + } } }); } else { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/DocumentSelectActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/DocumentSelectActivity.java index ca5d47f5a..224372b20 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/DocumentSelectActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/DocumentSelectActivity.java @@ -24,6 +24,7 @@ import android.widget.AdapterView; import android.widget.ListView; import android.widget.TextView; +import org.telegram.android.AndroidUtilities; import org.telegram.messenger.FileLog; import org.telegram.android.LocaleController; import org.telegram.messenger.R; @@ -32,7 +33,7 @@ import org.telegram.ui.Adapters.BaseFragmentAdapter; import org.telegram.ui.ActionBar.ActionBar; import org.telegram.ui.ActionBar.ActionBarMenu; import org.telegram.ui.ActionBar.ActionBarMenuItem; -import org.telegram.ui.Views.BackupImageView; +import org.telegram.ui.Cells.TextDetailDocumentsCell; import org.telegram.ui.ActionBar.BaseFragment; import java.io.BufferedReader; @@ -261,6 +262,7 @@ public class DocumentSelectActivity extends BaseFragment { } else { emptyView.setText(LocaleController.getString("NotMounted", R.string.NotMounted)); } + AndroidUtilities.clearDrawableAnimation(listView); listAdapter.notifyDataSetChanged(); return true; } @@ -309,6 +311,7 @@ public class DocumentSelectActivity extends BaseFragment { item.file = file; if (file.isDirectory()) { item.icon = R.drawable.ic_directory; + item.subtitle = LocaleController.getString("Folder", R.string.Folder); } else { String fname = file.getName(); String[] sp = fname.split("\\."); @@ -323,10 +326,11 @@ public class DocumentSelectActivity extends BaseFragment { } ListItem item = new ListItem(); item.title = ".."; - item.subtitle = ""; + item.subtitle = LocaleController.getString("Folder", R.string.Folder); item.icon = R.drawable.ic_directory; item.file = null; items.add(0, item); + AndroidUtilities.clearDrawableAnimation(listView); listAdapter.notifyDataSetChanged(); return true; } @@ -335,11 +339,7 @@ public class DocumentSelectActivity extends BaseFragment { if (getParentActivity() == null) { return; } - new AlertDialog.Builder(getParentActivity()) - .setTitle(LocaleController.getString("AppName", R.string.AppName)) - .setMessage(error) - .setPositiveButton(R.string.OK, null) - .show(); + new AlertDialog.Builder(getParentActivity()).setTitle(LocaleController.getString("AppName", R.string.AppName)).setMessage(error).setPositiveButton(R.string.OK, null).show(); } private void listRoots() { @@ -420,6 +420,7 @@ public class DocumentSelectActivity extends BaseFragment { FileLog.e("tmessages", e); } + AndroidUtilities.clearDrawableAnimation(listView); listAdapter.notifyDataSetChanged(); } @@ -465,35 +466,18 @@ public class DocumentSelectActivity extends BaseFragment { @Override public View getView(int position, View convertView, ViewGroup parent) { - View v = convertView; + if (convertView == null) { + convertView = new TextDetailDocumentsCell(mContext); + } + TextDetailDocumentsCell textDetailCell = (TextDetailDocumentsCell) convertView; ListItem item = items.get(position); - if (v == null) { - v = View.inflate(mContext, R.layout.document_item, null); - if (item.subtitle.length() == 0) { - v.findViewById(R.id.docs_item_info).setVisibility(View.GONE); - } - } - TextView typeTextView = (TextView)v.findViewById(R.id.docs_item_type); - ((TextView)v.findViewById(R.id.docs_item_title)).setText(item.title); - - ((TextView)v.findViewById(R.id.docs_item_info)).setText(item.subtitle); - BackupImageView imageView = (BackupImageView)v.findViewById(R.id.docs_item_thumb); - if (item.thumb != null) { - imageView.setImageBitmap(null); - typeTextView.setText(item.ext.toUpperCase().substring(0, Math.min(item.ext.length(), 4))); - imageView.setImage(item.thumb, "55_42", null); - imageView.setVisibility(View.VISIBLE); - typeTextView.setVisibility(View.VISIBLE); - } else if (item.icon != 0) { - imageView.setImageResource(item.icon); - imageView.setVisibility(View.VISIBLE); - typeTextView.setVisibility(View.GONE); + if (item.icon != 0) { + ((TextDetailDocumentsCell) convertView).setTextAndValueAndTypeAndThumb(item.title, item.subtitle, null, null, item.icon); } else { - typeTextView.setText(item.ext.toUpperCase().substring(0, Math.min(item.ext.length(), 4))); - imageView.setVisibility(View.GONE); - typeTextView.setVisibility(View.VISIBLE); + String type = item.ext.toUpperCase().substring(0, Math.min(item.ext.length(), 4)); + ((TextDetailDocumentsCell) convertView).setTextAndValueAndTypeAndThumb(item.title, item.subtitle, type, item.thumb, 0); } - return v; + return convertView; } } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java index 0f6d65d70..65cfbee21 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java @@ -59,7 +59,11 @@ import java.util.HashMap; public class GroupCreateActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate { - public class XImageSpan extends ImageSpan { + public static interface GroupCreateActivityDelegate { + public abstract void didSelectUsers(ArrayList ids); + } + + private class XImageSpan extends ImageSpan { public int uid; public XImageSpan(Drawable d, int verticalAlignment) { @@ -90,10 +94,14 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen private SectionsListView listView; private ContactsSearchAdapter searchListViewAdapter; + private GroupCreateActivityDelegate delegate; + private int beforeChangeIndex; private int maxCount = 200; private boolean ignoreChange = false; private boolean isBroadcast = false; + private boolean isAlwaysShare = false; + private boolean isNeverShare = false; private boolean searchWas; private boolean searching; private CharSequence changeString; @@ -109,6 +117,8 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen public GroupCreateActivity(Bundle args) { super(args); isBroadcast = args.getBoolean("broadcast", false); + isAlwaysShare = args.getBoolean("isAlwaysShare", false); + isNeverShare = args.getBoolean("isNeverShare", false); maxCount = !isBroadcast ? MessagesController.getInstance().maxGroupCount : MessagesController.getInstance().maxBroadcastCount; } @@ -136,8 +146,14 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen actionBar.setBackButtonImage(R.drawable.ic_ab_back); actionBar.setBackOverlay(R.layout.updating_state_layout); - actionBar.setTitle(isBroadcast ? LocaleController.getString("NewBroadcastList", R.string.NewBroadcastList) : LocaleController.getString("NewGroup", R.string.NewGroup)); - actionBar.setSubtitle(LocaleController.formatString("MembersCount", R.string.MembersCount, selectedContacts.size(), maxCount)); + if (isAlwaysShare) { + actionBar.setTitle(LocaleController.getString("AlwaysShareWithTitle", R.string.AlwaysShareWithTitle)); + } else if (isNeverShare) { + actionBar.setTitle(LocaleController.getString("NeverShareWithTitle", R.string.NeverShareWithTitle)); + } else { + actionBar.setTitle(isBroadcast ? LocaleController.getString("NewBroadcastList", R.string.NewBroadcastList) : LocaleController.getString("NewGroup", R.string.NewGroup)); + actionBar.setSubtitle(LocaleController.formatString("MembersCount", R.string.MembersCount, selectedContacts.size(), maxCount)); + } actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { @Override @@ -145,9 +161,17 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen if (id == -1) { finishFragment(); } else if (id == done_button) { - if (!selectedContacts.isEmpty()) { - ArrayList result = new ArrayList(); - result.addAll(selectedContacts.keySet()); + if (selectedContacts.isEmpty()) { + return; + } + ArrayList result = new ArrayList(); + result.addAll(selectedContacts.keySet()); + if (isAlwaysShare || isNeverShare) { + if (delegate != null) { + delegate.didSelectUsers(result); + } + finishFragment(); + } else { Bundle args = new Bundle(); args.putIntegerArrayList("result", result); args.putBoolean("broadcast", isBroadcast); @@ -157,7 +181,7 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen } }); ActionBarMenu menu = actionBar.createMenu(); - menu.addItem(done_button, R.drawable.ic_done, 0, AndroidUtilities.dp(56)); + menu.addItemWithWidth(done_button, R.drawable.ic_done, AndroidUtilities.dp(56)); searchListViewAdapter = new ContactsSearchAdapter(getParentActivity(), null, false); searchListViewAdapter.setCheckedMap(selectedContacts); @@ -179,8 +203,8 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen userSelectEditText = new EditText(getParentActivity()); userSelectEditText.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); - userSelectEditText.setHintTextColor(0xffa6a6a6); - userSelectEditText.setTextColor(0xff000000); + userSelectEditText.setHintTextColor(0xff979797); + userSelectEditText.setTextColor(0xff212121); userSelectEditText.setInputType(InputType.TYPE_TEXT_VARIATION_FILTER | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS | InputType.TYPE_TEXT_FLAG_MULTI_LINE); userSelectEditText.setMinimumHeight(AndroidUtilities.dp(54)); userSelectEditText.setSingleLine(false); @@ -201,7 +225,13 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen layoutParams1.gravity = Gravity.TOP; userSelectEditText.setLayoutParams(layoutParams1); - userSelectEditText.setHint(LocaleController.getString("SendMessageTo", R.string.SendMessageTo)); + if (isAlwaysShare) { + userSelectEditText.setHint(LocaleController.getString("AlwaysShareWithPlaceholder", R.string.AlwaysShareWithPlaceholder)); + } else if (isNeverShare) { + userSelectEditText.setHint(LocaleController.getString("NeverShareWithPlaceholder", R.string.NeverShareWithPlaceholder)); + } else { + userSelectEditText.setHint(LocaleController.getString("SendMessageTo", R.string.SendMessageTo)); + } if (Build.VERSION.SDK_INT >= 11) { userSelectEditText.setTextIsSelectable(false); } @@ -243,7 +273,9 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen selectedContacts.remove(sp.uid); } } - actionBar.setSubtitle(LocaleController.formatString("MembersCount", R.string.MembersCount, selectedContacts.size(), maxCount)); + if (!isAlwaysShare && !isNeverShare) { + actionBar.setSubtitle(LocaleController.formatString("MembersCount", R.string.MembersCount, selectedContacts.size(), maxCount)); + } listView.invalidateViews(); } else { search = true; @@ -288,27 +320,43 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen } }); - emptyTextView = new TextView(getParentActivity()); - emptyTextView.setTextColor(0xff808080); - emptyTextView.setTextSize(24); - emptyTextView.setGravity(Gravity.CENTER); - emptyTextView.setVisibility(View.INVISIBLE); - emptyTextView.setText(LocaleController.getString("NoContacts", R.string.NoContacts)); - linearLayout.addView(emptyTextView); - layoutParams = (LinearLayout.LayoutParams) emptyTextView.getLayoutParams(); - layoutParams.width = LinearLayout.LayoutParams.MATCH_PARENT; - layoutParams.height = LinearLayout.LayoutParams.MATCH_PARENT; - layoutParams.gravity = Gravity.TOP; - emptyTextView.setLayoutParams(layoutParams); - emptyTextView.setOnTouchListener(new View.OnTouchListener() { + LinearLayout emptyTextLayout = new LinearLayout(getParentActivity()); + emptyTextLayout.setVisibility(View.INVISIBLE); + emptyTextLayout.setOrientation(LinearLayout.VERTICAL); + linearLayout.addView(emptyTextLayout); + layoutParams = (LinearLayout.LayoutParams) emptyTextLayout.getLayoutParams(); + layoutParams.width = FrameLayout.LayoutParams.MATCH_PARENT; + layoutParams.height = FrameLayout.LayoutParams.MATCH_PARENT; + emptyTextLayout.setLayoutParams(layoutParams); + emptyTextLayout.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { return true; } }); + emptyTextView = new TextView(getParentActivity()); + emptyTextView.setTextColor(0xff808080); + emptyTextView.setTextSize(20); + emptyTextView.setGravity(Gravity.CENTER); + emptyTextView.setText(LocaleController.getString("NoContacts", R.string.NoContacts)); + emptyTextLayout.addView(emptyTextView); + layoutParams = (LinearLayout.LayoutParams) emptyTextView.getLayoutParams(); + layoutParams.width = LinearLayout.LayoutParams.MATCH_PARENT; + layoutParams.height = LinearLayout.LayoutParams.MATCH_PARENT; + layoutParams.weight = 0.5f; + emptyTextView.setLayoutParams(layoutParams); + + FrameLayout frameLayout2 = new FrameLayout(getParentActivity()); + emptyTextLayout.addView(frameLayout2); + layoutParams = (LinearLayout.LayoutParams) frameLayout2.getLayoutParams(); + layoutParams.width = LinearLayout.LayoutParams.MATCH_PARENT; + layoutParams.height = LinearLayout.LayoutParams.MATCH_PARENT; + layoutParams.weight = 0.5f; + frameLayout2.setLayoutParams(layoutParams); + listView = new SectionsListView(getParentActivity()); - listView.setEmptyView(emptyTextView); + listView.setEmptyView(emptyTextLayout); listView.setVerticalScrollBarEnabled(false); listView.setDivider(null); listView.setDividerHeight(0); @@ -361,7 +409,9 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen span.uid = user.id; ignoreChange = false; } - actionBar.setSubtitle(LocaleController.formatString("MembersCount", R.string.MembersCount, selectedContacts.size(), maxCount)); + if (!isAlwaysShare && !isNeverShare) { + actionBar.setSubtitle(LocaleController.formatString("MembersCount", R.string.MembersCount, selectedContacts.size(), maxCount)); + } if (searching || searchWas) { ignoreChange = true; SpannableStringBuilder ssb = new SpannableStringBuilder(""); @@ -400,6 +450,9 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen @Override public void onScroll(AbsListView absListView, int firstVisibleItem, int visibleItemCount, int totalItemCount) { + if (absListView.isFastScrollEnabled()) { + AndroidUtilities.clearDrawableAnimation(absListView); + } } }); } else { @@ -434,7 +487,11 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen } } - public XImageSpan createAndPutChipForUser(TLRPC.User user) { + public void setDelegate(GroupCreateActivityDelegate delegate) { + this.delegate = delegate; + } + + private XImageSpan createAndPutChipForUser(TLRPC.User user) { LayoutInflater lf = (LayoutInflater)ApplicationLoader.applicationContext.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); View textView = lf.inflate(R.layout.group_create_bubble, null); TextView text = (TextView)textView.findViewById(R.id.bubble_text_view); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateFinalActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateFinalActivity.java index bef7552a4..953cca7c8 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateFinalActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateFinalActivity.java @@ -184,7 +184,7 @@ public class GroupCreateFinalActivity extends BaseFragment implements Notificati }); ActionBarMenu menu = actionBar.createMenu(); - menu.addItem(done_button, R.drawable.ic_done, 0, AndroidUtilities.dp(56)); + menu.addItemWithWidth(done_button, R.drawable.ic_done, AndroidUtilities.dp(56)); fragmentView = new LinearLayout(getParentActivity()); LinearLayout linearLayout = (LinearLayout) fragmentView; @@ -198,6 +198,7 @@ public class GroupCreateFinalActivity extends BaseFragment implements Notificati frameLayout.setLayoutParams(layoutParams); avatarImage = new BackupImageView(getParentActivity()); + avatarImage.imageReceiver.setRoundRadius(AndroidUtilities.dp(32)); avatarDrawable.setInfo(5, null, null, isBroadcast); avatarImage.setImageDrawable(avatarDrawable); frameLayout.addView(avatarImage); @@ -254,12 +255,12 @@ public class GroupCreateFinalActivity extends BaseFragment implements Notificati nameTextView.setMaxLines(4); nameTextView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT); nameTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); - nameTextView.setHintTextColor(0xffa6a6a6); + nameTextView.setHintTextColor(0xff979797); nameTextView.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI); nameTextView.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES); nameTextView.setPadding(0, 0, 0, AndroidUtilities.dp(8)); AndroidUtilities.clearCursorDrawable(nameTextView); - nameTextView.setTextColor(0xff000000); + nameTextView.setTextColor(0xff212121); frameLayout.addView(nameTextView); layoutParams1 = (FrameLayout.LayoutParams) nameTextView.getLayoutParams(); layoutParams1.width = FrameLayout.LayoutParams.MATCH_PARENT; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LanguageSelectActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LanguageSelectActivity.java index a0fa16ec2..98d88236c 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LanguageSelectActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LanguageSelectActivity.java @@ -20,6 +20,7 @@ import android.widget.AbsListView; import android.widget.AdapterView; import android.widget.EditText; import android.widget.FrameLayout; +import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; @@ -94,7 +95,6 @@ public class LanguageSelectActivity extends BaseFragment { if (text.length() != 0) { searchWas = true; if (listView != null) { - listView.setPadding(AndroidUtilities.dp(16), listView.getPaddingTop(), AndroidUtilities.dp(16), listView.getPaddingBottom()); listView.setAdapter(searchListViewAdapter); } } @@ -106,27 +106,44 @@ public class LanguageSelectActivity extends BaseFragment { fragmentView = new FrameLayout(getParentActivity()); - emptyTextView = new TextView(getParentActivity()); - emptyTextView.setTextColor(0xff808080); - emptyTextView.setTextSize(24); - emptyTextView.setGravity(Gravity.CENTER); - emptyTextView.setVisibility(View.INVISIBLE); - emptyTextView.setText(LocaleController.getString("NoResult", R.string.NoResult)); - ((FrameLayout) fragmentView).addView(emptyTextView); - FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) emptyTextView.getLayoutParams(); + LinearLayout emptyTextLayout = new LinearLayout(getParentActivity()); + emptyTextLayout.setVisibility(View.INVISIBLE); + emptyTextLayout.setOrientation(LinearLayout.VERTICAL); + ((FrameLayout) fragmentView).addView(emptyTextLayout); + FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) emptyTextLayout.getLayoutParams(); layoutParams.width = FrameLayout.LayoutParams.MATCH_PARENT; layoutParams.height = FrameLayout.LayoutParams.MATCH_PARENT; layoutParams.gravity = Gravity.TOP; - emptyTextView.setLayoutParams(layoutParams); - emptyTextView.setOnTouchListener(new View.OnTouchListener() { + emptyTextLayout.setLayoutParams(layoutParams); + emptyTextLayout.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { return true; } }); + emptyTextView = new TextView(getParentActivity()); + emptyTextView.setTextColor(0xff808080); + emptyTextView.setTextSize(20); + emptyTextView.setGravity(Gravity.CENTER); + emptyTextView.setText(LocaleController.getString("NoResult", R.string.NoResult)); + emptyTextLayout.addView(emptyTextView); + LinearLayout.LayoutParams layoutParams1 = (LinearLayout.LayoutParams) emptyTextView.getLayoutParams(); + layoutParams1.width = LinearLayout.LayoutParams.MATCH_PARENT; + layoutParams1.height = LinearLayout.LayoutParams.MATCH_PARENT; + layoutParams1.weight = 0.5f; + emptyTextView.setLayoutParams(layoutParams1); + + FrameLayout frameLayout = new FrameLayout(getParentActivity()); + emptyTextLayout.addView(frameLayout); + layoutParams1 = (LinearLayout.LayoutParams) frameLayout.getLayoutParams(); + layoutParams1.width = LinearLayout.LayoutParams.MATCH_PARENT; + layoutParams1.height = LinearLayout.LayoutParams.MATCH_PARENT; + layoutParams1.weight = 0.5f; + frameLayout.setLayoutParams(layoutParams1); + listView = new ListView(getParentActivity()); - listView.setEmptyView(emptyTextView); + listView.setEmptyView(emptyTextLayout); listView.setVerticalScrollBarEnabled(false); listView.setDivider(null); listView.setDividerHeight(0); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LastSeenActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LastSeenActivity.java new file mode 100644 index 000000000..86be9fa89 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/LastSeenActivity.java @@ -0,0 +1,469 @@ +/* + * This is the source code of Telegram for Android v. 1.7.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-2014. + */ + +package org.telegram.ui; + +import android.app.AlertDialog; +import android.content.Context; +import android.os.Bundle; +import android.text.Spannable; +import android.text.method.LinkMovementMethod; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.FrameLayout; +import android.widget.ListView; +import android.widget.TextView; + +import org.telegram.android.AndroidUtilities; +import org.telegram.android.ContactsController; +import org.telegram.android.LocaleController; +import org.telegram.android.MessagesController; +import org.telegram.android.NotificationCenter; +import org.telegram.messenger.ConnectionsManager; +import org.telegram.messenger.FileLog; +import org.telegram.messenger.R; +import org.telegram.messenger.RPCRequest; +import org.telegram.messenger.TLObject; +import org.telegram.messenger.TLRPC; +import org.telegram.ui.ActionBar.ActionBar; +import org.telegram.ui.ActionBar.ActionBarMenu; +import org.telegram.ui.ActionBar.BaseFragment; +import org.telegram.ui.Adapters.BaseFragmentAdapter; +import org.telegram.ui.Cells.HeaderCell; +import org.telegram.ui.Cells.TextInfoPrivacyCell; +import org.telegram.ui.Cells.TextSettingsCell; + +import java.util.ArrayList; + +public class LastSeenActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate { + + private ListAdapter listAdapter; + private View doneButton; + + private int currentType = 0; + private ArrayList currentPlus; + private ArrayList currentMinus; + + private int lastSeenSectionRow; + private int everybodyRow; + private int myContactsRow; + private int nobodyRow; + private int lastSeenDetailRow; + private int shareSectionRow; + private int alwaysShareRow; + private int neverShareRow; + private int shareDetailRow; + private int rowCount; + + private final static int done_button = 1; + + private static class LinkMovementMethodMy extends LinkMovementMethod { + @Override + public boolean onTouchEvent(TextView widget, Spannable buffer, MotionEvent event) { + try { + return super.onTouchEvent(widget, buffer, event); + } catch (Exception e) { + FileLog.e("tmessages", e); + } + return false; + } + } + + @Override + public boolean onFragmentCreate() { + super.onFragmentCreate(); + checkPrivacy(); + updateRows(); + NotificationCenter.getInstance().addObserver(this, NotificationCenter.privacyRulesUpdated); + return true; + } + + @Override + public void onFragmentDestroy() { + super.onFragmentDestroy(); + NotificationCenter.getInstance().removeObserver(this, NotificationCenter.privacyRulesUpdated); + } + + @Override + public View createView(LayoutInflater inflater, ViewGroup container) { + if (fragmentView == null) { + actionBar.setBackButtonImage(R.drawable.ic_ab_back); + actionBar.setBackOverlay(R.layout.updating_state_layout); + actionBar.setTitle(LocaleController.getString("PrivacyLastSeen", R.string.PrivacyLastSeen)); + actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { + @Override + public void onItemClick(int id) { + if (id == -1) { + finishFragment(); + } else if (id == done_button) { + TLRPC.TL_account_setPrivacy req = new TLRPC.TL_account_setPrivacy(); + req.key = new TLRPC.TL_inputPrivacyKeyStatusTimestamp(); + if (currentType != 0 && currentPlus.size() > 0) { + TLRPC.TL_inputPrivacyValueAllowUsers rule = new TLRPC.TL_inputPrivacyValueAllowUsers(); + for (Integer uid : currentPlus) { + TLRPC.User user = MessagesController.getInstance().getUser(uid); + if (user != null) { + TLRPC.InputUser inputUser = MessagesController.getInputUser(user); + if (inputUser != null) { + rule.users.add(inputUser); + } + } + } + req.rules.add(rule); + } + if (currentType != 1 && currentMinus.size() > 0) { + TLRPC.TL_inputPrivacyValueDisallowUsers rule = new TLRPC.TL_inputPrivacyValueDisallowUsers(); + for (Integer uid : currentMinus) { + TLRPC.User user = MessagesController.getInstance().getUser(uid); + if (user != null) { + TLRPC.InputUser inputUser = MessagesController.getInputUser(user); + if (inputUser != null) { + rule.users.add(inputUser); + } + } + } + req.rules.add(rule); + } + if (currentType == 0) { + req.rules.add(new TLRPC.TL_inputPrivacyValueAllowAll()); + } else if (currentType == 1) { + req.rules.add(new TLRPC.TL_inputPrivacyValueDisallowAll()); + } else if (currentType == 2) { + req.rules.add(new TLRPC.TL_inputPrivacyValueAllowContacts()); + } + ConnectionsManager.getInstance().performRpc(req, new RPCRequest.RPCRequestDelegate() { + @Override + public void run(final TLObject response, final TLRPC.TL_error error) { + AndroidUtilities.runOnUIThread(new Runnable() { + @Override + public void run() { + if (error == null) { + finishFragment(); + TLRPC.TL_account_privacyRules rules = (TLRPC.TL_account_privacyRules) response; + MessagesController.getInstance().putUsers(rules.users, false); + ContactsController.getInstance().setPrivacyRules(rules.rules); + } else { + showErrorAlert(); + } + } + }); + } + }, true, RPCRequest.RPCRequestClassGeneric | RPCRequest.RPCRequestClassFailOnServerErrors); + } + } + }); + + ActionBarMenu menu = actionBar.createMenu(); + doneButton = menu.addItemWithWidth(done_button, R.drawable.ic_done, AndroidUtilities.dp(56)); + doneButton.setVisibility(View.GONE); + + listAdapter = new ListAdapter(getParentActivity()); + + fragmentView = new FrameLayout(getParentActivity()); + FrameLayout frameLayout = (FrameLayout) fragmentView; + frameLayout.setBackgroundColor(0xfff0f0f0); + + ListView listView = new ListView(getParentActivity()); + listView.setDivider(null); + listView.setDividerHeight(0); + listView.setVerticalScrollBarEnabled(false); + listView.setDrawSelectorOnTop(true); + frameLayout.addView(listView); + FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) listView.getLayoutParams(); + layoutParams.width = FrameLayout.LayoutParams.MATCH_PARENT; + layoutParams.height = FrameLayout.LayoutParams.MATCH_PARENT; + layoutParams.gravity = Gravity.TOP; + listView.setLayoutParams(layoutParams); + listView.setAdapter(listAdapter); + listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, final int i, long l) { + if (i == nobodyRow || i == everybodyRow || i == myContactsRow) { + int newType = currentType; + if (i == nobodyRow) { + newType = 1; + } else if (i == everybodyRow) { + newType = 0; + } else if (i == myContactsRow) { + newType = 2; + } + if (newType == currentType) { + return; + } + doneButton.setVisibility(View.VISIBLE); + currentType = newType; + updateRows(); + } else if (i == neverShareRow || i == alwaysShareRow) { + ArrayList createFromArray = null; + if (i == neverShareRow) { + createFromArray = currentMinus; + } else { + createFromArray = currentPlus; + } + if (createFromArray.isEmpty()) { + Bundle args = new Bundle(); + args.putBoolean(i == neverShareRow ? "isNeverShare" : "isAlwaysShare", true); + GroupCreateActivity fragment = new GroupCreateActivity(args); + fragment.setDelegate(new GroupCreateActivity.GroupCreateActivityDelegate() { + @Override + public void didSelectUsers(ArrayList ids) { + if (i == neverShareRow) { + currentMinus = ids; + } else { + currentPlus = ids; + } + doneButton.setVisibility(View.VISIBLE); + listAdapter.notifyDataSetChanged(); + } + }); + presentFragment(fragment); + } else { + LastSeenUsersActivity fragment = new LastSeenUsersActivity(createFromArray, i == alwaysShareRow); + fragment.setDelegate(new LastSeenUsersActivity.LastSeenUsersActivityDelegate() { + @Override + public void didUpdatedUserList(ArrayList ids, boolean added) { + if (i == neverShareRow) { + currentMinus = ids; + if (added) { + for (Integer id : currentMinus) { + currentPlus.remove(id); + } + } + } else { + currentPlus = ids; + if (added) { + for (Integer id : currentPlus) { + currentMinus.remove(id); + } + } + } + doneButton.setVisibility(View.VISIBLE); + listAdapter.notifyDataSetChanged(); + } + }); + presentFragment(fragment); + } + } + } + }); + } else { + ViewGroup parent = (ViewGroup) fragmentView.getParent(); + if (parent != null) { + parent.removeView(fragmentView); + } + } + return fragmentView; + } + + @Override + public void didReceivedNotification(int id, Object... args) { + if (id == NotificationCenter.privacyRulesUpdated) { + checkPrivacy(); + } + } + + private void showErrorAlert() { + if (getParentActivity() == null) { + return; + } + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); + builder.setMessage(LocaleController.getString("PrivacyFloodControlError", R.string.PrivacyFloodControlError)); + builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), null); + showAlertDialog(builder); + } + + private void checkPrivacy() { + currentPlus = new ArrayList(); + currentMinus = new ArrayList(); + ArrayList privacyRules = ContactsController.getInstance().getPrivacyRules(); + if (privacyRules.size() == 0) { + currentType = 1; + return; + } + int type = -1; + for (TLRPC.PrivacyRule rule : privacyRules) { + if (rule instanceof TLRPC.TL_privacyValueAllowUsers) { + currentPlus.addAll(rule.users); + } else if (rule instanceof TLRPC.TL_privacyValueDisallowUsers) { + currentMinus.addAll(rule.users); + } else if (rule instanceof TLRPC.TL_privacyValueAllowAll) { + type = 0; + } else if (rule instanceof TLRPC.TL_privacyValueDisallowAll) { + type = 1; + } else { + type = 2; + } + } + if (type == 0 || type == -1 && currentMinus.size() > 0) { + currentType = 0; + } else if (type == 2 || type == -1 && currentMinus.size() > 0 && currentPlus.size() > 0) { + currentType = 2; + } else if (type == 1 || type == -1 && currentPlus.size() > 0) { + currentType = 1; + } + if (doneButton != null) { + doneButton.setVisibility(View.GONE); + } + updateRows(); + } + + private void updateRows() { + rowCount = 0; + lastSeenSectionRow = rowCount++; + everybodyRow = rowCount++; + myContactsRow = rowCount++; + nobodyRow = rowCount++; + lastSeenDetailRow = rowCount++; + shareSectionRow = rowCount++; + if (currentType == 1 || currentType == 2) { + alwaysShareRow = rowCount++; + } else { + alwaysShareRow = -1; + } + if (currentType == 0 || currentType == 2) { + neverShareRow = rowCount++; + } else { + neverShareRow = -1; + } + shareDetailRow = rowCount++; + if (listAdapter != null) { + listAdapter.notifyDataSetChanged(); + } + } + + @Override + public void onResume() { + super.onResume(); + if (listAdapter != null) { + listAdapter.notifyDataSetChanged(); + } + } + + private class ListAdapter extends BaseFragmentAdapter { + private Context mContext; + + public ListAdapter(Context context) { + mContext = context; + } + + @Override + public boolean areAllItemsEnabled() { + return false; + } + + @Override + public boolean isEnabled(int i) { + return i == nobodyRow || i == everybodyRow || i == myContactsRow || i == neverShareRow || i == alwaysShareRow; + } + + @Override + public int getCount() { + return rowCount; + } + + @Override + public Object getItem(int i) { + return null; + } + + @Override + public long getItemId(int i) { + return i; + } + + @Override + public boolean hasStableIds() { + return false; + } + + @Override + public View getView(int i, View view, ViewGroup viewGroup) { + int type = getItemViewType(i); + if (type == 0) { + if (view == null) { + view = new TextSettingsCell(mContext); + view.setBackgroundColor(0xffffffff); + } + TextSettingsCell textCell = (TextSettingsCell) view; + if (i == everybodyRow) { + textCell.setTextAndIcon(LocaleController.getString("LastSeenEverybody", R.string.LastSeenEverybody), currentType == 0 ? R.drawable.check_blue : 0, true); + } else if (i == myContactsRow) { + textCell.setTextAndIcon(LocaleController.getString("LastSeenContacts", R.string.LastSeenContacts), currentType == 2 ? R.drawable.check_blue : 0, true); + } else if (i == nobodyRow) { + textCell.setTextAndIcon(LocaleController.getString("LastSeenNobody", R.string.LastSeenNobody), currentType == 1 ? R.drawable.check_blue : 0, false); + } else if (i == alwaysShareRow) { + String value; + if (currentPlus.size() != 0) { + value = LocaleController.formatPluralString("Users", currentPlus.size()); + } else { + value = LocaleController.getString("EmpryUsersPlaceholder", R.string.EmpryUsersPlaceholder); + } + textCell.setTextAndValue(LocaleController.getString("AlwaysShareWith", R.string.AlwaysShareWith), value, neverShareRow != -1); + } else if (i == neverShareRow) { + String value; + if (currentMinus.size() != 0) { + value = LocaleController.formatPluralString("Users", currentMinus.size()); + } else { + value = LocaleController.getString("EmpryUsersPlaceholder", R.string.EmpryUsersPlaceholder); + } + textCell.setTextAndValue(LocaleController.getString("NeverShareWith", R.string.NeverShareWith), value, false); + } + } else if (type == 1) { + if (view == null) { + view = new TextInfoPrivacyCell(mContext); + view.setBackgroundColor(0xffffffff); + } + if (i == lastSeenDetailRow) { + ((TextInfoPrivacyCell) view).setText(LocaleController.getString("CustomHelp", R.string.CustomHelp)); + view.setBackgroundResource(R.drawable.greydivider); + } else if (i == shareDetailRow) { + ((TextInfoPrivacyCell) view).setText(LocaleController.getString("CustomShareSettingsHelp", R.string.CustomShareSettingsHelp)); + view.setBackgroundResource(R.drawable.greydivider_bottom); + } + } else if (type == 2) { + if (view == null) { + view = new HeaderCell(mContext); + view.setBackgroundColor(0xffffffff); + } + if (i == lastSeenSectionRow) { + ((HeaderCell) view).setText(LocaleController.getString("LastSeenTitle", R.string.LastSeenTitle)); + } else if (i == shareSectionRow) { + ((HeaderCell) view).setText(LocaleController.getString("AddExceptions", R.string.AddExceptions)); + } + } + return view; + } + + @Override + public int getItemViewType(int i) { + if (i == alwaysShareRow || i == neverShareRow || i == everybodyRow || i == myContactsRow || i == nobodyRow) { + return 0; + } else if (i == shareDetailRow || i == lastSeenDetailRow) { + return 1; + } else if (i == lastSeenSectionRow || i == shareSectionRow) { + return 2; + } + return 0; + } + + @Override + public int getViewTypeCount() { + return 3; + } + + @Override + public boolean isEmpty() { + return false; + } + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LastSeenUsersActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LastSeenUsersActivity.java new file mode 100644 index 000000000..6d3232b67 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/LastSeenUsersActivity.java @@ -0,0 +1,313 @@ +/* + * This is the source code of Telegram for Android v. 2.0.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-2014. + */ + +package org.telegram.ui; + +import android.app.AlertDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.os.Build; +import android.os.Bundle; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.FrameLayout; +import android.widget.ListView; +import android.widget.TextView; + +import org.telegram.PhoneFormat.PhoneFormat; +import org.telegram.android.LocaleController; +import org.telegram.android.MessagesController; +import org.telegram.android.NotificationCenter; +import org.telegram.messenger.R; +import org.telegram.messenger.TLRPC; +import org.telegram.ui.ActionBar.ActionBar; +import org.telegram.ui.ActionBar.ActionBarMenu; +import org.telegram.ui.ActionBar.BaseFragment; +import org.telegram.ui.Adapters.BaseFragmentAdapter; +import org.telegram.ui.Cells.TextInfoCell; +import org.telegram.ui.Cells.UserCell; + +import java.util.ArrayList; + +public class LastSeenUsersActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate { + + public static interface LastSeenUsersActivityDelegate { + public abstract void didUpdatedUserList(ArrayList ids, boolean added); + } + + private ListView listView; + private ListAdapter listViewAdapter; + private int selectedUserId; + + private ArrayList uidArray; + private boolean isAlwaysShare; + + private LastSeenUsersActivityDelegate delegate; + + private final static int block_user = 1; + + public LastSeenUsersActivity(ArrayList users, boolean always) { + super(); + uidArray = users; + isAlwaysShare = always; + } + + @Override + public boolean onFragmentCreate() { + super.onFragmentCreate(); + NotificationCenter.getInstance().addObserver(this, NotificationCenter.updateInterfaces); + return true; + } + + @Override + public void onFragmentDestroy() { + super.onFragmentDestroy(); + NotificationCenter.getInstance().removeObserver(this, NotificationCenter.updateInterfaces); + } + + @Override + public View createView(LayoutInflater inflater, ViewGroup container) { + if (fragmentView == null) { + actionBar.setBackButtonImage(R.drawable.ic_ab_back); + actionBar.setBackOverlay(R.layout.updating_state_layout); + if (isAlwaysShare) { + actionBar.setTitle(LocaleController.getString("AlwaysShareWithTitle", R.string.AlwaysShareWithTitle)); + } else { + actionBar.setTitle(LocaleController.getString("NeverShareWithTitle", R.string.NeverShareWithTitle)); + } + actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { + @Override + public void onItemClick(int id) { + if (id == -1) { + finishFragment(); + } else if (id == block_user) { + Bundle args = new Bundle(); + args.putBoolean(isAlwaysShare ? "isAlwaysShare" : "isNeverShare", true); + GroupCreateActivity fragment = new GroupCreateActivity(args); + fragment.setDelegate(new GroupCreateActivity.GroupCreateActivityDelegate() { + @Override + public void didSelectUsers(ArrayList ids) { + for (Integer id : ids) { + if (uidArray.contains(id)) { + continue; + } + uidArray.add(id); + } + listViewAdapter.notifyDataSetChanged(); + if (delegate != null) { + delegate.didUpdatedUserList(uidArray, true); + } + } + }); + presentFragment(fragment); + } + } + }); + + ActionBarMenu menu = actionBar.createMenu(); + menu.addItem(block_user, R.drawable.plus); + + fragmentView = new FrameLayout(getParentActivity()); + FrameLayout frameLayout = (FrameLayout) fragmentView; + + TextView emptyTextView = new TextView(getParentActivity()); + emptyTextView.setTextColor(0xff808080); + emptyTextView.setTextSize(20); + emptyTextView.setGravity(Gravity.CENTER); + emptyTextView.setVisibility(View.INVISIBLE); + emptyTextView.setText(LocaleController.getString("NoContacts", R.string.NoContacts)); + frameLayout.addView(emptyTextView); + FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) emptyTextView.getLayoutParams(); + layoutParams.width = FrameLayout.LayoutParams.MATCH_PARENT; + layoutParams.height = FrameLayout.LayoutParams.MATCH_PARENT; + layoutParams.gravity = Gravity.TOP; + emptyTextView.setLayoutParams(layoutParams); + emptyTextView.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + return true; + } + }); + + listView = new ListView(getParentActivity()); + listView.setEmptyView(emptyTextView); + listView.setVerticalScrollBarEnabled(false); + listView.setDivider(null); + listView.setDividerHeight(0); + listView.setAdapter(listViewAdapter = new ListAdapter(getParentActivity())); + if (Build.VERSION.SDK_INT >= 11) { + listView.setVerticalScrollbarPosition(LocaleController.isRTL ? ListView.SCROLLBAR_POSITION_LEFT : ListView.SCROLLBAR_POSITION_RIGHT); + } + frameLayout.addView(listView); + layoutParams = (FrameLayout.LayoutParams) listView.getLayoutParams(); + layoutParams.width = FrameLayout.LayoutParams.MATCH_PARENT; + layoutParams.height = FrameLayout.LayoutParams.MATCH_PARENT; + listView.setLayoutParams(layoutParams); + + listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int i, long l) { + if (i < uidArray.size()) { + Bundle args = new Bundle(); + args.putInt("user_id", uidArray.get(i)); + presentFragment(new ProfileActivity(args)); + } + } + }); + + listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { + @Override + public boolean onItemLongClick(AdapterView adapterView, View view, int i, long l) { + if (i < 0 || i >= uidArray.size() || getParentActivity() == null) { + return true; + } + selectedUserId = uidArray.get(i); + + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + CharSequence[] items = new CharSequence[] {LocaleController.getString("Delete", R.string.Delete)}; + builder.setItems(items, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + if (i == 0) { + uidArray.remove((Integer)selectedUserId); + listViewAdapter.notifyDataSetChanged(); + if (delegate != null) { + delegate.didUpdatedUserList(uidArray, false); + } + } + } + }); + showAlertDialog(builder); + return true; + } + }); + } else { + ViewGroup parent = (ViewGroup)fragmentView.getParent(); + if (parent != null) { + parent.removeView(fragmentView); + } + } + return fragmentView; + } + + @Override + public void didReceivedNotification(int id, Object... args) { + if (id == NotificationCenter.updateInterfaces) { + int mask = (Integer)args[0]; + if ((mask & MessagesController.UPDATE_MASK_AVATAR) != 0 || (mask & MessagesController.UPDATE_MASK_NAME) != 0) { + updateVisibleRows(mask); + } + } + } + + private void updateVisibleRows(int mask) { + if (listView == null) { + return; + } + int count = listView.getChildCount(); + for (int a = 0; a < count; a++) { + View child = listView.getChildAt(a); + if (child instanceof UserCell) { + ((UserCell) child).update(mask); + } + } + } + + public void setDelegate(LastSeenUsersActivityDelegate delegate) { + this.delegate = delegate; + } + + @Override + public void onResume() { + super.onResume(); + if (listViewAdapter != null) { + listViewAdapter.notifyDataSetChanged(); + } + } + + private class ListAdapter extends BaseFragmentAdapter { + private Context mContext; + + public ListAdapter(Context context) { + mContext = context; + } + + @Override + public boolean areAllItemsEnabled() { + return false; + } + + @Override + public boolean isEnabled(int i) { + return i != uidArray.size(); + } + + @Override + public int getCount() { + if (uidArray.isEmpty()) { + return 0; + } + return uidArray.size() + 1; + } + + @Override + public Object getItem(int i) { + return null; + } + + @Override + public long getItemId(int i) { + return i; + } + + @Override + public boolean hasStableIds() { + return false; + } + + @Override + public View getView(int i, View view, ViewGroup viewGroup) { + int type = getItemViewType(i); + if (type == 0) { + if (view == null) { + view = new UserCell(mContext, 1); + } + TLRPC.User user = MessagesController.getInstance().getUser(uidArray.get(i)); + ((UserCell)view).setData(user, null, user.phone != null && user.phone.length() != 0 ? PhoneFormat.getInstance().format("+" + user.phone) : LocaleController.getString("NumberUnknown", R.string.NumberUnknown), 0); + } else if (type == 1) { + if (view == null) { + view = new TextInfoCell(mContext); + ((TextInfoCell) view).setText(LocaleController.getString("RemoveFromListText", R.string.RemoveFromListText)); + } + } + return view; + } + + @Override + public int getItemViewType(int i) { + if(i == uidArray.size()) { + return 1; + } + return 0; + } + + @Override + public int getViewTypeCount() { + return 2; + } + + @Override + public boolean isEmpty() { + return uidArray.isEmpty(); + } + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java index f3690f321..d54c273cd 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java @@ -27,11 +27,11 @@ import android.view.View; import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.view.Window; +import android.view.WindowManager; import android.widget.AbsListView; import android.widget.AdapterView; import android.widget.FrameLayout; import android.widget.ImageView; -import android.widget.LinearLayout; import android.widget.ListView; import android.widget.RelativeLayout; import android.widget.TextView; @@ -61,28 +61,28 @@ import java.util.ArrayList; import java.util.Map; public class LaunchActivity extends Activity implements ActionBarLayout.ActionBarLayoutDelegate, NotificationCenter.NotificationCenterDelegate, MessagesActivity.MessagesActivityDelegate { - private boolean finished = false; - private String videoPath = null; - private String sendingText = null; - private ArrayList photoPathsArray = null; - private ArrayList documentsPathsArray = null; - private ArrayList documentsOriginalPathsArray = null; - private ArrayList contactsToSend = null; + private boolean finished; + private String videoPath; + private String sendingText; + private ArrayList photoPathsArray; + private ArrayList documentsPathsArray; + private ArrayList documentsOriginalPathsArray; + private ArrayList contactsToSend; private int currentConnectionState; private static ArrayList mainFragmentsStack = new ArrayList(); private static ArrayList layerFragmentsStack = new ArrayList(); private static ArrayList rightFragmentsStack = new ArrayList(); - private ActionBarLayout actionBarLayout = null; - private ActionBarLayout layersActionBarLayout = null; - private ActionBarLayout rightActionBarLayout = null; - private FrameLayout shadowTablet = null; - private LinearLayout buttonLayoutTablet = null; - private FrameLayout shadowTabletSide = null; - private ImageView backgroundTablet = null; - private DrawerLayoutContainer drawerLayoutContainer = null; + private ActionBarLayout actionBarLayout; + private ActionBarLayout layersActionBarLayout; + private ActionBarLayout rightActionBarLayout; + private FrameLayout shadowTablet; + private FrameLayout shadowTabletSide; + private ImageView backgroundTablet; + private DrawerLayoutContainer drawerLayoutContainer; + private DrawerLayoutAdapter drawerLayoutAdapter; - private boolean tabletFullSize = false; + private boolean tabletFullSize; @Override protected void onCreate(Bundle savedInstanceState) { @@ -114,14 +114,66 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa super.onCreate(savedInstanceState); - actionBarLayout = new ActionBarLayout(this); - if (AndroidUtilities.isTablet()) { - setContentView(R.layout.launch_layout_tablet); - shadowTablet = (FrameLayout)findViewById(R.id.shadow_tablet); - buttonLayoutTablet = (LinearLayout)findViewById(R.id.launch_button_layout); - shadowTabletSide = (FrameLayout)findViewById(R.id.shadow_tablet_side); - backgroundTablet = (ImageView)findViewById(R.id.launch_background); + int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android"); + if (resourceId > 0) { + AndroidUtilities.statusBarHeight = getResources().getDimensionPixelSize(resourceId); + } + actionBarLayout = new ActionBarLayout(this); + + drawerLayoutContainer = new DrawerLayoutContainer(this); + setContentView(drawerLayoutContainer, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); + + if (AndroidUtilities.isTablet()) { + getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); + + RelativeLayout launchLayout = new RelativeLayout(this); + drawerLayoutContainer.addView(launchLayout); + FrameLayout.LayoutParams layoutParams1 = (FrameLayout.LayoutParams) launchLayout.getLayoutParams(); + layoutParams1.width = FrameLayout.LayoutParams.MATCH_PARENT; + layoutParams1.height = FrameLayout.LayoutParams.MATCH_PARENT; + launchLayout.setLayoutParams(layoutParams1); + + backgroundTablet = new ImageView(this); + backgroundTablet.setScaleType(ImageView.ScaleType.CENTER_CROP); + backgroundTablet.setImageResource(R.drawable.cats); + launchLayout.addView(backgroundTablet); + RelativeLayout.LayoutParams relativeLayoutParams = (RelativeLayout.LayoutParams) backgroundTablet.getLayoutParams(); + relativeLayoutParams.width = RelativeLayout.LayoutParams.MATCH_PARENT; + relativeLayoutParams.height = RelativeLayout.LayoutParams.MATCH_PARENT; + backgroundTablet.setLayoutParams(relativeLayoutParams); + + launchLayout.addView(actionBarLayout); + relativeLayoutParams = (RelativeLayout.LayoutParams) actionBarLayout.getLayoutParams(); + relativeLayoutParams.width = RelativeLayout.LayoutParams.MATCH_PARENT; + relativeLayoutParams.height = RelativeLayout.LayoutParams.MATCH_PARENT; + actionBarLayout.setLayoutParams(relativeLayoutParams); + + rightActionBarLayout = new ActionBarLayout(this); + launchLayout.addView(rightActionBarLayout); + relativeLayoutParams = (RelativeLayout.LayoutParams)rightActionBarLayout.getLayoutParams(); + relativeLayoutParams.width = AndroidUtilities.dp(320); + relativeLayoutParams.height = RelativeLayout.LayoutParams.MATCH_PARENT; + rightActionBarLayout.setLayoutParams(relativeLayoutParams); + rightActionBarLayout.init(rightFragmentsStack); + rightActionBarLayout.setDelegate(this); + + shadowTabletSide = new FrameLayout(this); + shadowTabletSide.setBackgroundColor(0x40295274); + launchLayout.addView(shadowTabletSide); + relativeLayoutParams = (RelativeLayout.LayoutParams) shadowTabletSide.getLayoutParams(); + relativeLayoutParams.width = AndroidUtilities.dp(1); + relativeLayoutParams.height = RelativeLayout.LayoutParams.MATCH_PARENT; + shadowTabletSide.setLayoutParams(relativeLayoutParams); + + shadowTablet = new FrameLayout(this); + shadowTablet.setVisibility(View.GONE); + shadowTablet.setBackgroundColor(0x7F000000); + launchLayout.addView(shadowTablet); + relativeLayoutParams = (RelativeLayout.LayoutParams) shadowTablet.getLayoutParams(); + relativeLayoutParams.width = RelativeLayout.LayoutParams.MATCH_PARENT; + relativeLayoutParams.height = RelativeLayout.LayoutParams.MATCH_PARENT; + shadowTablet.setLayoutParams(relativeLayoutParams); shadowTablet.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { @@ -157,176 +209,105 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa } }); - RelativeLayout launchLayout = (RelativeLayout)findViewById(R.id.launch_layout); - layersActionBarLayout = new ActionBarLayout(this); + layersActionBarLayout.setRemoveActionBarExtraHeight(true); layersActionBarLayout.setBackgroundView(shadowTablet); layersActionBarLayout.setUseAlphaAnimations(true); layersActionBarLayout.setBackgroundResource(R.drawable.boxshadow); launchLayout.addView(layersActionBarLayout); - RelativeLayout.LayoutParams relativeLayoutParams = (RelativeLayout.LayoutParams)layersActionBarLayout.getLayoutParams(); + relativeLayoutParams = (RelativeLayout.LayoutParams)layersActionBarLayout.getLayoutParams(); relativeLayoutParams.width = AndroidUtilities.dp(498); relativeLayoutParams.height = AndroidUtilities.dp(528); - relativeLayoutParams.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE); layersActionBarLayout.setLayoutParams(relativeLayoutParams); layersActionBarLayout.init(layerFragmentsStack); layersActionBarLayout.setDelegate(this); + layersActionBarLayout.setDrawerLayoutContainer(drawerLayoutContainer); layersActionBarLayout.setVisibility(View.GONE); + } else { + drawerLayoutContainer.addView(actionBarLayout, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); + } - launchLayout.addView(actionBarLayout, 2); - relativeLayoutParams = (RelativeLayout.LayoutParams)actionBarLayout.getLayoutParams(); - relativeLayoutParams.width = AndroidUtilities.dp(320); - relativeLayoutParams.height = RelativeLayout.LayoutParams.MATCH_PARENT; - actionBarLayout.setLayoutParams(relativeLayoutParams); + ListView listView = new ListView(this); + listView.setAdapter(drawerLayoutAdapter = new DrawerLayoutAdapter(this)); + drawerLayoutContainer.setDrawerLayout(listView); + listView.setBackgroundColor(0xffffffff); + FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams)listView.getLayoutParams(); + Point screenSize = AndroidUtilities.getRealScreenSize(); + layoutParams.width = AndroidUtilities.isTablet() ? AndroidUtilities.dp(320) : Math.min(screenSize.x, screenSize.y) - AndroidUtilities.dp(56); + layoutParams.height = FrameLayout.LayoutParams.MATCH_PARENT; + listView.setPadding(0, 0, 0, 0); + listView.setChoiceMode(AbsListView.CHOICE_MODE_SINGLE); + listView.setDivider(null); + listView.setDividerHeight(0); + listView.setLayoutParams(layoutParams); + listView.setVerticalScrollBarEnabled(false); - rightActionBarLayout = new ActionBarLayout(this); - launchLayout.addView(rightActionBarLayout, 3); - relativeLayoutParams = (RelativeLayout.LayoutParams)rightActionBarLayout.getLayoutParams(); - relativeLayoutParams.width = AndroidUtilities.dp(320); - relativeLayoutParams.height = RelativeLayout.LayoutParams.MATCH_PARENT; - rightActionBarLayout.setLayoutParams(relativeLayoutParams); - rightActionBarLayout.init(rightFragmentsStack); - rightActionBarLayout.setDelegate(this); - - TextView button = (TextView)findViewById(R.id.new_group_button); - button.setText(LocaleController.getString("NewGroup", R.string.NewGroup)); - button.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { + listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + if (position == 2) { presentFragment(new GroupCreateActivity()); - } - }); - - button = (TextView)findViewById(R.id.new_secret_button); - button.setText(LocaleController.getString("NewSecretChat", R.string.NewSecretChat)); - button.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { + drawerLayoutContainer.closeDrawer(false); + } else if (position == 3) { Bundle args = new Bundle(); args.putBoolean("onlyUsers", true); args.putBoolean("destroyAfterSelect", true); args.putBoolean("createSecretChat", true); presentFragment(new ContactsActivity(args)); - } - }); - - button = (TextView)findViewById(R.id.new_broadcast_button); - button.setText(LocaleController.getString("NewBroadcastList", R.string.NewBroadcastList)); - button.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { + drawerLayoutContainer.closeDrawer(false); + } else if (position == 4) { Bundle args = new Bundle(); args.putBoolean("broadcast", true); presentFragment(new GroupCreateActivity(args)); - } - }); - - button = (TextView)findViewById(R.id.contacts_button); - button.setText(LocaleController.getString("Contacts", R.string.Contacts)); - button.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { + drawerLayoutContainer.closeDrawer(false); + } else if (position == 6) { presentFragment(new ContactsActivity(null)); - } - }); - - button = (TextView)findViewById(R.id.settings_button); - button.setText(LocaleController.getString("Settings", R.string.Settings)); - button.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - presentFragment(new SettingsActivity()); - } - }); - } else { - drawerLayoutContainer = new DrawerLayoutContainer(this); - drawerLayoutContainer.addView(actionBarLayout, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); - - ListView listView = new ListView(this); - listView.setAdapter(new DrawerLayoutAdapter(this)); - drawerLayoutContainer.setDrawerLayout(listView); - listView.setBackgroundColor(0xffffffff); - FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams)listView.getLayoutParams(); - Point screenSize = AndroidUtilities.getRealScreenSize(); - layoutParams.width = Math.min(screenSize.x, screenSize.y) - AndroidUtilities.dp(56); - layoutParams.height = FrameLayout.LayoutParams.MATCH_PARENT; - listView.setPadding(0, 0, 0, 0); - listView.setChoiceMode(AbsListView.CHOICE_MODE_SINGLE); - listView.setDivider(null); - listView.setDividerHeight(0); - listView.setLayoutParams(layoutParams); - listView.setVerticalScrollBarEnabled(false); - - listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - if (position == 2) { - presentFragment(new GroupCreateActivity()); - drawerLayoutContainer.closeDrawer(false); - } else if (position == 3) { - Bundle args = new Bundle(); - args.putBoolean("onlyUsers", true); - args.putBoolean("destroyAfterSelect", true); - args.putBoolean("createSecretChat", true); - presentFragment(new ContactsActivity(args)); - drawerLayoutContainer.closeDrawer(false); - } else if (position == 4) { - Bundle args = new Bundle(); - args.putBoolean("broadcast", true); - presentFragment(new GroupCreateActivity(args)); - drawerLayoutContainer.closeDrawer(false); - } else if (position == 6) { - presentFragment(new ContactsActivity(null)); - drawerLayoutContainer.closeDrawer(false); - } else if (position == 7) { - try { - Intent intent = new Intent(Intent.ACTION_SEND); - intent.setType("text/plain"); - intent.putExtra(Intent.EXTRA_TEXT, ContactsController.getInstance().getInviteText()); - startActivity(intent); - } catch (Exception e) { - FileLog.e("tmessages", e); - } - drawerLayoutContainer.closeDrawer(false); - } else if (position == 8) { - presentFragment(new SettingsActivity()); - drawerLayoutContainer.closeDrawer(false); - } else if (position == 9) { - try { - Intent pickIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(LocaleController.getString("TelegramFaqUrl", R.string.TelegramFaqUrl))); - startActivity(pickIntent); - } catch (Exception e) { - FileLog.e("tmessages", e); - } - drawerLayoutContainer.closeDrawer(false); + drawerLayoutContainer.closeDrawer(false); + } else if (position == 7) { + try { + Intent intent = new Intent(Intent.ACTION_SEND); + intent.setType("text/plain"); + intent.putExtra(Intent.EXTRA_TEXT, ContactsController.getInstance().getInviteText()); + startActivity(intent); + } catch (Exception e) { + FileLog.e("tmessages", e); } + drawerLayoutContainer.closeDrawer(false); + } else if (position == 8) { + presentFragment(new SettingsActivity()); + drawerLayoutContainer.closeDrawer(false); + } else if (position == 9) { + try { + Intent pickIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(LocaleController.getString("TelegramFaqUrl", R.string.TelegramFaqUrl))); + startActivity(pickIntent); + } catch (Exception e) { + FileLog.e("tmessages", e); + } + drawerLayoutContainer.closeDrawer(false); } - }); + } + }); - setContentView(drawerLayoutContainer, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); - drawerLayoutContainer.setParentActionBarLayout(actionBarLayout); - actionBarLayout.setDrawerLayoutContainer(drawerLayoutContainer); - } + drawerLayoutContainer.setParentActionBarLayout(actionBarLayout); + actionBarLayout.setDrawerLayoutContainer(drawerLayoutContainer); actionBarLayout.init(mainFragmentsStack); actionBarLayout.setDelegate(this); - int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android"); - if (resourceId > 0) { - AndroidUtilities.statusBarHeight = getResources().getDimensionPixelSize(resourceId); - } - NotificationCenter.getInstance().postNotificationName(NotificationCenter.closeOtherAppActivities, this); currentConnectionState = ConnectionsManager.getInstance().getConnectionState(); NotificationCenter.getInstance().addObserver(this, NotificationCenter.appDidLogout); + NotificationCenter.getInstance().addObserver(this, NotificationCenter.mainUserInfoChanged); NotificationCenter.getInstance().addObserver(this, NotificationCenter.closeOtherAppActivities); NotificationCenter.getInstance().addObserver(this, NotificationCenter.didUpdatedConnectionState); if (actionBarLayout.fragmentsStack.isEmpty()) { if (!UserConfig.isClientActivated()) { actionBarLayout.addFragmentToStack(new LoginActivity()); + drawerLayoutContainer.setAllowOpenDrawer(false); } else { actionBarLayout.addFragmentToStack(new MessagesActivity(null)); + drawerLayoutContainer.setAllowOpenDrawer(true); } try { @@ -672,18 +653,22 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa if (UserConfig.isClientActivated()) { if (actionBarLayout.fragmentsStack.isEmpty()) { actionBarLayout.addFragmentToStack(new MessagesActivity(null)); + drawerLayoutContainer.setAllowOpenDrawer(true); } } else { if (layersActionBarLayout.fragmentsStack.isEmpty()) { layersActionBarLayout.addFragmentToStack(new LoginActivity()); + drawerLayoutContainer.setAllowOpenDrawer(false); } } } else { if (actionBarLayout.fragmentsStack.isEmpty()) { if (!UserConfig.isClientActivated()) { actionBarLayout.addFragmentToStack(new LoginActivity()); + drawerLayoutContainer.setAllowOpenDrawer(false); } else { actionBarLayout.addFragmentToStack(new MessagesActivity(null)); + drawerLayoutContainer.setAllowOpenDrawer(true); } } } @@ -781,6 +766,7 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa } finished = true; NotificationCenter.getInstance().removeObserver(this, NotificationCenter.appDidLogout); + NotificationCenter.getInstance().removeObserver(this, NotificationCenter.mainUserInfoChanged); NotificationCenter.getInstance().removeObserver(this, NotificationCenter.closeOtherAppActivities); NotificationCenter.getInstance().removeObserver(this, NotificationCenter.didUpdatedConnectionState); } @@ -795,6 +781,13 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa public void needLayout() { if (AndroidUtilities.isTablet()) { + + 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; + layersActionBarLayout.setLayoutParams(relativeLayoutParams); + if (!AndroidUtilities.isSmallTablet() || getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { tabletFullSize = false; int leftWidth = AndroidUtilities.displaySize.x / 100 * 35; @@ -802,7 +795,7 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa leftWidth = AndroidUtilities.dp(320); } - RelativeLayout.LayoutParams relativeLayoutParams = (RelativeLayout.LayoutParams) actionBarLayout.getLayoutParams(); + relativeLayoutParams = (RelativeLayout.LayoutParams) actionBarLayout.getLayoutParams(); relativeLayoutParams.width = leftWidth; relativeLayoutParams.height = RelativeLayout.LayoutParams.MATCH_PARENT; actionBarLayout.setLayoutParams(relativeLayoutParams); @@ -817,12 +810,6 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa relativeLayoutParams.leftMargin = leftWidth; rightActionBarLayout.setLayoutParams(relativeLayoutParams); - relativeLayoutParams = (RelativeLayout.LayoutParams) buttonLayoutTablet.getLayoutParams(); - relativeLayoutParams.width = AndroidUtilities.displaySize.x - leftWidth; - relativeLayoutParams.height = RelativeLayout.LayoutParams.WRAP_CONTENT; - relativeLayoutParams.leftMargin = leftWidth; - buttonLayoutTablet.setLayoutParams(relativeLayoutParams); - if (AndroidUtilities.isSmallTablet() && actionBarLayout.fragmentsStack.size() == 2) { BaseFragment chatFragment = actionBarLayout.fragmentsStack.get(1); chatFragment.onPause(); @@ -833,13 +820,12 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa } rightActionBarLayout.setVisibility(rightActionBarLayout.fragmentsStack.isEmpty() ? View.GONE : View.VISIBLE); - buttonLayoutTablet.setVisibility(!actionBarLayout.fragmentsStack.isEmpty() && rightActionBarLayout.fragmentsStack.isEmpty() ? View.VISIBLE : View.GONE); backgroundTablet.setVisibility(rightActionBarLayout.fragmentsStack.isEmpty() ? View.VISIBLE : View.GONE); shadowTabletSide.setVisibility(!actionBarLayout.fragmentsStack.isEmpty() ? View.VISIBLE : View.GONE); } else { tabletFullSize = true; - RelativeLayout.LayoutParams relativeLayoutParams = (RelativeLayout.LayoutParams) actionBarLayout.getLayoutParams(); + relativeLayoutParams = (RelativeLayout.LayoutParams) actionBarLayout.getLayoutParams(); relativeLayoutParams.width = RelativeLayout.LayoutParams.MATCH_PARENT; relativeLayoutParams.height = RelativeLayout.LayoutParams.MATCH_PARENT; actionBarLayout.setLayoutParams(relativeLayoutParams); @@ -847,7 +833,6 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa shadowTabletSide.setVisibility(View.GONE); rightActionBarLayout.setVisibility(View.GONE); backgroundTablet.setVisibility(!actionBarLayout.fragmentsStack.isEmpty() ? View.GONE : View.VISIBLE); - buttonLayoutTablet.setVisibility(View.GONE); if (rightActionBarLayout.fragmentsStack.size() == 1) { BaseFragment chatFragment = rightActionBarLayout.fragmentsStack.get(0); @@ -974,6 +959,8 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa currentConnectionState = state; //actionBarLayout.getActionBar().setBackOverlayVisible(currentConnectionState != 0); } + } else if (id == NotificationCenter.mainUserInfoChanged) { + drawerLayoutAdapter.notifyDataSetChanged(); } } @@ -1118,8 +1105,8 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa @Override public boolean needPresentFragment(BaseFragment fragment, boolean removeLast, boolean forceWithoutAnimation, ActionBarLayout layout) { - drawerLayoutContainer.setAllowOpenDrawer(!(fragment instanceof LoginActivity)); if (AndroidUtilities.isTablet()) { + drawerLayoutContainer.setAllowOpenDrawer(!(fragment instanceof LoginActivity) && layersActionBarLayout.getVisibility() != View.VISIBLE); if (fragment instanceof MessagesActivity) { MessagesActivity messagesActivity = (MessagesActivity)fragment; if (messagesActivity.getDelegate() == null && layout != actionBarLayout) { @@ -1127,10 +1114,10 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa actionBarLayout.presentFragment(fragment, removeLast, forceWithoutAnimation, false); layersActionBarLayout.removeAllFragments(); layersActionBarLayout.setVisibility(View.GONE); + drawerLayoutContainer.setAllowOpenDrawer(true); if (!tabletFullSize) { shadowTabletSide.setVisibility(View.VISIBLE); if (rightActionBarLayout.fragmentsStack.isEmpty()) { - buttonLayoutTablet.setVisibility(View.VISIBLE); backgroundTablet.setVisibility(View.VISIBLE); } } @@ -1140,7 +1127,6 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa if (fragment instanceof ChatActivity) { if (!tabletFullSize && layout != rightActionBarLayout) { rightActionBarLayout.setVisibility(View.VISIBLE); - buttonLayoutTablet.setVisibility(View.GONE); backgroundTablet.setVisibility(View.GONE); rightActionBarLayout.removeAllFragments(); rightActionBarLayout.presentFragment(fragment, removeLast, true, false); @@ -1177,8 +1163,8 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa } } else if (layout != layersActionBarLayout) { layersActionBarLayout.setVisibility(View.VISIBLE); + drawerLayoutContainer.setAllowOpenDrawer(false); if (fragment instanceof LoginActivity) { - buttonLayoutTablet.setVisibility(View.GONE); backgroundTablet.setVisibility(View.VISIBLE); shadowTabletSide.setVisibility(View.GONE); shadowTablet.setBackgroundColor(0x00000000); @@ -1190,14 +1176,15 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa } return true; } else { + drawerLayoutContainer.setAllowOpenDrawer(!(fragment instanceof LoginActivity)); return true; } } @Override public boolean needAddFragmentToStack(BaseFragment fragment, ActionBarLayout layout) { - drawerLayoutContainer.setAllowOpenDrawer(!(fragment instanceof LoginActivity)); if (AndroidUtilities.isTablet()) { + drawerLayoutContainer.setAllowOpenDrawer(!(fragment instanceof LoginActivity) && layersActionBarLayout.getVisibility() != View.VISIBLE); if (fragment instanceof MessagesActivity) { MessagesActivity messagesActivity = (MessagesActivity)fragment; if (messagesActivity.getDelegate() == null && layout != actionBarLayout) { @@ -1205,10 +1192,10 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa actionBarLayout.addFragmentToStack(fragment); layersActionBarLayout.removeAllFragments(); layersActionBarLayout.setVisibility(View.GONE); + drawerLayoutContainer.setAllowOpenDrawer(true); if (!tabletFullSize) { shadowTabletSide.setVisibility(View.VISIBLE); if (rightActionBarLayout.fragmentsStack.isEmpty()) { - buttonLayoutTablet.setVisibility(View.VISIBLE); backgroundTablet.setVisibility(View.VISIBLE); } } @@ -1217,7 +1204,6 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa } else if (fragment instanceof ChatActivity) { if (!tabletFullSize && layout != rightActionBarLayout) { rightActionBarLayout.setVisibility(View.VISIBLE); - buttonLayoutTablet.setVisibility(View.GONE); backgroundTablet.setVisibility(View.GONE); rightActionBarLayout.removeAllFragments(); rightActionBarLayout.addFragmentToStack(fragment); @@ -1242,8 +1228,8 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa } } else if (layout != layersActionBarLayout) { layersActionBarLayout.setVisibility(View.VISIBLE); + drawerLayoutContainer.setAllowOpenDrawer(false); if (fragment instanceof LoginActivity) { - buttonLayoutTablet.setVisibility(View.GONE); backgroundTablet.setVisibility(View.VISIBLE); shadowTabletSide.setVisibility(View.GONE); shadowTablet.setBackgroundColor(0x00000000); @@ -1255,6 +1241,7 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa } return true; } else { + drawerLayoutContainer.setAllowOpenDrawer(!(fragment instanceof LoginActivity)); return true; } } @@ -1268,7 +1255,6 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa return false; } else if (layout == rightActionBarLayout) { if (!tabletFullSize) { - buttonLayoutTablet.setVisibility(View.VISIBLE); backgroundTablet.setVisibility(View.VISIBLE); } } else if (layout == layersActionBarLayout && actionBarLayout.fragmentsStack.isEmpty() && layersActionBarLayout.fragmentsStack.size() == 1) { @@ -1294,17 +1280,6 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa rightActionBarLayout.showLastFragment(); actionBarLayout.rebuildAllFragmentViews(true); actionBarLayout.showLastFragment(); - - TextView button = (TextView)findViewById(R.id.new_group_button); - button.setText(LocaleController.getString("NewGroup", R.string.NewGroup)); - button = (TextView)findViewById(R.id.new_secret_button); - button.setText(LocaleController.getString("NewSecretChat", R.string.NewSecretChat)); - button = (TextView)findViewById(R.id.new_broadcast_button); - button.setText(LocaleController.getString("NewBroadcastList", R.string.NewBroadcastList)); - button = (TextView)findViewById(R.id.contacts_button); - button.setText(LocaleController.getString("Contacts", R.string.Contacts)); - button = (TextView)findViewById(R.id.settings_button); - button.setText(LocaleController.getString("Settings", R.string.Settings)); } } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LocationActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LocationActivity.java index 8839b1841..b15ed4663 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LocationActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LocationActivity.java @@ -27,6 +27,7 @@ import com.google.android.gms.maps.model.LatLng; import com.google.android.gms.maps.model.Marker; import com.google.android.gms.maps.model.MarkerOptions; +import org.telegram.android.AndroidUtilities; import org.telegram.android.ContactsController; import org.telegram.messenger.FileLog; import org.telegram.android.LocaleController; @@ -145,6 +146,7 @@ public class LocationActivity extends BaseFragment implements NotificationCenter avatarImageView = (BackupImageView)fragmentView.findViewById(R.id.location_avatar_view); if (avatarImageView != null) { avatarImageView.processDetach = false; + avatarImageView.imageReceiver.setRoundRadius(AndroidUtilities.dp(32)); } nameTextView = (TextView)fragmentView.findViewById(R.id.location_name_label); distanceTextView = (TextView)fragmentView.findViewById(R.id.location_distance_label); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LoginActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LoginActivity.java index 8f4093716..06f8cef02 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LoginActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LoginActivity.java @@ -117,7 +117,7 @@ public class LoginActivity extends BaseFragment { }); ActionBarMenu menu = actionBar.createMenu(); - menu.addItem(done_button, R.drawable.ic_done, 0, AndroidUtilities.dp(56)); + menu.addItemWithWidth(done_button, R.drawable.ic_done, AndroidUtilities.dp(56)); fragmentView = new ScrollView(getParentActivity()); ScrollView scrollView = (ScrollView) fragmentView; @@ -207,13 +207,17 @@ public class LoginActivity extends BaseFragment { @Override public void onPause() { super.onPause(); - getParentActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); + if (!AndroidUtilities.isTablet()) { + getParentActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); + } } @Override public void onResume() { super.onResume(); - getParentActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); + if (!AndroidUtilities.isTablet()) { + getParentActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); + } } private Bundle loadCurrentState() { @@ -411,6 +415,7 @@ public class LoginActivity extends BaseFragment { public void needFinishActivity() { clearCurrentState(); presentFragment(new MessagesActivity(null), true); + NotificationCenter.getInstance().postNotificationName(NotificationCenter.mainUserInfoChanged); } public class SlideView extends LinearLayout { @@ -989,7 +994,7 @@ public class LoginActivity extends BaseFragment { codeField.setHintTextColor(0xff979797); codeField.setImeOptions(EditorInfo.IME_ACTION_NEXT | EditorInfo.IME_FLAG_NO_EXTRACT_UI); codeField.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); - codeField.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL); + codeField.setInputType(InputType.TYPE_CLASS_NUMBER); codeField.setMaxLines(1); codeField.setPadding(0, 0, 0, 0); addView(codeField); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/MediaActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/MediaActivity.java index de8e586ca..16a17f2a4 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/MediaActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/MediaActivity.java @@ -41,6 +41,7 @@ import java.util.ArrayList; import java.util.HashMap; public class MediaActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate, PhotoViewer.PhotoViewerProvider { + private GridView listView; private ListAdapter listAdapter; private ArrayList messages = new ArrayList(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java index 9d503d07a..c02d0d2ce 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java @@ -58,7 +58,7 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter private ListView messagesListView; private DialogsAdapter dialogsAdapter; private DialogsSearchAdapter dialogsSearchAdapter; - private TextView searchEmptyView; + private View searchEmptyView; private View progressView; private View emptyView; private ImageView floatingButton; @@ -243,14 +243,13 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter progressView = fragmentView.findViewById(R.id.progressLayout); dialogsAdapter.notifyDataSetChanged(); - searchEmptyView = (TextView)fragmentView.findViewById(R.id.searchEmptyView); + searchEmptyView = fragmentView.findViewById(R.id.search_empty_view); searchEmptyView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { return true; } }); - searchEmptyView.setText(LocaleController.getString("NoResult", R.string.NoResult)); emptyView = fragmentView.findViewById(R.id.list_empty_view); emptyView.setOnTouchListener(new View.OnTouchListener() { @Override @@ -258,10 +257,14 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter return true; } }); + + TextView textView = (TextView)fragmentView.findViewById(R.id.list_empty_view_text1); textView.setText(LocaleController.getString("NoChats", R.string.NoChats)); textView = (TextView)fragmentView.findViewById(R.id.list_empty_view_text2); - textView.setText(LocaleController.getString("NoChats", R.string.NoChatsHelp)); + textView.setText(LocaleController.getString("NoChatsHelp", R.string.NoChatsHelp)); + textView = (TextView)fragmentView.findViewById(R.id.search_empty_text); + textView.setText(LocaleController.getString("NoResult", R.string.NoResult)); floatingButton = (ImageView)fragmentView.findViewById(R.id.floating_button); floatingButton.setVisibility(onlySelect ? View.GONE : View.VISIBLE); @@ -393,56 +396,40 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter int lower_id = (int)selectedDialog; int high_id = (int)(selectedDialog >> 32); - if (lower_id < 0 && high_id != 1) { - builder.setItems(new CharSequence[]{LocaleController.getString("ClearHistory", R.string.ClearHistory), LocaleController.getString("DeleteChat", R.string.DeleteChat)}, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - if (which == 0) { - MessagesController.getInstance().deleteDialog(selectedDialog, 0, true); - } else if (which == 1) { - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + final boolean isChat = lower_id < 0 && high_id != 1; + builder.setItems(new CharSequence[]{LocaleController.getString("ClearHistory", R.string.ClearHistory), + isChat ? LocaleController.getString("DeleteChat", R.string.DeleteChat) : LocaleController.getString("Delete", R.string.Delete)}, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, final int which) { + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); + if (which == 0) { + builder.setMessage(LocaleController.getString("AreYouSureClearHistory", R.string.AreYouSureClearHistory)); + } else { + if (isChat) { builder.setMessage(LocaleController.getString("AreYouSureDeleteAndExit", R.string.AreYouSureDeleteAndExit)); - 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) { - MessagesController.getInstance().deleteUserFromChat((int) -selectedDialog, MessagesController.getInstance().getUser(UserConfig.getClientUserId()), null); - MessagesController.getInstance().deleteDialog(selectedDialog, 0, false); - if (AndroidUtilities.isTablet()) { - NotificationCenter.getInstance().postNotificationName(NotificationCenter.closeChats, selectedDialog); - } - } - }); - builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); - showAlertDialog(builder); - } - } - }); - } else { - builder.setItems(new CharSequence[]{LocaleController.getString("ClearHistory", R.string.ClearHistory), LocaleController.getString("Delete", R.string.Delete)}, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - if (which == 0) { - MessagesController.getInstance().deleteDialog(selectedDialog, 0, true); } else { - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); builder.setMessage(LocaleController.getString("AreYouSureDeleteThisChat", R.string.AreYouSureDeleteThisChat)); - 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) { - MessagesController.getInstance().deleteDialog(selectedDialog, 0, false); - if (AndroidUtilities.isTablet()) { - NotificationCenter.getInstance().postNotificationName(NotificationCenter.closeChats, selectedDialog); - } - } - }); - builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); - showAlertDialog(builder); } } - }); - } + builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + MessagesController.getInstance().deleteDialog(selectedDialog, 0, which == 0); + if (which != 0) { + if (isChat) { + MessagesController.getInstance().deleteUserFromChat((int) -selectedDialog, MessagesController.getInstance().getUser(UserConfig.getClientUserId()), null); + } + if (AndroidUtilities.isTablet()) { + NotificationCenter.getInstance().postNotificationName(NotificationCenter.closeChats, selectedDialog); + } + } + } + }); + builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); + showAlertDialog(builder); + } + }); builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); showAlertDialog(builder); return true; @@ -545,14 +532,12 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter emptyView.setVisibility(View.GONE); messagesListView.setEmptyView(progressView); } else { - if (messagesListView.getEmptyView() == null) { - if (searching && searchWas) { - messagesListView.setEmptyView(searchEmptyView); - emptyView.setVisibility(View.GONE); - } else { - messagesListView.setEmptyView(emptyView); - searchEmptyView.setVisibility(View.GONE); - } + if (searching && searchWas) { + messagesListView.setEmptyView(searchEmptyView); + emptyView.setVisibility(View.GONE); + } else { + messagesListView.setEmptyView(emptyView); + searchEmptyView.setVisibility(View.GONE); } progressView.setVisibility(View.GONE); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PhotoCropActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/PhotoCropActivity.java index 8d5ea20b2..ca5eb7a7a 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PhotoCropActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PhotoCropActivity.java @@ -353,7 +353,7 @@ public class PhotoCropActivity extends BaseFragment { }); ActionBarMenu menu = actionBar.createMenu(); - menu.addItem(done_button, R.drawable.ic_done, 0, AndroidUtilities.dp(56)); + menu.addItemWithWidth(done_button, R.drawable.ic_done, AndroidUtilities.dp(56)); fragmentView = view = new PhotoCropView(getParentActivity()); fragmentView.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java b/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java index 7235b98a6..528750df5 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java @@ -76,6 +76,7 @@ import java.util.HashMap; import java.util.Locale; public class PhotoViewer implements NotificationCenter.NotificationCenterDelegate, GestureDetector.OnGestureListener, GestureDetector.OnDoubleTapListener { + private int classGuid; private PhotoViewerProvider placeProvider; private boolean isVisible; @@ -325,6 +326,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat public int user_id; public int index; public int size; + public int radius; } public static interface PhotoViewerProvider { @@ -602,6 +604,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat actionBar = new ActionBar(activity); actionBar.setBackgroundColor(0x7F000000); + actionBar.setOccupyStatusBar(false); actionBar.setItemsBackground(R.drawable.bar_selector_white); actionBar.setBackButtonImage(R.drawable.ic_ab_back); actionBar.setTitle(LocaleController.formatString("Of", R.string.Of, 1, 1)); @@ -1591,6 +1594,8 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat final Rect drawRegion = object.imageReceiver.getDrawRegion(); animatingImageView.setVisibility(View.VISIBLE); + animatingImageView.setRadius(object.radius); + animatingImageView.setNeedRadius(object.radius != 0); animatingImageView.setImageBitmap(object.thumb); ViewProxy.setAlpha(animatingImageView, 1.0f); @@ -1643,6 +1648,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat ObjectAnimatorProxy.ofInt(animatingImageView, "clipHorizontal", clipHorizontal, 0), ObjectAnimatorProxy.ofInt(animatingImageView, "clipTop", clipTop, 0), ObjectAnimatorProxy.ofInt(animatingImageView, "clipBottom", clipBottom, 0), + ObjectAnimatorProxy.ofInt(animatingImageView, "radius", 0), ObjectAnimatorProxy.ofFloat(containerView, "alpha", 0.0f, 1.0f) ); @@ -1731,11 +1737,13 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat final ViewGroup.LayoutParams layoutParams = animatingImageView.getLayoutParams(); Rect drawRegion = null; if (object != null) { + animatingImageView.setNeedRadius(object.radius != 0); drawRegion = object.imageReceiver.getDrawRegion(); layoutParams.width = drawRegion.right - drawRegion.left; layoutParams.height = drawRegion.bottom - drawRegion.top; animatingImageView.setImageBitmap(object.thumb); } else { + animatingImageView.setNeedRadius(false); layoutParams.width = centerImage.getImageWidth(); layoutParams.height = centerImage.getImageHeight(); animatingImageView.setImageBitmap(centerImage.getBitmap()); @@ -1782,6 +1790,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat ObjectAnimatorProxy.ofInt(animatingImageView, "clipHorizontal", clipHorizontal), ObjectAnimatorProxy.ofInt(animatingImageView, "clipTop", clipTop), ObjectAnimatorProxy.ofInt(animatingImageView, "clipBottom", clipBottom), + ObjectAnimatorProxy.ofInt(animatingImageView, "radius", object.radius), ObjectAnimatorProxy.ofFloat(containerView, "alpha", 0.0f) ); } else { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PopupNotificationActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/PopupNotificationActivity.java index 0d40b8db5..492e309e3 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PopupNotificationActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PopupNotificationActivity.java @@ -15,6 +15,7 @@ import android.content.Intent; import android.content.res.Configuration; import android.os.Bundle; import android.os.PowerManager; +import android.text.TextUtils; import android.util.AttributeSet; import android.util.TypedValue; import android.view.Gravity; @@ -61,6 +62,9 @@ public class PopupNotificationActivity extends Activity implements NotificationC private ActionBar actionBar; private ChatActivityEnterView chatActivityEnterView; private BackupImageView avatarImageView; + private TextView nameTextView; + private TextView onlineTextView; + private FrameLayout avatarContainer; private TextView countText; private ViewGroup messageContainer; private ViewGroup centerView; @@ -182,6 +186,7 @@ public class PopupNotificationActivity extends Activity implements NotificationC popupContainer.addView(messageContainer, 0); actionBar = new ActionBar(this); + actionBar.setOccupyStatusBar(false); actionBar.setBackButtonImage(R.drawable.ic_ab_back); actionBar.setBackgroundResource(R.color.header); actionBar.setItemsBackground(R.drawable.bar_selector); @@ -194,9 +199,62 @@ public class PopupNotificationActivity extends Activity implements NotificationC View view = menu.addItemResource(2, R.layout.popup_count_layout); countText = (TextView) view.findViewById(R.id.count_text); - view = menu.addItemResource(1, R.layout.chat_header_layout); - avatarImageView = (BackupImageView)view.findViewById(R.id.chat_avatar_image); + 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(); + layoutParams2.height = FrameLayout.LayoutParams.MATCH_PARENT; + layoutParams2.width = FrameLayout.LayoutParams.WRAP_CONTENT; + layoutParams2.rightMargin = AndroidUtilities.dp(48); + layoutParams2.leftMargin = AndroidUtilities.dp(60); + layoutParams2.gravity = Gravity.TOP | Gravity.LEFT; + avatarContainer.setLayoutParams(layoutParams2); + + avatarImageView = new BackupImageView(this); + avatarImageView.imageReceiver.setRoundRadius(AndroidUtilities.dp(21)); avatarImageView.processDetach = false; + avatarContainer.addView(avatarImageView); + layoutParams2 = (FrameLayout.LayoutParams) avatarImageView.getLayoutParams(); + layoutParams2.width = AndroidUtilities.dp(42); + layoutParams2.height = AndroidUtilities.dp(42); + layoutParams2.topMargin = AndroidUtilities.dp(3); + avatarImageView.setLayoutParams(layoutParams2); + + nameTextView = new TextView(this); + 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.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + avatarContainer.addView(nameTextView); + layoutParams2 = (FrameLayout.LayoutParams) nameTextView.getLayoutParams(); + layoutParams2.width = FrameLayout.LayoutParams.WRAP_CONTENT; + layoutParams2.height = FrameLayout.LayoutParams.WRAP_CONTENT; + layoutParams2.leftMargin = AndroidUtilities.dp(54); + layoutParams2.bottomMargin = AndroidUtilities.dp(22); + layoutParams2.gravity = Gravity.BOTTOM; + nameTextView.setLayoutParams(layoutParams2); + + onlineTextView = new TextView(this); + 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); + avatarContainer.addView(onlineTextView); + layoutParams2 = (FrameLayout.LayoutParams) onlineTextView.getLayoutParams(); + layoutParams2.width = FrameLayout.LayoutParams.WRAP_CONTENT; + layoutParams2.height = FrameLayout.LayoutParams.WRAP_CONTENT; + layoutParams2.leftMargin = AndroidUtilities.dp(54); + layoutParams2.bottomMargin = AndroidUtilities.dp(4); + layoutParams2.gravity = Gravity.BOTTOM; + onlineTextView.setLayoutParams(layoutParams2); actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { @Override @@ -616,22 +674,37 @@ public class PopupNotificationActivity extends Activity implements NotificationC } private void fixLayout() { - messageContainer.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { - @Override - public boolean onPreDraw() { - messageContainer.getViewTreeObserver().removeOnPreDrawListener(this); - if (!checkTransitionAnimation() && !startedMoving) { - ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams)messageContainer.getLayoutParams(); - layoutParams.topMargin = AndroidUtilities.getCurrentActionBarHeight(); - layoutParams.bottomMargin = AndroidUtilities.dp(48); - layoutParams.width = ViewGroup.MarginLayoutParams.MATCH_PARENT; - layoutParams.height = ViewGroup.MarginLayoutParams.MATCH_PARENT; - messageContainer.setLayoutParams(layoutParams); - applyViewsLayoutParams(0); + if (avatarContainer != null) { + avatarContainer.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { + @Override + public boolean onPreDraw() { + if (avatarContainer != null) { + avatarContainer.getViewTreeObserver().removeOnPreDrawListener(this); + } + int padding = (AndroidUtilities.getCurrentActionBarHeight() - AndroidUtilities.dp(48)) / 2; + avatarContainer.setPadding(avatarContainer.getPaddingLeft(), padding, avatarContainer.getPaddingRight(), padding); + return false; } - return false; - } - }); + }); + } + if (messageContainer != null) { + messageContainer.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { + @Override + public boolean onPreDraw() { + messageContainer.getViewTreeObserver().removeOnPreDrawListener(this); + if (!checkTransitionAnimation() && !startedMoving) { + ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) messageContainer.getLayoutParams(); + layoutParams.topMargin = AndroidUtilities.getCurrentActionBarHeight(); + layoutParams.bottomMargin = AndroidUtilities.dp(48); + layoutParams.width = ViewGroup.MarginLayoutParams.MATCH_PARENT; + layoutParams.height = ViewGroup.MarginLayoutParams.MATCH_PARENT; + messageContainer.setLayoutParams(layoutParams); + applyViewsLayoutParams(0); + } + return false; + } + }); + } } private void handleIntent(Intent intent) { @@ -732,15 +805,18 @@ public class PopupNotificationActivity extends Activity implements NotificationC } if (currentChat != null && currentUser != null) { - actionBar.setTitle(currentChat.title); - actionBar.setSubtitle(ContactsController.formatName(currentUser.first_name, currentUser.last_name)); - actionBar.setTitleIcon(0, 0); + nameTextView.setText(currentChat.title); + onlineTextView.setText(ContactsController.formatName(currentUser.first_name, currentUser.last_name)); + nameTextView.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0); + nameTextView.setCompoundDrawablePadding(0); } else if (currentUser != null) { - actionBar.setTitle(ContactsController.formatName(currentUser.first_name, currentUser.last_name)); + nameTextView.setText(ContactsController.formatName(currentUser.first_name, currentUser.last_name)); if ((int)dialog_id == 0) { - actionBar.setTitleIcon(R.drawable.ic_lock_white, AndroidUtilities.dp(4)); + nameTextView.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_lock_white, 0, 0, 0); + nameTextView.setCompoundDrawablePadding(AndroidUtilities.dp(4)); } else { - actionBar.setTitleIcon(0, 0); + nameTextView.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0); + nameTextView.setCompoundDrawablePadding(0); } } @@ -759,12 +835,12 @@ public class PopupNotificationActivity extends Activity implements NotificationC } 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) { - actionBar.setTitle(PhoneFormat.getInstance().format("+" + currentUser.phone)); + nameTextView.setText(PhoneFormat.getInstance().format("+" + currentUser.phone)); } else { - actionBar.setTitle(ContactsController.formatName(currentUser.first_name, currentUser.last_name)); + nameTextView.setText(ContactsController.formatName(currentUser.first_name, currentUser.last_name)); } } else { - actionBar.setTitle(ContactsController.formatName(currentUser.first_name, currentUser.last_name)); + nameTextView.setText(ContactsController.formatName(currentUser.first_name, currentUser.last_name)); } CharSequence printString = MessagesController.getInstance().printingStrings.get(currentMessageObject.getDialogId()); if (printString == null || printString.length() == 0) { @@ -774,10 +850,10 @@ public class PopupNotificationActivity extends Activity implements NotificationC if (user != null) { currentUser = user; } - actionBar.setSubtitle(LocaleController.formatUserStatus(currentUser)); + onlineTextView.setText(LocaleController.formatUserStatus(currentUser)); } else { lastPrintString = printString; - actionBar.setSubtitle(printString); + onlineTextView.setText(printString); setTypingAnimation(true); } } @@ -817,13 +893,15 @@ public class PopupNotificationActivity extends Activity implements NotificationC } if (start) { try { - actionBar.setSubTitleIcon(0, typingDotsDrawable, AndroidUtilities.dp(4)); + onlineTextView.setCompoundDrawablesWithIntrinsicBounds(typingDotsDrawable, null, null, null); + onlineTextView.setCompoundDrawablePadding(AndroidUtilities.dp(4)); typingDotsDrawable.start(); } catch (Exception e) { FileLog.e("tmessages", e); } } else { - actionBar.setSubTitleIcon(0, null, 0); + onlineTextView.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null); + onlineTextView.setCompoundDrawablePadding(0); typingDotsDrawable.stop(); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PrivacySettingsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/PrivacySettingsActivity.java index 19deb7507..0ebc84329 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PrivacySettingsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PrivacySettingsActivity.java @@ -8,7 +8,427 @@ package org.telegram.ui; -import org.telegram.ui.ActionBar.BaseFragment; +import android.app.AlertDialog; +import android.app.ProgressDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.FrameLayout; +import android.widget.ListView; +import android.widget.Toast; -public class PrivacySettingsActivity extends BaseFragment { +import org.telegram.android.AndroidUtilities; +import org.telegram.android.ContactsController; +import org.telegram.android.LocaleController; +import org.telegram.android.MessagesController; +import org.telegram.android.NotificationCenter; +import org.telegram.messenger.ConnectionsManager; +import org.telegram.messenger.FileLog; +import org.telegram.messenger.R; +import org.telegram.messenger.RPCRequest; +import org.telegram.messenger.TLObject; +import org.telegram.messenger.TLRPC; +import org.telegram.messenger.UserConfig; +import org.telegram.ui.ActionBar.ActionBar; +import org.telegram.ui.ActionBar.BaseFragment; +import org.telegram.ui.Adapters.BaseFragmentAdapter; +import org.telegram.ui.Cells.HeaderCell; +import org.telegram.ui.Cells.TextInfoPrivacyCell; +import org.telegram.ui.Cells.TextSettingsCell; + +import java.util.ArrayList; + +public class PrivacySettingsActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate { + + private ListAdapter listAdapter; + + private int privacySectionRow; + private int blockedRow; + private int lastSeenRow; + private int lastSeenDetailRow; + private int securitySectionRow; + private int terminateSessionsRow; + private int terminateSessionsDetailRow; + private int deleteAccountSectionRow; + private int deleteAccountRow; + private int deleteAccountDetailRow; + private int rowCount; + + @Override + public boolean onFragmentCreate() { + super.onFragmentCreate(); + + ContactsController.getInstance().loadPrivacySettings(); + + rowCount = 0; + privacySectionRow = rowCount++; + blockedRow = rowCount++; + lastSeenRow = rowCount++; + lastSeenDetailRow = rowCount++; + securitySectionRow = rowCount++; + terminateSessionsRow = rowCount++; + terminateSessionsDetailRow = rowCount++; + deleteAccountSectionRow = rowCount++; + deleteAccountRow = rowCount++; + deleteAccountDetailRow = rowCount++; + + NotificationCenter.getInstance().addObserver(this, NotificationCenter.privacyRulesUpdated); + + return true; + } + + @Override + public void onFragmentDestroy() { + super.onFragmentDestroy(); + NotificationCenter.getInstance().removeObserver(this, NotificationCenter.privacyRulesUpdated); + } + + @Override + public View createView(LayoutInflater inflater, ViewGroup container) { + if (fragmentView == null) { + actionBar.setBackButtonImage(R.drawable.ic_ab_back); + actionBar.setBackOverlay(R.layout.updating_state_layout); + actionBar.setTitle(LocaleController.getString("PrivacySettings", R.string.PrivacySettings)); + actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { + @Override + public void onItemClick(int id) { + if (id == -1) { + finishFragment(); + } + } + }); + + listAdapter = new ListAdapter(getParentActivity()); + + fragmentView = new FrameLayout(getParentActivity()); + FrameLayout frameLayout = (FrameLayout) fragmentView; + frameLayout.setBackgroundColor(0xfff0f0f0); + + ListView listView = new ListView(getParentActivity()); + listView.setDivider(null); + listView.setDividerHeight(0); + listView.setVerticalScrollBarEnabled(false); + listView.setDrawSelectorOnTop(true); + frameLayout.addView(listView); + FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) listView.getLayoutParams(); + layoutParams.width = FrameLayout.LayoutParams.MATCH_PARENT; + layoutParams.height = FrameLayout.LayoutParams.MATCH_PARENT; + layoutParams.gravity = Gravity.TOP; + listView.setLayoutParams(layoutParams); + listView.setAdapter(listAdapter); + listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, final int i, long l) { + if (i == blockedRow) { + presentFragment(new BlockedUsersActivity()); + } else if (i == terminateSessionsRow) { + if (getParentActivity() == null) { + return; + } + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + builder.setMessage(LocaleController.getString("AreYouSureSessions", R.string.AreYouSureSessions)); + 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) { + TLRPC.TL_auth_resetAuthorizations req = new TLRPC.TL_auth_resetAuthorizations(); + ConnectionsManager.getInstance().performRpc(req, new RPCRequest.RPCRequestDelegate() { + @Override + public void run(final TLObject response, final TLRPC.TL_error error) { + AndroidUtilities.runOnUIThread(new Runnable() { + @Override + public void run() { + if (getParentActivity() == null) { + return; + } + if (error == null && response instanceof TLRPC.TL_boolTrue) { + Toast toast = Toast.makeText(getParentActivity(), LocaleController.getString("TerminateAllSessions", R.string.TerminateAllSessions), Toast.LENGTH_SHORT); + toast.show(); + } else { + Toast toast = Toast.makeText(getParentActivity(), LocaleController.getString("UnknownError", R.string.UnknownError), Toast.LENGTH_SHORT); + toast.show(); + } + } + }); + UserConfig.registeredForPush = false; + UserConfig.registeredForInternalPush = false; + UserConfig.saveConfig(false); + MessagesController.getInstance().registerForPush(UserConfig.pushString); + ConnectionsManager.getInstance().initPushConnection(); + } + }); + } + }); + builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); + showAlertDialog(builder); + } else if (i == deleteAccountRow) { + if (getParentActivity() == null) { + return; + } + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + builder.setTitle(LocaleController.getString("DeleteAccountTitle", R.string.DeleteAccountTitle)); + builder.setItems(new CharSequence[] { + LocaleController.getString("DeleteAccountNever", R.string.DeleteAccountNever), + LocaleController.formatPluralString("Months", 1), + LocaleController.formatPluralString("Months", 3), + LocaleController.formatPluralString("Months", 6), + LocaleController.formatPluralString("Years", 1) + }, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + int value = 0; + if (which == 1) { + value = 30; + } else if (which == 2) { + value = 60; + } else if (which == 3) { + value = 182; + } else if (which == 4) { + value = 365; + } + final ProgressDialog progressDialog = new ProgressDialog(getParentActivity()); + progressDialog.setMessage(LocaleController.getString("Loading", R.string.Loading)); + progressDialog.setCanceledOnTouchOutside(false); + progressDialog.setCancelable(false); + progressDialog.show(); + + final TLRPC.TL_account_setAccountTTL req = new TLRPC.TL_account_setAccountTTL(); + req.ttl = new TLRPC.TL_accountDaysTTL(); + req.ttl.days = value; + ConnectionsManager.getInstance().performRpc(req, new RPCRequest.RPCRequestDelegate() { + @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 (response instanceof TLRPC.TL_boolTrue) { + ContactsController.getInstance().setDeleteAccountTTL(req.ttl.days); + listAdapter.notifyDataSetChanged(); + } + } + }); + } + }); + } + }); + builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); + showAlertDialog(builder); + } else if (i == lastSeenRow) { + presentFragment(new LastSeenActivity()); + } + } + }); + } else { + ViewGroup parent = (ViewGroup)fragmentView.getParent(); + if (parent != null) { + parent.removeView(fragmentView); + } + } + return fragmentView; + } + + @Override + public void didReceivedNotification(int id, Object... args) { + if (id == NotificationCenter.privacyRulesUpdated) { + if (listAdapter != null) { + listAdapter.notifyDataSetChanged(); + } + } + } + + private String formatRulesString() { + ArrayList privacyRules = ContactsController.getInstance().getPrivacyRules(); + if (privacyRules.size() == 0) { + return LocaleController.getString("LastSeenNobody", R.string.LastSeenNobody); + } + int type = -1; + int plus = 0; + int minus = 0; + for (TLRPC.PrivacyRule rule : privacyRules) { + if (rule instanceof TLRPC.TL_privacyValueAllowUsers) { + plus += rule.users.size(); + } else if (rule instanceof TLRPC.TL_privacyValueDisallowUsers) { + minus += rule.users.size(); + } else if (rule instanceof TLRPC.TL_privacyValueAllowAll) { + type = 0; + } else if (rule instanceof TLRPC.TL_privacyValueDisallowAll) { + type = 1; + } else { + type = 2; + } + } + if (type == 0 || type == -1 && minus > 0) { + if (minus == 0) { + return LocaleController.getString("LastSeenEverybody", R.string.LastSeenEverybody); + } else { + return LocaleController.formatString("LastSeenEverybodyMinus", R.string.LastSeenEverybodyMinus, minus); + } + } else if (type == 2 || type == -1 && minus > 0 && plus > 0) { + if (plus == 0 && minus == 0) { + return LocaleController.getString("LastSeenContacts", R.string.LastSeenContacts); + } else { + if (plus != 0 && minus != 0) { + return LocaleController.formatString("LastSeenContactsMinusPlus", R.string.LastSeenContactsMinusPlus, minus, plus); + } else if (minus != 0) { + return LocaleController.formatString("LastSeenContactsMinus", R.string.LastSeenContactsMinus, minus); + } else if (plus != 0) { + return LocaleController.formatString("LastSeenContactsPlus", R.string.LastSeenContactsPlus, plus); + } + } + } else if (type == 1 || type == -1 && plus > 0) { + if (plus == 0) { + return LocaleController.getString("LastSeenNobody", R.string.LastSeenNobody); + } else { + return LocaleController.formatString("LastSeenNobodyPlus", R.string.LastSeenNobodyPlus, plus); + } + } + return "unknown"; + } + + @Override + public void onResume() { + super.onResume(); + if (listAdapter != null) { + listAdapter.notifyDataSetChanged(); + } + } + + private class ListAdapter extends BaseFragmentAdapter { + private Context mContext; + + public ListAdapter(Context context) { + mContext = context; + } + + @Override + public boolean areAllItemsEnabled() { + return false; + } + + @Override + public boolean isEnabled(int i) { + return i == blockedRow || i == terminateSessionsRow || i == lastSeenRow && !ContactsController.getInstance().getLoadingLastSeenInfo() || i == deleteAccountRow && !ContactsController.getInstance().getLoadingDeleteInfo(); + } + + @Override + public int getCount() { + return rowCount; + } + + @Override + public Object getItem(int i) { + return null; + } + + @Override + public long getItemId(int i) { + return i; + } + + @Override + public boolean hasStableIds() { + return false; + } + + @Override + public View getView(int i, View view, ViewGroup viewGroup) { + int type = getItemViewType(i); + if (type == 0) { + if (view == null) { + view = new TextSettingsCell(mContext); + view.setBackgroundColor(0xffffffff); + } + TextSettingsCell textCell = (TextSettingsCell) view; + if (i == blockedRow) { + textCell.setText(LocaleController.getString("BlockedUsers", R.string.BlockedUsers), true); + } else if (i == terminateSessionsRow) { + textCell.setText(LocaleController.getString("TerminateAllSessions", R.string.TerminateAllSessions), false); + } else if (i == lastSeenRow) { + String value; + if (ContactsController.getInstance().getLoadingLastSeenInfo()) { + value = LocaleController.getString("Loading", R.string.Loading); + } else { + value = formatRulesString(); + } + textCell.setTextAndValue(LocaleController.getString("PrivacyLastSeen", R.string.PrivacyLastSeen), value, false); + } else if (i == deleteAccountRow) { + String value; + if (ContactsController.getInstance().getLoadingDeleteInfo()) { + value = LocaleController.getString("Loading", R.string.Loading); + } else { + int ttl = ContactsController.getInstance().getDeleteAccountTTL(); + if (ttl == 0) { + value = LocaleController.getString("DeleteAccountNever", R.string.DeleteAccountNever); + } else if (ttl <= 182) { + value = LocaleController.formatPluralString("Months", ttl / 30); + } else if (ttl == 365) { + value = LocaleController.formatPluralString("Years", ttl / 365); + } else { + value = LocaleController.formatPluralString("Days", ttl); + } + } + textCell.setTextAndValue(LocaleController.getString("DeleteAccountIfAwayFor", R.string.DeleteAccountIfAwayFor), value, false); + } + } else if (type == 1) { + if (view == null) { + view = new TextInfoPrivacyCell(mContext); + view.setBackgroundColor(0xffffffff); + } + if (i == deleteAccountDetailRow) { + ((TextInfoPrivacyCell) view).setText(LocaleController.getString("DeleteAccountHelp", R.string.DeleteAccountHelp)); + view.setBackgroundResource(R.drawable.greydivider_bottom); + } else if (i == lastSeenDetailRow) { + ((TextInfoPrivacyCell) view).setText(LocaleController.getString("LastSeenHelp", R.string.LastSeenHelp)); + view.setBackgroundResource(R.drawable.greydivider); + } else if (i == terminateSessionsDetailRow) { + ((TextInfoPrivacyCell) view).setText(LocaleController.getString("ClearOtherSessionsHelp", R.string.ClearOtherSessionsHelp)); + view.setBackgroundResource(R.drawable.greydivider); + } + } else if (type == 2) { + if (view == null) { + view = new HeaderCell(mContext); + view.setBackgroundColor(0xffffffff); + } + if (i == privacySectionRow) { + ((HeaderCell) view).setText(LocaleController.getString("PrivacyTitle", R.string.PrivacyTitle)); + } else if (i == securitySectionRow) { + ((HeaderCell) view).setText(LocaleController.getString("SecurityTitle", R.string.SecurityTitle)); + } else if (i == deleteAccountSectionRow) { + ((HeaderCell) view).setText(LocaleController.getString("DeleteAccountTitle", R.string.DeleteAccountTitle)); + } + } + return view; + } + + @Override + public int getItemViewType(int i) { + if (i == lastSeenRow || i == blockedRow || i == deleteAccountRow || i == terminateSessionsRow) { + return 0; + } else if (i == deleteAccountDetailRow || i == lastSeenDetailRow || i == terminateSessionsDetailRow) { + return 1; + } else if (i == securitySectionRow || i == deleteAccountSectionRow || i == privacySectionRow) { + return 2; + } + return 0; + } + + @Override + public int getViewTypeCount() { + return 3; + } + + @Override + public boolean isEmpty() { + return false; + } + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java index 2f4d945b6..568accd39 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java @@ -224,6 +224,9 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. actionBar.setBackButtonImage(R.drawable.ic_ab_back); actionBar.setBackOverlay(R.layout.updating_state_layout); actionBar.setExtraHeight(AndroidUtilities.dp(88), false); + if (AndroidUtilities.isTablet()) { + actionBar.setOccupyStatusBar(false); + } actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { @Override public void onItemClick(final int id) { @@ -675,7 +678,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. FrameLayout.LayoutParams layoutParams; if (listView != null) { layoutParams = (FrameLayout.LayoutParams) listView.getLayoutParams(); - layoutParams.topMargin = (Build.VERSION.SDK_INT >= 21 ? AndroidUtilities.statusBarHeight : 0) + AndroidUtilities.getCurrentActionBarHeight(); + layoutParams.topMargin = (actionBar.getOccupyStatusBar() ? AndroidUtilities.statusBarHeight : 0) + AndroidUtilities.getCurrentActionBarHeight(); listView.setLayoutParams(layoutParams); } @@ -694,7 +697,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. if (writeButton != null) { layoutParams = (FrameLayout.LayoutParams) writeButton.getLayoutParams(); - layoutParams.topMargin = (Build.VERSION.SDK_INT >= 21 ? AndroidUtilities.statusBarHeight : 0) + AndroidUtilities.getCurrentActionBarHeight() + actionBar.getExtraHeight() - AndroidUtilities.dp(29.5f); + layoutParams.topMargin = (actionBar.getOccupyStatusBar() ? AndroidUtilities.statusBarHeight : 0) + AndroidUtilities.getCurrentActionBarHeight() + actionBar.getExtraHeight() - AndroidUtilities.dp(29.5f); writeButton.setLayoutParams(layoutParams); ViewProxy.setAlpha(writeButton, diff); writeButton.setVisibility(diff == 0 ? View.GONE : View.VISIBLE); @@ -877,6 +880,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. object.user_id = user_id; object.thumb = object.imageReceiver.getBitmap(); object.size = -1; + object.radius = avatarImage.imageReceiver.getRoundRadius(); return object; } return null; @@ -1019,6 +1023,9 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } private void updateProfileData() { + if (avatarImage == null) { + return; + } if (user_id != 0) { TLRPC.User user = MessagesController.getInstance().getUser(user_id); TLRPC.FileLocation photo = null; @@ -1219,7 +1226,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. view = new TextCell(mContext); } TextCell textCell = (TextCell) view; - textCell.setTextColor(0xff000000); + textCell.setTextColor(0xff212121); if (i == sharedMediaRow) { String value; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/SettingsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/SettingsActivity.java index 070e3e86c..d9eb509eb 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/SettingsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/SettingsActivity.java @@ -38,7 +38,6 @@ import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; -import android.widget.Toast; import org.telegram.android.AndroidUtilities; import org.telegram.android.ContactsController; @@ -101,10 +100,9 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter private int settingsSectionRow2; private int enableAnimationsRow; private int notificationRow; - private int blockedRow; private int backgroundRow; private int languageRow; - private int terminateSessionsRow; + private int privacyRow; private int mediaDownloadSection; private int mediaDownloadSection2; private int mobileDownloadRow; @@ -194,6 +192,7 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter @Override public void run() { NotificationCenter.getInstance().postNotificationName(NotificationCenter.updateInterfaces, MessagesController.UPDATE_MASK_ALL); + NotificationCenter.getInstance().postNotificationName(NotificationCenter.mainUserInfoChanged); UserConfig.saveConfig(true); } }); @@ -214,10 +213,9 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter settingsSectionRow2 = rowCount++; enableAnimationsRow = rowCount++; notificationRow = rowCount++; - blockedRow = rowCount++; + privacyRow = rowCount++; backgroundRow = rowCount++; languageRow = rowCount++; - terminateSessionsRow = rowCount++; mediaDownloadSection = rowCount++; mediaDownloadSection2 = rowCount++; mobileDownloadRow = rowCount++; @@ -268,6 +266,9 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter actionBar.setBackButtonImage(R.drawable.ic_ab_back); actionBar.setBackOverlay(R.layout.updating_state_layout); actionBar.setExtraHeight(AndroidUtilities.dp(88), false); + if (AndroidUtilities.isTablet()) { + actionBar.setOccupyStatusBar(false); + } actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { @Override public void onItemClick(int id) { @@ -303,7 +304,6 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter } }); ActionBarMenu menu = actionBar.createMenu(); - menu.clearItems(); ActionBarMenuItem item = menu.addItem(0, R.drawable.ic_ab_other); item.addSubItem(edit_name, LocaleController.getString("EditName", R.string.EditName), 0); item.addSubItem(logout, LocaleController.getString("LogOut", R.string.LogOut), 0); @@ -425,8 +425,6 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter } } else if (i == notificationRow) { presentFragment(new NotificationsSettingsActivity()); - } else if (i == blockedRow) { - presentFragment(new BlockedUsersActivity()); } else if (i == backgroundRow) { presentFragment(new WallpapersActivity()); } else if (i == askQuestionRow) { @@ -467,46 +465,8 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter if (listView != null) { listView.invalidateViews(); } - } else if (i == terminateSessionsRow) { - if (getParentActivity() == null) { - return; - } - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); - builder.setMessage(LocaleController.getString("AreYouSureSessions", R.string.AreYouSureSessions)); - 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) { - TLRPC.TL_auth_resetAuthorizations req = new TLRPC.TL_auth_resetAuthorizations(); - ConnectionsManager.getInstance().performRpc(req, new RPCRequest.RPCRequestDelegate() { - @Override - public void run(final TLObject response, final TLRPC.TL_error error) { - AndroidUtilities.runOnUIThread(new Runnable() { - @Override - public void run() { - if (getParentActivity() == null) { - return; - } - if (error == null && response instanceof TLRPC.TL_boolTrue) { - Toast toast = Toast.makeText(getParentActivity(), LocaleController.getString("TerminateAllSessions", R.string.TerminateAllSessions), Toast.LENGTH_SHORT); - toast.show(); - } else { - Toast toast = Toast.makeText(getParentActivity(), LocaleController.getString("UnknownError", R.string.UnknownError), Toast.LENGTH_SHORT); - toast.show(); - } - } - }); - UserConfig.registeredForPush = false; - UserConfig.registeredForInternalPush = false; - UserConfig.saveConfig(false); - MessagesController.getInstance().registerForPush(UserConfig.pushString); - ConnectionsManager.getInstance().initPushConnection(); - } - }); - } - }); - builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); - showAlertDialog(builder); + } else if (i == privacyRow) { + presentFragment(new PrivacySettingsActivity()); } else if (i == languageRow) { presentFragment(new LanguageSelectActivity()); } else if (i == switchBackendButtonRow) { @@ -745,6 +705,7 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter object.user_id = UserConfig.getClientUserId(); object.thumb = object.imageReceiver.getBitmap(); object.size = -1; + object.radius = avatarImage.imageReceiver.getRoundRadius(); return object; } } @@ -903,7 +864,7 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter FrameLayout.LayoutParams layoutParams; if (listView != null) { layoutParams = (FrameLayout.LayoutParams) listView.getLayoutParams(); - layoutParams.topMargin = (Build.VERSION.SDK_INT >= 21 ? AndroidUtilities.statusBarHeight : 0) + AndroidUtilities.getCurrentActionBarHeight(); + layoutParams.topMargin = (actionBar.getOccupyStatusBar() ? AndroidUtilities.statusBarHeight : 0) + AndroidUtilities.getCurrentActionBarHeight(); listView.setLayoutParams(layoutParams); } @@ -921,7 +882,7 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter int statusY = avatarY + AndroidUtilities.dp(8 - 7 * diffm); layoutParams = (FrameLayout.LayoutParams) writeButton.getLayoutParams(); - layoutParams.topMargin = (Build.VERSION.SDK_INT >= 21 ? AndroidUtilities.statusBarHeight : 0) + AndroidUtilities.getCurrentActionBarHeight() + actionBar.getExtraHeight() - AndroidUtilities.dp(29.5f); + layoutParams.topMargin = (actionBar.getOccupyStatusBar() ? AndroidUtilities.statusBarHeight : 0) + AndroidUtilities.getCurrentActionBarHeight() + actionBar.getExtraHeight() - AndroidUtilities.dp(29.5f); writeButton.setLayoutParams(layoutParams); ViewProxy.setAlpha(writeButton, diff); writeButton.setVisibility(diff == 0 ? View.GONE : View.VISIBLE); @@ -1021,8 +982,8 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter @Override public boolean isEnabled(int i) { - return i == textSizeRow || i == enableAnimationsRow || i == blockedRow || i == notificationRow || i == backgroundRow || - i == askQuestionRow || i == sendLogsRow || i == sendByEnterRow || i == terminateSessionsRow || i == wifiDownloadRow || + return i == textSizeRow || i == enableAnimationsRow || i == notificationRow || i == backgroundRow || + i == askQuestionRow || i == sendLogsRow || i == sendByEnterRow || i == privacyRow || i == wifiDownloadRow || i == mobileDownloadRow || i == clearLogsRow || i == roamingDownloadRow || i == languageRow || i == usernameRow || i == switchBackendButtonRow || i == telegramFaqRow || i == contactsSortRow || i == contactsReimportRow || i == saveToGalleryRow; } @@ -1073,7 +1034,7 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter int size = preferences.getInt("fons_size", AndroidUtilities.isTablet() ? 18 : 16); textCell.setTextAndValue(LocaleController.getString("TextSize", R.string.TextSize), String.format("%d", size), true); } else if (i == languageRow) { - textCell.setTextAndValue(LocaleController.getString("Language", R.string.Language), LocaleController.getCurrentLanguageName(), true); + textCell.setTextAndValue(LocaleController.getString("Language", R.string.Language), LocaleController.getCurrentLanguageName(), false); } else if (i == contactsSortRow) { String value; SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE); @@ -1088,8 +1049,6 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter textCell.setTextAndValue(LocaleController.getString("SortBy", R.string.SortBy), value, true); } else if (i == notificationRow) { textCell.setText(LocaleController.getString("NotificationsAndSounds", R.string.NotificationsAndSounds), true); - } else if (i == blockedRow) { - textCell.setText(LocaleController.getString("BlockedUsers", R.string.BlockedUsers), true); } else if (i == backgroundRow) { textCell.setText(LocaleController.getString("ChatBackground", R.string.ChatBackground), true); } else if (i == sendLogsRow) { @@ -1098,8 +1057,8 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter textCell.setText("Clear Logs", true); } else if (i == askQuestionRow) { textCell.setText(LocaleController.getString("AskAQuestion", R.string.AskAQuestion), true); - } else if (i == terminateSessionsRow) { - textCell.setText(LocaleController.getString("TerminateAllSessions", R.string.TerminateAllSessions), false); + } else if (i == privacyRow) { + textCell.setText(LocaleController.getString("PrivacySettings", R.string.PrivacySettings), true); } else if (i == switchBackendButtonRow) { textCell.setText("Switch Backend", true); } else if (i == telegramFaqRow) { @@ -1223,7 +1182,7 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter return 1; } else if (i == enableAnimationsRow || i == sendByEnterRow || i == saveToGalleryRow) { return 3; - } else if (i == notificationRow || i == blockedRow || i == backgroundRow || i == askQuestionRow || i == sendLogsRow || i == terminateSessionsRow || i == clearLogsRow || i == switchBackendButtonRow || i == telegramFaqRow || i == contactsReimportRow || i == textSizeRow || i == languageRow || i == contactsSortRow) { + } else if (i == notificationRow || i == backgroundRow || i == askQuestionRow || i == sendLogsRow || i == privacyRow || i == clearLogsRow || i == switchBackendButtonRow || i == telegramFaqRow || i == contactsReimportRow || i == textSizeRow || i == languageRow || i == contactsSortRow) { return 2; } else if (i == versionRow) { return 5; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/VideoEditorActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/VideoEditorActivity.java index c96a0f59d..24d4837e3 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/VideoEditorActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/VideoEditorActivity.java @@ -254,7 +254,7 @@ public class VideoEditorActivity extends BaseFragment implements TextureView.Sur }); ActionBarMenu menu = actionBar.createMenu(); - menu.addItem(1, R.drawable.ic_done, 0, AndroidUtilities.dp(56)); + menu.addItemWithWidth(1, R.drawable.ic_done, AndroidUtilities.dp(56)); fragmentView = inflater.inflate(R.layout.video_editor_layout, container, false); originalSizeTextView = (TextView) fragmentView.findViewById(R.id.original_size); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Views/ChatActivityEnterView.java b/TMessagesProj/src/main/java/org/telegram/ui/Views/ChatActivityEnterView.java index 1652118ad..e22e24003 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Views/ChatActivityEnterView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Views/ChatActivityEnterView.java @@ -8,15 +8,10 @@ package org.telegram.ui.Views; -import android.animation.Animator; -import android.animation.AnimatorListenerAdapter; -import android.animation.AnimatorSet; -import android.animation.ObjectAnimator; import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; import android.graphics.Rect; -import android.os.Build; import android.os.PowerManager; import android.text.Editable; import android.text.TextWatcher; @@ -48,10 +43,12 @@ import org.telegram.messenger.FileLog; import org.telegram.android.NotificationCenter; import org.telegram.messenger.R; import org.telegram.messenger.TLRPC; +import org.telegram.ui.AnimationCompat.AnimatorListenerAdapterProxy; +import org.telegram.ui.AnimationCompat.AnimatorSetProxy; +import org.telegram.ui.AnimationCompat.ObjectAnimatorProxy; +import org.telegram.ui.AnimationCompat.ViewProxy; import org.telegram.ui.ApplicationLoader; -import java.util.ArrayList; - public class ChatActivityEnterView implements NotificationCenter.NotificationCenterDelegate, SizeNotifierRelativeLayout.SizeNotifierRelativeLayoutDelegate { public static interface ChatActivityEnterViewDelegate { @@ -71,7 +68,8 @@ public class ChatActivityEnterView implements NotificationCenter.NotificationCen private PowerManager.WakeLock mWakeLock; private SizeNotifierRelativeLayout sizeNotifierRelativeLayout; private FrameLayout attachButton; - private Object runningAnimation; + private AnimatorSetProxy runningAnimation; + private AnimatorSetProxy runningAnimation2; private int runningAnimationType; private int keyboardHeight; @@ -134,6 +132,9 @@ public class ChatActivityEnterView implements NotificationCenter.NotificationCen messsageEditText.setHint(LocaleController.getString("TypeMessage", R.string.TypeMessage)); attachButton = (FrameLayout) containerView.findViewById(R.id.chat_attach_button); + if (attachButton != null) { + ViewProxy.setPivotX(attachButton, AndroidUtilities.dp(48)); + } sendButton = (ImageButton) containerView.findViewById(R.id.chat_send_button); sendButton.setVisibility(View.INVISIBLE); @@ -224,38 +225,37 @@ public class ChatActivityEnterView implements NotificationCenter.NotificationCen recordingAudio = false; updateAudioRecordIntefrace(); } - if (android.os.Build.VERSION.SDK_INT > 13) { - x = x + audioSendButton.getX(); - FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) slideText.getLayoutParams(); - if (startedDraggingX != -1) { - float dist = (x - startedDraggingX); - params.leftMargin = AndroidUtilities.dp(30) + (int) dist; - slideText.setLayoutParams(params); - float alpha = 1.0f + dist / distCanMove; - if (alpha > 1) { - alpha = 1; - } else if (alpha < 0) { - alpha = 0; - } - slideText.setAlpha(alpha); + + x = x + ViewProxy.getX(audioSendButton); + FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) slideText.getLayoutParams(); + if (startedDraggingX != -1) { + float dist = (x - startedDraggingX); + params.leftMargin = AndroidUtilities.dp(30) + (int) dist; + slideText.setLayoutParams(params); + float alpha = 1.0f + dist / distCanMove; + if (alpha > 1) { + alpha = 1; + } else if (alpha < 0) { + alpha = 0; } - if (x <= slideText.getX() + slideText.getWidth() + AndroidUtilities.dp(30)) { - if (startedDraggingX == -1) { - startedDraggingX = x; - distCanMove = (recordPanel.getMeasuredWidth() - slideText.getMeasuredWidth() - AndroidUtilities.dp(48)) / 2.0f; - if (distCanMove <= 0) { - distCanMove = AndroidUtilities.dp(80); - } else if (distCanMove > AndroidUtilities.dp(80)) { - distCanMove = AndroidUtilities.dp(80); - } + ViewProxy.setAlpha(slideText, alpha); + } + if (x <= ViewProxy.getX(slideText) + slideText.getWidth() + AndroidUtilities.dp(30)) { + if (startedDraggingX == -1) { + startedDraggingX = x; + distCanMove = (recordPanel.getMeasuredWidth() - slideText.getMeasuredWidth() - AndroidUtilities.dp(48)) / 2.0f; + if (distCanMove <= 0) { + distCanMove = AndroidUtilities.dp(80); + } else if (distCanMove > AndroidUtilities.dp(80)) { + distCanMove = AndroidUtilities.dp(80); } } - if (params.leftMargin > AndroidUtilities.dp(30)) { - params.leftMargin = AndroidUtilities.dp(30); - slideText.setLayoutParams(params); - slideText.setAlpha(1); - startedDraggingX = -1; - } + } + if (params.leftMargin > AndroidUtilities.dp(30)) { + params.leftMargin = AndroidUtilities.dp(30); + slideText.setLayoutParams(params); + ViewProxy.setAlpha(slideText, 1); + startedDraggingX = -1; } } view.onTouchEvent(motionEvent); @@ -349,46 +349,63 @@ public class ChatActivityEnterView implements NotificationCenter.NotificationCen return src; } - private void checkSendButton(boolean animated) { + private void checkSendButton(final boolean animated) { String message = getTrimmedString(messsageEditText.getText().toString()); if (message.length() > 0) { if (audioSendButton.getVisibility() == View.VISIBLE) { - if (Build.VERSION.SDK_INT >= 11 && animated) { + if (animated) { if (runningAnimationType == 1) { return; } if (runningAnimation != null) { - ((AnimatorSet) runningAnimation).cancel(); + runningAnimation.cancel(); runningAnimation = null; } + if (runningAnimation2 != null) { + runningAnimation2.cancel(); + runningAnimation2 = null; + } + + if (attachButton != null) { + runningAnimation2 = new AnimatorSetProxy(); + runningAnimation2.playTogether( + ObjectAnimatorProxy.ofFloat(attachButton, "alpha", 0.0f), + ObjectAnimatorProxy.ofFloat(attachButton, "scaleX", 0.0f) + ); + runningAnimation2.setDuration(100); + runningAnimation2.addListener(new AnimatorListenerAdapterProxy() { + @Override + public void onAnimationEnd(Object animation) { + if (runningAnimation2.equals(animation)) { + attachButton.setVisibility(View.GONE); + } + } + }); + runningAnimation2.start(); + + FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) messsageEditText.getLayoutParams(); + layoutParams.rightMargin = AndroidUtilities.dp(2); + messsageEditText.setLayoutParams(layoutParams); + } sendButton.setVisibility(View.VISIBLE); - AnimatorSet animatorSet = new AnimatorSet(); - runningAnimation = animatorSet; + runningAnimation = new AnimatorSetProxy(); runningAnimationType = 1; - ArrayList animators = new ArrayList(); - animators.add(ObjectAnimator.ofFloat(audioSendButton, "scaleX", 0.1f)); - animators.add(ObjectAnimator.ofFloat(audioSendButton, "scaleY", 0.1f)); - animators.add(ObjectAnimator.ofFloat(audioSendButton, "alpha", 0.0f)); - animators.add(ObjectAnimator.ofFloat(sendButton, "scaleX", 1.0f)); - animators.add(ObjectAnimator.ofFloat(sendButton, "scaleY", 1.0f)); - animators.add(ObjectAnimator.ofFloat(sendButton, "alpha", 1.0f)); - if (attachButton != null) { - animators.add(ObjectAnimator.ofFloat(attachButton, "alpha", 0.0f)); - animators.add(ObjectAnimator.ofFloat(attachButton, "translationX", AndroidUtilities.dp(48))); + 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) + ); - FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) messsageEditText.getLayoutParams(); - layoutParams.rightMargin = AndroidUtilities.dp(6); - messsageEditText.setLayoutParams(layoutParams); - } - animatorSet.playTogether(animators); - - animatorSet.setDuration(200); - animatorSet.addListener(new AnimatorListenerAdapter() { + runningAnimation.setDuration(150); + runningAnimation.addListener(new AnimatorListenerAdapterProxy() { @Override - public void onAnimationEnd(Animator animation) { - if (animation == runningAnimation) { + public void onAnimationEnd(Object animation) { + if (runningAnimation.equals(animation)) { sendButton.setVisibility(View.VISIBLE); audioSendButton.setVisibility(View.INVISIBLE); runningAnimation = null; @@ -396,16 +413,14 @@ public class ChatActivityEnterView implements NotificationCenter.NotificationCen } } }); - animatorSet.start(); + runningAnimation.start(); } else { - if (Build.VERSION.SDK_INT >= 11) { - audioSendButton.setScaleX(0.1f); - audioSendButton.setScaleY(0.1f); - audioSendButton.setAlpha(0.0f); - sendButton.setScaleX(1.0f); - sendButton.setScaleY(1.0f); - sendButton.setAlpha(1.0f); - } + 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.INVISIBLE); if (attachButton != null) { @@ -414,43 +429,53 @@ public class ChatActivityEnterView implements NotificationCenter.NotificationCen } } } else if (sendButton.getVisibility() == View.VISIBLE) { - if (Build.VERSION.SDK_INT >= 11 && animated) { + if (animated) { if (runningAnimationType == 2) { return; } if (runningAnimation != null) { - ((AnimatorSet) runningAnimation).cancel(); + runningAnimation.cancel(); runningAnimation = null; } + if (runningAnimation2 != null) { + runningAnimation2.cancel(); + runningAnimation2 = null; + } + + if (attachButton != null) { + attachButton.setVisibility(View.VISIBLE); + runningAnimation2 = new AnimatorSetProxy(); + runningAnimation2.playTogether( + ObjectAnimatorProxy.ofFloat(attachButton, "alpha", 1.0f), + ObjectAnimatorProxy.ofFloat(attachButton, "scaleX", 1.0f) + ); + runningAnimation2.setDuration(100); + runningAnimation2.start(); + + FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) messsageEditText.getLayoutParams(); + layoutParams.rightMargin = AndroidUtilities.dp(2); + messsageEditText.setLayoutParams(layoutParams); + } audioSendButton.setVisibility(View.VISIBLE); - AnimatorSet animatorSet = new AnimatorSet(); - runningAnimation = animatorSet; + runningAnimation = new AnimatorSetProxy(); runningAnimationType = 2; - ArrayList animators = new ArrayList(); - animators.add(ObjectAnimator.ofFloat(sendButton, "scaleX", 0.1f)); - animators.add(ObjectAnimator.ofFloat(sendButton, "scaleY", 0.1f)); - animators.add(ObjectAnimator.ofFloat(sendButton, "alpha", 0.0f)); - animators.add(ObjectAnimator.ofFloat(audioSendButton, "scaleX", 1.0f)); - animators.add(ObjectAnimator.ofFloat(audioSendButton, "scaleY", 1.0f)); - animators.add(ObjectAnimator.ofFloat(audioSendButton, "alpha", 1.0f)); - if (attachButton != null) { - animators.add(ObjectAnimator.ofFloat(attachButton, "alpha", 1.0f)); - animators.add(ObjectAnimator.ofFloat(attachButton, "translationX", 0.0f)); + 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) + ); - FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) messsageEditText.getLayoutParams(); - layoutParams.rightMargin = AndroidUtilities.dp(54); - messsageEditText.setLayoutParams(layoutParams); - } - animatorSet.playTogether(animators); - - animatorSet.setDuration(200); - animatorSet.addListener(new AnimatorListenerAdapter() { + runningAnimation.setDuration(150); + runningAnimation.addListener(new AnimatorListenerAdapterProxy() { @Override - public void onAnimationEnd(Animator animation) { - if (animation == runningAnimation) { + public void onAnimationEnd(Object animation) { + if (runningAnimation.equals(animation)) { sendButton.setVisibility(View.INVISIBLE); audioSendButton.setVisibility(View.VISIBLE); runningAnimation = null; @@ -458,16 +483,14 @@ public class ChatActivityEnterView implements NotificationCenter.NotificationCen } } }); - animatorSet.start(); + runningAnimation.start(); } else { - if (Build.VERSION.SDK_INT >= 11) { - sendButton.setScaleX(0.1f); - sendButton.setScaleY(0.1f); - sendButton.setAlpha(0.0f); - audioSendButton.setScaleX(1.0f); - audioSendButton.setScaleY(1.0f); - audioSendButton.setAlpha(1.0f); - } + ViewProxy.setScaleX(sendButton, 0.1f); + ViewProxy.setScaleY(sendButton, 0.1f); + ViewProxy.setAlpha(sendButton, 0.0f); + ViewProxy.setScaleX(audioSendButton, 1.0f); + ViewProxy.setScaleY(audioSendButton, 1.0f); + ViewProxy.setAlpha(audioSendButton, 1.0f); sendButton.setVisibility(View.INVISIBLE); audioSendButton.setVisibility(View.VISIBLE); if (attachButton != null) { @@ -493,31 +516,21 @@ public class ChatActivityEnterView implements NotificationCenter.NotificationCen recordPanel.setVisibility(View.VISIBLE); recordTimeText.setText("00:00"); lastTimeString = null; - if (android.os.Build.VERSION.SDK_INT > 13) { - FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) slideText.getLayoutParams(); - params.leftMargin = AndroidUtilities.dp(30); - slideText.setLayoutParams(params); - slideText.setAlpha(1); - recordPanel.setX(AndroidUtilities.displaySize.x); - recordPanel.animate().setInterpolator(new AccelerateDecelerateInterpolator()).setListener(new Animator.AnimatorListener() { - @Override - public void onAnimationStart(Animator animator) { - } - @Override - public void onAnimationEnd(Animator animator) { - recordPanel.setX(0); - } - - @Override - public void onAnimationCancel(Animator animator) { - } - - @Override - public void onAnimationRepeat(Animator animator) { - } - }).setDuration(300).translationX(0).start(); - } + FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) slideText.getLayoutParams(); + params.leftMargin = AndroidUtilities.dp(30); + slideText.setLayoutParams(params); + ViewProxy.setAlpha(slideText, 1); + recordPanel.setX(AndroidUtilities.displaySize.x); + ObjectAnimatorProxy animatorProxy = ObjectAnimatorProxy.ofFloatProxy(recordPanel, "translationX", 0).setDuration(300); + animatorProxy.addListener(new AnimatorListenerAdapterProxy() { + @Override + public void onAnimationEnd(Object animator) { + ViewProxy.setX(recordPanel, 0); + } + }); + animatorProxy.setInterpolator(new AccelerateDecelerateInterpolator()); + animatorProxy.start(); } else { if (mWakeLock != null) { try { @@ -528,33 +541,20 @@ public class ChatActivityEnterView implements NotificationCenter.NotificationCen } } AndroidUtilities.unlockOrientation(parentActivity); - if (android.os.Build.VERSION.SDK_INT > 13) { - recordPanel.animate().setInterpolator(new AccelerateDecelerateInterpolator()).setListener(new Animator.AnimatorListener() { - @Override - public void onAnimationStart(Animator animator) { - } - - @Override - public void onAnimationEnd(Animator animator) { - FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) slideText.getLayoutParams(); - params.leftMargin = AndroidUtilities.dp(30); - slideText.setLayoutParams(params); - slideText.setAlpha(1); - recordPanel.setVisibility(View.GONE); - } - - @Override - public void onAnimationCancel(Animator animator) { - } - - @Override - public void onAnimationRepeat(Animator animator) { - } - }).setDuration(300).translationX(AndroidUtilities.displaySize.x).start(); - } else { - recordPanel.setVisibility(View.GONE); - } + ObjectAnimatorProxy animatorProxy = ObjectAnimatorProxy.ofFloatProxy(recordPanel, "translationX", AndroidUtilities.displaySize.x).setDuration(300); + animatorProxy.addListener(new AnimatorListenerAdapterProxy() { + @Override + public void onAnimationEnd(Object animator) { + FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) slideText.getLayoutParams(); + params.leftMargin = AndroidUtilities.dp(30); + slideText.setLayoutParams(params); + ViewProxy.setAlpha(slideText, 1); + recordPanel.setVisibility(View.GONE); + } + }); + animatorProxy.setInterpolator(new AccelerateDecelerateInterpolator()); + animatorProxy.start(); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Views/ClippingImageView.java b/TMessagesProj/src/main/java/org/telegram/ui/Views/ClippingImageView.java index 7ab955fc4..e3243f9e5 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Views/ClippingImageView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Views/ClippingImageView.java @@ -10,9 +10,13 @@ package org.telegram.ui.Views; import android.content.Context; import android.graphics.Bitmap; +import android.graphics.BitmapShader; import android.graphics.Canvas; +import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.Rect; +import android.graphics.RectF; +import android.graphics.Shader; import android.view.View; import org.telegram.messenger.FileLog; @@ -28,6 +32,14 @@ public class ClippingImageView extends View { private Bitmap bmp; private onDrawListener drawListener; + private boolean needRadius; + private int radius; + private BitmapShader bitmapShader; + private Paint roundPaint; + private RectF roundRect; + private RectF bitmapRect; + private Matrix shaderMatrix; + public static interface onDrawListener { public abstract void onDraw(); } @@ -59,6 +71,10 @@ public class ClippingImageView extends View { return clipTop; } + public int getRadius() { + return radius; + } + public void onDraw(Canvas canvas) { if (getVisibility() == GONE || getVisibility() == INVISIBLE) { return; @@ -69,12 +85,20 @@ public class ClippingImageView extends View { drawListener.onDraw(); } canvas.save(); - canvas.clipRect(clipLeft / scaleY, clipTop / scaleY, getWidth() - clipRight / scaleY, getHeight() - clipBottom / scaleY); - drawRect.set(0, 0, getWidth(), getHeight()); - try { - canvas.drawBitmap(this.bmp, null, drawRect, this.paint); - } catch (Exception e) { - FileLog.e("tmessages", e); + if (needRadius) { + roundRect.set(0, 0, getWidth(), getHeight()); + shaderMatrix.reset(); + shaderMatrix.setRectToRect(bitmapRect, roundRect, Matrix.ScaleToFit.FILL); + bitmapShader.setLocalMatrix(shaderMatrix); + canvas.drawRoundRect(roundRect, radius, radius, roundPaint); + } else { + canvas.clipRect(clipLeft / scaleY, clipTop / scaleY, getWidth() - clipRight / scaleY, getHeight() - clipBottom / scaleY); + drawRect.set(0, 0, getWidth(), getHeight()); + try { + canvas.drawBitmap(bmp, null, drawRect, paint); + } catch (Exception e) { + FileLog.e("tmessages", e); + } } canvas.restore(); } @@ -114,10 +138,27 @@ public class ClippingImageView extends View { public void setImageBitmap(Bitmap bitmap) { bmp = bitmap; + if (bitmap != null && needRadius) { + roundRect = new RectF(); + shaderMatrix = new Matrix(); + bitmapRect = new RectF(); + bitmapRect.set(0, 0, bitmap.getWidth(), bitmap.getHeight()); + bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); + roundPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + roundPaint.setShader(bitmapShader); + } invalidate(); } public void setOnDrawListener(onDrawListener listener) { drawListener = listener; } + + public void setNeedRadius(boolean value) { + needRadius = value; + } + + public void setRadius(int value) { + radius = value; + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Views/SettingsSectionLayout.java b/TMessagesProj/src/main/java/org/telegram/ui/Views/SettingsSectionLayout.java deleted file mode 100644 index 547e5352f..000000000 --- a/TMessagesProj/src/main/java/org/telegram/ui/Views/SettingsSectionLayout.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * This is the source code of Telegram for Android v. 1.7.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-2014. - */ - -package org.telegram.ui.Views; - -import android.content.Context; -import android.graphics.Typeface; -import android.util.AttributeSet; -import android.util.TypedValue; -import android.view.Gravity; -import android.view.View; -import android.widget.LinearLayout; -import android.widget.TextView; - -import org.telegram.android.AndroidUtilities; -import org.telegram.android.LocaleController; - -public class SettingsSectionLayout extends LinearLayout { - - private TextView textView; - - private void init() { - setOrientation(LinearLayout.VERTICAL); - - textView = new TextView(getContext()); - textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); - textView.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD)); - textView.setTextColor(0xff3b84c0); - addView(textView); - LayoutParams layoutParams = (LayoutParams)textView.getLayoutParams(); - layoutParams.width = LayoutParams.WRAP_CONTENT; - layoutParams.height = LayoutParams.WRAP_CONTENT; - layoutParams.leftMargin = AndroidUtilities.dp(8); - layoutParams.rightMargin = AndroidUtilities.dp(8); - layoutParams.topMargin = AndroidUtilities.dp(6); - layoutParams.bottomMargin = AndroidUtilities.dp(4); - if (LocaleController.isRTL) { - textView.setGravity(Gravity.RIGHT); - layoutParams.gravity = Gravity.RIGHT; - } - textView.setLayoutParams(layoutParams); - - View view = new View(getContext()); - view.setBackgroundColor(0xff6caae4); - addView(view); - layoutParams = (LayoutParams)view.getLayoutParams(); - layoutParams.weight = LayoutParams.MATCH_PARENT; - layoutParams.height = AndroidUtilities.dp(1); - view.setLayoutParams(layoutParams); - } - - public SettingsSectionLayout(Context context) { - super(context); - init(); - } - - public SettingsSectionLayout(Context context, AttributeSet attrs) { - super(context, attrs); - init(); - } - - public SettingsSectionLayout(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - init(); - } - - public SettingsSectionLayout(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { - super(context, attrs, defStyleAttr, defStyleRes); - init(); - } - - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(heightMeasureSpec), MeasureSpec.UNSPECIFIED)); - } - - public void setText(String text) { - textView.setText(text); - } -} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Views/TimerButton.java b/TMessagesProj/src/main/java/org/telegram/ui/Views/TimerDrawable.java similarity index 80% rename from TMessagesProj/src/main/java/org/telegram/ui/Views/TimerButton.java rename to TMessagesProj/src/main/java/org/telegram/ui/Views/TimerDrawable.java index 9c6c43048..2a9dc523c 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Views/TimerButton.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Views/TimerDrawable.java @@ -10,20 +10,19 @@ package org.telegram.ui.Views; import android.content.Context; import android.graphics.Canvas; +import android.graphics.ColorFilter; import android.graphics.Paint; import android.graphics.Typeface; import android.graphics.drawable.Drawable; import android.text.Layout; import android.text.StaticLayout; import android.text.TextPaint; -import android.util.AttributeSet; -import android.view.View; import org.telegram.android.AndroidUtilities; import org.telegram.messenger.FileLog; import org.telegram.messenger.R; -public class TimerButton extends View { +public class TimerDrawable extends Drawable { private static Drawable emptyTimerDrawable; private static Drawable timerDrawable; @@ -33,32 +32,15 @@ public class TimerButton extends View { private int timeHeight = 0; private int time = 0; - private void init() { + public TimerDrawable(Context context) { if (emptyTimerDrawable == null) { - emptyTimerDrawable = getResources().getDrawable(R.drawable.header_timer); - timerDrawable = getResources().getDrawable(R.drawable.header_timer2); + emptyTimerDrawable = context.getResources().getDrawable(R.drawable.header_timer); + timerDrawable = context.getResources().getDrawable(R.drawable.header_timer2); timePaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); timePaint.setTextSize(AndroidUtilities.dp(10)); timePaint.setColor(0xffd7e8f7); timePaint.setTypeface(Typeface.DEFAULT_BOLD); } - - setBackgroundResource(R.drawable.bar_selector); - } - - public TimerButton(Context context) { - super(context); - init(); - } - - public TimerButton(Context context, AttributeSet attrs) { - super(context, attrs); - init(); - } - - public TimerButton(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - init(); } public void setTime(int value) { @@ -103,13 +85,13 @@ public class TimerButton extends View { FileLog.e("tmessages", e); } - invalidate(); + invalidateSelf(); } @Override - protected void onDraw(Canvas canvas) { - int width = getMeasuredWidth(); - int height = getMeasuredHeight(); + public void draw(Canvas canvas) { + int width = canvas.getWidth(); + int height = canvas.getHeight(); Drawable drawable = null; if (time == 0) { drawable = timerDrawable; @@ -127,4 +109,29 @@ public class TimerButton extends View { timeLayout.draw(canvas); } } + + @Override + public void setAlpha(int alpha) { + + } + + @Override + public void setColorFilter(ColorFilter cf) { + + } + + @Override + public int getOpacity() { + return 0; + } + + @Override + public int getIntrinsicWidth() { + return -1; + } + + @Override + public int getIntrinsicHeight() { + return -1; + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/WallpapersActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/WallpapersActivity.java index b3cfd5f33..75da99118 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/WallpapersActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/WallpapersActivity.java @@ -155,7 +155,7 @@ public class WallpapersActivity extends BaseFragment implements NotificationCent }); ActionBarMenu menu = actionBar.createMenu(); - doneButton = menu.addItem(done_button, R.drawable.ic_done, 0, AndroidUtilities.dp(56)); + doneButton = menu.addItemWithWidth(done_button, R.drawable.ic_done, AndroidUtilities.dp(56)); fragmentView = inflater.inflate(R.layout.settings_wallpapers_layout, container, false); listAdapter = new ListAdapter(getParentActivity()); diff --git a/TMessagesProj/src/main/res/anim/slide_down.xml b/TMessagesProj/src/main/res/anim/slide_down.xml deleted file mode 100644 index a61827005..000000000 --- a/TMessagesProj/src/main/res/anim/slide_down.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/anim/slide_up.xml b/TMessagesProj/src/main/res/anim/slide_up.xml deleted file mode 100644 index ce5a71522..000000000 --- a/TMessagesProj/src/main/res/anim/slide_up.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable-hdpi/call.png b/TMessagesProj/src/main/res/drawable-hdpi/call.png deleted file mode 100755 index 8a87c04b4406a0544b1150730f75c01e9565616f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 701 zcmV;u0z&tHMwEI=iBd{gq^G^@DI!JcrKiS3lpe-jqK6nU^-@X? zDMs`ZF-DBY`VRli%sqE!yX)L@b$>p`J?GrB|GWQx{`3E5o=T;nIa%5?hl@+VCGg(~ z_^d9FN~J8lACJfFvjCL$qlp3?jfjLt5 zL8AmZ1W86!CGaIMr%dO8k_1Wua~6O%RSCS9jOBqrAfxgozT@;?lJa@gPvVS8><=hk z&>(lubKHo9&3UI(WNA)6%SPLsLcl2J?*tZ=Cjd7pqS@jMZ=0mrN)`3{K*6A&ZRBH> zQwiM)>_lD#z72*)soYfB0*pk?qq z-HONR?KFNoNJW0wB*mDnN$^<6-K&{*3ar4gWtkRW@&Sxd%c~C_fpL1CF;HHww{Pjn zMk)b~BGQD$zY}6sItNb3t#}e4mzt94Le-D`z=dGtCK9TX6!HGt0=nD)!zS+3h$QHP zXfg>fc_0#n7OWMpg8-8!pqC;`v%;d*m0bih+R$@!VmEW)yGD7JZ3KSzInYIiUQzI! z9Vnlb8Aj^~Q+$(%OcJSAPHDOX<&&Zd`!u=2Tq#S?B}`$r0L4pRkdZ0hfTS@*}_i#TbRdOm@~O00000NkvXXu0mjfN9!~g diff --git a/TMessagesProj/src/main/res/drawable-hdpi/check_blue.png b/TMessagesProj/src/main/res/drawable-hdpi/check_blue.png new file mode 100755 index 0000000000000000000000000000000000000000..80ade6ab1d054c5fc81421dc51983318e1f3514d GIT binary patch literal 1182 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?)Y;O}z`)ql%*E2!(9qSy(b&z%N0`uS|C`V9wUCYlPpv=fLp zP?Eae;np?>Ew_-Kn4E@924UNJS{|}ZG@P@*NkT6mk%#?-cFzj0b1ZTX4BVH^SoYn> zV5T<98G&|LBd2dKvQra2ZCleC^7QpT=_!UjY8=s9ro_Km8o(~vdQU^`yE|{lk_CrM zx|ly-e9W#Vb5i=@=5r@lZq7O|LEhd(`>J!^vhX&Oc9Rus>}@6zrW%hWJ}n6g*!ada qdx6NR!;OXY%`zt%{|S8&NMP6=+Tq{uVs#0q#PD?Wb6Mw<&;$Uq3W>}B literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/greydivider.9.png b/TMessagesProj/src/main/res/drawable-hdpi/greydivider.9.png new file mode 100644 index 0000000000000000000000000000000000000000..9a69cf43db3312498964c0ef791119339e5e2d85 GIT binary patch literal 136 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;=zo(01NX4zUS2l7o7;v}*ewRPb zn6s9}d`F4UC6x);O@eX1-}*gyV{mi+s-}fJv>uxTb|TY1w9@hS3e k1eWwO*Y2CvxnGf4P2kP_$KRxFfJQTTy85}Sb4q9e0NHRa(EtDd literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/greydivider.png b/TMessagesProj/src/main/res/drawable-hdpi/greydivider.png deleted file mode 100755 index fd8713b0bd9f999f3173e7bfc2142c679c8400eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 960 zcmaJ=J#5oJ7`3PbsG>_HhA^Gn0g#CQVmpl$6Qyy|M#51@A~hq9eMzkJe8#?DCler{ z2-FQ2m>5_QD+5S?m^vXQL_0B73~a1$PLs3)!LrYHr}y6X-S@qFT(51ftzKDW7-p@y zV>IZ0J^3!4qvQA2DLOJKQf`wb?vls~AX9X32ZAcHdawa4XLR=f<{4&%bz5!HHg9P* zMx2#kxET2foyiws-?9ggfDY`rp3eSy_kjhjqqDn;DVTl<_T8Ov0Gs1l%N`HxoWmAw zf_$t|0R)K!VzlRlTCB5EU5(C@ZJq^F2pQ$gGWCI57J?K;djKK8Bn!7v~d8yuv>nzVjS<2;UGJMk5GmV~a zQTHU%g>C6#VSMOOw+GbLKR>;ALa&5eHHxkHu=AcAudf{6e>9m)E}{J|FAG<YSEZ-YD0KmRWcDxf{bvvUd`s?BwOljaY~6YI7rXy0RR910 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/greydivider_bottom.9.png b/TMessagesProj/src/main/res/drawable-hdpi/greydivider_bottom.9.png new file mode 100644 index 0000000000000000000000000000000000000000..64d23a36cd914c648d6ea82fec886fcfc081d263 GIT binary patch literal 122 zcmeAS@N?(olHy`uVBq!ia0vp^B0$W|!3HGjIoCP^DMwEi$B>F!PcLueWH8`iKKRCd z9(%#-QxABj99qC>7s_(IZh3K8(;Fox7I))d7WUO%EbP0ZS=iIvTGAc=io47&V&uQj V;~FG+^a{{022WQ%mvv4FO#r+WB)|k0wldT1B8K;Lb6AYF9SoB8UsT^3j@P1pisjL z28L1t28LG&3=CE?7#PG0=Ijcz0ZK3>dAqwX{BQ3+vmeOgEbxddW?W(xjvsYyggS)i3w+F@a!bWY&zz}$Jo gSEf$>>z~0|=KZw4Yp>!;pd%SPUHx3vIVCg!0HlLr2><{9 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/ic_ab_done.png b/TMessagesProj/src/main/res/drawable-hdpi/ic_ab_done.png deleted file mode 100644 index 7cbf465e63188c74259cec2e196ad504727964b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1333 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 OXYh3Ob6Mw<&;$S`d5fk1 literal 444 zcmeAS@N?(olHy`uVBq!ia0vp^AZ*XU1|*B!=F0;q$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@jB%bWjv*Dd-ptzT#q223DjVs<)wy9A$C3-`ovmS9c5ZT7 z`GOmG8RL({@kFT1wU~ERQ$>Jdru1|5`;Ea*@^{o!KRb7K!@27EwnwFWOb$#!6F4R` zu&5{qDll?-d|9nl#`rwuBEy=0*$NYL-k#dF&18!Dr_k+}`G5SKzGp&wdCfnS{(pP^ zO_~36`z@hL@q}F+QoBs^zOC7~`v-qfwDbw@#a8d0zFzzN_(P@K)#~=AnqwSx-3azx z{>>!uZ+4|#zQxwZC4!S~s!x>cne@r4PO!WD*!&Ki7Q33$GMS6TCX}7@v6}FF#Z9^U zhHu}h7%h%IBJ=hAWR^~qiC;W~Jo{B9s(k9Oy=1aiWs=J!Wlxo26^P798BZlo65oG&#glf4y}b{}Q~d7McF jyw`>{A5C(* zTv6D%4^bF`OxfmyIh`;>MHKwlA8R`h3LDJgv}pgB8^{#Ii7;gf`lh|B{!#Xaf#iLk z_kDiP^LxJX;z0k74eL_tFbvy}>(dHoy+3(dn$h>ngQs6Z%f_f@C>r$2QPl__)@6Am zi02$*1QwuS)h6a(7Q@zrc5x^g((|(EIh2v;P_g49G=^oj$G%~X!3ZzG5!+RWU(TK* zaNAOdU4qW&z6wX}zR3U%PWBhg$uU#1i0#|(Y%C)K4vY*ucE;UMjum3bu8j7{F-_o0 zD$$riER!122XNI3ATCe>X)=JvGZF;^z>A<0XBoiJ3`YZw1gy+RG7#|kLm+Q~RhA1{ zZ`~J?6k;@re3_=J)hboxC@&bHfh0*Z!_q8EA`LRExsef*Zn&voL4%kzI-L<1txE-dXX27dOohIc!zG7wwuVClNv3DtiizE1Fhb`bMU1k%l0Y+ zgft40<9HGnEF^gYSfs>p8B!`i%gU6wG7Ckbj<^1A@@PbgPCDg3ozpl%?U-y=<^TyR zlLTEfJ^`AOed@t^G-J1NT30dt_U+3b-aWoyyPLka^Z*6g^H*=NYj+OpKL6C6 z`NhvJpL%Z4otK**=^Ojw$k(7{=JOA>EPm3iy?1i_6w|u4hv}H^Xx+)Q+;@D-%+2cT m_eU-@{Wib%;iD(6K0b{pPan$XU)p9TznWZ6zxICj@YFvx1EYfg diff --git a/TMessagesProj/src/main/res/drawable-hdpi/ic_msg_btn_cross_custom.png b/TMessagesProj/src/main/res/drawable-hdpi/ic_msg_btn_cross_custom.png deleted file mode 100644 index 865ffa1abad05970f0ec5f2dd3057166ae446e12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 291 zcmV+;0o?wHP)002ovPDHLkV1gQqbG-ln diff --git a/TMessagesProj/src/main/res/drawable-hdpi/ic_profile_send_message.png b/TMessagesProj/src/main/res/drawable-hdpi/ic_profile_send_message.png deleted file mode 100755 index 3ad169b6217d5cc0345bfbdbea81f12a9ac6c5d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTCmUKs7M+S!VC(K#9UIO`&C9V-A z!TD(=<%vb942~)JNvR5+xryniL8*x;m4zo$ZGei7d%8G=RNQ(q(~;}2f`F^BYWJF| zz4s0{S2jJVYfUmwyOiqLqhQ3hhhHeb<6rToz`&w&lhbY0o-+aUf`N|dbhhN4)pl{p zl6;CDrUw$9^~XNH{aXKv@%qjGzi<>}-eY#SSmVo<=e)!*-}L9jZF9cVZ(Ta+XQ0-E zb-&)9k)L#FVo>_^H+z1@XNDzB*Dh=qNY}a$#dtbFI0~AW$h)}YcIt#rHQ5# zafyf#5n10Kzst|Dv)#LU?(N6dcFsM=?{m)io!>bpR;g5GEXyiFC8%aaY;oudnu9K& zD`-AyfM=-96UZ5K8y1KQ(CE`H%OLmAQj{~G z+B9^^Aj>8J-k^6M{Rrd)dI$;<7ys)6^q*poM`$G|KqJ6FGSHy_85#uO+Q5>!AWvRF zB*2});GPs9tI)6)fDg`!mSK=RUYf2Taiv@eDdD*wFHl~B#BdsR>o5V0i)=`igi<2< z6VM2+yI*slE$G1R(ZKP!J7|<+9C%r-D{@`80d7-PwKaR2MxWMvODJ`tnzk99A)U3L zT@_#*TI&_H2CT``U#5ZzkPp#0E#)Rum6Z}8B?8Z+QGzSzu6wp}_M5azXoG*XW-DjD z39IplJ*9RDkPGOz%4_WFP%|+DWsd6RAf0UyfJq|hC*!~APV#lv0 z0><{Z1HLJ5vt!5PR_O=eIxg^WZQOJK^jzEL5r^Vf0;I)>MNhOHz88E(@ieo=)2zzQ l+fhDFW1UXN`cL~4U;u)3W1kuYTigHu002ovPDHLkV1m0N2!#Lu diff --git a/TMessagesProj/src/main/res/drawable-hdpi/ic_storage.png b/TMessagesProj/src/main/res/drawable-hdpi/ic_storage.png old mode 100644 new mode 100755 index 696acc689eb1f16195a03072630cd81f710b59b9..fb446d7689a213d76b053a9c5f4daa1c914b10a2 GIT binary patch literal 198 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k0wldT1B8K;Lb6AYF9SoB8UsT^3j@P1pisjL z28L1t28LG&3=CE?7#PG0=Ijcz0ZK3>dAqwX{BQ3+vmeOgEbxddW?H@w58Pkq`Y=4&@;qhsfI+$Ynl+AF`Q>!Q`7t{5DiW}U8pJX)2 o_)b{NS!CkacYwu`hnI;VnL}^p63v^pfF?0`y85}Sb4q9e00~hv3;+NC literal 325 zcmeAS@N?(olHy`uVBq!ia0vp^AZ*XU1|*B!=F0;q$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1G&pllnLn>~)xpR>BkO7ZdVv~fjupx)DA;;$@2jmo`6$HDF zy#21XH}vG>w_EC$PP_M;^>d7-!XytRN0o^#LYzvSDnc$oJC(Pem_0S<-Q%FiZ~oq` zu74Xf(KJvnbZxHNtcmu9X%{}9_NiUr@n^kKe@LO0(aICkGTtxD)?ICXyzkq5+Y4K^ zU1OW*GVi5jk?Swx!U)g$vY6G^)IPbqzjaCeP3Xi+@;c%-h2Gkhti2=;G!bZLv8}sT z{i6y08csakpY2`0A>7rgenU)(_m=M$wuQo+=X+jHdK6Ff+V+XtHX{ T0pocHZ0h%28s{}0R;ptfnG@)(xfrxNdJiG@%Wa; zi3dhH3Z#kc&;OZonQ`182%P_ExcddZbMO8@0Ukemkm>V&-Zzx&2w4?2igON=J<>kI zqc5(O2Qb5&Bbz2WNj4BC)-&|)c6tTh3*ZT|t7MZoPKy$N z_YK}PFa@g$y<8!iP59_4*&5jf*%n!gY)AWhkkT7mTyJMT;C`2|Q}l9!tb!A}+AEJA zWFKMml!pxr@Sb7bmtbvx=a-g{f-aHGM_kMsvd?5+d+5$C&gB|Bfq~muQd4SRg5{H5 zBRg+6d5!EX+54R4v8S25$qd~}3!MrWus6w08BX||>_wmI4CT(Q0eUA5bRsa^_&Rc{ z?oJ$p7RWyIxw!HWdpz-eD(Eyp>jK$XEwC{3GTE~X0jZaxgGgW2pjGNB<8R$5OzLtm zaZ9){!#)+MWgvY3087HXo22q?W?+Kl67eodMRl-EvM0!=g=l_oebT)f1RX@php2H$ ztAo{-7YYQcuB&ZGW5bygCUuX~%WZKWj>NAD+UAxGO-jS$+EEH$6s23Oz_8pCw-C%+ z(X}PJG^xwYz)?}|y|Z93qb1zBL@a(9g=Y=0i$$j;mD}2UcC{!T4NP~0=fRZt%vZ;r z(H3r9CMGvd;c2|5)LkK4vV|5Z?`jH%RQ3$37J8fZ#j$U+4aG?q7}6gXInGAlmRKV4 z^_5j!;X|mcmBQ-Bl$bw{|hr6hieuIQsf?co7Y zU2Xr1z@B(hkI*fPfdfNB5mMNX=|XHAt|=Qy$bV@o(M@U|WGhv&9M(0txGxfR5aHss zsvA<-7g1RU9;6YBb{(0KUQBmBLlgBNyGBdB1vC zq@+e9FqS)OqD`EzOkKV3Xre!kRG7!2s8CMZFqcW)g9x;Gu&T$EmP%y~T&qImX$#aH z73%UPc{33h8H zt3&f0d`M_dRmCj5joGah~jijF&f zA6}KmZ^NUuv;G92>)$*OG)KxAL`!*5`v2?bSQ^OdyIM*sA#j$F--k8GsAH~U>g=Kv z?hmji>&`$CC+1?K-b?%WZGdiz+COupvfr_RLPVttRr#0}_M`5u>x8#QRMoVJx!RMx zu3oM^Z^C?}uPSbWmjEqc8FC9Za>EI45EKU3(E`dcjA0I7URDs0)CRTMzv^Ia|JE$G rEuXx17XqkNm?sI`|Lv!Ee*_o+hrQNDYh0Lg00000NkvXXu0mjf8qS7< diff --git a/TMessagesProj/src/main/res/drawable-hdpi/p2r_progress_custom.png b/TMessagesProj/src/main/res/drawable-hdpi/p2r_progress_custom.png deleted file mode 100644 index d99e53cf3e23a86bfb53c940155307bdb8eb1f81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2991 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 B<*)z% diff --git a/TMessagesProj/src/main/res/drawable-hdpi/search_dark.9.png b/TMessagesProj/src/main/res/drawable-hdpi/search_dark.9.png new file mode 100644 index 0000000000000000000000000000000000000000..a178a67f0b618de294e8406e3f4850a69d4771e9 GIT binary patch literal 103 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VdY&$hAr-fh6B-)+R~W=F+I^_s zpp~?v`un^8v(5AW?XUf9Ce!>wp^zKF!(9o3o5wDz%m?aZ@O1TaS?83{1OTmh BA-4bk literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/search_dark_activated.9.png b/TMessagesProj/src/main/res/drawable-hdpi/search_dark_activated.9.png new file mode 100644 index 0000000000000000000000000000000000000000..d5d4c78b0c5f0e32feb1722421eaeaa1031b8cd5 GIT binary patch literal 960 zcmaJ=zi-n(73NOe`Ek%*YM*w@5r?KAcjJDmy( zbYx`WAE;nOVn9d?FtCEegxC;6M-U5~(>P^luynrrPVc?%=N)Zr-d zgfonk`XOfv!pdqIVrQ2y&?9{>FvOGBZ$#j^hImJ{Wji#A_q>FWHPT|*I!AZ*tVPlM{(Tfn3d0ji`H9T}BDRg;j4$~ANY zlw_npS%F9?qLMCaI#R*-6S=p@-O=0D`q&q@3~|6%s6&_}iIgZ3jrtI2ng-<(ER~8J zQH+NH!)Y;y3%PPgC&2iEI#$%ft%?QyfAh$yrJ{(6;{% z_5BGtW^Hm7@43QpXBZOLCNbTQ9NxH{Lgp&e&4^$|qYkBec@?(?l+k!VLtvU<*~X3+ zWcKwD!M62Q5HlP&q-7Z*mykTq)f*M9TB*p@irQF1s8L?4n6hbUWmJ=EHO;E$T#GvU zJ_%UPb9JI%av=`}W}W?~)ASMr<$s@6A}qWkz|O|!v2M`aEmRsXst^-q)*3gg1KFv^e||K?f~1^^$(w&;%$z*d?#?av}-*^9tj0E z#|T*%Gd9OYXRLfpPk^qE)q^J-|8$hl| zvRGj+EK3SfA(A)2?BSWW#P1{9tj~P0lgz8s@F)|YDQj$1??9Z#%9ui8@A&G&}f#9CydO?&M z?oSz(g_==H-N?gDQ|Fn65ClHj+>*?CO*UXvsY_B#(bRf%3n~(XhFnpgI_H|iI|y+^ z=Uo4SYcA#H!w|;Ivx$@7Iri%b3BfdJ6fBQrcd6ct>o1RGZz)$~!H9Wl|7!Kz#O5d8 zE(Vt!7Nd_NHtz`=Y-opWlWPt)nM?-$o8s5T%iA$5mA=2YyYk@m r7Xq#-zki&n$0sK@O7@518Fy)g`?YcX?fbT)1|%O$WD@{V2A(dCAr-fh6B-)+R~W=F+I^^3 z5Q$v(OQXg2TFKAo$Q_EO`R@Ph=RRC2u(TtRkRT_y5487Xd#H98a`$C*f zhz&Lt)QKI0kSYO7kvdR@0vj7El@MY;urk0oO;Uyi%l6%UdhdO|_h5PHdTRXQILC1* zb5XCd^*sAdkDX%wu@7E>EmO2orz>Qgc2J19l0()oFg?`3Rg9eOoqb&7xD%J$TAkLd z8>&q_0VNnA_5#M{xZ->qAiISrSi=q1*Z3bhyF73mjlY?(%b-j`4Dv!YZD%A2KqyGL zJcQCLkTa4jX4nhUQclf7Rh|R=hiBeGXI-u8M&B1ZX?&B?Ko!MKrz3Q-0tp+Uq$ouSmx&cjj8Py;LMBOR z0JNNbq*{+`$uJjm|rJ8<3k#A#D*LbEOxUQobrAirQ4FzU%h9p&TO5Vs8U`~RtEN5~s zKj7-bZhP3L1Fmz#Esf+R!{7zXvyMaeE_RHNc%YZG>K+rzTtU)}N>(1J*XKH;V=0W} ziYyp0Y3)C)9+=qtB-`QOvcqunvCrl`WP|;4=U{ra@ocD)4hB}-f* zN`mv#O3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrIztFfw|&IEGZ*dUMO0?~nnHYoPU( z5=Ncozxv≤qt-g;-pujCmPl)R|C}HM4KtF^Q)+SD*5S#`ez_E8eyu!|%5At_Myp z&)tb$e1EBUasU1o*{>8!<3FsuC~3W1F4+I~7G10R?OPu6=UdOY_B~B)uitgQUFE;- zzka)m?X$Ci^}CO)f;u65_oUvL9r@KXXM;mC8?Tf}#)Sor_!+mDcbzJ-T5~F0eQ&yz z?X`KPe`lBcD=O=n*S+5B>$}7&fuZj=9aYi4WT)_ZQoci(rPFiulP7PcTiUu#RJYDN o>-lwa+rFbeZ!cce&%n$ut<7tK&5x_Ufg#4=>FVdQ&MBb@09~4!B>(^b diff --git a/TMessagesProj/src/main/res/drawable-hdpi/top_pane.9.png b/TMessagesProj/src/main/res/drawable-hdpi/top_pane.9.png deleted file mode 100644 index 5e4df28559a07ed9451286c338b08f9ee7302b1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 140 zcmeAS@N?(olHy`uVBq!ia0vp^f$fhJ`Ue-Ji`nu@Cd$+|7a!QR33IZG~Oi=3M{G5sFFUG3$W-%3S7Jlt@ S=W++oI0jEwKbLh*2~7ZUhbNo> diff --git a/TMessagesProj/src/main/res/drawable-mdpi/call.png b/TMessagesProj/src/main/res/drawable-mdpi/call.png deleted file mode 100755 index d4ce6a78866dfb69137eba48ad2f1d83822b1e86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 501 zcmV)v z5C%HpJI$j2Xt@@Uszwv$1Y#R{r2$tUX2v4!L@x)(;Sjf{mji@wh?@bUhld^xz-Ngl zJsj{3i`Xw9&I0Cw`}8OWuA%Xt0TmG!P$JR38KK6Q~vfNIsl~ zB`1J#%Uo#9iC%flf`-O-syG1Zh?$^3AwkPoAa({i;v-d>WI%(`v1Cttz!-=XsoEw4 zI-(Lt`2+DsB9!03Qmj+nC1)B)56009O7!x(-P&w14400000NkvXXu0mjf+tyEMBL?3i6)RZvWm(>2?Y6O%LB4PW$O zOi@AElT1*&&Iggf7&u`QeDOhiN!M;ZSVNL?;rqV-KmY%oYkj@l z)fM#>6h&2sdZY*$>zuD_7x{lni5p}%h&yArA0==~wjkB6qBsO0T^@uHD63-^-@z7& zDx$S$49CK!1O@4C*}=Hex=Gj+)zX?aWn~y*5Ql@BA=1AV7HOcVB0a!`Jz+BllUmQX z1^dT)qssWO5>V;Zlb|In5CI)x8Km_Q!xqvaozWG@+}UPmkb&S~k={xw7VZNHSTExtFYjXg0>=y9CXjt-63tQ*LPYAy#v&_`PGW2d43kQw z+$o*6neQlmmvt|A*@OHrmD!xRdWch3)8=37H7A(Ws@6#w8k^P^J*Hpp20f zMQ9{f#l9rM$W9^?1p9e#Y(O(ql(LU!@Zqo!GHfgx3JggiO%&XkrV4zs)aCO9{k#;ZPvY_S9 z#hX_z%T@E|;>*irNHUDm*uNT`+am69rrWk9i*4gWgSg!ywti4vyFjkQ^N`dYO@EF5 z-rQ_0auw_=y7}f=$@<)q{ZTx3_YCE4sqeX0`l&iPPYrE!fW(tmdzP!v>Y=BSc(}$p zO;=8`(<7CWTtjhe*+1LH8HGbvVd;iMq zsk+^TH&(6>ClfQJ-xu2&N+aF3)|y>Q@$#a;#E&`ZeeEu*>S(gy&XKC0b-hz14-b4; bo~OVPwLTl4{j#c@cW!d1vsZf2apCG8yx&-3 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/greydivider.9.png b/TMessagesProj/src/main/res/drawable-mdpi/greydivider.9.png new file mode 100644 index 0000000000000000000000000000000000000000..48a2125970f04315a2c0bd6ca3233e23d2700156 GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xaCr=m0kcwN$2?u!pIUD8`{Qma# z|B{3qjpygt{`Ti;%dYwS>}-9ILCoWJe))fsn>4TenEy^n(yhsDlQ2V2lbV<@14I1; WtM8337pwxB#^CAd=d#Wzp$Py#Oe^UC literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/greydivider.png b/TMessagesProj/src/main/res/drawable-mdpi/greydivider.png deleted file mode 100755 index 342fb818c36a3b4392df5036633f6ddb849e8ed4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 954 zcmaJ=O^ee|6pa=?7-o<%3(<-^GcFWuzS?G*&^VJesS_}zw1w$%(&V)bo#e&j)ua_S z?)(S-3URNXxD%NlpliXU3l}18eCaeD7uJyEeQ?gX_uYHmi+1bb*2eV>ilVlR1Fb{G z&Gfr`p8P*w{q&j)*RbBlT{Oh86+%jN&;SC%vqrE3Eob)lBdk$Wj&^%}+&3S|Hu4xN z#W0B%5H>~C_L9J|ClG@H9J#(ie}D6i2Ck#fhZU1Eg9aSC2lEhi=dGSSpV*Q^?>zvu zL?!|r#1=@rV?UA;gYHuQKp_Mbrc|^!o(H1H@a2jq^7nzj z@dC?{S1j^nxgyHKE?7P^i55CTxuZ3gvB*lH#~24P%f@lc#3crWBbJvWDb)~!B0&_R znUAfc=tn!5f(9cybOY=nAEb)b08Oz%lT1&K-~}sLKU$WF6pT%*faMu3JyHfV&HqC^ zZ-tI<2cG5oPvNLH3n1Hp5t@cJY20up4Hd|Z5Ly_8J%o<4Dz?W6qiBo*(CCWb&Y|l& zD30zf@TMsneuORGhK8olM1gT#N9Gz@ov%u&xGR=G4{pk50PRb*J diff --git a/TMessagesProj/src/main/res/drawable-mdpi/greydivider_bottom.9.png b/TMessagesProj/src/main/res/drawable-mdpi/greydivider_bottom.9.png new file mode 100644 index 0000000000000000000000000000000000000000..d8fc75bc81c1f3fd3967511d0aa41908dcde4733 GIT binary patch literal 113 zcmeAS@N?(olHy`uVBq!ia0vp^d_c^>!3HEx3Z6Ryq%1sL978H@B_}jA{8vfh*irlY zTYZp0%;(MN=l@M^dMI^&Pvz(NB0SfBJUra~e@ViOWB*I8dxVuRFwEi6wK))I*$y;= N!PC{xWt~$(695d>Dlh;5 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/ic_ab_back_grey.png b/TMessagesProj/src/main/res/drawable-mdpi/ic_ab_back_grey.png new file mode 100755 index 0000000000000000000000000000000000000000..44e1c11bb605b5d7f7cb1df5d05b8861e8154275 GIT binary patch literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1g=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G&@^*J&_}|`tWO=~G=WkL6 z;pyTSVsScIBUORdh)0%}*TJKyt?knPrTe|Nc3fo$lyh3cEAVvTkzb7sMI}I1;*mBX zkDu~?PE9mznDV%JN_K;#=A0=r)SS4tB^+JNT7Bf<#U|~{2UnV`KmJv;`{=mk3hz&y cE@37Hr9YkvzJ5>b1KP>p>FVdQ&MBb@01{?THvj+t literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/ic_ab_done.png b/TMessagesProj/src/main/res/drawable-mdpi/ic_ab_done.png deleted file mode 100644 index f1966a340179dfae582a8554d07c1e175c84074b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1238 zcmbVMO>EOv9CvAn7%N>S!6p!u-pmdl#j&4br?J;8Uv3~kx++900>=7czqD@akJ>It zt4(5Pg?8gGP1Q6BX+r902r-tegTbMynn`?2VoW>jzSEFUZ|P;*bDMNKR2*i>e((R@ z@Av=ydwyu}=$_pNc2g9!CwELKko6#W_wEXi?^oyFTPMqYZ=mFzvMOE`IhaamRvCkw zfktovBW-%}A?~NBPFF9Myi)$8tXf7G`IvCcunC)@`V%!9spHrKWjvyrar*iFWg6&O zoPJl#b9p<1NA+Vf4n8$ASX5`mRY{{0Z-f4tOcWT{L!f3%n66xl(;IqaviFZ!8f-wk z@i@KdR4G3MGM0mZ7#10og97N2!cc@l42A&D!3fJmSQud-FLRO%MbLU^V$IPiazV+q zY!N9=k9wXhvuw3m4Ob&!%Nb#zBuOmCvpmlb1mjMd9;z{>d#J5J!LI7)wx?Sr@HL{c zHRZ)=;^}4xhMmuEDK_0!qDacv8nRg!=2*k<#>%-!+E6YrY|4yYqS}%f*t(=*0PRefQ=-}`gRTo z6#BIAl)lG{3w}W^6sDq>8oQ%i4p)O7f*2IBr*AI4e zDQ7P~%k+T3o#oSK&IEQ`zxt%-(PzntK;uC2Tt{PBNBe)ivV5^AEm*HKdX?rv=<)Dt zmxS-Bwd|WG-dZai{{cUkoHM`f?KyFz-W@+1tnXdr!TF6*H`mD`G1<+z@Ty~J$&gOzP_3< diff --git a/TMessagesProj/src/main/res/drawable-mdpi/ic_ab_done_gray.png b/TMessagesProj/src/main/res/drawable-mdpi/ic_ab_done_gray.png deleted file mode 100755 index 47beed22b8d7b454a487837bef433270e1622c59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1078 zcmaJ=OH9;I6fF!815Q*-_{pLv8;Q)coljvJD#J_%nZyz@Ok|83O8W*HXkTd`P8l~K zhJcA0bwSh(3lh%@C+>kDpPbrV3PlSYjkI4u-Yv zyaoF5J!vIBqC`}x<2c#w@K`_xNG2V9)UbI+ptf{*Ja@Ngirj*r5rNuHDkJrhacBWD z><{`BhGj{P^RuBa$FVJBfMEkPgI~_ahWIeY2U^LUhr-b;HOr^OuANwTB~Zf%nLJJB zayfr4=!e!2%|;>-S0fPcVT8|~Fp%u{47;hIAOc&lG!tpiAYDay5RM~(!kKO#K{t10 z4ST0dxL~v+n>6cZ+#?l$lJtM5uJ594lmdJC{!`daPndvC0UM563T|As$qi-laSO-@ zT4@MJ3svkLh6vij&?Mu19C@@~GgO$fo44?i#3v0K$%X=wqCjBjo@;ns*43vj^#SA@#A4h&S_s(ai-QLbwR-NcbaU}y=yM=B2W$o8@d?oHC#m=GJN>A~3>cfNW;D@V@d^GmCq z*i4^V!p>aROYYB16ID06YL;F|QR!H7xbfD3(y6w}+4)lM#f5j~{;J7_Q`4cCH&Ys7 zu2rveP98cl=6%!hGrCbb`#HMyifz1Io@tTEm*$h2h11K?%b&`8(FYf%8dv5X3_M(} dU#}s`>WH`f16QlpYt!ycP9}Q9d$ED@e*oqvS@Zw^ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/ic_directory.png b/TMessagesProj/src/main/res/drawable-mdpi/ic_directory.png old mode 100644 new mode 100755 index d3359460dea73b1439c5aaca9f7ac105da190f72..1028bfaf31b100839e727fce960ae5f01f111529 GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1g=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G&@^*J&_}|`tWO=~G=WkM1 z?&;zfVsScIBUORdh$oDbP0l+XkKXBs_L literal 501 zcmVK@i8?6b~W@LR5!3 zsGXJWo%>Jv_af*I=+r492_(?ei0CI3@`}pz`5oFIBE;R89o%N%%kE*{+xOX>ncaCN zP18)QwvdU~6i(q3PT>^p-^1lx1{-5G&@^UvZUpt9eP}#wAm=5*b>|v0E=U%tLG^iZ z%beqQ+UZiPF-JSNDFtU-d>%2kE%1#u_{QB>v*l8dZ25}~pabX%8v49|Gh6-zj$rnn zB#LwHhn-^86U5;n`dd)JE9i~!d5q4{9nAm06?5%xXI~-krcf4s<4P!xShahsdLI2X z0gp>C|1%d{$F>!_ilOb0^C&p8ZA~aw^ts@!;SvM5WD)%p0kB)l|IP*X<&srOb^>rm zTsIUdU%IxxF65GzTyPg~iC4H}8U3;VSP%1$xZpa%iKNMSaXvSnR|*L@3W+;5IJm?I znq{ac0M|+#Z`nTCQYw+OSnD}>WY*qFLK~fHPu#`oDwG$1JNBvjT;X19xe?N+tT|!- rhca)bzta^?;S^5c6fS1Ci2wrtj}U6`)sg-u00000NkvXXu0mjfJ2v8P diff --git a/TMessagesProj/src/main/res/drawable-mdpi/ic_external_storage.png b/TMessagesProj/src/main/res/drawable-mdpi/ic_external_storage.png old mode 100644 new mode 100755 index d6614588881ec63ce2cb7b4fb7a528716818062b..630eacbb4e6e3220924f4fcf0a4aff520f2ed3f1 GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k0wldT1B8K;Lb6AYF9SoB8UsT^3j@P1pisjL z28L1t28LG&3=CE?7#PG0=Ijcz0ZK3>dAqwX{BQ3+vmeOgEbxddW?Tg)5S5w`6pHRCwC#nGFhqFbsv;%|q-IZtF&m z&{F7-p`F*mB4P_ni(00000 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/ic_msg_btn_cross.png b/TMessagesProj/src/main/res/drawable-mdpi/ic_msg_btn_cross.png deleted file mode 100644 index 00c973bcc5b4947d4e99c3602437343d2f7b94ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1171 zcmbVMTWAzl7@iu`5H?2bh1w!cM}iePJ9B1sb}nQRc6X9yARFVlVDLe5cIIq$*quve zPTWnrUl6<$ilqn|C7`HSPy`X76mK91(pE(jp-M(K+9--@H~WnOS(n9c>k{%^)6YI2%PQPEj5qmZT!$f|GPYkrwCTc8 zR6x+47`unMD5@oLioD4*O;KGvjR0Czgy|9*bv&JU_2UhOc5I#5 zEamxpkV6%xe=E>R?9TmuFiNb;QP#&OM{BV0glX)K72iW33i3Mlf&LyOd-ytb)K za`%2mF_5s)HiQl-3alBvHSQu0n}*Jio22d7nxX>P0t#Ri1k!BE5=tzz6^Z4cT`r|l z0xt{crk#cKrCwRgX0mDC$m9U%6;)M8D@x8tOXMJ%?rZ9rUWB1%p{8$#_)aMVk(QPB z>T0)^hV5s6_KdSfvoy*Z*=Aq?yvAjO6(QL>D3Y~4p?hAdFo=LLiEI>e! zV2TI4#6m^p*%Xf?wj|jSE6S=QNTLiyMPcUj?f;uRj*#NwPI;$unn$D^JXkw`cKF>XVWEc3U_6Rxn@h z%^ci%wDX5!JGrr6%#**3bu#h9S?S1#|WE&BMc)6*aBxV7!~McF@FR(^W>?)2jR5xAVG4geBl U&nC{LK8k-6X78YJDLb<74X^=$y#N3J diff --git a/TMessagesProj/src/main/res/drawable-mdpi/ic_msg_btn_cross_custom.png b/TMessagesProj/src/main/res/drawable-mdpi/ic_msg_btn_cross_custom.png deleted file mode 100644 index d641066586fe0ba53269cf0dbd02238e268a1893..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 275 zcmV+u0qp*XP)N(VS z7>Vp0{@!`Kg<-F=#D=vqk>m@ceFQts&4g#Pb@Sen)NJIlTfdH=HP4?h?0te95 zQzq~N52rH6vh3l#K_@)%M#S;<)K+YYn5cT--p;ZOVbr<7l74oUsj$b=izm*_&&n=@oA#d}>2+fl(}bsH4)^D)9%YQr z$h16X(!f&DFiXO7EANc93)vQHrZqDtZ@VSX%_zcHGf!g9%?T0L7q{NXS4dmBi`k=t zFRaKZVT*=b>462M2XwS_cCqf@3T8K1gGaIq0tpOqYqe_k>v*OD-N@kS>gTe~ HDWM4f`6^yZ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/ic_send_disabled.png b/TMessagesProj/src/main/res/drawable-mdpi/ic_send_disabled.png deleted file mode 100755 index c183f5f92bafe70105965b3c482929d77d223b95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 381 zcmV-@0fPRCP)@Br#?nPKFvjABfe-F%$&OVvz$Go&dyGNi`g1=qWsEV20lS;zh(5j?bmoKrGbo zr9iApiA%A8C?LKBGJM^-br^;-0@Eps{T7IY$c*syKwJ+@vzO5gT?oW+6edxS;dx99 zGyp6}Y#$0;2=_kBPzf@_a~TkKzzjoosTnzj0r6#Q1q#eiV2Mk zSO+1)h;b>&h9MiO0>q+dhAn`4^FFyr$^gp#1vRXLT*HtJ1tq0fO=~G=WkLM z>FMGaVsScICsl#hfG>>qe`jd#n#PG7y;Cw3PI@k0Xd>n1tUe`UB_qR&IkJM&M5o39 PH8FU)`njxgN@xNAg+DC; literal 253 zcmeAS@N?(olHy`uVBq!ia0vp^=0L2)!3HG7Cm&`8Qj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>JispN|IEGZ*dNbXTt3g4)b#8|3^VckLtAtDTykatwR$SyN z*^`uS<|OdrPwhNUFU>Dj&Mzt&nE5OoH2k)`6Y*(MhtIYZkL}8L=jgAmM+B|qZpEAydRe%f!+3@O&;sJ(=B_{nG%i0$Koyy?p>gTe~DWM4ff8k=~ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/p2r_progress.png b/TMessagesProj/src/main/res/drawable-mdpi/p2r_progress.png deleted file mode 100644 index 3dbd2b05851c8953767cec754c310254d3973853..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 898 zcmV-|1AY97P)chIpiBWLMe}f_3-(*IA=(k`r-W4` zm_^Y?(RKvC&J zwPMf-(1&Y1!2J-t%(0N{QzYw}1FoxGz!_8qeW;l;oE=Rk(yK{;`u!^44B&nhP>Ul6 zvdxMNcvdt5I87fb1vU&V$BJPb;51q9eF=?Cn-${#Ckb$+1i+RP(QSaEpjNm)C}liygbb`v-hQRHmJr^${7uEqeh5h(WwAClrpy&)fjdQ=#)y=|^lX?{J7S7GRj^j95 zuv>M{uO;2jgdLj4MWmjK6lHVx{Z%LCl#np0*vqG|UPS5SC-z-m*KaE@|134OgMgey z)HMKVgUiRp?sMgRZ+ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/p2r_progress_custom.png b/TMessagesProj/src/main/res/drawable-mdpi/p2r_progress_custom.png deleted file mode 100644 index b226340da76985d3969f825ed262ca37f51135de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1897 zcmV-v2bTDWP) zRtB|Y(Q4*n#(VGn{&&wAMptcoO$UD7bI(2Zo}d5M`Tx%_X&g;eRfbC#U8kyOPq)*!LG}KBo_~2>AQCA zG9EZ^!1Dh6d;OqynO?6a=rHfELEj!Q@5qrO(#n-9sjrYkzolXpgw(RHUcG8xy?V8+ zwYAkxEFvPpn3a_knUm_f0u*Aw65P%Q766|3`1plYRaMI%i6tOhi8(WY>A+MVBhZ03bZ5?- z(Ze1M1a4LYq)BRIlaC%fvchp}e7m&n+qcgesA~U2l3sLlG)eDwTo;@>cdiQK>Cz-OB6Ioj zWg9d{5g`mVABHjOV1kaOrlwiwmJ<+O$SI1)>aC+q7AUN(Sg|6KCmyzwCr?_1EeZnB zM~@z*T|%RxpJ9?hOP&L+d8B&XA<@u9umpC@pGEC4Z5Z&^V>!NQj>UzU)V zL&1zokiC2N&IXcX@8O6Z;X=*C*mD2=efIV1S7NPZW@buo{SHX4M+#k2T`rf5wTTb= z`0*oq`t&LFbs9l1 zlBE9Ct5>Gy&!213L%k!p-EOU3(NSdu^+37T)-yh-u6 zp9q$elt`kO63+0?^5x6vq14mUBVW37iRy)zP$UanrIssKuIReDy0m+g03PI zoEIA#TZG$UY}#`!T)04mQDO-8VjBb!k2PJmb%KMVySqC|B&|A8>6^{wc4W7-gQ)H8 z?cT$O4~IQ`_%LBIvgyDA4Qh=*ePYI%BsGS5NJV|!_rF+7i6f*qJtZZj5Vu7}qp=8+ zDQW$2GBO*UHOHVf&ZMwMNKQ_Ug^6jVHC)jYgQ6)P-I;(J;-0;G_wI6DYFZ~!aLmYr#hjg5ljOnhMW-o1NE`N@H80?1Jf>^ykzU{-p1dMbtz zh~SnjTjDSt8BASFqMwRFhDegS3s5J_TC-+NIr7FCRGN;(ySdR%!8cOYuV0^ooHLD1 z%Lq%CE_LBqbf9X#b@XBK`Fuar*4E|`LEvZLCy&Q7_u|EiRKRBgu{1A8b=oN+;N2{g z6FC@8=18imt8>BjorCM)5eWvUB5U*J&ACL5V+IV_y=c**l4Hk?xnIA2O%9X-kOUk+ z6h}0_ceS>*rkyx(BB#E-emdSIhe+W_-nw;b0-vWJ?(pba$8S_fCBS&Y)~;P^e)jAc z6G;W~MwXYCXT_pYMn;B$IHs6P^gpQzq)(xWPF+>}6Ee22KHT?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(gnVDkcWNd0^U}|h;W(o{tLst_gBXd_rR|9h+15-Ck z6IVBwUYGpj(%jU%5}4i;gkE!;dO=Acw*Y9fOKMSOS!#+~QGTuh*vnR#xZPrc(>$o& z6x?nx#i>^x=oo!a#3DsBObD2IKumbD1#;jCKQ#}S+KYh6`eNy9U|wT%_H=O!skoK& z>;HdyW?e&J=3d6Lx(SZYZk*d!Cgd?wk@GLxqX~ysM$KOFlv&usPFu{dOXo+6Yp;Z< zZUvCiGu7Pzq%=)+Em~a9hGs==knH%c_)(u}BllGu2DRhj4q5C|s<}JnHYVk-oO`iq z!4?hQBBKjOe>Yz7QxIc$)VW1VYg6M7Z2@=Y;&QF4x(vS_=}kD*QnZ{=m-EOnK8g_Kvp;RM*)EGzVSr mToin9!ive6d5jJXj0_A~^PbHP)O`giVmw{_T-G@yGywphjG3eW diff --git a/TMessagesProj/src/main/res/drawable-mdpi/search_dark.9.png b/TMessagesProj/src/main/res/drawable-mdpi/search_dark.9.png new file mode 100644 index 0000000000000000000000000000000000000000..e7ae604062d2c14313ff07a93c4ed653fee37e95 GIT binary patch literal 91 zcmeAS@N?(olHy`uVBq!ia0vp^>>$j+1|*LJgYPgg&ebxsLQ048J{asU7T literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/search_dark_activated.9.png b/TMessagesProj/src/main/res/drawable-mdpi/search_dark_activated.9.png new file mode 100644 index 0000000000000000000000000000000000000000..cf31f1c66f4f15058b13bd5c9d3c53b593a0857d GIT binary patch literal 958 zcmaJ=F>KR76md)T!V zhhMz|im}QBJWMSRdpmxl#u`7-RoOl{hCG-+XjkKpOf}67ppy^-S&-AVh_WEB2uMcR z0=f+(5oMs5fhdzkk}4`HlELxAvuvTWt=5gT<6JD#_ztCk3SqzB7y222gl&ivMS-FO zB`M7i>1g0nD^B}SYN}x1$PV3ry2J;GqSYcjs`1R}(G|R4ChJGXWnu+`u@yihh{=_v zK-2s`)bnQOh}Q9m-?_q3V-R3i#}Vm;Hf!8=DoGWndWbDb!UiEb(<*Ls2qjU61VGop zP1CYnKZ$Qm2&So4{fJt=jjM*nGYP?U9kr5E^0}Ot$;p*6LX~Ver;ECwWKlsZ6cnR0 z89dDy2@u5-f8p2j*Gr|mC^9`|zLz7ebG8@h zOfQg`fk|gib$WWl#wXd%=9UGs$;Un$_mIu?t3Q8}e*#sFQX~G>az>-W%X_2eS8gnv zAMZ)y!b&N$-zf%VUc_N{nC#Q`|sq0U9HrN_vMGX{{X); BD%Su2 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/search_light.9.png b/TMessagesProj/src/main/res/drawable-mdpi/search_light.9.png index 9aac78f8041d89207d7862d43e6a29621d729eb7..ee38ad349bcf0622a682cac94218d7caaa2b8b47 100644 GIT binary patch literal 87 zcmeAS@N?(olHy`uVBq!ia0vp^>>$j+1|*LJgF`ztZ(ilQ7Ll88164A3y85}Sb4q9e09|Sqg#Z8m literal 960 zcmaJ=J#W)M7&bz!Afh0;6{+atGJr(9- z^0CGQd_-*!`#V9T#X3LH)!05Ui#(V>XkX`#gKAkdP{ITORmh|rNtOYGf}B+$l&=Ft zk`+;6FHFl>O@*4W38oLvyb-sf)s4#37dz>EkJ3;R#o=%$3^M{IT~W^Ea*2kbq!}U| zjRI=N=^)yeDHtenh!;{12Ov?j+ju~Ao<(|`f*;OhgJ@bNRxmNPLs1r_B&8Y9vi=YC z{W&_Kb#xN%KZT>_C`4i%MR-6Q*0|0_;wsci1lbgmCdNCnD%N_K;;4s1P-;MM)v_Hg zNDS8|49n8YAfk5QAk)x!rXhHqtI0)0$(5x|n8{XTxtz_ZmCP2*$`F>$j+1|*LJg{Mg;WH&<{2C*T+vR@I8%vRJKJss-uzLn8&CyZ+6}J*sXYM?H;J6 zDisJ2aX=azg^8MK>_S(i`^+q`U;!axjlBq}XSYBd#|V`9QqdJ51d75#xvVJgE|5eh z2_k)!B9zs#qDuQ<`LNVm>zWtnKfgw%-y$ctG@IncKM4-JA9 zIw5Uz8Sg)ZlkO}+LK`J`61%i<11@tFsr48+1jk*BkMb(EMwsAagdnQf0BF~I*02WEB{@Pe1W3Aqj>#dDNGS_ki8jO&&_ODjwCOSXa zb~U*4uo`_7(s_^RU>88+lwJyG>4)9)wEz43ytc`4-=A&mF|Df{_u}kJ>hmjD0& diff --git a/TMessagesProj/src/main/res/drawable-mdpi/tooltip.png b/TMessagesProj/src/main/res/drawable-mdpi/tooltip.png deleted file mode 100755 index 01b2766d253318010163b0025a3d945b8fd4d321..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^azL!h!3HFE-n+dJNU@|l`Z_W&tUqDS+Vv91mn?CO zC<)F_D=AMbN@Z|N$xljE@XSq2PYp^p8dXBY-3Z(le5e$XZ*@ze!o8T`sh)+KLYM0Y4=`U-Fh_N=J08Til43R(-RIh zv2u&)L~MXEe()#sHN9e3zw0aObjAWsi(|erHL1qc%PyxZOLk4Zxi&>c^W2O#OCvX* c>1SYOc&MsVzNv2$AJFLxp00i_>zopr0RMAzB>(^b diff --git a/TMessagesProj/src/main/res/drawable-mdpi/top_pane.9.png b/TMessagesProj/src/main/res/drawable-mdpi/top_pane.9.png deleted file mode 100644 index 20fff14c0b2cf846acffafe3878583624d3625e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 118 zcmeAS@N?(olHy`uVBq!ia0vp^JV0#3!3HEVSgovpl&zr;OXk;vd$@?2>|LUBrE^` diff --git a/TMessagesProj/src/main/res/drawable-mdpi/top_pane_custom.9.png b/TMessagesProj/src/main/res/drawable-mdpi/top_pane_custom.9.png deleted file mode 100644 index ce76ac803ece430a59b25bef6bb5f0a82ec1dc14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^JV0#3!3HEVSgovpl)0yiV@SoV^)5X$X_*Bl^Ak(MOz^6VktLMo+#etEo&!wsQmL^k=T0i0u#fg`FuAP95gu(G=jm? L)z4*}Q$iB}8Zsg_ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/call.png b/TMessagesProj/src/main/res/drawable-xhdpi/call.png deleted file mode 100755 index f303cdb1570b5cf9c1f0602622b6cd75512e4e31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 883 zcmV-(1C0EMP)!t#!Y< z41b3&!S5vln1fIM=e>S-7TzUw5u9i;_*i{#uQ&i$06DN*mdytxM!=O#bH165N(68) zLEDlj00@6>b9)nX;To`8QUvTw5dPjygERnKR`rr306QG|3`zpf?Ko`)qyXr2?6+SE zfHj9cf8f_e25=Exkpkd%g0>v=DEwSfHMk7_g|{_n!&3MW^CriL@izjZC|bwMCkseZ zz7D<>wZObZ=GUz}R@MMGJx+)PfN4;{%Ns+p3CR&aO&i{4#W*Ax03+b5q0Lpv0H`sG zB4|W1fDiC9Lz}yf6=W^|P}dCmJuAW46h)Nx0Di%fhBm|SL#Y6i&iYK%-dXs8Q~=Z& zxME5n;F$!UxgEZj#cq-XfK^@jtsC0$-0-DEs>~eXo2s2b+_vn~Rsiv?FmBO~Yr>+c z9i2522fd(br_S|#mQ;&wt!4Ru#C`aVMLQ1UbAy`Uybk+D;`zcyWj>QMsw3@_q81NG zJWY@UF_+*`dP#@6&6deOU`&_iUPVBxbMRZswj+AJ&n3tgxS%fLLiG9yfLG?YvcDPH zruY7|(ZH>CIxkb8QP#-E=q|uN z9Qw1*D6alSUIE0r1W%Fn=)8efbJ?QL6ZjAY?{wzarTo+@Z5C9_@cQ*@pWg3zF8PH; z7Y4qX=8JpD6akqFaWb&k;FiGNS*)y002ov JPDHLkV1mk*kh%Z> diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/check_blue.png b/TMessagesProj/src/main/res/drawable-xhdpi/check_blue.png new file mode 100755 index 0000000000000000000000000000000000000000..37b2d0472eedc2a2f393d85bddbcb7c18aa1b42f GIT binary patch literal 1238 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`vLFjeGsTY(KatnYqyQCInmZhe+73JqDfW2&$iQ6qsIL(9V zO~LIJXPkQVfsWA!MJ!T8!-RmT2gHOYTObFX@Kf`Esl5o8tRtD0S1~X!dU?7yhE&{o zGxId(AqN46$qE&Qx0-!_?B_B|)SMNwg}>iy!V$ilLv}VtIdc@)%fHS3dw_>$w^rwS z!<%;-m*n17GjyNkBB$cO1VMqvk9=WUe*E~0U$6E&xm(VEn6YlZdpILoyyLxuI2Toe zhWQ)Uubbf_W>I6)Ezzi-DBBXt82dwkg`sXaw|tWWd;IG|zr_sNzH271-kaWFS|QKm z#(izO1ONQnP1CcUCCrXK@S$bT0r|boP2yn<2hArO&uclaJ^RCi*33v_mbz09s$cj$ zTdHBGWuwKg^zWv-NfO1Zoo{b^ION`8J73j3Nw;DB@wVx=S_L}WlppfMRY@OJQ83^4 zVCp$Wmqlqp=N?YwH*!>+b2xkM5t+_A?0d?z4^AxL%fG^{D0J>Y@9drSLVgdI&a&*( puqalacq!UTNP!W8`acRMFf?kn@42^j!zEBjvd$@?2>{KDrb_?- literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/greydivider.9.png b/TMessagesProj/src/main/res/drawable-xhdpi/greydivider.9.png new file mode 100644 index 0000000000000000000000000000000000000000..f14b4733744198db1504ed0b9569935382c9c938 GIT binary patch literal 151 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%ah@)YAr-gYUQ^^d;K1P$_^#g8 zM5tNePQt5#T(it}DUW@1*=7nwb~|3ygovK`<(S5n#=FychN*~P!nJ_3rby>d)->+D yZ5u8)J-$$PqqVN#nArUrTJqL@a(#!_PvS0KyY=k4hGqqzO$?r{elF{r5}E+M`ZbmS literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/greydivider.png b/TMessagesProj/src/main/res/drawable-xhdpi/greydivider.png deleted file mode 100755 index a2d2af9d820b134e087c3ce8cbf9c4848dfe51b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 976 zcmaJ=zi-n(7_|yRDP)R3v|>12s|u>dznWYcH>M@dW!wY<-_M}n57#HS|d%`HGItFEV7G1$uU~EiVdrG@E&J5?i{r14cgGR z6_Yr;5n=ey@fe%qvg@H|n0uIlUEH!=6`s6$4S{W`a3`gUx>vw$yV&<}tzWL2{XH{d z!S$OU8!Ak|!PEeuv+o8*}Hrqojeq1)~9-4&krEkVj;GLeQX zCm13T^jvC$2{)J@DQGw_ecPipaY3YL?2-;uAUwM|0x{Qdma|5I3OM0WQ}XiN1;5W;A4XlzfQ>hsEU;~p(JP%4-{$$ zT;H)>i*$n<1H7&)B{!gkYvPioLZ-mmwxw*Md=8~oS5X?RNYX|!CrbG|%8RQ7DJ7?K zXvEcs*>SK-M_lWSo0-Ustl)SovW9*89=0}p;()=C6?<|nXrkVbYfa82J&`N0WQ3@( ze>Hlv#oQB3$F^mQvGK9X-0m}5e{nuPVOK&cX}Nm%_4wn_1rAK#dh_V~!S7GkwjR!X z|Mes0t-&kbUaZ9*&&HoF#ntTvSbV!2*ON!@j()m}hf9kewijMbUE+@KTs*mL>RZtr ND{YjuXZgGL{{U(sFNgpD diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/greydivider_bottom.9.png b/TMessagesProj/src/main/res/drawable-xhdpi/greydivider_bottom.9.png new file mode 100644 index 0000000000000000000000000000000000000000..e1043341db307321554c390c203d604b4da36fb5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^Qb5ed!3HD^d3l_Hl((mgV@SoVw^tPT7z{X^FW&uM zm7&7sxWiF>+82gsE7!^E=PM+xHSVxBHr7yn_AbCpLuo-zK$?@}!c|R1PIq}znQfgV gUi@;ipZAKbxvi9K<@Nj@Kw}v^UHx3vIVCg!0Q%i2Z2$lO literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_back_grey.png b/TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_back_grey.png new file mode 100755 index 0000000000000000000000000000000000000000..acb9af9557ef2e4273699db1d4c3bec9413438a8 GIT binary patch literal 336 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tg=CK)Uj~LMH3o);76yi2K%s^g z3=E|}g|8AA7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_Kaj^+;1OBOz`!jG!i)^F=12eq zPk6dGhD02Gd)=C=IY6NGp>j(8x)Tmk@=G{V5)VH0_?0oSf#afex}3nFm<@mTJMA$J z<4y9P>cI4${mXoHju#ghB_x^{?^QDFc<_vW%}-8Kw|s}0)0tlF;W2ok+MpTF*7H*+ z;ha1(-%sTOs{8pZo_=T8{--?Q?CLJn1JnMqCU~Ezn0TPG`lSDr3YQ)qbEi)WXL8&O zO;lJieeSFY@z=eYBrUX>q-Sz9$^J4qxL#LfVdNeSr|nkr3j1T~qGOb=f0uOr_fTa5 bL%G=BtC@;nyT6G6{lwtu>gTe~DWM4f!2Njs literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_done.png b/TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_done.png deleted file mode 100644 index 8899209598c524bdc1070b8786870881fead4320..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1316 zcmeAS@N?(olHy`uVBq!ia0vp^7C@}Q!3HE(2UxZODajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_cg49v=zArU1JzCKpT`MG+DAT@dwxdlMo3=B5*6$OdO*{LN8 zNvY|XdA3ULckfqH$V{%1*XSQL?vFu&J;D8jzb> zlBiITo0C^;Rbi_HHrEQs1_|pcDS(xfWZNo192Makpx~Tel&WB=XR4cQU}&OXZmDNz zYG`6%sH0$HU}&swV61OwtZQgwWngJ#XsQ4ONh+i#(Mch>H3D2mX`VkM*2oZxQ#zd*s+SwX`$F*!32 z#McCC@b$Iw%quQQ%u7!7bg@+e8ljh&nPO#WZf@*mU}@=QVBunD=xStX?B?ib;p%K^ zyn>bnwy$e0@Is<(Cdg(FDNbK765H_NiE7OOHFYr%Fk5*``IcJw_D6{ zng`XJg4-MAAS=^V+qf=v*KW>Qp6zWEc?IztNvC_ zb6_xc{M;4usC=GCz$3XOslUWe%C2~HO5j8#mxHX|5&ojXvJtJ(4_r4t;#t%Cm}ASK zLguK)7L3vlcQ8mlwqVdMJTW!1!6sEEb%C%<=mKLI*9E~crVEN?R2PWP5$o7|g>}<> zrguCV1sU^P*_^75&Sg-2$7<;k$L3IVT(+^HMB_t+w5Uim9Myz^NxMvv#JcaiRQE3&2?crI`w5m(b4i8$7w;(T*LdVoBHN=lp?!DZPQ8;4 g)@FVdQ&MBb@00m~!bN~PV diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_done_gray.png b/TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_done_gray.png deleted file mode 100755 index 41671b4fb933df410d6982c74e5567ae5d13d17f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1233 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`vLFjeHsTY(KatnYqyQCInmZhe+73JqDfW2&$iQ6rfIL(9V zO~LIJN1S@~fsWA!MJ!T8!-RmT2gHOYTObFX@Kf`Esl5o8tdA5#7cnp}x_Y`ehE&{o zGt--|$w0uNamEfo+rIy6)sxn4xX7#ik*Uf2gU7l853fUq`2JqZoIEq-(kjOLr!SNV zU0U~g(hOy9C4R94Mlfnzk(^lFyhvlsy7jN4%I*vEr2qIU7|Y7?hx-%XXCtjf!9QL# zrH55E9eDUS@(4!_>uZHKTr&=_D>8g=5B?#*QuX7Q$h@cnQuBfiaN105Fs|TYT+QmO zYjEKCx(8EdS>AYNW?-YZ{)7Ac2@lk@6&^&N@U}nne64rIiA&qoNHXmg`M_MF|M}XK z8KQEc4VUVU<{9>FZ99^f_v56yht2${E=lH$_s{UI-@>gZwASU2^qx;oD$A*TI`#s%j(>1w2l(7O z@Qn9`J(D~W%PK}yhX#g5n+?_Rzlwtu{xLCTZ~n=8_vUBYghSUJ6f8RXncKC2f#nmc Yj_;-yn*(R71Kr2q>FVdQ&MBb@0C7fNMgRZ+ literal 764 zcmeAS@N?(olHy`uVBq!ia0vp^c|aV(!3HFgcQF|NDajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_cg3{3MpT^vIyZoQf7=pF4S(pnpuy?R|t=LNA_Y0vpJA_DIG z7XPImyF+VTOVaARO&cb0Wx28n26AWlo^M@gbB8nEXy^MncD{>eRrK%QF*bg$w&d0K z-^wTE$9)iE;9~^B0uCT-a0WwW873fnAOMC@3pdVb4i8NgemwckM0F{NPk#S&^G{4a z{DE!SuNUs`x{NbE^Ew*$o__yC^rvXxO#it)kNr;0XPoXYEP1?cK95CvREN~edk6RS zNzKf);A`nQvu)1fL$1#vyw@F8`t04Qel7B{{usNTYc~D zN##$Pw}joPu44ASyIP0$T}0gE{FRFKft9=_^F_BWow3vR_RGvl&v{?By<2wu|D4o^ zv)5Ih&psL%pS%6re#hC|8zMJx?)u|%!A~;Z1GnG5aBw}#juVDAzgG3_zR+UrYiPNu zoxgFx&C0Kbw0Bf(-8(U!jcNPcCvP`SdSIozam(!|3C%3!izLfuCSB5co2!r!zU!Ox z`UkJBrp*_WI(3)EF2VS{N990fib~ zFff!FFfhDIU|_JC!N4G1FlSew4N!t9$=lt9;eUJonf*W>XMsm#F#`j)FbFd;%$g&? zz`*F>>EalYaqsOdYdC@ZCE(IKx+`%H^ zwzDbjp!?=BmTuOx8Ii|+%+CEb^Y5E~Y3cutx|JTvvgS~k;PCmHs#%QP%ple0>{k{h z*ZB6?%FUcm&YyL8Yuyy3x5^Ol^9*@*_WjuQ^VGc?%TJl? tWR5C%$|=fM;cusUNj{8;^U2P?460t92fAa8Hv literal 651 zcmeAS@N?(olHy`uVBq!ia0vp^c|aV(!3HFgcQF|NDajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_cg3{1M7E{-7;x8BUzm~|*X!tJr@m1PMmFS$!JN{U`wDZk)Z z@cKoy%l*R}H&6b-;TNn13Dz{m|V#mrY)q6#%gR^`Vu)JWndyJ+x|H7Ec^(!u$8*+O@p-BW zJcoDxtob*|y(V?_rLar?gcfLToa?+td8?VW?HmukxTnj#R(^_MFAB{|Q<~Bx-RpMc zZP|U>^WGkF1kM!R^SQS9<{7V9g6WdF?Tm01OKGxccD4)BNx!`6_-K}3+IxW~gTe~DWM4fd4eZ= diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/ic_msg_btn_cross.png b/TMessagesProj/src/main/res/drawable-xhdpi/ic_msg_btn_cross.png deleted file mode 100644 index 842d02ac9f7f496dde9e4aebc42fec0d0d22115d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1297 zcmbVMTWs4@7?aX$U zG-4HP1rtLPdjKRPs&><;099KHnt0%03aFKeK;0ym&?G3AJpfaw_QWQx$8A!0sP=#* z`<(xr|NH;%zxkDTe{W-hvjM}f#zZ_r7}c)f?AdN6VvT_mDZDWz3?WL#$KM z(h!d*LKY^VAdMYcfgKpO+mMq(=1}Z8Uepw~VClF^N&%rUtm9y*Ac!N-#M3Y3@|5X{MaWgQNb`;%gMMC2sm;4^qfiAM$$XbN~q$*Trm3KE-kd9=5V zDFWYAF-L;L7OA0F91m$a#Jz4WDbj$&{hS+k0UH1ZaE1mRiuO>zLjs1UIUacN>O&xJ zx|HD);hw55Bn63_X%={jDi(|GqQ|Z2Sqg9*N6`$$FeK6-jWN{}N~CJE)+~gfA?k9$ zlr}c=~f6zAr{*An=i_ z$fQX@3V2CckTPi>%g}ztSF^Jdo(+V$d_F&*!<``jx;-4n_yU1Y*ylwDUA~?gHliA) zpo*~OTSmUCSo*G5KBPmz)bymLc;2 z?FhA_wcVZrBy3L-RMGh8Xil2mntL0=Y-}XlnJitOzjnCc6WWelaTcGr`O)~zNZq|< zn>O40;Pg+Cju*%8A9$@bx2xU$^Y!z}zWmYXlj|Q`t>iCxzdo>B_v7R(aO(Is+T@)( z<-zaa#Ia8oS5GZEr+z)z(ndNfZ?=f~!WwpQ{s$oLjX$z%U*+!kb~&5P`+lj|AIpBX zJ`z1^o39ja+s5N{r-d&k`iVVnr2bAZ`qe^Gbt66Oh^Cy5sE}~nJ~LeR@a&#l v8`CQvE@II?pPnGw_P#?u5H)5N*8Zw%!K9VdrSdJo`srbj?*8zFuGHi|ev!B7 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/ic_msg_btn_cross_custom.png b/TMessagesProj/src/main/res/drawable-xhdpi/ic_msg_btn_cross_custom.png deleted file mode 100644 index 9ad3898287ec71edd0971ff68478f3d989449fae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 392 zcmV;30eAk1P)3F(;yz2rguTH=KH~=PIdUCxM5*vH>_k()5cb?Ad5m_;3P%4SdH9v&X!kY&gsj<0r?i;VfD{i+*yY&gjZQ$Z*pSSfN=g{Dzk3 zEEa>M=pvQ^e?>)D4%DJzYz~y7DvYxFsPlV?_GuIC(*wVb_t~BI@Q_<@3Cy7ney%l` z6wINZ#b{K*GBxmmU1F}2Vj3`vQFyEv428H(%+);StiV*&@1n2QOVR2FjBbz}=dMNz z%ayte7S~2CT8gPr3rvMtVPe!06QS1FB1*-Z_Rco(_cIu@iE+Wd(AoH?5q8Fna64&) meVFjvj=Mj#`X@HvEx-Umr3@^o*F1)he)mpcW| zOqn}tW{O&tc!2gqrk};ne?DUV$-yGWvvkVQ;yq%|8G*V`0blaoUkg|5`#!yA){2gn zTU-Lu4(ym{!@OkgpUvS7ho7XgTlm(cHF%$lW~?!vap8gIH6ZJW+vZtoCvRu!=w(<` z`pJGS3xCqmT}ojrko~JI~n*HGmcl@k&9mO zH{Rjvem$i_LMuAAEmdKI;Vst E01^Xu2LJ#7 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/ic_send_disabled.png b/TMessagesProj/src/main/res/drawable-xhdpi/ic_send_disabled.png deleted file mode 100755 index d63101df2e3d68ee792a4806904a6d4a7c386b92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 744 zcmVP)t3=FRlwtDV_5<1_F5-tYIDEm15M+a1R_BcGEG$X|{{<@0&1 zaY^zId6>LOekM>aLjHAuyTSl{Ay*CER|eiN0i0BhD~4CBgFFRbF45g_1(ks(QJNVz6IW0#;B7y^ z32O7ybn`}Tvy{ib$w%Z>YWJS}%;*QIlr3>DJVCxKl}fwhUR_YuRs=nV3w%$ohhD(y z(z_Z(((XezaBOAqU9W|b$vyHhLgKCwsO~J}@VN)Ml4H9c=Q2_{8VCw30&avWpXIk( z+Ufh!L)8;M_&8rDeB4-87U7_#o~*~%Or1oZ)qFV42FG5YJ;-q*5x;$KY_2jS#p#b1 z=m~i!LckkrqJn%`lV} diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/ic_storage.png b/TMessagesProj/src/main/res/drawable-xhdpi/ic_storage.png old mode 100644 new mode 100755 index 6aba104d940c5b67005520a2064563a771131d0a..d9d8b481fb225aac214075113c059aba73df550f GIT binary patch literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tg=CK)Uj~LMH3o);76yi2K%s^g z3=E|}g|8AA7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_Kaj^+;1OBOz`!jG!i)^F=12eq z9XwqeLn02py>gJ3L4kwCaecuL&FGF%CAEoWu+3Nt)VO$g1mV_U+(5>xZU%t33* o3H9uWVvJij7Ptm6{*b-VwA@PZ*24>Lfo3syy85}Sb4q9e0M(r~{Qv*} literal 414 zcmeAS@N?(olHy`uVBq!ia0vp^c|aV(!3HFgcQF|NDajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_cg42%w*E{-7;x8B^|&3ni|#O376VtxC zVLFWYJE}bo^vW5Z<8?gnG^Lj%=BOb1+D*@Xy8jL?Jo0u|KZ}JwXT{=6Di78wFtUSP z+wRD;?IWFEG&sN6_bcN)Fu)l+UHx3v IIVCg!0Kj;!Jpcdz diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/p2r_progress.png b/TMessagesProj/src/main/res/drawable-xhdpi/p2r_progress.png deleted file mode 100644 index 6209ff0bd46fc6931311abdb52748e6800e56009..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1896 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 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/search_dark.9.png b/TMessagesProj/src/main/res/drawable-xhdpi/search_dark.9.png new file mode 100644 index 0000000000000000000000000000000000000000..fcb8ced747deccf5e3198dc56b3ed478bab0960c GIT binary patch literal 94 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a&kRZkbkkcwN$2@MVZU6OVrB^~@P rxVo{V;P;+WL;OXk;vd$@?2>?3x8^{0v literal 969 zcmaJ=J#W)M7&dBzszL`836(BATn3Pc?Qw($-b*%4x@F76^=_;wGqk?oG3enAz6S-9p|9nvxH zs}A-#JN4lbKcr}esca^p?F#Wi;zulWMRCURk78_1jl_Gg4(tW zuA8>w1*zf26k(dG5yZp}9AxMkOF1~tbJdM9)EjlNEElB)gmpUftDnm{r-UW|mogp6 literal 975 zcmaJ=J#W)M7&fA+szQgV5~7_BmjNW=uh>^&#gsHoNF*FZi6tTigkxV4E49zq7vf|< zX$3<&A$|eBfPs|(iH#q?0%IkZP&e2b&S{b|5G>nw_v(3`_w$abl?Q99TdNGitd&c8 zjjmhtTUlAA{~zY*6S{1YLW9(Ci}bA!F*ye}5h#0B8`Y5I44!>PS%$fM(={8UVLViA z>~U6t;bJeKY=+71#(`yb5dlrqc72UK{qT_muA{M!6hknAJnFcmVTkI(ifIqKcE(|M z?}2QrQUMPU3&h^OAE~j%PIOhePs}_ECJ@rq*z=$oMiu07h=9VSQ??+A076cb6$r&U zKoUfW7w8L9qO2-Vm3F}NVX3#!X{j~6IQ2zO8rvZxP26W-^&XLy}Sy zk%|UBvEq~;ZO;^R6xpF05EuI(QM8)4M>Lj3dY*z8%w_#(S|(aBKDGj0_*xz6HPXf6x#;At>?(%QdT zJu}hyNw)LBrHA?GBcINDNC*41vUx%;MXs#p%=l~58I8tQ<)!g>+;(0*{!}`+vGhfd zq_cMO?Z)*N*A7m;|N8lD+;NYNk5@OYyniMCUf162+#g+HcxHY1>@eykSFBv9=wWgzBo~<(Ea6^ zp*LRdjgESMejfkw61BUlSGm8QGHubJy~jg!FIDMyhCUUX=MewA|9_!Z|A#)s{aP`L ztNAY%?lRXs(7?#d#v@^nKoR4^|EA*d$@dPI{5ZCxl;K0x!dhl)eujCvTS6bMHNI%V zP!V)`;h}|xp1tzwYX5EW;pNJ`A$m7fulgi@BeeSa()f2vv!ib6=4xuySoEuu+g_Ph zp}ei*_V*1}h4rWJ`;*?5$&{h{^4XEVB=-4B7e0?}U}TW3%(&!P*{}o{DGZ*jelF{r G5}E*)bG~^1 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/top_pane.9.png b/TMessagesProj/src/main/res/drawable-xhdpi/top_pane.9.png deleted file mode 100644 index b3ea8d1ba708e7436f9522def19610c70f394fc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^VnCe4!3HEl*p=S^sT5Ba$B>F!Z*M8`H5dr69N5Qs zT|A-CH#PMC|E5O)(*-;-1va0&wUhnMGLdwfoH;dLtTtaaG^miZIgnr=!Nb;k5RLkf spSa$)fFZv+)A+aTpQIIq)=w-LH`(X6%jMqR0<@38)78&qol`;+0P4gxP5=M^ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/top_pane_custom.9.png b/TMessagesProj/src/main/res/drawable-xhdpi/top_pane_custom.9.png deleted file mode 100644 index 962909f85edd3cf6f85d639db38402a649dcc57c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 137 zcmeAS@N?(olHy`uVBq!ia0vp^VnCe4!3HEl*p=S^sQ^zG$B>F!Z*OkoWl-Q@KDfs7 z@!Jm=i9m6a8OqSG2Q z0RR911ONa40RR9%0000G000040000LMio)N!06~`NjG3Bl`2gD-0=1M*v3}Hw#4?9 zZ5|#Fe#1+n53;pp`L{qAVH;;#1_0fLFXzWFTi<^^)@E#ut()x=g0N2GSMuXYj>ccD zMz(7h1?lM~TZd(tgozIT5b)dI!;eD_MXUZ1Cjh{r@oV{UBR~~N00^cFY_$Q(w*f#f z^#m;68uvI58UXHo*7Kt#U^OyyZ3h51wJ6oo1^{kqR;nin0B&kf^rTt_wp z50nCcSa(BV0$8h9S33aMt6H(Hrnts|Pyp~8pjx@g*v<#S@__OX>I47_Ern3$cL2y! zsZ{E>a+M2g*8#vzKNP*GJ0!0HfE-#jjsG6QPj70aIk3T$Lox6dC{?ivBd+iH-JzG>P-l14NH3KVL^N--0YO z0GAxk0|21c4ar>Kxn;3^q`Q>uwFi*H5`v_m^Z|gL7szO6#X zAWO^_9Rl(Lwn_ld(Gb}$Rks;W000FqkS=JyLsum6U=RRwAk6Y(z@g~rxQ&b=yDNer z$mDFop{UFchLv7JGOzDM8RVnBtfQCGDJQl%Vgj@4@g*rIhX+4X`UK}kif9=;QUGSP zw2N)gp}53^*ABB~$us>x>Gh_JWcBqW+gaZ{KqT>?+p%oIe0vjlem?VU&vtr8cH%Bk z`b2+?PXI(u+0HnYtuvmG>qKV1>F;xOTb%|{i%$SV5|nQR=+nncT*$VJ-Df#^k`tcq zDEKkkk^&$)YP`W!5*NPE-zO_~IgXk#P;ZAh3okYR%Vv`HDnK0#rb`+$e~(eHObfXZ z>rGfg)ndFePBN<{L2D*J9pz@y_KkG*mlI~ln)CsH=oh8)LW5q|q?uzRi-IrM&iepB zB#B+y$v(L&ObJlAfaDn|omngPYb#}fwv%nL$lj}i-0nasIRKfMush)BC=50F0zkB6 z0`tQndZ#L%0Az-!vScw(B=5868-R>tOS4O>0Rm{;R{&(56Cw-pJUrvAa4-Ry=IOA0IMYD(d1CyL2}z+%U9xU6Pgvq?e_zu zZ{A=)Oe@ztPWCxX-T}yTO9EmG+a^lyGb{wGZ^#UR)niQs#alDRWVcN=S!8cOu0Lz0 z+?NW92g#AyyQFvRf_DH`OVT1ojAbPI1+uB%wCdYFYerZFnP>O}Ae$D9MYiHvhF{c< zR`?Yq0000800002004jh001BW000O8001hG{s=GtcHq#-_^1^U00000NkvXXu0mjf DQIs?v diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/check_blue.png b/TMessagesProj/src/main/res/drawable-xxhdpi/check_blue.png new file mode 100755 index 0000000000000000000000000000000000000000..d01961faccecfa67b4ff0f14d1c97a2619ccb122 GIT binary patch literal 1396 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(gnVDkcVrc2?=4fPY z>}KQ$)9aF-T$-DjR|3v4~Pj*wm=R%;iu*SQ+p9GSx@wMb%2${QXE>2Qlb;Lx#P66X*;d2>NapKSlz z!har%Jv>7#*H7L!*Y)(i_uNNnLKGMT8W>m<7#KMm7@Qb@1QU=yC47$V-=_BK>sOe6 z*!FtIW1HpY|1D@*R%ll8W65Jihszf4r(B;>9la#W)gn1UF;wz#jPHX8Wgsn+UU2Ph z^9&1rlf`S-H`P3@h-6p2QEU}&aWiCsh@Y6lBnwN1&PN&StCkj;FkemECUo>7mk5u$ zazKDg?&}2`pXWF~%viNR!y>9-(ZdXeuCB*-nlrvy<*>zTlux|So%&F!Q&hTj#+e>~dxHBVoE<=!!MVLcNak|#?Pv@7Oo3p<7@W!15Y!Ms^y%xD%7T0V~oRN@OqQ)+>JhG>=Bt=QJ_wk;9FD+M= z^=-~j-TR?1xN&pE>Vpnh>Jy^e=6f+6zaDpn%~Q1Rb6gHvX2)O7B|*Y{{t9|Q3pw2% zl^$Pt+*h=ZWde85CW{~kGY`+l9!!N3CLN#1_KV+>)sJI=ri!V>zU7tYgce+AF?Q*+ q7wh=nffDq4tl!!xvX~)yM0I|+ Z-SUtEwS+XOl|WZ8c)I$ztaD0e0ss{mLVW-L literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/greydivider.png b/TMessagesProj/src/main/res/drawable-xxhdpi/greydivider.png deleted file mode 100755 index f6b2b94d63811ea9b00588d463a5b2b874ffe4f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 985 zcmaJ=J#W)M7`9r5v`{)RlrE<$14xZOlK7IiHKoK3jfATzN!2V!IQFHnTKkNB#csvK zK!wB~2)_U^AR#soq6`cOAygqTAP_%*3MN>PDCaau83-r)zVtlL`+0X)maj~VpB?8o zZlbcJRoQwj`BNio_L`IL*fK@+2Cb16jm!XZi#BOuP;t$5T*aoned9Hr=eSYm)El&6 zTvaUM@@9hJW7lVFj+wjYz(D4+X-kwOfDkX` zWQ3$ykP)SfAhHjorJN!oC6foe0hzVHZYfo*+_S|_Dr{5gD}oS35g%oF608eSu~OMODZ=Jqp3~2eMw+OA||&5SzXr@nRBE zA7~i=hq~?n9nva3_V=H{VSU@jLKTN(E3jDMS~H0$UnvFHq$H>lvf0n#N}Es;wuui) zH3ZJDIi5|T@In`F7)r$psp(m`qN$K6@Q!0EWvQ%-D4R!ll$9hsS1gE&C8lU8tjW?935a}(R;fViL=vf>Q)MINfxzo3H)(C zb+Xu+jt{;xR@H~kJ7YhyvygxF>Dq3mbL#!)kjK~+kJcQ^w)25k7xF{Y<2R? Tt<}b1^4Kc+vi9im_1k{{VB$1% diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/greydivider_bottom.9.png b/TMessagesProj/src/main/res/drawable-xxhdpi/greydivider_bottom.9.png new file mode 100644 index 0000000000000000000000000000000000000000..1d72587a8d8e4d54bfa1a5199bc17ca3a150ec1b GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^YCtT)!3HEB_WN@HsRU0K$B>F!Z?A3SWH97$zW8SU zoYf)gf+U%a-E;_NF*&5z!MeYG>9HNn5#?!YOFL#4J82%eBkLu&?OIb%iz~|%rJVP? zOF2&aXt+j%I%*y|XBn_6k@q)uTbt>d&>2s*{$p_Qy);)t!Tkr&E(T9mKbLh*2~7Zf C<~E%G literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_back_grey.png b/TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_back_grey.png new file mode 100755 index 0000000000000000000000000000000000000000..06104d817f5155930000f2b7d23b97f2ba74b18f GIT binary patch literal 425 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY0wn)GsXhaw6p}rHd>I(3)EF2VS{N990fib~ zFff!FFfhDIU|_JC!N4G1FlSew4N!t9$=lt9;eUJonf*W>XMsm#F#`j)FbFd;%$g&? zz`&^J>EalYaqsPo)4Yca1XwP3dUmi)T4doQw7_Q)cZdUX0Yf8?$H(+*yPdL6rrZDA zJui(pdTrr^W|=1n?3NzvCN{eTFEq#pM1ZNE%nBuS zwveftc~+f?WU4J%p}f3V#Zpos@|=Cc8Qqx&eRDtDklrJ~YbVPle?5K)=i0QNffGZ5 z4s}g9)m6h7^wK=TseQAW$DAWSyn;RFY-sdII%;Sf#n&kwG123UN59jfws|Z<)?)KE zUg~Mx?-?yqny#Vpw&22DXT_Dr@~ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_done.png b/TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_done.png deleted file mode 100644 index e2915f83d4411b4118ef3875f0108fc960fa586d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1525 zcmbVMeM}Q)7%zy-Q8CUygZs*H1_QY3-P_)k_C~QSZMBBt35`R?Vy|~sIIz8PcSvPR zR6y9w)XfaN8Cbw2U7e9lbS87rEyKB(xrhmB@GF=ti<)I58&ioh+gqe=f4KdzOYYwH zdEe*vd%o{2rg}wg&a*i>oi5k6(p>}B0DQ~mWyA0NbNzSWvRL)hskKsAZDVCY=j5f3 zfcPS8gHR)|{N|RkLb*;iM-c;cYMsA|=A?*`P3aipkr+fnvgPp@%QXus5)vB3s2!dB z;!6|}c{}KI3n85OnJjy`g#&d(r~k}M#Uk-|6vkVu)$2q-{W!AppV0A`#p+WiL!c4zypBC{zD>Nl z6=hv3hD&Ux^BBG=!*d2M=f<2DKy7ww$NQy8^SL}{e<+cC=XrAxgKG!3wvSY0j4fN* z#!PB`&d#7bH@ExjGi347ve5~x&*2Lm?+Bl~xj%?*%lxTu{%#_wPZZrMsNJ&o$kQi_ zcC1=()Nrh8UEfvY%~gw(oV?LpONo4EU|7p%zPeKT=Z0SD@S!}$$5r1LJU@DQ?{wjs zv)o$8Z_azqb(?SLonytsN0*ob$qT_tzx(K^J=BPXQzdh~I~N`O z{k4jPO~Y9K-8*+S?oGf8aWMRze z!3_t4C$cY2cYQz(43A7@toJ^g*mYZf%wg}YXgM>s?rt1=ST>};Wtj2xE6%zwdOXe#AacwR^}F?Dz}&{3Hkf diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_done_gray.png b/TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_done_gray.png deleted file mode 100755 index 4ff3b63bbb00fac54333abc4bf56535d9eabeb84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1393 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(gnVDkcY~pP0YHVR@X5nINXy|I<=NWNK(; zv4~Pj*wm=R%;iu*SQ+p9GS;yX8E6KpX_|((IF{I+w zn>&GiEd~N?2?}<<*F`qEChuuw|G+n|>3i(`j~w$-zcN*G^gm!N@Ho}YSRQ4yCHSAG zn#zWoQ}Ww0Pal3(dq2J7r-lQA0s|w50|S#l149b~kYEAwHP-Hk`o)@in{997y4O1% z?^$;K--4!Pg=Hlcmp^hW$eiPUs`^y3ZqP=>IfiQ{bhQ+|Q!7|A5lH(PTikx<=rhNB z*2Qh%j{6GttZ7zyW7(@eCq>JHOPy1}bB;)ZOW_vgsh2EfHF_CGcRtEsjpB7zzOc&T z)-}iE^EcPGE?(Kx^dN(gt8Fo(hDKj8|Dvm}H%R_jP_y)pm{fGCRFQ$qaxSGg?4MWL z&6d`1ei$IP)O*KrhQb#K7EGcmWT z9adTJR{F|lD`d63PivUTaH%8scuVr#<}*D99ajY%D4cb4hKIUZ&=rew+^+r}rEe^{ z!!B{ln~Pd>ZzDW%RTP>Cy# zsk#&L(1T&8f@`-jYf7_-X`hM!yJnS4=7RqdLLRJPG-+MJcKo}^`ADXeSp{t;J|1U! rC~pV~e-3yguqd!JFg!7?W0hc7WxcL9WYgW%phD2o)z4*}Q$iB}wXNw? diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_directory.png b/TMessagesProj/src/main/res/drawable-xxhdpi/ic_directory.png old mode 100644 new mode 100755 index 91b4d6cb6c5a3eba28569d1c139e7a1fe4ff1b96..6fbc404597933da3252d3bde9aacaf73c21f36b5 GIT binary patch literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY0wn)GsXhaw6p}rHd>I(3)EF2VS{N990fib~ zFff!FFfhDIU|_JC!N4G1FlSew4N!t9$=lt9;eUJonf*W>XMsm#F#`j)FbFd;%$g$s z6ujf<;uw-~@9j-Pu4V@T)(dOD@Kqhzkn#EV96f=l9rIKK1iDpbD_!N1y8dQeb4}gX z-Ny~C_B2frbro=A5p)r7{NE&$5%aMja$<2sKwFupszj#M+}XnF3@6vAr}vdliq)U( z5a(I8H=m_a<>uF&l27Id@_H>fy&&A>g1K!`q(U=ar_KaNMcxo^X5LE&Osk$bKGjpO<@dVi{(OtKyML=pY>MBv*S1p^IrJ(X(h9%u mt>j0bN{2!dhtdm<1^h<@CUqOxiLn9w$>8bg=d#Wzp$P!+=6MAG literal 1160 zcmeAS@N?(olHy`uVBq!ia0vp^OM$qKgAGW!Ub<)oq$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~;1FtBKOx;TbZ+4@kq-FxBLvIpE^ z2er4}`{w^`QN$jBUPVU{pDnyc6FPrfN?N@o^Z4@%ylZZA#vZhMF8S-{A?F)=XCA)! z{+#jiGx_SV_rDt}2%n$HG(ku~)q`__&=M98&LAcjsmU1BG=)La(W?PUDyTYmfs{f> zwX++2nqTf(*Yo`DimfZAYs>v|ys~!1`o-Vot1=qdJy>(vXvNM6;fvz3EqdGo!xz`7 zEd3T+v3ui$_RocuuePXpojTO&QvAvD%I7Z%PfxleSE|0Ut(stT+wXw&Eek=Tb7zm= zve4Z8G3(0jWsOsAR%pK}z3gzxr{uF)-Icy?^D$%zUxq z^xnU7SLiR|o1;0gQT$o@FVC2!37>8z^-eiaaZCm1?uc6ThwoRsT`@aw|M~FQ>~?WM z+a6V2*}CGlonKJef;qDG-LGn=tkX395Pju&OUbe`N2b@_moJIk{)2V5$k((h-p1vt z!;%vJ%`0R2q4w-|b&%ZI^@fh-)9-2TUtQUpwzxp+)nb7k=VyGkeOo=_Y5to?r?7`R zvQH(R%HKS_etPXh{m>sXryPFc%KbC@;n(iK=Rb|CmX_XEeQIE@vsW+ocK_~U>3gp= zE>lb0>0O-saxZty%0qgZ{WE54;w|~16xOW%=)B~f8Ujuem0E%<$1lQ0ZJaP*Bvff&73~{Q+(%wjJraP zr5c?Js+Yv9E%j!(nz;ArL1S;rDIAw}z24w`N?9#ULGX#;`NzSgf+nV#)4!{!Hoe+# zv5FybsZRH7+qJvTKAJS;um{W5g;h!!UO`?gTNAYpD;Rlc3SMbb>s+wX1J2l)3v#6n z^GUVTo65U4U)TjS=z@-*39F`R)2$6NmlQ9b9HgXiUR7B0Imoz7C5_!vgdB4t&YLap z0h>F0io1f~m6m6n3pCg4ag1}$JD7ouh(taq4Jc=gC%rtTfN7rs{;F091gqI zxO7sG(h8|eA;(~gU@w-d3tRN7f}$RzOfGUewS0SC=K`xGUM#8hAgM&--wei{m2>nL z2d`7!uln@WlpD7g^W8*0U0%U{ll@jISNXBhrzd}We)#6&|6_%-KmK2MetIvU+E(O>_%)r1c48n{Iv*t)J zFfcyxba4!+xb^nVZofkT497m!_g*}Ebmq~6>K9y7uXLI#@a?L04itI%=x<#mgZN?P z9T|@nJ$NKN!{FfyhdTuq4?Z{)^kvH&xqX*;oet~Yzkd0$*~;n1&R%RzXyR0x0VJ+j zan(rPk_y?Gc#1D#-ky!MUk#6#l!r*XGtqHZY}niP(P_`*4Kha?stgXSy?^D*;cZOG ze=n@FX1<+b{orL@)5#Bsk!4OZPEJldyy;C_QI{0I_%=Zy?xe&+*KTJ2Jd=HM*5VtV zd@mkfKWnkQO+;I*`1BA-zL*&8bvIA^vd@|7EFS(nvoB^(j%V?kM_+Gron5p4@HET9 zk6czqS9Wh_3!1aD;(W3u*P3sM-E*3&H@NB@u)X0_67lwc*bbKO37;<}{cJs3=z65> z`D@89*3D&qvx7S;UGhqPUKUeTo3U!e5td-lsWXIxeL_P-LtRyu9hm|bOjxx@C^)HU zW!I`jKy_1Q2!T{W1ZUZVxB|5`Qf^2*-)%)xtWny#KXs1;86 zO|<=#P!u-j;bE?@xsjVM|JCN?&L|ZM@tuEsp2XMk8*CAW1pi--$d|URQ$45Rd93qi z_42ljpTl~MRO^pld%r7o{Vx$8gM%!>J_f&!nP+9CR(*S0d=i)l7(8A5T-G@yGywqj Cw-^@y literal 673 zcmeAS@N?(olHy`uVBq!ia0vp^OM$qKgAGW!Ub<)oq$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~;1FfciLx;TbZ+a5yG89vt`R3T1j!8Lci&P#*S7slZ z_up^k+6NLZ^>x;Qyyf})MsV3_g?|?kmby$)@N(hQD``8bf8G(uexv#FZ`}niNJzxI zxNs%sD*GC{q`7aC&xLvIscqKSxIATT*uL+lf7m|h~U|_*41(I*VVM<=>q4`nhUr$-OqYr!mYg&$P=ubw0D1 z?@~qQ&iv0TU9Z&6hxtGF-PUk+#^V{DXZ*hA=Kfh-w6V9UYiGBbor`C+>9#+=x{;z1 v5r>eN19@-}#Gi{;0+qZ3RPTOPJ;3mim0!TYV3!my%`teo`njxgN@xNA#&jgT diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_msg_btn_cross.png b/TMessagesProj/src/main/res/drawable-xxhdpi/ic_msg_btn_cross.png deleted file mode 100644 index 17cd802fd0cae5e32bd5dad79e7c1c6521824000..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1429 zcmbVMeNYr-7+(hvyonJN2q9x#%F4Lg4{nd!l>?7kh$D{91LG#mac}oMIFH*s_ZB(8 znBfeYCT-42E3+iBk73d|25W#yA#eiw9Gqaxa>9sIax!uRwX8khs6QD0XlHic=Y8Mb z@A-cAS!?Md@v2l61VQoUBF3hyYr}8cV&!|PZ*Y^ctdtAva+&CqYgq|EMqYFP*z92| zfeo;H-S$C{13^(fSGirbTS{n7^k~>HM&tK*6*dIr2_lRJn@kB~VshTF%wGIf_T}a^W05ttjvSnT7qHYQabQ4akgMT9L!YC<4zw zWVZpCb;@qB!X{AyFsUKc9ENM*Y)XTZxK@v6!UTqAp;#7*XQ^?5#wZ#m;kgG8w;X+<#k?w z+JH~2kvOFu&Ws3I$=#g|g@KAU^kb4sDGFQ7h+K^a2(pXHj?{w(21eQ(cB6=3$=Vu!+J%wp8#%RRxf-H(6bb7ss(UFYNl&>p{ zaLs~GW(5vJY`YZObKI;ua%qzUSXq?HMX@^41=cE27JXHs7dDyT2Q4h;62kk3!Zn%= znE{e(2jB}O(F4yUnRYGUfP?3>JWm2OMv*X0APKkD0`$~`O>U+5evJLvxE%kjzU zgWf~j7VZRhJLT=^oeh6x@2HvDJnDR=uK$k*QloN59Ot<$S3e}01N(-DMz_1)Jbs29 zULkKxI6GYHddF~6}`WI&FYc$ z_lE`tKKLf_{Wu~zb=Q;3?wl)dXxoURU|(Y8vOGL_;&S}O>87c)!4r#0Hcua`&e&Vh zq+w633ngAmIoB|LZMny>_N5CITue}Pw5vPq>qCXD69H!I`?mETPXz87XdHjT@@W8j zq3u?4+3|vC_Q+A;_r_!b?zq+wT+)^Locrbzs)OC*clYKykEA3g1`)e8e+_3`_Uh9y zfY&Cg;I~57xRrZi%C4W>(D(Vz1(`;%cy&~0UEtnTDddpje-C}IlSXp}utF3Ml{Ce;GRpBA2FXTtG$s;ObjPkMCIQd>pj$qN@w|L;o#;@K8=q;He(&sCA>~VwqXB0jc*f1BTLw)#c!GDXv^d~-rt!JNy|3jJQcl+n$hNNpIXI);-ieduV z%+SEVAi%)D#NfcdzyUOsK>;Dyb$iWe{qWGOJoeun-iSK2-7htA-S2yh{YURdyzbYn zy3hFU^Zu~iY)f9t96MjrA-mwZT)yf4wxjVoxxFsy>eM|nGr4=?B>P_8(A^u8*;VAM z8HD;}l{GHi;5@$Sb!QvHiGK-(^>Wq^HIn`mDz7+tgVSB^bqYh>YoX*f3>oo)zgwJR zm}`XY@PV9UvWb1;F+QL}KPjZKqq`I64~Q>*xi=j4xVG}$>#b$1H+oqf{-{}d@pR3^ k+1Y3wL-DQ1{@o1B3~Zltoqi-qnKJ-^r>mdKI;Vst0HzL?ng9R* diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_send_disabled.png b/TMessagesProj/src/main/res/drawable-xxhdpi/ic_send_disabled.png deleted file mode 100755 index 633bad32f47d122772bb4473132621aa61abd0a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1083 zcmV-B1jPG^P)j{00004XF*Lt006JZ zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#%}GQ-RCwCt zTHj|}K@^_sj%6t!gb3`6t(&$tBlBZDmR7wf0MpjoVeMz($q9q!l+~`w7 zspe^k?n|SQ2#r4EX^ECnN^H+*zgg4Uy}Nhs&zZd+$KAbq@7(>qGjq<&nLE^KwS?n1 zQ$mQ_WScWHGuxsM(7hr}(Ekm5Zw|+sWV2*%iOff`D*0(pfIvWF01o@_WvgLlBG}-0H#i&Ife1^E*8gKMiLg#ql__{Y-yC`G^By(iR1f0q zv&#XW&+W`|c8~^-)#;e$8F|@9_twX8g>2i{_{kvw9Y zv^~!+K&^swGik+ThhR6HAZd=?r)iBbnXuQtldX_FNt3h}`MAdWDG0AX03#q{PIFC+ z=T#Bz1;=>F(|FHE*zHe1dJU1>Na&uABG|P{MZ)|2eIv<-@p`*dgxQ%D2upq+>1sn* zh+M!(&x?#3w3fbLEAh7H5$ya#df)Xio4P#*yKXQ4^<5vciM-dQMBw_EP2}C%MceRn zT?{Z3dCtqcXU65~$3(gzGJw$g^EM+VGK}8>3;=Q1A{p%UzS95z002ovPDHLkV1l|z B0rLO= diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_storage.png b/TMessagesProj/src/main/res/drawable-xxhdpi/ic_storage.png old mode 100644 new mode 100755 index a19c0aa887d187c1940540e1d077a99a0503dbeb..0c75f96fa8e14aa07d1dfaee0e6edf0351445f3c GIT binary patch literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY0wn)GsXhaw6p}rHd>I(3)EF2VS{N990fib~ zFff!FFfhDIU|_JC!N4G1FlSew4N!t9$=lt9;eUJonf*W>XMsm#F#`j)FbFd;%$g$s z6pZq8aSX}0_x9RpK?VT<7f0bOKRBB{t;`kta`c>ce*RttMi5xra7>r=0$%{1Q)5F` z)18I-4%g&3JPes4s}&UP%K;gTnr;f&{47f(8by=^fFMBk0*ftIxS{VvdsUz<44$rj JF6*2UngBn-JfQ#p literal 589 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 SvC3xv00002N2`@8phv63V)X1Q_; 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 U&zF{wC$0ZAXLa=KgO5VKL7v# diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/tooltip.png b/TMessagesProj/src/main/res/drawable-xxhdpi/tooltip.png deleted file mode 100755 index e02e62b5835b2a8898efdd482938322be82814d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 698 zcmeAS@N?(olHy`uVBq!ia0vp^Q9#_m!3HGL=YHGG22x2~E%kaYF4^c+=!IMLJ#?A=VB@)o z&f8_~)ci>`tGk?g)@Ax;+g)yKwY*i`+wRIJ$Y0Rj|MD8!t~q-puU+Q(W%cFSZM$g) zw{5ig7uy!M_-!)hGE3RZbAo<-+q38Gi{qy6zu);<61e|S|Lgv9A^#cWeZO2h|F?48 zGMl?KRoQQ(Z0EcP@v8KFn|yqA_`5Z~p7%>PO@DCV!a5`4i+hV7vQ>7(Dm}P2JMrd6 zujiHB*{?e;%5PrYCs)=|eSK|m%e}qjGykO8eXqDLpUA=cgZY>00fy5N$6f3C+Qop0 OkHOQ`&t;ucLK6Vdj7Vqz diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/top_pane.9.png b/TMessagesProj/src/main/res/drawable-xxhdpi/top_pane.9.png deleted file mode 100644 index 30b768df64721f12ebad817bae5095d7dc4bebe8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^3P3!GgAGWkRGjDnQXQTyjv*Dd-riZr+Ylh&a&R@L zJ8OiDW1Z`NQJKC4`;;ON=6w2NQV?z$Uw@_Mb=}-fIT@fX1_!ANAc{<|pMA$3pc_sw jPkSrT$#8FfmsQB!^tbn${g&EPf{gTZ^>bP0l+XkKKl?3k diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/top_pane_custom.9.png b/TMessagesProj/src/main/res/drawable-xxhdpi/top_pane_custom.9.png deleted file mode 100644 index e72232bd65391e493943250e09bd8da5d463ce0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^3P3!GgAGWkRGjDnQq`U=jv*Dd-rnBG$)LdFa&b-O z%YV*C&IL&;GTuM<{yvj|_vs - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/chat_outgoing_text_states.xml b/TMessagesProj/src/main/res/drawable/chat_outgoing_text_states.xml deleted file mode 100644 index d06b071c9..000000000 --- a/TMessagesProj/src/main/res/drawable/chat_outgoing_text_states.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/fast_thumb.xml b/TMessagesProj/src/main/res/drawable/fast_thumb.xml deleted file mode 100644 index 79b0792b4..000000000 --- a/TMessagesProj/src/main/res/drawable/fast_thumb.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/gray_button.xml b/TMessagesProj/src/main/res/drawable/gray_button.xml deleted file mode 100644 index 3ab27aed5..000000000 --- a/TMessagesProj/src/main/res/drawable/gray_button.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/launch_button_states.xml b/TMessagesProj/src/main/res/drawable/launch_button_states.xml deleted file mode 100644 index b9581e53c..000000000 --- a/TMessagesProj/src/main/res/drawable/launch_button_states.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/messages_list_divider.xml b/TMessagesProj/src/main/res/drawable/messages_list_divider.xml deleted file mode 100644 index 87dd7c211..000000000 --- a/TMessagesProj/src/main/res/drawable/messages_list_divider.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/messages_list_divider2.xml b/TMessagesProj/src/main/res/drawable/messages_list_divider2.xml deleted file mode 100644 index 42b348a2c..000000000 --- a/TMessagesProj/src/main/res/drawable/messages_list_divider2.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/photo_progress.xml b/TMessagesProj/src/main/res/drawable/photo_progress.xml deleted file mode 100644 index e0635bdd0..000000000 --- a/TMessagesProj/src/main/res/drawable/photo_progress.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/photo_progress_chat.xml b/TMessagesProj/src/main/res/drawable/photo_progress_chat.xml deleted file mode 100644 index 37f07f523..000000000 --- a/TMessagesProj/src/main/res/drawable/photo_progress_chat.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/progress_chat.xml b/TMessagesProj/src/main/res/drawable/progress_chat.xml deleted file mode 100644 index 0656b5e83..000000000 --- a/TMessagesProj/src/main/res/drawable/progress_chat.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/layout-ar/contact_add_layout.xml b/TMessagesProj/src/main/res/layout-ar/contact_add_layout.xml deleted file mode 100644 index 1fc9c0185..000000000 --- a/TMessagesProj/src/main/res/layout-ar/contact_add_layout.xml +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/layout-ar/document_item.xml b/TMessagesProj/src/main/res/layout-ar/document_item.xml deleted file mode 100644 index 96d3d776e..000000000 --- a/TMessagesProj/src/main/res/layout-ar/document_item.xml +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/layout-ar/launch_layout_tablet.xml b/TMessagesProj/src/main/res/layout-ar/launch_layout_tablet.xml deleted file mode 100644 index a86e2e185..000000000 --- a/TMessagesProj/src/main/res/layout-ar/launch_layout_tablet.xml +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/layout/chat_header_enc_layout.xml b/TMessagesProj/src/main/res/layout/chat_header_enc_layout.xml deleted file mode 100644 index 66a9281eb..000000000 --- a/TMessagesProj/src/main/res/layout/chat_header_enc_layout.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/layout/chat_header_layout.xml b/TMessagesProj/src/main/res/layout/chat_header_layout.xml deleted file mode 100644 index 35e9b977d..000000000 --- a/TMessagesProj/src/main/res/layout/chat_header_layout.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/layout/chat_layout.xml b/TMessagesProj/src/main/res/layout/chat_layout.xml index 57c147fb7..a37e137cf 100644 --- a/TMessagesProj/src/main/res/layout/chat_layout.xml +++ b/TMessagesProj/src/main/res/layout/chat_layout.xml @@ -19,7 +19,7 @@ android:paddingBottom="2dp" android:paddingLeft="7dp" android:paddingRight="7dp" - android:textSize="14dp" + android:textSize="16dp" android:id="@+id/searchEmptyView" android:layout_gravity="center"/> @@ -77,32 +77,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/layout/document_item.xml b/TMessagesProj/src/main/res/layout/document_item.xml deleted file mode 100644 index f2511bcef..000000000 --- a/TMessagesProj/src/main/res/layout/document_item.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/layout/document_select_layout.xml b/TMessagesProj/src/main/res/layout/document_select_layout.xml index e1b4db3a4..9576e5914 100644 --- a/TMessagesProj/src/main/res/layout/document_select_layout.xml +++ b/TMessagesProj/src/main/res/layout/document_select_layout.xml @@ -19,7 +19,7 @@ android:layout_height="match_parent" android:textColor="#808080" android:gravity="center" - android:textSize="24dp" + android:textSize="20dp" android:id="@+id/searchEmptyView" android:visibility="gone" android:layout_gravity="top"/> diff --git a/TMessagesProj/src/main/res/layout/empty_layout.xml b/TMessagesProj/src/main/res/layout/empty_layout.xml deleted file mode 100644 index 26e058fd9..000000000 --- a/TMessagesProj/src/main/res/layout/empty_layout.xml +++ /dev/null @@ -1,5 +0,0 @@ - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/layout/group_create_final_layout.xml b/TMessagesProj/src/main/res/layout/group_create_final_layout.xml deleted file mode 100644 index 8f2b40899..000000000 --- a/TMessagesProj/src/main/res/layout/group_create_final_layout.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/TMessagesProj/src/main/res/layout/language_select_layout.xml b/TMessagesProj/src/main/res/layout/language_select_layout.xml deleted file mode 100644 index d14c2951c..000000000 --- a/TMessagesProj/src/main/res/layout/language_select_layout.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/layout/launch_layout_tablet.xml b/TMessagesProj/src/main/res/layout/launch_layout_tablet.xml deleted file mode 100644 index 740ed46a2..000000000 --- a/TMessagesProj/src/main/res/layout/launch_layout_tablet.xml +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/layout/media_layout.xml b/TMessagesProj/src/main/res/layout/media_layout.xml index e29bce34d..04b9f3a89 100644 --- a/TMessagesProj/src/main/res/layout/media_layout.xml +++ b/TMessagesProj/src/main/res/layout/media_layout.xml @@ -25,7 +25,7 @@ android:layout_height="match_parent" android:textColor="#808080" android:gravity="center" - android:textSize="24dp" + android:textSize="20dp" android:id="@+id/searchEmptyView" android:visibility="gone"/> diff --git a/TMessagesProj/src/main/res/layout/messages_list.xml b/TMessagesProj/src/main/res/layout/messages_list.xml index 5309106a0..b051134b5 100644 --- a/TMessagesProj/src/main/res/layout/messages_list.xml +++ b/TMessagesProj/src/main/res/layout/messages_list.xml @@ -14,18 +14,33 @@ android:dividerHeight="0px" android:animationCache="false"/> - + android:visibility="gone"> + + + + + + diff --git a/TMessagesProj/src/main/res/layout/popup_notification_layout.xml b/TMessagesProj/src/main/res/layout/popup_notification_layout.xml index 6a5a3ab6f..0bc24ab78 100644 --- a/TMessagesProj/src/main/res/layout/popup_notification_layout.xml +++ b/TMessagesProj/src/main/res/layout/popup_notification_layout.xml @@ -19,140 +19,147 @@ android:layout_marginRight="12dp" android:id="@+id/popup_container"> - + android:id="@+id/chat_compose_panel" + android:background="@drawable/compose_panel" + android:orientation="horizontal"> - - - - - + android:layout_width="0dp" + android:layout_weight="1"> - + - + android:layout_gravity="bottom" + android:id="@+id/chat_text_edit" + android:layout_marginTop="2dp" + android:maxLines="2" + android:textSize="18dp" + android:textColorHint="#909090" + android:ems="10" + android:imeOptions="flagNoExtractUi" + android:inputType="textCapSentences|textMultiLine" + android:maxLength="16384" + android:layout_marginLeft="52dp" + android:layout_marginRight="2dp" + android:layout_marginBottom="4dp" + android:paddingBottom="10dp" + android:paddingTop="4dp" + android:textCursorDrawable="@null" + android:textColor="#000000"/> - + + + + + + + + + + + android:paddingLeft="13dp" + android:orientation="horizontal" + android:background="#ffffffff"> - + - + - + - + - + - - - - - + android:layout_gravity="bottom" + android:layout_marginTop="2dp"> - + + + + + + + diff --git a/TMessagesProj/src/main/res/layout/popup_text_layout.xml b/TMessagesProj/src/main/res/layout/popup_text_layout.xml index 8f949a756..02358aace 100644 --- a/TMessagesProj/src/main/res/layout/popup_text_layout.xml +++ b/TMessagesProj/src/main/res/layout/popup_text_layout.xml @@ -19,6 +19,7 @@ android:layout_height="wrap_content" android:textSize="16dp" android:textColor="#ff000000" + android:textColorLink="#ff000000" android:id="@+id/message_text" android:gravity="center" android:layout_gravity="center"/> diff --git a/TMessagesProj/src/main/res/raw/sound_a.wav b/TMessagesProj/src/main/res/raw/sound_a.wav deleted file mode 100644 index c6b95a1ef224b0a2ae331cd9a1f8a3b1027e0a59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 352828 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

`m;coavm_+;&_lR3smG?|BP>M-vK!A^t257?yp) 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 z%0A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

  • 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∨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 Lx3p@-x4!j%Y9k|X diff --git a/TMessagesProj/src/main/res/values/colors.xml b/TMessagesProj/src/main/res/values/colors.xml index 3636d32c2..9b1c746d2 100755 --- a/TMessagesProj/src/main/res/values/colors.xml +++ b/TMessagesProj/src/main/res/values/colors.xml @@ -1,9 +1,6 @@ #6633B5E5 - #ffd6e4ef - #ff000000 - #ffffffff #dcdcdc #ff54759e \ No newline at end of file diff --git a/TMessagesProj/src/main/res/values/dimens.xml b/TMessagesProj/src/main/res/values/dimens.xml deleted file mode 100644 index 47c822467..000000000 --- a/TMessagesProj/src/main/res/values/dimens.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - 16dp - 16dp - diff --git a/TMessagesProj/src/main/res/values/strings.xml b/TMessagesProj/src/main/res/values/strings.xml index 07152d993..c4c382516 100644 --- a/TMessagesProj/src/main/res/values/strings.xml +++ b/TMessagesProj/src/main/res/values/strings.xml @@ -28,16 +28,13 @@ Last name (optional) Cancel registration - Chats - Search - New messages Settings Contacts New Group yesterday No results No chats yet... - Start messaging by pressing the\ncompose button in the top right corner\nor tap the menu button for more options. + Start messaging by pressing the\nnew message button in the bottom right corner\nor tap the menu button for more options. Waiting for network... Connecting... Updating... @@ -47,16 +44,15 @@ Exchanging encryption keys... %s joined your secret chat. You joined the secret chat. - Clear History + Clear history Delete and exit + Delete chat Hidden Name Select Chat Tap and hold to view %1$s is using an older version of Telegram, so secret photos will be shown in compatibility mode.\n\nOnce %2$s updates Telegram, photos with timers for 1 minute or less will start working in \'Tap and hold to view\' mode, and you will be notified whenever the other party takes a screenshot. - CONVERSATIONS MESSAGES - Broadcast List New Broadcast List Enter list name You created a broadcast list @@ -75,10 +71,10 @@ External Storage System Root SD Card + Folder invisible typing... - Attach is typing... are typing... Got a question\nabout Telegram? @@ -88,18 +84,13 @@ Video Document No messages here yet... - View Photo - View Location - Play Video Forwarded message From No recent Message - Type message - Download - Selected: %d - SHARE MY CONTACT INFO - ADD TO CONTACTS + Message + Share my contact + Add to contacts %s invited you to join a secret chat. You have invited %s to join a secret chat. Secret chats: @@ -116,8 +107,6 @@ Apply localization file Unsupported attachment - Secret chat requested - Secret chat started %1$s set the self-destruct timer to %2$s You set the self-destruct timer to %1$s %1$s disabled the self-destruct timer @@ -160,21 +149,21 @@ today at yesterday at online - offline last seen last seen Invite Friends GLOBAL SEARCH + last seen recently + last seen within a week + last seen within a month + last seen a long time ago Send message to... Enter group name Group name - ALL CONTACTS %1$d/%2$d members - Enter group name Shared Media - Group Info Settings Add member Delete and leave group @@ -192,11 +181,8 @@ Work Other Main - Contact Info - PHONE Start Secret Chat An error occurred. - Secret Chat Encryption Key Self-Destruct Timer Off @@ -240,9 +226,7 @@ Undo all custom notification settings for all your contacts and groups Notifications and Sounds Blocked Users - Save Incoming Photos Log out - YOUR FIRST AND LAST NAME No sound Default Support @@ -266,7 +250,6 @@ 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. Sort By Import Contacts - Via WiFi only First name Last name LED Color @@ -289,9 +272,7 @@ Edit name No shared media yet - Cancel Download - My location Map Satellite Hybrid @@ -325,6 +306,8 @@ Delete your account? Never Change who can see your Last Seen time. + Who can see your Last Seen time? + Add exceptions Important: you won\'t be able to see Last Seen times for people with whom you don\'t share your Last Seen time. Approximate last seen will be shown instead (recently, within a week, witin a month). Always Share With Never Share With @@ -334,9 +317,9 @@ Never Share Never share with users... Add Users - Add %1$s to this list? Sorry, too many requests. Unable to change privacy settings now, please wait. - + Logs out all devices except for this one. + Tap and hold on user to delete. Edit Video Original Video @@ -360,7 +343,6 @@ From camera From gallery Delete photo - Open photo Set OK @@ -403,10 +385,8 @@ You don\'t have applications that can handle the file type \'%1$s\', please install one to continue This user does not have Telegram yet, send an invitation? Are you sure? - Add contact? Add %1$s to the group?\n\nNumber of last messages to forward: Forward messages to %1$s? - Delete this chat? Send messages to %1$s? Are you sure you want to log out? Are you sure you want to terminate all other sessions? @@ -418,7 +398,7 @@ Are you sure you want to delete this contact? Are you sure you want to start a secret chat? Are you sure you want to cancel registration? - forward from my name + Are you sure you want to clear history? Send messages to %1$s? Forward messages to %1$s? Sorry, this feature is currently not available in your country. @@ -505,6 +485,18 @@ %1$d weeks %1$d weeks %1$d weeks + %1$d months + %1$d month + %1$d months + %1$d months + %1$d months + %1$d months + %1$d years + %1$d year + %1$d years + %1$d years + %1$d years + %1$d years %1$d users %1$d user %1$d users