From ca46b69b38785a34e917ab9b367bfa9f68b13613 Mon Sep 17 00:00:00 2001 From: DrKLO Date: Wed, 12 Nov 2014 01:16:17 +0300 Subject: [PATCH] More Android L design --- .../telegram/android/AndroidUtilities.java | 25 + .../telegram/android/MessagesController.java | 12 +- ...loatProperty.java => FloatProperty10.java} | 4 +- .../ui/Animation/ObjectAnimator10.java | 26 +- .../ui/Animation/PropertyValuesHolder.java | 14 +- .../ui/AnimationCompat/AnimatorSetProxy.java | 17 + .../AnimationCompat/ObjectAnimatorProxy.java | 32 + .../telegram/ui/Cells/ChatContactCell.java | 1 + .../org/telegram/ui/Cells/DetailTextCell.java | 49 ++ .../org/telegram/ui/Cells/DialogCell.java | 8 +- .../org/telegram/ui/Cells/DividerCell.java | 9 +- .../org/telegram/ui/Cells/HeaderCell.java | 70 ++ .../telegram/ui/Cells/ProfileSearchCell.java | 6 +- .../telegram/ui/Cells/ShadowSectionCell.java | 48 ++ .../org/telegram/ui/Cells/TextCheckCell.java | 88 ++ .../org/telegram/ui/Cells/TextDetailCell.java | 4 +- .../ui/Cells/TextDetailSettingsCell.java | 91 ++ .../telegram/ui/Cells/TextSettingsCell.java | 101 +++ .../java/org/telegram/ui/ChatActivity.java | 234 +++--- .../org/telegram/ui/ChatProfileActivity.java | 16 +- .../ui/ChatProfileChangeNameActivity.java | 6 +- .../org/telegram/ui/ContactAddActivity.java | 6 +- .../org/telegram/ui/ContactsActivity.java | 14 +- .../telegram/ui/CountrySelectActivity.java | 12 +- .../telegram/ui/DocumentSelectActivity.java | 20 +- .../org/telegram/ui/GroupCreateActivity.java | 20 +- .../telegram/ui/GroupCreateFinalActivity.java | 14 +- .../org/telegram/ui/IdenticonActivity.java | 12 +- .../telegram/ui/LanguageSelectActivity.java | 12 +- .../java/org/telegram/ui/LaunchActivity.java | 5 +- .../org/telegram/ui/LocationActivity.java | 14 +- .../java/org/telegram/ui/LoginActivity.java | 14 +- .../java/org/telegram/ui/MediaActivity.java | 13 +- .../org/telegram/ui/MessagesActivity.java | 36 +- .../org/telegram/ui/PhotoCropActivity.java | 6 +- .../org/telegram/ui/PhotoPickerActivity.java | 20 +- .../java/org/telegram/ui/PhotoViewer.java | 29 +- .../ui/PopupNotificationActivity.java | 50 +- .../java/org/telegram/ui/ProfileActivity.java | 151 ++-- .../ui/ProfileNotificationsActivity.java | 37 +- .../org/telegram/ui/SettingsActivity.java | 775 ++++++++++-------- .../ui/SettingsBlockedUsersActivity.java | 12 +- .../ui/SettingsChangeNameActivity.java | 6 +- .../ui/SettingsChangeUsernameActivity.java | 6 +- .../ui/SettingsNotificationsActivity.java | 77 +- .../ui/SettingsWallpapersActivity.java | 6 +- .../org/telegram/ui/VideoEditorActivity.java | 14 +- .../ui/Views/ActionBar/ActionBar.java | 573 ++++++++++--- .../ui/Views/ActionBar/ActionBarLayer.java | 469 ----------- .../ui/Views/ActionBar/ActionBarLayout.java | 444 +++++----- .../ui/Views/ActionBar/ActionBarMenu.java | 24 +- .../ui/Views/ActionBar/ActionBarMenuItem.java | 27 +- .../ui/Views/ActionBar/BaseFragment.java | 58 +- .../ActionBar/DrawerLayoutContainer.java | 22 +- .../org/telegram/ui/Views/AvatarDrawable.java | 14 +- .../java/org/telegram/ui/Views/Switch.java | 688 ++++++++++++++++ .../src/main/res/anim/decelerate_cubic.xml | 3 - .../src/main/res/anim/icon_anim_fade_in.xml | 14 - .../src/main/res/anim/icon_anim_fade_out.xml | 14 - TMessagesProj/src/main/res/anim/scale_in.xml | 31 - TMessagesProj/src/main/res/anim/scale_out.xml | 34 - .../src/main/res/drawable-hdpi/broadcast.png | Bin 1143 -> 0 bytes .../main/res/drawable-hdpi/doc_actions_g.png | Bin 1010 -> 0 bytes .../res/drawable-hdpi/floating3_profile.png | Bin 0 -> 3795 bytes .../floating3_profile_pressed.png | Bin 0 -> 4148 bytes .../res/drawable-hdpi/floating4_profile.png | Bin 0 -> 4136 bytes .../floating4_profile_pressed.png | Bin 0 -> 4447 bytes .../main/res/drawable-hdpi/greydivider.png | Bin 0 -> 960 bytes .../main/res/drawable-hdpi/ic_ab_attach.png | Bin 1681 -> 1677 bytes .../src/main/res/drawable-hdpi/ic_ab_doc.png | Bin 883 -> 1110 bytes .../res/drawable-hdpi/ic_ab_done_gray.png | Bin 1309 -> 1175 bytes .../main/res/drawable-hdpi/ic_ab_fwd_copy.png | Bin 273 -> 1162 bytes .../res/drawable-hdpi/ic_ab_fwd_delete.png | Bin 617 -> 1100 bytes .../res/drawable-hdpi/ic_ab_fwd_forward.png | Bin 585 -> 1399 bytes .../res/drawable-hdpi/ic_attach_gallery.png | Bin 436 -> 1248 bytes .../res/drawable-hdpi/ic_attach_location.png | Bin 742 -> 1490 bytes .../res/drawable-hdpi/ic_attach_photo.png | Bin 656 -> 1442 bytes .../res/drawable-hdpi/ic_attach_video.png | Bin 274 -> 1045 bytes .../main/res/drawable-hdpi/layer_shadow.png | Bin 0 -> 943 bytes .../main/res/drawable-hdpi/list_broadcast.png | Bin 0 -> 1143 bytes .../src/main/res/drawable-hdpi/phone_grey.png | Bin 0 -> 1394 bytes .../main/res/drawable-hdpi/profile_list.png | Bin 0 -> 990 bytes .../res/drawable-hdpi/switch_to_on1.9.png | Bin 0 -> 17227 bytes .../res/drawable-hdpi/switch_to_on2.9.png | Bin 0 -> 17243 bytes .../main/res/drawable-hdpi/switch_track.9.png | Bin 0 -> 468 bytes .../src/main/res/drawable-mdpi/broadcast.png | Bin 1071 -> 0 bytes .../main/res/drawable-mdpi/doc_actions_b.png | Bin 987 -> 0 bytes .../main/res/drawable-mdpi/doc_actions_g.png | Bin 981 -> 0 bytes .../res/drawable-mdpi/floating3_profile.png | Bin 0 -> 2622 bytes .../floating3_profile_pressed.png | Bin 0 -> 2907 bytes .../res/drawable-mdpi/floating4_profile.png | Bin 0 -> 2717 bytes .../floating4_profile_pressed.png | Bin 0 -> 2988 bytes .../main/res/drawable-mdpi/greydivider.png | Bin 0 -> 954 bytes .../main/res/drawable-mdpi/ic_ab_attach.png | Bin 1406 -> 1397 bytes .../src/main/res/drawable-mdpi/ic_ab_doc.png | Bin 604 -> 1037 bytes .../res/drawable-mdpi/ic_ab_done_gray.png | Bin 1228 -> 1078 bytes .../main/res/drawable-mdpi/ic_ab_fwd_copy.png | Bin 233 -> 1048 bytes .../res/drawable-mdpi/ic_ab_fwd_delete.png | Bin 441 -> 1016 bytes .../res/drawable-mdpi/ic_ab_fwd_forward.png | Bin 416 -> 1264 bytes .../res/drawable-mdpi/ic_attach_gallery.png | Bin 326 -> 1131 bytes .../res/drawable-mdpi/ic_attach_location.png | Bin 555 -> 1261 bytes .../res/drawable-mdpi/ic_attach_photo.png | Bin 445 -> 1227 bytes .../res/drawable-mdpi/ic_attach_video.png | Bin 216 -> 990 bytes .../main/res/drawable-mdpi/layer_shadow.png | Bin 0 -> 944 bytes .../main/res/drawable-mdpi/list_broadcast.png | Bin 0 -> 1068 bytes .../src/main/res/drawable-mdpi/phone_grey.png | Bin 0 -> 1227 bytes .../main/res/drawable-mdpi/profile_list.png | Bin 0 -> 972 bytes .../res/drawable-mdpi/switch_to_on1.9.png | Bin 0 -> 707 bytes .../res/drawable-mdpi/switch_to_on2.9.png | Bin 0 -> 789 bytes .../main/res/drawable-mdpi/switch_track.9.png | Bin 0 -> 270 bytes .../res/drawable-v21/bar_selector_blue.xml | 4 + .../res/drawable-v21/bar_selector_cyan.xml | 4 + .../res/drawable-v21/bar_selector_green.xml | 4 + .../res/drawable-v21/bar_selector_orange.xml | 4 + .../res/drawable-v21/bar_selector_pink.xml | 4 + .../res/drawable-v21/bar_selector_red.xml | 4 + .../res/drawable-v21/bar_selector_violet.xml | 4 + .../res/drawable-v21/bar_selector_yellow.xml | 4 + .../src/main/res/drawable-xhdpi/broadcast.png | Bin 1231 -> 0 bytes .../main/res/drawable-xhdpi/doc_actions_b.png | Bin 1046 -> 1110 bytes .../main/res/drawable-xhdpi/doc_actions_g.png | Bin 1045 -> 0 bytes .../res/drawable-xhdpi/floating3_profile.png | Bin 0 -> 5184 bytes .../floating3_profile_pressed.png | Bin 0 -> 5451 bytes .../res/drawable-xhdpi/floating4_profile.png | Bin 0 -> 5472 bytes .../floating4_profile_pressed.png | Bin 0 -> 5723 bytes .../main/res/drawable-xhdpi/greydivider.png | Bin 0 -> 976 bytes .../main/res/drawable-xhdpi/ic_ab_attach.png | Bin 2589 -> 2573 bytes .../src/main/res/drawable-xhdpi/ic_ab_doc.png | Bin 1690 -> 1171 bytes .../res/drawable-xhdpi/ic_ab_done_gray.png | Bin 1284 -> 1233 bytes .../res/drawable-xhdpi/ic_ab_fwd_copy.png | Bin 299 -> 1177 bytes .../res/drawable-xhdpi/ic_ab_fwd_delete.png | Bin 734 -> 1110 bytes .../res/drawable-xhdpi/ic_ab_fwd_forward.png | Bin 692 -> 1536 bytes .../res/drawable-xhdpi/ic_attach_gallery.png | Bin 511 -> 1335 bytes .../res/drawable-xhdpi/ic_attach_location.png | Bin 970 -> 1607 bytes .../res/drawable-xhdpi/ic_attach_photo.png | Bin 798 -> 1588 bytes .../res/drawable-xhdpi/ic_attach_video.png | Bin 318 -> 1032 bytes .../main/res/drawable-xhdpi/layer_shadow.png | Bin 0 -> 946 bytes .../res/drawable-xhdpi/list_broadcast.png | Bin 0 -> 1231 bytes .../main/res/drawable-xhdpi/phone_grey.png | Bin 0 -> 1571 bytes .../profile_list.png} | Bin 1011 -> 1024 bytes .../res/drawable-xhdpi/switch_to_on1.9.png | Bin 0 -> 17992 bytes .../res/drawable-xhdpi/switch_to_on2.9.png | Bin 0 -> 18134 bytes .../res/drawable-xhdpi/switch_track.9.png | Bin 0 -> 708 bytes .../main/res/drawable-xxhdpi/broadcast.png | Bin 1384 -> 0 bytes .../res/drawable-xxhdpi/doc_actions_b.png | Bin 1107 -> 1248 bytes .../res/drawable-xxhdpi/doc_actions_g.png | Bin 1102 -> 1250 bytes .../res/drawable-xxhdpi/floating3_profile.png | Bin 0 -> 7956 bytes .../floating3_profile_pressed.png | Bin 0 -> 7807 bytes .../res/drawable-xxhdpi/floating4_profile.png | Bin 0 -> 8622 bytes .../floating4_profile_pressed.png | Bin 0 -> 8495 bytes .../main/res/drawable-xxhdpi/greydivider.png | Bin 0 -> 985 bytes .../main/res/drawable-xxhdpi/ic_ab_attach.png | Bin 2431 -> 2413 bytes .../main/res/drawable-xxhdpi/ic_ab_doc.png | Bin 1620 -> 1299 bytes .../res/drawable-xxhdpi/ic_ab_done_gray.png | Bin 1503 -> 1393 bytes .../res/drawable-xxhdpi/ic_ab_fwd_copy.png | Bin 388 -> 1324 bytes .../res/drawable-xxhdpi/ic_ab_fwd_delete.png | Bin 1053 -> 1209 bytes .../res/drawable-xxhdpi/ic_ab_fwd_forward.png | Bin 1022 -> 1904 bytes .../res/drawable-xxhdpi/ic_attach_gallery.png | Bin 700 -> 1552 bytes .../drawable-xxhdpi/ic_attach_location.png | Bin 1465 -> 1993 bytes .../res/drawable-xxhdpi/ic_attach_photo.png | Bin 1148 -> 1949 bytes .../res/drawable-xxhdpi/ic_attach_video.png | Bin 438 -> 1092 bytes .../main/res/drawable-xxhdpi/layer_shadow.png | Bin 0 -> 943 bytes .../res/drawable-xxhdpi/list_broadcast.png | Bin 0 -> 1383 bytes .../main/res/drawable-xxhdpi/phone_grey.png | Bin 0 -> 1857 bytes .../main/res/drawable-xxhdpi/profile_list.png | Bin 0 -> 1072 bytes .../res/drawable-xxhdpi/switch_to_on1.9.png | Bin 0 -> 19313 bytes .../res/drawable-xxhdpi/switch_to_on2.9.png | Bin 0 -> 19985 bytes .../res/drawable-xxhdpi/switch_track.9.png | Bin 0 -> 1105 bytes .../main/res/drawable/bar_selector_blue.xml | 19 + .../main/res/drawable/bar_selector_cyan.xml | 19 + .../main/res/drawable/bar_selector_green.xml | 19 + .../main/res/drawable/bar_selector_orange.xml | 19 + .../main/res/drawable/bar_selector_pink.xml | 19 + .../main/res/drawable/bar_selector_red.xml | 19 + .../main/res/drawable/bar_selector_violet.xml | 19 + .../main/res/drawable/bar_selector_yellow.xml | 19 + .../res/drawable/floating_group_states.xml | 15 + .../res/drawable/floating_user_states.xml | 15 + .../src/main/res/drawable/switch_thumb.xml | 5 + .../src/main/res/layout/settings_layout.xml | 23 - .../src/main/res/values-ar/strings.xml | 1 - .../src/main/res/values-de/strings.xml | 1 - .../src/main/res/values-es/strings.xml | 1 - .../src/main/res/values-it/strings.xml | 1 - .../src/main/res/values-ko/strings.xml | 1 - .../src/main/res/values-nl/strings.xml | 1 - .../src/main/res/values-pt-rBR/strings.xml | 1 - .../src/main/res/values-pt-rPT/strings.xml | 1 - .../src/main/res/values-v21/styles.xml | 11 + TMessagesProj/src/main/res/values/strings.xml | 12 +- 190 files changed, 3120 insertions(+), 1810 deletions(-) rename TMessagesProj/src/main/java/org/telegram/ui/Animation/{FloatProperty.java => FloatProperty10.java} (88%) create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Cells/DetailTextCell.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Cells/HeaderCell.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Cells/ShadowSectionCell.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCheckCell.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Cells/TextDetailSettingsCell.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Cells/TextSettingsCell.java delete mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/ActionBarLayer.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Views/Switch.java delete mode 100644 TMessagesProj/src/main/res/anim/decelerate_cubic.xml delete mode 100644 TMessagesProj/src/main/res/anim/scale_in.xml delete mode 100644 TMessagesProj/src/main/res/anim/scale_out.xml delete mode 100644 TMessagesProj/src/main/res/drawable-hdpi/broadcast.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/doc_actions_g.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/floating3_profile.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/floating3_profile_pressed.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/floating4_profile.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/floating4_profile_pressed.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/greydivider.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-hdpi/ic_ab_attach.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-hdpi/ic_ab_doc.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-hdpi/ic_ab_done_gray.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-hdpi/ic_ab_fwd_copy.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-hdpi/ic_ab_fwd_delete.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-hdpi/ic_ab_fwd_forward.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/layer_shadow.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/list_broadcast.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/phone_grey.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/profile_list.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/switch_to_on1.9.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/switch_to_on2.9.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/switch_track.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-mdpi/broadcast.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/doc_actions_b.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/doc_actions_g.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/floating3_profile.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/floating3_profile_pressed.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/floating4_profile.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/floating4_profile_pressed.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/greydivider.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-mdpi/ic_ab_attach.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-mdpi/ic_ab_doc.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-mdpi/ic_ab_done_gray.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-mdpi/ic_ab_fwd_copy.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-mdpi/ic_ab_fwd_delete.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-mdpi/ic_ab_fwd_forward.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/layer_shadow.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/list_broadcast.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/phone_grey.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/profile_list.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/switch_to_on1.9.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/switch_to_on2.9.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/switch_track.9.png create mode 100644 TMessagesProj/src/main/res/drawable-v21/bar_selector_blue.xml create mode 100644 TMessagesProj/src/main/res/drawable-v21/bar_selector_cyan.xml create mode 100644 TMessagesProj/src/main/res/drawable-v21/bar_selector_green.xml create mode 100644 TMessagesProj/src/main/res/drawable-v21/bar_selector_orange.xml create mode 100644 TMessagesProj/src/main/res/drawable-v21/bar_selector_pink.xml create mode 100644 TMessagesProj/src/main/res/drawable-v21/bar_selector_red.xml create mode 100644 TMessagesProj/src/main/res/drawable-v21/bar_selector_violet.xml create mode 100644 TMessagesProj/src/main/res/drawable-v21/bar_selector_yellow.xml delete mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/broadcast.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/doc_actions_g.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/floating3_profile.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/floating3_profile_pressed.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/floating4_profile.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/floating4_profile_pressed.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/greydivider.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_attach.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_doc.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_done_gray.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_fwd_copy.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_fwd_delete.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_fwd_forward.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/layer_shadow.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/list_broadcast.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/phone_grey.png rename TMessagesProj/src/main/res/{drawable-hdpi/doc_actions_b.png => drawable-xhdpi/profile_list.png} (50%) create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/switch_to_on1.9.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/switch_to_on2.9.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/switch_track.9.png delete mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/broadcast.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/floating3_profile.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/floating3_profile_pressed.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/floating4_profile.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/floating4_profile_pressed.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/greydivider.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_attach.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_doc.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_done_gray.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_fwd_copy.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_fwd_delete.png mode change 100644 => 100755 TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_fwd_forward.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/layer_shadow.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/list_broadcast.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/phone_grey.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/profile_list.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/switch_to_on1.9.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/switch_to_on2.9.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/switch_track.9.png create mode 100644 TMessagesProj/src/main/res/drawable/bar_selector_blue.xml create mode 100644 TMessagesProj/src/main/res/drawable/bar_selector_cyan.xml create mode 100644 TMessagesProj/src/main/res/drawable/bar_selector_green.xml create mode 100644 TMessagesProj/src/main/res/drawable/bar_selector_orange.xml create mode 100644 TMessagesProj/src/main/res/drawable/bar_selector_pink.xml create mode 100644 TMessagesProj/src/main/res/drawable/bar_selector_red.xml create mode 100644 TMessagesProj/src/main/res/drawable/bar_selector_violet.xml create mode 100644 TMessagesProj/src/main/res/drawable/bar_selector_yellow.xml create mode 100644 TMessagesProj/src/main/res/drawable/floating_group_states.xml create mode 100644 TMessagesProj/src/main/res/drawable/floating_user_states.xml create mode 100644 TMessagesProj/src/main/res/drawable/switch_thumb.xml delete mode 100644 TMessagesProj/src/main/res/layout/settings_layout.xml diff --git a/TMessagesProj/src/main/java/org/telegram/android/AndroidUtilities.java b/TMessagesProj/src/main/java/org/telegram/android/AndroidUtilities.java index c77842c5a..ccaf8f101 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/AndroidUtilities.java +++ b/TMessagesProj/src/main/java/org/telegram/android/AndroidUtilities.java @@ -24,7 +24,10 @@ import android.view.Surface; import android.view.View; import android.view.WindowManager; import android.view.inputmethod.InputMethodManager; +import android.widget.AbsListView; +import android.widget.EdgeEffect; import android.widget.EditText; +import android.widget.ListView; import android.widget.TextView; import org.telegram.messenger.FileLog; @@ -466,4 +469,26 @@ public class AndroidUtilities { } return size; } + + public static void setListViewEdgeEffectColor(ListView listView, int color) { + if (Build.VERSION.SDK_INT >= 21) { + try { + Field field = AbsListView.class.getDeclaredField("mEdgeGlowTop"); + field.setAccessible(true); + EdgeEffect mEdgeGlowTop = (EdgeEffect) field.get(listView); + if (mEdgeGlowTop != null) { + mEdgeGlowTop.setColor(color); + } + + field = AbsListView.class.getDeclaredField("mEdgeGlowBottom"); + field.setAccessible(true); + EdgeEffect mEdgeGlowBottom = (EdgeEffect) field.get(listView); + if (mEdgeGlowBottom != null) { + mEdgeGlowBottom.setColor(color); + } + } catch (Exception e) { + FileLog.e("tmessages", e); + } + } + } } diff --git a/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java b/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java index 76fb997ee..f6332c27c 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java +++ b/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java @@ -110,6 +110,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter public static final int UPDATE_MASK_USER_PRINT = 64; public static final int UPDATE_MASK_USER_PHONE = 128; public static final int UPDATE_MASK_READ_DIALOG_MESSAGE = 256; + public static final int UPDATE_MASK_SELECT_DIALOG = 512; public static final int UPDATE_MASK_ALL = UPDATE_MASK_AVATAR | UPDATE_MASK_STATUS | UPDATE_MASK_NAME | UPDATE_MASK_CHAT_AVATAR | UPDATE_MASK_CHAT_NAME | UPDATE_MASK_CHAT_MEMBERS | UPDATE_MASK_USER_PRINT | UPDATE_MASK_USER_PHONE | UPDATE_MASK_READ_DIALOG_MESSAGE; public static class PrintingUser { @@ -1006,6 +1007,9 @@ public class MessagesController implements NotificationCenter.NotificationCenter } public void deleteDialog(final long did, int offset, final boolean onlyHistory) { + if (offset == 0) { + MessagesStorage.getInstance().deleteDialog(did, onlyHistory); + } TLRPC.TL_dialog dialog = dialogs_dict.get(did); if (dialog != null) { int lower_part = (int)did; @@ -1035,7 +1039,6 @@ public class MessagesController implements NotificationCenter.NotificationCenter }); } }); - MessagesStorage.getInstance().deleteDialog(did, onlyHistory); NotificationCenter.getInstance().postNotificationName(NotificationCenter.removeAllMessagesFromDialog, did); NotificationCenter.getInstance().postNotificationName(NotificationCenter.dialogsNeedReload); } @@ -1760,7 +1763,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter TLRPC.TL_dialog dialog = dialogs_dict.get(dialog_id); if (dialog != null) { dialog.unread_count = 0; - NotificationCenter.getInstance().postNotificationName(NotificationCenter.dialogsNeedReload); + NotificationCenter.getInstance().postNotificationName(NotificationCenter.updateInterfaces, UPDATE_MASK_READ_DIALOG_MESSAGE); } if (!popup) { NotificationsController.getInstance().processReadMessages(null, dialog_id, 0, max_positive_id, false); @@ -1824,7 +1827,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter TLRPC.TL_dialog dialog = dialogs_dict.get(dialog_id); if (dialog != null) { dialog.unread_count = 0; - NotificationCenter.getInstance().postNotificationName(NotificationCenter.dialogsNeedReload); + NotificationCenter.getInstance().postNotificationName(NotificationCenter.updateInterfaces, UPDATE_MASK_READ_DIALOG_MESSAGE); } HashMap dialogsToUpdate = new HashMap(); dialogsToUpdate.put(dialog_id, 0); @@ -2049,6 +2052,9 @@ public class MessagesController implements NotificationCenter.NotificationCenter return; } final TLRPC.messages_StatedMessage res = (TLRPC.messages_StatedMessage) response; + if (user.id == UserConfig.getClientUserId()) { + res.chats = null; + } MessagesStorage.getInstance().putUsersAndChats(res.users, res.chats, true, true); AndroidUtilities.runOnUIThread(new Runnable() { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Animation/FloatProperty.java b/TMessagesProj/src/main/java/org/telegram/ui/Animation/FloatProperty10.java similarity index 88% rename from TMessagesProj/src/main/java/org/telegram/ui/Animation/FloatProperty.java rename to TMessagesProj/src/main/java/org/telegram/ui/Animation/FloatProperty10.java index 870f895c6..1a05b3bce 100755 --- a/TMessagesProj/src/main/java/org/telegram/ui/Animation/FloatProperty.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Animation/FloatProperty10.java @@ -15,9 +15,9 @@ */ package org.telegram.ui.Animation; -public abstract class FloatProperty extends Property { +public abstract class FloatProperty10 extends Property { - public FloatProperty(String name) { + public FloatProperty10(String name) { super(Float.class, name); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Animation/ObjectAnimator10.java b/TMessagesProj/src/main/java/org/telegram/ui/Animation/ObjectAnimator10.java index 6b97065ba..6aa87d569 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Animation/ObjectAnimator10.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Animation/ObjectAnimator10.java @@ -18,6 +18,8 @@ package org.telegram.ui.Animation; import android.view.View; +import org.telegram.ui.Views.ActionBar.ActionBarLayout; + import java.util.HashMap; public final class ObjectAnimator10 extends ValueAnimator { @@ -25,7 +27,7 @@ public final class ObjectAnimator10 extends ValueAnimator { private static final HashMap PROXY_PROPERTIES = new HashMap(); static { - Property ALPHA = new FloatProperty("alpha") { + Property ALPHA = new FloatProperty10("alpha") { @Override public void setValue(View object, float value) { View10.wrap(object).setAlpha(value); @@ -37,7 +39,7 @@ public final class ObjectAnimator10 extends ValueAnimator { } }; - Property PIVOT_X = new FloatProperty("pivotX") { + Property PIVOT_X = new FloatProperty10("pivotX") { @Override public void setValue(View object, float value) { View10.wrap(object).setPivotX(value); @@ -49,7 +51,7 @@ public final class ObjectAnimator10 extends ValueAnimator { } }; - Property PIVOT_Y = new FloatProperty("pivotY") { + Property PIVOT_Y = new FloatProperty10("pivotY") { @Override public void setValue(View object, float value) { View10.wrap(object).setPivotY(value); @@ -61,7 +63,7 @@ public final class ObjectAnimator10 extends ValueAnimator { } }; - Property TRANSLATION_X = new FloatProperty("translationX") { + Property TRANSLATION_X = new FloatProperty10("translationX") { @Override public void setValue(View object, float value) { View10.wrap(object).setTranslationX(value); @@ -73,7 +75,7 @@ public final class ObjectAnimator10 extends ValueAnimator { } }; - Property TRANSLATION_Y = new FloatProperty("translationY") { + Property TRANSLATION_Y = new FloatProperty10("translationY") { @Override public void setValue(View object, float value) { View10.wrap(object).setTranslationY(value); @@ -85,7 +87,7 @@ public final class ObjectAnimator10 extends ValueAnimator { } }; - Property ROTATION = new FloatProperty("rotation") { + Property ROTATION = new FloatProperty10("rotation") { @Override public void setValue(View object, float value) { View10.wrap(object).setRotation(value); @@ -97,7 +99,7 @@ public final class ObjectAnimator10 extends ValueAnimator { } }; - Property ROTATION_X = new FloatProperty("rotationX") { + Property ROTATION_X = new FloatProperty10("rotationX") { @Override public void setValue(View object, float value) { View10.wrap(object).setRotationX(value); @@ -109,7 +111,7 @@ public final class ObjectAnimator10 extends ValueAnimator { } }; - Property ROTATION_Y = new FloatProperty("rotationY") { + Property ROTATION_Y = new FloatProperty10("rotationY") { @Override public void setValue(View object, float value) { View10.wrap(object).setRotationY(value); @@ -121,7 +123,7 @@ public final class ObjectAnimator10 extends ValueAnimator { } }; - Property SCALE_X = new FloatProperty("scaleX") { + Property SCALE_X = new FloatProperty10("scaleX") { @Override public void setValue(View object, float value) { View10.wrap(object).setScaleX(value); @@ -133,7 +135,7 @@ public final class ObjectAnimator10 extends ValueAnimator { } }; - Property SCALE_Y = new FloatProperty("scaleY") { + Property SCALE_Y = new FloatProperty10("scaleY") { @Override public void setValue(View object, float value) { View10.wrap(object).setScaleY(value); @@ -169,7 +171,7 @@ public final class ObjectAnimator10 extends ValueAnimator { } }; - Property X = new FloatProperty("x") { + Property X = new FloatProperty10("x") { @Override public void setValue(View object, float value) { View10.wrap(object).setX(value); @@ -181,7 +183,7 @@ public final class ObjectAnimator10 extends ValueAnimator { } }; - Property Y = new FloatProperty("y") { + Property Y = new FloatProperty10("y") { @Override public void setValue(View object, float value) { View10.wrap(object).setY(value); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Animation/PropertyValuesHolder.java b/TMessagesProj/src/main/java/org/telegram/ui/Animation/PropertyValuesHolder.java index 5f5c6c703..d01e4d9c7 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Animation/PropertyValuesHolder.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Animation/PropertyValuesHolder.java @@ -148,10 +148,10 @@ public class PropertyValuesHolder implements Cloneable { Class args[] = null; if (valueType == null) { try { - returnVal = targetClass.getMethod(methodName, args); + returnVal = targetClass.getMethod(methodName); } catch (NoSuchMethodException e) { try { - returnVal = targetClass.getDeclaredMethod(methodName, args); + returnVal = targetClass.getDeclaredMethod(methodName); returnVal.setAccessible(true); } catch (NoSuchMethodException e2) { e2.printStackTrace(); @@ -464,7 +464,7 @@ public class PropertyValuesHolder implements Cloneable { static class FloatPropertyValuesHolder extends PropertyValuesHolder { private static final HashMap> sJNISetterPropertyMap = new HashMap>(); - private FloatProperty mFloatProperty; + private FloatProperty10 mFloatProperty; FloatKeyframeSet mFloatKeyframeSet; float mFloatAnimatedValue; @@ -481,8 +481,8 @@ public class PropertyValuesHolder implements Cloneable { mValueType = float.class; mKeyframeSet = keyframeSet; mFloatKeyframeSet = (FloatKeyframeSet) mKeyframeSet; - if (property instanceof FloatProperty) { - mFloatProperty = (FloatProperty) mProperty; + if (property instanceof FloatProperty10) { + mFloatProperty = (FloatProperty10) mProperty; } } @@ -494,8 +494,8 @@ public class PropertyValuesHolder implements Cloneable { public FloatPropertyValuesHolder(Property property, float... values) { super(property); setFloatValues(values); - if (property instanceof FloatProperty) { - mFloatProperty = (FloatProperty) mProperty; + if (property instanceof FloatProperty10) { + mFloatProperty = (FloatProperty10) mProperty; } } 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 e039dfb5d..be53d82d4 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/AnimationCompat/AnimatorSetProxy.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/AnimationCompat/AnimatorSetProxy.java @@ -18,6 +18,7 @@ import org.telegram.ui.Animation.AnimatorListenerAdapter10; import org.telegram.ui.Animation.AnimatorSet10; import org.telegram.ui.Animation.View10; +import java.util.ArrayList; import java.util.Arrays; public class AnimatorSetProxy { @@ -41,6 +42,22 @@ public class AnimatorSetProxy { } } + public void playTogether(ArrayList items) { + if (View10.NEED_PROXY) { + ArrayList animators = new ArrayList(); + for (Object obj : items) { + animators.add((Animator10)obj); + } + ((AnimatorSet10) animatorSet).playTogether(animators); + } else { + ArrayList animators = new ArrayList(); + for (Object obj : items) { + animators.add((Animator)obj); + } + ((AnimatorSet) animatorSet).playTogether(animators); + } + } + public AnimatorSetProxy setDuration(long duration) { if (View10.NEED_PROXY) { ((AnimatorSet10) animatorSet).setDuration(duration); 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 5263dcefd..cd4df17e9 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/AnimationCompat/ObjectAnimatorProxy.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/AnimationCompat/ObjectAnimatorProxy.java @@ -78,4 +78,36 @@ public class ObjectAnimatorProxy { ((ObjectAnimator) objectAnimator).start(); } } + + public void setAutoCancel(boolean cancel) { + if (View10.NEED_PROXY) { + ((ObjectAnimator10) objectAnimator).setAutoCancel(cancel); + } else { + ((ObjectAnimator) objectAnimator).setAutoCancel(cancel); + } + } + + public boolean isRunning() { + if (View10.NEED_PROXY) { + return ((ObjectAnimator10) objectAnimator).isRunning(); + } else { + return ((ObjectAnimator) objectAnimator).isRunning(); + } + } + + public void end() { + if (View10.NEED_PROXY) { + ((ObjectAnimator10) objectAnimator).end(); + } else { + ((ObjectAnimator) objectAnimator).end(); + } + } + + public void cancel() { + if (View10.NEED_PROXY) { + ((ObjectAnimator10) objectAnimator).cancel(); + } else { + ((ObjectAnimator) objectAnimator).cancel(); + } + } } 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 f84ceb243..4e47935c8 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatContactCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatContactCell.java @@ -72,6 +72,7 @@ public class ChatContactCell extends ChatBaseCell { addContactDrawableOut = getResources().getDrawable(R.drawable.addcontact_green); } avatarImage = new ImageReceiver(this); + avatarDrawable = new AvatarDrawable(); } public void setContactDelegate(ChatContactCellDelegate delegate) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/DetailTextCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DetailTextCell.java new file mode 100644 index 000000000..4386dfd90 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DetailTextCell.java @@ -0,0 +1,49 @@ +/* + * 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; + +public class DetailTextCell extends FrameLayout { + + private TextView textView; + + public DetailTextCell(Context context) { + super(context); + + textView = new TextView(context); + textView.setTextColor(0xffa3a3a3); + textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 13); + textView.setGravity(Gravity.CENTER); + textView.setPadding(0, AndroidUtilities.dp(19), 0, AndroidUtilities.dp(19)); + 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 = Gravity.CENTER; + 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/DialogCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DialogCell.java index dac69c9f6..9b44bf64a 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/DialogCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DialogCell.java @@ -56,6 +56,7 @@ public class DialogCell extends BaseCell { private boolean allowPrintStrings; private int lastMessageDate; private int unreadCount; + private boolean lastUnreadState; private MessageObject message; private ImageReceiver avatarImage; @@ -148,7 +149,7 @@ public class DialogCell extends BaseCell { errorDrawable = getResources().getDrawable(R.drawable.dialogs_warning); countDrawable = getResources().getDrawable(R.drawable.dialogs_badge); groupDrawable = getResources().getDrawable(R.drawable.list_group); - broadcastDrawable = getResources().getDrawable(R.drawable.broadcast); + broadcastDrawable = getResources().getDrawable(R.drawable.list_broadcast); } } @@ -166,6 +167,7 @@ public class DialogCell extends BaseCell { allowPrintStrings = usePrintStrings; lastMessageDate = date; unreadCount = unread; + lastUnreadState = messageObject != null && messageObject.isUnread(); update(0); } @@ -584,7 +586,9 @@ public class DialogCell extends BaseCell { } } if ((mask & MessagesController.UPDATE_MASK_READ_DIALOG_MESSAGE) != 0) { - continueUpdate = true; + if (message != null && lastUnreadState != message.isUnread()) { + continueUpdate = true; + } } if (!continueUpdate) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/DividerCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DividerCell.java index 55ce4d3fe..cfc8fa114 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/DividerCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DividerCell.java @@ -16,12 +16,15 @@ import org.telegram.android.AndroidUtilities; public class DividerCell extends BaseCell { - Paint paint = new Paint(); + private static Paint paint; public DividerCell(Context context) { super(context); - paint.setColor(0xffd9d9d9); - paint.setStrokeWidth(1); + if (paint == null) { + paint = new Paint(); + paint.setColor(0xffd9d9d9); + paint.setStrokeWidth(1); + } } @Override diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/HeaderCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/HeaderCell.java new file mode 100644 index 000000000..fcfd8b2e0 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/HeaderCell.java @@ -0,0 +1,70 @@ +/* + * 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.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 HeaderCell extends FrameLayout { + + private TextView textView; + + private void init() { + textView = new TextView(getContext()); + textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15); + textView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + textView.setTextColor(0xff3e90cf); + textView.setGravity((LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.CENTER_VERTICAL); + addView(textView); + FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams)textView.getLayoutParams(); + layoutParams.width = FrameLayout.LayoutParams.MATCH_PARENT; + layoutParams.height = FrameLayout.LayoutParams.MATCH_PARENT; + layoutParams.leftMargin = AndroidUtilities.dp(17); + layoutParams.rightMargin = AndroidUtilities.dp(17); + layoutParams.topMargin = AndroidUtilities.dp(15); + layoutParams.gravity = LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT; + textView.setLayoutParams(layoutParams); + } + + public HeaderCell(Context context) { + super(context); + init(); + } + + public HeaderCell(Context context, AttributeSet attrs) { + super(context, attrs); + init(); + } + + public HeaderCell(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + init(); + } + + public HeaderCell(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(38), MeasureSpec.EXACTLY)); + } + + public void setText(String text) { + textView.setText(text); + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ProfileSearchCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ProfileSearchCell.java index 7249674b0..b8d5ac16f 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ProfileSearchCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ProfileSearchCell.java @@ -95,13 +95,11 @@ public class ProfileSearchCell extends BaseCell { offlinePaint.setTextSize(AndroidUtilities.dp(16)); offlinePaint.setColor(0xff999999); - lockDrawable = getResources().getDrawable(R.drawable.list_secret); - linePaint = new Paint(); linePaint.setColor(0xffdcdcdc); - broadcastDrawable = getResources().getDrawable(R.drawable.broadcast); - + broadcastDrawable = getResources().getDrawable(R.drawable.list_broadcast); + lockDrawable = getResources().getDrawable(R.drawable.list_secret); groupDrawable = getResources().getDrawable(R.drawable.list_group); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ShadowSectionCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ShadowSectionCell.java new file mode 100644 index 000000000..b8c7ce118 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ShadowSectionCell.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 ShadowSectionCell extends View { + + private void init() { + setBackgroundResource(R.drawable.greydivider); + } + + public ShadowSectionCell(Context context) { + super(context); + init(); + } + + public ShadowSectionCell(Context context, AttributeSet attrs) { + super(context, attrs); + init(); + } + + public ShadowSectionCell(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + init(); + } + + public ShadowSectionCell(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(12), MeasureSpec.EXACTLY)); + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCheckCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCheckCell.java new file mode 100644 index 000000000..e8cc2e6e5 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCheckCell.java @@ -0,0 +1,88 @@ +/* + * 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.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.Switch; + +public class TextCheckCell extends FrameLayout { + + private TextView textView; + private Switch checkBox; + private static Paint paint; + private boolean needDivider; + + public TextCheckCell(Context context) { + super(context); + + if (paint == null) { + paint = new Paint(); + paint.setColor(0xffd9d9d9); + paint.setStrokeWidth(1); + } + + textView = new TextView(context); + textView.setTextColor(0xff000000); + textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); + textView.setLines(1); + textView.setMaxLines(1); + textView.setSingleLine(true); + textView.setGravity((LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.CENTER_VERTICAL); + addView(textView); + LayoutParams layoutParams = (LayoutParams) textView.getLayoutParams(); + layoutParams.width = LayoutParams.MATCH_PARENT; + layoutParams.height = LayoutParams.MATCH_PARENT; + layoutParams.leftMargin = AndroidUtilities.dp(17); + layoutParams.rightMargin = AndroidUtilities.dp(17); + layoutParams.gravity = LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT; + textView.setLayoutParams(layoutParams); + + checkBox = new Switch(context); + checkBox.setDuplicateParentStateEnabled(false); + checkBox.setFocusable(false); + checkBox.setFocusableInTouchMode(false); + checkBox.setClickable(false); + addView(checkBox); + layoutParams = (LayoutParams) checkBox.getLayoutParams(); + layoutParams.width = LayoutParams.WRAP_CONTENT; + layoutParams.height = LayoutParams.WRAP_CONTENT; + layoutParams.leftMargin = AndroidUtilities.dp(14); + layoutParams.rightMargin = AndroidUtilities.dp(14); + layoutParams.gravity = (LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.CENTER_VERTICAL; + checkBox.setLayoutParams(layoutParams); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(48) + (needDivider ? 1 : 0), MeasureSpec.EXACTLY)); + } + + public void setTextAndCheck(String text, boolean checked, boolean divider) { + textView.setText(text); + checkBox.setChecked(checked); + needDivider = divider; + setWillNotDraw(!divider); + } + + @Override + protected void onDraw(Canvas canvas) { + if (needDivider) { + canvas.drawLine(getPaddingLeft(), getHeight() - 1, getWidth() - getPaddingRight(), getHeight() - 1, paint); + } + } +} 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 1854a990a..f85c4b949 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextDetailCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextDetailCell.java @@ -39,7 +39,7 @@ public class TextDetailCell extends FrameLayout { FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) textView.getLayoutParams(); layoutParams.width = LayoutParams.WRAP_CONTENT; layoutParams.height = LayoutParams.WRAP_CONTENT; - layoutParams.topMargin = AndroidUtilities.dp(11); + 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; @@ -56,7 +56,7 @@ public class TextDetailCell extends FrameLayout { layoutParams = (FrameLayout.LayoutParams) valueTextView.getLayoutParams(); layoutParams.width = LayoutParams.WRAP_CONTENT; layoutParams.height = LayoutParams.WRAP_CONTENT; - layoutParams.topMargin = AndroidUtilities.dp(36); + 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; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextDetailSettingsCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextDetailSettingsCell.java new file mode 100644 index 000000000..5d23153b7 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextDetailSettingsCell.java @@ -0,0 +1,91 @@ +/* + * 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.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; + +public class TextDetailSettingsCell extends FrameLayout { + + private TextView textView; + private TextView valueTextView; + private static Paint paint; + private boolean needDivider; + + public TextDetailSettingsCell(Context context) { + super(context); + + if (paint == null) { + paint = new Paint(); + paint.setColor(0xffd9d9d9); + paint.setStrokeWidth(1); + } + + textView = new TextView(context); + textView.setTextColor(0xff000000); + textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); + textView.setLines(1); + textView.setMaxLines(1); + textView.setSingleLine(true); + textView.setGravity((LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.CENTER_VERTICAL); + 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(17); + layoutParams.rightMargin = AndroidUtilities.dp(17); + 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.LEFT : Gravity.RIGHT) | Gravity.CENTER_VERTICAL); + 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(17); + layoutParams.rightMargin = AndroidUtilities.dp(17); + layoutParams.gravity = LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT; + valueTextView.setLayoutParams(layoutParams); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(64) + (needDivider ? 1 : 0), MeasureSpec.EXACTLY)); + } + + public void setTextAndValue(String text, String value, boolean divider) { + textView.setText(text); + valueTextView.setText(value); + needDivider = divider; + setWillNotDraw(!divider); + } + + @Override + protected void onDraw(Canvas canvas) { + if (needDivider) { + canvas.drawLine(getPaddingLeft(), getHeight() - 1, getWidth() - getPaddingRight(), getHeight() - 1, paint); + } + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextSettingsCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextSettingsCell.java new file mode 100644 index 000000000..4d56c03e5 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextSettingsCell.java @@ -0,0 +1,101 @@ +/* + * 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.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; + +public class TextSettingsCell extends FrameLayout { + + private TextView textView; + private TextView valueTextView; + private static Paint paint; + private boolean needDivider; + + public TextSettingsCell(Context context) { + super(context); + + if (paint == null) { + paint = new Paint(); + paint.setColor(0xffd9d9d9); + paint.setStrokeWidth(1); + } + + textView = new TextView(context); + textView.setTextColor(0xff000000); + textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); + textView.setLines(1); + textView.setMaxLines(1); + textView.setSingleLine(true); + textView.setGravity((LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.CENTER_VERTICAL); + addView(textView); + LayoutParams layoutParams = (LayoutParams) textView.getLayoutParams(); + layoutParams.width = LayoutParams.MATCH_PARENT; + layoutParams.height = LayoutParams.MATCH_PARENT; + layoutParams.leftMargin = AndroidUtilities.dp(17); + layoutParams.rightMargin = AndroidUtilities.dp(17); + layoutParams.gravity = LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT; + textView.setLayoutParams(layoutParams); + + valueTextView = new TextView(context); + valueTextView.setTextColor(0xff2f8cc9); + valueTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); + valueTextView.setLines(1); + valueTextView.setMaxLines(1); + valueTextView.setSingleLine(true); + valueTextView.setGravity((LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.CENTER_VERTICAL); + addView(valueTextView); + layoutParams = (LayoutParams) valueTextView.getLayoutParams(); + layoutParams.width = LayoutParams.WRAP_CONTENT; + layoutParams.height = LayoutParams.MATCH_PARENT; + layoutParams.leftMargin = AndroidUtilities.dp(17); + layoutParams.rightMargin = AndroidUtilities.dp(17); + layoutParams.gravity = LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT; + valueTextView.setLayoutParams(layoutParams); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(48) + (needDivider ? 1 : 0), MeasureSpec.EXACTLY)); + } + + public void setTextColor(int color) { + textView.setTextColor(color); + } + + public void setText(String text, boolean divider) { + textView.setText(text); + valueTextView.setVisibility(GONE); + needDivider = divider; + setWillNotDraw(!divider); + } + + public void setTextAndValue(String text, String value, boolean divider) { + textView.setText(text); + valueTextView.setText(value); + valueTextView.setVisibility(VISIBLE); + needDivider = divider; + setWillNotDraw(!divider); + } + + @Override + protected void onDraw(Canvas canvas) { + if (needDivider) { + canvas.drawLine(getPaddingLeft(), getHeight() - 1, getWidth() - getPaddingRight(), getHeight() - 1, paint); + } + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java index d5e8630da..61cd94c00 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java @@ -71,7 +71,7 @@ import org.telegram.ui.Cells.ChatBaseCell; import org.telegram.ui.Cells.ChatContactCell; import org.telegram.ui.Cells.ChatMediaCell; import org.telegram.ui.Cells.ChatMessageCell; -import org.telegram.ui.Views.ActionBar.ActionBarLayer; +import org.telegram.ui.Views.ActionBar.ActionBar; import org.telegram.ui.Views.ActionBar.ActionBarMenu; import org.telegram.ui.Views.ActionBar.ActionBarMenuItem; import org.telegram.ui.Views.AvatarDrawable; @@ -165,6 +165,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not private int onlineCount = -1; private CharSequence lastPrintString; + private TLRPC.UserStatus lastStatus; private long chatEnterTime = 0; private long chatLeaveTime = 0; @@ -190,7 +191,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not AdapterView.OnItemLongClickListener onItemLongClickListener = new AdapterView.OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView adapter, View view, int position, long id) { - if (!actionBarLayer.isActionModeShowed()) { + if (!actionBar.isActionModeShowed()) { createMenu(view, false); } return true; @@ -200,7 +201,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not AdapterView.OnItemClickListener onItemClickListener = new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView adapterView, View view, int i, long l) { - if (actionBarLayer.isActionModeShowed()) { + if (actionBar.isActionModeShowed()) { processRowSelect(view); return; } @@ -443,9 +444,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { - actionBarLayer.setBackButtonImage(R.drawable.ic_ab_back); - actionBarLayer.setBackOverlay(R.layout.updating_state_layout); - actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { + 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) { if (id == -1) { @@ -453,7 +454,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } else if (id == -2) { selectedMessagesIds.clear(); selectedMessagesCanCopyIds.clear(); - actionBarLayer.hideActionMode(); + actionBar.hideActionMode(); updateVisibleRows(); } else if (id == attach_photo) { try { @@ -604,7 +605,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } selectedMessagesIds.clear(); selectedMessagesCanCopyIds.clear(); - actionBarLayer.hideActionMode(); + actionBar.hideActionMode(); updateVisibleRows(); } else if (id == delete) { ArrayList ids = new ArrayList(selectedMessagesIds.keySet()); @@ -619,7 +620,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } MessagesController.getInstance().deleteMessages(ids, random_ids, currentEncryptedChat); - actionBarLayer.hideActionMode(); + actionBar.hideActionMode(); } else if (id == forward) { Bundle args = new Bundle(); args.putBoolean("onlySelect", true); @@ -633,15 +634,16 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } }); + updateTitle(); updateSubtitle(); if (currentEncryptedChat != null) { - actionBarLayer.setTitleIcon(R.drawable.ic_lock_white, AndroidUtilities.dp(4)); + actionBar.setTitleIcon(R.drawable.ic_lock_white, AndroidUtilities.dp(4)); } else if (currentChat != null && currentChat.id < 0) { - actionBarLayer.setTitleIcon(R.drawable.broadcast2, AndroidUtilities.dp(4)); + actionBar.setTitleIcon(R.drawable.broadcast2, AndroidUtilities.dp(4)); } - ActionBarMenu menu = actionBarLayer.createMenu(); + ActionBarMenu menu = actionBar.createMenu(); if (currentEncryptedChat != null) { timeItem = menu.addItemResource(chat_enc_timer, R.layout.chat_header_enc_layout); @@ -657,7 +659,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not actionModeViews.clear(); - final ActionBarMenu actionMode = actionBarLayer.createActionMode(); + 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()); @@ -713,7 +715,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not View contentView = fragmentView.findViewById(R.id.chat_layout); TextView emptyView = (TextView) fragmentView.findViewById(R.id.searchEmptyView); emptyViewContainer = fragmentView.findViewById(R.id.empty_view); - emptyViewContainer.setVisibility(View.GONE); + emptyViewContainer.setVisibility(View.INVISIBLE); emptyViewContainer.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { @@ -776,7 +778,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } if (currentEncryptedChat != null) { - emptyView.setVisibility(View.GONE); + emptyView.setVisibility(View.INVISIBLE); View secretChatPlaceholder = contentView.findViewById(R.id.secret_placeholder); secretChatPlaceholder.setVisibility(View.VISIBLE); if (isCustomTheme) { @@ -828,7 +830,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not chatListView.setOnInterceptTouchEventListener(new LayoutListView.OnInterceptTouchEventListener() { @Override public boolean onInterceptTouchEvent(MotionEvent event) { - if (actionBarLayer.isActionModeShowed()) { + if (actionBar.isActionModeShowed()) { return false; } if (event.getAction() == MotionEvent.ACTION_DOWN) { @@ -991,7 +993,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not progressView.setVisibility(View.VISIBLE); chatListView.setEmptyView(null); } else { - progressView.setVisibility(View.GONE); + progressView.setVisibility(View.INVISIBLE); chatListView.setEmptyView(emptyViewContainer); } @@ -1206,8 +1208,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not onlineCount++; } } - - updateSubtitle(); } private int getMessageType(MessageObject messageObject) { @@ -1333,11 +1333,11 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not selectedMessagesCanCopyIds.put(messageObject.messageOwner.id, messageObject); } } - if (actionBarLayer.isActionModeShowed()) { + if (actionBar.isActionModeShowed()) { if (selectedMessagesIds.isEmpty()) { - actionBarLayer.hideActionMode(); + actionBar.hideActionMode(); } - actionBarLayer.createActionMode().getItem(copy).setVisibility(selectedMessagesCanCopyIds.size() != 0 ? View.VISIBLE : View.GONE); + actionBar.createActionMode().getItem(copy).setVisibility(selectedMessagesCanCopyIds.size() != 0 ? View.VISIBLE : View.GONE); } } @@ -1360,7 +1360,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } private void updateActionModeTitle() { - if (!actionBarLayer.isActionModeShowed()) { + if (!actionBar.isActionModeShowed()) { return; } if (!selectedMessagesIds.isEmpty()) { @@ -1368,21 +1368,23 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } - private void updateSubtitle() { + private void updateTitle() { if (currentChat != null) { - actionBarLayer.setTitle(currentChat.title); + actionBar.setTitle(currentChat.title); } else if (currentUser != null) { if (currentUser.id / 1000 != 777 && currentUser.id / 1000 != 333 && ContactsController.getInstance().contactsDict.get(currentUser.id) == null && (ContactsController.getInstance().contactsDict.size() != 0 || !ContactsController.getInstance().isLoadingContacts())) { if (currentUser.phone != null && currentUser.phone.length() != 0) { - actionBarLayer.setTitle(PhoneFormat.getInstance().format("+" + currentUser.phone)); + actionBar.setTitle(PhoneFormat.getInstance().format("+" + currentUser.phone)); } else { - actionBarLayer.setTitle(ContactsController.formatName(currentUser.first_name, currentUser.last_name)); + actionBar.setTitle(ContactsController.formatName(currentUser.first_name, currentUser.last_name)); } } else { - actionBarLayer.setTitle(ContactsController.formatName(currentUser.first_name, currentUser.last_name)); + actionBar.setTitle(ContactsController.formatName(currentUser.first_name, currentUser.last_name)); } } + } + private void updateSubtitle() { CharSequence printString = MessagesController.getInstance().printingStrings.get(dialog_id); if (printString != null) { printString = TextUtils.replace(printString, new String[]{"..."}, new String[]{""}); @@ -1392,18 +1394,18 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not setTypingAnimation(false); if (currentChat != null) { if (currentChat instanceof TLRPC.TL_chatForbidden) { - actionBarLayer.setSubtitle(LocaleController.getString("YouWereKicked", R.string.YouWereKicked)); + actionBar.setSubtitle(LocaleController.getString("YouWereKicked", R.string.YouWereKicked)); } else if (currentChat.left) { - actionBarLayer.setSubtitle(LocaleController.getString("YouLeft", R.string.YouLeft)); + actionBar.setSubtitle(LocaleController.getString("YouLeft", R.string.YouLeft)); } else { int count = currentChat.participants_count; if (info != null) { count = info.participants.size(); } if (onlineCount > 1 && count != 0) { - actionBarLayer.setSubtitle(String.format("%s, %s", LocaleController.formatPluralString("Members", count), LocaleController.formatPluralString("Online", onlineCount))); + actionBar.setSubtitle(String.format("%s, %s", LocaleController.formatPluralString("Members", count), LocaleController.formatPluralString("Online", onlineCount))); } else { - actionBarLayer.setSubtitle(LocaleController.formatPluralString("Members", count)); + actionBar.setSubtitle(LocaleController.formatPluralString("Members", count)); } } } else if (currentUser != null) { @@ -1411,28 +1413,31 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (user != null) { currentUser = user; } - actionBarLayer.setSubtitle(LocaleController.formatUserStatus(currentUser)); + if (lastStatus != user.status || lastStatus != null && user.status != null && lastStatus.expires != user.status.expires) { + lastStatus = user.status; + actionBar.setSubtitle(LocaleController.formatUserStatus(currentUser)); + } } } else { lastPrintString = printString; - actionBarLayer.setSubtitle(printString); + actionBar.setSubtitle(printString); setTypingAnimation(true); } } private void setTypingAnimation(boolean start) { - if (actionBarLayer == null) { + if (actionBar == null) { return; } if (start) { try { - actionBarLayer.setSubTitleIcon(0, typingDotsDrawable, AndroidUtilities.dp(4)); + actionBar.setSubTitleIcon(0, typingDotsDrawable, AndroidUtilities.dp(4)); typingDotsDrawable.start(); } catch (Exception e) { FileLog.e("tmessages", e); } } else { - actionBarLayer.setSubTitleIcon(0, null, 0); + actionBar.setSubTitleIcon(0, null, 0); if (typingDotsDrawable != null) { typingDotsDrawable.stop(); } @@ -1614,6 +1619,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not @Override public void didReceivedNotification(int id, final Object... args) { if (id == NotificationCenter.messagesDidLoaded) { + long did = (Long)args[0]; if (did == dialog_id) { loadsCount++; @@ -1788,7 +1794,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } chatListView.getViewTreeObserver().removeOnPreDrawListener(this); - return false; + return true; } }); chatListView.invalidate(); @@ -1830,16 +1836,23 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } if (first && messages.size() > 0) { - if (last_message_id != 0) { - MessagesController.getInstance().markDialogAsRead(dialog_id, messages.get(0).messageOwner.id, last_message_id, 0, last_unread_date, wasUnread, false); - } else { - MessagesController.getInstance().markDialogAsRead(dialog_id, messages.get(0).messageOwner.id, minMessageId, 0, maxDate, wasUnread, false); - } + final boolean wasUnreadFinal = wasUnread; + final int last_unread_date_final = last_unread_date; + AndroidUtilities.runOnUIThread(new Runnable() { + @Override + public void run() { + if (last_message_id != 0) { + MessagesController.getInstance().markDialogAsRead(dialog_id, messages.get(0).messageOwner.id, last_message_id, 0, last_unread_date_final, wasUnreadFinal, false); + } else { + MessagesController.getInstance().markDialogAsRead(dialog_id, messages.get(0).messageOwner.id, minMessageId, 0, maxDate, wasUnreadFinal, false); + } + } + }, 700); first = false; } if (progressView != null) { - progressView.setVisibility(View.GONE); + progressView.setVisibility(View.INVISIBLE); } } } else if (id == NotificationCenter.emojiDidLoaded) { @@ -1848,10 +1861,20 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } else if (id == NotificationCenter.updateInterfaces) { int updateMask = (Integer)args[0]; - if ((updateMask & MessagesController.UPDATE_MASK_NAME) != 0 || (updateMask & MessagesController.UPDATE_MASK_STATUS) != 0 || (updateMask & MessagesController.UPDATE_MASK_CHAT_NAME) != 0 || (updateMask & MessagesController.UPDATE_MASK_CHAT_MEMBERS) != 0) { - updateSubtitle(); + if ((updateMask & MessagesController.UPDATE_MASK_NAME) != 0 || (updateMask & MessagesController.UPDATE_MASK_CHAT_NAME) != 0) { + updateTitle(); + } + boolean updateSubtitle = false; + if ((updateMask & MessagesController.UPDATE_MASK_CHAT_MEMBERS) != 0) { + updateSubtitle = true; updateOnlineCount(); } + if ((updateMask & MessagesController.UPDATE_MASK_STATUS) != 0) { + updateSubtitle = true; + } + if (updateSubtitle) { + updateSubtitle(); + } if ((updateMask & MessagesController.UPDATE_MASK_AVATAR) != 0 || (updateMask & MessagesController.UPDATE_MASK_CHAT_AVATAR) != 0 || (updateMask & MessagesController.UPDATE_MASK_NAME) != 0) { checkAndUpdateAvatar(); updateVisibleRows(); @@ -2000,7 +2023,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } if (progressView != null) { - progressView.setVisibility(View.GONE); + progressView.setVisibility(View.INVISIBLE); } if (chatAdapter != null) { chatAdapter.notifyDataSetChanged(); @@ -2044,7 +2067,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } if (updateChat) { - updateSubtitle(); + updateTitle(); checkAndUpdateAvatar(); } } @@ -2092,7 +2115,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } if (messages.isEmpty()) { if (!endReached && !loading) { - progressView.setVisibility(View.GONE); + progressView.setVisibility(View.INVISIBLE); chatListView.setEmptyView(null); if (currentEncryptedChat == null) { maxMessageId = Integer.MAX_VALUE; @@ -2146,6 +2169,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (currentChat != null && chatId == currentChat.id) { info = (TLRPC.ChatParticipants)args[1]; updateOnlineCount(); + updateSubtitle(); if (isBroadcast) { SendMessagesHelper.getInstance().setCurrentChatInfo(info); } @@ -2213,7 +2237,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not messages.clear(); messagesByDays.clear(); messagesDict.clear(); - progressView.setVisibility(View.GONE); + progressView.setVisibility(View.INVISIBLE); chatListView.setEmptyView(emptyViewContainer); if (currentEncryptedChat == null) { maxMessageId = Integer.MAX_VALUE; @@ -2226,7 +2250,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not minDate = 0; selectedMessagesIds.clear(); selectedMessagesCanCopyIds.clear(); - actionBarLayer.hideActionMode(); + actionBar.hideActionMode(); chatAdapter.notifyDataSetChanged(); } } else if (id == NotificationCenter.screenshotTook) { @@ -2383,15 +2407,10 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not public void onResume() { super.onResume(); - if (parentLayout != null) { - parentLayout.getDrawerLayoutContainer().setStatusBarColor(0xff54759e); - } getParentActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); checkActionBarMenu(); - if (chatAdapter != null) { - chatAdapter.notifyDataSetChanged(); - } + NotificationsController.getInstance().setOpennedDialogId(dialog_id); if (scrollToTopOnResume) { if (scrollToTopUnReadOnResume && scrollToMessage != null) { @@ -2462,7 +2481,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not @Override public void onPause() { super.onPause(); - actionBarLayer.hideActionMode(); + actionBar.hideActionMode(); chatActivityEnterView.hideEmojiPopup(); paused = true; NotificationsController.getInstance().setOpennedDialogId(0); @@ -2507,40 +2526,53 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } private void fixLayout(final boolean resume) { - final int lastPos = chatListView.getLastVisiblePosition(); - ViewTreeObserver obs = chatListView.getViewTreeObserver(); - obs.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { - @Override - public boolean onPreDraw() { - if (chatListView != null) { + if (avatarImageView != null) { + avatarImageView.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { + @Override + public boolean onPreDraw() { + if (avatarImageView != null) { + avatarImageView.getViewTreeObserver().removeOnPreDrawListener(this); + } + if (getParentActivity() == null) { + return false; + } + int height = AndroidUtilities.getCurrentActionBarHeight(); + if (!AndroidUtilities.isTablet() && getParentActivity().getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { + selectedMessagesCountTextView.setTextSize(16); + } else { + selectedMessagesCountTextView.setTextSize(18); + } + if (avatarImageView != null) { + RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) avatarImageView.getLayoutParams(); + params.width = height; + params.height = height; + avatarImageView.setLayoutParams(params); + } + return false; + } + }); + } + if (!resume && chatListView != null) { + final int lastPos = chatListView.getLastVisiblePosition(); + chatListView.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { + @Override + public boolean onPreDraw() { + if (chatListView == null) { + return false; + } chatListView.getViewTreeObserver().removeOnPreDrawListener(this); + if (lastPos >= messages.size() - 1) { + chatListView.post(new Runnable() { + @Override + public void run() { + chatListView.setSelectionFromTop(messages.size() - 1, -100000 - chatListView.getPaddingTop()); + } + }); + } + return false; } - if (getParentActivity() == null) { - return true; - } - int height = AndroidUtilities.getCurrentActionBarHeight(); - if (!AndroidUtilities.isTablet() && getParentActivity().getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { - selectedMessagesCountTextView.setTextSize(16); - } else { - selectedMessagesCountTextView.setTextSize(18); - } - if (avatarImageView != null) { - RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) avatarImageView.getLayoutParams(); - params.width = height; - params.height = height; - avatarImageView.setLayoutParams(params); - } - if (!resume && lastPos >= messages.size() - 1) { - chatListView.post(new Runnable() { - @Override - public void run() { - chatListView.setSelectionFromTop(messages.size() - 1, -100000 - chatListView.getPaddingTop()); - } - }); - } - return false; - } - }); + }); + } } @Override @@ -2549,7 +2581,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } public void createMenu(View v, boolean single) { - if (actionBarLayer.isActionModeShowed()) { + if (actionBar.isActionModeShowed()) { return; } @@ -2702,7 +2734,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } return; } - actionBarLayer.showActionMode(); + actionBar.showActionMode(); if (Build.VERSION.SDK_INT >= 11) { AnimatorSet animatorSet = new AnimatorSet(); ArrayList animators = new ArrayList(); @@ -2868,7 +2900,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not chatListView.setSelectionFromTop(messages.size() - 1, -100000 - chatListView.getPaddingTop()); scrollToTopOnResume = true; if (AndroidUtilities.isTablet()) { - actionBarLayer.hideActionMode(); + actionBar.hideActionMode(); } } } @@ -2876,10 +2908,10 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not @Override public boolean onBackPressed() { - if (actionBarLayer.isActionModeShowed()) { + if (actionBar.isActionModeShowed()) { selectedMessagesIds.clear(); selectedMessagesCanCopyIds.clear(); - actionBarLayer.hideActionMode(); + actionBar.hideActionMode(); updateVisibleRows(); return false; } else if (chatActivityEnterView.isEmojiPopupShowing()) { @@ -2930,7 +2962,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not boolean disableSelection = false; boolean selected = false; - if (actionBarLayer.isActionModeShowed()) { + if (actionBar.isActionModeShowed()) { if (selectedMessagesIds.containsKey(cell.getMessageObject().messageOwner.id)) { view.setBackgroundColor(0x6633b5e5); selected = true; @@ -3122,7 +3154,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not ((ChatBaseCell)view).setDelegate(new ChatBaseCell.ChatBaseCellDelegate() { @Override public void didPressedUserAvatar(ChatBaseCell cell, TLRPC.User user) { - if (actionBarLayer.isActionModeShowed()) { + if (actionBar.isActionModeShowed()) { processRowSelect(cell); return; } @@ -3148,7 +3180,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not @Override public boolean canPerformActions() { - return actionBarLayer != null && !actionBarLayer.isActionModeShowed(); + return actionBar != null && !actionBar.isActionModeShowed(); } }); if (view instanceof ChatMediaCell) { @@ -3248,7 +3280,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not ((ChatContactCell)view).setContactDelegate(new ChatContactCell.ChatContactCellDelegate() { @Override public void didClickAddButton(ChatContactCell cell, TLRPC.User user) { - if (actionBarLayer.isActionModeShowed()) { + if (actionBar.isActionModeShowed()) { processRowSelect(cell); return; } @@ -3261,7 +3293,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not @Override public void didClickPhone(ChatContactCell cell) { - if (actionBarLayer.isActionModeShowed()) { + if (actionBar.isActionModeShowed()) { processRowSelect(cell); return; } @@ -3326,7 +3358,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not boolean selected = false; boolean disableSelection = false; - if (actionBarLayer.isActionModeShowed()) { + if (actionBar.isActionModeShowed()) { if (selectedMessagesIds.containsKey(message.messageOwner.id)) { view.setBackgroundColor(0x6633b5e5); selected = true; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileActivity.java index f58ead169..bb9ad4bd2 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileActivity.java @@ -37,7 +37,7 @@ import org.telegram.messenger.Utilities; import org.telegram.android.MessageObject; import org.telegram.ui.Adapters.BaseFragmentAdapter; import org.telegram.ui.Cells.UserCell; -import org.telegram.ui.Views.ActionBar.ActionBarLayer; +import org.telegram.ui.Views.ActionBar.ActionBar; import org.telegram.ui.Views.ActionBar.ActionBarMenu; import org.telegram.ui.Views.AvatarDrawable; import org.telegram.ui.Views.AvatarUpdater; @@ -173,14 +173,14 @@ public class ChatProfileActivity extends BaseFragment implements NotificationCen public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { - actionBarLayer.setBackButtonImage(R.drawable.ic_ab_back); - actionBarLayer.setBackOverlay(R.layout.updating_state_layout); + actionBar.setBackButtonImage(R.drawable.ic_ab_back); + actionBar.setBackOverlay(R.layout.updating_state_layout); if (chat_id > 0) { - actionBarLayer.setTitle(LocaleController.getString("GroupInfo", R.string.GroupInfo)); + actionBar.setTitle(LocaleController.getString("GroupInfo", R.string.GroupInfo)); } else { - actionBarLayer.setTitle(LocaleController.getString("BroadcastList", R.string.BroadcastList)); + actionBar.setTitle(LocaleController.getString("BroadcastList", R.string.BroadcastList)); } - actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { + actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { @Override public void onItemClick(int id) { if (id == -1) { @@ -190,7 +190,7 @@ public class ChatProfileActivity extends BaseFragment implements NotificationCen } } }); - ActionBarMenu menu = actionBarLayer.createMenu(); + ActionBarMenu menu = actionBar.createMenu(); View item = menu.addItemResource(done_button, R.layout.group_profile_add_member_layout); TextView textView = (TextView)item.findViewById(R.id.done_button); if (textView != null) { @@ -653,7 +653,7 @@ public class ChatProfileActivity extends BaseFragment implements NotificationCen if (i == settingsSectionRow) { ((SettingsSectionLayout) view).setText(LocaleController.getString("SETTINGS", R.string.SETTINGS)); } else if (i == sharedMediaSectionRow) { - ((SettingsSectionLayout) view).setText(LocaleController.getString("SHAREDMEDIA", R.string.SHAREDMEDIA)); + } else if (i == membersSectionRow) { TLRPC.Chat chat = MessagesController.getInstance().getChat(chat_id); int count = chat.participants_count; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileChangeNameActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileChangeNameActivity.java index a77ea02e4..461672d57 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileChangeNameActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileChangeNameActivity.java @@ -52,16 +52,16 @@ public class ChatProfileChangeNameActivity extends BaseFragment { @Override public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { - actionBarLayer.setCustomView(R.layout.settings_do_action_layout); + actionBar.setCustomView(R.layout.settings_do_action_layout); - Button cancelButton = (Button)actionBarLayer.findViewById(R.id.cancel_button); + Button cancelButton = (Button) actionBar.findViewById(R.id.cancel_button); cancelButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { finishFragment(); } }); - doneButton = actionBarLayer.findViewById(R.id.done_button); + doneButton = actionBar.findViewById(R.id.done_button); doneButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ContactAddActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ContactAddActivity.java index 28a9a3c32..d4c2f7ef4 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ContactAddActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ContactAddActivity.java @@ -65,15 +65,15 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent @Override public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { - actionBarLayer.setCustomView(R.layout.settings_do_action_layout); - Button cancelButton = (Button)actionBarLayer.findViewById(R.id.cancel_button); + actionBar.setCustomView(R.layout.settings_do_action_layout); + Button cancelButton = (Button) actionBar.findViewById(R.id.cancel_button); cancelButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { finishFragment(); } }); - doneButton = actionBarLayer.findViewById(R.id.done_button); + doneButton = actionBar.findViewById(R.id.done_button); doneButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ContactsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ContactsActivity.java index 583319f97..1b128d87a 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ContactsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ContactsActivity.java @@ -42,7 +42,7 @@ import org.telegram.ui.Adapters.BaseSectionsAdapter; import org.telegram.ui.Adapters.ContactsActivityAdapter; import org.telegram.ui.Adapters.ContactsActivitySearchAdapter; import org.telegram.ui.Cells.UserCell; -import org.telegram.ui.Views.ActionBar.ActionBarLayer; +import org.telegram.ui.Views.ActionBar.ActionBar; import org.telegram.ui.Views.ActionBar.ActionBarMenu; import org.telegram.ui.Views.ActionBar.ActionBarMenuItem; import org.telegram.ui.Views.ActionBar.BaseFragment; @@ -117,15 +117,15 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter searching = false; searchWas = false; - actionBarLayer.setBackButtonImage(R.drawable.ic_ab_back); - actionBarLayer.setBackOverlay(R.layout.updating_state_layout); + actionBar.setBackButtonImage(R.drawable.ic_ab_back); + actionBar.setBackOverlay(R.layout.updating_state_layout); if (destroyAfterSelect) { - actionBarLayer.setTitle(LocaleController.getString("SelectContact", R.string.SelectContact)); + actionBar.setTitle(LocaleController.getString("SelectContact", R.string.SelectContact)); } else { - actionBarLayer.setTitle(LocaleController.getString("Contacts", R.string.Contacts)); + actionBar.setTitle(LocaleController.getString("Contacts", R.string.Contacts)); } - actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { + actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { @Override public void onItemClick(int id) { if (id == -1) { @@ -134,7 +134,7 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter } }); - ActionBarMenu menu = actionBarLayer.createMenu(); + ActionBarMenu menu = actionBar.createMenu(); menu.addItem(0, R.drawable.ic_ab_search).setIsSearchField(true).setActionBarMenuItemSearchListener(new ActionBarMenuItem.ActionBarMenuItemSearchListener() { @Override public void onSearchExpand() { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/CountrySelectActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/CountrySelectActivity.java index 4419303b7..c687be750 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/CountrySelectActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/CountrySelectActivity.java @@ -25,7 +25,7 @@ import org.telegram.android.LocaleController; import org.telegram.messenger.R; import org.telegram.messenger.Utilities; import org.telegram.ui.Adapters.BaseFragmentAdapter; -import org.telegram.ui.Views.ActionBar.ActionBarLayer; +import org.telegram.ui.Views.ActionBar.ActionBar; import org.telegram.ui.Views.ActionBar.ActionBarMenu; import org.telegram.ui.Views.ActionBar.ActionBarMenuItem; import org.telegram.ui.Views.ActionBar.BaseFragment; @@ -122,11 +122,11 @@ public class CountrySelectActivity extends BaseFragment { @Override public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { - actionBarLayer.setBackButtonImage(R.drawable.ic_ab_back); - actionBarLayer.setBackOverlay(R.layout.updating_state_layout); - actionBarLayer.setTitle(LocaleController.getString("ChooseCountry", R.string.ChooseCountry)); + actionBar.setBackButtonImage(R.drawable.ic_ab_back); + actionBar.setBackOverlay(R.layout.updating_state_layout); + actionBar.setTitle(LocaleController.getString("ChooseCountry", R.string.ChooseCountry)); - actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { + actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { @Override public void onItemClick(int id) { if (id == -1) { @@ -135,7 +135,7 @@ public class CountrySelectActivity extends BaseFragment { } }); - ActionBarMenu menu = actionBarLayer.createMenu(); + ActionBarMenu menu = actionBar.createMenu(); menu.addItem(0, R.drawable.ic_ab_search).setIsSearchField(true).setActionBarMenuItemSearchListener(new ActionBarMenuItem.ActionBarMenuItemSearchListener() { @Override public void onSearchExpand() { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/DocumentSelectActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/DocumentSelectActivity.java index d8d6cd31e..d3788938b 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/DocumentSelectActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/DocumentSelectActivity.java @@ -29,7 +29,7 @@ import org.telegram.android.LocaleController; import org.telegram.messenger.R; import org.telegram.messenger.Utilities; import org.telegram.ui.Adapters.BaseFragmentAdapter; -import org.telegram.ui.Views.ActionBar.ActionBarLayer; +import org.telegram.ui.Views.ActionBar.ActionBar; import org.telegram.ui.Views.ActionBar.ActionBarMenu; import org.telegram.ui.Views.ActionBar.ActionBarMenuItem; import org.telegram.ui.Views.BackupImageView; @@ -130,10 +130,10 @@ public class DocumentSelectActivity extends BaseFragment { } if (fragmentView == null) { - actionBarLayer.setBackButtonImage(R.drawable.ic_ab_back); - actionBarLayer.setBackOverlay(R.layout.updating_state_layout); - actionBarLayer.setTitle(LocaleController.getString("SelectFile", R.string.SelectFile)); - actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { + actionBar.setBackButtonImage(R.drawable.ic_ab_back); + actionBar.setBackOverlay(R.layout.updating_state_layout); + actionBar.setTitle(LocaleController.getString("SelectFile", R.string.SelectFile)); + actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { @Override public void onItemClick(int id) { if (id == -1) { @@ -146,7 +146,7 @@ public class DocumentSelectActivity extends BaseFragment { } } }); - ActionBarMenu menu = actionBarLayer.createMenu(); + ActionBarMenu menu = actionBar.createMenu(); ActionBarMenuItem item = menu.addItem(1, R.drawable.ic_ab_other); fragmentView = inflater.inflate(R.layout.document_select_layout, container, false); @@ -168,7 +168,7 @@ public class DocumentSelectActivity extends BaseFragment { File file = item.file; if (file == null) { HistoryEntry he = history.remove(history.size() - 1); - actionBarLayer.setTitle(he.title); + actionBar.setTitle(he.title); if (he.dir != null) { listFiles(he.dir); } else { @@ -180,12 +180,12 @@ public class DocumentSelectActivity extends BaseFragment { he.scrollItem = listView.getFirstVisiblePosition(); he.scrollOffset = listView.getChildAt(0).getTop(); he.dir = currentDir; - he.title = actionBarLayer.getTitle().toString(); + he.title = actionBar.getTitle().toString(); if (!listFiles(file)) { return; } history.add(he); - actionBarLayer.setTitle(item.title); + actionBar.setTitle(item.title); listView.setSelection(0); } else { if (!file.canRead()) { @@ -230,7 +230,7 @@ public class DocumentSelectActivity extends BaseFragment { public boolean onBackPressed() { if (history.size() > 0) { HistoryEntry he = history.remove(history.size() - 1); - actionBarLayer.setTitle(he.title); + actionBar.setTitle(he.title); if (he.dir != null) { listFiles(he.dir); } else { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java index d2681cbd6..8a1dc8c2a 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java @@ -45,7 +45,7 @@ import org.telegram.android.NotificationCenter; import org.telegram.messenger.R; import org.telegram.messenger.UserConfig; import org.telegram.messenger.Utilities; -import org.telegram.ui.Views.ActionBar.ActionBarLayer; +import org.telegram.ui.Views.ActionBar.ActionBar; import org.telegram.ui.Views.ActionBar.ActionBarMenu; import org.telegram.ui.Views.AvatarDrawable; import org.telegram.ui.Views.BackupImageView; @@ -139,16 +139,16 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen @Override public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { - actionBarLayer.setBackButtonImage(R.drawable.ic_ab_back); - actionBarLayer.setBackOverlay(R.layout.updating_state_layout); + actionBar.setBackButtonImage(R.drawable.ic_ab_back); + actionBar.setBackOverlay(R.layout.updating_state_layout); if (isBroadcast) { - actionBarLayer.setTitle(LocaleController.getString("NewBroadcastList", R.string.NewBroadcastList)); + actionBar.setTitle(LocaleController.getString("NewBroadcastList", R.string.NewBroadcastList)); } else { - actionBarLayer.setTitle(LocaleController.getString("NewGroup", R.string.NewGroup)); + actionBar.setTitle(LocaleController.getString("NewGroup", R.string.NewGroup)); } - actionBarLayer.setSubtitle(LocaleController.formatString("MembersCount", R.string.MembersCount, selectedContacts.size(), maxCount)); + actionBar.setSubtitle(LocaleController.formatString("MembersCount", R.string.MembersCount, selectedContacts.size(), maxCount)); - actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { + actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { @Override public void onItemClick(int id) { if (id == -1) { @@ -166,7 +166,7 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen } }); - ActionBarMenu menu = actionBarLayer.createMenu(); + ActionBarMenu menu = actionBar.createMenu(); View doneItem = menu.addItemResource(done_button, R.layout.group_create_done_layout); TextView doneTextView = (TextView)doneItem.findViewById(R.id.done_button); doneTextView.setText(LocaleController.getString("Next", R.string.Next)); @@ -227,7 +227,7 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen selectedContacts.remove(sp.uid); } } - actionBarLayer.setSubtitle(LocaleController.formatString("MembersCount", R.string.MembersCount, selectedContacts.size(), maxCount)); + actionBar.setSubtitle(LocaleController.formatString("MembersCount", R.string.MembersCount, selectedContacts.size(), maxCount)); listView.invalidateViews(); } else { search = true; @@ -293,7 +293,7 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen span.uid = user.id; ignoreChange = false; } - actionBarLayer.setSubtitle(LocaleController.formatString("MembersCount", R.string.MembersCount, selectedContacts.size(), maxCount)); + actionBar.setSubtitle(LocaleController.formatString("MembersCount", R.string.MembersCount, selectedContacts.size(), maxCount)); if (searching || searchWas) { searching = false; searchWas = false; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateFinalActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateFinalActivity.java index fb76a7bc0..7e482fc60 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateFinalActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateFinalActivity.java @@ -31,7 +31,7 @@ import org.telegram.android.MessagesController; import org.telegram.android.NotificationCenter; import org.telegram.messenger.R; import org.telegram.ui.Cells.UserCell; -import org.telegram.ui.Views.ActionBar.ActionBarLayer; +import org.telegram.ui.Views.ActionBar.ActionBar; import org.telegram.ui.Views.ActionBar.ActionBarMenu; import org.telegram.ui.Views.AvatarDrawable; import org.telegram.ui.Views.AvatarUpdater; @@ -123,15 +123,15 @@ public class GroupCreateFinalActivity extends BaseFragment implements Notificati @Override public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { - actionBarLayer.setBackButtonImage(R.drawable.ic_ab_back); - actionBarLayer.setBackOverlay(R.layout.updating_state_layout); + actionBar.setBackButtonImage(R.drawable.ic_ab_back); + actionBar.setBackOverlay(R.layout.updating_state_layout); if (isBroadcast) { - actionBarLayer.setTitle(LocaleController.getString("NewBroadcastList", R.string.NewBroadcastList)); + actionBar.setTitle(LocaleController.getString("NewBroadcastList", R.string.NewBroadcastList)); } else { - actionBarLayer.setTitle(LocaleController.getString("NewGroup", R.string.NewGroup)); + actionBar.setTitle(LocaleController.getString("NewGroup", R.string.NewGroup)); } - actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { + actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { @Override public void onItemClick(int id) { if (id == -1) { @@ -177,7 +177,7 @@ public class GroupCreateFinalActivity extends BaseFragment implements Notificati } }); - ActionBarMenu menu = actionBarLayer.createMenu(); + ActionBarMenu menu = actionBar.createMenu(); View doneItem = menu.addItemResource(done_button, R.layout.group_create_done_layout); TextView doneTextView = (TextView)doneItem.findViewById(R.id.done_button); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/IdenticonActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/IdenticonActivity.java index fa8d56248..ab4360982 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/IdenticonActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/IdenticonActivity.java @@ -26,7 +26,7 @@ import org.telegram.android.LocaleController; import org.telegram.messenger.TLRPC; import org.telegram.android.MessagesController; import org.telegram.messenger.R; -import org.telegram.ui.Views.ActionBar.ActionBarLayer; +import org.telegram.ui.Views.ActionBar.ActionBar; import org.telegram.ui.Views.ActionBar.BaseFragment; import org.telegram.ui.Views.IdenticonDrawable; @@ -46,12 +46,12 @@ public class IdenticonActivity extends BaseFragment { @Override public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { - actionBarLayer.setBackButtonImage(R.drawable.ic_ab_back); - actionBarLayer.setBackOverlay(R.layout.updating_state_layout); - actionBarLayer.setTitle(LocaleController.getString("EncryptionKey", R.string.EncryptionKey)); - actionBarLayer.setTitleIcon(R.drawable.ic_lock_white, AndroidUtilities.dp(4)); + actionBar.setBackButtonImage(R.drawable.ic_ab_back); + actionBar.setBackOverlay(R.layout.updating_state_layout); + actionBar.setTitle(LocaleController.getString("EncryptionKey", R.string.EncryptionKey)); + actionBar.setTitleIcon(R.drawable.ic_lock_white, AndroidUtilities.dp(4)); - actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { + actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { @Override public void onItemClick(int id) { if (id == -1) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LanguageSelectActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LanguageSelectActivity.java index 848bb665b..f5365d32f 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LanguageSelectActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LanguageSelectActivity.java @@ -27,7 +27,7 @@ import org.telegram.android.LocaleController; import org.telegram.messenger.R; import org.telegram.messenger.Utilities; import org.telegram.ui.Adapters.BaseFragmentAdapter; -import org.telegram.ui.Views.ActionBar.ActionBarLayer; +import org.telegram.ui.Views.ActionBar.ActionBar; import org.telegram.ui.Views.ActionBar.ActionBarMenu; import org.telegram.ui.Views.ActionBar.ActionBarMenuItem; import org.telegram.ui.Views.ActionBar.BaseFragment; @@ -50,11 +50,11 @@ public class LanguageSelectActivity extends BaseFragment { @Override public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { - actionBarLayer.setBackButtonImage(R.drawable.ic_ab_back); - actionBarLayer.setBackOverlay(R.layout.updating_state_layout); - actionBarLayer.setTitle(LocaleController.getString("Language", R.string.Language)); + actionBar.setBackButtonImage(R.drawable.ic_ab_back); + actionBar.setBackOverlay(R.layout.updating_state_layout); + actionBar.setTitle(LocaleController.getString("Language", R.string.Language)); - actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { + actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { @Override public void onItemClick(int id) { if (id == -1) { @@ -63,7 +63,7 @@ public class LanguageSelectActivity extends BaseFragment { } }); - ActionBarMenu menu = actionBarLayer.createMenu(); + ActionBarMenu menu = actionBar.createMenu(); menu.addItem(0, R.drawable.ic_ab_search).setIsSearchField(true).setActionBarMenuItemSearchListener(new ActionBarMenuItem.ActionBarMenuItemSearchListener() { @Override public void onSearchExpand() { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java index 6869ee2bb..48a45a740 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java @@ -240,7 +240,6 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa }); } else { drawerLayoutContainer = new DrawerLayoutContainer(this); - drawerLayoutContainer.setStatusBarColor(0xff54759e); drawerLayoutContainer.addView(actionBarLayout, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); ListView listView = new ListView(this); @@ -933,7 +932,7 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa Utilities.checkForUpdates(this); ApplicationLoader.mainInterfacePaused = false; ConnectionsManager.getInstance().setAppPaused(false, false); - actionBarLayout.getActionBar().setBackOverlayVisible(currentConnectionState != 0); + //actionBarLayout.getActionBar().setBackOverlayVisible(currentConnectionState != 0); } @Override @@ -974,7 +973,7 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa if (currentConnectionState != state) { FileLog.e("tmessages", "switch to state " + state); currentConnectionState = state; - actionBarLayout.getActionBar().setBackOverlayVisible(currentConnectionState != 0); + //actionBarLayout.getActionBar().setBackOverlayVisible(currentConnectionState != 0); } } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LocationActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LocationActivity.java index 0685347b9..653b14718 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LocationActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LocationActivity.java @@ -35,7 +35,7 @@ import org.telegram.android.MessageObject; import org.telegram.android.MessagesController; import org.telegram.android.NotificationCenter; import org.telegram.messenger.R; -import org.telegram.ui.Views.ActionBar.ActionBarLayer; +import org.telegram.ui.Views.ActionBar.ActionBar; import org.telegram.ui.Views.ActionBar.ActionBarMenu; import org.telegram.ui.Views.ActionBar.ActionBarMenuItem; import org.telegram.ui.Views.AvatarDrawable; @@ -91,15 +91,15 @@ public class LocationActivity extends BaseFragment implements NotificationCenter @Override public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { - actionBarLayer.setBackButtonImage(R.drawable.ic_ab_back); - actionBarLayer.setBackOverlay(R.layout.updating_state_layout); + actionBar.setBackButtonImage(R.drawable.ic_ab_back); + actionBar.setBackOverlay(R.layout.updating_state_layout); if (messageObject != null) { - actionBarLayer.setTitle(LocaleController.getString("ChatLocation", R.string.ChatLocation)); + actionBar.setTitle(LocaleController.getString("ChatLocation", R.string.ChatLocation)); } else { - actionBarLayer.setTitle(LocaleController.getString("ShareLocation", R.string.ShareLocation)); + actionBar.setTitle(LocaleController.getString("ShareLocation", R.string.ShareLocation)); } - actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { + actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { @Override public void onItemClick(int id) { if (id == -1) { @@ -128,7 +128,7 @@ public class LocationActivity extends BaseFragment implements NotificationCenter } }); - ActionBarMenu menu = actionBarLayer.createMenu(); + ActionBarMenu menu = actionBar.createMenu(); menu.addItem(map_to_my_location, R.drawable.ic_ab_location); ActionBarMenuItem item = menu.addItem(0, R.drawable.ic_ab_other); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LoginActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LoginActivity.java index e553530ba..6db5174cd 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LoginActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LoginActivity.java @@ -27,7 +27,7 @@ import org.telegram.android.AndroidUtilities; import org.telegram.messenger.FileLog; import org.telegram.android.LocaleController; import org.telegram.messenger.R; -import org.telegram.ui.Views.ActionBar.ActionBarLayer; +import org.telegram.ui.Views.ActionBar.ActionBar; import org.telegram.ui.Views.ActionBar.ActionBarMenu; import org.telegram.ui.Views.ActionBar.BaseFragment; import org.telegram.ui.Views.SlideView; @@ -68,9 +68,9 @@ public class LoginActivity extends BaseFragment implements SlideView.SlideViewDe @Override public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { - actionBarLayer.setTitle(LocaleController.getString("AppName", R.string.AppName)); + actionBar.setTitle(LocaleController.getString("AppName", R.string.AppName)); - actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { + actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { @Override public void onItemClick(int id) { if (id == done_button) { @@ -79,7 +79,7 @@ public class LoginActivity extends BaseFragment implements SlideView.SlideViewDe } }); - ActionBarMenu menu = actionBarLayer.createMenu(); + ActionBarMenu menu = actionBar.createMenu(); View doneItem = menu.addItemResource(done_button, R.layout.group_create_done_layout); TextView doneTextView = (TextView)doneItem.findViewById(R.id.done_button); doneTextView.setText(LocaleController.getString("Done", R.string.Done).toUpperCase()); @@ -103,7 +103,7 @@ public class LoginActivity extends BaseFragment implements SlideView.SlideViewDe FileLog.e("tmessages", e); } - actionBarLayer.setTitle(views[0].getHeaderName()); + actionBar.setTitle(views[0].getHeaderName()); Bundle savedInstanceState = loadCurrentState(); if (savedInstanceState != null) { @@ -283,7 +283,7 @@ public class LoginActivity extends BaseFragment implements SlideView.SlideViewDe currentViewNum = page; newView.setParams(params); - actionBarLayer.setTitle(newView.getHeaderName()); + actionBar.setTitle(newView.getHeaderName()); newView.onShow(); newView.setX(back ? -AndroidUtilities.displaySize.x : AndroidUtilities.displaySize.x); outView.animate().setInterpolator(new AccelerateDecelerateInterpolator()).setListener(new Animator.AnimatorListener() { @@ -328,7 +328,7 @@ public class LoginActivity extends BaseFragment implements SlideView.SlideViewDe currentViewNum = page; views[page].setParams(params); views[page].setVisibility(View.VISIBLE); - actionBarLayer.setTitle(views[page].getHeaderName()); + actionBar.setTitle(views[page].getHeaderName()); views[page].onShow(); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/MediaActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/MediaActivity.java index 9eb7d940e..69df42d5d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/MediaActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/MediaActivity.java @@ -33,7 +33,7 @@ import org.telegram.android.MessagesController; import org.telegram.android.NotificationCenter; import org.telegram.messenger.R; import org.telegram.ui.Adapters.BaseFragmentAdapter; -import org.telegram.ui.Views.ActionBar.ActionBarLayer; +import org.telegram.ui.Views.ActionBar.ActionBar; import org.telegram.ui.Views.BackupImageView; import org.telegram.ui.Views.ActionBar.BaseFragment; @@ -87,10 +87,10 @@ public class MediaActivity extends BaseFragment implements NotificationCenter.No @Override public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { - actionBarLayer.setBackButtonImage(R.drawable.ic_ab_back); - actionBarLayer.setBackOverlay(R.layout.updating_state_layout); - actionBarLayer.setTitle(LocaleController.getString("SharedMedia", R.string.SharedMedia)); - actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { + actionBar.setBackButtonImage(R.drawable.ic_ab_back); + actionBar.setBackOverlay(R.layout.updating_state_layout); + actionBar.setTitle(LocaleController.getString("SharedMedia", R.string.SharedMedia)); + actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { @Override public void onItemClick(int id) { if (id == -1) { @@ -259,9 +259,6 @@ public class MediaActivity extends BaseFragment implements NotificationCenter.No @Override public void onResume() { super.onResume(); - if (parentLayout != null) { - parentLayout.getDrawerLayoutContainer().setStatusBarColor(0xff54759e); - } if (listAdapter != null) { listAdapter.notifyDataSetChanged(); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java index 7dc66a992..d0d0933c0 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java @@ -46,7 +46,7 @@ import org.telegram.ui.AnimationCompat.ObjectAnimatorProxy; import org.telegram.ui.AnimationCompat.ViewProxy; import org.telegram.ui.Cells.UserCell; import org.telegram.ui.Cells.DialogCell; -import org.telegram.ui.Views.ActionBar.ActionBarLayer; +import org.telegram.ui.Views.ActionBar.ActionBar; import org.telegram.ui.Views.ActionBar.ActionBarMenu; import org.telegram.ui.Views.ActionBar.ActionBarMenuItem; import org.telegram.ui.Views.ActionBar.BaseFragment; @@ -129,7 +129,7 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter @Override public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { - ActionBarMenu menu = actionBarLayer.createMenu(); + ActionBarMenu menu = actionBar.createMenu(); menu.addItem(0, R.drawable.ic_ab_search).setIsSearchField(true).setActionBarMenuItemSearchListener(new ActionBarMenuItem.ActionBarMenuItemSearchListener() { @Override public void onSearchExpand() { @@ -189,15 +189,15 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter } }); if (onlySelect) { - actionBarLayer.setBackButtonImage(R.drawable.ic_ab_back); - actionBarLayer.setTitle(LocaleController.getString("SelectChat", R.string.SelectChat)); + actionBar.setBackButtonImage(R.drawable.ic_ab_back); + actionBar.setTitle(LocaleController.getString("SelectChat", R.string.SelectChat)); } else { - actionBarLayer.setBackButtonDrawable(new MenuDrawable()); - actionBarLayer.setTitle(LocaleController.getString("AppName", R.string.AppName)); + actionBar.setBackButtonDrawable(new MenuDrawable()); + actionBar.setTitle(LocaleController.getString("AppName", R.string.AppName)); } - actionBarLayer.setBackOverlay(R.layout.updating_state_layout); + actionBar.setBackOverlay(R.layout.updating_state_layout); - actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { + actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { @Override public void onItemClick(int id) { if (id == -1) { @@ -357,9 +357,9 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter return; } messagesActivityAdapter.setOpenedDialogId(openedDialogId = dialog_id); + updateVisibleRows(MessagesController.UPDATE_MASK_SELECT_DIALOG); } presentFragment(new ChatActivity(args)); - updateVisibleRows(0); } } }); @@ -501,7 +501,6 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter @Override public void onResume() { super.onResume(); - showActionBar(); if (messagesActivityAdapter != null) { messagesActivityAdapter.notifyDataSetChanged(); } @@ -579,7 +578,7 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter openedDialogId = dialog_id; } messagesActivityAdapter.setOpenedDialogId(openedDialogId); - updateVisibleRows(0); + updateVisibleRows(MessagesController.UPDATE_MASK_SELECT_DIALOG); } } } @@ -603,14 +602,17 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter View child = messagesListView.getChildAt(a); if (child instanceof DialogCell) { DialogCell cell = (DialogCell) child; - if (!serverOnly && AndroidUtilities.isTablet()) { - if (cell.getDialogId() == openedDialogId) { - child.setBackgroundColor(0x0f000000); - } else { - child.setBackgroundColor(0); + if ((mask & MessagesController.UPDATE_MASK_SELECT_DIALOG) != 0) { + if (!serverOnly && AndroidUtilities.isTablet()) { + if (cell.getDialogId() == openedDialogId) { + child.setBackgroundColor(0x0f000000); + } else { + child.setBackgroundColor(0); + } } + } else { + cell.update(mask); } - cell.update(mask); } else if (child instanceof UserCell) { ((UserCell) child).update(mask); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PhotoCropActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/PhotoCropActivity.java index d65194d49..df1518974 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PhotoCropActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PhotoCropActivity.java @@ -328,15 +328,15 @@ public class PhotoCropActivity extends BaseFragment { @Override public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { - actionBarLayer.setCustomView(R.layout.settings_do_action_layout); - Button cancelButton = (Button)actionBarLayer.findViewById(R.id.cancel_button); + actionBar.setCustomView(R.layout.settings_do_action_layout); + Button cancelButton = (Button) actionBar.findViewById(R.id.cancel_button); cancelButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { finishFragment(); } }); - View doneButton = actionBarLayer.findViewById(R.id.done_button); + View doneButton = actionBar.findViewById(R.id.done_button); doneButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PhotoPickerActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/PhotoPickerActivity.java index 40b82e88b..56da3ea19 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PhotoPickerActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PhotoPickerActivity.java @@ -32,7 +32,7 @@ import org.telegram.messenger.R; import org.telegram.messenger.TLRPC; import org.telegram.android.MessageObject; import org.telegram.ui.Adapters.BaseFragmentAdapter; -import org.telegram.ui.Views.ActionBar.ActionBarLayer; +import org.telegram.ui.Views.ActionBar.ActionBar; import org.telegram.ui.Views.ActionBar.ActionBarMenu; import org.telegram.ui.Views.ActionBar.BaseFragment; import org.telegram.ui.Views.BackupImageView; @@ -84,17 +84,17 @@ public class PhotoPickerActivity extends BaseFragment implements NotificationCen @Override public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { - actionBarLayer.setBackgroundColor(0xff333333); - actionBarLayer.setItemsBackground(R.drawable.bar_selector_picker); - actionBarLayer.setBackButtonImage(R.drawable.ic_ab_back); - actionBarLayer.setTitle(LocaleController.getString("Gallery", R.string.Gallery)); - actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { + actionBar.setBackgroundColor(0xff333333); + actionBar.setItemsBackground(R.drawable.bar_selector_picker); + actionBar.setBackButtonImage(R.drawable.ic_ab_back); + actionBar.setTitle(LocaleController.getString("Gallery", R.string.Gallery)); + actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { @Override public void onItemClick(int id) { if (id == -1) { if (selectedAlbum != null) { selectedAlbum = null; - actionBarLayer.setTitle(LocaleController.getString("Gallery", R.string.Gallery)); + actionBar.setTitle(LocaleController.getString("Gallery", R.string.Gallery)); fixLayoutInternal(); } else { if (Build.VERSION.SDK_INT < 11) { @@ -113,7 +113,7 @@ public class PhotoPickerActivity extends BaseFragment implements NotificationCen } }); - ActionBarMenu menu = actionBarLayer.createMenu(); + ActionBarMenu menu = actionBar.createMenu(); menu.addItem(1, R.drawable.ic_ab_other); fragmentView = inflater.inflate(R.layout.photo_picker_layout, container, false); @@ -158,7 +158,7 @@ public class PhotoPickerActivity extends BaseFragment implements NotificationCen return; } selectedAlbum = albumsSorted.get(i); - actionBarLayer.setTitle(selectedAlbum.bucketName); + actionBar.setTitle(selectedAlbum.bucketName); fixLayoutInternal(); } else { if (i < 0 || i >= selectedAlbum.photos.size()) { @@ -231,7 +231,7 @@ public class PhotoPickerActivity extends BaseFragment implements NotificationCen public boolean onBackPressed() { if (selectedAlbum != null) { selectedAlbum = null; - actionBarLayer.setTitle(LocaleController.getString("Gallery", R.string.Gallery)); + actionBar.setTitle(LocaleController.getString("Gallery", R.string.Gallery)); fixLayoutInternal(); return false; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java b/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java index 92bd205b9..1e22d13b6 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java @@ -64,7 +64,6 @@ import org.telegram.ui.AnimationCompat.AnimatorSetProxy; import org.telegram.ui.AnimationCompat.ObjectAnimatorProxy; import org.telegram.ui.AnimationCompat.ViewProxy; import org.telegram.ui.Views.ActionBar.ActionBar; -import org.telegram.ui.Views.ActionBar.ActionBarLayer; import org.telegram.ui.Views.ActionBar.ActionBarMenu; import org.telegram.ui.Views.ActionBar.ActionBarMenuItem; import org.telegram.ui.Views.ClippingImageView; @@ -84,7 +83,6 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat private Activity parentActivity; private ActionBar actionBar; - private ActionBarLayer actionBarLayer; private boolean isActionBarVisible = true; private static Drawable[] progressDrawables = null; @@ -484,7 +482,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat loadingMoreImages = true; MessagesController.getInstance().loadMedia(currentDialogId, 0, 100, 0, true, classGuid); } else if (!imagesArr.isEmpty()) { - actionBarLayer.setTitle(LocaleController.formatString("Of", R.string.Of, (totalImagesCount - imagesArr.size()) + currentIndex + 1, totalImagesCount)); + actionBar.setTitle(LocaleController.formatString("Of", R.string.Of, (totalImagesCount - imagesArr.size()) + currentIndex + 1, totalImagesCount)); } } } else if (id == NotificationCenter.mediaDidLoaded) { @@ -603,18 +601,16 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat windowLayoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; actionBar = new ActionBar(activity); - containerView.addView(actionBar); actionBar.setBackgroundColor(0x7F000000); - layoutParams = (FrameLayout.LayoutParams)actionBar.getLayoutParams(); + actionBar.setItemsBackground(R.drawable.bar_selector_white); + actionBar.setBackButtonImage(R.drawable.ic_ab_back); + actionBar.setTitle(LocaleController.formatString("Of", R.string.Of, 1, 1)); + containerView.addView(actionBar); + layoutParams = (FrameLayout.LayoutParams) actionBar.getLayoutParams(); layoutParams.width = FrameLayout.LayoutParams.MATCH_PARENT; actionBar.setLayoutParams(layoutParams); - actionBarLayer = actionBar.createLayer(); - actionBarLayer.setItemsBackground(R.drawable.bar_selector_white); - actionBarLayer.setBackButtonImage(R.drawable.ic_ab_back); - actionBarLayer.setTitle(LocaleController.formatString("Of", R.string.Of, 1, 1)); - actionBar.setCurrentActionBarLayer(actionBarLayer); - actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { + actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { @Override public void onItemClick(int id) { if (id == -1) { @@ -692,7 +688,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } }); - ActionBarMenu menu = actionBarLayer.createMenu(); + ActionBarMenu menu = actionBar.createMenu(); menuItem = menu.addItem(0, R.drawable.ic_ab_other); menuItem.addSubItem(gallery_menu_save, LocaleController.getString("SaveToGallery", R.string.SaveToGallery), 0); menuItem.addSubItem(gallery_menu_showall, LocaleController.getString("ShowAllMedia", R.string.ShowAllMedia), 0); @@ -953,7 +949,6 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } isActionBarVisible = show; actionBar.setEnabled(show); - actionBarLayer.setEnabled(show); bottomLayout.setEnabled(show); if (animated) { @@ -1295,7 +1290,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat MessagesController.getInstance().loadMedia(currentDialogId, 0, 100, lastMessage.messageOwner.id, !cacheEndReached, classGuid); loadingMoreImages = true; } - actionBarLayer.setTitle(LocaleController.formatString("Of", R.string.Of, (totalImagesCount - imagesArr.size()) + currentIndex + 1, totalImagesCount)); + actionBar.setTitle(LocaleController.formatString("Of", R.string.Of, (totalImagesCount - imagesArr.size()) + currentIndex + 1, totalImagesCount)); } if (currentMessageObject.messageOwner.ttl != 0) { menuItem.hideSubItem(gallery_menu_save); @@ -1317,12 +1312,12 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if (old != null && currentFileLocation != null && old.local_id == currentFileLocation.local_id && old.volume_id == currentFileLocation.volume_id) { sameImage = true; } - actionBarLayer.setTitle(LocaleController.formatString("Of", R.string.Of, currentIndex + 1, imagesArrLocations.size())); + actionBar.setTitle(LocaleController.formatString("Of", R.string.Of, currentIndex + 1, imagesArrLocations.size())); menuItem.showSubItem(gallery_menu_save); shareButton.setVisibility(View.VISIBLE); } else if (!imagesArrLocals.isEmpty()) { currentPathObject = imagesArrLocals.get(index).path; - actionBarLayer.setTitle(LocaleController.formatString("Of", R.string.Of, currentIndex + 1, imagesArrLocals.size())); + actionBar.setTitle(LocaleController.formatString("Of", R.string.Of, currentIndex + 1, imagesArrLocals.size())); if (placeProvider.isPhotoChecked(currentIndex)) { checkImageView.setBackgroundColor(0xff42d1f6); @@ -1559,7 +1554,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat return; } - actionBarLayer.setTitle(LocaleController.formatString("Of", R.string.Of, 1, 1)); + actionBar.setTitle(LocaleController.formatString("Of", R.string.Of, 1, 1)); NotificationCenter.getInstance().addObserver(this, NotificationCenter.FileDidFailedLoad); NotificationCenter.getInstance().addObserver(this, NotificationCenter.FileDidLoaded); NotificationCenter.getInstance().addObserver(this, NotificationCenter.FileLoadProgressChanged); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PopupNotificationActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/PopupNotificationActivity.java index afbd48054..90201f2d2 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PopupNotificationActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PopupNotificationActivity.java @@ -45,7 +45,6 @@ import org.telegram.messenger.TLRPC; import org.telegram.android.MessageObject; import org.telegram.android.PhotoObject; import org.telegram.ui.Views.ActionBar.ActionBar; -import org.telegram.ui.Views.ActionBar.ActionBarLayer; import org.telegram.ui.Views.ActionBar.ActionBarMenu; import org.telegram.ui.Views.AvatarDrawable; import org.telegram.ui.Views.BackupImageView; @@ -59,7 +58,7 @@ import java.util.ArrayList; public class PopupNotificationActivity extends Activity implements NotificationCenter.NotificationCenterDelegate { - private ActionBarLayer actionBarLayer; + private ActionBar actionBar; private ChatActivityEnterView chatActivityEnterView; private BackupImageView avatarImageView; private TextView countText; @@ -182,19 +181,16 @@ public class PopupNotificationActivity extends Activity implements NotificationC messageContainer = new FrameLayoutTouch(this); popupContainer.addView(messageContainer, 0); - ActionBar actionBar = new ActionBar(this); + actionBar = new ActionBar(this); + actionBar.setBackButtonImage(R.drawable.ic_ab_back); + actionBar.setBackgroundResource(R.color.header); + actionBar.setItemsBackground(R.drawable.bar_selector); popupContainer.addView(actionBar); ViewGroup.LayoutParams layoutParams = actionBar.getLayoutParams(); layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT; actionBar.setLayoutParams(layoutParams); - actionBarLayer = actionBar.createLayer(); - actionBarLayer.setBackButtonImage(R.drawable.ic_ab_back); - actionBarLayer.setBackgroundResource(R.color.header); - actionBarLayer.setItemsBackground(R.drawable.bar_selector); - actionBar.setCurrentActionBarLayer(actionBarLayer); - - ActionBarMenu menu = actionBarLayer.createMenu(); + ActionBarMenu menu = actionBar.createMenu(); View view = menu.addItemResource(2, R.layout.popup_count_layout); countText = (TextView) view.findViewById(R.id.count_text); @@ -202,7 +198,7 @@ public class PopupNotificationActivity extends Activity implements NotificationC avatarImageView = (BackupImageView)view.findViewById(R.id.chat_avatar_image); avatarImageView.processDetach = false; - actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { + actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { @Override public void onItemClick(int id) { if (id == -1) { @@ -715,7 +711,7 @@ public class PopupNotificationActivity extends Activity implements NotificationC } private void updateInterfaceForCurrentMessage(int move) { - if (actionBarLayer == null) { + if (actionBar == null) { return; } currentChat = null; @@ -736,15 +732,15 @@ public class PopupNotificationActivity extends Activity implements NotificationC } if (currentChat != null && currentUser != null) { - actionBarLayer.setTitle(currentChat.title); - actionBarLayer.setSubtitle(ContactsController.formatName(currentUser.first_name, currentUser.last_name)); - actionBarLayer.setTitleIcon(0, 0); + actionBar.setTitle(currentChat.title); + actionBar.setSubtitle(ContactsController.formatName(currentUser.first_name, currentUser.last_name)); + actionBar.setTitleIcon(0, 0); } else if (currentUser != null) { - actionBarLayer.setTitle(ContactsController.formatName(currentUser.first_name, currentUser.last_name)); + actionBar.setTitle(ContactsController.formatName(currentUser.first_name, currentUser.last_name)); if ((int)dialog_id == 0) { - actionBarLayer.setTitleIcon(R.drawable.ic_lock_white, AndroidUtilities.dp(4)); + actionBar.setTitleIcon(R.drawable.ic_lock_white, AndroidUtilities.dp(4)); } else { - actionBarLayer.setTitleIcon(0, 0); + actionBar.setTitleIcon(0, 0); } } @@ -755,7 +751,7 @@ public class PopupNotificationActivity extends Activity implements NotificationC } private void updateSubtitle() { - if (actionBarLayer == null) { + if (actionBar == null) { return; } if (currentChat != null || currentUser == null) { @@ -763,12 +759,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) { - actionBarLayer.setTitle(PhoneFormat.getInstance().format("+" + currentUser.phone)); + actionBar.setTitle(PhoneFormat.getInstance().format("+" + currentUser.phone)); } else { - actionBarLayer.setTitle(ContactsController.formatName(currentUser.first_name, currentUser.last_name)); + actionBar.setTitle(ContactsController.formatName(currentUser.first_name, currentUser.last_name)); } } else { - actionBarLayer.setTitle(ContactsController.formatName(currentUser.first_name, currentUser.last_name)); + actionBar.setTitle(ContactsController.formatName(currentUser.first_name, currentUser.last_name)); } CharSequence printString = MessagesController.getInstance().printingStrings.get(currentMessageObject.getDialogId()); if (printString == null || printString.length() == 0) { @@ -778,10 +774,10 @@ public class PopupNotificationActivity extends Activity implements NotificationC if (user != null) { currentUser = user; } - actionBarLayer.setSubtitle(LocaleController.formatUserStatus(currentUser)); + actionBar.setSubtitle(LocaleController.formatUserStatus(currentUser)); } else { lastPrintString = printString; - actionBarLayer.setSubtitle(printString); + actionBar.setSubtitle(printString); setTypingAnimation(true); } } @@ -816,18 +812,18 @@ public class PopupNotificationActivity extends Activity implements NotificationC } private void setTypingAnimation(boolean start) { - if (actionBarLayer == null) { + if (actionBar == null) { return; } if (start) { try { - actionBarLayer.setSubTitleIcon(0, typingDotsDrawable, AndroidUtilities.dp(4)); + actionBar.setSubTitleIcon(0, typingDotsDrawable, AndroidUtilities.dp(4)); typingDotsDrawable.start(); } catch (Exception e) { FileLog.e("tmessages", e); } } else { - actionBarLayer.setSubTitleIcon(0, null, 0); + actionBar.setSubTitleIcon(0, null, 0); typingDotsDrawable.stop(); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java index f4996bf94..faa04f454 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java @@ -12,6 +12,7 @@ import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.content.res.Configuration; import android.net.Uri; import android.os.Build; import android.os.Bundle; @@ -20,6 +21,7 @@ import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.view.ViewTreeObserver; import android.widget.AdapterView; import android.widget.FrameLayout; import android.widget.ImageView; @@ -42,7 +44,7 @@ import org.telegram.ui.Cells.DividerCell; import org.telegram.ui.Cells.EmptyCell; import org.telegram.ui.Cells.TextCell; import org.telegram.ui.Cells.TextDetailCell; -import org.telegram.ui.Views.ActionBar.ActionBarLayer; +import org.telegram.ui.Views.ActionBar.ActionBar; import org.telegram.ui.Views.ActionBar.ActionBarMenu; import org.telegram.ui.Views.ActionBar.ActionBarMenuItem; import org.telegram.ui.Views.AvatarDrawable; @@ -58,7 +60,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. private BackupImageView avatarImage; private TextView nameTextView; private TextView onlineTextView; - FrameLayout nameContainer; + private ImageView writeButton; private int user_id; private int totalMediaCount = -1; @@ -128,10 +130,12 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. @Override public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { - actionBarLayer.setBackgroundColor(AvatarDrawable.getProfileBackColorForId(user_id)); - actionBarLayer.setBackButtonImage(R.drawable.ic_ab_back); - actionBarLayer.setBackOverlay(R.layout.updating_state_layout); - actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { + actionBar.setBackgroundColor(AvatarDrawable.getProfileBackColorForId(user_id)); + actionBar.setItemsBackground(AvatarDrawable.getButtonColorForId(user_id)); + actionBar.setBackButtonImage(R.drawable.ic_ab_back); + actionBar.setBackOverlay(R.layout.updating_state_layout); + actionBar.setExtraHeight(AndroidUtilities.dp(88)); + actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { @Override public void onItemClick(final int id) { if (id == -1) { @@ -200,27 +204,20 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. fragmentView = new FrameLayout(getParentActivity()); FrameLayout frameLayout = (FrameLayout) fragmentView; - - nameContainer = new FrameLayout(getParentActivity()); - nameContainer.setBackgroundColor(AvatarDrawable.getProfileBackColorForId(user_id)); - frameLayout.addView(nameContainer); - FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) nameContainer.getLayoutParams(); - layoutParams.width = FrameLayout.LayoutParams.MATCH_PARENT; - layoutParams.height = AndroidUtilities.dp(88); - nameContainer.setLayoutParams(layoutParams); + frameLayout.addView(actionBar); avatarImage = new BackupImageView(getParentActivity()); avatarImage.imageReceiver.setRoundRadius(AndroidUtilities.dp(30)); avatarImage.processDetach = false; - nameContainer.addView(avatarImage); - FrameLayout.LayoutParams layoutParams1 = (FrameLayout.LayoutParams) avatarImage.getLayoutParams(); - layoutParams1.gravity = (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.BOTTOM; - layoutParams1.width = AndroidUtilities.dp(60); - layoutParams1.height = AndroidUtilities.dp(60); - layoutParams1.leftMargin = LocaleController.isRTL ? 0 : AndroidUtilities.dp(17); - layoutParams1.rightMargin = LocaleController.isRTL ? AndroidUtilities.dp(17) : 0; - layoutParams1.bottomMargin = AndroidUtilities.dp(22); - avatarImage.setLayoutParams(layoutParams1); + actionBar.addView(avatarImage); + FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) avatarImage.getLayoutParams(); + layoutParams.gravity = (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.BOTTOM; + layoutParams.width = AndroidUtilities.dp(60); + layoutParams.height = AndroidUtilities.dp(60); + layoutParams.leftMargin = LocaleController.isRTL ? 0 : AndroidUtilities.dp(17); + layoutParams.rightMargin = LocaleController.isRTL ? AndroidUtilities.dp(17) : 0; + layoutParams.bottomMargin = AndroidUtilities.dp(22); + avatarImage.setLayoutParams(layoutParams); avatarImage.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -240,42 +237,43 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. nameTextView.setSingleLine(true); nameTextView.setGravity((LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT)); nameTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); - nameContainer.addView(nameTextView); - layoutParams1 = (FrameLayout.LayoutParams) nameTextView.getLayoutParams(); - layoutParams1.width = FrameLayout.LayoutParams.WRAP_CONTENT; - layoutParams1.height = FrameLayout.LayoutParams.WRAP_CONTENT; - layoutParams1.leftMargin = AndroidUtilities.dp(LocaleController.isRTL ? 16 : 97); - layoutParams1.rightMargin = AndroidUtilities.dp(LocaleController.isRTL ? 97 : 16); - layoutParams1.bottomMargin = AndroidUtilities.dp(51); - layoutParams1.gravity = (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.BOTTOM; - nameTextView.setLayoutParams(layoutParams1); + actionBar.addView(nameTextView); + layoutParams = (FrameLayout.LayoutParams) nameTextView.getLayoutParams(); + layoutParams.width = FrameLayout.LayoutParams.WRAP_CONTENT; + layoutParams.height = FrameLayout.LayoutParams.WRAP_CONTENT; + layoutParams.leftMargin = AndroidUtilities.dp(LocaleController.isRTL ? 16 : 97); + layoutParams.rightMargin = AndroidUtilities.dp(LocaleController.isRTL ? 97 : 16); + layoutParams.bottomMargin = AndroidUtilities.dp(51); + layoutParams.gravity = (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.BOTTOM; + nameTextView.setLayoutParams(layoutParams); onlineTextView = new TextView(getParentActivity()); - onlineTextView.setTextColor(0xffd0e4ea); + onlineTextView.setTextColor(AvatarDrawable.getProfileTextColorForId(user_id)); onlineTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); onlineTextView.setLines(1); onlineTextView.setMaxLines(1); onlineTextView.setSingleLine(true); onlineTextView.setGravity((LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT)); - nameContainer.addView(onlineTextView); - layoutParams1 = (FrameLayout.LayoutParams) onlineTextView.getLayoutParams(); - layoutParams1.width = FrameLayout.LayoutParams.WRAP_CONTENT; - layoutParams1.height = FrameLayout.LayoutParams.WRAP_CONTENT; - layoutParams1.leftMargin = AndroidUtilities.dp(LocaleController.isRTL ? 16 : 97); - layoutParams1.rightMargin = AndroidUtilities.dp(LocaleController.isRTL ? 97 : 16); - layoutParams1.bottomMargin = AndroidUtilities.dp(30); - layoutParams1.gravity = (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.BOTTOM; - onlineTextView.setLayoutParams(layoutParams1); + actionBar.addView(onlineTextView); + layoutParams = (FrameLayout.LayoutParams) onlineTextView.getLayoutParams(); + layoutParams.width = FrameLayout.LayoutParams.WRAP_CONTENT; + layoutParams.height = FrameLayout.LayoutParams.WRAP_CONTENT; + layoutParams.leftMargin = AndroidUtilities.dp(LocaleController.isRTL ? 16 : 97); + layoutParams.rightMargin = AndroidUtilities.dp(LocaleController.isRTL ? 97 : 16); + layoutParams.bottomMargin = AndroidUtilities.dp(30); + layoutParams.gravity = (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.BOTTOM; + onlineTextView.setLayoutParams(layoutParams); listView = new ListView(getParentActivity()); listView.setDivider(null); listView.setDividerHeight(0); listView.setVerticalScrollBarEnabled(false); + AndroidUtilities.setListViewEdgeEffectColor(listView, AvatarDrawable.getProfileBackColorForId(user_id)); frameLayout.addView(listView); layoutParams = (FrameLayout.LayoutParams) listView.getLayoutParams(); - layoutParams.topMargin = AndroidUtilities.dp(88); layoutParams.width = FrameLayout.LayoutParams.MATCH_PARENT; layoutParams.height = FrameLayout.LayoutParams.MATCH_PARENT; + layoutParams.gravity = Gravity.TOP; listView.setLayoutParams(layoutParams); listView.setAdapter(listAdapter); @@ -359,17 +357,16 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. MessagesController.getInstance().getMediaCount(user_id, classGuid, true); } - ImageView writeButton = new ImageView(getParentActivity()); - writeButton.setImageResource(R.drawable.floating_states); + writeButton = new ImageView(getParentActivity()); + writeButton.setImageResource(R.drawable.floating_user_states); frameLayout.addView(writeButton); - layoutParams1 = (FrameLayout.LayoutParams) writeButton.getLayoutParams(); - layoutParams1.width = FrameLayout.LayoutParams.WRAP_CONTENT; - layoutParams1.height = FrameLayout.LayoutParams.WRAP_CONTENT; - layoutParams1.leftMargin = AndroidUtilities.dp(LocaleController.isRTL ? 16 : 0); - layoutParams1.rightMargin = AndroidUtilities.dp(LocaleController.isRTL ? 0 : 16); - layoutParams1.topMargin = AndroidUtilities.dp(58); - layoutParams1.gravity = (LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT); - writeButton.setLayoutParams(layoutParams1); + layoutParams = (FrameLayout.LayoutParams) writeButton.getLayoutParams(); + layoutParams.width = FrameLayout.LayoutParams.WRAP_CONTENT; + layoutParams.height = FrameLayout.LayoutParams.WRAP_CONTENT; + layoutParams.leftMargin = AndroidUtilities.dp(LocaleController.isRTL ? 16 : 0); + layoutParams.rightMargin = AndroidUtilities.dp(LocaleController.isRTL ? 0 : 16); + layoutParams.gravity = (LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT); + writeButton.setLayoutParams(layoutParams); writeButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -394,6 +391,38 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. return fragmentView; } + private void fixLayout() { + if (fragmentView == null) { + return; + } + fragmentView.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { + @Override + public boolean onPreDraw() { + if (fragmentView != null) { + ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) listView.getLayoutParams(); + layoutParams.topMargin = actionBar.getHeight(); + listView.setLayoutParams(layoutParams); + layoutParams = (ViewGroup.MarginLayoutParams) writeButton.getLayoutParams(); + layoutParams.topMargin = actionBar.getHeight() - AndroidUtilities.dp(29.5f); + writeButton.setLayoutParams(layoutParams); + fragmentView.getViewTreeObserver().removeOnPreDrawListener(this); + } + return false; + } + }); + } + + @Override + public void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); + fixLayout(); + } + + @Override + public boolean needAddActionBar() { + return false; + } + public void didReceivedNotification(int id, final Object... args) { if (id == NotificationCenter.updateInterfaces) { int mask = (Integer)args[0]; @@ -444,12 +473,10 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. @Override public void onResume() { super.onResume(); - if (parentLayout != null) { - parentLayout.getDrawerLayoutContainer().setStatusBarColor(AvatarDrawable.getProfileBackColorForId(user_id)); - } if (listAdapter != null) { listAdapter.notifyDataSetChanged(); } + fixLayout(); } @Override @@ -466,7 +493,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. PhotoViewer.PlaceProviderObject object = new PhotoViewer.PlaceProviderObject(); object.viewX = coords[0]; object.viewY = coords[1] - AndroidUtilities.statusBarHeight; - object.parentView = nameContainer; + object.parentView = avatarImage; object.imageReceiver = avatarImage.imageReceiver; object.user_id = user_id; object.thumb = object.imageReceiver.getBitmap(); @@ -509,6 +536,8 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. usernameRow = -1; } sectionRow = rowCount++; + settingsNotificationsRow = rowCount++; + sharedMediaRow = rowCount++; if (currentEncryptedChat instanceof TLRPC.TL_encryptedChat) { settingsTimerRow = rowCount++; settingsKeyRow = rowCount++; @@ -516,8 +545,6 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. settingsTimerRow = -1; settingsKeyRow = -1; } - settingsNotificationsRow = rowCount++; - sharedMediaRow = rowCount++; if (currentEncryptedChat == null) { startSecretChatRow = rowCount++; } else { @@ -543,7 +570,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } private void createActionBarMenu() { - ActionBarMenu menu = actionBarLayer.createMenu(); + ActionBarMenu menu = actionBar.createMenu(); menu.clearItems(); if (ContactsController.getInstance().contactsDict.get(user_id) == null) { @@ -661,7 +688,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } else { text = LocaleController.getString("NumberUnknown", R.string.NumberUnknown); } - textDetailCell.setTextAndValue(text, LocaleController.getString("PhoneMobile", R.string.PhoneMobile)); + textDetailCell.setTextAndValueAndIcon(text, LocaleController.getString("PhoneMobile", R.string.PhoneMobile), R.drawable.phone_grey); } else if (i == usernameRow) { String text; if (user != null && user.username != null && user.username.length() != 0) { @@ -696,7 +723,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } textCell.setTextAndValue(LocaleController.getString("MessageLifetime", R.string.MessageLifetime), value); } else if (i == settingsNotificationsRow) { - textCell.setText(LocaleController.getString("NotificationsAndSounds", R.string.NotificationsAndSounds)); + textCell.setTextAndIcon(LocaleController.getString("NotificationsAndSounds", R.string.NotificationsAndSounds), R.drawable.profile_list); } else if (i == startSecretChatRow) { textCell.setText(LocaleController.getString("StartEncryptedChat", R.string.StartEncryptedChat)); textCell.setTextColor(0xff37a919); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ProfileNotificationsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ProfileNotificationsActivity.java index 3aadeff64..8ab9fd8c1 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ProfileNotificationsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ProfileNotificationsActivity.java @@ -23,9 +23,11 @@ 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.TextView; +import org.telegram.android.AndroidUtilities; import org.telegram.android.MessagesController; import org.telegram.android.MessagesStorage; import org.telegram.messenger.ConnectionsManager; @@ -37,8 +39,9 @@ import org.telegram.messenger.RPCRequest; import org.telegram.messenger.TLObject; import org.telegram.messenger.TLRPC; import org.telegram.ui.Adapters.BaseFragmentAdapter; -import org.telegram.ui.Views.ActionBar.ActionBarLayer; +import org.telegram.ui.Views.ActionBar.ActionBar; import org.telegram.ui.Views.ActionBar.BaseFragment; +import org.telegram.ui.Views.AvatarDrawable; import org.telegram.ui.Views.ColorPickerView; public class ProfileNotificationsActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate { @@ -76,12 +79,10 @@ public class ProfileNotificationsActivity extends BaseFragment implements Notifi @Override public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { - actionBarLayer.setBackButtonImage(R.drawable.ic_ab_back); - actionBarLayer.setBackOverlay(R.layout.updating_state_layout); - - actionBarLayer.setTitle(LocaleController.getString("NotificationsAndSounds", R.string.NotificationsAndSounds)); - - actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { + actionBar.setBackButtonImage(R.drawable.ic_ab_back); + actionBar.setBackOverlay(R.layout.updating_state_layout); + actionBar.setTitle(LocaleController.getString("NotificationsAndSounds", R.string.NotificationsAndSounds)); + actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { @Override public void onItemClick(int id) { if (id == -1) { @@ -90,9 +91,19 @@ public class ProfileNotificationsActivity extends BaseFragment implements Notifi } }); - fragmentView = inflater.inflate(R.layout.settings_layout, container, false); + fragmentView = new FrameLayout(getParentActivity()); + FrameLayout frameLayout = (FrameLayout) fragmentView; - listView = (ListView)fragmentView.findViewById(R.id.listView); + listView = new ListView(getParentActivity()); + listView.setDivider(null); + listView.setDividerHeight(0); + listView.setVerticalScrollBarEnabled(false); + AndroidUtilities.setListViewEdgeEffectColor(listView, AvatarDrawable.getProfileBackColorForId(5)); + frameLayout.addView(listView); + FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) listView.getLayoutParams(); + layoutParams.width = FrameLayout.LayoutParams.MATCH_PARENT; + layoutParams.height = FrameLayout.LayoutParams.MATCH_PARENT; + listView.setLayoutParams(layoutParams); listView.setAdapter(new ListAdapter(getParentActivity())); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override @@ -253,14 +264,6 @@ public class ProfileNotificationsActivity extends BaseFragment implements Notifi return fragmentView; } - @Override - public void onResume() { - super.onResume(); - if (parentLayout != null) { - parentLayout.getDrawerLayoutContainer().setStatusBarColor(0xff54759e); - } - } - public void updateServerNotificationsSettings() { if ((int)dialog_id == 0) { return; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/SettingsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/SettingsActivity.java index 2fb8fe676..de6a54d6b 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/SettingsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/SettingsActivity.java @@ -16,19 +16,22 @@ import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageInfo; -import android.graphics.Typeface; +import android.content.res.Configuration; import android.net.Uri; import android.os.Bundle; import android.text.Html; import android.text.Spannable; import android.text.method.LinkMovementMethod; import android.util.Base64; +import android.util.TypedValue; +import android.view.Gravity; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; +import android.view.ViewTreeObserver; import android.widget.AdapterView; -import android.widget.ImageButton; +import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; @@ -55,55 +58,74 @@ import org.telegram.messenger.RPCRequest; import org.telegram.messenger.UserConfig; import org.telegram.android.MessageObject; import org.telegram.ui.Adapters.BaseFragmentAdapter; -import org.telegram.ui.Views.ActionBar.ActionBarLayer; +import org.telegram.ui.Cells.DetailTextCell; +import org.telegram.ui.Cells.EmptyCell; +import org.telegram.ui.Cells.HeaderCell; +import org.telegram.ui.Cells.ShadowSectionCell; +import org.telegram.ui.Cells.TextCheckCell; +import org.telegram.ui.Cells.TextDetailSettingsCell; +import org.telegram.ui.Cells.TextSettingsCell; +import org.telegram.ui.Views.ActionBar.ActionBar; +import org.telegram.ui.Views.ActionBar.ActionBarMenu; +import org.telegram.ui.Views.ActionBar.ActionBarMenuItem; import org.telegram.ui.Views.AvatarDrawable; import org.telegram.ui.Views.AvatarUpdater; import org.telegram.ui.Views.BackupImageView; import org.telegram.ui.Views.ActionBar.BaseFragment; import org.telegram.ui.Views.NumberPicker; -import org.telegram.ui.Views.SettingsSectionLayout; import java.io.File; import java.util.ArrayList; import java.util.Locale; public class SettingsActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate, PhotoViewer.PhotoViewerProvider { + private ListView listView; private ListAdapter listAdapter; + private BackupImageView avatarImage; + private TextView nameTextView; + private TextView onlineTextView; + private ImageView writeButton; private AvatarUpdater avatarUpdater = new AvatarUpdater(); - private int profileRow; + private int emptyRow; private int numberSectionRow; private int numberRow; private int usernameRow; private int settingsSectionRow; - private int textSizeRow; + private int settingsSectionRow2; private int enableAnimationsRow; private int notificationRow; private int blockedRow; private int backgroundRow; - private int supportSectionRow; - private int askQuestionRow; - private int logoutRow; - private int sendLogsRow; - private int clearLogsRow; - private int switchBackendButtonRow; - private int messagesSectionRow; - private int sendByEnterRow; + private int languageRow; private int terminateSessionsRow; private int mediaDownloadSection; + private int mediaDownloadSection2; private int mobileDownloadRow; private int wifiDownloadRow; private int roamingDownloadRow; private int saveToGalleryRow; + private int messagesSectionRow; + private int messagesSectionRow2; + private int textSizeRow; + private int sendByEnterRow; + private int supportSectionRow; + private int supportSectionRow2; + private int askQuestionRow; private int telegramFaqRow; - private int languageRow; + private int sendLogsRow; + private int clearLogsRow; + private int switchBackendButtonRow; private int versionRow; private int contactsSectionRow; private int contactsReimportRow; private int contactsSortRow; private int rowCount; + private final static int edit_name = 1; + private final static int logout = 2; + private static class LinkMovementMethodMy extends LinkMovementMethod { @Override public boolean onTouchEvent(TextView widget, Spannable buffer, MotionEvent event) { @@ -177,40 +199,42 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter }; NotificationCenter.getInstance().addObserver(this, NotificationCenter.updateInterfaces); - rowCount = 0; - profileRow = rowCount++; + emptyRow = rowCount++; numberSectionRow = rowCount++; numberRow = rowCount++; usernameRow = rowCount++; settingsSectionRow = rowCount++; + settingsSectionRow2 = rowCount++; enableAnimationsRow = rowCount++; - languageRow = rowCount++; notificationRow = rowCount++; blockedRow = rowCount++; backgroundRow = rowCount++; + languageRow = rowCount++; terminateSessionsRow = rowCount++; mediaDownloadSection = rowCount++; + mediaDownloadSection2 = rowCount++; mobileDownloadRow = rowCount++; wifiDownloadRow = rowCount++; roamingDownloadRow = rowCount++; saveToGalleryRow = rowCount++; messagesSectionRow = rowCount++; + messagesSectionRow2 = rowCount++; textSizeRow = rowCount++; sendByEnterRow = rowCount++; - //contactsSectionRow = rowCount++; - //contactsSortRow = rowCount++; - //contactsReimportRow = rowCount++; supportSectionRow = rowCount++; + supportSectionRow2 = rowCount++; + askQuestionRow = rowCount++; + telegramFaqRow = rowCount++; if (BuildVars.DEBUG_VERSION) { sendLogsRow = rowCount++; clearLogsRow = rowCount++; switchBackendButtonRow = rowCount++; } - telegramFaqRow = rowCount++; - askQuestionRow = rowCount++; - logoutRow = rowCount++; versionRow = rowCount++; + //contactsSectionRow = rowCount++; + //contactsReimportRow = rowCount++; + //contactsSortRow = rowCount++; MessagesController.getInstance().loadFullUser(UserConfig.getCurrentUser(), classGuid); @@ -225,24 +249,134 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter avatarUpdater.clear(); } + @Override + public boolean needAddActionBar() { + return false; + } + @Override public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { - actionBarLayer.setBackButtonImage(R.drawable.ic_ab_back); - actionBarLayer.setBackOverlay(R.layout.updating_state_layout); - actionBarLayer.setTitle(LocaleController.getString("Settings", R.string.Settings)); - actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { + actionBar.setBackgroundColor(AvatarDrawable.getProfileBackColorForId(5)); + actionBar.setItemsBackground(AvatarDrawable.getButtonColorForId(5)); + actionBar.setBackButtonImage(R.drawable.ic_ab_back); + actionBar.setBackOverlay(R.layout.updating_state_layout); + actionBar.setExtraHeight(AndroidUtilities.dp(88)); + actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { @Override public void onItemClick(int id) { if (id == -1) { finishFragment(); + } else if (id == edit_name) { + presentFragment(new SettingsChangeNameActivity()); + } else if (id == logout) { + if (getParentActivity() == null) { + return; + } + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + builder.setMessage(LocaleController.getString("AreYouSureLogout", R.string.AreYouSureLogout)); + 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) { + SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE); + SharedPreferences.Editor editor = preferences.edit(); + editor.clear().commit(); + NotificationCenter.getInstance().postNotificationName(NotificationCenter.appDidLogout); + MessagesController.getInstance().unregistedPush(); + MessagesController.getInstance().logOut(); + UserConfig.clearConfig(); + MessagesStorage.getInstance().cleanUp(false); + MessagesController.getInstance().cleanUp(); + ContactsController.getInstance().deleteAllAppAccounts(); + } + }); + builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); + showAlertDialog(builder); + } + } + }); + 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); + + listAdapter = new ListAdapter(getParentActivity()); + + fragmentView = new FrameLayout(getParentActivity()); + FrameLayout frameLayout = (FrameLayout) fragmentView; + frameLayout.addView(actionBar); + + avatarImage = new BackupImageView(getParentActivity()); + avatarImage.imageReceiver.setRoundRadius(AndroidUtilities.dp(30)); + avatarImage.processDetach = false; + actionBar.addView(avatarImage); + FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) avatarImage.getLayoutParams(); + layoutParams.gravity = (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.BOTTOM; + layoutParams.width = AndroidUtilities.dp(60); + layoutParams.height = AndroidUtilities.dp(60); + layoutParams.leftMargin = LocaleController.isRTL ? 0 : AndroidUtilities.dp(17); + layoutParams.rightMargin = LocaleController.isRTL ? AndroidUtilities.dp(17) : 0; + layoutParams.bottomMargin = AndroidUtilities.dp(22); + avatarImage.setLayoutParams(layoutParams); + avatarImage.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + TLRPC.User user = MessagesController.getInstance().getUser(UserConfig.getClientUserId()); + if (user.photo != null && user.photo.photo_big != null) { + PhotoViewer.getInstance().setParentActivity(getParentActivity()); + PhotoViewer.getInstance().openPhoto(user.photo.photo_big, SettingsActivity.this); } } }); - fragmentView = inflater.inflate(R.layout.settings_layout, container, false); - listAdapter = new ListAdapter(getParentActivity()); - listView = (ListView)fragmentView.findViewById(R.id.listView); + nameTextView = new TextView(getParentActivity()); + nameTextView.setTextColor(0xffffffff); + nameTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20); + nameTextView.setLines(1); + nameTextView.setMaxLines(1); + nameTextView.setSingleLine(true); + nameTextView.setGravity((LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT)); + nameTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + actionBar.addView(nameTextView); + layoutParams = (FrameLayout.LayoutParams) nameTextView.getLayoutParams(); + layoutParams.width = FrameLayout.LayoutParams.WRAP_CONTENT; + layoutParams.height = FrameLayout.LayoutParams.WRAP_CONTENT; + layoutParams.leftMargin = AndroidUtilities.dp(LocaleController.isRTL ? 16 : 97); + layoutParams.rightMargin = AndroidUtilities.dp(LocaleController.isRTL ? 97 : 16); + layoutParams.bottomMargin = AndroidUtilities.dp(51); + layoutParams.gravity = (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.BOTTOM; + nameTextView.setLayoutParams(layoutParams); + + onlineTextView = new TextView(getParentActivity()); + onlineTextView.setTextColor(AvatarDrawable.getProfileTextColorForId(5)); + onlineTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); + onlineTextView.setLines(1); + onlineTextView.setMaxLines(1); + onlineTextView.setSingleLine(true); + onlineTextView.setGravity((LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT)); + actionBar.addView(onlineTextView); + layoutParams = (FrameLayout.LayoutParams) onlineTextView.getLayoutParams(); + layoutParams.width = FrameLayout.LayoutParams.WRAP_CONTENT; + layoutParams.height = FrameLayout.LayoutParams.WRAP_CONTENT; + layoutParams.leftMargin = AndroidUtilities.dp(LocaleController.isRTL ? 16 : 97); + layoutParams.rightMargin = AndroidUtilities.dp(LocaleController.isRTL ? 97 : 16); + layoutParams.bottomMargin = AndroidUtilities.dp(30); + layoutParams.gravity = (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.BOTTOM; + onlineTextView.setLayoutParams(layoutParams); + + listView = new ListView(getParentActivity()); + listView.setDivider(null); + listView.setDividerHeight(0); + listView.setVerticalScrollBarEnabled(false); + AndroidUtilities.setListViewEdgeEffectColor(listView, AvatarDrawable.getProfileBackColorForId(5)); + frameLayout.addView(listView); + 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 @@ -433,7 +567,7 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter mask = MediaController.getInstance().roamingDownloadMask; } builder.setMultiChoiceItems( - new CharSequence[]{LocaleController.getString("AttachPhoto", R.string.AttachPhoto), LocaleController.getString("AttachAudio", R.string.AttachAudio), LocaleController.getString("AttachAudio", R.string.AttachVideo), LocaleController.getString("AttachAudio", R.string.AttachDocument)}, + new CharSequence[]{LocaleController.getString("AttachPhoto", R.string.AttachPhoto), LocaleController.getString("AttachAudio", R.string.AttachAudio), LocaleController.getString("AttachVideo", R.string.AttachVideo), LocaleController.getString("AttachDocument", R.string.AttachDocument)}, new boolean[]{(mask & MediaController.AUTODOWNLOAD_MASK_PHOTO) != 0, (mask & MediaController.AUTODOWNLOAD_MASK_AUDIO) != 0, (mask & MediaController.AUTODOWNLOAD_MASK_VIDEO) != 0, (mask & MediaController.AUTODOWNLOAD_MASK_DOCUMENT) != 0}, new DialogInterface.OnMultiChoiceClickListener() { @Override @@ -489,6 +623,60 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter } } }); + + writeButton = new ImageView(getParentActivity()); + writeButton.setImageResource(R.drawable.floating_group_states); + frameLayout.addView(writeButton); + layoutParams = (FrameLayout.LayoutParams) writeButton.getLayoutParams(); + layoutParams.width = FrameLayout.LayoutParams.WRAP_CONTENT; + layoutParams.height = FrameLayout.LayoutParams.WRAP_CONTENT; + layoutParams.leftMargin = AndroidUtilities.dp(LocaleController.isRTL ? 16 : 0); + layoutParams.rightMargin = AndroidUtilities.dp(LocaleController.isRTL ? 0 : 16); + layoutParams.gravity = (LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT); + writeButton.setLayoutParams(layoutParams); + writeButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (getParentActivity() == null) { + return; + } + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + + CharSequence[] items; + + TLRPC.User user = MessagesController.getInstance().getUser(UserConfig.getClientUserId()); + if (user == null) { + user = UserConfig.getCurrentUser(); + } + if (user == null) { + return; + } + boolean fullMenu = false; + if (user.photo != null && user.photo.photo_big != null && !(user.photo instanceof TLRPC.TL_userProfilePhotoEmpty)) { + items = new CharSequence[] {LocaleController.getString("FromCamera", R.string.FromCamera), LocaleController.getString("FromGalley", R.string.FromGalley), LocaleController.getString("DeletePhoto", R.string.DeletePhoto)}; + fullMenu = true; + } else { + items = new CharSequence[] {LocaleController.getString("FromCamera", R.string.FromCamera), LocaleController.getString("FromGalley", R.string.FromGalley)}; + } + + final boolean full = fullMenu; + builder.setItems(items, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + if (i == 0) { + avatarUpdater.openCamera(); + } else if (i == 1) { + avatarUpdater.openGallery(); + } else if (i == 3) { + MessagesController.getInstance().deleteUserPhoto(null); + } + } + }); + showAlertDialog(builder); + } + }); + + updateUserData(); } else { ViewGroup parent = (ViewGroup)fragmentView.getParent(); if (parent != null) { @@ -512,24 +700,17 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter if (user != null && user.photo != null && user.photo.photo_big != null) { TLRPC.FileLocation photoBig = user.photo.photo_big; if (photoBig.local_id == fileLocation.local_id && photoBig.volume_id == fileLocation.volume_id && photoBig.dc_id == fileLocation.dc_id) { - int count = listView.getChildCount(); - for (int a = 0; a < count; a++) { - View view = listView.getChildAt(a); - BackupImageView avatarImage = (BackupImageView)view.findViewById(R.id.settings_avatar_image); - if (avatarImage != null) { - int coords[] = new int[2]; - avatarImage.getLocationInWindow(coords); - PhotoViewer.PlaceProviderObject object = new PhotoViewer.PlaceProviderObject(); - object.viewX = coords[0]; - object.viewY = coords[1] - AndroidUtilities.statusBarHeight; - object.parentView = listView; - object.imageReceiver = avatarImage.imageReceiver; - object.user_id = UserConfig.getClientUserId(); - object.thumb = object.imageReceiver.getBitmap(); - object.size = -1; - return object; - } - } + int coords[] = new int[2]; + avatarImage.getLocationInWindow(coords); + PhotoViewer.PlaceProviderObject object = new PhotoViewer.PlaceProviderObject(); + object.viewX = coords[0]; + object.viewY = coords[1] - AndroidUtilities.statusBarHeight; + object.parentView = avatarImage; + object.imageReceiver = avatarImage.imageReceiver; + object.user_id = UserConfig.getClientUserId(); + object.thumb = object.imageReceiver.getBitmap(); + object.size = -1; + return object; } } return null; @@ -663,13 +844,64 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter if (id == NotificationCenter.updateInterfaces) { int mask = (Integer)args[0]; if ((mask & MessagesController.UPDATE_MASK_AVATAR) != 0 || (mask & MessagesController.UPDATE_MASK_NAME) != 0) { - if (listView != null) { - listView.invalidateViews(); - } + updateUserData(); } } } + @Override + public void onResume() { + super.onResume(); + if (listAdapter != null) { + listAdapter.notifyDataSetChanged(); + } + fixLayout(); + } + + @Override + public void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); + fixLayout(); + } + + private void fixLayout() { + if (fragmentView == null) { + return; + } + fragmentView.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { + @Override + public boolean onPreDraw() { + if (fragmentView != null) { + ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) listView.getLayoutParams(); + layoutParams.topMargin = actionBar.getHeight(); + listView.setLayoutParams(layoutParams); + layoutParams = (ViewGroup.MarginLayoutParams) writeButton.getLayoutParams(); + layoutParams.topMargin = actionBar.getHeight() - AndroidUtilities.dp(29.5f); + writeButton.setLayoutParams(layoutParams); + fragmentView.getViewTreeObserver().removeOnPreDrawListener(this); + } + return false; + } + }); + } + + private void updateUserData() { + TLRPC.User user = MessagesController.getInstance().getUser(UserConfig.getClientUserId()); + TLRPC.FileLocation photo = null; + TLRPC.FileLocation photoBig = null; + if (user.photo != null) { + photo = user.photo.photo_small; + photoBig = user.photo.photo_big; + } + avatarImage.setImage(photo, "50_50", new AvatarDrawable(user, true)); + avatarImage.imageReceiver.setVisible(!PhotoViewer.getInstance().isShowingImage(photoBig), false); + + nameTextView.setText(ContactsController.formatName(user.first_name, user.last_name)); + onlineTextView.setText(LocaleController.formatUserStatus(user)); + + avatarImage.imageReceiver.setVisible(!PhotoViewer.getInstance().isShowingImage(photoBig), false); + } + private void sendLogs() { try { ArrayList uris = new ArrayList(); @@ -694,14 +926,6 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter } } - @Override - public void onResume() { - super.onResume(); - if (listAdapter != null) { - listAdapter.notifyDataSetChanged(); - } - } - private class ListAdapter extends BaseFragmentAdapter { private Context mContext; @@ -747,349 +971,180 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter int type = getItemViewType(i); if (type == 0) { if (view == null) { - LayoutInflater li = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); - view = li.inflate(R.layout.settings_name_layout, viewGroup, false); - - ImageButton button = (ImageButton)view.findViewById(R.id.settings_edit_name); - button.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - presentFragment(new SettingsChangeNameActivity()); - } - }); - - final ImageButton button2 = (ImageButton)view.findViewById(R.id.settings_change_avatar_button); - button2.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (getParentActivity() == null) { - return; - } - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); - - CharSequence[] items; - - TLRPC.User user = MessagesController.getInstance().getUser(UserConfig.getClientUserId()); - if (user == null) { - user = UserConfig.getCurrentUser(); - } - if (user == null) { - return; - } - boolean fullMenu = false; - if (user.photo != null && user.photo.photo_big != null && !(user.photo instanceof TLRPC.TL_userProfilePhotoEmpty)) { - items = new CharSequence[] {LocaleController.getString("OpenPhoto", R.string.OpenPhoto), LocaleController.getString("FromCamera", R.string.FromCamera), LocaleController.getString("FromGalley", R.string.FromGalley), LocaleController.getString("DeletePhoto", R.string.DeletePhoto)}; - fullMenu = true; - } else { - items = new CharSequence[] {LocaleController.getString("FromCamera", R.string.FromCamera), LocaleController.getString("FromGalley", R.string.FromGalley)}; - } - - final boolean full = fullMenu; - builder.setItems(items, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - if (i == 0 && full) { - TLRPC.User user = MessagesController.getInstance().getUser(UserConfig.getClientUserId()); - if (user != null && user.photo != null && user.photo.photo_big != null) { - PhotoViewer.getInstance().setParentActivity(getParentActivity()); - PhotoViewer.getInstance().openPhoto(user.photo.photo_big, SettingsActivity.this); - } - } else if (i == 0 && !full || i == 1 && full) { - avatarUpdater.openCamera(); - } else if (i == 1 && !full || i == 2 && full) { - avatarUpdater.openGallery(); - } else if (i == 3) { - MessagesController.getInstance().deleteUserPhoto(null); - } - } - }); - showAlertDialog(builder); - } - }); + view = new EmptyCell(mContext, 16); } - TextView textView = (TextView)view.findViewById(R.id.settings_online); - textView.setText(LocaleController.getString("Online", R.string.Online)); - - textView = (TextView)view.findViewById(R.id.settings_name); - Typeface typeface = AndroidUtilities.getTypeface("fonts/rmedium.ttf"); - textView.setTypeface(typeface); - TLRPC.User user = MessagesController.getInstance().getUser(UserConfig.getClientUserId()); - if (user == null) { - user = UserConfig.getCurrentUser(); - } - if (user != null) { - textView.setText(ContactsController.formatName(user.first_name, user.last_name)); - BackupImageView avatarImage = (BackupImageView)view.findViewById(R.id.settings_avatar_image); - avatarImage.processDetach = false; - TLRPC.FileLocation photo = null; - TLRPC.FileLocation photoBig = null; - if (user.photo != null) { - photo = user.photo.photo_small; - photoBig = user.photo.photo_big; - } - avatarImage.setImage(photo, "50_50", new AvatarDrawable(user)); - avatarImage.imageReceiver.setVisible(!PhotoViewer.getInstance().isShowingImage(photoBig), false); - } - return view; } else if (type == 1) { if (view == null) { - view = new SettingsSectionLayout(mContext); - } - if (i == numberSectionRow) { - ((SettingsSectionLayout) view).setText(LocaleController.getString("Info", R.string.Info)); - } else if (i == settingsSectionRow) { - ((SettingsSectionLayout) view).setText(LocaleController.getString("SETTINGS", R.string.SETTINGS)); - } else if (i == supportSectionRow) { - ((SettingsSectionLayout) view).setText(LocaleController.getString("Support", R.string.Support)); - } else if (i == messagesSectionRow) { - ((SettingsSectionLayout) view).setText(LocaleController.getString("MessagesSettings", R.string.MessagesSettings)); - } else if (i == mediaDownloadSection) { - ((SettingsSectionLayout) view).setText(LocaleController.getString("AutomaticMediaDownload", R.string.AutomaticMediaDownload)); - } else if (i == contactsSectionRow) { - ((SettingsSectionLayout) view).setText(LocaleController.getString("Contacts", R.string.Contacts).toUpperCase()); + view = new ShadowSectionCell(mContext); } } else if (type == 2) { if (view == null) { - LayoutInflater li = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); - view = li.inflate(R.layout.settings_row_button_layout, viewGroup, false); + view = new TextSettingsCell(mContext); } - TextView textView = (TextView)view.findViewById(R.id.settings_row_text); - View divider = view.findViewById(R.id.settings_row_divider); - if (i == notificationRow) { - textView.setText(LocaleController.getString("NotificationsAndSounds", R.string.NotificationsAndSounds)); - divider.setVisibility(View.VISIBLE); - } else if (i == blockedRow) { - textView.setText(LocaleController.getString("BlockedUsers", R.string.BlockedUsers)); - divider.setVisibility(backgroundRow != 0 ? View.VISIBLE : View.INVISIBLE); - } else if (i == backgroundRow) { - textView.setText(LocaleController.getString("ChatBackground", R.string.ChatBackground)); - divider.setVisibility(View.VISIBLE); - } else if (i == sendLogsRow) { - textView.setText("Send Logs"); - divider.setVisibility(View.VISIBLE); - } else if (i == clearLogsRow) { - textView.setText("Clear Logs"); - divider.setVisibility(View.VISIBLE); - } else if (i == askQuestionRow) { - textView.setText(LocaleController.getString("AskAQuestion", R.string.AskAQuestion)); - divider.setVisibility(View.INVISIBLE); - } else if (i == terminateSessionsRow) { - textView.setText(LocaleController.getString("TerminateAllSessions", R.string.TerminateAllSessions)); - divider.setVisibility(View.INVISIBLE); - } else if (i == switchBackendButtonRow) { - textView.setText("Switch Backend"); - divider.setVisibility(View.VISIBLE); - } else if (i == telegramFaqRow) { - textView.setText(LocaleController.getString("TelegramFAQ", R.string.TelegramFaq)); - divider.setVisibility(View.VISIBLE); - } else if (i == contactsReimportRow) { - textView.setText(LocaleController.getString("ImportContacts", R.string.ImportContacts)); - divider.setVisibility(View.INVISIBLE); - } - } else if (type == 3) { - if (view == null) { - LayoutInflater li = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); - view = li.inflate(R.layout.settings_row_check_layout, viewGroup, false); - } - TextView textView = (TextView)view.findViewById(R.id.settings_row_text); - View divider = view.findViewById(R.id.settings_row_divider); - ImageView checkButton = (ImageView)view.findViewById(R.id.settings_row_check_button); - SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE); - if (i == enableAnimationsRow) { - textView.setText(LocaleController.getString("EnableAnimations", R.string.EnableAnimations)); - divider.setVisibility(View.VISIBLE); - boolean enabled = preferences.getBoolean("view_animations", true); - if (enabled) { - checkButton.setImageResource(R.drawable.btn_check_on); - } else { - checkButton.setImageResource(R.drawable.btn_check_off); - } - } else if (i == sendByEnterRow) { - textView.setText(LocaleController.getString("SendByEnter", R.string.SendByEnter)); - divider.setVisibility(View.INVISIBLE); - boolean enabled = preferences.getBoolean("send_by_enter", false); - if (enabled) { - checkButton.setImageResource(R.drawable.btn_check_on); - } else { - checkButton.setImageResource(R.drawable.btn_check_off); - } - } else if (i == saveToGalleryRow) { - textView.setText(LocaleController.getString("SaveToGallerySettings", R.string.SaveToGallerySettings)); - divider.setVisibility(View.INVISIBLE); - if (MediaController.getInstance().canSaveToGallery()) { - checkButton.setImageResource(R.drawable.btn_check_on); - } else { - checkButton.setImageResource(R.drawable.btn_check_off); - } - } - } else if (type == 4) { - if (view == null) { - LayoutInflater li = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); - view = li.inflate(R.layout.settings_logout_button, viewGroup, false); - TextView textView = (TextView)view.findViewById(R.id.settings_row_text); - textView.setText(LocaleController.getString("LogOut", R.string.LogOut)); - textView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (getParentActivity() == null) { - return; - } - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); - builder.setMessage(LocaleController.getString("AreYouSureLogout", R.string.AreYouSureLogout)); - 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) { - SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE); - SharedPreferences.Editor editor = preferences.edit(); - editor.clear().commit(); - NotificationCenter.getInstance().postNotificationName(NotificationCenter.appDidLogout); - MessagesController.getInstance().unregistedPush(); - MessagesController.getInstance().logOut(); - UserConfig.clearConfig(); - MessagesStorage.getInstance().cleanUp(false); - MessagesController.getInstance().cleanUp(); - ContactsController.getInstance().deleteAllAppAccounts(); - } - }); - builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); - showAlertDialog(builder); - } - }); - } - } else if (type == 5) { - if (view == null) { - LayoutInflater li = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); - view = li.inflate(R.layout.user_profile_leftright_row_layout, viewGroup, false); - } - TextView textView = (TextView)view.findViewById(R.id.settings_row_text); - TextView detailTextView = (TextView)view.findViewById(R.id.settings_row_text_detail); - View divider = view.findViewById(R.id.settings_row_divider); - if (i == numberRow) { - TLRPC.User user = UserConfig.getCurrentUser(); - textView.setText(LocaleController.getString("Phone", R.string.Phone)); - if (user != null && user.phone != null && user.phone.length() != 0) { - detailTextView.setText(PhoneFormat.getInstance().format("+" + user.phone)); - } else { - detailTextView.setText(LocaleController.getString("NumberUnknown", R.string.NumberUnknown)); - } - divider.setVisibility(View.VISIBLE); - } else if (i == textSizeRow) { + TextSettingsCell textCell = (TextSettingsCell) view; + if (i == textSizeRow) { SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE); int size = preferences.getInt("fons_size", AndroidUtilities.isTablet() ? 18 : 16); - detailTextView.setText(String.format("%d", size)); - textView.setText(LocaleController.getString("TextSize", R.string.TextSize)); - divider.setVisibility(View.VISIBLE); + textCell.setTextAndValue(LocaleController.getString("TextSize", R.string.TextSize), String.format("%d", size), true); } else if (i == languageRow) { - detailTextView.setText(LocaleController.getCurrentLanguageName()); - textView.setText(LocaleController.getString("Language", R.string.Language)); - divider.setVisibility(View.VISIBLE); + textCell.setTextAndValue(LocaleController.getString("Language", R.string.Language), LocaleController.getCurrentLanguageName(), true); } else if (i == contactsSortRow) { - textView.setText(LocaleController.getString("SortBy", R.string.SortBy)); - divider.setVisibility(View.VISIBLE); + String value; SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE); int sort = preferences.getInt("sortContactsBy", 0); if (sort == 0) { - detailTextView.setText(LocaleController.getString("Default", R.string.Default)); + value = LocaleController.getString("Default", R.string.Default); } else if (sort == 1) { - detailTextView.setText(LocaleController.getString("FirstName", R.string.SortFirstName)); - } else if (sort == 2) { - detailTextView.setText(LocaleController.getString("LastName", R.string.SortLastName)); - } - } else if (i == usernameRow) { - TLRPC.User user = UserConfig.getCurrentUser(); - textView.setText(LocaleController.getString("Username", R.string.Username)); - if (user != null && user.username != null && user.username.length() != 0) { - detailTextView.setText("@" + user.username); + value = LocaleController.getString("FirstName", R.string.SortFirstName); } else { - detailTextView.setText(LocaleController.getString("UsernameEmpty", R.string.UsernameEmpty)); + value = LocaleController.getString("LastName", R.string.SortLastName); } - divider.setVisibility(View.INVISIBLE); + 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) { + textCell.setText("Send Logs", true); + } else if (i == clearLogsRow) { + 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 == switchBackendButtonRow) { + textCell.setText("Switch Backend", true); + } else if (i == telegramFaqRow) { + textCell.setText(LocaleController.getString("TelegramFAQ", R.string.TelegramFaq), true); + } else if (i == contactsReimportRow) { + textCell.setText(LocaleController.getString("ImportContacts", R.string.ImportContacts), true); } - } else if (type == 6) { + } else if (type == 3) { if (view == null) { - LayoutInflater li = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); - view = li.inflate(R.layout.settings_row_version, viewGroup, false); - TextView textView = (TextView)view.findViewById(R.id.settings_row_text); + view = new TextCheckCell(mContext); + } + TextCheckCell textCell = (TextCheckCell) view; + + SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE); + if (i == enableAnimationsRow) { + textCell.setTextAndCheck(LocaleController.getString("EnableAnimations", R.string.EnableAnimations), preferences.getBoolean("view_animations", true), true); + } else if (i == sendByEnterRow) { + textCell.setTextAndCheck(LocaleController.getString("SendByEnter", R.string.SendByEnter), preferences.getBoolean("send_by_enter", false), false); + } else if (i == saveToGalleryRow) { + textCell.setTextAndCheck(LocaleController.getString("SaveToGallerySettings", R.string.SaveToGallerySettings), MediaController.getInstance().canSaveToGallery(), false); + } + } else if (type == 4) { + if (view == null) { + view = new HeaderCell(mContext); + } + if (i == settingsSectionRow2) { + ((HeaderCell) view).setText(LocaleController.getString("SETTINGS", R.string.SETTINGS)); + } else if (i == supportSectionRow2) { + ((HeaderCell) view).setText(LocaleController.getString("Support", R.string.Support)); + } else if (i == messagesSectionRow2) { + ((HeaderCell) view).setText(LocaleController.getString("MessagesSettings", R.string.MessagesSettings)); + } else if (i == mediaDownloadSection2) { + ((HeaderCell) view).setText(LocaleController.getString("AutomaticMediaDownload", R.string.AutomaticMediaDownload)); + } else if (i == numberSectionRow) { + ((HeaderCell) view).setText(LocaleController.getString("Info", R.string.Info)); + } + } else if (type == 5) { + if (view == null) { + view = new DetailTextCell(mContext); try { PackageInfo pInfo = ApplicationLoader.applicationContext.getPackageManager().getPackageInfo(ApplicationLoader.applicationContext.getPackageName(), 0); - textView.setText(String.format(Locale.US, "Telegram for Android v%s (%d)", pInfo.versionName, pInfo.versionCode)); + ((DetailTextCell) view).setText(String.format(Locale.US, "Telegram for Android v%s (%d)", pInfo.versionName, pInfo.versionCode)); } catch (Exception e) { FileLog.e("tmessages", e); } } - } else if (type == 7) { + } else if (type == 6) { if (view == null) { - LayoutInflater li = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); - view = li.inflate(R.layout.settings_row_detail_layout, viewGroup, false); + view = new TextDetailSettingsCell(mContext); } - TextView textView = (TextView)view.findViewById(R.id.settings_row_text); - TextView textViewDetail = (TextView)view.findViewById(R.id.settings_row_text_detail); - View divider = view.findViewById(R.id.settings_row_divider); + TextDetailSettingsCell textCell = (TextDetailSettingsCell) view; - SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE); - int mask = 0; - if (i == mobileDownloadRow) { - textView.setText(LocaleController.getString("WhenUsingMobileData", R.string.WhenUsingMobileData)); - divider.setVisibility(View.VISIBLE); - mask = MediaController.getInstance().mobileDataDownloadMask; - } else if (i == wifiDownloadRow) { - textView.setText(LocaleController.getString("WhenConnectedOnWiFi", R.string.WhenConnectedOnWiFi)); - divider.setVisibility(View.VISIBLE); - mask = MediaController.getInstance().wifiDownloadMask; - } else if (i == roamingDownloadRow) { - textView.setText(LocaleController.getString("WhenRoaming", R.string.WhenRoaming)); - divider.setVisibility(View.VISIBLE); - mask = MediaController.getInstance().roamingDownloadMask; - } - String text = ""; - if ((mask & MediaController.AUTODOWNLOAD_MASK_PHOTO) != 0) { - text += LocaleController.getString("AttachPhoto", R.string.AttachPhoto); - } - if ((mask & MediaController.AUTODOWNLOAD_MASK_AUDIO) != 0) { - if (text.length() != 0) { - text += ", "; + if (i == mobileDownloadRow || i == wifiDownloadRow || i == roamingDownloadRow) { + int mask = 0; + String value; + SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE); + if (i == mobileDownloadRow) { + value = LocaleController.getString("WhenUsingMobileData", R.string.WhenUsingMobileData); + mask = MediaController.getInstance().mobileDataDownloadMask; + } else if (i == wifiDownloadRow) { + value = LocaleController.getString("WhenConnectedOnWiFi", R.string.WhenConnectedOnWiFi); + mask = MediaController.getInstance().wifiDownloadMask; + } else { + value = LocaleController.getString("WhenRoaming", R.string.WhenRoaming); + mask = MediaController.getInstance().roamingDownloadMask; } - text += LocaleController.getString("AttachAudio", R.string.AttachAudio); - } - if ((mask & MediaController.AUTODOWNLOAD_MASK_VIDEO) != 0) { - if (text.length() != 0) { - text += ", "; + String text = ""; + if ((mask & MediaController.AUTODOWNLOAD_MASK_PHOTO) != 0) { + text += LocaleController.getString("AttachPhoto", R.string.AttachPhoto); } - text += LocaleController.getString("AttachVideo", R.string.AttachVideo); - } - if ((mask & MediaController.AUTODOWNLOAD_MASK_DOCUMENT) != 0) { - if (text.length() != 0) { - text += ", "; + if ((mask & MediaController.AUTODOWNLOAD_MASK_AUDIO) != 0) { + if (text.length() != 0) { + text += ", "; + } + text += LocaleController.getString("AttachAudio", R.string.AttachAudio); } - text += LocaleController.getString("AttachDocument", R.string.AttachDocument); + if ((mask & MediaController.AUTODOWNLOAD_MASK_VIDEO) != 0) { + if (text.length() != 0) { + text += ", "; + } + text += LocaleController.getString("AttachVideo", R.string.AttachVideo); + } + if ((mask & MediaController.AUTODOWNLOAD_MASK_DOCUMENT) != 0) { + if (text.length() != 0) { + text += ", "; + } + text += LocaleController.getString("AttachDocument", R.string.AttachDocument); + } + if (text.length() == 0) { + text = LocaleController.getString("NoMediaAutoDownload", R.string.NoMediaAutoDownload); + } + textCell.setTextAndValue(value, text, true); + } else if (i == numberRow) { + TLRPC.User user = UserConfig.getCurrentUser(); + String value; + if (user != null && user.phone != null && user.phone.length() != 0) { + value = PhoneFormat.getInstance().format("+" + user.phone); + } else { + value = LocaleController.getString("NumberUnknown", R.string.NumberUnknown); + } + textCell.setTextAndValue(value, LocaleController.getString("Phone", R.string.Phone), true); + } else if (i == usernameRow) { + TLRPC.User user = UserConfig.getCurrentUser(); + String value; + if (user != null && user.username != null && user.username.length() != 0) { + value = "@" + user.username; + } else { + value = LocaleController.getString("UsernameEmpty", R.string.UsernameEmpty); + } + textCell.setTextAndValue(value, LocaleController.getString("Username", R.string.Username), false); } - if (text.length() == 0) { - text = LocaleController.getString("NoMediaAutoDownload", R.string.NoMediaAutoDownload); - } - textViewDetail.setText(text); } return view; } @Override public int getItemViewType(int i) { - if (i == profileRow) { + if (i == emptyRow) { return 0; - } else if (i == numberSectionRow || i == settingsSectionRow || i == supportSectionRow || i == messagesSectionRow || i == mediaDownloadSection || i == contactsSectionRow) { + } if (i == settingsSectionRow || i == supportSectionRow || i == messagesSectionRow || i == mediaDownloadSection || i == contactsSectionRow) { return 1; - } else if (i == textSizeRow || i == languageRow || i == contactsSortRow || i == numberRow || i == usernameRow) { - return 5; } 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) { + } 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) { return 2; - } else if (i == logoutRow) { - return 4; } else if (i == versionRow) { + return 5; + } else if (i == wifiDownloadRow || i == mobileDownloadRow || i == roamingDownloadRow || i == numberRow || i == usernameRow) { return 6; - } else if (i == wifiDownloadRow || i == mobileDownloadRow || i == roamingDownloadRow) { - return 7; + } else if (i == settingsSectionRow2 || i == messagesSectionRow2 || i == supportSectionRow2 || i == numberSectionRow || i == mediaDownloadSection2) { + return 4; } else { return 2; } @@ -1097,7 +1152,7 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter @Override public int getViewTypeCount() { - return 8; + return 7; } @Override diff --git a/TMessagesProj/src/main/java/org/telegram/ui/SettingsBlockedUsersActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/SettingsBlockedUsersActivity.java index 490cb5194..66c458e1f 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/SettingsBlockedUsersActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/SettingsBlockedUsersActivity.java @@ -28,7 +28,7 @@ import org.telegram.android.NotificationCenter; import org.telegram.messenger.R; import org.telegram.ui.Adapters.BaseFragmentAdapter; import org.telegram.ui.Cells.UserCell; -import org.telegram.ui.Views.ActionBar.ActionBarLayer; +import org.telegram.ui.Views.ActionBar.ActionBar; import org.telegram.ui.Views.ActionBar.ActionBarMenu; import org.telegram.ui.Views.ActionBar.BaseFragment; @@ -60,10 +60,10 @@ public class SettingsBlockedUsersActivity extends BaseFragment implements Notifi @Override public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { - actionBarLayer.setBackButtonImage(R.drawable.ic_ab_back); - actionBarLayer.setBackOverlay(R.layout.updating_state_layout); - actionBarLayer.setTitle(LocaleController.getString("BlockedUsers", R.string.BlockedUsers)); - actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { + actionBar.setBackButtonImage(R.drawable.ic_ab_back); + actionBar.setBackOverlay(R.layout.updating_state_layout); + actionBar.setTitle(LocaleController.getString("BlockedUsers", R.string.BlockedUsers)); + actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { @Override public void onItemClick(int id) { if (id == -1) { @@ -80,7 +80,7 @@ public class SettingsBlockedUsersActivity extends BaseFragment implements Notifi } }); - ActionBarMenu menu = actionBarLayer.createMenu(); + ActionBarMenu menu = actionBar.createMenu(); menu.addItem(block_user, R.drawable.plus); fragmentView = inflater.inflate(R.layout.settings_blocked_users_layout, container, false); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/SettingsChangeNameActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/SettingsChangeNameActivity.java index 2d616aff7..bc3c78b40 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/SettingsChangeNameActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/SettingsChangeNameActivity.java @@ -45,15 +45,15 @@ public class SettingsChangeNameActivity extends BaseFragment { @Override public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { - actionBarLayer.setCustomView(R.layout.settings_do_action_layout); - Button cancelButton = (Button)actionBarLayer.findViewById(R.id.cancel_button); + actionBar.setCustomView(R.layout.settings_do_action_layout); + Button cancelButton = (Button) actionBar.findViewById(R.id.cancel_button); cancelButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { finishFragment(); } }); - doneButton = actionBarLayer.findViewById(R.id.done_button); + doneButton = actionBar.findViewById(R.id.done_button); doneButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/SettingsChangeUsernameActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/SettingsChangeUsernameActivity.java index 1a632b9f1..3941c4225 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/SettingsChangeUsernameActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/SettingsChangeUsernameActivity.java @@ -59,15 +59,15 @@ public class SettingsChangeUsernameActivity extends BaseFragment { @Override public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { - actionBarLayer.setCustomView(R.layout.settings_do_action_layout); - Button cancelButton = (Button)actionBarLayer.findViewById(R.id.cancel_button); + actionBar.setCustomView(R.layout.settings_do_action_layout); + Button cancelButton = (Button) actionBar.findViewById(R.id.cancel_button); cancelButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { finishFragment(); } }); - doneButton = actionBarLayer.findViewById(R.id.done_button); + doneButton = actionBar.findViewById(R.id.done_button); doneButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/SettingsNotificationsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/SettingsNotificationsActivity.java index 37e434f58..835035f96 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/SettingsNotificationsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/SettingsNotificationsActivity.java @@ -22,6 +22,7 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; +import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; @@ -39,8 +40,10 @@ import org.telegram.android.MessagesController; import org.telegram.messenger.R; import org.telegram.messenger.RPCRequest; import org.telegram.ui.Adapters.BaseFragmentAdapter; -import org.telegram.ui.Views.ActionBar.ActionBarLayer; +import org.telegram.ui.Cells.TextCheckCell; +import org.telegram.ui.Views.ActionBar.ActionBar; import org.telegram.ui.Views.ActionBar.BaseFragment; +import org.telegram.ui.Views.AvatarDrawable; import org.telegram.ui.Views.ColorPickerView; import org.telegram.ui.Views.SettingsSectionLayout; @@ -119,10 +122,10 @@ public class SettingsNotificationsActivity extends BaseFragment implements Notif @Override public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { - actionBarLayer.setBackButtonImage(R.drawable.ic_ab_back); - actionBarLayer.setBackOverlay(R.layout.updating_state_layout); - actionBarLayer.setTitle(LocaleController.getString("NotificationsAndSounds", R.string.NotificationsAndSounds)); - actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { + actionBar.setBackButtonImage(R.drawable.ic_ab_back); + actionBar.setBackOverlay(R.layout.updating_state_layout); + actionBar.setTitle(LocaleController.getString("NotificationsAndSounds", R.string.NotificationsAndSounds)); + actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { @Override public void onItemClick(int id) { if (id == -1) { @@ -131,10 +134,20 @@ public class SettingsNotificationsActivity extends BaseFragment implements Notif } }); - fragmentView = inflater.inflate(R.layout.settings_layout, container, false); - final ListAdapter listAdapter = new ListAdapter(getParentActivity()); - listView = (ListView)fragmentView.findViewById(R.id.listView); - listView.setAdapter(listAdapter); + fragmentView = new FrameLayout(getParentActivity()); + FrameLayout frameLayout = (FrameLayout) fragmentView; + + listView = new ListView(getParentActivity()); + listView.setDivider(null); + listView.setDividerHeight(0); + listView.setVerticalScrollBarEnabled(false); + AndroidUtilities.setListViewEdgeEffectColor(listView, AvatarDrawable.getProfileBackColorForId(5)); + frameLayout.addView(listView); + FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) listView.getLayoutParams(); + layoutParams.width = FrameLayout.LayoutParams.MATCH_PARENT; + layoutParams.height = FrameLayout.LayoutParams.MATCH_PARENT; + listView.setLayoutParams(layoutParams); + listView.setAdapter(new ListAdapter(getParentActivity())); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView adapterView, View view, final int i, long l) { @@ -559,13 +572,10 @@ public class SettingsNotificationsActivity extends BaseFragment implements Notif } } if (type == 1) { if (view == null) { - LayoutInflater li = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); - view = li.inflate(R.layout.settings_row_check_notify_layout, viewGroup, false); + view = new TextCheckCell(mContext); } - TextView textView = (TextView)view.findViewById(R.id.settings_row_text); - View divider = view.findViewById(R.id.settings_row_divider); + TextCheckCell checkCell = (TextCheckCell) view; - ImageView checkButton = (ImageView)view.findViewById(R.id.settings_row_check_button); SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE); boolean enabled = false; boolean enabledAll = preferences.getBoolean("EnableAll", true); @@ -577,49 +587,28 @@ public class SettingsNotificationsActivity extends BaseFragment implements Notif } else if (i == groupAlertRow) { enabled = enabledGroup; } - textView.setText(LocaleController.getString("Alert", R.string.Alert)); - divider.setVisibility(View.VISIBLE); + checkCell.setTextAndCheck(LocaleController.getString("Alert", R.string.Alert), enabled, true); } else if (i == messagePreviewRow || i == groupPreviewRow) { if (i == messagePreviewRow) { enabled = preferences.getBoolean("EnablePreviewAll", true); } else if (i == groupPreviewRow) { enabled = preferences.getBoolean("EnablePreviewGroup", true); } - textView.setText(LocaleController.getString("MessagePreview", R.string.MessagePreview)); - divider.setVisibility(View.VISIBLE); + checkCell.setTextAndCheck(LocaleController.getString("MessagePreview", R.string.MessagePreview), enabled, true); } else if (i == inappSoundRow) { - enabled = preferences.getBoolean("EnableInAppSounds", true); - textView.setText(LocaleController.getString("InAppSounds", R.string.InAppSounds)); - divider.setVisibility(View.VISIBLE); + checkCell.setTextAndCheck(LocaleController.getString("InAppSounds", R.string.InAppSounds), preferences.getBoolean("EnableInAppSounds", true), true); } else if (i == inappVibrateRow) { - enabled = preferences.getBoolean("EnableInAppVibrate", true); - textView.setText(LocaleController.getString("InAppVibrate", R.string.InAppVibrate)); - divider.setVisibility(View.VISIBLE); + checkCell.setTextAndCheck(LocaleController.getString("InAppVibrate", R.string.InAppVibrate), preferences.getBoolean("EnableInAppVibrate", true), true); } else if (i == inappPreviewRow) { - enabled = preferences.getBoolean("EnableInAppPreview", true); - textView.setText(LocaleController.getString("InAppPreview", R.string.InAppPreview)); - divider.setVisibility(View.INVISIBLE); + checkCell.setTextAndCheck(LocaleController.getString("InAppPreview", R.string.InAppPreview), preferences.getBoolean("EnableInAppPreview", true), false); } else if (i == contactJoinedRow) { - enabled = preferences.getBoolean("EnableContactJoined", true); - textView.setText(LocaleController.getString("ContactJoined", R.string.ContactJoined)); - divider.setVisibility(View.INVISIBLE); + checkCell.setTextAndCheck(LocaleController.getString("ContactJoined", R.string.ContactJoined), preferences.getBoolean("EnableContactJoined", true), false); } else if (i == pebbleAlertRow) { - enabled = preferences.getBoolean("EnablePebbleNotifications", false); - textView.setText(LocaleController.getString("Pebble", R.string.Pebble)); - divider.setVisibility(View.INVISIBLE); + checkCell.setTextAndCheck(LocaleController.getString("Pebble", R.string.Pebble), preferences.getBoolean("EnablePebbleNotifications", false), false); } else if (i == notificationsServiceRow) { - enabled = preferences.getBoolean("pushService", true); - textView.setText(LocaleController.getString("NotificationsService", R.string.NotificationsService)); - divider.setVisibility(View.INVISIBLE); + checkCell.setTextAndCheck(LocaleController.getString("NotificationsService", R.string.NotificationsService), preferences.getBoolean("pushService", true), false); } else if (i == badgeNumberRow) { - enabled = preferences.getBoolean("badgeNumber", true); - textView.setText(LocaleController.getString("BadgeNumber", R.string.BadgeNumber)); - divider.setVisibility(View.VISIBLE); - } - if (enabled) { - checkButton.setImageResource(R.drawable.btn_check_on); - } else { - checkButton.setImageResource(R.drawable.btn_check_off); + checkCell.setTextAndCheck(LocaleController.getString("BadgeNumber", R.string.BadgeNumber), preferences.getBoolean("badgeNumber", true), true); } } else if (type == 2) { if (view == null) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/SettingsWallpapersActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/SettingsWallpapersActivity.java index 104a2bd60..e3a80113e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/SettingsWallpapersActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/SettingsWallpapersActivity.java @@ -99,15 +99,15 @@ public class SettingsWallpapersActivity extends BaseFragment implements Notifica @Override public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { - actionBarLayer.setCustomView(R.layout.settings_do_action_layout); - Button cancelButton = (Button)actionBarLayer.findViewById(R.id.cancel_button); + actionBar.setCustomView(R.layout.settings_do_action_layout); + Button cancelButton = (Button) actionBar.findViewById(R.id.cancel_button); cancelButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { finishFragment(); } }); - doneButton = actionBarLayer.findViewById(R.id.done_button); + doneButton = actionBar.findViewById(R.id.done_button); doneButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/VideoEditorActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/VideoEditorActivity.java index ebb8fbcb9..c1cac76cf 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/VideoEditorActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/VideoEditorActivity.java @@ -46,7 +46,7 @@ import org.telegram.android.MediaController; import org.telegram.messenger.FileLog; import org.telegram.messenger.R; import org.telegram.messenger.Utilities; -import org.telegram.ui.Views.ActionBar.ActionBarLayer; +import org.telegram.ui.Views.ActionBar.ActionBar; import org.telegram.ui.Views.ActionBar.ActionBarMenu; import org.telegram.ui.Views.ActionBar.BaseFragment; import org.telegram.ui.Views.VideoSeekBarView; @@ -220,11 +220,11 @@ public class VideoEditorActivity extends BaseFragment implements TextureView.Sur @Override public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { - actionBarLayer.setBackgroundColor(0xff333333); - actionBarLayer.setItemsBackground(R.drawable.bar_selector_white); - actionBarLayer.setBackButtonImage(R.drawable.ic_ab_back); - actionBarLayer.setTitle(LocaleController.getString("EditVideo", R.string.EditVideo)); - actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { + actionBar.setBackgroundColor(0xff333333); + actionBar.setItemsBackground(R.drawable.bar_selector_white); + actionBar.setBackButtonImage(R.drawable.ic_ab_back); + actionBar.setTitle(LocaleController.getString("EditVideo", R.string.EditVideo)); + actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { @Override public void onItemClick(int id) { if (id == -1) { @@ -253,7 +253,7 @@ public class VideoEditorActivity extends BaseFragment implements TextureView.Sur } }); - ActionBarMenu menu = actionBarLayer.createMenu(); + ActionBarMenu menu = actionBar.createMenu(); View doneItem = menu.addItemResource(1, R.layout.group_create_done_layout); TextView doneTextView = (TextView) doneItem.findViewById(R.id.done_button); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/ActionBar.java b/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/ActionBar.java index f297e29f7..9dd5076ef 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/ActionBar.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/ActionBar.java @@ -9,11 +9,18 @@ package org.telegram.ui.Views.ActionBar; import android.content.Context; -import android.util.AttributeSet; +import android.content.res.Configuration; +import android.graphics.drawable.Drawable; +import android.os.Build; +import android.text.TextUtils; 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; import org.telegram.android.AndroidUtilities; import org.telegram.messenger.R; @@ -21,142 +28,462 @@ import org.telegram.ui.AnimationCompat.ViewProxy; public class ActionBar extends FrameLayout { - protected ActionBarLayer currentLayer = null; - protected ActionBarLayer previousLayer = null; - protected View shadowView = null; + public static class ActionBarMenuOnItemClick { + public void onItemClick(int id) { + + } + + public boolean canOpenMenu() { + return true; + } + } + + private static boolean withStatusBar = Build.VERSION.SDK_INT >= 21; + + private FrameLayout titleFrameLayout; + private ImageView backButtonImageView; + private TextView titleTextView; + private TextView subTitleTextView; + private ActionBarMenu menu; + private ActionBarMenu actionMode; + private View actionOverlay; + protected boolean isSearchFieldVisible; + protected int itemsBackgroundResourceId; private boolean isBackOverlayVisible; + protected BaseFragment parentFragment; + public ActionBarMenuOnItemClick actionBarMenuOnItemClick; + private float alphaEx = 1; + private int extraHeight; public ActionBar(Context context) { super(context); - createComponents(); - } - - public ActionBar(Context context, AttributeSet attrs) { - super(context, attrs); - createComponents(); - } - - public ActionBar(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - createComponents(); - } - - public void createComponents() { - shadowView = new View(getContext()); - addView(shadowView); - shadowView.setVisibility(INVISIBLE); - ViewGroup.LayoutParams layoutParams = shadowView.getLayoutParams(); - layoutParams.width = AndroidUtilities.dp(2); - layoutParams.height = LayoutParams.MATCH_PARENT; - shadowView.setLayoutParams(layoutParams); - shadowView.setBackgroundResource(R.drawable.shadow); - } - - public ActionBarLayer createLayer() { - return new ActionBarLayer(getContext(), this); - } - - public void detachActionBarLayer(ActionBarLayer layer) { - if (layer == null) { - return; - } - removeView(layer); - if (currentLayer == layer) { - currentLayer = null; - } - } - - public void setCurrentActionBarLayer(ActionBarLayer layer) { - if (layer == null || layer.getParent() != null) { - return; - } - if (currentLayer != null) { - removeView(currentLayer); - } - currentLayer = layer; - addView(layer); - FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams)layer.getLayoutParams(); - layoutParams.width = LayoutParams.MATCH_PARENT; - layoutParams.height = LayoutParams.MATCH_PARENT; + titleFrameLayout = new FrameLayout(context); + addView(titleFrameLayout); + FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams)titleFrameLayout.getLayoutParams(); + layoutParams.width = LayoutParams.WRAP_CONTENT; + layoutParams.height = LayoutParams.FILL_PARENT; layoutParams.gravity = Gravity.TOP | Gravity.LEFT; - layer.setLayoutParams(layoutParams); - currentLayer.setBackOverlayVisible(isBackOverlayVisible); - layer.setAlphaEx(1); - } + if (withStatusBar) { + layoutParams.topMargin = AndroidUtilities.statusBarHeight; + } + titleFrameLayout.setLayoutParams(layoutParams); + titleFrameLayout.setPadding(0, 0, AndroidUtilities.dp(4), 0); + titleFrameLayout.setEnabled(false); - public void setBackOverlayVisible(boolean visible) { - isBackOverlayVisible = visible; - if (currentLayer != null) { - currentLayer.setBackOverlayVisible(visible); - } - if (previousLayer != null) { - previousLayer.setBackOverlayVisible(visible); - } - } - - public void prepareForMoving(ActionBarLayer layer) { - if (currentLayer == null || layer == null) { - return; - } - previousLayer = layer; - ViewGroup parent = (ViewGroup) previousLayer.getParent(); - if (parent != null) { - parent.removeView(previousLayer); - } - this.addView(previousLayer, 0); - ViewGroup.LayoutParams layoutParams = layer.getLayoutParams(); - layoutParams.width = LayoutParams.MATCH_PARENT; - layoutParams.height = LayoutParams.MATCH_PARENT; - layer.setLayoutParams(layoutParams); - ViewProxy.setX(shadowView, -AndroidUtilities.dp(2)); - shadowView.setVisibility(VISIBLE); - previousLayer.setBackOverlayVisible(isBackOverlayVisible); - } - - public void stopMoving(boolean backAnimation) { - if (currentLayer == null) { - return; - } - - if (!backAnimation) { - removeView(currentLayer); - currentLayer = previousLayer; - currentLayer.setAlphaEx(1); - previousLayer = null; - } else { - removeView(previousLayer); - previousLayer = null; - } - shadowView.setVisibility(INVISIBLE); - ViewProxy.setX(currentLayer, 0); - } - - public void moveActionBarByX(int dx) { - if (currentLayer == null) { - return; - } - ViewProxy.setX(currentLayer, dx); - ViewProxy.setX(shadowView, dx - AndroidUtilities.dp(2)); - if (dx != 0) { - if (previousLayer != null) { - previousLayer.setAlphaEx(Math.min(1, (float) dx / (float) currentLayer.getMeasuredWidth())); + backButtonImageView = new ImageView(getContext()); + titleFrameLayout.addView(backButtonImageView); + backButtonImageView.setVisibility(VISIBLE); + backButtonImageView.setScaleType(ImageView.ScaleType.CENTER); + backButtonImageView.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + if (isSearchFieldVisible) { + closeSearchField(); + return; + } + if (actionBarMenuOnItemClick != null) { + actionBarMenuOnItemClick.onItemClick(-1); + } } - } else { - if (previousLayer != null) { - previousLayer.setAlphaEx(0); - } - currentLayer.setAlphaEx(1); + }); + } + + private void positionBackImage(int height) { + if (backButtonImageView != null) { + LayoutParams layoutParams = (LayoutParams)backButtonImageView.getLayoutParams(); + layoutParams.width = AndroidUtilities.dp(54); + layoutParams.height = height; + layoutParams.gravity = Gravity.TOP | Gravity.LEFT; + backButtonImageView.setLayoutParams(layoutParams); } } + private void positionTitle(int width, int height) { + int offset = AndroidUtilities.dp(2); + if (!AndroidUtilities.isTablet() && getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { + offset = AndroidUtilities.dp(1); + } + int maxTextWidth = 0; + + LayoutParams layoutParams = null; + + if (titleTextView != null && titleTextView.getVisibility() == VISIBLE) { + if (!AndroidUtilities.isTablet() && getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { + titleTextView.setTextSize(18); + } else { + titleTextView.setTextSize(20); + } + + layoutParams = (LayoutParams) titleTextView.getLayoutParams(); + layoutParams.width = LayoutParams.WRAP_CONTENT; + layoutParams.height = LayoutParams.WRAP_CONTENT; + layoutParams.gravity = Gravity.TOP | Gravity.LEFT; + titleTextView.setLayoutParams(layoutParams); + titleTextView.measure(width, height); + maxTextWidth = titleTextView.getMeasuredWidth(); + } + if (subTitleTextView != null && subTitleTextView.getVisibility() == VISIBLE) { + if (!AndroidUtilities.isTablet() && getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { + subTitleTextView.setTextSize(14); + } else { + subTitleTextView.setTextSize(16); + } + + layoutParams = (LayoutParams) subTitleTextView.getLayoutParams(); + layoutParams.width = LayoutParams.WRAP_CONTENT; + layoutParams.height = LayoutParams.WRAP_CONTENT; + layoutParams.gravity = Gravity.TOP | Gravity.LEFT; + subTitleTextView.setLayoutParams(layoutParams); + subTitleTextView.measure(width, height); + maxTextWidth = Math.max(maxTextWidth, subTitleTextView.getMeasuredWidth()); + } + + int x = 0; + if (AndroidUtilities.isTablet()) { + x = AndroidUtilities.dp(80); + } else { + x = AndroidUtilities.dp(72); + } + + + if (menu != null) { + maxTextWidth = Math.min(maxTextWidth, width - menu.getMeasuredWidth() - AndroidUtilities.dp(16)); + } + + if (titleTextView != null && titleTextView.getVisibility() == VISIBLE) { + layoutParams = (LayoutParams) titleTextView.getLayoutParams(); + layoutParams.width = LayoutParams.MATCH_PARENT; + layoutParams.height = titleTextView.getMeasuredHeight(); + int y; + if (subTitleTextView != null && subTitleTextView.getVisibility() == VISIBLE) { + y = (height / 2 - titleTextView.getMeasuredHeight()) / 2 + offset; + } else { + y = (height - titleTextView.getMeasuredHeight()) / 2 - AndroidUtilities.dp(1); + } + layoutParams.setMargins(x, y, 0, 0); + titleTextView.setLayoutParams(layoutParams); + } + if (subTitleTextView != null && subTitleTextView.getVisibility() == VISIBLE) { + layoutParams = (LayoutParams) subTitleTextView.getLayoutParams(); + layoutParams.width = LayoutParams.MATCH_PARENT; + layoutParams.height = subTitleTextView.getMeasuredHeight(); + layoutParams.setMargins(x, height / 2 + (height / 2 - subTitleTextView.getMeasuredHeight()) / 2 - offset, 0, 0); + subTitleTextView.setLayoutParams(layoutParams); + } + + ViewGroup.LayoutParams layoutParams1 = titleFrameLayout.getLayoutParams(); + layoutParams1.width = x + maxTextWidth + (isSearchFieldVisible ? 0 : AndroidUtilities.dp(6)); + titleFrameLayout.setLayoutParams(layoutParams1); + } + + public void positionMenu(int width, int height) { + if (menu == null) { + return; + } + FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams)menu.getLayoutParams(); + 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; + } + menu.setLayoutParams(layoutParams); + menu.measure(width, height); + } + + public void setBackButtonDrawable(Drawable drawable) { + backButtonImageView.setImageDrawable(drawable); + } + + public void setBackButtonImage(int resource) { + backButtonImageView.setImageResource(resource); + } + + private void createSubtitleTextView() { + if (subTitleTextView != null) { + return; + } + subTitleTextView = new TextView(getContext()); + titleFrameLayout.addView(subTitleTextView); + subTitleTextView.setGravity(Gravity.LEFT); + subTitleTextView.setTextColor(0xffd7e8f7); + subTitleTextView.setSingleLine(true); + subTitleTextView.setLines(1); + subTitleTextView.setMaxLines(1); + subTitleTextView.setEllipsize(TextUtils.TruncateAt.END); + } + + public void setSubtitle(CharSequence value) { + if (value != null && subTitleTextView == null) { + createSubtitleTextView(); + } + if (subTitleTextView != null) { + subTitleTextView.setVisibility(value != null ? VISIBLE : GONE); + subTitleTextView.setText(value); + positionTitle(getMeasuredWidth(), getMeasuredHeight()); + } + } + + public void setSubTitleIcon(int resourceId, Drawable drawable, int padding) { + if ((resourceId != 0 || drawable != null) && subTitleTextView == null) { + createSubtitleTextView(); + positionTitle(getMeasuredWidth(), getMeasuredHeight()); + } + if (subTitleTextView != null) { + if (drawable != null) { + subTitleTextView.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null); + } else { + subTitleTextView.setCompoundDrawablesWithIntrinsicBounds(resourceId, 0, 0, 0); + } + subTitleTextView.setCompoundDrawablePadding(padding); + } + } + + private void createTitleTextView() { + if (titleTextView != null) { + return; + } + titleTextView = new TextView(getContext()); + titleTextView.setGravity(Gravity.LEFT); + titleTextView.setSingleLine(true); + titleTextView.setLines(1); + titleTextView.setMaxLines(1); + titleTextView.setEllipsize(TextUtils.TruncateAt.END); + titleFrameLayout.addView(titleTextView); + titleTextView.setTextColor(0xffffffff); + titleTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + } + + public void setTitle(CharSequence value) { + if (value != null && titleTextView == null) { + createTitleTextView(); + } + if (titleTextView != null) { + titleTextView.setVisibility(value != null ? VISIBLE : GONE); + titleTextView.setText(value); + positionTitle(getMeasuredWidth(), getMeasuredHeight()); + } + } + + public void setTitleIcon(int resourceId, int padding) { + if (resourceId != 0 && titleTextView == null) { + createTitleTextView(); + positionTitle(getMeasuredWidth(), getMeasuredHeight()); + } + titleTextView.setCompoundDrawablesWithIntrinsicBounds(resourceId, 0, 0, 0); + titleTextView.setCompoundDrawablePadding(padding); + } + + public Drawable getSubTitleIcon() { + return subTitleTextView.getCompoundDrawables()[0]; + } + + public CharSequence getTitle() { + if (titleTextView == null) { + return null; + } + return titleTextView.getText(); + } + + public ActionBarMenu createMenu() { + if (menu != null) { + return menu; + } + menu = new ActionBarMenu(getContext(), this); + addView(menu); + FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams)menu.getLayoutParams(); + layoutParams.height = LayoutParams.FILL_PARENT; + layoutParams.width = LayoutParams.WRAP_CONTENT; + layoutParams.gravity = Gravity.RIGHT; + menu.setLayoutParams(layoutParams); + return menu; + } + + public void setActionBarMenuOnItemClick(ActionBarMenuOnItemClick listener) { + actionBarMenuOnItemClick = listener; + } + + public void setCustomView(int resourceId) { + LayoutInflater li = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); + View view = li.inflate(resourceId, null); + addView(view); + FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams)view.getLayoutParams(); + layoutParams.width = LayoutParams.FILL_PARENT; + layoutParams.height = LayoutParams.FILL_PARENT; + if (withStatusBar) { + layoutParams.topMargin = AndroidUtilities.statusBarHeight; + } + view.setLayoutParams(layoutParams); + } + + public ActionBarMenu createActionMode() { + if (actionMode != null) { + return actionMode; + } + actionMode = new ActionBarMenu(getContext(), this); + actionMode.setBackgroundResource(R.drawable.editheader); + addView(actionMode); + 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; + } + + public void showActionMode() { + if (actionMode == null) { + return; + } + actionMode.setVisibility(VISIBLE); + if (titleFrameLayout != null) { + titleFrameLayout.setVisibility(INVISIBLE); + } + if (menu != null) { + menu.setVisibility(INVISIBLE); + } + } + + public void hideActionMode() { + if (actionMode == null) { + return; + } + actionMode.setVisibility(GONE); + if (titleFrameLayout != null) { + titleFrameLayout.setVisibility(isSearchFieldVisible || actionOverlay == null || actionOverlay.getVisibility() == GONE ? VISIBLE : INVISIBLE); + } + if (menu != null) { + menu.setVisibility(VISIBLE); + } + } + + public boolean isActionModeShowed() { + return actionMode != null && actionMode.getVisibility() == VISIBLE; + } + + protected void onSearchFieldVisibilityChanged(boolean visible) { + isSearchFieldVisible = visible; + if (titleTextView != null) { + titleTextView.setVisibility(visible ? GONE : VISIBLE); + } + if (subTitleTextView != null) { + subTitleTextView.setVisibility(visible ? GONE : VISIBLE); + } + Drawable drawable = backButtonImageView.getDrawable(); + if (drawable != null && drawable instanceof MenuDrawable) { + ((MenuDrawable)drawable).setRotation(visible ? 1 : 0, true); + } + positionBackOverlay(getMeasuredWidth(), getMeasuredHeight()); + } + + public void closeSearchField() { + if (!isSearchFieldVisible || menu == null) { + return; + } + menu.closeSearchField(); + } + @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(AndroidUtilities.getCurrentActionBarHeight(), MeasureSpec.EXACTLY)); + int actionBarHeight = AndroidUtilities.getCurrentActionBarHeight(); + positionBackImage(actionBarHeight); + positionMenu(MeasureSpec.getSize(widthMeasureSpec), actionBarHeight); + positionTitle(MeasureSpec.getSize(widthMeasureSpec), actionBarHeight); + positionBackOverlay(MeasureSpec.getSize(widthMeasureSpec), actionBarHeight); + if (Build.VERSION.SDK_INT >= 21) { + actionBarHeight += AndroidUtilities.statusBarHeight; + } + super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(actionBarHeight + extraHeight, MeasureSpec.EXACTLY)); + } + + public void setAlphaEx(float alpha) { + alphaEx = alpha; + if (menu != null) { + ViewProxy.setAlpha(menu, alphaEx); + } + if (titleFrameLayout != null) { + ViewProxy.setAlpha(titleFrameLayout, alphaEx); + } + } + + public float getAlphaEx() { + return alphaEx; } public void onMenuButtonPressed() { - if (currentLayer != null) { - currentLayer.onMenuButtonPressed(); + if (menu != null) { + menu.onMenuButtonPressed(); } } -} + + protected void onPause() { + if (menu != null) { + menu.hideAllPopupMenus(); + } + } + + public void setBackOverlay(int resourceId) { + LayoutInflater li = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); + actionOverlay = li.inflate(resourceId, null); + addView(actionOverlay); + actionOverlay.setVisibility(GONE); + actionOverlay.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + if (actionBarMenuOnItemClick != null) { + actionBarMenuOnItemClick.onItemClick(-1); + } + } + }); + } + + public void setBackOverlayVisible(boolean visible) { + if (actionOverlay == null || parentFragment == null || parentFragment.parentLayout == null) { + return; + } + isBackOverlayVisible = visible; + if (visible) { + parentFragment.parentLayout.onOverlayShow(actionOverlay, parentFragment); + } + positionBackOverlay(getMeasuredWidth(), getMeasuredHeight()); + } + + public void setExtraHeight(int value) { + extraHeight = value; + } + + private void positionBackOverlay(int widthMeasureSpec, int heightMeasureSpec) { + if (actionOverlay == null) { + return; + } + titleFrameLayout.setVisibility(isSearchFieldVisible || actionOverlay == null || actionOverlay.getVisibility() == GONE ? VISIBLE : INVISIBLE); + actionOverlay.setVisibility(!isSearchFieldVisible && isBackOverlayVisible ? VISIBLE : GONE); + if (actionOverlay.getVisibility() == VISIBLE) { + MarginLayoutParams layoutParams = (MarginLayoutParams) actionOverlay.getLayoutParams(); + layoutParams.width = LayoutParams.WRAP_CONTENT; + layoutParams.height = LayoutParams.MATCH_PARENT; + actionOverlay.setLayoutParams(layoutParams); + actionOverlay.measure(widthMeasureSpec, heightMeasureSpec); + if (withStatusBar) { + layoutParams.topMargin = AndroidUtilities.statusBarHeight; + } + layoutParams.width = Math.min(actionOverlay.getMeasuredWidth() + AndroidUtilities.dp(4), widthMeasureSpec - (menu != null ? menu.getMeasuredWidth() : 0)); + actionOverlay.setLayoutParams(layoutParams); + } + } + + public void setItemsBackground(int resourceId) { + itemsBackgroundResourceId = resourceId; + backButtonImageView.setBackgroundResource(resourceId); + } + + @Override + public boolean onTouchEvent(MotionEvent event) { + super.onTouchEvent(event); + return true; + } +} \ No newline at end of file diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/ActionBarLayer.java b/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/ActionBarLayer.java deleted file mode 100644 index a2a833774..000000000 --- a/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/ActionBarLayer.java +++ /dev/null @@ -1,469 +0,0 @@ -/* - * This is the source code of Telegram for Android v. 1.4.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.ActionBar; - -import android.content.Context; -import android.content.res.Configuration; -import android.graphics.drawable.Drawable; -import android.text.TextUtils; -import android.util.AttributeSet; -import android.view.Gravity; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.FrameLayout; -import android.widget.ImageView; -import android.widget.TextView; - -import org.telegram.android.AndroidUtilities; -import org.telegram.messenger.R; -import org.telegram.ui.AnimationCompat.ViewProxy; - -public class ActionBarLayer extends FrameLayout { - - public static class ActionBarMenuOnItemClick { - public void onItemClick(int id) { - - } - - public boolean canOpenMenu() { - return true; - } - } - - private FrameLayout titleFrameLayout; - private ImageView backButtonImageView; - private TextView titleTextView; - private TextView subTitleTextView; - private ActionBarMenu menu; - private ActionBarMenu actionMode; - protected ActionBar parentActionBar; - private View actionOverlay; - protected boolean isSearchFieldVisible; - protected int itemsBackgroundResourceId; - private boolean isBackOverlayVisible; - protected BaseFragment parentFragment; - public ActionBarMenuOnItemClick actionBarMenuOnItemClick; - private float alphaEx = 1; - - public ActionBarLayer(Context context, ActionBar actionBar) { - super(context); - parentActionBar = actionBar; - titleFrameLayout = new FrameLayout(context); - addView(titleFrameLayout); - FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams)titleFrameLayout.getLayoutParams(); - layoutParams.width = LayoutParams.WRAP_CONTENT; - layoutParams.height = LayoutParams.FILL_PARENT; - layoutParams.gravity = Gravity.TOP | Gravity.LEFT; - titleFrameLayout.setLayoutParams(layoutParams); - titleFrameLayout.setPadding(0, 0, AndroidUtilities.dp(4), 0); - titleFrameLayout.setEnabled(false); - - backButtonImageView = new ImageView(getContext()); - titleFrameLayout.addView(backButtonImageView); - backButtonImageView.setVisibility(VISIBLE); - backButtonImageView.setScaleType(ImageView.ScaleType.CENTER); - backButtonImageView.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - if (isSearchFieldVisible) { - closeSearchField(); - return; - } - if (actionBarMenuOnItemClick != null) { - actionBarMenuOnItemClick.onItemClick(-1); - } - } - }); - } - - public ActionBarLayer(Context context) { - super(context); - } - - public ActionBarLayer(Context context, AttributeSet attrs) { - super(context, attrs); - } - - public ActionBarLayer(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - } - - private void positionBackImage(int height) { - if (backButtonImageView != null) { - LayoutParams layoutParams = (LayoutParams)backButtonImageView.getLayoutParams(); - layoutParams.width = AndroidUtilities.dp(54); - layoutParams.height = height; - layoutParams.gravity = Gravity.TOP | Gravity.LEFT; - backButtonImageView.setLayoutParams(layoutParams); - } - } - - private void positionTitle(int width, int height) { - int offset = AndroidUtilities.dp(2); - if (!AndroidUtilities.isTablet() && getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { - offset = AndroidUtilities.dp(1); - } - int maxTextWidth = 0; - - LayoutParams layoutParams = null; - - if (titleTextView != null && titleTextView.getVisibility() == VISIBLE) { - if (!AndroidUtilities.isTablet() && getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { - titleTextView.setTextSize(18); - } else { - titleTextView.setTextSize(20); - } - - layoutParams = (LayoutParams) titleTextView.getLayoutParams(); - layoutParams.width = LayoutParams.WRAP_CONTENT; - layoutParams.height = LayoutParams.WRAP_CONTENT; - layoutParams.gravity = Gravity.TOP | Gravity.LEFT; - titleTextView.setLayoutParams(layoutParams); - titleTextView.measure(width, height); - maxTextWidth = titleTextView.getMeasuredWidth(); - } - if (subTitleTextView != null && subTitleTextView.getVisibility() == VISIBLE) { - if (!AndroidUtilities.isTablet() && getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { - subTitleTextView.setTextSize(14); - } else { - subTitleTextView.setTextSize(16); - } - - layoutParams = (LayoutParams) subTitleTextView.getLayoutParams(); - layoutParams.width = LayoutParams.WRAP_CONTENT; - layoutParams.height = LayoutParams.WRAP_CONTENT; - layoutParams.gravity = Gravity.TOP | Gravity.LEFT; - subTitleTextView.setLayoutParams(layoutParams); - subTitleTextView.measure(width, height); - maxTextWidth = Math.max(maxTextWidth, subTitleTextView.getMeasuredWidth()); - } - - int x = 0; - if (AndroidUtilities.isTablet()) { - x = AndroidUtilities.dp(80); - } else { - x = AndroidUtilities.dp(72); - } - - - if (menu != null) { - maxTextWidth = Math.min(maxTextWidth, width - menu.getMeasuredWidth() - AndroidUtilities.dp(16)); - } - - if (titleTextView != null && titleTextView.getVisibility() == VISIBLE) { - layoutParams = (LayoutParams) titleTextView.getLayoutParams(); - layoutParams.width = LayoutParams.MATCH_PARENT; - layoutParams.height = titleTextView.getMeasuredHeight(); - int y; - if (subTitleTextView != null && subTitleTextView.getVisibility() == VISIBLE) { - y = (height / 2 - titleTextView.getMeasuredHeight()) / 2 + offset; - } else { - y = (height - titleTextView.getMeasuredHeight()) / 2 - AndroidUtilities.dp(1); - } - layoutParams.setMargins(x, y, 0, 0); - titleTextView.setLayoutParams(layoutParams); - } - if (subTitleTextView != null && subTitleTextView.getVisibility() == VISIBLE) { - layoutParams = (LayoutParams) subTitleTextView.getLayoutParams(); - layoutParams.width = LayoutParams.MATCH_PARENT; - layoutParams.height = subTitleTextView.getMeasuredHeight(); - layoutParams.setMargins(x, height / 2 + (height / 2 - subTitleTextView.getMeasuredHeight()) / 2 - offset, 0, 0); - subTitleTextView.setLayoutParams(layoutParams); - } - - ViewGroup.LayoutParams layoutParams1 = titleFrameLayout.getLayoutParams(); - layoutParams1.width = x + maxTextWidth + (isSearchFieldVisible ? 0 : AndroidUtilities.dp(6)); - titleFrameLayout.setLayoutParams(layoutParams1); - } - - public void positionMenu(int width, int height) { - if (menu == null) { - return; - } - FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams)menu.getLayoutParams(); - layoutParams.width = isSearchFieldVisible ? LayoutParams.MATCH_PARENT : LayoutParams.WRAP_CONTENT; - layoutParams.leftMargin = isSearchFieldVisible ? AndroidUtilities.dp(54) : 0; - menu.setLayoutParams(layoutParams); - menu.measure(width, height); - } - - public void setBackButtonDrawable(Drawable drawable) { - backButtonImageView.setImageDrawable(drawable); - } - - public void setBackButtonImage(int resource) { - backButtonImageView.setImageResource(resource); - } - - private void createSubtitleTextView() { - if (subTitleTextView != null) { - return; - } - subTitleTextView = new TextView(getContext()); - titleFrameLayout.addView(subTitleTextView); - subTitleTextView.setGravity(Gravity.LEFT); - subTitleTextView.setTextColor(0xffd7e8f7); - subTitleTextView.setSingleLine(true); - subTitleTextView.setLines(1); - subTitleTextView.setMaxLines(1); - subTitleTextView.setEllipsize(TextUtils.TruncateAt.END); - } - - public void setSubtitle(CharSequence value) { - if (value != null && subTitleTextView == null) { - createSubtitleTextView(); - } - if (subTitleTextView != null) { - subTitleTextView.setVisibility(value != null ? VISIBLE : GONE); - subTitleTextView.setText(value); - positionTitle(getMeasuredWidth(), getMeasuredHeight()); - } - } - - public void setSubTitleIcon(int resourceId, Drawable drawable, int padding) { - if ((resourceId != 0 || drawable != null) && subTitleTextView == null) { - createSubtitleTextView(); - positionTitle(getMeasuredWidth(), getMeasuredHeight()); - } - if (subTitleTextView != null) { - if (drawable != null) { - subTitleTextView.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null); - } else { - subTitleTextView.setCompoundDrawablesWithIntrinsicBounds(resourceId, 0, 0, 0); - } - subTitleTextView.setCompoundDrawablePadding(padding); - } - } - - private void createTitleTextView() { - if (titleTextView != null) { - return; - } - titleTextView = new TextView(getContext()); - titleTextView.setGravity(Gravity.LEFT); - titleTextView.setSingleLine(true); - titleTextView.setLines(1); - titleTextView.setMaxLines(1); - titleTextView.setEllipsize(TextUtils.TruncateAt.END); - titleFrameLayout.addView(titleTextView); - titleTextView.setTextColor(0xffffffff); - titleTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); - } - - public void setTitle(CharSequence value) { - if (value != null && titleTextView == null) { - createTitleTextView(); - } - if (titleTextView != null) { - titleTextView.setVisibility(value != null ? VISIBLE : GONE); - titleTextView.setText(value); - positionTitle(getMeasuredWidth(), getMeasuredHeight()); - } - } - - public void setTitleIcon(int resourceId, int padding) { - if (resourceId != 0 && titleTextView == null) { - createTitleTextView(); - positionTitle(getMeasuredWidth(), getMeasuredHeight()); - } - titleTextView.setCompoundDrawablesWithIntrinsicBounds(resourceId, 0, 0, 0); - titleTextView.setCompoundDrawablePadding(padding); - } - - public Drawable getSubTitleIcon() { - return subTitleTextView.getCompoundDrawables()[0]; - } - - public CharSequence getTitle() { - if (titleTextView == null) { - return null; - } - return titleTextView.getText(); - } - - public ActionBarMenu createMenu() { - if (menu != null) { - return menu; - } - menu = new ActionBarMenu(getContext(), parentActionBar, this); - addView(menu); - FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams)menu.getLayoutParams(); - layoutParams.height = LayoutParams.FILL_PARENT; - layoutParams.width = LayoutParams.WRAP_CONTENT; - layoutParams.gravity = Gravity.RIGHT; - menu.setLayoutParams(layoutParams); - return menu; - } - - public void onDestroy() { - parentActionBar.detachActionBarLayer(this); - } - - public void setActionBarMenuOnItemClick(ActionBarMenuOnItemClick listener) { - actionBarMenuOnItemClick = listener; - } - - public void setCustomView(int resourceId) { - LayoutInflater li = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); - View view = li.inflate(resourceId, null); - addView(view); - } - - public ActionBarMenu createActionMode() { - if (actionMode != null) { - return actionMode; - } - actionMode = new ActionBarMenu(getContext(), parentActionBar, this); - actionMode.setBackgroundResource(R.drawable.editheader); - addView(actionMode); - FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams)actionMode.getLayoutParams(); - layoutParams.height = LayoutParams.FILL_PARENT; - layoutParams.width = LayoutParams.FILL_PARENT; - layoutParams.gravity = Gravity.RIGHT; - actionMode.setLayoutParams(layoutParams); - actionMode.setVisibility(GONE); - return actionMode; - } - - public void showActionMode() { - if (actionMode == null) { - return; - } - actionMode.setVisibility(VISIBLE); - if (titleFrameLayout != null) { - titleFrameLayout.setVisibility(INVISIBLE); - } - if (menu != null) { - menu.setVisibility(INVISIBLE); - } - } - - public void hideActionMode() { - if (actionMode == null) { - return; - } - actionMode.setVisibility(GONE); - if (titleFrameLayout != null) { - titleFrameLayout.setVisibility(isSearchFieldVisible || actionOverlay == null || actionOverlay.getVisibility() == GONE ? VISIBLE : INVISIBLE); - } - if (menu != null) { - menu.setVisibility(VISIBLE); - } - } - - public boolean isActionModeShowed() { - return actionMode != null && actionMode.getVisibility() == VISIBLE; - } - - protected void onSearchFieldVisibilityChanged(boolean visible) { - isSearchFieldVisible = visible; - if (titleTextView != null) { - titleTextView.setVisibility(visible ? GONE : VISIBLE); - } - if (subTitleTextView != null) { - subTitleTextView.setVisibility(visible ? GONE : VISIBLE); - } - Drawable drawable = backButtonImageView.getDrawable(); - if (drawable != null && drawable instanceof MenuDrawable) { - ((MenuDrawable)drawable).setRotation(visible ? 1 : 0, true); - } - positionBackOverlay(getMeasuredWidth(), getMeasuredHeight()); - } - - public void closeSearchField() { - if (!isSearchFieldVisible || menu == null) { - return; - } - menu.closeSearchField(); - } - - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - positionBackImage(MeasureSpec.getSize(heightMeasureSpec)); - positionMenu(MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.getSize(heightMeasureSpec)); - positionTitle(MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.getSize(heightMeasureSpec)); - positionBackOverlay(MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.getSize(heightMeasureSpec)); - super.onMeasure(widthMeasureSpec, heightMeasureSpec); - } - - public void setAlphaEx(float alpha) { - alphaEx = alpha; - if (menu != null) { - ViewProxy.setAlpha(menu, alphaEx); - } - if (titleFrameLayout != null) { - ViewProxy.setAlpha(titleFrameLayout, alphaEx); - } - } - - public float getAlphaEx() { - return alphaEx; - } - - public void onMenuButtonPressed() { - if (menu != null) { - menu.onMenuButtonPressed(); - } - } - - protected void onPause() { - if (menu != null) { - menu.hideAllPopupMenus(); - } - } - - public void setBackOverlay(int resourceId) { - LayoutInflater li = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); - actionOverlay = li.inflate(resourceId, null); - addView(actionOverlay); - actionOverlay.setVisibility(GONE); - actionOverlay.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - if (actionBarMenuOnItemClick != null) { - actionBarMenuOnItemClick.onItemClick(-1); - } - } - }); - } - - public void setBackOverlayVisible(boolean visible) { - if (actionOverlay == null || parentFragment == null || parentFragment.parentLayout == null) { - return; - } - isBackOverlayVisible = visible; - if (visible) { - parentFragment.parentLayout.onOverlayShow(actionOverlay, parentFragment); - } - positionBackOverlay(getMeasuredWidth(), getMeasuredHeight()); - } - - private void positionBackOverlay(int widthMeasureSpec, int heightMeasureSpec) { - if (actionOverlay == null) { - return; - } - titleFrameLayout.setVisibility(isSearchFieldVisible || actionOverlay == null || actionOverlay.getVisibility() == GONE ? VISIBLE : INVISIBLE); - actionOverlay.setVisibility(!isSearchFieldVisible && isBackOverlayVisible ? VISIBLE : GONE); - if (actionOverlay.getVisibility() == VISIBLE) { - ViewGroup.LayoutParams layoutParams = actionOverlay.getLayoutParams(); - layoutParams.width = LayoutParams.WRAP_CONTENT; - layoutParams.height = LayoutParams.MATCH_PARENT; - actionOverlay.setLayoutParams(layoutParams); - actionOverlay.measure(widthMeasureSpec, heightMeasureSpec); - layoutParams.width = Math.min(actionOverlay.getMeasuredWidth() + AndroidUtilities.dp(4), widthMeasureSpec - (menu != null ? menu.getMeasuredWidth() : 0)); - actionOverlay.setLayoutParams(layoutParams); - } - } - - public void setItemsBackground(int resourceId) { - itemsBackgroundResourceId = resourceId; - backButtonImageView.setBackgroundResource(resourceId); - } -} \ No newline at end of file diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/ActionBarLayout.java b/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/ActionBarLayout.java index efbf3ee99..ca2ccad09 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/ActionBarLayout.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/ActionBarLayout.java @@ -11,6 +11,9 @@ package org.telegram.ui.Views.ActionBar; import android.app.Activity; import android.content.Context; import android.content.Intent; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Handler; import android.view.ActionMode; @@ -20,15 +23,13 @@ import android.view.MotionEvent; import android.view.VelocityTracker; import android.view.View; import android.view.ViewGroup; -import android.view.ViewTreeObserver; -import android.view.WindowManager; -import android.view.animation.Animation; -import android.view.animation.AnimationUtils; +import android.view.animation.AccelerateDecelerateInterpolator; +import android.view.animation.DecelerateInterpolator; import android.widget.FrameLayout; +import android.widget.LinearLayout; import org.telegram.android.AndroidUtilities; import org.telegram.android.NotificationCenter; -import org.telegram.messenger.FileLog; import org.telegram.messenger.R; import org.telegram.ui.AnimationCompat.AnimatorListenerAdapterProxy; import org.telegram.ui.AnimationCompat.AnimatorSetProxy; @@ -39,18 +40,6 @@ import java.util.ArrayList; public class ActionBarLayout extends FrameLayout { - private class FrameLayoutAnimationListener extends FrameLayout { - public FrameLayoutAnimationListener(Context context) { - super(context); - } - - @Override - protected void onAnimationEnd() { - super.onAnimationEnd(); - ActionBarLayout.this.onAnimationEndCheck(); - } - } - public static interface ActionBarLayoutDelegate { public abstract boolean onPreIme(); public abstract void onOverlayShow(View view, BaseFragment fragment); @@ -60,18 +49,35 @@ public class ActionBarLayout extends FrameLayout { public abstract void onRebuildAllFragments(ActionBarLayout layout); } - protected ActionBar actionBar; - private FrameLayoutAnimationListener containerView; - private FrameLayoutAnimationListener containerViewBack; - private View shadowView; - private DrawerLayoutContainer drawerLayoutContainer; + public class LinearLayoutContainer extends LinearLayout { - private Animation openAnimation; - private Animation closeAnimation; - private Animation alphaOpenAnimation; - private Animation alphaOpenAnimation2; - private Animation alphaCloseAnimation; - private Animation alphaCloseAnimation2; + public LinearLayoutContainer(Context context) { + super(context); + setOrientation(VERTICAL); + } + + /*@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; + }*/ + } + + private static Drawable headerShadowDrawable; + private static Drawable layerShadowDrawable; + private static Paint scrimPaint; + + private LinearLayoutContainer containerView; + private LinearLayoutContainer containerViewBack; + private DrawerLayoutContainer drawerLayoutContainer; + private ActionBar currentActionBar; + + private AnimatorSetProxy currentAnimation; + + public float innerTranslationX; private boolean maybeStartTracking = false; protected boolean startedTracking = false; @@ -96,71 +102,72 @@ public class ActionBarLayout extends FrameLayout { public ActionBarLayout(Context context) { super(context); - parentActivity = (Activity)context; - try { - openAnimation = AnimationUtils.loadAnimation(context, R.anim.scale_in); - closeAnimation = AnimationUtils.loadAnimation(context, R.anim.scale_out); - } catch (Exception e) { - FileLog.e("tmessages", e); + parentActivity = (Activity) context; + + if (layerShadowDrawable == null) { + layerShadowDrawable = getResources().getDrawable(R.drawable.layer_shadow); + scrimPaint = new Paint(); } } public void init(ArrayList stack) { fragmentsStack = stack; - containerViewBack = new FrameLayoutAnimationListener(parentActivity); + containerViewBack = new LinearLayoutContainer(parentActivity); + //containerViewBack.setOrientation(LinearLayout.VERTICAL); addView(containerViewBack); + FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) containerViewBack.getLayoutParams(); + layoutParams.width = LayoutParams.MATCH_PARENT; + layoutParams.height = LayoutParams.MATCH_PARENT; + layoutParams.gravity = Gravity.TOP | Gravity.LEFT; + containerViewBack.setLayoutParams(layoutParams); - containerView = new FrameLayoutAnimationListener(parentActivity); + containerView = new LinearLayoutContainer(parentActivity); + //containerView.setOrientation(LinearLayout.VERTICAL); addView(containerView); - - shadowView = new FrameLayout(parentActivity); - addView(shadowView); - shadowView.setBackgroundResource(R.drawable.shadow); - ViewGroup.LayoutParams layoutParams = shadowView.getLayoutParams(); - layoutParams.width = AndroidUtilities.dp(2); - layoutParams.height = FrameLayout.LayoutParams.MATCH_PARENT; - shadowView.setLayoutParams(layoutParams); - shadowView.setVisibility(View.INVISIBLE); - - actionBar = new ActionBar(parentActivity); - addView(actionBar); - layoutParams = actionBar.getLayoutParams(); - layoutParams.width = FrameLayout.LayoutParams.MATCH_PARENT; - actionBar.setLayoutParams(layoutParams); + layoutParams = (FrameLayout.LayoutParams) containerView.getLayoutParams(); + layoutParams.width = LayoutParams.MATCH_PARENT; + layoutParams.height = LayoutParams.MATCH_PARENT; + layoutParams.gravity = Gravity.TOP | Gravity.LEFT; + containerView.setLayoutParams(layoutParams); for (BaseFragment fragment : fragmentsStack) { fragment.setParentLayout(this); } - - needLayout(); } @Override public void onConfigurationChanged(android.content.res.Configuration newConfig) { super.onConfigurationChanged(newConfig); - fixLayout(); if (!fragmentsStack.isEmpty()) { BaseFragment lastFragment = fragmentsStack.get(fragmentsStack.size() - 1); lastFragment.onConfigurationChanged(newConfig); } } + public void setInnerTranslationX(float value) { + innerTranslationX = value; + invalidate(); + } + + public float getInnerTranslationX() { + return innerTranslationX; + } + public void onResume() { - fixLayout(); if (transitionAnimationInProgress) { + if (currentAnimation != null) { + currentAnimation.cancel(); + currentAnimation = null; + } if (onCloseAnimationEndRunnable != null) { - closeAnimation.cancel(); onCloseAnimationEnd(false); } else if (onOpenAnimationEndRunnable != null) { - openAnimation.cancel(); onOpenAnimationEnd(false); } } if (!fragmentsStack.isEmpty()) { BaseFragment lastFragment = fragmentsStack.get(fragmentsStack.size() - 1); lastFragment.onResume(); - - actionBar.setCurrentActionBarLayer(lastFragment.actionBarLayer); } } @@ -191,9 +198,39 @@ public class ActionBarLayout extends FrameLayout { } @Override - protected void onAnimationEnd() { - super.onAnimationEnd(); - onAnimationEndCheck(); + protected boolean drawChild(Canvas canvas, View child, long drawingTime) { + int width = getWidth(); + int translationX = (int) innerTranslationX; + int clipLeft = 0; + int clipRight = width; + + if (child == containerViewBack) { + clipRight = translationX; + } else if (child == containerView) { + clipLeft = translationX; + } + + final int restoreCount = canvas.save(); + if (!transitionAnimationInProgress) { + canvas.clipRect(clipLeft, 0, clipRight, getHeight()); + } + final boolean result = super.drawChild(canvas, child, drawingTime); + canvas.restoreToCount(restoreCount); + + if (translationX != 0) { + if (child == containerView) { + final float alpha = Math.max(0, Math.min((width - translationX) / (float) AndroidUtilities.dp(20), 1.0f)); + layerShadowDrawable.setBounds(translationX - layerShadowDrawable.getIntrinsicWidth(), child.getTop(), translationX, child.getBottom()); + layerShadowDrawable.setAlpha((int) (0xff * alpha)); + layerShadowDrawable.draw(canvas); + } else if (child == containerViewBack) { + final float opacity = Math.min(0.8f, (width - translationX) / (float)width); + scrimPaint.setColor((int) (((0x99000000 & 0xff000000) >>> 24) * opacity) << 24); + canvas.drawRect(clipLeft, 0, clipRight, getHeight(), scrimPaint); + } + } + + return result; } public void setDelegate(ActionBarLayoutDelegate delegate) { @@ -208,15 +245,11 @@ public class ActionBarLayout extends FrameLayout { lastFragment.setParentLayout(null); fragmentsStack.remove(fragmentsStack.size() - 1); - FrameLayoutAnimationListener temp = containerView; + LinearLayoutContainer temp = containerView; containerView = containerViewBack; containerViewBack = temp; - ViewGroup parent = (ViewGroup)containerView.getParent(); - parent.bringChildToFront(containerView); - parent.bringChildToFront(shadowView); - parent.bringChildToFront(actionBar); - //parent.removeViewInLayout(containerView); - //parent.addView(containerView, 1); + bringChildToFront(containerView); + lastFragment = fragmentsStack.get(fragmentsStack.size() - 1); lastFragment.onResume(); } else { @@ -228,6 +261,12 @@ public class ActionBarLayout extends FrameLayout { parent.removeView(lastFragment.fragmentView); } } + if (lastFragment.needAddActionBar() && lastFragment.actionBar != null) { + ViewGroup parent = (ViewGroup) lastFragment.actionBar.getParent(); + if (parent != null) { + parent.removeView(lastFragment.actionBar); + } + } } containerViewBack.setVisibility(View.GONE); AndroidUtilities.unlockOrientation(parentActivity); @@ -236,26 +275,28 @@ public class ActionBarLayout extends FrameLayout { ViewProxy.setTranslationX(containerView, 0); ViewProxy.setTranslationX(containerViewBack, 0); - actionBar.stopMoving(backAnimation); - shadowView.setVisibility(View.INVISIBLE); - ViewProxy.setTranslationX(shadowView, -AndroidUtilities.dp(2)); + setInnerTranslationX(0); } private void prepareForMoving(MotionEvent ev) { maybeStartTracking = false; startedTracking = true; startedTrackingX = (int) ev.getX(); - shadowView.setVisibility(View.VISIBLE); - ViewProxy.setTranslationX(shadowView, -AndroidUtilities.dp(2)); containerViewBack.setVisibility(View.VISIBLE); beginTrackingSent = false; BaseFragment lastFragment = fragmentsStack.get(fragmentsStack.size() - 2); - actionBar.prepareForMoving(lastFragment.actionBarLayer); View fragmentView = lastFragment.createView(parentActivity.getLayoutInflater(), null); - ViewGroup parentView = (ViewGroup)fragmentView.getParent(); - if (parentView != null) { - parentView.removeView(fragmentView); + ViewGroup parent = (ViewGroup) fragmentView.getParent(); + if (parent != null) { + parent.removeView(fragmentView); + } + if (lastFragment.needAddActionBar() && lastFragment.actionBar != null) { + parent = (ViewGroup) lastFragment.actionBar.getParent(); + if (parent != null) { + parent.removeView(lastFragment.actionBar); + } + containerViewBack.addView(lastFragment.actionBar); } containerViewBack.addView(fragmentView); ViewGroup.LayoutParams layoutParams = fragmentView.getLayoutParams(); @@ -271,7 +312,7 @@ public class ActionBarLayout extends FrameLayout { } public boolean onTouchEvent(MotionEvent ev) { - if(!checkTransitionAnimation() && !inActionMode && !animationInProgress) { + if (!checkTransitionAnimation() && !inActionMode && !animationInProgress) { if (fragmentsStack.size() > 1) { if (ev != null && ev.getAction() == MotionEvent.ACTION_DOWN && !startedTracking && !maybeStartTracking) { BaseFragment currentFragment = fragmentsStack.get(fragmentsStack.size() - 1); @@ -303,9 +344,8 @@ public class ActionBarLayout extends FrameLayout { currentFragment.onBeginSlide(); beginTrackingSent = true; } - actionBar.moveActionBarByX(dx); ViewProxy.setTranslationX(containerView, dx); - ViewProxy.setTranslationX(shadowView, dx - AndroidUtilities.dp(2)); + setInnerTranslationX(dx); } } else if (ev != null && ev.getPointerId(0) == startedTrackingPointerId && (ev.getAction() == MotionEvent.ACTION_CANCEL || ev.getAction() == MotionEvent.ACTION_UP || ev.getAction() == MotionEvent.ACTION_POINTER_UP)) { if (velocityTracker == null) { @@ -318,8 +358,8 @@ public class ActionBarLayout extends FrameLayout { if (velX >= 3500 && velX > velY) { prepareForMoving(ev); if (!beginTrackingSent) { - if (((Activity)getContext()).getCurrentFocus() != null) { - AndroidUtilities.hideKeyboard(((Activity)getContext()).getCurrentFocus()); + if (((Activity) getContext()).getCurrentFocus() != null) { + AndroidUtilities.hideKeyboard(((Activity) getContext()).getCurrentFocus()); } beginTrackingSent = true; } @@ -336,19 +376,13 @@ public class ActionBarLayout extends FrameLayout { distToMove = containerView.getMeasuredWidth() - x; animatorSet.playTogether( ObjectAnimatorProxy.ofFloat(containerView, "x", containerView.getMeasuredWidth()), - ObjectAnimatorProxy.ofFloat(shadowView, "x", containerView.getMeasuredWidth() - AndroidUtilities.dp(2)), - ObjectAnimatorProxy.ofFloat(actionBar.currentLayer, "x", actionBar.getMeasuredWidth()), - ObjectAnimatorProxy.ofFloat(actionBar.shadowView, "x", actionBar.getMeasuredWidth() - AndroidUtilities.dp(2)), - ObjectAnimatorProxy.ofFloat(actionBar.previousLayer, "alphaEx", 1.0f) + ObjectAnimatorProxy.ofFloat(this, "innerTranslationX", (float)containerView.getMeasuredWidth()) ); } else { distToMove = x; animatorSet.playTogether( ObjectAnimatorProxy.ofFloat(containerView, "x", 0), - ObjectAnimatorProxy.ofFloat(shadowView, "x", -AndroidUtilities.dp(2)), - ObjectAnimatorProxy.ofFloat(actionBar.currentLayer, "x", 0), - ObjectAnimatorProxy.ofFloat(actionBar.shadowView, "x", -AndroidUtilities.dp(2)), - ObjectAnimatorProxy.ofFloat(actionBar.previousLayer, "alphaEx", 0) + ObjectAnimatorProxy.ofFloat(this, "innerTranslationX", 0.0f) ); } @@ -388,16 +422,12 @@ public class ActionBarLayout extends FrameLayout { return false; } - public ActionBar getActionBar() { - return actionBar; - } - public void onBackPressed() { if (startedTracking || checkTransitionAnimation() || fragmentsStack.isEmpty()) { return; } - if (actionBar.currentLayer != null && actionBar.currentLayer.isSearchFieldVisible) { - actionBar.currentLayer.closeSearchField(); + if (currentActionBar != null && currentActionBar.isSearchFieldVisible) { + currentActionBar.closeSearchField(); return; } BaseFragment lastFragment = fragmentsStack.get(fragmentsStack.size() - 1); @@ -414,65 +444,32 @@ public class ActionBarLayout extends FrameLayout { } } - private void onAnimationEndCheck() { + private void onAnimationEndCheck(boolean byCheck) { onCloseAnimationEnd(false); onOpenAnimationEnd(false); + if (currentAnimation != null) { + if (byCheck) { + currentAnimation.cancel(); + } + currentAnimation = null; + } + ViewProxy.setAlpha(this, 1.0f); + ViewProxy.setAlpha(containerView, 1.0f); + ViewProxy.setScaleX(containerView, 1.0f); + ViewProxy.setScaleY(containerView, 1.0f); + ViewProxy.setAlpha(containerViewBack, 1.0f); + ViewProxy.setScaleX(containerViewBack, 1.0f); + ViewProxy.setScaleY(containerViewBack, 1.0f); } public boolean checkTransitionAnimation() { if (transitionAnimationInProgress && transitionAnimationStartTime < System.currentTimeMillis() - 400) { transitionAnimationInProgress = false; - onAnimationEndCheck(); + onAnimationEndCheck(true); } return transitionAnimationInProgress; } - private void fixLayout() { - getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { - @Override - public void onGlobalLayout() { - needLayout(); - - if (Build.VERSION.SDK_INT < 16) { - getViewTreeObserver().removeGlobalOnLayoutListener(this); - } else { - getViewTreeObserver().removeOnGlobalLayoutListener(this); - } - } - }); - } - - public void needLayout() { - WindowManager manager = (WindowManager)parentActivity.getSystemService(Context.WINDOW_SERVICE); - int rotation = manager.getDefaultDisplay().getRotation(); - - int height = 0; - if (actionBar.getVisibility() == View.VISIBLE) { - height = AndroidUtilities.getCurrentActionBarHeight(); - } - - if (containerView != null) { - FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) containerView.getLayoutParams(); - if (layoutParams.topMargin != height) { - layoutParams.setMargins(0, height, 0, 0); - layoutParams.gravity = Gravity.TOP | Gravity.LEFT; - containerView.setLayoutParams(layoutParams); - } - } - if (containerViewBack != null) { - FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) containerViewBack.getLayoutParams(); - if (layoutParams.topMargin != height) { - layoutParams.setMargins(0, height, 0, 0); - layoutParams.gravity = Gravity.TOP | Gravity.LEFT; - containerViewBack.setLayoutParams(layoutParams); - } - } - } - - public ActionBar getInternalActionBar() { - return actionBar; - } - private void presentFragmentInternalRemoveOld(boolean removeLast, final BaseFragment fragment) { if (fragment == null) { return; @@ -489,6 +486,12 @@ public class ActionBarLayout extends FrameLayout { parent.removeView(fragment.fragmentView); } } + if (fragment.needAddActionBar() && fragment.actionBar != null) { + ViewGroup parent = (ViewGroup) fragment.actionBar.getParent(); + if (parent != null) { + parent.removeView(fragment.actionBar); + } + } } containerViewBack.setVisibility(View.GONE); } @@ -509,8 +512,8 @@ public class ActionBarLayout extends FrameLayout { AndroidUtilities.hideKeyboard(parentActivity.getCurrentFocus()); NotificationCenter.getInstance().postNotificationName(NotificationCenter.hideEmojiKeyboard); } - boolean needAnimation = openAnimation != null && !forceWithoutAnimation && parentActivity.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE).getBoolean("view_animations", true); - if (useAlphaAnimations && fragmentsStack.size() == 0 && alphaOpenAnimation == null) { + 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; } @@ -518,6 +521,9 @@ public class ActionBarLayout extends FrameLayout { fragment.setParentLayout(this); View fragmentView = fragment.createView(parentActivity.getLayoutInflater(), null); + if (fragment.needAddActionBar() && fragment.actionBar != null) { + containerViewBack.addView(fragment.actionBar); + } containerViewBack.addView(fragmentView); ViewGroup.LayoutParams layoutParams = fragmentView.getLayoutParams(); layoutParams.width = FrameLayout.LayoutParams.MATCH_PARENT; @@ -525,21 +531,17 @@ public class ActionBarLayout extends FrameLayout { fragmentView.setLayoutParams(layoutParams); fragmentsStack.add(fragment); fragment.onResume(); - actionBar.setCurrentActionBarLayer(fragment.actionBarLayer); + currentActionBar = fragment.actionBar; if (fragmentView.getBackground() == null) { fragmentView.setBackgroundColor(0xffffffff); } - FrameLayoutAnimationListener temp = containerView; + LinearLayoutContainer temp = containerView; containerView = containerViewBack; containerViewBack = temp; containerView.setVisibility(View.VISIBLE); - ViewGroup parent = (ViewGroup)containerView.getParent(); - //parent.removeView(containerView); - //parent.addView(containerView, 1); - parent.bringChildToFront(containerView); - parent.bringChildToFront(shadowView); - parent.bringChildToFront(actionBar); + + bringChildToFront(containerView); if (!needAnimation) { presentFragmentInternalRemoveOld(removeLast, currentFragment); @@ -551,11 +553,27 @@ public class ActionBarLayout extends FrameLayout { if (needAnimation) { if (useAlphaAnimations && fragmentsStack.size() == 1) { presentFragmentInternalRemoveOld(removeLast, currentFragment); - startAnimation(alphaOpenAnimation); + AnimatorSetProxy animatorSet = new AnimatorSetProxy(); + animatorSet.playTogether(); + + ArrayList animators = new ArrayList(); + animators.add(ObjectAnimatorProxy.ofFloat(this, "alpha", 0.0f, 1.0f)); if (backgroundView != null) { backgroundView.setVisibility(VISIBLE); - backgroundView.startAnimation(alphaOpenAnimation2); + animators.add(ObjectAnimatorProxy.ofFloat(backgroundView, "alpha", 0.0f, 1.0f)); } + + currentAnimation = new AnimatorSetProxy(); + currentAnimation.playTogether(animators); + currentAnimation.setInterpolator(new AccelerateDecelerateInterpolator()); + currentAnimation.setDuration(200); + currentAnimation.addListener(new AnimatorListenerAdapterProxy() { + @Override + public void onAnimationEnd(Object animation) { + onAnimationEndCheck(false); + } + }); + currentAnimation.start(); } else { transitionAnimationStartTime = System.currentTimeMillis(); transitionAnimationInProgress = true; @@ -566,8 +584,20 @@ public class ActionBarLayout extends FrameLayout { fragment.onOpenAnimationEnd(); } }; - openAnimation.reset(); - containerView.startAnimation(openAnimation); + currentAnimation = new AnimatorSetProxy(); + currentAnimation.playTogether( + ObjectAnimatorProxy.ofFloat(containerView, "alpha", 0.0f, 1.0f), + ObjectAnimatorProxy.ofFloat(containerView, "scaleX", 0.8f, 1.0f), + ObjectAnimatorProxy.ofFloat(containerView, "scaleY", 0.8f, 1.0f)); + currentAnimation.setInterpolator(new DecelerateInterpolator(1.5f)); + currentAnimation.setDuration(200); + currentAnimation.addListener(new AnimatorListenerAdapterProxy() { + @Override + public void onAnimationEnd(Object animation) { + onAnimationEndCheck(false); + } + }); + currentAnimation.start(); } } else { fragment.onOpenAnimationEnd(); @@ -598,9 +628,7 @@ public class ActionBarLayout extends FrameLayout { fragment.setParentLayout(null); fragmentsStack.remove(fragment); containerViewBack.setVisibility(View.GONE); - ViewGroup parent = (ViewGroup)containerView.getParent(); - parent.removeView(containerViewBack); - parent.addView(containerViewBack, 0); + bringChildToFront(containerView); } public void closeLastFragment(boolean animated) { @@ -610,8 +638,8 @@ public class ActionBarLayout extends FrameLayout { if (parentActivity.getCurrentFocus() != null) { AndroidUtilities.hideKeyboard(parentActivity.getCurrentFocus()); } - boolean needAnimation = animated && closeAnimation != null && parentActivity.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE).getBoolean("view_animations", true); - if (useAlphaAnimations && fragmentsStack.size() == 1 && alphaCloseAnimation == null) { + 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); @@ -621,20 +649,23 @@ public class ActionBarLayout extends FrameLayout { } if (previousFragment != null) { - FrameLayoutAnimationListener temp = containerView; + LinearLayoutContainer temp = containerView; containerView = containerViewBack; containerViewBack = temp; containerView.setVisibility(View.VISIBLE); previousFragment.setParentLayout(this); View fragmentView = previousFragment.createView(parentActivity.getLayoutInflater(), null); + if (previousFragment.needAddActionBar() && previousFragment.actionBar != null) { + containerView.addView(previousFragment.actionBar); + } containerView.addView(fragmentView); ViewGroup.LayoutParams layoutParams = fragmentView.getLayoutParams(); layoutParams.width = FrameLayout.LayoutParams.MATCH_PARENT; layoutParams.height = FrameLayout.LayoutParams.MATCH_PARENT; fragmentView.setLayoutParams(layoutParams); previousFragment.onResume(); - actionBar.setCurrentActionBarLayer(previousFragment.actionBarLayer); + currentActionBar = previousFragment.actionBar; if (fragmentView.getBackground() == null) { fragmentView.setBackgroundColor(0xffffffff); } @@ -646,25 +677,33 @@ public class ActionBarLayout extends FrameLayout { if (needAnimation) { transitionAnimationStartTime = System.currentTimeMillis(); transitionAnimationInProgress = true; - closeAnimation.reset(); onCloseAnimationEndRunnable = new Runnable() { @Override public void run() { closeLastFragmentInternalRemoveOld(currentFragment); } }; - containerViewBack.startAnimation(closeAnimation); + + currentAnimation = new AnimatorSetProxy(); + currentAnimation.playTogether( + ObjectAnimatorProxy.ofFloat(containerViewBack, "alpha", 1.0f, 0.0f), + ObjectAnimatorProxy.ofFloat(containerViewBack, "scaleX", 1.0f, 0.8f), + ObjectAnimatorProxy.ofFloat(containerViewBack, "scaleY", 1.0f, 0.8f)); + currentAnimation.setInterpolator(new DecelerateInterpolator(1.5f)); + currentAnimation.setDuration(200); + currentAnimation.addListener(new AnimatorListenerAdapterProxy() { + @Override + public void onAnimationEnd(Object animation) { + onAnimationEndCheck(false); + } + }); + currentAnimation.start(); } } else { if (needAnimation && useAlphaAnimations) { transitionAnimationStartTime = System.currentTimeMillis(); transitionAnimationInProgress = true; - alphaCloseAnimation.reset(); - alphaCloseAnimation2.reset(); - startAnimation(alphaCloseAnimation); - if (backgroundView != null) { - backgroundView.startAnimation(alphaCloseAnimation2); - } + onCloseAnimationEndRunnable = new Runnable() { @Override public void run() { @@ -675,6 +714,24 @@ public class ActionBarLayout extends FrameLayout { } } }; + + ArrayList animators = new ArrayList(); + animators.add(ObjectAnimatorProxy.ofFloat(this, "alpha", 1.0f, 0.0f)); + if (backgroundView != null) { + animators.add(ObjectAnimatorProxy.ofFloat(backgroundView, "alpha", 1.0f, 0.0f)); + } + + currentAnimation = new AnimatorSetProxy(); + currentAnimation.playTogether(animators); + currentAnimation.setInterpolator(new AccelerateDecelerateInterpolator()); + currentAnimation.setDuration(200); + currentAnimation.addListener(new AnimatorListenerAdapterProxy() { + @Override + public void onAnimationEnd(Object animation) { + onAnimationEndCheck(false); + } + }); + currentAnimation.start(); } else { removeFragmentFromStack(currentFragment); setVisibility(GONE); @@ -692,13 +749,16 @@ public class ActionBarLayout extends FrameLayout { BaseFragment previousFragment = fragmentsStack.get(fragmentsStack.size() - 1); previousFragment.setParentLayout(this); View fragmentView = previousFragment.createView(parentActivity.getLayoutInflater(), null); + if (previousFragment.needAddActionBar() && previousFragment.actionBar != null) { + containerView.addView(previousFragment.actionBar); + } containerView.addView(fragmentView); ViewGroup.LayoutParams layoutParams = fragmentView.getLayoutParams(); layoutParams.width = FrameLayout.LayoutParams.MATCH_PARENT; layoutParams.height = FrameLayout.LayoutParams.MATCH_PARENT; fragmentView.setLayoutParams(layoutParams); previousFragment.onResume(); - actionBar.setCurrentActionBarLayer(previousFragment.actionBarLayer); + currentActionBar = previousFragment.actionBar; if (fragmentView.getBackground() == null) { fragmentView.setBackgroundColor(0xffffffff); } @@ -728,19 +788,9 @@ public class ActionBarLayout extends FrameLayout { } } - public void showActionBar() { - actionBar.setVisibility(View.VISIBLE); - needLayout(); - } - - public void hideActionBar() { - actionBar.setVisibility(View.GONE); - needLayout(); - } - public boolean onKeyUp(int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_MENU && !checkTransitionAnimation() && !startedTracking) { - actionBar.onMenuButtonPressed(); + if (keyCode == KeyEvent.KEYCODE_MENU && !checkTransitionAnimation() && !startedTracking && currentActionBar != null) { + currentActionBar.onMenuButtonPressed(); } return super.onKeyUp(keyCode, event); } @@ -752,12 +802,16 @@ public class ActionBarLayout extends FrameLayout { } public void onActionModeStarted(ActionMode mode) { - hideActionBar(); + if (currentActionBar != null) { + currentActionBar.setVisibility(GONE); + } inActionMode = true; } public void onActionModeFinished(ActionMode mode) { - showActionBar(); + if (currentActionBar != null) { + currentActionBar.setVisibility(VISIBLE); + } inActionMode = false; } @@ -802,11 +856,13 @@ public class ActionBarLayout extends FrameLayout { return; } if (transitionAnimationInProgress) { + if (currentAnimation != null) { + currentAnimation.cancel(); + currentAnimation = null; + } if (onCloseAnimationEndRunnable != null) { - closeAnimation.cancel(); onCloseAnimationEnd(false); } else if (onOpenAnimationEndRunnable != null) { - openAnimation.cancel(); onOpenAnimationEnd(false); } containerView.invalidate(); @@ -822,12 +878,6 @@ public class ActionBarLayout extends FrameLayout { public void setUseAlphaAnimations(boolean value) { useAlphaAnimations = value; - if (useAlphaAnimations) { - alphaOpenAnimation = AnimationUtils.loadAnimation(getContext(), R.anim.icon_anim_fade_in); - alphaOpenAnimation2 = AnimationUtils.loadAnimation(getContext(), R.anim.icon_anim_fade_in); - alphaCloseAnimation = AnimationUtils.loadAnimation(getContext(), R.anim.icon_anim_fade_out); - alphaCloseAnimation2 = AnimationUtils.loadAnimation(getContext(), R.anim.icon_anim_fade_out); - } } public void setBackgroundView(View view) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/ActionBarMenu.java b/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/ActionBarMenu.java index cbce74e27..fb2fd1cef 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/ActionBarMenu.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/ActionBarMenu.java @@ -20,14 +20,12 @@ import org.telegram.android.AndroidUtilities; public class ActionBarMenu extends LinearLayout { - private ActionBar parentActionBar; - private ActionBarLayer parentActionBarLayer; + protected ActionBar parentActionBar; - public ActionBarMenu(Context context, ActionBar actionBar, ActionBarLayer layer) { + public ActionBarMenu(Context context, ActionBar layer) { super(context); setOrientation(LinearLayout.HORIZONTAL); - parentActionBar = actionBar; - parentActionBarLayer = layer; + parentActionBar = layer; } public ActionBarMenu(Context context) { @@ -49,7 +47,7 @@ public class ActionBarMenu extends LinearLayout { addView(view); LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams)view.getLayoutParams(); layoutParams.height = FrameLayout.LayoutParams.FILL_PARENT; - view.setBackgroundResource(parentActionBarLayer.itemsBackgroundResourceId); + view.setBackgroundResource(parentActionBar.itemsBackgroundResourceId); view.setLayoutParams(layoutParams); view.setOnClickListener(new OnClickListener() { @Override @@ -61,11 +59,11 @@ public class ActionBarMenu extends LinearLayout { } public ActionBarMenuItem addItem(int id, int icon) { - return addItem(id, icon, parentActionBarLayer.itemsBackgroundResourceId); + return addItem(id, icon, parentActionBar.itemsBackgroundResourceId); } public ActionBarMenuItem addItem(int id, int icon, int backgroundResource) { - ActionBarMenuItem menuItem = new ActionBarMenuItem(getContext(), this, parentActionBar, backgroundResource); + ActionBarMenuItem menuItem = new ActionBarMenuItem(getContext(), this, backgroundResource); menuItem.setTag(id); menuItem.setScaleType(ImageView.ScaleType.CENTER); menuItem.setImageResource(icon); @@ -79,11 +77,11 @@ public class ActionBarMenu extends LinearLayout { public void onClick(View view) { ActionBarMenuItem item = (ActionBarMenuItem)view; if (item.hasSubMenu()) { - if (parentActionBarLayer.actionBarMenuOnItemClick.canOpenMenu()) { + if (parentActionBar.actionBarMenuOnItemClick.canOpenMenu()) { item.toggleSubMenu(); } } else if (item.isSearchField()) { - parentActionBarLayer.onSearchFieldVisibilityChanged(item.toggleSearch()); + parentActionBar.onSearchFieldVisibilityChanged(item.toggleSearch()); } else { onItemClick((Integer)view.getTag()); } @@ -102,8 +100,8 @@ public class ActionBarMenu extends LinearLayout { } public void onItemClick(int id) { - if (parentActionBarLayer.actionBarMenuOnItemClick != null) { - parentActionBarLayer.actionBarMenuOnItemClick.onItemClick(id); + if (parentActionBar.actionBarMenuOnItemClick != null) { + parentActionBar.actionBarMenuOnItemClick.onItemClick(id); } } @@ -132,7 +130,7 @@ public class ActionBarMenu extends LinearLayout { if (view instanceof ActionBarMenuItem) { ActionBarMenuItem item = (ActionBarMenuItem)view; if (item.isSearchField()) { - parentActionBarLayer.onSearchFieldVisibilityChanged(item.toggleSearch()); + parentActionBar.onSearchFieldVisibilityChanged(item.toggleSearch()); } } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/ActionBarMenuItem.java b/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/ActionBarMenuItem.java index 766a9a154..3ca42deb1 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/ActionBarMenuItem.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/ActionBarMenuItem.java @@ -13,7 +13,6 @@ import android.graphics.Rect; import android.os.Build; import android.text.Editable; import android.text.TextWatcher; -import android.util.AttributeSet; import android.view.ActionMode; import android.view.ContextMenu; import android.view.Gravity; @@ -48,7 +47,6 @@ public class ActionBarMenuItem extends ImageView { private ActionBarPopupWindow.ActionBarPopupWindowLayout popupLayout; private ActionBarMenu parentMenu; private ActionBarPopupWindow popupWindow; - private ActionBar parentActionBar; private EditText searchField; private boolean isSearchField = false; private ActionBarMenuItemSearchListener listener; @@ -57,23 +55,10 @@ public class ActionBarMenuItem extends ImageView { private View selectedMenuView; private Runnable showMenuRunnable; - public ActionBarMenuItem(Context context, ActionBarMenu menu, ActionBar actionBar, int background) { + public ActionBarMenuItem(Context context, ActionBarMenu menu, int background) { super(context); setBackgroundResource(background); parentMenu = menu; - parentActionBar = actionBar; - } - - public ActionBarMenuItem(Context context) { - super(context); - } - - public ActionBarMenuItem(Context context, AttributeSet attrs) { - super(context, attrs); - } - - public ActionBarMenuItem(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); } @Override @@ -254,10 +239,10 @@ public class ActionBarMenuItem extends ImageView { } popupWindow.setFocusable(true); if (popupLayout.getMeasuredWidth() == 0) { - popupWindow.showAsDropDown(this, parentActionBar.getMeasuredWidth() - popupLayout.getMeasuredWidth() - getLeft() - parentMenu.getLeft(), -getMeasuredHeight()); - popupWindow.update(this, parentActionBar.getMeasuredWidth() - popupLayout.getMeasuredWidth() - getLeft() - parentMenu.getLeft(), -getMeasuredHeight(), -1, -1); + 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 { - popupWindow.showAsDropDown(this, parentActionBar.getMeasuredWidth() - popupLayout.getMeasuredWidth() - getLeft() - parentMenu.getLeft(), -getMeasuredHeight()); + popupWindow.showAsDropDown(this, parentMenu.parentActionBar.getMeasuredWidth() - popupLayout.getMeasuredWidth() - getLeft() - parentMenu.getLeft(), -getMeasuredHeight()); } } @@ -402,10 +387,10 @@ public class ActionBarMenuItem extends ImageView { protected void onLayout(boolean changed, int left, int top, int right, int bottom) { super.onLayout(changed, left, top, right, bottom); if (popupWindow != null && popupWindow.isShowing()) { - int x = parentActionBar.getMeasuredWidth() - popupLayout.getMeasuredWidth() - getLeft() - parentMenu.getLeft(); + int x = parentMenu.parentActionBar.getMeasuredWidth() - popupLayout.getMeasuredWidth() - getLeft() - parentMenu.getLeft(); int y = -getMeasuredHeight(); FileLog.e("tmessages", "x = " + x + " y = " + y); - popupWindow.update(this, parentActionBar.getMeasuredWidth() - popupLayout.getMeasuredWidth() - getLeft() - parentMenu.getLeft(), -getMeasuredHeight(), -1, -1); + popupWindow.update(this, parentMenu.parentActionBar.getMeasuredWidth() - popupLayout.getMeasuredWidth() - getLeft() - parentMenu.getLeft(), -getMeasuredHeight(), -1, -1); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/BaseFragment.java b/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/BaseFragment.java index 51e4b430b..811f6488d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/BaseFragment.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/BaseFragment.java @@ -23,12 +23,13 @@ import org.telegram.messenger.R; public class BaseFragment { private boolean isFinished = false; + private AlertDialog visibleDialog = null; + protected View fragmentView; protected ActionBarLayout parentLayout; - protected ActionBarLayer actionBarLayer; + protected ActionBar actionBar; protected int classGuid = 0; protected Bundle arguments; - private AlertDialog visibleDialog = null; protected boolean swipeBackEnabled = true; public BaseFragment() { @@ -48,7 +49,7 @@ public class BaseFragment { return arguments; } - public void setParentLayout(ActionBarLayout layout) { + protected void setParentLayout(ActionBarLayout layout) { if (parentLayout != layout) { parentLayout = layout; if (fragmentView != null) { @@ -62,14 +63,21 @@ public class BaseFragment { } fragmentView = null; } - if (parentLayout != null) { - if (actionBarLayer != null) { - actionBarLayer.onDestroy(); + if (actionBar != null) { + ViewGroup parent = (ViewGroup) actionBar.getParent(); + if (parent != null) { + try { + parent.removeView(actionBar); + } catch (Exception e) { + FileLog.e("tmessages", e); + } } - actionBarLayer = parentLayout.getInternalActionBar().createLayer(); - actionBarLayer.parentFragment = this; - actionBarLayer.setBackgroundResource(R.color.header); - actionBarLayer.setItemsBackground(R.drawable.bar_selector); + } + if (parentLayout != null) { + actionBar = new ActionBar(parentLayout.getContext()); + actionBar.parentFragment = this; + actionBar.setBackgroundResource(R.color.header); + actionBar.setItemsBackground(R.drawable.bar_selector); } } } @@ -99,8 +107,8 @@ public class BaseFragment { public void onFragmentDestroy() { ConnectionsManager.getInstance().cancelRpcsForClassGuid(classGuid); isFinished = true; - if (actionBarLayer != null) { - actionBarLayer.setEnabled(false); + if (actionBar != null) { + actionBar.setEnabled(false); } } @@ -109,9 +117,9 @@ public class BaseFragment { } public void onPause() { - if (actionBarLayer != null) { - actionBarLayer.onPause(); - actionBarLayer.closeSearchField(); + if (actionBar != null) { + actionBar.onPause(); + actionBar.closeSearchField(); } try { if (visibleDialog != null && visibleDialog.isShowing()) { @@ -168,18 +176,6 @@ public class BaseFragment { } } - public void showActionBar() { - if (parentLayout != null) { - parentLayout.showActionBar(); - } - } - - public void hideActionBar() { - if (parentLayout != null) { - parentLayout.hideActionBar(); - } - } - public void onBeginSlide() { try { if (visibleDialog != null && visibleDialog.isShowing()) { @@ -189,8 +185,8 @@ public class BaseFragment { } catch (Exception e) { FileLog.e("tmessages", e); } - if (actionBarLayer != null) { - actionBarLayer.onPause(); + if (actionBar != null) { + actionBar.onPause(); } } @@ -202,6 +198,10 @@ public class BaseFragment { } + public boolean needAddActionBar() { + return true; + } + protected void showAlertDialog(AlertDialog.Builder builder) { if (parentLayout == null || parentLayout.checkTransitionAnimation() || parentLayout.animationInProgress || parentLayout.startedTracking) { return; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/DrawerLayoutContainer.java b/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/DrawerLayoutContainer.java index c1004411f..d55b67c7e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/DrawerLayoutContainer.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/DrawerLayoutContainer.java @@ -46,7 +46,6 @@ public class DrawerLayoutContainer extends FrameLayout { private boolean beginTrackingSent; private AnimatorSetProxy currentAnimation = null; - private Paint statusBarPaint = new Paint(); private Paint scrimPaint = new Paint(); private Object lastInsets; @@ -100,7 +99,7 @@ public class DrawerLayoutContainer extends FrameLayout { child.dispatchApplyWindowInsets(wi); } - private void applyMarginInsets(MarginLayoutParams lp, Object insets, int drawerGravity) { + private void applyMarginInsets(MarginLayoutParams lp, Object insets, int drawerGravity, boolean topOnly) { WindowInsets wi = (WindowInsets) insets; if (drawerGravity == Gravity.LEFT) { wi = wi.replaceSystemWindowInsets(wi.getSystemWindowInsetLeft(), wi.getSystemWindowInsetTop(), 0, wi.getSystemWindowInsetBottom()); @@ -108,7 +107,7 @@ public class DrawerLayoutContainer extends FrameLayout { wi = wi.replaceSystemWindowInsets(0, wi.getSystemWindowInsetTop(), wi.getSystemWindowInsetRight(), wi.getSystemWindowInsetBottom()); } lp.leftMargin = wi.getSystemWindowInsetLeft(); - lp.topMargin = wi.getSystemWindowInsetTop(); + lp.topMargin = topOnly ? 0 : wi.getSystemWindowInsetTop(); lp.rightMargin = wi.getSystemWindowInsetRight(); lp.bottomMargin = wi.getSystemWindowInsetBottom(); } @@ -126,10 +125,6 @@ public class DrawerLayoutContainer extends FrameLayout { requestLayout(); } - public void setStatusBarColor(int color) { - statusBarPaint.setColor(color); - } - public void setDrawerLayout(View layout) { drawerLayout = layout; addView(drawerLayout); @@ -361,14 +356,6 @@ public class DrawerLayoutContainer extends FrameLayout { super.requestDisallowInterceptTouchEvent(disallowIntercept); } - @Override - protected void onDraw(Canvas canvas) { - super.onDraw(canvas); - if (Build.VERSION.SDK_INT >= 21) { - canvas.drawRect(0, 0, getWidth(), AndroidUtilities.statusBarHeight, statusBarPaint); - } - } - @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { inLayout = true; @@ -410,7 +397,6 @@ public class DrawerLayoutContainer extends FrameLayout { final boolean applyInsets = lastInsets != null && Build.VERSION.SDK_INT >= 21; - int foundDrawers = 0; final int childCount = getChildCount(); for (int i = 0; i < childCount; i++) { final View child = getChildAt(i); @@ -425,7 +411,7 @@ public class DrawerLayoutContainer extends FrameLayout { if (child.getFitsSystemWindows()) { dispatchChildInsets(child, lastInsets, lp.gravity); } else { - applyMarginInsets(lp, lastInsets, lp.gravity); + applyMarginInsets(lp, lastInsets, lp.gravity, Build.VERSION.SDK_INT >= 21); } } @@ -471,7 +457,7 @@ public class DrawerLayoutContainer extends FrameLayout { scrimPaint.setColor((int) (((0x99000000 & 0xff000000) >>> 24) * scrimOpacity) << 24); 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.f)); + 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); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Views/AvatarDrawable.java b/TMessagesProj/src/main/java/org/telegram/ui/Views/AvatarDrawable.java index ef9eeed0d..d4419e562 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Views/AvatarDrawable.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Views/AvatarDrawable.java @@ -19,6 +19,7 @@ import android.text.TextPaint; import org.telegram.android.AndroidUtilities; import org.telegram.messenger.FileLog; +import org.telegram.messenger.R; import org.telegram.messenger.TLRPC; public class AvatarDrawable extends Drawable { @@ -28,6 +29,9 @@ public class AvatarDrawable extends Drawable { private static int[] arrColors = {0xffe56555, 0xfff28c48, 0xffeec764, 0xff76c84d, 0xff5fbed5, 0xff549cdd, 0xff8e85ee, 0xfff2749a}; private static int[] arrColorsProfiles = {0xffd86f65, 0xffdc9663, 0xffdebc68, 0xff67b35d, 0xff56a2bb, 0xff5c98cd, 0xff8c79d2, 0xffda738e}; private static int[] arrColorsProfilesBack = {0xffca6056, 0xffcf8550, 0xffcfa742, 0xff56a14c, 0xff4492ac, 0xff4c84b6, 0xff7d6ac4, 0xffc9637e}; + private static int[] arrColorsProfilesText = {0xfff9cbc5, 0xfffadbc4, 0xfff7e7bf, 0xffc0edba, 0xffb8e2f0, 0xffb3d7f7, 0xffcdc4ed, 0xfff2cfd8}; + private static int[] arrColorsButtons = {R.drawable.bar_selector_red, R.drawable.bar_selector_orange, R.drawable.bar_selector_yellow, + R.drawable.bar_selector_green, R.drawable.bar_selector_cyan, R.drawable.bar_selector_blue, R.drawable.bar_selector_violet, R.drawable.bar_selector_pink}; private int color; private StaticLayout textLayout; @@ -73,10 +77,18 @@ public class AvatarDrawable extends Drawable { return arrColors[Math.abs(id) % arrColors.length]; } + public static int getButtonColorForId(int id) { + return arrColorsButtons[Math.abs(id) % arrColorsButtons.length]; + } + public static int getProfileColorForId(int id) { return arrColorsProfiles[Math.abs(id) % arrColorsProfiles.length]; } + public static int getProfileTextColorForId(int id) { + return arrColorsProfilesText[Math.abs(id) % arrColorsProfilesText.length]; + } + public static int getProfileBackColorForId(int id) { return arrColorsProfilesBack[Math.abs(id) % arrColorsProfilesBack.length]; } @@ -99,7 +111,7 @@ public class AvatarDrawable extends Drawable { public void setInfo(int id, String firstName, String lastName, boolean isBroadcast) { if (isProfile) { - color = arrColorsProfiles[Math.abs(id) % arrColors.length]; + color = arrColorsProfiles[Math.abs(id) % arrColorsProfiles.length]; } else { color = arrColors[Math.abs(id) % arrColors.length]; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Views/Switch.java b/TMessagesProj/src/main/java/org/telegram/ui/Views/Switch.java new file mode 100644 index 000000000..0cf3ead5a --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Views/Switch.java @@ -0,0 +1,688 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.telegram.ui.Views; + +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.PorterDuff; +import android.graphics.PorterDuffColorFilter; +import android.graphics.Rect; +import android.graphics.Region; +import android.graphics.drawable.Drawable; +import android.view.Gravity; +import android.view.MotionEvent; +import android.view.VelocityTracker; +import android.view.ViewConfiguration; +import android.widget.CompoundButton; + +import org.telegram.android.AndroidUtilities; +import org.telegram.android.LocaleController; +import org.telegram.messenger.R; +import org.telegram.ui.AnimationCompat.ObjectAnimatorProxy; + +public class Switch extends CompoundButton { + + public static class Insets { + public static final Insets NONE = new Insets(AndroidUtilities.dp(4), 0, AndroidUtilities.dp(4), 0); + + public final int left; + public final int top; + public final int right; + public final int bottom; + + private Insets(int left, int top, int right, int bottom) { + this.left = left; + this.top = top; + this.right = right; + this.bottom = bottom; + } + } + + public static float constrain(float amount, float low, float high) { + return amount < low ? low : (amount > high ? high : amount); + } + + private static final int THUMB_ANIMATION_DURATION = 250; + + private static final int TOUCH_MODE_IDLE = 0; + private static final int TOUCH_MODE_DOWN = 1; + private static final int TOUCH_MODE_DRAGGING = 2; + + private Drawable mThumbDrawable; + private Drawable mTrackDrawable; + private int mThumbTextPadding; + private int mSwitchMinWidth; + private int mSwitchPadding; + private boolean mSplitTrack; + + private boolean attachedToWindow; + private boolean wasLayout; + + private int mTouchMode; + private int mTouchSlop; + private float mTouchX; + private float mTouchY; + private VelocityTracker mVelocityTracker = VelocityTracker.obtain(); + private int mMinFlingVelocity; + + private float thumbPosition; + private int mSwitchWidth; + private int mSwitchHeight; + private int mThumbWidth; + private int mSwitchLeft; + private int mSwitchTop; + private int mSwitchRight; + private int mSwitchBottom; + + private ObjectAnimatorProxy mPositionAnimator; + + @SuppressWarnings("hiding") + private final Rect mTempRect = new Rect(); + + public Switch(Context context) { + super(context); + + mThumbDrawable = context.getResources().getDrawable(R.drawable.switch_thumb); + if (mThumbDrawable != null) { + mThumbDrawable.setCallback(this); + } + mTrackDrawable = context.getResources().getDrawable(R.drawable.switch_track); + if (mTrackDrawable != null) { + mTrackDrawable.setCallback(this); + } + + if (AndroidUtilities.density < 1) { + mSwitchMinWidth = AndroidUtilities.dp(30); + } else { + mSwitchMinWidth = 0; + } + + mSwitchPadding = 0; + mSplitTrack = false; + + final ViewConfiguration config = ViewConfiguration.get(context); + mTouchSlop = config.getScaledTouchSlop(); + mMinFlingVelocity = config.getScaledMinimumFlingVelocity(); + + refreshDrawableState(); + setChecked(isChecked()); + } + + public void setSwitchPadding(int pixels) { + mSwitchPadding = pixels; + requestLayout(); + } + + public int getSwitchPadding() { + return mSwitchPadding; + } + + public void setSwitchMinWidth(int pixels) { + mSwitchMinWidth = pixels; + requestLayout(); + } + + public int getSwitchMinWidth() { + return mSwitchMinWidth; + } + + public void setThumbTextPadding(int pixels) { + mThumbTextPadding = pixels; + requestLayout(); + } + + public int getThumbTextPadding() { + return mThumbTextPadding; + } + + public void setTrackDrawable(Drawable track) { + if (mTrackDrawable != null) { + mTrackDrawable.setCallback(null); + } + mTrackDrawable = track; + if (track != null) { + track.setCallback(this); + } + requestLayout(); + } + + public void setTrackResource(int resId) { + setTrackDrawable(getContext().getDrawable(resId)); + } + + public Drawable getTrackDrawable() { + return mTrackDrawable; + } + + public void setThumbDrawable(Drawable thumb) { + if (mThumbDrawable != null) { + mThumbDrawable.setCallback(null); + } + mThumbDrawable = thumb; + if (thumb != null) { + thumb.setCallback(this); + } + requestLayout(); + } + + public void setThumbResource(int resId) { + setThumbDrawable(getContext().getDrawable(resId)); + } + + public Drawable getThumbDrawable() { + return mThumbDrawable; + } + + public void setSplitTrack(boolean splitTrack) { + mSplitTrack = splitTrack; + invalidate(); + } + + public boolean getSplitTrack() { + return mSplitTrack; + } + + @Override + public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + final Rect padding = mTempRect; + int thumbWidth; + int thumbHeight; + if (mThumbDrawable != null) { + mThumbDrawable.getPadding(padding); + thumbWidth = mThumbDrawable.getIntrinsicWidth() - padding.left - padding.right; + thumbHeight = mThumbDrawable.getIntrinsicHeight(); + } else { + thumbWidth = 0; + thumbHeight = 0; + } + + + mThumbWidth = thumbWidth; + + int trackHeight; + if (mTrackDrawable != null) { + mTrackDrawable.getPadding(padding); + trackHeight = mTrackDrawable.getIntrinsicHeight(); + } else { + padding.setEmpty(); + trackHeight = 0; + } + + int paddingLeft = padding.left; + int paddingRight = padding.right; + if (mThumbDrawable != null) { + final Insets inset = Insets.NONE; + paddingLeft = Math.max(paddingLeft, inset.left); + paddingRight = Math.max(paddingRight, inset.right); + } + + final int switchWidth = Math.max(mSwitchMinWidth, 2 * mThumbWidth + paddingLeft + paddingRight); + final int switchHeight = Math.max(trackHeight, thumbHeight); + mSwitchWidth = switchWidth; + mSwitchHeight = switchHeight; + + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + + final int measuredHeight = getMeasuredHeight(); + if (measuredHeight < switchHeight) { + setMeasuredDimension(switchWidth, switchHeight); + } + } + + private boolean hitThumb(float x, float y) { + final int thumbOffset = getThumbOffset(); + + mThumbDrawable.getPadding(mTempRect); + final int thumbTop = mSwitchTop - mTouchSlop; + final int thumbLeft = mSwitchLeft + thumbOffset - mTouchSlop; + final int thumbRight = thumbLeft + mThumbWidth + mTempRect.left + mTempRect.right + mTouchSlop; + final int thumbBottom = mSwitchBottom + mTouchSlop; + return x > thumbLeft && x < thumbRight && y > thumbTop && y < thumbBottom; + } + + @Override + public boolean onTouchEvent(MotionEvent ev) { + mVelocityTracker.addMovement(ev); + final int action = ev.getActionMasked(); + switch (action) { + case MotionEvent.ACTION_DOWN: { + final float x = ev.getX(); + final float y = ev.getY(); + if (isEnabled() && hitThumb(x, y)) { + mTouchMode = TOUCH_MODE_DOWN; + mTouchX = x; + mTouchY = y; + } + break; + } + + case MotionEvent.ACTION_MOVE: { + switch (mTouchMode) { + case TOUCH_MODE_IDLE: + break; + + case TOUCH_MODE_DOWN: { + final float x = ev.getX(); + final float y = ev.getY(); + if (Math.abs(x - mTouchX) > mTouchSlop || Math.abs(y - mTouchY) > mTouchSlop) { + mTouchMode = TOUCH_MODE_DRAGGING; + getParent().requestDisallowInterceptTouchEvent(true); + mTouchX = x; + mTouchY = y; + return true; + } + break; + } + + case TOUCH_MODE_DRAGGING: { + final float x = ev.getX(); + final int thumbScrollRange = getThumbScrollRange(); + final float thumbScrollOffset = x - mTouchX; + float dPos; + if (thumbScrollRange != 0) { + dPos = thumbScrollOffset / thumbScrollRange; + } else { + dPos = thumbScrollOffset > 0 ? 1 : -1; + } + if (LocaleController.isRTL) { + dPos = -dPos; + } + final float newPos = constrain(thumbPosition + dPos, 0, 1); + if (newPos != thumbPosition) { + mTouchX = x; + setThumbPosition(newPos); + } + return true; + } + } + break; + } + + case MotionEvent.ACTION_UP: + case MotionEvent.ACTION_CANCEL: { + if (mTouchMode == TOUCH_MODE_DRAGGING) { + stopDrag(ev); + super.onTouchEvent(ev); + return true; + } + mTouchMode = TOUCH_MODE_IDLE; + mVelocityTracker.clear(); + break; + } + } + + return super.onTouchEvent(ev); + } + + private void cancelSuperTouch(MotionEvent ev) { + MotionEvent cancel = MotionEvent.obtain(ev); + cancel.setAction(MotionEvent.ACTION_CANCEL); + super.onTouchEvent(cancel); + cancel.recycle(); + } + + private void stopDrag(MotionEvent ev) { + mTouchMode = TOUCH_MODE_IDLE; + + final boolean commitChange = ev.getAction() == MotionEvent.ACTION_UP && isEnabled(); + final boolean newState; + if (commitChange) { + mVelocityTracker.computeCurrentVelocity(1000); + final float xvel = mVelocityTracker.getXVelocity(); + if (Math.abs(xvel) > mMinFlingVelocity) { + newState = LocaleController.isRTL ? (xvel < 0) : (xvel > 0); + } else { + newState = getTargetCheckedState(); + } + } else { + newState = isChecked(); + } + + setChecked(newState); + cancelSuperTouch(ev); + } + + private void animateThumbToCheckedState(boolean newCheckedState) { + final float targetPosition = newCheckedState ? 1 : 0; + mPositionAnimator = ObjectAnimatorProxy.ofFloatProxy(this, "thumbPosition", targetPosition); + mPositionAnimator.setDuration(THUMB_ANIMATION_DURATION); + mPositionAnimator.setAutoCancel(true); + mPositionAnimator.start(); + } + + private void cancelPositionAnimator() { + if (mPositionAnimator != null) { + mPositionAnimator.cancel(); + } + } + + private boolean getTargetCheckedState() { + return thumbPosition > 0.5f; + } + + private void setThumbPosition(float position) { + thumbPosition = position; + invalidate(); + } + + public float getThumbPosition() { + return thumbPosition; + } + + @Override + public void toggle() { + setChecked(!isChecked()); + } + + @Override + protected void onAttachedToWindow() { + super.onAttachedToWindow(); + attachedToWindow = true; + } + + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + attachedToWindow = false; + wasLayout = false; + } + + @Override + public void setChecked(boolean checked) { + super.setChecked(checked); + + checked = isChecked(); + + if (attachedToWindow && wasLayout) { + animateThumbToCheckedState(checked); + } else { + cancelPositionAnimator(); + setThumbPosition(checked ? 1 : 0); + } + + if (mTrackDrawable != null) { + mTrackDrawable.setColorFilter(new PorterDuffColorFilter(checked ? 0xffa0d6fa : 0xffc7c7c7, PorterDuff.Mode.MULTIPLY)); + } + if (mThumbDrawable != null) { + mThumbDrawable.setColorFilter(new PorterDuffColorFilter(checked ? 0xff45abef : 0xffededed, PorterDuff.Mode.MULTIPLY)); + } + } + + @Override + protected void onLayout(boolean changed, int left, int top, int right, int bottom) { + super.onLayout(changed, left, top, right, bottom); + + wasLayout = true; + int opticalInsetLeft = 0; + int opticalInsetRight = 0; + if (mThumbDrawable != null) { + final Rect trackPadding = mTempRect; + if (mTrackDrawable != null) { + mTrackDrawable.getPadding(trackPadding); + } else { + trackPadding.setEmpty(); + } + + final Insets insets = Insets.NONE; + opticalInsetLeft = Math.max(0, insets.left - trackPadding.left); + opticalInsetRight = Math.max(0, insets.right - trackPadding.right); + } + + final int switchRight; + final int switchLeft; + if (LocaleController.isRTL) { + switchLeft = getPaddingLeft() + opticalInsetLeft; + switchRight = switchLeft + mSwitchWidth - opticalInsetLeft - opticalInsetRight; + } else { + switchRight = getWidth() - getPaddingRight() - opticalInsetRight; + switchLeft = switchRight - mSwitchWidth + opticalInsetLeft + opticalInsetRight; + } + + final int switchTop; + final int switchBottom; + switch (getGravity() & Gravity.VERTICAL_GRAVITY_MASK) { + default: + case Gravity.TOP: + switchTop = getPaddingTop(); + switchBottom = switchTop + mSwitchHeight; + break; + + case Gravity.CENTER_VERTICAL: + switchTop = (getPaddingTop() + getHeight() - getPaddingBottom()) / 2 - mSwitchHeight / 2; + switchBottom = switchTop + mSwitchHeight; + break; + + case Gravity.BOTTOM: + switchBottom = getHeight() - getPaddingBottom(); + switchTop = switchBottom - mSwitchHeight; + break; + } + + mSwitchLeft = switchLeft; + mSwitchTop = switchTop; + mSwitchBottom = switchBottom; + mSwitchRight = switchRight; + } + + @Override + public void draw(Canvas c) { + final Rect padding = mTempRect; + final int switchLeft = mSwitchLeft; + final int switchTop = mSwitchTop; + final int switchRight = mSwitchRight; + final int switchBottom = mSwitchBottom; + + int thumbInitialLeft = switchLeft + getThumbOffset(); + + final Insets thumbInsets; + if (mThumbDrawable != null) { + thumbInsets = Insets.NONE; + } else { + thumbInsets = Insets.NONE; + } + + if (mTrackDrawable != null) { + mTrackDrawable.getPadding(padding); + + thumbInitialLeft += padding.left; + + int trackLeft = switchLeft; + int trackTop = switchTop; + int trackRight = switchRight; + int trackBottom = switchBottom; + if (thumbInsets != Insets.NONE) { + if (thumbInsets.left > padding.left) { + trackLeft += thumbInsets.left - padding.left; + } + if (thumbInsets.top > padding.top) { + trackTop += thumbInsets.top - padding.top; + } + if (thumbInsets.right > padding.right) { + trackRight -= thumbInsets.right - padding.right; + } + if (thumbInsets.bottom > padding.bottom) { + trackBottom -= thumbInsets.bottom - padding.bottom; + } + } + mTrackDrawable.setBounds(trackLeft, trackTop, trackRight, trackBottom); + } + + if (mThumbDrawable != null) { + mThumbDrawable.getPadding(padding); + + final int thumbLeft = thumbInitialLeft - padding.left; + final int thumbRight = thumbInitialLeft + mThumbWidth + padding.right; + mThumbDrawable.setBounds(thumbLeft, switchTop, thumbRight, switchBottom); + + final Drawable background = getBackground(); + if (background != null) { + background.setHotspotBounds(thumbLeft, switchTop, thumbRight, switchBottom); + } + } + + super.draw(c); + } + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + + final Rect padding = mTempRect; + final Drawable trackDrawable = mTrackDrawable; + if (trackDrawable != null) { + trackDrawable.getPadding(padding); + } else { + padding.setEmpty(); + } + + final int switchTop = mSwitchTop; + final int switchBottom = mSwitchBottom; + final int switchInnerTop = switchTop + padding.top; + final int switchInnerBottom = switchBottom - padding.bottom; + + final Drawable thumbDrawable = mThumbDrawable; + if (trackDrawable != null) { + if (mSplitTrack && thumbDrawable != null) { + final Insets insets = Insets.NONE; + thumbDrawable.copyBounds(padding); + padding.left += insets.left; + padding.right -= insets.right; + + final int saveCount = canvas.save(); + canvas.clipRect(padding, Region.Op.DIFFERENCE); + trackDrawable.draw(canvas); + canvas.restoreToCount(saveCount); + } else { + trackDrawable.draw(canvas); + } + } + + final int saveCount = canvas.save(); + + if (thumbDrawable != null) { + thumbDrawable.draw(canvas); + } + + canvas.restoreToCount(saveCount); + } + + @Override + public int getCompoundPaddingLeft() { + if (!LocaleController.isRTL) { + return super.getCompoundPaddingLeft(); + } + return super.getCompoundPaddingLeft() + mSwitchWidth; + } + + @Override + public int getCompoundPaddingRight() { + if (LocaleController.isRTL) { + return super.getCompoundPaddingRight(); + } + return super.getCompoundPaddingRight() + mSwitchWidth; + } + + private int getThumbOffset() { + final float position; + if (LocaleController.isRTL) { + position = 1 - thumbPosition; + } else { + position = thumbPosition; + } + return (int) (position * getThumbScrollRange() + 0.5f); + } + + private int getThumbScrollRange() { + if (mTrackDrawable != null) { + final Rect padding = mTempRect; + mTrackDrawable.getPadding(padding); + + final Insets insets; + if (mThumbDrawable != null) { + insets = Insets.NONE; + } else { + insets = Insets.NONE; + } + + return mSwitchWidth - mThumbWidth - padding.left - padding.right - insets.left - insets.right; + } else { + return 0; + } + } + + /*@Override + protected int[] onCreateDrawableState(int extraSpace) { + final int[] drawableState = super.onCreateDrawableState(extraSpace + 1); + if (isChecked()) { + mergeDrawableStates(drawableState, CHECKED_STATE_SET); + } + return drawableState; + }*/ + + @Override + protected void drawableStateChanged() { + super.drawableStateChanged(); + + final int[] myDrawableState = getDrawableState(); + + if (mThumbDrawable != null) { + mThumbDrawable.setState(myDrawableState); + } + + if (mTrackDrawable != null) { + mTrackDrawable.setState(myDrawableState); + } + + invalidate(); + } + + @Override + public void drawableHotspotChanged(float x, float y) { + super.drawableHotspotChanged(x, y); + + if (mThumbDrawable != null) { + mThumbDrawable.setHotspot(x, y); + } + + if (mTrackDrawable != null) { + mTrackDrawable.setHotspot(x, y); + } + } + + @Override + protected boolean verifyDrawable(Drawable who) { + return super.verifyDrawable(who) || who == mThumbDrawable || who == mTrackDrawable; + } + + @Override + public void jumpDrawablesToCurrentState() { + super.jumpDrawablesToCurrentState(); + + if (mThumbDrawable != null) { + mThumbDrawable.jumpToCurrentState(); + } + + if (mTrackDrawable != null) { + mTrackDrawable.jumpToCurrentState(); + } + + if (mPositionAnimator != null && mPositionAnimator.isRunning()) { + mPositionAnimator.end(); + mPositionAnimator = null; + } + } +} diff --git a/TMessagesProj/src/main/res/anim/decelerate_cubic.xml b/TMessagesProj/src/main/res/anim/decelerate_cubic.xml deleted file mode 100644 index 053d6d201..000000000 --- a/TMessagesProj/src/main/res/anim/decelerate_cubic.xml +++ /dev/null @@ -1,3 +0,0 @@ - - diff --git a/TMessagesProj/src/main/res/anim/icon_anim_fade_in.xml b/TMessagesProj/src/main/res/anim/icon_anim_fade_in.xml index 8def03b7e..34fa70643 100644 --- a/TMessagesProj/src/main/res/anim/icon_anim_fade_in.xml +++ b/TMessagesProj/src/main/res/anim/icon_anim_fade_in.xml @@ -1,21 +1,7 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/anim/icon_anim_fade_out.xml b/TMessagesProj/src/main/res/anim/icon_anim_fade_out.xml index 85c91287b..915208c6c 100644 --- a/TMessagesProj/src/main/res/anim/icon_anim_fade_out.xml +++ b/TMessagesProj/src/main/res/anim/icon_anim_fade_out.xml @@ -1,21 +1,7 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/anim/scale_in.xml b/TMessagesProj/src/main/res/anim/scale_in.xml deleted file mode 100644 index a0aa6293b..000000000 --- a/TMessagesProj/src/main/res/anim/scale_in.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/anim/scale_out.xml b/TMessagesProj/src/main/res/anim/scale_out.xml deleted file mode 100644 index 11135b976..000000000 --- a/TMessagesProj/src/main/res/anim/scale_out.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable-hdpi/broadcast.png b/TMessagesProj/src/main/res/drawable-hdpi/broadcast.png deleted file mode 100644 index bd523d0c1c8621300f800b30a0a3cb0fda70e11e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1143 zcmaJ>TSyd97#>nglr7T~m7v2EWYo@0cefp!+L;~AjmEZht3`TncIN0#I+tdS?J7Zb zAuOmMdg!fs^Pvk-WEZH1ERrCk3q<&mPeDW!K}8UqG1q!%8<;ugKYZW!U(cLKc5e+- zHCGV?5lD2&DZJMDZ)FAk?tXT94_=y3M+WuS{V1=xkPvk{3qitE2Ve@S`pEui*iH~- zq>;{`jIy2AY?D%b3{@~4%qEETEd@u_1|b4jIAB-;`SIQZ5*WHb?g=T3;>2Oj=o)ol z&uDjA8y(c5I=N*tXfN+*Q-AJZh5hoC`${2f$ANrJfTLJ*>u zpvHt55N0X1wJj2fYy=#`GBm@{EEi-Wd@IK@3|M$b?9J8t`IOwb;0s#$07zref^mhuTvnXqM z3uVFuqYJ7-vlQc}R0Jx@|DmS2i1ttl{)zXW!d`mBfpiLb_OPqr#`Ul9T{(Q*g(|Y$ zv~3R+tC-B$$o6u!1L8d)ps1Q*`Sv_sQTT-AA=T1gLKaA@KpBS4Gn^!cB}rnUT!>{m z+Qg1XM2t!dBZcB&PLzvW+17?lXrUrk|HF-!)Tp9;M`;Gmp(ZwS?J^praY_YL8_|U@B?&7iDH1;@*uf+R=ET#)@vNtCu z2S8mT@u>l9uAUM%>dj;zBsZTNIsb%_SB`&`0%K*Vz*%DML+tWtN<1mvjUB8VKXpA( zJDB8ZR+nX?d#hrHuPmAJ#xg4|ND`sX@Dn%IFWLT*Des@5_ceVP@2z;1d|r|YM4?vBH+o3_=py$jWR>~!l}8@^Y5(T{GpcI8+@=4aQ{ mc*WMS+qL@|TUzcD<&DJJZ!OfaGc~jRuOQLUEnk)Tj{E{6nQ({z diff --git a/TMessagesProj/src/main/res/drawable-hdpi/doc_actions_g.png b/TMessagesProj/src/main/res/drawable-hdpi/doc_actions_g.png deleted file mode 100755 index 1b0aec5a9219643ce06b7843f800fae7fbef6301..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1010 zcmaJ=&ui0A9DmOFV{>DAn{}ZlGin?$&1OGO?U9H zi|9!Z@!~=7CDT82;?2SieSmJ)=&jmPUrRqlmp->=T_^a zZeG)D?C}=E@Ua(AHUPP~II!$>MBpk~bA6rLfAf}uuA_4`#T3n;h??%=W{8$Im#X&W zx}9~nxhpUiYgE8P#DcNc@*^$Qxvs88_slGCunQsUI(HCM-7Lc*4iQxNRMHkD392eD zr4?0`W}z%fvLMo1O-gA^Q8hUOdlyH&g-%1O7z;gL^rUl5LIOu{k9uXI1ruT`5F}n? zDfNM-`G2VA4bTy(pu>3oDI8Th0TL=G!W*GY8`nrMSAkXxkwtJ=#kke4V!4S4j+!`t z#bp&p59QWD1PVj&F2^P@UNBG-*?|L1DJgjOo4BO?T2SZ04QGs npgNWqrS@m1jNOzh^ZC diff --git a/TMessagesProj/src/main/res/drawable-hdpi/floating3_profile.png b/TMessagesProj/src/main/res/drawable-hdpi/floating3_profile.png new file mode 100755 index 0000000000000000000000000000000000000000..02c6d52452cc762fadd4d5054eef8561f77c82d9 GIT binary patch literal 3795 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 TQdqsT`I~8FZil~R<`exd5&o)o literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/floating3_profile_pressed.png b/TMessagesProj/src/main/res/drawable-hdpi/floating3_profile_pressed.png new file mode 100755 index 0000000000000000000000000000000000000000..8a0d44a890ac31c72d8eacf04ceb6ab052f02266 GIT binary patch literal 4148 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 UF00pW?)}G`o7fmvoN>GHA9X)-=Kufz literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/floating4_profile.png b/TMessagesProj/src/main/res/drawable-hdpi/floating4_profile.png new file mode 100755 index 0000000000000000000000000000000000000000..69e720a6912eb834de161e9cd15c2706d17e220b GIT binary patch literal 4136 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/ic_ab_attach.png b/TMessagesProj/src/main/res/drawable-hdpi/ic_ab_attach.png old mode 100644 new mode 100755 index 20722afcc07948dda21cefb3b9ff64d3886b9b40..c7da348aa96f9929dc143738f18c269f4951f0a4 GIT binary patch delta 985 zcmbQp+siw_lTm4-*9}JY@XWlF{PN<-+Dx(v#%9I_mIiL7W)?1HhK8;tmQE(d7EaEt zriLblCMM=4lQWoPV2aFeDq6y1pb0g}7?&a?h2oN+)HJJ<$%Rb9Fe6QHsh(`W>{MT% z*Wbv%z|83B;uunK>&?u@(%B9?ZH4h{1?nr@4+x8>bv))wU`}tk!0DmR5qrQwcm{9P zT!niI_YPcr`tnyuWPyy#gFVOhE*Fak8R35@a~|}pBy*VZ`^M-+|4_`{RJa${Xe#EO~<{z)wbNdEB#pYvO=8~Af4DY(|eptc3q5S zXf!vssLOHtF2y;^1+aiBl-%X zTor5X!o((_NtJ#xg8p(ebYBk9I4CdsQ1os6hN;gMK2H}^wkh5HP9@Y=Ypv9S|DWg0 ztljZ%>i3+@_oEsZ=9?YRju8&4*qkRYuRZjYajzTCJ_YVwIUY+(;uY3OGsbP@lnrN8 zJ6%vw`*SI5A5cOsK5HZ*|P#|7o0e(mdXG7&5o6l zu?MuHr#Rc+`J~ry?gQJNfTY|7$>}HEE^{6T@=rYD-K~7fdYfeF&5R=c8SZtO*)tbE z_%$`qkgaC9N!Ra2)6*7=GrvX%Sl)oya@ElTl@(*9}Ha-^Aq1ypsIljLDizvN1*`=57X#j^;*gmKKJFuEtI#mgbHo zmZqkTZWe}?Mn*~s6}bhzzE&>z$)&lec_p4Mwn{(|y_C!pE2v%zTzV%jVlsePV2VqT zl0tDwP->c03T_L`aOs__$Lv(kw_wIe1_owkPZ!6Kid%0YPfxsUz_ZnMXL|8jRlBD; z;Q}k0wpt5Ve+Uy;%9N`Wv6LxOdxI56@!6Bh=gj4jF7~4d9D1`k=n0s`vaAZ&eA^{h~~4C+4+!G5zAJS4(*N zY^U1mZw^Yk%Q%)wnDyE;+I@C)Xn42P{Zg+)(^pfQ2P|<4$=7NWpZqM;ViHV~maeFOJd=5aWyyU<cv729&BZ>%l&!3=EP}sL5J6cA2F@m33*5yWf;Fe4baOqImU932zvp^{{I~rd=ADk&@QO2TYs2*lHLHW>&)E)s-VmgC zIpfR$@h1+`byrR~$NFfe;DPMv7e1g~<5S5EtJ=IA-*UPhls zpx3Bt;w6a&@#>@`q#_wMl-ulmLQMzpE7boI$uzIo3 zk95mDwjU(b^|=x`KJ2S!xi;8+Y^wKyI|A%6K)5Ot`OW6+w^KJn@ClD&C9?`4WSZ{$5~aphH~!zWcUrx#+W k|K?Sw83^wv{;7O`A!%_~E<+(hCIb+7y85}Sb4q9e0K&htMgRZ+ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/ic_ab_doc.png b/TMessagesProj/src/main/res/drawable-hdpi/ic_ab_doc.png old mode 100644 new mode 100755 index 30ff62d1950c420fb60b7b32b2918365668d417a..25e2c036b8ced1fc5047fbfbc10bc75cd61d6806 GIT binary patch literal 1110 zcmaJ=T};zZ7_AV2pe$u`9aYyQO!rmrW}U_6o3RWrwpkEmkUtqx*VRH+cZV4L(pJ=`khoN-a&?; z4oI)VZ5N#kL$a)c@pxI5IYPRejEi>Sm$fq<&dYKxA6a-P98H({xdb0A#KNlpl}1S8 zXgZtCIF*;b z+J>xZ6v~7PM&|^LW*koQNJU^g{(q>VY@iL40DtoRr?8P6(EyzQ2F&OpZd`wZ8A{{A zIuH=llMoIStJsl-2pVaqk>O63v~|m>1hdBBb$mR|#Z&_cst96yfWit6S(Z2^=wy9v zpNDPa-3$})gd)LEw9)J1!+yr=3%QD19*P+SsHn)5{&2k|xuz8q4M*mIE}sTcREG+= zeq>HAor|laUV$r>&c$7lOXFl{v$20Qy10eiV@@}0ix(Tl2P$^Ej&1$y%c(AWC0@k% zU^4fv@8{ZD^P}Ffwyon^FL4vwdLJG<(be_DGI#e}qh(@qtLM)4iGAM=e_CFq7K0s6 zmnJ{I&fDG}TeMwlcvN3G`s2{l?EEsh$yJAliE`WUPWz7Umg9Aig`Vi`+4R+w=laf@ zFYBkQkt<`92U=b)%su&No7xi9&y|nb{F@%HN++#S*_qJp%Wqd_Ew!0f^W#ygXZhNR z${MQj?Dd)Z`=1TJ3e|GyqyCkd#GIv}c~`h%X}Y?ndQZ#K^HD2bPgFUHp+$S}#v4o6 Oyy>w>JAW(GJN66vkZ0up delta 858 zcmV-g1Eu`d2=fLpiBL{Q4GJ0x0000DNk~Le0000m0000m2nGNE09OL}hX4Qo1ZP1_ zK>z@+$TtOw>5(BQe+5ZIK~#9!?3pW*+b|G-lT1liLk&-?fi(@gz|eyUynoQ&5gM36 z!yde{9CV>!3RM`GvQ&FrbvAozSyE)XH)G9cE@wOPw-4<@8DB1!(R&_~(K{c50D}NG zjt{pkkY$Sh(ccQf-vw5)%txOVU)v{KJY|{XX0WC-K#SJlmK5utn)%Xf9h%z!)91J z;K4GVQAlw7e+og*f)y&G`7=hRtP2akOCCu$tQhtrkMb1MBaI1-T0*kUh$g*c0uXrn zl9K?>^FYa#`RG_*5yhO63LwA(^xgq4<$;X3mS*>9e*&vgTVT!LcdRgL$^+c>N?Jl2 z1?432oSG`rNuc&=D3stI1K~BgmtB9(6!0zCCPw(26c zzHeqye=Z5>i@h5f04Dw_xx`k8+1&N^BrNhZg5je&vKsiE5X*TxS&(EVCBkhed~63v8CGLc40QL*vLYkUREuhI^lhnf=0-Ku71*q7jZ2NF4xd8MKYHqBs!Q4Q{q9Gb3 zA3?Pcc1#;~`A9*(U_AU% kAU_B&2rvlH>-ZzU005y{nwQZ0>i_@%07*qoM6N<$f^AQL!vFvP diff --git a/TMessagesProj/src/main/res/drawable-hdpi/ic_ab_done_gray.png b/TMessagesProj/src/main/res/drawable-hdpi/ic_ab_done_gray.png old mode 100644 new mode 100755 index 1cd56af3f14ffbc8b7423f1d5cabe5f392a1fe08..99240881de729f0149fd9ffd73b92c84546862c8 GIT binary patch delta 585 zcmbQsHJwwjGr-TCmrII^fq{Y7)59eQNUMM_2OE%l$S`BZL`4lorHNjBs>Zs>28Mucqb zpIn-onpfiKVygrc(M!opv4ZM##-(@iYbFB)s3J?8itL$XV2T`ZDynC8s^9;wc?|;t zBe$oEV@SoVH#hA0nhZqP3Jl!teo>2aRR8b7E-W5?{(zoJ-yNs$iOLls>mP>fS2I=g zjn?>}(OG*^yn^}3bg?)N#bliq!MsiLrm|N~U=O^$;U(`PjZJ$~nq($g=U*}@-Q^@R zS=n5rY;UUl8LuzmDG#|+k}FhCoUUi}XfNE98YYo7!L&^%gxi^QRqsLu(?b&KrfMJf z+Kr12nfxtjytq!lpjt-m1mnpI{ksp$*p}1RbL8hXma9^3+=s+skNP$DvVozA zg1M!hp{b#Xg`tjuk%6JHzJam6p|P%^k(Gg^m7(dxza^7rF{Vt;V$`fJ@b$IwFUm~M z%uCF1$xklLP0cIubg@;c$Su%I$xN{_PfkiSNHj^(HA^wH&^574wA4*ZGBVOlH8C?t zNw!EfH8eC-QUIz3nuAThv4N?fvyrK@n~|Zbp`ojhqmiSTlZ%^^nVEqhki+OUS&K{G$$`&GDtBqNi#__HL=jOFf+8&H8D*|*0nS+ zO4Bt?F-SHwO|&pEvNTarC@u*~O|wcN({q#cn4RkDpIenOFfclJx;TbZ+&XjJ(CdhU z$gz)xH@()dd}NE(X?mcTb5!kU75DCj=Y=;#%EAuG9dOzpzQ(4Z)ok^V_a}L54&@k4 zezT{N|KEl)X7-zIo_w+(H(J=JG*24)7f-_>mYQkq`_6E1_NtDnm{r-UW|O*<0K diff --git a/TMessagesProj/src/main/res/drawable-hdpi/ic_ab_fwd_copy.png b/TMessagesProj/src/main/res/drawable-hdpi/ic_ab_fwd_copy.png old mode 100644 new mode 100755 index bd84232acf88d0d6543a8a76470b5ad33df80888..64ed7cd057e5c8f456708857138a4c114eb081ce GIT binary patch literal 1162 zcmaJ>OK1~87~Uq>7HMlx@lhWPt3@r%ZZ=IfW^G#2Y|}=X+NMzh9(1!iZI*U-*4;_7 z4G2CE)QcVzJV|{ZdJ*)XsGtX1@qw?4g7hLD6ct4jJ+xS7Yg0WKmz|xNpYQwrfByfU zJ<`+NQ9ZwQK1EU0@lG*G=C#hKEGOUB)TvWsT8`V(xDWN?yktTuqM!@}aZMV4Nhm2J zdmg}MigMFxDvi^LEkbW6B~0&VO862+ z6lT@Vf(iQy-6^>+D2EifwFNZW0uj(4mVm7d>6T!J=^0&ttQ|8;gBb`O4AZ}ZN+)_i z6qyh-F^yi?$8mt?87|Po^IQY)`#3-ABQNje0zwln_=8~fp@}zB=@*h>Y}Oaqh3PED zhQPAlrMHpFGWPoTN57zHcbp_?E4Kw&eLWt`YmUJ1$#V}127*$mSJ`&`k z92ep@ij5rC9%v&Y#zi?X*d7f8{h=aPL~>4pIxcdRKio)3uG0#dK|G7lREMDwGm!>n zjx4C9V+oejo8>B{W7$}e%aUMNr?7t&x@aQZ<1FXemTcx4AL^vrP14qzZYv$+O8ktA zk(B)^Gc`TkdUv<0;hn3luI}pQ`pU!eE-4-EmItR#ub!xJ3HO$CY84s1zHoE@;_
2;4Hfroon zjIN&A+I`|V{bL?=WxA6xp`8+@@ub;8*+_q(BwCt8ex7`aT*&8*k+{daj9}D&6_eacg z4GRw6Nrr}BP+zuRZL3VTtSXD0EI+=y>(J$IyR!F(#$TN5UpW*lP-W%R%bolO`I`$k Oe}{N`w|Kd2_kmxtM1M~J delta 244 zcmeC;oXDiu8Q|y6%O%Cdz`(%k>ERLtqzyorgAGWAGyQCzsHk4gu-VhaF{I+wo0;Bx z4GKIiYd;>F(`>AqceP`oZpWT=z9mNcnt;tYKhixXGB4FDEqd!Cys7US*+Q zYg^{6IQQw&9(xn^1e?I!oM+S(UzcckZkXb?GQy85}Sb4q9e0NGhxSpWb4 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/ic_ab_fwd_delete.png b/TMessagesProj/src/main/res/drawable-hdpi/ic_ab_fwd_delete.png old mode 100644 new mode 100755 index 6fbbd124247fc742ecf1d46b28ce8b55ecaef7fd..9af1eb095f404ec88f218b6819fb8a6cbb86b593 GIT binary patch literal 1100 zcmaJ=Pe>F|93C@VTht^Aa@Cy1hzfUSXa9`uV~7+?t*)WaCYYDjym(knYZm~ z5S3vD7G4bTAYvZs5?)Ivp;L#TLlD#{s7oLrVs!}Yjk?;QZJ3$&hwuA-zxVrn?|!tW zv)t~m69iEn>EdH}JY#*OCHViDn47~xH3}tB91ftYXaJ&3hABWsRB;f*fGCfRz5y)+ zQA{a`BuWb1oCH;uXklDARmW_CXlc#qqBIN;nF51~7NowfzM@D)4pM!7!7b<=Agy$b z8z4U3laR)TrGQMeULsp^92QUk63Lu8qM2MSNbTrycy4Xe6uARI!$E2{siY7kJD>qb zzsu{C+zdmqtc&saS(a%eJ#NNByYb6986W3oIZqS0_fR;RArEjdKD-wTuYyz>A)TY? zY&Pr4dR@>Mq?terZD_Y9_Bb z9GQ1dCc<^TZ;MxK54iOEw#OBY<%*^7#h>;5I&|A!!SxEZuSFYu_S((rp^~lfy0yud zWi$4YRNJw-%~Mk!h?-x$_vEIu@6*wMt?2Mc;zr!}2rTlY*8PrzdiZDU{dfKVqlQ~A delta 591 zcmV-V0{j7ep$ z2Zp~Na#q2*!ke)O_DB5gH8?EAe+)?0mfm;4Am%$0?6X~(C6r(X;3MYxHrTKsiM@pD ze(91p!KOLbW<*p|wIh+W3ZVMXI$j0~U>3}QsS$rpPG7(qzutpe#M0F+0D-UJWs3t> zZ4clSF?F=$fcPu=yPARzOYvT0Z&8}WqGHBG(N(CNXCbUj+Ws#%33V8ae}5LFNX$%C z2y2w8%?enOs!*2YMb4kWBe(;dw3SHYJxp=J)xac|QKG@rm;vK6pG+722gdgS1l_>z z{Fu{d`YDk7%j4?aiFe?P^5+ITfpFZ*#7*6$sk4yxPyKG?e^^mHQ>Rhor^>A3R!!ZhvI($$20Tpytj__@_8IViwb|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?*~Hw~(8AQ%%)-Uc(9qSy(#g%x(#62l(#6!- z(a6aarq?AuximL5uLPzy1))&99}&+Iv0z5o92y_qJl*JHI>Z!e7y zXt(@VT*nSD zRxrFyIMmi7So*+1hVS=Vj@~Ab8;?RidU%;$4H61+zR5MUS>ndoWYtZX3phPk*JiC? zdQ;phVzp07V~O5fHE|W0Nee63jV*rqyK0;8|B{(hx$rFG%pDr3cXgh)*aU8FIkRvD ze<0U&nO6_4STRl5X^`D>CEaRsMTFFxX6+9rjD3sOuVS&Qo916o-{t-2+M3|(gmW&B zX7V4G*#0k^`=wr^fNx5JdQ#Q2uSMSfbIn#KOkVnl(<;LK%)H5(CO;qBpL%PQ|DT`J zbTjX=HDTB0DyHrEf3LCd0^>K8lWRWgOrQEJU-4AAWCWA0jkKha)%B-3|F`idrfNbAGYLVf`9Q{|ys(FI>yYK6>8Jb>V-tFPaA!_+nB+H!&_>2r3Fa MUHx3vIVCg!04mG&sQ>@~ delta 559 zcmV+~0?_^U3dsZ^iBL{Q4GJ0x0000DNk~Le0000m0000m2nGNE09OL}hmj#Ce*x=B zL_t(|+U%K2O9L?!g`Kp%kfP$kg@WP(aiJoLx+(ZVT)6Ou`0L#0!WKcng@~vHaZ%8P ziW^<1-~${_hAgh3jFX2=iU}OT+)k78WpXpOG>YT6sgYY000KY&2mk>f02mDrMOklc zh323G8Z@1s)p@}qZjGDPN50)ytzZ9r`#d<;E7YqUCmcEsYW(;=Wf1&~vy{F}eL!hkc-2)TZQ zZlF!5pTsNBbB(xao92svh1*MmU>R4xfNntwm!V;3ki_0au{I<=Gi_7Qe`;F6m^BBM zpk{J?1>Hf5(tU@}2efQ4ClUy40MPRl9wnhqXkR>$0*OCBXV5IvX*sbc;iE$tKqT&p z6h4Algi+c`0%+c{`Q%VQ9=z&20dBHOO578%Md)`gpnI{U@_%6dQu!3Z>bKWO+>$tn z21x8pB(A*GOxqW>QLp{nUXtdY&T0I+Jl-fv=F xclAQIKdLp;`NJO^0U!VbfB^8X0lozo04jCExdZb?^8f$<07*qo1w^hwV1icf^-ur+ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/ic_attach_gallery.png b/TMessagesProj/src/main/res/drawable-hdpi/ic_attach_gallery.png index e8d2478306b0c0bc795e3875e4ae645e846b94e7..1c60351cba0a88777282645de89328a6df77fbb0 100755 GIT binary patch literal 1248 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?+{oC;*u~M@%)-Uk(9qSy!qmjV$F! zNq_$Tw?CY~)U%jRN{mlSQ!|kzXrIFx{v&5Xwtbcth-Y|o*5S|o<;&S!C$Y9CUt=s} z=w(i37GQ6bY1KK=;<`{@R^~9n*2CB`sq{k}biX+hA z(hCKp0agO>(mH&zxQ=XYun_6kfAO$mcf$`;zMaAjF)XRgP8zeX@mcX4IeDS%jK0av z>lXqX#o`%`aA!VU@Z3R$E$881#z)E*N|>1I8!ebR<|ka7?&?*gbj`7TL0=`KFvBLt zeeGNAvl}Yp`S#xT@bo`owSq@V>%{_@4(`SslN;(5T^2Uvi{dTuu{YyfV6oz$9pm2E z9%g~5^EfPDSP7^HZuC%?F)xBcVgcuo`Hi*{8Fg3wzqoPP5AU94y$cr|pLZ5sNXt;~ zyOzK!kgvK_`z`ZZbHmFDv(7ooHeZ}7C;L~TRA4EC!U2ZJ>|BpxuUYp%Wsaw-pUXO@ GgeCy+_n_1O delta 408 zcmV;J0cZZ;3A6(-iBL{Q4GJ0x0000DNk~Le0000j0000j2nGNE06H4tng9R*1ZP1_ zK>z@+$TtOw>5(BPe*s2GL_t(|+U%JVO5K4=)n>x6QAZ{)Wf_2E& zxl_SK5X3?J7%XJ9lRw4(6rTgP5=td$wB+9MzVHx8F5$^JkCly<^{jPNMy@B$lNNl&Qoc&yS-Q1?O_;VmcJ&KbH7 zeTWLK<9BCS=|KVEQEWEp=8UmT#SlK=U{=!YDerj$7Zc9!z`g6*9<0GDojmd7i`dId zg*L-n!zY}MUX5F}2SNPuU-yV5W1^4n3|BebvcmNcw@$pVXH2V-wye4rvuHZdK>n^u z=`uNo%@9|4$6A_7TGEo1^iLxFl9RNgC0#1t0t^5jy*R3an=v&20000|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?!r08w+0ekq%)-Uk(9qSy(#hP})zr<&)XmM& z&C$>Trq?AuximL5uLPzy1)4hbZ=6+Cv!6w_#HElf1n^*K5H*|KH)QY$ik#qMBkKC}D%zUupDSkATDr&m1RW4yom-tPGI zdh^fE|1m!*mUo4W!^et0HqZFF7D&I?R8s3Ce<9msvWH6D6j6=|49^s$+{9xK*)Kk> z!FeP8eq%%CfisKr`sc>E)H>9D=jE7DJVUkQ^oOez+Ez><=X4Dg%rwYkRF2~4{Slc#d9t16mzxa%H1q&%@=8ich^6a?Rm7;QF=jDYkv5{ z+s0>Ja(xMXxO>%y*x(-(X!z?Gwxn-nZyZr4Di?@&Ld-E2ViA&6liE@~H;`6>` zF2a_})--B-G(WS0-yzv5THx;0f0Cyn5Bw3Sz07%qX_EILZtexok9zmWiweEvv@&S; z*)i`GTQ>8_=kmr3T`%+Ed;Mh3cxN8{_9(-fx%jsCzXr#C_B+>?9Wo)7N6P3{7d}+L&L<&E57?(JO(OdJzf1=);T3K F0RVxFE1m!V delta 717 zcmV;;0y6#53+4qeiBL{Q4GJ0x0000DNk~Le0000j0000j2nGNE06H4tng9R*1ZP1_ zK>z@+$TtOw>5(BPe*$<(L_t(|+U%K2C`3^h$L}E7Xe=m{vb1GoVdb&0ASKE|(O{|M z6+3pwqb$U1k-XN_c`l4&UgNE=G^am z=Z-HHiy42-Qj9-no@h_>e-oXSsDnTtK!qPvfKpHda(P0ce;^D_zySz>$M5}v!JxaM zA(+IrgF28N=a>f8siB5${ZDGu@|H@Yg!;(=yYT0v5v0r_08UxT)JRlJUWy0tn`_sRc>gpW#L$u40&6i0qLVS3<~FmDnE*d7}hq4q5A zgpXBLM)k+Zl$w$)gDs0g!m_G?RKGPH2G^#0bUmbU5Y?ieSh)F%JSDSevVE|@pEvp1 zNOsX=)5hnk+-V)oecoSko@h_BC)$yH2rvL#6Yik4!})ps00000NkvXXu0mjfzhYIv diff --git a/TMessagesProj/src/main/res/drawable-hdpi/ic_attach_photo.png b/TMessagesProj/src/main/res/drawable-hdpi/ic_attach_photo.png index 35aa4306cfa2b52d86df594edf970bd62bb897fb..b2b0caaa531326f1d95350eba50670a02289d9b6 100755 GIT binary patch literal 1442 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?!r8^y*ucWV%)-Uk(9qSy(Z$@^(ap`p%+lG= z$;`kRrq?AuximL5uLPzy1)4yySlYfd_)c>y;aK9U@|fjNlyrQ@H_c| z$d(sUMkc4?dKmZ%Jp88n3$QctM6dgCAxP{}gW=(^x$xFj~%v%zJRBg@`Q@X;XBOVuNsXA*MzN)^uWB#L8{6;NBTV;w< zI6k`fz1DhkIi@zCZG!a4oTb0yeq8MM%k=w>)5}SUPnL+znEUBQW&vwW_=HHd^Cj(rzAaU+Cnw*_Vb$~{H_mW3L?%ssEvYtH;BLm( zoOQ|%*n%9RzFaX2*Z+VT;f+f&-4wntdOov z-P-bqSD-7CH?qOH!kXuWq}t}Ie>N}Fydq-s>6d5%L)EV7KYqQr`5jbhdb;|#taD0e F0sz*z4ub#y delta 630 zcmV-+0*U>i3y=jdiBL{Q4GJ0x0000DNk~Le0000j0000j2nGNE06H4tng9R*1ZP1_ zK>z@+$TtOw>5(BPe*z*&L_t(|+U%IWOT$1E$5XLds0#i<(OM9kbgZidajHZ62WZuy zlj7naIO?L4bkV_fYqNQjlT8jQhqMOY)B@&5aTmlsye?NhkT>4RN#6!%Yj+Yil9eXfL2df7lDUg=Y_w z?M<71-~>GDp7n!ide!Z2$G26RncxsO08_dZ@1=WL@=+*ei~0~MI*+7Z zBD125F+}X*hWF3voGSkBb%^f5pDrL$+2tPR*oA^8MM%Q&|@( zdIUt+?+qGpqr*X!o~^Tc5$Z#D8D9lARG!OJA#)^%?>)4)P-JmIigje~p;f>=umbMr zUQs7d-$udqAJwz&Thktp0`tIE#m`4RDT;CYBS6cy%OvU?T+`m7g}z+Iz@#p>yW-2` zx8THTJUIucWqN$M=)<;bR`kA+vs33DrVeY|-sGvN6fH$d(NeU#+qVD%0I>yYgrMV_ QIsgCw07*qoM6N<$f*i&jEC2ui diff --git a/TMessagesProj/src/main/res/drawable-hdpi/ic_attach_video.png b/TMessagesProj/src/main/res/drawable-hdpi/ic_attach_video.png index b1a87b161520fb52ac09c33e10dcc36b768a3e73..1933735218a6e9324e319ffd67addc595f4e2575 100755 GIT binary patch literal 1045 zcmaJ=&rj1(9B+bV$jl?xKo#9s#lW8xXah(-^_;MJ4yb!@|fvuXR@_vQ2Xe1E=$k>N}2t(~m| zL9{0ar4(Mfz0cQz|9iypGG01RJcGty4wV!e5K#?g0hu(EJV*gWD^G2Leu8MC^mGPg zJD%G>T9-(t{KXt1fFg)iU9NF|J}U z9L;(u)qt}6f2d*9(GE(1!+8HG?4-*UU{b(=)3%Bmm+SIeSz^ov3W9bT!pT|{M+y)@ zrvNQ7HYSi~#&uJJCFg7fFUw-mbdX}IASp#CtU&9!CWZwz-Wv#VLZ1}ixOgxcV1rU0 z$0uTZG!}@nHLe8JX#<$3#?=nFd_%4`3WkL}OTgBz11(`ggRG=1>J4KFBpT{fxmx2` z*oIsN2g7)c{j1TnBRoCcwm!Dls1H6c@wD4`tWSJ;^%`G^g`^ZsyW2mOxuY*gUwn1% z&Hnq{b33#=)OCC-`)=-Dl=GDr*H@RWd>&l9F`v8hc=Yn!{I%l!(GT-WI~#KIuC;dZ zv>9zH{kF92U(Z};)4kPn`&-06JJs^!>(+x~-|Y*tA02I_ZRsVSX?Z)*(Q^}EL%wP( k%x?5{f0^?&H?JQ#MRYzIT`MyCE8ay-#)qYc7boWb02whFS$kcwMxZW?kmD2N>UxTfz)W>!YwI}2aFi_{ zPsvN|*o`aGwyiW+u=Ub@(THsEpFNga<%Lt;oZGq8Ww|=*hr0)MUitPyBz&LtCfiFV zKJlLX_LJ-D9JvLK&1}3%bORePjPy0 r#K-!<^!T*kj350RQeXaCvPv*WH_AERZx#Lq^a6vYtDnm{r-UW|6#!#D diff --git a/TMessagesProj/src/main/res/drawable-hdpi/layer_shadow.png b/TMessagesProj/src/main/res/drawable-hdpi/layer_shadow.png new file mode 100644 index 0000000000000000000000000000000000000000..9bb9bf101868dcf09fe467b35c3fd2987307186f GIT binary patch literal 943 zcmaJ=O^?z*7@o~0MmKUb(bL%Vpo#PYXn~RL1}Jr#YzcuTa-_5aG;BMy9i(tj!{qdP|cfP!^q^x1lieTUci z|NX)9Uu?NeJ3~4k6S{O044OU}V`zo$6!)>~ubzIv4F zK;txvU2l#l9OG#a>B7$sp9C2Ay6{A`Wjk);S#Y*a@L=6_y!G6x`@-o7Y-ETLgqXT8 z3ooJ+WxBB8MQqQ_k^na@bgm1RNe%5DY?A~-RV)`hSy7;-iAqJ)H02>I$x2C**{c1CfuxN=tL4CvA#$qR3m{A%dNm?$K;<7A~WGX53dYyBWN=4>TOji+gvtpDU z=L`l;y(EZfKqAN)-7#5EU0|7BmJr4}+9=(&i8V~h+*ndXnU|D1+V=ll!*J)F(muY* z_n*Y6vx>3Q$0=DP9vj@`n1_l{JHaj`i9^Um-o@UGP?F9_4BG<@-nU&Zh`8aw24UOC zic;!E9<~f!U>sr)_^4fJnbk_IswrhvQ96~TS!TUbnucuFTJ^G-V-4ahLLAW?>tA7O zd$C*$Vay^MI0>F%-%LmdH$|ghe=h1?zAe_@p9@pWo;oC!jKoL#*Qj$7(+}V7gv$;) z>Enp$Jz>Ir^XSKCb}8;!M$^f@js4MRbTHQ7cQB6NE%5dHW({<2yab1!@Ee@G{ph^l NSIFvgjd!ilt3Q9Z9}xfm literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/list_broadcast.png b/TMessagesProj/src/main/res/drawable-hdpi/list_broadcast.png new file mode 100755 index 0000000000000000000000000000000000000000..54a56f821dda2c51849fcdadf1089fc23917301f GIT binary patch literal 1143 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|$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`vLFhHdsTY(KatnYqyQCInmZhe+73JqDfW2&$iQ6qEIL(9V zO~LIJQ=EGBfsWA!MJ!T8!-RmT2gHOYTObFX@Kf`Esl5o8tXFQ`Rt?M&uRUEHLn>}1 z1qKEtDhNw3d=yi#<38f3lOm~h@Y zP$SgQyU|l9JHSXlo;k@fhRdOmw`-fF!1ZvGJkl{O^Jn7^xsb!P3Sq2|_6Jz%W~@3k z&4uNH@Dq21cg>p|UuwyCzLOG&c8v83IW@2KNmq)=&gBkoc$RWXeUa)YSKiqr*tRmZI`t~o6`PeEVmM8CL`32ln0OeJT-Ezcty+vgMS-WQpUXO@geCx0B5Yp( literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/phone_grey.png b/TMessagesProj/src/main/res/drawable-hdpi/phone_grey.png new file mode 100755 index 0000000000000000000000000000000000000000..e1d32825a71fdf4937377b410f2874319dfdfd10 GIT binary patch literal 1394 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?$<)!@$k@Q#%)-gp(9qSy$=T7;(!vcWXz1+Z zXzBvf>yn>bnwy$e0@Is<&})HHFDNPG765H_NiE7OOHFYr%Fk5*d)X=zw_8kcng`XJ zg4-=-IQ8lS9itD5Sfq%C2?0|NhzU=&Kn^_Nr{)1udl4{M`=9dvz`(%x%+tj&q~cc6 zpa1{u4<|7B@HF%ESak>_IErg%Y9_J-aXRSqyZ%*In0NW|<d>ODHYBafy>IJe)%}?%kP!_GOO(HeB{@86x`T%a%pue+gd5J1)ToO zUC((^o?3Bs{^jr3&Aw$Dd)u+XB}aIJt{Y0sk`Hy@$qs5`=5|@nSSnyJ#c#pYKc5@= zCLLH9(-_CQ#Ymx!DYcvVW7LAhH#V-Qb`WQ0bbcv2p^M>>eSo62LL6g>$ms^t#Kt}= zt|eR(T9_ItcrOG3-MEhR5vzkt^I}%7y4g}MR;+YbCF*%XzJs4(qX=K|bLK)}f#b{{ zlQO2%F+B2isFCOpXEL;R?X6j`IIAIqd(s3;f%pb1zPpBn5j_vu%^GtTd^#!e-KwFF z$<>)JXqHgxv{$biB6$0gJF;pgUFB_Zo6j8dj=9kxBU-EPS*Mi0({=XJ?g?Dy8{cX; zb+?3M1a2rd_!{G=x{F&Nn&D%S!auu+U6<4wEx4i<9e3LNP1)wvd%-te!JG}h%Dfjy zu(UKr$lf~nr1{bE3!gYy4f^`{d#yU07z7d+zFw=4S@UR)JE#=&boFyt=akR{02o5y A>i_@% literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/profile_list.png b/TMessagesProj/src/main/res/drawable-hdpi/profile_list.png new file mode 100755 index 0000000000000000000000000000000000000000..c201168e4a85a881345dce5457b8f5fd57b8a0f1 GIT binary patch literal 990 zcmaJ=PiWIn7!RH3n9kEYOb{NK2glYVFI%%VG|sGPUD3>vRo0_f^0vku*t>;|6%I zTB9}dyy{?IuoH|B`ypdYX$ITm@)hR}w_?*&yeE1-Z00vTZ{?MM&; zMG@e1Mp57-kR>RK68n@ioK`c6D$jt9@yr`>S5(U=b$qd%#@8tgRZ(oUT0(0|z+_c~ zxm+&MkmWQ(q@#_1+HpFF#<~gyiX7sF)WZQt6zyf)q#Dm6-MfMx_GE*olO~ohF}6by z3Q}^VF3>dp5B2>XI-(ZZkN2O#QFS9kqJ<*dBn~Uw%2?tmR0{;z6q72(YuzkX>X_oF zjzdsbRKTevFK}@y8gJuGQ!NJ(wF3v04UK0Cg6Fxao`EG@&dw=WV+z9Jbk2|!Lx*}+ zfl$dx#V*&tPSZyL?Q-3HZlNzXX$3!Io()92E66Po?1T1|Rj+?6xxRWGuG>Ery)Rc} z!H7v=|0;C%h;>i0?6oc1^co)ptlJ4|>t`eP@3ALgl?}ZbfBgC$9=&>I@W89rGvAN= zy76K3@HtbulOBIFvc2=EVWkF{eYy4E-Se9lk6rjNLw>)A9@(RZtjiNmpQ}?ySI}US1v9XkLNC3`vY4=Gx-1j literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/switch_to_on1.9.png b/TMessagesProj/src/main/res/drawable-hdpi/switch_to_on1.9.png new file mode 100644 index 0000000000000000000000000000000000000000..8e7b62f046b6ccfc7a0491e302e932c59368bbbc GIT binary patch literal 17227 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 jLlI|xftFcKn#W7G!hXk*}@^( zLm;6_u;b?}lpC=rCy9Clq_SlR1e!h;*uil#A&{hbQk2N!d7m@Vj3?lKVofacWwZ}* zG7`96B<+*PJ0*Eba!K-uWX`H`i7zEDb@M^)EHK-E&q%HWvSqV$d?oXm3W&ld@?IF@ zg5;*5fUS%dCbn>X_3)ZMz7vB_G5w1+GLPa@S%DZ_6V8pvZ%ZAMt^~!e^sm5WAee;A zz`IE2XZ-oGAO%#mntopbm;xvOB=LRGN{RSP0bDo^>h}3nM_^3XKA`Y`?+Q}@GZX7W z>N6AnLSqw`a17vNAo!{HmodNW2LO(Gf_fc_e<=_D0Pr>t{8jvS;JW!<0IXfCtJLRN z{L7eyCjfE)*+B42{1Xqidguw-&UdU6&KIBwb2GV*vwhCk*>2#r0BxsTyPCGucvo`; z^wrPronHkPgYW+)(@;Q4@`mv{+`GgdC9m}zZnUej9{OVx5WWC`o{<>+YHt?+0000< KMNUMnLSTX?A<9Sq literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/broadcast.png b/TMessagesProj/src/main/res/drawable-mdpi/broadcast.png deleted file mode 100644 index db6c94111e14d7e2384927caaa9eb807a819abbb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1071 zcmaJ=O-~a+7+$O)2o#CN1UQY$fkf$kwWV~W!nRv%6PDD{U=uyC-5p?s{a|;nOHEA0 z#K1og4;qA{G2+dbC;y=uhS(pC@FO=f4_$@4t#=d5QYFZtX1+6jX2 zr&D4U@15RiYsLTRL==9JQc z5>?63i(tg%v49Sd3|xKDaCkRHR&{xN_O59XR3T^~Mji!~mogw>+7N^(CZI4w3>ac5 zHW-RTB7=ZqScYaen&kp)gb#8&!+_dHVsExO%V)*$nlEg{$a#b;o~Db%B2^4hraecq z(P-4u;J5%r1e_HE$!@@K`s)fJbQD{&kY*adQTsmBlA)C?nI(ndV}>ikW#6 zna;dvfy7i8NV1|Co?XRD5}!64BpV7$i!l-_P@1Ol3>O!N;_-1N%7s}r84{9_h!Bl4 zOgx+z;smkI6-{MXhX$&1)dn}gH064upj+6p2yN{KRL5;o2i25$t$8eBQ@t8jZ5m5F z*_2D;U}&$ge>J*(g{Q|mHpUhkjlqWoo^~6L^}$2yGky|VX;H|z?+QN;4@Z4xE0xM_ z=k^C;$KT;wn(6BvDEAB=pP0RKZu0K>PUZ6Bw(V(Rr}x=#N9Ivms@TE?SwkU{?8F}3 zdWuNx6|x~_^?l2ylM1-dz9#&7-nxH!^E+T~cKTC-duC18+$vReZ~w^bY&;zhh6QhXAh GS^W*w>Qc=B diff --git a/TMessagesProj/src/main/res/drawable-mdpi/doc_actions_b.png b/TMessagesProj/src/main/res/drawable-mdpi/doc_actions_b.png deleted file mode 100755 index 37a56ecc4942b0bcc6f19c92a2d23cb8f125439d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 987 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/floating4_profile_pressed.png b/TMessagesProj/src/main/res/drawable-mdpi/floating4_profile_pressed.png new file mode 100755 index 0000000000000000000000000000000000000000..d1082b32dd77654644fe9d2000cbb453d2edcfea GIT binary patch literal 2988 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

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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/ic_ab_attach.png b/TMessagesProj/src/main/res/drawable-mdpi/ic_ab_attach.png old mode 100644 new mode 100755 index 4adde9602f873d93274de4bd97e52ae22591cf99..85f390b87ff4803f82e9bc016473b1777953066f GIT binary patch delta 701 zcmeyz^_6RaC!^9vuN#c);hA|U`Q^ovwV7lUj9ko&TwGjD%`9BZ3=LgPEL}`YT%0Z3 zj2)d^9L-FOCucCp%0twc;Z(DP$v_iokTEVrN(#j#L8)n0DU%DCM4%>`;8Hx_}M7c&O%iUx+x9qZ`Aj6*yOFfP) zO=V5z-m;u^X*@ec*Yj200Ve;cVVnWaw(=<)v9!`>?BAkz=k&!HEA$TCn=0@@`PmG2 z%jRw7%HkjD0}dxlnZGvQETK_-N6KZU#8o1*Ja6RA=Xi2xuV|jpyfe=@YLhp`W|)RG z?`E{IacwtlFghU3U8DFVD${tY$y_A`$EmDI4`yEac~5oAfsEQP#&(;m#_&Z~^juxn z9C=o9k?n1pMDNQFt_SOp%T&+5C0+%-)srER;{G1c?-ySiL!IDRPOA=iE> zMnk1_HJ!lOFT{ delta 749 zcmey$^^a?UC!@+nuN#bdy;T`>-8^mAZCGn z;qOb{EF5x|QrivIb8I@G#B*_p!rKL6FU0ptU3zcj>TuBbK;&)b=eyd|79B|Y)aCjr z?*LQ()G&^KOWAS`62Uz4nB_8@GfrQWSgrWy+Dw5DviA(@&l@#uGc*=2h(DY#<@dB+ z-iQanHk&f%8BFCq`(|3{Y>p*|_KN0(+0676tlHN<_1NF=UY-S?MVQ?fR2$@VKFqw} zz0|cRdzYI-6BqZ91Hwy-Z(Ew2&&VxfY`0m_Ag*-voU5D8k%uLhtmd}O=#~5sc(8tH z^7PLOCo(?y(<`@u$*%qwQ)%1ocTBwet}fFW+7D$s-+x z`i|3PQ@GDC8;I<;KA62-agl-G^4X2)wFjzy>izg{_UAKO9g75mK#E_6fL_Ff`3ykd M>FVdQ&MBb@0Gb>zOaK4? diff --git a/TMessagesProj/src/main/res/drawable-mdpi/ic_ab_doc.png b/TMessagesProj/src/main/res/drawable-mdpi/ic_ab_doc.png old mode 100644 new mode 100755 index da7ea4e34d0a493a5aef7f196e372fd75c331207..ce1100b80b42f63bdf0fe53440a9f3102ecac0d0 GIT binary patch literal 1037 zcmaJ=PiWIn98TF7I+=1F6a5E%^7gW$!3=tXzZtB5jRy0-IR4N2bnJ-+Yz{e6og!)H6% zkF--1)sY#LvSjV_zFlqP|EV1NL6*ZfRlqqkiOY%&sknxU5M&Hx3TC0ARW5G8K8k9g z^?U&r1K@n{`>_EbS*}YMdXldC1FV)oU>tW zZaA;bO{-Cj?mq+iT#*PE5G%knW=uzPV{}zlBzy0er9l;fr(^VXPz8AeB#{k4gy{{c zA&vurz;NM+AaFf^4{GRsERNA6((M!st08MTwK9={ zv94mV924?Vssm;D|4_qdpdFlrJMsQg*vVHc$Y!B~W^I);Zqo0$vc#kf6^!gWLNoO$ zj+78aP6=5cnG-;$TKSr#*l2ba9Rp;Tq>MM za^bYZN7G4(mxOev&XtflYd{m%x!Mjl+?4B$f?*NQ614S8P)pm$0M(R5y?HELQ@t8j zYaR>Vl*^J}Sg)~vHM)L8rpMbh#+De3!G|W9cAJd#+U4Kx$(2~hNb$V;q4;ZStG^}a zJJ@o|_a-~78W&KH*EKd!H=thCuz29`eWTUa~3+4-brzyIaey|2a-qerQ0 zUwo_g?jGA9*7=k4`hlCvfoCULmjfKN`EJYK)pch)birrzxbi}UU0ekZhRzM#c=T`& ge|z-jb!uSVN7>)l`%mA#&UqI!lNy#DCnm1`0XgbQ@Bjb+ delta 578 zcmV-I0=@l>2;2lQiBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^Z)<=1ZP1_ zK>z@+$TtOw>5(BPe*x}EL_t(|+U%F1Q^PP6#=9MY%GyfisGVdISz8Hme*=F37CSlQ z?BpcKO27>nTe-RN9`^;_!fV$x;du8(Mg)7 zFhgrlbW4oK!S_{vGCl{`P~_`$ZCDEfTuiZfE!`8GvSCvY))UA z*KUZ>*bW~Y_<HB z0B9tp{f8a*DXl)B95#$R`S`-S8j(#qxyP3{ZhOIl{4e Q000002uVdwM6N<$f?=-t=Kufz 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 old mode 100644 new mode 100755 index 0b4b8b85f525ff0346fd5a5ef1578795feb751dd..47beed22b8d7b454a487837bef433270e1622c59 GIT binary patch delta 485 zcmX@Zxs5}yGr-TCmrII^fq{Y7)59eQNK1e)2OE%lP;UEUqM`<)(nPO5Rb$;`14Bav zGc!Fy6H_xYLmdSp14AQy10XWfH8im@HM24@pZK?A@*PH{$ytoqllL(x@C2JFXoP3x zrR0|vYfi3Xl8tsXFf(^GcQLbYF)=iBHL-Lyc5!lcG%z){ba65=GgeZl$Sv^owQ|W% zF3nBNEAe!(RRW6WrDUd9nL+fr;?g_$HItz{M2!f2{v z5UlcaaSW-rmGtNTe|u(KMq%dOgDY6SY+bNqiOcjfF$Ug#wxH*YCCpcK8>IFLbj)1& zj@jg}bahqLis#HuZNVvwhHaB`88@~yGjPvx6I*f2*TGj?(^O_QKU1RxSI2ZF-mV2# z3V661q{5m_oOmOcObjLo9d>LGjCL>NJ*)H8;g5L7V~1BK3}u$HM(89e952`-wjlD5 wL*GLdU58CAjWUNjHzjO2B>78>fklGhe0ah{p}y85}Sb4q9e0DCr-xc~qF delta 657 zcmdnSafVZ|Gr-TCmrII^fq{Y7)59eQNXr1R2nQRGoEI1SbE2XKWAQ|0+x?kz1gbl9^&8n>=#x1t%NEw1QgY4Wy)EqPh;X0u)V zUV5!)Tx#lm~n9{!`c~&Rc-V0|(C8DsJ3lr{~HN(l$^Kw2KhV z)T=mFfe1PkXp!jxNA`^CrUt9d=^9>^g`DXi#Z*B~5-F@e>$)by`qF$n5l?UlDaNvy zSR#_)hWHp4PYtD_*$7wXN>H6MfQjl{ZI8=0<$9xFSlF`!Z2c0@vNklxTFQdnJQl90 z-Y!>b9!q~yE`x(%yvF|3==u?!9?xuyE#5Q+ADDRBZ9LYQTOZEjE3urDQbqTD`PcUL zfIrN(`j4)zuI~4(g$8?{5BffBZ7G}GuNF5?y|cyeAg!Q(4|JHbj@$;#ahb+2Dd z918|cE`8m{&r*TShu6Ph!}tBiWivB)XqM=Qh1mkAZi7-xmJZQ){6Q>uwR zEw(LEkrC_dU!EOgs#Y(;Y7V30}Jo=s*TfS3j3^P639pj6<|1asz-0vTmbQipNHZE6@6a^E zgjus#A|-WR*0IHF0fzT2hq4)FI^{c>zK#eeqczi3*ssrCvcNPHb~&L&R40QfW^U6( zOPdQteREw;8f@x3nD%8VU?HLb->TZ4>?>?rSEln|TVO#OLe>@bAgPkN2r}43Ai>8t zJtB%gl6WzmkRdzfuh;o{ zjK}VpASRQ^KqDIED1!4EHqm^}_Qtyk5P7<5I>f{_2o$w4t`UW$nI0U$a(c41*C`V% znBZ%UAo7vmNL`?+{vT>tJ+wy(=rG@Z3VX$dgM!5&kw&mv#JJk6 z;$j68>{YM>GD{LTy=>YBu6q-0ysFB1+asE-qdZhts=%A3Ay1~`X2I08i(9WUv6Lp%b}4Wa?LBqn02uQ+DDen{<$Rk>UFqA z|6FGJas`@<5H$9$Mt8TUdxB}twsg@mKC-FXU25yskFTcam8j<7Ows>T{?%%w!dz%1 zd^7Z(TRGXh-)zEA?l@C!#CNV;`0`Yqq+<#BV>m9=h}<_XCuhwKL^cBi~yS z!*};@&ChY8PgXu|ho0^wj(mQ8>g{$BY-OAKJK>9$kN(aL3`Ur<4^G^9F=nCQF6Off J@KJhY`wz>PLzn;n delta 413 zcmV;O0b>662e|_wiBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^pPPae*s%b zL_t(|+U%E0PQyS9hHKhVRpKQm3l?lyA|V!>1aSwh)GKfYR^1{_P*r7tcnA=WR!!Q3 zZzL~f0fdedjRdju%X!-W*p5AsJkJ|3Wu*~WY67igUl5TlYUi8VAJo)yr38=@a12tA zdDlDO74)knAgcSUcIrju6tz`(e+oS5;9 zTrao-L+rns2q=jr&n*I)R^fZCUl`dyouNnQCot6&&w+2etv` z?Sf}BodE;7=)}Ay{9-zaPCfB<$hqfyv5ZZre@+@wK-wmv00000NkvXX Hu0mjf!)>tq diff --git a/TMessagesProj/src/main/res/drawable-mdpi/ic_ab_fwd_forward.png b/TMessagesProj/src/main/res/drawable-mdpi/ic_ab_fwd_forward.png old mode 100644 new mode 100755 index 736c62fca43247e469e1b16514e9484f2849758d..fe943423e46fe1ba713e90af1cf52f4b70817f1c GIT binary patch literal 1264 zcmaJ>Z)h839KIy&n#IMHYB#ObzT8%wqsiscyh;0W@>erZI@GYUk)oHPtU zLSRN=3NqYe?km`ZAU2dwXS7W6D9K8Kn=vtNU62hnf^>y+nPJDE28Q7%F9y-IPnS@@ zb3t^#pY$ZEKnlZJo*H3sOyxTunP5Z%-zjk&pvp8C4*oNlIFh#;d2;mz6Y0%}O$e_7mX1055V^i&9Zu^%4&S_eJ7jZN?z5e=u(=!_+p)2+QCex3rdE!A4ZgLN zo7>ylThGtG*a$9L&eO*iULW6GY?xVyf9GwUDg1h%)Z{$e(Pu5&fmm1mh3eXweD;yK z*AUnH;0voC{9a#vftud?oc!=bG}>|Pr5PP7HMK?d%vmcb@Y%h^81-Jf@YE;A^BsauUMPGWoOZGe{tvXr2uv0*at(ozq-M~nMhHpFMoJ7?0fU@EQXY+A^Z>L4+R8V ze{`|(SmRPdc~HNoS#wRL_0ZK^--%dd;_TRUTcsJ?dUgM(qxkNr8;i=4J-c4Fv5Z(A zdWZXS_uPQ3k_O%LU!Dn_`X02kTb+Zmu8+c?=~}^0T|$bhar+uZweIpw?>+Z(o%J;J zoBd#ae12thQMa`mYZ;uXpYecO(YLRxQQ>=hH}|}?>jE`<1+2eu_Mo~v@VD<{1bmJ- Wp2@Ub_$IJw-a(02FMTdDRQLx?B&m-8 delta 388 zcmV-~0ek-N37`WZiBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^pPPae*r>C zL_t(|+G70w|3AY(0w#t52BQubbpTZyz{tqR4#c(t9RgHE+EPgw9bYE9l=5%d#M5`Q7HEs5X%EGHZKhZve3s z8J2$s;#I&X_(LcSXaX@Glzjx0h=7hRz*&`c0z zl$P#B-H9Wd0(HOaV*HM7Vm3iEw>YM(^aDg@K%Zvt)aQp!C{j~-swUUDzi4-Y73y@)d zqfZGi49T*7CKP5_rhyCwm>?a%FY9AMT$ts8`^n{p!qF_Xmy^Wy zcrMYRddpn3crI;4xin6Ob{qRwqYGQuJ??bHws^5(d|+U=TiDj?zUC+Km3S8yqiN@D z=Eve*0AQa9T1llssjWwzbkJpcS#>TsPr*U&WkvgFh?;gb6Ox~KQ?bYFCz_sPwf{H)xw d`&B8is+Ra-OYsep^X2aKkH?bYy|$C*egQ2&ZWI6j delta 297 zcmV+^0oMNO2*v_2iBL{Q4GJ0x0000DNk~Le0000U0000U2nGNE06Q?Qq5uE@1ZP1_ zK>z@+$TtOw>5(BPe*oA?L_t(|+G70w|3AY(049b30wd327IcA>l$0~HuxQSlIVOYC z$GBWbF2EInqp5n-;(@gom@-9xn1iks11%HZ&0*C{F?6p7~1T~Kfh$jNY-N~vXhyY?hybg%ju*k6jaSJq^(4+ui v!z0HC#6_b;=BUMV2aKaViD7RsK!5=Nc0w@UQ$xg$00000NkvXXu0mjfbUtoV diff --git a/TMessagesProj/src/main/res/drawable-mdpi/ic_attach_location.png b/TMessagesProj/src/main/res/drawable-mdpi/ic_attach_location.png index 4b4fab5667f624ee59b30d714b6690d1b62376b6..193306974c11fdb1a9e38200ccb4ed5ad78f4e44 100755 GIT binary patch literal 1261 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gjk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n3Xa^B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvv ztM~P_^2{qPNz6-5^>ndS0-B(gnVDi`Y2@T$X5i>-X5nIDXy|IEh<( zWNGdQ)9aF-T$-DjR|3v4~Pj*wm=R%;iu*SQ+p9GSzoH(^n!tbG11e-F{I*F z(x3nT?U{8Mg_(O9xfNMeRaGxJXo+{!Hbk&$)kt@2XZZMJ-n@C~KfV}0;#OMl@S;PO znn3a6fKRL)!Hv__DBNUP@vz%5i=#p)#X&^RdqWfh@3h$!F@1b?%p0XHOcFohR-`9( zIG*{Vi^4pXBl#DeR4lCO@N>0`;4x>}wSl4Ivty3Vv>y|a8o8wEB`-W!ZooI;FN=q+ zd+=hnF4q4S9(Q$A{BZAL-G1>$;DL_mj$SN93WiKoAJVqeI;?3wBF^~evqN*@K_;UZ ziEgMAiaF8r zi81IF`&4H)hwJvsyry!RY6x}wcPdmdY!iOVtTO*eqn5;ihm$+69=3QAEy}>i#xO0m W`tUI^D`3&Yz~JfX=d#Wzp$P!%Zmhxp delta 528 zcmV+r0`L9p39AG#iBL{Q4GJ0x0000DNk~Le0000U0000U2nGNE06Q?Qq5uE@1ZP1_ zK>z@+$TtOw>5(BPe*wKoL_t(|+G70w|3AY(049b30wd327E%vBf}3HGtGKAm$^|GoOGs z3uyTbvMmN$$`7PgA_Xh402KV;K+8Xpo48WRu#^F+CzUK8e*=9Ba?}wZWO-QG)sOKUlj+wEDy~U&cEh*;Xv-md_F@0#C%AE3b}p+Sxg<^knMNe5)L zxn@CI8ZdAXDn=4uB&S^sZ3?Y~a>I#f>QKdEsO4GE;Gag0e#X(B#IUy*Aiw|_2AF5n S+&!BB0000c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvv ztM~P_^2{qPNz6-5^>ndS0-B(gnVDi`;%08)WMpb;X5nIDXy|HU;o@xSVrJ}OY-r?Y z>S$&T)9aF-T$-DjR|3v4~Pj*wm=R%;iu*SQ+p9GStlHIIn2PoXz%Ib7*cU7 z>DT}N_RPA5!pyyl+={HKs;a3DtAyK2BK`gS&F%jBu<-aFOSa%BVY;gFz_?jZ#4q45 zQ{xpL1+m2jA#u!wS{Kr#FV;Hn9(HsP=}1rHRx;E&wpJpruz}?o(?(r^VyBI=0_)Y? zlnup1m=7DXc*wIRu_{bsf28cNQ6WHU(UqpH4$Z$BI2}Y!?Bh6cz3~T|z%DO%p}!!CsPrkDtmve1*}1O>b9vbP0l+XkKpp%Ld delta 417 zcmV;S0bc&g3B3a`iBL{Q4GJ0x0000DNk~Le0000U0000U2nGNE06Q?Qq5uE@1ZP1_ zK>z@+$TtOw>5(BPe*sTPL_t(|+G70w|3AY(049b30;3j>T1+#*f=ePLCFKB+;z1Jn zG-u8nCu&*Dh@6jsmdyiFdNlInMWDlzaRs#=4MSI-sG!CHegpAZAl?bYccEg+K<5)v+O0x5e@&0=>bJq?IIW0C(1l|xob6^ny_sa6e`Y99dE z2|&CLh`&KGXNa8uk^`zy1*xTGJ_hB>37~um%`#*4+%pU_EsfP{BueM3o&{*4MKdNRcS)mm#OOw|&bjgd!tH}ml zyf{G*-Ua^y{{aso!e9qMufjm^D5wVy9+d5+Yda6t@bZ4~`Fy@V-;?V4>h#p*DT<<| zD{HDw){F5!d4|lNL**A)F5%?{-b5`N8a||o7HUFJaf~+9p<(UZKY)3PO3-$#fg9Q# z*+dRYmJi?}^d?E4-vkNh3!nW-y^!L|qXkc3kT^BW8^UAPeukHG9b9cRF?smd?XVA2Vw(6&bAxKkwW)%WwMX2IU4jKxU0}7PBpYDC?g*NkxeruF9<-ASRo@y zl5icQcp=5{WJrvVkwr;PWx?R1i8bG9$-25SutiP^-ND$CIW7!CHcYd~Z*xK}my0!0 zDTW}JV8_Kq#JE9nsG!2Y^lcB@$OW;Y(L_D0(8SY|5FBqL>jr}~k%V!P;c)`X#~}@Y zn)ZLFxpptU}*@0Id}tIiMf1Y>)RPGgfcFwZ{7*j^%R187?mD zUxglCk?x7NqqZf7QR73Gbh}U5x_ag7JMtv-idw8ipPIjqjtU88;zHut#Cv9|IJdC4 zIPv)I#>PxCb#?A${p^>S7c(ComL_NQtoQuf)a{=?uB{$+=AZ7r?N57qiT#haUd~dJ YJoRV3aPQ#T;raN*RhHM)SEa2-$IOW``Tzg` delta 187 zcmcb|euL4lGr-TCmrII^fq{Y7)59eQNXvmR2OE&IHdwa^NU@|l`Z_W&tUqDS+Vygx zqIx|;mZytjNX4zBKmY&RA9i3+Yhz?$PBY}z>zp!WilxJ;2B**ZXJ#6!w}!||2OLah zQ~50+$q<|C)RlYSf|c>C9d5dETPs+^XD$)rIDGo}V%KLYjxHAKkFrVWI>Q}e@Lx%f k^Vmf_p1lkX4U7zI8zl|W(t2}&?qKkA^>bP0l)%^o0Fn4TEdT%j diff --git a/TMessagesProj/src/main/res/drawable-mdpi/layer_shadow.png b/TMessagesProj/src/main/res/drawable-mdpi/layer_shadow.png new file mode 100644 index 0000000000000000000000000000000000000000..aeefef42d44a2d676c4591c63d15c440bb0178d3 GIT binary patch literal 944 zcmaJ=O^ee&7|v>0*M_1{sRAmC+|+WP1i$fNHQ}o@AJIR`!R3ZttSWjxAz%_IWSN44qXfM zySBGW|F1v1a_Mr5H2b8Bhh%2Qh^c$nLBI^`5$Yh@o4@#uY7BGzp5N<}zV%dbalqP{ z51R%NMKet8B#mr$f(UTX$PZQc`^#4dd{2eXDi&`=8XEhjix_nmt)9D>xUvUN9)Vh_ zP=Wvv8>GQmm?)_Vm%IwyXJ!t9r3;y;@KRLYY6A_&2vpco(d7jJND?cQE0QD}0g)F( zj;F6w6v|3PQp97hdLWG!dqbt88>?9Kq{1;Fk-~Aa*^Hf)SR9WyL6+r=LlleDqnOM? zVyDG0Im{V!l(?}U5g&&jW3(MSB`Ty!FH;DjHEo!z%0vssrFO&#ET5&6J6hKNU4vll zosbT?(z}s3>CGd=bx?w*u}d2_Jj_BxiWVcA;JAnJSzg8V7!#a~aRjuk1nyh5>xY@) z!4hFviWw%v4qasGDx@5&?|Vv9GYqLLRwbcS5rk&BZj@-Pgu2cf)rMR$a;%QsX@EkK zW4$Y^ycL@bLlDu(I*R?5$TMObfMwE(zd?&uZWzbq>UO>r*4v9Lx|;Kw^BB0}8BN_or-?3ERrt61L1SVFwR%?E@NUUuoamAki!m zjU>i{Cs7Z?keCo+m{${wfr}<48gIsfUi6^Gcvge2gMkNU)As$z_kF+L`~AMRlu4g= zIXj&cMY)m*F-yi)`*Spt|5)+TXEJo);XEEilei?Akcud%06|idreGFI%KY35I6zTN zw3^G~d}>6Hk;X_ihAC?XVN=w=VA+u58HhmvPN{mB{{HkC4OAsej|Wnolo5l|YGT2J zqYLSryf7n&6ngL+7$^%wK!aEUWo=fsgmRd!=?Y|SZ?iP0LGVnN-c2f>%77R$AqX%& zx9s6K!1D~}5AZzK2fQB6%X-MmyE(rQ;013#*n4Oa%~U3ZtQg;mMOI;Y8e>CX*;1** zlza>_r&ul&3fUT7ubUv;*1V3TvRk*h>Ix#XWK%V;igaKrN(EHJVVY#Rdj!qcm({Jk zGLeF@WyxSU#$z9;4os!~57o4Nw1uBvgpASSrp13#0)wv>)iyG8%ovR#h`G#EE3YtM8i_larLnUq^4b+Y-sEu>+ zHPqYVDvfjTH{`M;8P;y>UyZJB5%<{BecO`7zVV?>+-?$Ezx`d@AXj1~DMoVTcZFX& zJA+N9R@T;Dwyu7ns;-u%xrxrU?n-;#k&(&8p7f2S>W2&Kj@2=$+VLdVl6mMzln!w| zPM7InZe)vXK29aJ3U~bPH?N#Mk+@IIoy>jhY@5y7ro8#fo5KVAgQ*KhZ{Uiq1+ zE^h=Yp`)!8=g`&VW3Gz-ZhKqz;pJY=KlI!SHk-D;yxET2V=50EZ4=ZhXD_oJ_kFYP NZ*n*-K8{XY`vXo$QKA3< literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/phone_grey.png b/TMessagesProj/src/main/res/drawable-mdpi/phone_grey.png new file mode 100755 index 0000000000000000000000000000000000000000..4d0d08081eb2f042d4c3c95b421584e4d95dd7c9 GIT binary patch literal 1227 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gjk|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~*C*>f~l%X5r*)Xy|I0;;cDdOX6kBT zU}$O%)9aF-T$-DjR|3RBIUB)s!mx{K8z{tj!<%z$?$3sf6# zTwy$VvvG#}eAb>HUD*qssVRhVAE|G!kk9yNqGHLZu$8~#YQqm56aKv{kAhF6iYqVt z#gGx8JYiLHQ8;6v-j(MIc3e8J=&AVyCbLD|*$W<3DTs3SPBu{3$9v>>p#-0{g6C@f zhG{yCK~)!Q4zVBM3Rz#!FzpU=lE1=b#*Xa_ALEn07*2{-XMXG^^~~{-S2(~>J|R}sB6!aeQ1RmF>gTe~DWM4f{5GHv literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/profile_list.png b/TMessagesProj/src/main/res/drawable-mdpi/profile_list.png new file mode 100755 index 0000000000000000000000000000000000000000..b27a67622a8c5a746f30097b6a5a41cf6f8c4ca8 GIT binary patch literal 972 zcmaJ=J#W)M7J{d>HI0tf6(O;X>`a6?vccf5L0z=7Xj0^*HH`E?qKUJT40z0^x7TLvF>UP z_BlJlaH$_sYlc~AOgB*-3xU1<<)BlJXeRSvL#qy9reAXod~V$G~3S3hNHT$ zatkb^8YS=%u|eu@2CQ8Aa=?IaWQ8wQ0zorNIV>XjM47mZK6Y}^f&}R9McBzC`~kBd}@ch$O&0UInc8H z5B2>qIwmc2qW7P~aeELVzJ+4E9XYgcy<+An)antk369zrZ{}HC?qh=EJ`O>BMFCe= zy}-pud~JxgEX@pJVh0W~4INSj&huPNmJGEas)ABBBvEWg)oNX?)g*box~Pz})CZqg@l+cc`}^kete(NU$qPMt42J=mKr?w`8g zHcj(f`Q7)!Ljis>r-k3->(u9G@B7cUgt;?xdT{XMB?I=Edyg((S=;-tmc1{t(KKGv H?mzwmUp+A? literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/switch_to_on1.9.png b/TMessagesProj/src/main/res/drawable-mdpi/switch_to_on1.9.png new file mode 100644 index 0000000000000000000000000000000000000000..b82801528a19f864a4e044e4be00e898e7382941 GIT binary patch literal 707 zcmV;!0zCbRP)XvP%H!wY||VB1pk3xXJf!%<3Ax*SBM9}DiDinw6F_-!@|ZcU7CC} zDN`gNMM#k%8#W=?&5ZB2zJbBpkL=DG5N_ZxU+?|iZ{EDw*~w)76sgHR$}NBUavaI( zjzlunQf5gGNDehYKf4d-aCBg*V?;o;yWQ^jY&LssS=NWeV(|$z`WW}qH%8rN92eMi$I2w?FH?# z%iFLk0iDPe_Q26`cO~Jmrf}Y9+aME&+LoJ;Xh`2=MBQq&p3y2SZB0Xx_O z2Y7KmRvz10t@et5gy9!c04E>{;de*9UPl6*^m@H(Ap}Zld6$zWTa5F( zfIjSCZ}dN*h!hHiQ))ggm&wzi&31U+DaQLybPhF%Lb~Pyfk*#U`fi#Kpx;*qC62 zfj~;wNJ)eyP`KmH_c`C0mr8&;+770d{POO-_xpZ--*@l#{@lvSpT|<{GM<0pT~^?^ zs;)$MQ*Bv3VOqIdUUQ5(?H3+ApU-Ot2M24jeCWsTLPid`Gg1-cezV!!>vTGAj*pK& zP*SITn*Y-2kjv#(g{|{0KKqk?zyEDC8lC96Zk;vS>BmoE*TF9(0)kX3#pl-;@pwEo z2qsEwB1~6|x+VJ!{K0{rBV?uspA@j#>-D}mMXc)%1h=2z^*CJ}Q+B+%2SW<)m4}5M!*mG7W6keTYPQd3T zC)nAvOeXVqFc_RjA)Z$UczEE0cgmqQeV<4slk9GRcDwy!GMR8Nd72V%;NgKUolg7R z?wA|<`}=z`Cp_<%;NgMK)sD#%kH>F{B2=kVKAWb=sB|}H2mau|!z1}zpQ2hQ6uKkI z2O_h-i@CHjT~3WTBRKsA{@}n%9?jEzA`*#Q-`w2X60eU+rP3ENozck)%!Gi7*{gtl z{O|_{9-d`xR=!{`xFJRo5$~~VHv6*CX#5-whXWFhfR0h8oqqiA2M2z}U1H(ezAqdO z-w<}s@Aq>EJxnAL&kqj|Ul)tTPmGw7I_>o1hd;PE0$lxaK(ro<#cqp{ahcr_hM<^Y z)OYB|5B~)OczQU7{eeK>*7o-H-QC^Ya5Ng-qNGkc{nGF1H}L=a7qu?Hrar#`XztR+ T8%h1=00000NkvXXu0mjf*M^0^ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/switch_track.9.png b/TMessagesProj/src/main/res/drawable-mdpi/switch_track.9.png new file mode 100644 index 0000000000000000000000000000000000000000..f8677ab8fa18aaed6f742557d9864aa423388eba GIT binary patch literal 270 zcmV+p0rCEcP)7EUI;aZ1>Il?ApVLc!f*jt zSf9WM3R)XX{h**(;ivW@$ORS(?Z~=nqmM6hNpD8k*(te=1`J0Nh82 Uy(xyNtpET307*qoM6N<$g6pDag8%>k literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-v21/bar_selector_blue.xml b/TMessagesProj/src/main/res/drawable-v21/bar_selector_blue.xml new file mode 100644 index 000000000..34512df87 --- /dev/null +++ b/TMessagesProj/src/main/res/drawable-v21/bar_selector_blue.xml @@ -0,0 +1,4 @@ + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable-v21/bar_selector_cyan.xml b/TMessagesProj/src/main/res/drawable-v21/bar_selector_cyan.xml new file mode 100644 index 000000000..64d8697d3 --- /dev/null +++ b/TMessagesProj/src/main/res/drawable-v21/bar_selector_cyan.xml @@ -0,0 +1,4 @@ + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable-v21/bar_selector_green.xml b/TMessagesProj/src/main/res/drawable-v21/bar_selector_green.xml new file mode 100644 index 000000000..49c5a35ea --- /dev/null +++ b/TMessagesProj/src/main/res/drawable-v21/bar_selector_green.xml @@ -0,0 +1,4 @@ + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable-v21/bar_selector_orange.xml b/TMessagesProj/src/main/res/drawable-v21/bar_selector_orange.xml new file mode 100644 index 000000000..5a4c89bcb --- /dev/null +++ b/TMessagesProj/src/main/res/drawable-v21/bar_selector_orange.xml @@ -0,0 +1,4 @@ + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable-v21/bar_selector_pink.xml b/TMessagesProj/src/main/res/drawable-v21/bar_selector_pink.xml new file mode 100644 index 000000000..d3fa48d17 --- /dev/null +++ b/TMessagesProj/src/main/res/drawable-v21/bar_selector_pink.xml @@ -0,0 +1,4 @@ + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable-v21/bar_selector_red.xml b/TMessagesProj/src/main/res/drawable-v21/bar_selector_red.xml new file mode 100644 index 000000000..4badd6870 --- /dev/null +++ b/TMessagesProj/src/main/res/drawable-v21/bar_selector_red.xml @@ -0,0 +1,4 @@ + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable-v21/bar_selector_violet.xml b/TMessagesProj/src/main/res/drawable-v21/bar_selector_violet.xml new file mode 100644 index 000000000..ee31ab7fe --- /dev/null +++ b/TMessagesProj/src/main/res/drawable-v21/bar_selector_violet.xml @@ -0,0 +1,4 @@ + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable-v21/bar_selector_yellow.xml b/TMessagesProj/src/main/res/drawable-v21/bar_selector_yellow.xml new file mode 100644 index 000000000..2559175dd --- /dev/null +++ b/TMessagesProj/src/main/res/drawable-v21/bar_selector_yellow.xml @@ -0,0 +1,4 @@ + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/broadcast.png b/TMessagesProj/src/main/res/drawable-xhdpi/broadcast.png deleted file mode 100644 index f324339211286e08617db0a5add606a8b54a584e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1231 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gjk|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!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPAEg{v+u2}(t{7puX=A(aKG z`a!A1`K3k4z=%sz23b{L-^Aq1JP;qO z-q+X4Gq1QLF)umQ)5TT^Xo6m5W{Q=8k&}y=laslDrID$jp{t3btGT(OrIUeylc}?r zk)sPtuSMv>2~2MaLazl*y`ZF!TL84#CABECEH%ZgC_h&L>}9J=EN(Gzv~YEE zGybi;P79L+kqo4<;}y(P^x(3V6rF%`D1z;e&~Ssqm?^=|I-KeBofpLIAh=6hOyfow+wf%OVcLW>xMO>{DoEY2`lvPm(i zu}LvcV11vFdr&YcI)L-Y`pi^DjhS)GNyQ3%O>R4^HqPvr(o-hi5xp=cU}33r$I^v= z^c~i;Jo8q}xL2sEE?Ud}NNr1zt-LRF!Z>AY?9dZzG z72bHQx}qszdP$tdyn}Pxa&l6<_cm2<3ck56KSRr7RqWkH^ADbe6W%nxIkP&sXX^8) zkaOHXQy3oX-+JcbrQ#iVUnHi4Ns9Xh{EFSaclp1txm6QyKFmLrb*W0zH>*Qt|Ah}v zKP0c6+T5OQec{{}D}Dz1sjFoe5|@>KWVmpGh5Mn?4goNglLWH9;n8d50}Q)=q)F6V`OgOu@pScbS?83{ F1OWFsr91!t delta 404 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 T->dKUKRq*JE2A<4*Bk!@{qby2 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/floating3_profile_pressed.png b/TMessagesProj/src/main/res/drawable-xhdpi/floating3_profile_pressed.png new file mode 100755 index 0000000000000000000000000000000000000000..1d496966deed0fb54617c1a4583a96a6b6ca5e7f GIT binary patch literal 5451 zcmbVQcT^MGx+kEZbSX*^Y0@DiAc4?3(t8mQ5=ejmNic*C($NEog|5;&p(OMoO+=I` za*!%09fg3X^z!04_uTjXxa+;O-mKX(v-f;$e`S7q&mR_M22Auk^i)(-Oolggttj{4 z-|Ye|5s8ltA{ow9CNW6d>(i4SI6WVI)6cRuo)P(F6OhKl8I!G_n z%}^ZDI@HX@J=Dh?iV)IJ7f=mWrU*bI@o<4)v@gbAIap2TFS*K;=ikG!LIQu0;C$GUViBC=@dOAs9S7SO()S z{Eq}(q`x~3<%dUMF#^9O!ria|cr_u4rGHNW?PqHGZ^0PsZcGTC6bpDY*%l0~C` z&+9L0f4mj)zs>lM)c!Uhen?p>q(3$Q=T3=-hwwkl6yN>tihdJPtWh?{p(sIt`|4ud z1JFne-cVOfi1G%AKp~VBpb&Y8mb{|29z;p+1{kab(N=_l6!mrGzzRxwAjm&5{u8f~ zo-RlMst`hW|G)Ao z>)?=ZJQinz#rpn}0Ty0ZJl5X}>nEUN4G|ExM_~}yAb*M9;rV;Ex=0)<5Q)&oVbKDA z`BxeBAM`6|{a^F`n-}r_@tG{e7}?*+@jsH~pCL*H{(k&->Qg%ZE*>O?QZYD6Y2-e< zUP?uEDa=q;%O-ewBb&j3!@jj|qk~pJnj!x6CQDk)AfV1+qVEpx0s)C$wQ^6JigxOTm`|@yVA`s8@)Tym5HR`3t#xT$J4SE&1f^L6m)H(##KW|SlE53 z%(75FE+HXd9p5URyy&~w;2A}7|h96LJg+<*GH!+Rm~)V!M>Rt^c6GL zd1FnaVgLeBbXfRE-N?|?biD8N>tim>64Z@n-yN$UhQ(I#d#jO-RUe1v=H^0E-u;w` zs%i0GHM2D}9g1Jg2_svDg|%_dxvdD+&E&lbEQZ|ztaKY`*}A`eH!xuQTsh#Y36(Nm zlo^d}@^&$e)@Bve%d1ftwl+3bU0d<%irck@)Xhwd8d`McV3&yA-eXtQLVt>(P$&k# zS89vZ%x=bzyd59f*!-f_*4AM1Y>TJFWPSe$t>eci31Yn!*xb9(cZ#jkYqX%4L?R6c zM2Zf8JGHKLe)#aAwuVRqZKc_}v~>4CNEN#xUbm<{IE)FlPR`Dixe)a9v$C?X_{Rnf z(eD#APs!(PuViFobT;{YdBq@(*B@86uCJsrj&rlAY%D5T(juNQv#^{6VZ&>>-9AlC zg)9ta$Eh(wShQS7*BK9)ItXsPh<_zQFmt5Wv{T;#KzY>~zXA7wt@P z>lFdNpNrX`2dzF*zYJ0Cbem+l)q-0tBiPrRvc%O}MIBAD#`v%^CtvJKa1TE{SY7lR zJf0k-yLuSsO-ED5a@kUb*}}=r4x*u^7V+G%%1l5D=26#jse&9ZR%(7GRkPxPEf0Cm zG1ybwolxo6AX(kfaXJ#(eiuvZ((55DWWqQ2JGNgj6iO%%LKFzp`rSgDwWbYy$$ZZN zdViWd)KAfknKTi#rs05hK9lzxHq;-w#tFMCQ+r*zmig7#v)8X*PvmWmvi1_I

k* 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/floating4_profile.png b/TMessagesProj/src/main/res/drawable-xhdpi/floating4_profile.png new file mode 100755 index 0000000000000000000000000000000000000000..87a90ab78b098cd5723d85b5bc2f8b8e7c2bcd3f GIT binary patch literal 5472 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/floating4_profile_pressed.png b/TMessagesProj/src/main/res/drawable-xhdpi/floating4_profile_pressed.png new file mode 100755 index 0000000000000000000000000000000000000000..e4af9d2f42fd5de1eb26ecdd1ced41d794872fa9 GIT binary patch literal 5723 zcmbVQcT`hZw+~To*6oG^iAQb6MsZyl|2ptlV(2Ed?s8s1vlp?+N-s^-S zBGMr!O<@2~>B4les%RHi ztw0?5UZ9?_L!i5ZtRwGjMQ(Y2Bt?KHntBmEV4|B{QO-2Zwl#>@Q|3Bg@~ z_iv-jbq%;xF*r20l&FM=0}Kx5Mj%Atl2Ql+{1&%33@$DPqx=vea7m;T0x2%d{jY6ifeh!4s>i`)|Qs_kQ)Odms`oGQikJNbM04!R}2#v@1;2bFP;l%e3GbMKayP{u&6l;+BI9JM~pghzt z4nCe}FM_t30xxAm)X~)uDJ6@LKqyN{tEeMn)Ft6?WrT{fEKFKMO&l&IqYgv-BjZ2u zDoepsB_w5}5i)90aJagpikgawiWFQ{MO8{oMp{zxA6{)QJOSn9fc{6XD@E_WcoF|A zFH#kUMiDSLV+_XQpA0Z?!4NQb7YvqL^&Wy-z|7Ul5#xs!{53s)d#i@Vx%#3VHE{EeumVXUS~Mj8>? z1CI6OqeW@fckrz{Nj|gJOqryebnjM_sCo0$F&Q$s-|2nKE}5?;AI2R6QeD3mk8)a- z_Jv?Lm+^3#mXkBE-xIO&;9UAotsnw33`|%^?`GfNSHAlxn1UI)GJ1z93QR&T+nUB~gm9?F*pRVGW3+?Ug?qFI~7Fyet zH*W}C9UUECqORJsyjfUSi0FRZuTs>k9ObFsn@>GPWFeMC#?(7c=9Xk+WcY(6S!r^j zOrYD^7wsFR?a9UPgZ!sYpZ2LgVYMFM;E6BjBPmR`EVxJM2|J7`%~)t%dnTHJW2msGNE8GD-H$!o za)fV6XAf6@B(z!2&(884L)<+szRExbR|+S%&s!6^o0D z3Asogx9K0>4)tqaFyw-l^QrDeInd9Eb^j2zpU9SV_g4QA8QFVG6(_u}su_RHqMh*J z^_}1s%fNX~J16e%wf=mE!jab1Xi^%`%+&P!`oo6zY-iQ{D=0s=Ap z>TgU_by(u}>?PR1jV*LRvOGL%Y%iVCK{Zq&br)3XXdf1{pin5xJFf)LDD84tE@jqz zWOPI5mOq?F?o!cDF6fNkxsJOzbTi(&1&*$)D zePUjkDK~rgPSha2yZb?1Y|3hn^qgkvoEhqZ<4ZXn;iWGepnOdEd>xv!KKSJ7{EZFmaFA?=yz9RH#fKAWt+RLM!{%j=VG$r zp}I47kod)uOQgjn&nE*|Ji29q7>Nr zFi3BD4BOF1$ojd!T>jDqDg9w#ak2ASww&J3o7*&8M6urDl&2RfM(RK$h~iiB0i^^w z6%`dBqy9_Ift_9c=Rdx={;r?vaT8aUG%>sgC3H}vmt#IpJ?xAx^ksih#ABM4R>Y;26xdu=ez3kf|)V&A^kX( zHNdtj_#37`GvT~*_dL8lOBxd@?(^}D^uZ!y({|mMQmblj+WB6tLXcBbWMs#U_Fy}P z)8GJ8)3+XF50)^%WRrR`fB%*T+S;Qi3})Z8j&yMaiA0JH3=E7_mX^BqKJdkvG>WiD zFanyaxc$gI;RNU&8Tyq|!d$1s+*Q9Ymgb|>!>!oZSn{JQzn@$99+KIe5-;6~fmPN3 zE!MQs>1ZYYAdzOHqodE2eLs;ct*w`blai9$=cz7Nk;Rb(cIC=(vo=8@%x2@C!=kmo z=71|gcZIVJYf=NntlJtw$1>o!ja$6!-tUK+Vq#*XcS|#B(}R+elQrKlg(U47P5ET8 zQgH;en)3kW#4`=<-~T@R>HTmwPrGsOF-feuV%n|I^0E|kErvM$@#xd1De|ihHQ$#q z4D|u5Y=%Nj;;8^D335e6g^ZY3^(7;Be{XL%61N_6?{q9v;-bQr#D=1Va0XakUR$CG zOcfFgYbx71-S4)=wVv$G*X#8IBSP$KOQ9sKnrEBzQ=3_}4h{|vZmsDk0dwZ8bGDr$>Py!fg_^OXE~d{f zuOK#gE+VcU*}QfTY+}>tb?TWe*1xLzfU2*Kf@z0~X51dA0-UyaNjkmC%F6WvIC4Y| z{w2=imP8h)32=OLl*5y7MVkbx&txXct!0@W98TWmDw%SL9{3K`dC5d6+7JP8ai(Sb zqyqMK)wjd6G*-gdcOSy1cj|<-KA`yx_0OJzV?%)U>vFyg$skk1wM=b2y?9O#mTGsY z6)$3-O;1M$!PM!Q?NMBM}JUCC#0Yebrt0a@0qUNdqj#^P`|f3x@QZf+{4C;R&n=1GZ(cIP63 z>?FP3S>3we5~EV;mt{8MTST0GwhYRzJ3pTn&p!@biicho8Am3gi)&^ev^{)lXBWp6xXb4tKw9P0oM;`438rVOlIOCqE8D z$ZN-KNX;1Lj--4Zkw{%WsWezxT8ecQ#F*>dxucq(aGWu-b--biqc||UtVW-f?E$m> zZIyzJws&@(6qdcCEDDx48GDL!vz$0HiJ_viEJPv*C#n$ir5|!zOIE(0XdHx0O zTHo8ZZ%s*lLw5$d&Wsoy;Pir{1r@#j3Q+B@{#0cMNsre(e#HcQG}`R~rvPLi7qt|jj{ecG~nVSDc$-q<%svZAT!Sm0ei zihNFlc8`Lb@9u~u^$yn`H>)^bU$qTRn)K!aSZ>&f-wpCcv6uVrAFTB|lN6b&rKF{w zgCG!nzCMZONL4N%UTAaTLO%s>;L%qfFPdx660^uUevX{c*TL>@D@Kzw8wcEbXxY3w zwtom0+KEE^uClO5&CbkRPqY@)qe1l08R}oYY6QDpv=+NP@y8$ERYaQxEUaoh+8$kA zc20tIaoCSG=C8eG>@F)So1~_p;Ytn>;&k`$kVm5WBGDe+Gw~PR#!$>d7YJf?H z-~P(U-J8kTPcB-vWhndl9-qdS%%%|oOsq^zj~N$B(>xQww9oSk3e4p4Z6f{Cp0mhY z8Y9WQnVn7N=jVU<2%YvpboT_|?BsO5Mp?t+N=~5BwCnGZC-17IKcb(OreM{23*RF$ z+woa@PZ($t!R5I%QcvG%;xdjOw6U={H>8xe6lEPS|Jl1==@~lV7CVOXGlU2sPw9(2}D>-Z1oyD`?Fho z2icTL4Y>k^WQuZTh5^+NXpTK9$>qotpoUrCWfoC>)-rk=q#T{qK_N$!?ijJv^zwaZjJUgW^hjI0X zD|}l|w&hX?B(OxXL$ltapuy20>FPZ`viof`uuGZkT9ecPy+mN^YVhH>PH9!ERAO|< zo80vDW~N|`-o{wtR#01q0AujOYe^Ya1shDI=Cj@<(1^jj82S}ewT zCw|Ko>Xy)okB^0AKli3B4Ma*C&*|SjBg}1%XRSi$==_y57Tk4pb#FU4IdvT$&Dzc~ z0a;|j$(OByOd2c!^*?|6wu=g@SZg!n;o%7d0)d&yzw3vxGUOe>t>Xe&SXgYwbL39A zCm7unjw^ z5jqQqCl1KgbId92mHl&XxqZ5zpdh{6Sg1Si!dp97Lt1L;*=eS8?z{yBwW^e)(hsi_ z1xHLa7}@Qpq{``Dv8p@pU#zz64xLXCyvHh-s>3B1F?e=gK{Wrk!lHgtqGBmfr}mn8 z^A~S*stn?o$-LD|UEdI?x|OC0DNJ*FdwaHGwp|^5%WXdGjGXfR z$p*p~(@6Dc^czb_7)x}PGJO=GiejrwaL4feE87HtD5Tas)un}Cg; zmv_?do4>H8wu>7Xk4h;4(62l38^$Enj90tQR(1NVbOdNS49Dj@p|67_G3zx_wpw!8 z34c~LuL$wkJvCrpo(tW$KMG)_TfE_7G-Gw-8Qo23J*S+ZU)N-;vK1mvo+}#Y$G|i1 zV$Y^!t!}Y!-46XRS7uT^apiKWTZU=*3{hZ@RyeQ+p)_4)YB-qr?TiAU&rGYVpb^4Y zPXhx3=JOoEm6eq>HsrK^MoqQ@gV!uej-FY(@EV>g^ebvKQ^NWFBkD)D(!kViM*`-f zl&=N4(HQooS3!p-SeCtZ>{=fTtl$Ag+`ipy2VS-7Ytd$xtiz;q}k(^t*x#9 zobzgKXpnq6JG(jnb3gfW(JW}=k5pf3)=T=^oxfRB!?wI@p3;mZ7r2@v_k1wppFClX z2{adfZkKe_#;W1QNAsETOJ!x_&%sVdVC(Rv`y!E|fCV*z`^e<> zpx#}3zZcB0(IO3SwG2%?z~(u^==mql{AeMQo~E$F96%HKv$6&?fFDQ@pz12s|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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_attach.png b/TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_attach.png old mode 100644 new mode 100755 index 0a88ae79838a90c5e78be9153e7315101a7c2f4d..ff6844eda256e8613c95bdffcc03050a1ed85ad9 GIT binary patch delta 1888 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 delta 1672 zcmV;326y?B37QQtiBL{Q4GJ0x0000DNk~Le0000$0000$2nGNE0IF$m-T(jq1ZP1_ zK>z@+$TtOw>5(BPe+Dc`L_t(|+U#5VZxmG&zS~kPpnwu;DTv}$j0LS=B|-$>ulOiN z#6(e1f&MZ6XpB-@TS!3)1~D3mu)d-KqWD%&!57-{TCGT-<+Xk%dnTS9@67DZZfB-; zPx7TRcXwyzeD~aQzB4mTWHK2uoUP0Zb1M;0BA`S-iGX2keWY?tBHD$(oxlv2&qo0lGj3ucUI%_F?4a6fRJ<+ERbUw|HVbQ~}hxP*Tv?F(QXNH{apmcT-b^Pd7K z;E2m_#sfD3e{%&9lrv5PokJ-CXuaPo_WOXfz@8j`KMi;kI9H5qL=@~83T1GC#rftu zoG1GUcoygtWA|V}#>Sn1Idq|7{}k|Iz-*odIygs=jRbCqGXYlu4~TtATC0JdgB}ne zzYl*t5wxcyaO}5%v%Fmaf7Hc|04iTgRh{3+`X3EK&5i87@8iZGDvdvDdo%?Ds0KdvKXot*F~l6Ghj1t%;!Ac3&$tNg@6gbGM2H9 zy$8H&A!&swY0mXs%gg6^;17>;b*uA6z68dx^Rg`MR8+l7|G68E2mx(ncA?^E0_c+ zgGm$YX0!nN#pg3U&MPCWKPm#sIon?(#;BoL#WmltN?sll#n`vNdPUM1UN*92c2(tK z`$!Z7(6Jr?YQ@+Apq1605p{a0%GA``uTjoRe-b3YZgz#(-XAsrwEh;U5KXhb@3W9} zsTlhmXjddjtM{8(D8Fjf8jk%CHUXsV8^r!!zzeE&6G;y#m3Eldd7sO1ZvZYA`+Gb( zOUI6L{s@f#YCh(xa@1m}*^R&~MN+dWU(%@l-!1l!0v}suf0iP384GPfmf3*W?;msm;5=pA#p)tER6{~`4RD|8{o6V5<=Qm8 zVi7+RSVPFRcMF`~ov$xt0i34{zC>Llf7S1A)K}}6BpD$cmYI|_{s|URj=c%&ut@AC zr5?A#`BYd+uu*k(uK~L(VZ21i)Ab(N`Fs{e(y8}N_LjF%>Tx;u298m5Y$`;&X6e-HH-E&(WsBY4gGg|U|;?%}?nw?Oq6NdzopIqDV0 zeon2lI5j^{^%y<@EQscap@S}A>?euS7WH^<9_lf&2)IpbpWv+Qwl-(yD2Zp}sUD*t z0JA?{m8Fz%zh#}PB-ZLNYC)e29d%g_+UTW+XUu=^=2o)vQayfcX@X)K0SCnP6xE+=J8bFfmYIQ1 zj_6L(8V~gtI|BBK#Ft=&f0v7ub7GvT)MJ~6dW;_dXopX#yFd-B;QXAYIzL@SQfo2V z+9;G@O3B{EtPU$&%4U-p_!?}QrSNeRp%wI=AQWLe3ms{Hv(TZ$caF)v+nY24?+;QE zea_Mc1c}Dz2w)QCa#xt^^Z6d`0Mo^o!8p7vzMY*}OG00RJQex=$B S2EsT1000068Q|y6%O%Cdz`(%k>ERLtqzyorgAGWAGyQCzsHnlHG|{V1)mS&#z|c^^ z%uLVF#MI2pP)EVYz|ctF0EofH~v**||!)Vq$3MYT{&SYT@Q)Ze(oXVrpP!WT~W3kz3&FYvq!kT$-DjSK{ens{|C$ zOUX>Jg6eg~rFZgTCIgrSmbertDHN9krKVY>;I_aKm)^na%qrQgqwZa>&8Hd;v89ulN{}5oQ`f*HTUep1pc|iv_ZKgIDS8y?| zX7$!JIPiSkgQ>GDZ#*+Iuu)w9!F~RO2kP1i528vBjsdCw=aE>DMd zD<5n<$LO+1Q0U&nt^Auhy(-$xtvXeOELryyYAa6sz?Xj&sNvp&wX=8H3&lMIx}#M? owOD`Rr)V#jzZnnx;51-Z)X;f%sxj{*U=m~SboFyt=akR{02q1Zg#Z8m delta 706 zcmcb}*}|pR8Q|y6%O%Cdz`(%k>ERLtq%DA0gM$r7t`4wlov5h6s65fDPt{a6*}%|5 z!Q4{M(A3bx!ca%S$iUE8-@sVk&{)^d$jZRd%FuMs9q;rdM7VpGKjG>H#c@OummY`!EQluNl7A^{>{Rcx z@47Ps17o?Ti(^Q|tvk2;vkp0kuzgVZCU7**WyKBUlJ}guieDNQHOU-woqo4`>4nf( zkr<9k)*@fHniM|vs-<#F_B8tc>8#BUu{4Db$|^IzC(U_Yxg;oamRrJCubY8-Z``M) zZg2J!aXYJNKc)OsL%avm!CH|GuA(zpTC}_C6{jmQxLSmzpPK&OL9%ac?Ju63-p_(J zIG;;zFg~ZgKpIc|5#f^W_85Ze3gAyLL0;w8RqR>cFgDfiU?q`WbkzL Kb6Mw<&;$Umul*|k diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_fwd_copy.png b/TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_fwd_copy.png old mode 100644 new mode 100755 index 07c61196a78f60d5307f79277454ec59c832d47e..4bc6df880e3737291791ce4970be2590236db124 GIT binary patch literal 1177 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`vLFl!_sTY(KatnYqyQCInmZhe+73JqDfW2&$iQ6q^IL(9V zO~LIJbDVnhfsWA!MJ!T8!-RmT2gHOYTObFX@Kf`Esl5o8tbcxgHxh1=8@usi*e>#-T z)tp>6~w7*41Q zUaVnh*UIssxc0$h&u^W5hF_YrG>%*B=}KL2QN2vrd?(ATsQ7csBRGBUs;^n!ta3o6 zR%x;f^ZQie487)G-==02&)V}Oc?tuI0s|w50|S#l1B9uNQ+V2XRT3Lm>_Po+2ma0X z-%dXEZ^6=k^RjdNPx6Eq-+8fF#evUOjprZV+oKG3iq5lHl`aiC@MdfOHSwBzHR_uG f)*5ZT%EZGUebSs~$gTe~DWM4ffP9Vh delta 270 zcmbQqxtd9_Gr-TCmrII^fq{Y7)59eQNIQTq2OE%Fm05UiqM~{|!&y%k$B>F!Z*Kc? zH9PRMB?ea|pPy*#UwXSN*scA7P2>&%mdc-XMhgs&-LN{JoNWix3j!A^=Iyr=5Uie9 ze*Ux3?h_js7>piB>FdqdtJSb{;c=#;q8s)o^+)~NQ67>EvUo~H<8AFvF|Fy>ip9YC z1Ddz`6?rnI)URlm!pOjJa8lVK21N~)$OTy(YOEZNTnq=)DmJ%jIB;CEdconyz@Q=5 z^j==R=C?y56T=2}oz*8Ixi>K|oK^p0eu4>XAj6iq(;1igTe~ HDWM4fVi8>N diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_fwd_delete.png b/TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_fwd_delete.png old mode 100644 new mode 100755 index 72cfed16fc486dcec7f20f2b4fb2596f5bf8d18a..ac3d1e98028e25384d05a1e5db59bbde499448a7 GIT binary patch literal 1110 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 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/ic_attach_location.png b/TMessagesProj/src/main/res/drawable-xhdpi/ic_attach_location.png index 4ae9969ec49e70f88f6f261e4d473c0c3a16e1bd..3e27c97e7e79c0133c00407f31ff4d12a3e2596c 100755 GIT binary patch literal 1607 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`vLFjeCsTY(KatnYqyQCInmZhe+73JqDfW2&$iQ6rXIL(9V zO~LIJC!BiqfsWA!MJ!T8!-RmT2gHOYTObFX@Kf`Esl5o8tox7n&0=6++U@D$7*cWT z%`9J!kU){+@1=7C+Y)AfJ0zg%&C0BMeQL_ZWlbXH+cp>V7~Pt7MMYOhsLO0Cr&G7m ztsi?QglK4p|J=AD*L4|p;gyf|vy``Fe7RHpzS7va_`&h&GuGelecu25?s;=ZtGQ;a zIflUx!bB!yYnPr?nCOvnk8J^?4D(h6KCK@&{SBCp9n3ah`d6|q#b{DX1zw7SHT=4f8QbS;*PKgLb*%D=jpc}>lVn`f{*zrYo*B;N3#|IsIzDVEzF2wCt7 zzE=`HaPWJx?7Uw|TqbRTiMkE(vpM-q|F566VpHwhq-h6(+iRBz*xbx}<*%W+%Dl=Tjp&SBPG#IWKnpeZ%yo8oo@94(^(FoHbQ8Q&V*pIPEa`@Nl!c z^MS0E)lWis8SPsh@8F;RUWzG=#cq1b;wxols}&#YJ@8!R#hpi%ZzZK{ftnHmUX;%c zUu9DHHYr1>hBc4#v&5wv6DKy@Ul8-4x`{J+|AB_@Vh3)e98I!(kW{Ooy>zQotwdu( z+*@8=Uzbp?gZ>M@t=@XRb(d)N|7E#N222?TzeOtk@K5|TV=KeGj1oB4Zxd_^gX+c%xe(qjXoOa?H}d~zmruGc6dH3-RIeaGHdUR z?}O|(Z`^6|P}`BMR&0^;$(P|~?7bZ+o9n(A{?uw%_Vsh*xAR}3yWf9pKNfz9^#aR3 zIXUs4+gqIk9L#vn%{s%rr}W*H%TlaUrEC|UUpf8fzuquK$B+AkTp9oGY~W>NW4Qc! V`x9%~J5HdY-P6_2Wt~$(69E0FU!?#5 delta 945 zcmV;i15W(M49W*FiBL{Q4GJ0x0000DNk~Le0000y0000y2nGNE06P5HasU7T1ZP1_ zK>z@+$TtOw>5(BQe_TmKK~#9!?3+z!Q$Y~NUt(JX4+?rvs6`Qv)lxz5AfkBHn}QVU zC2BzrqDKXLu(p+6i(gSuqaLIv2#N&@+M}YSURo7e@RJ(B&r};~{0|)=2SaxE%}!#w z3qML;W@qQWyV=>d?=?{<6r#CQlF=M1L2wWp1P8%Ea5a~jf4B}(sZ=?WGW%#f)jB!9wh|R%-IZDz#2=J!{9m?fcW44!<23W8PM$@HsU&6 zo56Vxm39o~Q)Sj6($BfLF^*k6oG zspq!UcUmnDBXboz1X;ee1Z)DkEjy3e?o%6K-ViicRJjdya*)}g>sd_AKK|~Og}(;Z zO^NH2-e6&SkJHvvDFcY6?@ofdo??hCxXIA&3pfSJf3A$YlOo&C!ZC;lUSVi=2YfSi z3en%Wj${lXf)^XwJ$CT@L^uW!!Sf95J~{Z#3dbNK*z`Vik%RAr!ZC;lHXVhv9v8%{ zrr>cyyKSJ(BEQ#J?4rgs1wS*iTMF7N{I+o&$rwbomXE-G(>okM>E=?Ye2kGz@LgA{ zWelo!e@i#;XSGF@r{Dsoo#~>Lc3m`cEYxh_>m_pbF72C#%ix5CeKYd|d?=do3mn?M zQi%hAe(=Jf9tm8AADcf~ocj&;O?hMz|>$EaH6BHA2|<3QpN zFYUTwT9!d@F0PZL&@?;d_1lB}E#T)2#ELJ5zTN>g`3TIHV49BY z;FUvNs&icG@u-&IzYES`@YSLY*&cz|Nnb(veyQahkF;rNhuF711JZblhZdfUfnCPO zcOq2@!Bl#|Xqj}@s}YEn;5=_X|MkRhit}xLHVLLe?_!-Tk#EPeg3x{w?;02>`aHtd zqS-2#&a!%nKKEdBr!@npiS!G-V%X1}J*3@uBK*%o5F7*t!9j2k90XUa{1IRPLQd;I TA_I{600000NkvXXu0mjf4JEik diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/ic_attach_photo.png b/TMessagesProj/src/main/res/drawable-xhdpi/ic_attach_photo.png index ee1e52b7b90cac8a455bf9999f330bbdbdcbafaf..25f0d3c8177eab985f937e2cfc5f0bebcfd02a81 100755 GIT binary patch literal 1588 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`vLFhHbsTY(KatnYqyQCInmZhe+73JqDfW2&$iQ6qkIL(9V zO~LIJW1M>RfsWA!MJ!T8!-RmT2gHOYTObFX@Kf`Esl5o8tmXah&tqU6X&d0>LT*!sP|;OLo;QhTn`DEGVPdd5eo9K(P2P-!PUU>ZVp`v~u$NoBDz5556 zWtRV7j@rPbT`A7+T)Hrl^{8C^k>U?bN@lgf49~L)JR3MPF4p*+KVUUivg6DSu7u~? z9abhXK4&pGq4b8Y@Q}lE-EWy8s$8x-e7^-n8CBW1D`ch!>6J02IcTq7arIHXKl`bj z8<$7p^99m1?7ts$-F#jhyMRk)hROr|7tC`Xcr5&{_=4fDO<2Amdo}N}rPU!(SDLf_ z%})AmwnOZf&&SfB>N`ukbE3*nRTCoXG6ffSJ#1^~2{ge~I-dH?>j>oxWZ5 zTc3B6)Rss`-AaWssvm7C7G0SC&8GJ3?>EOk|BYyjUOZ_>=l1hT|9>5KnzR0K#^qP3 z=kG6P=$5TMD)Pj8ui(-nGY|fow~8aeJmSEtE{0#{Pj)t*`@ikz@+$TtOw>5(BPe*&;cL_t(|+U%OYYg17a$CHO$I;n&b?PR-4p{+v(r#3hiTSURZ zA*(-eEFD^L5bJL`Wwszx>ZYlaLq+Z2KVYdtv6TLr6o1h8J@74D4r!CTych4a=fIb6 z-@E7Jet75J`_4_W)oL|!m@LX1GBaQUHedrbU;{Q_12*8af9y!J4y975jE}xL-9Ag# zb^w&i<rQ2cI{mMh6ZUG+?P%bd04QLXnzS!&&4iPrPF;B!v>0H2>o3lA= z`*6Cp2EB%spk-)>-`xeBfcl{#bTV{c0euQBK)dSRFKC5&56wWs&{ZfOVoJY*E|YmbV@%{X)LghIWMC+<2VmJqK}*2Pkf!j z--Ga_E5o3_q;M!Zp_71qBR%4m7qcP%)(brwQe=9x$FRAuO%=i&~4~p#t@E6rC zv=FOMC$<;BJF4B?LM-jO{l6Cvze9M_I;z^ME$-*89rF>mN3|DQi1k6Wdwm2RRP9#{ z77ewEhyxfpTg)T$gYws*i%5DcknQbc@gBE~2BxHgpJ!9dch^fjnc zt+v;pe;0MqTkgGtZm1QylQF%mhx4puvkLkiDN_V?628 zk2LCGsb4o)&$>@_ndRSf12MA9jAGJ*OY6l$p4fer-i@00OhK1JI^q#K%eh-@@OvWm z6`yly4Jz$Z%RJ|%EIjTp?H2DJ=L^dKx1R2lOUKi;b7=v;Lj6;-pIRK-2$*X#4)D}L zjvm`OG`a77XaAQrU;{Q_12$j-HedrbU;~b2e+3u-U)F{@-g@4800000NkvXXu0mjf D>py3u diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/ic_attach_video.png b/TMessagesProj/src/main/res/drawable-xhdpi/ic_attach_video.png index 50751fc9939786a1e46d95497b6d42138c9c6e83..49f6685e00f5274d78f0653d899a2a7e724d2dd4 100755 GIT binary patch literal 1032 zcmaJ=PiWIn9DZG88y#~BBDjOZ>@vYNf7YgJT=%C<>k78iu5QJHm?f`U=#rNuuQn~> z=AaBg?;Zt*=*5HLE~0LDQbfGzJa`rn6;wp<;7iwb9;_kB`@{Erzu)`)zIQd7Io0nQ z^Z@|+Q`1t8jI8_hc9Z{H*RORl9KneKoe@iacayFiGU8VOgZ|JVT(?bZs>|+?rt+Q)qvnql-^CMkj_$ZWI-wv81XAC z$5Db1;DRAR;7(9H%kd0LUct`=#gHKKVXFDiB$}lb#hjFE#v-dIy@;_XGEAjX2~4de&uNB=D)#XPKAjd*hK*%Ifhj3U6NP}LsUj~(;UFuG3Zqhx;}XFb z$A_m9d?YD_L&;HrZE+=}lyzv}7FXTlMmlm`E9fSPEI~`V2-T#8bgFS=QR|$G&{40+ zRXgVr?#N|GGK|~UzZ%`zBJOdgZQGJX+xXBRZnuc7`8(?ytn|En(06dTcKclE$LHVL{puUr z=ehCNyOX(A#7FDk<@+l;(aB?=wi*N9K^=VX_&l$@hq`X|4DXv9$o6ja-M#$L1He~p Zzo#4A$|T}zXScoX-ApAi(!JP)wLfzkMQi{7 delta 289 zcmeC+*vDkp8Q|y6%O%Cdz`(%k>ERLtq-{W$gAGVp{kd5Lq*&4&eH|GX)}JtE?Rq&; zQN5nwf~SjPNX4x;w-0i*7zngJ)QEQab>Z{1$yPQQ(!u@duOseAZ7RO8S>VirjDPIS z%a7EggmBz=I>*`jrE@YPkA%U4=%=Ap3QNCSJH13yc1`{DS*|Ht?DSWsOb&had^3xLLBfFs#&l*jpcx?6{L>kGt}Q&KV%lHP zGL5aK)?%xTpr3AK8zWo=h*7|t;HNu()8XC5hp$WRnR4%lf&AK?DGtZubsK;R-&oi) avN0IzNpE^R_jEPTy9}PLelF{r5}E)c)^hLw diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/layer_shadow.png b/TMessagesProj/src/main/res/drawable-xhdpi/layer_shadow.png new file mode 100644 index 0000000000000000000000000000000000000000..8724204dd80619280b917144588db6e4e1d0a0d1 GIT binary patch literal 946 zcmaJ=J#W)M7(BtSwZw?h%c_T|HnQ%sxKF|~xFD2YS{hMet7Vx{&O`_ecW z5U}+(z<|Wg!pOkPz#m{mVuhc;IgL{Wf@S;eUOmtAe%^Vz^<;1N_O2iZd)A53;p-0n zuI_B}|EF&+fAi%QYxY@}4%rOHM5uezA;1doh;#_{<}bdInjl;`@OypMx1S=H1`^IN zQW`{@EeN%vG{WwLFyN4pA8O*S&tF8~dz$#HVk>r}ld*rYh)H+R>bZ-FTlK`F$Do!X zE)WogK^mNf2}(6_sf+kNGs_}aLfAwTFM{gZZJ^VbfQnQqxC(?oRV7%is49E_iV7^s z3V+oCETf8wiVwl+5xKY68={V3u6*&6CXN}4kSxz;Gig?mXgrc(wOY+Iip2s)6q0$! za9RkH{anEyi5vS7^Jxe&MeNWi(?lNWMG8T*mJO3tnRvnE6h|_Ylq{tjXxsmX2EiJg zunxJ5_n*Q^Zypi3LlQcTUEa9ie&#AddQ32*agWl|yo&8HWi%Pn2cZgq#1IwuQ((eu)3c-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(gnVDkc?BwDK#D-=TPELk~t|pciMi!2i76z6UE*7Sa z=58>(F8Rr&xv6<2Fuf@Vy+%0of|5dR0nlcb)S}F?)D*X({9FaFm#s2!y2aTIr+HAl zDY)HYfK#tN&@uX;h((HMm=G}afSB-P3*^8Perg^twHE=C^~>&+9~c-IojqL~Ln>}1 zg#-pBE?~K{uU5Ks{i;>77?$WXR#*kRW8!8OWxVjgM8Q<})K|77Ni{7gKBEGoNdo*G z35zB@G;_!@71+G+v|-@M4{sgLbo$N<;&u?+B`zj&WlMu(hdRT@nw*18JSRL|y8@cu zb_VinKET;=cw$U?gL^+?2ru(SF&3teTuyPS;s%a~C#kg^)|rsJKrta{fgwZWhrVlK zG7Gn|PIdS*D@?3m(o0hXGxkRs87-@YXLov>%=q58L-Z7zXw-rz7pYVKnT~j6>=S8v zCL3N9bg^6^&q@3G=ZjYwgxb^v^wrE~o@0Gv?eWJ%XXZzJf#ZxHMT&HObT11O>2NN% za&qT_U(@IGuzmWczh#rWxCXvd$@?2>@*4obUhu literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/phone_grey.png b/TMessagesProj/src/main/res/drawable-xhdpi/phone_grey.png new file mode 100755 index 0000000000000000000000000000000000000000..981ed79f0f12f224622ae23ffffb594304612722 GIT binary patch literal 1571 zcmaJ>eM}Q)9KKTQi56)!YLTzkgD5)a7j4(xS}bj0ZD$Fq-DtLG`f-OnvAy%|kU|V8 zI6qLFV5Y_`b5+;|F(G5Yq}kj+?Z}L5W1$+eOwHI#T;iskZb8S!t_Zk4#x8gFe&l(c z-|zkXp1kcf)h}i)S+fL!piG<9;^ano>RT+}{^Tj^%EkacXMm&TzAjP&8a z7W8h%owyfk+I0ojLl7S!TyECw*o^wgpwyefNW(#jV?&UBQ<(Dl>v0zN@a;s%fZYFd z2mu6UKx)+vxq~v}0m9l$<6D}mUH;~JzYaq-l>>bkjmN9&Jcr!4akfx%FR>T zG6c*(*m?uSqhcO8XFs>jb&1j-Y!$kXHNn8G;) z3(ojyf?^3W1X7A#AKAbf5H8cFM+j2$vLR-+OkBZaVJ{_9Nad*`%>f;b|Az*H^Js>3 z;?MH^PhrN@MBy?g&X5hXpKDxQVJZ}bnrYn2lC+B?cg|I@CP1) zEY;Y5HF|D~b5CkIZ(D9LZ+tw&xt->0-L|jI4nb)rZI%jG_&eX!^z^37HG<7Tb8bho zC&4eg$uEf&+3oi4TN6UCD&9S<7Omzd*U@=nEa;*MtXdy^ui)T^ykt4}TY2M{ zsGzHk>WrS~&!61flRau2)kq8v+O1__xL$Z+-C98$?uJhv^St?+=h1L*`RKr!j{I0f zo9>UX3-Vq)bv&KwMzp_-ISA^X?dw*DSE+Rj$zF z>@a*>rE1Cj=<*7UL_ci37ZZ(Lj4r>DXIt$0^&BsmWzRJdM?2ms-?dgWZJxNAmb|xi zybs==XaLuazQ4?xXYXEq$GB(JOB?RUi}X;(zM-g47$53-C?4#W=O#``O3erOeJcZ( z3eKFGD$1z(nK!Vw_|?|dhh3rkNb}hx*7IjGhIkXj;FjYJ@qkeequ@dM!7N@<99TN3 z8_eJzN}e=+^HDqDJ6tjPTmP{m#dzRTRL%m;awd~JBVnyy=mqf)+8UkO8 zv=>RUj%3t=&!PBD?Ct5jClnAr+R`c(6~vL%j@BRhUh5L4MOy|72iYfOl6s#H>UE!M z9T|CY<}ObX6UHly_cG&u9ykkoJUOBlcmtVyO!`A+b{!?`fjv;-+*N_E0aT|?aMgO( z`q_PAYsay)TNQ_|FByh1^SoBVL!Jt*3D?hT%(S9beKL7XOUbxC2xAKe; Z9&~==$(J|Y9+jl7ZChovrQhUf`v+N1D2o69 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/doc_actions_b.png b/TMessagesProj/src/main/res/drawable-xhdpi/profile_list.png similarity index 50% rename from TMessagesProj/src/main/res/drawable-hdpi/doc_actions_b.png rename to TMessagesProj/src/main/res/drawable-xhdpi/profile_list.png index 3853c42d049b68de2306f2108905cf8388241238..1383d6bc616c0700cb5354f8f6e599171618270d 100755 GIT binary patch delta 347 zcmey&-oUZJjVZ>+$;rsl*~G=n!o|eU(AC7r$k@%r!pzdm+1$d!$ih)cp(3}y*VoD= zKe;qFHLt|e#a0O@qL-4HVg=Rfic9b0MN9@T3!HE%Qc@@`2}(_~O2KV`GcLW8^_ZRN z73#hTF)%OyUFH~4aqG=>N3I415te}Zk|*^%@7LsVXC*sbn!UEW!o)~)?bc02+cs4I zRfEAlo*VD^j6Q#v8I|3;{PWG7cJZwYab7+DCd!s4Zn>?+^5LX)0(-~_z8j39o0!WS lTHiF7!?ZFO7{)d*G6*mk2zqZ(W_t({_jL7hS?83{1OV?0YUuy~ delta 334 zcmZqR_{_e+jVZ>-(!kQp(8b8u+|=06(AC7z*}~b$z}3ak+0D$<(acy$p(3}y*VoD= zKe;qFHLt|e#a0O@qL-4HVg=P}j7#t2MN9@T3k+~6Qc@@`2}(_~O2KV`Auhd>^_ZRN zkIMh&VPIfL_jGX#skrs#`bORZ3OpRH8|13g@tbjiU&JSCqs?pP zEY^_&YG~MLxxa41*XN}h?}YQ(0|gj9%xa1g)L+9Lpz)?#E>;3c65l8EI1kqOoZ b1QHk=<0ZmHuarFliFmsDxv;ErN@xNAZL(sL diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/switch_to_on1.9.png b/TMessagesProj/src/main/res/drawable-xhdpi/switch_to_on1.9.png new file mode 100644 index 0000000000000000000000000000000000000000..8a648b8ba4ebefdca2880aea25881d2ed5d32fd9 GIT binary patch literal 17992 zcmeI3dpJ~U+rZa|w&X3+0jZ{`Eq0AL7|aYNNluw^ED9MjYZ#2t%s7Nf*%e!5i{wx# zdykT$a;RZTdzX})LdhxZts_Mx3DLI(p;fJKfA9Cc*L%I!HFI5axS#v*tmk(>_r0F^ zV@2Dpv-pRCx&idU0CFe_;aMj=!v02dT8&>>tue*rbb7&8)=3jLN0<1pwE6QQp$ zW|d?@v@_iny_&}d(Rw<1SSFrGKpRkW2zn$6fv^Hi#1nLJ1U!yN!4e2mk^z;Vj~;tr zXbR9TBR-2wwKp>#n+}qUG2TL902PM|4i44{*45$hy>J8yg@VHqaYP~(vcL+q`3o5# zSbxEi(IB7Vn1KQ&pA#VD@chw|xC~ETpwJkDkxVrH8e11PV0WT> z<$iT)fpAR_gkTKmS3L!e+X6tGJt*J>@|ob8AZRH|zP5THhdq&;&mu`Q-@JA(g!2tI ziDuMoWGjqj$Ou|1bu}Mk2zh)*9?y?9y31@oAw;iUjn<+wm>hozQf(s~+E82pu^#?s7$t}o`D{;R3^w|V@V9Q9@Y~igIE&501tXn zh|mXf1R|Y2+5L;qW;|w~q*TU2v!KunPhEWjvL^$p&-5f?NqQ7K)>Dr`#Io^3eUMDi zCxQBuPoXEde-U~;p98fyhTkL`$<_Z~r}#>kFQ&5O2%ycmZPKQNw(dwHa{#w~KKe=F z#~Eoz0SvwXl$4t>=2N|mcd+pWCGi<4TPlMoX=OB~q#8h$5$?0miOU-I9CPD*nZUnC zc{Khc_ixV;><#)O71U^`5vy+p5%Ac;UK0+x)Y7+@*7cnTX2G8qOS`BRSni5x%;2~UOk8bS9{ zL;4TpU}FC=y&3*qAd80kw5(49|4nK8d%f?UE}bv$BmeDb8?C|5Tj8e;{$=Ylk{lkW zP}_xC0Ar-x5sYwOj7@BqQF~`e`}7MOu{R*%p%-+@gkEE=lhtrn7i8DTYPjo!r;|TN zNF$ET1{&1(F+pp8l8*T=7*$ zmv1>vQj9r{rfSl$d8BWSjzWiW=>Gt2{13qwEp`01^RN6dv7&!vR9GzOBrqVzq7)Z0 zADC8(3kC#Pl;T3>1Jg=z!GIu(Qe4P$iVFq=S(M^J z<^$78alwEfi&9+3d|+BBE*KDGQHl$h4@@h?1p|UCN^v3cfoY||Bt4s9tl2LJ_qE3;LOAx$kQcHXla)XP4$9Zjy(bP3LNY0Yn~apjRR zUZ4E6VCKskMhS^Q%9!1%n+WGD?=;uaEVpx%MYfo{_ce*`-dCqzakhD!?pU}+dHen8 zwHcd~GBqzW)IZi_#9wZF!S<@E=<~cbz9WH;`14NuT^TVT_ZQR?5*iB(!MeJt%W${)|-#)K1B9m_h zZxO7D$c~{YooMT}(2PeZFIGQL8`fRCOrz`$ZQ$9G=d@#}2=}m;`Q`LfeJ9z-RVbjn zy}c@0Wm$z8hT!yJXIl81=*2(UZV7+AC*E3=l&mZ-izg5WJQIw}l(Q?N48z|wdZ97Y zfQJ#PYHBBQy{gL>?Rbw`zTvFAf6L|9rQq$v(jS#7O`}Sb?PN_vgFTrG41*L65B6*+ z+nUYFZG4pJaB8>*T1{-pKu6a7JWjmwjD5*bN7t_$N?7^+VWb>({-&rHpOmSh*+5Nh zHEr$d5Z9UeuDu)VF3H(3)Z36)SXj7VVXT*~@?H8CFa3?n7kWKOO$3JqpH!xP^zrd2 zeBb{x&3DO?B?EnJJ9!^J^i(TG#B{kGl0&_ETiX3hkYAZwHbSrBYf*ydt=D}$2~A0KZaG2fefVduvk z>n$wy&4_3TtDY7z@7f2zkV*w23b@S~iwuKofD=OM&_PbhC0D$Y?Dd`(byv&fiVv?l z)rK-DJGellxqw^O8ttZj)dURy^^J|3`nz}S)~}DnrB*K7`aAnN7I@J`)3vg|OfTlmM?b|MP?Gh><-6V6lsDbd5FRt4+bJ06gjVtz%PpXP- zQQI#CwpwWQ1NJ2KyGbtG*23Pk*YNIBJ&NLL?5B1

o&vHkJ6&6jrEs`x?ufX^N8 z1cg1OoWVxFxqjZ>P@#5oyus_5TUfLOdfjt3&8ob|y?rr6D17V2Hs84M$ajEPecqGw zKLb>Yf?n1pt4*0Qg`UC5h&i4(bH1%hV(A{!#m0Di&Gm}=`MyUM&e#Xp(&_ZmSy@ZU zw#oyTxSRXTW_z*+m5(i+7IBWVNo!VgxIAF3jfJk)!J+QOu3LUnhK7csNW$8ZY`3uC&YY5hO`A9O4i69aPr297P*)h(nc>!prPm4j zet)B-3)F3>zxL;=&A@s8R%$(@{|#VXP;F{z^6u+ueRpO1;2-Wemx>k72Jf3w?9LmM z3={=-7c@6DY0Zr}JR`|QQ#qzoR#)KV^)$vbih8A(e|z!H)fE+{QH51iRr8XQnHQ2Q zHRDB7%rVMmGBXzgr!zC7#c^T>^JMvbQML{aDgr(GrL#^RLS5pu9c(X)U5r|{|VFu^$Vf_HwM335UH?q5-xC+7Ea!1AzSK{r9LRg{z+GEp z^Ur|5hT4dAr?wvJ|k|ln$T?vbY9@r!&;btq8RI^T(%l{l@t2KMaA`Oj-OL=*= zOJ`}f?rv>u)rc*dW}=f?`A%#RcM)~;9+5z}^BsC#Y*}VeQIT-EdvWNTWShMxZz!=V ze-N3NrMm*rmRcg{xwThI0BroNS9h~EJ`GNJ|NK;%25{r|$nV1FbsFi-JIcYoj+_?A8@2Wax7%T`0dA~n{{26jA`1Uc*~`s!1;vQh4bgPiw`c$y{8EEoVOdIMhyYTxTm14cI7nMw%69cn~iUyYh1xkNZJngC4UAK46oH>98Nnbx3 zIREBDf6t=kg31gI?QPykP72g=!iPWf$D+;(_0+O&xa9iuVbj$1opBlLyI4#Wg zutT+~xX`v%h#Wo3K;(z036*_oM{(?s?AFYlRaa%!2CcBunYN6}{K(@g|uCFgd? zRMz&T&(%Y~I$j=dW;?B|94hF1U_*C{IJY<_r#pd@Qk(xw(Jv1CSRYd+N_at@k(!}B zI54p8C1kPSYKO#}md5)&qGM1_Jw}GS;DyX-q9RkWYBxK(3v*3+9u$YQU502HH2MYI zFW_#lzR*tgYt~<@-Tkb9o7+x4o8Z}8KuN8fvE@p5e`;}9-xbseaeBHZ7Ye~uy`ca& ziDc(ZZ_<1cQJ>Vb&Mv{D$42EA>X0&j$qvM;p4Ch*zjMcqAD>%M;RKy0vVJoE<#wR#}PcH|VEUs@NS* zo)#g$$F!ot0XiyB*vDl&#Jx&7Ti1#scg;hcCwn)bLP+$U5Tk`TZQXqxg;1&Z zmCfEz^^#qrSN6Q?^4xYgS-DcBn7`5mzx%AIDNVDJJ<;{Le^vVNm8gzVd`wahaqKO0OVr4rvLx| literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/switch_to_on2.9.png b/TMessagesProj/src/main/res/drawable-xhdpi/switch_to_on2.9.png new file mode 100644 index 0000000000000000000000000000000000000000..435ce2150d54aa2944e5eb8dfb5c72f1c555a4a7 GIT binary patch literal 18134 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 f{bP0l+XkKFh|x8 delta 465 zcmaFBd6`48Gr-TCmrII^fq{Y7)59eQNGE_W2OE%lG^5;NqoOKPjD>}Xv8#)Tp|QEC zv7w=>iG`tsnX`eZrIDkdqqCW_qmn{JZh^0_l}mndX>Mv>iKmOL5>P}hB{Rhes@DjY z-pPxY44@VmyWvu#q)=QEl$vIhg4+TETzV(#F+0_(t`$8F^wDuo7srr_TW@Y}hK75*Cp=@m4n_bSrz`()4z{sG$z`(-Lz`!8Dz`$fs z`}Dnh#of0TyDwH=F<@k3a6nbmqxVNXfeEJXbgJ%AmK{wX-6>%0Q027~wu%VDv_|M> zYpNX(RY9@^EOp?|O>QGbgw-(h3=5{eX5wL}TqUvn^}{daKtC~fy85}Sb4q9e0E*mo ABme*a diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/doc_actions_g.png b/TMessagesProj/src/main/res/drawable-xxhdpi/doc_actions_g.png index 7b61accc5645f746e18f2879b3a9b02242bfa4f0..5445d4e10b8fbfe92f94c50d37c5cd0157ba02f9 100755 GIT binary patch delta 609 zcmX@d@rYBgGr-TCmrII^fq{Y7)59eQNPB=V2OE$KeY@FxqoOKPjH`*6g^`63kaTh} zG;}p_G;lI#{a!yQCS~+EN;Z|nL`%BIqvY48j?^gLW zc=4a;RK2G>P6EL^AXh28$o3Fvw|V9%@^!ZJqKrnDz!D&CbeU+oLRzJZ3yjP>L}u&v zsC4-l0=**8vLH?&Q0CJN^}s9ne4UF}gbP0l+XkK=?>6K delta 460 zcmaFFd5%M|Gr-TCmrII^fq{Y7)59eQNGE_W2OE%lG^5;NqoOKPjD?A*i?gGPv9YiKDBftE;JrtDCW_g@v=LvywtZZh^0_l}mndX>Mv>iKmOL5>P}hB{Rhes@DXU z-pPxY3}6-*;!>ofP+Ss}nr4-P+X5q8dME2KJJla|%3J~T(IHP4$B>F!Z*FbmJ)pqD zaL}SURj2A#&(wow1UM2W{^mU3o~~r9|5h8QRDpqkg`t6gL4bjQiNS$^frFvp?$`Cc zvK#F4L-yT&%gcnWqHba>P}?#FsHUf%bX`HZ7#M*HJOPXXV4R@KMcoldV7NJN)!S)jR<{8yWAJqKb6Mw<&;$UtzH~nT diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/floating3_profile.png b/TMessagesProj/src/main/res/drawable-xxhdpi/floating3_profile.png new file mode 100755 index 0000000000000000000000000000000000000000..eedc3fa88d8de4604d651be807ffc49df5f72390 GIT binary patch literal 7956 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 E3r(5?q5uE@ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/floating4_profile_pressed.png b/TMessagesProj/src/main/res/drawable-xxhdpi/floating4_profile_pressed.png new file mode 100755 index 0000000000000000000000000000000000000000..db33c079c7da5381b734d060a1a1343a024b2eed GIT binary patch literal 8495 zcmbVycT`i~wl2LTG(n08A}B>#LLl@SdT-KOC;_CCNJr^S6cnVRAOg~aP^I@Gy?2l< z2#81rfxA8D{O)^y+;QI+FC)p`*?Y}3*P8QNYtH%Y#OP=#lat*c!@mq*-BB1Hq?bL8oSnOkJ*%oK(!pNO9%<+2`PE($2L~VJWMGUj z*3=NUb$8`Q{%ynW>*@hWzv968-^&7Qtp93) zah78H_n?e5byyMZUiPfQ{4hRS2o%Z+hx0>)gyC=~FRLH~DkuN}-f%vskhm~hTu_Ad zKQA^wo0lC*Tu(viKe~WlQf!VGjEA^@fRB$4zYmPx-OE7$DkdiOw+}%QiP=Lt^#H7*z!+HsB7wos*rouoxT$mxGDOE5bz;g`iM5xV(rML_|qJ5GpLH z2!a38$NwZNBBm%Wr=+L^7gZ33LKTHX1x3Y_y`7SmyDRIz>?`i{Kj;^h`+v>*-?Dc9KQIoZvnhIeTSk5Gl9{>RpCaUxD6oIy*UY({EVO^VF?bU+d_F`ktHbwNZB<9&Ow98aED1!` zN+n8OYP#C|YdJ{!hl5v}vZ~7X81bjVLR|yd_KuDSD(X#X5aWKbDDJ!0==VN6jb*p4 zGrPZS4daX-cnOS<5g7CGi1)p-@#x1j1zVn2w@}`+P~)E3W)tGjFj^+>L>QGAk9xKS z<1XfY_)s4e9*zNl!ExjyBwN{r#ktGbr|jGN5v};+W%Ho-->e~j?3x3#%chOS%Zh<} z?!rPsNlOhrWuJq-@}h)K12ultMihf#3tOyYU$2G!S2y=G%( zdV2bD@4dODgM$Nn?k_=HUz(~-U9HHR?417$(;hv^((-v7`Ya;!8Mlm#jL*sLtdW|U z+7Vtk`K@vuX>?^WVpLXLc7Sj577b1H&QvMWOttg$Yue==u2%fVj~;&!Y2wHoHAdhL z=LJ7EGdB<1%}cTD8|?2NPea00a6YSixx#ZKva{rHz6j{cu!CzC?jWwoU@N%E`>BgdiTBO*754=F zjku`j8TW-$Y5NYlg@wf;@<*+R%+=AjvbwrDUyZ`Btm`lP^4s`T_z8TPLosje@IyyS=iK!`6mKYi}*%?Dqmfkk?B4iJwb15{EX`?+Dnwgcg=nlYu z5oMO66n9?zpqkyvywUeyF)1nOW-ZwD*W1-m&Ja4>*&p#apK`B7V^HhUT)k_gpZyZD zs@fdhO9h+^uXVp{AW_VV9zHQGH_2|24kO)-P)m&&RLnXFqm3z+vt&{p* zDK+a&Z1-+TM-=7F9UBsCRp(~CGh@Fz+OCvjWnKP8g^0%} zHn#wd-jAYSPG=7`C8?RFeQD_`hGW-lW6T;EL+Prdq|`GuHb!}Qyi-ezJjrCO5$bNZ zKShPEBpfB_?sy{CI2h@x8HwVJEDyj9nONW4e5IwLVw_`GEWzegIzs_v=qs~ox&GZ6 zf?qkPXiHPTG=`$<ctzSU+56jT{a}l{jQMwkL2_sh4Unv-rt9^ zG5}y!g%Gikc6i{(amzFVjw0PaS8Z3o=eI`^51S zv8V!lPa$Y}u6fmBz852fKxrEn+Pf`0#mKkhIVe7sU?CUF+I2Q&n3wbBu<2LZc zbIrQiT!^CbIcaz1s~|&ve}7^k$9UPjnwZ;K${ltvmS<-xIv3bVn5d{P2}RjW(dW-U zGe~JTBz-Q9wi}MrXO6lB&&NK*(8mwZk}cW830V#5A|fKx+1c40))GDx6&K%3H3ghb zZ!IdpCg256>+q^M9mpaIG}9^$&kw(IvJY^*-~zSaazyXBd@vKJ9<|99Q_LpaDk&+6 zT3uU%c{1qARQh$J;7M*ma=F3N_up8<{F}^(RON$sG-G`Orqs4-(ph zE#Qq#en{}qq#5jf$rPZU`o1Gawysb%&<((ZYG;kWUed8g7s5<}DOc&G|J&sVKb@b6 z;=;mDp-$3_t=p?Qd^9!<>hdo0HG4UiKO5Y6U*Yy;;pGSO<*(hBP?s>HHFY3Vj$=4@ z)COnnyV6UWt(fN-&SIS7kSMckx{$ljx)Xs__Ty5Izc^cqr|~nX&yz*_kTFa7W5oR( zk~o`=^tGjq?{!8nYi13NfarL)REkGq7|=;k5-caK$XBtkPp0e84w(va)v@AFe+Ut#+Gcytdd*btc>i1w)5{(0 zM1ImOy>IObgr2W==kJqMcgNU3vW?0t#~}kX;(os$hrGn3a zNJ-_;%1_t2$$xJbynmCQ&k-+0ED4uX_VW`X%6udwbOc3f&moapyz9yQnv8)f5%hX~HHeaowsx0Ap~ydt(a$v% z6gtP%ViPROIDxH;ou1#E6$or>FJHcFmRiNd{b<|s>Z4W5GrN&&x%{%X4=%c;M@r3V z#n!)f-Lwxn#cd*J9e47fIIv@ZoD>18W?B3ROYXKh^mmHc`lmc~euw#NWxcBqFPV7z_uGHT0W8%bh&kBz>! z@m_&dYM-OvSIGUPrl?0wM?Zv*e@r?@=eFw%9*o1s7hk`AjsKRG z_Se8QTV9i4-zsanRZzhjTQP$wstE#OVws|k*|NA>0(z$N@fBwz5Y=7I8wFU^%SGSQ zMIV|%A5tSdoxrAyl{m>+9(VS8%*`&d74P(jw`Wv{oxvljG&6h7b@Dr9UHr z#XWxfc)jP|^9SeW=j#{8JNea2T<2uukLUah6C3De72($jw_fO8}X2?<|wzVmGt zQdeH4txYW54N24o(+sZd*u_?S1zX_~^6Pe%EbU0hszz*#~AEfw$0vw{Pd1eHC_Z_k|iu>%?HLB_S?Y3#7TUd zz%7qp@ny@+)&6?Jelxp%z6P}V#JCMDYev~{Zvh&;0_EArnG`}>M}@KX7B%8gv0An~ zYeJ+(gg$-vOJpQt^LA`Pm+pyRCHHKNZN|i-3uS5sakG$pLW$N&#)P!{hvLO^bEa?J zzU{JT05?6UzH{2Sj>Ft$YsibZ(Wp0Nj?AgNJ%IE3VgLeN)j**Li&wSYOAj8;LDr%x zZg=E25?%{2MObgSbcKNgc_@_}2;Iq+ghcTMuRekw3eumMJ(tVVTXA4!H_m7yGez4h zf*neU-34Afl+#DijLR-dwG5AX6Hu)H|UB&mwgw2U+?^po!V zqr3;f)KrwD)AR{Ctx_DYfab!vOk9dOC56Z~8VGY|GFlyl;5NQ4T^Z{h-Fq10bR*$jV;2_S zEGhHGZP#EdB8q}v#tq1*dY9Y6_L?b&BV^HhJr>kPNW8h;^AK!dA?c}S^)NUejbqYw zOUGE47!+%cy#wT+o1fz&AAa(^RoXP*a>sAC$RvT!Y70~U1f11m9eW3LY}`iBTVhhF zA@N*1F>S@2jh%h(nfK{Wi&~9B9$jz-e4$8DuNK?f+>D2C5O7>%mh?@yga!K#Wr{rz z7Je*fhA@oeu^fCSl>vg03>hC3SiH-mwm(c(iL9CLZv72XO21#;NJpKiI@T26^HWc+ zoB|OEhMqqG9QH1huvBadrNRdyEcV>!yA7_2=E|^_H}sQbO0$9(8WPR;M!8EY_A-46{Ym&Wpf< z?`0d3w$_*%5gH1%-6~4}isH&UFFEv7+kAIQYbAewDZfR@VZ2<$T?dOAafmDdFM_pi z2R}dSxJOHf*4Nh;=4;OJ4I#xf-ogv1v~*Wwf0Lt0On%k^)cNmQGg-?n4pG|Bbe4>`?#ndDFzl67WN~lLgUGnSu~);b$-&@ z|F-(*#~1Y}3gr|f14&9rvFf7w(5Q;yAiw+RrJiEWcJ}Q*gy8#q8FnbW39sntJ&k=F zQ(22B5X&QOR<(xqq9ot>xbuo&Me8?-Ii!@167!ybn-{Yre69;WW{Xx%;aL^?#8mj= zrqWh2l|d*u@yn2+)z#H;-vj?|p?<(l9NXX<6d3r22H4@t z$3WgEE0(R6MU<|`qi^57{WekpSK@9935m?h@ZfX#5(wGl`@Tb87>-9J?bnKuMH!kN zfWUgGOnHA`psLqGRxF@v6?ZW*GO|}Zq>k#f_*wz0Sr_5IrFDt4Nxsm|QOK|J{-VFw zikH6FN*#4{X)pgUC!ZvB^<%O)-qX6q>}%Kj^sD31{0KEgMa3OEz*>S5@E&(D+lMu?`o%^SS;s3Pem>H3C;Wgb|MwqoxpfF0S1pNOUl!eA|}du=+d z)*_hx6ag8o-fn;B4evA}V~LTNlBLl?SNGs{B*SF-hXLmKT6e44i8(KASWKVrK=7TV zny*ggnHg*hoPX@jR!WF@hk;;aTvdVE#&>IA^igd<@s9*ToD~okyKO${zB5E15Ki$d zQrAs2HFVx;6&m?Mf?e7A$sOI^BgAgJyu5$Fh?h^uuYPql8+7&c+2_4HKnT&L zXP0}-L}9pPL@~cV1!H}d{5bpDvvPk%-lf!xzA8bE|6FWv2Yj&ClaMRP-8X}4JqU(n z`e1`!NT9S@376fA4xB?IAH_=cHR>@2gCXl? z*>HPoXvh+@96~%c7?EAhP}S;sJiM~9!f)@G3qf>XgDy`Vr{?Lt>m5SXq^E*i?R5v- zMEgcul50x#Nd)iR2QpK$(L()#0uQjxPdz`sb9z!zQjqFlJ-H|b?~7}&HwWS{77@0b zl{??)claoGG}`3O1|6>YghUxF&O)a*{9{FBCU~%aj84F{Z_Mbkxt|0a?#)I)T$J~S zk8g1t;Dx4R_KND2u)Dizk*LaQxvkultfOuw_doFyism|8VtA2Dfro>)HM~*uY+^~K z9K9}=Lu5yvEgJfO)UA;yieT~ImfbJZAguAQ3Q-8-_`EV+{*Ur z$|;w1$%MO_YRSpT(Y>NqQ=5P};PP~yyt(CX^r9^pXAtGYG>>~@ZE9-DQEGm`Hpzwk ztaM#DES>Sy4%Lt*=TM1O7pzj`o%lrw-`v<(w5apiC?*QaVTq!&#|PW5c2LTg#vJy{H#3E9CX>u$;sLBq9eK@+J7?+D3^EH2SM>OpCk2W>mFKAh)p3l zeW!)Tp8t8?a&vv@DjLT{Ra#o3%RxcHc)v!1wa!I&!CuUGCx_mYQdCc0KjpEJ(f3u4 zi`w82t3Rvs{S2wI+k14yd9sH?6!fSckw94*FkYZ-WngCZLh-|U0GtdsbPO-rv^;CM zBpMzfGH!53;VgHpo?kt+2Z*G4t%8P^9XnQ`(3^g%>k1Nv z?#D|e5jxkUMn7DB;p2Ow*k)qeX0MIDKn~b^W{CWPDD`)`Y{GqB=ngXUVk5;$x)uO? z3O1`Cu#I6KU{|T*>TpodV!4IaS&Qj8gj0xHKY&{Q{Q>|o(YGWra|sW`a*2G;~2%-q2DpW3lx>}A;~5W z(k++K!%{wHK!K&crA#AVdN(8I^3UP$4Z1IhJBlHpuHbPU6Dl5OkT!-0n!Vx+6gsZ} z+5n%dOT4q~JE&FsM;g6W27Hf%6IQ#$n*=9L*MCrd)k1@xdPoudJHF$sBi)2^ZIZHK!g{#na~N6(!)&Xga|n}IelgT4yK~F zw^uGY_O!UZ{(_h9m(}3cuXSC<;1wJ8c)F0?)d%tTeE3iLH`X+)m6esF0?#*6$~t>` zv=!|djey!={x3v~3=PQ&Dorw0bW{Cgi_O-$`nPn=mKKkNWUJ#PfAp>39bd2?Eg+0teH}RCDn+*m-bHtHjrPR%4 z9Ox{cl|Dwg3HP^Q?}gjS2;qTj4kq_L9h1xh#5SA1#4PiTK;J{g!meI5b#*g2_kFTk zRPL^k%K24IeO|p=&t^1VXMDRl777+VTH9kLJ8qARj3l!weo6?93dgg>v6b5$7CJb) z0GADou%(%%mI{ZuENXc;CMG7@8kU+KUw--W1)Ewb_5Q88np(y9_&5yh<@G2voL&5K zdJa;nn$pol5ly)34PKa=EH;u6^IYwm4h;)yxbO3mepk5GVfdX7Kq&aU!8Pge-7ws? zJEI-B`zd1jDYojwxV##R#pVD+PSzYik(vOB5EzQlCSF_Zdcl;hkycR$@Y;qr(GaMU6>ea^FFK@tM}n5L$lLgqcp zVW<RbW|01WA;pxc8MU~RJHa8-zSq1?V(h-6Uol;AlK+*F(F1q#wN?agRVLtxnX%_ z{UR(7AhydyTxQBq+hch*Y&8V~q;gZF(tHu~^S9i;_DSPb#kugk#R_l6WkH;$O16RU zuU$C#!@IZKsmaS$RrTx2@y_&fdD!o#MCRDI-KQqAoFU1tOZ}{!8Onu$WwopZn({3 z2+ogK@6^f?C(ku8EB@tD(%^Tvc>u5pdnQ$mql{!v+41=Vm@3DoEYscwu{biq6;iQ& z9?k^UW-!dwNc2PXNI8UwO#)$(*zYCjZy_`r5LmZz?~6tLfvNyDkNfUAJHJ^r z`5$MTetUkybV#)7Pn~dlH`*kAxB5gLD~qlWrgTyEsQhN6Z}uT*?WM>YN1}VQOic4K zf`Y&Azf_|6sfj-`F=3!@VR2>Q)_w4NzP25~Qwj*gC!9-XglpXQo!UmA{{Z31iAvH-^lVAapM zTCR`FWJdNuIkZb^ZN>BlJ<_BVHX+G4W)I&~M~qYi7b`9sg6{D=eE2YwF6FcbczNf1 zNNYp`4^kAYt*rz66$l6j7L;>DGkDj33%IpCDkJEd3q41|@z z9mJ1@Bvg7Fx{!I|+BpO#gW%LyN*k(6^4@C_A!G`uR-E}q=A&e_?y5uQ zJs1>^Pe#8e^|BMU(S{MoPh!FqJ?!rNDr&+bv?eh>sUxD6+4+<}v!nFuddf|T5HC(P q0ME;)B*YlYIjxs%w{=6vfYX`%?pc7NSjpeNFsLeODSVc<4*f4@7`7My literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/greydivider.png b/TMessagesProj/src/main/res/drawable-xxhdpi/greydivider.png new file mode 100755 index 0000000000000000000000000000000000000000..f6b2b94d63811ea9b00588d463a5b2b874ffe4f8 GIT binary patch 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% literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_attach.png b/TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_attach.png old mode 100644 new mode 100755 index e34e536692a7156790e39670a92a5743fd6e56e5..0a0cbd3671392973604be47180388d60c52253e6 GIT binary patch delta 1727 zcmZ|HYdq5n1HkeB{@ZHfxYwM@n8LD?vIxkUPpr51T2T}Tf* zJ3Euhp&PlJ)}M-lo;sz>LouOZVW&%|Mrx(wQ-u+&DKfe{@S>qC4#Ks$bLx|PE zhklAl$vjfF1;i7`u2dR@#^O+2I8-v(%ZcT*!^_Ldlfv3TCOf;5UCQD?v#-eOn@9pW z+Wzmv`WD(qIC3=bV60nASt@Aqb;$nD0=^~j<-j;e$n|`uXhUU|5TArSarBsNO!93>%7}9+>qYI7 zr9h0{H**?I*crVzN*)tq2tGIoSTc8gjRu}3@twh84|6szsy4Vz{tFa=U49vYRW`_L zA_^jYsHE|l_uXuoU%M8l0(cwiRjWk!CkqsCSo0Od+aBr?C=uc`4opr#!{C3dFzr@L< zRc;6~b^7U#b@E;aY+cIL7UU=0T+?{x{F(;>p5X3NC8B-(h9)}ybQ9mD!C{gG&vyy) zcz4c0NKyEERMS>r;?|T3{#jKQB`bA0t5|3BEtA7bD?-I^ywmgptY|(~RhYT`5f|r=$iUZKtn(xv%Qzsr5CYDyoI@ z`4atK|9WortT(J@b5@%_n_I-EBei*!a|MSCwyu3FK_aAX&J~y;lW1){TAd94;oyUR z1jUx-ott`xl;9qXx@SiX9uV70eVC8=_YMdvP1r#L_oHuh_5bD#OchWS+y``KM?1fI zkGak8(QT-AmNwkmvRmnAuk<-OSL4HaV~kND{5{j|4tt}o#^Zm#w;qphly&gOoDxD<;isbEyb~Uc8ORv;vH2;6$DJpVvtu)3HqyKe7(!q&_p# zn6z|WVj`KfvyVv34sVWVnjrEKJlFh`j@2)Zuj1+~jdf`#{n^H*2vbGoUTV0w`+190 zxNw9y7j`u0FT+Tz_GhHJ&RYE(?oQwBF8Rsqf@Zo%VN}9ZD3^Ql#?l!u4qB#lYbdO` ztWStP?L-S@D=r9Gn(#_uPONmw9=ZKuc3(U;5@y7!?wsve0vMZy2lFc~)q36txV_EY z4zYe2kCYX)4z4<$5E({RL<^#7qqbkwUDCfq(e+j()BNA)52Vd|N5)ol&d;Pjse&_I z;q<0eF5mLxKx-jFu;#-kXFPKVMF%I!_{m`^{4d>?7t-wK_n|$Y$zmXW3oUp> zeF_+}{;!O<>`9hwJnqRtS3x`Ah4i7p7dZ>;d<%&l+SvSiRjzHN!{|(8x3%1` zk(>7I-XB(58iE0Jta|EkR(9o7n%_YR4up0s^)bxd8|bO8_U2g>0t34f*S%lek#Es_ zbDb`ND1KsqKH>CwSb^e?M$e2~cGGG1m?5_i_f#Z85 zb-r0~39Q*!_o);LBUE=0mIlW&xRQ$v+-KOrjERTNw&x00W=i89Hn(J$eo!WLLjCtH zj1kXr&@$y^^&=2!mD0A>V6>Yhm;hF7Pv=O;z}r1K%MqCPQ0`rvqVwQRg)&O(Sdc%G zqen=%Z#;RXZRyBL>#@fpH8)p27d;*1yD$1LZt(GpV(|?LHYg0@|Ksz>39KVf+U_Q^ U4VQTU0DuL2z5F?itjPTT0E|fqzyJUM delta 1782 zcmZ{kdsxzk8pnSSq~c6K?J_MuG)?n{V#4x*K#Gc%(o-|MoY0d=c*|Bf6{b)gEA!-K zx%60Crf&0+Qr=LUWnL<_Wr2_rOLUIR-<*^;bnbc1&hwlRqi(W?; zG9Wh1K?;Zw^Bggcd}hQ_L2O(2p)t3Bri8Ny1TyzX&=RdL?luUc)5`X z1Z(U$UJ8>*rX_RE@Zyuw88mO}jgE8N$vEngoqAIBC-vYwNhODut)5GKcNsjxt z!2M%vk@F^h{w=>`D*%B1&Y)3P=ag@whEr9pNRfB@#p&|N;AbK5QpY?Nr517OaBMr2 zY!TSt7X+_yYRL_$=-9L^BZ_k5&1ea#Ll`W@t zW2s#!rqP*T<`wk27D|;1DF8~ijUNrLzh)e4V{=RS9EWn9-M*?kMV#=YnSUY@m@j7@ zyK82=`X(nSKj*ELA-`72zklwS(XPk?*`^{}i?MzLJeEJPOe?{{%w>=;v~tZ5z~tqg*l+GYmISv^;%JyN>m&ifIop9eX^ z_HDjQst>00&4njh%RIIXq!dfV4SQ~N$nMc0>wrS;Qt86)M?<)Kof(^a z=b$02GYN)2!o4Eex?2`5fAg~|anAeLV4OM3OK^4OGoM48@&xa$9xE$|Yxjy^+%vJ* z)}+0rq>is4UZeto^~>f=3>d{aRM|UNTpzueDn%_ajKK){oUjBXId{D5P(B5Dvp0`L)XnldcU^w6go>{vsP42{~5o`Df{SNEH z`-Q--gsKnK7%NE3dD_#uG1T+LL zfXP}uFdo3>LN^pojX+-RYf7q5x$$y=(}}JBQFkVlhj`a$o?Vr)H*fCwUOvW$L&v89 zIZc-W+Z_kHN%-ph8o|F|i$yUFqrMY#8<- zt9_Yxu(=Odfb=lr#B#o!hH_o?1+a#PtT~u3ekaCmT8zr$IxiRS4!)|}6*`zYYML^p z0Cy;AOCNlV&yS)32B}w|zEk*6JqoC=)ipWc82ccFXn9(JI>6R1*Egcgp(CxUL?-Q@ zSi1MlNYGV@SD(c-h?Gw-aj>|d%;i`)G82<}WwS?HxA3N9?E;Jl zDEu_!mmWWxnFxTB&lMeybF-F?=-%!OD_qLwN*r#m4PAG}W+8y?OWp4FAO}?#x!HCo z%_3m*RSMj9D+H7FfES~_Eq?%6tR;tgK6aqDU1tUhi`$P%fZ_+p^x z=2pde%Q^@2eHyd2E9=e=yr~v(fzcm)Q>`#jLuv880F@yg0lGSJls;N}IH0 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_doc.png b/TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_doc.png old mode 100644 new mode 100755 index 7a199265936614800ef381d3130430257cfcb997..7a86b6f08e4bc4b01c1f9795edcca31eb40e8b84 GIT binary patch literal 1299 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(gnVDkcSAF5)9aF-T$-DjR|3Eakt zaqG<;N3X*H0u2wBu)JKPE>P9DYyHDTcW?KGPbd>! zKBHA+$*&W$r+fZyOk6NQ?Wd8f$D!$1g0rZQjBEuYD?kN;GATtP^!}H zu*xH>@yY}p=9LPO?6>USb#$f3X_#G7Xh>4xWqYyS!+DSRYpItd)*5U<7e5!<{&I7C z=5>WxB8465VgW`0hs=he295>>CJqG%p}+uRF(~a~x+P_I-=BBE*2D!<*)D8OT%gXo zzpQS{3I=zyI6L70_)mt!R3!{>3}%on*cjD6GFVKUCLZ n_XPci{j4wx76kX|GqN!}`L+BsgXoq9P%-7{>gTe~DWM4fRI#`h delta 1602 zcmV-I2EF-{3e*fSiBL{Q4GJ0x0000DNk~Le0001B0001B2nGNE0OFW;H~;_u1ZP1_ zK>z@+$TtOw>5(BPe+A}AL_t(|+U#8|bK5`=y<`F^XjnlT8dfl7HFTh10z>;#N&_2c z7(<7p(1nHyR9OvGmfp?mO+B8wy>ICx@6OyzCW$2Lz1_XtcPIJk3(eUvOqjfoX(=@{- zAdyY@SOWNk;s3;#@v(s4?fLi#q>MiTBAWnv#YYuzjta(sj~9p%BET}$tPLLTdOnf1 zUio+<0&rWMq>vO5^_hI8t&D=D)KA-^4FOlk`F&sZVks0Jf{oAuSlO~Q` zp8amh0>rwTfr5`UK}$`AB0Y7*{1wi3RT>&w1gs6j?E230N7x-x!FSAx)I5;dQCz zYo9ls!yJHlp$+&Lai=-H(4;uo(b`r=AY?d%p$F)t<)Y%hY0G|bdZ@UI8 zKf}awUO4yu%Hz2H2{-}YN7)RC8dcd^YP{bBSG577#V(wy=;Ym`BOGW0AJ4 zU-tn1o`b(Ncx(*tF}b-mbjw(ySjY1IBm{8qmj>`d#5EW2v4-v00KTqKJQ|MemjKXr zbUCvQ1mAXle#i!{&bPo^M+V>5>lTr~e-GKfHDNt$fr%Lbs7%1UzfF*6qS&HHwF>!S93sOYm(MHbNRUQ_0&o_+3Rn4&qwZ5BKFk0H~tc z&9(+f+66$9xVFj>{Gn!*9!r+8jrOFKZdxbTg-pXe+B#`1c20_^8O7XNuL9lQe3N9MwTK1=4y4qY6n@U zxYnz(nF|4`4XnQ+fN!Jk3<~^I1eBUa$z&Ne`Ri#%4RMR zaJ1|Vd@HOqa@|3JpNat0GgB3;2Zw^6wX&HD0lHLkmk|7H#I@cD0KG?5x6gSL_`F~{ zw>M`Eq6*S2wyYdUC|SJ4{L3MLN5PTl-$*4$creTf@^R8wi}@E-hDv*daGiD#)O=GyCMJijw30+i72ENmr8 z*7>6XKY0pLq$IgDaN+>`9_EuQo2<|j)XO($z@DKwOwtnt=<-X|_PKYrgCu~g!#RMA z2p|H;hyWshj0hkC$cO+UfQ$$r0?7W`KLG{+*GD`w7e*BV000002uVdwM6N<$f<$`h A*Z=?k 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 old mode 100644 new mode 100755 index d12eabc51c1fe3a7f2336cabaf2b3ebc33e9a39b..4ff3b63bbb00fac54333abc4bf56535d9eabeb84 GIT binary patch delta 805 zcmcc5{gF$tGr-TCmrII^fq{Y7)59eQNPB=V2OE$KeY@FxqM`<)(nPO5Rb$;`14Bav zGc!Fy6H_xYLmdSp14AQy10XWfH8im@HM24@pZK?A@*PH{$ytoqllL(x@C2JFXoP3x zrR0|vYfi3Xl8JFPaW;1~wlFoba4|MCbTx5wcCxfIb1^b9H8eAFbv05_sK_nw^|f-z zPcF?(%`5SAu~h&GiEd~N?2?}<<*F`qEChuuw|G+n|>3i(`j~w$-zcN*G^gm!N@Ho}Y zSRQ4yCHSAGn#zWoQ}Ww0Pal3(dq2J7r-lQA0s|w50|S#l149b~kYEAwHP-Hk`o)@i zn{997y4O1%?^$;K--4!Pg=Ho67MDMAEXbVWf2#Uavu@Bv#W{v+CUmtFzEdk$GZ9Gp z8C%?b=jb!XeAdNn;g0(X_pE7FdSltEKPN@YgG-%L!E=sCgG=ES=Bbw~W;J>lM|VET zV2$E+SH7^y;?_0COk*jSnqlQLbG5?~guQy2kSx~d|kC;?+eX3NE zfy{C)r8(@MSKG~&)^L6pAh*c{G`&MBb@ E03=)|ApigX delta 936 zcmey!b)Q?YGr-TCmrII^fq{Y7)59eQNQVHi4F?;L{BdUPw~2}xjKveZ`czGIlMM__ z6wEF43{4G9EDUuNj0_Bo^$m>m4UKgTjjRkTtqe^k{wNXe^F+7 zW?o{BOMY@`ZfahMr;DvpMQ(v!N@j|cd2&*sL83{Lu33tqg|3NZqNQ$Pl97>as)?CF zO0q?=siC2vk^)dQ&>U>~jh);~U7cKw-HZ&)3=Lh49E}{!oLtI8?b!{>7-m>#U&Ro0y!LSCU_xp*eXGlR=7^Nt#KbsfmTIg_)tHu8C<%vaY3p zQJSuCib1leX`+RRk)?@}LUBn@YMNCFnVy@h$Lv&}v2oXQ1_mZ3PZ!6Kid%2)7%dp`5P8i)FYlb>}i()jnCd*(6L&umq!v3b%< z7Ua!fzc4v+MLpN6w#cIk`f^urz3Pj6dZTUCg1-i@SBP_UHD`Wewha%kIivhyag$J@ zmWI)?CZ%L3wT!Q;Z>Et3XWFU-DKj*iCM7Ln^Xi)^v_kw$h{N8*Wel%GgRNGS`G))VYyG> z&BSeuVKcffKjv*)p<|f4Af5M2kD^xe8MPORUoJJBhP$g(i?5jDML@{J8P1Ns7j+#y z!cgkEx82U;=n>1e@#5ezJ*{S~Q3NZ6Ac)I$ztaD0e0swSeUZDU0 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_fwd_copy.png b/TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_fwd_copy.png old mode 100644 new mode 100755 index 3519351e07a7c7806c73b16d126fd395c453cd92..31054c20597cfd50532ed016579619b075fb31e6 GIT binary patch literal 1324 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(gnVDkc>}2HRWNB_`X5nINXy|HU;pS#&;ppn>>|$x= zV&dim)9aF-T$-DjR|3v4~Pj*wm=R%;iu*SQ+p9GS;rioTgAY@xWLoJF{I+w zn>)T<{u?{ zb}#ANW_&yY)@fg$T< z)EoJ&%X_9YUJ5UZjdM5~Sh8@*sgRi&Dsd)PoA{=Rr>>c^>)21{o1ZO$-%W|!ckBya zO7ywnds(+)+)oAXyY_|4gp1+%_P(jv_Z^xK{JMX`Jiy*yLDciz=K|NPaW4DSJ>PAK zm2&Jwd*R<_nrCP*u?RRYFtP}+LMR~H1;_&nIWPo*WE>c_?(>@eu3#^Jw-}Ho0+j>G zWN+L$7W2i*EnCx!WqAv&*)BX3^ppj^~@-i7Ur_I%dP6F#W6U0S2~1&JiMY R4auPL%hT1*Wt~$(69AMI(9r+@ delta 360 zcmZ3()xxaU8Q|y6%O%Cdz`(%k>ERLtq!U1xgAGVNno({sQBl2~QO(oEF{I+wo4ek8 zhYSQ*0(*88o_lD_pEF_78i9YO>Pi_@f?jP?w@`FF!u+^m7YmC30}}@WBTEAVlLG^z zLV|Rhsh!Hwk~IZ}N=n`hTudOD-3#n?cb(_UI`Z94h2gERf#J_7L7W>nlGk(1dU?(D zq}qaGYq>cC9DypC>JtQZ^Lgz3kt&eAGkY?Fs0#y!0t48N1J5RZn0txS#G8R5z>zz= z11#8J`N03&^Cp``OPUrmS)FI}b6>3>;J~1B=F?Vj?0c;unL-3WR`;m=^atvLxB=?V d17>?zB^XSO>rFk>Rba;e1fH&bF6*2UngCp`Z{z>~ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_fwd_delete.png b/TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_fwd_delete.png old mode 100644 new mode 100755 index a25ac46a4d5836f1c752519eab98bb9c36a83627..74398b6cb8ee1efd3e380be3802b003a68f59735 GIT binary patch literal 1209 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(gnVDkcV&H6HV&ZCKX5nINXy|HU>1yHT>SAJPVQFq| zVQJ|K)9aF-T$-DjR|3Q!gkfv4~Pj*wm=R%;iu*SQ+p9GS&NpF>>Nl+2aIJZXd20sWg4Q_4EjRZlHMKfUioE&!m+cQz z#hDxAKR@&DnzHYGdRDcp0s{+&fPzBJ+I=bJ~<)_88cAz-msVd}Kq5nHa$-*LiKTC96ZEDz8G;Wd|jbwBE3KYIVh z!ZQlGW>0tDm@f77!j82^qxss?z*aCav3LM6#6HHL1_mgH3rThg*9+T=#d}j(qEwlp zQdxHSvXo2~%#f?}X(*Q8d2ScmTz5IQV>?%DtxLIkG)_r<;_4GcCystznSHs+p;jk|c4o;;cjf1V8{Z0w4ey0T2L< z00@9a00clI00QtffKutOw~j-1f1opC`l>I`Gid$be-=LffB`&!PK^2MHlbzldnf?P zfv(K?9Gov!gO);?Xs7_DjQ;MStzsx%b)mOIe&!N18}g(q0a%5e4*8k;(6x{!RW<}* zcZAREggz-t09qq_rcD4e0$>mxk4a{H8JgAur=pTfZU*XTg0-h-OfIx@fBsN2;VNDl zP#s!SM=$2+Jc$ciswT9d<%u=;q8&W|IQ$4+E<$IaQ|jzcOkhaO=o9o2zWE&m0Im02 zfv!X6b=wHt5(V)FdY_k{at8qCOa0|8bkcCFlvVKrzG_+o@G!7#W>otLUoBfa4UNJ1 zxy^%l0246+phXU#8;P&Fe^vp!(DHy~+tYcNO~j3^kx>Avk%<~eo9S<|5LMg?G$i{4dNoV9&y3BI#TOV%X- z0vLM?uw)$qAOHd&00LkTCIAAkk=QU1V+`OH#4U&bxCL)axT|N)sjl+66J}*{euZYulx#!Zh z1fiH5_0k=2HF^LFL7ry33Egmhn{@P>^pAKAy@Efyo+O0Qsz4qgmG(9A7cZovu8*G2 z@{IClm-Yi%Tk+W;B}4%ICeIQ#6huw8sjPEK)-9zvAdAg9rDPpaWP90E$A8Z<-HC73 zG3iDC1V8}v0s#;JjQ|LMMgRmrBY?@WKLQK@H{plJAuC6000000NkvXXu0mjf9lgK( diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_fwd_forward.png b/TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_fwd_forward.png old mode 100644 new mode 100755 index 4fca27f2faa900ba3e9f847b44d5b1c6bcf95dff..f3c8fd6d846c626024fb7db9ab0dc41374e306c3 GIT binary patch literal 1904 zcmaJ?X;c$e6b=v~MMa`$1tN|^6-2X4NJ0{cn2kjY=7iOyN|up~noLXv6I_lE#09aY z2q=me6$G>(Y5}cyz*Ul5*sNfVtF94q&Y5)O5BLEZGGKS0` zhP6oKA|o8TC?-z5Xr7v<0mCK&p%y+apo1|bVA0LjoA?$1_)(XS&mG%z5cmke<_W-0 zP9@3YfEYEx0Gk#}RWl$6;BaUVi_PIc;{hfEV$vD-%b`LnKAXd5h5(-*5VvO3%;75} z;h$~cD*>p*Faw`XH=E5gb1)4xrqCfCkLS=}GO0L%YD&{%N()tQ^6yoUz$Ud3F<=O) z2ONq@6`G0(K-|+$A?OTWWc8-c$Aljk-J&$mAsWLGQZG;@`+ulT_XTaj6!2Gn|5Ml$ zmu7(J3fP3E8r68>=J-2I8Teu&ti(`b9E#5GJw>?|#ZZ$LH2~sR4iK1#=ryR>H1;E2 zCgVrxO_)-zhNC0`5Lcifh=woXu~{sJkj3FjAPADOxNHeW5-wy(A&AQru|&OG393%j z!FsHhtNF@h_sMmXg3f?jmcT}2A*=~EqB`JX$b6)4UzmOBedcQV_9eJaE**DwJ>9cHsQ|?zn)I@E#{40}Y1Y#_+-?!Gz!Raz)5953Vqt{e0aCWqmNtO+ z?UBi3jo-93V!4;_KG~j2>gwDhwME6H^Uns6HG@wbfo)XlX*FlnA5#LX_q_6CG5seu z>^b&}doxJ(YOvSq>+FA8fw$ff=}~rK4knjZRWC}G`;*0u%l{tUKYXue$W9$Uf@*et z^^mqI`{1)=pWqQ*C4229IVCZ(;{t^5k5H;T#}f{EpT1gEtl+&VJPDQ4lLkCKve=NZ ztbFD`JrWd1&k}9xn&Rf;UYnU<7&hL?g;hid+~IG_+dva$PGYaQPI@j-$T=c~a+hnR z^BH?~Sv*}jDmrL#mYre<_ZAc`>AZcS{buD1p|{~VVQ37;ho0ET9U0%s+MU1h=-u@{ zFjrlAR(q}k8=9B;=6#T^MabRQ{DD+lxnx8E3i)+!W>vrnazmrfEmciHu$z$-yP#9e zyEAEQ$IP1g%juNqO-1*lB_rGYHxA;NyQ+=_9k|`rWdF66XxyY*D?CxW+H$aL<}K>^ zK)?M(iM2tJ7UBNa?X0eW&hTVR;M3pm3|ok zZM;)G>wnw(KJUVgR`-JIe*v6ymjsXO4Z(1=Rx>zop|fu8n?NPE;3SkNV1VdUT9bVpbFQaTGG$__+72@085UHsU- zkC-ne{oMy>0DhJc0Bgx;ca zAL7NQ6W8u;U)p>PN`1K}PaRy&y}$V9Sryie!`2?N*{IFe)|mt<*E1b0Wp-zk4{LU8 z>T}iGq+K-6aa!iJDUaNFTQ;5Q@hAw|;ri3X(d7eFH$tm@{w~Q0kmyU_if$9rBp#K= z9;R(id2}F2o<{d5eW7ydxijMGIOLn&rUE1J4s)z1$7ef{2uIhnvYTx28IC(JN*W`n I5+z&z0g9C31^@s6 delta 998 zcmeys_m5q%Gr-TCmrII^fq{Y7)59eQNGE_W2OE%lG^5;NqM}Cq0#6smkcwMx=0xUS zb`WWOE8-Q|+_0%b$w9#-Qe+y_qNO4k@e?an{Fwfyd5MlLzlu#j%Ms??0^W{J0Rr6- zXJm_%-5RUr9QnBS;~Zt#%r$*E&uhNjnRz2q!ZncLq$Uf{CI${5W@2Dy08$D-jLdyn z&v3}#%CDQtPCU(%Uvl{mm*u`4UObLlxh(e|zUq9!n&GQJ4a0>714f2TQi}b|4Qu?e znjc6rlnT_aEZ}Nd&v3=zgJc62$3A9(b_Rw+0t^lkObi^(3=RLCC0H3E=cWlTD6IIX zqrlK$z``KV232xslis`!R-e+`=chlZe}Ctm@4N1ozdQfjx^>SpPLJW>idC`=mElj7 zDzkm&Pk+*W=brPvCpVspuHM^hqg$cAgl%E8^MyqBAJ0-}b(IRvDSz{x@#o6YbCWA2 z`*txVG}Iism_F}M+imp|M`!G_KXHBS+r>|MD_3&fWiW7yll=T$|HrAK_lF>( z%`>X++;hG6`o?`8en+?4C)lU@1unnUIzg?$Ste-CshEb}LL!&kpB%roCd=r;+HDF; zSQ8rB+b!;@>KEMZnf*HX*FTl`+*zTyFB^}}YBbPcOt?}XSaEiS{qeV3p9J^)y}IVm z?3A#po4uG1DE#bLd|u{!om8uN9_wz8eOC{y@tS-pP~`4;9)|xG$(I5v#4CPe*3@oT z-+IV;Mnc$9%|Acayl-HB^0v=TRBz9-2yvO(`2`D zx_$hlv`lOHv0HL}4B_?7T5sF#zmzpNrhR$omtOH$x9p~0#n&wEs_lPXR=?m&?Z0QP zs;%|vpOt*V|1WE4{a&2B^+wV|(+y$S{PrFXr7xDfXSjaj&o!+*&QJdK{f*`RXD4oO z_==(Yq5s8(+kY9K-eC7tvZ%z^`J}t{g&nJZivMignk)B2B=|?p^vxXmFW1jsx$TdG z+A8^vm6tKCZTX--632fO!;r}n)0}OYxMbf*( SKR5yvF?hQAxvXc-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(gnVDkcVs7H<v4~Pj*wm=R%;iu*SQ+p9GSxqEuJopAr-gY z%<;|^4wN~nF2v=u&vCzFYgy`NNhfi!8eJ)YGfFF#?wE0H>4Mvig`q61U6EUE=&8Ot z+H0m{$}&CnM^x!zwPV*S^mZOKn0sRG%>QQ}f0Ow!G3{1jTHTpBJ2{JIb05Bt%=Vl` zG(dng5P~ik`r4h8|Gm$?b-I>Dvt+=G36I}2sjX=Is=%>pnf5au_e&Fud#5i?$UEfU zwS57Lr~DC?m&VVRG8ge}X7_Wx#J`enm6eKns#wfKotK-M|3*&}F?qaTLGYv|E>v+x^%*AOX?(QO?Vtj1K#X*@mahihG9P2pM9o1cAIoF?!UHG`5+zR zRiSqG!u0F^llJ!KaQ)&t*TnpHAM?3}ezw=EHoxtAShnWdL|@0#4@y&JR;|hoJS{b) zd_mH#i3%J*aa~7#)56N7$4v@B)o-}mna!j8S|{yuTZ0{aBd`#XJvURlq6wNgC6^flj&7s{TF+YfAR zdA;T9T;JaEI4t{+T(@4=O2rLjU&bH%d-3yx1}y0-V8 zk8SuTwmag&OP*Iu+XLi@Khc?S#>}Tg{Bp6)^Mj=uvZIQULr%Qv-X$7vWTQm=x6>c* mKQ54g#SJiqd}97_88BR5Hm}-s_l%{WGTPJC&t;ucLK6W0Dng+E delta 674 zcmbQhvxn8NGr-TCmrII^fq{Y7)59eQNJoJ%2OE&ISmDS7q*&4&eH|GX)}JtE?Rq&; zQN5nY&(p;*q~g|_yQjUR17(hXbV=$ATlHvZz`?1y5vp+=db>21a)-xOM3b7P{=|m^MV7j?;{Vj7tAupcQ)$QPt_9Zt_(AYX1~DlLao;Di>KX6 zhN{5sRE7lC&7};!4Qx^w=(@p%ZBh4c=(Ceu_0y$f+sp;V{~3QS{}olc^4_ZJYchVH zu#ZWZ99HTs%XCZc(@LwLXWwkMN@rM~IR0wI`HzfW9nLbz+WE&miJAJlerEika#P-t z4_mHx)Xe|>itEC|3CEf2-c8=cQDX4qw?jz{mJ*YwSImRa{Vgz)&+GwS|wBN|EOQB zcm3m^XIHdK@BO`568cx>`JH)FUSCW+R&Tf2_fMetm32nPr(enMdz{kn?b&K8*@D>; zD~s;)zuLFqcEh)M*$WTdNbfsucS|knr1aP68+JE->#I%M^|H3)_lBxFVdQ&MBb@0M*Jh AMF0Q* diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_attach_location.png b/TMessagesProj/src/main/res/drawable-xxhdpi/ic_attach_location.png index dc9b83a570895af6739fb202d807dfeea43375fd..b6bd6ca9ae7a9f9213d51bc5cad4b35979054291 100755 GIT binary patch literal 1993 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 D7A^eR delta 1126 zcmV-s1eyDt5Bvx*iBL{Q4GJ0x0000DNk~Le00015000152nGNE063^Y0ssI21ZP1_ zK>z@+$TtOw>5(BPe*_LmL_t(|+U%XdPZL2D#-{{0cp&HrFh-HTz`{ioPKriP21C#Y z@xaL_3TmQ6Z^V!&8ZgnA^kC3nLL%{^F^U%@Tm=3D)Qf05sNq0jsjctX*J#(7x@~v6 z?auclUjn<`ndy(&H*aRAC6Y>|6y(3EfB>KY8Ukp5251PNe*qc-Xn+Q22%rHP0%(8+ zXb7Ogqv~P{7#JAH{CJAoN3O}^@(uC>@|{Wr7>mV9-lI?E30cYO`w%)xQ&tT?LjYZA zin!TsKm#7%-e<{&$aTQ>TWjQJg}JBS5Mc$!!t}f9lBz@)sE_IaIumfl{YwxpU9i z4EizoVGh7&$on-Rjx&xO;@v9!811D>FYbKSl*M&yBX`>vqj}&PH=OGv&yWweY-5$Y zHgklr*Hp7WuuIn8vN>+Y}tbd#Y+O_J9=tY=-ybSf%s z2t8<)ZoQbFjEpL8){9e8mhNdwzYXbKMttk;(j4b!e>aPa*9>_=%5sY9Y_|zC$H~iv zf1LUe`9gtVgs-`(^v@w{rOt>=pjrGxd)RR9HMvK6rJLTJl-Ke#&ke5`Rsn9P3HmAc zQJJjF7-IH_3}}CEH`pTQzsj|XlEUR$DC&{Al&zpy7o{Dhy&VkvzPQkVcPQvLSq`8h za$9d#=`8_qkILnkd|m~(m!n)_v{T(Oe~3jrC@U&ub(hPVE4SUG9E0yEciVP#cLuiY z<{3)%h*u>8Vc?mK=$Q{s)~G)l(HU@O5Hr3?2JM`#_p0mX!fm0A4k{5U}I&=Kufz07*qoM6N<$f-jl{{r~^~ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_attach_video.png b/TMessagesProj/src/main/res/drawable-xxhdpi/ic_attach_video.png index 1fc4ae63630ff4f77ca173a3ae7495370513d782..66843485ea8921aea39abc8295a1b6d792dfccaf 100755 GIT binary patch literal 1092 zcmaJ=(QDH{7|*sUb8IM+f%)3n{O_SRiy5zFtX0xIw zBEt4G1RwOxe_$^P3Uf@5%BF&Xh)e_p_n_h&`miTKFJ0UDU=2y`yYGI#-}l{j-_4Jt zhT2+=wNMn*mP`m~GA5j_c|ZA&ZQUCp!%-ZYz@umq7bFu>VFhI&NNUm)OhZYTn^}iJ zifW?O%mkhghj|%k9?8LYY|S8SiV6LGf2d6fpL5~9cbqE|GcFsCMp zCLArMGIB952NZhnGzi)}5zru(fUQmI7H@~>vMx_-$IZ~748i#jy_?j8I0B-`guw6V zb<19s1svyL`}`co_5h!k^)X)Za&ESd_jA0jA5d{E!k8JtRfvaic%KM;t)+T-Q9v_)MRz5 zQYKO`#+D3*^?02vRe_@Tf2gL_&=yX^y?p;EY-Q#Q$fTi#W=)wK++?Q{%HX3WlrSw2nbaB|>ZIFE($*y@)kCht!=w<-*zdl* z54Sw=wz?h9O*``wd&M)U) MCu1pLDRSZ3ADw(*_y7O^ delta 410 zcmX@Yv5ncVGr-TCmrII^fq{Y7)59eQNJoJ%2OE&ISmDS7q*&4&eH|GX)}JtE?Rq&; zQN5ng!_&nvq~g|_yM|uOjv@^YV+FSe9GpBOdBxHPyvw#uxTD-UAums{iqAhOQFTc~ z`~|J4u13F&>g;VU>8Rtrq|Q diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/layer_shadow.png b/TMessagesProj/src/main/res/drawable-xxhdpi/layer_shadow.png new file mode 100644 index 0000000000000000000000000000000000000000..637e319f0ec318f63dacee58ec79ede0c4be2f7f GIT binary patch literal 943 zcmaJ=J#W)M7&bzRs*3yom=3o>MIyG(P7JYPsx*$NB^-q$5*c%`uZf%5=bkUbiI7lX zfq&2+fsj~XU|?crp<-r)k(F~Arwjzk_T9aDp6C6%H|^G=;`Xg=K@f`0q1EB*4gM9j z3jF{3=ZiDG++@u@>yjfjLlg^jpA0c@LNvl1jQsiO7hDsB>$^d(&-(6T!y}=DGK`dl zF=q=xZ9k2XH^B@H@hFH)@z=*sA_#m_d|Gi8H*Vl@aJZnjyJ+>i#l)-n;{HQWOARg% zVunB(oWXepDM|zn;7_VicWK||!FgZoB3?(H?DF?dl|Dj>HMklO; zuj2iuaMGK{SnlA2OsU5kceInaij4-vh!NT&D}Y}mG5))XCT6$qQBZ0=3u+c0uTFQ5g)K$+(7N^n R{-E!(E95j=*1Lnj%RlC?BR2p5 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/list_broadcast.png b/TMessagesProj/src/main/res/drawable-xxhdpi/list_broadcast.png new file mode 100755 index 0000000000000000000000000000000000000000..3118410ebb6ffc54bdd6784bb695062835ac5de4 GIT binary patch literal 1383 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?$=T7u*vQnx%)-gZ(9qSy!pzvf)!fk7#N5!_ z!qwairq?AuximL5uLPzy1);n<84nD$B>F! zNg;uOi4qP8oJV#!{CV;1?QLrZCLiV(GqM!y*p3)CR_tE2D(kd^m4-}5^ahIp2bm{a zM?M#NUb^l0&0&vVhb4P+vjb-Zx83mzmmSjX%R8Hs5#4_@1eSz;ab@#3`cf1 zM07;(ZYdIw7VvL-re+povgyJB!!CzCQXRb~FZ#R{@M3=C{ltpRwq;4<4e3*Cstz?% z=U7dXIm|4&oa2Cu2vcvqTpJ^s&V`(vOdT^N*%%p?F8p@zk;IH<9tk$V1f`JeJT1+2 zyk_isrE~bI3~$Jklx?ugxRy|SK~up`Mu)E{RF=Ephv}B0DQ(woI5EFe5V*m0^hAQD zfP3P_az?35J8n5Wd@?P+hox$rkVB2M_tM`Y9ifdstodr$E|>{=-c3q)KXqb2HAjfb zmqbB!*K8fR+64k8?2nqaWGrZu`6Ad|VaHgzfayAK$MnG4j`D>qlf(q91ut-~n)YbH z%(hj&H(px2+T)}283Pqj%S#1J>xtbKOTnG4fZDO zK}Q{}H%PFZYR&dAc+7ew@czn&3IS0OonpOtDO^AI*Qnym5zg)VUb7 r&22NdO}iOqtqW>sU8LT@ERev!@-le)w{7<3prX&y)z4*}Q$iB}Ncq`> literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/phone_grey.png b/TMessagesProj/src/main/res/drawable-xxhdpi/phone_grey.png new file mode 100755 index 0000000000000000000000000000000000000000..a32cf0173b54680342d4cc622c61e33f1facadd3 GIT binary patch literal 1857 zcmaJ?X;2eq7!Cpfp@1A!Vo}!sq7-tHvk4?2fuJS?h(Zy?kX;}`vP-f^2xwCQ5y7L5 z$Eb*ml}oH>sY-!b0psnc9MyWXcsp1nwqnsi?FK>nqjYC?-|ze8d7k&&*)oMZ+RbIU z3l4{Ki;;@sF)Ot_&Uoy-=xK8_W(cSx2~B|0(L9wN!U;h*4FY1csthO|Qi1t7=O7*q zXHV29lh7pDLarLtl2kSf$*4szHV(&&Fd`~-7K8$6P=-dwCl0p#OawF_pP0yyQDjIY zl&O)L^iYCHu2h?{)Etl)5f1Q-TueXlZ z$rL~&tcL&wi5{w^P^kcuNuq`^m`rL2K%-D;WD0gOL#bh029rx;0b>^t^QH&Wx$)wt zF<;n@Ps~J7gi9vp<>is`=p7K$N44f#4$Wen9B{KplT<4#W{` zW`DyPxw}h=h;w~wM<8;jYp~Yk1+|^9@z^yF=hCh{#G>=Vr4MVL-?lTl6nf9BeLZjS z-PuvG#+?IZQ$a;fVy-|o^WOb>_s4Z-*sGLIy^pE#ssVF&K?PluD;VUTCe(4OO`CG+ zS5H4ct7e6t3RV)XB+N>?q#!81^EmQwo~yHKr!R9a@ANK*O^X>tQjb;Z602!IMDo<8 zMR@d#`XIe?z@uTZ^R?Npa|TmR|A=c^ls`2q?v$jW9HEXxI|&~3@J@J<&M#)`aJLuS z3v1i@6zRqnKT*(`bu;{u9h=Nwm51!ueKS0$IQNXG_JURaX@AS4;t*5GCB```*?2S< zxs^VpA?5qMrpuodi}a4pUn9$ww@%asAr?UXilhM5~W^Ht5G)RHv?f6M2ZTQPc%Ya*~=LOD<8`=){oyf3;4u_982TE6E;Kes$yO^`yoUOZW zKMf(e2j_D8QajzOPQ#6ds|>G2h~44YJ!Xf?*-x~mce8H>`>lQAo;su={I!SXyLsP? zRc#x{%l$zoQvhuUZ3&yglEN%&uJf z>USB$_P+F${#ToOS^dq{%>l?mFbzL=Hqmo#%?_)jTW;a`Z_{&-ni>7zLHGHA=ZhPV zrR(pRItu!aTT`~VNP_lFufI|&>rNJaqk;ysvy!)GubGy!XWylG|D{VygE~t~+UX4p zAilEPQn>8mbb(h~BN%>-8)q*iB|q))K0?o5AL}bPCu#iCV)ZqWV_)GFUU3UR7SFHB z@<4d8bWp2wRFr4#jPH72*Rd<)AQKKePVerU7v$t9dAa_;^HzjiXue4*BHVB=`V;`S zQj=ibO7CCXirHPi-U*PN94YY2l~e7{;%Mei0Q<8xJJK6rhsW7dx;_sYN*MjC#Yp7h JL!#wt{sDU0$G-po literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/profile_list.png b/TMessagesProj/src/main/res/drawable-xxhdpi/profile_list.png new file mode 100755 index 0000000000000000000000000000000000000000..b07f5de4dfb10b97e99ebe2810baa851a0d525c3 GIT binary patch literal 1072 zcmaJ=O=#3W6i&B`)Y5|0Q&n_G#a8L&Z@XzXcI|FAyX}H0WxJ*8p!+54m*c3H9;@PUU05K@QdBcj)-=03FfuYCfnTWzEb`lni z@f8P7txV*!l?5%T(uqP1#6Jiy3=Az|FUW~5jO2qcJSsGLzcp*ktgUTzDAc-6Z zB1|}>aXb%1k>Lj-qR96Hf#U_1Bd-|Z2c(E734@^a(8Qag&q-N1UGqg&F}jGcEwOB= zRANeD208OAAB{$R4M7MIM95vXu|3gi)fp&2g?#KI2VK=vILpBRtwB%@{aC1GrD_crBP{qi} zA+%V};$#tF*>qKKanf(Fe4{&-utib zHap8)M=-vrm+39_AXK($(#ot~2&tKmktS@f%4&FVfza&I`^-JOUT32hZZH;-f+RYP@su3>- rU+>O#R23`w@jy*KaH>qr-c!mglu+DwyDdKH_wR5fH6cG9y>#Ob%vnqw literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/switch_to_on1.9.png b/TMessagesProj/src/main/res/drawable-xxhdpi/switch_to_on1.9.png new file mode 100644 index 0000000000000000000000000000000000000000..b149e475882064e0887c774188d28778520637ac GIT binary patch literal 19313 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/switch_track.9.png b/TMessagesProj/src/main/res/drawable-xxhdpi/switch_track.9.png new file mode 100644 index 0000000000000000000000000000000000000000..3e3174d08c571f8536939a39b45437b94d51d3aa GIT binary patch literal 1105 zcmV-X1g`suP)dT{PE92&|C^{tYk8jX%JD;2(&WLV_s7klZT@iyt7-6%0#=EUUywauIZ9 zPA*Ozr>5<$?&+=R>2>nLZcTqwo%ijoI(@26CDaEgaZfUG77k^|d`OVixEYKC6Dhj# z7!ny66$vl}blmYS;3HrGH~}04=78mH%548EP1NVk36+4uRB6+X0RGw_LsJaPm&Qoj4H7d`3sqDPL$fbcSM3cY~WPz&gx zp7;mV3Mf3@eTd=_bqD7Qn*Di#F=k^0v z$;Qbc;4ZK=3f0lzZ(ts8eCKrY?C$M7C98E272JzTGah;U1eU_%S#c?RX( zBgbcjL<1ZEj!Q7Fy6z3p>90f9tEQsa67f?Gk~Iq>?!bo z{sg4SunEQkls8leLtDUKz%@3O=xZo%n}EEBkR!8eH-MLTORNoq&GlcRd?BDMB-$1L zmw+D&?rj2E=z9DTgBjHKFzmwMmQbBBLePL@0r-_F3xghPoID0Dx!<`@a7^f+ye^@F z3;jm78_o7MiHsi}<8O;7uG_A8j zxLX@aZ?rM*xB`5QCeEfAUsv}Nc&G6MN3$T!P1PQj3aQ#*MNdvrK0|nV`^77d(1)@8 zB1gP$@M96VA|fw5f-yJRym0Lw$g)4IgxFiEJ_pXC-gLf7+bP^dHvxPP+{?0AWlPnl zHqXtXS%!Jw3-l8=2ka#K`~EMwG_{H@0Ng?aFQf4^MBF_0?%xFA{|&JdgR~=>1SJ0f XwWO`~yy>;200000NkvXXu0mjfEl3H# literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable/bar_selector_blue.xml b/TMessagesProj/src/main/res/drawable/bar_selector_blue.xml new file mode 100644 index 000000000..83e879474 --- /dev/null +++ b/TMessagesProj/src/main/res/drawable/bar_selector_blue.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/bar_selector_cyan.xml b/TMessagesProj/src/main/res/drawable/bar_selector_cyan.xml new file mode 100644 index 000000000..e9fb9cc20 --- /dev/null +++ b/TMessagesProj/src/main/res/drawable/bar_selector_cyan.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/bar_selector_green.xml b/TMessagesProj/src/main/res/drawable/bar_selector_green.xml new file mode 100644 index 000000000..2e88b9f42 --- /dev/null +++ b/TMessagesProj/src/main/res/drawable/bar_selector_green.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/bar_selector_orange.xml b/TMessagesProj/src/main/res/drawable/bar_selector_orange.xml new file mode 100644 index 000000000..b468c53f9 --- /dev/null +++ b/TMessagesProj/src/main/res/drawable/bar_selector_orange.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/bar_selector_pink.xml b/TMessagesProj/src/main/res/drawable/bar_selector_pink.xml new file mode 100644 index 000000000..4990bc1af --- /dev/null +++ b/TMessagesProj/src/main/res/drawable/bar_selector_pink.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/bar_selector_red.xml b/TMessagesProj/src/main/res/drawable/bar_selector_red.xml new file mode 100644 index 000000000..c00e47a4e --- /dev/null +++ b/TMessagesProj/src/main/res/drawable/bar_selector_red.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/bar_selector_violet.xml b/TMessagesProj/src/main/res/drawable/bar_selector_violet.xml new file mode 100644 index 000000000..405397c10 --- /dev/null +++ b/TMessagesProj/src/main/res/drawable/bar_selector_violet.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/bar_selector_yellow.xml b/TMessagesProj/src/main/res/drawable/bar_selector_yellow.xml new file mode 100644 index 000000000..819c2e951 --- /dev/null +++ b/TMessagesProj/src/main/res/drawable/bar_selector_yellow.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/floating_group_states.xml b/TMessagesProj/src/main/res/drawable/floating_group_states.xml new file mode 100644 index 000000000..785cc037b --- /dev/null +++ b/TMessagesProj/src/main/res/drawable/floating_group_states.xml @@ -0,0 +1,15 @@ + + + + + + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/floating_user_states.xml b/TMessagesProj/src/main/res/drawable/floating_user_states.xml new file mode 100644 index 000000000..ee18cbee6 --- /dev/null +++ b/TMessagesProj/src/main/res/drawable/floating_user_states.xml @@ -0,0 +1,15 @@ + + + + + + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/switch_thumb.xml b/TMessagesProj/src/main/res/drawable/switch_thumb.xml new file mode 100644 index 000000000..3d6207ceb --- /dev/null +++ b/TMessagesProj/src/main/res/drawable/switch_thumb.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/TMessagesProj/src/main/res/layout/settings_layout.xml b/TMessagesProj/src/main/res/layout/settings_layout.xml deleted file mode 100644 index 6cfa958ec..000000000 --- a/TMessagesProj/src/main/res/layout/settings_layout.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - diff --git a/TMessagesProj/src/main/res/values-ar/strings.xml b/TMessagesProj/src/main/res/values-ar/strings.xml index e9947eec1..8902545c9 100644 --- a/TMessagesProj/src/main/res/values-ar/strings.xml +++ b/TMessagesProj/src/main/res/values-ar/strings.xml @@ -175,7 +175,6 @@ أدخل سم للمجموعة عدد الوسائط المشتركة معلومات المجموعة - عرض الوسائط المشتركة الإعدادات إضافة مشترك مغادرة المجموعة وحذفها diff --git a/TMessagesProj/src/main/res/values-de/strings.xml b/TMessagesProj/src/main/res/values-de/strings.xml index 9a9b14fa1..ccc7c267c 100644 --- a/TMessagesProj/src/main/res/values-de/strings.xml +++ b/TMessagesProj/src/main/res/values-de/strings.xml @@ -175,7 +175,6 @@ GRUPPENNAMEN EINGEBEN Geteilte Medien Gruppeninfo - GETEILTE MEDIEN EINSTELLUNGEN Mitglied hinzufügen Gruppe löschen und verlassen diff --git a/TMessagesProj/src/main/res/values-es/strings.xml b/TMessagesProj/src/main/res/values-es/strings.xml index a3aa62b09..6c9642248 100644 --- a/TMessagesProj/src/main/res/values-es/strings.xml +++ b/TMessagesProj/src/main/res/values-es/strings.xml @@ -175,7 +175,6 @@ PON EL NOMBRE DEL GRUPO Fotos y vídeos Información - FOTOS Y VÍDEOS AJUSTES Añadir miembro Eliminar y dejar el grupo diff --git a/TMessagesProj/src/main/res/values-it/strings.xml b/TMessagesProj/src/main/res/values-it/strings.xml index 73d140275..6eb70c6e7 100644 --- a/TMessagesProj/src/main/res/values-it/strings.xml +++ b/TMessagesProj/src/main/res/values-it/strings.xml @@ -175,7 +175,6 @@ INSERISCI IL NOME DEL GRUPPO Media condivisi Info gruppo - MEDIA CONDIVISI IMPOSTAZIONI Aggiungi membro Elimina e lascia il gruppo diff --git a/TMessagesProj/src/main/res/values-ko/strings.xml b/TMessagesProj/src/main/res/values-ko/strings.xml index 674cf4615..46c3abe97 100644 --- a/TMessagesProj/src/main/res/values-ko/strings.xml +++ b/TMessagesProj/src/main/res/values-ko/strings.xml @@ -175,7 +175,6 @@ 그룹 이름을 입력하세요 공유한 미디어 그룹 정보 - 공유한 미디어 설정 대화상대 추가 그룹에서 나가기 diff --git a/TMessagesProj/src/main/res/values-nl/strings.xml b/TMessagesProj/src/main/res/values-nl/strings.xml index b2b3b24a7..e1e5cfbd6 100644 --- a/TMessagesProj/src/main/res/values-nl/strings.xml +++ b/TMessagesProj/src/main/res/values-nl/strings.xml @@ -175,7 +175,6 @@ GROEPSNAAM INSTELLEN Gedeelde media Groepsinformatie - GEDEELDE MEDIA INSTELLINGEN Deelnemer toevoegen Groep verwijderen en verlaten diff --git a/TMessagesProj/src/main/res/values-pt-rBR/strings.xml b/TMessagesProj/src/main/res/values-pt-rBR/strings.xml index 13f55a2b4..e720194fd 100644 --- a/TMessagesProj/src/main/res/values-pt-rBR/strings.xml +++ b/TMessagesProj/src/main/res/values-pt-rBR/strings.xml @@ -175,7 +175,6 @@ DIGITE O NOME DO GRUPO Mídia compartilhada Informações do Grupo - MÍDIA COMPARTILHADA CONFIGURAÇÕES Adicionar membro Apagar e sair do grupo diff --git a/TMessagesProj/src/main/res/values-pt-rPT/strings.xml b/TMessagesProj/src/main/res/values-pt-rPT/strings.xml index 0d36cec29..dda2b67c0 100644 --- a/TMessagesProj/src/main/res/values-pt-rPT/strings.xml +++ b/TMessagesProj/src/main/res/values-pt-rPT/strings.xml @@ -175,7 +175,6 @@ DIGITE O NOME DO GRUPO Mídia compartilhada Informações do Grupo - MÍDIA COMPARTILHADA CONFIGURAÇÕES Adicionar membro Apagar e sair do grupo diff --git a/TMessagesProj/src/main/res/values-v21/styles.xml b/TMessagesProj/src/main/res/values-v21/styles.xml index ea24d7b27..cf7fb5480 100644 --- a/TMessagesProj/src/main/res/values-v21/styles.xml +++ b/TMessagesProj/src/main/res/values-v21/styles.xml @@ -34,6 +34,7 @@ @drawable/bar_selector_style #33000000 #54759e + @style/Theme.TMessages.Dialog.Alert + + + + + +