From ab44b870d8333cf61c95c9b8b4fa8ac116384cdf Mon Sep 17 00:00:00 2001 From: DrKLO Date: Thu, 25 Sep 2014 07:54:35 +0400 Subject: [PATCH] Changed small Tablets portrait layout, changes media store path to sdcard/Telegram (need testing) --- TMessagesProj/build.gradle | 2 +- TMessagesProj/jni/video.c | 35 +++-- .../libs/armeabi-v7a/libtmessages.so | Bin 1028848 -> 1028848 bytes TMessagesProj/libs/armeabi/libtmessages.so | Bin 946908 -> 946908 bytes TMessagesProj/libs/x86/libtmessages.so | Bin 1603780 -> 1603780 bytes .../telegram/android/AndroidUtilities.java | 28 ++++ .../org/telegram/android/ImageLoader.java | 59 +++++-- .../org/telegram/android/MediaController.java | 12 +- .../org/telegram/android/MessageObject.java | 12 +- .../telegram/android/MessagesController.java | 6 +- .../org/telegram/android/MessagesStorage.java | 3 +- .../android/NotificationsController.java | 62 ++++++-- .../org/telegram/android/PhotoObject.java | 22 --- .../telegram/android/SendMessagesHelper.java | 59 ++++--- .../telegram/messenger/FileLoadOperation.java | 15 +- .../org/telegram/messenger/FileLoader.java | 144 ++++++++++++++++-- .../org/telegram/messenger/Utilities.java | 2 +- .../org/telegram/ui/Cells/ChatAudioCell.java | 2 +- .../org/telegram/ui/Cells/ChatMediaCell.java | 76 +++++---- .../telegram/ui/Cells/ChatMessageCell.java | 9 +- .../java/org/telegram/ui/ChatActivity.java | 10 +- .../java/org/telegram/ui/LaunchActivity.java | 129 ++++++++++++---- .../java/org/telegram/ui/MediaActivity.java | 4 +- .../java/org/telegram/ui/PhotoViewer.java | 40 +++-- .../ui/PopupNotificationActivity.java | 3 +- .../org/telegram/ui/SettingsActivity.java | 6 +- .../ui/SettingsWallpapersActivity.java | 13 +- .../org/telegram/ui/VideoEditorActivity.java | 83 ++++++++-- .../org/telegram/ui/Views/AvatarUpdater.java | 2 +- .../org/telegram/ui/Views/PopupAudioView.java | 2 +- .../main/res/drawable-hdpi/doc_actions_b.png | Bin 0 -> 1011 bytes .../main/res/drawable-hdpi/doc_actions_g.png | Bin 0 -> 1010 bytes .../main/res/drawable-ldpi/doc_actions_b.png | Bin 0 -> 969 bytes .../main/res/drawable-ldpi/doc_actions_g.png | Bin 0 -> 967 bytes .../main/res/drawable-mdpi/doc_actions_b.png | Bin 0 -> 987 bytes .../main/res/drawable-mdpi/doc_actions_g.png | Bin 0 -> 981 bytes .../main/res/drawable-xhdpi/doc_actions_b.png | Bin 0 -> 1046 bytes .../main/res/drawable-xhdpi/doc_actions_g.png | Bin 0 -> 1045 bytes .../res/drawable-xxhdpi/doc_actions_b.png | Bin 0 -> 1107 bytes .../res/drawable-xxhdpi/doc_actions_g.png | Bin 0 -> 1102 bytes 40 files changed, 589 insertions(+), 251 deletions(-) create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/doc_actions_b.png create mode 100755 TMessagesProj/src/main/res/drawable-hdpi/doc_actions_g.png create mode 100755 TMessagesProj/src/main/res/drawable-ldpi/doc_actions_b.png create mode 100755 TMessagesProj/src/main/res/drawable-ldpi/doc_actions_g.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/doc_actions_b.png create mode 100755 TMessagesProj/src/main/res/drawable-mdpi/doc_actions_g.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/doc_actions_b.png create mode 100755 TMessagesProj/src/main/res/drawable-xhdpi/doc_actions_g.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/doc_actions_b.png create mode 100755 TMessagesProj/src/main/res/drawable-xxhdpi/doc_actions_g.png diff --git a/TMessagesProj/build.gradle b/TMessagesProj/build.gradle index e21615dc1..b3bc04019 100644 --- a/TMessagesProj/build.gradle +++ b/TMessagesProj/build.gradle @@ -80,7 +80,7 @@ android { defaultConfig { minSdkVersion 8 targetSdkVersion 19 - versionCode 328 + versionCode 329 versionName "1.9.0" } } diff --git a/TMessagesProj/jni/video.c b/TMessagesProj/jni/video.c index 17771111c..90c3410e7 100644 --- a/TMessagesProj/jni/video.c +++ b/TMessagesProj/jni/video.c @@ -66,7 +66,7 @@ int isSemiPlanarYUV(int colorFormat) { } } -JNIEXPORT int Java_org_telegram_messenger_Utilities_convertVideoFrame(JNIEnv *env, jclass class, jobject src, jobject dest, int destFormat, int width, int height, int padding) { +JNIEXPORT int Java_org_telegram_messenger_Utilities_convertVideoFrame(JNIEnv *env, jclass class, jobject src, jobject dest, int destFormat, int width, int height, int padding, int swap) { if (!src || !dest || !destFormat) { return 0; } @@ -78,16 +78,31 @@ JNIEXPORT int Java_org_telegram_messenger_Utilities_convertVideoFrame(JNIEnv *en int half_height = (height + 1) / 2; if (!isSemiPlanarYUV(destFormat)) { - ARGBToI420(srcBuff, width * 4, - destBuff, width, - destBuff + width * height + half_width * half_height + padding * 5 / 4, half_width, - destBuff + width * height + padding, half_width, - width, height); + if (!swap) { + ARGBToI420(srcBuff, width * 4, + destBuff, width, + destBuff + width * height + half_width * half_height + padding * 5 / 4, half_width, + destBuff + width * height + padding, half_width, + width, height); + } else { + ARGBToI420(srcBuff, width * 4, + destBuff, width, + destBuff + width * height + padding, half_width, + destBuff + width * height + half_width * half_height + padding * 5 / 4, half_width, + width, height); + } } else { - ARGBToNV21(srcBuff, width * 4, - destBuff, width, - destBuff + width * height + padding, half_width * 2, - width, height); + if (!swap) { + ARGBToNV21(srcBuff, width * 4, + destBuff, width, + destBuff + width * height + padding, half_width * 2, + width, height); + } else { + ARGBToNV12(srcBuff, width * 4, + destBuff, width, + destBuff + width * height + padding, half_width * 2, + width, height); + } } return 1; diff --git a/TMessagesProj/libs/armeabi-v7a/libtmessages.so b/TMessagesProj/libs/armeabi-v7a/libtmessages.so index 96100725e6e67dda01ec04d14cb576d05e3d9a71..57e76551e85a7de3d7194a15661658f7869c371a 100755 GIT binary patch delta 36057 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 j>|l7^VU4HFonv=F6opnvORGj`bzf;1jaHU3 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 LzK;jp4|Dz>IPf3% diff --git a/TMessagesProj/libs/armeabi/libtmessages.so b/TMessagesProj/libs/armeabi/libtmessages.so index 74b229f100c5d92d25fe94808a280fa528f80daa..3397e351faf491d085a1b0c7c7f367bb1ce8b41a 100755 GIT binary patch delta 51657 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

VY?hc~`Y-O+ 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 0) { diff --git a/TMessagesProj/src/main/java/org/telegram/android/ImageLoader.java b/TMessagesProj/src/main/java/org/telegram/android/ImageLoader.java index 818343f03..c8d4627f1 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/ImageLoader.java +++ b/TMessagesProj/src/main/java/org/telegram/android/ImageLoader.java @@ -18,12 +18,14 @@ import android.media.ExifInterface; import android.net.Uri; import android.os.AsyncTask; import android.os.Build; +import android.os.Environment; import android.os.ParcelFileDescriptor; import android.provider.MediaStore; import org.telegram.messenger.DispatchQueue; import org.telegram.messenger.FileLoader; import org.telegram.messenger.FileLog; +import org.telegram.messenger.R; import org.telegram.messenger.TLRPC; import org.telegram.messenger.UserConfig; import org.telegram.messenger.Utilities; @@ -576,12 +578,43 @@ public class ImageLoader { }); } } - - @Override - public File getCacheDir() { - return AndroidUtilities.getCacheDir(); - } }); + + FileLoader.getInstance().setMediaDirs(createMediaPaths()); + } + + private HashMap createMediaPaths() { + HashMap mediaDirs = new HashMap(); + mediaDirs.put(FileLoader.MEDIA_DIR_CACHE, AndroidUtilities.getCacheDir()); + try { + if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) { + File telegramPath = new File(Environment.getExternalStorageDirectory(), LocaleController.getString("AppName", R.string.AppName)); + telegramPath.mkdirs(); + + File imagePath = new File(telegramPath, "Images"); + imagePath.mkdir(); + new File(imagePath, ".nomedia").createNewFile(); + mediaDirs.put(FileLoader.MEDIA_DIR_IMAGE, imagePath); + + File videoPath = new File(telegramPath, "Video"); + videoPath.mkdir(); + new File(videoPath, ".nomedia").createNewFile(); + mediaDirs.put(FileLoader.MEDIA_DIR_VIDEO, videoPath); + + File audioPath = new File(telegramPath, "Audio"); + audioPath.mkdir(); + new File(audioPath, ".nomedia").createNewFile(); + mediaDirs.put(FileLoader.MEDIA_DIR_AUDIO, audioPath); + + File documentPath = new File(telegramPath, "Documents"); + documentPath.mkdir(); + new File(documentPath, ".nomedia").createNewFile(); + mediaDirs.put(FileLoader.MEDIA_DIR_DOCUMENT, documentPath); + } + } catch (Exception e) { + FileLog.e("tmessages", e); + } + return mediaDirs; } private void performReplace(String oldKey, String newKey) { @@ -746,7 +779,12 @@ public class ImageLoader { if (!added) { boolean onlyCache = false; - File cacheFile = new File(AndroidUtilities.getCacheDir(), url); + File cacheFile = null; + if (size == 0 || httpUrl != null || fileLocation != null && fileLocation.key != null) { + cacheFile = new File(FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE), url); + } else { + cacheFile = new File(FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_IMAGE), url); + } if (httpUrl != null) { if (!httpUrl.startsWith("http")) { onlyCache = true; @@ -779,11 +817,12 @@ public class ImageLoader { img.addImageView(imageView); imageLoadingByUrl.put(url, img); if (httpUrl == null) { - FileLoader.getInstance().loadFile(fileLocation, size); + FileLoader.getInstance().loadFile(fileLocation, size, size == 0 || fileLocation.key != null); } else { String file = Utilities.MD5(httpUrl); - img.tempFilePath = new File(AndroidUtilities.getCacheDir(), file + "_temp.jpg"); - img.finalFilePath = new File(AndroidUtilities.getCacheDir(), file + ".jpg"); + File cacheDir = FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE); + img.tempFilePath = new File(cacheDir, file + "_temp.jpg"); + img.finalFilePath = cacheFile; img.httpTask = new HttpTask(img); httpTasks.add(img.httpTask); runHttpTasks(false); @@ -1002,7 +1041,7 @@ public class ImageLoader { try { if (!cache) { String fileName = location.volume_id + "_" + location.local_id + ".jpg"; - final File cacheFile = new File(AndroidUtilities.getCacheDir(), fileName); + final File cacheFile = new File(FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE), fileName); FileOutputStream stream = new FileOutputStream(cacheFile); scaledBitmap.compress(Bitmap.CompressFormat.JPEG, quality, stream); size.size = (int)stream.getChannel().size(); diff --git a/TMessagesProj/src/main/java/org/telegram/android/MediaController.java b/TMessagesProj/src/main/java/org/telegram/android/MediaController.java index 829b29ee8..b97a7add8 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/MediaController.java +++ b/TMessagesProj/src/main/java/org/telegram/android/MediaController.java @@ -591,7 +591,7 @@ public class MediaController implements NotificationCenter.NotificationCenterDel if (downloadObject.object instanceof TLRPC.Audio) { FileLoader.getInstance().loadFile((TLRPC.Audio)downloadObject.object, false); } else if (downloadObject.object instanceof TLRPC.PhotoSize) { - FileLoader.getInstance().loadFile((TLRPC.PhotoSize)downloadObject.object); + FileLoader.getInstance().loadFile((TLRPC.PhotoSize)downloadObject.object, false); } else if (downloadObject.object instanceof TLRPC.Video) { FileLoader.getInstance().loadFile((TLRPC.Video)downloadObject.object); } else if (downloadObject.object instanceof TLRPC.Document) { @@ -1152,7 +1152,7 @@ public class MediaController implements NotificationCenter.NotificationCenterDel return true; } clenupPlayer(true); - final File cacheFile = new File(AndroidUtilities.getCacheDir(), messageObject.getFileName()); + final File cacheFile = FileLoader.getPathToMessage(messageObject.messageOwner); if (isOpusFile(cacheFile.getAbsolutePath()) == 1) { synchronized (playerObjectSync) { @@ -1376,7 +1376,7 @@ public class MediaController implements NotificationCenter.NotificationCenterDel UserConfig.lastLocalId--; UserConfig.saveConfig(false); - recordingAudioFile = new File(AndroidUtilities.getCacheDir(), FileLoader.getAttachFileName(recordingAudio)); + recordingAudioFile = new File(FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE), FileLoader.getAttachFileName(recordingAudio)); try { if (startRecord(recordingAudioFile.getAbsolutePath()) == 0) { @@ -1515,7 +1515,7 @@ public class MediaController implements NotificationCenter.NotificationCenterDel } } if (file == null) { - file = new File(AndroidUtilities.getCacheDir(), path); + file = new File(FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE), path); } final File sourceFile = file; @@ -1647,7 +1647,7 @@ public class MediaController implements NotificationCenter.NotificationCenterDel } } if (cacheFile == null) { - cacheFile = new File(AndroidUtilities.getCacheDir(), messageObject.getFileName()); + cacheFile = FileLoader.getPathToMessage(messageObject.messageOwner); } try { currentGifDrawable = new GifDrawable(cacheFile); @@ -1726,7 +1726,7 @@ public class MediaController implements NotificationCenter.NotificationCenterDel UserConfig.lastLocalId--; parcelFD = ApplicationLoader.applicationContext.getContentResolver().openFileDescriptor(uri, "r"); input = new FileInputStream(parcelFD.getFileDescriptor()); - File f = new File(AndroidUtilities.getCacheDir(), String.format(Locale.US, "%d.%s", id, ext)); + File f = new File(FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE), String.format(Locale.US, "%d.%s", id, ext)); output = new FileOutputStream(f); input.getChannel().transferTo(0, input.getChannel().size(), output.getChannel()); UserConfig.saveConfig(false); diff --git a/TMessagesProj/src/main/java/org/telegram/android/MessageObject.java b/TMessagesProj/src/main/java/org/telegram/android/MessageObject.java index 9dff025bc..16bd5fdee 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/MessageObject.java +++ b/TMessagesProj/src/main/java/org/telegram/android/MessageObject.java @@ -21,7 +21,6 @@ import org.telegram.messenger.FileLog; import org.telegram.messenger.TLRPC; import org.telegram.messenger.R; import org.telegram.messenger.UserConfig; -import org.telegram.messenger.Utilities; import java.util.AbstractMap; import java.util.ArrayList; @@ -418,7 +417,7 @@ public class MessageObject { } else if (messageOwner.media instanceof TLRPC.TL_messageMediaPhoto) { ArrayList sizes = messageOwner.media.photo.sizes; if (sizes.size() > 0) { - TLRPC.PhotoSize sizeFull = PhotoObject.getClosestPhotoSizeWithSize(sizes, 800, 800); + TLRPC.PhotoSize sizeFull = FileLoader.getClosestPhotoSizeWithSize(sizes, 800, 800); if (sizeFull != null) { return FileLoader.getAttachFileName(sizeFull); } @@ -444,15 +443,10 @@ public class MessageObject { int maxWidth; if (AndroidUtilities.isTablet()) { - int min = Math.min(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y); - int leftWidth = min / 100 * 35; - if (leftWidth < AndroidUtilities.dp(320)) { - leftWidth = AndroidUtilities.dp(320); - } if (messageOwner.to_id.chat_id != 0) { - maxWidth = min - leftWidth - AndroidUtilities.dp(122); + maxWidth = AndroidUtilities.getMinTabletSide() - AndroidUtilities.dp(122); } else { - maxWidth = min - leftWidth - AndroidUtilities.dp(80); + maxWidth = AndroidUtilities.getMinTabletSide() - AndroidUtilities.dp(80); } } else { if (messageOwner.to_id.chat_id != 0) { diff --git a/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java b/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java index 072e92da0..419994308 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java +++ b/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java @@ -228,8 +228,8 @@ public class MessagesController implements NotificationCenter.NotificationCenter } TLRPC.TL_photos_photo photo = (TLRPC.TL_photos_photo) response; ArrayList sizes = photo.photo.sizes; - TLRPC.PhotoSize smallSize = PhotoObject.getClosestPhotoSizeWithSize(sizes, 100, 100); - TLRPC.PhotoSize bigSize = PhotoObject.getClosestPhotoSizeWithSize(sizes, 1000, 1000); + TLRPC.PhotoSize smallSize = FileLoader.getClosestPhotoSizeWithSize(sizes, 100, 100); + TLRPC.PhotoSize bigSize = FileLoader.getClosestPhotoSizeWithSize(sizes, 1000, 1000); user.photo = new TLRPC.TL_userProfilePhoto(); user.photo.photo_id = photo.photo.id; if (smallSize != null) { @@ -908,7 +908,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter public void uploadAndApplyUserAvatar(TLRPC.PhotoSize bigPhoto) { if (bigPhoto != null) { - uploadingAvatar = AndroidUtilities.getCacheDir() + "/" + bigPhoto.location.volume_id + "_" + bigPhoto.location.local_id + ".jpg"; + uploadingAvatar = FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE) + "/" + bigPhoto.location.volume_id + "_" + bigPhoto.location.local_id + ".jpg"; FileLoader.getInstance().uploadFile(uploadingAvatar, false, true); } } diff --git a/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java b/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java index 42120c533..17e2008e7 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java +++ b/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java @@ -21,6 +21,7 @@ import org.telegram.messenger.BuffersStorage; import org.telegram.messenger.ByteBufferDesc; import org.telegram.messenger.ConnectionsManager; import org.telegram.messenger.DispatchQueue; +import org.telegram.messenger.FileLoader; import org.telegram.messenger.FileLog; import org.telegram.messenger.TLClassStore; import org.telegram.messenger.TLObject; @@ -2587,7 +2588,7 @@ public class MessagesStorage { } } else if (message.media instanceof TLRPC.TL_messageMediaPhoto) { if ((downloadMask & MediaController.AUTODOWNLOAD_MASK_PHOTO) != 0) { - TLRPC.PhotoSize photoSize = PhotoObject.getClosestPhotoSizeWithSize(message.media.photo.sizes, 800, 800); + TLRPC.PhotoSize photoSize = FileLoader.getClosestPhotoSizeWithSize(message.media.photo.sizes, 800, 800); if (photoSize != null) { id = message.media.photo.id; type = MediaController.AUTODOWNLOAD_MASK_PHOTO; diff --git a/TMessagesProj/src/main/java/org/telegram/android/NotificationsController.java b/TMessagesProj/src/main/java/org/telegram/android/NotificationsController.java index 597a2660a..10e7c3b61 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/NotificationsController.java +++ b/TMessagesProj/src/main/java/org/telegram/android/NotificationsController.java @@ -50,6 +50,7 @@ public class NotificationsController { public ArrayList popupMessages = new ArrayList(); private long openned_dialog_id = 0; private int total_unread_count = 0; + private int personal_count = 0; private boolean notifyCheck = false; private static volatile NotificationsController Instance = null; @@ -73,6 +74,7 @@ public class NotificationsController { public void cleanup() { openned_dialog_id = 0; total_unread_count = 0; + personal_count = 0; pushMessages.clear(); pushMessagesDict.clear(); pushDialogs.clear(); @@ -88,7 +90,7 @@ public class NotificationsController { openned_dialog_id = dialog_id; } - private String getStringForMessage(MessageObject messageObject) { + private String getStringForMessage(MessageObject messageObject, boolean shortMessage) { long dialog_id = messageObject.messageOwner.dialog_id; int chat_id = messageObject.messageOwner.to_id.chat_id; int user_id = messageObject.messageOwner.to_id.user_id; @@ -129,13 +131,17 @@ public class NotificationsController { } else if (messageObject.messageOwner.action instanceof TLRPC.TL_messageActionUserUpdatedPhoto) { msg = LocaleController.formatString("NotificationContactNewPhoto", R.string.NotificationContactNewPhoto, ContactsController.formatName(user.first_name, user.last_name)); } else if (messageObject.messageOwner.action instanceof TLRPC.TL_messageActionLoginUnknownLocation) { - String date = String.format("%s %s %s", LocaleController.formatterYear.format(((long)messageObject.messageOwner.date) * 1000), LocaleController.getString("OtherAt", R.string.OtherAt), LocaleController.formatterDay.format(((long)messageObject.messageOwner.date) * 1000)); + String date = String.format("%s %s %s", LocaleController.formatterYear.format(((long) messageObject.messageOwner.date) * 1000), LocaleController.getString("OtherAt", R.string.OtherAt), LocaleController.formatterDay.format(((long) messageObject.messageOwner.date) * 1000)); msg = LocaleController.formatString("NotificationUnrecognizedDevice", R.string.NotificationUnrecognizedDevice, UserConfig.getCurrentUser().first_name, date, messageObject.messageOwner.action.title, messageObject.messageOwner.action.address); } } else { if (messageObject.messageOwner.media instanceof TLRPC.TL_messageMediaEmpty) { - if (messageObject.messageOwner.message != null && messageObject.messageOwner.message.length() != 0) { - msg = LocaleController.formatString("NotificationMessageText", R.string.NotificationMessageText, ContactsController.formatName(user.first_name, user.last_name), messageObject.messageOwner.message); + if (!shortMessage) { + if (messageObject.messageOwner.message != null && messageObject.messageOwner.message.length() != 0) { + msg = LocaleController.formatString("NotificationMessageText", R.string.NotificationMessageText, ContactsController.formatName(user.first_name, user.last_name), messageObject.messageOwner.message); + } else { + msg = LocaleController.formatString("NotificationMessageNoText", R.string.NotificationMessageNoText, ContactsController.formatName(user.first_name, user.last_name)); + } } else { msg = LocaleController.formatString("NotificationMessageNoText", R.string.NotificationMessageNoText, ContactsController.formatName(user.first_name, user.last_name)); } @@ -191,7 +197,7 @@ public class NotificationsController { } } else { if (messageObject.messageOwner.media instanceof TLRPC.TL_messageMediaEmpty) { - if (messageObject.messageOwner.message != null && messageObject.messageOwner.message.length() != 0) { + if (!shortMessage && messageObject.messageOwner.message != null && messageObject.messageOwner.message.length() != 0) { msg = LocaleController.formatString("NotificationMessageGroupText", R.string.NotificationMessageGroupText, ContactsController.formatName(user.first_name, user.last_name), chat.title, messageObject.messageOwner.message); } else { msg = LocaleController.formatString("NotificationMessageGroupNoText", R.string.NotificationMessageGroupNoText, ContactsController.formatName(user.first_name, user.last_name), chat.title); @@ -221,9 +227,17 @@ public class NotificationsController { } private void scheduleNotificationRepeat() { - PendingIntent pintent = PendingIntent.getService(ApplicationLoader.applicationContext, 0, new Intent(ApplicationLoader.applicationContext, NotificationRepeat.class), 0); - AlarmManager alarm = (AlarmManager) ApplicationLoader.applicationContext.getSystemService(Context.ALARM_SERVICE); - alarm.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 60 * 60 * 1000, pintent); + try { + AlarmManager alarm = (AlarmManager) ApplicationLoader.applicationContext.getSystemService(Context.ALARM_SERVICE); + PendingIntent pintent = PendingIntent.getService(ApplicationLoader.applicationContext, 0, new Intent(ApplicationLoader.applicationContext, NotificationRepeat.class), 0); + if (personal_count > 0) { + alarm.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 60 * 60 * 1000, pintent); + } else { + alarm.cancel(pintent); + } + } catch (Exception e) { + FileLog.e("tmessages", e); + } } protected void repeatNotificationMaybe() { @@ -376,8 +390,10 @@ public class NotificationsController { .setContentIntent(contentIntent); String lastMessage = null; + String lastMessageFull = null; if (pushMessages.size() == 1) { - String message = lastMessage = getStringForMessage(pushMessages.get(0)); + String message = lastMessageFull = getStringForMessage(pushMessages.get(0), false); + lastMessage = getStringForMessage(pushMessages.get(0), true); if (message == null) { return; } @@ -396,12 +412,13 @@ public class NotificationsController { inboxStyle.setBigContentTitle(name); int count = Math.min(10, pushMessages.size()); for (int i = 0; i < count; i++) { - String message = getStringForMessage(pushMessages.get(i)); + String message = getStringForMessage(pushMessages.get(i), false); if (message == null) { continue; } if (i == 0) { - lastMessage = message; + lastMessageFull = message; + lastMessage = getStringForMessage(pushMessages.get(i), true); } if (pushDialogs.size() == 1) { if (replace) { @@ -461,7 +478,7 @@ public class NotificationsController { notificationManager.notify(1, mBuilder.build()); if (preferences.getBoolean("EnablePebbleNotifications", false)) { - sendAlertToPebble(lastMessage); + sendAlertToPebble(lastMessageFull); } scheduleNotificationRepeat(); } catch (Exception e) { @@ -507,6 +524,9 @@ public class NotificationsController { for (Integer id : readMessages) { MessageObject messageObject = pushMessagesDict.get(id); if (messageObject != null) { + if (isPersonalMessage(messageObject)) { + personal_count--; + } pushMessages.remove(messageObject); popupMessages.remove(messageObject); pushMessagesDict.remove(id); @@ -534,6 +554,9 @@ public class NotificationsController { } } if (remove) { + if (isPersonalMessage(messageObject)) { + personal_count--; + } pushMessages.remove(a); popupMessages.remove(messageObject); pushMessagesDict.remove(messageObject.messageOwner.id); @@ -566,6 +589,9 @@ public class NotificationsController { if (dialog_id == openned_dialog_id && ApplicationLoader.isScreenOn) { continue; } + if (isPersonalMessage(messageObject)) { + personal_count++; + } added = true; Boolean value = settingsCache.get(dialog_id); @@ -628,6 +654,9 @@ public class NotificationsController { for (int a = 0; a < pushMessages.size(); a++) { MessageObject messageObject = pushMessages.get(a); if (messageObject.getDialogId() == dialog_id) { + if (isPersonalMessage(messageObject)) { + personal_count--; + } pushMessages.remove(a); a--; pushMessagesDict.remove(messageObject.messageOwner.id); @@ -657,6 +686,7 @@ public class NotificationsController { pushMessages.clear(); pushMessagesDict.clear(); total_unread_count = 0; + personal_count = 0; SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Context.MODE_PRIVATE); HashMap settingsCache = new HashMap(); @@ -681,6 +711,9 @@ public class NotificationsController { continue; } MessageObject messageObject = new MessageObject(message, null, 0); + if (isPersonalMessage(messageObject)) { + personal_count++; + } long dialog_id = messageObject.getDialogId(); Boolean value = settingsCache.get(dialog_id); if (value == null) { @@ -745,4 +778,9 @@ public class NotificationsController { } return null; } + + private boolean isPersonalMessage(MessageObject messageObject) { + return messageObject.messageOwner.to_id != null && messageObject.messageOwner.to_id.chat_id == 0 + && (messageObject.messageOwner.action == null || messageObject.messageOwner.action instanceof TLRPC.TL_messageActionEmpty); + } } diff --git a/TMessagesProj/src/main/java/org/telegram/android/PhotoObject.java b/TMessagesProj/src/main/java/org/telegram/android/PhotoObject.java index eb079ef03..e59ce6b72 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/PhotoObject.java +++ b/TMessagesProj/src/main/java/org/telegram/android/PhotoObject.java @@ -67,26 +67,4 @@ public class PhotoObject { } return closestObject; } - - public static TLRPC.PhotoSize getClosestPhotoSizeWithSize(ArrayList sizes, int width, int height) { - if (sizes == null) { - return null; - } - int closestWidth = 9999; - int closestHeight = 9999; - TLRPC.PhotoSize closestObject = null; - for (TLRPC.PhotoSize obj : sizes) { - if (obj == null) { - continue; - } - int diffW = Math.abs(obj.w - width); - int diffH = Math.abs(obj.h - height); - if (closestObject == null || closestObject instanceof TLRPC.TL_photoCachedSize || closestWidth > diffW || closestHeight > diffH) { - closestObject = obj; - closestWidth = diffW; - closestHeight = diffH; - } - } - return closestObject; - } } diff --git a/TMessagesProj/src/main/java/org/telegram/android/SendMessagesHelper.java b/TMessagesProj/src/main/java/org/telegram/android/SendMessagesHelper.java index 33318a4fc..4d13bab91 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/SendMessagesHelper.java +++ b/TMessagesProj/src/main/java/org/telegram/android/SendMessagesHelper.java @@ -352,7 +352,7 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter type = 2; newMsg.message = "-1"; TLRPC.FileLocation location1 = photo.sizes.get(photo.sizes.size() - 1).location; - newMsg.attachPath = AndroidUtilities.getCacheDir() + "/" + location1.volume_id + "_" + location1.local_id + ".jpg"; + newMsg.attachPath = FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE) + "/" + location1.volume_id + "_" + location1.local_id + ".jpg"; } else if (video != null) { newMsg = new TLRPC.TL_message(); newMsg.media = new TLRPC.TL_messageMediaVideo(); @@ -787,7 +787,7 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter private void performSendDelayedMessage(final DelayedMessage message) { if (message.type == 0) { - String location = AndroidUtilities.getCacheDir() + "/" + message.location.volume_id + "_" + message.location.local_id + ".jpg"; + String location = FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE) + "/" + message.location.volume_id + "_" + message.location.local_id + ".jpg"; putToDelayedMessages(location, message); if (message.sendRequest != null) { FileLoader.getInstance().uploadFile(location, false, true); @@ -803,13 +803,13 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter 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"; + String location = FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE) + "/" + message.location.volume_id + "_" + message.location.local_id + ".jpg"; putToDelayedMessages(location, message); FileLoader.getInstance().uploadFile(location, false, true); } else { String location = message.videoLocation.path; if (location == null) { - location = AndroidUtilities.getCacheDir() + "/" + message.videoLocation.id + ".mp4"; + location = FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE) + "/" + message.videoLocation.id + ".mp4"; } putToDelayedMessages(location, message); if (message.videoLocation.estimatedSize) { @@ -821,7 +821,7 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter } else { String location = message.videoLocation.path; if (location == null) { - location = AndroidUtilities.getCacheDir() + "/" + message.videoLocation.id + ".mp4"; + location = FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE) + "/" + message.videoLocation.id + ".mp4"; } putToDelayedMessages(location, message); if (message.videoLocation.estimatedSize) { @@ -838,7 +838,7 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter 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"; + String location = FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE) + "/" + message.location.volume_id + "_" + message.location.local_id + ".jpg"; putToDelayedMessages(location, message); FileLoader.getInstance().uploadFile(location, false, true); } else { @@ -871,11 +871,10 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter final ArrayList sentMessages = new ArrayList(); if (response instanceof TLRPC.messages_SentMessage) { - TLRPC.TL_messages_sentMessage res = (TLRPC.TL_messages_sentMessage) response; + TLRPC.messages_SentMessage res = (TLRPC.messages_SentMessage) response; newMsgObj.messageOwner.id = res.id; newMsgObj.messageOwner.date = res.date; MessagesController.getInstance().processNewDifferenceParams(res.seq, res.pts, res.date); - //TODO link check } else if (response instanceof TLRPC.messages_StatedMessage) { TLRPC.messages_StatedMessage res = (TLRPC.messages_StatedMessage) response; sentMessages.add(res.message); @@ -1064,8 +1063,8 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter if (fileName.equals(fileName2)) { break; } - File cacheFile = new File(AndroidUtilities.getCacheDir(), fileName + ".jpg"); - File cacheFile2 = new File(AndroidUtilities.getCacheDir(), fileName2 + ".jpg"); + File cacheFile = new File(FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE), fileName + ".jpg"); + File cacheFile2 = FileLoader.getPathToAttach(size); cacheFile.renameTo(cacheFile2); ImageLoader.getInstance().replaceImageInCache(fileName, fileName2); size2.location = size.location; @@ -1086,9 +1085,9 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter String fileName = size2.location.volume_id + "_" + size2.location.local_id; String fileName2 = size.location.volume_id + "_" + size.location.local_id; if (!fileName.equals(fileName2)) { - File cacheFile = new File(AndroidUtilities.getCacheDir(), fileName + ".jpg"); - File cacheFile2 = new File(AndroidUtilities.getCacheDir(), fileName2 + ".jpg"); - boolean result = cacheFile.renameTo(cacheFile2); + File cacheFile = new File(FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE), fileName + ".jpg"); + File cacheFile2 = FileLoader.getPathToAttach(size); + cacheFile.renameTo(cacheFile2); ImageLoader.getInstance().replaceImageInCache(fileName, fileName2); size2.location = size.location; } @@ -1107,16 +1106,16 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter String fileName = size2.location.volume_id + "_" + size2.location.local_id; String fileName2 = size.location.volume_id + "_" + size.location.local_id; if (!fileName.equals(fileName2)) { - File cacheFile = new File(AndroidUtilities.getCacheDir(), fileName + ".jpg"); - File cacheFile2 = new File(AndroidUtilities.getCacheDir(), fileName2 + ".jpg"); - boolean result = cacheFile.renameTo(cacheFile2); + File cacheFile = new File(FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE), fileName + ".jpg"); + File cacheFile2 = FileLoader.getPathToAttach(size); + cacheFile.renameTo(cacheFile2); ImageLoader.getInstance().replaceImageInCache(fileName, fileName2); size2.location = size.location; } } - if (newMsg.attachPath != null && newMsg.attachPath.startsWith(AndroidUtilities.getCacheDir().getAbsolutePath())) { + if (newMsg.attachPath != null && newMsg.attachPath.startsWith(FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE).getAbsolutePath())) { File cacheFile = new File(newMsg.attachPath); - File cacheFile2 = new File(AndroidUtilities.getCacheDir(), FileLoader.getAttachFileName(sentMessage.media.document)); + File cacheFile2 = FileLoader.getPathToAttach(sentMessage.media.document); boolean result = cacheFile.renameTo(cacheFile2); if (result) { newMsg.attachPath = null; @@ -1135,11 +1134,11 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter sentMessage.message = newMsg.message; sentMessage.attachPath = newMsg.attachPath; - String fileName = newMsg.media.audio.dc_id + "_" + newMsg.media.audio.id + ".m4a"; - String fileName2 = sentMessage.media.audio.dc_id + "_" + sentMessage.media.audio.id + ".m4a"; + String fileName = newMsg.media.audio.dc_id + "_" + newMsg.media.audio.id + ".ogg"; + String fileName2 = sentMessage.media.audio.dc_id + "_" + sentMessage.media.audio.id + ".ogg"; if (!fileName.equals(fileName2)) { - File cacheFile = new File(AndroidUtilities.getCacheDir(), fileName); - File cacheFile2 = new File(AndroidUtilities.getCacheDir(), fileName2); + File cacheFile = new File(FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE), fileName); + File cacheFile2 = FileLoader.getPathToAttach(sentMessage.media.audio); cacheFile.renameTo(cacheFile2); } newMsg.media.audio.dc_id = sentMessage.media.audio.dc_id; @@ -1158,8 +1157,8 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter size.location.secret = file.access_hash; size.location.local_id = file.key_fingerprint; String fileName2 = size.location.volume_id + "_" + size.location.local_id; - File cacheFile = new File(AndroidUtilities.getCacheDir(), fileName + ".jpg"); - File cacheFile2 = new File(AndroidUtilities.getCacheDir(), fileName2 + ".jpg"); + File cacheFile = new File(FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE), fileName + ".jpg"); + File cacheFile2 = FileLoader.getPathToAttach(size); boolean result = cacheFile.renameTo(cacheFile2); ImageLoader.getInstance().replaceImageInCache(fileName, fileName2); ArrayList arr = new ArrayList(); @@ -1206,9 +1205,9 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter newMsg.media.document.thumb = document.thumb; newMsg.media.document.dc_id = file.dc_id; - if (document.path != null && document.path.startsWith(AndroidUtilities.getCacheDir().getAbsolutePath())) { + if (document.path != null && document.path.startsWith(FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE).getAbsolutePath())) { File cacheFile = new File(document.path); - File cacheFile2 = new File(AndroidUtilities.getCacheDir(), FileLoader.getAttachFileName(newMsg.media.document)); + File cacheFile2 = FileLoader.getPathToAttach(newMsg.media.document); cacheFile.renameTo(cacheFile2); } @@ -1232,11 +1231,11 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter newMsg.media.audio.path = audio.path; newMsg.media.audio.mime_type = audio.mime_type; - String fileName = audio.dc_id + "_" + audio.id + ".m4a"; - String fileName2 = newMsg.media.audio.dc_id + "_" + newMsg.media.audio.id + ".m4a"; + String fileName = audio.dc_id + "_" + audio.id + ".ogg"; + String fileName2 = newMsg.media.audio.dc_id + "_" + newMsg.media.audio.id + ".ogg"; if (!fileName.equals(fileName2)) { - File cacheFile = new File(AndroidUtilities.getCacheDir(), fileName); - File cacheFile2 = new File(AndroidUtilities.getCacheDir(), fileName2); + File cacheFile = new File(FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE), fileName); + File cacheFile2 = FileLoader.getPathToAttach(newMsg.media.audio); cacheFile.renameTo(cacheFile2); } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java index cb2b2165a..583466a0a 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java @@ -50,6 +50,8 @@ public class FileLoadOperation { private String ext; private RandomAccessFile fileOutputStream; private RandomAccessFile fiv; + private File storePath = null; + private File tempPath = null; public static interface FileLoadOperationDelegate { public abstract void didFinishLoadingFile(FileLoadOperation operation, File finalFile, File tempFile); @@ -113,7 +115,7 @@ public class FileLoadOperation { location.access_hash = audioLocation.access_hash; } totalBytesCount = audioLocation.size; - ext = ".m4a"; + ext = ".ogg"; } public FileLoadOperation(TLRPC.Document documentLocation) { @@ -144,6 +146,11 @@ public class FileLoadOperation { } } + public void setPaths(File store, File temp) { + storePath = store; + tempPath = temp; + } + public void start() { if (state != stateIdle) { return; @@ -186,7 +193,7 @@ public class FileLoadOperation { } } - cacheFileFinal = new File(FileLoader.getInstance().getCacheDir(), fileNameFinal); + cacheFileFinal = new File(storePath, fileNameFinal); boolean exist = cacheFileFinal.exists(); if (exist && totalBytesCount != 0 && totalBytesCount != cacheFileFinal.length()) { exist = false; @@ -194,13 +201,13 @@ public class FileLoadOperation { } if (!cacheFileFinal.exists()) { - cacheFileTemp = new File(FileLoader.getInstance().getCacheDir(), fileNameTemp); + cacheFileTemp = new File(tempPath, fileNameTemp); if (cacheFileTemp.exists()) { downloadedBytes = (int)cacheFileTemp.length(); nextDownloadOffset = downloadedBytes = downloadedBytes / 1024 * 1024; } if (fileNameIv != null) { - cacheIvTemp = new File(FileLoader.getInstance().getCacheDir(), fileNameIv); + cacheIvTemp = new File(tempPath, fileNameIv); try { fiv = new RandomAccessFile(cacheIvTemp, "rws"); long len = cacheIvTemp.length(); diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoader.java b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoader.java index 2fd5369f9..a210d8f14 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoader.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoader.java @@ -9,6 +9,7 @@ package org.telegram.messenger; import java.io.File; +import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedList; import java.util.concurrent.ConcurrentHashMap; @@ -23,10 +24,15 @@ public class FileLoader { public abstract void fileDidLoaded(String location, File finalFile, File tempFile); public abstract void fileDidFailedLoad(String location, boolean canceled); public abstract void fileLoadProgressChanged(String location, float progress); - public abstract File getCacheDir(); } - protected File destinationDir = null; + public static final int MEDIA_DIR_IMAGE = 0; + public static final int MEDIA_DIR_AUDIO = 1; + public static final int MEDIA_DIR_VIDEO = 2; + public static final int MEDIA_DIR_DOCUMENT = 3; + public static final int MEDIA_DIR_CACHE = 4; + + private HashMap mediaDirs = null; private volatile DispatchQueue fileLoaderQueue = new DispatchQueue("fileUploadQueue"); private LinkedList uploadOperationQueue = new LinkedList(); @@ -62,6 +68,18 @@ public class FileLoader { return localInstance; } + public void setMediaDirs(HashMap dirs) { + mediaDirs = dirs; + } + + public File getDirectory(int type) { + File dir = mediaDirs.get(type); + if (dir == null && type != MEDIA_DIR_CACHE) { + return mediaDirs.get(MEDIA_DIR_CACHE); + } + return dir; + } + public void cancelUploadFile(final String location, final boolean enc) { fileLoaderQueue.postRunnable(new Runnable() { @Override @@ -325,26 +343,26 @@ public class FileLoader { } public void loadFile(TLRPC.Video video) { - loadFile(video, null, null, null, 0, false); + loadFile(video, null, null, null, 0, false, video != null && video.key != null); } - public void loadFile(TLRPC.PhotoSize photo) { - loadFile(null, null, null, photo.location, photo.size, false); + public void loadFile(TLRPC.PhotoSize photo, boolean cacheOnly) { + loadFile(null, null, null, photo.location, photo.size, false, cacheOnly || (photo != null && photo.size == 0 || photo.location.key != null)); } public void loadFile(TLRPC.Document document) { - loadFile(null, document, null, null, 0, false); + loadFile(null, document, null, null, 0, false, document != null && document.key != null); } public void loadFile(TLRPC.Audio audio, boolean force) { - loadFile(null, null, audio, null, 0, false); + loadFile(null, null, audio, null, 0, false, audio != null && audio.key != null); } - public void loadFile(TLRPC.FileLocation location, int size) { - loadFile(null, null, null, location, size, true); + public void loadFile(TLRPC.FileLocation location, int size, boolean cacheOnly) { + loadFile(null, null, null, location, size, true, cacheOnly || size == 0 || (location != null && location.key != null)); } - private void loadFile(final TLRPC.Video video, final TLRPC.Document document, final TLRPC.Audio audio, final TLRPC.FileLocation location, final int locationSize, final boolean force) { + private void loadFile(final TLRPC.Video video, final TLRPC.Document document, final TLRPC.Audio audio, final TLRPC.FileLocation location, final int locationSize, final boolean force, final boolean cacheOnly) { fileLoaderQueue.postRunnable(new Runnable() { @Override public void run() { @@ -385,15 +403,31 @@ public class FileLoader { return; } + File tempDir = getDirectory(MEDIA_DIR_CACHE); + File storeDir = tempDir; + if (video != null) { operation = new FileLoadOperation(video); + if (!cacheOnly) { + storeDir = getDirectory(MEDIA_DIR_VIDEO); + } } else if (location != null) { operation = new FileLoadOperation(location, locationSize); + if (!cacheOnly) { + storeDir = getDirectory(MEDIA_DIR_IMAGE); + } } else if (document != null) { operation = new FileLoadOperation(document); + if (!cacheOnly) { + storeDir = getDirectory(MEDIA_DIR_DOCUMENT); + } } else if (audio != null) { operation = new FileLoadOperation(audio); + if (!cacheOnly) { + storeDir = getDirectory(MEDIA_DIR_AUDIO); + } } + operation.setPaths(storeDir, tempDir); final String arg1 = fileName; loadOperationPaths.put(fileName, operation); @@ -532,8 +566,92 @@ public class FileLoader { this.delegate = delegate; } - protected File getCacheDir() { - return delegate == null ? null : delegate.getCacheDir(); + public static File getPathToMessage(TLRPC.Message message) { + if (message == null) { + return new File(""); + } + if (message.media instanceof TLRPC.TL_messageMediaVideo) { + return getPathToAttach(message.media.video); + } else if (message.media instanceof TLRPC.TL_messageMediaDocument) { + return getPathToAttach(message.media.document); + } else if (message.media instanceof TLRPC.TL_messageMediaAudio) { + return getPathToAttach(message.media.audio); + } else if (message.media instanceof TLRPC.TL_messageMediaPhoto) { + ArrayList sizes = message.media.photo.sizes; + if (sizes.size() > 0) { + TLRPC.PhotoSize sizeFull = getClosestPhotoSizeWithSize(sizes, 800, 800); + if (sizeFull != null) { + return getPathToAttach(sizeFull); + } + } + } + return new File(""); + } + + public static File getPathToAttach(TLObject attach) { + File dir = null; + if (attach instanceof TLRPC.Video) { + TLRPC.Video video = (TLRPC.Video)attach; + if (video.key != null) { + dir = getInstance().getDirectory(MEDIA_DIR_CACHE); + } else { + dir = getInstance().getDirectory(MEDIA_DIR_VIDEO); + } + } else if (attach instanceof TLRPC.Document) { + TLRPC.Document document = (TLRPC.Document)attach; + if (document.key != null) { + dir = getInstance().getDirectory(MEDIA_DIR_CACHE); + } else { + dir = getInstance().getDirectory(MEDIA_DIR_DOCUMENT); + } + } else if (attach instanceof TLRPC.PhotoSize) { + TLRPC.PhotoSize photoSize = (TLRPC.PhotoSize)attach; + if (photoSize.location == null || photoSize.location.key != null) { + dir = getInstance().getDirectory(MEDIA_DIR_CACHE); + } else { + dir = getInstance().getDirectory(MEDIA_DIR_IMAGE); + } + } else if (attach instanceof TLRPC.Audio) { + TLRPC.Audio audio = (TLRPC.Audio)attach; + if (audio.key != null) { + dir = getInstance().getDirectory(MEDIA_DIR_CACHE); + } else { + dir = getInstance().getDirectory(MEDIA_DIR_AUDIO); + } + } else if (attach instanceof TLRPC.FileLocation) { + TLRPC.FileLocation fileLocation = (TLRPC.FileLocation)attach; + if (fileLocation.key != null) { + dir = getInstance().getDirectory(MEDIA_DIR_CACHE); + } else { + dir = getInstance().getDirectory(MEDIA_DIR_IMAGE); + } + } + if (dir == null) { + return new File(""); + } + return new File(dir, getAttachFileName(attach)); + } + + public static TLRPC.PhotoSize getClosestPhotoSizeWithSize(ArrayList sizes, int width, int height) { + if (sizes == null) { + return null; + } + int closestWidth = 9999; + int closestHeight = 9999; + TLRPC.PhotoSize closestObject = null; + for (TLRPC.PhotoSize obj : sizes) { + if (obj == null) { + continue; + } + int diffW = Math.abs(obj.w - width); + int diffH = Math.abs(obj.h - height); + if (closestObject == null || closestObject instanceof TLRPC.TL_photoCachedSize || closestWidth > diffW || closestHeight > diffH) { + closestObject = obj; + closestWidth = diffW; + closestHeight = diffH; + } + } + return closestObject; } public static String getAttachFileName(TLObject attach) { @@ -562,7 +680,7 @@ public class FileLoader { return photo.location.volume_id + "_" + photo.location.local_id + ".jpg"; } else if (attach instanceof TLRPC.Audio) { TLRPC.Audio audio = (TLRPC.Audio)attach; - return audio.dc_id + "_" + audio.id + ".m4a"; + return audio.dc_id + "_" + audio.id + ".ogg"; } else if (attach instanceof TLRPC.FileLocation) { TLRPC.FileLocation location = (TLRPC.FileLocation)attach; return location.volume_id + "_" + location.local_id + ".jpg"; diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/Utilities.java b/TMessagesProj/src/main/java/org/telegram/messenger/Utilities.java index ee8f2da23..41247b7f4 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/Utilities.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/Utilities.java @@ -113,7 +113,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); - public native static int convertVideoFrame(ByteBuffer src, ByteBuffer dest, int destFormat, int width, int height, int padding); + public native static int convertVideoFrame(ByteBuffer src, ByteBuffer dest, int destFormat, int width, int height, int padding, int swap); 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) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatAudioCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatAudioCell.java index f231ecec0..fba3f0ccb 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatAudioCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatAudioCell.java @@ -217,7 +217,7 @@ public class ChatAudioCell extends ChatBaseCell implements SeekBar.SeekBarDelega public void updateButtonState() { String fileName = currentMessageObject.getFileName(); - File cacheFile = new File(AndroidUtilities.getCacheDir(), fileName); + File cacheFile = FileLoader.getPathToMessage(currentMessageObject.messageOwner); if (cacheFile.exists()) { MediaController.getInstance().removeLoadingFileObserver(this); boolean playing = MediaController.getInstance().isPlayingAudio(currentMessageObject); 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 23afcd462..5de930456 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMediaCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMediaCell.java @@ -49,6 +49,8 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD private static Drawable placeholderDocInDrawable; private static Drawable placeholderDocOutDrawable; private static Drawable videoIconDrawable; + private static Drawable docMenuInDrawable; + private static Drawable docMenuOutDrawable; private static Drawable[] buttonStatesDrawables = new Drawable[4]; private static Drawable[][] buttonStatesDrawablesDoc = new Drawable[2][2]; private static TextPaint infoPaint; @@ -56,7 +58,6 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD private static TextPaint namePaint; private static Paint docBackPaint; private static Paint progressPaint; - private static Paint progressBackgroundPaint; private static DecelerateInterpolator decelerateInterpolator; private GifDrawable gifDrawable = null; @@ -116,6 +117,8 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD buttonStatesDrawablesDoc[0][1] = getResources().getDrawable(R.drawable.docload_g); buttonStatesDrawablesDoc[1][1] = getResources().getDrawable(R.drawable.doccancel_g); videoIconDrawable = getResources().getDrawable(R.drawable.ic_video); + docMenuInDrawable = getResources().getDrawable(R.drawable.doc_actions_b); + docMenuOutDrawable = getResources().getDrawable(R.drawable.doc_actions_g); infoPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); infoPaint.setTextSize(AndroidUtilities.dp(12)); @@ -131,10 +134,6 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD progressPaint.setStrokeWidth(AndroidUtilities.dp(2)); decelerateInterpolator = new DecelerateInterpolator(); - - progressBackgroundPaint = new Paint(Paint.ANTI_ALIAS_FLAG); - progressBackgroundPaint.setStyle(Paint.Style.STROKE); - progressBackgroundPaint.setStrokeWidth(AndroidUtilities.dp(2)); } TAG = MediaController.getInstance().generateObserverTag(); @@ -178,9 +177,18 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD buttonPressed = 1; invalidate(); result = true; - } else if (x >= photoImage.getImageX() && x <= photoImage.getImageX() + backgroundWidth && y >= photoImage.getImageY() && y <= photoImage.getImageY() + photoImage.getImageHeight()) { - imagePressed = true; - result = true; + } else { + if (currentMessageObject.type == 9) { + if (x >= photoImage.getImageX() && x <= photoImage.getImageX() + backgroundWidth - AndroidUtilities.dp(50) && y >= photoImage.getImageY() && y <= photoImage.getImageY() + photoImage.getImageHeight()) { + imagePressed = true; + result = true; + } + } else { + if (x >= photoImage.getImageX() && x <= photoImage.getImageX() + backgroundWidth && y >= photoImage.getImageY() && y <= photoImage.getImageY() + photoImage.getImageHeight()) { + imagePressed = true; + result = true; + } + } } if (result) { startCheckLongPress(); @@ -336,9 +344,8 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD } } else if (currentPhotoObject == null) { return true; - } else if (currentPhotoObject != null && photoNotSet) { - String fileName = FileLoader.getAttachFileName(currentPhotoObject.photoOwner); - File cacheFile = new File(AndroidUtilities.getCacheDir(), fileName); + } else if (currentMessageObject != null && photoNotSet) { + File cacheFile = FileLoader.getPathToMessage(currentMessageObject.messageOwner); if (cacheFile.exists()) { return true; } @@ -367,12 +374,7 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD } int maxWidth; if (AndroidUtilities.isTablet()) { - int min = Math.min(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y); - int leftWidth = min / 100 * 35; - if (leftWidth < AndroidUtilities.dp(320)) { - leftWidth = AndroidUtilities.dp(320); - } - maxWidth = min - leftWidth - AndroidUtilities.dp(122 + 86 + 24); + maxWidth = AndroidUtilities.getMinTabletSide() - AndroidUtilities.dp(122 + 86 + 24); } else { maxWidth = Math.min(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y) - AndroidUtilities.dp(122 + 86 + 24); } @@ -438,14 +440,14 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD if (messageObject.type == 9) { photoWidth = AndroidUtilities.dp(86); photoHeight = AndroidUtilities.dp(86); - backgroundWidth = photoWidth + Math.max(nameWidth, infoWidth) + AndroidUtilities.dp(40); + backgroundWidth = photoWidth + Math.max(nameWidth, infoWidth) + AndroidUtilities.dp(68); currentPhotoObject = PhotoObject.getClosestImageWithSize(messageObject.photoThumbs, 800, 800); if (currentPhotoObject != null) { if (currentPhotoObject.image != null) { photoImage.setImageBitmap(currentPhotoObject.image); } else { currentPhotoFilter = String.format(Locale.US, "%d_%d_b", photoWidth, photoHeight); - photoImage.setImage(currentPhotoObject.photoOwner.location, currentPhotoFilter, null, currentPhotoObject.photoOwner.size); + photoImage.setImage(currentPhotoObject.photoOwner.location, currentPhotoFilter, null, 0); } } else { photoImage.setImageBitmap((BitmapDrawable)null); @@ -461,12 +463,7 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD photoImage.setImage(currentUrl, null, messageObject.isOut() ? placeholderOutDrawable : placeholderInDrawable); } else { if (AndroidUtilities.isTablet()) { - int min = Math.min(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y); - int leftWidth = min / 100 * 35; - if (leftWidth < AndroidUtilities.dp(320)) { - leftWidth = AndroidUtilities.dp(320); - } - photoWidth = (int)((min - leftWidth) * 0.7f); + photoWidth = (int) (AndroidUtilities.getMinTabletSide() * 0.7f); } else { photoWidth = (int) (Math.min(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y) * 0.7f); } @@ -481,6 +478,10 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD currentPhotoObject = PhotoObject.getClosestImageWithSize(messageObject.photoThumbs, 800, 800); if (currentPhotoObject != null) { + boolean noSize = false; + if (currentMessageObject.type == 3 || currentMessageObject.type == 8) { + noSize = true; + } float scale = (float) currentPhotoObject.photoOwner.w / (float) photoWidth; int w = (int) (currentPhotoObject.photoOwner.w / scale); @@ -526,7 +527,7 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD boolean photoExist = true; String fileName = FileLoader.getAttachFileName(currentPhotoObject.photoOwner); if (messageObject.type == 1) { - File cacheFile = new File(AndroidUtilities.getCacheDir(), fileName); + File cacheFile = FileLoader.getPathToMessage(currentMessageObject.messageOwner); if (!cacheFile.exists()) { photoExist = false; } else { @@ -535,9 +536,9 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD } if (photoExist || MediaController.getInstance().canDownloadMedia(MediaController.AUTODOWNLOAD_MASK_PHOTO)) { if (messageObject.imagePreview != null) { - photoImage.setImage(currentPhotoObject.photoOwner.location, currentPhotoFilter, new BitmapDrawable(messageObject.imagePreview), currentPhotoObject.photoOwner.size); + photoImage.setImage(currentPhotoObject.photoOwner.location, currentPhotoFilter, new BitmapDrawable(messageObject.imagePreview), noSize ? 0 : currentPhotoObject.photoOwner.size); } else { - photoImage.setImage(currentPhotoObject.photoOwner.location, currentPhotoFilter, messageObject.isOut() ? placeholderOutDrawable : placeholderInDrawable, currentPhotoObject.photoOwner.size); + photoImage.setImage(currentPhotoObject.photoOwner.location, currentPhotoFilter, messageObject.isOut() ? placeholderOutDrawable : placeholderInDrawable, noSize ? 0 : currentPhotoObject.photoOwner.size); } } else { photoNotSet = true; @@ -570,7 +571,7 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD return; } fileName = FileLoader.getAttachFileName(currentPhotoObject.photoOwner); - cacheFile = new File(AndroidUtilities.getCacheDir(), fileName); + cacheFile = FileLoader.getPathToMessage(currentMessageObject.messageOwner); } else if (currentMessageObject.type == 8 || currentMessageObject.type == 3 || currentMessageObject.type == 9) { if (currentMessageObject.messageOwner.attachPath != null && currentMessageObject.messageOwner.attachPath.length() != 0) { File f = new File(currentMessageObject.messageOwner.attachPath); @@ -581,7 +582,7 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD } if (fileName == null) { fileName = currentMessageObject.getFileName(); - cacheFile = new File(AndroidUtilities.getCacheDir(), fileName); + cacheFile = FileLoader.getPathToMessage(currentMessageObject.messageOwner); } } if (fileName == null) { @@ -734,16 +735,21 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD } - boolean needProgressBackground = false; if (currentMessageObject.type == 9) { + Drawable menuDrawable = null; if (currentMessageObject.isOut()) { infoPaint.setColor(0xff75b166); docBackPaint.setColor(0xffd0f3b3); + menuDrawable = docMenuOutDrawable; } else { infoPaint.setColor(0xffa1adbb); docBackPaint.setColor(0xffebf0f5); + menuDrawable = docMenuInDrawable; } + setDrawableBounds(menuDrawable, photoImage.getImageX() + backgroundWidth - AndroidUtilities.dp(50), AndroidUtilities.dp(10)); + menuDrawable.draw(canvas); + if (!imageDrawn) { canvas.drawRect(photoImage.getImageX(), photoImage.getImageY(), photoImage.getImageX() + photoImage.getImageWidth(), photoImage.getImageY() + photoImage.getImageHeight(), docBackPaint); @@ -754,20 +760,15 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD } if (currentMessageObject.isOut()) { progressPaint.setColor(0xff81bd72); - progressBackgroundPaint.setColor(0xffbae4a2); } else { progressPaint.setColor(0xffadbdcc); - progressBackgroundPaint.setColor(0xffd5dee7); } - needProgressBackground = true; } else { progressPaint.setColor(0xffffffff); - needProgressBackground = false; } } else { progressPaint.setColor(0xffffffff); - needProgressBackground = false; } if (buttonState >= 0 && buttonState < 4) { @@ -782,9 +783,6 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD } if (progressVisible) { - if (needProgressBackground) { - canvas.drawArc(progressRect, 0, 360, false, progressBackgroundPaint); - } canvas.drawArc(progressRect, -90 + radOffset, Math.max(4, 360 * animatedProgressValue), false, progressPaint); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMessageCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMessageCell.java index f91dcb4e0..7a9e7bbc8 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMessageCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMessageCell.java @@ -133,16 +133,11 @@ public class ChatMessageCell extends ChatBaseCell { int maxWidth; if (AndroidUtilities.isTablet()) { - int min = Math.min(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y); - int leftWidth = min / 100 * 35; - if (leftWidth < AndroidUtilities.dp(320)) { - leftWidth = AndroidUtilities.dp(320); - } if (isChat && !messageObject.isOut()) { - maxWidth = min - leftWidth - AndroidUtilities.dp(122); + maxWidth = AndroidUtilities.getMinTabletSide() - AndroidUtilities.dp(122); drawName = true; } else { - maxWidth = min - leftWidth - AndroidUtilities.dp(80); + maxWidth = AndroidUtilities.getMinTabletSide() - AndroidUtilities.dp(80); drawName = false; } } else { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java index 41bee33df..4119d0622 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java @@ -1104,7 +1104,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } if (!canSave) { - File f = new File(AndroidUtilities.getCacheDir(), messageObject.getFileName()); + File f = FileLoader.getPathToMessage(messageObject.messageOwner); if (f.exists()) { canSave = true; } @@ -1152,7 +1152,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } if (!canSave) { - File f = new File(AndroidUtilities.getCacheDir(), messageObject.getFileName()); + File f = FileLoader.getPathToMessage(messageObject.messageOwner); if (f.exists()) { canSave = true; } @@ -2855,7 +2855,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } } if (locFile == null) { - File f = new File(AndroidUtilities.getCacheDir(), selectedObject.getFileName()); + File f = FileLoader.getPathToMessage(selectedObject.messageOwner); if (f.exists()) { locFile = f; } @@ -3316,7 +3316,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not f = new File(message.messageOwner.attachPath); } if (f == null || f != null && !f.exists()) { - f = new File(AndroidUtilities.getCacheDir(), message.getFileName()); + f = FileLoader.getPathToMessage(message.messageOwner); } Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(f), "video/mp4"); @@ -3338,7 +3338,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not f = new File(message.messageOwner.attachPath); } if (f == null || f != null && !f.exists()) { - f = new File(AndroidUtilities.getCacheDir(), fileName); + f = FileLoader.getPathToMessage(message.messageOwner); } if (f != null && f.exists()) { String realMimeType = null; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java index abfc24331..a67f2c0e0 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java @@ -12,6 +12,7 @@ import android.app.Activity; import android.content.ContentResolver; import android.content.Intent; import android.content.SharedPreferences; +import android.content.res.Configuration; import android.database.Cursor; import android.net.Uri; import android.os.Build; @@ -25,6 +26,7 @@ import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.view.Window; import android.widget.FrameLayout; +import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; @@ -69,6 +71,8 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa private FrameLayout shadowTablet = null; private LinearLayout buttonLayoutTablet = null; private FrameLayout shadowTabletSide = null; + private ImageView backgroundTablet = null; + private boolean tabletFullSize = false; @Override protected void onCreate(Bundle savedInstanceState) { @@ -106,6 +110,7 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa shadowTablet = (FrameLayout)findViewById(R.id.shadow_tablet); buttonLayoutTablet = (LinearLayout)findViewById(R.id.launch_button_layout); shadowTabletSide = (FrameLayout)findViewById(R.id.shadow_tablet_side); + backgroundTablet = (ImageView)findViewById(R.id.launch_background); shadowTablet.setOnTouchListener(new View.OnTouchListener() { @Override @@ -144,8 +149,6 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa rightActionBarLayout.setLayoutParams(relativeLayoutParams); rightActionBarLayout.init(rightFragmentsStack); rightActionBarLayout.setDelegate(this); - rightActionBarLayout.setVisibility(rightFragmentsStack.isEmpty() ? View.GONE : View.VISIBLE); - buttonLayoutTablet.setVisibility(rightFragmentsStack.isEmpty() ? View.VISIBLE : View.GONE); TextView button = (TextView)findViewById(R.id.new_group_button); button.setText(LocaleController.getString("NewGroup", R.string.NewGroup)); @@ -649,31 +652,65 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa public void needLayout() { if (AndroidUtilities.isTablet()) { - int leftWidth = AndroidUtilities.displaySize.x / 100 * 35; - if (leftWidth < AndroidUtilities.dp(320)) { - leftWidth = AndroidUtilities.dp(320); + if (!AndroidUtilities.isSmallTablet() || getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { + tabletFullSize = false; + int leftWidth = AndroidUtilities.displaySize.x / 100 * 35; + if (leftWidth < AndroidUtilities.dp(320)) { + leftWidth = AndroidUtilities.dp(320); + } + + RelativeLayout.LayoutParams relativeLayoutParams = (RelativeLayout.LayoutParams) actionBarLayout.getLayoutParams(); + relativeLayoutParams.width = leftWidth; + relativeLayoutParams.height = RelativeLayout.LayoutParams.MATCH_PARENT; + actionBarLayout.setLayoutParams(relativeLayoutParams); + + relativeLayoutParams = (RelativeLayout.LayoutParams) shadowTabletSide.getLayoutParams(); + relativeLayoutParams.leftMargin = leftWidth; + shadowTabletSide.setLayoutParams(relativeLayoutParams); + + relativeLayoutParams = (RelativeLayout.LayoutParams) rightActionBarLayout.getLayoutParams(); + relativeLayoutParams.width = AndroidUtilities.displaySize.x - leftWidth; + relativeLayoutParams.height = RelativeLayout.LayoutParams.MATCH_PARENT; + relativeLayoutParams.leftMargin = leftWidth; + rightActionBarLayout.setLayoutParams(relativeLayoutParams); + + relativeLayoutParams = (RelativeLayout.LayoutParams) buttonLayoutTablet.getLayoutParams(); + relativeLayoutParams.width = AndroidUtilities.displaySize.x - leftWidth; + relativeLayoutParams.height = RelativeLayout.LayoutParams.WRAP_CONTENT; + relativeLayoutParams.leftMargin = leftWidth; + buttonLayoutTablet.setLayoutParams(relativeLayoutParams); + + if (AndroidUtilities.isSmallTablet() && mainFragmentsStack.size() == 2) { + BaseFragment chatFragment = mainFragmentsStack.get(1); + mainFragmentsStack.remove(1); + actionBarLayout.showLastFragment(); + rightFragmentsStack.add(chatFragment); + rightActionBarLayout.showLastFragment(); + } + + rightActionBarLayout.setVisibility(rightFragmentsStack.isEmpty() ? View.GONE : View.VISIBLE); + buttonLayoutTablet.setVisibility(!mainFragmentsStack.isEmpty() && rightFragmentsStack.isEmpty() ? View.VISIBLE : View.GONE); + backgroundTablet.setVisibility(rightFragmentsStack.isEmpty() ? View.VISIBLE : View.GONE); + shadowTabletSide.setVisibility(!mainFragmentsStack.isEmpty() ? View.VISIBLE : View.GONE); + } else { + tabletFullSize = true; + + RelativeLayout.LayoutParams relativeLayoutParams = (RelativeLayout.LayoutParams) actionBarLayout.getLayoutParams(); + relativeLayoutParams.width = RelativeLayout.LayoutParams.MATCH_PARENT; + relativeLayoutParams.height = RelativeLayout.LayoutParams.MATCH_PARENT; + actionBarLayout.setLayoutParams(relativeLayoutParams); + + shadowTabletSide.setVisibility(View.GONE); + rightActionBarLayout.setVisibility(View.GONE); + backgroundTablet.setVisibility(View.GONE); + buttonLayoutTablet.setVisibility(View.GONE); + + if (rightFragmentsStack.size() == 1) { + BaseFragment chatFragment = rightFragmentsStack.get(0); + rightFragmentsStack.remove(0); + actionBarLayout.presentFragment(chatFragment, false, true); + } } - - RelativeLayout.LayoutParams relativeLayoutParams = (RelativeLayout.LayoutParams) actionBarLayout.getLayoutParams(); - relativeLayoutParams.width = leftWidth; - relativeLayoutParams.height = RelativeLayout.LayoutParams.MATCH_PARENT; - actionBarLayout.setLayoutParams(relativeLayoutParams); - - relativeLayoutParams = (RelativeLayout.LayoutParams) shadowTabletSide.getLayoutParams(); - relativeLayoutParams.leftMargin = leftWidth; - shadowTabletSide.setLayoutParams(relativeLayoutParams); - - relativeLayoutParams = (RelativeLayout.LayoutParams) rightActionBarLayout.getLayoutParams(); - relativeLayoutParams.width = AndroidUtilities.displaySize.x - leftWidth; - relativeLayoutParams.height = RelativeLayout.LayoutParams.MATCH_PARENT; - relativeLayoutParams.leftMargin = leftWidth; - rightActionBarLayout.setLayoutParams(relativeLayoutParams); - - relativeLayoutParams = (RelativeLayout.LayoutParams) buttonLayoutTablet.getLayoutParams(); - relativeLayoutParams.width = AndroidUtilities.displaySize.x - leftWidth; - relativeLayoutParams.height = RelativeLayout.LayoutParams.WRAP_CONTENT; - relativeLayoutParams.leftMargin = leftWidth; - buttonLayoutTablet.setLayoutParams(relativeLayoutParams); } } @@ -909,26 +946,39 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa actionBarLayout.presentFragment(fragment, removeLast, forceWithoutAnimation); layersActionBarLayout.removeAllFragments(); layersActionBarLayout.setVisibility(View.GONE); - if (rightFragmentsStack.isEmpty()) { - buttonLayoutTablet.setVisibility(View.VISIBLE); + if (!tabletFullSize) { + shadowTabletSide.setVisibility(View.VISIBLE); + if (rightFragmentsStack.isEmpty()) { + buttonLayoutTablet.setVisibility(View.VISIBLE); + backgroundTablet.setVisibility(View.VISIBLE); + } } return false; } } else if (fragment instanceof ChatActivity) { - if (layout != rightActionBarLayout) { + if (!tabletFullSize && layout != rightActionBarLayout) { rightActionBarLayout.setVisibility(View.VISIBLE); buttonLayoutTablet.setVisibility(View.GONE); + backgroundTablet.setVisibility(View.GONE); rightActionBarLayout.removeAllFragments(); rightActionBarLayout.presentFragment(fragment, removeLast, true); if (removeLast) { layout.closeLastFragment(true); } return false; + } else if (tabletFullSize && layout != actionBarLayout) { + actionBarLayout.presentFragment(fragment, false, forceWithoutAnimation); + if (removeLast) { + layout.closeLastFragment(true); + } + return false; } } else if (layout != layersActionBarLayout) { layersActionBarLayout.setVisibility(View.VISIBLE); if (fragment instanceof LoginActivity) { buttonLayoutTablet.setVisibility(View.GONE); + backgroundTablet.setVisibility(View.VISIBLE); + shadowTabletSide.setVisibility(View.GONE); shadowTablet.setBackgroundColor(0x00000000); } else { shadowTablet.setBackgroundColor(0x7F000000); @@ -952,23 +1002,33 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa actionBarLayout.addFragmentToStack(fragment); layersActionBarLayout.removeAllFragments(); layersActionBarLayout.setVisibility(View.GONE); - if (rightFragmentsStack.isEmpty()) { - buttonLayoutTablet.setVisibility(View.VISIBLE); + if (!tabletFullSize) { + shadowTabletSide.setVisibility(View.VISIBLE); + if (rightFragmentsStack.isEmpty()) { + buttonLayoutTablet.setVisibility(View.VISIBLE); + backgroundTablet.setVisibility(View.VISIBLE); + } } return false; } } else if (fragment instanceof ChatActivity) { - if (layout != rightActionBarLayout) { + if (!tabletFullSize && layout != rightActionBarLayout) { rightActionBarLayout.setVisibility(View.VISIBLE); buttonLayoutTablet.setVisibility(View.GONE); + backgroundTablet.setVisibility(View.GONE); rightActionBarLayout.removeAllFragments(); rightActionBarLayout.addFragmentToStack(fragment); return false; + } else if (tabletFullSize && layout != actionBarLayout) { + actionBarLayout.addFragmentToStack(fragment); + return false; } } else if (layout != layersActionBarLayout) { layersActionBarLayout.setVisibility(View.VISIBLE); if (fragment instanceof LoginActivity) { buttonLayoutTablet.setVisibility(View.GONE); + backgroundTablet.setVisibility(View.VISIBLE); + shadowTabletSide.setVisibility(View.GONE); shadowTablet.setBackgroundColor(0x00000000); } else { shadowTablet.setBackgroundColor(0x7F000000); @@ -990,7 +1050,10 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa finish(); return false; } else if (layout == rightActionBarLayout) { - buttonLayoutTablet.setVisibility(View.VISIBLE); + if (!tabletFullSize) { + buttonLayoutTablet.setVisibility(View.VISIBLE); + backgroundTablet.setVisibility(View.VISIBLE); + } } } else { if (layout.fragmentsStack.size() <= 1) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/MediaActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/MediaActivity.java index da71c6f4c..613b7e7d2 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/MediaActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/MediaActivity.java @@ -25,12 +25,12 @@ import android.widget.TextView; import org.telegram.android.AndroidUtilities; import org.telegram.android.LocaleController; +import org.telegram.messenger.FileLoader; import org.telegram.messenger.TLRPC; import org.telegram.android.MessageObject; import org.telegram.android.MessagesController; import org.telegram.android.NotificationCenter; import org.telegram.messenger.R; -import org.telegram.android.PhotoObject; import org.telegram.ui.Adapters.BaseFragmentAdapter; import org.telegram.ui.Views.ActionBar.ActionBarLayer; import org.telegram.ui.Views.BackupImageView; @@ -413,7 +413,7 @@ public class MediaActivity extends BaseFragment implements NotificationCenter.No if (message.imagePreview != null) { imageView.setImageBitmap(message.imagePreview); } else { - TLRPC.PhotoSize photoSize = PhotoObject.getClosestPhotoSizeWithSize(message.messageOwner.media.photo.sizes, 80, 80); + TLRPC.PhotoSize photoSize = FileLoader.getClosestPhotoSizeWithSize(message.messageOwner.media.photo.sizes, 80, 80); imageView.setImage(photoSize.location, null, R.drawable.photo_placeholder_in); } } else { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java b/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java index 686abc463..15c7a5811 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java @@ -61,7 +61,6 @@ import org.telegram.messenger.TLRPC; import org.telegram.messenger.UserConfig; import org.telegram.messenger.Utilities; import org.telegram.android.MessageObject; -import org.telegram.android.PhotoObject; import org.telegram.ui.Views.ActionBar.ActionBar; import org.telegram.ui.Views.ActionBar.ActionBarLayer; import org.telegram.ui.Views.ActionBar.ActionBarMenu; @@ -336,7 +335,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if (photo instanceof TLRPC.TL_photoEmpty || photo.sizes == null) { continue; } - TLRPC.PhotoSize sizeFull = PhotoObject.getClosestPhotoSizeWithSize(photo.sizes, 640, 640); + TLRPC.PhotoSize sizeFull = FileLoader.getClosestPhotoSizeWithSize(photo.sizes, 640, 640); if (sizeFull != null) { if (currentFileLocation != null) { for (TLRPC.PhotoSize size : photo.sizes) { @@ -561,8 +560,13 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat @Override public boolean canOpenMenu() { - if (currentFileName != null) { - File f = new File(AndroidUtilities.getCacheDir(), currentFileName); + if (currentMessageObject != null) { + File f = FileLoader.getPathToMessage(currentMessageObject.messageOwner); + if (f.exists()) { + return true; + } + } else if (currentFileLocation != null) { + File f = FileLoader.getPathToAttach(currentFileLocation); if (f.exists()) { return true; } @@ -601,14 +605,15 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat return; } try { - String fileName = getFileName(currentIndex, null); - if (fileName == null) { + int size[] = new int[1]; + TLRPC.FileLocation fileLocation = getFileLocation(currentIndex, size); + if (fileLocation == null) { return; } - File f = new File(AndroidUtilities.getCacheDir(), fileName); + File f = FileLoader.getPathToAttach(fileLocation); if (f.exists()) { Intent intent = new Intent(Intent.ACTION_SEND); - if (fileName.endsWith("mp4")) { + if (f.toString().endsWith("mp4")) { intent.setType("video/mp4"); } else { intent.setType("image/jpeg"); @@ -940,7 +945,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if (message.messageOwner.action instanceof TLRPC.TL_messageActionUserUpdatedPhoto) { return message.messageOwner.action.newUserPhoto.photo_big; } else { - TLRPC.PhotoSize sizeFull = PhotoObject.getClosestPhotoSizeWithSize(message.messageOwner.action.photo.sizes, 800, 800); + TLRPC.PhotoSize sizeFull = FileLoader.getClosestPhotoSizeWithSize(message.messageOwner.action.photo.sizes, 800, 800); if (sizeFull != null) { size[0] = sizeFull.size; if (size[0] == 0) { @@ -952,7 +957,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } } } else if (message.messageOwner.media instanceof TLRPC.TL_messageMediaPhoto && message.messageOwner.media.photo != null) { - TLRPC.PhotoSize sizeFull = PhotoObject.getClosestPhotoSizeWithSize(message.messageOwner.media.photo.sizes, 800, 800); + TLRPC.PhotoSize sizeFull = FileLoader.getClosestPhotoSizeWithSize(message.messageOwner.media.photo.sizes, 800, 800); if (sizeFull != null) { size[0] = sizeFull.size; if (size[0] == 0) { @@ -1003,7 +1008,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat location.secret = sizeFull.secret; return location; } else { - TLRPC.PhotoSize sizeFull = PhotoObject.getClosestPhotoSizeWithSize(message.messageOwner.action.photo.sizes, 800, 800); + TLRPC.PhotoSize sizeFull = FileLoader.getClosestPhotoSizeWithSize(message.messageOwner.action.photo.sizes, 800, 800); if (sizeFull != null) { TLRPC.TL_inputFileLocation location = new TLRPC.TL_inputFileLocation(); location.local_id = sizeFull.location.local_id; @@ -1014,7 +1019,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } } } else if (message.messageOwner.media instanceof TLRPC.TL_messageMediaPhoto) { - TLRPC.PhotoSize sizeFull = PhotoObject.getClosestPhotoSizeWithSize(message.messageOwner.media.photo.sizes, 800, 800); + TLRPC.PhotoSize sizeFull = FileLoader.getClosestPhotoSizeWithSize(message.messageOwner.media.photo.sizes, 800, 800); if (sizeFull != null) { TLRPC.TL_inputFileLocation location = new TLRPC.TL_inputFileLocation(); location.local_id = sizeFull.location.local_id; @@ -1067,7 +1072,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat load = true; } } else { - File cacheFile = new File(AndroidUtilities.getCacheDir(), currentFileName); + File cacheFile = FileLoader.getPathToMessage(currentMessageObject.messageOwner); if (cacheFile.exists()) { currentOverlay.actionButton.setText(LocaleController.getString("ViewVideo", R.string.ViewVideo)); } else { @@ -1326,7 +1331,12 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } if (currentFileName != null) { - File f = new File(AndroidUtilities.getCacheDir(), currentFileName); + File f = null; + if (currentMessageObject != null) { + f = FileLoader.getPathToMessage(currentMessageObject.messageOwner); + } else if (currentFileLocation != null) { + f = FileLoader.getPathToAttach(currentFileLocation); + } if (f.exists()) { progressBar.setVisibility(View.GONE); } else { @@ -2285,7 +2295,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat loadFile = true; } } else { - File cacheFile = new File(AndroidUtilities.getCacheDir(), currentFileName); + File cacheFile = FileLoader.getPathToMessage(currentMessageObject.messageOwner); if (cacheFile.exists()) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(cacheFile), "video/mp4"); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PopupNotificationActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/PopupNotificationActivity.java index 4486fc2cd..00432144d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PopupNotificationActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PopupNotificationActivity.java @@ -449,9 +449,8 @@ public class PopupNotificationActivity extends Activity implements NotificationC boolean photoSet = false; if (currentPhotoObject != null) { boolean photoExist = true; - String fileName = FileLoader.getAttachFileName(currentPhotoObject.photoOwner); if (messageObject.type == 1) { - File cacheFile = new File(AndroidUtilities.getCacheDir(), fileName); + File cacheFile = FileLoader.getPathToMessage(messageObject.messageOwner); if (!cacheFile.exists()) { photoExist = false; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/SettingsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/SettingsActivity.java index f0d96c0d6..7c7b10c8b 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/SettingsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/SettingsActivity.java @@ -40,6 +40,7 @@ import org.telegram.PhoneFormat.PhoneFormat; import org.telegram.android.MediaController; import org.telegram.messenger.BuildVars; import org.telegram.android.LocaleController; +import org.telegram.messenger.FileLoader; import org.telegram.messenger.SerializedData; import org.telegram.messenger.TLClassStore; import org.telegram.messenger.TLObject; @@ -53,7 +54,6 @@ import org.telegram.messenger.R; import org.telegram.messenger.RPCRequest; import org.telegram.messenger.UserConfig; import org.telegram.android.MessageObject; -import org.telegram.android.PhotoObject; import org.telegram.ui.Adapters.BaseFragmentAdapter; import org.telegram.ui.Views.ActionBar.ActionBarLayer; import org.telegram.ui.Views.AvatarUpdater; @@ -142,8 +142,8 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter } TLRPC.TL_photos_photo photo = (TLRPC.TL_photos_photo)response; ArrayList sizes = photo.photo.sizes; - TLRPC.PhotoSize smallSize = PhotoObject.getClosestPhotoSizeWithSize(sizes, 100, 100); - TLRPC.PhotoSize bigSize = PhotoObject.getClosestPhotoSizeWithSize(sizes, 1000, 1000); + TLRPC.PhotoSize smallSize = FileLoader.getClosestPhotoSizeWithSize(sizes, 100, 100); + TLRPC.PhotoSize bigSize = FileLoader.getClosestPhotoSizeWithSize(sizes, 1000, 1000); user.photo = new TLRPC.TL_userProfilePhoto(); user.photo.photo_id = photo.photo.id; if (smallSize != null) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/SettingsWallpapersActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/SettingsWallpapersActivity.java index 7347e7b4b..56a426b92 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/SettingsWallpapersActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/SettingsWallpapersActivity.java @@ -42,7 +42,6 @@ import org.telegram.android.NotificationCenter; import org.telegram.messenger.R; import org.telegram.messenger.RPCRequest; import org.telegram.messenger.Utilities; -import org.telegram.android.PhotoObject; import org.telegram.ui.Adapters.BaseFragmentAdapter; import org.telegram.ui.Views.BackupImageView; import org.telegram.ui.Views.ActionBar.BaseFragment; @@ -120,9 +119,9 @@ public class SettingsWallpapersActivity extends BaseFragment implements Notifica width = height; height = temp; } - TLRPC.PhotoSize size = PhotoObject.getClosestPhotoSizeWithSize(wallPaper.sizes, width, height); + TLRPC.PhotoSize size = FileLoader.getClosestPhotoSizeWithSize(wallPaper.sizes, width, height); String fileName = size.location.volume_id + "_" + size.location.local_id + ".jpg"; - File f = new File(AndroidUtilities.getCacheDir(), fileName); + File f = new File(FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE), fileName); File toFile = new File(ApplicationLoader.applicationContext.getFilesDir(), "wallpaper.jpg"); try { done = Utilities.copyFile(f, toFile); @@ -274,9 +273,9 @@ public class SettingsWallpapersActivity extends BaseFragment implements Notifica width = height; height = temp; } - TLRPC.PhotoSize size = PhotoObject.getClosestPhotoSizeWithSize(wallPaper.sizes, width, height); + TLRPC.PhotoSize size = FileLoader.getClosestPhotoSizeWithSize(wallPaper.sizes, width, height); String fileName = size.location.volume_id + "_" + size.location.local_id + ".jpg"; - File f = new File(AndroidUtilities.getCacheDir(), fileName); + File f = new File(FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE), fileName); if (!f.exists()) { progressBar.setProgress(0); loadingFile = fileName; @@ -285,7 +284,7 @@ public class SettingsWallpapersActivity extends BaseFragment implements Notifica progressBar.setVisibility(View.VISIBLE); loadingSize = size; selectedColor = 0; - FileLoader.getInstance().loadFile(size); + FileLoader.getInstance().loadFile(size, true); backgroundImage.setBackgroundColor(0); } else { if (loadingFile != null) { @@ -533,7 +532,7 @@ public class SettingsWallpapersActivity extends BaseFragment implements Notifica BackupImageView image = (BackupImageView)view.findViewById(R.id.image); View selection = view.findViewById(R.id.selection); TLRPC.WallPaper wallPaper = wallPapers.get(i - 1); - TLRPC.PhotoSize size = PhotoObject.getClosestPhotoSizeWithSize(wallPaper.sizes, AndroidUtilities.dp(100), AndroidUtilities.dp(100)); + TLRPC.PhotoSize size = FileLoader.getClosestPhotoSizeWithSize(wallPaper.sizes, AndroidUtilities.dp(100), AndroidUtilities.dp(100)); if (size != null && size.location != null) { image.setImage(size.location, "100_100", 0); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/VideoEditorActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/VideoEditorActivity.java index 264f1734d..5074a4dd2 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/VideoEditorActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/VideoEditorActivity.java @@ -53,6 +53,7 @@ import org.telegram.android.video.InputSurface; import org.telegram.android.video.MP4Builder; import org.telegram.android.video.Mp4Movie; import org.telegram.android.video.OutputSurface; +import org.telegram.messenger.FileLoader; import org.telegram.messenger.FileLog; import org.telegram.messenger.R; import org.telegram.messenger.UserConfig; @@ -125,7 +126,7 @@ public class VideoEditorActivity extends BaseFragment implements TextureView.Sur private Runnable progressRunnable = new Runnable() { @Override public void run() { - while (videoPlayer.isPlaying()) { + while (videoPlayer != null && videoPlayer.isPlaying()) { AndroidUtilities.RunOnUIThread(new Runnable() { @Override public void run() { @@ -208,6 +209,15 @@ public class VideoEditorActivity extends BaseFragment implements TextureView.Sur if (id == -1) { finishFragment(); } else if (id == 1) { + if (videoPlayer != null) { + try { + videoPlayer.stop(); + videoPlayer.release(); + videoPlayer = null; + } catch (Exception e) { + FileLog.e("tmessages", e); + } + } try { //startConvert(); VideoEditWrapper.runTest(VideoEditorActivity.this); @@ -240,6 +250,9 @@ public class VideoEditorActivity extends BaseFragment implements TextureView.Sur videoTimelineView.setDelegate(new VideoTimelineView.VideoTimelineViewDelegate() { @Override public void onLeftProgressChanged(float progress) { + if (videoPlayer == null) { + return; + } try { if (videoPlayer.isPlaying()) { videoPlayer.pause(); @@ -257,6 +270,9 @@ public class VideoEditorActivity extends BaseFragment implements TextureView.Sur @Override public void onRifhtProgressChanged(float progress) { + if (videoPlayer == null) { + return; + } try { if (videoPlayer.isPlaying()) { videoPlayer.pause(); @@ -277,6 +293,9 @@ public class VideoEditorActivity extends BaseFragment implements TextureView.Sur videoSeekBarView.delegate = new VideoSeekBarView.SeekBarDelegate() { @Override public void onSeekBarDrag(float progress) { + if (videoPlayer == null) { + return; + } if (videoPlayer.isPlaying()) { try { float prog = videoTimelineView.getLeftProgress() + (videoTimelineView.getRightProgress() - videoTimelineView.getLeft()) * progress; @@ -328,6 +347,9 @@ public class VideoEditorActivity extends BaseFragment implements TextureView.Sur @Override public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) { + if (videoPlayer == null) { + return; + } try { Surface s = new Surface(surface); videoPlayer.setSurface(s); @@ -346,6 +368,9 @@ public class VideoEditorActivity extends BaseFragment implements TextureView.Sur @Override public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) { + if (videoPlayer == null) { + return true; + } videoPlayer.setDisplay(null); return true; } @@ -359,7 +384,9 @@ public class VideoEditorActivity extends BaseFragment implements TextureView.Sur playButton.setImageResource(R.drawable.video_play); videoSeekBarView.setProgress(videoTimelineView.getLeftProgress()); try { - videoPlayer.seekTo((int) (videoTimelineView.getLeftProgress() * videoDuration)); + if (videoPlayer != null) { + videoPlayer.seekTo((int) (videoTimelineView.getLeftProgress() * videoDuration)); + } } catch (Exception e) { FileLog.e("tmessages", e); } @@ -389,8 +416,16 @@ public class VideoEditorActivity extends BaseFragment implements TextureView.Sur esimatedDuration = (long)Math.max(1000, (videoTimelineView.getRightProgress() - videoTimelineView.getLeftProgress()) * videoDuration); estimatedSize = calculateEstimatedSize((float)esimatedDuration / videoDuration); - startTime = (long)(videoTimelineView.getLeftProgress() * videoDuration) * 1000; - endTime = (long)(videoTimelineView.getRightProgress() * videoDuration) * 1000; + if (videoTimelineView.getLeftProgress() == 0) { + startTime = -1; + } else { + startTime = (long) (videoTimelineView.getLeftProgress() * videoDuration) * 1000; + } + if (videoTimelineView.getRightProgress() == 1) { + endTime = -1; + } else { + endTime = (long) (videoTimelineView.getRightProgress() * videoDuration) * 1000; + } int minutes = (int)(esimatedDuration / 1000 / 60); int seconds = (int) Math.ceil(esimatedDuration / 1000) - minutes * 60; @@ -511,6 +546,9 @@ public class VideoEditorActivity extends BaseFragment implements TextureView.Sur } private void play() { + if (videoPlayer == null) { + return; + } if (videoPlayer.isPlaying()) { videoPlayer.pause(); playButton.setImageResource(R.drawable.video_play); @@ -659,7 +697,11 @@ public class VideoEditorActivity extends BaseFragment implements TextureView.Sur int muxerTrackIndex = mediaMuxer.addTrack(trackFormat, isAudio); int maxBufferSize = trackFormat.getInteger(MediaFormat.KEY_MAX_INPUT_SIZE); boolean inputDone = false; - extractor.seekTo(start, MediaExtractor.SEEK_TO_PREVIOUS_SYNC); + if (start > 0) { + extractor.seekTo(start, MediaExtractor.SEEK_TO_PREVIOUS_SYNC); + } else { + extractor.seekTo(0, MediaExtractor.SEEK_TO_PREVIOUS_SYNC); + } ByteBuffer buffer = ByteBuffer.allocateDirect(maxBufferSize); long startTime = -1; @@ -668,17 +710,23 @@ public class VideoEditorActivity extends BaseFragment implements TextureView.Sur int index = extractor.getSampleTrackIndex(); if (index == trackIndex) { info.size = extractor.readSampleData(buffer, 0); + if (info.size < 0) { info.size = 0; eof = true; } else { info.presentationTimeUs = extractor.getSampleTime(); - if (startTime == -1) { + if (start > 0 && startTime == -1) { startTime = info.presentationTimeUs; } - if (info.presentationTimeUs < end) { + if (end < 0 || info.presentationTimeUs < end) { info.offset = 0; info.flags = extractor.getSampleFlags(); + if (!isAudio) { + buffer.limit(info.offset + info.size); + buffer.position(info.offset); + buffer.putInt(info.size - 4); + } if (mediaMuxer.writeSampleData(muxerTrackIndex, buffer, info)) { didWriteData(file.toString(), 0); } @@ -729,6 +777,7 @@ public class VideoEditorActivity extends BaseFragment implements TextureView.Sur if (bitrate > 900000) { bitrate = 900000; } + videoFramesSize += sampleSizes; } else { audioFramesSize += sampleSizes; } @@ -801,7 +850,7 @@ public class VideoEditorActivity extends BaseFragment implements TextureView.Sur try { String fileName = Integer.MIN_VALUE + "_" + UserConfig.lastLocalId + ".mp4"; UserConfig.lastLocalId--; - cacheFile = new File(AndroidUtilities.getCacheDir(), fileName); + cacheFile = new File(FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE), fileName); UserConfig.saveConfig(false); MediaCodec.BufferInfo info = new MediaCodec.BufferInfo(); @@ -820,6 +869,7 @@ public class VideoEditorActivity extends BaseFragment implements TextureView.Sur boolean outputDone = false; boolean inputDone = false; boolean decoderDone = false; + int swapUV = 0; int videoTrackIndex = -5; long videoTime = -1; @@ -830,6 +880,9 @@ public class VideoEditorActivity extends BaseFragment implements TextureView.Sur colorFormat = selectColorFormat(codecInfo, MIME_TYPE); if (codecInfo.getName().contains("OMX.qcom.")) { processorType = PROCESSOR_TYPE_QCOM; + if (Build.MANUFACTURER.toLowerCase().equals("nokia")) { + swapUV = 1; + } } FileLog.e("tmessages", "codec = " + codecInfo.getName()); } else { @@ -853,7 +906,11 @@ public class VideoEditorActivity extends BaseFragment implements TextureView.Sur } extractor.selectTrack(videoIndex); - extractor.seekTo(startTime, MediaExtractor.SEEK_TO_PREVIOUS_SYNC); + if (startTime > 0) { + extractor.seekTo(startTime, MediaExtractor.SEEK_TO_PREVIOUS_SYNC); + } else { + extractor.seekTo(0, MediaExtractor.SEEK_TO_PREVIOUS_SYNC); + } MediaFormat inputFormat = extractor.getTrackFormat(videoIndex); MediaFormat outputFormat = MediaFormat.createVideoFormat(MIME_TYPE, resultWidth, resultHeight); @@ -1001,13 +1058,13 @@ public class VideoEditorActivity extends BaseFragment implements TextureView.Sur } else { doRender = info.size != 0 || info.presentationTimeUs != 0; } - if (info.presentationTimeUs >= endTime) { + if (endTime > 0 && info.presentationTimeUs >= endTime) { inputDone = true; decoderDone = true; doRender = false; info.flags |= MediaCodec.BUFFER_FLAG_END_OF_STREAM; } - if (videoTime == -1) { + if (startTime > 0 && videoTime == -1) { if (info.presentationTimeUs < startTime) { doRender = false; FileLog.e("tmessages", "drop frame startTime = " + startTime + " present time = " + info.presentationTimeUs); @@ -1036,7 +1093,7 @@ public class VideoEditorActivity extends BaseFragment implements TextureView.Sur ByteBuffer rgbBuf = outputSurface.getFrame(); ByteBuffer yuvBuf = encoderInputBuffers[inputBufIndex]; yuvBuf.clear(); - Utilities.convertVideoFrame(rgbBuf, yuvBuf, colorFormat, resultWidth, resultHeight, padding); + Utilities.convertVideoFrame(rgbBuf, yuvBuf, colorFormat, resultWidth, resultHeight, padding, swapUV); encoder.queueInputBuffer(inputBufIndex, 0, bufferSize, info.presentationTimeUs, 0); } else { FileLog.e("tmessages", "input buffer not available"); @@ -1165,7 +1222,7 @@ public class VideoEditorActivity extends BaseFragment implements TextureView.Sur String fileName = Integer.MIN_VALUE + "_" + UserConfig.lastLocalId + ".mp4"; UserConfig.lastLocalId--; - File cacheFile = new File(AndroidUtilities.getCacheDir(), fileName); + File cacheFile = new File(FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE), fileName); UserConfig.saveConfig(false); FileOutputStream fos = new FileOutputStream(cacheFile); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Views/AvatarUpdater.java b/TMessagesProj/src/main/java/org/telegram/ui/Views/AvatarUpdater.java index 2dc73ff3e..276275e4a 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Views/AvatarUpdater.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Views/AvatarUpdater.java @@ -128,7 +128,7 @@ public class AvatarUpdater implements NotificationCenter.NotificationCenterDeleg } } else { UserConfig.saveConfig(false); - uploadingAvatar = AndroidUtilities.getCacheDir() + "/" + bigPhoto.location.volume_id + "_" + bigPhoto.location.local_id + ".jpg"; + uploadingAvatar = FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE) + "/" + bigPhoto.location.volume_id + "_" + bigPhoto.location.local_id + ".jpg"; NotificationCenter.getInstance().addObserver(AvatarUpdater.this, NotificationCenter.FileDidUpload); NotificationCenter.getInstance().addObserver(AvatarUpdater.this, NotificationCenter.FileDidFailUpload); FileLoader.getInstance().uploadFile(uploadingAvatar, false, true); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Views/PopupAudioView.java b/TMessagesProj/src/main/java/org/telegram/ui/Views/PopupAudioView.java index d1a9cb2ff..2af5b6c6b 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Views/PopupAudioView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Views/PopupAudioView.java @@ -287,7 +287,7 @@ public class PopupAudioView extends BaseCell implements SeekBar.SeekBarDelegate, public void updateButtonState() { String fileName = currentMessageObject.getFileName(); - File cacheFile = new File(AndroidUtilities.getCacheDir(), fileName); + File cacheFile = FileLoader.getPathToMessage(currentMessageObject.messageOwner); if (cacheFile.exists()) { MediaController.getInstance().removeLoadingFileObserver(this); boolean playing = MediaController.getInstance().isPlayingAudio(currentMessageObject); diff --git a/TMessagesProj/src/main/res/drawable-hdpi/doc_actions_b.png b/TMessagesProj/src/main/res/drawable-hdpi/doc_actions_b.png new file mode 100755 index 0000000000000000000000000000000000000000..3853c42d049b68de2306f2108905cf8388241238 GIT binary patch literal 1011 zcmaJ=PiWIn7|&E>j1_hfr-(kYi;gw_+GZwO+`6Q56;no6XfNWjjyb*R`DoYj}Bof4|@Neee6;o%zDK#K6%3 zhG7!^&Ldawtv;;xkv#PKNEobfW8#u`@`&qYC z!4>m@Y9o)cD29u@fUp^6aw-liyACl}f>qbo*srg)Sl~JuTh5q*8R)R)&aH=VVZBhY z*Xy?8uv2HjWULYa4`K_%-ijZovBtJ^RWhgBJPTS7T-VrLrz++=&`}6MhD#-FK@@>3 zb7DFp%ifW&NmqP2|G(*a~=& z6KF^splSXe>Umvsgo|*`-+u~6rL_R^MHrz*Xp_V(k5E&As)x|RC@dkg(z(U?8p0^5 zp#bO$GB{OseFrt8(=EJds(C-cmT$wnp|M1Pb6rQBQ3OR64JkFANr_@Eoz>6iGeXYD z>a%htE2lbK1KAA^`nbb&_PD8@Tv`fVKr98zK+1LRQ`0z6d?_+FYl%FJezF zPn_XtV*g5XXNy!1op#HXEV_jceNycqDeKoKeh-o-QOz6KQvC7Dht0$`7(6h24356V z8xQVD^^HU^$KL+ccfU~iJ|Vq$`sm5naYDHEQrWut{Kx0U=1w^=MPJpohc~V;(}&;P sygNjWNBfw^=Z8DAn{}ZlGin?$&1OGO?U9H zi|9!Z@!~=7CDT82;?2SieSmJ)=&jmPUrRqlmp->=T_^a zZeG)D?C}=E@Ua(AHUPP~II!$>MBpk~bA6rLfAf}uuA_4`#T3n;h??%=W{8$Im#X&W zx}9~nxhpUiYgE8P#DcNc@*^$Qxvs88_slGCunQsUI(HCM-7Lc*4iQxNRMHkD392eD zr4?0`W}z%fvLMo1O-gA^Q8hUOdlyH&g-%1O7z;gL^rUl5LIOu{k9uXI1ruT`5F}n? zDfNM-`G2VA4bTy(pu>3oDI8Th0TL=G!W*GY8`nrMSAkXxkwtJ=#kke4V!4S4j+!`t z#bp&p59QWD1PVj&F2^P@UNBG-*?|L1DJgjOo4BO?T2SZ04QGs npgNWqrS@m1jNOzh^ZC literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-ldpi/doc_actions_b.png b/TMessagesProj/src/main/res/drawable-ldpi/doc_actions_b.png new file mode 100755 index 0000000000000000000000000000000000000000..c9ad081213eb06c43c6c9bde6a17041dbefd6c2c GIT binary patch literal 969 zcmaJ=&ui0A9FG)43OmW54uwZ{m_OE}X`6HjjipUmS1`4-h1J{AH} z!-RoXJ&6Yo9=v++pk4$8!Cmz-@DC8Ys36RjuI+ZPh9vI?pU>y}ec$ir?bmC!mf|aM zilUaPn`(oMiRim2M*ILGS zV2CDNxC!#1L}FL#<3>k(EsMF?J=E4T69PG7R#1EGLR$ zq>)Z12_or_9IS^)$6uW(sL(e&%f%LQK%}U5&=AWs$@Jt1wmX+~{Arm;!ProDS&m6X zN16dO?f+2Qo}+!-fT#KXQ`m2fT*x+{kA|K>8rNNoLb;OSK^-Hnh0xBdiuFFi$nPT; zC`|!e-Lf1L1^%@OUelzi<73@1U{#fAqQF>|DJdnfoD~!?ljAcSSI(By3NLbMCRb6) ze7eNVxGFM+HgxceYo2n83%QXMY?nkgNM7Uz;%s5j-Bi*wmn$Yn_~ zY}D8@jh<~0_e9gVZOLM8eCQCjd&Jg9A3rUVD zN}^B!4-pF_-k~2UiOSA&6}nH&JPT$JGE&)-pt@!gXgEZmz~!>GAc{biIWb?5WpNKk zf++CKs6~X*rskhMSD=lcuebJN34habqo{!_0i*p_3)UeERFOe1ut02`q8{hv|xN<1-!@!X-W&AY5pJT zc}sLeTIg@Q{}hfolK}B86yb4b)5i68QdfbZg~%c}>|lJjsA6-7366$109soHmk(Uu z!Ev-Z!<(j3_akEYHmXCFr3#$uI*Mk%oF+jdS1ja2QO}ozq5&mMF9|SD?X?9LVtec% zpDeh}lB)|Vx#=i)0rd<~=-xw)5n>O_QdZp6vA~sjbFQ;87O1b}@-!GeZS1K=FHCfL z((Q6=>0vqe$fwgD(y=~zal1jU#ML^ib&`+0-^a(*_3YZ$r)N7aAAbpUAHB(Z@{QgP xQGB;`;r@A}{eF05+ti;t8|E(_-D1u#YZ+!QD*gQMtyoB}R$Xtv=hyE%_ybJPEUo|m literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-mdpi/doc_actions_b.png b/TMessagesProj/src/main/res/drawable-mdpi/doc_actions_b.png new file mode 100755 index 0000000000000000000000000000000000000000..37a56ecc4942b0bcc6f19c92a2d23cb8f125439d GIT binary patch literal 987 zcmaJ=PiWIn7|#@@47T$W504B)!RBAvbPbJLm$a^6=IAObvcuBkwGCVHo-eN^>q$He z1rOrMi>Ka1#DfZgw_p|8?#|uMu)uL=d9PNd zb?c_)AYZT(j1c>nu{o}=5M$fff)q4h%L{b==erL)@LZi=&svg&4cPXUy9BOvS87go z%gMX^!gWxHH74LgYJ=F{4ni%~`M$2k_K92MK_5c5bpAN0y0r=nL?Flt>69bMGEh}P z&SX_pz6KOYRz!)tYD&&%SyfYVVDRuP8gZLi)hrKUF-zy$lwwU3qbL%hw17xUl=Jy~ zqM;}$hDe1w0kz{)5Y7!1Oc*-E!_-3oNEGb`>QJ3$nI0d($0OMw9F&O_OpI+T%7T;} zX$Z8e|3iI$gbryHp5*&a;jp%Yp;(0>>JW!Dt~r;4!kR&#O%bUfv^}iiY8z1$wh;!# znhLJ0dx49h@M<4#Sz09ssU0}5V(L6o5IoP-N=nu&E-7X@mrcuZDKlSYX2!@UWhqz8 z8}mc1iJXoP13KioC*0ClZZZl!W|2)uynE0s6Xb*bku`68E=yze23&W1F2-1{$dVD0 z#-3{Q(8Z=F*^b7R8Kc360h@Nh#`^Y)!wq&NZdJ@;E&ks4b9A(@zj)^I?!;toW)`1& z{iNspe(xN8{aASZ@>#jJ`EB9{_vzp%esgK|%Wm&*ubr3f%sg)HACOJv>g+v?xW)Su X+DmWe)f&-i6wQFXcjblsFEoesRD(%rMd2Pd%yqLV&tX_sU zy?OWIT|9bG6p!M;i(b5W@iY)o1P_8QUDJ86hL`t`@B4m#--G(r#{ArcIRL=CwP`f? z3bX(8Nj@jT;Sau?XJ(si(+(RrF#&5H-67BloGxh)$J@X2mQ(?l75rwKwe6eOrGe;V z7%>eZ&IX{mnnsShOBmcCT|d->uPgpn@h`|Mg0;0VHYHQ~sqwq1uhjR~xX<)SMi1QkU@%N0dIS71p- zB}wK(DWYXuQE+Jmjz580i@gqR7`3r2e$s>iz)(qM43fC9A2FYXFjI7PXrE~U_w*=)AezXA$v90sVN&Wu5)$Psq#S75|Az*_ z1f8%3IrjIT!bx*KB2t4Sv>&^?aGk}>RD|`IIE=vDZ!7R}%MU#| zNR~!;+s0OyFeh}0WoQCd5PjdnhN+;dHN_~eRLTgM%c@>mQ&CNq*JV{vk(qN1>h=Q? zvYhK3bIqyTtQCTYTQ*4S-z8oxrU4vvcIM6F`@Z*P-kXOrm8nGk zU_Zk!iSo2srRzlWpF2zE=ho^0T`rSioy_7T66hXc@+NK|P`33Zsv_N7U)@Jz4AaM2 zwK}P5x1fP-PLD8LXuFinFk|DPs~gLRfCg$>j>7(W^Nt0Usj%}|P0-u|YFX189-7^# z)QpW~BWJSXH^5j3sep}$4nljy@nNX2ZCyz1$j!5$4I#@4dz@5Vn*jyvA&}+LDMJuN zAj_PX$;z^L4M>70@d6!kO3c8l45d-f`B)mwGnZghEp=kiox-*VaUstKLBIuR4tq^r z%;j>Ch9spZBIU0;L=RJrpNth$pXiQ(%BsRr1*xr&B zhMwKr-fhfHU+llXn7s1j@cTmYsaYA>?`yvzIz5sk|L==IOvk*8d&sIMmPKKKIx C-8%&U literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/doc_actions_g.png b/TMessagesProj/src/main/res/drawable-xhdpi/doc_actions_g.png new file mode 100755 index 0000000000000000000000000000000000000000..8f768c660e0a4ab932d926b0b03839200f052b4c GIT binary patch literal 1045 zcmaJ=O=#3W6i&4iDecLNiiIJ)RB)5cZjv>jvHO!nV+3U6OF^Bd*k!8@Gbv(a1XV(G6%Y^SN9qtUmoU5w-0U(+}}z4*nYcuCwTH{pmT}nFmde)Cb{%8$uMByOvQoCpZ>|(u)5Wza|JWDuCRJrmb|T@OI}RgOgb3M z;YC#NrWe7B7ePTm6cpS=hIkM`1RWkG>@;N;k30C%HQfYjNb>&V`@Y}r_kLe)PEK6v z?mX2A0O&4^%SAfQ22aOP`u=g>OVQyZ$(PAAo+qB_AduDZ9D)T?T|h;o>b0xy(J%l< z7^74sW#zJ@VUtw@4C|XVWdkrg;@hfLMFh^F1;ffPyRY9e(9ko?Oj6+$JBKR9__Bkh zmnTZva#c&~%*X{e>`PR@L_~$YxoEkPpJD2{5}gOz90ThRQq3^?NtKmJn8OZ&Nj4tU zctL=o$O?(1C<^Ccj2B`YPj4|QB&4J$#fD(xVrVo+pO=dASR)o)Wta*fw#0Fs=doU# z#m)jJq|@m@BNmHNMAWTWMD?SVI}j?!$kiOfCI+@(ps3E_C6Zxiru!wBc2m}J8^=Ts zjPq5S6IebdDFiCY|DmSYM7yMj4)Xn{uv@Cxh$|u&FF6`*-26Zg%9e5tQVDiS7%zsW zI9b62yA^E1+_VVK%@~%BJ$JBC=x zNQpT86P2(ery4|6+KJ%n+gZ>g51vy*tzx~{N*1ZaQ zMyEdVeUBdWZeDr*MYu85^=9Py)^;T|5Fffz_1XdG0H6&(0NTMS06hRi_?7M5e*gQg zPq#kRKJ#r6F#0#>HoMn98wq(IQ1o5)Bpeg literal 0 HcmV?d00001 diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/doc_actions_g.png b/TMessagesProj/src/main/res/drawable-xxhdpi/doc_actions_g.png new file mode 100755 index 0000000000000000000000000000000000000000..7b61accc5645f746e18f2879b3a9b02242bfa4f0 GIT binary patch literal 1102 zcmaJ>O=#0l9Dh!cIV=wJq98o7i{hFzZIiWOadt_z70ei2VRd*|mb|rLOI}RgOjc2b z2SM<%gW^fND5BukRhXL>6?XIFPz1r7LlC^^#h0$_bXY@@_mSW4_y5ehJ~2L;=sDH{ z07w+a)Dj(M;-`B*eSf|k=IC&gXcaPv=SXPy2ox+li(t_)s;GnvYw5yUGzh?6#x7S# zML#Q<*kO$r!$yur*#HaxL?`F@yA@o6qaZ!yVdB|((Z1F(59)S7S2NhNipX^XC8rbdV-aanon7-{18@n)8G-mN4ks0dgb_kBwmUV+>nrOnf$nZFx zO~oO#fV%#FsN=NJ0V$y!fBz{Ql$Sijl~8~eeUlb$t}iy_Ns5mQg8eea3#}|p)G)z8 z4SP_T6yb>}+qG~QoNVBAT`IZ(F7w2E$fe!x)3$y+Y(JpC#H*rOC`X%LH=iZe;6bpSyM+4d zKX2Sz-{|c&R(>5=8?7=KZtE0~BTKOMs5)lXZAuHA?$ zE0-zlK4_A@d{1gI3+&keE+2k=2!ORCP1U>SSMU7|XxMsp?hQQ&=+UtI+w_Ot8Swtj V!>wBzkFHT$ps0

da9H#tONT?~zB$U?dd3N}A-zx< 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 diff --git a/TMessagesProj/libs/x86/libtmessages.so b/TMessagesProj/libs/x86/libtmessages.so index 041687e313574701e4fb78d6a641d2959ecca3b2..4ec139a3b619c6b25ead730ec80907fca27165c2 100755 GIT binary patch delta 75007 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 delta 74795 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