From a4d42cb97bb4f5b92232f01dd6633a9c2f0eac39 Mon Sep 17 00:00:00 2001 From: DrKLO Date: Fri, 7 Nov 2014 23:10:12 +0300 Subject: [PATCH] More Android L design (still not usable) --- .../telegram/android/AndroidUtilities.java | 1 + .../ui/Adapters/DrawerLayoutAdapter.java | 125 ++ .../ui/AnimationCompat/AnimatorSetProxy.java | 20 +- .../telegram/ui/Cells/DrawerActionCell.java | 54 + .../telegram/ui/Cells/DrawerDividerCell.java | 25 + .../telegram/ui/Cells/DrawerEmptyCell.java | 26 + .../telegram/ui/Cells/DrawerProfileCell.java | 105 ++ .../java/org/telegram/ui/ChatActivity.java | 2 +- .../java/org/telegram/ui/LaunchActivity.java | 93 +- .../org/telegram/ui/MessagesActivity.java | 34 +- .../ui/Views/ActionBar/ActionBarLayout.java | 93 +- .../ui/Views/ActionBar/ActionBarMenuItem.java | 2 +- .../ActionBar/DrawerLayoutContainer.java | 1200 ++++------------- .../org/telegram/ui/Views/AvatarDrawable.java | 4 + .../src/main/res/drawable-hdpi/floating.png | Bin 4153 -> 4153 bytes .../res/drawable-hdpi/floating_pressed.png | Bin 4093 -> 4132 bytes .../main/res/drawable-hdpi/menu_broadcast.png | Bin 0 -> 1279 bytes .../main/res/drawable-hdpi/menu_contacts.png | Bin 0 -> 1255 bytes .../src/main/res/drawable-hdpi/menu_help.png | Bin 0 -> 1619 bytes .../main/res/drawable-hdpi/menu_invite.png | Bin 0 -> 1316 bytes .../main/res/drawable-hdpi/menu_newgroup.png | Bin 0 -> 1417 bytes .../main/res/drawable-hdpi/menu_secret.png | Bin 0 -> 1351 bytes .../main/res/drawable-hdpi/menu_settings.png | Bin 0 -> 1626 bytes .../main/res/drawable-hdpi/menu_shadow.png | Bin 0 -> 942 bytes .../src/main/res/drawable-mdpi/floating.png | Bin 2800 -> 2821 bytes .../res/drawable-mdpi/floating_pressed.png | Bin 2834 -> 2837 bytes .../main/res/drawable-mdpi/menu_broadcast.png | Bin 0 -> 1136 bytes .../main/res/drawable-mdpi/menu_contacts.png | Bin 0 -> 1162 bytes .../src/main/res/drawable-mdpi/menu_help.png | Bin 0 -> 1337 bytes .../main/res/drawable-mdpi/menu_invite.png | Bin 0 -> 1157 bytes .../main/res/drawable-mdpi/menu_newgroup.png | Bin 0 -> 1222 bytes .../main/res/drawable-mdpi/menu_secret.png | Bin 0 -> 1170 bytes .../main/res/drawable-mdpi/menu_settings.png | Bin 0 -> 1349 bytes .../main/res/drawable-mdpi/menu_shadow.png | Bin 0 -> 935 bytes .../src/main/res/drawable-xhdpi/floating.png | Bin 5251 -> 5189 bytes .../res/drawable-xhdpi/floating_pressed.png | Bin 5276 -> 5365 bytes .../res/drawable-xhdpi/menu_broadcast.png | Bin 0 -> 1423 bytes .../main/res/drawable-xhdpi/menu_contacts.png | Bin 0 -> 1399 bytes .../src/main/res/drawable-xhdpi/menu_help.png | Bin 0 -> 1801 bytes .../main/res/drawable-xhdpi/menu_invite.png | Bin 0 -> 1409 bytes .../main/res/drawable-xhdpi/menu_newgroup.png | Bin 0 -> 1517 bytes .../main/res/drawable-xhdpi/menu_secret.png | Bin 0 -> 1446 bytes .../main/res/drawable-xhdpi/menu_settings.png | Bin 0 -> 1771 bytes .../main/res/drawable-xhdpi/menu_shadow.png | Bin 0 -> 944 bytes .../src/main/res/drawable-xxhdpi/floating.png | Bin 7705 -> 7587 bytes .../res/drawable-xxhdpi/floating_pressed.png | Bin 7567 -> 7612 bytes .../res/drawable-xxhdpi/menu_broadcast.png | Bin 0 -> 1610 bytes .../res/drawable-xxhdpi/menu_contacts.png | Bin 0 -> 1648 bytes .../main/res/drawable-xxhdpi/menu_help.png | Bin 0 -> 2289 bytes .../main/res/drawable-xxhdpi/menu_invite.png | Bin 0 -> 1656 bytes .../res/drawable-xxhdpi/menu_newgroup.png | Bin 0 -> 1850 bytes .../main/res/drawable-xxhdpi/menu_secret.png | Bin 0 -> 1719 bytes .../res/drawable-xxhdpi/menu_settings.png | Bin 0 -> 2280 bytes .../main/res/drawable-xxhdpi/menu_shadow.png | Bin 0 -> 955 bytes 54 files changed, 694 insertions(+), 1090 deletions(-) create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Adapters/DrawerLayoutAdapter.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Cells/DrawerActionCell.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Cells/DrawerDividerCell.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Cells/DrawerEmptyCell.java create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Cells/DrawerProfileCell.java create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/menu_broadcast.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/menu_contacts.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/menu_help.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/menu_invite.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/menu_newgroup.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/menu_secret.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/menu_settings.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/menu_shadow.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/menu_broadcast.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/menu_contacts.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/menu_help.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/menu_invite.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/menu_newgroup.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/menu_secret.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/menu_settings.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/menu_shadow.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/menu_broadcast.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/menu_contacts.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/menu_help.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/menu_invite.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/menu_newgroup.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/menu_secret.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/menu_settings.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/menu_shadow.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/menu_broadcast.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/menu_contacts.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/menu_help.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/menu_invite.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/menu_newgroup.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/menu_secret.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/menu_settings.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/menu_shadow.png diff --git a/TMessagesProj/src/main/java/org/telegram/android/AndroidUtilities.java b/TMessagesProj/src/main/java/org/telegram/android/AndroidUtilities.java index 03cb85443..c77842c5a 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/AndroidUtilities.java +++ b/TMessagesProj/src/main/java/org/telegram/android/AndroidUtilities.java @@ -457,6 +457,7 @@ public class AndroidUtilities { Method mGetRawH = Display.class.getMethod("getRawHeight"); size.set((Integer) mGetRawW.invoke(windowManager.getDefaultDisplay()), (Integer) mGetRawH.invoke(windowManager.getDefaultDisplay())); } catch (Exception e) { + size.set(windowManager.getDefaultDisplay().getWidth(), windowManager.getDefaultDisplay().getHeight()); FileLog.e("tmessages", e); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/DrawerLayoutAdapter.java b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/DrawerLayoutAdapter.java new file mode 100644 index 000000000..f4da419a6 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/DrawerLayoutAdapter.java @@ -0,0 +1,125 @@ +/* + * 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.Adapters; + +import android.content.Context; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; + +import org.telegram.android.LocaleController; +import org.telegram.android.MessagesController; +import org.telegram.messenger.R; +import org.telegram.messenger.UserConfig; +import org.telegram.ui.Cells.DrawerActionCell; +import org.telegram.ui.Cells.DrawerDividerCell; +import org.telegram.ui.Cells.DrawerEmptyCell; +import org.telegram.ui.Cells.DrawerProfileCell; + +public class DrawerLayoutAdapter extends BaseAdapter { + + private Context mContext; + + public DrawerLayoutAdapter(Context context) { + mContext = context; + } + + @Override + public boolean areAllItemsEnabled() { + return false; + } + + @Override + public boolean isEnabled(int i) { + return !(i == 0 || i == 1 || i == 5 || i == 6 || i == 7); + } + + @Override + public int getCount() { + return UserConfig.isClientActivated() ? 12 : 0; + } + + @Override + public Object getItem(int i) { + return null; + } + + @Override + public long getItemId(int i) { + return i; + } + + @Override + public boolean hasStableIds() { + return true; + } + + @Override + public View getView(int i, View view, ViewGroup viewGroup) { + int type = getItemViewType(i); + if (type == 0) { + if (view == null) { + view = new DrawerProfileCell(mContext); + } + ((DrawerProfileCell) view).setUser(MessagesController.getInstance().getUser(UserConfig.getClientUserId())); + } else if (type == 1) { + if (view == null) { + view = new DrawerEmptyCell(mContext); + } + } else if (type == 2) { + if (view == null) { + view = new DrawerDividerCell(mContext); + } + } else if (type == 3) { + if (view == null) { + view = new DrawerActionCell(mContext); + } + DrawerActionCell actionCell = (DrawerActionCell) view; + if (i == 2) { + actionCell.setTextAndIcon(LocaleController.getString("NewGroup", R.string.NewGroup), R.drawable.menu_newgroup); + } else if (i == 3) { + actionCell.setTextAndIcon(LocaleController.getString("NewSecretChat", R.string.NewSecretChat), R.drawable.menu_secret); + } else if (i == 4) { + actionCell.setTextAndIcon(LocaleController.getString("NewBroadcastList", R.string.NewBroadcastList), R.drawable.menu_broadcast); + } else if (i == 8) { + actionCell.setTextAndIcon(LocaleController.getString("Contacts", R.string.Contacts), R.drawable.menu_contacts); + } else if (i == 9) { + actionCell.setTextAndIcon(LocaleController.getString("InviteFriends", R.string.InviteFriends), R.drawable.menu_invite); + } else if (i == 10) { + actionCell.setTextAndIcon(LocaleController.getString("Settings", R.string.Settings), R.drawable.menu_settings); + } else if (i == 11) { + actionCell.setTextAndIcon(LocaleController.getString("TelegramFaq", R.string.TelegramFaq), R.drawable.menu_help); + } + } + + return view; + } + + @Override + public int getItemViewType(int i) { + if (i == 0) { + return 0; + } else if (i == 1 || i == 5 || i == 7) { + return 1; + } else if (i == 6) { + return 2; + } + return 3; + } + + @Override + public int getViewTypeCount() { + return 4; + } + + @Override + public boolean isEmpty() { + return !UserConfig.isClientActivated(); + } +} 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 49c4c8612..e039dfb5d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/AnimationCompat/AnimatorSetProxy.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/AnimationCompat/AnimatorSetProxy.java @@ -11,11 +11,11 @@ package org.telegram.ui.AnimationCompat; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorSet; +import android.view.animation.Interpolator; import org.telegram.ui.Animation.Animator10; import org.telegram.ui.Animation.AnimatorListenerAdapter10; import org.telegram.ui.Animation.AnimatorSet10; -import org.telegram.ui.Animation.ObjectAnimator10; import org.telegram.ui.Animation.View10; import java.util.Arrays; @@ -58,11 +58,27 @@ public class AnimatorSetProxy { } } + public void cancel() { + if (View10.NEED_PROXY) { + ((AnimatorSet10) animatorSet).cancel(); + } else { + ((AnimatorSet) animatorSet).cancel(); + } + } + public void addListener(AnimatorListenerAdapterProxy listener) { if (View10.NEED_PROXY) { - ((AnimatorSet10) animatorSet).addListener((AnimatorListenerAdapter10)listener.animatorListenerAdapter); + ((AnimatorSet10) animatorSet).addListener((AnimatorListenerAdapter10) listener.animatorListenerAdapter); } else { ((AnimatorSet) animatorSet).addListener((AnimatorListenerAdapter) listener.animatorListenerAdapter); } } + + public void setInterpolator(Interpolator interpolator) { + if (View10.NEED_PROXY) { + ((AnimatorSet10) animatorSet).setInterpolator(interpolator); + } else { + ((AnimatorSet) animatorSet).setInterpolator(interpolator); + } + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/DrawerActionCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DrawerActionCell.java new file mode 100644 index 000000000..a61e4cceb --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DrawerActionCell.java @@ -0,0 +1,54 @@ +/* + * 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 DrawerActionCell extends FrameLayout { + + private TextView textView; + + public DrawerActionCell(Context context) { + super(context); + + textView = new TextView(context); + textView.setTextColor(0xff444444); + textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15); + textView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + textView.setLines(1); + textView.setMaxLines(1); + textView.setSingleLine(true); + textView.setGravity(Gravity.LEFT | Gravity.CENTER); + textView.setCompoundDrawablePadding(AndroidUtilities.dp(34)); + addView(textView); + LayoutParams layoutParams = (LayoutParams) textView.getLayoutParams(); + layoutParams.width = LayoutParams.MATCH_PARENT; + layoutParams.height = LayoutParams.MATCH_PARENT; + layoutParams.gravity = Gravity.LEFT | Gravity.BOTTOM; + layoutParams.leftMargin = AndroidUtilities.dp(14); + layoutParams.rightMargin = AndroidUtilities.dp(16); + textView.setLayoutParams(layoutParams); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(48), MeasureSpec.EXACTLY)); + } + + public void setTextAndIcon(String text, int resId) { + textView.setText(text); + textView.setCompoundDrawablesWithIntrinsicBounds(resId, 0, 0, 0); + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/DrawerDividerCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DrawerDividerCell.java new file mode 100644 index 000000000..05aca7ec4 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DrawerDividerCell.java @@ -0,0 +1,25 @@ +/* + * 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.widget.FrameLayout; + +public class DrawerDividerCell extends FrameLayout { + + public DrawerDividerCell(Context context) { + super(context); + setBackgroundColor(0xffd9d9d9); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(1, MeasureSpec.EXACTLY)); + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/DrawerEmptyCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DrawerEmptyCell.java new file mode 100644 index 000000000..4df169104 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DrawerEmptyCell.java @@ -0,0 +1,26 @@ +/* + * 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.widget.FrameLayout; + +import org.telegram.android.AndroidUtilities; + +public class DrawerEmptyCell extends FrameLayout { + + public DrawerEmptyCell(Context context) { + super(context); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(8), MeasureSpec.EXACTLY)); + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/DrawerProfileCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DrawerProfileCell.java new file mode 100644 index 000000000..d9f5199fb --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DrawerProfileCell.java @@ -0,0 +1,105 @@ +/* + * 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.os.Build; +import android.util.TypedValue; +import android.view.Gravity; +import android.widget.FrameLayout; +import android.widget.TextView; + +import org.telegram.PhoneFormat.PhoneFormat; +import org.telegram.android.AndroidUtilities; +import org.telegram.android.ContactsController; +import org.telegram.messenger.TLRPC; +import org.telegram.ui.Views.AvatarDrawable; +import org.telegram.ui.Views.BackupImageView; + +public class DrawerProfileCell extends FrameLayout { + + private BackupImageView avatarImageView; + private TextView nameTextView; + private TextView phoneTextView; + + public DrawerProfileCell(Context context) { + super(context); + setBackgroundColor(0xff4c84b5); + + avatarImageView = new BackupImageView(context); + avatarImageView.imageReceiver.setRoundRadius(AndroidUtilities.dp(32)); + addView(avatarImageView); + LayoutParams layoutParams = (LayoutParams) avatarImageView.getLayoutParams(); + layoutParams.width = AndroidUtilities.dp(64); + layoutParams.height = AndroidUtilities.dp(64); + layoutParams.gravity = Gravity.LEFT | Gravity.BOTTOM; + layoutParams.leftMargin = AndroidUtilities.dp(16); + layoutParams.bottomMargin = AndroidUtilities.dp(67); + avatarImageView.setLayoutParams(layoutParams); + + nameTextView = new TextView(context); + nameTextView.setTextColor(0xffffffff); + nameTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15); + nameTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + nameTextView.setLines(1); + nameTextView.setMaxLines(1); + nameTextView.setSingleLine(true); + nameTextView.setGravity(Gravity.LEFT); + addView(nameTextView); + layoutParams = (FrameLayout.LayoutParams) nameTextView.getLayoutParams(); + layoutParams.width = LayoutParams.MATCH_PARENT; + layoutParams.height = LayoutParams.WRAP_CONTENT; + layoutParams.gravity = Gravity.LEFT | Gravity.BOTTOM; + layoutParams.leftMargin = AndroidUtilities.dp(16); + layoutParams.bottomMargin = AndroidUtilities.dp(28); + layoutParams.rightMargin = AndroidUtilities.dp(16); + nameTextView.setLayoutParams(layoutParams); + + phoneTextView = new TextView(context); + phoneTextView.setTextColor(0xffc2e5ff); + phoneTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 13); + phoneTextView.setLines(1); + phoneTextView.setMaxLines(1); + phoneTextView.setSingleLine(true); + phoneTextView.setGravity(Gravity.LEFT); + addView(phoneTextView); + layoutParams = (FrameLayout.LayoutParams) phoneTextView.getLayoutParams(); + layoutParams.width = LayoutParams.MATCH_PARENT; + layoutParams.height = LayoutParams.WRAP_CONTENT; + layoutParams.gravity = Gravity.LEFT | Gravity.BOTTOM; + layoutParams.leftMargin = AndroidUtilities.dp(16); + layoutParams.bottomMargin = AndroidUtilities.dp(9); + layoutParams.rightMargin = AndroidUtilities.dp(16); + phoneTextView.setLayoutParams(layoutParams); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + if (Build.VERSION.SDK_INT >= 21) { + super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(148) + AndroidUtilities.statusBarHeight, MeasureSpec.EXACTLY)); + } else { + super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(148), MeasureSpec.EXACTLY)); + } + } + + public void setUser(TLRPC.User user) { + if (user == null) { + return; + } + TLRPC.FileLocation photo = null; + if (user.photo != null) { + photo = user.photo.photo_small; + } + nameTextView.setText(ContactsController.formatName(user.first_name, user.last_name)); + phoneTextView.setText(PhoneFormat.getInstance().format("+" + user.phone)); + AvatarDrawable avatarDrawable = new AvatarDrawable(user); + avatarDrawable.setColor(0xff5c98cd); + avatarImageView.setImage(photo, "50_50", avatarDrawable); + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java index e30088ce4..e933bb6f4 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java @@ -2852,8 +2852,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } else if (lower_part < 0) { args.putInt("chat_id", -lower_part); } - presentFragment(new ChatActivity(args), true); forwardSelectedMessages(did, param); + presentFragment(new ChatActivity(args), true); if (!AndroidUtilities.isTablet()) { removeSelfFromStack(); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java index 113179c33..a086266ed 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java @@ -27,9 +27,12 @@ import android.view.View; import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.view.Window; +import android.widget.AbsListView; +import android.widget.AdapterView; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; +import android.widget.ListView; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; @@ -45,6 +48,7 @@ import org.telegram.messenger.R; import org.telegram.messenger.TLRPC; import org.telegram.messenger.UserConfig; import org.telegram.messenger.Utilities; +import org.telegram.ui.Adapters.DrawerLayoutAdapter; import org.telegram.ui.Views.ActionBar.ActionBarLayout; import org.telegram.ui.Views.ActionBar.BaseFragment; import org.telegram.ui.Views.ActionBar.DrawerLayoutContainer; @@ -75,6 +79,8 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa private LinearLayout buttonLayoutTablet = null; private FrameLayout shadowTabletSide = null; private ImageView backgroundTablet = null; + private DrawerLayoutContainer drawerLayoutContainer = null; + private boolean tabletFullSize = false; @Override @@ -233,21 +239,62 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa } }); } else { - DrawerLayoutContainer drawerLayoutContainer = new DrawerLayoutContainer(this); + drawerLayoutContainer = new DrawerLayoutContainer(this); drawerLayoutContainer.setStatusBarColor(0xff54759e); drawerLayoutContainer.addView(actionBarLayout, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); - FrameLayout frameLayout = new FrameLayout(this); - drawerLayoutContainer.setDrawerLayout(frameLayout); - frameLayout.setBackgroundColor(0xffff0000); - FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams)frameLayout.getLayoutParams(); + ListView listView = new ListView(this); + listView.setAdapter(new DrawerLayoutAdapter(this)); + drawerLayoutContainer.setDrawerLayout(listView); + listView.setBackgroundColor(0xffffffff); + FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams)listView.getLayoutParams(); Point screenSize = AndroidUtilities.getRealScreenSize(); layoutParams.width = Math.min(screenSize.x, screenSize.y) - AndroidUtilities.dp(56); layoutParams.height = FrameLayout.LayoutParams.MATCH_PARENT; - frameLayout.setLayoutParams(layoutParams); + listView.setPadding(0, 0, 0, 0); + listView.setChoiceMode(AbsListView.CHOICE_MODE_SINGLE); + listView.setDivider(null); + listView.setDividerHeight(0); + listView.setLayoutParams(layoutParams); + listView.setVerticalScrollBarEnabled(false); + + listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + if (position == 2) { + presentFragment(new GroupCreateActivity()); + drawerLayoutContainer.closeDrawer(false); + } else if (position == 3) { + Bundle args = new Bundle(); + args.putBoolean("onlyUsers", true); + args.putBoolean("destroyAfterSelect", true); + args.putBoolean("usersAsSections", true); + args.putBoolean("createSecretChat", true); + presentFragment(new ContactsActivity(args)); + drawerLayoutContainer.closeDrawer(false); + } else if (position == 4) { + Bundle args = new Bundle(); + args.putBoolean("broadcast", true); + presentFragment(new GroupCreateActivity(args)); + drawerLayoutContainer.closeDrawer(false); + } else if (position == 8) { + presentFragment(new ContactsActivity(null)); + drawerLayoutContainer.closeDrawer(false); + } else if (position == 9) { + drawerLayoutContainer.closeDrawer(false); + } else if (position == 10) { + presentFragment(new SettingsActivity()); + drawerLayoutContainer.closeDrawer(false); + } else if (position == 11) { + drawerLayoutContainer.closeDrawer(false); + } + } + }); + setContentView(drawerLayoutContainer, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); - actionBarLayout.setDrawerLayout(drawerLayoutContainer); - actionBarLayout.setAllowOpenDrawer(true); + drawerLayoutContainer.setParentActionBarLayout(actionBarLayout); + drawerLayoutContainer.setAllowOpenDrawer(true); + actionBarLayout.setDrawerLayoutContainer(drawerLayoutContainer); } actionBarLayout.init(mainFragmentsStack); actionBarLayout.setDelegate(this); @@ -965,23 +1012,23 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa public void onBackPressed() { if (PhotoViewer.getInstance().isVisible()) { PhotoViewer.getInstance().closePhoto(true); - } else { - if (AndroidUtilities.isTablet()) { - if (layersActionBarLayout.getVisibility() == View.VISIBLE) { - layersActionBarLayout.onBackPressed(); - } else { - boolean cancel = false; - if (rightActionBarLayout.getVisibility() == View.VISIBLE && !rightActionBarLayout.fragmentsStack.isEmpty()) { - BaseFragment lastFragment = rightActionBarLayout.fragmentsStack.get(rightActionBarLayout.fragmentsStack.size() - 1); - cancel = !lastFragment.onBackPressed(); - } - if (!cancel) { - actionBarLayout.onBackPressed(); - } - } + } else if (drawerLayoutContainer.isDrawerOpened()) { + drawerLayoutContainer.closeDrawer(false); + } else if (AndroidUtilities.isTablet()) { + if (layersActionBarLayout.getVisibility() == View.VISIBLE) { + layersActionBarLayout.onBackPressed(); } else { - actionBarLayout.onBackPressed(); + boolean cancel = false; + if (rightActionBarLayout.getVisibility() == View.VISIBLE && !rightActionBarLayout.fragmentsStack.isEmpty()) { + BaseFragment lastFragment = rightActionBarLayout.fragmentsStack.get(rightActionBarLayout.fragmentsStack.size() - 1); + cancel = !lastFragment.onBackPressed(); + } + if (!cancel) { + actionBarLayout.onBackPressed(); + } } + } else { + actionBarLayout.onBackPressed(); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java index bbec10b25..72b762e10 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java @@ -82,13 +82,6 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter private long openedDialogId = 0; - private final static int messages_list_menu_other = 1; - private final static int messages_list_menu_new_chat = 2; - private final static int messages_list_menu_new_secret_chat = 3; - private final static int messages_list_menu_contacts = 4; - private final static int messages_list_menu_settings = 5; - private final static int messages_list_menu_new_broadcast = 6; - public static interface MessagesActivityDelegate { public abstract void didSelectDialog(MessagesActivity fragment, long dialog_id, boolean param); } @@ -201,39 +194,18 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter } else { actionBarLayer.setBackButtonDrawable(new MenuDrawable()); actionBarLayer.setTitle(LocaleController.getString("AppName", R.string.AppName)); - ActionBarMenuItem item = menu.addItem(0, R.drawable.ic_ab_other); - item.addSubItem(messages_list_menu_new_chat, LocaleController.getString("NewGroup", R.string.NewGroup), 0); - item.addSubItem(messages_list_menu_new_secret_chat, LocaleController.getString("NewSecretChat", R.string.NewSecretChat), 0); - item.addSubItem(messages_list_menu_new_broadcast, LocaleController.getString("NewBroadcastList", R.string.NewBroadcastList), 0); - item.addSubItem(messages_list_menu_contacts, LocaleController.getString("Contacts", R.string.Contacts), 0); - item.addSubItem(messages_list_menu_settings, LocaleController.getString("Settings", R.string.Settings), 0); } actionBarLayer.setBackOverlay(R.layout.updating_state_layout); actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { @Override public void onItemClick(int id) { - if (id == messages_list_menu_settings) { - presentFragment(new SettingsActivity()); - } else if (id == messages_list_menu_contacts) { - presentFragment(new ContactsActivity(null)); - } else if (id == messages_list_menu_new_secret_chat) { - Bundle args = new Bundle(); - args.putBoolean("onlyUsers", true); - args.putBoolean("destroyAfterSelect", true); - args.putBoolean("usersAsSections", true); - args.putBoolean("createSecretChat", true); - presentFragment(new ContactsActivity(args)); - } else if (id == messages_list_menu_new_chat) { - presentFragment(new GroupCreateActivity()); - } else if (id == -1) { + if (id == -1) { if (onlySelect) { finishFragment(); + } else if (parentLayout != null) { + parentLayout.getDrawerLayoutContainer().openDrawer(false); } - } else if (id == messages_list_menu_new_broadcast) { - Bundle args = new Bundle(); - args.putBoolean("broadcast", true); - presentFragment(new GroupCreateActivity(args)); } } }); 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 98337bc43..efbf3ee99 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 @@ -66,8 +66,6 @@ public class ActionBarLayout extends FrameLayout { private View shadowView; private DrawerLayoutContainer drawerLayoutContainer; - private boolean allowOpenDrawer; - private Animation openAnimation; private Animation closeAnimation; private Animation alphaOpenAnimation; @@ -243,14 +241,6 @@ public class ActionBarLayout extends FrameLayout { ViewProxy.setTranslationX(shadowView, -AndroidUtilities.dp(2)); } - private void prepareForDrawerOpen(MotionEvent ev) { - maybeStartTracking = false; - startedTracking = true; - startedTrackingX = (int) ev.getX(); - beginTrackingSent = false; - AndroidUtilities.lockOrientation(parentActivity); - } - private void prepareForMoving(MotionEvent ev) { maybeStartTracking = false; startedTracking = true; @@ -327,6 +317,12 @@ public class ActionBarLayout extends FrameLayout { float velY = velocityTracker.getYVelocity(); if (velX >= 3500 && velX > velY) { prepareForMoving(ev); + if (!beginTrackingSent) { + if (((Activity)getContext()).getCurrentFocus() != null) { + AndroidUtilities.hideKeyboard(((Activity)getContext()).getCurrentFocus()); + } + beginTrackingSent = true; + } } } if (startedTracking) { @@ -386,77 +382,6 @@ public class ActionBarLayout extends FrameLayout { velocityTracker = null; } } - } else if (drawerLayoutContainer != null && allowOpenDrawer && fragmentsStack.size() == 1) { - if (ev != null && ev.getAction() == MotionEvent.ACTION_DOWN && !startedTracking && !maybeStartTracking) { - startedTrackingPointerId = ev.getPointerId(0); - maybeStartTracking = true; - startedTrackingX = (int) ev.getX(); - startedTrackingY = (int) ev.getY(); - if (velocityTracker != null) { - velocityTracker.clear(); - } - } else if (ev != null && ev.getAction() == MotionEvent.ACTION_MOVE && ev.getPointerId(0) == startedTrackingPointerId) { - if (velocityTracker == null) { - velocityTracker = VelocityTracker.obtain(); - } - int dx = (int) (ev.getX() - startedTrackingX); - int dy = Math.abs((int) ev.getY() - startedTrackingY); - velocityTracker.addMovement(ev); - if (maybeStartTracking && !startedTracking && Math.abs(dx) >= AndroidUtilities.dp(10) && Math.abs(dx) / 3 > dy) { - prepareForDrawerOpen(ev); - } else if (startedTracking) { - if (!beginTrackingSent) { - if (parentActivity.getCurrentFocus() != null) { - AndroidUtilities.hideKeyboard(parentActivity.getCurrentFocus()); - } - BaseFragment currentFragment = fragmentsStack.get(fragmentsStack.size() - 1); - currentFragment.onBeginSlide(); - beginTrackingSent = true; - } - drawerLayoutContainer.moveDrawerByX(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) { - velocityTracker = VelocityTracker.obtain(); - } - velocityTracker.computeCurrentVelocity(1000); - if (!startedTracking) { - float velX = velocityTracker.getXVelocity(); - float velY = velocityTracker.getYVelocity(); - if (Math.abs(velX) >= 3500 && velX > velY) { - prepareForDrawerOpen(ev); - } - } - if (startedTracking) { - float x = ViewProxy.getX(containerView); - float velX = velocityTracker.getXVelocity(); - float velY = velocityTracker.getYVelocity(); - final boolean backAnimation = x < containerView.getMeasuredWidth() / 3.0f && (velX < 3500 || velX < velY); - float distToMove = 0; - if (!backAnimation) { - drawerLayoutContainer.openDrawer(); - } else { - drawerLayoutContainer.closeDrawer(); - } - AndroidUtilities.unlockOrientation(parentActivity); - startedTracking = false; - animationInProgress = false; //TODO animation check - } else { - maybeStartTracking = false; - startedTracking = false; - } - if (velocityTracker != null) { - velocityTracker.recycle(); - velocityTracker = null; - } - } else if (ev == null) { - maybeStartTracking = false; - startedTracking = false; - if (velocityTracker != null) { - velocityTracker.recycle(); - velocityTracker = null; - } - } } return startedTracking; } @@ -909,11 +834,11 @@ public class ActionBarLayout extends FrameLayout { backgroundView = view; } - public void setDrawerLayout(DrawerLayoutContainer layout) { + public void setDrawerLayoutContainer(DrawerLayoutContainer layout) { drawerLayoutContainer = layout; } - public void setAllowOpenDrawer(boolean value) { - allowOpenDrawer = value; + public DrawerLayoutContainer getDrawerLayoutContainer() { + return drawerLayoutContainer; } } 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 26f66390b..766a9a154 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 @@ -382,7 +382,7 @@ public class ActionBarMenuItem extends ImageView { layoutParams.width = 0; layoutParams.gravity = Gravity.CENTER_VERTICAL; layoutParams.height = AndroidUtilities.dp(36); - layoutParams.rightMargin = AndroidUtilities.dp(4); + layoutParams.rightMargin = AndroidUtilities.dp(16); searchField.setLayoutParams(layoutParams); searchField.setVisibility(GONE); } 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 ac630b946..c1004411f 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 @@ -8,30 +8,56 @@ package org.telegram.ui.Views.ActionBar; +import android.app.Activity; import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; +import android.graphics.drawable.Drawable; import android.os.Build; import android.view.Gravity; +import android.view.MotionEvent; +import android.view.VelocityTracker; import android.view.View; import android.view.ViewGroup; import android.view.WindowInsets; +import android.view.animation.DecelerateInterpolator; import android.widget.FrameLayout; +import android.widget.ListView; import org.telegram.android.AndroidUtilities; -import org.telegram.ui.AnimationCompat.ViewProxy; +import org.telegram.messenger.R; +import org.telegram.ui.AnimationCompat.AnimatorListenerAdapterProxy; +import org.telegram.ui.AnimationCompat.AnimatorSetProxy; +import org.telegram.ui.AnimationCompat.ObjectAnimatorProxy; public class DrawerLayoutContainer extends FrameLayout { private static final int MIN_DRAWER_MARGIN = 64; private View drawerLayout; + private ActionBarLayout parentActionBarLayout; + + private boolean maybeStartTracking = false; + private boolean startedTracking = false; + private int startedTrackingX; + private int startedTrackingY; + private int startedTrackingPointerId; + private VelocityTracker velocityTracker = null; + private boolean beginTrackingSent; + private AnimatorSetProxy currentAnimation = null; private Paint statusBarPaint = new Paint(); + private Paint scrimPaint = new Paint(); + private Object lastInsets; private boolean inLayout; private int minDrawerMargin; - private float drawerOffset; + private float scrimOpacity; + private Drawable shadowLeft; + private boolean allowOpenDrawer; + + private int drawerPosition = 0; + private boolean drawerOpened = false; public DrawerLayoutContainer(Context context) { super(context); @@ -44,6 +70,8 @@ public class DrawerLayoutContainer extends FrameLayout { setFitsSystemWindows(true); configureApplyInsets(this); } + + shadowLeft = getResources().getDrawable(R.drawable.menu_shadow); } private class InsetsListener implements View.OnApplyWindowInsetsListener { @@ -111,29 +139,228 @@ public class DrawerLayoutContainer extends FrameLayout { } public void moveDrawerByX(int dx) { - if (dx > drawerLayout.getMeasuredWidth()) { - dx = drawerLayout.getMeasuredWidth(); - } - ViewProxy.setTranslationX(drawerLayout, dx); + setDrawerPosition(drawerPosition + dx); + } - final int newVisibility = dx > 0 ? VISIBLE : INVISIBLE; + public void setDrawerPosition(int value) { + drawerPosition = value; + if (drawerPosition > drawerLayout.getMeasuredWidth()) { + drawerPosition = drawerLayout.getMeasuredWidth(); + } else if (drawerPosition < 0) { + drawerPosition = 0; + } + requestLayout(); + + final int newVisibility = drawerPosition > 0 ? VISIBLE : INVISIBLE; if (drawerLayout.getVisibility() != newVisibility) { drawerLayout.setVisibility(newVisibility); } + setScrimOpacity((float)drawerPosition / (float)drawerLayout.getMeasuredWidth()); } - public void openDrawer() { - + public int getDrawerPosition() { + return drawerPosition; } - public void closeDrawer() { + public void cancelCurrentAnimation() { + if (currentAnimation != null) { + currentAnimation.cancel(); + currentAnimation = null; + } + } + public void openDrawer(boolean fast) { + cancelCurrentAnimation(); + AnimatorSetProxy animatorSet = new AnimatorSetProxy(); + animatorSet.playTogether( + ObjectAnimatorProxy.ofInt(this, "drawerPosition", drawerLayout.getMeasuredWidth()) + ); + animatorSet.setInterpolator(new DecelerateInterpolator()); + if (fast) { + animatorSet.setDuration(Math.max((int) (200.0f / drawerLayout.getMeasuredWidth() * (drawerLayout.getMeasuredWidth() - drawerPosition)), 50)); + } else { + animatorSet.setDuration(300); + } + animatorSet.addListener(new AnimatorListenerAdapterProxy() { + @Override + public void onAnimationEnd(Object animator) { + onDrawerAnimationEnd(true); + } + + @Override + public void onAnimationCancel(Object animator) { + onDrawerAnimationEnd(true); + } + }); + animatorSet.start(); + currentAnimation = animatorSet; + } + + public void closeDrawer(boolean fast) { + cancelCurrentAnimation(); + AnimatorSetProxy animatorSet = new AnimatorSetProxy(); + animatorSet.playTogether( + ObjectAnimatorProxy.ofInt(this, "drawerPosition", 0) + ); + animatorSet.setInterpolator(new DecelerateInterpolator()); + if (fast) { + animatorSet.setDuration(Math.max((int) (200.0f / drawerLayout.getMeasuredWidth() * drawerPosition), 50)); + } else { + animatorSet.setDuration(300); + } + animatorSet.addListener(new AnimatorListenerAdapterProxy() { + @Override + public void onAnimationEnd(Object animator) { + onDrawerAnimationEnd(false); + } + + @Override + public void onAnimationCancel(Object animator) { + onDrawerAnimationEnd(false); + } + }); + animatorSet.start(); + } + + private void onDrawerAnimationEnd(boolean opened) { + AndroidUtilities.unlockOrientation((Activity) getContext()); + startedTracking = false; + currentAnimation = null; + drawerOpened = opened; + if (!opened) { + if (drawerLayout instanceof ListView) { + ((ListView)drawerLayout).setSelectionFromTop(0, 0); + } + } + } + + private void setScrimOpacity(float value) { + scrimOpacity = value; + invalidate(); + } + + private float getScrimOpacity() { + return scrimOpacity; } public View getDrawerLayout() { return drawerLayout; } + public void setParentActionBarLayout(ActionBarLayout layout) { + parentActionBarLayout = layout; + } + + public void setAllowOpenDrawer(boolean value) { + allowOpenDrawer = value; + } + + private void prepareForDrawerOpen(MotionEvent ev) { + maybeStartTracking = false; + startedTracking = true; + if (ev != null) { + startedTrackingX = (int) ev.getX(); + } + beginTrackingSent = false; + AndroidUtilities.lockOrientation((Activity)getContext()); + } + + public boolean isDrawerOpened() { + return drawerOpened; + } + + public boolean onTouchEvent(MotionEvent ev) { + if (!parentActionBarLayout.checkTransitionAnimation()) { + if (drawerOpened && ev != null && ev.getX() > drawerPosition && !startedTracking) { + if (ev.getAction() == MotionEvent.ACTION_UP) { + closeDrawer(false); + } + return true; + } + if (allowOpenDrawer && parentActionBarLayout.fragmentsStack.size() == 1) { + if (ev != null && (ev.getAction() == MotionEvent.ACTION_DOWN || ev.getAction() == MotionEvent.ACTION_MOVE) && !startedTracking && !maybeStartTracking) { + startedTrackingPointerId = ev.getPointerId(0); + maybeStartTracking = true; + startedTrackingX = (int) ev.getX(); + startedTrackingY = (int) ev.getY(); + cancelCurrentAnimation(); + if (velocityTracker != null) { + velocityTracker.clear(); + } + } else if (ev != null && ev.getAction() == MotionEvent.ACTION_MOVE && ev.getPointerId(0) == startedTrackingPointerId) { + if (velocityTracker == null) { + velocityTracker = VelocityTracker.obtain(); + } + int dx = (int) (ev.getX() - startedTrackingX); + int dy = Math.abs((int) ev.getY() - startedTrackingY); + velocityTracker.addMovement(ev); + if (maybeStartTracking && !startedTracking && Math.abs(dx) / 3 > Math.abs(dy)) { + prepareForDrawerOpen(ev); + startedTrackingX = (int) ev.getX(); + } else if (startedTracking) { + if (!beginTrackingSent) { + if (((Activity)getContext()).getCurrentFocus() != null) { + AndroidUtilities.hideKeyboard(((Activity)getContext()).getCurrentFocus()); + } + beginTrackingSent = true; + } + moveDrawerByX(dx); + startedTrackingX = (int) ev.getX(); + } + } else if (ev == null || 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) { + velocityTracker = VelocityTracker.obtain(); + } + velocityTracker.computeCurrentVelocity(1000); + if (!startedTracking) { + float velX = velocityTracker.getXVelocity(); + float velY = velocityTracker.getYVelocity(); + if (Math.abs(velX) >= 1500 && Math.abs(velX) > Math.abs(velY)) { + prepareForDrawerOpen(ev); + if (!beginTrackingSent) { + if (((Activity)getContext()).getCurrentFocus() != null) { + AndroidUtilities.hideKeyboard(((Activity)getContext()).getCurrentFocus()); + } + beginTrackingSent = true; + } + } + } + if (startedTracking) { + float velX = velocityTracker.getXVelocity(); + float velY = velocityTracker.getYVelocity(); + boolean backAnimation = drawerPosition < drawerLayout.getMeasuredWidth() / 2.0f && (velX < 1500 || Math.abs(velX) < Math.abs(velY)) || velX < 0 && Math.abs(velX) >= 1500; + if (!backAnimation) { + openDrawer(!drawerOpened && Math.abs(velX) >= 1500); + } else { + closeDrawer(drawerOpened && Math.abs(velX) >= 1500); + } + startedTracking = false; + } else { + maybeStartTracking = false; + startedTracking = false; + } + if (velocityTracker != null) { + velocityTracker.recycle(); + velocityTracker = null; + } + } + } + return startedTracking; + } + return false; + } + + @Override + public boolean onInterceptTouchEvent(MotionEvent ev) { + return parentActionBarLayout.checkTransitionAnimation() || onTouchEvent(ev); + } + + @Override + public void requestDisallowInterceptTouchEvent(boolean disallowIntercept) { + onTouchEvent(null); + super.requestDisallowInterceptTouchEvent(disallowIntercept); + } + @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); @@ -159,7 +386,7 @@ public class DrawerLayoutContainer extends FrameLayout { if (drawerLayout != child) { child.layout(lp.leftMargin, lp.topMargin, lp.leftMargin + child.getMeasuredWidth(), lp.topMargin + child.getMeasuredHeight()); } else { - child.layout(-child.getMeasuredWidth(), lp.topMargin, 0, lp.topMargin + child.getMeasuredHeight()); + child.layout(-child.getMeasuredWidth() + drawerPosition, lp.topMargin, drawerPosition, lp.topMargin + child.getMeasuredHeight()); } } inLayout = false; @@ -207,6 +434,7 @@ public class DrawerLayoutContainer extends FrameLayout { final int contentHeightSpec = MeasureSpec.makeMeasureSpec(heightSize - lp.topMargin - lp.bottomMargin, MeasureSpec.EXACTLY); child.measure(contentWidthSpec, contentHeightSpec); } else { + child.setPadding(0, 0, 0, 0); final int drawerWidthSpec = getChildMeasureSpec(widthMeasureSpec, minDrawerMargin + lp.leftMargin + lp.rightMargin, lp.width); final int drawerHeightSpec = getChildMeasureSpec(heightMeasureSpec, lp.topMargin + lp.bottomMargin, lp.height); child.measure(drawerWidthSpec, drawerHeightSpec); @@ -214,403 +442,10 @@ public class DrawerLayoutContainer extends FrameLayout { } } - - /*private static final int MIN_DRAWER_MARGIN = 64; // dp - - private static final int DEFAULT_SCRIM_COLOR = 0x99000000; - - private static final int PEEK_DELAY = 160; // ms - - private static final int MIN_FLING_VELOCITY = 400; // dips per second - - private static final boolean ALLOW_EDGE_LOCK = false; - - private static final boolean CHILDREN_DISALLOW_INTERCEPT = true; - - private static final float TOUCH_SLOP_SENSITIVITY = 1.f; - - private static final int[] LAYOUT_ATTRS = new int[] { - android.R.attr.layout_gravity - }; - - private final ChildAccessibilityDelegate mChildAccessibilityDelegate = - new ChildAccessibilityDelegate(); - - private int mMinDrawerMargin; - - private int mScrimColor = DEFAULT_SCRIM_COLOR; - private float mScrimOpacity; - private Paint mScrimPaint = new Paint(); - - private final ViewDragHelper mLeftDragger; - private final ViewDragHelper mRightDragger; - private final ViewDragCallback mLeftCallback; - private final ViewDragCallback mRightCallback; - private int mDrawerState; - private boolean mInLayout; - private boolean mFirstLayout = true; - private int mLockModeLeft; - private int mLockModeRight; - private boolean mDisallowInterceptRequested; - private boolean mChildrenCanceledTouch; - - private DrawerListener mListener; - - private float mInitialMotionX; - private float mInitialMotionY; - - private Drawable mShadowLeft; - private Drawable mShadowRight; - - - private CharSequence mTitleLeft; - private CharSequence mTitleRight; - - private Object mLastInsets; - private boolean mDrawStatusBarBackground; - - public interface DrawerListener { - public void onDrawerSlide(View drawerView, float slideOffset); - public void onDrawerOpened(View drawerView); - public void onDrawerClosed(View drawerView); - public void onDrawerStateChanged(@State int newState); - } - - public static abstract class SimpleDrawerListener implements DrawerListener { - @Override - public void onDrawerSlide(View drawerView, float slideOffset) { - } - - @Override - public void onDrawerOpened(View drawerView) { - } - - @Override - public void onDrawerClosed(View drawerView) { - } - - @Override - public void onDrawerStateChanged(int newState) { - } - } - - public void setDrawerShadow(Drawable shadowDrawable, @EdgeGravity int gravity) { - - final int absGravity = GravityCompat.getAbsoluteGravity(gravity, - ViewCompat.getLayoutDirection(this)); - if ((absGravity & Gravity.LEFT) == Gravity.LEFT) { - mShadowLeft = shadowDrawable; - invalidate(); - } - if ((absGravity & Gravity.RIGHT) == Gravity.RIGHT) { - mShadowRight = shadowDrawable; - invalidate(); - } - } - - public void setDrawerShadow(@DrawableRes int resId, @EdgeGravity int gravity) { - setDrawerShadow(getResources().getDrawable(resId), gravity); - } - - public void setScrimColor(int color) { - mScrimColor = color; - invalidate(); - } - - public void setDrawerListener(DrawerListener listener) { - mListener = listener; - } - - public void setDrawerLockMode(@LockMode int lockMode) { - setDrawerLockMode(lockMode, Gravity.LEFT); - setDrawerLockMode(lockMode, Gravity.RIGHT); - } - - public void setDrawerLockMode(@LockMode int lockMode, @EdgeGravity int edgeGravity) { - final int absGravity = GravityCompat.getAbsoluteGravity(edgeGravity, - ViewCompat.getLayoutDirection(this)); - if (absGravity == Gravity.LEFT) { - mLockModeLeft = lockMode; - } else if (absGravity == Gravity.RIGHT) { - mLockModeRight = lockMode; - } - if (lockMode != LOCK_MODE_UNLOCKED) { - // Cancel interaction in progress - final ViewDragHelper helper = absGravity == Gravity.LEFT ? mLeftDragger : mRightDragger; - helper.cancel(); - } - switch (lockMode) { - case LOCK_MODE_LOCKED_OPEN: - final View toOpen = findDrawerWithGravity(absGravity); - if (toOpen != null) { - openDrawer(toOpen); - } - break; - case LOCK_MODE_LOCKED_CLOSED: - final View toClose = findDrawerWithGravity(absGravity); - if (toClose != null) { - closeDrawer(toClose); - } - break; - // default: do nothing - } - } - - public void setDrawerLockMode(@LockMode int lockMode, View drawerView) { - if (!isDrawerView(drawerView)) { - throw new IllegalArgumentException("View " + drawerView + " is not a " + - "drawer with appropriate layout_gravity"); - } - final int gravity = ((LayoutParams) drawerView.getLayoutParams()).gravity; - setDrawerLockMode(lockMode, gravity); - } - - @LockMode - public int getDrawerLockMode(@EdgeGravity int edgeGravity) { - final int absGravity = GravityCompat.getAbsoluteGravity( - edgeGravity, ViewCompat.getLayoutDirection(this)); - if (absGravity == Gravity.LEFT) { - return mLockModeLeft; - } else if (absGravity == Gravity.RIGHT) { - return mLockModeRight; - } - return LOCK_MODE_UNLOCKED; - } - - @LockMode - public int getDrawerLockMode(View drawerView) { - final int absGravity = getDrawerViewAbsoluteGravity(drawerView); - if (absGravity == Gravity.LEFT) { - return mLockModeLeft; - } else if (absGravity == Gravity.RIGHT) { - return mLockModeRight; - } - return LOCK_MODE_UNLOCKED; - } - - public void setDrawerTitle(@EdgeGravity int edgeGravity, CharSequence title) { - final int absGravity = GravityCompat.getAbsoluteGravity( - edgeGravity, ViewCompat.getLayoutDirection(this)); - if (absGravity == Gravity.LEFT) { - mTitleLeft = title; - } else if (absGravity == Gravity.RIGHT) { - mTitleRight = title; - } - } - - @Nullable - public CharSequence getDrawerTitle(@EdgeGravity int edgeGravity) { - final int absGravity = GravityCompat.getAbsoluteGravity( - edgeGravity, ViewCompat.getLayoutDirection(this)); - if (absGravity == Gravity.LEFT) { - return mTitleLeft; - } else if (absGravity == Gravity.RIGHT) { - return mTitleRight; - } - return null; - } - - void updateDrawerState(int forGravity, @State int activeState, View activeDrawer) { - final int leftState = mLeftDragger.getViewDragState(); - final int rightState = mRightDragger.getViewDragState(); - - final int state; - if (leftState == STATE_DRAGGING || rightState == STATE_DRAGGING) { - state = STATE_DRAGGING; - } else if (leftState == STATE_SETTLING || rightState == STATE_SETTLING) { - state = STATE_SETTLING; - } else { - state = STATE_IDLE; - } - - if (activeDrawer != null && activeState == STATE_IDLE) { - final LayoutParams lp = (LayoutParams) activeDrawer.getLayoutParams(); - if (lp.onScreen == 0) { - dispatchOnDrawerClosed(activeDrawer); - } else if (lp.onScreen == 1) { - dispatchOnDrawerOpened(activeDrawer); - } - } - - if (state != mDrawerState) { - mDrawerState = state; - - if (mListener != null) { - mListener.onDrawerStateChanged(state); - } - } - } - - void dispatchOnDrawerClosed(View drawerView) { - final LayoutParams lp = (LayoutParams) drawerView.getLayoutParams(); - if (lp.knownOpen) { - lp.knownOpen = false; - if (mListener != null) { - mListener.onDrawerClosed(drawerView); - } - - // If no drawer is opened, all drawers are not shown - // for accessibility and the content is shown. - View content = getChildAt(0); - if (content != null) { - ViewCompat.setImportantForAccessibility(content, - ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_YES); - } - ViewCompat.setImportantForAccessibility(drawerView, - ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS); - - // Only send WINDOW_STATE_CHANGE if the host has window focus. This - // may change if support for multiple foreground windows (e.g. IME) - // improves. - if (hasWindowFocus()) { - final View rootView = getRootView(); - if (rootView != null) { - rootView.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); - } - } - } - } - - void dispatchOnDrawerOpened(View drawerView) { - final LayoutParams lp = (LayoutParams) drawerView.getLayoutParams(); - if (!lp.knownOpen) { - lp.knownOpen = true; - if (mListener != null) { - mListener.onDrawerOpened(drawerView); - } - - // If a drawer is opened, only it is shown for - // accessibility and the content is not shown. - View content = getChildAt(0); - if (content != null) { - ViewCompat.setImportantForAccessibility(content, - ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS); - } - ViewCompat.setImportantForAccessibility(drawerView, - ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_YES); - - sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); - drawerView.requestFocus(); - } - } - - void dispatchOnDrawerSlide(View drawerView, float slideOffset) { - if (mListener != null) { - mListener.onDrawerSlide(drawerView, slideOffset); - } - } - - void setDrawerViewOffset(View drawerView, float slideOffset) { - final LayoutParams lp = (LayoutParams) drawerView.getLayoutParams(); - if (slideOffset == lp.onScreen) { - return; - } - - lp.onScreen = slideOffset; - dispatchOnDrawerSlide(drawerView, slideOffset); - } - - float getDrawerViewOffset(View drawerView) { - return ((LayoutParams) drawerView.getLayoutParams()).onScreen; - } - - int getDrawerViewAbsoluteGravity(View drawerView) { - final int gravity = ((LayoutParams) drawerView.getLayoutParams()).gravity; - return GravityCompat.getAbsoluteGravity(gravity, ViewCompat.getLayoutDirection(this)); - } - - boolean checkDrawerViewAbsoluteGravity(View drawerView, int checkFor) { - final int absGravity = getDrawerViewAbsoluteGravity(drawerView); - return (absGravity & checkFor) == checkFor; - } - - View findOpenDrawer() { - final int childCount = getChildCount(); - for (int i = 0; i < childCount; i++) { - final View child = getChildAt(i); - if (((LayoutParams) child.getLayoutParams()).knownOpen) { - return child; - } - } - return null; - } - - void moveDrawerToOffset(View drawerView, float slideOffset) { - final float oldOffset = getDrawerViewOffset(drawerView); - final int width = drawerView.getWidth(); - final int oldPos = (int) (width * oldOffset); - final int newPos = (int) (width * slideOffset); - final int dx = newPos - oldPos; - - drawerView.offsetLeftAndRight( - checkDrawerViewAbsoluteGravity(drawerView, Gravity.LEFT) ? dx : -dx); - setDrawerViewOffset(drawerView, slideOffset); - } - - View findDrawerWithGravity(int gravity) { - final int absHorizGravity = GravityCompat.getAbsoluteGravity( - gravity, ViewCompat.getLayoutDirection(this)) & Gravity.HORIZONTAL_GRAVITY_MASK; - final int childCount = getChildCount(); - for (int i = 0; i < childCount; i++) { - final View child = getChildAt(i); - final int childAbsGravity = getDrawerViewAbsoluteGravity(child); - if ((childAbsGravity & Gravity.HORIZONTAL_GRAVITY_MASK) == absHorizGravity) { - return child; - } - } - return null; - } - - static String gravityToString(@EdgeGravity int gravity) { - if ((gravity & Gravity.LEFT) == Gravity.LEFT) { - return "LEFT"; - } - if ((gravity & Gravity.RIGHT) == Gravity.RIGHT) { - return "RIGHT"; - } - return Integer.toHexString(gravity); - } - - @Override - protected void onDetachedFromWindow() { - super.onDetachedFromWindow(); - mFirstLayout = true; - } - - @Override - protected void onAttachedToWindow() { - super.onAttachedToWindow(); - mFirstLayout = true; - } - - @Override - public void computeScroll() { - final int childCount = getChildCount(); - float scrimOpacity = 0; - for (int i = 0; i < childCount; i++) { - final float onscreen = ((LayoutParams) getChildAt(i).getLayoutParams()).onScreen; - scrimOpacity = Math.max(scrimOpacity, onscreen); - } - mScrimOpacity = scrimOpacity; - - // "|" used on purpose; both need to run. - if (mLeftDragger.continueSettling(true) | mRightDragger.continueSettling(true)) { - ViewCompat.postInvalidateOnAnimation(this); - } - } - - private static boolean hasOpaqueBackground(View v) { - final Drawable bg = v.getBackground(); - if (bg != null) { - return bg.getOpacity() == PixelFormat.OPAQUE; - } - return false; - } - @Override protected boolean drawChild(Canvas canvas, View child, long drawingTime) { final int height = getHeight(); - final boolean drawingContent = isContentView(child); + final boolean drawingContent = child != drawerLayout; int clipLeft = 0, clipRight = getWidth(); final int restoreCount = canvas.save(); @@ -618,18 +453,13 @@ public class DrawerLayoutContainer extends FrameLayout { final int childCount = getChildCount(); for (int i = 0; i < childCount; i++) { final View v = getChildAt(i); - if (v == child || v.getVisibility() != VISIBLE || - !hasOpaqueBackground(v) || !isDrawerView(v) || - v.getHeight() < height) { + if (v == child || v.getVisibility() != VISIBLE || v != drawerLayout || v.getHeight() < height) { continue; } - if (checkDrawerViewAbsoluteGravity(v, Gravity.LEFT)) { - final int vright = v.getRight(); - if (vright > clipLeft) clipLeft = vright; - } else { - final int vleft = v.getLeft(); - if (vleft < clipRight) clipRight = vleft; + final int vright = v.getRight(); + if (vright > clipLeft) { + clipLeft = vright; } } canvas.clipRect(clipLeft, 0, clipRight, getHeight()); @@ -637,541 +467,15 @@ public class DrawerLayoutContainer extends FrameLayout { final boolean result = super.drawChild(canvas, child, drawingTime); canvas.restoreToCount(restoreCount); - if (mScrimOpacity > 0 && drawingContent) { - final int baseAlpha = (mScrimColor & 0xff000000) >>> 24; - final int imag = (int) (baseAlpha * mScrimOpacity); - final int color = imag << 24 | (mScrimColor & 0xffffff); - mScrimPaint.setColor(color); - - canvas.drawRect(clipLeft, 0, clipRight, getHeight(), mScrimPaint); - } else if (mShadowLeft != null && checkDrawerViewAbsoluteGravity(child, Gravity.LEFT)) { - final int shadowWidth = mShadowLeft.getIntrinsicWidth(); - final int childRight = child.getRight(); - final int drawerPeekDistance = mLeftDragger.getEdgeSize(); - final float alpha = - Math.max(0, Math.min((float) childRight / drawerPeekDistance, 1.f)); - mShadowLeft.setBounds(childRight, child.getTop(), - childRight + shadowWidth, child.getBottom()); - mShadowLeft.setAlpha((int) (0xff * alpha)); - mShadowLeft.draw(canvas); - } else if (mShadowRight != null && checkDrawerViewAbsoluteGravity(child, Gravity.RIGHT)) { - final int shadowWidth = mShadowRight.getIntrinsicWidth(); - final int childLeft = child.getLeft(); - final int showing = getWidth() - childLeft; - final int drawerPeekDistance = mRightDragger.getEdgeSize(); - final float alpha = - Math.max(0, Math.min((float) showing / drawerPeekDistance, 1.f)); - mShadowRight.setBounds(childLeft - shadowWidth, child.getTop(), - childLeft, child.getBottom()); - mShadowRight.setAlpha((int) (0xff * alpha)); - mShadowRight.draw(canvas); + if (scrimOpacity > 0 && drawingContent) { + 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)); + shadowLeft.setBounds(drawerPosition, child.getTop(), drawerPosition + shadowLeft.getIntrinsicWidth(), child.getBottom()); + shadowLeft.setAlpha((int) (0xff * alpha)); + shadowLeft.draw(canvas); } return result; } - - boolean isContentView(View child) { - return ((LayoutParams) child.getLayoutParams()).gravity == Gravity.NO_GRAVITY; - } - - boolean isDrawerView(View child) { - final int gravity = ((LayoutParams) child.getLayoutParams()).gravity; - final int absGravity = GravityCompat.getAbsoluteGravity(gravity, - ViewCompat.getLayoutDirection(child)); - return (absGravity & (Gravity.LEFT | Gravity.RIGHT)) != 0; - } - - @Override - public boolean onInterceptTouchEvent(MotionEvent ev) { - final int action = MotionEventCompat.getActionMasked(ev); - - // "|" used deliberately here; both methods should be invoked. - final boolean interceptForDrag = mLeftDragger.shouldInterceptTouchEvent(ev) | - mRightDragger.shouldInterceptTouchEvent(ev); - - boolean interceptForTap = false; - - switch (action) { - case MotionEvent.ACTION_DOWN: { - final float x = ev.getX(); - final float y = ev.getY(); - mInitialMotionX = x; - mInitialMotionY = y; - if (mScrimOpacity > 0 && - isContentView(mLeftDragger.findTopChildUnder((int) x, (int) y))) { - interceptForTap = true; - } - mDisallowInterceptRequested = false; - mChildrenCanceledTouch = false; - break; - } - - case MotionEvent.ACTION_MOVE: { - // If we cross the touch slop, don't perform the delayed peek for an edge touch. - if (mLeftDragger.checkTouchSlop(ViewDragHelper.DIRECTION_ALL)) { - mLeftCallback.removeCallbacks(); - mRightCallback.removeCallbacks(); - } - break; - } - - case MotionEvent.ACTION_CANCEL: - case MotionEvent.ACTION_UP: { - closeDrawers(true); - mDisallowInterceptRequested = false; - mChildrenCanceledTouch = false; - } - } - - return interceptForDrag || interceptForTap || hasPeekingDrawer() || mChildrenCanceledTouch; - } - - @Override - public boolean onTouchEvent(MotionEvent ev) { - mLeftDragger.processTouchEvent(ev); - mRightDragger.processTouchEvent(ev); - - final int action = ev.getAction(); - boolean wantTouchEvents = true; - - switch (action & MotionEventCompat.ACTION_MASK) { - case MotionEvent.ACTION_DOWN: { - final float x = ev.getX(); - final float y = ev.getY(); - mInitialMotionX = x; - mInitialMotionY = y; - mDisallowInterceptRequested = false; - mChildrenCanceledTouch = false; - break; - } - - case MotionEvent.ACTION_UP: { - final float x = ev.getX(); - final float y = ev.getY(); - boolean peekingOnly = true; - final View touchedView = mLeftDragger.findTopChildUnder((int) x, (int) y); - if (touchedView != null && isContentView(touchedView)) { - final float dx = x - mInitialMotionX; - final float dy = y - mInitialMotionY; - final int slop = mLeftDragger.getTouchSlop(); - if (dx * dx + dy * dy < slop * slop) { - // Taps close a dimmed open drawer but only if it isn't locked open. - final View openDrawer = findOpenDrawer(); - if (openDrawer != null) { - peekingOnly = getDrawerLockMode(openDrawer) == LOCK_MODE_LOCKED_OPEN; - } - } - } - closeDrawers(peekingOnly); - mDisallowInterceptRequested = false; - break; - } - - case MotionEvent.ACTION_CANCEL: { - closeDrawers(true); - mDisallowInterceptRequested = false; - mChildrenCanceledTouch = false; - break; - } - } - - return wantTouchEvents; - } - - public void requestDisallowInterceptTouchEvent(boolean disallowIntercept) { - if (CHILDREN_DISALLOW_INTERCEPT || - (!mLeftDragger.isEdgeTouched(ViewDragHelper.EDGE_LEFT) && - !mRightDragger.isEdgeTouched(ViewDragHelper.EDGE_RIGHT))) { - // If we have an edge touch we want to skip this and track it for later instead. - super.requestDisallowInterceptTouchEvent(disallowIntercept); - } - mDisallowInterceptRequested = disallowIntercept; - if (disallowIntercept) { - closeDrawers(true); - } - } - - public void closeDrawers() { - closeDrawers(false); - } - - void closeDrawers(boolean peekingOnly) { - boolean needsInvalidate = false; - final int childCount = getChildCount(); - for (int i = 0; i < childCount; i++) { - final View child = getChildAt(i); - final LayoutParams lp = (LayoutParams) child.getLayoutParams(); - - if (!isDrawerView(child) || (peekingOnly && !lp.isPeeking)) { - continue; - } - - final int childWidth = child.getWidth(); - - if (checkDrawerViewAbsoluteGravity(child, Gravity.LEFT)) { - needsInvalidate |= mLeftDragger.smoothSlideViewTo(child, - -childWidth, child.getTop()); - } else { - needsInvalidate |= mRightDragger.smoothSlideViewTo(child, - getWidth(), child.getTop()); - } - - lp.isPeeking = false; - } - - mLeftCallback.removeCallbacks(); - mRightCallback.removeCallbacks(); - - if (needsInvalidate) { - invalidate(); - } - } - - public void openDrawer(View drawerView) { - if (!isDrawerView(drawerView)) { - throw new IllegalArgumentException("View " + drawerView + " is not a sliding drawer"); - } - - if (mFirstLayout) { - final LayoutParams lp = (LayoutParams) drawerView.getLayoutParams(); - lp.onScreen = 1.f; - lp.knownOpen = true; - - View content = getChildAt(0); - if (content != null) { - ViewCompat.setImportantForAccessibility(content, - ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS); - } - ViewCompat.setImportantForAccessibility(drawerView, - ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_YES); - } else { - if (checkDrawerViewAbsoluteGravity(drawerView, Gravity.LEFT)) { - mLeftDragger.smoothSlideViewTo(drawerView, 0, drawerView.getTop()); - } else { - mRightDragger.smoothSlideViewTo(drawerView, getWidth() - drawerView.getWidth(), - drawerView.getTop()); - } - } - invalidate(); - } - - public void openDrawer(@EdgeGravity int gravity) { - final View drawerView = findDrawerWithGravity(gravity); - if (drawerView == null) { - throw new IllegalArgumentException("No drawer view found with gravity " + - gravityToString(gravity)); - } - openDrawer(drawerView); - } - - public void closeDrawer(View drawerView) { - if (!isDrawerView(drawerView)) { - throw new IllegalArgumentException("View " + drawerView + " is not a sliding drawer"); - } - - if (mFirstLayout) { - final LayoutParams lp = (LayoutParams) drawerView.getLayoutParams(); - lp.onScreen = 0.f; - lp.knownOpen = false; - } else { - if (checkDrawerViewAbsoluteGravity(drawerView, Gravity.LEFT)) { - mLeftDragger.smoothSlideViewTo(drawerView, -drawerView.getWidth(), - drawerView.getTop()); - } else { - mRightDragger.smoothSlideViewTo(drawerView, getWidth(), drawerView.getTop()); - } - } - invalidate(); - } - - public void closeDrawer(@EdgeGravity int gravity) { - final View drawerView = findDrawerWithGravity(gravity); - if (drawerView == null) { - throw new IllegalArgumentException("No drawer view found with gravity " + - gravityToString(gravity)); - } - closeDrawer(drawerView); - } - - public boolean isDrawerOpen(View drawer) { - if (!isDrawerView(drawer)) { - throw new IllegalArgumentException("View " + drawer + " is not a drawer"); - } - return ((LayoutParams) drawer.getLayoutParams()).knownOpen; - } - - public boolean isDrawerOpen(@EdgeGravity int drawerGravity) { - final View drawerView = findDrawerWithGravity(drawerGravity); - if (drawerView != null) { - return isDrawerOpen(drawerView); - } - return false; - } - - public boolean isDrawerVisible(View drawer) { - if (!isDrawerView(drawer)) { - throw new IllegalArgumentException("View " + drawer + " is not a drawer"); - } - return ((LayoutParams) drawer.getLayoutParams()).onScreen > 0; - } - - public boolean isDrawerVisible(@EdgeGravity int drawerGravity) { - final View drawerView = findDrawerWithGravity(drawerGravity); - if (drawerView != null) { - return isDrawerVisible(drawerView); - } - return false; - } - - private boolean hasPeekingDrawer() { - final int childCount = getChildCount(); - for (int i = 0; i < childCount; i++) { - final LayoutParams lp = (LayoutParams) getChildAt(i).getLayoutParams(); - if (lp.isPeeking) { - return true; - } - } - return false; - } - - @Override - protected ViewGroup.LayoutParams generateDefaultLayoutParams() { - return new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); - } - - @Override - protected ViewGroup.LayoutParams generateLayoutParams(ViewGroup.LayoutParams p) { - return p instanceof LayoutParams - ? new LayoutParams((LayoutParams) p) - : p instanceof ViewGroup.MarginLayoutParams - ? new LayoutParams((MarginLayoutParams) p) - : new LayoutParams(p); - } - - @Override - protected boolean checkLayoutParams(ViewGroup.LayoutParams p) { - return p instanceof LayoutParams && super.checkLayoutParams(p); - } - - @Override - public ViewGroup.LayoutParams generateLayoutParams(AttributeSet attrs) { - return new LayoutParams(getContext(), attrs); - } - - private boolean hasVisibleDrawer() { - return findVisibleDrawer() != null; - } - - private View findVisibleDrawer() { - final int childCount = getChildCount(); - for (int i = 0; i < childCount; i++) { - final View child = getChildAt(i); - if (isDrawerView(child) && isDrawerVisible(child)) { - return child; - } - } - return null; - } - - void cancelChildViewTouch() { - // Cancel child touches - if (!mChildrenCanceledTouch) { - final long now = SystemClock.uptimeMillis(); - final MotionEvent cancelEvent = MotionEvent.obtain(now, now, - MotionEvent.ACTION_CANCEL, 0.0f, 0.0f, 0); - final int childCount = getChildCount(); - for (int i = 0; i < childCount; i++) { - getChildAt(i).dispatchTouchEvent(cancelEvent); - } - cancelEvent.recycle(); - mChildrenCanceledTouch = true; - } - } - - @Override - public boolean onKeyDown(int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_BACK && hasVisibleDrawer()) { - KeyEventCompat.startTracking(event); - return true; - } - return super.onKeyDown(keyCode, event); - } - - @Override - public boolean onKeyUp(int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_BACK) { - final View visibleDrawer = findVisibleDrawer(); - if (visibleDrawer != null && getDrawerLockMode(visibleDrawer) == LOCK_MODE_UNLOCKED) { - closeDrawers(); - } - return visibleDrawer != null; - } - return super.onKeyUp(keyCode, event); - } - - private class ViewDragCallback extends ViewDragHelper.Callback { - private final int mAbsGravity; - private ViewDragHelper mDragger; - - private final Runnable mPeekRunnable = new Runnable() { - @Override public void run() { - peekDrawer(); - } - }; - - public ViewDragCallback(int gravity) { - mAbsGravity = gravity; - } - - public void setDragger(ViewDragHelper dragger) { - mDragger = dragger; - } - - public void removeCallbacks() { - DrawerLayout.this.removeCallbacks(mPeekRunnable); - } - - @Override - public boolean tryCaptureView(View child, int pointerId) { - // Only capture views where the gravity matches what we're looking for. - // This lets us use two ViewDragHelpers, one for each side drawer. - return isDrawerView(child) && checkDrawerViewAbsoluteGravity(child, mAbsGravity) - && getDrawerLockMode(child) == LOCK_MODE_UNLOCKED; - } - - @Override - public void onViewDragStateChanged(int state) { - updateDrawerState(mAbsGravity, state, mDragger.getCapturedView()); - } - - @Override - public void onViewPositionChanged(View changedView, int left, int top, int dx, int dy) { - float offset; - final int childWidth = changedView.getWidth(); - - // This reverses the positioning shown in onLayout. - if (checkDrawerViewAbsoluteGravity(changedView, Gravity.LEFT)) { - offset = (float) (childWidth + left) / childWidth; - } else { - final int width = getWidth(); - offset = (float) (width - left) / childWidth; - } - setDrawerViewOffset(changedView, offset); - changedView.setVisibility(offset == 0 ? INVISIBLE : VISIBLE); - invalidate(); - } - - @Override - public void onViewCaptured(View capturedChild, int activePointerId) { - final LayoutParams lp = (LayoutParams) capturedChild.getLayoutParams(); - lp.isPeeking = false; - - closeOtherDrawer(); - } - - private void closeOtherDrawer() { - final int otherGrav = mAbsGravity == Gravity.LEFT ? Gravity.RIGHT : Gravity.LEFT; - final View toClose = findDrawerWithGravity(otherGrav); - if (toClose != null) { - closeDrawer(toClose); - } - } - - @Override - public void onViewReleased(View releasedChild, float xvel, float yvel) { - // Offset is how open the drawer is, therefore left/right values - // are reversed from one another. - final float offset = getDrawerViewOffset(releasedChild); - final int childWidth = releasedChild.getWidth(); - - int left; - if (checkDrawerViewAbsoluteGravity(releasedChild, Gravity.LEFT)) { - left = xvel > 0 || xvel == 0 && offset > 0.5f ? 0 : -childWidth; - } else { - final int width = getWidth(); - left = xvel < 0 || xvel == 0 && offset > 0.5f ? width - childWidth : width; - } - - mDragger.settleCapturedViewAt(left, releasedChild.getTop()); - invalidate(); - } - - @Override - public void onEdgeTouched(int edgeFlags, int pointerId) { - postDelayed(mPeekRunnable, PEEK_DELAY); - } - - private void peekDrawer() { - final View toCapture; - final int childLeft; - final int peekDistance = mDragger.getEdgeSize(); - final boolean leftEdge = mAbsGravity == Gravity.LEFT; - if (leftEdge) { - toCapture = findDrawerWithGravity(Gravity.LEFT); - childLeft = (toCapture != null ? -toCapture.getWidth() : 0) + peekDistance; - } else { - toCapture = findDrawerWithGravity(Gravity.RIGHT); - childLeft = getWidth() - peekDistance; - } - // Only peek if it would mean making the drawer more visible and the drawer isn't locked - if (toCapture != null && ((leftEdge && toCapture.getLeft() < childLeft) || - (!leftEdge && toCapture.getLeft() > childLeft)) && - getDrawerLockMode(toCapture) == LOCK_MODE_UNLOCKED) { - final LayoutParams lp = (LayoutParams) toCapture.getLayoutParams(); - mDragger.smoothSlideViewTo(toCapture, childLeft, toCapture.getTop()); - lp.isPeeking = true; - invalidate(); - - closeOtherDrawer(); - - cancelChildViewTouch(); - } - } - - @Override - public boolean onEdgeLock(int edgeFlags) { - if (ALLOW_EDGE_LOCK) { - final View drawer = findDrawerWithGravity(mAbsGravity); - if (drawer != null && !isDrawerOpen(drawer)) { - closeDrawer(drawer); - } - return true; - } - return false; - } - - @Override - public void onEdgeDragStarted(int edgeFlags, int pointerId) { - final View toCapture; - if ((edgeFlags & ViewDragHelper.EDGE_LEFT) == ViewDragHelper.EDGE_LEFT) { - toCapture = findDrawerWithGravity(Gravity.LEFT); - } else { - toCapture = findDrawerWithGravity(Gravity.RIGHT); - } - - if (toCapture != null && getDrawerLockMode(toCapture) == LOCK_MODE_UNLOCKED) { - mDragger.captureChildView(toCapture, pointerId); - } - } - - @Override - public int getViewHorizontalDragRange(View child) { - return isDrawerView(child) ? child.getWidth() : 0; - } - - @Override - public int clampViewPositionHorizontal(View child, int left, int dx) { - if (checkDrawerViewAbsoluteGravity(child, Gravity.LEFT)) { - return Math.max(-child.getWidth(), Math.min(left, 0)); - } else { - final int width = getWidth(); - return Math.max(width - child.getWidth(), Math.min(left, width)); - } - } - - @Override - public int clampViewPositionVertical(View child, int top, int dy) { - return child.getTop(); - } - } -*/ } 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 24922c0c6..23a406d07 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Views/AvatarDrawable.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Views/AvatarDrawable.java @@ -72,6 +72,10 @@ public class AvatarDrawable extends Drawable { } } + public void setColor(int value) { + color = value; + } + public void setInfo(int id, String firstName, String lastName, boolean isBroadcast) { color = arrColors[Math.abs(id) % arrColors.length]; diff --git a/TMessagesProj/src/main/res/drawable-hdpi/floating.png b/TMessagesProj/src/main/res/drawable-hdpi/floating.png index 5b3784248691be8cabadc75a68eb9cb4c57413ca..419d0b8219c49a642bb0b8130eeda4f8d57409b2 100755 GIT binary patch delta 3500 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 Vvx-`rk2K)V>0%6S7HirB{R=v^r33%~ delta 3500 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 I3gr;-Kd-ruy#N3J delta 3440 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/menu_contacts.png b/TMessagesProj/src/main/res/drawable-hdpi/menu_contacts.png new file mode 100755 index 0000000000000000000000000000000000000000..d2ce6e6454e0d4d1ca85c31edc8496fccde5540b GIT binary patch literal 1255 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?(bd_&%-F!h%*55n(9qSy(bUD*$CgZF_JLrOTVwG?dO`m#fTIFk4=( z7u|R`P~o_abVpH#d=%SU2d@L$p0x3pdS`KK$mJUH-8%J^UqGJaQLIA^S4TeMN9`rw zdZh$rGj5a?ux2ncUMus3x#M?Zh0%sv6@6EpxQ2b^>EdT76c_MjDwGotXE0+udYc6d5=S81{1bEwZso(E$}b Mp00i_>zopr0Kg)kHvj+t literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/menu_help.png b/TMessagesProj/src/main/res/drawable-hdpi/menu_help.png new file mode 100755 index 0000000000000000000000000000000000000000..3acaa23eee970ecc42d6810f9568b91f8b9a968e GIT binary patch literal 1619 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?$=uDw+{x6`%*55n(9qSy$=T7!&Dhz|$=uY! z)y&uurq?AuximL5uLPzy1)L`E`4MS7W6AraCxY1&cmLqecj4)E zPLPXXh}`g2rz1)1z=Efa_6~wI32Wvs)F#Y-_%HARqnpp79Ay(}g*3jN#-PLRUo~ES zFzaBx#1u_GG3Or1+a|V$UhUxWvb(;o;dK^c;;iGsg-ui5Fm zcyI35Yj{Q2kg+cO@`AbXVn4pzYT9MJXa?hlS6t1}J7wmRSIh3z$MXFXoxR|zK-0Y9Q&U#DR9?GSe^xES zv}J*R)bA3G|K{6{yx4fD*f8|5&&IhtiYGR6My1`n`R+oZ(UJ*Oe=3h@9`-JtTzcXD zCP|xO?G+BetUrDC^{Rg3TC-tpk;K~bb*X-L(xVrZv6svKd&-rZ;U%nQD7yN-i>R`T z?wb!+R_@vQA}TmNQl6i^WZtE)NH2x7d9Dj?@8em#;or_r*$Vi7Z$&u3U_#Z~zXufKO*(|CEw^shbtHYWD2XYSA0 mS(DT8_kY6I^_;&{4=_xVTO+*h&=fgPG4JW>=d#Wzp$Py9W^}&* literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/menu_invite.png b/TMessagesProj/src/main/res/drawable-hdpi/menu_invite.png new file mode 100755 index 0000000000000000000000000000000000000000..eee0ec8f13dcbf751ad1c35f54ca7279860ca586 GIT binary patch literal 1316 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?&DhDsz`)JP%*55n(9qSy$;8>o&BDOg*wWR~ z)y&Wlrq?AuximL5uLPzy1)t+suKeP;|xz1$B>F! zNq_$Tw?CY~6nV^8xRPo_tB?X={e)LrM$8+R<;}0GIafhe# zCO+~O(@N=ycd(J{a-S`4!hT~>PvHj34v7P-N6Z{@IFD30tl>KnVKBpqB~8` zwmf#I5$V_;c-e7*nu~zIai)#NTYffjb2x3}3*qPZ!|=%V0#m82iSdM~Z4nD@{!$ds zXHU{+>O074u^{ylmqH!G5le?NKC7CaEPQ&}MPb^4q@al{V#4ZPUS3Z+N(DSFCuRgs z2|K`&!hRv}(GiOk!ne|vnKHBnup9DyTAZBsUHzEjpOTUZ4>GPgmYgpwu}Hh(c=)U% b10x&5lI^}y>nwkQ%0LEBS3j3^P6|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?*~Hb@(b>q&%*55n(9qSy$<*1!)zZ-1(!kZk z+|<eUB2MjsThND&Pa0;V1i6P|2=9C*S{%>$fr0U_r;B4q z#jQ8fy)|3{C61@teB!8FGUbxW%9GPt-NWQGl};5WrLIo#5=#+Tsumfcp)Ktyl+-^% zB}i=BJZ0@gElWOHmx^t_eaE`L+FkDZ>iFk(-p{FiR=>aaT=}^ptW1oz{guvrJA6hc zh4WW&laSKOH)XpwYe+3*__KkN-;JeW@4Xi+ip%CEF&c@yOMlTmHGi(rk&qyrl}Bzo z+592A=KGXh$31SdKlD2_pUQ8y(r9&$Xs+JO66$he9+z~$;t#&g;yE)no_?g<^Jj@y z&ju6Ay*tx5tU5OAbzdBBWingw1oM2U+(Y&YKc&9vnVK3Qurn#X?(61NFFCCq20XRD zCi(8f6rbJ|sa)(|PR3rY z=1eQD+s&(HsJJbf;1S5=cVc?wGtqYsWc-rntrS$;mchQ|6i4LPWd5fCwMYy#q{ju5}O{%<~{WBdukQadMC9*Q2+huJ(C3=CCBJ^?0V%>JiV@x6hv>N}Q_cuncfQH#~|IUBd1BYDPXnw z3e_`=wOv))ZLTifC^F-^@D!nE4*FfY4nMHcGx_b8`#*eojsJ}IZ!@m+w%>jcnf5nu i3rl2E-RuSWjBE@F;TKkkZWA^E6^@>+elF{r5}E){st5i6 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/menu_secret.png b/TMessagesProj/src/main/res/drawable-hdpi/menu_secret.png new file mode 100755 index 0000000000000000000000000000000000000000..60c65a29ceb2ca11f09e0d7611a0decd2d6f8c5d GIT binary patch literal 1351 zcmaJ>Z%i9y9KIG-NJkNoZSpU9y~#F|UVHs>+LMl!Yk?Zdy3zpQ%eeMl=mmOL?haa* z&LRoIGD$&$$TCGGMrWMjC(UN2u7-%HeAyx-N+fJyB)YIHQ`8Kvj50rnm%DraFQAWj2D8S46{fpdCuU58GJIir%_-83in3 zMH|g-y*o_7AY0Qb!1~@gU!b==U}4aTqo6!W$^s!M(I6V?;6yTNMYnWGd7j+XpE)Nu;wI8ekcOwg_JhjN1g4er zI;yr~$tx=wl%z1J(?uc?EMmlXp-qQdES98(!Jw59TCs!9lWB7Vy`4pTn8WM3PDavahV5P z)2`g46+&S-vI7ciH)N^=J_NQ(CfVI{!FSc$<}$nIV%U|dlatXU8~d+Dr?zDGB&R#J zl@~k4hn(zoLALe8ubPh$L~+sOu=}Em{y#T2E3UMBRhE?(8y(G6fa}V{ZQGnG@p~-F zA3OF#q3|7({@LlQmj;#ZH-I|C-(b4AWV@6;_+%{mr1ShjE%S6$Va++kvaf8Ij-4)1 zuJ=qf7f%f2m>ApeNWc2|jAdwhPC2-#oG!_!PQwrQ?v>^gDycQ|ba#AWpn0T7EFS#4 zZ|tY)(KjEGq-Wwks}cpaGED-UQeUMqCt@e;@1*A$7K6j~h7Yo)E+BY@$?bah?7YiG zVKr=PJ~k6WJilS_=Dt_oEn-LByFT*c;X%&}MMEFf?#)<7r!VKcb+0h@Y=7&*8`oOq zEtzdt+Ks$!aCJ|j(^h6H`Rk}+T?w!~hyFe>HAaD%mE#uVkNDi&Ve{;A@KIyu%G6_u z02mwlUk6GvWA8IJeo-qK7`aq;y#wziY`&pvWH=(2Vc z-x(UXdkW0h_XbxdH&#|Y@lIVkhwP(NE92_(*)wMjt@WiN3KjD96HA&k`g|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?+0Dh!#mv~k%*55n(9qSy$;j2z!o|eV#mLmn z#mvPSrq?AuximL5uLPzy1)71vFV@SoV zCo^t$`v%G!Pw!h9xY+o}?IkMw$7U3AD*k7hbSLO=b9CGkzn~Kj8ZSO{G|J;|bMp25 z*S1h%;^~AorAa|E4*Br5z5TrU{*{euZ{L&M9UN90wS2GM@7;B;x7Y38>aW+eXqA^z zcxd9%M=V#D$VO<0tP9HBU=rVWZ9-+&(WIL?TdrK(rgB;Lu+`R(VAG% zJzruU(_-1kUB?hz^6++o?G;D)GtKi0mv4*ASl%_!h;f_N#4aw~PnW9O49{w9IQ-f< zBHbu-_EXlYns*MFJu~p(Da?9lq1h~9adgWE`x=hdXO>lQJQnh?;bAu5^4)cGq3f|N z58VHnac@-<_{>`N!b|)>(%-$ZcIp;SrDLPZSavZV)k#h*`sC&{ufF;7B{7Xv+> z)~7!+vh=fXOnO_Lm02BsF2*dXO+sX;V9M!dzO&xerrMm@w8fM~Jv>fr^)2>xon)1B zIhQU!(VA_VKl4=S4SD;-`bZALuOa4Ne(YXT9@D&H?G}gKi(`}S267snnOvSbGa}9P zKv~C!XdgAsO=jDCg>>>?g&qzMJ9^kT=E71Izv%Vhll(7mmp@#b_Mzs1jQxX6+6JeV zzRWoktX{XtL%+C`^Z2}HbMH?QnZ$I|)6<2ckXZHfdAAV~U7X-4FByW8fG3S==-!nT>}zE7S1U;Xbas{Ud-12aSPNA2|e4^L}@N_$UNKbLh*2~7Y-Z+gi9 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/menu_shadow.png b/TMessagesProj/src/main/res/drawable-hdpi/menu_shadow.png new file mode 100755 index 0000000000000000000000000000000000000000..e60f9bf98c9a398b4e512a8a0870b576e1bf9337 GIT binary patch literal 942 zcmaJ=J#W)M7R>pnf$zrQaC!hv;c^!a#` zf4jHy|HaPh-+Z{o%n=(9pQR4PLdzp#46M+Z;68S|#mg_a$q6tRj@ZaP(OeRWPL2_? zFy?GQXdY#;}5W9sc_C8G^vm;c3;D?YNDn!SRyf!LmDamovBF!K25ZnQ2@g z#LNL%cpfEMro)x4#^?FA1i=czW;(n|YGn67n@|j@V!7nX2mw_UQKhP?=n+t4q)0M< z)e@>`RaH}JVEsTIje5S;H#+NBe5J!FW3eVlX_|^@StN8Kp+=*TYbZ*IBTC64Vop|y zlEXs5z==zPm<1#PxuP>BbEZR{>D3X!cq1Dn>oW0zNtqK%NR;y<6+qkmKQs(C=!Et0 zb-w=;PKJvZOMRS>IdysC{KGs{thFh27@_Ql~fPZUz7x*`RUY^{k3*Egp!mjYl-+A%v RL-akrL6+GyK0Y~n`v*}=9<~4g literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/floating.png b/TMessagesProj/src/main/res/drawable-mdpi/floating.png index bc566ba3926006c8187b98817ced2b3eab7fe372..11b10cf31316f918cf7eb64b4e2a3fd8b1b7421b 100755 GIT binary patch delta 2158 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 delta 2137 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 delta 2171 zcmZ{ic{~%01ICeaTcm~*uTn$Kjgd3gw$fZhjFh>_=Dx|Wmy#jp9IsxIgb}mx4r$IL zXISpDRL<9aGFSQee14zbpFMv*pXd8|{&=1o@l5er6pxb$LR~|{1cuVm&_=*uNVv8Z z3~GE8p`oq~hik)8+OiiS@BtPUx(I)_P`rm!>2m1d4 z#P33~7lK1>dwA-)|F!^z{2iO6dcuTo#l-b07neYi8N%2$Vsg4L5(mB`^=__jZOvhF z9eKroH_AwpA_@ir_>7GZm#%}s+ah3D^6)Du(aHr8Yvzep{DPMi%1)*6i<)*!Sf`0U zZKhd!oBE(PgPWV{^)y=N*!&Hv4cmDe!{nAe&&G$F2l;bbv7774IoX-S7zV*ZRf<*e z);^^E?1Rop(l2;bREBFF=Fkp~95&vqY@11nE>!^h*maa+$HZglPI`?v*Na*S_ z7%DjBD?=5;j`CX|y$m~r%u~qgVcuM~A{54P`Lh1~P|$r(%AQt-77o;Hh?hop4ILUqXnJW&fp@Vj*DL- z_ZiN^4{GWga;*o!UjQjPD~ZQ0#pR|KW#(cXV~VViZ0J?frn*CrNTbjGaX01PX-vn( zq0_qVQX?u3P3*Zd1@mpm+L9HX5hJ=JGWF-!RqD0&Zs>c@1u7*3U+XgJ;!mWXz*-cm z#Ik~_m6?18tg7}Tt65W}?4=g^Bo7|5H2WB~S<%Ex%HkP0D&i~Lx)(Dwg*K-I0=&D_ z@-4aDFz3jLe-qRd*X3Jp+Y{|5k@xR9h4`Wehr}v`D9%iN=P7e+|LP;Ztm^1w9%v}{05Sf+fu1O!#$L+ltLI%@2% z8L6rV#gN}!HV+V}wo(Rd;4m$bP~q(Wt2R|jQbUJHim+{I_IIHhm>v3%3_&E_5;Ly@l6hJv^d*Gh}vg7?tLB0S324 z;`0^NJX&~_Au36Bul5<|?VdPzySWihS$-sZYbHf|UrSoX@jPf?Q~QuG+@Caj%;^rW z#X+R3u}%XFX6!v%m7(yq{V~AToZ5dKMjFsb;>N71j(<;rlK&R_ls{ZjD8?q|gUfO- zV!~63ba|Jy=cnp}7Qdve_qu7R$kNm*i z4v)o!>6ikyb84Vf+Gd3w@Fj-*xA^Ud!m25Y?X$} z#zOKaPff`_==fcjxC%`ylu@@5wd}9H@y6hRbGvKyG=mQsdA2VmoG>WzmC;=QY_;^o zQ{HeXUyeoEi=!@QX=ZyJ)e9fah2wqGXF{2>9$sW-XYb2{@8^RHWW>t$6xF;1__2Y) zR`$;1cIk@2nL1Z#e?Qf2P0SEzGQMr1Ni`m#bRNB#qp#06@NJ>1?~&wz2|{pUm^};M z-_CV%YYG$MzM4p=tSZk6G#9*fs?lU@%;tTuBn?duZjLKMJc_p1*!gnsfKB}rv3DDi zfEof6B!`Vb*XPb>N3?o&&(juxX{)8H&yGU2=Ykf39-XI%$VSW~Ohr0Yj2u+jFu z9vvX?WGp3thc9QdYP9Em# zCxUwvCj?(xS!lM45Y&hJEmOB#UYj32xwZOy+Vu`PIIyd$^!&z)Y6H|FJst;|EV9=7 zQ78ZsCQRMb?*CNZ6j!@DG1q$j>=FB~4W6(4-HT0njzxZ&EK>?A0qC~gkoIf2 zWWc-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`W?^CG=ICf)X5#8(Xy|HU>1br+Y~p6*X71|h z>}=@@)9aF-T$-DjR|3v4~Pj*wm=R%;iu*SQ+p9GSs&T>Cl#0_o_M-AhE&{2 z`t|?6J+rQ%Fmvz06|5QymMl5K(;+(XXvB(?4Ga@zF&z2m@Q1f!=gKt33kCiPrqUft z7dpj+d}h4x!O}rXa=w(93GeL2Dg27f)m2pz3(uqkDc?*tk>{!B-WG71=}XN6?xpIC zg?f{I2qj$VIl8D`Z{dc-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`U}<3BYUyllX5#8(Xy|HU>1tr+Wa4OPW@&8U zV(#Py)9aF-T$-DjR|3v4~Pj*wm=R%;iu*SQ+p9GSugNT`w7ev|2$nBLn>}1 z{rUgjo>`Ysn7NnntZstivnf-iurRHZbkK2IR=K{>V(aqd>B@TY0ZA4d9ZVl}Y8+ME zS_1@?)%ofe3dICIGaA|pJZJdmKj|?8zXns=>k^fJAqh2xOfOGf@pARv(4o65%_vnR zs3(UzX=BIHU}L_jg^BwlUKLGv7<*+)gRIoT$(pB5vM{U&sbNm-4$$V?=UBWc-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(gnVDkcYT@kaWM*PvX5#8-Xy|Iv4~Pj*wm=R%;iu*SQ+p9GS)ZD^X$1oV<62J_$B>F! zSEgz!tIDVDO;oFF3@IT zf8yY_tZD)GtpzW4y=(7O&gBw(B3<%ZA^YYN?G*||(>xfGM7Ocscxfz^<;%HHKANxO z$#(^QwSyuNto(|zZ3FthIvgrmr5K-PC92>n{oSvik2{EWDS zJoDCs+4-{jH2tj_zcl=bae~;K6WgVG|H?#MetN)A<^9~bRZj2B z?I$j7Gwt(JnEqi)O=GNNzGRMADbq}rC-)O3|A>2ZmFw}WgL=QO2L(3&kturmcB{br3u1?Ub^USV}e(q@e;ugbO$t_Au zK}Fir1eS{GFs1$%bN8D#<<2pN-Rln*CRP`CHNLvx&(~KX*il^&Vrx0!R#JDR<(}fz z4IMq+4~w4sN@sq4r`{;~;EeC8AN2oe)v-!2h=oo{%PEQlMjQi!r>mdKI;Vst0He+0 Ah5!Hn literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/menu_invite.png b/TMessagesProj/src/main/res/drawable-mdpi/menu_invite.png new file mode 100755 index 0000000000000000000000000000000000000000..6f2d41a505a21861d10f3f3df8e10e8c7064b99f GIT binary patch literal 1157 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(gnVDkcX5eJ#;_6~)X5#8-Xy|Iv4~Pj*wm=R%;iu*SQ+p9GS*v_LX9Ua=KRsO>Ln>}1 z{rUgjo>`Ysn7Q}hh3yTkA-t-ps!zopr0A&Y(ZvX%Q literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/menu_newgroup.png b/TMessagesProj/src/main/res/drawable-mdpi/menu_newgroup.png new file mode 100755 index 0000000000000000000000000000000000000000..7b5185f955b0f888fd9085059119f43b488e36b2 GIT binary patch literal 1222 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(gnVDkcW@hSYWa#Q_X5#8-Xy|HUX>MWcY-!)9aF-T$-DjR|3v4~Pj*wm=R%;iu*SQ+p9GSx3tFS1>RzT6wxShE&{2 z`t$$4J+m&OFmvz06|5|b+iugvL(oHqH#|pvIp}Z}aR}ryFI8G_-fnUd;~jQ~X3K^Uae;IOL+x3+iXC#;P5x*H z$euXFqVSC&DON#@;n8=88p)1whL1H1c1^z#bkQlJVslb=!HS214&P)I@|Ytzjx+__ z=VaVyE3lpUqwRuS203CZk3YT?)UXxq*vZktc-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=IrX?Y;0~~X5#8-Xy|I<SSPQ z?quo&)9aF-T$-DjR|3v4~Pj*wm=R%;iu*SQ+p9GS^v7Oy@P>)k5c$pcv06cob=Ak^Dji%4N@Ol9y*=TGIWw;x)1}u7`EGbj z<6n@-$2IM3#1k{dkKs!y6i+kpDg0w9v2}A{Jo>NkNyCh8A#M#eiIp4@+Z-LT)C9UG zWL(Qu@MHazqpT=DA=!eXgXyDAQjbJSmz(>~!ipEmlvYK4n8oxtPAJ(?OJKj!mdKI;Vst0Ge-n&;S4c literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/menu_settings.png b/TMessagesProj/src/main/res/drawable-mdpi/menu_settings.png new file mode 100755 index 0000000000000000000000000000000000000000..c3d57c2109ae4dffea19dc22c4bed6b5a3e0187f GIT binary patch literal 1349 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`U~FLG=IUx`X5#8(Xy|HUY36KbY3yWTV&ZCI zXy)Vw)9aF-T$-DjR|3v4~Pj*wm=R%;iu*SQ+p9GS%;TPB{48C?(}qV45_$v zW!hP7mq3vN&lSt2Dcww*(%-w{`ZNu6eAJB0Q2ZEjKDh3S@ar zN=sF&X9yOVcYm$*SF2)q{(LdNzq{5KpSS&fulU^F?~&_XyLoA*P89NX6;QstE!d>k z$@aCyxugi|7X~kG9p(v4c8HxAaZg2<%k-h` zPZqd*zjgtS?);-u4_owb&JMhxd5dxN`ei2_&&qQ@7o2tT=;kwyzoegUe{ewPPHkd1 zyJzsE^$)M6U*OuZah2qTpLwmO^0&p`o}TeUZ&q!FfOhyf`y)34EO#`naIfWez7Z#R zdP*O6tZm#$kLS0-LId4aT;F@Hc^tA*x@nfIfn>*Hkh2n{a5oArx4IUg&mpSZ>Ik@ov=*V|fc1q{qq^3lJNCVyg^{p$(eAw`*k z^WNwFI@(<9d0F#H`Wh3lYt<9DSN#6U5-F>ue^cJx;{T`hkAfQ*87^#Zefw=9Ke%A? MboFyt=akR{08}mKjQ{`u literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/menu_shadow.png b/TMessagesProj/src/main/res/drawable-mdpi/menu_shadow.png new file mode 100755 index 0000000000000000000000000000000000000000..1ffe94269923a4fb60b3e1e71cb89e1c1087657c GIT binary patch literal 935 zcmaJ=yN=U96g3NC(MsF%XhyRQNW`x=4j#oUiJh>Pa1~`noY&y=A-aFK50Hz~jfDmLo0@ zVdjB6I*U`3n{cIz_`KMbAXq`z%!HRo4crc}2*scxmP@{@C_vXmMXTt#@(`%9qDnG< z^^&5YijLGOSU-?Qqrn(;?bbRLUzu>qSb`)e%Q7)5i-b-j#W0LQLsd&0QA!sv^YT)h z9&HqCocc6OSV&?}D0(9@XC~yCULGMzwz6@$E)y@9lzWM!h;nhH4bXM}4~?QNI%Qpa zmG3`=)BYmCQWvLWPJQ0E@lg>fK^DaxBeYM**`|t}DPbg?k_1>i9o#<+W(kxr9tG1#W8?H_Kd4yxO;RaV+ z-lQGe!U|EsBiopUuW-Q22iH`tv^c_&xm$w)f~`#r~)be(!%fe}DTzc=G0&Ab#32f*&uQ7gxt= Kw(XCN;oCnw1RWRv literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/floating.png b/TMessagesProj/src/main/res/drawable-xhdpi/floating.png index c087569c8703fe386cb55968eea6a0be0b67286a..a7e9c09f6d5e4e5d473158aa28c9b0bc05479784 100755 GIT binary patch delta 4542 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 delta 4627 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 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_broadcast.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_broadcast.png new file mode 100755 index 0000000000000000000000000000000000000000..1a2a61a0c26fe4dfaab64d609674a7d79f64b01e GIT binary patch literal 1423 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`vf$McPz^NCM6mkoIHoK%2WtOF;xE1B+DuBIgm5JLeE;!AD z>P^Av7AIGndi8;h(Fa8=QbfaqfT;(>geO}d2cGa#^MI+n2$-yuTKSk57?_wnT^vIy zZoQdxUYpHP;`n`0zL-C(ULF<-LY|Y9R9uUeyX@FoHmN_c>gQf`U-H}xh zXP1fTP-?lJzKQ+hzI(OzYs<@x{A;W3m8XB7`SaYFb2jh4WHmY*P~Uv?hl;tX1Lu$T zOi9YT55E6au8O-}TF&Zn`o#>P816ZTxSZB66>vB#Tqu0uUv5{q!>s457k(JsQCjjx z!|Ur8kwp(VcND&0@?BNlaBRBN-g#QLjkKz2x%dv{?wPF|z;b$m-fOpOx$cjf`xuIi zInCLpnq9ffmhJcc$ma_g!L}dso;Y3Iq+ZOaB^}B%g#qY}0HzeN4_dn$EN`-YIk4x{I;yViAUUU7(uO5Ng_vOohn~V1J%`lAF@A*;7q+P z{F^YVr!4AyVO9?nUooxtAZaf0WZFc7q`Ct<@|zQHch0Ri`MvbTui2pvl@^YIg{)tX zB^7*Ln{hCVG2~O9G*8j#3>AH~k4L+vWy)wh`MB3~PH^Y`9PYk_Kc*WMuI2isBv9CX zyCcfToi&MB(m+$p`*G{@&4Dg5kIL#|?zPKUl$%c7kWiP*f1<%I;=2pbx#t#KTbtq+ kTyGix43V90gButbLJt(3TjivD5>!Nby85}Sb4q9e0QS@X00000 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_contacts.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_contacts.png new file mode 100755 index 0000000000000000000000000000000000000000..a7cc40dffbc4dde7369e08709b0532e56160bb1f GIT binary patch literal 1399 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`vLFjeFsTY(KatnYqyQCInmZhe+73JqDfW2&$iQ6saIL(9V zO~LIJ3!HlOfsWA!MJ!T8!-RmT2gHOYTObFX@Kf`Esl5o8tYcY!wJ|U-zV>u+45_&F zW~Q$RE)|FyaPT6_9wFYV~|OOMo8Js98WEm(bR z`l?lZk5u^%DLg33W1YYl=zDqInK?CSr!`dTS%2B)Jt-G35)RDfI4Y^KK7dc!@0r7l zivj%Bf&vLD3;gvKo2}t6JE-zPb=d*4A4R2-r3vQ~_)`AY)_Kb`1REUL$lj%P^8Z$L z1O9!MTpkfB@f)i*oDOuj)b?J{oiWmJ-zKTG*N^4?V6)_k5P9-?R>M=P=rSgqLXiv3 zvqLT@{S>}%wp56}S$c!()8_dzmIXc9HFNidj-W-Cgtc32gtvcRxQ|i0QT&73d-ekg zFP>;U5MFXnatBL)sFq*tQ%PpyglQkDbrsy(r;Gg9@Zl=!T|rK(O?nNc29LhUXk5}- zy!}O;?8$KBzcX#SHhLMx3Qk}b^u1i>u=1i}gM_`qePyMtkLlA27!ChCaNVq~e6(k$ zqJnBcs1KKT!?Y^Vse32ic)NY#%2l_nc$*%Xymi7%QHiHB%as%kdmPv)%ouodN6d#? zUz!T;Ze!Rb$l3TfDpsT7hK%O1w?602oK(+$wUj~Af$PJSI#vmWrnZvwW9EhjKt-Xa LtDnm{r-UW|^wID) literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_help.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_help.png new file mode 100755 index 0000000000000000000000000000000000000000..256a4fc1560d07857087e55c3f67fbc18eb9d26b GIT binary patch literal 1801 zcmaJ?c~BE~7+oS*1d&SwanL0kqBRNO2qawQLJ&hSPzcxvA=!`=k`2iM;hX@90TdO- zcGOZ4D2IY#9l&~m%787<0&)~QV5kMgDhLBp z13gPU000d9{TOU?bksb$8_{c^V8}DUqRU0Pyrt%6R-(2mzy^7_rm~J8}0R78DD-uwkw& zN0y8ZiNt;>aws?@Fod5H%O?x4KHi|Gl7b3IAcO}hC2>*(Md^iI)}^3x%{BoGE<=!5 zFYL#pIIJL$4$C3X74MAWI}(W?iG(M*xROZ3eV~&g(TU)Q-Xt8+h2l!0IJto<7Z!~s z7YHeAhVM!&bmfH=A&87ZAS5Lv;gg*4usnu9B$LS+4JRiYiohw7r3g=nlPYXh6&R3$ zFBi)YF)Rf&io9qz0rA43nSLxmB3qM{DprmOJurfjCnFH?j+&BIfh^YlLnV?mv;tv6 zpYr`rVMR!?3?i^01)Lz~qm2{VXhO*-bUDOBV0j1($E}`XkO)R#g$R~`^k5R`5GIxi z;3UPKWju>T@s}zPo|F&yGrX{<0$wZ@P-sjiS66o@8p(y}N+dE}-05U@8r_XZb8{sz z$-c~0E(7K#NFXV)$`yR#(%0o`tRRu0kr|L&oCpbg<*)=?E}0@;KNs@4dMjMP`ngco zdS-P+O+ zQKNmtjH%}6@3ef69q^m6H48DKQX?F&B}#R~q=}~)p)0#E-=b<)CHRe=4)yF_?9-;~ ze(gNB;QOK~^0N<}hVxev7Y)-hp?()QQFw0a)KE+9FT&Zy(e}1W7g*;dgT3r}sMn++ zPsKh`C)Mc`x%3&e7wa6O+URCQq{LwaO-6p1widwjP0pb=i(gW*EjnOor&gefmFKfd z>vSVaZGpcExIZvvn!D?SiZ;e?@dS#DrrMLVWJ|VrZ=#BZ-z{(%rr4BpW1xi@@Cp-? zw)5Kt|JF!8W+)A4HkDQSoeS_09ap~^=ys^Pmp7da(wq+)7-L2oQ-xM1sJmWrYj8ks zJCb4fozC6L9cg7+lmp!rV;LU)&o>7%zPhI0sY-7}j;hlh#|@_s*>Rec^;X>Rn?C{< z_c}-6M(j#nPwbhU)@3%FIhBjoHRfOCR_2c{6z5M5HYpr+?3S!?)!P2S(RZy>L}A*Xn(gx{YcjhW2Lv9WX+9K#2@Xql+`uD)4v~_ zs*-8{_JQ`S_R&CjPJ}~D$)NU>r^h&F=yit2RaD*-Oxc@}p9bv$}zUm46&oP|0?WJQkfBrS)kMm>E$>6&#orB_AbELnoW5%kd zGPZBJt$+E!)pxlbHOEK1Z-m+n_xLtJuNBr5(OZY?-iJVBhJ!w6e7`H_e!qRe%lVK# znsmp)l8HN^0K%t)w>>>TUN6L(a)e+-&)auH-Y)LcJ==#2yUWg_Iw9Yn%5}Pbz0nZ5QAf zSvbW7a$A{Bhek=PtyhZqh8}^J&ThuFnuHA4Ew)8$37xw}Wva>-&7*)nsm70NZNC0N P^Kl3^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)yMv>2~2MaT(6M*(J3ovn(~mttdZN0qkX~Ox$j9!D${; zZwgMg7`o!rs}FRHJ}6?5A{r(HOg$hbJlO&{@Pwb52Tbinz+`QI`Rq>y2F9yypv+hJN za3?V8D8yw?l~tI3zB+dnV`M_plpkx@v=(GUUaOt(-aN(Jh@a`!L9>WIi+L>rnJhUf zuV->j{G2NOd_R+B+H)4h%*&n(u61|Ze{*hF+TGC8e!@CZY_q|V=7yXDbzA04n-Z$% z^4NWv@=2cl=xd}Y%VR4;DtFHd3(oBSgBs-uJJqW3fTn7WeMzh>Xxy=njABk!|> zH~g{e{1ENOy`n^Wmr5aD%#VzEzOYg&uL}orq~7e(QLhSTFz)#0zT|jjztXgWeK!)% zwpqoCaz-~j=3gkY{BBv2{C7t8!xc44Qy6_~)yp=<8L+h-T;Op}?t<#Q>l2;VE6tQY zsJp`@ZqE_T20bJ01hFr>xA<~h3UQL=I&3U=Jb^#y-J%^=f>UR)XD7H6I;=aWX3->J z-6JEx5T0Pq^8BRRK}B6%7VWhqYz7ZRFH{{uQZD4Rs`|$sWP6O)(2C)z8S!=iq7(CuJ U*SMtZQU?`^p00i_>zopr04WaZxBvhE literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_newgroup.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_newgroup.png new file mode 100755 index 0000000000000000000000000000000000000000..a55f0aa5f6a4c1c826092d64280294ac53307982 GIT binary patch literal 1517 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`vLFhHYsTY(KatnYqyQCInmZhe+73JqDfW2&$iPJ4+ZaB?@ z>P^Az76Y7m^?{Dj2SqGWM8kxDsRzV_CtDx~p72xifT_I*n5>tI#D8L7U`q6KaSW-r z^=5{@hp3~>@%i=MtlfT*ZFgCE7uB?-&23qr!@0L4fYYj@@k3YmgM;2KD{MY1NXYK$ zkY(vqd3!-qi#4$M%Hj)47d3N~8T35*D*1!;(~a75Z}!E`w_uiUyZiI|?{oRj%s0=T z?4zb!ZTZygTg4`(H4NGZxHd3-+ul&Kp7-&`3dKnEEsmlh2e^6;a{RgWQhlOFi$25S z{>i?FXHHop^-wIP^?l^_mXv36d+yH*xjCgm_4PN0=X}Th`=>uFyTDZBlfSqkq3_L} zw6FaICzq}fO%h;DJ;KDZNnNe^o5NJcyIIq}HybdDKU5Iuyb$hl;qe02AFIy~A7j;qcO*6OIY^Gg-6CoMY8L%l2TO_f2KB z73R0|7xO=0+tcp*P&UTg@ZR-Y6K2o3J0{oVFaG_yy5Vb_&hdKNIc;7RY)iB35BmS$ zT77}Nc(Ixt*M`7ZNT^H_CDI`&W46&sCv@ zkExIT3AY{F->BB!KP%AUY4K8x^(6|AHv5UZ`kt`I>wM6>?1#>5J^d$&W+xV9m#~;r z%cPh+t(5RG+7a))*zS>ZId@|)Z7-C+(l{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`Esl5o8tbeiA#xO82NqM?BhE&{o zGwZB3lcU73a_4TJUlv&x7b>W{N@2H_D&^jI;)_4WD~+8%^u^=n^sLboqF`#wS_nC$eb+` z=s$k*vYr5I;sbWMsQ+B=4su#BEzN2U(Mp{u*wJWngPA))!a{S&9*%F0d^*vZEgtf_ zA23vu-m&N4JGf2oe7S@|0{faPEB-Iak7iX~Fnjktum0>qZVVsgS3j%~b8)br!6LlH z=h-n~eWqHMSsxv9OC*mr@6I^0IkA{?+JWctXYV|aIAd6M%@N4F1w=<0k4hYOQbZYQkz_2~WZ7GAM16RfgxdS#Y7HWHPq(psG zaPOWopH1H9F6$1)@&oB#1w9JRZC-hBm#ou^UFWuLk!4v?Hvh=iPtzlR{T>rQ)Bm^@tm3q&a(dDGGNf%SG1;;Eh-pPa(cS@ KxvXm1`5Fj3)Az2_mvfJ!ZLQska*L0W> z1PeGQRR={m6a^F=MFbD1a;UT*P!DJsFAk}Kpmc+P{iAeecYnvc_rCA@eQ#$o0|Wd_ z46O}uIGl;VpC`gbitbs8$KIh|O{8Ok70Q>OK~N-`AXS4njvR^r0fAB)1&TnaJn{Rx zpcf9OPf&;@s6@DlC4-bCsSZQZC}E6^!+CjYV5uw?M1cq}N}*yChOS&E017#q5b7?Z z2w@*ETH&u%gF)H=u}m8)W6BBM>j5tf3lmU+s1(pB<5UPs!zRq=vaq>sn@j*^AZRR` z@Hr`oFc9#8)F9waawEzpR4Tw=kf?Nb27~%7K%-D;WD0gOh*Ubuox!4c0J9eXi>8)G zvP3-J*;v?$O^8NOm_;ThBqWd$+(?i*icDoPnK}&`jff$LNTLdrYKSVteolc0A~LlC zMir0>&?!nIpm>x`z%u<@f)bvWRUxy-gdG@JBZbLS5=B?i98f6yf2dM9k48`t_$A-} z6h_2}Fh~}G2o$fDVU3Hl*M)*vK59^kLTWJt#m${!U^Ik6NHhckK0yq?DO917LkWoU z3|=T?2~-FwRmngBk4?Z7ND76V#iwv7G>!*@LFcV2dWi6fO20oqy%P4W+@iVg}$KPELXm8F769*$yhRE zU1R^%=(#P-J-X?euVot(v9D#PfX5MQx?dH3=O4_myxp2tW)U)m zD-YXZ&~9|xzab|)_p)=xN#kw7NBVrXmhYoAo0ajGt>TaM)!sF{X|dOeyS%X4rRAu+ zrmgWYG`xb8{<5F|dGiPvNgkGs-R~)wzItsUl5UpeTO_VAUfV<*@T9mzFCG{esEL1f z>ys!r*!+x@X7Mzgo)&K)OijfPSa1R?Jt=Mi@PVx*)iyuxWYvuxCsozKe#eJ5%zOG) zgk}riMTW%gUR)k*k$ky(yP(Rbvw_i_G#I?4(KWZYis}GKwZGmb!sZn>wWqTK#?KF( zTeA9w>F)*?WTW2o->}+WC*V!%8eLmb-@~}w16Mrv7zvFPPG37&ZWi7Xp z;%5{V6Oy0WT65$QZP7E^cDOqRZ~3vwfhil_d)B)ebnU4wo3!sgQQmheEAmiJ`aoKXW2pW5&Rdy3F$~T=N>Op9 zJX}4RSF!vyhT}-Eqw!!cYC;AM-LCPwH=y?euz|momOS^w6~Z@Sc=`6NE-1{8M%Ic%qGK zNB>`K*VI6|Rb%+|_Cb9~Bv2COd$A>OO4Fs^g$IvuGBx}QYYvR>&T;e^X)d{I5NqaL zN~=zLX3I=3Y|D*$sApK=nE2}XYv0r*wF3u7ttXNKDKpAer|HZ{-#kYm$OlJEA#8x_mm`SGRij73zQMs52A3}hKTCu zm>TvS7l%P>)uhSVvds}AS5A4kya_1wudEBu@=w$Sa*GZOg&iwBjZ|Lhx;N~eGHiOe z;fxP*{lRpGMJ%!I+;*FQ=h>avJ@AK}tt2;VlZq(=hxC5E<}s_1AZ~8ViGQY z#YZh$?o=8*)Y}gyJ@Jd*kSE#U-6Ai=$9QKyMYrcPmw4`q8Ojke*!m^!ny8a2ULX%1 nAI{`=OuJ^ksb4x&|DzrrSIos7%|8#6>V7{0egLn6yKCP+IzYS^ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/menu_shadow.png b/TMessagesProj/src/main/res/drawable-xhdpi/menu_shadow.png new file mode 100755 index 0000000000000000000000000000000000000000..8d539199a236a65ec40704b0fccfbae7e896867c GIT binary patch literal 944 zcmaJ=J#W)M7&fAXsHhSff-WbQ0R-_^9H+KoS|?7ZB^*UbP&3xCFNu}f=bkUv$v`Eh zva|CKSQr=>m>F2uVB`Pqfm%r$6mo)mMi-sg|Fk}o54Ir=rX9PRY@n)x=VU=O7vwp8n`t~!;MFHnz z7%mMW%4V4Aei}LM1QIZSBR|yHpC3Q5!1r|asB8;%REJ~#aE@Vj-s-vYiK}|-{u5A5 zH7XE5;(#E#iEXeArQ%QDe|@u?H>A}3@=%7M21e`pY_ z&@t)2t9<_{9QS4s0)Jk7*e-mYU>Zl*;jfc?pvnOOTQ1i<6~j-$J>L8&GWN^Z{T9*{I?+9X5Ktv Z3IcQI+Ra-V?(?1O4q1(s`L1^S>JPKqAk+W= literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/floating.png b/TMessagesProj/src/main/res/drawable-xxhdpi/floating.png index bd6d1c2c28d8435b23aeff4289f8e3d3588ec74a..e8d384d6b1122b4cac958a352fdf1e31c7e5a1d4 100755 GIT binary patch delta 6961 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 delta 7080 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 NQ&mr;8iB-%_#b4kNeBP{ delta 6941 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 Ydh+UKNjeDm6YG9yKy_8Clwslj2dN!8hyVZp diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/menu_broadcast.png b/TMessagesProj/src/main/res/drawable-xxhdpi/menu_broadcast.png new file mode 100755 index 0000000000000000000000000000000000000000..cf8e5baa90a278b68792be061a0028b07336aad7 GIT binary patch literal 1610 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(gnVDkcXl7{YW@h3FM2?1rt|k@+7LJx~ZYJi=hUNyQ zmPRnWF8Rr&xv6<2Fuf@Vy&&z_^@5T@ZUN9{m(-%nveXo}qWoM1u$Qeeal6GCr+HAl zDY)I@f>W~) znR7qeKT+oR{KZe*f3n}%8QE(#DRP=dq>hle(Db6CtS?o<#6B;csvNWOu8-59)+I+; zRTdX6EjZe`b&`X7Iw|V5hMNy?8cbO_=Vegyt*zI# z6wR1FW99>miaFC|=4W3JDv;B8Yp>-n2GkTT_DEgHSbigfU~2B3k)5Bxc;Zg3vO1^bCO(HGL>tr zeH;xt7iI9Ye|@0Gder+@gR}V!zPyHuS{z)L_PiBtduStbt%18pw>!R)%P%VKU(}iB z_C96(^O~0U&T+hTePPM;*Q#qHJtf(>53Ck(J@swc<%C?prcJZhzrLF5+jZyXVa?N3 zoYxw2AFS0EK6?GwKhG648+Ep=j=6ZNgzwL%L^a*&(tT0WZcY!JIsbrO@cpg7&XhX7 zKcIQKIQ4gKbz7?a#n*4yll9ggb-7SI`&?jl%rwdCf}42n6o+0&FSzq5W@hl(GYdmK z>Tj@?HT3JPd$#m)O>*VCjdOm5&D_oNYRaRmGnU&=3w^nJ<2_UKQs=U`iFJjmSH55M z-}w8a+1vSZbi5}#QL6aIzc@bO(^=mOYo4CD-udjj5$nl4PZm7gdAjFmwXmOl*nj2i zK7VUDXRleYNZ}-7ckvV1b(=#)O_sd1*SlW2L~`va1<&&$vWs*qQmsFV86?U02{y$w z@IKgdZHjGz;f{P8kHG4A?=|kJKKReCwZ9Xbe!$VP^vQMxW`@=L)vNA?UKRnB?w+oG JF6*2UngD(2Z^i%s literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/menu_contacts.png b/TMessagesProj/src/main/res/drawable-xxhdpi/menu_contacts.png new file mode 100755 index 0000000000000000000000000000000000000000..483e8669b7aefb5c7f6dc8ce964058499318c8fb GIT binary patch literal 1648 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/menu_invite.png b/TMessagesProj/src/main/res/drawable-xxhdpi/menu_invite.png new file mode 100755 index 0000000000000000000000000000000000000000..e7e1adbeb8f15746c73e2e09e916ec180c068e25 GIT binary patch literal 1656 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 literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/menu_settings.png b/TMessagesProj/src/main/res/drawable-xxhdpi/menu_settings.png new file mode 100755 index 0000000000000000000000000000000000000000..bcd8ec6b97f1b0d35a7108eec464a1b17bbaebed GIT binary patch literal 2280 zcmaJ@d00~U8b%8jRAQ_&9ZSMAvXmvoBv27VDDm+k240*J;iyC`!clQ+GRCEB(`j%k#eP_kF+bea>^Xg@p#& zz#L%^2*ifTps@`j!}wU38Qu{i=YtJ{0~o{u!{xDHvOozyC?a_bfMiMqaR3_-h*A<- z01^Z;3nk|8KprcED3nV*1xAdgTBC>uc1&<2?)r4^@f`6sSF9Dwi1r z8lVy?#R^a?mm!Ucf*5%sNJbel{i_72;;XDo_2rlh2Zm7#6d0T*)>zUEkj47{P^t7Q zS_QI!zw`Z{!YWRR0>H2Vl{`@?G&C;O#TZIKq$&XcC|7di@=Y_R7#1%F<*InO0!a-g zAkkd0Oe9ZME&GgTv4~8W3KYnM0Fy>W85BIlViA#s$NAtWD{%y`APNo_crO;R6 zy=ho_5Z%|8I>V*Og^5x?2F`Fre{=EQP5 ziqmrKBjz=aRvq5%Iw1Ms;?jTmJ=n1i)djm??e1=Sk<*lpI(PVTnVX-6!E^Q~n6n4r zg@&@Qjr@az` z)^`gEbVUu4=#@O1*7IHx7+sTZ_F)>QgKp3iMYfIDxNVtggzsu(*N}4;fr$7UKK>S) z&4iRZuc03;+#9*tVu>PI$M-0np z$Xx0~7k(d!4|hB?re$jRrqGuyKbL;O&lwfpxc%Xn`=O*#w*87pd+@;fb`&C~w`1|H zTf^_-QnZLSWe4J4_i`L~&ufWsZ;34wj>-g|h21 z4ScNZe5dboyLZ2_PbIysCo~5;opXf0)OB2IW^a&df!<+m5Dn{@0aw=pOx`G-}Xfab@>>6w^i5c zNBo%RHV22m;y-deS}43l8|)_Xh>|4**^F9~5d^&Ih^18}XH~^?_9NKc8jkcGtz3uV)$7~^daI;)^%gY@$8A=zh!+c*gKbwA0v8J$vz&u}lA?Q0 z@9AaKx;oYt3(g(90`G{_TPPK0zI17n(A2 zLXJW+VIFgs(kDg5OD)y!t!qpYfXhu3CvU{N!a&w*P(01N!2W!RkJ%F_E3XZsJmg$7ELN z+5B!zcb={S+oC*kxWDOq{rZZ6_Jq*PbNmZS`S8(0<#pSCZHB$+VJy#ExWuG1uB=8? zJTT1a40|hgvRkt1{^4QnZnz_w{YvST+3#c~32dftWHH57Ai-<6$B=n=Dn0#am_eT07Ogw}=Yk{;g@YBeBOD&4nQ#~bBZmCZj|`1HW3 z#s?Nn?|02w1DlJM)jd~vj@bSvt9)#NDO=NjO1yb;?gA)r%d+~Hzn*+t7oGcTr{xaP z2lCZVDR4sGzvdjfv_e&Vw;;79G$`M%uUA{oYM4Jgh}QE@)noYguIPsfr$)|gt30yN zPRq~Edg?g!8W`I;ezm=7AgU_F>1OuFX4C8bElZ|K7qXG%)@?om*$Kbzz0-Oy>c&fi z$~5vq`N1fc8q<%bpQUY_95JotZJUp-Fz3*p^kgG+otDpL!+;Bu6LsTP#|p-Z#*@5J u7oDb@b^SvW!{=Ef>WNVbv3 zSSf}{ynwJNs(hFPmOX|T^x@F;75dxTcQkMvg+3{ooEfNa&1icCIdb36}3k>LwPQREMR z!0`ghkyp&|1-U57LJ2G%nnVkof!xyS%UEQk&?AfknPuZRX5u`9!Xe8`l9Xx)LXIGE z(bUIQlJleem4XH%J9Go=A|IrRRv%5ULX%7{j^G7rSwC8qi4=@YtbpYiE--d>!&_sc8T}Q6wOC?pT>7rQ5^SoZD)$`f|RTm|(S}aMbzT#@g zo_Ns5E3R|Nt#9O}R`3E6S%abb6gu?~d0=s5+1;Frx>0Y*bvEasZRD~f88&U~UyWXE z5%;9iwQb2_ZG7kxw}-^mKeM0q$dzCXt=dUG_nlsk+xc?0GQaWiZ0kEJ%x_&iw=;V} mWxn(HdiMP2!~5!X<=GZ>aI+?qU;qA*UME9uXm4u07k>bnIVUgx literal 0 HcmV?d00001