From f92df091ef298aa909f08b4ee2f6ed67c4416309 Mon Sep 17 00:00:00 2001 From: DrKLO Date: Wed, 23 Jul 2014 03:27:00 +0400 Subject: [PATCH 01/11] Bug fixes --- TMessagesProj/build.gradle | 4 +- .../telegram/android/MessagesController.java | 19 +++--- .../org/telegram/android/MessagesStorage.java | 10 ++- .../android/NotificationsController.java | 61 +++++++++++-------- .../org/telegram/messenger/FileLoader.java | 7 ++- .../java/org/telegram/ui/LaunchActivity.java | 34 +++-------- .../ui/LoginActivityRegisterView.java | 2 +- .../org/telegram/ui/LoginActivitySmsView.java | 2 +- .../java/org/telegram/ui/PhotoViewer.java | 16 ++++- .../org/telegram/ui/SettingsActivity.java | 2 +- 10 files changed, 88 insertions(+), 69 deletions(-) diff --git a/TMessagesProj/build.gradle b/TMessagesProj/build.gradle index ad4fa662b..6080319d3 100644 --- a/TMessagesProj/build.gradle +++ b/TMessagesProj/build.gradle @@ -83,7 +83,7 @@ android { defaultConfig { minSdkVersion 8 targetSdkVersion 19 - versionCode 288 - versionName "1.6.1" + versionCode 289 + versionName "1.6.2" } } diff --git a/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java b/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java index 0505dd7aa..1bf473332 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java +++ b/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java @@ -927,7 +927,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter if (updatesStartWaitTime != 0 && updatesStartWaitTime + 1500 < currentTime) { FileLog.e("tmessages", "UPDATES WAIT TIMEOUT - CHECK QUEUE"); - processUpdatesQueue(false); + processUpdatesQueue(0); } } if (!printingUsers.isEmpty() || lastPrintingStringCount != printingUsers.size()) { @@ -3197,6 +3197,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter MessagesStorage.lastPtsValue = res.pts; MessagesStorage.lastSeqValue = res.seq; MessagesStorage.lastQtsValue = res.qts; + processUpdatesQueue(2); MessagesStorage.getInstance().saveDiffParams(MessagesStorage.lastSeqValue, MessagesStorage.lastPtsValue, MessagesStorage.lastDateValue, MessagesStorage.lastQtsValue); } else { if (error.code != 401) { @@ -3215,7 +3216,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter } } - private void processUpdatesQueue(boolean getDifference) { + private void processUpdatesQueue(int state) { if (!updatesQueue.isEmpty()) { Collections.sort(updatesQueue, new Comparator() { @Override @@ -3231,6 +3232,10 @@ public class MessagesController implements NotificationCenter.NotificationCenter } }); boolean anyProceed = false; + if (state == 2) { + TLRPC.Updates updates = updatesQueue.get(0); + MessagesStorage.lastSeqValue = getUpdateSeq(updates); + } for (int a = 0; a < updatesQueue.size(); a++) { TLRPC.Updates updates = updatesQueue.get(a); int seq = getUpdateSeq(updates); @@ -3261,7 +3266,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter updatesQueue.clear(); FileLog.e("tmessages", "UPDATES QUEUE PROCEED - OK"); updatesStartWaitTime = 0; - if (getDifference) { + if (state == 1) { final int stateCopy = ConnectionsManager.getInstance().getConnectionState(); Utilities.RunOnUIThread(new Runnable() { @Override @@ -3271,7 +3276,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter }); } } else { - if (getDifference) { + if (state == 1) { final int stateCopy = ConnectionsManager.getInstance().getConnectionState(); Utilities.RunOnUIThread(new Runnable() { @Override @@ -3469,7 +3474,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter MessagesStorage.lastPtsValue = res.state.pts; MessagesStorage.lastQtsValue = res.state.qts; ConnectionsManager.getInstance().setConnectionState(0); - processUpdatesQueue(true); + processUpdatesQueue(1); } else if (res instanceof TLRPC.TL_updates_differenceSlice) { MessagesStorage.lastDateValue = res.intermediate_state.date; MessagesStorage.lastPtsValue = res.intermediate_state.pts; @@ -3480,7 +3485,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter MessagesStorage.lastSeqValue = res.seq; MessagesStorage.lastDateValue = res.date; ConnectionsManager.getInstance().setConnectionState(0); - processUpdatesQueue(true); + processUpdatesQueue(1); } MessagesStorage.getInstance().saveDiffParams(MessagesStorage.lastSeqValue, MessagesStorage.lastPtsValue, MessagesStorage.lastDateValue, MessagesStorage.lastQtsValue); FileLog.e("tmessages", "received difference with date = " + MessagesStorage.lastDateValue + " pts = " + MessagesStorage.lastPtsValue + " seq = " + MessagesStorage.lastSeqValue); @@ -3692,7 +3697,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter if (needGetDiff && !fromQueue) { getDifference(); } else if (!fromQueue && !updatesQueue.isEmpty()) { - processUpdatesQueue(false); + processUpdatesQueue(0); } if (needReceivedQueue) { TLRPC.TL_messages_receivedQueue req = new TLRPC.TL_messages_receivedQueue(); diff --git a/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java b/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java index 35378986a..b63b59e1e 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java +++ b/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java @@ -191,7 +191,7 @@ public class MessagesStorage { } } - public void cleanUp() { + public void cleanUp(final boolean isLogin) { storageQueue.cleanupQueue(); storageQueue.postRunnable(new Runnable() { @Override @@ -219,6 +219,14 @@ public class MessagesStorage { } storageQueue.cleanupQueue(); openDatabase(); + if (isLogin) { + Utilities.stageQueue.postRunnable(new Runnable() { + @Override + public void run() { + MessagesController.getInstance().getDifference(); + } + }); + } } }); } diff --git a/TMessagesProj/src/main/java/org/telegram/android/NotificationsController.java b/TMessagesProj/src/main/java/org/telegram/android/NotificationsController.java index 419d82f9a..17e9b9e01 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/NotificationsController.java +++ b/TMessagesProj/src/main/java/org/telegram/android/NotificationsController.java @@ -305,10 +305,12 @@ public class NotificationsController { intent.setAction("com.tmessages.openchat" + Math.random() + Integer.MAX_VALUE); intent.setFlags(32768); if ((int)dialog_id != 0) { - if (chat_id != 0) { - intent.putExtra("chatId", chat_id); - } else if (user_id != 0) { - intent.putExtra("userId", user_id); + if (pushDialogs.size() == 1) { + if (chat_id != 0) { + intent.putExtra("chatId", chat_id); + } else if (user_id != 0) { + intent.putExtra("userId", user_id); + } } if (pushDialogs.size() == 1) { if (chat != null) { @@ -322,7 +324,9 @@ public class NotificationsController { } } } else { - intent.putExtra("encId", (int)(dialog_id >> 32)); + if (pushDialogs.size() == 1) { + intent.putExtra("encId", (int) (dialog_id >> 32)); + } } PendingIntent contentIntent = PendingIntent.getActivity(ApplicationLoader.applicationContext, 0, intent, PendingIntent.FLAG_ONE_SHOT); @@ -350,7 +354,6 @@ public class NotificationsController { .setContentTitle(name) .setSmallIcon(R.drawable.notification) .setAutoCancel(true) - .setContentText(detailText) .setContentIntent(contentIntent); String lastMessage = null; @@ -366,8 +369,10 @@ public class NotificationsController { message = message.replace(name + ": ", "").replace(name + " ", ""); } } + mBuilder.setContentText(message); mBuilder.setStyle(new NotificationCompat.BigTextStyle().bigText(message)); } else { + mBuilder.setContentText(detailText); NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle(); inboxStyle.setBigContentTitle(name); int count = Math.min(10, pushMessages.size()); @@ -417,6 +422,8 @@ public class NotificationsController { } if (needVibrate) { mBuilder.setVibrate(new long[]{0, 100, 0, 100}); + } else { + mBuilder.setVibrate(new long[]{0, 0}); } } else { mBuilder.setVibrate(new long[]{0, 0}); @@ -485,7 +492,7 @@ public class NotificationsController { remove = true; } } else { - if (messageObject.messageOwner.id <= max_id) { + if (messageObject.messageOwner.id <= max_id || max_id < 0) { remove = true; } } @@ -569,32 +576,32 @@ public class NotificationsController { int notify_override = preferences.getInt("notify2_" + dialog_id, 0); boolean isChat = (int)dialog_id < 0; Integer currentCount = pushDialogs.get(dialog_id); - if (!(notify_override == 2 || (!preferences.getBoolean("EnableAll", true) || isChat && !preferences.getBoolean("EnableGroup", true)) && notify_override == 0)) { - Integer newCount = entry.getValue(); - if (replace) { - if (currentCount != null) { - total_unread_count -= currentCount; - } - if (newCount == 0) { - pushDialogs.remove(dialog_id); - } else { - total_unread_count += newCount; - pushDialogs.put(dialog_id, newCount); - } - } else { - if (currentCount == null) { - currentCount = 0; - } - currentCount += newCount; - total_unread_count += newCount; - pushDialogs.put(dialog_id, currentCount); + boolean canAddValue = !(notify_override == 2 || (!preferences.getBoolean("EnableAll", true) || isChat && !preferences.getBoolean("EnableGroup", true)) && notify_override == 0); + + Integer newCount = entry.getValue(); + if (replace) { + if (currentCount != null) { + total_unread_count -= currentCount; } + if (newCount == 0) { + pushDialogs.remove(dialog_id); + } else if (canAddValue) { + total_unread_count += newCount; + pushDialogs.put(dialog_id, newCount); + } + } else if (canAddValue) { + if (currentCount == null) { + currentCount = 0; + } + currentCount += newCount; + total_unread_count += newCount; + pushDialogs.put(dialog_id, currentCount); } } if (old_unread_count != total_unread_count) { showOrUpdateNotification(notifyCheck); - notifyCheck = false; } + notifyCheck = false; if (preferences.getBoolean("badgeNumber", true)) { setBadge(ApplicationLoader.applicationContext, total_unread_count); } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoader.java b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoader.java index fe0659d5e..b4d8be094 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoader.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoader.java @@ -1105,8 +1105,13 @@ public class FileLoader { return null; } float scaleFactor = Math.max(photoW / maxWidth, photoH / maxHeight); + int w = (int)(photoW / scaleFactor); + int h = (int)(photoH / scaleFactor); + if (h == 0 || w == 0) { + return null; + } - Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, (int)(photoW / scaleFactor), (int)(photoH / scaleFactor), true); + Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, h, w, true); TLRPC.TL_fileLocation location = new TLRPC.TL_fileLocation(); location.volume_id = Integer.MIN_VALUE; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java index 0b9e21bd0..2e28adc44 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java @@ -85,7 +85,6 @@ public class LaunchActivity extends ActionBarActivity implements NotificationCen currentConnectionState = ConnectionsManager.getInstance().getConnectionState(); NotificationCenter.getInstance().addObserver(this, 1234); - NotificationCenter.getInstance().addObserver(this, 658); NotificationCenter.getInstance().addObserver(this, 701); NotificationCenter.getInstance().addObserver(this, 702); NotificationCenter.getInstance().addObserver(this, 703); @@ -149,6 +148,7 @@ public class LaunchActivity extends ActionBarActivity implements NotificationCen Integer push_chat_id = 0; Integer push_enc_id = 0; Integer open_settings = 0; + boolean showDialogsList = false; photoPathsArray = null; videoPath = null; @@ -379,6 +379,8 @@ public class LaunchActivity extends ActionBarActivity implements NotificationCen NotificationCenter.getInstance().postNotificationName(MessagesController.closeChats); push_enc_id = encId; } + } else { + showDialogsList = true; } } } @@ -408,6 +410,11 @@ public class LaunchActivity extends ActionBarActivity implements NotificationCen if (presentFragment(fragment, false, true)) { pushOpened = true; } + } else if (showDialogsList) { + for (int a = 1; a < fragmentsStack.size(); a++) { + removeFragmentFromStack(fragmentsStack.get(a)); + a--; + } } if (videoPath != null || photoPathsArray != null || sendingText != null || documentsPathsArray != null || contactsToSend != null) { NotificationCenter.getInstance().postNotificationName(MessagesController.closeChats); @@ -522,7 +529,6 @@ public class LaunchActivity extends ActionBarActivity implements NotificationCen } finished = true; NotificationCenter.getInstance().removeObserver(this, 1234); - NotificationCenter.getInstance().removeObserver(this, 658); NotificationCenter.getInstance().removeObserver(this, 701); NotificationCenter.getInstance().removeObserver(this, 702); NotificationCenter.getInstance().removeObserver(this, 703); @@ -546,30 +552,6 @@ public class LaunchActivity extends ActionBarActivity implements NotificationCen startActivity(intent2); onFinish(); finish(); - } else if (id == 658) { - if (PhotoViewer.getInstance().isVisible()) { - PhotoViewer.getInstance().closePhoto(false); - } - Integer push_chat_id = (Integer)args[0]; - Integer push_user_id = (Integer)args[1]; - Integer push_enc_id = (Integer)args[2]; - - if (push_user_id != 0) { - NotificationCenter.getInstance().postNotificationName(MessagesController.closeChats); - Bundle args2 = new Bundle(); - args2.putInt("user_id", push_user_id); - presentFragment(new ChatActivity(args2), false, true); - } else if (push_chat_id != 0) { - NotificationCenter.getInstance().postNotificationName(MessagesController.closeChats); - Bundle args2 = new Bundle(); - args2.putInt("chat_id", push_chat_id); - presentFragment(new ChatActivity(args2), false, true); - } else if (push_enc_id != 0) { - NotificationCenter.getInstance().postNotificationName(MessagesController.closeChats); - Bundle args2 = new Bundle(); - args2.putInt("enc_id", push_enc_id); - presentFragment(new ChatActivity(args2), false, true); - } } else if (id == 702) { if (args[0] != this) { onFinish(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LoginActivityRegisterView.java b/TMessagesProj/src/main/java/org/telegram/ui/LoginActivityRegisterView.java index ec2dfd09c..fa453e25a 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LoginActivityRegisterView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LoginActivityRegisterView.java @@ -150,10 +150,10 @@ public class LoginActivityRegisterView extends SlideView { final TLRPC.TL_auth_authorization res = (TLRPC.TL_auth_authorization)response; TLRPC.TL_userSelf user = (TLRPC.TL_userSelf)res.user; UserConfig.clearConfig(); - MessagesStorage.getInstance().cleanUp(); MessagesController.getInstance().cleanUp(); UserConfig.setCurrentUser(user); UserConfig.saveConfig(true); + MessagesStorage.getInstance().cleanUp(true); ArrayList users = new ArrayList(); users.add(user); MessagesStorage.getInstance().putUsersAndChats(users, null, true, true); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LoginActivitySmsView.java b/TMessagesProj/src/main/java/org/telegram/ui/LoginActivitySmsView.java index d390540f8..450f01b7b 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LoginActivitySmsView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LoginActivitySmsView.java @@ -260,10 +260,10 @@ public class LoginActivitySmsView extends SlideView implements NotificationCente TLRPC.TL_auth_authorization res = (TLRPC.TL_auth_authorization)response; destroyTimer(); UserConfig.clearConfig(); - MessagesStorage.getInstance().cleanUp(); MessagesController.getInstance().cleanUp(); UserConfig.setCurrentUser(res.user); UserConfig.saveConfig(true); + MessagesStorage.getInstance().cleanUp(true); ArrayList users = new ArrayList(); users.add(res.user); MessagesStorage.getInstance().putUsersAndChats(users, null, true, true); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java b/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java index becadcd99..a5409d66c 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java @@ -413,6 +413,9 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat imagesByIdsTemp.clear(); needSearchImageInArr = false; currentIndex = -1; + if (foundIndex >= imagesArr.size()) { + foundIndex = imagesArr.size() - 1; + } setImageIndex(foundIndex, true); } else { if (!cacheEndReached || !arr.isEmpty() && added != 0) { @@ -1384,6 +1387,15 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat NotificationCenter.getInstance().addObserver(this, MessagesController.mediaDidLoaded); NotificationCenter.getInstance().addObserver(this, MessagesController.userPhotosLoaded); + try { + if (windowView.getParent() != null) { + WindowManager wm = (WindowManager) parentActivity.getSystemService(Context.WINDOW_SERVICE); + wm.removeView(windowView); + } + } catch (Exception e) { + FileLog.e("tmessages", e); + } + placeProvider = provider; WindowManager wm = (WindowManager) parentActivity.getSystemService(Context.WINDOW_SERVICE); wm.addView(windowView, windowLayoutParams); @@ -1702,8 +1714,8 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat return; } try { - WindowManager wm = (WindowManager) parentActivity.getSystemService(Context.WINDOW_SERVICE); if (windowView.getParent() != null) { + WindowManager wm = (WindowManager) parentActivity.getSystemService(Context.WINDOW_SERVICE); wm.removeViewImmediate(windowView); } windowView = null; @@ -1730,8 +1742,8 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat public void run() { animatingImageView.setImageBitmap(null); try { - WindowManager wm = (WindowManager) parentActivity.getSystemService(Context.WINDOW_SERVICE); if (windowView.getParent() != null) { + WindowManager wm = (WindowManager) parentActivity.getSystemService(Context.WINDOW_SERVICE); wm.removeView(windowView); } } catch (Exception e) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/SettingsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/SettingsActivity.java index 1c4d1697a..e79239b45 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/SettingsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/SettingsActivity.java @@ -962,7 +962,7 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter MessagesController.getInstance().unregistedPush(); MessagesController.getInstance().logOut(); UserConfig.clearConfig(); - MessagesStorage.getInstance().cleanUp(); + MessagesStorage.getInstance().cleanUp(false); MessagesController.getInstance().cleanUp(); ContactsController.getInstance().deleteAllAppAccounts(); } From e5cb3685a0467f7f7cce5814cef583036b493371 Mon Sep 17 00:00:00 2001 From: DrKLO Date: Wed, 23 Jul 2014 20:53:14 +0400 Subject: [PATCH 02/11] Fixed broken image resizing in last commit --- TMessagesProj/build.gradle | 2 +- .../src/main/java/org/telegram/messenger/FileLoader.java | 2 +- .../src/main/java/org/telegram/ui/Views/ImageReceiver.java | 6 ++++++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/TMessagesProj/build.gradle b/TMessagesProj/build.gradle index 6080319d3..8b607d4c7 100644 --- a/TMessagesProj/build.gradle +++ b/TMessagesProj/build.gradle @@ -83,7 +83,7 @@ android { defaultConfig { minSdkVersion 8 targetSdkVersion 19 - versionCode 289 + versionCode 290 versionName "1.6.2" } } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoader.java b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoader.java index b4d8be094..7d9f1a951 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoader.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoader.java @@ -1111,7 +1111,7 @@ public class FileLoader { return null; } - Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, h, w, true); + Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, w, h, true); TLRPC.TL_fileLocation location = new TLRPC.TL_fileLocation(); location.volume_id = Integer.MIN_VALUE; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Views/ImageReceiver.java b/TMessagesProj/src/main/java/org/telegram/ui/Views/ImageReceiver.java index 11cf3a9cd..95d6e59ef 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Views/ImageReceiver.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Views/ImageReceiver.java @@ -132,6 +132,9 @@ public class ImageReceiver { last_filter = null; currentImage = null; last_size = 0; + if (parentView != null) { + parentView.invalidate(); + } } public void setImageBitmap(Drawable bitmap) { @@ -145,6 +148,9 @@ public class ImageReceiver { last_httpUrl = null; last_filter = null; last_size = 0; + if (parentView != null) { + parentView.invalidate(); + } } public void clearImage() { From 91ae97e257aaed7095266a4cf987035f7da95f23 Mon Sep 17 00:00:00 2001 From: DrKLO Date: Sun, 27 Jul 2014 02:28:33 +0400 Subject: [PATCH 03/11] Broadcasts, updated gif lib, blur image\video preview MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Note: untested, don’t upload to market --- TMessagesProj/build.gradle | 4 +- TMessagesProj/jni/Android.mk | 1 + TMessagesProj/jni/gif.c | 332 ++--- TMessagesProj/jni/image.c | 102 ++ .../libs/armeabi-v7a/libtmessages.so | Bin 848548 -> 852644 bytes TMessagesProj/libs/armeabi/libtmessages.so | Bin 799376 -> 799376 bytes TMessagesProj/libs/x86/libtmessages.so | Bin 1246260 -> 1250356 bytes .../telegram/android/MessagesController.java | 1066 ++++++++++------- .../org/telegram/android/MessagesStorage.java | 59 +- .../org/telegram/android/NativeLoader.java | 4 +- .../android/NotificationsController.java | 4 +- .../messenger/ConnectionsManager.java | 2 +- .../telegram/messenger/FileLoadOperation.java | 20 +- .../org/telegram/messenger/FileLoader.java | 18 +- .../org/telegram/messenger/TLClassStore.java | 1 + .../java/org/telegram/messenger/TLRPC.java | 11 + .../org/telegram/messenger/UserConfig.java | 4 + .../org/telegram/messenger/Utilities.java | 6 +- .../org/telegram/objects/MessageObject.java | 14 +- .../org/telegram/objects/PhotoObject.java | 16 +- .../org/telegram/ui/Cells/ChatMediaCell.java | 59 +- .../org/telegram/ui/Cells/DialogCell.java | 43 +- .../java/org/telegram/ui/ChatActivity.java | 33 +- .../org/telegram/ui/ChatProfileActivity.java | 140 ++- .../org/telegram/ui/GroupCreateActivity.java | 17 +- .../telegram/ui/GroupCreateFinalActivity.java | 126 +- .../java/org/telegram/ui/LaunchActivity.java | 7 +- .../org/telegram/ui/MessagesActivity.java | 33 +- .../ui/PopupNotificationActivity.java | 3 - .../org/telegram/ui/SettingsActivity.java | 3 + .../ui/SettingsNotificationsActivity.java | 5 +- .../org/telegram/ui/VideoEditorActivity.java | 24 +- .../org/telegram/ui/Views/GifDrawable.java | 2 +- .../org/telegram/ui/Views/ImageReceiver.java | 13 +- .../telegram/ui/Views/RoundProgressView.java | 43 + .../src/main/res/drawable-hdpi/broadcast.png | Bin 0 -> 1143 bytes .../src/main/res/drawable-hdpi/broadcast2.png | Bin 0 -> 1177 bytes .../main/res/drawable-hdpi/photocancel.png | Bin 2490 -> 2263 bytes .../res/drawable-hdpi/photocancel_pressed.png | Bin 2650 -> 0 bytes .../src/main/res/drawable-hdpi/photogif.png | Bin 2682 -> 2408 bytes .../res/drawable-hdpi/photogif_pressed.png | Bin 2838 -> 0 bytes .../src/main/res/drawable-hdpi/photoload.png | Bin 2379 -> 2159 bytes .../res/drawable-hdpi/photoload_pressed.png | Bin 2534 -> 0 bytes .../src/main/res/drawable-hdpi/playvideo.png | Bin 2654 -> 2353 bytes .../res/drawable-hdpi/playvideo_pressed.png | Bin 2788 -> 0 bytes .../src/main/res/drawable-ldpi/broadcast.png | Bin 0 -> 1029 bytes .../src/main/res/drawable-ldpi/broadcast2.png | Bin 0 -> 1018 bytes .../main/res/drawable-ldpi/photocancel.png | Bin 806 -> 1762 bytes .../res/drawable-ldpi/photocancel_pressed.png | Bin 805 -> 0 bytes .../src/main/res/drawable-ldpi/photogif.png | Bin 838 -> 1719 bytes .../res/drawable-ldpi/photogif_pressed.png | Bin 857 -> 0 bytes .../src/main/res/drawable-ldpi/photoload.png | Bin 564 -> 1503 bytes .../res/drawable-ldpi/photoload_pressed.png | Bin 591 -> 0 bytes .../src/main/res/drawable-ldpi/playvideo.png | Bin 785 -> 1628 bytes .../res/drawable-ldpi/playvideo_pressed.png | Bin 793 -> 0 bytes .../src/main/res/drawable-mdpi/broadcast.png | Bin 0 -> 1071 bytes .../src/main/res/drawable-mdpi/broadcast2.png | Bin 0 -> 1085 bytes .../main/res/drawable-mdpi/photocancel.png | Bin 1790 -> 1948 bytes .../res/drawable-mdpi/photocancel_pressed.png | Bin 1852 -> 0 bytes .../src/main/res/drawable-mdpi/photogif.png | Bin 1827 -> 1940 bytes .../res/drawable-mdpi/photogif_pressed.png | Bin 1908 -> 0 bytes .../src/main/res/drawable-mdpi/photoload.png | Bin 1649 -> 1798 bytes .../res/drawable-mdpi/photoload_pressed.png | Bin 1719 -> 0 bytes .../src/main/res/drawable-mdpi/playvideo.png | Bin 1823 -> 1887 bytes .../res/drawable-mdpi/playvideo_pressed.png | Bin 1882 -> 0 bytes .../src/main/res/drawable-xhdpi/broadcast.png | Bin 0 -> 1231 bytes .../main/res/drawable-xhdpi/broadcast2.png | Bin 0 -> 1267 bytes .../main/res/drawable-xhdpi/photocancel.png | Bin 3307 -> 2691 bytes .../drawable-xhdpi/photocancel_pressed.png | Bin 3483 -> 0 bytes .../src/main/res/drawable-xhdpi/photogif.png | Bin 3477 -> 2791 bytes .../res/drawable-xhdpi/photogif_pressed.png | Bin 3693 -> 0 bytes .../src/main/res/drawable-xhdpi/photoload.png | Bin 3192 -> 2523 bytes .../res/drawable-xhdpi/photoload_pressed.png | Bin 3363 -> 0 bytes .../src/main/res/drawable-xhdpi/playvideo.png | Bin 3534 -> 2801 bytes .../res/drawable-xhdpi/playvideo_pressed.png | Bin 3710 -> 0 bytes .../main/res/drawable-xxhdpi/broadcast.png | Bin 0 -> 1384 bytes .../main/res/drawable-xxhdpi/broadcast2.png | Bin 0 -> 1440 bytes .../main/res/drawable-xxhdpi/photocancel.png | Bin 4916 -> 3501 bytes .../drawable-xxhdpi/photocancel_pressed.png | Bin 5250 -> 0 bytes .../src/main/res/drawable-xxhdpi/photogif.png | Bin 5295 -> 3679 bytes .../res/drawable-xxhdpi/photogif_pressed.png | Bin 5610 -> 0 bytes .../main/res/drawable-xxhdpi/photoload.png | Bin 4920 -> 3310 bytes .../res/drawable-xxhdpi/photoload_pressed.png | Bin 5236 -> 0 bytes .../main/res/drawable-xxhdpi/playvideo.png | Bin 5360 -> 3712 bytes .../res/drawable-xxhdpi/playvideo_pressed.png | Bin 5675 -> 0 bytes .../src/main/res/values-ar/strings.xml | 8 + .../src/main/res/values-de/strings.xml | 8 + .../src/main/res/values-es/strings.xml | 8 + .../src/main/res/values-it/strings.xml | 8 + .../src/main/res/values-nl/strings.xml | 8 + .../src/main/res/values-pt-rBR/strings.xml | 8 + .../src/main/res/values-pt-rPT/strings.xml | 8 + TMessagesProj/src/main/res/values/strings.xml | 28 +- 93 files changed, 1479 insertions(+), 820 deletions(-) create mode 100644 TMessagesProj/src/main/java/org/telegram/ui/Views/RoundProgressView.java create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/broadcast.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/broadcast2.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/photocancel_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/photogif_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/photoload_pressed.png mode change 100755 => 100644 TMessagesProj/src/main/res/drawable-hdpi/playvideo.png delete mode 100755 TMessagesProj/src/main/res/drawable-hdpi/playvideo_pressed.png create mode 100644 TMessagesProj/src/main/res/drawable-ldpi/broadcast.png create mode 100644 TMessagesProj/src/main/res/drawable-ldpi/broadcast2.png delete mode 100755 TMessagesProj/src/main/res/drawable-ldpi/photocancel_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-ldpi/photogif_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-ldpi/photoload_pressed.png mode change 100755 => 100644 TMessagesProj/src/main/res/drawable-ldpi/playvideo.png delete mode 100755 TMessagesProj/src/main/res/drawable-ldpi/playvideo_pressed.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/broadcast.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/broadcast2.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/photocancel_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/photogif_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/photoload_pressed.png mode change 100755 => 100644 TMessagesProj/src/main/res/drawable-mdpi/playvideo.png delete mode 100755 TMessagesProj/src/main/res/drawable-mdpi/playvideo_pressed.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/broadcast.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/broadcast2.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/photocancel_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/photogif_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/photoload_pressed.png mode change 100755 => 100644 TMessagesProj/src/main/res/drawable-xhdpi/playvideo.png delete mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/playvideo_pressed.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/broadcast.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/broadcast2.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/photocancel_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/photogif_pressed.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/photoload_pressed.png mode change 100755 => 100644 TMessagesProj/src/main/res/drawable-xxhdpi/playvideo.png delete mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/playvideo_pressed.png diff --git a/TMessagesProj/build.gradle b/TMessagesProj/build.gradle index 8b607d4c7..924767dc0 100644 --- a/TMessagesProj/build.gradle +++ b/TMessagesProj/build.gradle @@ -83,7 +83,7 @@ android { defaultConfig { minSdkVersion 8 targetSdkVersion 19 - versionCode 290 - versionName "1.6.2" + versionCode 291 + versionName "1.7.0" } } diff --git a/TMessagesProj/jni/Android.mk b/TMessagesProj/jni/Android.mk index 33857ab90..1a1481668 100755 --- a/TMessagesProj/jni/Android.mk +++ b/TMessagesProj/jni/Android.mk @@ -8,6 +8,7 @@ LOCAL_CFLAGS += -Drestrict='' -D__EMX__ -DOPUS_BUILD -DFIXED_POINT -DUSE_ALLOCA LOCAL_CFLAGS += -DANDROID_NDK -DDISABLE_IMPORTGL -fno-strict-aliasing -fprefetch-loop-arrays -DAVOID_TABLES -DANDROID_TILE_BASED_DECODE -DANDROID_ARMV6_IDCT LOCAL_CPPFLAGS := -DBSD=1 -ffast-math -O2 -funroll-loops #LOCAL_LDLIBS := -llog +LOCAL_LDLIBS := -ljnigraphics LOCAL_SRC_FILES := \ ./opus/src/opus.c \ diff --git a/TMessagesProj/jni/gif.c b/TMessagesProj/jni/gif.c index b78811947..06b7a6283 100644 --- a/TMessagesProj/jni/gif.c +++ b/TMessagesProj/jni/gif.c @@ -1,4 +1,4 @@ -//tanks to https://github.com/koral--/android-gif-drawable +//thanks to https://github.com/koral--/android-gif-drawable /* MIT License Copyright (c) @@ -73,7 +73,7 @@ typedef struct { typedef struct { unsigned int duration; - short transpIndex; + int transpIndex; unsigned char disposalMethod; } FrameInfo; @@ -121,19 +121,20 @@ void gifOnJNIUnload(JavaVM *vm, void *reserved) { } static int fileReadFunc(GifFileType *gif, GifByteType *bytes, int size) { - FILE *file = (FILE *)gif->UserData; + FILE *file = (FILE *)gif->UserData; return fread(bytes, 1, size, file); } static int fileRewindFun(GifInfo *info) { - return fseek(info->gifFilePtr->UserData, info->startPos, SEEK_SET); + return fseek(info->gifFilePtr->UserData, info->startPos, SEEK_SET); } static unsigned long getRealTime() { struct timespec ts; const clockid_t id = CLOCK_MONOTONIC; - if (id != (clockid_t) - 1 && clock_gettime(id, &ts) != -1) - return ts.tv_sec * 1000 + ts.tv_nsec / 1000000; + if (id != (clockid_t) - 1 && clock_gettime(id, &ts) != -1) { + return ts.tv_sec * 1000 + ts.tv_nsec / 1000000; + } return -1; } @@ -195,7 +196,7 @@ static void packARGB32(argb *pixel, GifByteType alpha, GifByteType red, GifByteT } static void getColorFromTable(int idx, argb *dst, const ColorMapObject *cmap) { - char colIdx = idx >= cmap->ColorCount ? 0 : idx; + int colIdx = (idx >= cmap->ColorCount) ? 0 : idx; GifColorType *col = &cmap->Colors[colIdx]; packARGB32(dst, 0xFF, col->Red, col->Green, col->Blue); } @@ -218,7 +219,7 @@ static inline bool setupBackupBmp(GifInfo *info, short transpIndex) { if (transpIndex == -1) { getColorFromTable(fGIF->SBackGroundColor, &paintingColor, fGIF->SColorMap); } else { - packARGB32(&paintingColor,0,0,0,0); + packARGB32(&paintingColor, 0, 0, 0, 0); } eraseColor(info->backupPtr, fGIF->SWidth, fGIF->SHeight, paintingColor); return true; @@ -231,14 +232,15 @@ static int readExtensions(int ExtFunction, GifByteType *ExtData, GifInfo *info) if (ExtFunction == GRAPHICS_EXT_FUNC_CODE && ExtData[0] == 4) { FrameInfo *fi = &info->infos[info->gifFilePtr->ImageCount]; fi->transpIndex = -1; - char *b = (char *)ExtData + 1; + char *b = (char*) ExtData + 1; short delay = ((b[2] << 8) | b[1]); fi->duration = delay > 1 ? delay * 10 : 100; fi->disposalMethod = ((b[0] >> 2) & 7); - if (ExtData[1] & 1) - fi->transpIndex = (short) b[3]; + if (ExtData[1] & 1) { + fi->transpIndex = 0xff & b[3]; + } if (fi->disposalMethod == 3 && info->backupPtr == NULL) { - if (!setupBackupBmp(info,fi->transpIndex)) { + if (!setupBackupBmp(info, fi->transpIndex)) { return GIF_ERROR; } } @@ -260,7 +262,7 @@ static int readExtensions(int ExtFunction, GifByteType *ExtData, GifInfo *info) return GIF_OK; } -static int DDGifSlurp(GifFileType *GifFile, GifInfo *info, bool shouldDecode) { +static int DDGifSlurp(GifFileType *GifFile, GifInfo* info, bool shouldDecode) { GifRecordType RecordType; GifByteType *ExtData; int codeSize; @@ -268,103 +270,109 @@ static int DDGifSlurp(GifFileType *GifFile, GifInfo *info, bool shouldDecode) { size_t ImageSize; do { if (DGifGetRecordType(GifFile, &RecordType) == GIF_ERROR) { - return GIF_ERROR; + return (GIF_ERROR); } switch (RecordType) { - case IMAGE_DESC_RECORD_TYPE: { - if (DGifGetImageDesc(GifFile, !shouldDecode) == GIF_ERROR) { - return GIF_ERROR; - } - int i = shouldDecode ? info->currentIndex : GifFile->ImageCount - 1; - SavedImage *sp = &GifFile->SavedImages[i]; - ImageSize = sp->ImageDesc.Width * sp->ImageDesc.Height; - - if (sp->ImageDesc.Width < 1 || sp->ImageDesc.Height < 1 || ImageSize > (SIZE_MAX / sizeof(GifPixelType))) { - GifFile->Error = D_GIF_ERR_INVALID_IMG_DIMS; - return GIF_ERROR; - } - if (sp->ImageDesc.Width > GifFile->SWidth || sp->ImageDesc.Height > GifFile->SHeight) { - GifFile->Error = D_GIF_ERR_IMG_NOT_CONFINED; - return GIF_ERROR; - } - if (shouldDecode) { - sp->RasterBits = info->rasterBits; - if (sp->ImageDesc.Interlace) { - int i, j; - int InterlacedOffset[] = { 0, 4, 2, 1 }; - int InterlacedJumps[] = { 8, 8, 4, 2 }; - for (i = 0; i < 4; i++) { - for (j = InterlacedOffset[i]; j < sp->ImageDesc.Height; j += InterlacedJumps[i]) { - if (DGifGetLine(GifFile, sp->RasterBits + j * sp->ImageDesc.Width, sp->ImageDesc.Width) == GIF_ERROR) { - return GIF_ERROR; - } + case IMAGE_DESC_RECORD_TYPE: + + if (DGifGetImageDesc(GifFile, !shouldDecode) == GIF_ERROR) { + return (GIF_ERROR); + } + int i = shouldDecode ? info->currentIndex : GifFile->ImageCount - 1; + SavedImage *sp = &GifFile->SavedImages[i]; + ImageSize = sp->ImageDesc.Width * sp->ImageDesc.Height; + + if (sp->ImageDesc.Width < 1 || sp->ImageDesc.Height < 1 || ImageSize > (SIZE_MAX / sizeof(GifPixelType))) { + GifFile->Error = D_GIF_ERR_INVALID_IMG_DIMS; + return GIF_ERROR; + } + if (sp->ImageDesc.Width > GifFile->SWidth || sp->ImageDesc.Height > GifFile->SHeight) { + GifFile->Error = D_GIF_ERR_IMG_NOT_CONFINED; + return GIF_ERROR; + } + if (shouldDecode) { + sp->RasterBits = info->rasterBits; + if (sp->ImageDesc.Interlace) { + int i, j; + int InterlacedOffset[] = { 0, 4, 2, 1 }; + int InterlacedJumps[] = { 8, 8, 4, 2 }; + for (i = 0; i < 4; i++) { + for (j = InterlacedOffset[i]; j < sp->ImageDesc.Height; j += InterlacedJumps[i]) { + if (DGifGetLine(GifFile, sp->RasterBits + j * sp->ImageDesc.Width, sp->ImageDesc.Width) == GIF_ERROR) { + return GIF_ERROR; } } - } else { - if (DGifGetLine(GifFile, sp->RasterBits, ImageSize) == GIF_ERROR) { - return GIF_ERROR; - } } - if (info->currentIndex >= GifFile->ImageCount - 1) { - if (info->loopCount > 0) + } else { + if (DGifGetLine(GifFile, sp->RasterBits, ImageSize) == GIF_ERROR) { + return (GIF_ERROR); + } + } + if (info->currentIndex >= GifFile->ImageCount - 1) { + if (info->loopCount > 0) { info->currentLoop++; - if (fileRewindFun(info) != 0) { - info->gifFilePtr->Error = D_GIF_ERR_READ_FAILED; - return GIF_ERROR; - } - } - return GIF_OK; - } else { - if (DGifGetCode(GifFile, &codeSize, &ExtData) == GIF_ERROR) { - return GIF_ERROR; - } - while (ExtData) { - if (DGifGetCodeNext(GifFile, &ExtData) == GIF_ERROR) { - return GIF_ERROR; - } } + if (fileRewindFun(info) != 0) { + info->gifFilePtr->Error = D_GIF_ERR_READ_FAILED; + return GIF_ERROR; + } + } + return GIF_OK; + } else { + if (DGifGetCode(GifFile, &codeSize, &ExtData) == GIF_ERROR) { + return (GIF_ERROR); } - break; + while (ExtData != NULL) { + if (DGifGetCodeNext(GifFile, &ExtData) == GIF_ERROR) { + return (GIF_ERROR); + } + } + } + break; + + case EXTENSION_RECORD_TYPE: + if (DGifGetExtension(GifFile, &ExtFunction, &ExtData) == GIF_ERROR) { + return (GIF_ERROR); } - case EXTENSION_RECORD_TYPE: { - if (DGifGetExtension(GifFile, &ExtFunction, &ExtData) == GIF_ERROR) { + if (!shouldDecode) { + FrameInfo *tmpInfos = realloc(info->infos, (GifFile->ImageCount + 1) * sizeof(FrameInfo)); + if (tmpInfos == NULL) { return GIF_ERROR; } + info->infos = tmpInfos; + if (readExtensions(ExtFunction, ExtData, info) == GIF_ERROR) { + return GIF_ERROR; + } + } + while (ExtData != NULL) { + if (DGifGetExtensionNext(GifFile, &ExtData, &ExtFunction) == GIF_ERROR) { + return (GIF_ERROR); + } + if (!shouldDecode) { + if (readExtensions(ExtFunction, ExtData, info) == GIF_ERROR) { + return GIF_ERROR; + } + } + } + break; - if (!shouldDecode) { - info->infos = realloc(info->infos, (GifFile->ImageCount + 1) * sizeof(FrameInfo)); - if (readExtensions(ExtFunction, ExtData, info) == GIF_ERROR) { - return GIF_ERROR; - } - } - while (ExtData) { - if (DGifGetExtensionNext(GifFile, &ExtData, &ExtFunction) == GIF_ERROR) { - return GIF_ERROR; - } - if (!shouldDecode) { - if (readExtensions(ExtFunction, ExtData, info) == GIF_ERROR) { - return GIF_ERROR; - } - } - } - break; - } case TERMINATE_RECORD_TYPE: + break; + default: break; } } while (RecordType != TERMINATE_RECORD_TYPE); - bool ok = true; if (shouldDecode) { ok = (fileRewindFun(info) == 0); } if (ok) { - return GIF_OK; + return (GIF_OK); } else { info->gifFilePtr->Error = D_GIF_ERR_READ_FAILED; - return GIF_ERROR; + return (GIF_ERROR); } } @@ -381,7 +389,7 @@ static argb *getAddr(argb *bm, int width, int left, int top) { } static void blitNormal(argb *bm, int width, int height, const SavedImage *frame, const ColorMapObject *cmap, int transparent) { - const unsigned char *src = (unsigned char *)frame->RasterBits; + const unsigned char* src = (unsigned char*) frame->RasterBits; argb *dst = getAddr(bm, width, frame->ImageDesc.Left, frame->ImageDesc.Top); GifWord copyWidth = frame->ImageDesc.Width; if (frame->ImageDesc.Left + copyWidth > width) { @@ -393,9 +401,6 @@ static void blitNormal(argb *bm, int width, int height, const SavedImage *frame, copyHeight = height - frame->ImageDesc.Top; } - int srcPad, dstPad; - dstPad = width - copyWidth; - srcPad = frame->ImageDesc.Width - copyWidth; for (; copyHeight > 0; copyHeight--) { copyLine(dst, src, cmap, transparent, copyWidth); src += frame->ImageDesc.Width; @@ -404,7 +409,7 @@ static void blitNormal(argb *bm, int width, int height, const SavedImage *frame, } static void fillRect(argb *bm, int bmWidth, int bmHeight, GifWord left, GifWord top, GifWord width, GifWord height, argb col) { - uint32_t *dst = (uint32_t *)getAddr(bm, bmWidth, left, top); + uint32_t* dst = (uint32_t*) getAddr(bm, bmWidth, left, top); GifWord copyWidth = width; if (left + copyWidth > bmWidth) { copyWidth = bmWidth - left; @@ -414,7 +419,7 @@ static void fillRect(argb *bm, int bmWidth, int bmHeight, GifWord left, GifWord if (top + copyHeight > bmHeight) { copyHeight = bmHeight - top; } - uint32_t *pColor = (uint32_t *)(&col); + uint32_t* pColor = (uint32_t *) (&col); for (; copyHeight > 0; copyHeight--) { memset(dst, *pColor, copyWidth * sizeof(argb)); dst += bmWidth; @@ -424,12 +429,11 @@ static void fillRect(argb *bm, int bmWidth, int bmHeight, GifWord left, GifWord static void drawFrame(argb *bm, int bmWidth, int bmHeight, const SavedImage *frame, const ColorMapObject *cmap, short transpIndex) { if (frame->ImageDesc.ColorMap != NULL) { cmap = frame->ImageDesc.ColorMap; - if (cmap == NULL || cmap->ColorCount != (1 << cmap->BitsPerPixel)) { + if (cmap->ColorCount != (1 << cmap->BitsPerPixel)) { cmap = defaultCmap; } } - - blitNormal(bm, bmWidth, bmHeight, frame, cmap, (int) transpIndex); + blitNormal(bm, bmWidth, bmHeight, frame, cmap, transpIndex); } static bool checkIfCover(const SavedImage *target, const SavedImage *covered) { @@ -445,30 +449,28 @@ static bool checkIfCover(const SavedImage *target, const SavedImage *covered) { } static inline void disposeFrameIfNeeded(argb *bm, GifInfo *info, unsigned int idx) { - argb *backup = info->backupPtr; + argb* backup = info->backupPtr; argb color; packARGB32(&color, 0, 0, 0, 0); GifFileType *fGif = info->gifFilePtr; - SavedImage *cur = &fGif->SavedImages[idx - 1]; - SavedImage *next = &fGif->SavedImages[idx]; + SavedImage* cur = &fGif->SavedImages[idx - 1]; + SavedImage* next = &fGif->SavedImages[idx]; bool curTrans = info->infos[idx - 1].transpIndex != -1; int curDisposal = info->infos[idx - 1].disposalMethod; bool nextTrans = info->infos[idx].transpIndex != -1; int nextDisposal = info->infos[idx].disposalMethod; - argb *tmp; if ((curDisposal == 2 || curDisposal == 3) && (nextTrans || !checkIfCover(next, cur))) { switch (curDisposal) { - case 2: { - fillRect(bm, fGif->SWidth, fGif->SHeight, cur->ImageDesc.Left, cur->ImageDesc.Top, cur->ImageDesc.Width, cur->ImageDesc.Height, color); - } + case 2: + + fillRect(bm, fGif->SWidth, fGif->SHeight, cur->ImageDesc.Left, cur->ImageDesc.Top, cur->ImageDesc.Width, cur->ImageDesc.Height, color); break; - case 3: { - tmp = bm; - bm = backup; - backup = tmp; - } + case 3: + tmp = bm; + bm = backup; + backup = tmp; break; } } @@ -478,27 +480,25 @@ static inline void disposeFrameIfNeeded(argb *bm, GifInfo *info, unsigned int id } } -static jboolean reset(GifInfo *info) { +static void reset(GifInfo *info) { if (fileRewindFun(info) != 0) { - return JNI_FALSE; + return; } info->nextStartTime = 0; info->currentLoop = -1; info->currentIndex = -1; - return JNI_TRUE; } static void getBitmap(argb *bm, GifInfo *info) { - GifFileType *fGIF = info->gifFilePtr; + GifFileType* fGIF = info->gifFilePtr; argb paintingColor; int i = info->currentIndex; if (DDGifSlurp(fGIF, info, true) == GIF_ERROR) { - return; //TODO add leniency support + return; } - SavedImage *cur = &fGIF->SavedImages[i]; - - short transpIndex = info->infos[i].transpIndex; + SavedImage* cur = &fGIF->SavedImages[i]; + int transpIndex = info->infos[i].transpIndex; if (i == 0) { if (transpIndex == -1) { getColorFromTable(fGIF->SBackGroundColor, &paintingColor, fGIF->SColorMap); @@ -513,11 +513,14 @@ static void getBitmap(argb *bm, GifInfo *info) { } static void setMetaData(int width, int height, int ImageCount, int errorCode, JNIEnv *env, jintArray metaData) { - jint *ints = (*env)->GetIntArrayElements(env, metaData, 0); - *ints++ = width; - *ints++ = height; - *ints++ = ImageCount; - *ints = errorCode; + jint *const ints = (*env)->GetIntArrayElements(env, metaData, 0); + if (ints == NULL) { + return; + } + ints[0] = width; + ints[1] = height; + ints[2] = ImageCount; + ints[3] = errorCode; (*env)->ReleaseIntArrayElements(env, metaData, ints, 0); } @@ -554,9 +557,6 @@ static jint open(GifFileType *GifFileIn, int Error, int startPos, JNIEnv *env, j info->speedFactor = 1.0; info->rasterBits = calloc(GifFileIn->SHeight * GifFileIn->SWidth, sizeof(GifPixelType)); info->infos = malloc(sizeof(FrameInfo)); - info->infos->duration = 0; - info->infos->disposalMethod = 0; - info->infos->transpIndex = -1; info->backupPtr = NULL; if (info->rasterBits == NULL || info->infos == NULL) { @@ -564,15 +564,18 @@ static jint open(GifFileType *GifFileIn, int Error, int startPos, JNIEnv *env, j setMetaData(width, height, 0, D_GIF_ERR_NOT_ENOUGH_MEM, env, metaData); return (jint) NULL; } - - if (DDGifSlurp(GifFileIn, info, false) == GIF_ERROR) { - Error = GifFileIn->Error; - } + info->infos->duration = 0; + info->infos->disposalMethod = 0; + info->infos->transpIndex = -1; if (GifFileIn->SColorMap == NULL || GifFileIn->SColorMap->ColorCount != (1 << GifFileIn->SColorMap->BitsPerPixel)) { GifFreeMapObject(GifFileIn->SColorMap); GifFileIn->SColorMap = defaultCmap; } + + DDGifSlurp(GifFileIn, info, false); + int imgCount = GifFileIn->ImageCount; + if (imgCount < 1) { Error = D_GIF_ERR_NO_FRAMES; } @@ -583,7 +586,6 @@ static jint open(GifFileType *GifFileIn, int Error, int startPos, JNIEnv *env, j cleanUp(info); } setMetaData(width, height, imgCount, Error, env, metaData); - return (jint)(Error == 0 ? info : NULL); } @@ -600,12 +602,12 @@ JNIEXPORT jlong JNICALL Java_org_telegram_ui_Views_GifDrawable_getAllocationByte return sum; } -JNIEXPORT jboolean JNICALL Java_org_telegram_ui_Views_GifDrawable_reset(JNIEnv *env, jclass class, jobject gifInfo) { +JNIEXPORT void JNICALL Java_org_telegram_ui_Views_GifDrawable_reset(JNIEnv *env, jclass class, jobject gifInfo) { GifInfo *info = (GifInfo *)gifInfo; if (info == NULL) { - return JNI_FALSE; + return; } - return reset(info); + reset(info); } JNIEXPORT void JNICALL Java_org_telegram_ui_Views_GifDrawable_setSpeedFactor(JNIEnv *env, jclass class, jobject gifInfo, jfloat factor) { @@ -618,7 +620,7 @@ JNIEXPORT void JNICALL Java_org_telegram_ui_Views_GifDrawable_setSpeedFactor(JNI JNIEXPORT void JNICALL Java_org_telegram_ui_Views_GifDrawable_seekToTime(JNIEnv *env, jclass class, jobject gifInfo, jint desiredPos, jintArray jPixels) { GifInfo *info = (GifInfo *)gifInfo; - if (info == NULL) { + if (info == NULL || jPixels == NULL) { return; } int imgCount = info->gifFilePtr->ImageCount; @@ -643,25 +645,29 @@ JNIEXPORT void JNICALL Java_org_telegram_ui_Views_GifDrawable_seekToTime(JNIEnv if (i == imgCount - 1 && lastFrameRemainder > info->infos[i].duration) { lastFrameRemainder = info->infos[i].duration; } - info->lastFrameReaminder = lastFrameRemainder; if (i > info->currentIndex) { - jint *pixels = (*env)->GetIntArrayElements(env, jPixels, 0); + jint *const pixels = (*env)->GetIntArrayElements(env, jPixels, 0); + if (pixels == NULL) { + return; + } while (info->currentIndex <= i) { info->currentIndex++; - getBitmap((argb *)pixels, info); + getBitmap((argb*) pixels, info); } (*env)->ReleaseIntArrayElements(env, jPixels, pixels, 0); } + info->lastFrameReaminder = lastFrameRemainder; + if (info->speedFactor == 1.0) { info->nextStartTime = getRealTime() + lastFrameRemainder; - } else { + } else { info->nextStartTime = getRealTime() + lastFrameRemainder * info->speedFactor; } } JNIEXPORT void JNICALL Java_org_telegram_ui_Views_GifDrawable_seekToFrame(JNIEnv *env, jclass class, jobject gifInfo, jint desiredIdx, jintArray jPixels) { GifInfo *info = (GifInfo *)gifInfo; - if (info == NULL) { + if (info == NULL|| jPixels==NULL) { return; } if (desiredIdx <= info->currentIndex) { @@ -673,15 +679,19 @@ JNIEXPORT void JNICALL Java_org_telegram_ui_Views_GifDrawable_seekToFrame(JNIEnv return; } + jint *const pixels = (*env)->GetIntArrayElements(env, jPixels, 0); + if (pixels == NULL) { + return; + } + + info->lastFrameReaminder = 0; if (desiredIdx >= imgCount) { desiredIdx = imgCount - 1; } - info->lastFrameReaminder = 0; - jint *pixels = (*env)->GetIntArrayElements(env, jPixels, 0); while (info->currentIndex < desiredIdx) { info->currentIndex++; - getBitmap((argb *)pixels, info); + getBitmap((argb *) pixels, info); } (*env)->ReleaseIntArrayElements(env, jPixels, pixels, 0); if (info->speedFactor == 1.0) { @@ -689,16 +699,13 @@ JNIEXPORT void JNICALL Java_org_telegram_ui_Views_GifDrawable_seekToFrame(JNIEnv } else { info->nextStartTime = getRealTime() + info->infos[info->currentIndex].duration * info->speedFactor; } - } JNIEXPORT void JNICALL Java_org_telegram_ui_Views_GifDrawable_renderFrame(JNIEnv *env, jclass class, jintArray jPixels, jobject gifInfo, jintArray metaData) { - GifInfo *info = (GifInfo *)gifInfo; - if (info == NULL) { + if (info == NULL || jPixels == NULL) { return; } - bool needRedraw = false; unsigned long rt = getRealTime(); @@ -708,24 +715,40 @@ JNIEXPORT void JNICALL Java_org_telegram_ui_Views_GifDrawable_renderFrame(JNIEnv } needRedraw = true; } - jint *rawMetaData = (*env)->GetIntArrayElements(env, metaData, 0); + jint *const rawMetaData = (*env)->GetIntArrayElements(env, metaData, 0); + if (rawMetaData == NULL) { + return; + } - if (needRedraw) { - jint *pixels = (*env)->GetIntArrayElements(env, jPixels, 0); + if (needRedraw) { + jint *const pixels = (*env)->GetIntArrayElements(env, jPixels, 0); + if (pixels == NULL) { + (*env)->ReleaseIntArrayElements(env, metaData, rawMetaData, 0); + return; + } getBitmap((argb *)pixels, info); rawMetaData[3] = info->gifFilePtr->Error; (*env)->ReleaseIntArrayElements(env, jPixels, pixels, 0); - - int scaledDuration = info->infos[info->currentIndex].duration; + unsigned int scaledDuration = info->infos[info->currentIndex].duration; if (info->speedFactor != 1.0) { - scaledDuration /= info->speedFactor; - } + scaledDuration /= info->speedFactor; + if (scaledDuration<=0) { + scaledDuration=1; + } else if (scaledDuration > INT_MAX) { + scaledDuration = INT_MAX; + } + } info->nextStartTime = rt + scaledDuration; rawMetaData[4] = scaledDuration; } else { - rawMetaData[4] = (int) (rt - info->nextStartTime); - } + long delay = info->nextStartTime-rt; + if (delay < 0) { + rawMetaData[4] = -1; + } else { + rawMetaData[4] = (int) delay; + } + } (*env)->ReleaseIntArrayElements(env, metaData, rawMetaData, 0); } @@ -794,9 +817,6 @@ JNIEXPORT void JNICALL Java_org_telegram_ui_Views_GifDrawable_saveRemainder(JNIE return; } info->lastFrameReaminder = getRealTime() - info->nextStartTime; - if (info->lastFrameReaminder > 0) { - info->lastFrameReaminder = 0; - } } JNIEXPORT void JNICALL Java_org_telegram_ui_Views_GifDrawable_restoreRemainder(JNIEnv *env, jclass class, jobject gifInfo) { @@ -814,7 +834,7 @@ JNIEXPORT jint JNICALL Java_org_telegram_ui_Views_GifDrawable_openFile(JNIEnv *e return (jint) NULL; } - const char *fname = (*env)->GetStringUTFChars(env, jfname, 0); + const char *const fname = (*env)->GetStringUTFChars(env, jfname, 0); FILE *file = fopen(fname, "rb"); (*env)->ReleaseStringUTFChars(env, jfname, fname); if (file == NULL) { diff --git a/TMessagesProj/jni/image.c b/TMessagesProj/jni/image.c index 1482314d3..ef63bfbf0 100644 --- a/TMessagesProj/jni/image.c +++ b/TMessagesProj/jni/image.c @@ -2,8 +2,101 @@ #include #include #include +#include #include "utils.h" +static inline uint64_t get_colors (const uint8_t *p) { + return p[0] + (p[1] << 16) + ((uint64_t)p[2] << 32); +} + +static void fastBlur(int imageWidth, int imageHeight, int imageStride, void *pixels) { + uint8_t *pix = (uint8_t *)pixels; + const int w = imageWidth; + const int h = imageHeight; + const int stride = imageStride; + const int radius = 3; + const int r1 = radius + 1; + const int div = radius * 2 + 1; + + if (radius > 15 || div >= w || div >= h) { + return; + } + + uint64_t rgb[imageStride * imageHeight]; + + int x, y, i; + + int yw = 0; + const int we = w - r1; + for (y = 0; y < h; y++) { + uint64_t cur = get_colors (&pix[yw]); + uint64_t rgballsum = -radius * cur; + uint64_t rgbsum = cur * ((r1 * (r1 + 1)) >> 1); + + for (i = 1; i <= radius; i++) { + uint64_t cur = get_colors (&pix[yw + i * 4]); + rgbsum += cur * (r1 - i); + rgballsum += cur; + } + + x = 0; + + #define update(start, middle, end) \ + rgb[y * w + x] = (rgbsum >> 4) & 0x00FF00FF00FF00FFLL; \ + rgballsum += get_colors (&pix[yw + (start) * 4]) - 2 * get_colors (&pix[yw + (middle) * 4]) + get_colors (&pix[yw + (end) * 4]); \ + rgbsum += rgballsum; \ + x++; \ + + while (x < r1) { + update (0, x, x + r1); + } + while (x < we) { + update (x - r1, x, x + r1); + } + while (x < w) { + update (x - r1, x, w - 1); + } + + #undef update + + yw += stride; + } + + const int he = h - r1; + for (x = 0; x < w; x++) { + uint64_t rgballsum = -radius * rgb[x]; + uint64_t rgbsum = rgb[x] * ((r1 * (r1 + 1)) >> 1); + for (i = 1; i <= radius; i++) { + rgbsum += rgb[i * w + x] * (r1 - i); + rgballsum += rgb[i * w + x]; + } + + y = 0; + int yi = x * 4; + + #define update(start, middle, end) \ + int64_t res = rgbsum >> 4; \ + pix[yi] = res; \ + pix[yi + 1] = res >> 16; \ + pix[yi + 2] = res >> 32; \ + rgballsum += rgb[x + (start) * w] - 2 * rgb[x + (middle) * w] + rgb[x + (end) * w]; \ + rgbsum += rgballsum; \ + y++; \ + yi += stride; + + while (y < r1) { + update (0, y, y + r1); + } + while (y < he) { + update (y - r1, y, y + r1); + } + while (y < h) { + update (y - r1, y, h - 1); + } + #undef update + } +} + typedef struct my_error_mgr { struct jpeg_error_mgr pub; jmp_buf setjmp_buffer; @@ -16,6 +109,15 @@ METHODDEF(void) my_error_exit(j_common_ptr cinfo) { longjmp(myerr->setjmp_buffer, 1); } +JNIEXPORT void Java_org_telegram_messenger_Utilities_blurBitmap(JNIEnv *env, jclass class, jobject bitmap, int width, int height, int stride) { + void *pixels = 0; + if (AndroidBitmap_lockPixels(env, bitmap, &pixels) < 0) { + return; + } + fastBlur(width, height, stride, pixels); + AndroidBitmap_unlockPixels(env, bitmap); +} + JNIEXPORT void Java_org_telegram_messenger_Utilities_loadBitmap(JNIEnv *env, jclass class, jstring path, jintArray bitmap, int scale, int format, int width, int height) { int i; diff --git a/TMessagesProj/libs/armeabi-v7a/libtmessages.so b/TMessagesProj/libs/armeabi-v7a/libtmessages.so index 8ffd1fbc4ca2e8111e3b78979706212d7f0da579..f5677c7df613cc6f26b48be8ee7f21b197b74c14 100755 GIT binary patch delta 84296 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 delta 79103 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

21y3H5c@?)1Vb-s9l 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 Z8jE*;R30*mb%Qykt94EG2APxA{10Agm4g5P diff --git a/TMessagesProj/libs/armeabi/libtmessages.so b/TMessagesProj/libs/armeabi/libtmessages.so index f240651368d633d8b754b7f72fd74389433c3954..bc96b1c3ce869d9c513d036e302420a84f8dbc14 100755 GIT binary patch delta 89998 zcmZ_13w%t+|NnpHWE0s45+XLSVsj%QNs|Z-f=$FWiAzJ#MA0A!B52W2Y~t2XiEzXT zrA28`m$-Gq2Mr(E(90)LZBcx}$7Of3$sVmrsLTH~o7vs-?c?{~N7s9v?|IMtJ#*&F z*^`#uk1oZ3*}C1WJURMxCG>h+o ziY#q*=Jy&&MvJGn6i73ShrylEE?fdjkPHsrMYwg!mIBhjTgJF>-B>(rS?Zg@T0S7C zHqnL4Z_{G-DbyQw60V$?9R~LvD_rISVmrDJt`Ae+g?bgtJQ+8Gw1_Nxc*z*&===`eg7^qXn!XY8qC4SEGkea3o5B?;iK8<-(d+xbvCN( zGS1t>S>Ob)(vxs?%zg&=T80OwWxN2q@?Bw^B7pDhB`j71=v~_r$Iu)>?1`_Oo%bEM zOKTS{nx(!4PK3RMb&nN%4))YXXmjYixYOH(JHWU-*sqrhSIwH+16k_u!M@VT^wRZ|P6C6lQO7 z#mL-AaQ5t9Fqk@kaLrgWX$9OMCt#Y;WrcEQ@KmsUp7jK80oxrn0sNyZegv2daoWEN zzJt=oqa2#wJU8_0!9RqwRss4wm<6A*az26G8H}J2(bVn$c%qT_cFx!~@LInygqzRuj|Ufn?E^Np6*^)c6jZiD}l@pEu!2H~`<0e=tg0q6--Ql8{P}Hyj7Q-NX zB60M{R`4b8bJha}aPbtvX_)P3*f1~OkV(XG1zXm8SI_oTuk&5wCZu+ncyTahwL?=gqFXa+0yJJg3wBViNgj32WzIcUTRtD(l27q1| zyt&pKu29^Im4r)Yxh(__Uq!fW%mMY_HCmpFX2pLDHmyZGv)>Mm#0-jOybpZOy*1av zmcIvA310QF(@!pYz>&`3Iv2$f{0f8cbxubyg8O0+6Igr`xB|6IVXSBkKY;yi=&2`n z1edmIZ5u~#EDXKCV-k37IkO)IezBQwMa(ZIwuU1uKmiw6i>AY%?<*{p%wP%l;8ye> zR&`oHDcBpAU3>iJ;8o>V3t9S8;5`?d1NtMlV>RI_S$?;{v-|Om1~lrSI01#-1L#;} z$cDrRT!a=;Poyo11YhdNJGy)zcsJrPb8PV$;INk-oQm;uaE`1;7K5L^@ZiE(yna0t zSuns9v}LdhTp-Kv1o#5RP{ZOcfm2WbI>csw2Rv6+;iupoNRJM&#rtBfQVxa-*|;D0 z0P=%FQr2_nQ0#?)J;N#B7d+2ZvMyanGico!-QSYII&ivYYuojU_Q;pu1F`~7fOmd| z>m%#(OW;%;&-t(+yak?%3ZR~-09^WSD0ZL)AvQ&8t~IVxOJp1X&P4)y1qXqPz(K4+ zZ&Q0PM$*>8_rP;eA^VW60*AiKI~J?$;J?6hh}!GX@h72}kjgtQOx55Er~qA!=(M~8 zP7LKay3?Xg_yl|=oOkT7+}mNx(H$AG7OTMndh*ndyEa`2>!&ULsHycFDnHE<_*A2^rC{HGN-2}KCTj4m|Psjh&ZyS3)R7}tZt zhwz++70}8XJ(9$8b6EvCgMYk4xO}vX<`)89`hajZ;boM2gJUN0++$XO6maAqp3|ay zo52()yp*j`cuNHe5eNa7GcE_8mhoZmXb)%nw_uBmZ-KS4X=()zlTA~1Os8zHzGWJ; z=7OO}Mgla*)&qmV`REb*yd4W(3AWFI8Q==A-M$EX9PG!^?*`X^HH^OjOJH=QE&p0D z=Z^K)ZeWH&gK1=EmkwxwjMZR2H|Msp2Y3UxoH7_$LGyDb|{tj=unWKCg zJk^)y>R5%IfQNME9Zspl^teBX=WxBZr4IoQ*H7U&Pp0S(MR+fs^Jf{n0XE?-Y$Ypj z99V@}!o!|A={&G!yVj1i{$p?m*uL=W0grCmnkzzjYJU=Z6CA<#N3eb#cIrW_fO;ra zi7wn;*5b$D+3-?23up^FV9`D|f#>oV4+h60L%UB*1Sf#$%0>&E4|Yd|&>kC?f-AxH zS+%bt=Kp-J)?7bka2^JAGK1g2!w_#z@E9BoRx|rH*m$|i;=6$_Va(kTPb)kOJYxjU z?S+DJF4+5RtcD7hczraPT0%hQ*-|}1llqTvxTS`ObSsTi}%LZn6^5dS|0|*FPnL;f*JG&7ruv; zjukK*d}lu{$83w0MdKI1>sf_ngHM8M*u_QfvyC*bYyzWAT%~wVz>#ZTah4af_iS`~sI>*5a+;;otGxFveekW4`7cHy6jj6Us1Ttb*6T z3%0p%A;c}Qy>;OMK(okw70;uaOyrRz8-w=E$sj8PDi@nAPgQCz{apO_{4n73YMS?c+~U{^TV zcoshZJg>@mobx8Q42-4UR-wt@?O?3fHeLWeQHAqPyTKYL&cMLF&};*nz|ky01=#PL zi=)D4!I5Bl`X9l)&k6nf0`%VJoyS{$L!An~#1+Zo>j90<1e%Rq1& zII^8b(s;1F*s0)fFqTbQyA}q(sS{-eMKDMO7che|@FnnS#-D>nUPQ+;K7znJa1i4v za2dEC;~&7aV0#6wgRg@zptcG;2!K=nB{O&ogBRdRWFJO*qp;4pZSj8B7S%lHy_5jdUYufGMwB`EA;Vg=uk@hk9Cu)T}DG*~_^JI6Q> z90QJH8ODP5fu}J}0(*b&^yM+&aBz7`yq=o{#q6J4xW{bvE(1@hab7Yuf>(iYCu!@E z&%tG2`}%hhyc296f*-*5Wqc1DUh8b&pWs9XXSCu-ATDxHVCZcHc!3vz?XxcsyaDXS z;-kS^!0$2Eg4`w4Ouzh5Xf?t3` zSTR3<1AlYc-vKAexCuN7Y_GO^5I2}RcOC02X=#@VL)hkbXUBC1`+@C?#_Qlzu#Oe@ z26)5o!qzSU`pBEkXDzd!J_)whvk*PxAV5M-fqF@D6rjQyMQm=7RChx=&SH3EsUj0fm%b42^nXA zH?&hYP7bob3%nE#$DI$}2j0!PYc+T{9)Z}qryRT#JdEYH2kafLaE#BPU@T^rU|{dR zGcYKGK>|x~g(m3W%;3M^31GW@BX|$kzNr5Vt_9myQx|x`eXxCLXa_dQxJ!th;~Jo_ zuYTb$2=`HNGg$@tfXl$U84m{c?dYuFQ1AkwHXJNS;UPxB_XP*hx_s2IdC> zY#zlsE3q5A9Xy&<;sm((HDPgJ0KYR@*h)o=a4IlBe=$bE6)>Y#-Ee~)t8nabRN&$` zg=2>h2@dbApvO$Mo*78v!S=2l3BCj#&*Eo*L;E=M{{Vb3!5P1{8=gcK_g8RQmS7tU z_8>tK;{)JGJixOrdX?be;2aiz5qv_%wcsvjwLQKLyeeKe6@*8SeHGjvtg~FY<7&}Q z!D(1Foxpym#(c&R;2&kx8U${GdRMaek>J1q3de4EHu%04o$u1pFKfV02P?QR*A_18 zj!74oiUJfZik&bh8;)7dT<8dRQ93%3@dfaSQ3}V^qXv8q?9M814}3|+&0y`%&T|1p z7$zm+?H(3Dx5di0obC|=gDx^20*(ROee`Yca9R8;@FZ{+tH5&beK6W%^Mozn-WdvR zF5`XRJ>VsbPxXc(FjL`pQ1c5o0uNrYn86)z^E)1#g7rWnxL~xfHY7lQKhHUt198m0 zYOb@~e&97SehXX-wlCxFf-g*TKEBDL>1EH_SArM3r$8H8+OY||25j%RFT*i%JE3r6 z1}9;#4{UGv&)|b#`*QdYd|hV$3Va7_-xv7wz&r)pm&@+psqZ_vKX}U&SI6o$q6bE9 zk<1_)21{XJAE`y)Vp;qK@J<seF3D<$+ zYFL5*aJY=4!Kq+-f@JUn8NUtgyV$wj=Ye0WcDDE<@Pai8?iw5Ua_|-mk-dlXhoBg~ z&RN5A;L2CdXHvD`Oj-P0@KmrntMGI1Y_NUE+F`8b$yfs}liBwJZ+FJ)xilztIu%?N zcn>(16|ew&9h}U#1l*>aR0 zwl>TJbFxRji@?eT=P-T@_LlKyuVHPNAyXWOLAd0sz<iYNU=6d^fFI$<9rnejH#o43lT)J6V>6(z4@(vdHh}FNxey%M)|Ja;85V~gprtPFDHJdq*YP*s4-MmzKSCI)-w$P_n6JN^TMj@?`x=XDnFgl@u(o>BV9?#`vJ zKPKSyNatFa4!-o7vpaIZlcHT6^K>=%1lWtU>r?PW8GjA_1suZSe*iy~#n;86o=0Mw z89atT$5>}awC+XsPs09)0R5dfSI6Ef8EPfkyN>1i4mf00@DX=6ho8CkMgx>?j$@7x@KhNO0IzE8=GcV1-5b|Z;_1v_9t;+MD_8;RXohXv z920OicnH{Dp-OOZTQ`RT)q=On_#yZp*xv6?!1uxSfo-SngN0hA2nP37xjAN10(dGI z4YduyFz^>#e(YW-Qe}!$;0a)R z4SxVH0Bc!-|AJ3|Js3;ibKo4tir3-FU4+Z84b-2AcXQseL7myx4Q*&?$2joF{%(#L zF&n%GoXz5wft3l)dY6E24aCT^6=V``)z#HI7{DjXw7e<4($#_ycTx&rm z{8Wq;umA>&f?9r>OV_;B;5{xT0q}Tc&=GtN+bUniJ-~m}<41pd%MiT|_Pg7PyQys9WblHk z?v4t)4ZgU`-SNOa7d#yCcGntG2*o6sLI4-bGWZ-k^18d@fc*q`>hJE3*?b9nT}X}X z8oS2o?zl$&0qq8`C#&`=@OJQg#%*zo;4KMTV_)k1BzOCH9k&(gE^Zhv($bo*z(){o z-xHn#pXsJ_^u|x%ld|}`;0=h!X4p0n8^Grf5BIk*-yfF-u$ghE{&2wikK7#&77l|U zf4Do=rUBqpVEZ=wO>h}Fg=H`a+*_@5q+bBOg?Rf6Sp)vDgVOO(?lW-WpYGfami~Bu zIN%*9zF>-K7%T|%aCF=i@QG*cjwxyeha%p7F?s27IfBk{io1`~}>*r_wP)9)gENC^`Jl$JXLk;6zl=J|x~a z-(QfT8 zj)>i4Z@BWJdwqB0S|an>2TU!;HO7X zAvUH%!S@kAirG&C_f5x;FStl)q@GUqwt3VI%9xy6Mf56|0OMv33;1~azzRegV z2e4^pBXA#_%XkTR`vIpb3ENX(s73v0xmNvxdLV%2cCLg$wjftQ8Jh; zRXVQwW5Kmx`_DY`z-J1Tj`eUwq8>M2%az=IuB8H-VDMv+(s4QZ5*&^eVqLXW@Emw5 zIEC>|Y7e&WApQp50mGqe_WnuO6R%Y|2D&$RDcGKVydH`lH=)L)CBb~~#h;XppW18& zD-S6h>)~GTL2xW9;5>LcTyY%ZtKi=4JRDEd&EQathvNrmc#Od{)H+>Lr-I_-IkcEn z;5G1(ADuOv430#F>@6w=hhJAZj-hvhYp)Ay`%Topz(sj9t4BT5`Q1Ei52EOA8Tn** zXe+13dxIy)I1oHU#xdYRFwgQE1Rg1i9|4{LR9>MAqFUV;{|p`g zw)ab$Gz{)knIbg}-5)NT8W7Mvu?J3MnD1_bdR0%sJm4jNBtkF`9GEmR8e^zv>8-+{ zaG5v{$A#7a-VU~3_blKOV0TuFz+qS{;)I!lChD6fVMZ~v9_r@l&OTfR_U`TB_yL6o zUIVr_ZWp)#e3hj?2tL=x>8SPKTJQ)KA2b}tC$BqaO6G7Zl95ovF@sVVOaj~MSq+{6 z9?#-mfOGN6ADV63!L&inb7kBaJYUA4;CvZJgO|v-_Xt-GKMnU3zSl(Qy@Gn{q?pMZB!3PsDAZ$3x!55R9)8)dO zcn)(P3V)X12@J?!XIJ$|#{&?sy+RYfG2kR-FM=0-T}Yz0@IfhgDK59E3%-h*J^G;;jsV{TSFj4c z4VJ&(l?9e>o%6u9-zKs2i^0zK<*;unfvz>v9G74%ib0MJxmJKlqP-@H6lx*he$_)^DN3U?0Yv z|G_=M_BY^c`?lUttbEsl+rbhffkU!9xNXd1)4}pLR5QWyH&`cw<&V|pg5__lE&&^{ z)~sXsuXS?E59UQEnuE5Y(tiHgDU zb5%R@j|7*&^5enZz}jUV+)Av+G<_ZT!g3ETg0UHF|ImetAA?yjuVodb>wq7)`UCu6 zj(%tcaZpr#;GE~f!PjIw4{Vh2I`G_lr~Q}U-H7*L`JDvYKeUIw0k50we9rM7aPw@v zQ}JI}0u2)U`43j$PI31lyr=EbQei)O=g2-9$k)I=c+DC=Rkbx}5V%HG;kUt6GM){t z)5{bkP(;XD^aXgOjL(8|7dS6OKZ56jccXCHgC?*FFS*&5W|z0|PB+*-3p#;!fN5o^ zeIKyC3JMIFP4Na47i0$Sg71N=So}h;yo=X@%Td7)7XSG__!RiGEdKj{@Qt@I|LSB0 zPhcQtFYNdf=yH1j-T%P};4oQy`agIwI37-|Wffci&Id;@UYGGMS_DNrQyhT7O|bo1 z|8MX;8Q%cQXURkGfdQUKP5%tRqgRdp;Ah9Crmi13aB}W~_mXDJpFL?VmzbCR-kcfP zE%a{goGG)?XXH=Keg7X33-X*%!nu+T$LhAmv}!vuZ^rcZCe6*6G3EWJ_vZ+0cD?Sw zwZiD(0WSBmQ24J7WVSGA*A(xG;0gHB&r`T#obbyo19?X%{=6$0EgbxOFqtYm`n*>c zI(Z4=>BYJu7W=gb@5C3ssOQECiMu@a+{!+IYi-D7lO zCDAML6ojup&JfP+?(U}nrNN>L==97Oa-!jF48b(sd8{X=KgH3sR(riVbj=e z5-)h~>r6%pk^8!LOh?Rqq@0W0S|1Dm%XS0Rpmf*{|6Z5Mp4C)9l>`Q6bO-Dz3H7#^TOBui57~#8q{$iG$}0I56GFIloa94SFe#b1@8mB zh7V&YG_YBWq{A6sX0=)du4iF;&X|u}7PGVK=ow~DVZ(u*;p13L6pO;EEnGL~3h_ON za1t!(Csw$B;Pp`awu;Nem;Ols`oRxBY#+Si&aH%8O zWd~;ksu1@EYnvY7Z;|_rmgHOk^u9vip*Py75i=GPiP&Ia!J*elq;T-i>&g$IuY-Ps z&~PZ&mHx?tUP8yiJ^dylgx`SMK1&e(3gMSX8!luX?yL-fhJN}9OAo)*mcBN13vsTH z?G?i9!#bi9LMvvG0m6ogPGq&Puc8;}FWjo=O!9=M6@y7{VZf1Idf_dkArx^M(#WHHKSGFQ0sZ6}g1Jo@$nVeWS-azQBk?t_ihD&i%0SAQUs zA~asuS>4II96$A^P29%hZlSii6R8mHR38rX?Aj9N!=#EyHIo|Q$fd40XKAt0GMUU| zieS3*f!{htrA%&OvRqhnxvRc{(P<{@n7qfNk;!Hz6`Gc^)J%pksbz8)lNn5oXEKY) zY$kJB15;Fe51nN%?u!elg)2~4IiIhx5VCUcq0XL2QzrA%&Paxas|Tcn<= zVu~M_yvF1`CM71HGwB|}#)U}@lMzhDGnvd}I+Np>%wclAO=2@!z!dA4EN5~zlNC&! zX0n>et4!80X<@RNNkwQ&MZK6*Ga1HY9F=kKJ}pxWV={xuY$oS2xrE7;!lT;P`_?eJ z$>d`uIh=J;pY~+Zi%B0QRl>+C-2+0td-jY(qq?$>MK(2iwR9{mem+RO5D^y*_ z{5)2B{S98w+*FZdA?Bvuqcox=@urAlmv8>W<9xk^6~fN{ey7Z3G*_5c*Y((rI;oX% z9TId@VNiuF#*g&R@y7}}euCG?VAv5y`vp{Ddr}JNi-mdiqS+N5$BUaX@M`9)A!fOnj!EW|5@R4&K6l2m@ga|u-93UuX*Y@Uu?K9 zP{k3vI7cNmqd!pj08?a_7v6+8PCHByYI(_7QMcrrj+t#hGbC=HE-<#MPyQ1}Xk6&JQckiRq z_wC^wvT(U9Tq+9}$-)J)aK0=&R~F8pVLdA>OBRtK3#ZG%DYCFu7LJ#Nqh;YRSy&?r zt7KulmkiuxVNMoqmYh8y$-+iixK0+nCJWcd!qu{HRZCcJ>*`8bM1?H8R~FtO3zy5n zrLu65EL#2v+OehCmiJ%EEQB@HJVu24Q#2XZJa;9slDs>+2rAd}Xd0h?gtca8PpV>mEQ+ zF;G}6X%(WBWERd!Dg;KEg&R^IjVL7>xj;9yD0MS)VV<=y>M(@+842WO$;T>0KZHR^n4qPMOK|_xIkKbf~l1{Kj5Q864*`~rsiJb zYYKweyX{qF>O^UnNx1h%SW=2DQ4b_)Rl{!~!6cl!SzOoIt#jLQ-OIoX-5S@;Qv1eC zovS)Sw^@p|wzQ`isaEJxkd4YDjQBGwp*(8dt#R4f zs@ywgvvi}Om6|W#EbVS2>Ug9$ZxxRI85Au_$BndWIuGNwlHPGyW0T90d~4#>sVMbm zLrhL9m{v5r3|!-?K*LTOk0~DC<@vddg7HZ+|F}W8+jLb?CKWXZr#nX2q{-V_#Y3)SoyWK6wP^Jw41^)sjrj1M zWm1}@4!u$)ZL^5k?qs0itf?Z{@P#{xCv7)Lk1cNM7`12lCaKY4uqeqWUSB4yGY!@$ zdX?)G{oU03_hITXX}O8SxvGZ^X@n1kgSVL#>Y*6ljKO7+)=Y=COqy6<5O@jY%rv!2 zMIL4@Pyy{Y3m4{7t3j2HH@s-NVJ(x~Of91XOT>|ymm#}dHEPe(rMfM;<};jl#*?fH zD3g9QDYq1$h%!tVnxIU=jlNn74ls*ZZAcZmyQE$WX-i^9mBCxT(kZvN+A6ZmRshD> zHo3~AO(uSutJ<}Ebneil-iPk{$-MnvF(1ZktZLPNjHpcXrPDD75_dli7D+!dRUos1v59h_T3Z`N4_1N zoIJ$4rUcy)mQyA@HhveVbZdotZ=1!cb|eA$?l5omBI>qf(pg93ezVxaizK&s(!k*@ zn6iiQ>K9Ft_@NgW97Q{s3k#|BO-V_n`Hw;VJ~h2^T1wc0`cHIZlVTPvUL=g{7CU;A zEo7j0*qi)m> z5npK)$N3NqTqLi7s9$OdTsKK$tzwZ6iH_eSjd1AVt@%@SJnTz#U$ad#Ty>zUI+d%*6r_8N zBJWFbw6r!Yxol#&NE#p2DCSY=-YA~xM51`9K{R(FecE4b;7f@*HjKLw z8z`m-(hm)WSQU9p`Up~ug;Naj;e7H3C+Vs>U=yt94C1#``3q?9VBG~(h$6)EKw;a! zyov2n_$`9;wZ$;rpR6ScL6Yi4b7wLFp>ONO1U2~@p_%pK6E%rOD7{|n(S=NGFGvCP z1M*^2J=KE;t59oIy|@*6SUfO`&%2OZq7Y{UkU{*W9}W8hNC?gOxkh+#%CI+$n>>Sq*32a_O#!i?hLV4_AyWfZptlf|kV*19QN zq<78A;5!*pXI|o>)j5MVN)F9@Ck+q7A z(zFKgc^J|1%Nq>?!^uwss__=lt0z$*G{PcA^dxx*`C7zJdlGd3#=~?VRgf&^jgq=? z+t5$aHe#iG-jrq(aCsE3^+Z2xlrGncaS>!CLaXb=(-F43^6SNG5u`}9QHrgnz1uwN z9WFMoO0^t|)<(K;YI6ZX2X=4TZ^R zy2+Dw+<$B6$M;{%{BYV=N!;%#4|ET5P!X-)1}UvU?9-P7jNc%|H&i5XwW zIz{JCe)j)_3&Uk)gVdv;D9Ba)b7t&-aP<(~@WEV9uGZy27&_@_{kq`in8<5fuVrqO zI163*H%d3qg*3LgexrnGRnZrhu?>>NBL2~rOy;K@6UX+$<*Zs<-;bO@FEv}l^!_BI z?MA76JzaVWFdi>0;`07vvTuSBtE=bnhkrMzj5j3wc||->+b@aF`jfT%YO7&&0{V|s z8qN$PpYbRo&Ln0fl6weM8O4+&atNUuqxdWd!?8gcYZL|j<8A{@M7K})yt91w4)gT%p@T8&TYOq17vx=vOkRUS9@ZTZi73t8;tWm#e z+WxW!8P$0d;R2sE1sEQ^L3$B>_5Z|fsicHt8BV0)57&~@;@@fH9j{U;-l7QLYM<6= z)Elr)8>S5<&4gr$?+z#H6{YZL@sHu;wr{Dl*!=HyomKC6mFv#r_MH``E|uOhiw{PS zv9L-ui`qBIOwUrOt<6(QB@eUs^_yfMA9h=O@+LV2o3$px@pMweQ*)!JeT!`6pIF74 zZxMguBR0K7PV#3(!_m>CJ^Em?`0W^yMcl>iW62=WC{7O138NgRw z75(3a_pQ8YNPC;KS9HuVhN)jR-G1IPhYO^RGLAfLnkdeD2c0@j-0%+RiQ1K$={}~E z&ZFvg$OA%>#lsUwD2X@xGJ%Zb73-xMlc7fzS;o7awp8g3d@mlFOwz~~;?v2*0OKQ5 z2%Z`mE=?gy!Y{UpSF_1jvft2iDyb#pyy3+(a-Hbo8ViCuyEUq?)vS$DbAcN5dZ|aF zi#j7!tR{ zwh;1HB;jiE>S$$*szBJeSrStf*fOujw4piNL<(AwXZ5MDrPM95p|#SQlo8W`dviRtxiLebYbe+4D>|30y~y) zb%85-!PFjls(sF?_^U}gG>fcmyIvX(4c&LFmloHHNx7ssd%bkSMEf$ryj}{iB45SzBCt#CcfW(W$a_r|cf;-a94v zt>hItRnB_pkS(4^{Ih!T)7hj4882R%O+L`Cm&Tgh)CHP(sa2Wth7DFx;}ND*U4gC| zp%ha=(3MPAbq7DHPckXgEqyiD7^BXgu0_E!je+VFX!d$3+lcDgMr5*)4*aX84lk&8 zE-}5O%gk|w#c1QBZeMd_lVfre>VebO;~Kt5KgSLCZLgYMJ|6?q9Bhg65uvqZx?V~! z7Qh`!q!P=Zp##!Nq_*`jqeCBoJ6h`E0oeH~-KN?mO(?2Jy)FrtI7|XG zPOB@CaxGCqBawr}+|;xcIh;ZcwEB7vmc?^3z4P2@%c7-?obg|Ifok$^jrw2HFbQng zsZ5c>TyeiLI+<3h(HfY8EUn=P8?CrA!a%y2LeUU~?GB(sx{YF52KZZ(CbdMmYF(CB z5U2quzQ(W*4239)8ElL1W<)2OYdP`!S}0_-EJGh>jd zy|w?Gf}om_<|@=FGu_ixaxXbRj36$0PxJB7y2;t$GS$+*XBS=Y>}<+ES}vlhu(CSNJ|=XQ!y+E z(b|?s^I7||(Ej*YB~o6axa2*eLG>%(X1`iWB;IzDQ6i0oeTyrnqyL5tc~H9?_hu#1 zOlyg>)tovs1+M9Df^#E{5w`@?HN%W=Vuhn~kXEv?j=FV;GzuP7B8{-pnV638%RSq47!9OuembUbbZ8buVXEpnukljGrBdXs^bBdGS--qm;Lx*Hrnf@C)f5 zKidzz!Z*fGjn8WzUm{&@?1f`cAy3@;KFPEB@_dr*gKlaVta~1)%2HrcMSFN=gSdP?i4CE5V9QcU zqy+0$TW92gOQamsgHD;gGfJd^4dS)=WSstXLxGNt+>Hi08%l8Pp|hbxy3&xSTcM-# zI|LpzqXgrzbfu$gbsHr>NwG;$j8(BGr^l|U)p0GOU z-?at7m9wuS=7E*dhw-%qA@?#*Pd%HLKRX5mTN(<2YBLq6?ltVRM&Z;dE=!}Xh51o1 zspX_~FXHFKp&PF?6okZ2?>nasak~-6*FNy;lQVESogF38Gb1jTbJ`%EC&sQryTA*E znRs<;bSm{P4;)W)M&41uskDwq;TV+|ivnchRdagIvN=0C!y#;ue?%MH(SDyJzU$W2aq^>_TNbErmDgF^jH zYBQYZbVK~~mzutFXo26>Q>T4k>5J9neErKAhScau%`-8@8@?WT8kIhgT8B#i$|}7Z z`yj3+LVXyO{sYeYIGs9WwdLiE14FscimbD_tu&7^h}b2cgkqAet>1-$_gZ!ibyM$5 zxvL6R`Q>`KAE)fVY>ZQ#70>09j=m+*WYpbFT{)u! zH;F9;_Nf;w`6M|AleIn%MaEiEnUlNM&jR;=9d%+wy*O$SiAbUswF%IBSVj%4oIWbW ztWw1FWKFqkej70_>s!|6U(Lf)E2qywl}AGR2h(20nb0CK%Hv66QWwJS#~cISqKqV#*rba@?KLW#qhx?iF!au~|O9L$?(|o-j(ZZ^1t)+2v8%s5tP4xOqi#ck} z#2QUkt3xcV2-}NFq<^peQxsNUD#qGYIqm7R{Jdi6r-oB`f9GLvj9A^UAzOh9Xt8v@ zMcci}3+nc$(Q;(B+T1r!Ve^jVs2h9=+0vqQ_2S+oBnVEgGp!w3i3&c#ywRFY=H*YL z141{V)Tc7c`k{;R;?xpO=HRr@(gk#c`NN@0Q>FB!DcPzWy56e%l+(F=@NbA}r;dd1 zKhl&5<|LgWmV8^PQ}p96(^RqMp*Y0dq9bvN{^Z}^MVM#396sY`%6P-iHX6b;csqtYs;Kb>A8sc}{7 zS)(1kFq8D5JE=T$+sjt)CM*(WQL~KrCu3t^?2S7sx;)TTCU$rtcD;1KTW0MtV+696 z(ktgYo#UJ4JG5B3OqbA_|JFUnJshn<0am|dqz|bRPb|Z(64TqH{h>ftIfL%PJXkhv zkXl_ay)`e_6P>LODyO+T(5T14FZSaQc0vtx^FXxVfOS;bNUU8Oac*6Azo46xIUF{) z-3imy*e64=wAGq2EQL*mllPN{KF;X+urhbha2;!F2Kt!hi0icJS#W{w9q!X4?pA>M zWbW%j3&aTpq_uvbHQv_p)yNtfD%SE6B#cHia;!aVEr0ajx$PjmXQ9EU-48dD;CN z*V7O2dzo+WBb7vt-+~7;&lQg@C*$LFu%+2(8tD^`AbX@TUO0E=#_5pSd*w*K}N;#EcML>SM}+n$Jkc3q^mZz92vZWlpVC4-GUq` zuNlQ3R*-4@Wvd}>CFw>wZmge@*_@lG%N)Fho21&xDPo>9Ef?pkBJYrB@%vTeDY+(I zTunaYdwgj~`iRsJQXzI&LvFQ7G8H|1(uCueHRK4ta;La|E!ox1xC1XVo!|o9(-i6_ zO*w{lJ|=Srxhj6Yj*KJ+#4g1o6pdYGY1eIVKp+2=*aekqU4065;p#V2)=9YbO)MtU zMiom5mcaq)==|y1wOujY_rYVha77KB8qpRKzg)L6=$FhH zbXN57>FoLb;P(c1_PL_^xs$0Aj+&5WvPJYQ!C6dzIH`nm;Lm<$SXe@)x#0QOtqoWz zq75B3k_9egp}3|DPt!QD>t<3+%;Le#II%(NHKq&&dWpYOUeQ=fs^48&+ST8#qg=Qv}W9 zQj;GyCD+d$x+AB4;@rWR_mSy@{3^b`pR6ET4Nd#WJfc`D9jZ6v9w7OIKdToX93*q0sx*t^ z4v|p^tuu=ihlnpyeRqgVfFj*2h8-pW2x-k?+F_#YG{3PFop>ih7#gis1YJ_4!u$Sg znknu)Ox}W-(Ihq>Cb03uhf0_BXVW^< zC&8bPI&|w`&}!4*RE@2Z|7;vLtKB4bSC%2ukMis9Bpp7PXtVx$OmLmn+N7FwKga@ ze$h;+sm^fh0a;2qyIcQnBd4XT#s=p9HgY_FzEM1DBr4zIjU+xkdq8fqdat%XM|=jr zIuEDrv}GUBhimOkIRC92A|5i~VUQ)+@U4l&y0shFSfr`q!d2R!{F&CKK4L2gN7q4O ze~I`JU&9!QwB~W~o%9EJNCFJ0f8y~taTBLMCI|gL!b3=};LiTKfGxTc+9)+0iQ<%1 zxXm_1{YCtFm%HvtacC3yF9|X9Y$ksa(nIX}49B*gijSU=S!A*};crB$#R1RJD{aNh z=j3O_Drs1~82y4oleOZc7vyy)eCrL{Uf{sJ$7-pn-Y-z;e|hkgPJ;uywOU=dwq2re zO5cDFZmp6Qnp*`dxD~HnEgh&AjW0;=A$cMsZ^+emrk!5T#ap zI)9dER75_CiHb`CTUQWqUpr$~2=G*MYxA z;>0#S{2(`TeU&cC-!RIDf8c^a>8s-Z#gi(-U;cbBiCQVOZy17$K%wr>P6xD-s%v1V zIzwBebE#P=xxxJlbV<6++8CeElohx+6x+_{{asc{{lxWI{2I}s<_|^YT3^mo1ZmXn zePYy>rfJqvO;zTp85KGmx4|zAi;ksfymhA^T_!C}V-4SR;ji=jskVk)8s42KR!D74 zhC_k;Zk{|4-wNShPkUVN@|hwiOzr-9Uu4%Dk@#=jlnps`F zOS#J@UY}}<6k9qME!REa3N-CfRcyP}lE%=eKgzq}&bDCbgYIecjcEI-mzVUb>+!`yH0>#4>!}vXl z<&vsF+#1dwP*{u$c|%$cel&s7$0F|P$tU3gc)uq&hUF$ zX>@(lZR-u&!l((VZ@OmqFoG{`#bYb#5yzMEo2`azaeO@Sf7a-^we=@Nq4e}FAU!+Y z;$!(>&$=pI^HW1(Z+@$yP0=4pE(BjSzHVY!KR$*(-C(Hh$FC*P%W-gkGiBGY{#@;a zx@h%s{O&^&yh1lYr}B?ew=E?D4roKwAwGfX`6-3c?s{=~0zVoJ;2Ojm3497dH!Nbe z0ek{Nr!3;M0emz0EIg<^OZ1*5!f7eV9c|8p!_yo4fU*&mg`Z zLKo@{qXzM-iJ}k>K*gI{{+ip|AKf|pKIK#*AH;9|-f%k+!`^n6m7a_j@VHx)w&9s@ zGT(=f zJpXm0VZ4sF5MO_zlGD__dR0~T>ebe2cdlvz-njivoS4ForS}FYd~nQ9CR`f1x{O_! zLv>nitN&nKJoXVLmAR?Pv=K3PGE#5>OY~3WW~kD2=BBSjWh(z88DaP>m5=0m#2e4# zJe%1wXKPZc+B3Q~6$!SVw(QbnqFF8;?E=HG{1Uv{;nZv7+*<Hm(!>x8G; zCDlD>QL-|popk$|Cd=zg`Hy1kyZpk}#^aBaWZ&IdP8Xz93NF4 zWfViEV6lw7Y*;vj-$nQ<--`ZI`BSipGa9Z<<*yKUg5kh)zKW2Q;_MmxYves~I|Sda zQT%BJ*56Ohi|uFfFWVh8o(}$mYgRp-c{%)1joe99^UQ5f&J;hJ z#eaojpIO8ax%^_qGTd~2`9m&GI*+yv)>Qp}N z>Gz~jt0OtfXXGPVYCM^GGA$oPJ!~?IJM;KN@MT)vgt3e9Bk@Ejih_cU?AT>dG^FwB{UsqCi3!_6lr#V_9H`$g)d zDAWJDXZ2E$N#3(drQ70$lYD11Yph8`$1V}~&gX9e#~Ter3;6Mbf3Hz|un?E1tyV+Z z4|r^(@LQaf`Fs@rZKHTRA1ljJDWL&}Ui>(OJR1xZi}>X{(TKg4@P#4Eqzf|aJI zx*Rv>%cRq|Rak`^gcZ6qDN7~#dx<4{2>QTc*}Rm;e#~%bDc^-Cwly{$7R}4}#gWUT z-1`4_bCyY2_0HymAUm~~xDw4-CT*%WROophf=U&b#Oeb4J}_IHQpmqgCuAYt3maF< zdtZrdSMbAp(f_7_wp*WV+EDB=f{;;!QJlMi-;Kh3{(t&%ndJU|`f`bMp`|aE(VvK9 zt>lYPjr~T0WhGxh_=#T_K3&ZZ#6Gk^y!{b8(roywi2sO?Zien_`Sos!B~p>eaH^Dl z!XxNm6psshH2;THd?4_Pv74Q=iSOX*HWr(JU1j3pExeXbY7|dzLH~a!Ra(SxTls0c zXQOz2E1ySp8Dc)+zoHwdTif_m$Sx0S@^-AUOYl<{!|v@^DHE1R3H9zjk@!M9ZjGo> zski=rbbSw8PuKtdx#ymH?^{v{c~@_(-X)bJu_Uylz2zNAj20vL_b!&Cg%}ny|7OIT z&-Ll&itF>Q+WFx>9yVsJMsw&m2vn^H_g(LZ+887_5QjE}KpHytZiHJ&kT zU&m8+)7dCjSI;l+rl}r_!JE;j%07mz(H%PHn^u{=iVHL>g5Xb${fI^j$Qn?muG&Kj z1sb)M8~4)1NW#W>&tCdmh~~TY(Vp!?>%9*UpH;>O_F(?gJ~|IMpzJcDm?mj?YxtgG zG{3otKPblBU(m!2`{{NX+oYb{uf5<{3vWI^hXFt^K+U--51#w*LB^#3IjA2x`bM5wYL6l_fYL$&{=}_BCv;jb{Ti9CIeD~Q`7Ex z?;I7MV4ku4kFKGp7N+O?FX?4e>q(88c$CJ9vI*-=;e547rCS7f0lMw2w|MwhG&Fej z|L3#h*;4=Ov-rg=v>EV%K|Z31o2}~MuP76=rT8TM6}!Jp|DeMKI&Gd>`8A{{f{WVW zG!3L|q3vQVk32(1AhsK9r!%yq%R&h2c0v=dbaZ(Y@rg`dka6Fh&4+(WeS{Qs*0*5R zAai()I_Vt!S`b!o&+lj>o;jn2J6@o7;tn=xJdb6jUD5SjYe4QMN3Q{~i{hI!jz^M7 z<8@f#7T6|Q2QtR|!0CwWJauT=fAKmtnifLF%tODY(>m{I>TQWJ#hVuD7m&czZ@VtE zK|Slh_w=!Ff$zGA!Mebf*vJDe(Yx3a?02|Ksm`IMI2E49VpZ3xpn!GxO=~8@Dc?|T zyhejj^92n&=^Bl7S^y=!Ats5P5EpzL$;UV2Yp>6&25xq^NW7Q|)^J7cQw zP%|G>H&NEV+>YFNnXh?DpR>0#8g)%GEp>x-gbkZ200fJdsnpw$YqK<}SwlN`MDOlkFM;^Gg|3+Xqq1j6(hCwWz_LZLA;Oh zPC|#0iW3oAgXMsVM;#_&kx%N`j$B>DvqkYHJ=3I`nOGpwqyB28BBoIJQOz0CML#vl zLG%|`4%l+s(q3GNSVO(~u)UZo2#!3xgSZ-n`Zw^$9mFJDLnj&GBvv2>hER~Rcmc7x zTJ@2$m?JFBv6<`3;!DjrwrP;$VS8=6(fj~x?Hp(d959x<$D3SIN2lJ(%&{5kFPbmK zYuW=j5aS*2f9$SFO+zhnEjc!mRq$^~B>}Ew-J7c)E@C#W8Ebe;7jXu) zHmNh*#Pb4mfG(+CJOJ{Z-_(l-=_HUW?&4uK4{}Ey;UPYv)26B+o?sM(&4c#8rr()k zTLF24CM2eRy>7Zla%_(@y_eL&I5Z6W{{^UEOkIvGvO)FgCYmYrpQ2{GBxY-G`EcF- zyWXOhbP}5=;!`?02g|<3lz$7Ns*A6O44-E^*!X1n1k)`t53FjWjSfQE1?$r{=h@C% zb6}V7%;Kll)Ey5#(C+ZX)e}fRT*Jfs#3y(HIzUKw(egqWR&1e#R<+PyTtVgH@j8+_ zUNr`amj#v$jT&wX61@>iX;3@&6z>SeY^eV(^IIPO08Sc~xfI5birsgY#UuQ+;-2i2 zZJSunU3-a{csG+8_=;ZQW0!fh%$ijY{?CKT|2*4@dUZ{Rn5B)+XMMz3g0Pa$>?_s_ z4eFSFq96#f)z@AY0|mO*sxAu`gGDwMR3MZwMY9mYpA8VZ(Z_$P9+6_cRzJ*by9bIh z5X0o|Fi2d&D(uZo>bgNov}|{3`KlQ4C}N=9qKAs9v;bS>p<*af!fW}> zp<*FoH8pB>tcWQxze$Z6Ch7$6dWOY`L$z6IU7Wat(xOK07%v)GmbT*zix(46xk-(D zMZ9B%%(`dr(%2EKWun1`(T z2JV_5MtRM}bQfb9lgp!Ckpf^)Z=RVTZop%w)p0sXJOq9FFGh)< z3svfrL~)GZ6mnTdf`QYQbY#ON_3UV|MDPyB4=3Obwx17xn?S^|^XadqdmHB3Qfm3S zG2&UrPNQfNOPf%*p5v$jWdlj#hPqKS07dkoeMXZ=%x;a zOxxXBby>a$E$vK=ph#LF$_mQMZd50(6-$M#r$5q>qSpy|W)b}Mm?pR^O50HVlRZ-% z`o1_)&>mdRH?J4h1k475F7nM~rhIhv{dZ{y9L(Q)I{Ql!nVFm%Xox0>LzlVF#;E3| z55#r2FT7s8`GFWFxSDtB$Thej>N^jUnchzH~m?{Y6>Y@Viip*x$KHRLDw_+ZU zO_*_`3V6{rv69V($_ih+T|9x<3d}S+#9T3=iK<`h5Yq*u71XOY(Gl z?-r|(9$Ck)eqv#9gTqxF|9G$HL%o{#g}q`(uQT;;&w2!YT8U+}DF(Xd+I`3CANgED%9C{S(1o+L zl!NsLs&CkrsXqI}IaK?o1^dPOiYrB*6LjjL1L7D;Pc-t<5)8bed^PM-u|gC))DEAE zI|PAEl%ZtrX? zx8LFO&WP^|XSndK*d3HYk8j05ug$aIUi_F8pMRM6EsFKDkj<_3)vfff%c(P_#j|+k zx8iXx6ZB3WmHMXdP8IsL_Vu0OYdNF8o4T*M)7+n`N7V9=bD{^Icvd_rl=6<}L{FNE zdHS3fD$L-M&x!BTlxo#_POKB??tiKk--+wQ_{>`Gbj`e}+@4XJ`gd$v?NP8piBA$K zwsrQTC&NosmI1R-Bs68i-D)q)x3 zdz+jQKAw`AT5dPidZ$WYkVOmSP#p1|(#9-9+>N)tEDokEHQanz+#<{O;Jp1VuevNY z2#M;CS43yQ`FfKjUEEcd{;hjCDYIYXe_R!JQ9lzexCSc00-g-7xh6(HP~mf3oC9gY z#_Qq)q~o>Qu8Ud126f60qPx)lRwE7)Kc$gT?Ml5ZT4T%X6>XowU@Ws=##QYNYu6=^ zS*`ZERw!xNFY_--#g~Pvyt-8MfoQT_ndk`~efKi)UC`v8mWcy3x~fd<{!%i&Nhb&$ zg-;mD3vML7Q>T19CCiZKHOi;Vp1^ySizBHyn&*{^*E?=+s7tq`KPBa!pW{I8_Os~Km# z13RSQl2i)51m05~U;4AyOIW3T_Ol2ZfUHP<|CSg8d1!}U#P@_O{^2j;R4g}7e-V4> zpVyp8(h1is_8=-z2kjZie$_tV#e@B{8b*z34Hj$gVh_7P_D zXSc=Iv6Fx84u)DVUvvk*2>bX(DgB!N;L-SZ{ol%c~%M54*l;Z zm>k2ua!9dBe0g}Kui=2H`_EtXMzRbW6`!)GodP^*{sflQX6-u5-mDXUkRDa`AceEmDtQ6 zu6nCp{DRH2t!v;x4WiL;rmeV6g>J{pHikljI7v9k)dumkaWidB4MNciBAG_7gUY;6 zFcV5XY=crb!Svp6QuHfnxARr^H}#zjx~t$lUoSMxgw}db!wR?^dk4x?Gu!lh;t;k# zwL`1a^BSJkDE3=A6M8*#t88!y%(){KWsIB^-`g;LXsce!Q&f8zDjG9kZ~XSqWu|Fy z0T8atv~Bo1wW>`!W+rSFHARb=pk~LkRsJA`N_^?}ZMqRNAv7QX!%N4-!7_o$TT`GP zv^I%ubLr`NXC^dz`gr2Toi(j^jMnb;$UGFb6C;Mtw5@`?&MHouJ<~Q8sg7luwnzZ- zq}1U3)Qim1@j!KJ_s^tns{eh(j4LzRu57EO+l0P!)9GrBgEJEhE)vl0e@cizzNEH% zd#nC^Z!ps0>bF2L%4UFi;NDH3u!7HXQxj%56IYwWo=T|oK*kUD5Vf{R^i;4P;j&#E zq1ld%wTmGkX-(^6I{)fyb^+VAk70%_rAaY38S-?O6o;YnT(q6fGX3jAA`N|UZA6oL z821RmW&Ya}ak6k)edVe6rp%_p;+r3C74%3khv zsKIBu&#uU#+J3G5d<@}*QL~oLirO5rWhlRH->vo)*;+xU;NLKWn|Zv%uF;wR?jf@@ zTGga3ky#7mkXF7#$3p0JD?g-TdJkQbuBhEMSC6$rbOr4;ITbo@?N~I_G~M>xs@~PH zJ)-Y5`;(@a9Yc5e>{<{XzIE`_B~u6Qh%AaK{44RAy{;*|@S44p?{j3I3Kl-P1ADL2 zZ0K7Fr9Rv5PVw16{0?MX152;I1M7=bE zGaJ*<&#Kum9lT3?-Y|O`u3-&pb!O9{0y5o&eI{Q!zVxM=$H~gvx>$^0z?oet|wZZTwMxyT6Rr`XvZ@cO+ zof^@qkpJXK(efDouS@~|mB|A|CGhtHSXWPqWZSV} zre#N$nVbw=G*L>B^KD1(tM;$?Hv!Ct9{7{r4`7dlE&P{2)>B?qyQ6x`d#Xba%N9ZC zyxog!6!N%p2zy6}XnpUcMP9pxoUe{CkszUThHodB@LsV`Y|EXD+}AP6uGq)6 z{Z6!6d}B>*ZW z^cwR&)iYZAqI!N-;xBoPF6}cs!mu#*ihVtA?ae&92x(q~Ng1@_J{;YSWTxKkqB{-P|6=)^<75aLy~mYtxXQt3RC;ivA>^zQ;N5%eaui zd-r3W*p9{bV{c&D`J^9v+UX)@s}5x!&(@=CbG_D-IDYJ9_HLJH^+VeV`ms8~vUU~< z3cX@aQAdTd_k|82bEj4ZQn6)9nfJtH|Y0 zsKF&nEa+%(FPxSK-K@Azd9E?cZV$R2^G6j-(AYR_B8CyZh}+ApwDi0ZY< z=J5ANvH9&IAj8z2e90chofFyG_6?2N4O&7C-G4q35@8 z6#3r_*zz;HYBckw`Ios<5(_gux}!i~OajDG8owxZ!kdM|bf@mVNb@BD3=`y{*lkD^ z4SIt%GhhDS^51UDfA|hxnZ#1$?YI^S5o!`EkPp@>WCc{_#xOHA)$+?@*iNrx)Z=lD zLTZ4EfF8dOA}j)OYxv5s?6@%&@ii47=m0OoDPXHs$OYg8P*Tk&y~a+4o&7~2srY>e zVJyO6zyPG;H$ix@N^6(aCeK+~n;LF$^Eft%>K3adfo60ax7sA&=7%4k^e=-b+!VCj(?Xfl99FKb*TGjFt79w~B z;2Cbf)vH$>ui($sme$tA=+7y@_4(XuBHK($8`Yx|S+T%U!S>>lCNVFURNI4k2b^Or z8=MWPnwV+bBo^X5*>)B7tImcVaXp4>+~3LYCDO(PMqMXEtAtnJ-iecKH|jhRJkbiL zwpO^CJy4_a24S#vZ-BwgXEF>=aXe-j>E-aN*3M4mPVsJoC)>_6kX}#jXt`c}(YlvO z*}HcqgWK|=b%z`H*vTx|-vvYbIfk`!56t6$*04DI?gw1N=+zoq^cF9k%<`fqgQ@r8 z?!3k>@tw_+VQv~#)z?6}6Myodu!Z=4VS4z_$uOmLHanx9VGX^jCc}Q?#XYHwJT;Z| zqeb)7EvYPQKyUVZg_R*qS!)9pNvVi(7J}D~*f?;w`PW(O4%JWNMRQpYJ)Fib%w;zRn@?&j6wRbf z&!pA4!NLiJ%|6k<(M$j;GN5`btxcMPPi(`d<{ z*1W@}2@Z!7u`D3{?r3$~a&|B? zUdd3HuC)#Gz@~8q99ySpsy_$Btvtgp`VBNn*^+cHSdSLuc zv_;fvHWu30)D^bdI#JUJC@x@L9uuLGC>uHyYWJ=9ulw9;d1V1JI&_XfyN6)b9ilpH zg1JhUC-otzpd<_dp|esCr0z*4KHu4`eDr44!|M%O6}FixLCI;9)a%vHw_$b$HUJUZ z_?FEqQP{()H?z4?M!oJ7QQ!Db+c6<&3wz74yiv33iZD!oVn4TV7Smx`T{G5MjraDQ zJ(8=Ob)$7q(&cOkhT3a|Y=>@3ZQ&+-=E1zV5aVwT@3WP;Yx}9KY&sZQczkJi)gux6$BQ(eL{^c2hQ8mpcClwNvQEWECIgS!G?lC z^4AX5DAe%!oou`=)0*`@mcDRq-o^ak;9%}9Hl;^|^~J8{yuB1L-Ldoba%+s&1{g0$ zzGAetvTAA9`O{sjKe|Mp-E3s14e(7sz_DU&Zk>#V^B}l4?q;4HR$4_1>-h*{{>dp9 z{?%?a{iP8|BK}jSh$C)b3JCu|A;m=?s+~$JuFzb&%fBiMhhpn_%Uve<1c^A#=n%)K)l8O zO{?v^-4TVbp5K<9x1-dL8T3>64H2eBw>b+hzv>=5T#x7X@_17pfV{aiMzaxlbxm40 z!RCs*2QY?xeqe&SE zuOf^YXCb`;K+6Rhl5HjMI(H58+ zG)CN6`{R0V%iBJ0cV8Tu3nxOAw~l>7U3neVV9A<;k%K?5&4?X=K3gfOs*Ghg#*r!fN*VhA>BZ0^DhHJ>z)#JO z>{a@tiJ$n9B?OcVf|HwD)Q}r2Oor~r zlnUm_#zWytT~>kR7*WeJ_0DZZsbJ>6{mQ1(Wp8j(C7aPM;SGf(*>P+$KUT?noW{eX zHxRyLLJi|>X?6TTB{Sk?D0Vpf#=H@Wg5L0N>}%>h-WChdRd@LN3pD64t&E4kD}m=q?e};X@Tq8`%@;u)$X* zD}iOcs)vo;5!g6QrM3AFb^%P#Zy&PW(vrI}q3XXLvY`?UxAMp*EX`wVg-l9*1-(@% z69#Mm@8==%Ro>&rpRoJ#DqNpd!FN6d-Tazu`g8U1Q&8s~M}EP_x`jO&5C(VwPkxrk zs-M-6=jLo~f1*m|ZqtZrAL;N)+P3@S`A9n-c zfIq;^*X2EU+_!s*R0wM8dg6xdi>^)r6iL4tm) zI=#L0mVkCb1FX_fY7oY%S2{>zDDu4iR5iLt`P3oK3v(%Oq8mTtDtW+`?2@ZA%=bvc zp7oy+|Fp+YiJt<`9H;CD8fK9hsgL!0*56Cle(&aeJ4x@*dx2UWeqIKjMtlBII(3Q^*HnGpw>~-4P&kYP{BirA$lqY( z)Ln{kiqvw&&6?7LwCzTon7TJRmX>?-oc^4^}(>p}WjV#znP+JA464RetUMbrw;KdcQm>)^5bPKX^%32 zX-EqIzydS4r`~e^a;m^T_mkdo+oH!s2dtbxG@yGblZGcevbz)`-*2aoJU!3vE|qlO zgZLI;36KlOU2*n0!sjvw3Lpe=Js<5aP1ZZv4?wWA_KoC=@Iae@;$hn`Wqon>6 z+2yC|?r14Tmb39mbL^_eFv&zUo4?_BS`vS6xHOU_+BP?+w}wmo1n4ewh?n+JVUYUe zNNKqM9%lbhQX}Zd?uk;Hfoh`kHZ*i=6Q!lH?wmv(p5>XNrLjUk_1tI)N^nQ{cS%yc zLjxx76?HPf`#m`Zm%%9=E4@MY+~S#IrE+=mHxk+W4L7|eRXFTCjS-8TN!)2QXq>b~ za7)DQTIfy!#*__gBbLJqiI7+Fo8u)D?3lVGOTCbV)oAbZv+B8u(@);%Q_@G-pgotG zEM2FlUGE9fS~kiy|CxGvg5)5`Y46Bn_fmd+qGVipq*1q_-9~L+E*B}=60wkK+^2I@ z|4G^0ma@C5Yqd-IXcS!7C~r_Ul0wDDr6ex)5Brj*t~)yI)b0)d4=WMAWwjFaRLO

#@t4E@inMx+s&N1;Bin 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 delta 86504 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 diff --git a/TMessagesProj/libs/x86/libtmessages.so b/TMessagesProj/libs/x86/libtmessages.so index f251e2320669d12d5f581240f86a0cfadb2c5b20..c8bb5c7fc55e72f50bacd198b64f918dde0667d4 100755 GIT binary patch delta 120693 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%0DTB(-A%m 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 dialogsToUpdate = new HashMap(); + dialogsToUpdate.put(did, 0); + NotificationsController.getInstance().processDialogsUpdateRead(dialogsToUpdate, true); MessagesStorage.getInstance().deleteDialog(did, onlyHistory); NotificationCenter.getInstance().postNotificationName(removeAllMessagesFromDialog, did); NotificationCenter.getInstance().postNotificationName(dialogsNeedReload); @@ -806,18 +831,22 @@ public class MessagesController implements NotificationCenter.NotificationCenter } }); } else { - int encId = (int)(did >> 32); - if (onlyHistory) { - TLRPC.EncryptedChat encryptedChat = encryptedChats.get(encId); - sendClearHistoryMessage(encryptedChat); - } else { - declineSecretChat(encId); + int high_id = (int)(did >> 32); + if (high_id > 0) { + if (onlyHistory) { + TLRPC.EncryptedChat encryptedChat = encryptedChats.get(high_id); + sendClearHistoryMessage(encryptedChat); + } else { + declineSecretChat(high_id); + } } } } } public void loadChatInfo(final int chat_id) { + currentChatInfo = null; + chatParticipantsId = chat_id; MessagesStorage.getInstance().loadChatInfo(chat_id); } @@ -877,7 +906,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter checkDeletingTask(); if (UserConfig.isClientActivated()) { - if (ConnectionsManager.getInstance().getPauseTime() == 0 && ApplicationLoader.isScreenOn) { + if (ConnectionsManager.getInstance().getPauseTime() == 0 && ApplicationLoader.isScreenOn && !ApplicationLoader.mainInterfacePaused) { if (statusSettingState != 1 && (lastStatusUpdateTime == 0 || lastStatusUpdateTime <= System.currentTimeMillis() - 55000 || offlineSent)) { statusSettingState = 1; @@ -1046,21 +1075,23 @@ public class MessagesController implements NotificationCenter.NotificationCenter }, true, RPCRequest.RPCRequestClassGeneric | RPCRequest.RPCRequestClassFailOnServerErrors); ConnectionsManager.getInstance().bindRequestToGuid(reqId, classGuid); } else { - int encId = (int)(dialog_id >> 32); - TLRPC.EncryptedChat chat = encryptedChats.get(encId); - if (chat.auth_key != null && chat.auth_key.length > 1 && chat instanceof TLRPC.TL_encryptedChat) { - TLRPC.TL_messages_setEncryptedTyping req = new TLRPC.TL_messages_setEncryptedTyping(); - req.peer = new TLRPC.TL_inputEncryptedChat(); - req.peer.chat_id = chat.id; - req.peer.access_hash = chat.access_hash; - req.typing = true; - long reqId = ConnectionsManager.getInstance().performRpc(req, new RPCRequest.RPCRequestDelegate() { - @Override - public void run(TLObject response, TLRPC.TL_error error) { + int high_id = (int)(dialog_id >> 32); + if (high_id > 0) { + TLRPC.EncryptedChat chat = encryptedChats.get(high_id); + if (chat.auth_key != null && chat.auth_key.length > 1 && chat instanceof TLRPC.TL_encryptedChat) { + TLRPC.TL_messages_setEncryptedTyping req = new TLRPC.TL_messages_setEncryptedTyping(); + req.peer = new TLRPC.TL_inputEncryptedChat(); + req.peer.chat_id = chat.id; + req.peer.access_hash = chat.access_hash; + req.typing = true; + long reqId = ConnectionsManager.getInstance().performRpc(req, new RPCRequest.RPCRequestDelegate() { + @Override + public void run(TLObject response, TLRPC.TL_error error) { - } - }, true, RPCRequest.RPCRequestClassGeneric | RPCRequest.RPCRequestClassFailOnServerErrors); - ConnectionsManager.getInstance().bindRequestToGuid(reqId, classGuid); + } + }, true, RPCRequest.RPCRequestClassGeneric | RPCRequest.RPCRequestClassFailOnServerErrors); + ConnectionsManager.getInstance().bindRequestToGuid(reqId, classGuid); + } } } } @@ -1125,7 +1156,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter final ArrayList objects = new ArrayList(); for (TLRPC.Message message : messagesRes.messages) { message.dialog_id = dialog_id; - objects.add(new MessageObject(message, usersLocal)); + objects.add(new MessageObject(message, usersLocal, 2)); } Utilities.RunOnUIThread(new Runnable() { @Override @@ -1234,7 +1265,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter } for (TLRPC.Message m : dialogsRes.messages) { - new_dialogMessage.put(m.id, new MessageObject(m, usersLocal)); + new_dialogMessage.put(m.id, new MessageObject(m, usersLocal, 0)); } for (TLRPC.TL_dialog d : dialogsRes.dialogs) { if (d.last_message_date == 0) { @@ -1374,7 +1405,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter } for (TLRPC.Message m : dialogsRes.messages) { - new_dialogMessage.put(m.id, new MessageObject(m, usersLocal)); + new_dialogMessage.put(m.id, new MessageObject(m, usersLocal, 0)); } for (TLRPC.TL_dialog d : dialogsRes.dialogs) { if (d.last_message_date == 0) { @@ -1615,47 +1646,49 @@ public class MessagesController implements NotificationCenter.NotificationCenter if (max_date == 0) { return; } - NotificationsController.getInstance().processReadMessages(null, dialog_id, max_date, 0); - int encId = (int)(dialog_id >> 32); - TLRPC.EncryptedChat chat = encryptedChats.get(encId); - if (chat.auth_key != null && chat.auth_key.length > 1 && chat instanceof TLRPC.TL_encryptedChat) { - TLRPC.TL_messages_readEncryptedHistory req = new TLRPC.TL_messages_readEncryptedHistory(); - req.peer = new TLRPC.TL_inputEncryptedChat(); - req.peer.chat_id = chat.id; - req.peer.access_hash = chat.access_hash; - req.max_date = max_date; + int high_id = (int)(dialog_id >> 32); + if (high_id > 0) { + NotificationsController.getInstance().processReadMessages(null, dialog_id, max_date, 0); + TLRPC.EncryptedChat chat = encryptedChats.get(high_id); + if (chat.auth_key != null && chat.auth_key.length > 1 && chat instanceof TLRPC.TL_encryptedChat) { + TLRPC.TL_messages_readEncryptedHistory req = new TLRPC.TL_messages_readEncryptedHistory(); + req.peer = new TLRPC.TL_inputEncryptedChat(); + req.peer.chat_id = chat.id; + req.peer.access_hash = chat.access_hash; + req.max_date = max_date; - ConnectionsManager.getInstance().performRpc(req, new RPCRequest.RPCRequestDelegate() { - @Override - public void run(TLObject response, TLRPC.TL_error error) { - //MessagesStorage.getInstance().processPendingRead(dialog_id, max_id, max_date, true); - } - }); - } - MessagesStorage.getInstance().processPendingRead(dialog_id, max_id, max_date, false); - - MessagesStorage.getInstance().storageQueue.postRunnable(new Runnable() { - @Override - public void run() { - Utilities.RunOnUIThread(new Runnable() { + ConnectionsManager.getInstance().performRpc(req, new RPCRequest.RPCRequestDelegate() { @Override - public void run() { - TLRPC.TL_dialog dialog = dialogs_dict.get(dialog_id); - if (dialog != null) { - dialog.unread_count = 0; - NotificationCenter.getInstance().postNotificationName(dialogsNeedReload); - } - HashMap dialogsToUpdate = new HashMap(); - dialogsToUpdate.put(dialog_id, 0); - NotificationsController.getInstance().processDialogsUpdateRead(dialogsToUpdate, true); + public void run(TLObject response, TLRPC.TL_error error) { + //MessagesStorage.getInstance().processPendingRead(dialog_id, max_id, max_date, true); } }); } - }); + MessagesStorage.getInstance().processPendingRead(dialog_id, max_id, max_date, false); - if (chat.ttl > 0 && was) { - int serverTime = Math.max(ConnectionsManager.getInstance().getCurrentTime(), max_date); - MessagesStorage.getInstance().createTaskForDate(chat.id, serverTime, serverTime, 0); + MessagesStorage.getInstance().storageQueue.postRunnable(new Runnable() { + @Override + public void run() { + Utilities.RunOnUIThread(new Runnable() { + @Override + public void run() { + TLRPC.TL_dialog dialog = dialogs_dict.get(dialog_id); + if (dialog != null) { + dialog.unread_count = 0; + NotificationCenter.getInstance().postNotificationName(dialogsNeedReload); + } + HashMap dialogsToUpdate = new HashMap(); + dialogsToUpdate.put(dialog_id, 0); + NotificationsController.getInstance().processDialogsUpdateRead(dialogsToUpdate, true); + } + }); + } + }); + + if (chat.ttl > 0 && was) { + int serverTime = Math.max(ConnectionsManager.getInstance().getCurrentTime(), max_date); + MessagesStorage.getInstance().createTaskForDate(chat.id, serverTime, serverTime, 0); + } } } } @@ -1795,7 +1828,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter objArr.add(newMsgObj); ArrayList arr = new ArrayList(); arr.add(newMsg); - MessagesStorage.getInstance().putMessages(arr, false, true); + MessagesStorage.getInstance().putMessages(arr, false, true, false); updateInterfaceWithMessages(newMsg.dialog_id, objArr); NotificationCenter.getInstance().postNotificationName(dialogsNeedReload); @@ -1844,7 +1877,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter objArr.add(newMsgObj); ArrayList arr = new ArrayList(); arr.add(newMsg); - MessagesStorage.getInstance().putMessages(arr, false, true); + MessagesStorage.getInstance().putMessages(arr, false, true, false); updateInterfaceWithMessages(newMsg.dialog_id, objArr); NotificationCenter.getInstance().postNotificationName(dialogsNeedReload); @@ -1944,6 +1977,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter int lower_id = (int)peer; TLRPC.EncryptedChat encryptedChat = null; TLRPC.InputPeer sendToPeer = null; + ArrayList sendToPeers = null; if (lower_id != 0) { if (lower_id < 0) { newMsg.to_id = new TLRPC.TL_peerChat(); @@ -1968,27 +2002,44 @@ public class MessagesController implements NotificationCenter.NotificationCenter } } } else { - encryptedChat = encryptedChats.get((int)(peer >> 32)); - newMsg.to_id = new TLRPC.TL_peerUser(); - if (encryptedChat.participant_id == UserConfig.getClientUserId()) { - newMsg.to_id.user_id = encryptedChat.admin_id; + int high_id = (int)(peer >> 32); + if (high_id > 0) { + encryptedChat = encryptedChats.get(high_id); + newMsg.to_id = new TLRPC.TL_peerUser(); + if (encryptedChat.participant_id == UserConfig.getClientUserId()) { + newMsg.to_id.user_id = encryptedChat.admin_id; + } else { + newMsg.to_id.user_id = encryptedChat.participant_id; + } + newMsg.ttl = encryptedChat.ttl; } else { - newMsg.to_id.user_id = encryptedChat.participant_id; + if (currentChatInfo == null) { + return; + } + sendToPeers = new ArrayList(); + for (TLRPC.TL_chatParticipant participant : currentChatInfo.participants) { + TLRPC.User sendToUser = users.get(participant.user_id); + TLRPC.InputUser peerUser = getInputUser(sendToUser); + if (peerUser != null) { + sendToPeers.add(peerUser); + } + } + newMsg.to_id = new TLRPC.TL_peerChat(); + newMsg.to_id.chat_id = high_id; } - newMsg.ttl = encryptedChat.ttl; } newMsg.out = true; newMsg.date = ConnectionsManager.getInstance().getCurrentTime(); newMsg.random_id = getNextRandomId(); UserConfig.saveConfig(false); - final MessageObject newMsgObj = new MessageObject(newMsg, null); + final MessageObject newMsgObj = new MessageObject(newMsg, null, 2); newMsgObj.messageOwner.send_state = MESSAGE_SEND_STATE_SENDING; final ArrayList objArr = new ArrayList(); objArr.add(newMsgObj); ArrayList arr = new ArrayList(); arr.add(newMsg); - MessagesStorage.getInstance().putMessages(arr, false, true); + MessagesStorage.getInstance().putMessages(arr, false, true, false); updateInterfaceWithMessages(peer, objArr); NotificationCenter.getInstance().postNotificationName(dialogsNeedReload); @@ -1996,11 +2047,19 @@ public class MessagesController implements NotificationCenter.NotificationCenter if (type == 0) { if (encryptedChat == null) { - TLRPC.TL_messages_sendMessage reqSend = new TLRPC.TL_messages_sendMessage(); - reqSend.message = message; - reqSend.peer = sendToPeer; - reqSend.random_id = newMsg.random_id; - performSendMessageRequest(reqSend, newMsgObj, null); + if (sendToPeers != null) { + TLRPC.TL_messages_sendBroadcast reqSend = new TLRPC.TL_messages_sendBroadcast(); + reqSend.message = message; + reqSend.contacts = sendToPeers; + reqSend.media = new TLRPC.TL_inputMediaEmpty(); + performSendMessageRequest(reqSend, newMsgObj, null); + } else { + TLRPC.TL_messages_sendMessage reqSend = new TLRPC.TL_messages_sendMessage(); + reqSend.message = message; + reqSend.peer = sendToPeer; + reqSend.random_id = newMsg.random_id; + performSendMessageRequest(reqSend, newMsgObj, null); + } } else { TLRPC.TL_decryptedMessage reqSend = new TLRPC.TL_decryptedMessage(); reqSend.random_id = newMsg.random_id; @@ -2012,74 +2071,64 @@ public class MessagesController implements NotificationCenter.NotificationCenter } } else if (type >= 1 && type <= 3 || type >= 5 && type <= 8) { if (encryptedChat == null) { - TLRPC.TL_messages_sendMedia reqSend = new TLRPC.TL_messages_sendMedia(); - reqSend.peer = sendToPeer; - reqSend.random_id = newMsg.random_id; + TLRPC.InputMedia inputMedia = null; + DelayedMessage delayedMessage = null; if (type == 1) { - reqSend.media = new TLRPC.TL_inputMediaGeoPoint(); - reqSend.media.geo_point = new TLRPC.TL_inputGeoPoint(); - reqSend.media.geo_point.lat = lat; - reqSend.media.geo_point._long = lon; - performSendMessageRequest(reqSend, newMsgObj, null); + inputMedia = new TLRPC.TL_inputMediaGeoPoint(); + inputMedia.geo_point = new TLRPC.TL_inputGeoPoint(); + inputMedia.geo_point.lat = lat; + inputMedia.geo_point._long = lon; } else if (type == 2) { if (photo.access_hash == 0) { - reqSend.media = new TLRPC.TL_inputMediaUploadedPhoto(); - DelayedMessage delayedMessage = new DelayedMessage(); + inputMedia = new TLRPC.TL_inputMediaUploadedPhoto(); + delayedMessage = new DelayedMessage(); delayedMessage.originalPath = originalPath; - delayedMessage.sendRequest = reqSend; delayedMessage.type = 0; delayedMessage.obj = newMsgObj; delayedMessage.location = photo.sizes.get(photo.sizes.size() - 1).location; - performSendDelayedMessage(delayedMessage); } else { TLRPC.TL_inputMediaPhoto media = new TLRPC.TL_inputMediaPhoto(); media.id = new TLRPC.TL_inputPhoto(); media.id.id = photo.id; media.id.access_hash = photo.access_hash; - reqSend.media = media; - performSendMessageRequest(reqSend, newMsgObj, null); + inputMedia = media; } } else if (type == 3) { if (video.access_hash == 0) { - reqSend.media = new TLRPC.TL_inputMediaUploadedThumbVideo(); - reqSend.media.duration = video.duration; - reqSend.media.w = video.w; - reqSend.media.h = video.h; - reqSend.media.mime_type = video.mime_type; - DelayedMessage delayedMessage = new DelayedMessage(); + inputMedia = new TLRPC.TL_inputMediaUploadedThumbVideo(); + inputMedia.duration = video.duration; + inputMedia.w = video.w; + inputMedia.h = video.h; + inputMedia.mime_type = video.mime_type; + delayedMessage = new DelayedMessage(); delayedMessage.originalPath = originalPath; - delayedMessage.sendRequest = reqSend; delayedMessage.type = 1; delayedMessage.obj = newMsgObj; delayedMessage.location = video.thumb.location; delayedMessage.videoLocation = video; - performSendDelayedMessage(delayedMessage); } else { TLRPC.TL_inputMediaVideo media = new TLRPC.TL_inputMediaVideo(); media.id = new TLRPC.TL_inputVideo(); media.id.id = video.id; media.id.access_hash = video.access_hash; - reqSend.media = media; - performSendMessageRequest(reqSend, newMsgObj, null); + inputMedia = media; } } else if (type == 6) { - reqSend.media = new TLRPC.TL_inputMediaContact(); - reqSend.media.phone_number = user.phone; - reqSend.media.first_name = user.first_name; - reqSend.media.last_name = user.last_name; - performSendMessageRequest(reqSend, newMsgObj, null); + inputMedia = new TLRPC.TL_inputMediaContact(); + inputMedia.phone_number = user.phone; + inputMedia.first_name = user.first_name; + inputMedia.last_name = user.last_name; } else if (type == 7) { if (document.access_hash == 0) { if (document.thumb.location != null && document.thumb.location instanceof TLRPC.TL_fileLocation) { - reqSend.media = new TLRPC.TL_inputMediaUploadedThumbDocument(); + inputMedia = new TLRPC.TL_inputMediaUploadedThumbDocument(); } else { - reqSend.media = new TLRPC.TL_inputMediaUploadedDocument(); + inputMedia = new TLRPC.TL_inputMediaUploadedDocument(); } - reqSend.media.mime_type = document.mime_type; - reqSend.media.file_name = document.file_name; - DelayedMessage delayedMessage = new DelayedMessage(); + inputMedia.mime_type = document.mime_type; + inputMedia.file_name = document.file_name; + delayedMessage = new DelayedMessage(); delayedMessage.originalPath = originalPath; - delayedMessage.sendRequest = reqSend; delayedMessage.type = 2; delayedMessage.obj = newMsgObj; delayedMessage.documentLocation = document; @@ -2090,26 +2139,73 @@ public class MessagesController implements NotificationCenter.NotificationCenter media.id = new TLRPC.TL_inputDocument(); media.id.id = document.id; media.id.access_hash = document.access_hash; - reqSend.media = media; - performSendMessageRequest(reqSend, newMsgObj, null); + inputMedia = media; } } else if (type == 8) { if (audio.access_hash == 0) { - reqSend.media = new TLRPC.TL_inputMediaUploadedAudio(); - reqSend.media.duration = audio.duration; - reqSend.media.mime_type = audio.mime_type; - DelayedMessage delayedMessage = new DelayedMessage(); - delayedMessage.sendRequest = reqSend; + inputMedia = new TLRPC.TL_inputMediaUploadedAudio(); + inputMedia.duration = audio.duration; + inputMedia.mime_type = audio.mime_type; + delayedMessage = new DelayedMessage(); delayedMessage.type = 3; delayedMessage.obj = newMsgObj; delayedMessage.audioLocation = audio; - performSendDelayedMessage(delayedMessage); } else { TLRPC.TL_inputMediaAudio media = new TLRPC.TL_inputMediaAudio(); media.id = new TLRPC.TL_inputAudio(); media.id.id = audio.id; media.id.access_hash = audio.access_hash; - reqSend.media = media; + inputMedia = media; + } + } + + TLObject reqSend = null; + + if (sendToPeers != null) { + TLRPC.TL_messages_sendBroadcast request = new TLRPC.TL_messages_sendBroadcast(); + request.contacts = sendToPeers; + request.media = inputMedia; + request.message = ""; + if (delayedMessage != null) { + delayedMessage.sendRequest = request; + } + reqSend = request; + } else { + TLRPC.TL_messages_sendMedia request = new TLRPC.TL_messages_sendMedia(); + request.peer = sendToPeer; + request.random_id = newMsg.random_id; + request.media = inputMedia; + if (delayedMessage != null) { + delayedMessage.sendRequest = request; + } + reqSend = request; + } + if (type == 1) { + performSendMessageRequest(reqSend, newMsgObj, null); + } else if (type == 2) { + if (photo.access_hash == 0) { + performSendDelayedMessage(delayedMessage); + } else { + performSendMessageRequest(reqSend, newMsgObj, null); + } + } else if (type == 3) { + if (video.access_hash == 0) { + performSendDelayedMessage(delayedMessage); + } else { + performSendMessageRequest(reqSend, newMsgObj, null); + } + } else if (type == 6) { + performSendMessageRequest(reqSend, newMsgObj, null); + } else if (type == 7) { + if (document.access_hash == 0) { + performSendDelayedMessage(delayedMessage); + } else { + performSendMessageRequest(reqSend, newMsgObj, null); + } + } else if (type == 8) { + if (audio.access_hash == 0) { + performSendDelayedMessage(delayedMessage); + } else { performSendMessageRequest(reqSend, newMsgObj, null); } } @@ -2360,7 +2456,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter FileLoader.getInstance().replaceImageInCache(fileName, fileName2); ArrayList arr = new ArrayList(); arr.add(newMsg); - MessagesStorage.getInstance().putMessages(arr, false, true); + MessagesStorage.getInstance().putMessages(arr, false, true, false); MessagesStorage.getInstance().putSentFile(originalPath, newMsg.media.photo, 3); } else if (newMsg.media instanceof TLRPC.TL_messageMediaVideo && newMsg.media.video != null) { @@ -2383,7 +2479,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter newMsg.media.video.mime_type = video.mime_type; ArrayList arr = new ArrayList(); arr.add(newMsg); - MessagesStorage.getInstance().putMessages(arr, false, true); + MessagesStorage.getInstance().putMessages(arr, false, true, false); MessagesStorage.getInstance().putSentFile(originalPath, newMsg.media.video, 5); } else if (newMsg.media instanceof TLRPC.TL_messageMediaDocument && newMsg.media.document != null) { @@ -2410,7 +2506,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter ArrayList arr = new ArrayList(); arr.add(newMsg); - MessagesStorage.getInstance().putMessages(arr, false, true); + MessagesStorage.getInstance().putMessages(arr, false, true, false); MessagesStorage.getInstance().putSentFile(originalPath, newMsg.media.document, 4); } else if (newMsg.media instanceof TLRPC.TL_messageMediaAudio && newMsg.media.audio != null) { @@ -2438,7 +2534,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter ArrayList arr = new ArrayList(); arr.add(newMsg); - MessagesStorage.getInstance().putMessages(arr, false, true); + MessagesStorage.getInstance().putMessages(arr, false, true, false); } } } @@ -2539,12 +2635,13 @@ public class MessagesController implements NotificationCenter.NotificationCenter }); } - private void performSendMessageRequest(TLObject req, final MessageObject newMsgObj, final String originalPath) { + private void performSendMessageRequest(final TLObject req, final MessageObject newMsgObj, final String originalPath) { ConnectionsManager.getInstance().performRpc(req, new RPCRequest.RPCRequestDelegate() { @Override public void run(TLObject response, TLRPC.TL_error error) { if (error == null) { final int oldId = newMsgObj.messageOwner.id; + final boolean isBroadcast = req instanceof TLRPC.TL_messages_sendBroadcast; final ArrayList sentMessages = new ArrayList(); if (response instanceof TLRPC.TL_messages_sentMessage) { @@ -2596,9 +2693,11 @@ public class MessagesController implements NotificationCenter.NotificationCenter } else if (response instanceof TLRPC.messages_StatedMessages) { TLRPC.messages_StatedMessages res = (TLRPC.messages_StatedMessages) response; if (!res.messages.isEmpty()) { + sentMessages.addAll(res.messages); TLRPC.Message message = res.messages.get(0); - newMsgObj.messageOwner.id = message.id; - sentMessages.add(message); + if (!isBroadcast) { + newMsgObj.messageOwner.id = message.id; + } processSentMessage(newMsgObj.messageOwner, message, null, null, originalPath); } if (MessagesStorage.lastSeqValue + 1 == res.seq) { @@ -2623,13 +2722,28 @@ public class MessagesController implements NotificationCenter.NotificationCenter MessagesStorage.getInstance().storageQueue.postRunnable(new Runnable() { @Override public void run() { - MessagesStorage.getInstance().updateMessageStateAndId(newMsgObj.messageOwner.random_id, oldId, newMsgObj.messageOwner.id, 0, false); - MessagesStorage.getInstance().putMessages(sentMessages, true, false); + MessagesStorage.getInstance().updateMessageStateAndId(newMsgObj.messageOwner.random_id, oldId, (isBroadcast ? oldId : newMsgObj.messageOwner.id), 0, false); + MessagesStorage.getInstance().putMessages(sentMessages, true, false, isBroadcast); + if (isBroadcast) { + ArrayList currentMessage = new ArrayList(); + currentMessage.add(newMsgObj.messageOwner); + newMsgObj.messageOwner.send_state = MESSAGE_SEND_STATE_SENT; + MessagesStorage.getInstance().putMessages(currentMessage, true, false, false); + } Utilities.RunOnUIThread(new Runnable() { @Override public void run() { newMsgObj.messageOwner.send_state = MESSAGE_SEND_STATE_SENT; - NotificationCenter.getInstance().postNotificationName(messageReceivedByServer, oldId, newMsgObj.messageOwner.id, newMsgObj); + if (isBroadcast) { + for (TLRPC.Message message : sentMessages) { + ArrayList arr = new ArrayList(); + MessageObject messageObject = new MessageObject(message, users, 0); + arr.add(messageObject); + updateInterfaceWithMessages(messageObject.getDialogId(), arr, isBroadcast); + } + NotificationCenter.getInstance().postNotificationName(dialogsNeedReload); + } + NotificationCenter.getInstance().postNotificationName(messageReceivedByServer, oldId, (isBroadcast ? oldId : newMsgObj.messageOwner.id), newMsgObj); sendingMessages.remove(oldId); } }); @@ -2681,7 +2795,13 @@ public class MessagesController implements NotificationCenter.NotificationCenter } } else if (message.type == 1) { if (message.sendRequest != null) { - if (message.sendRequest.media.thumb == null) { + TLRPC.InputMedia media = null; + if (message.sendRequest instanceof TLRPC.TL_messages_sendMedia) { + media = ((TLRPC.TL_messages_sendMedia)message.sendRequest).media; + } else if (message.sendRequest instanceof TLRPC.TL_messages_sendBroadcast) { + media = ((TLRPC.TL_messages_sendBroadcast)message.sendRequest).media; + } + if (media.thumb == null) { String location = AndroidUtilities.getCacheDir() + "/" + message.location.volume_id + "_" + message.location.local_id + ".jpg"; putToDelayedMessages(location, message); FileLoader.getInstance().uploadFile(location, false); @@ -2702,7 +2822,13 @@ public class MessagesController implements NotificationCenter.NotificationCenter FileLoader.getInstance().uploadFile(location, true); } } else if (message.type == 2) { - if (message.sendRequest != null && message.sendRequest.media.thumb == null && message.location != null) { + TLRPC.InputMedia media = null; + if (message.sendRequest instanceof TLRPC.TL_messages_sendMedia) { + media = ((TLRPC.TL_messages_sendMedia)message.sendRequest).media; + } else if (message.sendRequest instanceof TLRPC.TL_messages_sendBroadcast) { + media = ((TLRPC.TL_messages_sendBroadcast)message.sendRequest).media; + } + if (message.sendRequest != null && media.thumb == null && message.location != null) { String location = AndroidUtilities.getCacheDir() + "/" + message.location.volume_id + "_" + message.location.local_id + ".jpg"; putToDelayedMessages(location, message); FileLoader.getInstance().uploadFile(location, false); @@ -2726,78 +2852,133 @@ public class MessagesController implements NotificationCenter.NotificationCenter } } - public long createChat(String title, ArrayList selectedContacts, final TLRPC.InputFile uploadedAvatar) { - TLRPC.TL_messages_createChat req = new TLRPC.TL_messages_createChat(); - req.title = title; - for (Integer uid : selectedContacts) { - TLRPC.User user = users.get(uid); - if (user == null) { - continue; + public long createChat(String title, ArrayList selectedContacts, final TLRPC.InputFile uploadedAvatar, boolean isBroadcast) { + if (isBroadcast) { + TLRPC.TL_chat chat = new TLRPC.TL_chat(); + chat.id = UserConfig.lastBroadcastId; + chat.title = title; + chat.photo = new TLRPC.TL_chatPhotoEmpty(); + chat.participants_count = selectedContacts.size(); + chat.date = (int)(System.currentTimeMillis() / 1000); + chat.left = false; + chat.version = 1; + UserConfig.lastBroadcastId--; + chats.put(chat.id, chat); + ArrayList chatsArrays = new ArrayList(); + chatsArrays.add(chat); + MessagesStorage.getInstance().putUsersAndChats(null, chatsArrays, true, true); + + TLRPC.TL_chatParticipants participants = new TLRPC.TL_chatParticipants(); + participants.chat_id = chat.id; + participants.admin_id = UserConfig.getClientUserId(); + participants.version = 1; + for (Integer id : selectedContacts) { + TLRPC.TL_chatParticipant participant = new TLRPC.TL_chatParticipant(); + participant.user_id = id; + participant.inviter_id = UserConfig.getClientUserId(); + participant.date = (int)(System.currentTimeMillis() / 1000); + participants.participants.add(participant); } - req.users.add(getInputUser(user)); - } - return ConnectionsManager.getInstance().performRpc(req, new RPCRequest.RPCRequestDelegate() { - @Override - public void run(TLObject response, TLRPC.TL_error error) { - if (error != null) { + MessagesStorage.getInstance().updateChatInfo(chat.id, participants, false); + + TLRPC.TL_messageService newMsg = new TLRPC.TL_messageService(); + newMsg.action = new TLRPC.TL_messageActionCreatedBroadcastList(); + newMsg.local_id = newMsg.id = UserConfig.getNewMessageId(); + newMsg.from_id = UserConfig.getClientUserId(); + newMsg.unread = false; + newMsg.dialog_id = ((long)chat.id) << 32; + newMsg.to_id = new TLRPC.TL_peerChat(); + newMsg.to_id.chat_id = chat.id; + newMsg.out = false; + newMsg.date = ConnectionsManager.getInstance().getCurrentTime(); + newMsg.random_id = 0; + UserConfig.saveConfig(false); + MessageObject newMsgObj = new MessageObject(newMsg, users); + newMsgObj.messageOwner.send_state = MESSAGE_SEND_STATE_SENT; + + ArrayList objArr = new ArrayList(); + objArr.add(newMsgObj); + ArrayList arr = new ArrayList(); + arr.add(newMsg); + MessagesStorage.getInstance().putMessages(arr, false, true, false); + updateInterfaceWithMessages(newMsg.dialog_id, objArr); + NotificationCenter.getInstance().postNotificationName(chatDidCreated, chat.id); + NotificationCenter.getInstance().postNotificationName(dialogsNeedReload); + + return 0; + } else { + TLRPC.TL_messages_createChat req = new TLRPC.TL_messages_createChat(); + req.title = title; + for (Integer uid : selectedContacts) { + TLRPC.User user = users.get(uid); + if (user == null) { + continue; + } + req.users.add(getInputUser(user)); + } + return ConnectionsManager.getInstance().performRpc(req, new RPCRequest.RPCRequestDelegate() { + @Override + public void run(TLObject response, TLRPC.TL_error error) { + if (error != null) { + Utilities.RunOnUIThread(new Runnable() { + @Override + public void run() { + NotificationCenter.getInstance().postNotificationName(chatDidFailCreate); + } + }); + return; + } + final TLRPC.messages_StatedMessage res = (TLRPC.messages_StatedMessage) response; + MessagesStorage.getInstance().putUsersAndChats(res.users, res.chats, true, true); + Utilities.RunOnUIThread(new Runnable() { @Override public void run() { - NotificationCenter.getInstance().postNotificationName(chatDidFailCreate); - } - }); - return; - } - final TLRPC.messages_StatedMessage res = (TLRPC.messages_StatedMessage) response; - MessagesStorage.getInstance().putUsersAndChats(res.users, res.chats, true, true); - - Utilities.RunOnUIThread(new Runnable() { - @Override - public void run() { - for (TLRPC.User user : res.users) { - users.put(user.id, user); - if (user.id == UserConfig.getClientUserId()) { - UserConfig.setCurrentUser(user); + for (TLRPC.User user : res.users) { + users.put(user.id, user); + if (user.id == UserConfig.getClientUserId()) { + UserConfig.setCurrentUser(user); + } + } + for (TLRPC.Chat chat : res.chats) { + chats.put(chat.id, chat); + } + final ArrayList messagesObj = new ArrayList(); + messagesObj.add(new MessageObject(res.message, users)); + TLRPC.Chat chat = res.chats.get(0); + updateInterfaceWithMessages(-chat.id, messagesObj); + NotificationCenter.getInstance().postNotificationName(chatDidCreated, chat.id); + NotificationCenter.getInstance().postNotificationName(dialogsNeedReload); + if (uploadedAvatar != null) { + changeChatAvatar(chat.id, uploadedAvatar); } } - for (TLRPC.Chat chat : res.chats) { - chats.put(chat.id, chat); - } - final ArrayList messagesObj = new ArrayList(); - messagesObj.add(new MessageObject(res.message, users)); - TLRPC.Chat chat = res.chats.get(0); - updateInterfaceWithMessages(-chat.id, messagesObj); - NotificationCenter.getInstance().postNotificationName(chatDidCreated, chat.id); - NotificationCenter.getInstance().postNotificationName(dialogsNeedReload); - if (uploadedAvatar != null) { - changeChatAvatar(chat.id, uploadedAvatar); - } - } - }); + }); - final ArrayList messages = new ArrayList(); - messages.add(res.message); - MessagesStorage.getInstance().putMessages(messages, true, true); - if (MessagesStorage.lastSeqValue + 1 == res.seq) { - MessagesStorage.lastSeqValue = res.seq; - MessagesStorage.lastPtsValue = res.pts; - MessagesStorage.getInstance().saveDiffParams(MessagesStorage.lastSeqValue, MessagesStorage.lastPtsValue, MessagesStorage.lastDateValue, MessagesStorage.lastQtsValue); - } else if (MessagesStorage.lastSeqValue != res.seq) { - FileLog.e("tmessages", "need get diff TL_messages_createChat, seq: " + MessagesStorage.lastSeqValue + " " + res.seq); - if (gettingDifference || updatesStartWaitTime == 0 || updatesStartWaitTime != 0 && updatesStartWaitTime + 1500 > System.currentTimeMillis()) { - if (updatesStartWaitTime == 0) { - updatesStartWaitTime = System.currentTimeMillis(); + final ArrayList messages = new ArrayList(); + messages.add(res.message); + MessagesStorage.getInstance().putMessages(messages, true, true, false); + if (MessagesStorage.lastSeqValue + 1 == res.seq) { + MessagesStorage.lastSeqValue = res.seq; + MessagesStorage.lastPtsValue = res.pts; + MessagesStorage.getInstance().saveDiffParams(MessagesStorage.lastSeqValue, MessagesStorage.lastPtsValue, MessagesStorage.lastDateValue, MessagesStorage.lastQtsValue); + } else if (MessagesStorage.lastSeqValue != res.seq) { + FileLog.e("tmessages", "need get diff TL_messages_createChat, seq: " + MessagesStorage.lastSeqValue + " " + res.seq); + if (gettingDifference || updatesStartWaitTime == 0 || updatesStartWaitTime != 0 && updatesStartWaitTime + 1500 > System.currentTimeMillis()) { + if (updatesStartWaitTime == 0) { + updatesStartWaitTime = System.currentTimeMillis(); + } + FileLog.e("tmessages", "add TL_messages_createChat to queue"); + UserActionUpdates updates = new UserActionUpdates(); + updates.seq = res.seq; + updatesQueue.add(updates); + } else { + getDifference(); } - FileLog.e("tmessages", "add TL_messages_createChat to queue"); - UserActionUpdates updates = new UserActionUpdates(); - updates.seq = res.seq; - updatesQueue.add(updates); - } else { - getDifference(); } } - } - }); + }); + } } public void addUserToChat(int chat_id, final TLRPC.User user, final TLRPC.ChatParticipants info, int count_fwd) { @@ -2805,112 +2986,34 @@ public class MessagesController implements NotificationCenter.NotificationCenter return; } - TLRPC.TL_messages_addChatUser req = new TLRPC.TL_messages_addChatUser(); - req.chat_id = chat_id; - req.fwd_limit = count_fwd; - req.user_id = getInputUser(user); + if (chat_id > 0) { + TLRPC.TL_messages_addChatUser req = new TLRPC.TL_messages_addChatUser(); + req.chat_id = chat_id; + req.fwd_limit = count_fwd; + req.user_id = getInputUser(user); - ConnectionsManager.getInstance().performRpc(req, new RPCRequest.RPCRequestDelegate() { - @Override - public void run(TLObject response, TLRPC.TL_error error) { - if (error != null) { - return; - } + ConnectionsManager.getInstance().performRpc(req, new RPCRequest.RPCRequestDelegate() { + @Override + public void run(TLObject response, TLRPC.TL_error error) { + if (error != null) { + return; + } - final TLRPC.messages_StatedMessage res = (TLRPC.messages_StatedMessage) response; - MessagesStorage.getInstance().putUsersAndChats(res.users, res.chats, true, true); + final TLRPC.messages_StatedMessage res = (TLRPC.messages_StatedMessage) response; + MessagesStorage.getInstance().putUsersAndChats(res.users, res.chats, true, true); - Utilities.RunOnUIThread(new Runnable() { - @Override - public void run() { - for (TLRPC.User user : res.users) { - users.put(user.id, user); - if (user.id == UserConfig.getClientUserId()) { - UserConfig.setCurrentUser(user); - } - } - for (TLRPC.Chat chat : res.chats) { - chats.put(chat.id, chat); - } - final ArrayList messagesObj = new ArrayList(); - messagesObj.add(new MessageObject(res.message, users)); - TLRPC.Chat chat = res.chats.get(0); - chats.put(chat.id, chat); - updateInterfaceWithMessages(-chat.id, messagesObj); - NotificationCenter.getInstance().postNotificationName(updateInterfaces, UPDATE_MASK_CHAT_MEMBERS); - NotificationCenter.getInstance().postNotificationName(dialogsNeedReload); - - if (info != null) { - for (TLRPC.TL_chatParticipant p : info.participants) { - if (p.user_id == user.id) { - return; + Utilities.RunOnUIThread(new Runnable() { + @Override + public void run() { + for (TLRPC.User user : res.users) { + users.put(user.id, user); + if (user.id == UserConfig.getClientUserId()) { + UserConfig.setCurrentUser(user); } } - TLRPC.TL_chatParticipant newPart = new TLRPC.TL_chatParticipant(); - newPart.user_id = user.id; - newPart.inviter_id = UserConfig.getClientUserId(); - newPart.date = ConnectionsManager.getInstance().getCurrentTime(); - info.participants.add(0, newPart); - MessagesStorage.getInstance().updateChatInfo(info.chat_id, info, true); - NotificationCenter.getInstance().postNotificationName(chatInfoDidLoaded, info.chat_id, info); - } - } - }); - - final ArrayList messages = new ArrayList(); - messages.add(res.message); - MessagesStorage.getInstance().putMessages(messages, true, true); - if (MessagesStorage.lastSeqValue + 1 == res.seq) { - MessagesStorage.lastSeqValue = res.seq; - MessagesStorage.lastPtsValue = res.pts; - MessagesStorage.getInstance().saveDiffParams(MessagesStorage.lastSeqValue, MessagesStorage.lastPtsValue, MessagesStorage.lastDateValue, MessagesStorage.lastQtsValue); - } else if (MessagesStorage.lastSeqValue != res.seq) { - FileLog.e("tmessages", "need get diff TL_messages_addChatUser, seq: " + MessagesStorage.lastSeqValue + " " + res.seq); - if (gettingDifference || updatesStartWaitTime == 0 || updatesStartWaitTime != 0 && updatesStartWaitTime + 1500 > System.currentTimeMillis()) { - if (updatesStartWaitTime == 0) { - updatesStartWaitTime = System.currentTimeMillis(); - } - FileLog.e("tmessages", "add TL_messages_addChatUser to queue"); - UserActionUpdates updates = new UserActionUpdates(); - updates.seq = res.seq; - updatesQueue.add(updates); - } else { - getDifference(); - } - } - } - }); - } - - public void deleteUserFromChat(int chat_id, final TLRPC.User user, final TLRPC.ChatParticipants info) { - if (user == null) { - return; - } - TLRPC.TL_messages_deleteChatUser req = new TLRPC.TL_messages_deleteChatUser(); - req.chat_id = chat_id; - req.user_id = getInputUser(user); - ConnectionsManager.getInstance().performRpc(req, new RPCRequest.RPCRequestDelegate() { - @Override - public void run(TLObject response, TLRPC.TL_error error) { - if (error != null) { - return; - } - final TLRPC.messages_StatedMessage res = (TLRPC.messages_StatedMessage) response; - MessagesStorage.getInstance().putUsersAndChats(res.users, res.chats, true, true); - - Utilities.RunOnUIThread(new Runnable() { - @Override - public void run() { - for (TLRPC.User user : res.users) { - users.put(user.id, user); - if (user.id == UserConfig.getClientUserId()) { - UserConfig.setCurrentUser(user); + for (TLRPC.Chat chat : res.chats) { + chats.put(chat.id, chat); } - } - for (TLRPC.Chat chat : res.chats) { - chats.put(chat.id, chat); - } - if (user.id != UserConfig.getClientUserId()) { final ArrayList messagesObj = new ArrayList(); messagesObj.add(new MessageObject(res.message, users)); TLRPC.Chat chat = res.chats.get(0); @@ -2918,110 +3021,250 @@ public class MessagesController implements NotificationCenter.NotificationCenter updateInterfaceWithMessages(-chat.id, messagesObj); NotificationCenter.getInstance().postNotificationName(updateInterfaces, UPDATE_MASK_CHAT_MEMBERS); NotificationCenter.getInstance().postNotificationName(dialogsNeedReload); - } - boolean changed = false; - if (info != null) { - for (int a = 0; a < info.participants.size(); a++) { - TLRPC.TL_chatParticipant p = info.participants.get(a); - if (p.user_id == user.id) { - info.participants.remove(a); - changed = true; - break; + + if (info != null) { + for (TLRPC.TL_chatParticipant p : info.participants) { + if (p.user_id == user.id) { + return; + } } - } - if (changed) { + TLRPC.TL_chatParticipant newPart = new TLRPC.TL_chatParticipant(); + newPart.user_id = user.id; + newPart.inviter_id = UserConfig.getClientUserId(); + newPart.date = ConnectionsManager.getInstance().getCurrentTime(); + info.participants.add(0, newPart); MessagesStorage.getInstance().updateChatInfo(info.chat_id, info, true); NotificationCenter.getInstance().postNotificationName(chatInfoDidLoaded, info.chat_id, info); } } - } - }); + }); - if (user.id != UserConfig.getClientUserId()) { final ArrayList messages = new ArrayList(); messages.add(res.message); - MessagesStorage.getInstance().putMessages(messages, true, true); - } - if (MessagesStorage.lastSeqValue + 1 == res.seq) { - MessagesStorage.lastSeqValue = res.seq; - MessagesStorage.lastPtsValue = res.pts; - MessagesStorage.getInstance().saveDiffParams(MessagesStorage.lastSeqValue, MessagesStorage.lastPtsValue, MessagesStorage.lastDateValue, MessagesStorage.lastQtsValue); - } else if (MessagesStorage.lastSeqValue != res.seq) { - FileLog.e("tmessages", "need get diff TL_messages_deleteChatUser, seq: " + MessagesStorage.lastSeqValue + " " + res.seq); - if (gettingDifference || updatesStartWaitTime == 0 || updatesStartWaitTime != 0 && updatesStartWaitTime + 1500 > System.currentTimeMillis()) { - if (updatesStartWaitTime == 0) { - updatesStartWaitTime = System.currentTimeMillis(); + MessagesStorage.getInstance().putMessages(messages, true, true, false); + if (MessagesStorage.lastSeqValue + 1 == res.seq) { + MessagesStorage.lastSeqValue = res.seq; + MessagesStorage.lastPtsValue = res.pts; + MessagesStorage.getInstance().saveDiffParams(MessagesStorage.lastSeqValue, MessagesStorage.lastPtsValue, MessagesStorage.lastDateValue, MessagesStorage.lastQtsValue); + } else if (MessagesStorage.lastSeqValue != res.seq) { + FileLog.e("tmessages", "need get diff TL_messages_addChatUser, seq: " + MessagesStorage.lastSeqValue + " " + res.seq); + if (gettingDifference || updatesStartWaitTime == 0 || updatesStartWaitTime != 0 && updatesStartWaitTime + 1500 > System.currentTimeMillis()) { + if (updatesStartWaitTime == 0) { + updatesStartWaitTime = System.currentTimeMillis(); + } + FileLog.e("tmessages", "add TL_messages_addChatUser to queue"); + UserActionUpdates updates = new UserActionUpdates(); + updates.seq = res.seq; + updatesQueue.add(updates); + } else { + getDifference(); } - FileLog.e("tmessages", "add TL_messages_deleteChatUser to queue"); - UserActionUpdates updates = new UserActionUpdates(); - updates.seq = res.seq; - updatesQueue.add(updates); - } else { - getDifference(); } } + }); + } else { + if (info != null) { + for (TLRPC.TL_chatParticipant p : info.participants) { + if (p.user_id == user.id) { + return; + } + } + + TLRPC.Chat chat = chats.get(chat_id); + chat.participants_count++; + ArrayList chatArrayList = new ArrayList(); + chatArrayList.add(chat); + MessagesStorage.getInstance().putUsersAndChats(null, chatArrayList, true, true); + + TLRPC.TL_chatParticipant newPart = new TLRPC.TL_chatParticipant(); + newPart.user_id = user.id; + newPart.inviter_id = UserConfig.getClientUserId(); + newPart.date = ConnectionsManager.getInstance().getCurrentTime(); + info.participants.add(0, newPart); + MessagesStorage.getInstance().updateChatInfo(info.chat_id, info, true); + NotificationCenter.getInstance().postNotificationName(chatInfoDidLoaded, info.chat_id, info); + NotificationCenter.getInstance().postNotificationName(updateInterfaces, UPDATE_MASK_CHAT_MEMBERS); } - }); + } + } + + public void deleteUserFromChat(int chat_id, final TLRPC.User user, final TLRPC.ChatParticipants info) { + if (user == null) { + return; + } + if (chat_id > 0) { + TLRPC.TL_messages_deleteChatUser req = new TLRPC.TL_messages_deleteChatUser(); + req.chat_id = chat_id; + req.user_id = getInputUser(user); + ConnectionsManager.getInstance().performRpc(req, new RPCRequest.RPCRequestDelegate() { + @Override + public void run(TLObject response, TLRPC.TL_error error) { + if (error != null) { + return; + } + final TLRPC.messages_StatedMessage res = (TLRPC.messages_StatedMessage) response; + MessagesStorage.getInstance().putUsersAndChats(res.users, res.chats, true, true); + + Utilities.RunOnUIThread(new Runnable() { + @Override + public void run() { + for (TLRPC.User user : res.users) { + users.put(user.id, user); + if (user.id == UserConfig.getClientUserId()) { + UserConfig.setCurrentUser(user); + } + } + for (TLRPC.Chat chat : res.chats) { + chats.put(chat.id, chat); + } + if (user.id != UserConfig.getClientUserId()) { + final ArrayList messagesObj = new ArrayList(); + messagesObj.add(new MessageObject(res.message, users)); + TLRPC.Chat chat = res.chats.get(0); + chats.put(chat.id, chat); + updateInterfaceWithMessages(-chat.id, messagesObj); + NotificationCenter.getInstance().postNotificationName(updateInterfaces, UPDATE_MASK_CHAT_MEMBERS); + NotificationCenter.getInstance().postNotificationName(dialogsNeedReload); + } + boolean changed = false; + if (info != null) { + for (int a = 0; a < info.participants.size(); a++) { + TLRPC.TL_chatParticipant p = info.participants.get(a); + if (p.user_id == user.id) { + info.participants.remove(a); + changed = true; + break; + } + } + if (changed) { + MessagesStorage.getInstance().updateChatInfo(info.chat_id, info, true); + NotificationCenter.getInstance().postNotificationName(chatInfoDidLoaded, info.chat_id, info); + } + } + } + }); + + if (user.id != UserConfig.getClientUserId()) { + final ArrayList messages = new ArrayList(); + messages.add(res.message); + MessagesStorage.getInstance().putMessages(messages, true, true, false); + } + if (MessagesStorage.lastSeqValue + 1 == res.seq) { + MessagesStorage.lastSeqValue = res.seq; + MessagesStorage.lastPtsValue = res.pts; + MessagesStorage.getInstance().saveDiffParams(MessagesStorage.lastSeqValue, MessagesStorage.lastPtsValue, MessagesStorage.lastDateValue, MessagesStorage.lastQtsValue); + } else if (MessagesStorage.lastSeqValue != res.seq) { + FileLog.e("tmessages", "need get diff TL_messages_deleteChatUser, seq: " + MessagesStorage.lastSeqValue + " " + res.seq); + if (gettingDifference || updatesStartWaitTime == 0 || updatesStartWaitTime != 0 && updatesStartWaitTime + 1500 > System.currentTimeMillis()) { + if (updatesStartWaitTime == 0) { + updatesStartWaitTime = System.currentTimeMillis(); + } + FileLog.e("tmessages", "add TL_messages_deleteChatUser to queue"); + UserActionUpdates updates = new UserActionUpdates(); + updates.seq = res.seq; + updatesQueue.add(updates); + } else { + getDifference(); + } + } + } + }); + } else { + if (info != null) { + TLRPC.Chat chat = chats.get(chat_id); + chat.participants_count--; + ArrayList chatArrayList = new ArrayList(); + chatArrayList.add(chat); + MessagesStorage.getInstance().putUsersAndChats(null, chatArrayList, true, true); + + boolean changed = false; + if (info != null) { + for (int a = 0; a < info.participants.size(); a++) { + TLRPC.TL_chatParticipant p = info.participants.get(a); + if (p.user_id == user.id) { + info.participants.remove(a); + changed = true; + break; + } + } + if (changed) { + MessagesStorage.getInstance().updateChatInfo(info.chat_id, info, true); + NotificationCenter.getInstance().postNotificationName(chatInfoDidLoaded, info.chat_id, info); + } + } + NotificationCenter.getInstance().postNotificationName(updateInterfaces, UPDATE_MASK_CHAT_MEMBERS); + } + } } public void changeChatTitle(int chat_id, String title) { - TLRPC.TL_messages_editChatTitle req = new TLRPC.TL_messages_editChatTitle(); - req.chat_id = chat_id; - req.title = title; - ConnectionsManager.getInstance().performRpc(req, new RPCRequest.RPCRequestDelegate() { - @Override - public void run(TLObject response, TLRPC.TL_error error) { - if (error != null) { - return; - } - final TLRPC.messages_StatedMessage res = (TLRPC.messages_StatedMessage) response; - MessagesStorage.getInstance().putUsersAndChats(res.users, res.chats, true, true); + if (chat_id > 0) { + TLRPC.TL_messages_editChatTitle req = new TLRPC.TL_messages_editChatTitle(); + req.chat_id = chat_id; + req.title = title; + ConnectionsManager.getInstance().performRpc(req, new RPCRequest.RPCRequestDelegate() { + @Override + public void run(TLObject response, TLRPC.TL_error error) { + if (error != null) { + return; + } + final TLRPC.messages_StatedMessage res = (TLRPC.messages_StatedMessage) response; + MessagesStorage.getInstance().putUsersAndChats(res.users, res.chats, true, true); - Utilities.RunOnUIThread(new Runnable() { - @Override - public void run() { - for (TLRPC.User user : res.users) { - users.put(user.id, user); - if (user.id == UserConfig.getClientUserId()) { - UserConfig.setCurrentUser(user); + Utilities.RunOnUIThread(new Runnable() { + @Override + public void run() { + for (TLRPC.User user : res.users) { + users.put(user.id, user); + if (user.id == UserConfig.getClientUserId()) { + UserConfig.setCurrentUser(user); + } } - } - for (TLRPC.Chat chat : res.chats) { + for (TLRPC.Chat chat : res.chats) { + chats.put(chat.id, chat); + } + final ArrayList messagesObj = new ArrayList(); + messagesObj.add(new MessageObject(res.message, users)); + TLRPC.Chat chat = res.chats.get(0); chats.put(chat.id, chat); + updateInterfaceWithMessages(-chat.id, messagesObj); + NotificationCenter.getInstance().postNotificationName(dialogsNeedReload); + NotificationCenter.getInstance().postNotificationName(updateInterfaces, UPDATE_MASK_CHAT_NAME); } - final ArrayList messagesObj = new ArrayList(); - messagesObj.add(new MessageObject(res.message, users)); - TLRPC.Chat chat = res.chats.get(0); - chats.put(chat.id, chat); - updateInterfaceWithMessages(-chat.id, messagesObj); - NotificationCenter.getInstance().postNotificationName(dialogsNeedReload); - NotificationCenter.getInstance().postNotificationName(updateInterfaces, UPDATE_MASK_CHAT_NAME); - } - }); + }); - final ArrayList messages = new ArrayList(); - messages.add(res.message); - MessagesStorage.getInstance().putMessages(messages, true, true); - if (MessagesStorage.lastSeqValue + 1 == res.seq) { - MessagesStorage.lastSeqValue = res.seq; - MessagesStorage.lastPtsValue = res.pts; - MessagesStorage.getInstance().saveDiffParams(MessagesStorage.lastSeqValue, MessagesStorage.lastPtsValue, MessagesStorage.lastDateValue, MessagesStorage.lastQtsValue); - } else if (MessagesStorage.lastSeqValue != res.seq) { - FileLog.e("tmessages", "need get diff TL_messages_editChatTitle, seq: " + MessagesStorage.lastSeqValue + " " + res.seq); - if (gettingDifference || updatesStartWaitTime == 0 || updatesStartWaitTime != 0 && updatesStartWaitTime + 1500 > System.currentTimeMillis()) { - if (updatesStartWaitTime == 0) { - updatesStartWaitTime = System.currentTimeMillis(); + final ArrayList messages = new ArrayList(); + messages.add(res.message); + MessagesStorage.getInstance().putMessages(messages, true, true, false); + if (MessagesStorage.lastSeqValue + 1 == res.seq) { + MessagesStorage.lastSeqValue = res.seq; + MessagesStorage.lastPtsValue = res.pts; + MessagesStorage.getInstance().saveDiffParams(MessagesStorage.lastSeqValue, MessagesStorage.lastPtsValue, MessagesStorage.lastDateValue, MessagesStorage.lastQtsValue); + } else if (MessagesStorage.lastSeqValue != res.seq) { + FileLog.e("tmessages", "need get diff TL_messages_editChatTitle, seq: " + MessagesStorage.lastSeqValue + " " + res.seq); + if (gettingDifference || updatesStartWaitTime == 0 || updatesStartWaitTime != 0 && updatesStartWaitTime + 1500 > System.currentTimeMillis()) { + if (updatesStartWaitTime == 0) { + updatesStartWaitTime = System.currentTimeMillis(); + } + FileLog.e("tmessages", "add TL_messages_editChatTitle to queue"); + UserActionUpdates updates = new UserActionUpdates(); + updates.seq = res.seq; + updatesQueue.add(updates); + } else { + getDifference(); } - FileLog.e("tmessages", "add TL_messages_editChatTitle to queue"); - UserActionUpdates updates = new UserActionUpdates(); - updates.seq = res.seq; - updatesQueue.add(updates); - } else { - getDifference(); } } - } - }); + }); + } else { + TLRPC.Chat chat = chats.get(chat_id); + chat.title = title; + ArrayList chatArrayList = new ArrayList(); + chatArrayList.add(chat); + MessagesStorage.getInstance().putUsersAndChats(null, chatArrayList, true, true); + NotificationCenter.getInstance().postNotificationName(dialogsNeedReload); + NotificationCenter.getInstance().postNotificationName(updateInterfaces, UPDATE_MASK_CHAT_NAME); + } } public void changeChatAvatar(int chat_id, TLRPC.InputFile uploadedAvatar) { @@ -3067,7 +3310,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter final ArrayList messages = new ArrayList(); messages.add(res.message); - MessagesStorage.getInstance().putMessages(messages, true, true); + MessagesStorage.getInstance().putMessages(messages, true, true, false); if (MessagesStorage.lastSeqValue + 1 == res.seq) { MessagesStorage.lastSeqValue = res.seq; MessagesStorage.lastPtsValue = res.pts; @@ -3400,7 +3643,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter final ArrayList pushMessages = new ArrayList(); for (TLRPC.Message message : res.new_messages) { - MessageObject obj = new MessageObject(message, usersDict); + MessageObject obj = new MessageObject(message, usersDict, 2); long dialog_id = obj.messageOwner.dialog_id; if (dialog_id == 0) { @@ -3456,7 +3699,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter @Override public void run() { MessagesStorage.getInstance().startTransaction(false); - MessagesStorage.getInstance().putMessages(res.new_messages, false, false); + MessagesStorage.getInstance().putMessages(res.new_messages, false, false, false); MessagesStorage.getInstance().putUsersAndChats(res.users, res.chats, false, false); MessagesStorage.getInstance().commitTransaction(false); } @@ -3556,7 +3799,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter NotificationCenter.getInstance().postNotificationName(dialogsNeedReload); } }); - MessagesStorage.getInstance().putMessages(arr, false, true); + MessagesStorage.getInstance().putMessages(arr, false, true, false); } else if (MessagesStorage.lastSeqValue != updates.seq) { FileLog.e("tmessages", "need get diff TL_updateShortChatMessage, seq: " + MessagesStorage.lastSeqValue + " " + updates.seq); if (gettingDifference || updatesStartWaitTime == 0 || updatesStartWaitTime != 0 && updatesStartWaitTime + 1500 > System.currentTimeMillis()) { @@ -3611,7 +3854,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter NotificationCenter.getInstance().postNotificationName(dialogsNeedReload); } }); - MessagesStorage.getInstance().putMessages(arr, false, true); + MessagesStorage.getInstance().putMessages(arr, false, true, false); } else if (MessagesStorage.lastSeqValue != updates.seq) { FileLog.e("tmessages", "need get diff TL_updateShortMessage, seq: " + MessagesStorage.lastSeqValue + " " + updates.seq); if (gettingDifference || updatesStartWaitTime == 0 || updatesStartWaitTime != 0 && updatesStartWaitTime + 1500 > System.currentTimeMillis()) { @@ -3784,7 +4027,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter } } messagesArr.add(upd.message); - MessageObject obj = new MessageObject(upd.message, usersDict); + MessageObject obj = new MessageObject(upd.message, usersDict, 2); if (obj.type == 11) { interfaceUpdateMask |= UPDATE_MASK_CHAT_AVATAR; } else if (obj.type == 10) { @@ -3933,7 +4176,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter if (message != null) { int cid = ((TLRPC.TL_updateNewEncryptedMessage)update).message.chat_id; messagesArr.add(message); - MessageObject obj = new MessageObject(message, usersDict); + MessageObject obj = new MessageObject(message, usersDict, 2); long uid = ((long)cid) << 32; ArrayList arr = messages.get(uid); if (arr == null) { @@ -4082,7 +4325,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter } if (!messagesArr.isEmpty()) { - MessagesStorage.getInstance().putMessages(messagesArr, true, true); + MessagesStorage.getInstance().putMessages(messagesArr, true, true, false); } Utilities.RunOnUIThread(new Runnable() { @@ -4136,7 +4379,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter } else { editor.remove("notify2_" + dialog_id); } - } else if (update.peer instanceof TLRPC.TL_notifyChats) { + }/* else if (update.peer instanceof TLRPC.TL_notifyChats) { disable global settings sync if (editor == null) { SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE); editor = preferences.edit(); @@ -4150,7 +4393,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter } editor.putBoolean("EnableAll", update.notify_settings.mute_until == 0); editor.putBoolean("EnablePreviewAll", update.notify_settings.show_previews); - } + }*/ } } if (editor != null) { @@ -4317,6 +4560,10 @@ public class MessagesController implements NotificationCenter.NotificationCenter } private void updateInterfaceWithMessages(long uid, ArrayList messages) { + updateInterfaceWithMessages(uid, messages, false); + } + + private void updateInterfaceWithMessages(long uid, ArrayList messages, boolean isBroadcast) { MessageObject lastMessage = null; TLRPC.TL_dialog dialog = dialogs_dict.get(uid); @@ -4333,24 +4580,28 @@ public class MessagesController implements NotificationCenter.NotificationCenter boolean changed = false; if (dialog == null) { - dialog = new TLRPC.TL_dialog(); - dialog.id = uid; - dialog.unread_count = 0; - dialog.top_message = lastMessage.messageOwner.id; - dialog.last_message_date = lastMessage.messageOwner.date; - dialogs_dict.put(uid, dialog); - dialogs.add(dialog); - dialogMessage.put(lastMessage.messageOwner.id, lastMessage); - changed = true; + if (!isBroadcast) { + dialog = new TLRPC.TL_dialog(); + dialog.id = uid; + dialog.unread_count = 0; + dialog.top_message = lastMessage.messageOwner.id; + dialog.last_message_date = lastMessage.messageOwner.date; + dialogs_dict.put(uid, dialog); + dialogs.add(dialog); + dialogMessage.put(lastMessage.messageOwner.id, lastMessage); + changed = true; + } } else { if (dialog.top_message > 0 && lastMessage.messageOwner.id > 0 && lastMessage.messageOwner.id > dialog.top_message || dialog.top_message < 0 && lastMessage.messageOwner.id < 0 && lastMessage.messageOwner.id < dialog.top_message || dialog.last_message_date < lastMessage.messageOwner.date) { dialogMessage.remove(dialog.top_message); dialog.top_message = lastMessage.messageOwner.id; - dialog.last_message_date = lastMessage.messageOwner.date; + if (!isBroadcast) { + dialog.last_message_date = lastMessage.messageOwner.date; + changed = true; + } dialogMessage.put(lastMessage.messageOwner.id, lastMessage); - changed = true; } } @@ -4597,8 +4848,13 @@ public class MessagesController implements NotificationCenter.NotificationCenter public void run() { TLRPC.TL_dialog dialog = dialogs_dict.get(did); if (dialog != null) { + dialog.unread_count = 0; dialogMessage.remove(dialog.top_message); } + NotificationsController.getInstance().processReadMessages(null, did, 0, Integer.MAX_VALUE); + HashMap dialogsToUpdate = new HashMap(); + dialogsToUpdate.put(did, 0); + NotificationsController.getInstance().processDialogsUpdateRead(dialogsToUpdate, true); MessagesStorage.getInstance().deleteDialog(did, true); NotificationCenter.getInstance().postNotificationName(removeAllMessagesFromDialog, did); NotificationCenter.getInstance().postNotificationName(dialogsNeedReload); diff --git a/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java b/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java index b63b59e1e..58c25e751 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java +++ b/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java @@ -367,6 +367,7 @@ public class MessagesStorage { database.executeFast("DELETE FROM dialogs WHERE did = " + did).stepThis().dispose(); database.executeFast("DELETE FROM chat_settings WHERE uid = " + did).stepThis().dispose(); } + database.executeFast("UPDATE dialogs SET unread_count = 0 WHERE did = " + did).stepThis().dispose(); database.executeFast("DELETE FROM media_counts WHERE uid = " + did).stepThis().dispose(); database.executeFast("DELETE FROM messages WHERE uid = " + did).stepThis().dispose(); database.executeFast("DELETE FROM media WHERE uid = " + did).stepThis().dispose(); @@ -1808,7 +1809,7 @@ public class MessagesStorage { } } - private void putMessagesInternal(final ArrayList messages, final boolean withTransaction) { + private void putMessagesInternal(final ArrayList messages, final boolean withTransaction, final boolean isBroadcast) { try { if (withTransaction) { database.beginTransaction(); @@ -1949,10 +1950,21 @@ public class MessagesStorage { state.dispose(); state2.dispose(); state3.dispose(); - state = database.executeFast("REPLACE INTO dialogs VALUES(?, ?, ifnull((SELECT unread_count FROM dialogs WHERE did = ?), 0) + ?, ?)"); + + state = database.executeFast("REPLACE INTO dialogs VALUES(?, ?, ?, ?)"); for (HashMap.Entry pair : messagesMap.entrySet()) { - state.requery(); Long key = pair.getKey(); + + int dialog_date = 0; + int old_unread_count = 0; + SQLiteCursor cursor = database.queryFinalized("SELECT date, unread_count FROM dialogs WHERE did = " + key); + if (cursor.next()) { + dialog_date = cursor.intValue(0); + old_unread_count = cursor.intValue(1); + } + cursor.dispose(); + + state.requery(); TLRPC.Message value = pair.getValue(); Integer unread_count = messagesCounts.get(key); if (unread_count == null) { @@ -1963,10 +1975,13 @@ public class MessagesStorage { messageId = value.local_id; } state.bindLong(1, key); - state.bindInteger(2, value.date); - state.bindLong(3, key); - state.bindInteger(4, unread_count); - state.bindInteger(5, messageId); + if (!isBroadcast) { + state.bindInteger(2, value.date); + } else { + state.bindInteger(2, dialog_date != 0 ? dialog_date : value.date); + } + state.bindInteger(3, unread_count); + state.bindInteger(4, messageId); state.step(); } state.dispose(); @@ -2002,7 +2017,7 @@ public class MessagesStorage { } } - public void putMessages(final ArrayList messages, final boolean withTransaction, boolean useQueue) { + public void putMessages(final ArrayList messages, final boolean withTransaction, boolean useQueue, final boolean isBroadcast) { if (messages.size() == 0) { return; } @@ -2010,11 +2025,11 @@ public class MessagesStorage { storageQueue.postRunnable(new Runnable() { @Override public void run() { - putMessagesInternal(messages, withTransaction); + putMessagesInternal(messages, withTransaction, isBroadcast); } }); } else { - putMessagesInternal(messages, withTransaction); + putMessagesInternal(messages, withTransaction, isBroadcast); } } @@ -2425,9 +2440,15 @@ public class MessagesStorage { } } } else { - int encryptedId = (int)(dialog.id >> 32); - if (!encryptedToLoad.contains(encryptedId)) { - encryptedToLoad.add(encryptedId); + int high_id = (int)(dialog.id >> 32); + if (high_id > 0) { + if (!encryptedToLoad.contains(high_id)) { + encryptedToLoad.add(high_id); + } + } else { + if (!chatsToLoad.contains(high_id)) { + chatsToLoad.add(high_id); + } } } } @@ -2692,9 +2713,15 @@ public class MessagesStorage { } } } else { - int encryptedId = (int)(dialog.id >> 32); - if (!encryptedToLoad.contains(encryptedId)) { - encryptedToLoad.add(encryptedId); + int high_id = (int)(dialog.id >> 32); + if (high_id > 0) { + if (!encryptedToLoad.contains(high_id)) { + encryptedToLoad.add(high_id); + } + } else { + if (!chatsToLoad.contains(high_id)) { + chatsToLoad.add(high_id); + } } } } diff --git a/TMessagesProj/src/main/java/org/telegram/android/NativeLoader.java b/TMessagesProj/src/main/java/org/telegram/android/NativeLoader.java index 970facb40..ed9bae335 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/NativeLoader.java +++ b/TMessagesProj/src/main/java/org/telegram/android/NativeLoader.java @@ -25,8 +25,8 @@ public class NativeLoader { private static final long sizes[] = new long[] { 799376, //armeabi - 848548, //armeabi-v7a - 1246260, //x86 + 852644, //armeabi-v7a + 1250356, //x86 0, //mips }; diff --git a/TMessagesProj/src/main/java/org/telegram/android/NotificationsController.java b/TMessagesProj/src/main/java/org/telegram/android/NotificationsController.java index 17e9b9e01..1ec524c98 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/NotificationsController.java +++ b/TMessagesProj/src/main/java/org/telegram/android/NotificationsController.java @@ -400,7 +400,7 @@ public class NotificationsController { } if (photoPath != null) { - Bitmap img = FileLoader.getInstance().getImageFromMemory(photoPath, null, null, "50_50", false); + Bitmap img = FileLoader.getInstance().getImageFromMemory(photoPath, null, null, "50_50"); if (img != null) { mBuilder.setLargeIcon(img); } @@ -536,7 +536,7 @@ public class NotificationsController { Boolean value = settingsCache.get(dialog_id); boolean isChat = (int)dialog_id < 0; - popup = preferences.getInt(isChat ? "popupGroup" : "popupAll", 0); + popup = (int)dialog_id == 0 ? 0 : preferences.getInt(isChat ? "popupGroup" : "popupAll", 0); if (value == null) { int notify_override = preferences.getInt("notify2_" + dialog_id, 0); value = !(notify_override == 2 || (!preferences.getBoolean("EnableAll", true) || isChat && !preferences.getBoolean("EnableGroup", true)) && notify_override == 0); diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/ConnectionsManager.java b/TMessagesProj/src/main/java/org/telegram/messenger/ConnectionsManager.java index 8af9e0ec2..2a5ea5c7b 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/ConnectionsManager.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/ConnectionsManager.java @@ -850,7 +850,7 @@ public class ConnectionsManager implements Action.ActionDelegate, TcpConnection. } public long performRpc(final TLObject rpc, final RPCRequest.RPCRequestDelegate completionBlock, final RPCRequest.RPCQuickAckDelegate quickAckBlock, final boolean requiresCompletion, final int requestClass, final int datacenterId, final boolean runQueue) { - if (!UserConfig.isClientActivated() && (requestClass & RPCRequest.RPCRequestClassWithoutLogin) == 0) { + if (rpc == null || !UserConfig.isClientActivated() && (requestClass & RPCRequest.RPCRequestClassWithoutLogin) == 0) { FileLog.e("tmessages", "can't do request without login " + rpc); return 0; } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java index cf54747f4..700f37e9a 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java @@ -248,10 +248,14 @@ public class FileLoadOperation { float w_filter = 0; float h_filter = 0; + boolean blur = false; if (filter != null) { String args[] = filter.split("_"); w_filter = Float.parseFloat(args[0]) * AndroidUtilities.density; h_filter = Float.parseFloat(args[1]) * AndroidUtilities.density; + if (args.length > 2) { + blur = true; + } opts.inJustDecodeBounds = true; if (mediaIdFinal != null) { @@ -270,7 +274,7 @@ public class FileLoadOperation { opts.inSampleSize = (int)scaleFactor; } - if (filter == null) { + if (filter == null || blur) { opts.inPreferredConfig = Bitmap.Config.ARGB_8888; } else { opts.inPreferredConfig = Bitmap.Config.RGB_565; @@ -300,7 +304,9 @@ public class FileLoadOperation { image = scaledBitmap; } } - + if (image != null && blur && bitmapH < 100 && bitmapW < 100) { + Utilities.blurBitmap(image, (int)bitmapW, (int)bitmapH, image.getRowBytes()); + } } if (FileLoader.getInstance().runtimeHack != null) { FileLoader.getInstance().runtimeHack.trackFree(image.getRowBytes() * image.getHeight()); @@ -494,10 +500,14 @@ public class FileLoadOperation { float w_filter = 0; float h_filter; + boolean blur = false; if (filter != null) { String args[] = filter.split("_"); w_filter = Float.parseFloat(args[0]) * AndroidUtilities.density; h_filter = Float.parseFloat(args[1]) * AndroidUtilities.density; + if (args.length > 2) { + blur = true; + } opts.inJustDecodeBounds = true; BitmapFactory.decodeFile(cacheFileFinal.getAbsolutePath(), opts); @@ -511,7 +521,7 @@ public class FileLoadOperation { opts.inSampleSize = (int) scaleFactor; } - if (filter == null) { + if (filter == null || blur) { opts.inPreferredConfig = Bitmap.Config.ARGB_8888; } else { opts.inPreferredConfig = Bitmap.Config.RGB_565; @@ -540,7 +550,9 @@ public class FileLoadOperation { image = scaledBitmap; } } - + if (image != null && blur && bitmapH < 100 && bitmapW < 100) { + Utilities.blurBitmap(image, (int)bitmapW, (int)bitmapH, image.getRowBytes()); + } } if (image != null && FileLoader.getInstance().runtimeHack != null) { FileLoader.getInstance().runtimeHack.trackFree(image.getRowBytes() * image.getHeight()); diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoader.java b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoader.java index 7d9f1a951..c46598ffd 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoader.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoader.java @@ -64,7 +64,7 @@ public class FileLoader { private long lastProgressUpdateTime = 0; private HashMap BitmapUseCounts = new HashMap(); - int lastImageNum; + private int lastImageNum = 0; public static final int FileDidUpload = 10000; public static final int FileDidFailUpload = 10001; @@ -717,15 +717,15 @@ public class FileLoader { }); } - public Bitmap getImageFromMemory(TLRPC.FileLocation url, ImageReceiver imageView, String filter, boolean cancel) { - return getImageFromMemory(url, null, imageView, filter, cancel); + public Bitmap getImageFromMemory(TLRPC.FileLocation url, ImageReceiver imageView, String filter) { + return getImageFromMemory(url, null, imageView, filter); } - public Bitmap getImageFromMemory(String url, ImageReceiver imageView, String filter, boolean cancel) { - return getImageFromMemory(null, url, imageView, filter, cancel); + public Bitmap getImageFromMemory(String url, ImageReceiver imageView, String filter) { + return getImageFromMemory(null, url, imageView, filter); } - public Bitmap getImageFromMemory(TLRPC.FileLocation url, String httpUrl, ImageReceiver imageView, String filter, boolean cancel) { + public Bitmap getImageFromMemory(TLRPC.FileLocation url, String httpUrl, ImageReceiver imageView, String filter) { if (url == null && httpUrl == null) { return null; } @@ -739,11 +739,7 @@ public class FileLoader { key += "@" + filter; } - Bitmap img = imageFromKey(key); - if (imageView != null && img != null && cancel) { - cancelLoadingForImageView(imageView); - } - return img; + return imageFromKey(key); } private void performReplace(String oldKey, String newKey) { diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/TLClassStore.java b/TMessagesProj/src/main/java/org/telegram/messenger/TLClassStore.java index 513417a47..43025e060 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/TLClassStore.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/TLClassStore.java @@ -439,6 +439,7 @@ public class TLClassStore { classStore.put(TLRPC.TL_decryptedMessageMediaAudio_old.constructor, TLRPC.TL_decryptedMessageMediaAudio_old.class); classStore.put(TLRPC.TL_audio_old.constructor, TLRPC.TL_audio_old.class); classStore.put(TLRPC.TL_video_old.constructor, TLRPC.TL_video_old.class); + classStore.put(TLRPC.TL_messageActionCreatedBroadcastList.constructor, TLRPC.TL_messageActionCreatedBroadcastList.class); } static TLClassStore store = null; diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/TLRPC.java b/TMessagesProj/src/main/java/org/telegram/messenger/TLRPC.java index a2dad78c9..6c3c0eb03 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/TLRPC.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/TLRPC.java @@ -8996,6 +8996,17 @@ public class TLRPC { } } + public static class TL_messageActionCreatedBroadcastList extends MessageAction { + public static int constructor = 0x55555557; + + public void readParams(AbsSerializedData stream) { + } + + public void serializeToStream(AbsSerializedData stream) { + stream.writeInt32(constructor); + } + } + public static class TL_documentEncrypted extends TL_document { public static int constructor = 0x55555556; diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/UserConfig.java b/TMessagesProj/src/main/java/org/telegram/messenger/UserConfig.java index 34b469785..7abb922d1 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/UserConfig.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/UserConfig.java @@ -24,6 +24,7 @@ public class UserConfig { public static String pushString = ""; public static int lastSendMessageId = -210000; public static int lastLocalId = -210000; + public static int lastBroadcastId = -1; public static String contactsHash = ""; public static String importHash = ""; private final static Integer sync = 1; @@ -56,6 +57,7 @@ public class UserConfig { editor.putString("importHash", importHash); editor.putBoolean("saveIncomingPhotos", saveIncomingPhotos); editor.putInt("contactsVersion", contactsVersion); + editor.putInt("lastBroadcastId", lastBroadcastId); editor.putBoolean("registeredForInternalPush", registeredForInternalPush); if (currentUser != null) { if (withFile) { @@ -174,6 +176,7 @@ public class UserConfig { importHash = preferences.getString("importHash", ""); saveIncomingPhotos = preferences.getBoolean("saveIncomingPhotos", false); contactsVersion = preferences.getInt("contactsVersion", 0); + lastBroadcastId = preferences.getInt("lastBroadcastId", -1); registeredForInternalPush = preferences.getBoolean("registeredForInternalPush", false); String user = preferences.getString("user", null); if (user != null) { @@ -196,6 +199,7 @@ public class UserConfig { lastLocalId = -210000; lastSendMessageId = -210000; contactsVersion = 1; + lastBroadcastId = -1; saveIncomingPhotos = false; saveConfig(true); } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/Utilities.java b/TMessagesProj/src/main/java/org/telegram/messenger/Utilities.java index 9085e859d..79579de05 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/Utilities.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/Utilities.java @@ -132,6 +132,7 @@ public class Utilities { public native static long doPQNative(long _what); public native static void loadBitmap(String path, int[] bitmap, int scale, int format, int width, int height); + public native static void blurBitmap(Object bitmap, int width, int height, int stride); private native static void aesIgeEncryption(ByteBuffer buffer, byte[] key, byte[] iv, boolean encrypt, int offset, int length); public static void aesIgeEncryption(ByteBuffer buffer, byte[] key, byte[] iv, boolean encrypt, boolean changeIv, int offset, int length) { @@ -139,6 +140,9 @@ public class Utilities { } public static Integer parseInt(String value) { + if (value == null) { + return 0; + } Integer val = 0; try { Matcher matcher = pattern.matcher(value); @@ -548,7 +552,7 @@ public class Utilities { } public static int getGroupAvatarForId(int id) { - return arrGroupsAvatars[getColorIndex(-id)]; + return arrGroupsAvatars[getColorIndex(-Math.abs(id))]; } public static String MD5(String md5) { diff --git a/TMessagesProj/src/main/java/org/telegram/objects/MessageObject.java b/TMessagesProj/src/main/java/org/telegram/objects/MessageObject.java index 155890350..666b6556d 100644 --- a/TMessagesProj/src/main/java/org/telegram/objects/MessageObject.java +++ b/TMessagesProj/src/main/java/org/telegram/objects/MessageObject.java @@ -63,6 +63,10 @@ public class MessageObject { public ArrayList textLayoutBlocks; public MessageObject(TLRPC.Message message, AbstractMap users) { + this(message, users, 1); + } + + public MessageObject(TLRPC.Message message, AbstractMap users, int preview) { if (textPaint == null) { textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); textPaint.setColor(0xff000000); @@ -136,7 +140,7 @@ public class MessageObject { } else if (message.action instanceof TLRPC.TL_messageActionChatEditPhoto) { photoThumbs = new ArrayList(); for (TLRPC.PhotoSize size : message.action.photo.sizes) { - photoThumbs.add(new PhotoObject(size)); + photoThumbs.add(new PhotoObject(size, preview)); } if (isFromMe()) { messageText = LocaleController.getString("ActionYouChangedPhoto", R.string.ActionYouChangedPhoto); @@ -232,13 +236,15 @@ public class MessageObject { } } } + } else if (message.action instanceof TLRPC.TL_messageActionCreatedBroadcastList) { + messageText = LocaleController.formatString("YouCreatedBroadcastList", R.string.YouCreatedBroadcastList); } } } else if (message.media != null && !(message.media instanceof TLRPC.TL_messageMediaEmpty)) { if (message.media instanceof TLRPC.TL_messageMediaPhoto) { photoThumbs = new ArrayList(); for (TLRPC.PhotoSize size : message.media.photo.sizes) { - PhotoObject obj = new PhotoObject(size); + PhotoObject obj = new PhotoObject(size, preview); photoThumbs.add(obj); if (imagePreview == null && obj.image != null) { imagePreview = obj.image; @@ -247,7 +253,7 @@ public class MessageObject { messageText = LocaleController.getString("AttachPhoto", R.string.AttachPhoto); } else if (message.media instanceof TLRPC.TL_messageMediaVideo) { photoThumbs = new ArrayList(); - PhotoObject obj = new PhotoObject(message.media.video.thumb); + PhotoObject obj = new PhotoObject(message.media.video.thumb, preview); photoThumbs.add(obj); if (imagePreview == null && obj.image != null) { imagePreview = obj.image; @@ -262,7 +268,7 @@ public class MessageObject { } else if (message.media instanceof TLRPC.TL_messageMediaDocument) { if (!(message.media.document.thumb instanceof TLRPC.TL_photoSizeEmpty)) { photoThumbs = new ArrayList(); - PhotoObject obj = new PhotoObject(message.media.document.thumb); + PhotoObject obj = new PhotoObject(message.media.document.thumb, preview); photoThumbs.add(obj); } messageText = LocaleController.getString("AttachDocument", R.string.AttachDocument); diff --git a/TMessagesProj/src/main/java/org/telegram/objects/PhotoObject.java b/TMessagesProj/src/main/java/org/telegram/objects/PhotoObject.java index a93f03908..5b605b730 100644 --- a/TMessagesProj/src/main/java/org/telegram/objects/PhotoObject.java +++ b/TMessagesProj/src/main/java/org/telegram/objects/PhotoObject.java @@ -13,6 +13,7 @@ import android.graphics.BitmapFactory; import org.telegram.messenger.TLRPC; import org.telegram.messenger.FileLoader; +import org.telegram.messenger.Utilities; import java.util.ArrayList; @@ -20,18 +21,23 @@ public class PhotoObject { public TLRPC.PhotoSize photoOwner; public Bitmap image; - public PhotoObject(TLRPC.PhotoSize photo) { + public PhotoObject(TLRPC.PhotoSize photo, int preview) { photoOwner = photo; - if (photo instanceof TLRPC.TL_photoCachedSize) { + if (preview != 0 && photo instanceof TLRPC.TL_photoCachedSize) { BitmapFactory.Options opts = new BitmapFactory.Options(); - opts.inPreferredConfig = Bitmap.Config.RGB_565; + opts.inPreferredConfig = Bitmap.Config.ARGB_8888; opts.inDither = false; opts.outWidth = photo.w; opts.outHeight = photo.h; image = BitmapFactory.decodeByteArray(photoOwner.bytes, 0, photoOwner.bytes.length, opts); - if (image != null && FileLoader.getInstance().runtimeHack != null) { - FileLoader.getInstance().runtimeHack.trackFree(image.getRowBytes() * image.getHeight()); + if (image != null) { + if (preview == 2) { + Utilities.blurBitmap(image, image.getWidth(), image.getHeight(), image.getRowBytes()); + } + if (FileLoader.getInstance().runtimeHack != null) { + FileLoader.getInstance().runtimeHack.trackFree(image.getRowBytes() * image.getHeight()); + } } } } 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 a66e30850..4866457af 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMediaCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMediaCell.java @@ -31,7 +31,7 @@ import org.telegram.objects.PhotoObject; import org.telegram.ui.PhotoViewer; import org.telegram.ui.Views.GifDrawable; import org.telegram.ui.Views.ImageReceiver; -import org.telegram.ui.Views.ProgressView; +import org.telegram.ui.Views.RoundProgressView; import java.io.File; import java.util.Locale; @@ -45,7 +45,7 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD private static Drawable placeholderInDrawable; private static Drawable placeholderOutDrawable; private static Drawable videoIconDrawable; - private static Drawable[][] buttonStatesDrawables = new Drawable[4][2]; + private static Drawable[] buttonStatesDrawables = new Drawable[4]; private static TextPaint infoPaint; private static MessageObject lastDownloadedGifMessage = null; @@ -57,10 +57,11 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD private String currentUrl; private String currentPhotoFilter; private ImageReceiver photoImage; - private ProgressView progressView; + private RoundProgressView progressView; public int downloadPhotos = 0; private boolean progressVisible = false; private boolean photoNotSet = false; + private boolean cancelLoading = false; private int TAG; @@ -83,14 +84,10 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD if (placeholderInDrawable == null) { placeholderInDrawable = getResources().getDrawable(R.drawable.photo_placeholder_in); placeholderOutDrawable = getResources().getDrawable(R.drawable.photo_placeholder_out); - buttonStatesDrawables[0][0] = getResources().getDrawable(R.drawable.photoload); - buttonStatesDrawables[0][1] = getResources().getDrawable(R.drawable.photoload_pressed); - buttonStatesDrawables[1][0] = getResources().getDrawable(R.drawable.photocancel); - buttonStatesDrawables[1][1] = getResources().getDrawable(R.drawable.photocancel_pressed); - buttonStatesDrawables[2][0] = getResources().getDrawable(R.drawable.photogif); - buttonStatesDrawables[2][1] = getResources().getDrawable(R.drawable.photogif_pressed); - buttonStatesDrawables[3][0] = getResources().getDrawable(R.drawable.playvideo); - buttonStatesDrawables[3][1] = getResources().getDrawable(R.drawable.playvideo_pressed); + buttonStatesDrawables[0] = getResources().getDrawable(R.drawable.photoload); + buttonStatesDrawables[1] = getResources().getDrawable(R.drawable.photocancel); + buttonStatesDrawables[2] = getResources().getDrawable(R.drawable.photogif); + buttonStatesDrawables[3] = getResources().getDrawable(R.drawable.playvideo); videoIconDrawable = getResources().getDrawable(R.drawable.ic_video); infoPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); @@ -102,8 +99,7 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD photoImage = new ImageReceiver(); photoImage.parentView = this; - progressView = new ProgressView(); - progressView.setProgressColors(0x802a2a2a, 0xffffffff); + progressView = new RoundProgressView(); } public void clearGifImage() { @@ -225,6 +221,7 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD private void didPressedButton() { if (buttonState == 0) { + cancelLoading = false; if (currentMessageObject.type == 1) { if (currentMessageObject.imagePreview != null) { photoImage.setImage(currentPhotoObject.photoOwner.location, currentPhotoFilter, new BitmapDrawable(currentMessageObject.imagePreview), currentPhotoObject.photoOwner.size); @@ -246,6 +243,7 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD delegate.didPressedCancelSendButton(this); } } else { + cancelLoading = true; if (currentMessageObject.type == 1) { FileLoader.getInstance().cancelLoadingForImageView(photoImage); } else if (currentMessageObject.type == 8) { @@ -304,6 +302,7 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD public void setMessageObject(MessageObject messageObject) { if (currentMessageObject != messageObject || isPhotoDataChanged(messageObject) || isUserDataChanged()) { super.setMessageObject(messageObject); + cancelLoading = false; progressVisible = false; buttonState = -1; @@ -395,6 +394,9 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD photoHeight = h; backgroundWidth = w + AndroidUtilities.dp(12); currentPhotoFilter = String.format(Locale.US, "%d_%d", (int) (w / AndroidUtilities.density), (int) (h / AndroidUtilities.density)); + if (messageObject.photoThumbs.size() > 1) { + currentPhotoFilter += "_b"; + } if (currentPhotoObject.image != null) { photoImage.setImageBitmap(currentPhotoObject.image); @@ -485,20 +487,16 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD if (!cacheFile.exists()) { MediaController.getInstance().addLoadingFileObserver(fileName, this); if (!FileLoader.getInstance().isLoadingFile(fileName)) { - if (currentMessageObject.type != 1 || downloadPhotos == 1 || downloadPhotos == 2 && !ConnectionsManager.isConnectedToWiFi()) { + if (cancelLoading || currentMessageObject.type != 1 || downloadPhotos == 1 || downloadPhotos == 2 && !ConnectionsManager.isConnectedToWiFi()) { buttonState = 0; progressVisible = false; } else { - buttonState = -1; + buttonState = 1; progressVisible = true; } progressView.setProgress(0); } else { - if (currentMessageObject.type != 1 || downloadPhotos == 1 || downloadPhotos == 2 && !ConnectionsManager.isConnectedToWiFi()) { - buttonState = 1; - } else { - buttonState = -1; - } + buttonState = 1; progressVisible = true; Float progress = FileLoader.getInstance().fileProgresses.get(fileName); if (progress != null) { @@ -544,13 +542,10 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD photoImage.imageW = photoWidth; photoImage.imageH = photoHeight; - progressView.width = timeX - photoImage.imageX - AndroidUtilities.dpf(23.0f); - progressView.height = AndroidUtilities.dp(3); - progressView.progressHeight = AndroidUtilities.dp(3); - int size = AndroidUtilities.dp(44); buttonX = (int)(photoImage.imageX + (photoWidth - size) / 2.0f); buttonY = (int)(photoImage.imageY + (photoHeight - size) / 2.0f); + progressView.rect.set(buttonX + AndroidUtilities.dp(2), buttonY + AndroidUtilities.dp(2), buttonX + AndroidUtilities.dp(42), buttonY + AndroidUtilities.dp(42)); } @Override @@ -566,22 +561,16 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD drawTime = photoImage.getVisible(); } - if (progressVisible) { - setDrawableBounds(mediaBackgroundDrawable, photoImage.imageX + AndroidUtilities.dp(4), layoutHeight - AndroidUtilities.dpf(27.5f), progressView.width + AndroidUtilities.dp(12), AndroidUtilities.dpf(16.5f)); - mediaBackgroundDrawable.draw(canvas); - - canvas.save(); - canvas.translate(photoImage.imageX + AndroidUtilities.dp(10), layoutHeight - AndroidUtilities.dpf(21.0f)); - progressView.draw(canvas); - canvas.restore(); - } - if (buttonState >= 0 && buttonState < 4) { - Drawable currentButtonDrawable = buttonStatesDrawables[buttonState][buttonPressed]; + Drawable currentButtonDrawable = buttonStatesDrawables[buttonState]; setDrawableBounds(currentButtonDrawable, buttonX, buttonY); currentButtonDrawable.draw(canvas); } + if (progressVisible) { + progressView.draw(canvas); + } + if (infoLayout != null && (buttonState == 1 || buttonState == 0 || buttonState == 3)) { setDrawableBounds(mediaBackgroundDrawable, photoImage.imageX + AndroidUtilities.dp(4), photoImage.imageY + AndroidUtilities.dp(4), infoWidth + AndroidUtilities.dp(8) + infoOffset, AndroidUtilities.dpf(16.5f)); mediaBackgroundDrawable.draw(canvas); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/DialogCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DialogCell.java index 25109034d..c58517581 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/DialogCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DialogCell.java @@ -46,6 +46,7 @@ public class DialogCell extends BaseCell { private static Drawable lockDrawable; private static Drawable countDrawable; private static Drawable groupDrawable; + private static Drawable broadcastDrawable; private TLRPC.TL_dialog currentDialog; private ImageReceiver avatarImage; @@ -130,6 +131,10 @@ public class DialogCell extends BaseCell { groupDrawable = getResources().getDrawable(R.drawable.grouplist); } + if (broadcastDrawable == null) { + broadcastDrawable = getResources().getDrawable(R.drawable.broadcast); + } + if (avatarImage == null) { avatarImage = new ImageReceiver(); avatarImage.parentView = this; @@ -227,9 +232,14 @@ public class DialogCell extends BaseCell { user = MessagesController.getInstance().users.get(lower_id); } } else { - encryptedChat = MessagesController.getInstance().encryptedChats.get((int)(currentDialog.id >> 32)); - if (encryptedChat != null) { - user = MessagesController.getInstance().users.get(encryptedChat.user_id); + int high_id = (int)(currentDialog.id >> 32); + if (high_id > 0) { + encryptedChat = MessagesController.getInstance().encryptedChats.get(high_id); + if (encryptedChat != null) { + user = MessagesController.getInstance().users.get(encryptedChat.user_id); + } + } else { + chat = MessagesController.getInstance().chats.get(high_id); } } @@ -274,6 +284,9 @@ public class DialogCell extends BaseCell { } else if (cellLayout.drawNameGroup) { setDrawableBounds(groupDrawable, cellLayout.nameLockLeft, cellLayout.nameLockTop); groupDrawable.draw(canvas); + } else if (cellLayout.drawNameBroadcast) { + setDrawableBounds(broadcastDrawable, cellLayout.nameLockLeft, cellLayout.nameLockTop); + broadcastDrawable.draw(canvas); } canvas.save(); @@ -328,6 +341,7 @@ public class DialogCell extends BaseCell { private StaticLayout nameLayout; private boolean drawNameLock; private boolean drawNameGroup; + private boolean drawNameBroadcast; private int nameLockLeft; private int nameLockTop; @@ -372,9 +386,12 @@ public class DialogCell extends BaseCell { TextPaint currentMessagePaint = messagePaint; boolean checkMessage = true; + drawNameGroup = false; + drawNameBroadcast = false; + drawNameLock = false; + if (encryptedChat != null) { drawNameLock = true; - drawNameGroup = false; nameLockTop = AndroidUtilities.dp(13); if (!LocaleController.isRTL) { nameLockLeft = AndroidUtilities.dp(77); @@ -384,19 +401,21 @@ public class DialogCell extends BaseCell { nameLeft = AndroidUtilities.dp(14); } } else { - drawNameLock = false; if (chat != null) { - drawNameGroup = true; + if (chat.id < 0) { + drawNameBroadcast = true; + } else { + drawNameGroup = true; + } nameLockTop = AndroidUtilities.dp(14); if (!LocaleController.isRTL) { nameLockLeft = AndroidUtilities.dp(77); - nameLeft = AndroidUtilities.dp(81) + groupDrawable.getIntrinsicWidth(); + nameLeft = AndroidUtilities.dp(81) + (drawNameGroup ? groupDrawable.getIntrinsicWidth() : broadcastDrawable.getIntrinsicWidth()); } else { - nameLockLeft = width - AndroidUtilities.dp(77) - groupDrawable.getIntrinsicWidth(); + nameLockLeft = width - AndroidUtilities.dp(77) - (drawNameGroup ? groupDrawable.getIntrinsicWidth() : broadcastDrawable.getIntrinsicWidth()); nameLeft = AndroidUtilities.dp(14); } } else { - drawNameGroup = false; if (!LocaleController.isRTL) { nameLeft = AndroidUtilities.dp(77); } else { @@ -461,7 +480,7 @@ public class DialogCell extends BaseCell { messageString = message.messageText; currentMessagePaint = messagePrintingPaint; } else { - if (chat != null) { + if (chat != null && chat.id > 0) { String name = ""; if (message.isFromMe()) { name = LocaleController.getString("FromYou", R.string.FromYou); @@ -505,7 +524,7 @@ public class DialogCell extends BaseCell { } } - if (message.isFromMe()) { + if (message.isFromMe() && message.isOut()) { if (message.messageOwner.send_state == MessagesController.MESSAGE_SEND_STATE_SENDING) { drawCheck1 = false; drawCheck2 = false; @@ -579,6 +598,8 @@ public class DialogCell extends BaseCell { nameWidth -= AndroidUtilities.dp(4) + lockDrawable.getIntrinsicWidth(); } else if (drawNameGroup) { nameWidth -= AndroidUtilities.dp(4) + groupDrawable.getIntrinsicWidth(); + } else if (drawNameBroadcast) { + nameWidth -= AndroidUtilities.dp(4) + broadcastDrawable.getIntrinsicWidth(); } if (drawClock) { int w = clockDrawable.getIntrinsicWidth() + AndroidUtilities.dp(2); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java index e9116ba1f..c2d57bd21 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java @@ -212,7 +212,11 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } MessagesController.getInstance().loadChatInfo(currentChat.id); - dialog_id = -chatId; + if (chatId > 0) { + dialog_id = -chatId; + } else { + dialog_id = ((long)chatId) << 32; + } } else if (userId != 0) { currentUser = MessagesController.getInstance().users.get(userId); if (currentUser == null) { @@ -528,6 +532,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (currentEncryptedChat != null) { actionBarLayer.setTitleIcon(R.drawable.ic_lock_white, AndroidUtilities.dp(4)); + } else if (currentChat != null && currentChat.id < 0) { + actionBarLayer.setTitleIcon(R.drawable.broadcast2, AndroidUtilities.dp(4)); } ActionBarMenu menu = actionBarLayer.createMenu(); @@ -1045,7 +1051,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not private int getMessageType(MessageObject messageObject) { if (currentEncryptedChat == null) { - if (messageObject.messageOwner.id <= 0 && messageObject.isOut()) { + boolean isBroadcastError = (int)dialog_id == 0 && messageObject.messageOwner.id <= 0 && messageObject.messageOwner.send_state == MessagesController.MESSAGE_SEND_STATE_SEND_ERROR; + if ((int)dialog_id != 0 && messageObject.messageOwner.id <= 0 && messageObject.isOut() || isBroadcastError) { if (messageObject.messageOwner.send_state == MessagesController.MESSAGE_SEND_STATE_SEND_ERROR) { if (!(messageObject.messageOwner.media instanceof TLRPC.TL_messageMediaEmpty)) { return 0; @@ -1771,7 +1778,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (messArr.size() != count) { if (isCache) { cacheEndReaced = true; - if (currentEncryptedChat != null) { + if ((int)dialog_id == 0) { endReached = true; } } else { @@ -2897,24 +2904,24 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not private void forwardSelectedMessages(long did, boolean fromMyName) { if (forwaringMessage != null) { - if (forwaringMessage.messageOwner.id > 0) { - if (!fromMyName) { + if (!fromMyName) { + if (forwaringMessage.messageOwner.id > 0) { MessagesController.getInstance().sendMessage(forwaringMessage, did); - } else { - processForwardFromMe(forwaringMessage, did); } + } else { + processForwardFromMe(forwaringMessage, did); } forwaringMessage = null; } else { ArrayList ids = new ArrayList(selectedMessagesIds.keySet()); Collections.sort(ids); for (Integer id : ids) { - if (id > 0) { - if (!fromMyName) { + if (!fromMyName) { + if (id > 0) { MessagesController.getInstance().sendMessage(selectedMessagesIds.get(id), did); - } else { - processForwardFromMe(selectedMessagesIds.get(id), did); } + } else { + processForwardFromMe(selectedMessagesIds.get(id), did); } } selectedMessagesCanCopyIds.clear(); @@ -2925,7 +2932,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not @Override public void didSelectDialog(MessagesActivity activity, long did, boolean param) { if (dialog_id != 0 && (forwaringMessage != null || !selectedMessagesIds.isEmpty())) { - + if ((int)dialog_id == 0 && currentEncryptedChat == null) { + param = true; + } if (did != dialog_id) { int lower_part = (int)did; if (lower_part != 0) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileActivity.java index 115c41405..4f8f86987 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileActivity.java @@ -112,7 +112,9 @@ public class ChatProfileActivity extends BaseFragment implements NotificationCen NotificationCenter.getInstance().addObserver(this, MessagesController.closeChats); updateOnlineCount(); - MessagesController.getInstance().getMediaCount(-chat_id, classGuid, true); + if (chat_id > 0) { + MessagesController.getInstance().getMediaCount(-chat_id, classGuid, true); + } avatarUpdater.delegate = new AvatarUpdater.AvatarUpdaterDelegate() { @Override public void didUploadedPhoto(TLRPC.InputFile file, TLRPC.PhotoSize small, TLRPC.PhotoSize big) { @@ -131,10 +133,12 @@ public class ChatProfileActivity extends BaseFragment implements NotificationCen private void updateRowsIds() { rowCount = 0; avatarRow = rowCount++; - settingsSectionRow = rowCount++; - settingsNotificationsRow = rowCount++; - sharedMediaSectionRow = rowCount++; - sharedMediaRow = rowCount++; + if (chat_id > 0) { + settingsSectionRow = rowCount++; + settingsNotificationsRow = rowCount++; + sharedMediaSectionRow = rowCount++; + sharedMediaRow = rowCount++; + } if (info != null && !(info instanceof TLRPC.TL_chatParticipantsForbidden)) { membersSectionRow = rowCount++; rowCount += info.participants.size(); @@ -149,7 +153,9 @@ public class ChatProfileActivity extends BaseFragment implements NotificationCen addMemberRow = -1; membersSectionRow = -1; } - leaveGroupRow = rowCount++; + if (chat_id > 0) { + leaveGroupRow = rowCount++; + } } @Override @@ -166,7 +172,11 @@ public class ChatProfileActivity extends BaseFragment implements NotificationCen if (fragmentView == null) { actionBarLayer.setDisplayHomeAsUpEnabled(true, R.drawable.ic_ab_back); actionBarLayer.setBackOverlay(R.layout.updating_state_layout); - actionBarLayer.setTitle(LocaleController.getString("GroupInfo", R.string.GroupInfo)); + if (chat_id > 0) { + actionBarLayer.setTitle(LocaleController.getString("GroupInfo", R.string.GroupInfo)); + } else { + actionBarLayer.setTitle(LocaleController.getString("BroadcastList", R.string.BroadcastList)); + } actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { @Override public void onItemClick(int id) { @@ -181,7 +191,11 @@ public class ChatProfileActivity extends BaseFragment implements NotificationCen View item = menu.addItemResource(done_button, R.layout.group_profile_add_member_layout); TextView textView = (TextView)item.findViewById(R.id.done_button); if (textView != null) { - textView.setText(LocaleController.getString("AddMember", R.string.AddMember)); + if (chat_id > 0) { + textView.setText(LocaleController.getString("AddMember", R.string.AddMember)); + } else { + textView.setText(LocaleController.getString("AddRecipient", R.string.AddRecipient)); + } } fragmentView = inflater.inflate(R.layout.chat_profile_layout, container, false); @@ -206,7 +220,7 @@ public class ChatProfileActivity extends BaseFragment implements NotificationCen selectedUser = user; AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); - CharSequence[] items = new CharSequence[] {LocaleController.getString("KickFromGroup", R.string.KickFromGroup)}; + CharSequence[] items = new CharSequence[] {chat_id > 0 ? LocaleController.getString("KickFromGroup", R.string.KickFromGroup) : LocaleController.getString("KickFromBroadcast", R.string.KickFromBroadcast)}; builder.setItems(items, new DialogInterface.OnClickListener() { @Override @@ -259,7 +273,7 @@ public class ChatProfileActivity extends BaseFragment implements NotificationCen @Override public void didSelectContact(TLRPC.User user, String param) { - MessagesController.getInstance().addUserToChat(chat_id, user, info, Utilities.parseInt(param)); + MessagesController.getInstance().addUserToChat(chat_id, user, info, param != null ? Utilities.parseInt(param) : 0); } @Override @@ -461,7 +475,9 @@ public class ChatProfileActivity extends BaseFragment implements NotificationCen args.putBoolean("destroyAfterSelect", true); args.putBoolean("usersAsSections", true); args.putBoolean("returnAsResult", true); - args.putString("selectAlertString", LocaleController.getString("AddToTheGroup", R.string.AddToTheGroup)); + if (chat_id > 0) { + args.putString("selectAlertString", LocaleController.getString("AddToTheGroup", R.string.AddToTheGroup)); + } ContactsActivity fragment = new ContactsActivity(args); fragment.setDelegate(this); if (info != null) { @@ -546,52 +562,56 @@ public class ChatProfileActivity extends BaseFragment implements NotificationCen }); final ImageButton button2 = (ImageButton)view.findViewById(R.id.settings_change_avatar_button); - button2.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (getParentActivity() == null) { - return; - } - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); - CharSequence[] items; - int type; - TLRPC.Chat chat = MessagesController.getInstance().chats.get(chat_id); - if (chat.photo == null || chat.photo.photo_big == null || chat.photo instanceof TLRPC.TL_chatPhotoEmpty) { - items = new CharSequence[] {LocaleController.getString("FromCamera", R.string.FromCamera), LocaleController.getString("FromGalley", R.string.FromGalley)}; - type = 0; - } else { - items = new CharSequence[] {LocaleController.getString("OpenPhoto", R.string.OpenPhoto), LocaleController.getString("FromCamera", R.string.FromCamera), LocaleController.getString("FromGalley", R.string.FromGalley), LocaleController.getString("DeletePhoto", R.string.DeletePhoto)}; - type = 1; - } - - final int arg0 = type; - builder.setItems(items, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - int action = 0; - if (arg0 == 1) { - if (i == 0) { - action = 0; - } else if (i == 1) { - action = 1; - } else if (i == 2) { - action = 2; - } else if (i == 3) { - action = 3; - } - } else if (arg0 == 0) { - if (i == 0) { - action = 1; - } else if (i == 1) { - action = 2; - } - } - processPhotoMenu(action); + if (chat_id > 0) { + button2.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if (getParentActivity() == null) { + return; } - }); - showAlertDialog(builder); - } - }); + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + CharSequence[] items; + int type; + TLRPC.Chat chat = MessagesController.getInstance().chats.get(chat_id); + if (chat.photo == null || chat.photo.photo_big == null || chat.photo instanceof TLRPC.TL_chatPhotoEmpty) { + items = new CharSequence[]{LocaleController.getString("FromCamera", R.string.FromCamera), LocaleController.getString("FromGalley", R.string.FromGalley)}; + type = 0; + } else { + items = new CharSequence[]{LocaleController.getString("OpenPhoto", R.string.OpenPhoto), LocaleController.getString("FromCamera", R.string.FromCamera), LocaleController.getString("FromGalley", R.string.FromGalley), LocaleController.getString("DeletePhoto", R.string.DeletePhoto)}; + type = 1; + } + + final int arg0 = type; + builder.setItems(items, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + int action = 0; + if (arg0 == 1) { + if (i == 0) { + action = 0; + } else if (i == 1) { + action = 1; + } else if (i == 2) { + action = 2; + } else if (i == 3) { + action = 3; + } + } else if (arg0 == 0) { + if (i == 0) { + action = 1; + } else if (i == 1) { + action = 2; + } + } + processPhotoMenu(action); + } + }); + showAlertDialog(builder); + } + }); + } else { + button2.setVisibility(View.GONE); + } } else { onlineText = (TextView)view.findViewById(R.id.settings_online); } @@ -665,7 +685,13 @@ public class ChatProfileActivity extends BaseFragment implements NotificationCen LayoutInflater li = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); view = li.inflate(R.layout.chat_profile_add_row, viewGroup, false); TextView textView = (TextView)view.findViewById(R.id.messages_list_row_name); - textView.setText(LocaleController.getString("AddMember", R.string.AddMember)); + if (chat_id > 0) { + textView.setText(LocaleController.getString("AddMember", R.string.AddMember)); + } else { + textView.setText(LocaleController.getString("AddRecipient", R.string.AddRecipient)); + View divider = view.findViewById(R.id.settings_row_divider); + divider.setVisibility(View.INVISIBLE); + } } } else if (type == 5) { if (view == null) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java index 6baa5a90b..93b6d220a 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java @@ -90,6 +90,7 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen private TextView emptyTextView; private EditText userSelectEditText; private boolean ignoreChange = false; + private boolean isBroadcast = false; private HashMap selectedContacts = new HashMap(); private ArrayList allSpans = new ArrayList(); @@ -105,6 +106,15 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen private final static int done_button = 1; + public GroupCreateActivity() { + super(); + } + + public GroupCreateActivity(Bundle args) { + super(args); + isBroadcast = args.getBoolean("broadcast", false); + } + @Override public boolean onFragmentCreate() { NotificationCenter.getInstance().addObserver(this, MessagesController.contactsDidLoaded); @@ -126,7 +136,11 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen if (fragmentView == null) { actionBarLayer.setDisplayHomeAsUpEnabled(true, R.drawable.ic_ab_back); actionBarLayer.setBackOverlay(R.layout.updating_state_layout); - actionBarLayer.setTitle(LocaleController.getString("NewGroup", R.string.NewGroup)); + if (isBroadcast) { + actionBarLayer.setTitle(LocaleController.getString("NewBroadcastList", R.string.NewBroadcastList)); + } else { + actionBarLayer.setTitle(LocaleController.getString("NewGroup", R.string.NewGroup)); + } actionBarLayer.setSubtitle(LocaleController.formatString("MembersCount", R.string.MembersCount, selectedContacts.size(), 200)); actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { @@ -140,6 +154,7 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen result.addAll(selectedContacts.keySet()); Bundle args = new Bundle(); args.putIntegerArrayList("result", result); + args.putBoolean("broadcast", isBroadcast); presentFragment(new GroupCreateFinalActivity(args)); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateFinalActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateFinalActivity.java index 6d8e2c55a..85be68b0c 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateFinalActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateFinalActivity.java @@ -54,11 +54,13 @@ public class GroupCreateFinalActivity extends BaseFragment implements Notificati private AvatarUpdater avatarUpdater = new AvatarUpdater(); private ProgressDialog progressDialog = null; private String nameToSet = null; + private boolean isBroadcast = false; private final static int done_button = 1; public GroupCreateFinalActivity(Bundle args) { super(args); + isBroadcast = args.getBoolean("broadcast", false); } @SuppressWarnings("unchecked") @@ -120,7 +122,11 @@ public class GroupCreateFinalActivity extends BaseFragment implements Notificati if (fragmentView == null) { actionBarLayer.setDisplayHomeAsUpEnabled(true, R.drawable.ic_ab_back); actionBarLayer.setBackOverlay(R.layout.updating_state_layout); - actionBarLayer.setTitle(LocaleController.getString("NewGroup", R.string.NewGroup)); + if (isBroadcast) { + actionBarLayer.setTitle(LocaleController.getString("NewBroadcastList", R.string.NewBroadcastList)); + } else { + actionBarLayer.setTitle(LocaleController.getString("NewGroup", R.string.NewGroup)); + } actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { @Override @@ -136,29 +142,33 @@ public class GroupCreateFinalActivity extends BaseFragment implements Notificati } donePressed = true; - if (avatarUpdater.uploadingAvatar != null) { - createAfterUpload = true; + if (isBroadcast) { + MessagesController.getInstance().createChat(nameTextView.getText().toString(), selectedContacts, uploadedAvatar, isBroadcast); } else { - progressDialog = new ProgressDialog(getParentActivity()); - progressDialog.setMessage(LocaleController.getString("Loading", R.string.Loading)); - progressDialog.setCanceledOnTouchOutside(false); - progressDialog.setCancelable(false); + if (avatarUpdater.uploadingAvatar != null) { + createAfterUpload = true; + } else { + progressDialog = new ProgressDialog(getParentActivity()); + progressDialog.setMessage(LocaleController.getString("Loading", R.string.Loading)); + progressDialog.setCanceledOnTouchOutside(false); + progressDialog.setCancelable(false); - final long reqId = MessagesController.getInstance().createChat(nameTextView.getText().toString(), selectedContacts, uploadedAvatar); + final long reqId = MessagesController.getInstance().createChat(nameTextView.getText().toString(), selectedContacts, uploadedAvatar, isBroadcast); - progressDialog.setButton(DialogInterface.BUTTON_NEGATIVE, LocaleController.getString("Cancel", R.string.Cancel), new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - ConnectionsManager.getInstance().cancelRpc(reqId, true); - donePressed = false; - try { - dialog.dismiss(); - } catch (Exception e) { - FileLog.e("tmessages", e); + progressDialog.setButton(DialogInterface.BUTTON_NEGATIVE, LocaleController.getString("Cancel", R.string.Cancel), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + ConnectionsManager.getInstance().cancelRpc(reqId, true); + donePressed = false; + try { + dialog.dismiss(); + } catch (Exception e) { + FileLog.e("tmessages", e); + } } - } - }); - progressDialog.show(); + }); + progressDialog.show(); + } } } } @@ -173,45 +183,53 @@ public class GroupCreateFinalActivity extends BaseFragment implements Notificati fragmentView = inflater.inflate(R.layout.group_create_final_layout, container, false); final ImageButton button2 = (ImageButton)fragmentView.findViewById(R.id.settings_change_avatar_button); - button2.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (getParentActivity() == null) { - return; - } - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); - - CharSequence[] items; - - if (avatar != null) { - items = new CharSequence[] {LocaleController.getString("FromCamera", R.string.FromCamera), LocaleController.getString("FromGalley", R.string.FromGalley), LocaleController.getString("DeletePhoto", R.string.DeletePhoto)}; - } else { - items = new CharSequence[] {LocaleController.getString("FromCamera", R.string.FromCamera), LocaleController.getString("FromGalley", R.string.FromGalley)}; - } - - builder.setItems(items, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - if (i == 0) { - avatarUpdater.openCamera(); - } else if (i == 1) { - avatarUpdater.openGallery(); - } else if (i == 2) { - avatar = null; - uploadedAvatar = null; - avatarImage.setImage(avatar, "50_50", R.drawable.group_blue); - } + if (isBroadcast) { + button2.setVisibility(View.GONE); + } else { + button2.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if (getParentActivity() == null) { + return; } - }); - showAlertDialog(builder); - } - }); + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + + CharSequence[] items; + + if (avatar != null) { + items = new CharSequence[]{LocaleController.getString("FromCamera", R.string.FromCamera), LocaleController.getString("FromGalley", R.string.FromGalley), LocaleController.getString("DeletePhoto", R.string.DeletePhoto)}; + } else { + items = new CharSequence[]{LocaleController.getString("FromCamera", R.string.FromCamera), LocaleController.getString("FromGalley", R.string.FromGalley)}; + } + + builder.setItems(items, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + if (i == 0) { + avatarUpdater.openCamera(); + } else if (i == 1) { + avatarUpdater.openGallery(); + } else if (i == 2) { + avatar = null; + uploadedAvatar = null; + avatarImage.setImage(avatar, "50_50", R.drawable.group_blue); + } + } + }); + showAlertDialog(builder); + } + }); + } avatarImage = (BackupImageView)fragmentView.findViewById(R.id.settings_avatar_image); avatarImage.setImageResource(R.drawable.group_blue); nameTextView = (EditText)fragmentView.findViewById(R.id.bubble_input_text); - nameTextView.setHint(LocaleController.getString("EnterGroupNamePlaceholder", R.string.EnterGroupNamePlaceholder)); + if (isBroadcast) { + nameTextView.setHint(LocaleController.getString("EnterListName", R.string.EnterListName)); + } else { + nameTextView.setHint(LocaleController.getString("EnterGroupNamePlaceholder", R.string.EnterGroupNamePlaceholder)); + } if (nameToSet != null) { nameTextView.setText(nameToSet); nameToSet = null; @@ -237,7 +255,7 @@ public class GroupCreateFinalActivity extends BaseFragment implements Notificati avatarImage.setImage(avatar, "50_50", R.drawable.group_blue); if (createAfterUpload) { FileLog.e("tmessages", "avatar did uploaded"); - MessagesController.getInstance().createChat(nameTextView.getText().toString(), selectedContacts, uploadedAvatar); + MessagesController.getInstance().createChat(nameTextView.getText().toString(), selectedContacts, uploadedAvatar, false); } } }); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java index 2e28adc44..1fd650783 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java @@ -458,7 +458,12 @@ public class LaunchActivity extends ActionBarActivity implements NotificationCen args.putInt("chat_id", -lower_part); } } else { - args.putInt("enc_id", (int)(dialog_id >> 32)); + int high_id = (int)(dialog_id >> 32); + if (high_id > 0) { + args.putInt("enc_id", high_id); + } else { + args.putInt("chat_id", high_id); + } } ChatActivity fragment = new ChatActivity(args); presentFragment(fragment, true); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java index ecdbd2c39..c3ab5d6ac 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java @@ -74,6 +74,7 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter 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); @@ -175,6 +176,7 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter 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); } @@ -206,6 +208,10 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter if (onlySelect) { finishFragment(); } + } else if (id == messages_list_menu_new_broadcast) { + Bundle args = new Bundle(); + args.putBoolean("broadcast", true); + presentFragment(new GroupCreateActivity(args)); } } }); @@ -289,7 +295,12 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter args.putInt("chat_id", -lower_part); } } else { - args.putInt("enc_id", (int)(dialog_id >> 32)); + int high_id = (int)(dialog_id >> 32); + if (high_id > 0) { + args.putInt("enc_id", high_id); + } else { + args.putInt("chat_id", high_id); + } } presentFragment(new ChatActivity(args)); } @@ -497,13 +508,21 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter builder.setMessage(LocaleController.formatStringSimple(selectAlertString, chat.title)); } } else { - int chat_id = (int)(dialog_id >> 32); - TLRPC.EncryptedChat chat = MessagesController.getInstance().encryptedChats.get(chat_id); - TLRPC.User user = MessagesController.getInstance().users.get(chat.user_id); - if (user == null) { - return; + int high_id = (int)(dialog_id >> 32); + if (high_id > 0) { + TLRPC.EncryptedChat chat = MessagesController.getInstance().encryptedChats.get(high_id); + TLRPC.User user = MessagesController.getInstance().users.get(chat.user_id); + if (user == null) { + return; + } + builder.setMessage(LocaleController.formatStringSimple(selectAlertString, Utilities.formatName(user.first_name, user.last_name))); + } else { + TLRPC.Chat chat = MessagesController.getInstance().chats.get(high_id); + if (chat == null) { + return; + } + builder.setMessage(LocaleController.formatStringSimple(selectAlertString, chat.title)); } - builder.setMessage(LocaleController.formatStringSimple(selectAlertString, Utilities.formatName(user.first_name, user.last_name))); } CheckBox checkBox = null; /*if (delegate instanceof ChatActivity) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PopupNotificationActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/PopupNotificationActivity.java index c2f86eaf1..dc519d780 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PopupNotificationActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PopupNotificationActivity.java @@ -874,9 +874,6 @@ public class PopupNotificationActivity extends Activity implements NotificationC chatActivityEnterView.setFieldFocused(false); } ConnectionsManager.getInstance().setAppPaused(true, false); - if (wakeLock.isHeld()) { - wakeLock.release(); - } } @Override diff --git a/TMessagesProj/src/main/java/org/telegram/ui/SettingsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/SettingsActivity.java index e79239b45..07184d6b5 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/SettingsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/SettingsActivity.java @@ -568,6 +568,9 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter } catch (Exception e) { FileLog.e("tmessages", e); } + ArrayList users = new ArrayList(); + users.add(res.user); + MessagesStorage.getInstance().putUsersAndChats(users, null, true, true); MessagesController.getInstance().users.put(res.user.id, res.user); Bundle args = new Bundle(); args.putInt("user_id", res.user.id); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/SettingsNotificationsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/SettingsNotificationsActivity.java index 9b7298bb7..91ed628c4 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/SettingsNotificationsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/SettingsNotificationsActivity.java @@ -406,7 +406,8 @@ public class SettingsNotificationsActivity extends BaseFragment implements Notif } public void updateServerNotificationsSettings(boolean group) { - SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE); + //disable global settings sync + /*SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE); TLRPC.TL_account_updateNotifySettings req = new TLRPC.TL_account_updateNotifySettings(); req.settings = new TLRPC.TL_inputPeerNotifySettings(); req.settings.sound = "default"; @@ -425,7 +426,7 @@ public class SettingsNotificationsActivity extends BaseFragment implements Notif public void run(TLObject response, TLRPC.TL_error error) { } - }); + });*/ } @Override diff --git a/TMessagesProj/src/main/java/org/telegram/ui/VideoEditorActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/VideoEditorActivity.java index 2774c356b..948745659 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/VideoEditorActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/VideoEditorActivity.java @@ -467,18 +467,15 @@ public class VideoEditorActivity extends BaseFragment implements SurfaceHolder.C List tracks = movie.getTracks(); movie.setTracks(new LinkedList()); - double startTime = videoTimelineView.getLeftProgress() * videoPlayer.getDuration() / 1000.0; - double endTime = videoTimelineView.getRightProgress() * videoPlayer.getDuration() / 1000.0; + double startTime = 0; + double endTime = 0; - boolean timeCorrected = false; for (Track track : tracks) { if (track.getSyncSamples() != null && track.getSyncSamples().length > 0) { - if (timeCorrected) { - throw new RuntimeException("The startTime has already been corrected by another track with SyncSample. Not Supported."); - } - startTime = correctTimeToSyncSample(track, startTime, false); - endTime = correctTimeToSyncSample(track, endTime, true); - timeCorrected = true; + double duration = (double)track.getDuration() / (double)track.getTrackMetaData().getTimescale(); + startTime = correctTimeToSyncSample(track, videoTimelineView.getLeftProgress() * duration, false); + endTime = videoTimelineView.getRightProgress() * duration; + break; } } @@ -486,7 +483,7 @@ public class VideoEditorActivity extends BaseFragment implements SurfaceHolder.C long currentSample = 0; double currentTime = 0; double lastTime = 0; - long startSample = -1; + long startSample = 0; long endSample = -1; for (int i = 0; i < track.getSampleDurations().length; i++) { @@ -503,9 +500,7 @@ public class VideoEditorActivity extends BaseFragment implements SurfaceHolder.C } movie.addTrack(new CroppedTrack(track, startSample, endSample)); } - long start1 = System.currentTimeMillis(); Container out = new DefaultMp4Builder().build(movie); - long start2 = System.currentTimeMillis(); String fileName = Integer.MIN_VALUE + "_" + UserConfig.lastLocalId + ".mp4"; UserConfig.lastLocalId--; @@ -524,6 +519,11 @@ public class VideoEditorActivity extends BaseFragment implements SurfaceHolder.C } } +// private void startEncodeVideo() { +// MediaExtractor mediaExtractor = new MediaExtractor(); +// mediaExtractor.s +// } + private static double correctTimeToSyncSample(Track track, double cutHere, boolean next) { double[] timeOfSyncSamples = new double[track.getSyncSamples().length]; long currentSample = 0; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Views/GifDrawable.java b/TMessagesProj/src/main/java/org/telegram/ui/Views/GifDrawable.java index 93668ed3c..5af31e03e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Views/GifDrawable.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Views/GifDrawable.java @@ -46,7 +46,7 @@ public class GifDrawable extends Drawable implements Animatable, MediaController private static native void renderFrame(int[] pixels, int gifFileInPtr, int[] metaData); private static native int openFile(int[] metaData, String filePath); private static native void free(int gifFileInPtr); - private static native boolean reset(int gifFileInPtr); + private static native void reset(int gifFileInPtr); private static native void setSpeedFactor(int gifFileInPtr, float factor); private static native String getComment(int gifFileInPtr); private static native int getLoopCount(int gifFileInPtr); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Views/ImageReceiver.java b/TMessagesProj/src/main/java/org/telegram/ui/Views/ImageReceiver.java index 95d6e59ef..d17a04b9d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Views/ImageReceiver.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Views/ImageReceiver.java @@ -75,17 +75,20 @@ public class ImageReceiver { if (filter != null) { key += "@" + filter; } - Bitmap img; + Bitmap img = null; if (currentPath != null) { if (currentPath.equals(key)) { - return; + if (currentImage != null) { + return; + } else { + img = FileLoader.getInstance().getImageFromMemory(path, httpUrl, this, filter); + } } else { - img = FileLoader.getInstance().getImageFromMemory(path, httpUrl, this, filter, true); + img = FileLoader.getInstance().getImageFromMemory(path, httpUrl, this, filter); recycleBitmap(img); } - } else { - img = FileLoader.getInstance().getImageFromMemory(path, httpUrl, this, filter, true); } + img = FileLoader.getInstance().getImageFromMemory(path, httpUrl, this, filter); currentPath = key; last_path = path; last_httpUrl = httpUrl; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Views/RoundProgressView.java b/TMessagesProj/src/main/java/org/telegram/ui/Views/RoundProgressView.java new file mode 100644 index 000000000..df1ddaa9c --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Views/RoundProgressView.java @@ -0,0 +1,43 @@ +/* + * This is the source code of Telegram for Android v. 1.7.x. + * It is licensed under GNU GPL v. 2 or later. + * You should have received a copy of the license in this archive (see LICENSE). + * + * Copyright Nikolai Kudashov, 2013-2014. + */ + +package org.telegram.ui.Views; + +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.RectF; + +import org.telegram.android.AndroidUtilities; + +public class RoundProgressView { + private Paint paint; + + public float currentProgress = 0; + public RectF rect = new RectF(); + + public RoundProgressView() { + paint = new Paint(); + paint.setColor(0xffffffff); + paint.setStyle(Paint.Style.STROKE); + paint.setStrokeWidth(AndroidUtilities.dp(1)); + paint.setAntiAlias(true); + } + + public void setProgress(float progress) { + currentProgress = progress; + if (currentProgress < 0) { + currentProgress = 0; + } else if (currentProgress > 1) { + currentProgress = 1; + } + } + + public void draw(Canvas canvas) { + canvas.drawArc(rect, -90, 360 * currentProgress, false, paint); + } +} diff --git a/TMessagesProj/src/main/res/drawable-hdpi/broadcast.png b/TMessagesProj/src/main/res/drawable-hdpi/broadcast.png new file mode 100644 index 0000000000000000000000000000000000000000..bd523d0c1c8621300f800b30a0a3cb0fda70e11e GIT binary patch literal 1143 zcmaJ>TSyd97#>nglr7T~m7v2EWYo@0cefp!+L;~AjmEZht3`TncIN0#I+tdS?J7Zb zAuOmMdg!fs^Pvk-WEZH1ERrCk3q<&mPeDW!K}8UqG1q!%8<;ugKYZW!U(cLKc5e+- zHCGV?5lD2&DZJMDZ)FAk?tXT94_=y3M+WuS{V1=xkPvk{3qitE2Ve@S`pEui*iH~- zq>;{`jIy2AY?D%b3{@~4%qEETEd@u_1|b4jIAB-;`SIQZ5*WHb?g=T3;>2Oj=o)ol z&uDjA8y(c5I=N*tXfN+*Q-AJZh5hoC`${2f$ANrJfTLJ*>u zpvHt55N0X1wJj2fYy=#`GBm@{EEi-Wd@IK@3|M$b?9J8t`IOwb;0s#$07zref^mhuTvnXqM z3uVFuqYJ7-vlQc}R0Jx@|DmS2i1ttl{)zXW!d`mBfpiLb_OPqr#`Ul9T{(Q*g(|Y$ zv~3R+tC-B$$o6u!1L8d)ps1Q*`Sv_sQTT-AA=T1gLKaA@KpBS4Gn^!cB}rnUT!>{m z+Qg1XM2t!dBZcB&PLzvW+17?lXrUrk|HF-!)Tp9;M`;Gmp(ZwS?J^praY_YL8_|U@B?&7iDH1;@*uf+R=ET#)@vNtCu z2S8mT@u>l9uAUM%>dj;zBsZTNIsb%_SB`&`0%K*Vz*%DML+tWtN<1mvjUB8VKXpA( zJDB8ZR+nX?d#hrHuPmAJ#xg4|ND`sX@Dn%IFWLT*Des@5_ceVP@2z;1d|r|YM4?vBH+o3_=py$jWR>~!l}8@^Y5(T{GpcI8+@=4aQ{ mc*WMS+qL@|TUzcD<&DJJZ!OfaGc~jRuOQLUEnk)Tj{E{6nQ({z literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/broadcast2.png b/TMessagesProj/src/main/res/drawable-hdpi/broadcast2.png new file mode 100644 index 0000000000000000000000000000000000000000..9c4837b895fe76028ed0ee710b571031c6698b6d GIT binary patch literal 1177 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 delta 2444 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 delta 2638 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 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/photoload.png b/TMessagesProj/src/main/res/drawable-hdpi/photoload.png index 8c8e0ea52fdad8cf2660d87b6474770c8a71e08f..20783e58bafad561aab7c4b1eada48b047b2d94d 100755 GIT binary patch literal 2159 zcmbVOc~ld39*+@`vxG|!bUOwF79^Pj0wjVEG6`Zt5#oZ1N{&egki*FY0$!xJG6HRP6rY>%O=1-pud!{r$e5&-Z?B zaw2zxS(-VS;cz(1@U2i3wuTyB6JzZAGY_Z7mbEB57L8Vj(NsPHT3{uGysyD@-;X`GB zAn@)XV%89mm=OhW-r2&WAYuZFDj8&QYHBJe)rX`&BxDMmPB(B+sot1|w<=AJ@-^Oa zmCG^%1gnIIREbIza=^gI7bw(d5E1kAZ3r@DM8tbyx$0e_u#}NCd?lGe0?9I&A+9&t zDl`iI&5aLgt9WTjm>dPG6lz3>)kEyE490Tz`-TjPm^X}_h!iUdKN(U8)iPL)hC@L_ z?1m(giWnR^hvG-&_|a)px?cc=LZ^m;93KibfW`FTQ2YayIX;A?vO+m*UpfTRK@7?E zWwQPKnep;Wyed}Yw`{9A**u)^%Xm}6xIpT0e72yz*rx}?1Vu%~fcf3`xUM6CX7v_er zJZ-rJ=W^^k2OZf2<5ho&{7+6bT@g<8gJg(k^ky zlm2IyC6uv;anHU;l}N_S53ZZ+nR+#uRxy`0^sLiI>$vgD`+e8u580%UgjvCu<@ zs@kpbpM)-1Fsxe6&gmt3n8v)@e(=-BmIM8Ei@Q8-$OC}7r!ktBI%E3UZ!Q-A_X2Ee zfU7M%Ag2(=Jgv;j`ZmEX&(jLe=F|Zm?s2;6X~H>^q=J8}t;(o$8gWav(z8-#_b=^r zu_KJp0-;YEtn}^(Py=)qJO)nX|2r_DY&4|!O8mWs-rIS{5MajyKsS!Yw^KZ_c`f#{ zje$$!KLqbN5Hgm#=v!PTKfeIF-Ir;>1f<{XvrV=uH``>{!keIL%Sh>8?@|Tz*q*hsmd1OO zh158%1K2-Zu%6gP3(<&9Yc}PnH*W2CO_-oM14lv}f4Yr4{Oj_EiNv0)YsRm3S9r(y7|@<Ff?K z8iDVdr_=3R49*%H+Z^Ohz_%_mv|oyg=pBA|#vRJc%H9y=}Y!YGwT)uohNnFuc4gPvkTToKZI}8$B2c8Gl3QZog zjUf}(6V>*ERYF1;!nM*SF5MZXFICX$#s^O1`-mtw{}}*zrJo; z=uonu$NSp@eQQP=2!o~fW-`b0uF1wmQu0-N^-M9ISt&FVYDp$z!`nP>WS_Zi=PQw# z+L@NFSYa_j4a@Gg6?&ael2D(lM+s4!+7~TXS?v{JS*P;1cpm!kDPd*b?KXVLAJEnH zwhxR(^74gxLH3W&@%1)``)0oW9P~WuS~6XC|MP$038|@Np-Yx`h&MWAXZts#<(e@* zE^iQ6|1#QoVoPLv+OC^-+$P5Ykq~WQ=&OqUHNjfR(cP3B+{nTDnV-K}|sb0I$e51&ZmBAt!$b-AP12RCwC#oC{1-XB2=79Vmi` zC=WrHMkql;0u_0PQxHYTm`>*ul}26@f|}IFhBGE6#_1MZlnH{omLc+RXpI9KoZ}@T z78R&G5|CM7>XhLWVF*~=IrYEGm9^svy-?^*a@zl1FZc2F{O3RCzvoxy_3PK1|AoVO zZ@7Oa(9zKu^ca9`4qtAd?x3?kZ9sV{4!;lD2HFf-3o3zYG_VDLG6bFBT7)VPaNb4m zwTb}X4fB2 zOiWBO8-04kiWQ~@4jk}y1L1PHdSrJN=obJ)J{lm<>3t2lm;!L{;6ZUlM#jUD@bZ7o z&dx@0adFE$Jv|rd>gsY~S0k|w(MW>W2>KQ1MC<}5PMi?!-@m_pG={wm8#Y*g^?hPv zV>5^B$^jTVM*_q#ygoLns;Vkiu3UNU@#Dw+qa6pFIdf(qKv_k)%N0-|0C~a`gzh_B z3onp}5ae=se`;!KHlNSW)&vMBn>T-NE)NR}`>w02>rdER2Koa$qzz-I&(IlADl_&^p#K%IfOs zuF%lXC&a2$!6$aJ_4=b7X$(E!cn#psJ_0w6#BNlzJ55{ zL#j+B+h<^4fX^8QT|}&^Yiy^iVWhIikseaTVsSAoG*H?%lhM94!&ZLz?LW1OaQ%E~{q1q2SGIO7IQ zLv)xF2*oS4`uh5Ajuy%D=g*&!<_rXZZ^R8D%6f&AvVwieteN?Y;4TcCJ_4i z`qYo#O^q6gcZ5z(PDa`U!pO*IGHJF`Ab!IS7Z(>3ZGnK+KY8+G>UkefAet1h=KT2< z+5*Dg-+#J}jt)LQ=2tJNs=6A`Ku1SMe0wZW=LNH~vzM-2yLJ=9aXm%Z{;OB7ihX^3 z&#Cji+}+(R=|+D*S%l)@c|4xIy2%Fy1{UV#=4K4_?@LNb^3@GNk#4)W%_hwobP!m_ zcz^2Dsb*N!rtXVw+O(-SCnqO;2pOVi`SRr=HoAs`gM%I22C>mr;Jm4ykPZYGz)VC3iL z|Hu{ul&GjESNe}X5JWDh4C@%-CZ@4?6E~8Ql9E-yxNzY@HvD1*EJl;M9v&X^Y0vyG z5dS!iy?gh5z~<1kW58_3N*&dF{i84?961g?{il44>Ck zf%qOjfS7*=)*`WaLqehOW^8P1A_W7TDUL8~#}DARmy)KKzJFkKK01y(E|(i{^ypFV z#fukTWb>w?qob=K6^^s9u`vNBUB)(qBS((Rv#_w33C$|7hPPrCW%Us*=&#_HlCNI9 z`kTDGypHh_Qn$3UM3VydLjd9=nSM~(HBhS1QZauUO-xMOI9@{P%*;$50-=n8Ko?at zRC_VVvbMIKot2g4HP#_)*|Nn7ato?BBth9RszBhhT`V@hi?7BLja3MCc6J8Gj~@>v zh3i>h4Mob18?4R}OY$~i;rWs!OJcD~ZH&!8=}M*2V0(M}d9Yau5CR7t!?ezFH%6S` zXiR^_VsRMK9ZMjJi;LF~2v|k8>%Wd=Qj{*lVHGP_3kwTFu>59>KnQ?Tdm-7}4A$^q zxFE2G8H=wPaZLo4^*TB_PSWJ=AdyHug|6&Fc74QTl_1k)3P>}UvW)Wbav^4Lng#)j z(a|R?Sg^nYHsu5Yqr#VWS+61Eys5t|#qoa_LgJnA@$r03fdHB9On|VP<`aCGLSQm# zC=)$0nkedzYHMq6hlPdx1m@T|S`j1sD87Dve#^)ZiIw=D1B5mvf3J?kZD<`>oNA0! zYLGdKBO)RyV5pUk6of;E4$a-RZQIARb)gt1?0%PXsB5_+mK+@b4Zsb2&0bJYP=bFY zd~Ci@j){qJ5(os#NCJg|30oXMD1Fy+se1t|E`7!VPApNx+2|fD;lt`Rb*=wI=NuUs z$@lW|ayK+IoI=Zs#BdLBLp?8BOQQV=5Nhb+^z`&}Le_Wh_U+qui;9X`&z?Q|kV*Fm z3JRLR=kv`MEn36_2WUTFS+s-zI5mG77*Km^xR+uQ}~|62gUvbr(Nig#@u!r2^&Cq9Ac~MMpCzHO^$Lfs__nGnElV#EdvLj#^QaTFHo7 zrojpn2SsZEnc!#xt5Av!ku3&fR}hi%5mTLD8kDb9zWP5q_c0q;V3B>W%buAx_wC!a z@4frmbIv{IzH=jy-$!thKDHOqH9PTQgLr^%XBKFG)y9i0jIg zE4}AJxZ}{0LTrfuQa<4z0O2EC>;n$Kg9i`lE?v6x@2sq>W)YPQl#~W$CqM||>6%|zg7(Ejm4;(slXmN0GZ~&PLV3df(;_a@kt}O-!0bgK= zCJjU4JBSIoFJ8PTPe@2m8dGo-7#KJ^K0ZEJB9YhtMine30*HMReRcB_$ySU}ek5fPEo3Sl`;@^I%538Jp9&J#oAVcI`` z{(Ql;Yu6r|T4srGzH`r>Jy|ay0I`Ao*inOk79^k%mzS4Uoj7qqWvXd5`LoQ-OgZi2 zkNpUN-(0;xu&{YKsnyP%JLRT6=Rkkty?gg+$aTQ!|3NPhAZCk`e@**oX=yi%Ay_hm z#Ky)Jk%>?o1QYq$h#+v{5i|}+l^;%2*vyAu^lK|9DEOT9F?`sG8PW#$h7tl19Uc7_ zz7r^wN)@mD+1uOucYF`2g@uKYGiJ=NM${RJj5Sy1@Cj0TIBgiOEONYuRJmMU#`?Nx zNYenFrPO9*WZbrxq;m4)$-6IJyilXBD=0)51cK%m@ue?~6o|+kO;!+3pFVx5R4N~^ z;WTs*2td$yQiVdHvY6z8;84Z-EE@y@HuDy>SFc{Jo$MfJ8j-SSnqY=`%pCxM5A?3V zjS{QL=p=PXeSLi+Q-IY2AYdyisKsE>U|}YLp_`jrmT8;D5*9~1HWv`cLB3{wV(|b7 zd~jtW$5V3wQBhIR%KAP}8-ydZ)z#JCnF|OSMrph$T;h2{jp5~7)u5eVA3j%&tLCnqN> za{^&)ZEeLsJQ1=TO+@ML?k+JG2&DZIiDV}2cXV`o#evYwO)gllV3xUnkV>U*2q9Eg z;p5}eEn*-l(Y)v8=H`I5%8)laa^#3CC@AP%JrkjLUB^oxQBhF_eXX!?;X->Z5giDz zsf3T2hLfSm$HvCq&dJHS`nta_E-wD3p&^j?`ufgeeJ>jT!Ri>Fya}PIHbdX^@ZrOX ztgNh0NBcXuTz)e;I{F45rhz_dDr{gKrP^sYk@=F^4I4H%^KoOCNO@*v<`qQp{rW=K zy?b{tAJ5|N@BgN~y}hP>0`8#vdmyM(kJ{C%S1;nrK^;GSydonbBWENS*RNmC=L-T! zXlST6>+_v~{&PDX9v&Cad_{GPOP4OSAEP1tTvn@9%r}?)?{E_eTUR zK>vQiKwKUKf|-YgP((z;5)6&xZrWNaJBsVwr+JOTHO8LC^)~#DTSdCRV z{6w)%5Qwr@%cbWNlB{Y<%H*a>EGiT1sW5E-3MhGpHF?*=VXfZhCw zK)|!U1zY-3p-{B)`EcjXovRzKkQ&g}GHv*5P``DIueYgsm9o+J`1p4%CW#z9dQ?VL z{^*;+)6?_Bh#**2_92?Oc@P9cex?qA3Q^asTepJw!B2FZqZ5RqqoW!>_#<;JYv@9z z3IYCSYFu1g5NSA7@k8T3({`;By-r8{5>>)c1+5DSgVsb)SucF(G-EagR5&?{sg)xs63T17;hOvR{F zvk3C}r%s)!HUK_1q#MmO46@vjN{#^I_mrE^XL`+k^X5$jmGJTTLOC)r(mf<3 z#NPqJat8$dqjeE$bg+N zgga?3i$>=wpaJ>NfKy|AW?n#OnG7v@34L{qI45mwZO=M7Iy6NoEiEnIs@3Xl>gOEi6*@z&r7^4OSAtYCbkcBKHK_%><@Q8@T zT`F#66oG106a^HdR>cKDDT08$0hhWI5GW$=M#a8AoW7ZNXYM`UIp_QRzJ2CyjR;$6 ziJpgs!C;obK^z{mvP>`19Qr=t!v>+{J9VHyy;8nGtraRk7*i~d1A$pO?x`lT(7w2!JhDf&dAN_Y&cK@qjM@OYrs~lgXX{5l_J5@I)Me=tUsYyooeC9{BuV zAZtqT1{#mU{cH=`(J={XwStDjX|-Cc)*CBV#^VT7D%He6Bzi#_UMjszE!26*R4&sD z98e`vN)&2|Tn3mJg>iC?nvQ`y{S<;!5gPi1Sf=`%C@5t(olt=zVDUJq)D+i8ZIzk_ z{^iD3wN-q*0>tq^m0Y6~LG{?+G7W}u_xFZOijX(7aHRw)iZF>I7ipxROdZUjW1t(X zSR$rzsa%3Dk?Tt(5vjfu0)a|o;kn)fB8AQL<`T%1X^yX9iEI`((1%IFQ}GZIk^;$O zCY6Q9vq)@TB9k+X4VJ0YLYWAhwkv_`e#ZLzEtbYsfTger)W8#Qj!9Sxk|Yd_?TasNblC#?AY$r%oE24`xH|7w=$ zBd7yS;+NKkHeZGZltB}tghoSj%P$`Wn<)(DF!{RQp6-uczHgO%OL)vVt817d=fa}) z!e{tFwN1-U3=DzU0w+AeC%-Mf6Fd7S^cqF8Bg*bkItmed{>|a_47i<#WZb@*#Ei}# zRA7)hS>NYwxzmUsByL%dx^bhIRPxw3boqUW;bFqi!Gkfk^{uMQ5jM%{`6p){ziX(6 zr7hU(Ik+XfQTAL@ZSfKoVEa5vf2pUt%zcK3!D_#mzgbw(P-J*RLGMH_wK`8TYs_*W z>vrDQ*>T&mdpGr>epBv-7sIfy7`W5iii>nJgY{+0o*na=RJ{eg+J>#1dD5)c5pIT% z8Ssgz3BO^(O>yme91MzkNS$Ho?sHsO@fhU!X%`38EwyatDR7!DLo zDet)Eyj@ZTgte7!4|;mk5q)(53USU@3XqX*q%n52>ph2Bx40{sy^DWYg*s#P&zj7J z`G;6sg7f|z3DH(9@P7BPg)55IBX+&C<5*qQv;0y^TC>XGhmN62cp4JF*Lr4ubWT&w zrJX@9?B{aaDMq)L+Q!age14{z%A&U5u*MRF(N{6bBQ9|_HB2#{-hITxYc!f@-idbi z+_lYJjR1wPHfw!VecZV&OWJ|38_2>T_wTn^AdHkY>tN*Wz zYvap+{58!V5aZ+HcE^q#D|B>peZzW+a|^Nvn!DOJ|0gZg+k%0;o;$bb#$z*8KAC3BxhE< zw-fu!3n?uv9R@)#?p9j3qIj<7ksYf~(A&GZ*3l^x!Tvpa^qk&)-kzB?4h@vBReb(V zvbVP=NhV8UHsRRv;B%QlarIV85tR) z_uAUV-#^+Inej%utG~bhhDxO(&vS54jUk*vyl}XxBBQbDkC8fd(>WAoAH85?M57G} zDL7hDA<4ZxfXSCq({<*=eYa+}x3_Dfun(+m8x7llH`|+&OPz1FwqiT(-`|~=m*<4$ zH&t)^N^eHHbiHY)eBO{f|9@^VY>JjMh)9dG)c=3I=i*vvg;_GyeNqWaLJ@etdvVryKA- zLETwn)tgQ&Q9MA6lKdCJU#HaUJe3}Bl~KFogr%+zCH?lBKpkuJZGGFs4|dWf?ZXM+ zjCq%#gPPfsp6zM{%MZTkdNqU5eXN^Papgic`UB`Ti*lXdVV|9oeg1LH173GklXi-^ zHM&3TN4qPPk!u@Ipfjtv>&!ZF$ocf;=&g2wJbBP=2mh!!)(rbDVs3ibWTI`~E3VIt z@rU%wKynmNVh>L%wy`UFr>eF%{>*81$}2^n_n|+Dw%NK<#Aug7>^t+B*Q$c%jIy58 zKFTd2)^)c$M|B6&XdKN*vGGMw=NzO*3tEwiKeOf_un=i@p|gkzIL-O2Gdw$~wV`4%5tjB-4%Wcg#KU8b#I4Ya${($SpQN?xogt__Geh*sG*LT~61Al9T anZaVscm1sHs2w%^!~_S1aZa&fGyek}t*}S{ delta 2610 zcmV-23eEMg65bS$Bn<>-K}|sb0I$e51&ZmBAt!$c@JU2LRCwC#TnSK=R}vnETaX~g zA%r8PfM~Jka38A>5G6qql~sg6Ib5+IrHJfGcFkfbD^kQ2RtO{lRUQbViKNhFR)xU&?eCPpcODigSY^oo?mQ0K)h>ucf7>>E6A2&0H?G8{WHFEY`EB`g3=8 zpJ!`pt7TW_m#(JC7^%b!`O8)1q1H-66?s5BoJFb{|c&tQ{edV<9Yk{@2{6e*xS5$vmRLAMk6Dm zh2$d^fU!psKpeyIu~Ab~b7#$(H9tLn{(MB*JRmze+ZjMvN2beF&`1E}7eRrbzsFcO zKstgjHa0ernVFf(U@&rJ0R)tQfPjBnp`oFF@9XP(0hgYjC*dKDL`|p=uq;rop`oGI z(b3TvFh5&mks*Q))wp!&((iS2bPNb73k1t(5!KZA0o13zzyD=mU|?EaUS6jx(`E1% z%B7{H!N$hMW^ljZy{k(v4k zCgl^NqM|Zq3kWFayS%-dzkn2q-&t?8qlmWF0)bmmogk zYf!_crlxvn(PnYT&6_u078Dd*A(tW30ii)y8STJ<0|g)2avWGi>A=81FZw>P3h#FT z@fBqaqRb-CpFi)JpP&DkrlzKXv_mSJ%`V}i25$wzf%t|ZQQm;My83^dwQJWho12>x z;^X73r3pr4WMuj9@bCaGhJjTqoC*kBW3_f#CPNDs;WY)tgO^U)$glUuU?Yo0t5nSuNttd zaYRX0^8`qp=?s4c!?Uuo@^47lRa8{y!uAOalX_k??2JcfNQx@+qNJpx?(6Ft($Ue8 z0NJsnFns}+7$(g*2!uRYpqNz^BlG6XGdy(Y&^Nicxu4FokFl|_Q3_uKg69_$6&00d z6A&+6yl9V$i;MU3^P6#k2-8cIG<(rMpm~e{|p(s7Fs0E#Qb#?Vs8ylO*jT<)>3JU^R9+*p-ofHuN#+T*G zmut!*2;dkScJAEyX8<7!GUz^0^oiCFJcWAR4r;}y5ve8!t`W%0o+c2Uu9GKEW=BLs z+!l4;-rj%S^D!jTCh96iDIjV={VXjlard}F+5n7>jt&+V7w2!?y0zfx)2GAY7{kHA zL7&eEXcQ2U8US>6 zceh4IN5_IyrivQ`6blQBMf^sdv|*49zL2}&dhet3AeE&q={8HgW2 zTdRvb40 zto47{kt0VEOifJ_SS;2PY51bUhYwo;kwQOM2H~^p*X(vuuJs$xe_~;Xv$ONzii(O} zQ4Ef0v$C?X5`@FTo}QjjX+|Xo$9wej^gf2>UjT@Vca;V3>ZNYnxN&X8iWT{^4@lzU z(p zd?-Lbh;}Dc{-t0I-w6T)&tD?RGBh;&Bqt}wWwwK`ZQC{j$Su71EnZL{aM>;y8=E$5 z`T{$etspE~v`956DJh5)uIGR?6i@ZN>FO-8ByS5Ap08ZFG8wDXW)ld=88{qHkePp( z*;2T?4j}kVvCi>Mi=bpLGEQ(bT5L8u6w#ecK$Mh}tS2B~6#6A52V`8J*)~!g);A9O1EJjD4U}t}4=LnZ$1O$N!U*2c8sD(CBe|a6_G2{w+Qd3hI zvI4^P?b|;F5ccx<1P?($5F~0$C5j}P@am85-@jiS8X9_0RC&ov7$f{B9$sEvo+LzK zCH@}(gf>C`y(kX1p><$!ss>i6UAS<89TpZ=F3Ek7xVX3_5fKqz@|_Dsp0I!Sefkj9 zaYx*$kHsVnFL0av^5x6du!K*X8_J1^iB^Gufu1CbL@5PL0T8agZ(pK50E8kYRFwzf7` zS64qOE-rq2?%cU2f=nMKlevF@!C>gRy1JT!12mg-EV_aK@V&4Ai}jE^sc1!K`d??n zDZ!I?FpYSd&z+r}&jGAqV`F2UnJa>5X=zPWjM_v1$b&IUMK#UD{=WtA4TKMc3=gZ< z@Vta2i9FK@lAwRlCYBE|PY_GRpD53U&(z6MrjFKwbxc&D>mY4n8%`Rc@*e>P0O8+E UuiMC|`Tzg`07*qoM6N<$f}%w%0HwnvBrSK; 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 HbE|&<>AyoU literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-ldpi/photocancel.png b/TMessagesProj/src/main/res/drawable-ldpi/photocancel.png index e2efce8b57f2285e8765caf782d1c91702ca8da9..857a1202cdd92a46c53fce191f755e1126c6edae 100755 GIT binary patch literal 1762 zcmbVNc~BEq7*9YjoK@?AI=~u~sz9=vkdtua6bexc1Te)ZIW~|$vT?JJ5E;a(RjM7e zYB|)77Vl!jB9wxH3RR$^MNvehiuI~RA&#^l#ZEUMwtqNwrf+8Vz3=V!`+fIpapKY? zKAv+t2?T;qT&zfj@AI4w$sK>EJ~)ry+iXmnh9x0d%%VhL0$+ouU?9$*%!FmIQj@=` z4dxLDu3BAk8kQza;HnV=Md{R`SPdo|O(5{1ttO>98^!XD4b+lnyj{Et2r8SbQHj|a&ZC!j41)DA;)OuS|iD0yj=Y3yrzL3 zl05EInlup*A}9Jf;1{b3xil(I*kj0!0ScEt)Ut% zS0<9YwuMWPSJ!!^Rp`9@4>4Ktd9CKyDpS&iyU zm<}-lPDZ5)$;BecxToVG7)(;>8)BpRb)xW;QLRc76{3JtgTWcsn6?>{!T-4NR&8@~ zz6qwvU^9}7s_}YggC@Xu?%r+4sfc^SU54uLq9}7jh&tB*8?iW1BpLrg(daZ>2}c4k zX%Z%fLE|vl5X7MgKnWe9v4woP1Y)r#INpZk3uz2GTL^+25J!r``C=A}&k=y2fFWek z_@W7HoY9OajcRzpt`4_5julAWiRB7WScxHMGJ@nxbU%Zi(BjEm*>sQoiW2JBr7Oh*{W}jvzM;K zcG{u-TMZoPM-S0k}&$KA(go6aq8P)z}&Wuqy{)i*Wa(^n~~e0aph zBQC>}Mg#V^zt|hoLyRVVth#I;=#_rqFP}0zka;%m(CQIFp_j2ECL^$ku)C~3WOAXK zy+)8F=5wn~EFm13>WFvjV?R4yzF_T{YjOvD(Wcu6JV)kvSrfdWg@^jqXuM2{)~QtxwXuv<~`V)^pr3lv0E(H}n0rkgoY z19=S>Q&UoyUtc+*AY3B|cqt$Cl3ZS`Jed~S?7OkKzP7fux~{Iy;$GC5(0yGa@LS*Q zMk)ERwx*`0590>5%0K_a>R$#9>WL=rj9H%CtlY;i zKwe+0eYn$Q+p%)h$yl#%4+ll~hg{m?(Rni7yTh&r^2*T*A_I96GjEwOokZ7CO4RqC zvqR)=B-z60?JoS_?`%cHH(2VL2TZKYly}qX165>1PTWh&}e(}h5jVNWO zPv?buL$c%XF9RLBqY!;p+x{m_&wfr_TlrplhCJ4Qz2Dm$;5xl!#lX<_>cCM&LI1Xh zwVZQX>q%9@3&iUlm2xdQ^UT$A7dJl$9XYroi6hir^FU|Bgq)t!9sKa_uY>x1aw`M$ wZ1fEXzMWTq9_Z)L98uf9As+j)xXHzvP?X*paqp*J(w%>uIPp@EU6Ap~-{Iq(=l}o! delta 747 zcmV-K}|sb0I$e51&ZmBAt!$VxJg7oRCwCNm+xy*Q5eT{wF;si zixwM2l!H6DgxkUw`J!IPeWP>wqBs5lBQ!z9f1wb35%@+h=r8a^B2z;UA*k+)MOZ-@ z3|1(#e%B~y!|9#}&Vkdo_nvd_uI&q7L^#L$@to&5_j??U1J-ajbR4!g_cZt<_z3to z_z!=$58ecSH~V8|ASS_=z!$*B490DPKZ4iECs$5^F{i+D;PVz%>?`;M_?yvo@F1=b zJNLQuZ@{ncnPwoyz&`Lr8*31^<_W2te;~$mCU|WIKuv?MYptpl#4LDbL>)N=Uf@AY zXbrMivt(6tA+Fj`gd&<_pTk0&Bi24(cn*lP_prjxo8WPyS@n8-$?x|s7K_CP>2&(J7C z9Wtp{VO6WuMMY7TR8?*Id_Khj0BQ}kW7WyDjBK{g+U@qTEX&tAozAMqHKM6+u+`pH6IB-;TWG7CV3AeDbgWncmXv&9Cx9Xq@zhDSE94I`1rqei1qiO1u& zqS5HIK6}iKo<`wUc76I-WM$B2Ur!!nAkc`!Jljfz%$`7=|thnkCVhb$)-~+P_+O= zEEehzN1u dLWo@f1_14s5;Sh?0n7jZ002ovPDHLkV1oa}S*-v7 diff --git a/TMessagesProj/src/main/res/drawable-ldpi/photocancel_pressed.png b/TMessagesProj/src/main/res/drawable-ldpi/photocancel_pressed.png deleted file mode 100755 index 50050bee7401aa2370d3a5ba21c41c0b0b073b3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 805 zcmV+=1KRwFP)_nYby%1YLy1d)*g(K*cvU-OO#*^jn-=t0wF{b$iI<8ZaJjqcnZW^ z4CG6tIf!VmMo?^V{iss)BGj)+`X21a7$!S2>&8C#9TH}Cf0=nR^CpV2$0A2&nfmb3Awh6Qu0?q+POpMqEpboq@ znhu`C6mUjR)+inU_wb!E5?g`Gz;O$6Py>p3?))XOrALQL77JjE09RR~%91#(CtyEf z81V2U4gk}A-WpB<$BZOqEJ#9;n4;f9OB@Cc8ufHKodY6oa5x-$IZX!XDW@eSjC%R~ z{*i1pdov!7t48g@;jlfI%iY5E9FfWH9n;3!j0%N<=61X5!C-I}KW8$TMV3G;7Q0cc zR_oZFBZ2w18(1SFfzz;^H_VAdqJ}R(k?s+RL?S1M0Jf7@wtuE$Ks2LRA}A1zMz2c> zVCwZK%zvZBtmb%!m_>or`8@EORargwPuGnF z6zEk?yaAr{SzrlwN?v(a)04CxflIO^Qe)!MxdXhjSO9Nl1=dzz<6Mj`@`@daDJZc7 zL@qyyUX)IgW7otgXabA>as%tGlE?HrDX$;yz%PNv^eV7Ig2WEss9u^4QQv>j52R&s jFp2&(u<3yk8v+af+b<5Fuc&&O00000NkvXXu0mjfC=p*I diff --git a/TMessagesProj/src/main/res/drawable-ldpi/photogif.png b/TMessagesProj/src/main/res/drawable-ldpi/photogif.png index adae3f8d4de2dda2b952174c05a0d85f4fb112a1..9599c4c35dd937b8b4609c74727d973764f857a0 100755 GIT binary patch literal 1719 zcmbVNeM}Q)7(XpT!7_x(P^auDI0J$9dZk}SEB1p*ffj@cm7w8h52(^!y&lqv1f04I z5u95zRWc{j>6D=|XQq7XK!c8n^8--PlIa9dL6nR+bi4B5_J?uFF1dT(=Y5~w@A=M^ zBx;s9A}j3xx&%ag@!1>epfD8YIkA zo*GhHU}P;5ge0ux4}pv{zPwjwqObDS5U_O4?#6C76| z*GiZZPU+N%pd2SKkjH|;^$;Hd`5YF98zB$~!ax|}Kx_zRbKr1}0O7(21c8$eld?t_ zvXCT&a?%zhNtih#X+hZR{QP`YK9_|P*=&wTByw@Ua5$wAZnc|9)D~{G22C+2Fsq(0 zT1X>q23?G3CZ0!1n3SgzA($*`^=o3Ybuv*@%Gfs4!sf6bw#np*Yh2q(CSm`$@kVW{ z)^5SrNthMSBlJ`~vVx|-RPNqx$fZbmgCr0}swil#0@vr6Ff*xANSM?O%V0DhN|BPo zhn0L04;Jx-9F7QBQDu;Pop-c{mAPN~BA&nLYq#_vv$#`-; zELBWlRc0%Rn)TR}T_a_85-WQv7LgMeO5%hT$8)DTATb9gacd540p-a&P>t%1W|!S%T6IjFl$r+n+hV5#Oe>Kb05!HdN?d#U3gxAA^ znW>2(sL`n8&Ikd3=?_#2sn&M0#gXud@47h`veO0IGxaw{z?a;Wd>yUwomFW*9^D`< z!F^Le@X&XTWjnU*t9M^5CWj1t9A?Xb>+^GczTd1oRK0VCwH4EUt$WWVjPG&w(Mx82K#TdHk+B|43W^!XeMTa{crNqk$)4)vNuSqKzVX4R(qN9{I5^Do-&R<#kaQ# z1FBQ1eC=)m-!&Y@l^k-w&2TF1^XqH;@@qTWv!0dQddxp~wg1Kbg3KBnD_}>_LTl{q zUH4)FLP!1R^hI%WOH$SKgvAbj|BfwdwA#9!^T?)~-Q8Cz+Oy2_)2dSz&z||nYn!+G z=Jic?FZU#e?s}*>%w0S@GAovFd~;BjFI@0`nUcmZ?JptDj2%d+I%PW<)c8cJIvTi~ z;YfGP5?+p}(OoNT&4%Zt$TVXzhPq~3$gbGOTV;X%tOi+SVrNc7Xz>wk=!nPtmcYHj z*^#wB_ChHNqeCAV7Ulk4?2Mlt6*Szry(NC*;kNQW9DBdq*PFE>D9oP7_Zo`cyo(iZ;+0+8@n>1MYwgIVw$Rd9Av3*w4fJLMjb!8y>t^ z$m?K>`{)OQ>timi9}|B#@X8T-K}|sb0I$e51&ZmBAt!$V*hxe|RCwCNm(Pn5VHn59E&H)j zX6Rxh6)o%{D{Q46LbgB<(rbGVLC}kK^1cVXc*sll^iL2k9+VDUHi|tsMVT}~Sq*Er zZuUcM#TCn**WQ7*VScI8>;oU(nU`l~zVp1#`@YXhQAcd!@t8V3h!fyyPfseSAHJt(=xTInZqM><;bLSrs3nCA=R2G2j0`|{RuMzCxJsQ66XQEkO1_NN~Mxg8~(<@5PeEEc zcP^J>g`R;wFQn6HM&XvQ%ZXSN-L=4~)#`IB;BOqw<}H=-;xrivy_9FK*ZYauWHM=Y zxm=TB=ytpPa5(%#$RBcKGZKkRM6+OCueTubYCS1pG>v?Z$8)>W>7Yat6wzoj*jB5x z&xw_I)rb^vD7lqFa-m$nVQ(A1-8nuQcG7>!1A zv)N=-$cZ1M2vm~&0*>*$5{U#2&BIVAbQh+dWjGx6Yqc63jYbRemY2XDzp~oErJGjv z1$fM_Cq8JrZ0`!~9iOo}EeuWhcVb)lD~&{;dh@rK2o#C88Vmy~SKhr;dR}vw!M+1K zN@`3rb)Eq&l?9+RVH+<6iVr_JT<)!?Gz2?B0+bwnxKjNZK7Y@t_b#3pb{PNw002ov JPDHLkV1iSpZMOgb diff --git a/TMessagesProj/src/main/res/drawable-ldpi/photogif_pressed.png b/TMessagesProj/src/main/res/drawable-ldpi/photogif_pressed.png deleted file mode 100755 index cffbbd2ba9c4dcda6414602da2cc62a73fd469b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 857 zcmV-f1E&0mP)q$gGRCwBA zW*A`b|Nnmm7BcmU0kH@Wa{w_f5Pt^ZUqJj8h@X>c7%7gB1!65ARsv#9JnDV|@k1cK z4#anfF_@7EHKIUl3&aX!gxCupJ^;ke@I?n9M_2=~8Ig{~2hIZVA&{M5O0E}9TZ0};n3hpWe0$O91sU!3sr26Foh;SS^ya!b|&Nq2_UwianYa$#LD;_ z;Yfuwg=e}@<1#}r-D)hIm(e8p-blyTOYl|WW-k($;ilXDH&{r3qJa&Y13;E++_8vkgVci5!LX>PC?}q53l9k)T%nMYlVktm$B*yv z@$vJXJbCg1D0KMf(WAw_zP`HKwr#^&94}a~VCUk+i;1Z>gpnP=i!%j@hzMP}bm4Br+^XJdso0^)=U{jxvkl-E>5dn7e zqeqXPW@cvY#9=fmvLk+z;(RMBE3*$DK7bM$R!0Cs?b)kWuinBOi^r%x$d34d&r(q0 z0;L6LJm1~Ab*m~q^?Ua0xlCl5_=fC=*SJ*e+O_LcYHDf(DC+^!#xo%yAx;4S0l{a_ zo;{^Pns|fki09Ct!DwksoH+3ckXivO3*3R(Pw?l@pFgeuL3MTY4oaJsKztv)WfcHz zy3q@OJiZ*gJ#mfB#r7R+b;m7oTFPVsQ0x30uB!Y9og8rti2vep#A6`7Kw}5o1LCWM zns@u5jZ#_wP?p?6OdAuFbv6U>Qz|c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPA){ffi_eM3D1{oGuTzrd=COM+4n&cLd=IHa;5RX-@T zIKQ+g85kdF$}r8qu)}W=NFmTQR{lkqz(`5Vami0E%}vcK@pQ3O0?O#6WTsfTS-KgT z8M&ERni^S}Sr{5x8aWxb85q<*uu%ez|sJy)78Y$)!f|C z(#gQU$<*1*$k7F+*E6rUBrz{J6=rWH&|Xs~BO@nc3nRRGt(=Qe6HD@oLh|!-U@0IV zBfliSI3vG6!8zDe!8b8EGY`ZEMGwTcE~!PCWvMA{Mftf3;PAD|#A3gjBO!l7^rny# zX8J(K=z|gmQeuG#0aGA|2~YY!4m|Uu<^gj|5io0~wMR;6o{&?SK%V&)OXWIq0vliWW zb&fUj&i{Qr0W4avW`UV5`#S1hY%do5@FE*&DsPK)y0uT9C>+|zcC_{4 zhxxZox=cQF+JsBoeZj+}} zE;3TnbGrVuA>)#>+9aj)AAkQXjnLWl`Evckf(mN^ju%a8>qPuaRF=CbP4u|a#u(J( zv&4dbOK!`ySz2!U0j^fR(9pe{Y|XFDte;B#3iL92DtuY5{+#?l z8J{J+HII08cG;MO@67l$?Vjp^b>3`z2Oj2kzBAgPv7vE^>8rf!vgrv2qssq;Hu5$v zw2`{;sBS_qYg(B0^+lz8d39&EzUZ91YR;9@p*#H_JlkTjf%Ds1|NQGMicwN89!=TM t^j!3o-NzmEkNV1wcr#nB^{?SDV6c3+#6ht`tr}G1db;|#taD0e0suOkCJX=o delta 503 zcmV-K}|sb0I$e51&ZmBAt!$U#z{m$RCwCNm)lCiKoEwLYElnq zt!SwzA`0z|P!(^y@Xkl^v3wap?VX5%2#N=a*lIl$1r4qBUzotOm40B4Qq_fF&>%@tg;qz#VRt*!JCz^WF0V~+NAowQ)pVkThw_bI zq9a5@z!$gHYBIOQ+qD9_f9j&|) zXM0nYmG3u^V$~$qRdM%@6P0yzPpDD0FT5JqnW|G36Ke<{cYf$+bjeXK*C8RdMf38q zcekKeV*yt}K#;xLQAtvbBUzB~m~?cuz+J=w=ytXts-*1Yhkl#aF*`n6Q1B8UbNR6x zQ<@iTSK}1yQ+=!E2Ih9jqs|Em8%Ia|92|k)uv@u~vu*~1jx|fO?_ZsUbS)Z_>|X=M dgGBrZFaW==a>qP*a{d4S002ovPDHLkV1kfe`H%nr diff --git a/TMessagesProj/src/main/res/drawable-ldpi/playvideo.png b/TMessagesProj/src/main/res/drawable-ldpi/playvideo.png old mode 100755 new mode 100644 index d6e7a1d3888be76f3a4981faa5cc1a48b3362fca..8521b0d7db0ffa88e49acd7db033fa3d9ca9860f GIT binary patch literal 1628 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 GS^W*w>Qc=B literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/broadcast2.png b/TMessagesProj/src/main/res/drawable-mdpi/broadcast2.png new file mode 100644 index 0000000000000000000000000000000000000000..57e7d3b31c81908dd432c139763bb756b7e81e3d GIT binary patch literal 1085 zcmaJ=&ui0A98XsqqdHJ`(Sh`tA$VAuq+Odeu3LYk-3rU7U70;NS(?19VapGbH=FI^ z^x!(Y4F3WTUX&qvk)aa@^WZ?3c#t82;K767kGYG2SYNib^I#3Uy!U;4KA-Q;x0D?j zZ1;3}2!d$O4DmUXWD}nvjUgdJ%$*Do(*16y>?go3M`{ z+@z8(pn@>WNxJG69gN>r4a_Epz5&}1rD=#j5l$&ul>GYS83`0QN?r&Fv|uD*Ng0|q z;pqHGUYehlA~HG95Bh8l3#br@z*c88i?gHTo-T*a&NW4XJqVhPlKVjwge*wvCIlfr z?UU#*4Z@6{3HGoo+YJIVLsN8sVgf#f<$?i@ra|o^u{Tqmn=|m_Q4#fF7m)E6P6>6x?l@GXVQ?4@#s)0T8&{VEKIc@4H*h`sHn#a=9 zRIkRBo5vDr%B65Hl+)P18ePA_)8iZ)V~dT(;6n{hyNSnoO&fcRpTxrqAJ5xwi@&PX z0ryg@v-0!WkIu?Q;>O3_?4uKv2{Imh@#b@^+w**eju+dPi4Wtkm7AyC9(T(&QStsB zJmj7DPN!bR*1inv5E~2Ms&`zgt_Soh2s+k}^d|1Q&MmCAR<>Gps9VG9$3H#IULEUN znmy*>Wvu!B_W8x`OTvl^thL?Co?7gEM_il}&-85er#iM;ib2_x4wzkMy=|_Y!)ANT aMYvjt?d6HKV(<8C=Rs#uBmDiu#PvT#!do!_ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/photocancel.png b/TMessagesProj/src/main/res/drawable-mdpi/photocancel.png index 2a5aa52affcca82769ef3726ca2755920d33c19a..59df84729669d0d271b48363001c3bae4922b79b 100755 GIT binary patch literal 1948 zcmbVNc~BEq7++2~#1W*ZrOLV#OD#z@cXl~65Q0$xHpCjG4q1`~){tz>E+L|5z^hoV z+G^`TtyXlTg@B?hMy}MBY89_)(NT$1I#Lv9YpIGoHY&D%IPFY#X7|1Cz3=z??%9et z8EGLwF9rbs5TckVQ!#6t=MC^@zLQri@M4yUbgG8VBJ=2C%z^__J(-Jx3L}<}t8h%e zWbsKn0RVjR2(^aRDAQ3LX=Gy_9k$JAX3zkTFx_UxbOxLTbMbt_ln4ztTOg3oCqnat zN?2)5!3&6)B^ErZBtxw$G3XFIG(8DSu%Qfr5vMWGW-K&Os4WqC%!@L6&oKuAAFI%Y zMCgfA8s!`?g|y(HkPWkRum}c4TsD_45R1ieAP?rk9GJ)9@>pCk%IBdl3_g7z#+pT+ zhpJ@qr?wa=5h|c*Gs@u<7Z`&X!OMOSev3%_}^|kSDR8V zG2WYlGiB`xGA?AjyC-kTsk#j{n zxd;*R5Rrt-MR>`uoX_P+Qlxx2S1cLfcpg>&OXVSvb-Ga|%eBqzXtgn35#~m6(n&d1Oy{ zoJ6l^=m@x_YL!>WcOJ&-Y8S-s%+#J z7c~$1wN*CmMyMaIQ3E|lDeA@c9ba~~JaZ*$)bhh#H+&uT@vWhQ8}Fah^AtkR5qfW0 zr`OSPzf*>BZe%ciFpg!O+N1Szx4Yj)Zv-W21AhuT`wI!6r%+df_X1Z{T28AMkfRI5 zmffAa#nBt)-_4T^$ILie^$=U*+R$GXd13Tx(}LT*Z(C|wGutxN3E{JEYS{MW^5FIF zG<`E^cR$cDn`P#HzAk?GR-b#U7;W668_^jn)z$vDAE{d}rQIt#xHa(3HlJqsg|>oe z_Sl^1qdQMdoR?wm*zBz%%^j_+54z)C^X}T$lwvgAebCX7@nhdHr}LXTR_A=5hK0L! zC>NCYI=(Y};&7~p4M>(741G(5-;E9lNh}{#I<`V~GgjEKI~)~@iz%9>k&wEjL|N2zMMTko{rmGy5Bx>}L(3df zUS%JJ*QEAfP|LYG_Pa04n0M^DsqjtPS9R4d+7^BJ{ZGCw*QqJnXTEHm-xU>|Enie` zda$fHXjA+5C%&$AI2=bB8q^AEM`{ARc11a*ajhf3GrdDYLxg|pQv6Kyflp7it-JJb zLxbRx#>OjKD=VA0NlDFn$JrEMyl6E#YscZ*+S=rPpT54n;Ap|VQNg$8m)#l&si`}c zsg9lNv*w)C_YY}OLiL5q7cWvR_4V~CWAB#alwUPt{8t*@tJ5r&`~KYScY&(Taek1# z;)|Q+hMF4Vth>Shkd5B)jR zl`h7#?!dSD`=#19y-r7t6$RBr^^{a#8HeIc!0%oyvo1YyUvA!{9ur+KVXw3L+Zt@a zaS?DQ+g^!&njKGfOwE4d{f&XvFm2kctFw`t8TZLUrC&yc#_oqcT(Z9E$F*73H1~i$ zms>T_x;A~x#aSW8w}=!c<5S~HvkLsDTkQ)~5BFTvaaK)s4{dS|3J%&sZ$r!7i)Ii| z+$E7j=I;uxFVKwdZtKohReS|lcmB|wzTutiuXI4?*-)@o`p%Wkk2*gtTs)lina%#W f-N3JL+}aKJ0FIffRZP1d@cb_osTs1`WNrChQy2NY delta 1739 zcmV;+1~mDc5B?31Bn<>-K}|sb0I$e51&ZmBAt!$ZkV!;ARCwCVnQcrIXAsAiQ{IH4 zV9Q$&O+gY)8j#l@dMzp^1gtdB9&PLwLt<4*+YpI1ga*%1%h{t+0hMs}Kj*Xdq=)WuD=^92KD&3j`@7lMd1mIZ;LMaqj~<0% z6AFLzhq^;un3CLuUWe+St0>M8PcEwl-G67b)@P+(j< z5}VCX1%GUCa8TRa+}zsI(sJ|a)vJS7u3Y)&%$YM}S{!#Qf>d&`^hzloWYv zY^=h`$%%KJI_THX2D5+3=E8!>;DH29t=%POjO$2 z+dHyD#nALA0|Rz1Ht*87t*!0%q@<*u@W@9v3B}pj+4At=!>gmBqSnHvWjORRbSr;U zZ|e7Ro&mcL8HP+4?zbk&_Zcg8r0Wq5d4UtC<=iKo}Sa^*_-+_`i8aG10b zIxYy9SynYRHufMZE2}6iEv=1v!P3yspzG-9Xpf1B@w2kBT82a3(DLWH1YpSp_L5~Y zGBOV2c;to+8{#l*hOXz2%O<#j^8Wq%_b3{0 zGb~^@t<`F8V;BVe^nbvRMEW># zl0!e{W{Grlb!}dvd;3;zZ|}gSrl#sut5$t0a8l1Eh{>A<)LKk&%&V%xI%x?sfL;*+1DZ zOvdJI?!tu&x5fG+58d0_+c6omxv(V1jveb}!(ak_l}3$?jRRA8iwS=kK)F0LlK1zd zge9SZfbtqDz38Rup()zd)^@u&;mp(1(;623*v-vt>G|{Lf5o*PNCC@>PN&=9=;-(g z0pA`UA0IX8DLO>X)p zQ?sR|rL`0nC7%rs4_AM}vezkkpy*T>`?NWN9NC%&?l%Ouh=}>-!W#MP9zJ@6goLcd z3%$`?U`!k@@xX>hxMIbMmnDKV_^fgC2nq^%!yIU87g$?c&!ff+0UKr!Si)T@SW_X- z9B7qF#W!m%%2*eMLmuHHC9IUt3WdUp4Vz@Fi9sRBi%M=WS(ks%I6D!#uCDGKF~F#P zma$=@40Y2GK~tp2&d&B1dXdu7(iY0PgvMDO`r5T?Ehy`ogx)7PIoX4Ch}sOzL>A-d zF@1qhbko(<^-FFR338kygvSsJ3!s^XI1DROIen345|s8nvjvt){(yjhAhugHv8Jn` zkF>P3L4l*e=rz3!k+w zDJe-t?qG}EAKA~<@nMn3uc@bK_mRJeJFxqnRuEKPsGwY9aI>E)-G3wo%@O`O`Xj0^76{~`1slv0lRzm z?$=UNQ&r3jXxZRHK8q9#Yy|$K3y(6TKR-YJ7rc;{r2yTsWs4`S6}M>7B0g6jpWSZC zvVwsbG%bI|Y~@=5s3f`y3JR)s?b@Z8N*zcp23Un$E)U?ltlZ<(r2Wr3SM0JEK_}4r zLHo2wgWNzJxKs3v)Ak5a7<-;}y{`*5B}*ELnqgaR04< hYK*QS>Yo1!FaW*SXP52`=L7%%002ovPDHLkV1j#ZdZ_>a diff --git a/TMessagesProj/src/main/res/drawable-mdpi/photocancel_pressed.png b/TMessagesProj/src/main/res/drawable-mdpi/photocancel_pressed.png deleted file mode 100755 index a6244f870a0a4801f8b5692ead9983d7cdc5c5f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1852 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 delta 1776 zcmV-K}|sb0I$e51&ZmBAt!$ZwMj%lRCwCVS$$AcRTO`GgAfWT zB&{D4rNc@C$^yy9Hm0nolr(KF%~XFFGb9@Qu@j>W>Hy84V=_*~G!S6sszYdL5Qx$c zh&no;KpMG(xEYo#EV}VwGOYa$+-J+S>=(<&nfdL#@4k26`|Ww>o_o%D4%`Ig@#Dv< z&_sU#AwU4&&p`43PyrgC8Mxx$;80^Q->T<1*hq3MnpYXoMOIE%1DAobAb(;~3FGFg z(WC%keyq2*SKZjy*xc0A^vBJcH+x%KTmQar;R0!v3knLF6&)SzD-a00L?V%3#flZe zfPjF-dbhj+90yA5N*F{*i&=n#jt2(^wbg&s)#vl_@|vousx;R8>4=C3@9o>S3pZ}u zDE9UBe%i8SOKn$I*U&`m|IndB5mKpC;^pP# z!-f<l zO`8#MXg8{15GJw`T3{g|A;-CClvAfpt=_b0Qv$k;z$^T?qk$<%9zJ~7N8W&&W&wv< zwOV}_-7w&z{}F~r>F4OtqviH?UA71mr^EXBmN#v{{fS9HyEIUs)oL~V{{DYCbTKzW zq@$xFWyz8yOVRxV$mKQs8vS6Kt(!??Ns5Y!_~o+1JBcn*m&Mc?*c9BDKwE31O~!NI}HC&P{@A)vU1QZF)zXK1jtw)Vcci3=7i z7|9k4?Ui1+IW0|8`uh5`K0ZG4iLle~@bHi&?hK1){zM;4Z{hUmu^TDBFip*a8Ip!M zBFrH&v&r}3!SRL*$((YMQZV;0?bF3glb z5pH}eac^WBiH@FaZW4TTEANM?&CbqlrH9)>z*@n^@f1(EgZa&Q<|dH?r*_}IeNt`; zg~|nPZf>)vFheFmBwh>;4-e1}l#R)b9Xsl<0faAGwoKIC-Y$RV{{ZjKkV&g1gD`wQ zU#z+2%&IW&B95Sl=)9?kwn=|zG6;*s;y~8DOu>&gI=_-* z76=4;>``y9xAgS%q_d(+q9gJqEmdB~Q((smnQ3H`lamFEEM@Lj_;|RSei9QCV`m!S z)YQ}%y*k`ziUfZxQ#ySO*@ghA{nD92mQw!E(9ke;SZtWn{YXD@xm=1Z*l8vZK6vn8 zA}e1}b@TQZ!Z?vj1(-Q==FBZADOoe!WOH+KLjnT>h3IwydyHkx94mQp>(;G{+qrY+ z^V3BZ&-dN7ZQC1sYy@bH5{8z^k1FUj?B2cmEjVodsV095oAo+&>=*_09yt6CC^T7H zW06q-*?fP0|AVBYq`dO-@}8;Mf@^AOQfTp0P650PjH!`0jx+Z?;4EdTRG33Lw0J7a z0GUM^BYTZ;7%*GC)YCGBbDxo>sghY%R#pi=T{9VE_wV2T0(HUMx%eZhg|LlEXW)7Ai8zy)`pcSUJ50m|LEMiU{URF4>Kj4hT>3lE#{KsNRH=6ltDgC<00RKg@6>Y< SNf~qi0000aUrKN?QRZUh_R!v`D-^fhuKO-Y!b$opMIvX1sTL!$;)6;XG!N4soEqQRLPpND^z5pcW-ZRPjGPXDhmq>FS%SEq);e+UbJY@$h3e-vjqDu z%oqVkJS?3|^l; zeY%NbCPJq17=rHmaKf)tz<^b54%e?=ucMW5%t(rhi|;Uu%KU|km@9zFdvJ|y-n=;n z3mP;h;Cb`rac|wam1=EmZ38Vw@Uay}f|c{+$&>Es!ivRWdn7O-_A_k0_sp3ylT7Kz zkt0FK5iH>oO|`YPz3OAs1&&^=$(FIHw1tF(1b{P?k3S)Fqp`8Eb2_jDf{EkRzmJTJ z>_|>dmaq}%vzpjBU zE-uQ`g1WuZD;J4GnWl8UH;}~;K42}dB@a(0oFR9$pXtQ(7LWl>`i^x>ZQ~dXbNI|o zVo>bG#Ou`^NtdR{5$T%v9qX9d#!=W+0VDqu7y?Wap}9(ZZ4qFmPDe6-{(J!o{F02> z%gf7#J?(1AS35{M6jMnfNI~22b-O;mhRQ;Sa%+YScT)$)aGmz~@ZrNYYSYuxO$w(j z6gnZ6RG1;BYo>w-fSq9c-P#5sI@AUP1o+}@h>)-DW*5MQv**vBKQ#sL#*G_Ym{WBl z0pCVH(a+D1;&Gj}ffRFh?%a8i-6&Y+p^b!WlNMwOVC6I?H6ieVq${K z4LC6|F_1BbI#mMi;o*@_2JH;N1Ix_?cFmeKcJM79Mya`z&U662No{Is>LyD|OP)CZ z;~*MNwJWe)c6WDwGzl2_Y8H8+9pw1&<7?*{7U`ttDhRsI;B4tr)+MOqNo_<##JX+U zwz=HzSkCBtGxk5Ra z!Bm=^HZW7liUV{ivbqnMB&esTsOV3LMDo~>N)eeDHYl-=kB=7v+5x}$9$W9Xy2k4D zvlq0T2JlbNb!W4*j*gB_9K&0X{L9h4)MTIj{{D_guG|5+%F4>hnz_{n(4XKl8R(Br zhrys976G0CZLg;SqWV3u_m>dr+uPgQkzKwsDVN)Ts}`_1nrzjmz^t^lw=aQ7P~|h2 usc&eiOUUT89++eka*#Cvb83)81XR=x5|Rysu)8r?NH|0w-eLhQ zDn$p&NV%#|FFa6C@f;7dimf8zI68Xk2IPn;9*%%jn$%U7 zVLplEpw&f1WHGKk|dZq8G%t;E)kH48=6L^fn+=xgTs_@ zcx)z*6U1Qfm?BUX$Y2JEg@G~#H)w?8b6B>B$rJ^0WgrhEkW!XV%H;}qA`ld@#T=$k zGJ=((CR~N8;Ssw!!tO9u`b8`xHo__#Ge%)p(ntq{Ctx^cO27<&IFb!0RB9b+lWpZ0 zidF&}bt$k$X2cL+Fu#!QGxlY||B8DEtNA}UqZ7{1ZO!qoW*IpmI?%TL)cS<*X?S3i zm>4558uBxoPGaIXa)~g?a_@H0HT?vk*M)elqPD`Lda>k}I}`Q&l!=m=`^ux`iORIs zULC?q)ABzeHHM>k$|U)fm}A&<0fQ#Nlm z&|97Evj$S!t~b^^TDUyBn8j&v|GIIWE8p|I^+Bs?8%5ysXKu&nI%6~1;#Kx&RTh2o zMo`e>Q{TV|_1O4$V~==l{B7C~`qmC+M)jFmPhJIe?qAQGdK&L`_C}JW$Z@-_-(129 zPBo<{C)sr!m~?Ey=_@HQtFumrf3?ehp!j~P+ilk94i3Bh4B{R8?uz@$hc3OWZg*|u zoYIUXV~&*+E$z?RQJr1M38Hkq+|}2e?_^)M_+XM#FF&whw`Xj+gWj>AQ&g9*BUPZU zBZ0sA7N%ZK@Z6Ixbw7$U+bvVc)!MG&|U~HiHON8#pm}0dAa(#$$BT-t+CdCT`QCy**sp+2JHjXoac5A4BZ<(0}q+vUha1G zz&SN%;3-(cOV%eQR^=nG$_lv7wS)&14V?24{E>T|?|<~f-j)J8 zY1*d3Jl7w6To+jT7wz}6rgd(BgP$DnQaqgXey(+DE&EX1sf#g={aJ;1Cr3HHgs-K}|sb0I$e51&ZmBAt!$Z14%?dRCwCVS$j~FRTTerxgW^z`&@ zG`@d;C*T0sGm!iP+y<0@4CoLD1dR)RuhsJeI+6@V^ExBytmV%Yz$M^3$e&qN!kByy zn!`X4KQ=Tpr0DGIly!G^|9SoT^`UFmuKnBA)<&A;+}+(b`uqFaI6697`uO-bdV70| z92^{6=1tiFlmg`|N*F{*i)nzEzN=KKk%oVUhF@}XbGz&7>y_I4XA zAR8MS-gH`kuYgv)34^QzO*&vPF)^XKaN$DJ!Gi~z2L}fy^|k+^q9Whu=xDK}rKL3+ zk^)IO69(CnXx^fJPfyRUF)=Ye;FXVYD=2n$cE+bpoq9DSBqSI%EyU1|Ks=zAAJYN=Fu18?tEKtO=V$jHb8!-P6uYFUJt zW+ju8laEqUQwxtBJJ!Rkvb46gDtmi-e-8}}^)N9p*@mGPfSRY81jv#JoFvUACntZC znVH$kt)Ya6huc6)r)Md*j#6D+y=VXa{o&|#0ulVUaDgd^$H&J<$s2I%Ea1?r zP$=%Ay94<23Br(Q`Z#_1bnQyJE?oqQQ)B&9@}>=#&6xzWO9Oc$BO^+Cd;5P(x>=ux z!A0d$i`5>dFY*5V{=-|hZgoR98_3}`97!M8W?S?nyV6onP{2ob{xc>4?HZ#EMXS!p z$hgcIm}F;X_hECPV2Z+6chc}Hbm7jOJ2wz`>2?515lzI{2=V-9Gxp|l~ zU>O}99pN{Q4O3H7lZNKbH2C&Mb2}X(GlM3}HaGPgVPj)sQ$r_=UDK2&d~e3V`TK7+ zWWp8}7FImre(L!7`8{K(WT{+WYHGTX3NuFdpk3tUojZ3r%ny{8E9HOX<-w7WkuggJ zLA*3IHJw9XUZw3bBoYZ?RTysj_U&%E{CiB+P+3`7^0fPOB})<%6y(afmxQc{ z!8toSyHd)nW3c^mSy|b4i(N+)Sgk8r5@bKyShrn>yonrg3wesPv@}m$CykAbZP7%! zwzl?6L_|cbuJgvl#W{bn3K3=Q9eg}IGvR>)2Lkn397MXfxVVV-nN?L)Wl>R4Kj|}P ze0+SsygD3bG?R7+1X9ZBkZpJ)wRcNTPuDqeJ9Ow!8?{zeR;FYs`lkF|US2!c*TToL zW)S`e&Bw#T!w+0sTs}v-G_~IDtgo-{T~}9E5jR`i{P3|P6k31Ip#sd7En95is$N@f zvN<_9o{a1O@R_EpnS@H7+}^!=LyjLm{^EL(#q({B9zFUd`}#F7qLDDPOfF7JRm7B( zl(*qy?bn(tY}T@*q$CcpgE_5RAb-i)8nfp-vUy7WuyAtWnjWmx7Tnm_co>V{k$f)j z4)9owM7YRr-vfWnBjDIfg}H=;1edii17sG7jO=B`;faEdV2SvX!nrR=(^Scx)MZ>9692Qxx$^C zocLIQZ1xjPnq4+wMw$*|;`x%mz`#I%etv#KR#ui=m(+iXObld$L?V$F8={S>lzD_D zMcZR9BK-!f4;DVEZr;2pudAz*b#-+ON~O}j7PHU5z`$n_0B!T|@DQ1sn{Q&5hS{b- zhd#^NsB}G8{D7N1tJ}Ts8ri!-p_n0VZEbDK>~f)Wvapt1*5BGZTcD2(g18+wdm_4v v)i>N1x%DLvpqKmq1XMn64y~T~p8x{@r2TR{V8JC600000NkvXXu0mjfa1jyc diff --git a/TMessagesProj/src/main/res/drawable-mdpi/photoload_pressed.png b/TMessagesProj/src/main/res/drawable-mdpi/photoload_pressed.png deleted file mode 100755 index 5cddd081060d4ec291313aa4f3ec2d5ce858af81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1719 zcmV;o21xmdP)JY=G^lN$r9e;e`tIw!@4eqU@0@e* zIgiVkp|rNP252-IKQ!gz+a)nxhm{mVgHcFX=vjVrZwS6`^I+_H~06HEV z9PGb-{d#SFetuJ3U0ts+4-Gh*h=>TcprD}jj*gB_4E!#@&!Vq##=tEtEqkHWpU_(;HCc<-bPw!If!8hzvWhAspEV`jly)0CB!b-jN5y4%;+*PYMjd#csyb;HBMe=J_ScywC8q*;Rf4|3|% zsiJe|&b4r6SsEJ~d!eMq0RaILp-?D=&v-dGITcR{44d5tGl(J0CM6~PmYbW~$(bWT zlo^8QwZS1j7YGD0XxbIfN`t^G8f2m=%+Aifnx3BC%9&$PsZ_%NRYB9M;DoDSDy@hn zx;M<5JeWckMFVoM1KHg+gpg21;G&D%jfHTi>{P^*j z7Z5P523x{Mz<81!v@a|ytTK1#GDSv4M#fW9Q?D_$V9cZ<9Wb6?C!S;-CWD?cXU;U5 z!Q&HXGlywBg`oK${^6=wD2k^odmI{oetcn5q5bz47VYQ_KQ$j%N8cMwgSj>R?I2J5$ynbzzzz(4_;?k+cnF>pSJlCr+HWheb+>q5ksn z@(NR7nYp?%;M+WjMAAcArbuz%zyX=57gZ<}wfdk-OH0dRV`FcadfnjQU@=vQ$aKMa zOB>d(V$;6TkdTmdGjR@rM)F!b5!XvfN|eWr9lJG?Yeq&!u4US-rM=b!q*7@H=IdQz zvDg~}R$RJt$>fzAlGi#GhJ<7)GlAW(VS_z<%Zn*B?Y&YJ7V@{!T|j}R&`&{aW^Ce z2O!-=B9RU2>ILZU@R@kD$EL$z(uYNW$3xp+Qu*k^KC<_h5NbO(IM|b2esohV_aU~w z0sD&~TQw{2ggkljWC=`yDxbcrzTshDsES@YwrUnzbrn)$zl8oTzyOwZ6`I-dJ}dwL N002ovPDHLkV1l#hHf;a^ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/playvideo.png b/TMessagesProj/src/main/res/drawable-mdpi/playvideo.png old mode 100755 new mode 100644 index fad4ea7313970af12c1e0bb4c9b6717565a40c4f..d1b0b4aac7d2d677d6140d3eff7db91a1ba671e5 GIT binary patch literal 1887 zcmbVNc~BEq7+>U&dQeY5q;w4)v?a-AF$virU=9+3CLjdFbFw5W#vB`yMG{Z}i#LZd ziU@M3fVL>2AS#E3Vs)e)wMDr+h~hP+2#$>CNXKqeZ2xfVOm}AYz3;v6_xtYI9g#Be z#BpBZ005XM2@^(}nRNyd4FEwQW&^6!U<4SCC8+gW%0R-QiH)0@@22qs|3j$dT8Y5sno6YtIVTb|IA(+m9sSGv}03#3tet0OPHKS@Z z5+xLUutiE-${K<&Aar_CQW7mGfQB0r=nM{rW9NWjDycy=S@Z;Irs_?;qYOgKq%^7x zgc{d_c1AQFPb9b$($n`L=nPWnM`FF{L!!u((aorV&Y(eboz5QDJ8csYh5h5kC$&v- zivgoYVJ1A$s3hyL+IJL8=I--`?24o}NQ6;M76sJ`ab=;)ob5 zSj6HmVGb*h!QjArNEE<;0|mSQ5rZ8#%JC^IlMloE05%`uKqNABJ};Eb=5hEC#Agav zFi$v&mFP_bs#jv8cGaZa4_Mx3v53Hkp#*M}Yr6x zAI+ZtpGW~VJ^~d7UzL30?ZQ6|)XH2t4_mdM$ZPP3-0GnYR2A+#w4Xl5v1(RVrB~YH z2kGnZ(*3_5zO|O?>sw8$YrULSSytEC(J{Q%Y<_j9SrPc{)S)w;)mv}*9IC5(S<%tA zv8}7i662!q%?Nc957&6bo_PHDu@A0RTc)@=t%BU9s;Cd1=IuG(+S)pysi}!xBs+Ql z%|F;%=EiEK-4EP%RaM{r++2Vl$d8`$Ejt$)%h0Nkk&(vs_SnjvfmA)KFmXx&vcqZ# zmsW_5oVs-1&{%i7KQXy!RpGTsJOy=eq~~1sU5~1+Khdnk@sram4J>8h!K|z->Dk*& zb6*BCxdjjXoa<|9YBV)nTf4ivFI1Q^`8Hj7+Dcl7Ss-Y+66sf4^6YI)n{b;a^H0Mn*OviSx4Cb4$4X&ALblPl#c@f%aZ6@dy{&ZI4a!}Oyn2yy*)soT+#%Lb zvLQcr`sLcOE5KgX(9Bm{E6s;E)VU<<5p8PA3eluLgC-oy_sQ;XH|GY22|Q+;dcybj zPoBJ2I38Laug^pBYirLgl++T-ch6>gzwnQUDb&014(qauecwv7bB0a=j({iXk<@iq Rvd{j@lZ48IReZ(fzX45%=1l+q delta 1772 zcmV-K}|sb0I$e51&ZmBAt!$Zu}MThRCwCNSqo59RT#c3Zy^k1WG&D3yr(Cbp|7oa5asv*2jHs28mrH>wKrzUlomIkEd>syvfTwJ( zr>93+U0q#YS6BB}Q&UsV_3PLFsi>$R&2qN3w)5QF+>9+OEDW8Uoh??bTq!g+H@BX& zWEF54$l{eSh>{i)0TG=K4i5H}l$89Inwo!FS5#Egt;|ikxVX%Zj*b>?*|Npc*w|QR zI+uX&fbtm=2H7ASz61=0hld9*T)1#CEG(?7v$Jz#ruKjQ_;HtjfB=!9p`j6*5(9B6 z69(DCIE2u+p`qdT;Nak&@yG`_9>v7OMEm5)lW%%^dvAbE3o!Ky5Cx3M`@QBgWWRsG zA!uxDZ1lv56WKmKK1E$!T_YUN^6=rqF|k;D6Hl+z-Q8WNrKM$uX+j||st{qO*`Se; zkw*y$2^qV0?{45`S<1`HyPKPv|Jbx?lbw!^&I(Mu3grE-Nq{Vwz+uwtzJ2?CNJ>g- z=F}*@zP^jHv$JFL^z;nn*|eq{Z}5L3pp%i2aV9POM;ZVdY;M`qf9-UMN2mnK~M`ue&Ng{qZZ95;XIH5;Ul z9655kwY61(;mgc7PiXjU`aqbyM0cj_!rQiOi-3<#g8N&>H|b-?j>)n+xA9E}?P^mB zh~wC*RjU$^#Pq9>y=BVAH*Vahh>eZSDlRVW;)5{Un*hq#XJBBk0H^Co!*9?RckkZ4 zsS4StvV8e+w}OI#Lm=#LW@dk;!-p+jy?XVUOv?h6({lCo^%A}wqo$^&4swHcTUuHU zA){L})AcT2zTCowYXmHAb2T+J?R?uG9^>MusHoVswzkhBA|k9+UFY1nbFFOXOoU&d zQDtRi=WMwsB<;3Gj~@LBiGG;9y}hBb*Hb}2c@33bM0g2JmX($D&Zd7~rPL9ddILy* zjVR_rn@O4L`}_O*WNuA!baZq?6?dkJXlrZFL&yznZ*M<{z~G?hbx1!SP55DCW@;fj zS&WQ~mcac*Zr{G$QbE@_&QXiqwXQnJLO+kIs;Y`ZLPE|Wk_{5xu?vv z)GpA~)tyI;88QiqBCoGrz1nD;%ZY3gL=<>eK^PnXUH+2rJ8`EYpFCK8EOAbbn;_4VhouXDNUR5ED|rT+6@0R{kTV8|g!4ZjKi O0000 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/playvideo_pressed.png b/TMessagesProj/src/main/res/drawable-mdpi/playvideo_pressed.png deleted file mode 100755 index 8c93f6d6f3c7fcb1c2793a57bcde82fc443a23aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1882 zcmV-g2c`IlP)`6pHRCwCN znF~x)XB5Z#0E7xs1Q|XiI-o6}mVttgD5!u!Ft7(W4H9Ei5MAPwM_5dVVKE@;;v+&t zbdgjT8P3Q=bl@1%IT(Tp@>B$D7pE%-lh=6dfAG?vme`hCI7xfI%kBN{@1E~GKe(K6 zN_~C3*WlpbG7P0dLqjw1vBG!;bGd`d^!A3l8ethu?lqp7K>v!K)vX^tE=nP z&6_vNva+&j%FD~!wRvg4nTCXf*sWW)Zi%I(r4<8y2jC}gt#I7Hb#--Hq1AW{r}p;t z_7oNtmL?=5l(x6G_m9{9rkyobZ0n46m$96We%skgWHa^7pnhiz}gr9pMS=Z`fJ?C>m1APCwWkjZ5Ed-v|W z)zQ(>&tX}xYJ>Ut`7Ld2ZE_C}4|_hJ@2FHN7x(n^}QdL#e4kbPE^70ZH85xP;GtO34R+ruj44d5sGx(A;o0ypR!^Mjin>iCCh%((U zy#_d>lYxPO1e&%5bl#Z2Of*Qx&?qA#<63HJYCUIyMWImi08{}@FMty+fT`3Yny6No zH~PmEx+ofugC!*;RdOata&mIySFc|EmBzH%qp$Hsn*znz?(Xg`iUyoXmIDV4ls<=m zX%X1Ic?TG8@;M!|v$KC;J9OzHeSLjHCr_Td!La!ulL}P8c!OZP$zmjfm&cABtI~Gz z`1p8teVN7+2!gwupr0zV_7;S6-8yXsNp^QjVQ&Tf&*@sf0 zFI{;0^l6JOuy2c#lanh#Vl3>>TPPG7vSG_eDh-S+d-CwLlujxuE1TF_Mrgv&*Voq% zg;MOkefy;2o$v15yDf}ac<}J$OegTd=WN>_meC?SJUk5Gk^cVvvvi#YrL2Mhb|K(- zjE0r^3Q;KJ?GSywLYn`~*49>_?fujcP+dc<7XjNaz#aOGt4OmvH#fKC$Y5U|K74p3 zIg>W`zk&>hHB7`uO77DooayNGCV_#0LB++z(K~nUlxTV%qv6+a7>+j~u%l)A^ywe$ z+O=yVoYO{=-&5Efc4+!S{b@9juz2=BNlD4An3$OBC>MG)xo66hDMll}FUXi39UaX^ zx?Oz=Vtq9d%Vi`3t(<%+WEdDW+ycj&fi~PipTMoHt$&|CfBwpuGiPdbh%&|y6WW*| zr>mhq0@zwlRabXzZtfK{nMZYjC0V<6?JOqJRFa18U>quyN+}+fu?c(c-n~-TX)aoy zaix4Tr*j$LQUd;&PUb?Wf1BGw|F9v=p|{HBE^m! zJ0#oO@No}!|n0!*Ha zUa*`^vkDCjbz`(!rb--Qu{ezk+6ICj%+q$#EnBuEp~$(WX-w5r+}+)U@GWOXsVQ&t zbO0`*V`OCHdJ_{9o;DM+RjjLNM7^nC2is)_2Zu**081p21oA=@-NHkM4lSGPCUp1i z-4c5UhR^tXevI0E3EJ|cqmPfzicOm~*-jR$tE;Q|_U+r(GfZcp-Ir>CVaqpY%afKN zDk>^))v8sN6Ae3m{(Qml&{wL%`5fjZ4<49skl1Ohq|W$4FrE{Diuvft5EKGCJM zA`?S`TH@^N?8tyN!f(Du>izb;y`eS_g0`ao{t1Q-bWZ=IX>4q4LK|L-T3U(Yi?Qs} z#l^+S)6>%dkoE$Bz?8Yv4$vRrGjSLXXw=N=vXlUigSJ=F2IAY-$lhN-Xl!9&Atbw0 z(?LJL=TE?%8p~E$1s;*dj~~y3Nzl%x2eZH7FjmD$%Z^V86I)d~q}u)`^nU>c06Jz> UDwdGs&j0`b07*qoM6N<$f>(WvlK=n! diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/broadcast.png b/TMessagesProj/src/main/res/drawable-xhdpi/broadcast.png new file mode 100644 index 0000000000000000000000000000000000000000..f324339211286e08617db0a5add606a8b54a584e GIT binary patch literal 1231 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gjk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n3Xa^B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPAEg{v+u2}(t{7puX=A(aKG z`a!A1`K3k4z=%sz23b{L-^Aq1JP;qO z-q+X4Gq1QLF)umQ)5TT^Xo6m5W{Q=8k&}y=laslDrID$jp{t3btGT(OrIUeylc}?r zk)sPtuSMv>2~2MaLazl*y`ZF!TL84#CABECEH%ZgC_h&L>}9J=EN(Gzv~YEE zGybi;P79L+kqo4<;}y(P^x(3V6rF%`D1z;e&~Ssqm?^=|I-KeBofpLIAh=6hOyfow+wf%OVcLW>xMO>{DoEY2`lvPm(i zu}LvcV11vFdr&YcI)L-Y`pi^DjhS)GNyQ3%O>R4^HqPvr(o-hi5xp=cU}33r$I^v= z^c~i;Jo8q}xL2sEE?Ud}NNr1zt-LRl3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|80+w{G(j&jGsVi;(!$)>*xb#)(%9V4(AC7z)!f|C(#gQU$<*1* z$k7F+*Cju>G&eP`1g19yuGhi8oa11_*kR7J(XdTNgZF}fG4sb`|2aOe#PY6nPEZs0t@yF> zg(U0c28+rCml!n88FvPra7yiVbhMH0aPGM3;LEPz6uj%5L&{+X1v}?ePj@&mOv!)U z5Ygdbyrl8Q?3n3`ts8iyde$+A3QfCoxkwqeS^@xd9 zOT!P{pv6o_o*i6tj-f;T-*JAs36~Wr*^ktE)C365ZE%&<__e0thmmKYL&{~YCy&ED z>~?x79N`N#W^s7HEuioAD4TI3*F1sGDrPDknjL8iKgM!e++gpB55CN3-uOdg3a^&- zIiZ06936ife~3@I5%1Og=<9_Ay$(e@b_FsW*%N+ncj&UO;C-@S?NZqn3lCV_vXsqW cXJCRP9~6 zCeYMqp%Ds&GGzyWp-9i2X@*$jolp$8Bb}{0fGZD^#K{#rDTMM9NMa#8Tf~cpLLr_Y zDWMBmi9+ec3B$Q^E@w5JFA))WGd4t}2u9E-)Jk6^%;Rr^ZzXZkQti}6Fq!8YN2oU&yCxG`P6UkI}FE1}QJOv;FB!EI9QwU@)I+a2P z0Q}d-5%DG!#L+`R)>mK1jN!ONE{EwPl0u;%DyT$>G@eAJ(P%Rq6bb>cAjp!$a-NbP zmO0HbfRKzY6~c0%M2w$dPYTPE=0Tx(dXvdC3KL*a$rNvYKPrpt0leAw^rThbIU3*AnK2#8>?^Yw-DP} z(3|w1R2KALf&5NOc=^MQmxo3*D>R#18^Y!R`8S<36U!VF>m$)2>G7@80S1?CQtZai z@fKHpM1PvIlI>t@pbOBJ+U7x+TaW z0$2Jm`8jok+I#cPvi!ktizRKOS5=qnv^=ekd-;hXjNJJScP{S0!)?y>nbf?5-n5!? z=h0VJ-Sd}eF4W(6D?oJ$-r4ISiZ(Tw*_(x=)}Z=0x&88t;Fl$A#$3WTwwO3ja%y?B z$B-fqrebsi*ml1wc7w}8;L6JtMQ^I1v|12-yON4MJ#eNsjN5@3`++Sg8#;ZfGp_DU zo`JS&f$OdV<*Q3{95m}))!bT>0kUV$Ev9`Hhij!Q9rPB_;1;U|9P+D=Vu_;2@F9 zr>@<-dv_^=!5DVSF(;@`xaIc`4yIPBR660Qp2kykb(8G^CQDUcU+=^28<||!mJsnK z)92g*dn3*E^ELIHDqyQw~=6z(r?Y;4?Ri|!m)ZE!!$*fup~&(EX( zS~|bh8etwB%{{QOe4#e%T$rd9Uyzq~bO=R!U5LRQjqgZV(p@-D%;DS$wo?ZTud>?_ zJN&(suzYtW7K^oBX&=J+_S|t1#X1NORH9k;}(4I-N3L z-MZpHw5UCCRpFz3cZ}4-mpfxTqH`NL9FD(whtptf$#8baa`))V?IMxrW5wCCqgyL_ zi8$fL<;ByJW(~)W^A~p;gCOGGU47JlmBG?p|Rrl%)T`Vy?)0o>4Wv zF#a!cVoEru!mK(5suwM|=py5}W%^ye)i#Wyr2d?QLGuGL4jyu7NG4x*i(a#sgiUXa zI1zqj2|fCJy|Hy^RK?3P$%NQ$S5?#xVC%5SM8!hD^B5OO2v^oYTU7)Cp=_z8*!?Gy zhBZ&kDx$WktNwu~r?+=UQfg}I;=^z~etLSkjIT<3ZFKF)QL9ynK6+lN{T7c7UL9ajThWS(DacWUW|Kkq8PAhS~ zpTNG6A}!6s;`Amf5#9STl@Iq}xraID*z2?EtF2<|QO`GPjtoKE5#H3`&w9#u`|L++ zDLv;O1kKOba_~*yp1tBq;Th`FnhoYLcC9wf&4-!{VF{Q_>Fu09cDC8smbJk1)o-4U zckP*j%l;_TGP)+vJf@H7aW4z=80M+%PDLYn^x!~XuMO~8K}+mAVGNGEK0cty`Q-d) zJnaGFVeWYKR1ZzsWaQg*oR!*o^WB5}?wPspRZ8TdYdz?`;A@gS7dEJv@A9ns1r4}e zhclY=PS&QPb~(IaTXQDL7MCAuvR#g~9%+mZs%r7Bu>_2+p2*;UlcDng!E4eUmN^ zJLeBs(rX7y0!LkpJj(kll~;wXslNI?)eG)b9;#||7rSl{f4?tE_SSjSRBPrP{SfDz z^J%oApqOhv=sr~Ky5kwYf9ju0GrPuii`>+|%>_`@ou#442Q|?%zlH38HDEO}X7|4V DZr@|o delta 3268 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 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/photogif.png b/TMessagesProj/src/main/res/drawable-xhdpi/photogif.png index 761339f012e8ff681f72451284c3b37b896e60ef..e6d7cd8c4785d31bc357192ae0e9f863ef95df53 100755 GIT binary patch literal 2791 zcmbVOdpMN&9)Haw>y}+f`0P5~;WMBCnu=;$nUjB|PL}BHduFxew=*JBcCNTLRKxA=4K$v?BGaU2 zeSrw09N=G_3ZVMHoVk1uW{p5uhN5gxFdH-iZH2|*a27BO3XMXdFi14U5{)BRVF)M` z?2iSPTjR6B2)<;>AGYL@13W?~F2{24g8lSPBw3LZ--) zBQRQHAcKNXKAR_Gb2+e8MrH^%PUrxad-^qm7#@}SCoxCxN225@LyDL@BpQK2#>A|~ z^#v^u`hx#)<1f(yS|Sfb`ho&(96wZEk1(S(WqI!Y-q0#g?hV14&z2X38BOMf#>Idf zp*z_DF8_jHu~`HPo`SZ)P;Btl7`%-w8jZ)0P!uaP#@3l=MM2|i*Es%4*M($jgR-&3 zpztUh8tsB5y5Mj`JPCy&Sv%Wch~zb0caA{FWSSrk4u2KFVt1omIprx5>F z++THB|4+`4a%YgM&GBE&vUVl!z}4fQtuGh;93GG(pBTP;G)fiUrUQV|W_L1?CK{YP zJ?yO&uGP6;8=Dtdy8W8ArFq}kfWV4zU(*u}1CbFfXzER4>Rr3TRJ9MvXOrCfGE_OJ z@ywzpfO1F`TK)21s+q6xufK_14uzNp2ra2*-)%5xxNf)A&dSbi*0JmHzWCzd zkFoQoW>X#%V_)kpiOWn>^T2M4)6r2!pBHbZ!%K~Fc%?gTdC%X?#kDjy>n}{#89P5T zlDcafONkBbXJ105j3ru<@h+aprs$yHG;>Q&v z8Z4aH@H|0wjKw{K2O+cmQh3(Q#U(XBn z%c2mWG2^aeLFDEJZnN3nx261d$kC+w+~liz8RUU`ErjvZgnWY$<%iV3kuv*}UTtn6 zT&o1t!cPBqXlKnlOfvC6Z~1VwD|<0UkzsuOxLBpQ5lftR5zhEQC#_^n!5Q6)r@HP( z$IZBJMmb!ZHVwl6OJk1L4;5|wAzQh{WB!mNHTIE5d;BogNo>(Z7u|!^1uNC5RX+jF z&z}9sOtka5yQinL=o{Hb#FkHi6_)nXdJwf5Fs=IbG9)p@p3Evupzd*Hjz%UVL5m_eH!2kWcr;_q91gn)evv{4$5V zkYa_mT3%jHRr=LZ&bPhs@9ypGwNIR3U8t_EhUutrx_|j4uo!ZT3_reO$BuJKN=o-j zOG+qp`V&2;?dJM^-*+oMj=alo!;b>*(}en7@d}MlMr?75w@y!vEi2^F>2&A&xdu`b zVxhU6om4|LljP!>t1l6JSe!=m37cPT($?;b%XWh0Rn6<`6?n#qpui|fHNh#k^}rHi z&z@fgXH@Lt84TI{(9jTMYV_5srS9(T{R#(CrzR((ZDU8su5`NehVIqdH8nN1*4A-I z<<#1iZJSe}dy}r{b6j0rKR>Q?RoZmN^fxjvKJYVzDusWcMwUN3RtY6kJH*Spg<=pjmwC;I*Hb$K=Z-)_8$7 z!;of19-8bQD@P)cxLadyS2QkWE82}*cDIDve>~2DnE888Y+G;0e01mh$|~A zqo7%D-n@YyhqP+6X;j6!aCE|x{C+cA{kMWey(3eDOap3xOX6M}2 zYka4=w;=LDXl=+g>P;x-&b=nVC?zaB{OOKrNqODUa@9=G`J z#iyG$Z_b_eR*(<0R^0Ed?f0<5kf5PFXselg46MTop(%GQqKRYM9_B6dm?~sZ z)|F?}=Q6Rf^2=KY$)-)i*-AQxmP%x-fOIXxvb#_V#W8%lN8{^4Qne=IgW|Fxa`>jl zvy}igqGjiS{N%Y0X(z7ujykC5@@~!Ls%ws?esuKwn6(&~ zse3KQgLj#O&aGPfi1=~EK+;%iSXb%($uqkC{1xfEPGwI^+g@qTbrvM+Q51wqo(+N| zWNFmU8Ve67{I{uMGMNzrSGD{!`sqo?&FOO9~T2h5xEOiIMhi`ih-n delta 3439 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 R7~cQ@002ovPDHLkV1n&lnaThF diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/photogif_pressed.png b/TMessagesProj/src/main/res/drawable-xhdpi/photogif_pressed.png deleted file mode 100755 index a02c378422fda8af98aa20809b0750df465b402f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3693 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 LNkvXXu0mjfaAqv| diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/photoload.png b/TMessagesProj/src/main/res/drawable-xhdpi/photoload.png index ca7dae9db268b9541deef64869b9b0ee950c7794..a72fe3e145daec8f92b09c30fdef64e1f538a3fc 100755 GIT binary patch literal 2523 zcmbVOcT`hZ8V{g!a1lhRhNuVv$xEn-L1UM zXmnRko~MI7hQeaN$?H0BK7%bpLm=iBd^VX90P>)|pdX!yg-zEsz@T(07Up5>064I5 zpg-Lgn08kSo9BF7|YHF$vMFB_v0iX~_lmXHdV~D~40QCC<6I$a? zX&7fb;kzxNgoXL@cx(&;5gHl_4>g3dIDQBu8jW7(K%oqT8V1}jCXdWFU~+eDFyKKh zg+pia=qx65ossOz3g%&9LQlViz+gK#{2*p>zb8tVG6bK@Mj+t;g27mi>#H`G=M4VG zjh||BUBlQQ!WrbUf;kjnJ!rc&z{1@9wV`!Ip*I*u4qaFjav+{X31)yyo*fiXac1$jh%%p%DcIiU9-?8Yw#A0w9kj!IoTv@EZjSg_~XYp8E ze-;~xb1{ZGkSTQLy1ZVVZ_(mG4m|{<5;!ad^lN@G^q<%#SpKiLzhSBWPtFiRXAtYn z@n6ldaU|@(_3e+=7YaXy2V@E-h9ew}Y`Cum1R^eDhqrX)_fK9Panx{AYMY)CEk1V) zkbdE<RsyPKUwN7kdqV8MOsl%o?9Qm|TaTn%ypHttRrf!wVoW+oxaGrm z`Y_IYId_Ort0P)7`A7NNj^RJaS!BP^w^M^d*pcykpAeeL0W|jsHgqa`R#Gs&r}lDb z#-wuWa{Gk-!aaiWE}uO<=R)H3@l|d~=ZU+wMnp~rsZMBBh*yMH)VA-_#K1?_tg39Q zpca{OBtB)Am!em2bmUv{KI;k@YC}4V#DCLFwOObhlqvW?9ZB2Vp4TE@eR47gWzi>R zg|Kd?wck&>a!Q^p(`Tp_V=RWXUXb&uQ-M%+v$H4V4<35ZK9*vi;w?(Z{&-d^_hNkS zYVy$1A)Q8*n;~}72Aj1Ma?T$4h#76Bwo$G0_O#^hy~0%l(t4le{XPC%Yg@c{O2vY8 zg$+K;KXo$SYq?AmNb4)1E}okEM;CRvXs<<)NHh1S9)BnZ|0_y#q2GKICmY&h6ji3zCqL@*Iw`u+#pa`udlqD6Jc+z>-pFrk zmVaYTWc83#dc(fBl9l*FB4U%2PT<<5_ER6YBFBwR?e<)ly$FrCBa*VUI_F-Wa(PI@ z;YP_}MyGxN7R;EbQyz{`od3gnrIX_xpS*a?!^x@gIm352o-RR| zTcw4xW(Qxh{r$nGOBbR_S9uSm0rAHYS&nNh67k8gv?%qg)7+Ls)luy?uP(|LNuN;~ z#SodP(j{3_MxsoTc4|qJ@}g6^iq9^qNM-k`ifY;5dfEEd~VcZBt# zYtqZ0xSu#O%l9RbNTql0F7Ds{rEc35jY9HM?*er{0Etu>92}Ibs;W9LI=`%;d))VS zuZ2J$*!!=Ql@n|QcusH*gk+u==hIp4Q0M6An3$QFxgE2A|ISkAYi_CS?ux#lq0htJ z-Q8ejb2IEPIr>6dwE*QyrBZK~lzb?wtgQTW=uEUANLJ&w*rkX^X4`X{rIKf7XG=6S zHCYMGFH7e|7n<&yC1^`ApGunLckuZkAt9AzWeh5v{{G~U;Ff{#`ch+yTXo3Iqr`E`5`}ObB?gljx%Y39tNxX8_nS?6 z-S5m!pLlX?(`v0#ZwyfMAy6Rbm|i?XBoe2NeTcd8a)018)j?<&t6LV}5$`(dsGZjC z9~f{vlbT8_h)n2OQoaA|R`@^@P#-Qj(__u4tPN4yv12&$WMb<*!%G>h?P9UxO+M~X zTILUfvWpZrdiGLNJ@0n}C|~u+a(mGa$lRtyy&S%Ryjf}t9zVcDG!BfJQE@bykDj|& zTs`e3Fsk!u5j5S1$zQa$gn!U=D64oRU}n^PK=p0 z|NX@;B;2rihs3S3xGI-UZsrr)Ey~NH36ZaI2jnkrGx6Jbr~c_uoz9wk&$2Yhv2g8L z-pYg?tj{A)BVKP=Y;4ADGigvqP%Nt@Hg(;0*g$!oNG7HFm$B7nwD`;k3dSRZTO0#x7dn6+z~~8nD@Rd=@MXc`YbU*>!@qYc+bA( zgqyZau+~@1M{nOhvX^MoB}*w|(uNOH*~qsjctv($@H}|%ok*O=^t)keHctC?Hgl=w zbB$q~be)a-(5B#scdL$Gb2)d_<$0R|m82Do?w9mHm99R*PW6x17h1J>5FeaZFYxP8 z>h|gS?RskYyPnSl#hxdk6YS+sx)|e(*1Wmr9nQCnO!FtUbZfF}x*N*e*L)1tSfP}K uiIISW-sCRNe+Icd(C?KSu#ft(jRg7p>3yn-m8Z)3@0Oi45npaaiupI}(J9pc delta 3152 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 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/playvideo.png b/TMessagesProj/src/main/res/drawable-xhdpi/playvideo.png old mode 100755 new mode 100644 index a43f768fca6deba85076c6d69a0d179f80ba01c2..e13c056cfd774b05e27800cbd6e6140fc09e78ba GIT binary patch literal 2801 zcmbVOdpMN&9v^p&5F#lVW7DcJH)h6+K^S9Q#&l4oabm8_teJPl%wQ zIsPh_2mV$f{+Wy z0!SWE%?+Hx=MczvG75_(WAPX?9_xle;n6-wvI`3B=IiZ3M&aC6IQ|OjgTkQP&~7Ls z9*IMt{9L{La5!(g4-)Bv@x`LONh{a@Kq_MbZ0?F(zQ*n+Eb?!$1YZf4DHBP;MIymU z2khX9WFjd~B!>8gVIUMHn-46@%jNkPEr~1PCvrJtiAV_fkY57-FYJ@O|5w}}v7G-W zX9$fmh~?(^uVz^}(sbbR_RrSW2!9R_7tlX>WSODYP5s-BqbIEQ=~Jk7^EdWUw8spG=PWzoK&dGCh?H_Ue{ z@rTh|wbTnPp=*6qap-KGYgQ3YY zhVG%6!(Sz+b^`f2)${YV267Xkaaq-pg}|U=Eqef79Cx*MCo1PBvl@fy%rWg=|EXlN z8RR|vrOY(v4NB|078S8>SJm)7{Y@Y*{el29BzdA$WgFD?u=|$9ELG*t*z!_=QE7|q z<$BDZ{!Y_Q)2ZPHS~m^S`ye#Y_Y~EpS)!>T-m%WEByisRCXvo#a?FtvBj(?k%dI9R znzpMi&=m1MFKo_>axyex>f}v-qjOU$J;dm{W3K)VEx01Zj|VKx_(rid=U6&D+!wK` zw+D!>hQM6Y`+R){EXGoGgA}!3`#vxBmD+%2>+|@U8N7V2WAu^k8`a+{^eR))+0RT` zh}J+SXi2xN^z&=_#eOzO&!-09`w>lAP5$6n8v=XBZ)e`<*VoM%xaC_l>Sk9bVYeO+ zv@lUoH#fY`%egzyWoORNZ4F~iMI^83ep(J1-O%M4()7+6ayC=zaF9xt9jWX}+ROZ2 zfl7Y4>l?jurtOx*#)7HTuyM-<^R_#%#^R}+R%^@84!9ih(E4@aU0`rqk&m4b9CjulM!+v(rh1DRjijbxN*x zP2K*o@k~_}XMZ>Abo;({b0K-;%13J?WjJMW@bSl4Sx<|}51Y4%3r?K(+ZvHg6 zp(2dt3^+MC#XWoW%#@u5hr^?~S22P`{29gTngTZ*F6qJ`uLckbA090#YAVsWl9HtS zmYC(Y@l;Js&A^w9Wf`YNd*;PsR-j7U+%c88g+*gw@!Nv@{7q+TYB&k~9FNE2@~qaP zx^(SZXG6onhWE54o~v(dU1X%CdB$OM3vf05O2TL{wKeg@wWrh5ggXNRb?$h4^7otc}PqeagIl9dNZ z8MmIj=I7<*^#(f*Ej@oO5FXAsa%!Scsdq-hB5ZGO$3&cua@J%j9@^1nr4_XFb(_BI z@s%SUmo8np6Wd>Ash%1J>(7H8z|Lk zHN0|=m%|!Hq0w{aX^3s4x+-oXJ>5e(ak%{4xf}L#L4RZ_Vo!n-Su9rl&p$80VWsK$ zgKNs{83NW3`^|NQk)=4`!NrKk$VKEYetiW$teMR^rb@0rb7 zI4K%O1eFO12{$Md%C9i4lf9q#?CH~|p9U4f*Y}_B@=~g19kbV>uHO$A0>F%)RH`o6 zxpQYJ^@L|?=c6^9zZzQqYsc!$v2i_sO6}iHq2vt;uv8afpIPyB%of=3{c?~y7K=^$ zZEEnm5g2T&|d@P7E$BNnVAvUTtdsB?Sr> zIoOv#^DpXGF-9%@i4$_@&M6t;;q$L_4Co9@k9u0NvEpsnY~JKZB#}C+_m8#tbWq*y`5yJ5 z9KWqWlh#(v{xj+0tE?^5I-22{&X`JVS?apCW4By^o4C{|KfIr{-9(UO^ z{G#vO=f*%ojzXIG z?BoldKiA4?9%Z)Ys$A%oQ+(e&p^eR~4$~X;H)&l}|E65s@pQTYF(6Yy8A;qh7+ zUabfH571q$z2L>>r&A~BbLp)cM9oVH7oUW@w=qq9@5elp*m>7Z^@pxCD52H$H{Q!W QujQZ60KX7Ytq&vP--iLB)Bpeg delta 3497 zcmV;a4Oa5;70w%wBn<>-K}|sb0I$e51&ZmBAt!$gU`a$lRCwC#T? z8-e5iFW|HK7~Weka2D`YXk&q-02~TGsRInx(}Eu_;5ER;!#TF6r{`IBcXyYHiptbs zHnSc04De}aZ>d}Y4A;S)x)a!HpnY0fTkn6@*4EZFH8nlBb?erH%F4=z$;ru0gPoVd z;i%c$+iS4dZ1p*F=ICo{Ypd()>l;J66b3j1MaaM4{~zT7U^u@E{Dc9sh5zg7>guQl z%FD~Uk(!!XfA#9s_OZBWEiJ7{fq{X>4h{~pEG;d~H8eD4irDQTa5QiV+(R$p0EU0_ zI>OHv!oc?R_4U@&)KsRYrx)+pv!@zB?vwODvwr=09X~%mTOccCWo1-<_ zhV$vdk00<>vL0k-XKrrpFCTyW@nz_=Ph~NpPnj}B;oEP&wej@yT&$+1rYZDyHFgNN zpM2T^4Ch)3KVJi@lE7wWX66J32mgNp^0kvL`XGyV&R^?rX9d=9xnWB zBL6EbEiK%%Y16r~va$|38Ufg&Q&LhKmMvTMo|2N1GVxahUu=}g9AF?Dey0=x+L1fGYgC@d`e)y;p+E&blT zdp#_MQDS1^+Z#4)_&`xnaS~A-2_PSm1;9&ylSm`r$dMzbw{PEG!eTIacz9?6&>N>u zpRP?*9|VxO(gb)V4hB@Av$M0^-`_vs*s)`OvgCkJk1i-E*f4wc>^VgBaR7OzGys07 z=eD)AJp{GqPq0 zmM|8SpP#=REW$-Z)mH#=oFo87Z6Sji(6HxnIGi|n2A86uqM}tcHa2!dRS1B5LL7h< zhH;&*C~%)VdGZLw!gv4|>794pNxOCH)^(yP8i2JI=U8z8#u3z<(iVTVZryrB-em4z zg#Ho$`RLudcYi0U;{asUu>g1}X`v-0C7qQQZDBZsdOeudDbJogqx>j(zxJ8MSUs3Sf!i;Hx!ixWSKz)NA0MCd9UUF5#9O{@BqBnfP*+q`6fwndBMoY7Y<$M! z@y-%epRxv+{T@g};51JPZlF-Nva*Vjm6M##R9jo?XKZY2#xLS5w!64JIE>o3aN$Ds zD{w{AXPq(B;tb#-;sU>bkGCr_SiuBoXZ4UqNX z0Q@Pnk&}~?C#`9opMU=OKvq_k=ZqOMl$ZoEsBKw9aWn9g!2rgfka@V#+uPd{8XEeG zv>K|YsHn7f@nSD{paTQ0RbP~ zxpODN-{0Sm2_S!;KYzY>ATc2f@EU3Z;}&GuXdN9L_Tj^aql$}*H(6L%yiR9;KmYvm za`e&gi>R&{i2~S!8U-=p27^NA(0FTWYZm}H_RN_xt~d)!S3gB%Wn~3X946q}$k(``dOJ|t}*3;W*X=(dGja+GDWHf~?<}jBY-}Xx?*0oG zE}SNdHe9@Tk(}valK=~zJiK!Ene2d>KYzaS<;$0&Gcq#XpEhlpR2TW+j0al4{37~^ z1$w0cwNrU{`9l`NY2w6*Q{3I%eL>vq2eOjpwI6>ydelM`4Jd$TP&GwGMeQs(AyrjX z?VUS!?rLag2=(>#)s@CIJ32Z@{In2Yj3mSbe*NM7sBW<2j0_D8=Y#4QRZvjiYierx znuGyu${)zuB7qN2ViDJj`3NhcDXSTGf@2sEBR28}7_!w)|^ElI}~ z>WNPX^=9&T0QTO!dvy^J5s3*23AZI6g2?3uT@=9Bizfk1#=ztD_V!+R1or9Er!B{i zAOCU7mMs#S3Y$80>Ko*GA|_U0q$Fhlj^5XJ_YAU~qIv`g&lVllc8k+3M&8>i7P@Q`X>@8BHxMEsZfT zF+Xs*T&Yccz4_*w%9AHgrVJUh=-McNZ%{j#n3&9DGO*p<-5nVj8K>5+U3*E|(_Vk> z?(Q>);tfiRKoZO+85tSrF%ejtt|=`oy#z+YiJLcX$|Tfl!GZ-Ob`_+dA;%^D@ZewHPwRP*(h1%HIB*_X~zIZhvibW*AT@>QDjMUH1&xi@Yf;!n87Z(>}U|=89C;<8c z7&)O45fRszV&LfO>rZxZad9H5_6hGZ&@!$77Jr@G{rmTuK#`B3Q#dPK=+dQ2|KxBu zf9Dr*8G*C#J_Eh}$)w8m-FM&Fzk>5+a&vQ22YsCEy-gj_t znEDFVmt^m91qB5~LOHlF9DtF|Py!p1wk0GaEPVy*3&N~{#0pQO@PYOnN<$DFh)LVx z@1B*fHW75rP2^ZSMU1 z{IzslQY9%$O-)@W1TH2I{dK70#03c#B?^*ry!F;w=7oiYYsL$>`}gm+ShHr02T_#< z;HHRk>~MM^W{CcZD$Jcb*BW0Lc?UNgT#M5ek7?CF_*+gQ~?tu zIXXI?kw;4}Iy!oOP*9K$q3>ci!xjLzirPm~$w7I*E2zTFn>Vik$f@!)@S)5_u|V`( zbUv+v@=LywvCRBO622mW1fiy;rWPe7B?0na?V&1$S*5(ay+0tptrZ3CSj%8hM#z4u zfVyE;R#pg?%Qb&vvJp{TUA>)1*+mWTTSo%!XhZ}_>&U?mDLXs+((2W#FEB}Dpu7zX z4D=#GpO8)husa4jPAW~#E6iUX7 zv-;6(x)Bg&Ee#C~{WsmrYn$A4 z#0CGscYu(AaQ&Zr*tc(AHfCy)C9rHZ`?a{ZI49709E3jYfD{Rw2=^qmXp_mOcHo@2 za>yrufK8b+_}QNd-qR~6ENmoS>XPZlqTt*Z zjDbml{?C7`#++=|uV1gkOd*)eLJ|ugw{6>IuzdM)w!OW*EvR3j0?X0g9R>H0HPUO) z;&W$k4Rb!wz60$80M~)R@>^M1*&pTQWtI{V}C(4^V4s>%)J?j~~C3AP>w}1wB2z{_rkMP0g8v zIXe(xFdhch;79vv#_BDh-4_vwh8eM5WM{%;OdJV`UK9Zs6?Ad9U)iD!z+*(%`|S9P za@$Cp9xg-}AN)Iiz`{UA%(*G^Ai)VV|LiZuDPz(j%x58-#iW-nOR1hpORMpJ0t^5& XxT+D;NX}aC00000NkvXXu0mjfqgj@r diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/playvideo_pressed.png b/TMessagesProj/src/main/res/drawable-xhdpi/playvideo_pressed.png deleted file mode 100755 index e75bdb5895ead25e1d8bef45a583047abb62699c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3710 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 a543p8gY?Q4?Y8*?WpCq1{kOGW(*FS^u;0M| delta 4890 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 EA9lXx)c^nh diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/photogif.png b/TMessagesProj/src/main/res/drawable-xxhdpi/photogif.png index 9fc94f65b86870be8deb749667a4756a2e4bfa1f..71c5891221be7b89be0ddb9a77cb8457c29611fa 100755 GIT binary patch literal 3679 zcmaJ^c{r47ALcZZF(ng`D8^U@$1*cQcEgOFER!W!XT}m{#?09Fu^&=HL=n-!M=04Q z$C`bcP74Z&(zIBkggSlWoYVQfKfb>Ay59F$uKRcY?%(s=&-GkyhMldM09YK%!^0zB zVUBU&w#j=hXg~LBk4dWJHpl2#7rG}#p z!2)nDbQc?I9XvT$)q4-48WBw4M)UCK8AedN@qt7-)Q9L7K+=b;wspdw0R(-RvxW`A zhGIhW4=|6S5*?##arme}yfy)5XaLoV(BTpU6Y1X2h~OX+O(#Mh_9w3nx4$>727~?y zp$F>2{u1S4V+S=MQ;ARwRfGy2p^1QMB2|&ZGzgdc0s`eCdZSB%=;#{Snvf1l#IXRrH@ZMlPgj87zS-A?7& zdfn)29S;xqkp%{gi+HwFyy}RXJT@Ts8DDx<;8j|VXp&cgyvo$A#IuF{ItjiHsu zZ|1#~h%GO#k8%GfW#>ol52?T(sVEk8d~a=CjyNMx0KOOSxHZp~aYWvy6gbqI<1_SW zdzdvwWi35#H)OZ(#`sFQ=eM_ov$sF!v9&qcTfP~T4S;J$BmCE~E1lQOnuD@mnhr`1 z4>%I;6TZnxkoYKQsW6BZOm-2FI zp>FRswqwu}YJI%Sth>+|c-oS71GoX!#}2);wEw9YL0B2Y8I*U!HeX$GZ2nN>F&CAtk#;+hqsMoB0qlBF$wLOj7?g9fa*{K_h!x6a=7i?xd!fbdnnxw2 zZyqY-No|hL>-k&+To29WA>WoxO7@b?+8Vm|+c**@3`ors@LAz6v);EM9xuBq`v{P@ zW(PMrG#Z4!wZFiM*`pzI($R9g{N=eBoHl|~>KTZO?v%m?uwM_-tG)j5nWX|Cu_?v0 zp^_D^k{Fsh$A47x$rlKq;;QG^i^IveGEACn8l)a*|1(EajMJsei6(dgEg*wOJ+3@Y z47q-h2r4|tfI`HdL*0hHzE X#!shgpm&XWHMC36rsjP_UJc=dgJwbZO}#sJ0UC1 zN=WtYrPus5WfUvO;IX)I@1DuE_53^*SPQ^Z;fS3|+%)|C%LQ{<$fy9?E94z^MNqEQ z;!|@8BO+sIU`Eg~1Uv5NB7|waAgGE*Dhvq@dfXQNR-2#?sSla{d1S;V$}tDdD1hgh zdvrJ*#Z{0+M3o-bf__R-nOo3wmW)UrBONHS?pKf(!&%a>5QU5JdDEvTUT3{BBp6dr zY&Re?1vRRx1X6awwg>+3MY_@HgWso3+(!2`qgoYnI*&Otq_OMOt5?CzK~EimHrqNnI__j=XWtkfA4lqz*gHDrI=i}R%e*&;+VuBqz=y5O zxGrsmx5s_mDVSaL@oq$_NnSi1;I>WS6uMVulvY(KaJmxrF;i1h&Ew+YJgO%J4;?yG ztWA@@=f}QYmB-c%efRiY@O1MNc>^XvMmqOK3Xhzb=`34CRi$K! zRA@|I_3oRb;1rtGHX<}mx9_UVZU&6_Dl!0^+Plaog$ zpFF_|0h0$HXBOVKm$tOD)K^wkvd5$8;o*YY4>m_M&|OvvA?qQ%6dB~Gh~w_=ZYSm; zpG*k-x#6ve_>TT!htJ4Y&mR%|B>m{V$8_zmcB=h3>8)-ly^4mgb@%Hux2R{V1&&q#Tc-h(r((3#u zH?FvQZSD527FD>w6Urc~FS>41zm1i+XAMt-4;+XjK73b8>__%vuez zOdwld4KiJnCn`4}K!wu9Kh}$opq?$_d|h3g>yY#$dZ#BAwBQ+6($}5DM}B+X6pzOX zMDw$cr9e$nQX~>|GVD*temYZhDuiJMexArb%x)|kKHSMpO=T8GsU_-*PqpT*M6YM7 z1kS^_2jINb+}0NZiHMB$=&k0rC20zE?rjqU`Ir|PT-Vq3Wvi^rHAdd#4Q`?tO|?#z zJC-ihHa2dah)pZQl$gT$W@l$xR6RRpv{0xI{sZ|=!PtRUXK=V9IA>==a--Dd!(XlJ zJ*F&&5syNnbcy`dpXWK~5{_*6bREuNm z1$+x>Hma!43w%&1RS3v?x!S>0QC}(D&Q|JzsZB7)#Nn5<1U%)|m9~z3<0mW?r1H?R z&kssEo5#B^-ZdRhh)FD9!o7C&M2B2>^0mzvt<^^X!|PjM)q7)@Lpjj?kJ5PKrrX^S zJ?=IKd%7fI2A6X~W-Py;)zUp0)L0i#`(<;ayA4X6;SLLcR21n=&Xw@VZmJ>N&539B zc=Z5#dP_Jv#IRp(z67^;Dwv7BbOPLnyMFuq1 zcaY+?|2q5Tz|k;Z;`T~7(9;a|rbzv2_-z=7a$3xqhDw~Ta8)a@MOsH!f4;B4|DkKc z*Rv=adg(^T{bh+$kd;n~3FO5pV^W(Tszj=wCFJc4g%#dGomZC^wwP~*-bQ?I>(2C4 z!m}>ka&p1r*{iJCJV~Fk&*}p!UrBCb_*&YjUgw`t@6hx2!5!>xufi-%lm5J-u)&Csr&8nlL-sGXmCDhcqElpT>4z>SQu!dsVi2OKZy zbr3@zb1I-G?N2iEsD_cohEMBLE(~k70B)L_~m zGE<-5YL#lGsngN-Pz~)r^m>1TIM>BSEMD-rikS$SA@GL1@u#bx7w$27zQ(EP9$JPN zAUfgrTa^h=M@8OYsr0w^geSLpt6-oDi#|~yS$~>Sf`X*28y_LusKNqiw26xyv%-*qG+v3N>orPgcn;Obhtdg(GNCl3{xK-%-Vn&s9y4l|jKWclj k_PGP}dxc*+^bdF!PkmF+M-Qp?XM4YV7Fb(Mov|0=-;{Ds%>V!Z delta 5271 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 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/photoload.png b/TMessagesProj/src/main/res/drawable-xxhdpi/photoload.png index cfa2ac2ce08fb330ba5a512661ec4fdecadf2442..4270d1c88980e14c60f5a5cc8b4ce1a3e16ada92 100755 GIT binary patch literal 3310 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 Q00000Nks-uM6N<$f)~y!{{R30 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/photoload_pressed.png b/TMessagesProj/src/main/res/drawable-xxhdpi/photoload_pressed.png deleted file mode 100755 index 1e8c1a35e06f1dc9fccfe183413aaa753a66d929..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5236 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 delta 5337 zcmV;~6ejC{9q=iTBn<>-K}|sb0I$e51&ZmBAt!$nf=NU{RCwC#T?trJN49Q3L`0EI zM2tcnf}$ac2oW)nD2o!5gi#m)HwG8nhS}-RZ)Je4uI?ZSRTT+w3gis5(QlLxlC3ln zz#hb<9pgW*va<4FZEbD!S(#Jv}{@88c=KG%_;M zFf}#Rfup{Gfx$p+ZEYPjHMRDTF_9TwPC$FrQ$lpEH*f-((bi|1nwnmfm6a9Uym^1~ zeq3B!;gKUp9(QF!nwgpP@$vC7wz07>9yxO42rVtG0b=~yBamYtvCwX1ln~-q(i;wr zOs^mmRaI4w)6>)Ql9Q9~?%A`av^yKt+S*#f%ggJ(?Ck7-D`w^@Dk`cXKK>je0wfOF zuZR*tG!bTlSP1*f%as!^3~WGrPJM=qQE^8KSy&?OJmuCnrl7W=utOY#={@ z9OcW=eU#{Rl)-MZVdgZCff=djoNyp`oD+!ak$#F)JH=FOXy?Ck8!z`(!@XV0Fk;mHwt_wKC(#ISU8bDJW<5Zwo|1KRev zLJ$I;83G4SVMD`;6)R548xaH{Iy!p1ySw`rs;a7e1Y9m-hLK}(O9*%thLbmfOeC+> z*VotV-n~0P)@%exxUYu~AD(}1X=!OKthazR-XwQ~falDG!&X7V!};^)FU*-UC-upb zCrvyBg`c0_(2W~6&KfXafPsL^sUXXst)IySA%qPPH8nMrzP`SZ2?+^Lc@%H$i@3PB z$09Tf8+jHFbzf zEet7QWR4JUU(7oQ=e?VW{7)pNsp-}J{rlsVEnAjDRWBSE+`4e#f|rSjiJ)2B|Altn zD>Hp6L9HAX#35aCj{KjoG~8x!q4U9<)!xa_7MdI z1uv+Y+lPJo_KjP(aG`&@0K4Kaw10pk385rm17(OHG87dR-L|l>_y;9J$FO9{lC0q1 z;HZ|C7Si6D18u%hlFyP@4*~bVIQ;=~n8?k|&73e{LTqDW;~T2l&SClT<%S_4A-)0v zSs2ya!Konw?sJqhAg^4x^6!ZgC!VCLlpH)fJO)NZMJ)vvwJ(2hX)Wj?k`qG)<682O z;rjLKS(FTt$FXC_Dp#ynvH$h!*Dp!W1N1Pnv-ek$02xBaI0Mc{eDcXB$EfxSsa0sKk#HG!Q9oKDyz=RgQ2xLV?MH%!AhpElbwE!a%v&8-h1Yox_=6U|TyNpWA z1iAq7-W9@>w$Fb)`|L;RO-K(hF)bl2v}n;GN(Sk|%ggI3 z+G_&b(b>`*GSF_YVHX@ccrczuAiD<+4i0e`1tyBO0x688K?o1hZph5c{1t;IR5jfL zoFH7fbm<`?aE0lK>${o|XteO`G+ZBZ1yXn)X zPs_c%y)RJ}a0}?=9XN0xfhe9QZWL2oLM-4B%j$xIgX8P#>szP_xCcx=di3Z~F-ZzZ z5`vFiI8J|shK3f?rspo!u3Z~XL@_Ple4Zo-f#GQjwjl{F<|*3b+{U3phstwua>!7C zyCewV!9K~&&CR}Y<;pYKj`#2&=sAdO)VR^c=2Lw zdV2b=qK5zW5`vFSw{G3a9VrXbM`uOqV+pk@_<~@A)@IH!0h#!9VA)lBY{}_f13vmd6 zQ`|1>g5A4!%f&iOB_*Yv_%vf^SwcHa1r7-ybnz#0cAS=gx(sq@;YQudjdK zOJ2VxCNhC>O*#iQq6jgR&6tLUhFV$Q4p3b5?Af!ogM)+ny?ggU!otF=7T) z8WBiB@I|oh-@jkPQ!uEjtLv^@xpLK`M~?y*ELbo^-o9UAVq%dfohylAOMZU7!sa{} z7#NrxIB+01J3HG)p2FZ5Z6;FeOn86qUNa?-5M$XVFs7FB6c{~v^iUc*cC0;y!H*w5 zZjYOS$;0<5D=RA&))BD3ApQ#8XXoNdthl(iN*=}AF!;=wGkwa-%eQUVuwj&}f1jeF zqK8D$$ASpKw`+TKb#*0Ou*(lEEv>=p*RNj-hUY3-4ujvkd6RS$%mfi)1p9vzU{qC5 z3J8X=v9T3~!PC;x+>MNkddphX2(u*X-P{QS`p=xg%7zPLT)UUF#GDud!;Ajfe*Voq(#e+o> z0+?S-)h#~s^z@7|4361a6DEI5(Byi3F{Obh8cGsEpMCZE_3QOi&Fu$fYrz=3Gbt&_ zh0EDmwY9Zm=Da>h2tHO978X9I>g^aX4DRgg>{(h`x}B?G@P>v4a{Z?kn-F-S(s~6W zS#+6R=b@pYF%ZMxn62gQ?LC-dLq-Epq{AizUj`8drKmb32h7%rj*frcmY$wImn+#? zzyJPwBT>|kO$fdz-{$6K8jzAOFbr;OZ9Nriv$tXJ?ygTuOAD!EWi}yt6NGq8RoFG? z)vH%u41;5~*1C1;%(}6MAa$%x8kH1M1ZHam1qB6y@xH>*(NUKx^=c&qU-zK|pemD^ zN77SORkeq-pR25_OzMC5trOAeCpQq?S}&@qE{_8|+PQP*!OfdDcT0+5zkdBl9Y1Fi zqM2ZiGF4gE;Pva*4T*_~vG^9k?wn0lQBfgv+{7kCE&B>|Vd_+Mk_9f7&dtqDoj-qm z?2Q{Y8oIka{rmSP-QPO44S^Qt3ziL`j4uJBYLpDh%gYPq&Ygc7U}{^yt30+J~yMQ?A|9$jHbe{{H@%T&tUwmKK>O`jm7#AF;2Ro11G> zm39ox&CQMH&Yg=jH8ow$MKT~XH8r(}qDN#8@qm35zKj-CZTnGJSa`+H&+lkjS{kSG zNq`XK559~f1bct~0Nw{5e4s4;^X6Gb`cZQf2c6MlR1C5 zb&y@_iLI^ehvZPAh-hkRdXb!*96xvN+!P>1vn+p?VZ(;0>FVn03mY;>LZq`#V8}35 zbTZ`U=cj-9`uhG~R#ui=Bprjz^C2edu!^#Ithp?5$lwd27#J8BDykh(Sy_2^@#4kb zjTtj0Twch4u(!7-lXA|oPe?*EGmLo)WYUr)OH37s2+yBCuZoC>*sHIvzdk%XT<%uC z4+jV^6L`Xg48$28YfEE0J3C}lp1c#GrKRQd<;#DUPeYfQSW;5bD39OqtFOKqpsA_J z4mds`2_Yym>Jni`nCt23smL=Kii(Odot>S(1@gzrD;W?=mo6Pg6kQ-cBZv^U7NYi*1$D2H4g#<1B1Zw4oyi(sgh^X<7Ox0$B(xZHCzZAGFpd?_Zwq4IXU5t z6ooF6xC z+&8mk%{s408=}DXC3}ZBa2i^~CB$!}w-FE!U@6ND!o{p5X#r<9Kl^U39`C23*Djvas2XbZCKMEH^aBIvWC)?b|9v9hSt)z$ll zg@wsXFChzAOVR-Rh?T*E`dpMrATA*=I(Lj+;O6G$APZabVb+p^gTuFuj*cfQDk>Cu zS>m2Od#v!s%qqf-LXLKX5In{TZDg@c8@it{T>bKxwe+c z*C|BtAs8-%?jP0zEbq4N8vx?Z^4%*34;~ysw=Cp7_U+p@Zt>#9vsp#BI%^6LqKxHv zwX26fB(hJmwY3NC+O=yeZEo({4jvvJbmdWQ*Z{hzo7Vghr+w@_78?E`JjHkEYmh5HO^FiOVtBy*!X1M4bO^j|=%DkBDAw+_-U;yzCG!FW9?x?^t7FO;uM*E46%{EZ+(Ys{gkBlqlV7rzpugk7*|)haIHrmM%h5HL)*o0yo8FN8Y{WZ2P}`*wfY2!sm!8x9-T zWfwaAaDE~wDQS_et}bb$V;cP$X#cyNxxXai z5TZ!34i3ABG9^z>&%fm415JZ+^ zUZ$_FZ)8G3!c(et!Nw!bO<*{h*xUng4rBq8OC+aNDnkbGz?pEsA%riQ*3#0_6crV9 z0*H}GDZoEO;H;&9i7EunPb`+?^Q2A)=AlM#*b4F)dF|%Sn>p_8?g<421uqnx3>fxb zzI^#i0aMtB9i4v-I&p>&qC5~pV`F1OczAe%zrTN;qV@{W(a~Rzhr-H*|H@UdJoQT`hkHZ+_`1cs8JsYu@PFa6C@JavRc}8#k@}!9?B)}PrSZ-BtuRO}5B+nWfhP=sJr6iI>0 z1sz3w4kyma%F2og3k!==Q&Wq;mzU}bOmOclcXxmH4?q3%(-9^nCc}u0y#xW@es>Tg zwylM?ln{a|?1HX3V`KDg>+?-bO|QUxExvc}URiN*aW!}>70{DZN}?BWa&pqPva-@O zH8s^9IdY_-F+hZuKmvP#B#?hXn^kb7N0T{1uqv*HJu--ksNqCt|NQ*aj2+4ej zkC_+-?v7%?u{OqixlsAIDX74$|KyqwT!{04*f4^dYmJif^U+=WmG|z|5=equvfP;R zKnN0j8Jh!p4kHj#MkMj3Vtkcl2{RPrG9*DLlBdR#M?we#CYj(Hg4k(jra}zWGR7M~ r)H5W&Uw*T^H|~Rg(@dV?9TwShi}hm+-q;u#3YZdEA*%&LUt9ijeIQgZ-c0vVv4LyK)i8)m z(Vb4)Ft36xwV5+_%8ZCkD)-IKz0epqS&V`GLG~XNLXH(22Df=Xcl7#5cimB3BK;z> zcHV*ZmBBl=fTQ&|e0@#JVq#Vn3)DRQP{uklGjlO%<06maPx6(rBDk;-UudDG7RFQl z)#k6r%Gi;mswyXYijg@PrZ03w$9$2*IDGLey^rl#gqTR&sUPlE&Ls&(H3erphe zqPY<*9i0f6!;B9(&leC7FmrNpLbFU67wLcyq@NGc90A9=RjH$dAsi*N@IL3zrXZoE zVY8d;_dl-B%bHtSS|BO{{QUf*vAl)3gkjJ=sofYJ zWDt8>nbcU~hYueDS30BX-n@Ae7f@HEqd7kc5gii~({5({T577Jqr)_fJH`=hVG(eI1w-$x zLExi^Z>j=1w;h=v5Xf*J6I`e-lAJkGFH?F*6==<;h)VWQPb$O=mysh5+s{TudDGxU z#of1m@7}$Bpd3xXkOorYtl43JzK4oi9YIwngl`}u%W>e*f?x)Sr8worNY0O)jSWAd z+~RG{qLsb9g^`|~p0AV-Zy8uYjBC?6mK9S;Il|N506I0YwqE?y*Vi}l${=9d+I_xx zd}4Zfnr$$`=oYWNP+DTG5jon?alO*ZNTcTR{A9Z!MZ}s-WW+L0%A@+(d^6<<>P>$c ziPMoAmdk1j3qtzXyaeev4+!?q9$jBujO@)d9Z^)gS`O{2cztmikd~SG;;|^_Y+L1& zuoP-_ef|0N)|PKu-$D^@{tIeaTKkRlb?Glee5YXAZF5SPY=ZQXh&%V#2&F2$u$6yf zaq*^z<7En%m)JxRr#>RG7Ao4**^zYxlef0H5B))$A>goK|S5Ntppr!^N zaY~F96lKrDC`-SE!XJ1)5yT@k+Y^(Le6Ic^s3_~&AQLb&D$dcxTU%TA9OdeXa3xQ9 z<6pcXf(JYEBX#Fm0wm@K2DVu$)DQY|Lar_9Z8{w;E{&@E z_7{x3ZkQRmrf6Q9HGsgPh%aSjG|riLVUH!$wfZO0zK4Kj*Oxn@XyA8$((CvacjE9? z(9Sk3MA6~N%vZOBF~uLD+mbeqa(*RjTAu(>L?3L zd(Ko=W~STp8VaL-_m^iQFuIlo2BRL9QuEx-`ID8_AqX9Rp-<*S^*{a^ap1$op@-jX zQ#jKFOv`hZd2Y4;+}zysZ}*9XdhCrkpsz!D@zMQL3S4E@$QJF5WhDWf(Jq*p-ZA{5hSc{qZDgZb;org#|ESQY(6 zaUk3JVhf#jSiGW~Tsej9(izYUVoRbOnw=mRhL*}e5Xp@6s&X0hs591xXW`Fp_}E$l zNYLMro`!9clYj~N>B1qZG_|2=6ikxdHK(Vm zJJdTk7^LYbcfrHQw@F~u6F6d?glWYI~`>dU2=Qq>gec{O3uUR=;+8PDHHfH>ev5GJLOpPOCTA%F+Du% zySVdgPI2T?+Az+fvU~SAawm^FPDV{%zp?>1CZ}tiT6cDL1N#JM0W;C(7R0{oMS+w) zrOg6X(NJ&|nU;}Zxi{M|A|o#Toa~Hg>yQ}j@9$4v8^D6Cg4BvN>vB{@GjD|3r(9hg zjWE`D83Vg7+1p(>EY8})Lr)Q;&$I*ct^T^0Zc^pkCSJ@4Xg82N8kRRCM zeee6Y-k~9>?Y2#-lf$(EGM5|*gGYv@rluE5VU$*?73W{ftJ^J2Z#LqXWey+T;-HNd z=@D<(UueBREwp%hcz9en45S1=7_`BOKL%!QzIiRTL)#Plt@)6vJ6?>8jL&B`+IoB6 z&`?vakW)=))Fcu2xJ&%(8m1Kt!-mTuo5iCHfF? zbF$PH#&w@+N(KtaBF~Cya#7}HiGF#o()Ek&(L!Nck$%oKmEw~dt13(z$mK@m-`>0c zFP32f@n&XbMitHVDT!i=E(zG{r%xK5&EGE4%RWq6m-P4bm1g8Kmx4kDyD;l)32aLF zGpcXAnylP(!uF?YN$xV4e5l{vIPm8QFT;Bf!-~l%UKI5tu&4eky)B$Z?C0g>74!D( z#ck&}s$V|4B_$n<%9&9F}b1nO`LQ)6Sh z`w$!SDo4M|%eTV7BuaHl%AQWNrxsRSy~+tgGL0l56fVU5dPhbo3&!Vy+ZHUv#KheE z_U8WL*B30;*4C24*=-&|I8iTcY;5Q%7UD?@+vexy6osuCt0F602>t#2u3Q`Wi!j(t z#HMbXd|F?A$FaOfb8|Cs8gb8pWqf@6>uDbkU?fb?!ue)2NK_R4vQJClIKMLRU*G)p zPvyLp@G4Wk9&eAAnMtAF>CqsOIC$r;DqR{QTY8ALvmf zq;P_$RB>ctY;j46i!BpNpxaQUOu|?kQ+^8HFRpB@d(^Z$6<@vobbki!V2(`Cnb+%j zD>H8730g->^_>+ue~z`HSW8RGp7nnRypZB(zfO}seA8=^D1NfJ)pOc$7A8$?kb_N!dY+`9<*5eZ- z={z27wv^|#bl`6`@#P8gW5B+5HC0$ySzmII-SdP%R#r0<{Pva}xJtXigGd=D_Hs?8 z1NZ^Xh%z{O2rwQ^y%h~8PZM-eP742?Bn83QIyx3=;x@Bd{0~;9+rmin!^6W1YIkRj z0Td%8H{=4rXlbE5SIiA^Eb-5@w8%UTcCgt0D!?9zaGSM|fq?z3pPw`=R8okp)POGv`-;V7WJ2z{!g2gN=l}K>GfiL28kv}!tehSEslL9x zHj*f-Y;A1?FRQFdM|_HXj^n%m6!;lc$CYclUHP>2mCM!n$pIz1a#Cq(xB278|9G*z zE{8l!D(2?qOLJfm2EC|{@7}$WuQ*?S4orTzzRH#4=-Aj%cwHN|eeL-L6>83%7{mCsA{E{lkgRJYEcvQaG3v~CZL|d(J|x|JRoT7skgVcDh7iYOqX!7cf}v2iP_19 zn;`v#K4ANRJz_3I-7(4#V_c*sm3$X@Pe33?1C2%}u&XGeCorh$x;ja2Y@;A8{F=fk zeHMUp$3qZgxb?V)JtPa7+{`Ko)u+GV{_UWzgj6?7Z)*Cl%M=It?Det91Be=6&f*%u zjzl0qDTiEN;zv|&6zdBL3e*7`&60aTO!M+;(eXr|9wb(h%TvSL&{kw{a(MW@uLL*H z-_Pc`&=Sz_?OWiTgq}d*fl)h|)_2?*6kO$P$2{%4f$FZgePR~X7uB&ZpAWw9nRiv=C^Pqp9Ej)oRA$r7Jf zQT{9NAP20(J2O@qpi91SOGu!Q(356KX8>9?R>_Io=UF736NwH+8_pc>oLyxk_J2c{ot>>g^)gVsmxqF z)3wl45$oXiiYHTdcor5GCeB19Vm_*|s@F5azfYerW*>HYxKrO84v17too`f6Qp?7+ z0j-R447@F^8Ikefu6{kwmShIN`g=%ZF3;f-h-$FLWvsB;RC{W6c0Vyv*q!>Am3Ucg zkna_c3u(toshziTL7j%{zQ8~r2`WL^Lk*g`RTf zT1$EF)_55S1&Fh*BO(9#`xBZl5cDE__BE>h*}SWE8IBcl{qeLV;3y0JB7|5n2%QQ7 zlPJRtE;|KZczZKSyja($-O@V%>UpXWO@{Uz#q>s?^YFCfaIbjGS3hcfsJ z3k#3ew&(d~8$26i#KZzpM>iKSNmHLu*nm>l*7cC!7!VjJNJ+hmuF?N`0U_&TWo7Na zjj2e2tse#^jOX=rofX>2)W&u!r+LiQ55=1%*b_-Wsqtn3^uIBEl>n?Jhr+-DMB<7lbzo?>*SqiOr0obZi1r&e=I@|*5Oj`G<Qb`|6jfD9%6d~_S1|^nYK|D(yMaiy5`1eo$vx#6c z<^mR;A`uASP84=o{_L4D;VOHW#hMHF{S*u#$TMJUY&^y(8CONQ#z8OPI{r_=` z^&#P|as=PLi_-|F7>7YkZEb4U*QtjosmaO7=jZ2ax_WxS>Se7C8&tErqO7{#OCcni zq0wnX25%gKVu60BiLvJrq7ooUe+U;qwmHM&@jfxw+-SV1c1>PPCF2T5U6#o3ktPc~ zX>QI+7=(n~^_=kIQc_Za{$zzO$$dSKd zI?L+_J??mHrkGu~tZhsVZ`(R(5af6AwF&}{Bt5{LTaW$ngLeZUBLRdH;Q=klP$qDX z#gZHyj4LOoSP9B}Yi!^;2D0S$U@M;K5oo|8}(Q zwe0L{vEirk$3KbrD!s~i;-V{`fSgdv#(kTC}9RJjlY-^t1)ohy1qSE+b1ot?rSGYHDh)g@h^^q^$w@R+v>j zJ(tz0fL7vz;VNالاسم مخفي اختر محادثة + + Broadcast List + New Broadcast List + Enter list name + You created a broadcast list + Add Recipient + Remove from broadcast list + اختر ملف متاح %1$s من %2$s diff --git a/TMessagesProj/src/main/res/values-de/strings.xml b/TMessagesProj/src/main/res/values-de/strings.xml index 2fa921381..8251fa98e 100644 --- a/TMessagesProj/src/main/res/values-de/strings.xml +++ b/TMessagesProj/src/main/res/values-de/strings.xml @@ -57,6 +57,14 @@ Versteckter Name Chat auswählen + + Broadcast List + New Broadcast List + Enter list name + You created a broadcast list + Add Recipient + Remove from broadcast list + Datei auswählen Freier Speicher: %1$s von %2$s diff --git a/TMessagesProj/src/main/res/values-es/strings.xml b/TMessagesProj/src/main/res/values-es/strings.xml index 035676ae5..4c1bdd302 100644 --- a/TMessagesProj/src/main/res/values-es/strings.xml +++ b/TMessagesProj/src/main/res/values-es/strings.xml @@ -57,6 +57,14 @@ Nombre oculto Selecciona el chat + + Broadcast List + New Broadcast List + Enter list name + You created a broadcast list + Add Recipient + Remove from broadcast list + Seleccionar archivo %1$s de %2$s libres diff --git a/TMessagesProj/src/main/res/values-it/strings.xml b/TMessagesProj/src/main/res/values-it/strings.xml index e4595b3a4..d5880fb78 100644 --- a/TMessagesProj/src/main/res/values-it/strings.xml +++ b/TMessagesProj/src/main/res/values-it/strings.xml @@ -57,6 +57,14 @@ Nome nascosto Seleziona chat + + Broadcast List + New Broadcast List + Enter list name + You created a broadcast list + Add Recipient + Remove from broadcast list + Seleziona file Liberi %1$s di %2$s diff --git a/TMessagesProj/src/main/res/values-nl/strings.xml b/TMessagesProj/src/main/res/values-nl/strings.xml index e92fc5a4e..e511ad0f3 100644 --- a/TMessagesProj/src/main/res/values-nl/strings.xml +++ b/TMessagesProj/src/main/res/values-nl/strings.xml @@ -57,6 +57,14 @@ Verborgen naam Kies een gesprek + + Broadcast List + New Broadcast List + Enter list name + You created a broadcast list + Add Recipient + Remove from broadcast list + Kies een bestand Vrij: %1$s van %2$s diff --git a/TMessagesProj/src/main/res/values-pt-rBR/strings.xml b/TMessagesProj/src/main/res/values-pt-rBR/strings.xml index dbcc8b02d..1be275de5 100644 --- a/TMessagesProj/src/main/res/values-pt-rBR/strings.xml +++ b/TMessagesProj/src/main/res/values-pt-rBR/strings.xml @@ -57,6 +57,14 @@ Nome oculto Selecione uma Conversa + + Broadcast List + New Broadcast List + Enter list name + You created a broadcast list + Add Recipient + Remove from broadcast list + Selecione um Arquivo Disponível %1$s de %2$s diff --git a/TMessagesProj/src/main/res/values-pt-rPT/strings.xml b/TMessagesProj/src/main/res/values-pt-rPT/strings.xml index 13f7a41dc..a5016c733 100644 --- a/TMessagesProj/src/main/res/values-pt-rPT/strings.xml +++ b/TMessagesProj/src/main/res/values-pt-rPT/strings.xml @@ -57,6 +57,14 @@ Nome oculto Selecionar chat + + Broadcast List + New Broadcast List + Enter list name + You created a broadcast list + Add Recipient + Remove from broadcast list + Selecionar ficheiro %1$s de %2$s livres diff --git a/TMessagesProj/src/main/res/values/strings.xml b/TMessagesProj/src/main/res/values/strings.xml index b5a9c5975..e3d61b06e 100644 --- a/TMessagesProj/src/main/res/values/strings.xml +++ b/TMessagesProj/src/main/res/values/strings.xml @@ -57,6 +57,14 @@ Hidden Name Select Chat + + Broadcast List + New Broadcast List + Enter list name + You created a broadcast list + Add Recipient + Remove from broadcast list + Select File Free %1$s of %2$s @@ -150,7 +158,7 @@ %1$s removed you from the group %2$s %1$s has left the group %2$s %1$s joined Telegram! - %1$s,\nWe detected a login into your account from a new device on %2$s\n\nDevice: %3$s\nLocation: %4$s\n\nIf this wasn’t you, you can go to Settings – Terminate all sessions.\n\nThanks,\nThe Telegram Team + %1$s,\nWe detected a login into your account from a new device on %2$s\n\nDevice: %3$s\nLocation: %4$s\n\nIf this wasn\'t you, you can go to Settings - Terminate all sessions.\n\nSincerely,\nThe Telegram Team %1$s updated profile photo @@ -263,19 +271,19 @@ Enabled Disabled Notifications Service - If google play services are enough for you to receive notifications, you can disable Notifications Service. However we recommend you to leave it enabled to keep app running in background and receive instant notifications. + If Google Play Services are enough for you to receive notifications, you can disable Notifications Service. However we recommend you to leave it enabled to keep app running in background and receive instant notifications. Sort By Import Contacts Via WiFi only First name Last name LED Color - Popup Notification + Popup Notifications No popup Only when screen "on" Only when screen "off" Always show popup - Badge Number + Badge Counter No shared media yet @@ -362,8 +370,8 @@ Invalid last name Loading... You don\'t have a video player, please install one to continue - Please send an email to sms@telegram.org and explain your problem. - You don\'t have any application that can handle with mime type \'%1$s\', please install one to continue + Please send an email to sms@telegram.org and tell us about your problem. + You don\'t have applications that can handle the file type \'%1$s\', please install one to continue This user does not have Telegram yet, send an invitation? Are you sure? Add contact? @@ -371,15 +379,15 @@ Forward messages to %1$s? Delete this chat? Send messages to %1$s? - Are you sure you want to logout? + Are you sure you want to log out? Are you sure you want to terminate all other sessions? - Are you sure you want to delete and leave group? + Are you sure you want to delete and leave the group? Are you sure you want to delete this chat? - Are you sure that you want to share your contact info? + Are you sure you want to share your contact info? Are you sure you want to block this contact? Are you sure you want to unblock this contact? Are you sure you want to delete this contact? - Are you sure you want to start secret chat? + Are you sure you want to start a secret chat? forward from my name From 2eb84e23f616ddc284d648031d223776a2bafea2 Mon Sep 17 00:00:00 2001 From: DrKLO Date: Sun, 27 Jul 2014 03:18:24 +0400 Subject: [PATCH 04/11] Fixed internal push registration at first start, updated some locales --- TMessagesProj/build.gradle | 2 +- .../messenger/ConnectionsManager.java | 4 ++- .../ui/ChatProfileChangeNameActivity.java | 12 ++++++-- .../layout-ar/group_create_final_layout.xml | 1 + .../res/layout/group_create_final_layout.xml | 1 + .../src/main/res/values-de/strings.xml | 30 +++++++++---------- .../src/main/res/values-es/strings.xml | 30 +++++++++---------- 7 files changed, 46 insertions(+), 34 deletions(-) diff --git a/TMessagesProj/build.gradle b/TMessagesProj/build.gradle index 924767dc0..836098767 100644 --- a/TMessagesProj/build.gradle +++ b/TMessagesProj/build.gradle @@ -83,7 +83,7 @@ android { defaultConfig { minSdkVersion 8 targetSdkVersion 19 - versionCode 291 + versionCode 292 versionName "1.7.0" } } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/ConnectionsManager.java b/TMessagesProj/src/main/java/org/telegram/messenger/ConnectionsManager.java index 2a5ea5c7b..706fb5e3d 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/ConnectionsManager.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/ConnectionsManager.java @@ -1752,7 +1752,7 @@ public class ConnectionsManager implements Action.ActionDelegate, TcpConnection. } private void registerForPush() { - if (registeringForPush) { + if (registeringForPush || !UserConfig.isClientActivated()) { return; } UserConfig.registeredForInternalPush = false; @@ -1805,6 +1805,8 @@ public class ConnectionsManager implements Action.ActionDelegate, TcpConnection. UserConfig.saveConfig(false); saveSession(); FileLog.e("tmessages", "registered for internal push"); + } else { + UserConfig.registeredForInternalPush = false; } registeringForPush = false; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileChangeNameActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileChangeNameActivity.java index 2b204a9dd..0bd08b2b1 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileChangeNameActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileChangeNameActivity.java @@ -76,7 +76,11 @@ public class ChatProfileChangeNameActivity extends BaseFragment { TLRPC.Chat currentChat = MessagesController.getInstance().chats.get(chat_id); firstNameField = (EditText)fragmentView.findViewById(R.id.first_name_field); - firstNameField.setHint(LocaleController.getString("GroupName", R.string.GroupName)); + if (chat_id > 0) { + firstNameField.setHint(LocaleController.getString("GroupName", R.string.GroupName)); + } else { + firstNameField.setHint(LocaleController.getString("EnterListName", R.string.EnterListName)); + } firstNameField.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) { @@ -91,7 +95,11 @@ public class ChatProfileChangeNameActivity extends BaseFragment { firstNameField.setSelection(firstNameField.length()); TextView headerLabel = (TextView)fragmentView.findViewById(R.id.settings_section_text); - headerLabel.setText(LocaleController.getString("EnterGroupNameTitle", R.string.EnterGroupNameTitle)); + if (chat_id > 0) { + headerLabel.setText(LocaleController.getString("EnterGroupNameTitle", R.string.EnterGroupNameTitle)); + } else { + headerLabel.setText(LocaleController.getString("EnterListName", R.string.EnterListName).toUpperCase()); + } } else { ViewGroup parent = (ViewGroup)fragmentView.getParent(); if (parent != null) { diff --git a/TMessagesProj/src/main/res/layout-ar/group_create_final_layout.xml b/TMessagesProj/src/main/res/layout-ar/group_create_final_layout.xml index aea3bd3b2..f821e53ec 100644 --- a/TMessagesProj/src/main/res/layout-ar/group_create_final_layout.xml +++ b/TMessagesProj/src/main/res/layout-ar/group_create_final_layout.xml @@ -45,6 +45,7 @@ android:layout_marginTop="0dp" android:gravity="right|center_vertical" android:imeOptions="flagNoExtractUi" + android:inputType="textCapSentences" android:layout_gravity="center_vertical|right" android:textCursorDrawable="@null" android:textColor="#000000"/> diff --git a/TMessagesProj/src/main/res/layout/group_create_final_layout.xml b/TMessagesProj/src/main/res/layout/group_create_final_layout.xml index 1095df7c9..ba3f3ce36 100644 --- a/TMessagesProj/src/main/res/layout/group_create_final_layout.xml +++ b/TMessagesProj/src/main/res/layout/group_create_final_layout.xml @@ -45,6 +45,7 @@ android:layout_marginTop="0dp" android:gravity="left|center_vertical" android:imeOptions="flagNoExtractUi" + android:inputType="textCapSentences" android:layout_gravity="center_vertical" android:textCursorDrawable="@null" android:textColor="#000000"/> diff --git a/TMessagesProj/src/main/res/values-de/strings.xml b/TMessagesProj/src/main/res/values-de/strings.xml index 8251fa98e..66a354dde 100644 --- a/TMessagesProj/src/main/res/values-de/strings.xml +++ b/TMessagesProj/src/main/res/values-de/strings.xml @@ -58,12 +58,12 @@ Chat auswählen - Broadcast List - New Broadcast List - Enter list name - You created a broadcast list - Add Recipient - Remove from broadcast list + Broadcast Liste + Neue Broadcast Liste + Name der Liste eingeben + Du hast eine Broadcast Liste erstellt + Empfänger hinzufügen + Aus Broadcast Liste entfernen Datei auswählen @@ -158,7 +158,7 @@ %1$s hat dich aus der Gruppe %2$s entfernt %1$s hat die Gruppe %2$s verlassen %1$s benutzt jetzt Telegram! - %1$s,\n\nwir haben einen Zugriff auf dein Konto von einem neuen Gerät am %2$s erkannt.\n\nGerät: %3$s\nStandort: %4$s\n\nWenn du das nicht warst, kannst du in den Einstellungen alle Sitzungen beenden.\n\nDanke,\ndas Telegram Team + %1$s,\nWir haben eine Anmeldung von einem neuen Gerät mit der IP-Adresse %2$s festgestellt.\n\nGerät: %3$s\nStandort: %4$s\n\nWenn du es nicht selbst gewesen bist, melde alle anderen Sitzungen in den Telegram Einstellungen unverzüglich ab. \n\n\nMit freundlichen Grüßen,\nDas Telegram Team %1$s hat das Profilbild geändert @@ -201,7 +201,7 @@ FESTNETZ MOBIL ARBEIT - ANDERE + SONSTIGES HAUPTNUMMER Kontaktdaten TELEFON @@ -278,12 +278,12 @@ Vorname Nachname LED-Farbe - Popup-Benachrichtigung + Popup Benachrichtigungen Kein Popup Nur wenn Bildschirm „an“ Nur wenn Bildschirm „aus“ Popups immer anzeigen - Nummer auf Symbol + BADGE (Anzahl) Noch keine geteilten Medien vorhanden @@ -308,9 +308,9 @@ Noch keine Fotos - Edit Video - Original Video - Edited Video + Video bearbeiten + Originalvideo + Bearbeitetes Video Weiter @@ -371,7 +371,7 @@ Lädt… Du hast keinen Videoplayer. Bitte installiere einen um fortzufahren. Bitte sende uns eine Email an sms@telegram.org mit einer Beschreibung des Problems. - Du hast keine App, die den Dokumententyp \'%1$s\' öffnen kann. + Du hast keine Applikationen, die den Dateityp \'%1$s\' öffnen könnten. Bitte installiere eine entsprechende Anwendung um fortzufahren. Dieser Benutzer hat noch kein Telegram. Möchtest du ihn einladen? Bist du sicher? Kontakt hinzufügen? @@ -383,7 +383,7 @@ Sicher, dass du alle anderen Geräte abmelden möchtest? Diese Gruppe wirklich löschen und verlassen? Möchtest du wirklich diesen Chat löschen? - Möchtest du wirklich die eigenen Kontaktdaten teilen? + Wirklich die eigenen Kontaktinformationen teilen? Diesen Kontakt wirklich blockieren? Blockierung für diesen Kontakt wirklich aufheben? Diesen Kontakt wirklich löschen? diff --git a/TMessagesProj/src/main/res/values-es/strings.xml b/TMessagesProj/src/main/res/values-es/strings.xml index 4c1bdd302..88d1b7bf9 100644 --- a/TMessagesProj/src/main/res/values-es/strings.xml +++ b/TMessagesProj/src/main/res/values-es/strings.xml @@ -58,12 +58,12 @@ Selecciona el chat - Broadcast List - New Broadcast List - Enter list name - You created a broadcast list - Add Recipient - Remove from broadcast list + Lista de difusión + Nueva lista de difusión + Ingresa el nombre de la lista + Creaste una lista de difusión + Añadir destinatario + Quitar de la lista de difusión Seleccionar archivo @@ -158,7 +158,7 @@ %1$s te ha expulsado del grupo %2$s %1$s abandonó el grupo %2$s ¡%1$s se unió a Telegram! - %1$s,\nHemos detectado una conexión a tu cuenta desde un nuevo dispositivo el %2$s\n\nDispositivo: %3$s\nUbicación: %4$s\n\nSi no eras tú, puedes ir a Ajustes - Cerrar todas las otras sesiones.\n\nGracias,\nEl equipo de Telegram + %1$s,\nHemos detectado un inicio de sesión en tu cuenta desde un nuevo dispositivo, el %2$s\n\nDispositivo: %3$s\nUbicación: %4$s\n\nSi no eras tú, puedes ir a Ajustes - Cerrar todas las otras sesiones. \n\nAtentamente,\nEl Equipo de Telegram %1$s actualizó su foto de perfil @@ -271,19 +271,19 @@ Activado Desactivado Servicio de notificaciones - Si los servicios de google play son suficientes para recibir notificaciones, puedes desactivar el \'Servicio de notificaciones\'. Sin embargo, te recomendamos activarlos para mantener la aplicación funcionando en segundo plano y recibir notificaciones de forma instantánea. + Si los Servicios de Google Play son suficientes para que recibas las notificaciones, puedes desactivar el Servicio de notificaciones. Sin embargo, te recomendamos que lo dejes activo para mantener funcionando la aplicación en segundo plano y recibir las notificaciones al instante. Ordenar por Importar contactos Solo vía Wifi Nombre Apellido Color del LED - Notificación emergente + Notificaciones emergentes Sin notificación emergente Sólo con pantalla encendida Sólo con pantalla apagada Siempre mostrar notificación emergente - Globo de notificación + Globo en el ícono No hay fotos ni vídeos compartidos aún @@ -308,9 +308,9 @@ No hay fotos aún - Edit Video - Original Video - Edited Video + Editar vídeo + Vídeo original + Vídeo editado Siguiente @@ -370,8 +370,8 @@ Apellido/s inválido/s Cargando... No tienes reproductor de vídeo. Por favor, instala uno para continuar. - Por favor, envía un correo a sms@telegram.org y explica tu problema. - No tienes una aplicación que pueda manejar el tipo mime \'%1$s\'. Por favor, instala una para continuar + Por favor, envíanos un correo electrónico a sms@telegram.org y cuéntanos tu problema. + No tienes aplicaciones que puedan manejar el tipo de archivo \'%1$s\'. Por favor, instala una para continuar. Este usuario no tiene Telegram aún. ¿Enviarle una invitación? ¿Estás seguro? ¿Añadir contacto? From 755446e9bbd31354198cc266eea6148854e00afb Mon Sep 17 00:00:00 2001 From: DrKLO Date: Sun, 27 Jul 2014 14:53:00 +0400 Subject: [PATCH 05/11] Changed broadcast lists ids old broadcast lists will be broken --- TMessagesProj/build.gradle | 2 +- .../telegram/android/AndroidUtilities.java | 4 + .../telegram/android/MessagesController.java | 197 +++++++++--------- .../org/telegram/android/MessagesStorage.java | 67 +++--- .../org/telegram/ui/Cells/DialogCell.java | 22 +- .../java/org/telegram/ui/ChatActivity.java | 12 +- .../java/org/telegram/ui/LaunchActivity.java | 20 +- .../org/telegram/ui/MessagesActivity.java | 64 +++--- 8 files changed, 204 insertions(+), 184 deletions(-) diff --git a/TMessagesProj/build.gradle b/TMessagesProj/build.gradle index 836098767..3caacf477 100644 --- a/TMessagesProj/build.gradle +++ b/TMessagesProj/build.gradle @@ -83,7 +83,7 @@ android { defaultConfig { minSdkVersion 8 targetSdkVersion 19 - versionCode 292 + versionCode 293 versionName "1.7.0" } } diff --git a/TMessagesProj/src/main/java/org/telegram/android/AndroidUtilities.java b/TMessagesProj/src/main/java/org/telegram/android/AndroidUtilities.java index 65752a19f..37ca98a8f 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/AndroidUtilities.java +++ b/TMessagesProj/src/main/java/org/telegram/android/AndroidUtilities.java @@ -221,4 +221,8 @@ public class AndroidUtilities { FileLog.e("tmessages", e); } } + + public static long makeBroadcastId(int id) { + return 0x0000000100000000L | ((long)id & 0x00000000FFFFFFFFL); + } } diff --git a/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java b/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java index 99a8dbd4d..4fbfab985 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java +++ b/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java @@ -765,6 +765,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter TLRPC.TL_dialog dialog = dialogs_dict.get(did); if (dialog != null) { int lower_part = (int)did; + int high_id = (int)(did >> 32); if (offset == 0) { if (!onlyHistory) { @@ -785,6 +786,10 @@ public class MessagesController implements NotificationCenter.NotificationCenter NotificationCenter.getInstance().postNotificationName(dialogsNeedReload); } + if (high_id == 1) { + return; + } + if (lower_part != 0) { TLRPC.TL_messages_deleteHistory req = new TLRPC.TL_messages_deleteHistory(); req.offset = offset; @@ -831,14 +836,11 @@ public class MessagesController implements NotificationCenter.NotificationCenter } }); } else { - int high_id = (int)(did >> 32); - if (high_id > 0) { - if (onlyHistory) { - TLRPC.EncryptedChat encryptedChat = encryptedChats.get(high_id); - sendClearHistoryMessage(encryptedChat); - } else { - declineSecretChat(high_id); - } + if (onlyHistory) { + TLRPC.EncryptedChat encryptedChat = encryptedChats.get(high_id); + sendClearHistoryMessage(encryptedChat); + } else { + declineSecretChat(high_id); } } } @@ -1046,7 +1048,12 @@ public class MessagesController implements NotificationCenter.NotificationCenter return; } int lower_part = (int)dialog_id; + int high_id = (int)(dialog_id >> 32); if (lower_part != 0) { + if (high_id == 1) { + return; + } + TLRPC.TL_messages_setTyping req = new TLRPC.TL_messages_setTyping(); if (lower_part < 0) { req.peer = new TLRPC.TL_inputPeerChat(); @@ -1075,23 +1082,20 @@ public class MessagesController implements NotificationCenter.NotificationCenter }, true, RPCRequest.RPCRequestClassGeneric | RPCRequest.RPCRequestClassFailOnServerErrors); ConnectionsManager.getInstance().bindRequestToGuid(reqId, classGuid); } else { - int high_id = (int)(dialog_id >> 32); - if (high_id > 0) { - TLRPC.EncryptedChat chat = encryptedChats.get(high_id); - if (chat.auth_key != null && chat.auth_key.length > 1 && chat instanceof TLRPC.TL_encryptedChat) { - TLRPC.TL_messages_setEncryptedTyping req = new TLRPC.TL_messages_setEncryptedTyping(); - req.peer = new TLRPC.TL_inputEncryptedChat(); - req.peer.chat_id = chat.id; - req.peer.access_hash = chat.access_hash; - req.typing = true; - long reqId = ConnectionsManager.getInstance().performRpc(req, new RPCRequest.RPCRequestDelegate() { - @Override - public void run(TLObject response, TLRPC.TL_error error) { + TLRPC.EncryptedChat chat = encryptedChats.get(high_id); + if (chat.auth_key != null && chat.auth_key.length > 1 && chat instanceof TLRPC.TL_encryptedChat) { + TLRPC.TL_messages_setEncryptedTyping req = new TLRPC.TL_messages_setEncryptedTyping(); + req.peer = new TLRPC.TL_inputEncryptedChat(); + req.peer.chat_id = chat.id; + req.peer.access_hash = chat.access_hash; + req.typing = true; + long reqId = ConnectionsManager.getInstance().performRpc(req, new RPCRequest.RPCRequestDelegate() { + @Override + public void run(TLObject response, TLRPC.TL_error error) { - } - }, true, RPCRequest.RPCRequestClassGeneric | RPCRequest.RPCRequestClassFailOnServerErrors); - ConnectionsManager.getInstance().bindRequestToGuid(reqId, classGuid); - } + } + }, true, RPCRequest.RPCRequestClassGeneric | RPCRequest.RPCRequestClassFailOnServerErrors); + ConnectionsManager.getInstance().bindRequestToGuid(reqId, classGuid); } } } @@ -1555,8 +1559,10 @@ public class MessagesController implements NotificationCenter.NotificationCenter public void markDialogAsRead(final long dialog_id, final int max_id, final int max_positive_id, final int offset, final int max_date, final boolean was) { int lower_part = (int)dialog_id; + int high_id = (int)(dialog_id >> 32); + if (lower_part != 0) { - if (max_id == 0 && offset == 0) { + if (max_id == 0 && offset == 0 || high_id == 1) { return; } TLRPC.TL_messages_readHistory req = new TLRPC.TL_messages_readHistory(); @@ -1646,49 +1652,46 @@ public class MessagesController implements NotificationCenter.NotificationCenter if (max_date == 0) { return; } - int high_id = (int)(dialog_id >> 32); - if (high_id > 0) { - NotificationsController.getInstance().processReadMessages(null, dialog_id, max_date, 0); - TLRPC.EncryptedChat chat = encryptedChats.get(high_id); - if (chat.auth_key != null && chat.auth_key.length > 1 && chat instanceof TLRPC.TL_encryptedChat) { - TLRPC.TL_messages_readEncryptedHistory req = new TLRPC.TL_messages_readEncryptedHistory(); - req.peer = new TLRPC.TL_inputEncryptedChat(); - req.peer.chat_id = chat.id; - req.peer.access_hash = chat.access_hash; - req.max_date = max_date; + NotificationsController.getInstance().processReadMessages(null, dialog_id, max_date, 0); + TLRPC.EncryptedChat chat = encryptedChats.get(high_id); + if (chat.auth_key != null && chat.auth_key.length > 1 && chat instanceof TLRPC.TL_encryptedChat) { + TLRPC.TL_messages_readEncryptedHistory req = new TLRPC.TL_messages_readEncryptedHistory(); + req.peer = new TLRPC.TL_inputEncryptedChat(); + req.peer.chat_id = chat.id; + req.peer.access_hash = chat.access_hash; + req.max_date = max_date; - ConnectionsManager.getInstance().performRpc(req, new RPCRequest.RPCRequestDelegate() { + ConnectionsManager.getInstance().performRpc(req, new RPCRequest.RPCRequestDelegate() { + @Override + public void run(TLObject response, TLRPC.TL_error error) { + //MessagesStorage.getInstance().processPendingRead(dialog_id, max_id, max_date, true); + } + }); + } + MessagesStorage.getInstance().processPendingRead(dialog_id, max_id, max_date, false); + + MessagesStorage.getInstance().storageQueue.postRunnable(new Runnable() { + @Override + public void run() { + Utilities.RunOnUIThread(new Runnable() { @Override - public void run(TLObject response, TLRPC.TL_error error) { - //MessagesStorage.getInstance().processPendingRead(dialog_id, max_id, max_date, true); + public void run() { + TLRPC.TL_dialog dialog = dialogs_dict.get(dialog_id); + if (dialog != null) { + dialog.unread_count = 0; + NotificationCenter.getInstance().postNotificationName(dialogsNeedReload); + } + HashMap dialogsToUpdate = new HashMap(); + dialogsToUpdate.put(dialog_id, 0); + NotificationsController.getInstance().processDialogsUpdateRead(dialogsToUpdate, true); } }); } - MessagesStorage.getInstance().processPendingRead(dialog_id, max_id, max_date, false); + }); - MessagesStorage.getInstance().storageQueue.postRunnable(new Runnable() { - @Override - public void run() { - Utilities.RunOnUIThread(new Runnable() { - @Override - public void run() { - TLRPC.TL_dialog dialog = dialogs_dict.get(dialog_id); - if (dialog != null) { - dialog.unread_count = 0; - NotificationCenter.getInstance().postNotificationName(dialogsNeedReload); - } - HashMap dialogsToUpdate = new HashMap(); - dialogsToUpdate.put(dialog_id, 0); - NotificationsController.getInstance().processDialogsUpdateRead(dialogsToUpdate, true); - } - }); - } - }); - - if (chat.ttl > 0 && was) { - int serverTime = Math.max(ConnectionsManager.getInstance().getCurrentTime(), max_date); - MessagesStorage.getInstance().createTaskForDate(chat.id, serverTime, serverTime, 0); - } + if (chat.ttl > 0 && was) { + int serverTime = Math.max(ConnectionsManager.getInstance().getCurrentTime(), max_date); + MessagesStorage.getInstance().createTaskForDate(chat.id, serverTime, serverTime, 0); } } } @@ -1975,44 +1978,12 @@ public class MessagesController implements NotificationCenter.NotificationCenter newMsg.unread = true; newMsg.dialog_id = peer; int lower_id = (int)peer; + int high_id = (int)(peer >> 32); TLRPC.EncryptedChat encryptedChat = null; TLRPC.InputPeer sendToPeer = null; ArrayList sendToPeers = null; if (lower_id != 0) { - if (lower_id < 0) { - newMsg.to_id = new TLRPC.TL_peerChat(); - newMsg.to_id.chat_id = -lower_id; - sendToPeer = new TLRPC.TL_inputPeerChat(); - sendToPeer.chat_id = -lower_id; - } else { - newMsg.to_id = new TLRPC.TL_peerUser(); - newMsg.to_id.user_id = lower_id; - - TLRPC.User sendToUser = users.get(lower_id); - if (sendToUser == null) { - return; - } - if (sendToUser instanceof TLRPC.TL_userForeign || sendToUser instanceof TLRPC.TL_userRequest) { - sendToPeer = new TLRPC.TL_inputPeerForeign(); - sendToPeer.user_id = sendToUser.id; - sendToPeer.access_hash = sendToUser.access_hash; - } else { - sendToPeer = new TLRPC.TL_inputPeerContact(); - sendToPeer.user_id = sendToUser.id; - } - } - } else { - int high_id = (int)(peer >> 32); - if (high_id > 0) { - encryptedChat = encryptedChats.get(high_id); - newMsg.to_id = new TLRPC.TL_peerUser(); - if (encryptedChat.participant_id == UserConfig.getClientUserId()) { - newMsg.to_id.user_id = encryptedChat.admin_id; - } else { - newMsg.to_id.user_id = encryptedChat.participant_id; - } - newMsg.ttl = encryptedChat.ttl; - } else { + if (high_id == 1) { if (currentChatInfo == null) { return; } @@ -2026,7 +1997,39 @@ public class MessagesController implements NotificationCenter.NotificationCenter } newMsg.to_id = new TLRPC.TL_peerChat(); newMsg.to_id.chat_id = high_id; + } else { + if (lower_id < 0) { + newMsg.to_id = new TLRPC.TL_peerChat(); + newMsg.to_id.chat_id = -lower_id; + sendToPeer = new TLRPC.TL_inputPeerChat(); + sendToPeer.chat_id = -lower_id; + } else { + newMsg.to_id = new TLRPC.TL_peerUser(); + newMsg.to_id.user_id = lower_id; + + TLRPC.User sendToUser = users.get(lower_id); + if (sendToUser == null) { + return; + } + if (sendToUser instanceof TLRPC.TL_userForeign || sendToUser instanceof TLRPC.TL_userRequest) { + sendToPeer = new TLRPC.TL_inputPeerForeign(); + sendToPeer.user_id = sendToUser.id; + sendToPeer.access_hash = sendToUser.access_hash; + } else { + sendToPeer = new TLRPC.TL_inputPeerContact(); + sendToPeer.user_id = sendToUser.id; + } + } } + } else { + encryptedChat = encryptedChats.get(high_id); + newMsg.to_id = new TLRPC.TL_peerUser(); + if (encryptedChat.participant_id == UserConfig.getClientUserId()) { + newMsg.to_id.user_id = encryptedChat.admin_id; + } else { + newMsg.to_id.user_id = encryptedChat.participant_id; + } + newMsg.ttl = encryptedChat.ttl; } newMsg.out = true; newMsg.date = ConnectionsManager.getInstance().getCurrentTime(); @@ -2886,7 +2889,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter newMsg.local_id = newMsg.id = UserConfig.getNewMessageId(); newMsg.from_id = UserConfig.getClientUserId(); newMsg.unread = false; - newMsg.dialog_id = ((long)chat.id) << 32; + newMsg.dialog_id = AndroidUtilities.makeBroadcastId(chat.id); newMsg.to_id = new TLRPC.TL_peerChat(); newMsg.to_id.chat_id = chat.id; newMsg.out = false; diff --git a/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java b/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java index 58c25e751..7f41c0740 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java +++ b/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java @@ -366,6 +366,17 @@ public class MessagesStorage { if (!messagesOnly) { database.executeFast("DELETE FROM dialogs WHERE did = " + did).stepThis().dispose(); database.executeFast("DELETE FROM chat_settings WHERE uid = " + did).stepThis().dispose(); + int lower_id = (int)did; + int high_id = (int)(did >> 32); + if (lower_id != 0) { + if (high_id == 1) { + database.executeFast("DELETE FROM chats WHERE uid = " + lower_id).stepThis().dispose(); + } else if (lower_id < 0) { + database.executeFast("DELETE FROM chats WHERE uid = " + (-lower_id)).stepThis().dispose(); + } + } else { + database.executeFast("DELETE FROM enc_chats WHERE uid = " + high_id).stepThis().dispose(); + } } database.executeFast("UPDATE dialogs SET unread_count = 0 WHERE did = " + did).stepThis().dispose(); database.executeFast("DELETE FROM media_counts WHERE uid = " + did).stepThis().dispose(); @@ -2429,26 +2440,26 @@ public class MessagesStorage { buffersStorage.reuseFreeBuffer(data); int lower_id = (int)dialog.id; + int high_id = (int)(dialog.id >> 32); if (lower_id != 0) { - if (lower_id > 0) { - if (!usersToLoad.contains(lower_id)) { - usersToLoad.add(lower_id); + if (high_id == 1) { + if (!chatsToLoad.contains(lower_id)) { + chatsToLoad.add(lower_id); } } else { - if (!chatsToLoad.contains(-lower_id)) { - chatsToLoad.add(-lower_id); + if (lower_id > 0) { + if (!usersToLoad.contains(lower_id)) { + usersToLoad.add(lower_id); + } + } else { + if (!chatsToLoad.contains(-lower_id)) { + chatsToLoad.add(-lower_id); + } } } } else { - int high_id = (int)(dialog.id >> 32); - if (high_id > 0) { - if (!encryptedToLoad.contains(high_id)) { - encryptedToLoad.add(high_id); - } - } else { - if (!chatsToLoad.contains(high_id)) { - chatsToLoad.add(high_id); - } + if (!encryptedToLoad.contains(high_id)) { + encryptedToLoad.add(high_id); } } } @@ -2702,26 +2713,26 @@ public class MessagesStorage { buffersStorage.reuseFreeBuffer(data); int lower_id = (int)dialog.id; + int high_id = (int)(dialog.id >> 32); if (lower_id != 0) { - if (lower_id > 0) { - if (!usersToLoad.contains(lower_id)) { - usersToLoad.add(lower_id); + if (high_id == 1) { + if (!chatsToLoad.contains(lower_id)) { + chatsToLoad.add(lower_id); } } else { - if (!chatsToLoad.contains(-lower_id)) { - chatsToLoad.add(-lower_id); + if (lower_id > 0) { + if (!usersToLoad.contains(lower_id)) { + usersToLoad.add(lower_id); + } + } else { + if (!chatsToLoad.contains(-lower_id)) { + chatsToLoad.add(-lower_id); + } } } } else { - int high_id = (int)(dialog.id >> 32); - if (high_id > 0) { - if (!encryptedToLoad.contains(high_id)) { - encryptedToLoad.add(high_id); - } - } else { - if (!chatsToLoad.contains(high_id)) { - chatsToLoad.add(high_id); - } + if (!encryptedToLoad.contains(high_id)) { + encryptedToLoad.add(high_id); } } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/DialogCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DialogCell.java index c58517581..52d35e794 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/DialogCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DialogCell.java @@ -225,21 +225,21 @@ public class DialogCell extends BaseCell { encryptedChat = null; int lower_id = (int)currentDialog.id; + int high_id = (int)(currentDialog.id >> 32); if (lower_id != 0) { - if (lower_id < 0) { - chat = MessagesController.getInstance().chats.get(-lower_id); + if (high_id == 1) { + chat = MessagesController.getInstance().chats.get(lower_id); } else { - user = MessagesController.getInstance().users.get(lower_id); + if (lower_id < 0) { + chat = MessagesController.getInstance().chats.get(-lower_id); + } else { + user = MessagesController.getInstance().users.get(lower_id); + } } } else { - int high_id = (int)(currentDialog.id >> 32); - if (high_id > 0) { - encryptedChat = MessagesController.getInstance().encryptedChats.get(high_id); - if (encryptedChat != null) { - user = MessagesController.getInstance().users.get(encryptedChat.user_id); - } - } else { - chat = MessagesController.getInstance().chats.get(high_id); + encryptedChat = MessagesController.getInstance().encryptedChats.get(high_id); + if (encryptedChat != null) { + user = MessagesController.getInstance().users.get(encryptedChat.user_id); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java index c2d57bd21..61775e327 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java @@ -129,6 +129,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not private View pagedownButton; private TextView topPanelText; private long dialog_id; + private boolean isBraodcast = false; private HashMap selectedMessagesIds = new HashMap(); private HashMap selectedMessagesCanCopyIds = new HashMap(); @@ -215,7 +216,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (chatId > 0) { dialog_id = -chatId; } else { - dialog_id = ((long)chatId) << 32; + isBraodcast = true; + dialog_id = AndroidUtilities.makeBroadcastId(chatId); } } else if (userId != 0) { currentUser = MessagesController.getInstance().users.get(userId); @@ -1051,8 +1053,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not private int getMessageType(MessageObject messageObject) { if (currentEncryptedChat == null) { - boolean isBroadcastError = (int)dialog_id == 0 && messageObject.messageOwner.id <= 0 && messageObject.messageOwner.send_state == MessagesController.MESSAGE_SEND_STATE_SEND_ERROR; - if ((int)dialog_id != 0 && messageObject.messageOwner.id <= 0 && messageObject.isOut() || isBroadcastError) { + boolean isBroadcastError = isBraodcast && messageObject.messageOwner.id <= 0 && messageObject.messageOwner.send_state == MessagesController.MESSAGE_SEND_STATE_SEND_ERROR; + if (!isBraodcast && messageObject.messageOwner.id <= 0 && messageObject.isOut() || isBroadcastError) { if (messageObject.messageOwner.send_state == MessagesController.MESSAGE_SEND_STATE_SEND_ERROR) { if (!(messageObject.messageOwner.media instanceof TLRPC.TL_messageMediaEmpty)) { return 0; @@ -1778,7 +1780,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (messArr.size() != count) { if (isCache) { cacheEndReaced = true; - if ((int)dialog_id == 0) { + if (currentEncryptedChat != null || isBraodcast) { endReached = true; } } else { @@ -2932,7 +2934,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not @Override public void didSelectDialog(MessagesActivity activity, long did, boolean param) { if (dialog_id != 0 && (forwaringMessage != null || !selectedMessagesIds.isEmpty())) { - if ((int)dialog_id == 0 && currentEncryptedChat == null) { + if (isBraodcast) { param = true; } if (did != dialog_id) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java index 1fd650783..962498f60 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java @@ -447,23 +447,23 @@ public class LaunchActivity extends ActionBarActivity implements NotificationCen public void didSelectDialog(MessagesActivity messageFragment, long dialog_id, boolean param) { if (dialog_id != 0) { int lower_part = (int)dialog_id; + int high_id = (int)(dialog_id >> 32); Bundle args = new Bundle(); args.putBoolean("scrollToTopOnResume", true); NotificationCenter.getInstance().postNotificationName(MessagesController.closeChats); if (lower_part != 0) { - if (lower_part > 0) { - args.putInt("user_id", lower_part); - } else if (lower_part < 0) { - args.putInt("chat_id", -lower_part); + if (high_id == 1) { + args.putInt("chat_id", lower_part); + } else { + if (lower_part > 0) { + args.putInt("user_id", lower_part); + } else if (lower_part < 0) { + args.putInt("chat_id", -lower_part); + } } } else { - int high_id = (int)(dialog_id >> 32); - if (high_id > 0) { - args.putInt("enc_id", high_id); - } else { - args.putInt("chat_id", high_id); - } + args.putInt("enc_id", high_id); } ChatActivity fragment = new ChatActivity(args); presentFragment(fragment, true); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java index c3ab5d6ac..f3c906c67 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java @@ -288,19 +288,19 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter } else { Bundle args = new Bundle(); int lower_part = (int)dialog_id; + int high_id = (int)(dialog_id >> 32); if (lower_part != 0) { - if (lower_part > 0) { - args.putInt("user_id", lower_part); - } else if (lower_part < 0) { - args.putInt("chat_id", -lower_part); + if (high_id == 1) { + args.putInt("chat_id", lower_part); + } else { + if (lower_part > 0) { + args.putInt("user_id", lower_part); + } else if (lower_part < 0) { + args.putInt("chat_id", -lower_part); + } } } else { - int high_id = (int)(dialog_id >> 32); - if (high_id > 0) { - args.putInt("enc_id", high_id); - } else { - args.putInt("chat_id", high_id); - } + args.putInt("enc_id", high_id); } presentFragment(new ChatActivity(args)); } @@ -493,36 +493,36 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); int lower_part = (int)dialog_id; + int high_id = (int)(dialog_id >> 32); if (lower_part != 0) { - if (lower_part > 0) { - TLRPC.User user = MessagesController.getInstance().users.get(lower_part); - if (user == null) { - return; - } - builder.setMessage(LocaleController.formatStringSimple(selectAlertString, Utilities.formatName(user.first_name, user.last_name))); - } else if (lower_part < 0) { - TLRPC.Chat chat = MessagesController.getInstance().chats.get(-lower_part); + if (high_id == 1) { + TLRPC.Chat chat = MessagesController.getInstance().chats.get(lower_part); if (chat == null) { return; } builder.setMessage(LocaleController.formatStringSimple(selectAlertString, chat.title)); + } else { + if (lower_part > 0) { + TLRPC.User user = MessagesController.getInstance().users.get(lower_part); + if (user == null) { + return; + } + builder.setMessage(LocaleController.formatStringSimple(selectAlertString, Utilities.formatName(user.first_name, user.last_name))); + } else if (lower_part < 0) { + TLRPC.Chat chat = MessagesController.getInstance().chats.get(-lower_part); + if (chat == null) { + return; + } + builder.setMessage(LocaleController.formatStringSimple(selectAlertString, chat.title)); + } } } else { - int high_id = (int)(dialog_id >> 32); - if (high_id > 0) { - TLRPC.EncryptedChat chat = MessagesController.getInstance().encryptedChats.get(high_id); - TLRPC.User user = MessagesController.getInstance().users.get(chat.user_id); - if (user == null) { - return; - } - builder.setMessage(LocaleController.formatStringSimple(selectAlertString, Utilities.formatName(user.first_name, user.last_name))); - } else { - TLRPC.Chat chat = MessagesController.getInstance().chats.get(high_id); - if (chat == null) { - return; - } - builder.setMessage(LocaleController.formatStringSimple(selectAlertString, chat.title)); + TLRPC.EncryptedChat chat = MessagesController.getInstance().encryptedChats.get(high_id); + TLRPC.User user = MessagesController.getInstance().users.get(chat.user_id); + if (user == null) { + return; } + builder.setMessage(LocaleController.formatStringSimple(selectAlertString, Utilities.formatName(user.first_name, user.last_name))); } CheckBox checkBox = null; /*if (delegate instanceof ChatActivity) { From e27094b9632ac8c0f45fff913d8761fb98d47bac Mon Sep 17 00:00:00 2001 From: DrKLO Date: Wed, 30 Jul 2014 08:49:39 +0100 Subject: [PATCH 06/11] Bug fixes --- TMessagesProj/build.gradle | 2 +- .../telegram/android/MessagesController.java | 160 +++++++++++++----- .../android/NotificationsController.java | 19 ++- .../java/org/telegram/ui/ChatActivity.java | 31 +++- 4 files changed, 149 insertions(+), 63 deletions(-) diff --git a/TMessagesProj/build.gradle b/TMessagesProj/build.gradle index 3caacf477..93b83d310 100644 --- a/TMessagesProj/build.gradle +++ b/TMessagesProj/build.gradle @@ -83,7 +83,7 @@ android { defaultConfig { minSdkVersion 8 targetSdkVersion 19 - versionCode 293 + versionCode 296 versionName "1.7.0" } } diff --git a/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java b/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java index 4fbfab985..0604c2522 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java +++ b/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java @@ -777,10 +777,20 @@ public class MessagesController implements NotificationCenter.NotificationCenter dialog.unread_count = 0; } dialogMessage.remove(dialog.top_message); - NotificationsController.getInstance().processReadMessages(null, did, 0, Integer.MAX_VALUE); - HashMap dialogsToUpdate = new HashMap(); - dialogsToUpdate.put(did, 0); - NotificationsController.getInstance().processDialogsUpdateRead(dialogsToUpdate, true); + MessagesStorage.getInstance().storageQueue.postRunnable(new Runnable() { + @Override + public void run() { + Utilities.RunOnUIThread(new Runnable() { + @Override + public void run() { + NotificationsController.getInstance().processReadMessages(null, did, 0, Integer.MAX_VALUE); + HashMap dialogsToUpdate = new HashMap(); + dialogsToUpdate.put(did, 0); + NotificationsController.getInstance().processDialogsUpdateRead(dialogsToUpdate, true); + } + }); + } + }); MessagesStorage.getInstance().deleteDialog(did, onlyHistory); NotificationCenter.getInstance().postNotificationName(removeAllMessagesFromDialog, did); NotificationCenter.getInstance().postNotificationName(dialogsNeedReload); @@ -1344,7 +1354,8 @@ public class MessagesController implements NotificationCenter.NotificationCenter } }); for (TLRPC.TL_dialog d : dialogs) { - if ((int)d.id != 0) { + int high_id = (int)(d.id >> 32); + if ((int)d.id != 0 && high_id != 1) { dialogsServerOnly.add(d); } } @@ -1508,7 +1519,8 @@ public class MessagesController implements NotificationCenter.NotificationCenter } }); for (TLRPC.TL_dialog d : dialogs) { - if ((int)d.id != 0) { + int high_id = (int)(d.id >> 32); + if ((int)d.id != 0 && high_id != 1) { dialogsServerOnly.add(d); } } @@ -1583,7 +1595,6 @@ public class MessagesController implements NotificationCenter.NotificationCenter req.max_id = max_positive_id; req.offset = offset; if (offset == 0) { - NotificationsController.getInstance().processReadMessages(null, dialog_id, 0, max_positive_id); MessagesStorage.getInstance().processPendingRead(dialog_id, max_positive_id, max_date, false); MessagesStorage.getInstance().storageQueue.postRunnable(new Runnable() { @Override @@ -1596,6 +1607,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter dialog.unread_count = 0; NotificationCenter.getInstance().postNotificationName(dialogsNeedReload); } + NotificationsController.getInstance().processReadMessages(null, dialog_id, 0, max_positive_id); HashMap dialogsToUpdate = new HashMap(); dialogsToUpdate.put(dialog_id, 0); NotificationsController.getInstance().processDialogsUpdateRead(dialogsToUpdate, true); @@ -1652,7 +1664,6 @@ public class MessagesController implements NotificationCenter.NotificationCenter if (max_date == 0) { return; } - NotificationsController.getInstance().processReadMessages(null, dialog_id, max_date, 0); TLRPC.EncryptedChat chat = encryptedChats.get(high_id); if (chat.auth_key != null && chat.auth_key.length > 1 && chat instanceof TLRPC.TL_encryptedChat) { TLRPC.TL_messages_readEncryptedHistory req = new TLRPC.TL_messages_readEncryptedHistory(); @@ -1676,6 +1687,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter Utilities.RunOnUIThread(new Runnable() { @Override public void run() { + NotificationsController.getInstance().processReadMessages(null, dialog_id, max_date, 0); TLRPC.TL_dialog dialog = dialogs_dict.get(dialog_id); if (dialog != null) { dialog.unread_count = 0; @@ -3693,14 +3705,19 @@ public class MessagesController implements NotificationCenter.NotificationCenter updateInterfaceWithMessages(key, value); } NotificationCenter.getInstance().postNotificationName(dialogsNeedReload); - if (!pushMessages.isEmpty()) { - NotificationsController.getInstance().processNewMessages(pushMessages, !(res instanceof TLRPC.TL_updates_differenceSlice)); - } } }); MessagesStorage.getInstance().storageQueue.postRunnable(new Runnable() { @Override public void run() { + if (!pushMessages.isEmpty()) { + Utilities.RunOnUIThread(new Runnable() { + @Override + public void run() { + NotificationsController.getInstance().processNewMessages(pushMessages, !(res instanceof TLRPC.TL_updates_differenceSlice)); + } + }); + } MessagesStorage.getInstance().startTransaction(false); MessagesStorage.getInstance().putMessages(res.new_messages, false, false, false); MessagesStorage.getInstance().putUsersAndChats(res.users, res.chats, false, false); @@ -3795,13 +3812,24 @@ public class MessagesController implements NotificationCenter.NotificationCenter if (printUpdate) { NotificationCenter.getInstance().postNotificationName(updateInterfaces, UPDATE_MASK_USER_PRINT); } - if (!obj.isFromMe() && obj.isUnread()) { - NotificationsController.getInstance().processNewMessages(objArr, true); - } + updateInterfaceWithMessages(-updates.chat_id, objArr); NotificationCenter.getInstance().postNotificationName(dialogsNeedReload); } }); + MessagesStorage.getInstance().storageQueue.postRunnable(new Runnable() { + @Override + public void run() { + Utilities.RunOnUIThread(new Runnable() { + @Override + public void run() { + if (!obj.isFromMe() && obj.isUnread()) { + NotificationsController.getInstance().processNewMessages(objArr, true); + } + } + }); + } + }); MessagesStorage.getInstance().putMessages(arr, false, true, false); } else if (MessagesStorage.lastSeqValue != updates.seq) { FileLog.e("tmessages", "need get diff TL_updateShortChatMessage, seq: " + MessagesStorage.lastSeqValue + " " + updates.seq); @@ -3850,13 +3878,23 @@ public class MessagesController implements NotificationCenter.NotificationCenter if (printUpdate) { NotificationCenter.getInstance().postNotificationName(updateInterfaces, UPDATE_MASK_USER_PRINT); } - if (!obj.isFromMe() && obj.isUnread()) { - NotificationsController.getInstance().processNewMessages(objArr, true); - } updateInterfaceWithMessages(updates.from_id, objArr); NotificationCenter.getInstance().postNotificationName(dialogsNeedReload); } }); + MessagesStorage.getInstance().storageQueue.postRunnable(new Runnable() { + @Override + public void run() { + Utilities.RunOnUIThread(new Runnable() { + @Override + public void run() { + if (!obj.isFromMe() && obj.isUnread()) { + NotificationsController.getInstance().processNewMessages(objArr, true); + } + } + }); + } + }); MessagesStorage.getInstance().putMessages(arr, false, true, false); } else if (MessagesStorage.lastSeqValue != updates.seq) { FileLog.e("tmessages", "need get diff TL_updateShortMessage, seq: " + MessagesStorage.lastSeqValue + " " + updates.seq); @@ -4265,7 +4303,8 @@ public class MessagesController implements NotificationCenter.NotificationCenter } }); for (TLRPC.TL_dialog d : dialogs) { - if ((int)d.id != 0) { + int high_id = (int)(d.id >> 32); + if ((int)d.id != 0 && high_id != 1) { dialogsServerOnly.add(d); } } @@ -4327,6 +4366,20 @@ public class MessagesController implements NotificationCenter.NotificationCenter ContactsController.getInstance().processContactsUpdates(contactsIds, usersDict); } + MessagesStorage.getInstance().storageQueue.postRunnable(new Runnable() { + @Override + public void run() { + Utilities.RunOnUIThread(new Runnable() { + @Override + public void run() { + if (!pushMessages.isEmpty()) { + NotificationsController.getInstance().processNewMessages(pushMessages, true); + } + } + }); + } + }); + if (!messagesArr.isEmpty()) { MessagesStorage.getInstance().putMessages(messagesArr, true, true, false); } @@ -4415,9 +4468,6 @@ public class MessagesController implements NotificationCenter.NotificationCenter } NotificationCenter.getInstance().postNotificationName(dialogsNeedReload); } - if (!pushMessages.isEmpty()) { - NotificationsController.getInstance().processNewMessages(pushMessages, true); - } if (!markAsReadMessages.isEmpty()) { for (Integer id : markAsReadMessages) { MessageObject obj = dialogMessage.get(id); @@ -4441,9 +4491,6 @@ public class MessagesController implements NotificationCenter.NotificationCenter } } } - if (!markAsReadMessages.isEmpty()) { - NotificationsController.getInstance().processReadMessages(markAsReadMessages, 0, 0, 0); - } if (!deletedMessages.isEmpty()) { NotificationCenter.getInstance().postNotificationName(messagesDeleted, deletedMessages); for (Integer id : deletedMessages) { @@ -4472,21 +4519,20 @@ public class MessagesController implements NotificationCenter.NotificationCenter } }); - if (!markAsReadMessages.isEmpty() || !markAsReadEncrypted.isEmpty()) { - MessagesStorage.getInstance().storageQueue.postRunnable(new Runnable() { - @Override - public void run() { - Utilities.RunOnUIThread(new Runnable() { - @Override - public void run() { - if (!markAsReadMessages.isEmpty()) { - NotificationCenter.getInstance().postNotificationName(messagesReaded, markAsReadMessages); - } + MessagesStorage.getInstance().storageQueue.postRunnable(new Runnable() { + @Override + public void run() { + Utilities.RunOnUIThread(new Runnable() { + @Override + public void run() { + if (!markAsReadMessages.isEmpty()) { + NotificationCenter.getInstance().postNotificationName(messagesReaded, markAsReadMessages); + NotificationsController.getInstance().processReadMessages(markAsReadMessages, 0, 0, 0); } - }); - } - }); - } + } + }); + } + }); if (!markAsReadMessages.isEmpty() || !markAsReadEncrypted.isEmpty()) { if (!markAsReadMessages.isEmpty()) { @@ -4566,13 +4612,23 @@ public class MessagesController implements NotificationCenter.NotificationCenter updateInterfaceWithMessages(uid, messages, false); } - private void updateInterfaceWithMessages(long uid, ArrayList messages, boolean isBroadcast) { + private void updateInterfaceWithMessages(final long uid, final ArrayList messages, boolean isBroadcast) { MessageObject lastMessage = null; TLRPC.TL_dialog dialog = dialogs_dict.get(uid); boolean isEncryptedChat = ((int)uid) == 0; - NotificationCenter.getInstance().postNotificationName(didReceivedNewMessages, uid, messages); + MessagesStorage.getInstance().storageQueue.postRunnable(new Runnable() { + @Override + public void run() { + Utilities.RunOnUIThread(new Runnable() { + @Override + public void run() { + NotificationCenter.getInstance().postNotificationName(didReceivedNewMessages, uid, messages); + } + }); + } + }); for (MessageObject message : messages) { if (lastMessage == null || (!isEncryptedChat && message.messageOwner.id > lastMessage.messageOwner.id || isEncryptedChat && message.messageOwner.id < lastMessage.messageOwner.id) || message.messageOwner.date > lastMessage.messageOwner.date) { @@ -4623,7 +4679,8 @@ public class MessagesController implements NotificationCenter.NotificationCenter } }); for (TLRPC.TL_dialog d : dialogs) { - if ((int)d.id != 0) { + int high_id = (int)(d.id >> 32); + if ((int)d.id != 0 && high_id != 1) { dialogsServerOnly.add(d); } } @@ -4854,10 +4911,20 @@ public class MessagesController implements NotificationCenter.NotificationCenter dialog.unread_count = 0; dialogMessage.remove(dialog.top_message); } - NotificationsController.getInstance().processReadMessages(null, did, 0, Integer.MAX_VALUE); - HashMap dialogsToUpdate = new HashMap(); - dialogsToUpdate.put(did, 0); - NotificationsController.getInstance().processDialogsUpdateRead(dialogsToUpdate, true); + MessagesStorage.getInstance().storageQueue.postRunnable(new Runnable() { + @Override + public void run() { + Utilities.RunOnUIThread(new Runnable() { + @Override + public void run() { + NotificationsController.getInstance().processReadMessages(null, did, 0, Integer.MAX_VALUE); + HashMap dialogsToUpdate = new HashMap(); + dialogsToUpdate.put(did, 0); + NotificationsController.getInstance().processDialogsUpdateRead(dialogsToUpdate, true); + } + }); + } + }); MessagesStorage.getInstance().deleteDialog(did, true); NotificationCenter.getInstance().postNotificationName(removeAllMessagesFromDialog, did); NotificationCenter.getInstance().postNotificationName(dialogsNeedReload); @@ -5145,7 +5212,8 @@ public class MessagesController implements NotificationCenter.NotificationCenter } }); for (TLRPC.TL_dialog d : dialogs) { - if ((int) d.id != 0) { + int high_id = (int)(d.id >> 32); + if ((int)d.id != 0 && high_id != 1) { dialogsServerOnly.add(d); } } diff --git a/TMessagesProj/src/main/java/org/telegram/android/NotificationsController.java b/TMessagesProj/src/main/java/org/telegram/android/NotificationsController.java index 1ec524c98..88cfffecc 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/NotificationsController.java +++ b/TMessagesProj/src/main/java/org/telegram/android/NotificationsController.java @@ -183,6 +183,8 @@ public class NotificationsController { } msg = LocaleController.formatString("NotificationGroupKickMember", R.string.NotificationGroupKickMember, Utilities.formatName(user.first_name, user.last_name), chat.title, Utilities.formatName(u2.first_name, u2.last_name)); } + } else if (messageObject.messageOwner.action instanceof TLRPC.TL_messageActionChatCreate) { + msg = messageObject.messageText.toString(); } } else { if (messageObject.messageOwner.media instanceof TLRPC.TL_messageMediaEmpty) { @@ -508,9 +510,6 @@ public class NotificationsController { if (oldCount != popupMessages.size()) { NotificationCenter.getInstance().postNotificationName(pushMessagesUpdated); } -// if (readMessages != null || oldCount2 != pushMessages.size() || readMessages == null && dialog_id == 0) { -// showOrUpdateNotification(notifyCheck); -// } } public void processNewMessages(ArrayList messageObjects, boolean isLast) { @@ -585,6 +584,15 @@ public class NotificationsController { } if (newCount == 0) { pushDialogs.remove(dialog_id); + for (int a = 0; a < pushMessages.size(); a++) { + MessageObject messageObject = pushMessages.get(a); + if (messageObject.getDialogId() == dialog_id) { + pushMessages.remove(a); + a--; + pushMessagesDict.remove(messageObject.messageOwner.id); + popupMessages.remove(messageObject); + } + } } else if (canAddValue) { total_unread_count += newCount; pushDialogs.put(dialog_id, newCount); @@ -611,7 +619,6 @@ public class NotificationsController { pushDialogs.clear(); total_unread_count = 0; SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Context.MODE_PRIVATE); - String dialogsToLoad = ""; for (HashMap.Entry entry : dialogs.entrySet()) { long dialog_id = entry.getKey(); int notify_override = preferences.getInt("notify2_" + dialog_id, 0); @@ -619,10 +626,6 @@ public class NotificationsController { if (!(notify_override == 2 || (!preferences.getBoolean("EnableAll", true) || isChat && !preferences.getBoolean("EnableGroup", true)) && notify_override == 0)) { pushDialogs.put(dialog_id, entry.getValue()); total_unread_count += entry.getValue(); - if (dialogsToLoad.length() != 0) { - dialogsToLoad += ","; - } - dialogsToLoad += "" + dialog_id; } } if (total_unread_count == 0) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java index 61775e327..a4c9ba647 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java @@ -8,6 +8,7 @@ package org.telegram.ui; +import android.animation.Animator; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; @@ -149,7 +150,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not private int unread_to_load = 0; private int first_unread_id = 0; private int last_unread_id = 0; - private boolean unread_end_reached = true; + private boolean unread_end_reached = false; private boolean loadingForward = false; private MessageObject unreadMessageObject = null; @@ -617,6 +618,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not View bottomOverlayChat = fragmentView.findViewById(R.id.bottom_overlay_chat); progressView = fragmentView.findViewById(R.id.progressLayout); pagedownButton = fragmentView.findViewById(R.id.pagedown_button); + pagedownButton.setVisibility(View.GONE); View progressViewInner = progressView.findViewById(R.id.progressLayoutInner); @@ -743,8 +745,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (firstVisibleItem + visibleItemCount == totalItemCount && unread_end_reached) { showPagedownButton(false, true); } - } else { - showPagedownButton(false, false); } for (int a = 0; a < visibleItemCount; a++) { View view = absListView.getChildAt(a); @@ -873,7 +873,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } if (show) { if (pagedownButton.getVisibility() == View.GONE) { - if (android.os.Build.VERSION.SDK_INT >= 16 && animated) { + if (android.os.Build.VERSION.SDK_INT >= 12 && animated) { pagedownButton.setVisibility(View.VISIBLE); pagedownButton.setAlpha(0); pagedownButton.animate().alpha(1).setDuration(200).start(); @@ -883,13 +883,28 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } else { if (pagedownButton.getVisibility() == View.VISIBLE) { - if (android.os.Build.VERSION.SDK_INT >= 16 && animated) { - pagedownButton.animate().alpha(0).withEndAction(new Runnable() { + if (android.os.Build.VERSION.SDK_INT >= 12 && animated) { + pagedownButton.animate().alpha(0).setDuration(200).setListener(new Animator.AnimatorListener() { @Override - public void run() { + public void onAnimationStart(Animator animation) { + + } + + @Override + public void onAnimationEnd(Animator animation) { pagedownButton.setVisibility(View.GONE); } - }).setDuration(200).start(); + + @Override + public void onAnimationCancel(Animator animation) { + + } + + @Override + public void onAnimationRepeat(Animator animation) { + + } + }).start(); } else { pagedownButton.setVisibility(View.GONE); } From f7e0225f48ee3e7b521c6b8f89a3a4c1540282f1 Mon Sep 17 00:00:00 2001 From: DrKLO Date: Thu, 31 Jul 2014 01:50:12 +0100 Subject: [PATCH 07/11] Bug fixes --- TMessagesProj/build.gradle | 2 +- .../org/telegram/android/MessagesStorage.java | 29 ++- .../telegram/messenger/FileLoadOperation.java | 176 ++++++++++-------- .../org/telegram/ui/Cells/ChatOrUserCell.java | 50 ++++- .../java/org/telegram/ui/ChatActivity.java | 18 +- .../org/telegram/ui/ChatProfileActivity.java | 17 +- .../org/telegram/ui/MessagesActivity.java | 11 +- .../src/main/res/values-it/strings.xml | 32 ++-- .../src/main/res/values-nl/strings.xml | 54 +++--- .../src/main/res/values-pt-rBR/strings.xml | 38 ++-- 10 files changed, 270 insertions(+), 157 deletions(-) diff --git a/TMessagesProj/build.gradle b/TMessagesProj/build.gradle index 93b83d310..af3186ad8 100644 --- a/TMessagesProj/build.gradle +++ b/TMessagesProj/build.gradle @@ -83,7 +83,7 @@ android { defaultConfig { minSdkVersion 8 targetSdkVersion 19 - versionCode 296 + versionCode 297 versionName "1.7.0" } } diff --git a/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java b/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java index 7f41c0740..af784bd1e 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java +++ b/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java @@ -719,6 +719,11 @@ public class MessagesStorage { } } } else { + for (TLRPC.TL_chatParticipant part : info.participants) { + if (part.user_id == user_id) { + return; + } + } TLRPC.TL_chatParticipant participant = new TLRPC.TL_chatParticipant(); participant.user_id = user_id; participant.inviter_id = invited_id; @@ -769,12 +774,22 @@ public class MessagesStorage { cursor.dispose(); if (info != null) { + boolean modified = false; + ArrayList usersArr = new ArrayList(); String usersToLoad = ""; - for (TLRPC.TL_chatParticipant c : info.participants) { - if (usersToLoad.length() != 0) { - usersToLoad += ","; + for (int a = 0; a < info.participants.size(); a++) { + TLRPC.TL_chatParticipant c = info.participants.get(a); + if (usersArr.contains(c.user_id)) { + info.participants.remove(a); + modified = true; + a--; + } else { + if (usersToLoad.length() != 0) { + usersToLoad += ","; + } + usersArr.add(c.user_id); + usersToLoad += c.user_id; } - usersToLoad += c.user_id; } if (usersToLoad.length() != 0) { cursor = database.queryFinalized(String.format(Locale.US, "SELECT data, status FROM users WHERE uid IN(%s)", usersToLoad)); @@ -791,6 +806,9 @@ public class MessagesStorage { } cursor.dispose(); } + if (modified) { + updateChatInfo(chat_id, info, false); + } } MessagesController.getInstance().processChatInfo(chat_id, info, loadedUsers, true); } catch (Exception e) { @@ -920,7 +938,7 @@ public class MessagesStorage { cursor.dispose(); } - cursor = database.queryFinalized("SELECT c.data, c.name FROM chats as c INNER JOIN dialogs as d ON c.uid = -d.did"); + cursor = database.queryFinalized("SELECT data, name FROM chats"); while (cursor.next()) { String name = cursor.stringValue(1); String[] args = name.split(" "); @@ -938,6 +956,7 @@ public class MessagesStorage { } } cursor.dispose(); + NotificationCenter.getInstance().postNotificationName(MessagesController.reloadSearchResults, token, resultArray, resultArrayNames, encUsers); } catch (Exception e) { FileLog.e("tmessages", e); diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java index 700f37e9a..b3a087b58 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java @@ -10,6 +10,7 @@ package org.telegram.messenger; import android.graphics.Bitmap; import android.graphics.BitmapFactory; +import android.os.AsyncTask; import android.provider.MediaStore; import org.telegram.android.AndroidUtilities; @@ -57,9 +58,8 @@ public class FileLoadOperation { private String ext; private String httpUrl; - private URLConnection httpConnection; + private DownloadImageTask httpTask = null; public boolean needBitmapCreate = true; - private InputStream httpConnectionStream; private RandomAccessFile fileOutputStream; private RandomAccessFile fiv; @@ -69,6 +69,103 @@ public class FileLoadOperation { public abstract void didChangedLoadProgress(FileLoadOperation operation, float progress); } + private class DownloadImageTask extends AsyncTask { + protected Boolean doInBackground(String... urls) { + String url = urls[0]; + + InputStream httpConnectionStream = null; + + try { + URL downloadUrl = new URL(url); + URLConnection httpConnection = downloadUrl.openConnection(); + httpConnection.setConnectTimeout(5000); + httpConnection.setReadTimeout(5000); + httpConnection.connect(); + httpConnectionStream = httpConnection.getInputStream(); + } catch (Exception e) { + FileLog.e("tmessages", e); + cleanup(); + Utilities.stageQueue.postRunnable(new Runnable() { + @Override + public void run() { + delegate.didFailedLoadingFile(FileLoadOperation.this); + } + }); + return false; + } + + byte[] data = new byte[1024 * 2]; + while (true) { + if (isCancelled()) { + break; + } + try { + int readed = httpConnectionStream.read(data); + if (readed > 0) { + fileOutputStream.write(data, 0, readed); + } else if (readed == -1) { + FileLoader.fileLoaderQueue.postRunnable(new Runnable() { + @Override + public void run() { + cleanup(); + Utilities.stageQueue.postRunnable(new Runnable() { + @Override + public void run() { + try { + onFinishLoadingFile(); + } catch (Exception e) { + delegate.didFailedLoadingFile(FileLoadOperation.this); + } + } + }); + } + }); + break; + } else { + FileLoader.fileLoaderQueue.postRunnable(new Runnable() { + @Override + public void run() { + cleanup(); + Utilities.stageQueue.postRunnable(new Runnable() { + @Override + public void run() { + delegate.didFailedLoadingFile(FileLoadOperation.this); + } + }); + } + }); + break; + } + } catch (Exception e) { + FileLog.e("tmessages", e); + FileLoader.fileLoaderQueue.postRunnable(new Runnable() { + @Override + public void run() { + cleanup(); + Utilities.stageQueue.postRunnable(new Runnable() { + @Override + public void run() { + delegate.didFailedLoadingFile(FileLoadOperation.this); + } + }); + } + }); + } + } + + try { + if (httpConnectionStream != null) { + httpConnectionStream.close(); + } + httpConnectionStream = null; + } catch (Exception e) { + FileLog.e("tmessages", e); + } + + return true; + } + } + public FileLoadOperation(TLRPC.FileLocation fileLocation) { if (fileLocation instanceof TLRPC.TL_fileEncryptedLocation) { location = new TLRPC.TL_inputEncryptedFileLocation(); @@ -434,14 +531,8 @@ public class FileLoadOperation { private void cleanup() { if (httpUrl != null) { - try { - if (httpConnectionStream != null) { - httpConnectionStream.close(); - } - httpConnection = null; - httpConnectionStream = null; - } catch (Exception e) { - FileLog.e("tmessages", e); + if (httpTask != null) { + httpTask.cancel(true); } } else { try { @@ -577,69 +668,8 @@ public class FileLoadOperation { if (state != 1) { return; } - if (httpConnection == null) { - try { - URL downloadUrl = new URL(httpUrl); - httpConnection = downloadUrl.openConnection(); - httpConnection.setConnectTimeout(5000); - httpConnection.setReadTimeout(5000); - httpConnection.connect(); - httpConnectionStream = httpConnection.getInputStream(); - } catch (Exception e) { - FileLog.e("tmessages", e); - cleanup(); - Utilities.stageQueue.postRunnable(new Runnable() { - @Override - public void run() { - delegate.didFailedLoadingFile(FileLoadOperation.this); - } - }); - return; - } - } - - try { - byte[] data = new byte[1024 * 2]; - int readed = httpConnectionStream.read(data); - if (readed > 0) { - fileOutputStream.write(data, 0, readed); - FileLoader.fileLoaderQueue.postRunnable(new Runnable() { - @Override - public void run() { - startDownloadHTTPRequest(); - } - }); - } else if (readed == -1) { - cleanup(); - Utilities.stageQueue.postRunnable(new Runnable() { - @Override - public void run() { - try { - onFinishLoadingFile(); - } catch (Exception e) { - delegate.didFailedLoadingFile(FileLoadOperation.this); - } - } - }); - } else { - cleanup(); - Utilities.stageQueue.postRunnable(new Runnable() { - @Override - public void run() { - delegate.didFailedLoadingFile(FileLoadOperation.this); - } - }); - } - } catch (Exception e) { - cleanup(); - FileLog.e("tmessages", e); - Utilities.stageQueue.postRunnable(new Runnable() { - @Override - public void run() { - delegate.didFailedLoadingFile(FileLoadOperation.this); - } - }); - } + httpTask = new DownloadImageTask(); + httpTask.doInBackground(httpUrl); } private void processRequestResult(RequestInfo requestInfo, TLRPC.TL_error error) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatOrUserCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatOrUserCell.java index 8aa33a10d..3dbaf02cf 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatOrUserCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatOrUserCell.java @@ -35,6 +35,8 @@ public class ChatOrUserCell extends BaseCell { private static TextPaint offlinePaint; private static Drawable lockDrawable; + private static Drawable broadcastDrawable; + private static Drawable groupDrawable; private static Paint linePaint; private CharSequence currentName; @@ -93,6 +95,14 @@ public class ChatOrUserCell extends BaseCell { linePaint.setColor(0xffdcdcdc); } + if (broadcastDrawable == null) { + broadcastDrawable = getResources().getDrawable(R.drawable.broadcast); + } + + if (groupDrawable == null) { + groupDrawable = getResources().getDrawable(R.drawable.grouplist); + } + if (avatarImage == null) { avatarImage = new ImageReceiver(); avatarImage.parentView = this; @@ -230,6 +240,12 @@ public class ChatOrUserCell extends BaseCell { if (cellLayout.drawNameLock) { setDrawableBounds(lockDrawable, cellLayout.nameLockLeft, cellLayout.nameLockTop); lockDrawable.draw(canvas); + } else if (cellLayout.drawNameGroup) { + setDrawableBounds(groupDrawable, cellLayout.nameLockLeft, cellLayout.nameLockTop); + groupDrawable.draw(canvas); + } else if (cellLayout.drawNameBroadcast) { + setDrawableBounds(broadcastDrawable, cellLayout.nameLockLeft, cellLayout.nameLockTop); + broadcastDrawable.draw(canvas); } canvas.save(); @@ -262,8 +278,10 @@ public class ChatOrUserCell extends BaseCell { private int nameWidth; private StaticLayout nameLayout; private boolean drawNameLock; + private boolean drawNameBroadcast; + private boolean drawNameGroup; private int nameLockLeft; - private int nameLockTop = AndroidUtilities.dp(15); + private int nameLockTop; private int onlineLeft; private int onlineTop = AndroidUtilities.dp(36); @@ -277,6 +295,10 @@ public class ChatOrUserCell extends BaseCell { CharSequence nameString = ""; TextPaint currentNamePaint; + drawNameBroadcast = false; + drawNameLock = false; + drawNameGroup = false; + if (encryptedChat != null) { drawNameLock = true; if (!LocaleController.isRTL) { @@ -286,12 +308,28 @@ public class ChatOrUserCell extends BaseCell { nameLockLeft = width - AndroidUtilities.dp(63 + (usePadding ? 11 : 0)) - lockDrawable.getIntrinsicWidth(); nameLeft = usePadding ? AndroidUtilities.dp(11) : 0; } + nameLockTop = AndroidUtilities.dp(15); } else { - drawNameLock = false; - if (!LocaleController.isRTL) { - nameLeft = AndroidUtilities.dp(61 + (usePadding ? 11 : 0)); + if (chat != null) { + nameLockTop = AndroidUtilities.dp(26); + if (chat.id < 0) { + drawNameBroadcast = true; + } else { + drawNameGroup = true; + } + if (!LocaleController.isRTL) { + nameLockLeft = AndroidUtilities.dp(61 + (usePadding ? 11 : 0)); + nameLeft = AndroidUtilities.dp(65 + (usePadding ? 11 : 0)) + (drawNameGroup ? groupDrawable.getIntrinsicWidth() : broadcastDrawable.getIntrinsicWidth()); + } else { + nameLockLeft = width - AndroidUtilities.dp(63 + (usePadding ? 11 : 0)) - (drawNameGroup ? groupDrawable.getIntrinsicWidth() : broadcastDrawable.getIntrinsicWidth()); + nameLeft = usePadding ? AndroidUtilities.dp(11) : 0; + } } else { - nameLeft = usePadding ? AndroidUtilities.dp(11) : 0; + if (!LocaleController.isRTL) { + nameLeft = AndroidUtilities.dp(61 + (usePadding ? 11 : 0)); + } else { + nameLeft = usePadding ? AndroidUtilities.dp(11) : 0; + } } } @@ -326,6 +364,8 @@ public class ChatOrUserCell extends BaseCell { } if (drawNameLock) { nameWidth -= AndroidUtilities.dp(6) + lockDrawable.getIntrinsicWidth(); + } else if (drawNameBroadcast) { + nameWidth -= AndroidUtilities.dp(6) + broadcastDrawable.getIntrinsicWidth(); } CharSequence nameStringFinal = TextUtils.ellipsize(nameString, currentNamePaint, nameWidth - AndroidUtilities.dp(12), TextUtils.TruncateAt.END); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java index a4c9ba647..11701d32f 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java @@ -463,7 +463,11 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (info != null && info instanceof TLRPC.TL_chatParticipantsForbidden) { return; } - if (currentChat.participants_count == 0 || currentChat.left || currentChat instanceof TLRPC.TL_chatForbidden) { + int count = currentChat.participants_count; + if (info != null) { + count = info.participants.size(); + } + if (count == 0 || currentChat.left || currentChat instanceof TLRPC.TL_chatForbidden) { return; } Bundle args = new Bundle(); @@ -1248,10 +1252,14 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } else if (currentChat.left) { actionBarLayer.setSubtitle(LocaleController.getString("YouLeft", R.string.YouLeft)); } else { - if (onlineCount > 0 && currentChat.participants_count != 0) { - actionBarLayer.setSubtitle(String.format("%s, %d %s", LocaleController.formatPluralString("Members", currentChat.participants_count), onlineCount, LocaleController.getString("Online", R.string.Online))); + int count = currentChat.participants_count; + if (info != null) { + count = info.participants.size(); + } + if (onlineCount > 0 && count != 0) { + actionBarLayer.setSubtitle(String.format("%s, %d %s", LocaleController.formatPluralString("Members", count), onlineCount, LocaleController.getString("Online", R.string.Online))); } else { - actionBarLayer.setSubtitle(LocaleController.formatPluralString("Members", currentChat.participants_count)); + actionBarLayer.setSubtitle(LocaleController.formatPluralString("Members", count)); } } } else if (currentUser != null) { @@ -2962,9 +2970,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } else if (lower_part < 0) { args.putInt("chat_id", -lower_part); } + forwardSelectedMessages(did, param); presentFragment(new ChatActivity(args), true); removeSelfFromStack(); - forwardSelectedMessages(did, param); } else { activity.finishFragment(); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileActivity.java index 4f8f86987..1dd411aad 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileActivity.java @@ -623,10 +623,15 @@ public class ChatProfileActivity extends BaseFragment implements NotificationCen textView.setText(chat.title); - if (chat.participants_count != 0 && onlineCount > 0) { - onlineText.setText(Html.fromHtml(String.format("%s, %d %s", LocaleController.formatPluralString("Members", chat.participants_count), onlineCount, LocaleController.getString("Online", R.string.Online)))); + int count = chat.participants_count; + if (info != null) { + count = info.participants.size(); + } + + if (count != 0 && onlineCount > 0) { + onlineText.setText(Html.fromHtml(String.format("%s, %d %s", LocaleController.formatPluralString("Members", count), onlineCount, LocaleController.getString("Online", R.string.Online)))); } else { - onlineText.setText(LocaleController.formatPluralString("Members", chat.participants_count)); + onlineText.setText(LocaleController.formatPluralString("Members", count)); } TLRPC.FileLocation photo = null; @@ -650,7 +655,11 @@ public class ChatProfileActivity extends BaseFragment implements NotificationCen textView.setText(LocaleController.getString("SHAREDMEDIA", R.string.SHAREDMEDIA)); } else if (i == membersSectionRow) { TLRPC.Chat chat = MessagesController.getInstance().chats.get(chat_id); - textView.setText(LocaleController.formatPluralString("Members", chat.participants_count).toUpperCase()); + int count = chat.participants_count; + if (info != null) { + count = info.participants.size(); + } + textView.setText(LocaleController.formatPluralString("Members", count).toUpperCase()); } } else if (type == 2) { if (view == null) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java index f3c906c67..3e4059310 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java @@ -264,7 +264,11 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter if (obj instanceof TLRPC.User) { dialog_id = ((TLRPC.User) obj).id; } else if (obj instanceof TLRPC.Chat) { - dialog_id = -((TLRPC.Chat) obj).id; + if (((TLRPC.Chat) obj).id > 0) { + dialog_id = -((TLRPC.Chat) obj).id; + } else { + dialog_id = AndroidUtilities.makeBroadcastId(((TLRPC.Chat) obj).id); + } } else if (obj instanceof TLRPC.EncryptedChat) { dialog_id = ((long)((TLRPC.EncryptedChat) obj).id) << 32; } @@ -330,7 +334,10 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); - if ((int)selectedDialog < 0) { + int lower_id = (int)selectedDialog; + int high_id = (int)(selectedDialog >> 32); + + if (lower_id < 0 && high_id != 1) { builder.setItems(new CharSequence[]{LocaleController.getString("ClearHistory", R.string.ClearHistory), LocaleController.getString("DeleteChat", R.string.DeleteChat)}, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { diff --git a/TMessagesProj/src/main/res/values-it/strings.xml b/TMessagesProj/src/main/res/values-it/strings.xml index d5880fb78..605e883f4 100644 --- a/TMessagesProj/src/main/res/values-it/strings.xml +++ b/TMessagesProj/src/main/res/values-it/strings.xml @@ -58,12 +58,12 @@ Seleziona chat - Broadcast List - New Broadcast List - Enter list name - You created a broadcast list - Add Recipient - Remove from broadcast list + Lista Broadcast + Nuova Lista Broadcast + Immetti il nome della lista + Hai creato una lista broadcast + Aggiungi Destinatario + Rimuovi dalla lista broadcast Seleziona file @@ -158,7 +158,7 @@ %1$s ti ha rimosso dal gruppo %2$s %1$s ha lasciato il gruppo %2$s %1$s ha iniziato a usare Telegram! - %1$s,\nAbbiamo rilevato un accesso al tuo account da un nuovo dispositivo %2$s\n\nDispositivo: %3$s\nPosizione: %4$s\n\nSe non sei stato tu, puoi andare su Impostazioni - Termina tutte le sessioni.\n\nGrazie,\nla squadra di Telegram + %1$s,\nAbbiamo rilevato un accesso al tuo account da un nuovo dispositivo %2$s\n\nDispositivo: %3$s\nPosizione: %4$s\n\nSe non sei stato tu, puoi andare su Impostazioni - Termina tutte le sessioni.\n\nGrazie,\nIl Team di Telegram %1$s ha aggiornato la foto del profilo @@ -271,19 +271,19 @@ Abilitato Disabilitato Servizio notifiche - Se i servizi di Google Play ti bastano per ricevere le notifiche, puoi disabilitare il Servizio notifiche. Tuttavia sarebbe meglio lasciarlo abilitato al fine di mantenere l\'applicazione attiva in background e ricevere notifiche istantanee. + Se i servizi di Google Play sono sufficienti per ricevere le notifiche, è possibile disabilitare il Servizio Notifiche. Ti raccomandiamo comunque di lasciarlo abilitato per lasciare l\'app attiva in background e ricevere le notifiche istantanee. Ordina per Importa contatti Solo tramite WiFi Nome Cognome Colore LED - Notifica popup + Notifiche Popup Nessun popup Solo con schermo acceso Solo con schermo spento Mostra sempre i popup - Badge Number + Contatore Badge Nessun media condiviso @@ -308,9 +308,9 @@ Ancora nessuna foto - Edit Video - Original Video - Edited Video + Modifica Video + Video Originale + Video Modificato Avanti @@ -370,8 +370,8 @@ Cognome non valido Caricamento… Non hai un lettore video, per favore installane uno per continuare - Invia un’email a sms@telegram.org spiegandoci il problema. - Non hai nessuna applicazione che può gestire il tipo mime \'%1$s\', installane una per continuare + Invia un’email a sms@telegram.org e parlaci del tuo problema. + Nessuna applicazione può gestire il tipo di file \'%1$s\', per favore installane una per proseguire Questo utente non ha ancora Telegram, vuoi invitarlo? Sei sicuro? Vuoi aggiungere il contatto? @@ -383,7 +383,7 @@ Chiudere tutte le altre sessioni? Eliminare il gruppo e uscire da esso? Eliminare questa chat? - Condividere le proprie informazioni di contatto? + Condividere le informazioni del proprio contatto? Bloccare questo contatto? Sbloccare questo contatto? Eliminare questo contatto? diff --git a/TMessagesProj/src/main/res/values-nl/strings.xml b/TMessagesProj/src/main/res/values-nl/strings.xml index e511ad0f3..20d4f2fe7 100644 --- a/TMessagesProj/src/main/res/values-nl/strings.xml +++ b/TMessagesProj/src/main/res/values-nl/strings.xml @@ -58,12 +58,12 @@ Kies een gesprek - Broadcast List - New Broadcast List - Enter list name - You created a broadcast list - Add Recipient - Remove from broadcast list + Verzendlijst + Nieuwe verzendlijst + Naam van lijst + Je hebt een verzendlijst gemaakt + Ontvanger toevoegen + Verwijder van verzendlijst Kies een bestand @@ -118,7 +118,7 @@ SLEEP OM TE ANNULEREN Opslaan in Downloads Vertaling toepassen - Bijlageformaat niet ondersteund + Bestandstype niet ondersteund Privégesprek aangevraagd @@ -158,7 +158,7 @@ %1$s heeft je verwijderd uit de groep %2$s %1$s heeft de groep %2$s verlaten %1$s heeft nu Telegram! - %1$s,\nEr is op je account ingelogd vanaf een nieuw apparaat op %2$s\n\nApparaat: %3$s\nLocatie: %4$s\n\nAls jij dit niet was, kun je alle sessies beëindigen via Instellingen – Alle andere sessies beëindigen.\n\nHet Telegram-team + %1$s,\nEr is op je account ingelogd vanaf een nieuw apparaat op %2$s\n\nApparaat: %3$s\nLocatie: %4$s\n\nAls jij dit niet was, kun je alle sessies beëindigen via Instellingen – Beëindig alle andere sessies.\n\nBedankt,\nHet Telegram-team %1$s heeft zijn/haar profielfoto gewijzigd @@ -253,7 +253,7 @@ Achtergrond gesprekken BERICHTEN Verzenden met Enter - Alle andere sessies beëindigen + Beëindig alle andere sessies FOTO\'S AUTOMATISCH DOWNLOADEN GELUIDSBESTANDEN AUTOMATISCH DOWNLOADEN Groepen @@ -271,19 +271,19 @@ Inschakelen Uitschakelen Meldingenservice - Als google play services genoeg is om notificaties te ontvangen, kan de meldingenservice worden uitgeschakeld. Echter, we adviseren de service ingeschakeld te laten zodat de app in de achtergrond blijft draaien en meldingen direct worden ontvangen. + Als Google Play Services genoeg voor je is om meldingen te ontvangen kun je de Meldingenservice uitschakelen. We raden echter aan dit ingeschakeld te laten om de app in de achtergrond te laten draaien en directe meldingen te ontvangen. Sorteren op Importeer contacten Alleen via WiFi Voornaam Achternaam LED kleur - Popup melding + Popup meldingen Geen popup Alleen wanneer scherm \"aan\" staat Alleen wanneer scherm \"uit\" staat Altijd popup tonen - Badge Number + Badgenummer Nog geen media gedeeld @@ -308,9 +308,9 @@ Nog geen foto\'s - Edit Video - Original Video - Edited Video + Video bewerken + Originele video + Bewerkte video Volgende @@ -370,8 +370,8 @@ Ongeldige achternaam Bezig met laden… Je hebt geen mediaspeler. Installeer een mediaspeler om door te gaan. - Stuur aub een emailbericht naar sms@telegram.org en beschrijf uw probleem - Je hebt geen applicaties die het MIME-type \'%1$s\' ondersteunen. Installeer een geschikte applicatie om door te gaan. + Mail ons op sms@telegram.org en vertel ons over je probleem. + Je hebt geen apps die bestandstype \'%1$s\' kunnen verwerken, gelieve een compitabele app te installeren Deze gebruiker heeft nog geen Telegram. Wil je een uitnodiging sturen? Weet je het zeker? Contact toevoegen? @@ -379,15 +379,15 @@ Berichten doorsturen naar %1$s? Dit gesprek verwijderen? Berichten naar %1$s verzenden? - Weet u zeker dat u wil uitloggen? - Alle andere apparaten afmelden? - Deze groep verlaten en groep verwijderen? - Dit gesprek verwijderen? - Deze contact-informatie delen? - Deze persoon blokkeren? - Deze persoon deblokkeren? - Deze contactpersoon verwijderen? - Een privégesprek starten? + Weet je zeker dat je wilt uitloggen? + Weet je zeker dat je alle andere sessies wilt beëindigen? + Weet je zeker dat je alles wilt verwijderen en de groep wilt verlaten? + Weet je zeker dat je dit gesprek wilt verwijderen? + Weet je zeker dat je je contactinformatie wilt delen? + Weet je zeker dat je deze persoon wilt blokkeren? + Weet je zeker dat je deze persoon wilt deblokkeren? + Weet je zeker dat je deze contactpersoon wilt verwijderen? + Weet je zeker dat je een privégesprek wilt starten? doorsturen via mijn eigen naam @@ -404,7 +404,7 @@ Telegram]]> beveiligt je berichten tegen hackers Telegram]]> heeft geen beperkingen op de grootte van je media en gesprekken Telegram]]> biedt toegang tot je berichten vanaf meerdere apparaten - Telegram]]> berichten zijn sterk versleuteld en kunnen zichzelf vernietigen + Telegram]]> berichten zijn sterk versleuteld]]>en kunnen zichzelf vernietigen Begin nu met chatten diff --git a/TMessagesProj/src/main/res/values-pt-rBR/strings.xml b/TMessagesProj/src/main/res/values-pt-rBR/strings.xml index 1be275de5..8a274f346 100644 --- a/TMessagesProj/src/main/res/values-pt-rBR/strings.xml +++ b/TMessagesProj/src/main/res/values-pt-rBR/strings.xml @@ -58,12 +58,12 @@ Selecione uma Conversa - Broadcast List - New Broadcast List - Enter list name - You created a broadcast list - Add Recipient - Remove from broadcast list + Lista de Broadcast + Nova lista de Broadcast + Digite o nome da lista + Você criou uma lista de broadcast + Adicionar Recipiente + Remover da lista de broadcast Selecione um Arquivo @@ -158,7 +158,7 @@ %1$s removeu você do grupo %2$s %1$s saiu do grupo %2$s %1$s entrou para o Telegram! - %1$s,\nNós detectamos um acesso à sua conta de um novo dispositivo em %2$s\n\nDispositivo: %3$s\nLocalização: %4$s\n\nCaso não tenha sido você, vá para Configurações – Encerrar todas as sessões.\n\nObrigado,\nA equipe do Telegram + %1$s,\nNós detectamos um login na sua conta de um novo dispositivo %2$s\n\nDispositivo: %3$s\nLocalização: %4$s\n\nSe não foi você, você pode ir para Configurações - Terminar todas as sessões.\n\nAtenciosamente,\nTime do Telegram %1$s atualizou a foto do perfil @@ -271,19 +271,19 @@ Ativado Desativado Serviço de Notificações - Se os serviços do Google Play forem suficientes para você receber as notificações, você pode desabilitar o \"Serviço de Notificações\". Porém, nós recomendamos deixá-lo ativo para que o aplicativo continue rodando em segundo plano e recebendo notificações instantâneas. + Se o serviço de notificação do Google Play é o suficiente para você, você pode desativar as Notificações de Serviço. No entanto, recomendamos que você deixá-lo habilitado para manter o aplicativo em execução em segundo plano e receber notificações instantâneas. Ordenar Por Importar Contatos Apenas por WiFi Primeiro nome Sobrenome Cor do LED - Notificação Popup + Notificações Popup Sem popup Somente com a tela ligada Somente com a tela desligada Sempre mostrar popup - Badge Number + Contador de medalhas Ainda não há mídia compartilhada @@ -308,9 +308,9 @@ Ainda não há fotos - Edit Video - Original Video - Edited Video + Editar Vídeo + Vídeo Original + Vídeo Editado Próximo @@ -370,8 +370,8 @@ Sobrenome inválido Carregando... Você não possui um reprodutor de vídeo, instale um para continuar - Por favor, envie um email para sms@telegram.org e explique seu problema. - Você não possui algum aplicativo que pode lidar com o tipo MIME \'%1$s\'. Por favor, instale um para continuar + Por favor, envie um email para sms@telegram.org e conte-nos sobre seu problema. + Você não possui uma aplicação que suporte o tipo de arquivo \'%1$s\', por favor instale uma e continue Este usuário ainda não possui Telegram, deseja enviar um convite? Você tem certeza? Adicionar contato? @@ -379,15 +379,15 @@ Encaminhar mensagem para %1$s? Apagar esta conversa? Enviar mensagens para %1$s? - Você tem certeza que deseja sair dessa sessão? + Você tem certeza que deseja sair? Você tem certeza que deseja terminar todas as outras sessões? Você tem certeza que deseja deletar e sair do grupo? Você tem certeza que deseja deletar esta conversa? - Você tem certeza que deseja compartilhar as informações do seu contato? + Você tem certesa que deseja compartilhar suas informações de contato? Você tem certeza que deseja bloquear este contato? Você tem certeza que deseja desbloquear este contato? Você tem certeza que deseja deletar este contato? - Você tem certeza que deseja iniciar uma conversa secreta? + Você tem certeza que deseja começar uma conversa secreta? encaminhar pelo meu nome @@ -404,7 +404,7 @@ Telegram]]> mantém suas mensagens seguras contra ataques de hackers Telegram]]> não tem limites para o tamanho de suas mídias e conversas Telegram]]> permite que você acesse suas mensagens a partir de vários dispositivos - As mensagens do Telegram]]> são fortemente criptografadas e podem se autodestruir + As mensagens do Telegram]]> são fortemente criptografadas]]>e podem se autodestruir Comece a conversar From dbef14dfeb85878e461cef529f5a05b5327d09d4 Mon Sep 17 00:00:00 2001 From: DrKLO Date: Sat, 2 Aug 2014 00:31:15 +0100 Subject: [PATCH 08/11] Bug fixes --- TMessagesProj/build.gradle | 2 +- .../telegram/android/MessagesController.java | 43 +++++----- .../org/telegram/android/MessagesStorage.java | 7 +- .../telegram/messenger/FileLoadOperation.java | 8 +- .../java/org/telegram/ui/ChatActivity.java | 79 ++++++++++++------- 5 files changed, 87 insertions(+), 52 deletions(-) diff --git a/TMessagesProj/build.gradle b/TMessagesProj/build.gradle index af3186ad8..603c8aa9e 100644 --- a/TMessagesProj/build.gradle +++ b/TMessagesProj/build.gradle @@ -83,7 +83,7 @@ android { defaultConfig { minSdkVersion 8 targetSdkVersion 19 - versionCode 297 + versionCode 299 versionName "1.7.0" } } diff --git a/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java b/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java index 0604c2522..8bee85a29 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java +++ b/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java @@ -708,6 +708,23 @@ public class MessagesController implements NotificationCenter.NotificationCenter public void run(TLObject response, TLRPC.TL_error error) { if (error == null) { final TLRPC.messages_Messages res = (TLRPC.messages_Messages) response; + MessagesStorage.getInstance().putUsersAndChats(res.users, res.chats, true, true); + + Utilities.RunOnUIThread(new Runnable() { + @Override + public void run() { + for (TLRPC.User user : res.users) { + users.put(user.id, user); + if (user.id == UserConfig.getClientUserId()) { + UserConfig.setCurrentUser(user); + } + } + for (TLRPC.Chat chat : res.chats) { + chats.put(chat.id, chat); + } + } + }); + if (res instanceof TLRPC.TL_messages_messagesSlice) { processLoadedMediaCount(res.count, uid, classGuid, false); } else { @@ -1110,10 +1127,10 @@ public class MessagesController implements NotificationCenter.NotificationCenter } } - public void loadMessages(final long dialog_id, final int offset, final int count, final int max_id, boolean fromCache, int midDate, final int classGuid, boolean from_unread, boolean forward) { + public void loadMessages(final long dialog_id, final int count, final int max_id, boolean fromCache, int midDate, final int classGuid, boolean from_unread, boolean forward) { int lower_part = (int)dialog_id; if (fromCache || lower_part == 0) { - MessagesStorage.getInstance().getMessages(dialog_id, offset, count, max_id, midDate, classGuid, from_unread, forward); + MessagesStorage.getInstance().getMessages(dialog_id, count, max_id, midDate, classGuid, from_unread, forward); } else { TLRPC.TL_messages_getHistory req = new TLRPC.TL_messages_getHistory(); if (lower_part < 0) { @@ -1130,7 +1147,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter req.peer.user_id = user.id; } } - req.offset = offset; + req.offset = 0; req.limit = count; req.max_id = max_id; long reqId = ConnectionsManager.getInstance().performRpc(req, new RPCRequest.RPCRequestDelegate() { @@ -1138,7 +1155,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter public void run(TLObject response, TLRPC.TL_error error) { if (error == null) { final TLRPC.messages_Messages res = (TLRPC.messages_Messages) response; - processLoadedMessages(res, dialog_id, offset, count, max_id, false, classGuid, 0, 0, 0, 0, false); + processLoadedMessages(res, dialog_id, count, max_id, false, classGuid, 0, 0, 0, 0, false); } } }); @@ -1146,7 +1163,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter } } - public void processLoadedMessages(final TLRPC.messages_Messages messagesRes, final long dialog_id, final int offset, final int count, final int max_id, final boolean isCache, final int classGuid, final int first_unread, final int last_unread, final int unread_count, final int last_date, final boolean isForward) { + public void processLoadedMessages(final TLRPC.messages_Messages messagesRes, final long dialog_id, final int count, final int max_id, final boolean isCache, final int classGuid, final int first_unread, final int last_unread, final int unread_count, final int last_date, final boolean isForward) { Utilities.stageQueue.postRunnable(new Runnable() { @Override public void run() { @@ -1158,7 +1175,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter Utilities.RunOnUIThread(new Runnable() { @Override public void run() { - loadMessages(dialog_id, offset, count, max_id, false, 0, classGuid, false, false); + loadMessages(dialog_id, count, max_id, false, 0, classGuid, false, false); } }); return; @@ -1196,7 +1213,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter chats.put(c.id, c); } } - NotificationCenter.getInstance().postNotificationName(messagesDidLoaded, dialog_id, offset, count, objects, isCache, first_unread, last_unread, unread_count, last_date, isForward); + NotificationCenter.getInstance().postNotificationName(messagesDidLoaded, dialog_id, count, objects, isCache, first_unread, last_unread, unread_count, last_date, isForward); } }); } @@ -4618,17 +4635,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter boolean isEncryptedChat = ((int)uid) == 0; - MessagesStorage.getInstance().storageQueue.postRunnable(new Runnable() { - @Override - public void run() { - Utilities.RunOnUIThread(new Runnable() { - @Override - public void run() { - NotificationCenter.getInstance().postNotificationName(didReceivedNewMessages, uid, messages); - } - }); - } - }); + NotificationCenter.getInstance().postNotificationName(didReceivedNewMessages, uid, messages); for (MessageObject message : messages) { if (lastMessage == null || (!isEncryptedChat && message.messageOwner.id > lastMessage.messageOwner.id || isEncryptedChat && message.messageOwner.id < lastMessage.messageOwner.id) || message.messageOwner.date > lastMessage.messageOwner.date) { diff --git a/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java b/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java index af784bd1e..98cc2bc8d 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java +++ b/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java @@ -217,7 +217,6 @@ public class MessagesStorage { cacheFile.delete(); cacheFile = null; } - storageQueue.cleanupQueue(); openDatabase(); if (isLogin) { Utilities.stageQueue.postRunnable(new Runnable() { @@ -1320,14 +1319,14 @@ public class MessagesStorage { }); } - public void getMessages(final long dialog_id, final int offset, final int count, final int max_id, final int minDate, final int classGuid, final boolean from_unread, final boolean forward) { + public void getMessages(final long dialog_id, final int count, final int max_id, final int minDate, final int classGuid, final boolean from_unread, final boolean forward) { storageQueue.postRunnable(new Runnable() { @Override public void run() { TLRPC.TL_messages_messages res = new TLRPC.TL_messages_messages(); int count_unread = 0; int count_query = count; - int offset_query = offset; + int offset_query = 0; int min_unread_id = 0; int max_unread_id = 0; int max_unread_date = 0; @@ -1486,7 +1485,7 @@ public class MessagesStorage { res.users.clear(); FileLog.e("tmessages", e); } finally { - MessagesController.getInstance().processLoadedMessages(res, dialog_id, offset, count_query, max_id, true, classGuid, min_unread_id, max_unread_id, count_unread, max_unread_date, forward); + MessagesController.getInstance().processLoadedMessages(res, dialog_id, count_query, max_id, true, classGuid, min_unread_id, max_unread_id, count_unread, max_unread_date, forward); } } }); diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java index b3a087b58..4991bd324 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java @@ -17,10 +17,10 @@ import org.telegram.android.AndroidUtilities; import org.telegram.ui.ApplicationLoader; import java.io.RandomAccessFile; -import java.net.URL; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; +import java.net.URL; import java.net.URLConnection; import java.nio.channels.FileChannel; import java.util.ArrayList; @@ -82,6 +82,12 @@ public class FileLoadOperation { httpConnection.setReadTimeout(5000); httpConnection.connect(); httpConnectionStream = httpConnection.getInputStream(); + /*String ALLOWED_URI_CHARS = "@#&=*+-_.,:!?()/~'%"; + String str = Uri.encode(url, ALLOWED_URI_CHARS); + HttpClient httpclient = new DefaultHttpClient(); + HttpGet request = new HttpGet(str); + + httpConnectionStream = httpclient.execute(request).getEntity().getContent();*/ } catch (Exception e) { FileLog.e("tmessages", e); cleanup(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java index 11701d32f..7c8158722 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java @@ -143,14 +143,15 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not private boolean endReached = false; private boolean loading = false; private boolean cacheEndReaced = false; + private boolean firstLoading = true; private int minDate = 0; private int progressTag = 0; - boolean first = true; + private boolean first = true; private int unread_to_load = 0; private int first_unread_id = 0; private int last_unread_id = 0; - private boolean unread_end_reached = false; + private boolean unread_end_reached = true; private boolean loadingForward = false; private MessageObject unreadMessageObject = null; @@ -338,7 +339,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not super.onFragmentCreate(); loading = true; - MessagesController.getInstance().loadMessages(dialog_id, 0, 30, 0, true, 0, classGuid, true, false); + MessagesController.getInstance().loadMessages(dialog_id, 30, 0, true, 0, classGuid, true, false); SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE); if (currentChat != null) { @@ -733,16 +734,16 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (firstVisibleItem <= 4) { if (!endReached && !loading) { if (messagesByDays.size() != 0) { - MessagesController.getInstance().loadMessages(dialog_id, 0, 20, maxMessageId, !cacheEndReaced, minDate, classGuid, false, false); + MessagesController.getInstance().loadMessages(dialog_id, 20, maxMessageId, !cacheEndReaced, minDate, classGuid, false, false); } else { - MessagesController.getInstance().loadMessages(dialog_id, 0, 20, 0, !cacheEndReaced, minDate, classGuid, false, false); + MessagesController.getInstance().loadMessages(dialog_id, 20, 0, !cacheEndReaced, minDate, classGuid, false, false); } loading = true; } } if (firstVisibleItem + visibleItemCount >= totalItemCount - 6) { if (!unread_end_reached && !loadingForward) { - MessagesController.getInstance().loadMessages(dialog_id, 0, 20, minMessageId, true, maxDate, classGuid, false, true); + MessagesController.getInstance().loadMessages(dialog_id, 20, minMessageId, true, maxDate, classGuid, false, true); loadingForward = true; } } @@ -865,9 +866,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not maxDate = Integer.MIN_VALUE; minDate = 0; unread_end_reached = true; - MessagesController.getInstance().loadMessages(dialog_id, 0, 30, 0, true, 0, classGuid, true, false); loading = true; chatAdapter.notifyDataSetChanged(); + MessagesController.getInstance().loadMessages(dialog_id, 30, 0, true, 0, classGuid, true, false); } } @@ -1479,6 +1480,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (tempPath != null) { File temp = new File(tempPath); originalPath += temp.length() + "_" + temp.lastModified(); + } else { + originalPath = null; } TLRPC.TL_photo photo = (TLRPC.TL_photo)MessagesStorage.getInstance().getSentFile(originalPath, currentEncryptedChat == null ? 0 : 3); if (photo == null && uri != null) { @@ -1696,24 +1699,42 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (id == MessagesController.messagesDidLoaded) { long did = (Long)args[0]; if (did == dialog_id) { - int offset = (Integer)args[1]; - int count = (Integer)args[2]; - boolean isCache = (Boolean)args[4]; - int fnid = (Integer)args[5]; - int last_unread_date = (Integer)args[8]; - boolean forwardLoad = (Boolean)args[9]; + int count = (Integer)args[1]; + boolean isCache = (Boolean)args[3]; + int fnid = (Integer)args[4]; + int last_unread_date = (Integer)args[7]; + boolean forwardLoad = (Boolean)args[8]; boolean wasUnread = false; boolean positionToUnread = false; if (fnid != 0) { - first_unread_id = (Integer)args[5]; - last_unread_id = (Integer)args[6]; - unread_to_load = (Integer)args[7]; + first_unread_id = fnid; + last_unread_id = (Integer)args[5]; + unread_to_load = (Integer)args[6]; positionToUnread = true; } - ArrayList messArr = (ArrayList)args[3]; + ArrayList messArr = (ArrayList)args[2]; int newRowsCount = 0; unread_end_reached = last_unread_id == 0; + + if (firstLoading) { + if (!unread_end_reached) { + messages.clear(); + messagesByDays.clear(); + messagesDict.clear(); + if (currentEncryptedChat == null) { + maxMessageId = Integer.MAX_VALUE; + minMessageId = Integer.MIN_VALUE; + } else { + maxMessageId = Integer.MIN_VALUE; + minMessageId = Integer.MAX_VALUE; + } + maxDate = Integer.MIN_VALUE; + minDate = 0; + } + firstLoading = false; + } + for (int a = 0; a < messArr.size(); a++) { MessageObject obj = messArr.get(a); if (messagesDict.containsKey(obj.messageOwner.id)) { @@ -2042,15 +2063,17 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not lastVisible++; } if (lastVisible == oldCount) { - if (paused) { - scrollToTopOnResume = true; - } else { - chatListView.post(new Runnable() { - @Override - public void run() { - chatListView.setSelectionFromTop(messages.size() - 1, -100000 - chatListView.getPaddingTop()); - } - }); + if (!firstLoading) { + if (paused) { + scrollToTopOnResume = true; + } else { + chatListView.post(new Runnable() { + @Override + public void run() { + chatListView.setSelectionFromTop(messages.size() - 1, -100000 - chatListView.getPaddingTop()); + } + }); + } } } else { showPagedownButton(true, true); @@ -2122,7 +2145,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } maxDate = Integer.MIN_VALUE; minDate = 0; - MessagesController.getInstance().loadMessages(dialog_id, 0, 30, 0, !cacheEndReaced, minDate, classGuid, false, false); + MessagesController.getInstance().loadMessages(dialog_id, 30, 0, !cacheEndReaced, minDate, classGuid, false, false); loading = true; } } @@ -2970,8 +2993,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } else if (lower_part < 0) { args.putInt("chat_id", -lower_part); } - forwardSelectedMessages(did, param); presentFragment(new ChatActivity(args), true); + forwardSelectedMessages(did, param); removeSelfFromStack(); } else { activity.finishFragment(); From 87612e006b1889205d532ee351249d32897dd4cc Mon Sep 17 00:00:00 2001 From: DrKLO Date: Wed, 6 Aug 2014 03:17:40 +0400 Subject: [PATCH 09/11] Bug fixes --- TMessagesProj/build.gradle | 2 +- .../telegram/android/MessagesController.java | 91 ++++++++++------ .../messenger/ConnectionsManager.java | 1 + .../telegram/messenger/FileLoadOperation.java | 7 +- .../org/telegram/objects/MessageObject.java | 98 +++++++++++++----- .../org/telegram/ui/ApplicationLoader.java | 29 ------ .../org/telegram/ui/Cells/ChatBaseCell.java | 59 +++++++---- .../java/org/telegram/ui/ChatActivity.java | 1 + .../org/telegram/ui/ChatProfileActivity.java | 3 +- .../org/telegram/ui/GroupCreateActivity.java | 10 +- .../src/main/res/drawable-hdpi/broadcast3.png | Bin 0 -> 1187 bytes .../src/main/res/drawable-hdpi/broadcast4.png | Bin 0 -> 1175 bytes .../src/main/res/drawable-ldpi/broadcast3.png | Bin 0 -> 1098 bytes .../src/main/res/drawable-ldpi/broadcast4.png | Bin 0 -> 1084 bytes .../src/main/res/drawable-mdpi/broadcast3.png | Bin 0 -> 1125 bytes .../src/main/res/drawable-mdpi/broadcast4.png | Bin 0 -> 1100 bytes .../main/res/drawable-xhdpi/broadcast3.png | Bin 0 -> 1254 bytes .../main/res/drawable-xhdpi/broadcast4.png | Bin 0 -> 1225 bytes .../main/res/drawable-xxhdpi/broadcast3.png | Bin 0 -> 1385 bytes .../main/res/drawable-xxhdpi/broadcast4.png | Bin 0 -> 1344 bytes 20 files changed, 185 insertions(+), 116 deletions(-) create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/broadcast3.png create mode 100644 TMessagesProj/src/main/res/drawable-hdpi/broadcast4.png create mode 100644 TMessagesProj/src/main/res/drawable-ldpi/broadcast3.png create mode 100644 TMessagesProj/src/main/res/drawable-ldpi/broadcast4.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/broadcast3.png create mode 100644 TMessagesProj/src/main/res/drawable-mdpi/broadcast4.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/broadcast3.png create mode 100644 TMessagesProj/src/main/res/drawable-xhdpi/broadcast4.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/broadcast3.png create mode 100644 TMessagesProj/src/main/res/drawable-xxhdpi/broadcast4.png diff --git a/TMessagesProj/build.gradle b/TMessagesProj/build.gradle index 603c8aa9e..e01ec1f62 100644 --- a/TMessagesProj/build.gradle +++ b/TMessagesProj/build.gradle @@ -83,7 +83,7 @@ android { defaultConfig { minSdkVersion 8 targetSdkVersion 19 - versionCode 299 + versionCode 302 versionName "1.7.0" } } diff --git a/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java b/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java index 8bee85a29..60857b092 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java +++ b/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java @@ -92,6 +92,8 @@ public class MessagesController implements NotificationCenter.NotificationCenter public boolean enableJoined = true; public int fontSize = AndroidUtilities.dp(16); + public int maxGroupCount = 200; + public int maxBroadcastCount = 100; private TLRPC.ChatParticipants currentChatInfo = null; private int chatParticipantsId = 0; @@ -191,9 +193,26 @@ public class MessagesController implements NotificationCenter.NotificationCenter SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE); enableJoined = preferences.getBoolean("EnableContactJoined", true); preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE); + maxGroupCount = preferences.getInt("maxGroupCount", 200); + maxBroadcastCount = preferences.getInt("maxBroadcastCount", 100); fontSize = preferences.getInt("fons_size", 16); } + public void updateConfig(final TLRPC.TL_config config) { + Utilities.RunOnUIThread(new Runnable() { + @Override + public void run() { + maxBroadcastCount = config.broadcast_size_max; + maxGroupCount = config.chat_size_max; + SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE); + SharedPreferences.Editor editor = preferences.edit(); + editor.putInt("maxGroupCount", maxGroupCount); + editor.putInt("maxBroadcastCount", maxBroadcastCount); + editor.commit(); + } + }); + } + public void addSupportUser() { TLRPC.TL_userForeign user = new TLRPC.TL_userForeign(); user.phone = "333"; @@ -4485,38 +4504,6 @@ public class MessagesController implements NotificationCenter.NotificationCenter } NotificationCenter.getInstance().postNotificationName(dialogsNeedReload); } - if (!markAsReadMessages.isEmpty()) { - for (Integer id : markAsReadMessages) { - MessageObject obj = dialogMessage.get(id); - if (obj != null) { - obj.messageOwner.unread = false; - updateMask |= UPDATE_MASK_READ_DIALOG_MESSAGE; - } - } - } - if (!markAsReadEncrypted.isEmpty()) { - for (HashMap.Entry entry : markAsReadEncrypted.entrySet()) { - NotificationCenter.getInstance().postNotificationName(messagesReadedEncrypted, entry.getKey(), entry.getValue()); - long dialog_id = (long)(entry.getKey()) << 32; - TLRPC.TL_dialog dialog = dialogs_dict.get(dialog_id); - if (dialog != null) { - MessageObject message = dialogMessage.get(dialog.top_message); - if (message != null && message.messageOwner.date <= entry.getValue()) { - message.messageOwner.unread = false; - updateMask |= UPDATE_MASK_READ_DIALOG_MESSAGE; - } - } - } - } - if (!deletedMessages.isEmpty()) { - NotificationCenter.getInstance().postNotificationName(messagesDeleted, deletedMessages); - for (Integer id : deletedMessages) { - MessageObject obj = dialogMessage.get(id); - if (obj != null) { - obj.deleted = true; - } - } - } if (printChangedArg) { updateMask |= UPDATE_MASK_USER_PRINT; } @@ -4542,9 +4529,44 @@ public class MessagesController implements NotificationCenter.NotificationCenter Utilities.RunOnUIThread(new Runnable() { @Override public void run() { + int updateMask = 0; if (!markAsReadMessages.isEmpty()) { NotificationCenter.getInstance().postNotificationName(messagesReaded, markAsReadMessages); NotificationsController.getInstance().processReadMessages(markAsReadMessages, 0, 0, 0); + + for (Integer id : markAsReadMessages) { + MessageObject obj = dialogMessage.get(id); + if (obj != null) { + obj.messageOwner.unread = false; + updateMask |= UPDATE_MASK_READ_DIALOG_MESSAGE; + } + } + } + if (!markAsReadEncrypted.isEmpty()) { + for (HashMap.Entry entry : markAsReadEncrypted.entrySet()) { + NotificationCenter.getInstance().postNotificationName(messagesReadedEncrypted, entry.getKey(), entry.getValue()); + long dialog_id = (long)(entry.getKey()) << 32; + TLRPC.TL_dialog dialog = dialogs_dict.get(dialog_id); + if (dialog != null) { + MessageObject message = dialogMessage.get(dialog.top_message); + if (message != null && message.messageOwner.date <= entry.getValue()) { + message.messageOwner.unread = false; + updateMask |= UPDATE_MASK_READ_DIALOG_MESSAGE; + } + } + } + } + if (!deletedMessages.isEmpty()) { + NotificationCenter.getInstance().postNotificationName(messagesDeleted, deletedMessages); + for (Integer id : deletedMessages) { + MessageObject obj = dialogMessage.get(id); + if (obj != null) { + obj.deleted = true; + } + } + } + if (updateMask != 0) { + NotificationCenter.getInstance().postNotificationName(updateInterfaces, updateMask); } } }); @@ -4734,7 +4756,6 @@ public class MessagesController implements NotificationCenter.NotificationCenter TLObject object = TLClassStore.Instance().TLdeserialize(is, is.readInt32()); BuffersStorage.getInstance().reuseFreeBuffer(is); if (object != null) { - int from_id = chat.admin_id; if (from_id == UserConfig.getClientUserId()) { from_id = chat.participant_id; @@ -4943,6 +4964,8 @@ public class MessagesController implements NotificationCenter.NotificationCenter pendingEncMessagesToDelete.addAll(serviceMessage.action.random_ids); } return null; + } else { + return null; } } else { FileLog.e("tmessages", "unkown message " + object); @@ -4951,9 +4974,9 @@ public class MessagesController implements NotificationCenter.NotificationCenter FileLog.e("tmessages", "unkown TLObject"); } } else { + BuffersStorage.getInstance().reuseFreeBuffer(is); FileLog.e("tmessages", "fingerprint mismatch"); } - BuffersStorage.getInstance().reuseFreeBuffer(is); return null; } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/ConnectionsManager.java b/TMessagesProj/src/main/java/org/telegram/messenger/ConnectionsManager.java index 706fb5e3d..f3b44c331 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/ConnectionsManager.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/ConnectionsManager.java @@ -781,6 +781,7 @@ public class ConnectionsManager implements Action.ActionDelegate, TcpConnection. processRequestQueue(RPCRequest.RPCRequestClassTransportMask, 0); } + MessagesController.getInstance().updateConfig(config); } updatingDcSettings = false; } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java index 4991bd324..11cbb918a 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java @@ -509,7 +509,6 @@ public class FileLoadOperation { } } }); - } } } @@ -675,7 +674,11 @@ public class FileLoadOperation { return; } httpTask = new DownloadImageTask(); - httpTask.doInBackground(httpUrl); + if (android.os.Build.VERSION.SDK_INT >= 11) { + httpTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, null, null, null); + } else { + httpTask.execute(null, null, null); + } } private void processRequestResult(RequestInfo requestInfo, TLRPC.TL_error error) { diff --git a/TMessagesProj/src/main/java/org/telegram/objects/MessageObject.java b/TMessagesProj/src/main/java/org/telegram/objects/MessageObject.java index 666b6556d..21a109395 100644 --- a/TMessagesProj/src/main/java/org/telegram/objects/MessageObject.java +++ b/TMessagesProj/src/main/java/org/telegram/objects/MessageObject.java @@ -39,7 +39,6 @@ public class MessageObject { public int contentType; public ArrayList photoThumbs; public Bitmap imagePreview; - public PhotoObject previewPhoto; public String dateKey; public boolean deleted = false; public float audioProgress; @@ -138,10 +137,6 @@ public class MessageObject { messageText = LocaleController.getString("ActionAddUser", R.string.ActionAddUser).replace("un2", "").replace("un1", ""); } } else if (message.action instanceof TLRPC.TL_messageActionChatEditPhoto) { - photoThumbs = new ArrayList(); - for (TLRPC.PhotoSize size : message.action.photo.sizes) { - photoThumbs.add(new PhotoObject(size, preview)); - } if (isFromMe()) { messageText = LocaleController.getString("ActionYouChangedPhoto", R.string.ActionYouChangedPhoto); } else { @@ -242,22 +237,8 @@ public class MessageObject { } } else if (message.media != null && !(message.media instanceof TLRPC.TL_messageMediaEmpty)) { if (message.media instanceof TLRPC.TL_messageMediaPhoto) { - photoThumbs = new ArrayList(); - for (TLRPC.PhotoSize size : message.media.photo.sizes) { - PhotoObject obj = new PhotoObject(size, preview); - photoThumbs.add(obj); - if (imagePreview == null && obj.image != null) { - imagePreview = obj.image; - } - } messageText = LocaleController.getString("AttachPhoto", R.string.AttachPhoto); } else if (message.media instanceof TLRPC.TL_messageMediaVideo) { - photoThumbs = new ArrayList(); - PhotoObject obj = new PhotoObject(message.media.video.thumb, preview); - photoThumbs.add(obj); - if (imagePreview == null && obj.image != null) { - imagePreview = obj.image; - } messageText = LocaleController.getString("AttachVideo", R.string.AttachVideo); } else if (message.media instanceof TLRPC.TL_messageMediaGeo) { messageText = LocaleController.getString("AttachLocation", R.string.AttachLocation); @@ -266,11 +247,6 @@ public class MessageObject { } else if (message.media instanceof TLRPC.TL_messageMediaUnsupported) { messageText = LocaleController.getString("UnsuppotedMedia", R.string.UnsuppotedMedia); } else if (message.media instanceof TLRPC.TL_messageMediaDocument) { - if (!(message.media.document.thumb instanceof TLRPC.TL_photoSizeEmpty)) { - photoThumbs = new ArrayList(); - PhotoObject obj = new PhotoObject(message.media.document.thumb, preview); - photoThumbs.add(obj); - } messageText = LocaleController.getString("AttachDocument", R.string.AttachDocument); } else if (message.media instanceof TLRPC.TL_messageMediaAudio) { messageText = LocaleController.getString("AttachAudio", R.string.AttachAudio); @@ -335,6 +311,80 @@ public class MessageObject { dateKey = String.format("%d_%02d_%02d", dateYear, dateMonth, dateDay); generateLayout(); + generateThumbs(false, preview); + } + + public void generateThumbs(boolean update, int preview) { + if (messageOwner instanceof TLRPC.TL_messageService) { + if (messageOwner.action instanceof TLRPC.TL_messageActionChatEditPhoto) { + if (!update) { + photoThumbs = new ArrayList(); + for (TLRPC.PhotoSize size : messageOwner.action.photo.sizes) { + photoThumbs.add(new PhotoObject(size, preview)); + } + } else if (photoThumbs != null && !photoThumbs.isEmpty()) { + for (PhotoObject photoObject : photoThumbs) { + for (TLRPC.PhotoSize size : messageOwner.action.photo.sizes) { + if (size instanceof TLRPC.TL_photoSizeEmpty) { + continue; + } + if (size.type.equals(photoObject.photoOwner.type)) { + photoObject.photoOwner.location = size.location; + break; + } + } + } + } + } + } else if (messageOwner.media != null && !(messageOwner.media instanceof TLRPC.TL_messageMediaEmpty)) { + if (messageOwner.media instanceof TLRPC.TL_messageMediaPhoto) { + if (!update) { + photoThumbs = new ArrayList(); + for (TLRPC.PhotoSize size : messageOwner.media.photo.sizes) { + PhotoObject obj = new PhotoObject(size, preview); + photoThumbs.add(obj); + if (imagePreview == null && obj.image != null) { + imagePreview = obj.image; + } + } + } else if (photoThumbs != null && !photoThumbs.isEmpty()) { + for (PhotoObject photoObject : photoThumbs) { + for (TLRPC.PhotoSize size : messageOwner.media.photo.sizes) { + if (size instanceof TLRPC.TL_photoSizeEmpty) { + continue; + } + if (size.type.equals(photoObject.photoOwner.type)) { + photoObject.photoOwner.location = size.location; + break; + } + } + } + } + } else if (messageOwner.media instanceof TLRPC.TL_messageMediaVideo) { + if (!update) { + photoThumbs = new ArrayList(); + PhotoObject obj = new PhotoObject(messageOwner.media.video.thumb, preview); + photoThumbs.add(obj); + if (imagePreview == null && obj.image != null) { + imagePreview = obj.image; + } + } else if (photoThumbs != null && !photoThumbs.isEmpty() && messageOwner.media.video.thumb != null) { + PhotoObject photoObject = photoThumbs.get(0); + photoObject.photoOwner.location = messageOwner.media.video.thumb.location; + } + } if (messageOwner.media instanceof TLRPC.TL_messageMediaDocument) { + if (!(messageOwner.media.document.thumb instanceof TLRPC.TL_photoSizeEmpty)) { + if (!update) { + photoThumbs = new ArrayList(); + PhotoObject obj = new PhotoObject(messageOwner.media.document.thumb, preview); + photoThumbs.add(obj); + } else if (photoThumbs != null && !photoThumbs.isEmpty() && messageOwner.media.document.thumb != null) { + PhotoObject photoObject = photoThumbs.get(0); + photoObject.photoOwner.location = messageOwner.media.video.thumb.location; + } + } + } + } } public String getFileName() { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ApplicationLoader.java b/TMessagesProj/src/main/java/org/telegram/ui/ApplicationLoader.java index 949dced5d..2285ef327 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ApplicationLoader.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ApplicationLoader.java @@ -8,7 +8,6 @@ package org.telegram.ui; -import android.app.Activity; import android.app.AlarmManager; import android.app.Application; import android.app.PendingIntent; @@ -93,34 +92,6 @@ public class ApplicationLoader extends Application { UserConfig.loadConfig(); if (UserConfig.getCurrentUser() != null) { - boolean changed = false; - SharedPreferences preferences = applicationContext.getSharedPreferences("Notifications", MODE_PRIVATE); - int v = preferences.getInt("v", 0); - if (v != 1) { - SharedPreferences preferences2 = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE); - SharedPreferences.Editor editor = preferences2.edit(); - if (preferences.contains("view_animations")) { - editor.putBoolean("view_animations", preferences.getBoolean("view_animations", false)); - } - if (preferences.contains("selectedBackground")) { - editor.putInt("selectedBackground", preferences.getInt("selectedBackground", 1000001)); - } - if (preferences.contains("selectedColor")) { - editor.putInt("selectedColor", preferences.getInt("selectedColor", 0)); - } - if (preferences.contains("fons_size")) { - editor.putInt("fons_size", preferences.getInt("fons_size", 16)); - } - editor.commit(); - editor = preferences.edit(); - editor.putInt("v", 1); - editor.remove("view_animations"); - editor.remove("selectedBackground"); - editor.remove("selectedColor"); - editor.remove("fons_size"); - editor.commit(); - } - MessagesController.getInstance().users.put(UserConfig.getClientUserId(), UserConfig.getCurrentUser()); ConnectionsManager.getInstance().applyCountryPortNumber(UserConfig.getCurrentUser().phone); ConnectionsManager.getInstance().initPushConnection(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatBaseCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatBaseCell.java index cde0be595..52ba8e91f 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatBaseCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatBaseCell.java @@ -60,9 +60,11 @@ public class ChatBaseCell extends BaseCell { private static Drawable checkDrawable; private static Drawable halfCheckDrawable; private static Drawable clockDrawable; + private static Drawable broadcastDrawable; private static Drawable checkMediaDrawable; private static Drawable halfCheckMediaDrawable; private static Drawable clockMediaDrawable; + private static Drawable broadcastMediaDrawable; private static Drawable errorDrawable; protected static Drawable mediaBackgroundDrawable; private static TextPaint timePaintIn; @@ -177,6 +179,8 @@ public class ChatBaseCell extends BaseCell { clockMediaDrawable = getResources().getDrawable(R.drawable.msg_clock_photo); errorDrawable = getResources().getDrawable(R.drawable.msg_warning); mediaBackgroundDrawable = getResources().getDrawable(R.drawable.phototime); + broadcastDrawable = getResources().getDrawable(R.drawable.broadcast3); + broadcastMediaDrawable = getResources().getDrawable(R.drawable.broadcast4); timePaintIn = new TextPaint(TextPaint.ANTI_ALIAS_FLAG); timePaintIn.setTextSize(AndroidUtilities.dp(12)); @@ -569,6 +573,7 @@ public class ChatBaseCell extends BaseCell { boolean drawCheck2 = false; boolean drawClock = false; boolean drawError = false; + boolean isBroadcast = (int)(currentMessageObject.getDialogId() >> 32) == 1; if (currentMessageObject.messageOwner.send_state == MessagesController.MESSAGE_SEND_STATE_SENDING) { drawCheck1 = false; @@ -601,30 +606,42 @@ public class ChatBaseCell extends BaseCell { clockMediaDrawable.draw(canvas); } } - if (drawCheck2) { - if (!media) { - if (drawCheck1) { - setDrawableBounds(checkDrawable, layoutWidth - AndroidUtilities.dpf(22.5f) - checkDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dpf(8.5f) - checkDrawable.getIntrinsicHeight()); + if (isBroadcast) { + if (drawCheck1 || drawCheck2) { + if (!media) { + setDrawableBounds(broadcastDrawable, layoutWidth - AndroidUtilities.dpf(20.5f) - broadcastDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dpf(8.0f) - broadcastDrawable.getIntrinsicHeight()); + broadcastDrawable.draw(canvas); } else { - setDrawableBounds(checkDrawable, layoutWidth - AndroidUtilities.dpf(18.5f) - checkDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dpf(8.5f) - checkDrawable.getIntrinsicHeight()); + setDrawableBounds(broadcastMediaDrawable, layoutWidth - AndroidUtilities.dpf(24.0f) - broadcastMediaDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dpf(13.0f) - broadcastMediaDrawable.getIntrinsicHeight()); + broadcastMediaDrawable.draw(canvas); } - checkDrawable.draw(canvas); - } else { - if (drawCheck1) { - setDrawableBounds(checkMediaDrawable, layoutWidth - AndroidUtilities.dpf(26.0f) - checkMediaDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dpf(13.0f) - checkMediaDrawable.getIntrinsicHeight()); - } else { - setDrawableBounds(checkMediaDrawable, layoutWidth - AndroidUtilities.dpf(22.0f) - checkMediaDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dpf(13.0f) - checkMediaDrawable.getIntrinsicHeight()); - } - checkMediaDrawable.draw(canvas); } - } - if (drawCheck1) { - if (!media) { - setDrawableBounds(halfCheckDrawable, layoutWidth - AndroidUtilities.dp(18) - halfCheckDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dpf(8.5f) - halfCheckDrawable.getIntrinsicHeight()); - halfCheckDrawable.draw(canvas); - } else { - setDrawableBounds(halfCheckMediaDrawable, layoutWidth - AndroidUtilities.dpf(20.5f) - halfCheckMediaDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dpf(13.0f) - halfCheckMediaDrawable.getIntrinsicHeight()); - halfCheckMediaDrawable.draw(canvas); + } else { + if (drawCheck2) { + if (!media) { + if (drawCheck1) { + setDrawableBounds(checkDrawable, layoutWidth - AndroidUtilities.dpf(22.5f) - checkDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dpf(8.5f) - checkDrawable.getIntrinsicHeight()); + } else { + setDrawableBounds(checkDrawable, layoutWidth - AndroidUtilities.dpf(18.5f) - checkDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dpf(8.5f) - checkDrawable.getIntrinsicHeight()); + } + checkDrawable.draw(canvas); + } else { + if (drawCheck1) { + setDrawableBounds(checkMediaDrawable, layoutWidth - AndroidUtilities.dpf(26.0f) - checkMediaDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dpf(13.0f) - checkMediaDrawable.getIntrinsicHeight()); + } else { + setDrawableBounds(checkMediaDrawable, layoutWidth - AndroidUtilities.dpf(22.0f) - checkMediaDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dpf(13.0f) - checkMediaDrawable.getIntrinsicHeight()); + } + checkMediaDrawable.draw(canvas); + } + } + if (drawCheck1) { + if (!media) { + setDrawableBounds(halfCheckDrawable, layoutWidth - AndroidUtilities.dp(18) - halfCheckDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dpf(8.5f) - halfCheckDrawable.getIntrinsicHeight()); + halfCheckDrawable.draw(canvas); + } else { + setDrawableBounds(halfCheckMediaDrawable, layoutWidth - AndroidUtilities.dpf(20.5f) - halfCheckMediaDrawable.getIntrinsicWidth(), layoutHeight - AndroidUtilities.dpf(13.0f) - halfCheckMediaDrawable.getIntrinsicHeight()); + halfCheckMediaDrawable.draw(canvas); + } } } if (drawError) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java index 7c8158722..d706ee32c 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java @@ -2161,6 +2161,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not MessageObject newMsgObj = (MessageObject)args[2]; if (newMsgObj != null) { obj.messageOwner.media = newMsgObj.messageOwner.media; + obj.generateThumbs(true, 1); } messagesDict.remove(msgId); messagesDict.put(newMsgId, obj); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileActivity.java index 1dd411aad..e4179b324 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileActivity.java @@ -143,7 +143,8 @@ public class ChatProfileActivity extends BaseFragment implements NotificationCen membersSectionRow = rowCount++; rowCount += info.participants.size(); membersEndRow = rowCount; - if (info.participants.size() < 200) { + int maxCount = chat_id > 0 ? MessagesController.getInstance().maxGroupCount : MessagesController.getInstance().maxBroadcastCount; + if (info.participants.size() < maxCount) { addMemberRow = rowCount++; } else { addMemberRow = -1; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java index 93b6d220a..91d74a232 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java @@ -91,6 +91,7 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen private EditText userSelectEditText; private boolean ignoreChange = false; private boolean isBroadcast = false; + private int maxCount = 200; private HashMap selectedContacts = new HashMap(); private ArrayList allSpans = new ArrayList(); @@ -113,6 +114,7 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen public GroupCreateActivity(Bundle args) { super(args); isBroadcast = args.getBoolean("broadcast", false); + maxCount = !isBroadcast ? MessagesController.getInstance().maxGroupCount : MessagesController.getInstance().maxBroadcastCount; } @Override @@ -141,7 +143,7 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen } else { actionBarLayer.setTitle(LocaleController.getString("NewGroup", R.string.NewGroup)); } - actionBarLayer.setSubtitle(LocaleController.formatString("MembersCount", R.string.MembersCount, selectedContacts.size(), 200)); + actionBarLayer.setSubtitle(LocaleController.formatString("MembersCount", R.string.MembersCount, selectedContacts.size(), maxCount)); actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { @Override @@ -216,7 +218,7 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen selectedContacts.remove(sp.uid); } } - actionBarLayer.setSubtitle(LocaleController.formatString("MembersCount", R.string.MembersCount, selectedContacts.size(), 200)); + actionBarLayer.setSubtitle(LocaleController.formatString("MembersCount", R.string.MembersCount, selectedContacts.size(), maxCount)); listView.invalidateViews(); } else { search = true; @@ -274,7 +276,7 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen userSelectEditText.setSelection(text.length()); ignoreChange = false; } else { - if (selectedContacts.size() == 200) { + if (selectedContacts.size() == maxCount) { return; } ignoreChange = true; @@ -282,7 +284,7 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen span.uid = user.id; ignoreChange = false; } - actionBarLayer.setSubtitle(LocaleController.formatString("MembersCount", R.string.MembersCount, selectedContacts.size(), 200)); + actionBarLayer.setSubtitle(LocaleController.formatString("MembersCount", R.string.MembersCount, selectedContacts.size(), maxCount)); if (searching || searchWas) { searching = false; searchWas = false; diff --git a/TMessagesProj/src/main/res/drawable-hdpi/broadcast3.png b/TMessagesProj/src/main/res/drawable-hdpi/broadcast3.png new file mode 100644 index 0000000000000000000000000000000000000000..d296975976be8cd68b334c66f7615b45e8c52c79 GIT binary patch literal 1187 zcmbVMTWAzl7#@vAO$~$?EGbG)M=)5sGjnFLJG*1nWOrv*7qe@+S#%N6%+8!-hs|7^ zIdLaJWUYvaf_TZBJ|y~}z7#}!5ET`Jmlp{N-k%gop_D@V&=y+knIxO~5EMKx=lXx& zf1k0Q?3TucuNo+dYD{mHb7XDyzvcC0-tqXvPO`M(WC8bD{kWnyh>B@e5rMR!44@oR zwBdb^PzOcT_3QZpE@ZkT)iM~xmtj1^CTNQ4==5wwEh7wyXh1ik^lvwA(?Hjv^v+<0 z%h(B2(zlK{sCOirS4YZfM58-5gAPw31O~zi@QgvzmAoiD!z+=!f6dZhMg*6m^sG^Z zObV?F=4ky=PEO6~BBv-_ z!q}Erwo<7u6@jsw0TxCg5ubzS14JU=4x3o<0;apJ#vmhCb#xo+mI-`DrDzS|C`~M# zb-}PRnR#N6(;k=V3S{hLTA>9tuMk;p1FNfP6R+6H-tN z*Ekl!w#PYvONtP}6q%Ckv9J({hh%{aUKE3o8a8dZSTR*p)2kD`b6D=9SSjHk1zS$u zvIc7v&{MLo<(4cPBzl7&qo}&+pZ)aAdMhJG-;cDEV;Nv3zLLIx{!jZoi`70SW-Kv= z^^4qv9AaO!gBve7mQ3fGk z?v|$4@2;+RIq`ST#WPD!-ddea^If5zzqqz?*Y>g4LuGvF)TV0T%h6w|f3Zz$^~t$u zYGD2SiM?Gn>yQ09>8)xxe1`{nj;=ntiLXP5K!iq<86G%(!S3mxZo+^uiwqyEjb-M=^5cEtZ}q?1|s J$9Ufl{{i>Je`Ejv literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-hdpi/broadcast4.png b/TMessagesProj/src/main/res/drawable-hdpi/broadcast4.png new file mode 100644 index 0000000000000000000000000000000000000000..ed908d8041727326452f16b676beb9ed4eae990a GIT binary patch literal 1175 zcmaJ>O=uid9DgQpkw8ErSQ}9uQx6K=nRzoiJ3B+R>F&-0S$u;M2 z1)KKrv2XA=0D}#uS|hdc0oC$d){HT1%MB@0Iw zD)Z%_fajg!N{DAyrmEJ;f~DBZ#6CFQQmFzL6BD-FMK4lYS*EL3rRVsXV_+9T7P8Ei zQ?>F8EchXY5-TMw9;KkHut-9w4B86?9*G<;a!5=fLFE+{NwBvVYAv)IYDF`8wy2b4 z<_QT@j%zlXY*S?YaE?QYqHw&x2||)0lF_n9%vREi_VhJqII=<~Adc_BSfg3@mq?bO zo^FNU2Ica$VlV0?il&TfnE{7bo^#zet}Z$v75uLoJEEiNa)7xCj{K$2qV;I(>62;h z9&acHQg77h(4j>!7d78na zs_!rMJ78wsCw?^V2e2?J!Ln&NUM$Du*@{-fq4Nf|jnH>tH@~X0gZ)&V7kORg5i+{I z=Q5&_PirDwf-Fl4)8pDZvdeC`!^X8nbu#WU>R(`x%d=b2Yud^l83k6P29Gx6Ev z=B}e(e17lr^KajgKKOd0UE9_9qy2z;nrq+uF|7$4M3mkc8)48q3nM8+S*CBE}Sdl340P(RToid-L4=|Fx4qkM5;c2^*KsXRP&@! zD&w*;B5AhCsDTdSn+`!!RC3UFRBZ-fP(f3Mm7>2qenJC7Ptlj63a2<(G;ItoxM*Tw zw4^P}XbGJjJP(q-LZ5M$k!-X|2 z#(@}Qpb!y7u^;dpdKB=8c)f%>9}HCLaMigLbgi%2PY8e>Od*=n`QR0YO% zr&yRsBmxee4-<{BH*aCp4_jVOgF!}~<{Az*YzqX8YQ>(zDVlh?7lP?1%098>)e}Wh z#`>zmLWW~aGl;9E?cpN&;GhAMPd_0>L@=%O7I1a+bL|Nw2Vg$mx z2w^UgjthxQOcu!EMKPLaU<;OqRZBw+y9Tja#|npHrL2ooY`Z1fo^5o%__U2}Z`yW1 zb|MNCRWqzW4$89^t&Cjb8q)KwZGu{UCF215|BibPtN%~VSmF#DG{;}f(zqfW7##Oo zp9uTIgDf&JE*Xu>kG?gLv05m|>5~7x@_l!Au$kF@_+sRQEWj=5^V%z6@$G!)z4jYR zG>CRRn_3Jlwe;VwB!|{l)|Zc5>}`g<%$oX6Ir`!B(9h#HUpIYakL3okW2c(?y1}oe z%}+zyt()C%l%~FxJI=|E=fDqed*%Awmm6)NqZtZpP)`Shom;DCcY^6ITx2|BlnI^AmSo6c=&9+m< zm=p9Up1cjuGGtc|UMeE`7YKtXUIbxR@iJe!c6z9Lki7SO@ALWo{ytk=m>nLvJVa5{ zaBfa5ko|o44Gxh1!SjI#*)HL12`{@9T-SX>rA)VsK+e`zPyy*?^ZrLPMN$0~t60LN z{JdhgHlv3areS-8O;J-b4No^#5e8+nVmV3r@a;PqSZ0#GBj&lhmqAr)Zrw-A>kCC= zebtandS)6-H58)2Mpy?8yXFK+BT2XQD&!nqvovT!@M@AicB+(L1R2*yKxD+I!NC}i zWCn^bmVlFh=b*rH0thx{9%#zuHht2JUtG<_VW1?#ZJ&k6iFG| z&^;D19BbQQTy1oK3+S&KJ<&n2=^?g&0(Z?fNIfbOT{6kt>4rie@kY7rTcjv@O?8bm z8#y?qCTa4*n3kz%F&-u~DW1*p>39M{nNM??0Qp2FC1_AebanLNX8BY$A#yP&auS5u zn5>GN3Z;y!34Bb;2wiT@39#-MsB70Eb~{|*RIZZok&a!z=(@FT2P{@y>;_fW1DRzJ z*4 ztiz4{m&+1o*swYNX_oF4>A>)K()vU=86M=2iSfy3{CxOmmyA^{r>2UHFXi7yM>GA` zUJt%{Iqp542h$_vgF^9a>xF*h!p-5)H`{y7&C=Do=jNCANbqg%Vr3tLjlS05=C8@f zQF`gg_b~%(47NVss*SX+?~K3y3dWrDK8`${*tsEaTgA~cRNnygX@B;^*f#YeoabD2 KLETN?+xi1Qwo+aI literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/broadcast3.png b/TMessagesProj/src/main/res/drawable-mdpi/broadcast3.png new file mode 100644 index 0000000000000000000000000000000000000000..fb81e5ebf9d6ae89c6e981569c57ce7f4f936f40 GIT binary patch literal 1125 zcmbVLOK1~87~WX=w54K_8T!A9}W&F-Y#Cj02_q)7{c z^&l-(D5AZ1@!-LV3VM*DpcgABqT)>vJbEegs)*Lvq^TZC1qXI#{+a*#{`Y)p=wwIR zp*DgbIuZk78t?7S*V2UlXG-V4;_V=cWzn#aM`g)^L|8F$5F|8d45p!^Oi#Xoy#&#a zS2J0ZO%4jOp?M@n$5YWvj3$WQ{)#Ed1&BZnj;VT(Tz~qU1ga7wM|?>-X-46=Ixu6w z;hCX~JX4T)h3xMGy%hlyXb?%Dq7`*ps07I>uYk|aHARA|3MvH2np4?i3PcSH0-uL= z%e0>ce#XOidpM3e0a%)$DVn7i*3EE&mlbFlY%UU8vy{A$7UP??uoNW65i$jeDwoTi zve#o+V-&;lyu-n=Zmi+9r*$M%+`8RWXAq$+TdIjvLkA9{lru^wNMcWGA!ueYxkaqo zn~B0Hqbia~F&>)IG$*dAwvE#8j~m-++nH$-QfX)#B}>Nj$amGjICnc6aul&Q!f8vz zMUjf4A(u3$ql6eF@ry@M6(QckGJ!bfkHy%CKfo|N8=>P~h7Cl+-Z;Yr>Kxl){hTP$ zVUA{)IL9!to^Zg+NBp7}FP7tcd>xz6Z6xV3tlL$w-5S;(-w`WBEhr(w${0qm-T|p` z0~z+XVS?ze4Pc2#zTIv*3;+CO-YJLTE8~gu`yM|T%CubCPhH{$YuV$%V z;SO|;Tdj|Ut>J+>o)`;{#)Yek7x7r#NQmJ~9=K%3}rnVp>v+;n%}PA<77>tY^^9B1C@p!4C((_O`b z)kQ&qE@-TC;;NPxfQs*W5(@V+#{s$kvH7<9O69;*#zoDrve?h|b#jG|D60T${bf%#W)Y^R(6r?wnC&Oe8QL-v%w;jh<-9bSu?ClY zG`c)oFqUTx#bo-=(|u)?D6kRM>9RfN1Zp|K?CDj>IlN{WdJlqU6U@F-V}sdaD{B3Jl-!u;n^*s8OGC7jS|hp6-WWd%4_! zVkf91ilmG!>mCcD9BbQQTzlvM=h0s`YNCU}l84wl3fu+XAoVErR>>rHhZ_ok#2fXJ zZ;_(tbI>&wY~ys0C+i_6f_{oRUNgsu}mDs zl@tUbN0^zI0!0o2DXnM%AJfu8m78?}tUCs(+O>$?3O9WyS55m!$F5&+-MMN9jLf*$ z4Q5=APLGOoPB$zkl*97uM+=c}Eh1C%U7Oy^uWHq>AD1BHl5q_HO$vQa%7T)LLxC(_ zl0=26aLpPy+viH$f4MAih7FtJpJu6Ekq!)x2dz(pgW*9AnHZmp#`@O|fsEBk7A6bj z_fx-jcl#UK2kO_ZuAUfzXPm~Zi{7bMO?~pu{>GKn^-rT8e)QCFvBvuEZ+0KoO*Fhd zer@2jwy~{ueG}S_-Wz*ZH(%fO@y6Djfu|?$_Dss1XE%?0{?+l8%I~zUy}R{tvAt#N mO6*xum1r^L|F*{ literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/broadcast3.png b/TMessagesProj/src/main/res/drawable-xhdpi/broadcast3.png new file mode 100644 index 0000000000000000000000000000000000000000..c95c69020ceb9a23914b094941f48752d99bca43 GIT binary patch literal 1254 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gjk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+nA0*tB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPA){ffi_eM3D1{oGuTzrd=COM+4n&cLd=IHa;5RX-@T zIKQ+g85kdF$}r8qu)}W=NFmTQR{lkqz(`5Vami0E%}vcK@pQ3O0?O#6WTsfTnHU*b zxS5-|x*9o|Sr{5x8aWxb85SFg9>C2ik~7ua$FAYGO%#QAmD%4lD%( zWaO9R7iZ)bC^!e3D)=TQXXb(Upy+}4)+Mzlvn(~mttdZN0UW+onON*6>~DzP6mr5$ zALtl;P~t#JEHEKp3Is9XNgv38XP(qNV2&vQW{s(P@)4~@T2ziR>(a>vg$dq+b nN1?2NP5z;W+}baR3U2NM_6n2PUQ%W@^2Fs>N+a@{6{hq5c#_nzzX zo%5YPFHcS!8I0|X5d<+<8kfp=kB86phw%HSW_A^Cd;DV6pR((IQ*{xM)9o4pB~zV7 zWu)q@-d{9HvhLt6MzjTEJhMpy# z;T1-43aDX>&%0=9exjny&uD^9jvfXhfrt&5$X7vN&RU)rWXW~AB0h)LGzr#K{FyAd zL8_`uf`aWLz*BreV_*`b1q$*onSsNAWgtg091XbyWJN|0ArE?s#NJ%JE|w*^=L<_& zvf=xVNYl+`lWKC5?M~BB5CocGX_if3jfB^-d^Jc|-hsXa33-}pIKE+9Ahf8~>^VP6 zVx}7*n2w@s8n(P%qHxOSKy_$HF|=uhajk26ei{8sV@qwX(sB@8MxH(AYPcTt1AQ>g z-TfVfikOXf%r$UP)LF^a=1gSyB`HhdFO+WRqMT%5Moy=SMK+(xKq#&q#=PZp z$UT?ggnUZk@M6(vrmFQicD;(wGb#HphROrGJGxFg$LyJ{C5I2U&Px zTs#_1>uLj!)t@CPR|#&{?yaqjMiY@oqil@dJqeC2d zSAPs#R+fei5#1*`*G`I`bGLUt`<%0_y|%J)>eI33kC_AU&aNLmym@0P(%nDVd2;N; zo|3ZjgG^yrKY`wgmCwBJ=E1L{-B*`OpPY_eG{*Pdy?N)>Lcm{m{4-$O=#o1w-iaR` z*nYNn{{6Xq*MI4fYXj}Yh1Cbo+cVr(Ho Wkh}l(;=BUFpG&DYA$^g5>C`_|Igd{O literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/broadcast3.png b/TMessagesProj/src/main/res/drawable-xxhdpi/broadcast3.png new file mode 100644 index 0000000000000000000000000000000000000000..f89697b731e581c648ec70cf7d1844d632e996f0 GIT binary patch literal 1385 zcmbVMZA=?w9KV(f>S!flij45#*&%K*wD(eI?@l`U4oxU)3SrD?!qFb|fP3-opoPqY ztr@cJgPJHqG?5wRmN0SnWoBk9M$9IONo7XKOs1Q-Y*VwK?87n@p96}1AT#kvo_pT@ zzu*7;jzya4E!)esBM4#%HTa`&eOjNUeE7YAjE%u%rxs|_nx#%H$toP;iAxJu^vtX9b6YLy3l){TtWdK zccJ@h!gyHraS6U*P~n;fn_6OnJuy0t*6jtgDFzY0T62=GY?2Wo7%HHJHI;2>;-z1rz?Rsj+xa119gg0vD&#!fOg4mJh~wJGsV zCh8Av=z=E~n$R?v!LVd9X-nE|lG23{G)?OqBx!{bR&_ws*pyXND{>5ePK_zNtnrcv zbVjyA>eE~(v~=ACK@NvEiA8lIP%vazij^_KhGT-D`?V&mYEkYVGq#jgTLxqfi*l;e zr^H}BIxBKu7`sO+(gmS4%sz#ONnv~aQmjwlL@nfZq432P=i^MUnk1;8(-8=eUI#@G zH0i~Ic7mjQ9(#~*QaO&TupSTP_XZu+5CvzT+C$lCufuPLgLFD;=o~gAsv0ZCxSU=d z>fONFABkmr3dd@a(jrN{xeACRBu!Eik_>#!H6YB!cu_y==~?&I&nbLA7Y{0u0M_Em z@LTBrZ@<^E@&6Mu3>t&!#qqCV$z8z;)VG_Z4-cEo!-=qC6xbTAC-?CPVt6a$_q3$0 zb^NiqTK8GIvC*71o0)={NcYggZZ)%V&+MWnb}d=vcy|?1`rcXN$a!SB5$rY3y_0um zLIz^}%_(H&wwu0EH1d>X^o3i7xv9fr0#2Eh#`-3y;nByBRJJ!=IN?hmOG6K`{#txn zMR9i9%~O%_3zaqJR(>)>ce$$y<`$?GGH=E(o?hH@|H;CV%R}Wd@_ef~GvD`{o6bLx z{-xmH@9BYa^zCok)$H+4Z%w?M{?hY-`;eNYOpB9;ER*F!9~X@zk>vy6uLi7uD86bj zmW*D{&KKv;A~QvA1oJcQTFd?)3oTdjmMcEG_O&~F@T-NAGu=d9=G~*i!2F@1V+WWG zzA8p6WpxFm%HsUldUtQ(+-3eQXit>a7gk0-?>Xjs@EqtLe%~|R|3nvi=bIml-yfz- zBiPji&)XBTuNZb4?_TolSnV07Or-)SY(*dY^%?JX6^VvF1H})IPi4^4;fv-n%l$~B znKD}CofAi=cTYc?d41u=*vaeXPd9~J**AYalYY(M9x@;YF1|>xqKVdjexX2eM}o=7{38)0a?W?!HH-!sU_2;3eq!YQLwX*YUVO+W&?k`_Qz zVmpL{!18^2zZB{bq_|y7ri@f8u}J)=R^)d5xi9 z8Dez#(G{msu{a1RngHAmx1Dq1F5smcxEpu*@TURc#7WFaVmN8X3ED}~xEtgb3ax2; zJDp%6d0SBOqZz|cX$a_NvJu!f=~6{Wk-0r8AtD0)UwL8#RYVk{@hrfimHC0a(%#Fqs=qA3zs z&Mz&lVLuS?F~Nw3gb}+;-vd693VIk4F2d_|Q)r&cuaUDn7xMmxi$P~FvpN3LEQKrB zf#z|w^`WpjJc0}-MuVeK{&w{N1X-s>nLsi-onBm8YM5v%+F3DF@g|))Lrp!JyFQRA zI$a(=d1~X>-Gj)dgCiS{)BV)8#fEK%CQcoFyk*Wh`G#dj^#U^cUE@{HrkWD%DxIha z?Xd1f=BvQmmff`v9C@rryZ8#QJ@Gx#NjE*5I~EizozLW~xzIq$mV0mSC~HX#O=3HFvtsP`59)>DSJGG55|MaGr|WF72^> zZb@5#V}05Vs`gbCFWylrYlnXTN=7Ivere!_^|{*OFnG)ISIK7Z;N-z4#Y?}1yXKF~ z#;u)YFaEu2(^Sj!>z^>>ADb)5pW<~TlUFjog6?mOepFU#HBJb$8ebjcQ5{7Ae74y~^nzI$%}wLeR%6R!?W-kbgKwO2I{hzc Date: Thu, 7 Aug 2014 01:27:24 +0400 Subject: [PATCH 10/11] Bug fixes --- TMessagesProj/build.gradle | 2 +- .../telegram/android/ContactsController.java | 88 ++++--------------- .../org/telegram/android/MessagesStorage.java | 2 +- .../org/telegram/objects/MessageObject.java | 2 +- 4 files changed, 18 insertions(+), 76 deletions(-) diff --git a/TMessagesProj/build.gradle b/TMessagesProj/build.gradle index e01ec1f62..6b524b5c3 100644 --- a/TMessagesProj/build.gradle +++ b/TMessagesProj/build.gradle @@ -83,7 +83,7 @@ android { defaultConfig { minSdkVersion 8 targetSdkVersion 19 - versionCode 302 + versionCode 303 versionName "1.7.0" } } diff --git a/TMessagesProj/src/main/java/org/telegram/android/ContactsController.java b/TMessagesProj/src/main/java/org/telegram/android/ContactsController.java index 33d2b4bf1..9da8a3b51 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/ContactsController.java +++ b/TMessagesProj/src/main/java/org/telegram/android/ContactsController.java @@ -47,10 +47,7 @@ public class ContactsController { private final Integer observerLock = 1; public boolean contactsLoaded = false; private boolean contactsBookLoaded = false; - private int lastContactsPhonesCount = -1; - private int lastContactsPhonesMaxId = -1; - private int lastContactsNamesCount = -1; - private int lastContactsNamesMaxId = -1; + private String lastContactsVersions = ""; private ArrayList delayedContactsUpdate = new ArrayList(); public static class Contact { @@ -119,10 +116,7 @@ public class ContactsController { contactsSyncInProgress = false; contactsLoaded = false; contactsBookLoaded = false; - lastContactsPhonesCount = -1; - lastContactsPhonesMaxId = -1; - lastContactsNamesCount = -1; - lastContactsNamesMaxId = -1; + lastContactsVersions = ""; } public void checkAppAccount() { @@ -191,70 +185,17 @@ public class ContactsController { ContentResolver cr = ApplicationLoader.applicationContext.getContentResolver(); Cursor pCur = null; try { - pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, new String[]{ContactsContract.CommonDataKinds.Phone._ID}, null, null, ContactsContract.CommonDataKinds.Phone._ID + " desc LIMIT 1"); - if (pCur != null) { - if (pCur.getCount() > 0 && pCur.moveToFirst()) { - int value = pCur.getInt(0); - if (lastContactsPhonesMaxId != -1 && value != lastContactsPhonesMaxId) { - reload = true; - } - lastContactsPhonesMaxId = value; - } + pCur = cr.query(ContactsContract.RawContacts.CONTENT_URI, new String[]{ContactsContract.RawContacts.VERSION}, null, null, null); + StringBuilder currentVersion = new StringBuilder(); + while (pCur.moveToNext()) { + int col = pCur.getColumnIndex(ContactsContract.RawContacts.VERSION); + currentVersion.append(pCur.getString(col)); } - } catch (Exception e) { - FileLog.e("tmessages", e); - } finally { - if (pCur != null) { - pCur.close(); - } - } - try { - pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, new String[]{ContactsContract.CommonDataKinds.Phone._COUNT}, null, null, null); - if (pCur != null) { - if (pCur.getCount() > 0 && pCur.moveToFirst()) { - int value = pCur.getInt(0); - if (lastContactsPhonesCount != -1 && value != lastContactsPhonesCount) { - reload = true; - } - lastContactsPhonesCount = value; - } - } - } catch (Exception e) { - FileLog.e("tmessages", e); - } finally { - if (pCur != null) { - pCur.close(); - } - } - try { - pCur = cr.query(ContactsContract.Data.CONTENT_URI, new String[]{ContactsContract.Data._COUNT}, ContactsContract.Data.MIMETYPE + " = '" + ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE + "'", null, null); - if (pCur != null) { - if (pCur.getCount() > 0 && pCur.moveToFirst()) { - int value = pCur.getInt(0); - if (lastContactsNamesCount != -1 && value != lastContactsNamesCount) { - reload = true; - } - lastContactsNamesCount = value; - } - } - } catch (Exception e) { - FileLog.e("tmessages", e); - } finally { - if (pCur != null) { - pCur.close(); - } - } - try { - pCur = cr.query(ContactsContract.Data.CONTENT_URI, new String[]{ContactsContract.Data._ID}, ContactsContract.Data.MIMETYPE + " = '" + ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE + "'", null, ContactsContract.Data._ID + " desc LIMIT 1"); - if (pCur != null) { - if (pCur.getCount() > 0 && pCur.moveToFirst()) { - int value = pCur.getInt(0); - if (lastContactsNamesMaxId != -1 && value != lastContactsNamesMaxId) { - reload = true; - } - lastContactsNamesMaxId = value; - } + String newContactsVersion = currentVersion.toString(); + if (lastContactsVersions.length() != 0 && !lastContactsVersions.equals(newContactsVersion)) { + reload = true; } + lastContactsVersions = newContactsVersion; } catch (Exception e) { FileLog.e("tmessages", e); } finally { @@ -368,7 +309,7 @@ public class ContactsController { String sname2 = pCur.getString(3); String mname = pCur.getString(4); Contact contact = contactsMap.get(id); - if (contact != null) { + if (contact != null && contact.first_name.length() == 0 && contact.last_name.length() == 0) { contact.first_name = fname; contact.last_name = sname; if (contact.first_name == null) { @@ -535,7 +476,8 @@ public class ContactsController { } } - if (existing == null || existing != null && (!existing.first_name.equals(value.first_name) || !existing.last_name.equals(value.last_name))) { + boolean nameChanged = existing != null && (!existing.first_name.equals(value.first_name) || !existing.last_name.equals(value.last_name)); + if (existing == null || nameChanged) { for (int a = 0; a < value.phones.size(); a++) { String sphone = value.shortPhones.get(a); contactsBookShort.put(sphone, value); @@ -550,7 +492,7 @@ public class ContactsController { } } if (request) { - if (contactsByPhone.containsKey(sphone)) { + if (!nameChanged && contactsByPhone.containsKey(sphone)) { continue; } diff --git a/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java b/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java index 98cc2bc8d..23d90e7ea 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java +++ b/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java @@ -2009,7 +2009,7 @@ public class MessagesStorage { } else { state.bindInteger(2, dialog_date != 0 ? dialog_date : value.date); } - state.bindInteger(3, unread_count); + state.bindInteger(3, old_unread_count + unread_count); state.bindInteger(4, messageId); state.step(); } diff --git a/TMessagesProj/src/main/java/org/telegram/objects/MessageObject.java b/TMessagesProj/src/main/java/org/telegram/objects/MessageObject.java index 21a109395..fc6f61411 100644 --- a/TMessagesProj/src/main/java/org/telegram/objects/MessageObject.java +++ b/TMessagesProj/src/main/java/org/telegram/objects/MessageObject.java @@ -380,7 +380,7 @@ public class MessageObject { photoThumbs.add(obj); } else if (photoThumbs != null && !photoThumbs.isEmpty() && messageOwner.media.document.thumb != null) { PhotoObject photoObject = photoThumbs.get(0); - photoObject.photoOwner.location = messageOwner.media.video.thumb.location; + photoObject.photoOwner.location = messageOwner.media.document.thumb.location; } } } From 8f7652bb7e319c5aefffe81a8211af6722bfc745 Mon Sep 17 00:00:00 2001 From: DrKLO Date: Fri, 8 Aug 2014 14:17:06 +0400 Subject: [PATCH 11/11] Bug fixes --- TMessagesProj/build.gradle | 4 +- .../config/debug/AndroidManifest.xml | 1 - .../config/release/AndroidManifest.xml | 1 - TMessagesProj/jni/fake.c | 2 +- .../libs/armeabi-v7a/libtmessages.so | Bin 852644 -> 856740 bytes TMessagesProj/libs/armeabi/libtmessages.so | Bin 799376 -> 803472 bytes TMessagesProj/libs/x86/libtmessages.so | Bin 1250356 -> 1250356 bytes .../telegram/android/MessagesController.java | 18 ++++--- .../org/telegram/android/MessagesStorage.java | 12 ++++- .../org/telegram/android/NativeLoader.java | 4 +- .../java/org/telegram/messenger/FileLog.java | 2 +- .../org/telegram/ui/Cells/ChatMediaCell.java | 2 +- .../java/org/telegram/ui/ChatActivity.java | 27 +++++++--- .../org/telegram/ui/ChatProfileActivity.java | 2 +- .../org/telegram/ui/LocationActivity.java | 20 ++++++- .../org/telegram/ui/LoginActivitySmsView.java | 50 +++++++++++++++++- .../ui/PopupNotificationActivity.java | 2 +- .../src/main/res/values-ar/strings.xml | 2 +- 18 files changed, 117 insertions(+), 32 deletions(-) diff --git a/TMessagesProj/build.gradle b/TMessagesProj/build.gradle index 6b524b5c3..ab347d7c4 100644 --- a/TMessagesProj/build.gradle +++ b/TMessagesProj/build.gradle @@ -18,7 +18,7 @@ tasks.withType(JavaCompile) { dependencies { compile 'com.android.support:support-v4:19.0.+' - compile 'com.google.android.gms:play-services:4.1.+' + compile 'com.google.android.gms:play-services:3.2.+' compile 'net.hockeyapp.android:HockeySDK:3.0.1' compile 'com.googlecode.mp4parser:isoparser:1.0.+' } @@ -83,7 +83,7 @@ android { defaultConfig { minSdkVersion 8 targetSdkVersion 19 - versionCode 303 + versionCode 307 versionName "1.7.0" } } diff --git a/TMessagesProj/config/debug/AndroidManifest.xml b/TMessagesProj/config/debug/AndroidManifest.xml index 6a08d6c12..dc448b5fa 100644 --- a/TMessagesProj/config/debug/AndroidManifest.xml +++ b/TMessagesProj/config/debug/AndroidManifest.xml @@ -28,7 +28,6 @@ android:largeHeap="true"> - diff --git a/TMessagesProj/config/release/AndroidManifest.xml b/TMessagesProj/config/release/AndroidManifest.xml index a1ee70d33..463616384 100644 --- a/TMessagesProj/config/release/AndroidManifest.xml +++ b/TMessagesProj/config/release/AndroidManifest.xml @@ -28,7 +28,6 @@ android:largeHeap="true"> - diff --git a/TMessagesProj/jni/fake.c b/TMessagesProj/jni/fake.c index 95b86f6fe..b484b63f0 100644 --- a/TMessagesProj/jni/fake.c +++ b/TMessagesProj/jni/fake.c @@ -2,5 +2,5 @@ void fakeFunction() { printf("some androids has buggy native loader, so i should check size of libs in java to know that native library is correct. So each changed native library should has diffrent size in different app versions. This function will increase lib size for few bytes :)"); - printf("bla blablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablabla"); + printf("bla blablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablabla"); } diff --git a/TMessagesProj/libs/armeabi-v7a/libtmessages.so b/TMessagesProj/libs/armeabi-v7a/libtmessages.so index f5677c7df613cc6f26b48be8ee7f21b197b74c14..a5f1bd92aadc42ca35a1ea5c5126dfa26e92853c 100755 GIT binary patch delta 17322 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 P+Afs-5T|)+xcPqofd_Lh delta 17231 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

#h>j>9{7{9jmfm17O(D|Xt~kLpj0r_{PeeYKRA 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 delta 18047 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 diff --git a/TMessagesProj/libs/x86/libtmessages.so b/TMessagesProj/libs/x86/libtmessages.so index c8bb5c7fc55e72f50bacd198b64f918dde0667d4..ff282dc075eff856cec7987a951ccb4c017230fc 100755 GIT binary patch delta 40363 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≶7 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 diff --git a/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java b/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java index 60857b092..0d65004bf 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java +++ b/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java @@ -892,10 +892,10 @@ public class MessagesController implements NotificationCenter.NotificationCenter } } - public void loadChatInfo(final int chat_id) { + public void loadChatInfo(final int chat_id, Semaphore semaphore) { currentChatInfo = null; chatParticipantsId = chat_id; - MessagesStorage.getInstance().loadChatInfo(chat_id); + MessagesStorage.getInstance().loadChatInfo(chat_id, semaphore); } public void processChatInfo(final int chat_id, final TLRPC.ChatParticipants info, final ArrayList usersArr, final boolean fromCache) { @@ -1605,7 +1605,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter } } - public void markDialogAsRead(final long dialog_id, final int max_id, final int max_positive_id, final int offset, final int max_date, final boolean was) { + public void markDialogAsRead(final long dialog_id, final int max_id, final int max_positive_id, final int offset, final int max_date, final boolean was, final boolean popup) { int lower_part = (int)dialog_id; int high_id = (int)(dialog_id >> 32); @@ -1643,10 +1643,12 @@ public class MessagesController implements NotificationCenter.NotificationCenter dialog.unread_count = 0; NotificationCenter.getInstance().postNotificationName(dialogsNeedReload); } - NotificationsController.getInstance().processReadMessages(null, dialog_id, 0, max_positive_id); - HashMap dialogsToUpdate = new HashMap(); - dialogsToUpdate.put(dialog_id, 0); - NotificationsController.getInstance().processDialogsUpdateRead(dialogsToUpdate, true); + if (!popup) { + NotificationsController.getInstance().processReadMessages(null, dialog_id, 0, max_positive_id); + HashMap dialogsToUpdate = new HashMap(); + dialogsToUpdate.put(dialog_id, 0); + NotificationsController.getInstance().processDialogsUpdateRead(dialogsToUpdate, true); + } } }); } @@ -1660,7 +1662,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter MessagesStorage.getInstance().processPendingRead(dialog_id, max_positive_id, max_date, true); TLRPC.TL_messages_affectedHistory res = (TLRPC.TL_messages_affectedHistory) response; if (res.offset > 0) { - markDialogAsRead(dialog_id, 0, max_positive_id, res.offset, max_date, was); + markDialogAsRead(dialog_id, 0, max_positive_id, res.offset, max_date, was, popup); } if (MessagesStorage.lastSeqValue + 1 == res.seq) { diff --git a/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java b/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java index 23d90e7ea..4d502911b 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java +++ b/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java @@ -755,7 +755,7 @@ public class MessagesStorage { }); } - public void loadChatInfo(final int chat_id) { + public void loadChatInfo(final int chat_id, final Semaphore semaphore) { storageQueue.postRunnable(new Runnable() { @Override public void run() { @@ -809,9 +809,16 @@ public class MessagesStorage { updateChatInfo(chat_id, info, false); } } + if (semaphore != null) { + semaphore.release(); + } MessagesController.getInstance().processChatInfo(chat_id, info, loadedUsers, true); } catch (Exception e) { FileLog.e("tmessages", e); + } finally { + if (semaphore != null) { + semaphore.release(); + } } } }); @@ -946,6 +953,9 @@ public class MessagesStorage { ByteBufferDesc data = buffersStorage.getFreeBuffer(cursor.byteArrayLength(0)); if (data != null && cursor.byteBufferValue(0, data.buffer) != 0) { TLRPC.Chat chat = (TLRPC.Chat) TLClassStore.Instance().TLdeserialize(data, data.readInt32()); + if (!needEncrypted && chat.id < 0) { + continue; + } resultArrayNames.add(Utilities.generateSearchName(chat.title, null, q)); resultArray.add(chat); } diff --git a/TMessagesProj/src/main/java/org/telegram/android/NativeLoader.java b/TMessagesProj/src/main/java/org/telegram/android/NativeLoader.java index ed9bae335..a161dc6a5 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/NativeLoader.java +++ b/TMessagesProj/src/main/java/org/telegram/android/NativeLoader.java @@ -24,8 +24,8 @@ import java.util.zip.ZipFile; public class NativeLoader { private static final long sizes[] = new long[] { - 799376, //armeabi - 852644, //armeabi-v7a + 803472, //armeabi + 856740, //armeabi-v7a 1250356, //x86 0, //mips }; diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/FileLog.java b/TMessagesProj/src/main/java/org/telegram/messenger/FileLog.java index 35d460d17..ab0a52c9c 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/FileLog.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/FileLog.java @@ -63,12 +63,12 @@ public class FileLog { e.printStackTrace(); } try { + logQueue = new DispatchQueue("logQueue"); currentFile.createNewFile(); FileOutputStream stream = new FileOutputStream(currentFile); streamWriter = new OutputStreamWriter(stream); streamWriter.write("-----start log " + dateFormat.format(System.currentTimeMillis()) + "-----\n"); streamWriter.flush(); - logQueue = new DispatchQueue("logQueue"); } catch (Exception e) { e.printStackTrace(); } 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 4866457af..df80a48fe 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMediaCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMediaCell.java @@ -394,7 +394,7 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD photoHeight = h; backgroundWidth = w + AndroidUtilities.dp(12); currentPhotoFilter = String.format(Locale.US, "%d_%d", (int) (w / AndroidUtilities.density), (int) (h / AndroidUtilities.density)); - if (messageObject.photoThumbs.size() > 1) { + if (messageObject.photoThumbs.size() > 1 || messageObject.type == 3 || messageObject.type == 8) { currentPhotoFilter += "_b"; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java index d706ee32c..4e784d62f 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java @@ -214,13 +214,24 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not return false; } } - MessagesController.getInstance().loadChatInfo(currentChat.id); if (chatId > 0) { dialog_id = -chatId; } else { isBraodcast = true; dialog_id = AndroidUtilities.makeBroadcastId(chatId); } + Semaphore semaphore = null; + if (isBraodcast) { + semaphore = new Semaphore(0); + } + MessagesController.getInstance().loadChatInfo(currentChat.id, semaphore); + if (isBraodcast) { + try { + semaphore.acquire(); + } catch (Exception e) { + FileLog.e("tmessages", e); + } + } } else if (userId != 0) { currentUser = MessagesController.getInstance().users.get(userId); if (currentUser == null) { @@ -878,7 +889,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } if (show) { if (pagedownButton.getVisibility() == View.GONE) { - if (android.os.Build.VERSION.SDK_INT >= 12 && animated) { + if (android.os.Build.VERSION.SDK_INT > 13 && animated) { pagedownButton.setVisibility(View.VISIBLE); pagedownButton.setAlpha(0); pagedownButton.animate().alpha(1).setDuration(200).start(); @@ -888,7 +899,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } else { if (pagedownButton.getVisibility() == View.VISIBLE) { - if (android.os.Build.VERSION.SDK_INT >= 12 && animated) { + if (android.os.Build.VERSION.SDK_INT > 13 && animated) { pagedownButton.animate().alpha(0).setDuration(200).setListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { @@ -1902,9 +1913,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (first && messages.size() > 0) { if (last_unread_id != 0) { - MessagesController.getInstance().markDialogAsRead(dialog_id, messages.get(0).messageOwner.id, last_unread_id, 0, last_unread_date, wasUnread); + MessagesController.getInstance().markDialogAsRead(dialog_id, messages.get(0).messageOwner.id, last_unread_id, 0, last_unread_date, wasUnread, false); } else { - MessagesController.getInstance().markDialogAsRead(dialog_id, messages.get(0).messageOwner.id, minMessageId, 0, maxDate, wasUnread); + MessagesController.getInstance().markDialogAsRead(dialog_id, messages.get(0).messageOwner.id, minMessageId, 0, maxDate, wasUnread, false); } first = false; } @@ -1985,7 +1996,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not readWithMid = currentMinMsgId; } else { if (messages.size() > 0) { - MessagesController.getInstance().markDialogAsRead(dialog_id, messages.get(0).messageOwner.id, currentMinMsgId, 0, currentMaxDate, true); + MessagesController.getInstance().markDialogAsRead(dialog_id, messages.get(0).messageOwner.id, currentMinMsgId, 0, currentMaxDate, true, false); } } } @@ -2088,7 +2099,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not readWithDate = maxDate; readWithMid = minMessageId; } else { - MessagesController.getInstance().markDialogAsRead(dialog_id, messages.get(0).messageOwner.id, minMessageId, 0, maxDate, true); + MessagesController.getInstance().markDialogAsRead(dialog_id, messages.get(0).messageOwner.id, minMessageId, 0, maxDate, true, false); } } } @@ -2444,7 +2455,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not messageObject.messageOwner.unread = false; } readWhenResume = false; - MessagesController.getInstance().markDialogAsRead(dialog_id, messages.get(0).messageOwner.id, readWithMid, 0, readWithDate, true); + MessagesController.getInstance().markDialogAsRead(dialog_id, messages.get(0).messageOwner.id, readWithMid, 0, readWithDate, true, false); } fixLayout(true); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileActivity.java index e4179b324..562f9e5a1 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileActivity.java @@ -291,7 +291,7 @@ public class ChatProfileActivity extends BaseFragment implements NotificationCen @Override public void restoreSelfArgs(Bundle args) { - MessagesController.getInstance().loadChatInfo(chat_id); + MessagesController.getInstance().loadChatInfo(chat_id, null); if (avatarUpdater != null) { avatarUpdater.currentPicturePath = args.getString("path"); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LocationActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LocationActivity.java index a31d9eff3..dd754cc25 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LocationActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LocationActivity.java @@ -8,7 +8,9 @@ package org.telegram.ui; +import android.content.Context; import android.location.Location; +import android.location.LocationManager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -39,6 +41,8 @@ import org.telegram.ui.Views.ActionBar.ActionBarMenuItem; import org.telegram.ui.Views.BackupImageView; import org.telegram.ui.Views.ActionBar.BaseFragment; +import java.util.List; + public class LocationActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate { private GoogleMap googleMap; private TextView distanceTextView; @@ -164,8 +168,7 @@ public class LocationActivity extends BaseFragment implements NotificationCenter positionMarker(location); } }); - myLocation = googleMap.getMyLocation(); - + myLocation = getLastLocation(); if (sendButton != null) { userLocation = new Location("network"); @@ -249,6 +252,19 @@ public class LocationActivity extends BaseFragment implements NotificationCenter return fragmentView; } + private Location getLastLocation() { + LocationManager lm = (LocationManager) ApplicationLoader.applicationContext.getSystemService(Context.LOCATION_SERVICE); + List providers = lm.getProviders(true); + Location l = null; + for (int i = providers.size() - 1; i >= 0; i--) { + l = lm.getLastKnownLocation(providers.get(i)); + if (l != null) { + break; + } + } + return l; + } + private void updateUserData() { if (messageObject != null && avatarImageView != null) { int fromId = messageObject.messageOwner.from_id; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LoginActivitySmsView.java b/TMessagesProj/src/main/java/org/telegram/ui/LoginActivitySmsView.java index 450f01b7b..da049ced3 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LoginActivitySmsView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LoginActivitySmsView.java @@ -54,9 +54,12 @@ public class LoginActivitySmsView extends SlideView implements NotificationCente private Bundle currentParams; private Timer timeTimer; + private Timer codeTimer; private static final Integer timerSync = 1; private volatile int time = 60000; + private volatile int codeTime = 15000; private double lastCurrentTime; + private double lastCodeTime; private boolean waitingForSms = false; private boolean nextPressed = false; private String lastError = ""; @@ -162,6 +165,7 @@ public class LoginActivitySmsView extends SlideView implements NotificationCente codeField.requestFocus(); destroyTimer(); + destroyCodeTimer(); timeText.setText(String.format("%s 1:00", LocaleController.getString("CallText", R.string.CallText))); lastCurrentTime = System.currentTimeMillis(); problemText.setVisibility(time < 1000 ? VISIBLE : GONE); @@ -169,6 +173,46 @@ public class LoginActivitySmsView extends SlideView implements NotificationCente createTimer(); } + private void createCodeTimer() { + if (codeTimer != null) { + return; + } + codeTime = 15000; + codeTimer = new Timer(); + lastCodeTime = System.currentTimeMillis(); + codeTimer.schedule(new TimerTask() { + @Override + public void run() { + double currentTime = System.currentTimeMillis(); + double diff = currentTime - lastCodeTime; + codeTime -= diff; + lastCodeTime = currentTime; + Utilities.RunOnUIThread(new Runnable() { + @Override + public void run() { + if (codeTime <= 1000) { + problemText.setVisibility(VISIBLE); + destroyCodeTimer(); + } + } + }); + } + }, 0, 1000); + } + + private void destroyCodeTimer() { + try { + synchronized(timerSync) { + if (codeTimer != null) { + codeTimer.cancel(); + codeTimer = null; + } + } + } catch (Exception e) { + FileLog.e("tmessages", e); + } + } + private void createTimer() { if (timeTimer != null) { return; @@ -189,9 +233,9 @@ public class LoginActivitySmsView extends SlideView implements NotificationCente int seconds = time / 1000 - minutes * 60; timeText.setText(String.format("%s %d:%02d", LocaleController.getString("CallText", R.string.CallText), minutes, seconds)); } else { - problemText.setVisibility(VISIBLE); timeText.setText(LocaleController.getString("Calling", R.string.Calling)); destroyTimer(); + createCodeTimer(); TLRPC.TL_auth_sendCall req = new TLRPC.TL_auth_sendCall(); req.phone_number = requestPhone; req.phone_code_hash = phoneHash; @@ -259,6 +303,7 @@ public class LoginActivitySmsView extends SlideView implements NotificationCente if (error == null) { TLRPC.TL_auth_authorization res = (TLRPC.TL_auth_authorization)response; destroyTimer(); + destroyCodeTimer(); UserConfig.clearConfig(); MessagesController.getInstance().cleanUp(); UserConfig.setCurrentUser(res.user); @@ -280,6 +325,7 @@ public class LoginActivitySmsView extends SlideView implements NotificationCente params.putString("code", req.phone_code); delegate.setPage(2, true, params, false); destroyTimer(); + destroyCodeTimer(); } else { createTimer(); if (error.text.contains("PHONE_NUMBER_INVALID")) { @@ -304,6 +350,7 @@ public class LoginActivitySmsView extends SlideView implements NotificationCente @Override public void onBackPressed() { destroyTimer(); + destroyCodeTimer(); currentParams = null; AndroidUtilities.setWaitingForSms(false); NotificationCenter.getInstance().removeObserver(this, 998); @@ -316,6 +363,7 @@ public class LoginActivitySmsView extends SlideView implements NotificationCente AndroidUtilities.setWaitingForSms(false); NotificationCenter.getInstance().removeObserver(this, 998); destroyTimer(); + destroyCodeTimer(); waitingForSms = false; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PopupNotificationActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/PopupNotificationActivity.java index dc519d780..513cbea4a 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PopupNotificationActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PopupNotificationActivity.java @@ -161,7 +161,7 @@ public class PopupNotificationActivity extends Activity implements NotificationC return; } NotificationsController.getInstance().popupMessages.remove(currentMessageNum); - MessagesController.getInstance().markDialogAsRead(currentMessageObject.getDialogId(), currentMessageObject.messageOwner.id, Math.max(0, currentMessageObject.messageOwner.id), 0, currentMessageObject.messageOwner.date, true); + MessagesController.getInstance().markDialogAsRead(currentMessageObject.getDialogId(), currentMessageObject.messageOwner.id, Math.max(0, currentMessageObject.messageOwner.id), 0, currentMessageObject.messageOwner.date, true, true); currentMessageObject = null; getNewMessage(); } diff --git a/TMessagesProj/src/main/res/values-ar/strings.xml b/TMessagesProj/src/main/res/values-ar/strings.xml index 2547fdfef..adc62664e 100644 --- a/TMessagesProj/src/main/res/values-ar/strings.xml +++ b/TMessagesProj/src/main/res/values-ar/strings.xml @@ -308,7 +308,7 @@ لا توجد صور حتى الآن - Edit Video + تحرير الفيديو Original Video Edited Video