From dd61bbaa7ae798aa927f15a8446dd8824de05952 Mon Sep 17 00:00:00 2001 From: DrKLO Date: Wed, 19 Nov 2014 18:17:24 +0300 Subject: [PATCH] Bug fixes --- TMessagesProj/build.gradle | 4 +- .../telegram/android/ContactsController.java | 1 + .../telegram/android/MessagesController.java | 80 +++++--- .../org/telegram/android/PhotoObject.java | 1 + .../ui/ActionBar/ActionBarLayout.java | 2 +- .../org/telegram/ui/Cells/ChatMediaCell.java | 12 +- .../org/telegram/ui/Cells/TextCheckCell.java | 5 + .../telegram/ui/Cells/TextSettingsCell.java | 5 +- .../java/org/telegram/ui/ChatActivity.java | 172 +++++++++--------- .../org/telegram/ui/IdenticonActivity.java | 8 + .../java/org/telegram/ui/LaunchActivity.java | 2 +- .../java/org/telegram/ui/PhotoViewer.java | 21 +-- .../java/org/telegram/ui/ProfileActivity.java | 5 +- .../org/telegram/ui/Views/AvatarDrawable.java | 2 + .../java/org/telegram/ui/Views/Switch.java | 4 + .../org/telegram/ui/Views/TimerDrawable.java | 21 ++- .../main/res/drawable-hdpi/header_timer.png | Bin 1032 -> 1300 bytes .../main/res/drawable-hdpi/header_timer2.png | Bin 1072 -> 1588 bytes .../main/res/drawable-mdpi/header_timer.png | Bin 698 -> 1200 bytes .../main/res/drawable-mdpi/header_timer2.png | Bin 715 -> 1389 bytes .../main/res/drawable-xhdpi/header_timer.png | Bin 1281 -> 1438 bytes .../main/res/drawable-xhdpi/header_timer2.png | Bin 1329 -> 1898 bytes .../main/res/drawable-xxhdpi/header_timer.png | Bin 1928 -> 1759 bytes .../res/drawable-xxhdpi/header_timer2.png | Bin 2031 -> 2337 bytes 24 files changed, 203 insertions(+), 142 deletions(-) diff --git a/TMessagesProj/build.gradle b/TMessagesProj/build.gradle index 9f802790d..6cd896cc3 100644 --- a/TMessagesProj/build.gradle +++ b/TMessagesProj/build.gradle @@ -80,7 +80,7 @@ android { defaultConfig { minSdkVersion 8 targetSdkVersion 21 - versionCode 388 - versionName "2.0.1" + versionCode 391 + versionName "2.0.2" } } diff --git a/TMessagesProj/src/main/java/org/telegram/android/ContactsController.java b/TMessagesProj/src/main/java/org/telegram/android/ContactsController.java index 122469c04..d10ae4e71 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/ContactsController.java +++ b/TMessagesProj/src/main/java/org/telegram/android/ContactsController.java @@ -1616,6 +1616,7 @@ public class ContactsController { public void reloadContactsStatuses() { saveContactsLoadTime(); + MessagesController.getInstance().clearFullUsers(); SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE); final SharedPreferences.Editor editor = preferences.edit(); editor.putBoolean("needGetStatuses", true).commit(); diff --git a/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java b/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java index 3ecdc5878..69f5f2fff 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java +++ b/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java @@ -68,6 +68,8 @@ public class MessagesController implements NotificationCenter.NotificationCenter private boolean startingSecretChat = false; private ArrayList loadingFullUsers = new ArrayList(); private ArrayList loadedFullUsers = new ArrayList(); + private ArrayList loadingFullChats = new ArrayList(); + private ArrayList loadedFullChats = new ArrayList(); private HashMap> secretHolesQueue = new HashMap>(); @@ -323,6 +325,8 @@ public class MessagesController implements NotificationCenter.NotificationCenter sendingTypings.clear(); loadingFullUsers.clear(); loadedFullUsers.clear(); + loadingFullUsers.clear(); + loadedFullUsers.clear(); secretHolesQueue.clear(); updatesStartWaitTime = 0; @@ -470,6 +474,55 @@ public class MessagesController implements NotificationCenter.NotificationCenter loadingFullUsers.remove((Integer) uid); } + public void cancelLoadFullChat(int cid) { + loadingFullChats.remove((Integer) cid); + } + + protected void clearFullUsers() { + loadedFullUsers.clear(); + loadedFullChats.clear(); + } + + public void loadFullChat(final int chat_id, final int classGuid) { + if (loadingFullChats.contains(chat_id) || loadedFullChats.contains(chat_id)) { + return; + } + loadingFullChats.add(chat_id); + TLRPC.TL_messages_getFullChat req = new TLRPC.TL_messages_getFullChat(); + req.chat_id = chat_id; + long reqId = ConnectionsManager.getInstance().performRpc(req, new RPCRequest.RPCRequestDelegate() { + @Override + public void run(TLObject response, TLRPC.TL_error error) { + if (error == null) { + final TLRPC.TL_messages_chatFull res = (TLRPC.TL_messages_chatFull) response; + MessagesStorage.getInstance().putUsersAndChats(res.users, res.chats, true, true); + MessagesStorage.getInstance().updateChatInfo(chat_id, res.full_chat.participants, false); + AndroidUtilities.runOnUIThread(new Runnable() { + @Override + public void run() { + loadingFullChats.remove((Integer)chat_id); + loadedFullChats.add(chat_id); + + putUsers(res.users, false); + putChats(res.chats, false); + NotificationCenter.getInstance().postNotificationName(NotificationCenter.chatInfoDidLoaded, chat_id, res.full_chat.participants); + } + }); + } else { + AndroidUtilities.runOnUIThread(new Runnable() { + @Override + public void run() { + loadingFullChats.remove((Integer) chat_id); + } + }); + } + } + }); + if (classGuid != 0) { + ConnectionsManager.getInstance().bindRequestToGuid(reqId, classGuid); + } + } + public void loadFullUser(final TLRPC.User user, final int classGuid) { if (user == null || loadingFullUsers.contains(user.id) || loadedFullUsers.contains(user.id)) { return; @@ -1089,29 +1142,10 @@ public class MessagesController implements NotificationCenter.NotificationCenter } public void processChatInfo(final int chat_id, final TLRPC.ChatParticipants info, final ArrayList usersArr, final boolean fromCache) { - if (info == null && fromCache) { - TLRPC.TL_messages_getFullChat req = new TLRPC.TL_messages_getFullChat(); - req.chat_id = chat_id; - ConnectionsManager.getInstance().performRpc(req, new RPCRequest.RPCRequestDelegate() { - @Override - public void run(TLObject response, TLRPC.TL_error error) { - if (error != null) { - return; - } - final TLRPC.TL_messages_chatFull res = (TLRPC.TL_messages_chatFull) response; - MessagesStorage.getInstance().putUsersAndChats(res.users, res.chats, true, true); - MessagesStorage.getInstance().updateChatInfo(chat_id, res.full_chat.participants, false); - AndroidUtilities.runOnUIThread(new Runnable() { - @Override - public void run() { - putUsers(res.users, false); - putChats(res.chats, false); - NotificationCenter.getInstance().postNotificationName(NotificationCenter.chatInfoDidLoaded, chat_id, res.full_chat.participants); - } - }); - } - }); - } else { + if (fromCache && chat_id > 0) { + loadFullChat(chat_id, 0); + } + if (info != null) { AndroidUtilities.runOnUIThread(new Runnable() { @Override public void run() { diff --git a/TMessagesProj/src/main/java/org/telegram/android/PhotoObject.java b/TMessagesProj/src/main/java/org/telegram/android/PhotoObject.java index fb7ac51c8..b489d12ff 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/PhotoObject.java +++ b/TMessagesProj/src/main/java/org/telegram/android/PhotoObject.java @@ -18,6 +18,7 @@ import org.telegram.messenger.Utilities; import java.util.ArrayList; public class PhotoObject { + public TLRPC.PhotoSize photoOwner; public Bitmap image; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarLayout.java b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarLayout.java index f56a9573d..224a7b1d9 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarLayout.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarLayout.java @@ -68,7 +68,7 @@ public class ActionBarLayout extends FrameLayout { if (view == child) { continue; } - if (view instanceof ActionBar) { + if (view instanceof ActionBar && view.getVisibility() == VISIBLE) { actionBarHeight = view.getMeasuredHeight(); wasActionBar = true; break; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMediaCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMediaCell.java index 4ac648c46..17b790a09 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMediaCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMediaCell.java @@ -67,6 +67,7 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD private int photoWidth; private int photoHeight; private PhotoObject currentPhotoObject; + private PhotoObject currentPhotoObjectThumb; private String currentUrl; private String currentPhotoFilter; private ImageReceiver photoImage; @@ -174,6 +175,7 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD if (photoImage != null) { photoImage.clearImage(); currentPhotoObject = null; + currentPhotoObjectThumb = null; } currentUrl = null; if (gifDrawable != null) { @@ -413,6 +415,7 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD buttonState = -1; gifDrawable = null; currentPhotoObject = null; + currentPhotoObjectThumb = null; currentUrl = null; photoNotSet = false; @@ -527,6 +530,9 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD } currentPhotoObject = PhotoObject.getClosestImageWithSize(messageObject.photoThumbs, AndroidUtilities.getPhotoSize()); + if (messageObject.type == 1) { + currentPhotoObjectThumb = PhotoObject.getClosestImageWithSize(messageObject.photoThumbs, 80); + } if (currentPhotoObject != null) { boolean noSize = false; if (currentMessageObject.type == 3 || currentMessageObject.type == 8) { @@ -609,7 +615,11 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD } } else { photoNotSet = true; - photoImage.setImageBitmap(messageObject.imagePreview); + if (messageObject.imagePreview != null) { + photoImage.setImageBitmap(messageObject.imagePreview); + } else if (currentPhotoObjectThumb != null) { + photoImage.setImage(currentPhotoObjectThumb.photoOwner.location, currentPhotoFilter, null, 0, true); + } } } } else { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCheckCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCheckCell.java index 150c7ef47..5dc3b4ed3 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCheckCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCheckCell.java @@ -11,6 +11,7 @@ package org.telegram.ui.Cells; import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; +import android.os.Build; import android.util.TypedValue; import android.view.Gravity; import android.widget.TextView; @@ -74,6 +75,10 @@ public class TextCheckCell extends FrameLayoutFixed { public void setTextAndCheck(String text, boolean checked, boolean divider) { textView.setText(text); + if (Build.VERSION.SDK_INT < 11) { + checkBox.resetLayout(); + checkBox.requestLayout(); + } checkBox.setChecked(checked); needDivider = divider; setWillNotDraw(!divider); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextSettingsCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextSettingsCell.java index a69ebbc2c..e6c0414c2 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextSettingsCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextSettingsCell.java @@ -48,7 +48,7 @@ public class TextSettingsCell extends FrameLayout { textView.setGravity((LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.CENTER_VERTICAL); addView(textView); LayoutParams layoutParams = (LayoutParams) textView.getLayoutParams(); - layoutParams.width = LayoutParams.WRAP_CONTENT; + layoutParams.width = LayoutParams.MATCH_PARENT; layoutParams.height = LayoutParams.MATCH_PARENT; layoutParams.leftMargin = AndroidUtilities.dp(17); layoutParams.rightMargin = AndroidUtilities.dp(17); @@ -100,7 +100,7 @@ public class TextSettingsCell extends FrameLayout { } else { width = availableWidth; } - textView.measure(MeasureSpec.makeMeasureSpec(width, MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(getMeasuredHeight(), MeasureSpec.EXACTLY)); + textView.measure(MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(getMeasuredHeight(), MeasureSpec.EXACTLY)); } public void setTextColor(int color) { @@ -110,6 +110,7 @@ public class TextSettingsCell extends FrameLayout { public void setText(String text, boolean divider) { textView.setText(text); valueTextView.setVisibility(GONE); + valueImageView.setVisibility(GONE); needDivider = divider; setWillNotDraw(!divider); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java index e60b92f88..e49fb47a3 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java @@ -38,6 +38,7 @@ import android.webkit.MimeTypeMap; import android.widget.AbsListView; import android.widget.AdapterView; import android.widget.FrameLayout; +import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; @@ -103,11 +104,12 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not private View bottomOverlay; private ChatAdapter chatAdapter; private ChatActivityEnterView chatActivityEnterView; - private ActionBarMenuItem timeItem; + private ImageView timeItem; + private View timeItem2; private TimerDrawable timerDrawable; private ActionBarMenuItem menuItem; - //private ActionBarMenuItem attachItem; - //private ActionBarMenuItem headerItem; + private ActionBarMenuItem attachItem; + private ActionBarMenuItem headerItem; private TextView addContactItem; private LayoutListView chatListView; private BackupImageView avatarImageView; @@ -123,8 +125,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not private TextView secretViewStatusTextView; private TextView selectedMessagesCountTextView; - private AnimatorSetProxy runningAnimation2; - private MessageObject selectedObject; private MessageObject forwaringMessage; private boolean paused = true; @@ -176,7 +176,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not private int onlineCount = -1; private CharSequence lastPrintString; - private TLRPC.UserStatus lastStatus; + private String lastStatus; private long chatEnterTime = 0; private long chatLeaveTime = 0; @@ -367,58 +367,22 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not @Override public void onAttachButtonHidden() { - /*if (runningAnimation2 != null) { - runningAnimation2.cancel(); - runningAnimation2 = null; + if (attachItem != null) { + attachItem.setVisibility(View.VISIBLE); + } + if (headerItem != null) { + headerItem.setVisibility(View.INVISIBLE); } - - attachItem.setVisibility(View.VISIBLE); - runningAnimation2 = new AnimatorSetProxy(); - runningAnimation2.playTogether( - ObjectAnimatorProxy.ofFloat(attachItem, "alpha", 1.0f), - ObjectAnimatorProxy.ofFloat(headerItem, "alpha", 0.0f) - //ObjectAnimatorProxy.ofFloat(attachItem, "scaleX", 1.0f), - //ObjectAnimatorProxy.ofFloat(headerItem, "scaleX", 0.0f) - ); - runningAnimation2.setDuration(100); - runningAnimation2.addListener(new AnimatorListenerAdapterProxy() { - @Override - public void onAnimationEnd(Object animation) { - if (runningAnimation2.equals(animation)) { - headerItem.setVisibility(View.INVISIBLE); - headerItem.clearAnimation(); - } - } - }); - runningAnimation2.start();*/ } @Override public void onAttachButtonShow() { - /*if (runningAnimation2 != null) { - runningAnimation2.cancel(); - runningAnimation2 = null; + if (attachItem != null) { + attachItem.setVisibility(View.INVISIBLE); + } + if (headerItem != null) { + headerItem.setVisibility(View.VISIBLE); } - - headerItem.setVisibility(View.VISIBLE); - runningAnimation2 = new AnimatorSetProxy(); - runningAnimation2.playTogether( - ObjectAnimatorProxy.ofFloat(attachItem, "alpha", 0.0f), - ObjectAnimatorProxy.ofFloat(headerItem, "alpha", 1.0f) - //ObjectAnimatorProxy.ofFloat(attachItem, "scaleX", 0.0f), - //ObjectAnimatorProxy.ofFloat(headerItem, "scaleX", 1.0f) - ); - runningAnimation2.setDuration(100); - runningAnimation2.addListener(new AnimatorListenerAdapterProxy() { - @Override - public void onAnimationEnd(Object animation) { - if (runningAnimation2.equals(animation)) { - attachItem.setVisibility(View.INVISIBLE); - attachItem.clearAnimation(); - } - } - }); - runningAnimation2.start();*/ } }); NotificationCenter.getInstance().addObserver(this, NotificationCenter.messagesDidLoaded); @@ -813,6 +777,33 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not layoutParams2.gravity = Gravity.TOP | Gravity.LEFT; avatarImageView.setLayoutParams(layoutParams2); + if (currentEncryptedChat != null) { + timeItem = new ImageView(getParentActivity()); + timeItem.setPadding(AndroidUtilities.dp(10), AndroidUtilities.dp(10), AndroidUtilities.dp(5), AndroidUtilities.dp(5)); + timeItem.setScaleType(ImageView.ScaleType.CENTER); + avatarContainer.addView(timeItem); + timerDrawable = new TimerDrawable(getParentActivity()); + + layoutParams2 = (FrameLayout.LayoutParams) timeItem.getLayoutParams(); + layoutParams2.width = AndroidUtilities.dp(34); + layoutParams2.height = AndroidUtilities.dp(34); + layoutParams2.topMargin = AndroidUtilities.dp(18); + layoutParams2.leftMargin = AndroidUtilities.dp(16); + layoutParams2.gravity = Gravity.TOP | Gravity.LEFT; + timeItem.setLayoutParams(layoutParams2); + timeItem.setImageDrawable(timerDrawable); + + timeItem.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (getParentActivity() == null) { + return; + } + showAlertDialog(AndroidUtilities.buildTTLAlert(getParentActivity(), currentEncryptedChat)); + } + }); + } + nameTextView = new TextView(getParentActivity()); nameTextView.setTextColor(0xffffffff); nameTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); @@ -858,35 +849,31 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not ActionBarMenu menu = actionBar.createMenu(); + headerItem = menu.addItem(0, R.drawable.ic_ab_other); + if (currentUser != null) { + addContactItem = headerItem.addSubItem(share_contact, "", 0); + } if (currentEncryptedChat != null) { - timeItem = menu.addItem(chat_enc_timer, timerDrawable = new TimerDrawable(getParentActivity())); - //headerItem = timeItem; + timeItem2 = headerItem.addSubItem(chat_enc_timer, LocaleController.getString("MessageLifetime", R.string.MessageLifetime), 0); + } + headerItem.addSubItem(clear_history, LocaleController.getString("ClearHistory", R.string.ClearHistory), 0); + if (currentChat != null && !isBroadcast) { + headerItem.addSubItem(delete_chat, LocaleController.getString("DeleteAndExit", R.string.DeleteAndExit), 0); } else { - ActionBarMenuItem item = menu.addItem(0, R.drawable.ic_ab_other); - if (currentUser != null) { - addContactItem = item.addSubItem(share_contact, "", 0); - } - item.addSubItem(clear_history, LocaleController.getString("ClearHistory", R.string.ClearHistory), 0); - if (currentChat != null && !isBroadcast) { - item.addSubItem(delete_chat, LocaleController.getString("DeleteAndExit", R.string.DeleteAndExit), 0); - } else { - item.addSubItem(delete_chat, LocaleController.getString("DeleteChatUser", R.string.DeleteChatUser), 0); - } - //headerItem = item; + headerItem.addSubItem(delete_chat, LocaleController.getString("DeleteChatUser", R.string.DeleteChatUser), 0); } - /*LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) headerItem.getLayoutParams(); + LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) headerItem.getLayoutParams(); layoutParams.rightMargin = AndroidUtilities.dp(-48); headerItem.setLayoutParams(layoutParams); - attachItem = menu.addItem(chat_menu_attach, R.drawable.ic_ab_attach3); + attachItem = menu.addItem(chat_menu_attach, R.drawable.ic_ab_other); attachItem.addSubItem(attach_photo, LocaleController.getString("ChatTakePhoto", R.string.ChatTakePhoto), R.drawable.ic_attach_photo); attachItem.addSubItem(attach_gallery, LocaleController.getString("ChatGallery", R.string.ChatGallery), R.drawable.ic_attach_gallery); attachItem.addSubItem(attach_video, LocaleController.getString("ChatVideo", R.string.ChatVideo), R.drawable.ic_attach_video); attachItem.addSubItem(attach_document, LocaleController.getString("ChatDocument", R.string.ChatDocument), R.drawable.ic_ab_doc); attachItem.addSubItem(attach_location, LocaleController.getString("ChatLocation", R.string.ChatLocation), R.drawable.ic_attach_location); - ViewProxy.setPivotX(attachItem, AndroidUtilities.dp(48)); - ViewProxy.setPivotX(headerItem, 0);*/ + attachItem.setVisibility(View.INVISIBLE); menuItem = menu.addItem(chat_menu_attach, R.drawable.ic_ab_attach); menuItem.addSubItem(attach_photo, LocaleController.getString("ChatTakePhoto", R.string.ChatTakePhoto), R.drawable.ic_attach_photo); @@ -918,7 +905,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } }); actionMode.addView(selectedMessagesCountTextView); - LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams)selectedMessagesCountTextView.getLayoutParams(); + layoutParams = (LinearLayout.LayoutParams)selectedMessagesCountTextView.getLayoutParams(); layoutParams.weight = 1; layoutParams.width = 0; layoutParams.height = LinearLayout.LayoutParams.MATCH_PARENT; @@ -992,7 +979,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not ((SizeNotifierRelativeLayout) contentView).setBackgroundImage(R.drawable.background_hd); } } - } catch (Exception e) { + } catch (Throwable e) { contentView.setBackgroundColor(-2693905); chatListView.setCacheColorHint(-2693905); FileLog.e("tmessages", e); @@ -1380,21 +1367,25 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (menuItem != null) { menuItem.setVisibility(View.GONE); } - if (timeItem != null) { timeItem.setVisibility(View.GONE); } + if (timeItem2 != null) { + timeItem2.setVisibility(View.GONE); + } } else { if (menuItem != null) { menuItem.setVisibility(View.VISIBLE); } - if (timeItem != null) { timeItem.setVisibility(View.VISIBLE); } + if (timeItem2 != null) { + timeItem2.setVisibility(View.VISIBLE); + } } - if (timeItem != null) { + if (timerDrawable != null) { timerDrawable.setTime(currentEncryptedChat.ttl); } @@ -1624,9 +1615,10 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (user != null) { currentUser = user; } - if (lastPrintString != null || lastStatus != user.status || lastStatus != null && user.status != null && lastStatus.expires != user.status.expires) { - lastStatus = user.status; - onlineTextView.setText(LocaleController.formatUserStatus(currentUser)); + String newStatus = LocaleController.formatUserStatus(currentUser); + if (lastStatus == null || lastPrintString != null || lastStatus != null && !lastStatus.equals(newStatus)) { + lastStatus = newStatus; + onlineTextView.setText(newStatus); } } lastPrintString = null; @@ -2936,20 +2928,22 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } actionBar.showActionMode(); - AnimatorSetProxy animatorSet = new AnimatorSetProxy(); - ArrayList animators = new ArrayList(); - for (int a = 0; a < actionModeViews.size(); a++) { - View view = actionModeViews.get(a); - AndroidUtilities.clearDrawableAnimation(view); - if (a < 1) { - animators.add(ObjectAnimatorProxy.ofFloat(view, "translationX", -AndroidUtilities.dp(56), 0)); - } else { - animators.add(ObjectAnimatorProxy.ofFloat(view, "scaleY", 0.1f, 1.0f)); + if (Build.VERSION.SDK_INT >= 11) { + AnimatorSetProxy animatorSet = new AnimatorSetProxy(); + ArrayList animators = new ArrayList(); + for (int a = 0; a < actionModeViews.size(); a++) { + View view = actionModeViews.get(a); + AndroidUtilities.clearDrawableAnimation(view); + if (a < 1) { + animators.add(ObjectAnimatorProxy.ofFloat(view, "translationX", -AndroidUtilities.dp(56), 0)); + } else { + animators.add(ObjectAnimatorProxy.ofFloat(view, "scaleY", 0.1f, 1.0f)); + } } + animatorSet.playTogether(animators); + animatorSet.setDuration(250); + animatorSet.start(); } - animatorSet.playTogether(animators); - animatorSet.setDuration(250); - animatorSet.start(); addToSelectedMessages(message); updateActionModeTitle(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/IdenticonActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/IdenticonActivity.java index e236c289f..f33daa478 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/IdenticonActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/IdenticonActivity.java @@ -12,6 +12,7 @@ import android.content.Context; import android.os.Bundle; import android.text.Html; import android.view.LayoutInflater; +import android.view.MotionEvent; import android.view.Surface; import android.view.View; import android.view.ViewGroup; @@ -69,6 +70,13 @@ public class IdenticonActivity extends BaseFragment { TLRPC.User user = MessagesController.getInstance().getUser(encryptedChat.user_id); textView.setText(Html.fromHtml(LocaleController.formatString("EncryptionKeyDescription", R.string.EncryptionKeyDescription, user.first_name, user.first_name))); } + + fragmentView.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + return true; + } + }); } else { ViewGroup parent = (ViewGroup)fragmentView.getParent(); if (parent != null) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java index 914ef9c65..6364dd49c 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java @@ -654,7 +654,7 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa actionBarLayout.presentFragment(new SettingsActivity(), false, true, true); drawerLayoutContainer.setAllowOpenDrawer(false); if (AndroidUtilities.isTablet()) { - layersActionBarLayout.showLastFragment(); + actionBarLayout.showLastFragment(); rightActionBarLayout.showLastFragment(); } pushOpened = true; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java b/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java index 265dad98f..c581a3bd2 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java @@ -1272,12 +1272,13 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if (!init) { currentThumb = null; } - placeProvider.willSwitchFromPhoto(currentMessageObject, currentFileLocation, currentIndex); - int prevIndex = currentIndex; - currentIndex = index; currentFileNames[0] = getFileName(index); currentFileNames[1] = getFileName(index + 1); currentFileNames[2] = getFileName(index - 1); + placeProvider.willSwitchFromPhoto(currentMessageObject, currentFileLocation, currentIndex); + int prevIndex = currentIndex; + currentIndex = index; + boolean sameImage = false; if (!imagesArr.isEmpty()) { @@ -1975,25 +1976,23 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if (animationStartTime == 0) { AndroidUtilities.unlockOrientation(parentActivity); } - //return false; + return false; } if(ev.getPointerCount() == 1 && gestureDetector.onTouchEvent(ev) && doubleTap) { doubleTap = false; moving = false; zooming = false; - if (animationInProgress == 0 && animationStartTime == 0) { - checkMinMax(false); - return true; - } + checkMinMax(false); + return true; } if (ev.getActionMasked() == MotionEvent.ACTION_DOWN || ev.getActionMasked() == MotionEvent.ACTION_POINTER_DOWN) { if (!scroller.isFinished()) { scroller.abortAnimation(); } - if (!draggingDown) { - if (canZoom && ev.getPointerCount() == 2 && !changingPage) { + if (!draggingDown && !changingPage) { + if (canZoom && ev.getPointerCount() == 2) { pinchStartDistance = (float) Math.hypot(ev.getX(1) - ev.getX(0), ev.getY(1) - ev.getY(0)); pinchStartScale = scale; pinchCenterX = (ev.getX(0) + ev.getX(1)) / 2.0f; @@ -2040,7 +2039,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } else if (draggingDown) { translationY = ev.getY() - dragY; containerView.invalidate(); - } else if (!invalidCoords/* && animationStartTime == 0*/) { + } else if (!invalidCoords && animationStartTime == 0) { float moveDx = moveStartX - ev.getX(); float moveDy = moveStartY - ev.getY(); if (moving || scale == 1 && Math.abs(moveDy) + AndroidUtilities.dp(12) < Math.abs(moveDx) || scale != 1) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java index 289197cd4..6e2cadb66 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java @@ -763,7 +763,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. if (id == NotificationCenter.updateInterfaces) { int mask = (Integer)args[0]; if (user_id != 0) { - if ((mask & MessagesController.UPDATE_MASK_AVATAR) != 0 || (mask & MessagesController.UPDATE_MASK_NAME) != 0) { + if ((mask & MessagesController.UPDATE_MASK_AVATAR) != 0 || (mask & MessagesController.UPDATE_MASK_NAME) != 0 || (mask & MessagesController.UPDATE_MASK_STATUS) != 0) { updateProfileData(); } } else if (chat_id != 0) { @@ -1042,8 +1042,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. photo = user.photo.photo_small; photoBig = user.photo.photo_big; } - AvatarDrawable avatarDrawable = new AvatarDrawable(user, true); - avatarDrawable.setColor(0xff5c98cd); + AvatarDrawable avatarDrawable = new AvatarDrawable(user); avatarImage.setImage(photo, "50_50", avatarDrawable); nameTextView.setText(ContactsController.formatName(user.first_name, user.last_name)); 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 5a5b7795f..d053bd882 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Views/AvatarDrawable.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Views/AvatarDrawable.java @@ -69,6 +69,7 @@ public class AvatarDrawable extends Drawable { } public AvatarDrawable(TLRPC.User user, boolean profile) { + this(); isProfile = profile; if (user != null) { setInfo(user.id, user.first_name, user.last_name, false); @@ -76,6 +77,7 @@ public class AvatarDrawable extends Drawable { } public AvatarDrawable(TLRPC.Chat chat, boolean profile) { + this(); isProfile = profile; if (chat != null) { setInfo(chat.id, chat.title, null, chat.id < 0); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Views/Switch.java b/TMessagesProj/src/main/java/org/telegram/ui/Views/Switch.java index e9da9a3b2..b1bb9aa0a 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Views/Switch.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Views/Switch.java @@ -400,6 +400,10 @@ public class Switch extends CompoundButton { wasLayout = false; } + public void resetLayout() { + wasLayout = false; + } + @Override public void setChecked(boolean checked) { super.setChecked(checked); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Views/TimerDrawable.java b/TMessagesProj/src/main/java/org/telegram/ui/Views/TimerDrawable.java index 1df99ecd2..6252ac35d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Views/TimerDrawable.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Views/TimerDrawable.java @@ -12,7 +12,6 @@ import android.content.Context; import android.graphics.Canvas; import android.graphics.ColorFilter; import android.graphics.Paint; -import android.graphics.Typeface; import android.graphics.drawable.Drawable; import android.text.Layout; import android.text.StaticLayout; @@ -37,9 +36,9 @@ public class TimerDrawable extends Drawable { emptyTimerDrawable = context.getResources().getDrawable(R.drawable.header_timer); timerDrawable = context.getResources().getDrawable(R.drawable.header_timer2); timePaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); - timePaint.setTextSize(AndroidUtilities.dp(10)); - timePaint.setColor(0xffd7e8f7); - timePaint.setTypeface(Typeface.DEFAULT_BOLD); + timePaint.setTextSize(AndroidUtilities.dp(11)); + timePaint.setColor(0xffffffff); + timePaint.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); } } @@ -90,8 +89,8 @@ public class TimerDrawable extends Drawable { @Override public void draw(Canvas canvas) { - int width = getBounds().width(); - int height = getBounds().height(); + int width = timerDrawable.getIntrinsicWidth(); + int height = timerDrawable.getIntrinsicHeight(); Drawable drawable = null; if (time == 0) { drawable = timerDrawable; @@ -105,7 +104,11 @@ public class TimerDrawable extends Drawable { drawable.draw(canvas); if (time != 0 && timeLayout != null) { - canvas.translate((int)(width / 2 - Math.ceil(timeWidth / 2)), (height - timeHeight) / 2 + AndroidUtilities.dpf2(1.5f)); + int xOffxet = 0; + if (AndroidUtilities.density == 3) { + xOffxet = -1; + } + canvas.translate((int)(width / 2 - Math.ceil(timeWidth / 2)) + xOffxet, (height - timeHeight) / 2); timeLayout.draw(canvas); } } @@ -127,11 +130,11 @@ public class TimerDrawable extends Drawable { @Override public int getIntrinsicWidth() { - return -1; + return timerDrawable.getIntrinsicWidth(); } @Override public int getIntrinsicHeight() { - return -1; + return timerDrawable.getIntrinsicHeight(); } } diff --git a/TMessagesProj/src/main/res/drawable-hdpi/header_timer.png b/TMessagesProj/src/main/res/drawable-hdpi/header_timer.png index d9ad068b2d84dc95933de6fcffa1a3fe0adf23cf..0c17b9bbad94617cdb98665f588d9690816cb8f1 100755 GIT binary patch literal 1300 zcmeAS@N?(olHy`uVBq!ia0vp^G9b*s1|*Ak?@s|zk|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`=wfMT;AU)O=H_Z)Xy|HUY3XcY;cVgPWa?(_ zQ!gkfv4~Pj*wm=R%;iu*SQ+p9GSy%DcZDe3z?C^AP45_%a zXPUMDp#X_C|874kfqI6xAIxg^q}UA|*>9w(U)->w^PhlE${YTGnVj8DkJRGW=5{`^ zPbf6%ct5+w)HgZ*!aVcJW#4N2&n>l`zp*$XT+#4=*bQds1kRMFHwAbO2=8FtTm3sn zCPK#{qlwEx)N@Ke9p@~8|35_k>RVo5`YK_h`o73#bwSC*Zmm0Pxf@og@gLu&xb;vA zYXPg+l`o0C(jMi1TPhQpBd5khoNhCDFPi4Sd}j3% zZ|5XTV`~jNv)DfK#Rd%>ty;~X9qR&jxINtD_OR>aFTvLy*Ft6`pAucH?aXCw!gXJ> z=9)&$!VQZ9Z!G-anD=UnvwQ!cjdw&cmml1A_@~aS2d1t!XIuPRw_Nc5vj^I&lG$>} zWy~{Kb$6Ly})L;M1ulWZT#~*+DB)oxz@+$TtOw>5(BQf0{`|K~#9!>{)MQl~EXfZ_8|qF|9sajZtpOW?Y&jno=T`h-Q>h zqE!2kK1?Z5mOk{Qi6XJ=l10QcB29goR%2YdHXE0?6;q65tlRH#e=m>M?(O|^-uG_0 z4?pkD+1~g3e&;;rInQ|(%jff!ADjO6+cIH0w$ucAe}lEof2|^*B4CXQm;v$*`~<4k zi-2vb^wk5k6&G^Y#*n^y8R!NQY-fNsz%S~_zc`F#&b=$ zP%LJ30C#|CKsN0ay&}>F%mMwtKEAV84t3x?(Clm6ps55%^x$#3$i^*YUx7csR<;*` zTfhS^F63JPe|$HI$73L=x|e{rg#0|o{v;#NL84SR{Ro@_=0g(z@+V2&4vT5d-Ux}8 zvO3@xaI?g!-2?hU*~B0(?lMU7vh3%8R^X)z^0uoy2X--9Im6I0@HCW74D#nWb7HeV zI|p0w;f2eLRT!HIAoIjrd`B_uUWup>PXkKKukncBg4q)~h@t9-uc!z-w zxJ?Dz3UGYy6T`0Tk?r_>Hs}iUki6K{2=X&~3~|@fCS2$^pW~Q~$*|dDj4>vE_T>2& zfaMflf9zoMRfJixJyrr7nu4rA3!{R4#7AX%thOKm^iiLQP(bD%w>#GY8kBGTh){qY zt1*ZG+kIB7@>x|70d{g$h0RnOA?f;6IQSBfGj;XzXw8m`k8c5Kx6#0`wH4vuOMsoU z9ga}I5#>G;z6Buitnij4)`fjgAA0;O99;X^f0W!S&>j#=@hO|QH-g#kRgotZI2XbU zjN&oH<~7VvJjB_TL+cWoa>03F>ORn?F62WPs5%7lvckivVsV2m99#fCG@=qLeYG@c zgDU!n@2A|ngB+_wsKQJcJ69Xq{{_q+lQcN$jl z+TwvX$^zGzIskQ6DS}T}h4P|4Q^r~8@Vt_~Yoio$ma|{%)|6#TkC#ZBr6l>pO~f%S zK!v{xyuT)0zBa`}Y5>F+gN$!NfNsW_Hpe6x&s$VZwM62tEmcZ%Q@{;XK)J2*f8vUO e|6Rae0R{lFbrz4DP!+KN0000c-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`>SSr??BZr%=H}{XXy|HUY2xJKWbA6>Xl7yQ zXlQH>)9aF-T$-DjR|3Eakt zaVzQ1|Nr*PoeZ(e%9^ugO1$8S=m=TPc7)O4O`B^TzrcH@N4yR--331wnnn1xu|IPD z-^t#-psHZj$qr>c%Z3Ujf#r>lUfg`$U%&27?YGw_e(ttkf4BbM@5j^S|2uU3sI-`| zMMO0+muKqD(kV-CEOGf6xuDR7yMw#o2m7vrH*`dp9_c#da6ZbhF8UgMeNn7D=Tcp_ zgiD&;#gD&ly7;V#OO`!JUZJl2ywik7wGKIT|6ks|uUovme#hq@U*&^@TD#V0c>8Wz z-mqwkf%b%Ip^mu?Kcw}z)0qoT-Br)8o9-X=|KHc&`t>J0I~O(CoS9qM*mTNBNx}O$ zL!s8ToJ9U3Cl%a2&&iel5Ls4GworxR@g(+_tTP#(syUxMwqXP7ljMLojLo0Pg46#xpE4dABm>B?@#fsMcmp*YQYWQ;g2w z?wh@N`~KkDPAbN4C+J>bX#c%=d;Q8>#Yre(p`9?;X3X z|1B53da1i6XUR7HiDzoM-yD{9&{?UWddA1+Wz%`~7Y>XWYEvqOZ??A|WRqN76m+|t zkHeT>IeG`5OT#LOtmuxEXHhBK`b-}M7krOA_4w|Om8p^^bSBJH*u1c8!IY(@3r-1# z%xCnj6!X$$p2@gY+VN_j?zTg}6}D6*tzf&BuEb=MvOHo!+yqIF(0hzcq6RDca%OLD zUc!dS7l(^8EhD6mvVH1{aP-EL@%As*?!Ym1e(|Zzs^3QKoVDLKicZ1uN%i;10 zy(_rO>tl9*XS&hx>!19jm6noQr>I2a@=URGSQ!}Q!?05@wB?O)(5y~(&kVJuD^?RO z`?#<#xOGIn<8EVwaF~E|^J^=C_biWkF9>n#GjJF%B+ohdahcqjZJ=`8)78&qol`;+ E0NZ0ttN;K2 delta 1048 zcmV+z1n2v-46q0>iBL{Q4GJ0x0000DNk~Le0000m0000m2nGNE09OL}hX4Qo1ZP1_ zK>z@+$TtOw>5(BQf5J&bK~#9!>{)MQl~EXfZ_6ykWm8lx;_GcL^%O(_veL^Db$ zOR4rDeV9_BEPd!p6OFzsjVvOj5!sYJOsg^0uFb}XRZKCK%ews@`@K9~_q}`Xd(L~e z=|23Nd(Q4X=lOS@KWDK_CgX&miSK_L8?e*zQ*Sfc_=0vQi}0j29j zfbCh<;=rb&3wdZ`MEhO=T7VkPQ@|VGxA%*wAO88IW=q+sS)dCT0X7q#fqQ;@t_c^4 z#hgaqE-(SerM;>xB5S}j&Llkr?s z4jcz=<*?d)pd*q?4CcjMddR$({X9?yybQp+>nhKH-HcY=Fq8(KMskV4d>b_{4Z zRxAJwRbrT?X5QhTgF#CHY@Jc9V=SPneqz{7(+abu7HB2&Le~mVpSfp9t~g`Eg-&oB zhBii{f94)%46*ogl^0$Bm{WYQk<(WNtdiZcYQRI4i3KDwl&BP6DAH%un+Tv&eX4*0 zq*mze0yi`j$~S+SaD?hLTe$Pf5BjW16AQTRvlNl0+X8&2#6$qMI4i+r3e%8(UE%ND zKI`!;JcM$gIZx}CR~SXJvn!-!sy&TQXbX%7e~ku~sosZ&Py)CG)sX@Ua8$X^NN52N zd6w8^2{q#$#3PTN%Zcj%r&4<@nwAp19OV+X7eM>%D)RIi*Fw<10ERJ6uR}wL2(>Rs z>oTX(;JmQa4|J%8{5cLPjevQvaG!dyxJef_7XTaes{%{6mNuzJMIZ6~-XK2;{H(&t zfAkCBR)<}z-P4AQi{>Az+F#0uItValRR9VhiD^*PCsMn&coJSdR7JPh!?`^E9tQKn zkvyyL6=JV?_7HcPB1|6(>Nds#C_&Cq`+i;1UMyp}U+5KomnX^YAQ8v904n@lWdE8B__Hx4 zsV*?SU~;|<0rWJ%Iwr|@UaM-VMKb={QBR3M9&jTSV700Ef8wG5|GNPH1Q-A#XfJL3 SlE3r-0000l3^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$KFjz^NCM6mkoIHoK%2WtOF;xE1B+DuBIgm5JLeE;!AD z>P^Av786&Tdi8;h(Fa8=QbfaqfT;(>geO}d2cGa#^MI+n2$-z*-G8#4fq_xQ)5S5Q z;#SfY@0ZC3m{J;U$alz4w_BkzbRQUSQA^fkCe$zcC?jt*0 zS{}-;u&Q6+m|rN`x1edASVy`eZy94!<&sI?6oWi}OWb8^U|?p@Z?~0q4S8}IREBuE L`njxgN@xNA+Z>Ie delta 672 zcmV;R0$=^G3AzO_iBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^Z)<=1ZP1_ zK>z@+$TtOw>5(BPe*#QNL_t(|+U%B1C`3^d$7j3}rKS`XLPR5_h$WFCN+ctttn6%v zlwxURVMBJJl$9*3)L4)rvLe$=%}U9~LWvp+dj6;WPcLSkd*58yxb^G4H*?=P=bo>7 zgSKr4ej4%n*MRP*Ey+__mlOEo@ozvj20R0s$a8@oA;Bz?fA9@hd`^L4@bW1*`2B-$ zah@3uKzJC8yWS^3rRzNxQ=w50Kxhb$6JQLK%kR#ouHD{%O?qPxh>=@f9#AqM@$fo= zX_>odPv5;DA&#bC>NI=fiut!vy zYw+QXpK5`OYD`zm8}Z<~QV6*FCa~gHIkR5!W`!Z?)9HjGoHq<~TSrDjIS1(e5Oz>w zqTfT_t#nJst5WrVG@5IJXHL>-UaAI!TusKrkX~THe-oCf0e7I(paDhfgzu^bh|8+e zS?nYJ`7GyzP6(px?`;Nl-@&F7)iFR$FmczE0Rv_zYcuV?Qikb>-=|iA4F)o;`3Za* zp^WuRYrI;qgy4c#tyUz^rDp7#c$P>7G-m3kIUa3PPOu&zx0_=KoYGLnehFQw}SbLWBl?;NVju&_xvshAxJm)Pou1?_G3)jFr zl;0V-6S@o$1*0sjuO)iIQrm*!gwbpHZ;pQh{@j2M0R{k)COTslzZ^jT0000l3^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`vLFjeEsTY(KatnYqyQCInmZhe+73JqDfW2&$iQ6sCIL(9V zO~LIJ7o2+afsWA!MJ!T8!-RmT2gHOYTObFX@Kf`Esl5o8teMP@doVCCKJ;{P45_%4 z^ymM7duF)?y^|gOhQfS>)e7_2j)XVL~}C&!_IDZ(~1q=U?5w zXOH98->d(}K1o3MNvcuE^weU5z^7LNr&;lcc(Fg)y@O{n>!Yumugj;#ZhCtqyyjl# zN2AAnyj%V;r?4@6Oe{HkrSV6~?>}?@m&@$_Hn)-ELE_S*kuzWLaXA+&?BnD%o^arf zWHz6%P__U^!0ll*d3VKJlKiw6cVeX%)>A7jrYhPQ_ zOf!X2p0pcA>BgmgMZCqP*I8c1G8yMA-?;3~&jR!0ydYktmxh-n*z%{mYm#I;z@+$TtOw>5(BPe*#@eL_t(|+U!?PLG$z1W14yU-tG|T@$+VOzWM(A z=6%2SRyPboD>d$(KQ-0S(NrsCSEc>(_)nmc1l|FILDzNVe>kbGAOWxG+GBl~d-=I= z{f)KmFre$2ABdRlSAcfYeGR61R~dj)AEsqs323!E-esFdOi7>-m;)%ul+dq?4uH-u zrX8*-3mgLHz#E&;?*l*x=;U>w^Rp9R9?08$f|3a!cpOs!HLofAOj2|_=k;+!K+)hVS>8k8t4MX zfV3(D+W-X(+65O43dHXOfiEC#*Q$;QaP>Vv0*)Tb6$-pd>n6dUWLiZD!#p3jpteOH zA(aIBXw{>FY^BlR;}+8s(65pJ3C)9xd(OR$cnOuze`gXI8KE*PRqGZL(gF|cJa|@+ zVSp%Wc9DSwR>FcT14LQCF5?oF+OgwhdCsb=fi&y;kPFq1uqdTf5}+N7Dv!F5K#YAQ zr4sp5-c#g!#dG04uz}!DC69VC378V00E^sO))u|uR!bppPWr5=lED8zqd%Fzw*UhG X9PG#y48-+`00000NkvXXu0mjfpn@|& diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/header_timer.png b/TMessagesProj/src/main/res/drawable-xhdpi/header_timer.png index 41d06be9f6f9dea993e26eaed37fa01df16a0f21..7bdc8d5694502d1f14b184a1e85594fc68654680 100755 GIT binary patch literal 1438 zcmeAS@N?(olHy`uVBq!ia0vp^svyk41|*NpQ(y*Ck|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`XzuFd=xAVJ=H_Z)Xy|HUX<_N?Y~bi>=;rKV zVqt6w)9aF-T$-DjR|3v4~Pj*wm=R%;iu*SQ+p9GS*vD7@G~$l33<9WhE&`- zGsD)~DNy2g|MIq`D;F1>6kE8@F_kyZHACQ{REX1-CrZ3gJFZSJ5o!I(sKmjYsr}+? zen5irI?Gv2x|#pm<(?+J+Pm-G=XQD5JHPMDUtZk*+;ZB>tIQWu*ba!yU`b98iD=}l zX_WcFkgvcw??Cz9B>s(S>+4_VI~`;FlQ4}n>*%o_2J?9TMcW^+?2)dVU{cV_EYobg z;f{lciNMm|?{@Yrj@6W}crrg|i}=cw+b?uYVSV#SeRJ2jwpX%+wcUZ5y9~Ilxt2SB zYq6&ccd-bvvs$@%GopjEX>jr z|Nr_-kND!Jm%M&jZ{XW19a;DI<#a~_^(!ZA+_D2ciLVY7T&ehLlfL)LDV!&7^G`MM z3-UX9KS`^hMJb5WWO?hSvZo>%|rp)^y41wF-(jF_fi#C$sf>|+9Ox+r$Bz& z&DK`a^QF#zWDYOadm7WZ|M2<>_G=rJt``>HZQDC7?#0?W3~~h*51n}W(~kf8$rpDo zocXAvn^WSj^X&X>zs_7f^}6@lna{2-=2TugwVr{QK{~hKg;G{&9jL_gboFyt=akR{ E0H|Uay8r+H delta 1260 zcmVz@+$TtOw>5(BPe*}|BL_t(|+U#3@WK~fdzi%(uh%v2}@zN|yS(YU>V;LjHro^U{ zO<9&wL`pHHDP<|krZlCPjVz@|`)i6RjhJR*Ok=E;F&@pB_4&5%t?y2E+q*x`eK)&b zKJL4>yK~R?bH3;Mp=A~ua5z}JaThX!pIjT(*9eH#| zS9yO1_?fIks0C;R){AG2z#ibG2kmzvdSCMZC{N!01CYs&rdat=!yh3h z`3^`IPH->z4!2c^JjvxGDsM)eMsXkGNTF>C)Ji^p z=K-i_pK`5W)kp6L!04xOdTL6C9aGaK=mS~cWAUgIeU0g`fD$DE=?>7khU`m}3o6eE zkfrS?m>&;{_UOwX=OS{jJSQMu{O%9n>Xz(Nf1VBkauo*{G#SxNK&JRT89)MLpEBSG zqh1q`uGHT_lek5aq^%Z+29SWLlRl<6WH>#51gIlE<23$~r zGaYaerR)$eQu-bX5CLjm5?+_I zf3+ZjQST8IAtfF;hQsA(4}~JqR}q=|;Q)(utp~`mla`|E12FpMl(5`k=a1bkiA@9B z`I-!&rLbW!|9>yh@fv{^3m~~5b8chl-hkiIrZ~T=c9eHS06x&CI2m$4wMjDlN^w7c zzS&-+aas#pRGi;^pv*_*N%0nOPg&nte~P)DGe!_yU)r87mDYrq#{>2@5+J)p|2*LR%DHT7 zMS4mWW#}v6i>5ur66-nfUcvm?OZ4wHx|zcIVqUTgOVqKt-xJF!$z#` zlcJ`i@q9LSmnm<^H~t>1GN;BoGEa|QMmzyWoLmC_cM1Q)L`XnLKuADHz*?4H0t^5a WmP|M#WwhS_0000t#3B{~DsJPT2uKpLOH7I(2@nK@7$8cqhGZZSlSwiI2`VZAYETeV zRNPUMAXqG}D5A8A9G8RZsT-g|MNwq2RjJmt6BX@`(m6BpE$80*-uvF2Gv=6C;jRR4 z0uG0B6-Njq*f`n#I6GnQhFt(28%Cod89E0}L5*?)gySpWWC##zVC87hm8;wWGZS#HOWO&T4>#^JajCY@Z72BAPQl&aS9z@FN(AfQ(AzyxM=P_#|} zsnijR4bYs$v!sf}X^LPa81gN^HE}Qj4TQ=8lV*_?;h1>f2VD*}w{KHG-~$9r!1j1$V7T}kl)+%8m;{O33 z9nBGI5mc^KKw=>e#1zPCwUR?+h=dFljll{N@u^f1V;WmT7x1TrQu)D5wm?7~;0j?y zx(3ps16<`7E^|<>-3l5V7Fh@x)ESU6%m8bE4<&QdgXcmURPPg4Ie0GgLAewx8H&BJ z|7!HW7UmxN^s{ZT#b@I~TFmVR%+`;BCpKYUORHGOmzwT1%ihhD@`)KOtJkL|9cxa% z9G+d89OJ+8da|{Av|~vznC&SX!aEq)NpbGl$rpvlMwFGsyIV@Fpz}8G{hNII2|q9= zB(%gC6Hd^X`1YDpZ@Q1qL?7mqB0anZjaQmWkuYVothtMkI3d5wwX6HJ+r8xz18_P* zOhbFiiT)Pcqha`8h;AyJ5$Cj4xBV+(+o;q1Lax_amwL|?6W%RQ<hsL&VPGfG>$cv) ze6i|mUuDnzlXs`Hr;EiWwRnTZ9O)$8*wQ~=eNL&5t8Dd}`~Do_eWO+1)zKT-lVWMO zG<$qRuVq%Aw7&N7Yk$TQqj}HOx(5YI9bK42j|OYu-q0(WIH?!l&h&kCWZ3Q9w{%VS zs$&P0O~;yqup87Pgkf9;p<*B6ZB8 zWu=+%!|x19FyAO3wGpgue3gW@Yh%_8H}7Rj(!$`Xn{Qxs@D zx$a=OxUFbOW=+(lEw*(X+frqIckigeku^WcHcTcKNw^EMiUL^y(vCpBAFFMTdtK#a3t8hg)Mw|P=MF4u+8Rcr zhfK*M-;NA=bJ+8xsD9MKay&6PHOeRd!2HKkFC?8WX|(C?;7wv%gWnvK(JAoBb)?=r zJ~HN~6W!C-ACA8<`mc+n!^S5dn(v(oUOVTTzb;O?B#vDePpR1Pn`-zOPnvs1!I{*6 zO7(5Qh4R0x+qXXP@s&NE(z^SoXjk#+xTfZ`iF|gK|NWNUUa#sm&Pne>q7IFj?%IOq z-0XE`yV>6Fu63NoW@blH?>)~*+gHb4b-)te?NRuUR9}|3WyFlq2L05=>P3c^b%fA0 zjoAebxug2neGVp5(vWKF&v{|s0*?jb>bFE@zwLcAZ*|WkG}L98OAs!6?X}Xe-eter P|9)c8EMZmXf|dUOn`rBQ delta 1308 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 delta 2016 zcmV<62Os#M67LT&iBL{Q4GJ0x0000DNk~Le0001B0001B2nGNE0OFW;H~;_u1ZP1_ zK>z@+$TtOw>5(BPe+Pj{L_t(|+U#8qXjN4hKd;8{g)kUc!9v(rJXtIj#$qur28xjs zgtVPmbw0iJZ-;aF{ z=kuJm`{&$y&b>Q7__*V~`|i8<`GxUa2Bu7Z*(nbK3y@%we@Ln{7O&@2u$qHJGEIZRC_7_j;3YOS6j733!i7*t( z86au#a4lZ?63HMd!VeJLyh`#qNppzj&5`^>a+2gd?U7x~Jzz6Q-x94JVdQC&izHK; z-g7nofA${!J1Cyv=hM~$;w(iR<(98fK9s!!aXv|}M&*~x7wq}dB>PG31-QqY=4XnH z0NDG_NIp<}K0|Vtq=DqD#J1~1fr)5flQQSyyQc#ZXWRr`An85pafjEUjiSHwaYyc}JN39=~)LcIUE0fkc=7Rd#ke^e1-ue6DP&63t%Swp~f$vF)FO{Rc=8yrNGW0x%if50YoD8jk4;H2an27X#>AfQt`Je-KJ)O?Bv z7!u;)Srr_37$;z(!u+HS=M}!sTp~tE7-H|gBr*6?9L8w}Kd$PbGnwcnC!%Eii{yL* zC1Vq&dO({*`T3}nZy2`}iCMcz6SP)xZdjxjV~U<(jDSW(OGztkOU~uO+%W94f0UfZ zhl~wDT$&HRk@wgLW9tF3vh&0;>jCv938;~ryJxZk_>eCH++X%?S&9a$O%Wg~NX;gs zHFpdD1+`fpdWe<)X1$#GqKI~0k8b##5L~c^07^aziWjOD=|xue4a1tCf=9og8~V*gOFB{yIrm7Ih`` z3zoQ%Q|Q2$2^yE2Yl>0>NSbs@NCNUE36LcwZ7FubtsWa;Yy{ktoa;z&1k~zL2eA<_ zDvA5ygqu@HK!+m4zHE#D^8UyS#}rv++8`VKnj{?$m zF+es}iqLdpiU?5EjRtKXU|eB_4y8o-=*hB$CKz@dwt)bkR}qe;AtHh~l?}RlDl`-x zbxlu4bnv?*D@KU+g79B+u>~+YcO>tH-~%&1W^9?B4h73*k74H6z67`aLlWf!XN0C1 z-#Qm)AX4~E^1vu~JueK8e-#G+rkh-mL~|$tV$t3dhvHWBfRdv3Dnhsc5kW0ILSXju zSBg;ju+X?-UiTWYK}Bqg0^Nm#(bWHKtZhldlf5wh6zv-$_&vrhi z+w??DK*?G4D?Z!85k|cQ%5P`ot17soY*t0m2mr9vm#SQgO!;Rf!xYdPe-!HN&9FRa zlkh)wYz+ZO(6AAPYB!P^Hb*~*kds_}qJ>+1PX$wmmcKznyu>z+4Vy}fp3hdeWcNyz2N`FbZSc8(97Ot zpL3nV;Yv8h4Q4J5#hBQ(vX#wFy~o}&yh!pMTIDKE{MNCwdyKd+SEx()9AZrBzM-fx zmNs