diff --git a/TMessagesProj/build.gradle b/TMessagesProj/build.gradle index 3630462bc..52181cf0d 100644 --- a/TMessagesProj/build.gradle +++ b/TMessagesProj/build.gradle @@ -3,7 +3,7 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:0.12.+' + classpath 'com.android.tools.build:gradle:0.13.+' } } apply plugin: 'com.android.application' @@ -25,7 +25,7 @@ dependencies { android { compileSdkVersion 19 - buildToolsVersion '19.1.0' + buildToolsVersion '20.0.0' signingConfigs { debug { @@ -80,7 +80,7 @@ android { defaultConfig { minSdkVersion 8 targetSdkVersion 19 - versionCode 349 - versionName "1.9.3" + versionCode 355 + versionName "1.9.4" } } diff --git a/TMessagesProj/src/main/java/org/telegram/android/AndroidUtilities.java b/TMessagesProj/src/main/java/org/telegram/android/AndroidUtilities.java index 00c4ecb6e..1e64f97a5 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/AndroidUtilities.java +++ b/TMessagesProj/src/main/java/org/telegram/android/AndroidUtilities.java @@ -36,7 +36,6 @@ public class AndroidUtilities { private static int prevOrientation = -10; private static boolean waitingForSms = false; private static final Object smsLock = new Object(); - public static int externalCacheNotAvailableState = 0; public static int statusBarHeight = 0; public static float density = 1; @@ -211,8 +210,7 @@ public class AndroidUtilities { } public static File getCacheDir() { - if (externalCacheNotAvailableState == 1 || externalCacheNotAvailableState == 0 && Environment.getExternalStorageState().startsWith(Environment.MEDIA_MOUNTED)) { - externalCacheNotAvailableState = 1; + if (Environment.getExternalStorageState().startsWith(Environment.MEDIA_MOUNTED)) { try { File file = ApplicationLoader.applicationContext.getExternalCacheDir(); if (file != null) { @@ -222,7 +220,6 @@ public class AndroidUtilities { FileLog.e("tmessages", e); } } - externalCacheNotAvailableState = 2; try { File file = ApplicationLoader.applicationContext.getCacheDir(); if (file != null) { diff --git a/TMessagesProj/src/main/java/org/telegram/android/ImageLoader.java b/TMessagesProj/src/main/java/org/telegram/android/ImageLoader.java index d4d941d49..f77805d43 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/ImageLoader.java +++ b/TMessagesProj/src/main/java/org/telegram/android/ImageLoader.java @@ -640,54 +640,77 @@ public class ImageLoader { try { if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) { - telegramPath = new File(Environment.getExternalStorageDirectory(), LocaleController.getString("AppName", R.string.AppName)); + telegramPath = new File(Environment.getExternalStorageDirectory(), "Telegram"); telegramPath.mkdirs(); - if (telegramPath.isDirectory()) { - try { - File imagePath = new File(telegramPath, LocaleController.getString("AppName", R.string.AppName) + " Images"); - imagePath.mkdir(); - if (imagePath.isDirectory()) { - mediaDirs.put(FileLoader.MEDIA_DIR_IMAGE, imagePath); - FileLog.e("tmessages", "image path = " + imagePath); - } - } catch (Exception e) { - FileLog.e("tmessages", e); - } - try { - File videoPath = new File(telegramPath, LocaleController.getString("AppName", R.string.AppName) + " Video"); - videoPath.mkdir(); - if (videoPath.isDirectory()) { - mediaDirs.put(FileLoader.MEDIA_DIR_VIDEO, videoPath); - FileLog.e("tmessages", "video path = " + videoPath); - } - } catch (Exception e) { - FileLog.e("tmessages", e); - } + boolean canRename = false; - try { - File audioPath = new File(telegramPath, LocaleController.getString("AppName", R.string.AppName) + " Audio"); - audioPath.mkdir(); - if (audioPath.isDirectory()) { - new File(audioPath, ".nomedia").createNewFile(); - mediaDirs.put(FileLoader.MEDIA_DIR_AUDIO, audioPath); - FileLog.e("tmessages", "audio path = " + audioPath); + try { + for (int a = 0; a < 5; a++) { + File srcFile = new File(cachePath, "temp.file"); + srcFile.createNewFile(); + File dstFile = new File(telegramPath, "temp.file"); + canRename = srcFile.renameTo(dstFile); + srcFile.delete(); + dstFile.delete(); + if (canRename) { + break; } - } catch (Exception e) { - FileLog.e("tmessages", e); } + } catch (Exception e) { + FileLog.e("tmessages", e); + } - try { - File documentPath = new File(telegramPath, LocaleController.getString("AppName", R.string.AppName) + " Documents"); - documentPath.mkdir(); - if (documentPath.isDirectory()) { - new File(documentPath, ".nomedia").createNewFile(); - mediaDirs.put(FileLoader.MEDIA_DIR_DOCUMENT, documentPath); - FileLog.e("tmessages", "documents path = " + documentPath); + if (canRename) { + if (telegramPath.isDirectory()) { + try { + File imagePath = new File(telegramPath, "Telegram Images"); + imagePath.mkdir(); + if (imagePath.isDirectory()) { + mediaDirs.put(FileLoader.MEDIA_DIR_IMAGE, imagePath); + FileLog.e("tmessages", "image path = " + imagePath); + } + } catch (Exception e) { + FileLog.e("tmessages", e); + } + + try { + File videoPath = new File(telegramPath, "Telegram Video"); + videoPath.mkdir(); + if (videoPath.isDirectory()) { + mediaDirs.put(FileLoader.MEDIA_DIR_VIDEO, videoPath); + FileLog.e("tmessages", "video path = " + videoPath); + } + } catch (Exception e) { + FileLog.e("tmessages", e); + } + + try { + File audioPath = new File(telegramPath, "Telegram Audio"); + audioPath.mkdir(); + if (audioPath.isDirectory()) { + new File(audioPath, ".nomedia").createNewFile(); + mediaDirs.put(FileLoader.MEDIA_DIR_AUDIO, audioPath); + FileLog.e("tmessages", "audio path = " + audioPath); + } + } catch (Exception e) { + FileLog.e("tmessages", e); + } + + try { + File documentPath = new File(telegramPath, "Telegram Documents"); + documentPath.mkdir(); + if (documentPath.isDirectory()) { + new File(documentPath, ".nomedia").createNewFile(); + mediaDirs.put(FileLoader.MEDIA_DIR_DOCUMENT, documentPath); + FileLog.e("tmessages", "documents path = " + documentPath); + } + } catch (Exception e) { + FileLog.e("tmessages", e); } - } catch (Exception e) { - FileLog.e("tmessages", e); } + } else { + FileLog.e("tmessages", "this Android can't rename files"); } } MediaController.getInstance().checkSaveToGalleryFiles(); @@ -809,7 +832,7 @@ public class ImageLoader { }); } - public void loadImage(final TLRPC.FileLocation fileLocation, final String httpUrl, final ImageReceiver imageView, final int size) { + public void loadImage(final TLRPC.FileLocation fileLocation, final String httpUrl, final ImageReceiver imageView, final int size, final boolean cacheOnly) { if ((fileLocation == null && httpUrl == null) || imageView == null || (fileLocation != null && !(fileLocation instanceof TLRPC.TL_fileLocation) && !(fileLocation instanceof TLRPC.TL_fileEncryptedLocation))) { return; } @@ -861,7 +884,7 @@ public class ImageLoader { if (!added) { boolean onlyCache = false; File cacheFile = null; - if (size == 0 || httpUrl != null || fileLocation != null && (fileLocation.key != null || fileLocation.volume_id == Integer.MIN_VALUE && fileLocation.local_id < 0)) { + if (cacheOnly || size == 0 || httpUrl != null || fileLocation != null && (fileLocation.key != null || fileLocation.volume_id == Integer.MIN_VALUE && fileLocation.local_id < 0)) { cacheFile = new File(FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE), url); } else { cacheFile = new File(FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_IMAGE), url); @@ -898,7 +921,7 @@ public class ImageLoader { img.addImageView(imageView); imageLoadingByUrl.put(url, img); if (httpUrl == null) { - FileLoader.getInstance().loadFile(fileLocation, size, size == 0 || fileLocation.key != null); + FileLoader.getInstance().loadFile(fileLocation, size, size == 0 || fileLocation.key != null || cacheOnly); } else { String file = Utilities.MD5(httpUrl); File cacheDir = FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE); diff --git a/TMessagesProj/src/main/java/org/telegram/android/ImageReceiver.java b/TMessagesProj/src/main/java/org/telegram/android/ImageReceiver.java index dc245900e..d371cab87 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/ImageReceiver.java +++ b/TMessagesProj/src/main/java/org/telegram/android/ImageReceiver.java @@ -34,6 +34,7 @@ public class ImageReceiver { private Rect drawRegion = new Rect(); private boolean isVisible = true; private boolean isAspectFit = false; + private boolean lastCacheOnly = false; public ImageReceiver() { @@ -43,19 +44,19 @@ public class ImageReceiver { parentView = view; } - public void setImage(TLRPC.FileLocation path, String filter, Drawable placeholder) { - setImage(path, null, filter, placeholder, 0); + public void setImage(TLRPC.FileLocation path, String filter, Drawable placeholder, boolean cacheOnly) { + setImage(path, null, filter, placeholder, 0, cacheOnly); } - public void setImage(TLRPC.FileLocation path, String filter, Drawable placeholder, int size) { - setImage(path, null, filter, placeholder, size); + public void setImage(TLRPC.FileLocation path, String filter, Drawable placeholder, int size, boolean cacheOnly) { + setImage(path, null, filter, placeholder, size, cacheOnly); } public void setImage(String path, String filter, Drawable placeholder) { - setImage(null, path, filter, placeholder, 0); + setImage(null, path, filter, placeholder, 0, true); } - public void setImage(TLRPC.FileLocation fileLocation, String httpUrl, String filter, Drawable placeholder, int size) { + public void setImage(TLRPC.FileLocation fileLocation, String httpUrl, String filter, Drawable placeholder, int size, boolean cacheOnly) { if ((fileLocation == null && httpUrl == null) || (fileLocation != null && !(fileLocation instanceof TLRPC.TL_fileLocation) && !(fileLocation instanceof TLRPC.TL_fileEncryptedLocation))) { recycleBitmap(null); currentPath = null; @@ -63,6 +64,7 @@ public class ImageReceiver { last_path = null; last_httpUrl = null; last_filter = null; + lastCacheOnly = false; last_placeholder = placeholder; last_size = 0; currentImage = null; @@ -101,9 +103,10 @@ public class ImageReceiver { last_filter = filter; last_placeholder = placeholder; last_size = size; + lastCacheOnly = cacheOnly; if (img == null) { isPlaceholder = true; - ImageLoader.getInstance().loadImage(fileLocation, httpUrl, this, size); + ImageLoader.getInstance().loadImage(fileLocation, httpUrl, this, size, cacheOnly); } else { setImageBitmap(img, currentPath); } @@ -136,6 +139,7 @@ public class ImageReceiver { last_filter = null; currentImage = null; last_size = 0; + lastCacheOnly = false; if (parentView != null) { parentView.invalidate(); } @@ -152,6 +156,7 @@ public class ImageReceiver { last_httpUrl = null; last_filter = null; last_size = 0; + lastCacheOnly = false; if (parentView != null) { parentView.invalidate(); } @@ -213,7 +218,7 @@ public class ImageReceiver { ImageLoader.getInstance().removeImage(currentPath); currentPath = null; } - setImage(last_path, last_httpUrl, last_filter, last_placeholder, last_size); + setImage(last_path, last_httpUrl, last_filter, last_placeholder, last_size, lastCacheOnly); FileLog.e("tmessages", e); } canvas.restore(); @@ -238,7 +243,7 @@ public class ImageReceiver { ImageLoader.getInstance().removeImage(currentPath); currentPath = null; } - setImage(last_path, last_httpUrl, last_filter, last_placeholder, last_size); + setImage(last_path, last_httpUrl, last_filter, last_placeholder, last_size, lastCacheOnly); FileLog.e("tmessages", e); } } @@ -255,7 +260,7 @@ public class ImageReceiver { ImageLoader.getInstance().removeImage(currentPath); currentPath = null; } - setImage(last_path, last_httpUrl, last_filter, last_placeholder, last_size); + setImage(last_path, last_httpUrl, last_filter, last_placeholder, last_size, lastCacheOnly); FileLog.e("tmessages", e); } } @@ -273,7 +278,7 @@ public class ImageReceiver { ImageLoader.getInstance().removeImage(currentPath); currentPath = null; } - setImage(last_path, last_httpUrl, last_filter, last_placeholder, last_size); + setImage(last_path, last_httpUrl, last_filter, last_placeholder, last_size, lastCacheOnly); FileLog.e("tmessages", e); } } diff --git a/TMessagesProj/src/main/java/org/telegram/android/LocaleController.java b/TMessagesProj/src/main/java/org/telegram/android/LocaleController.java index 9cd127a7d..06a4cb05e 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/LocaleController.java +++ b/TMessagesProj/src/main/java/org/telegram/android/LocaleController.java @@ -518,6 +518,19 @@ public class LocaleController { SharedPreferences.Editor editor = preferences.edit(); editor.remove("language"); editor.commit(); + + if (newLocale != null) { + LocaleInfo info = null; + if (newLocale.getLanguage() != null) { + info = languagesDict.get(newLocale.getLanguage()); + } + if (info == null) { + info = languagesDict.get(getLocaleString(newLocale)); + } + if (info == null) { + newLocale = Locale.US; + } + } } if (newLocale != null) { if (localeInfo.pathToFile == null) { @@ -680,7 +693,10 @@ public class LocaleController { } public void recreateFormatters() { - Locale locale = Locale.getDefault(); + Locale locale = currentLocale; + if (locale == null) { + locale = Locale.getDefault(); + } String lang = locale.getLanguage(); if (lang == null) { lang = "en"; diff --git a/TMessagesProj/src/main/java/org/telegram/android/MediaController.java b/TMessagesProj/src/main/java/org/telegram/android/MediaController.java index c91e00354..48e974fe5 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/MediaController.java +++ b/TMessagesProj/src/main/java/org/telegram/android/MediaController.java @@ -144,7 +144,7 @@ public class MediaController implements NotificationCenter.NotificationCenterDel } } - private final static String MIME_TYPE = "video/avc"; + public final static String MIME_TYPE = "video/avc"; private final static int PROCESSOR_TYPE_OTHER = 0; private final static int PROCESSOR_TYPE_QCOM = 1; private final static int PROCESSOR_TYPE_INTEL = 2; @@ -1799,10 +1799,10 @@ public class MediaController implements NotificationCenter.NotificationCenterDel public void checkSaveToGalleryFiles() { try { - File telegramPath = new File(Environment.getExternalStorageDirectory(), LocaleController.getString("AppName", R.string.AppName)); - File imagePath = new File(telegramPath, LocaleController.getString("AppName", R.string.AppName) + " Images"); + File telegramPath = new File(Environment.getExternalStorageDirectory(), "Telegram"); + File imagePath = new File(telegramPath, "Telegram Images"); imagePath.mkdir(); - File videoPath = new File(telegramPath, LocaleController.getString("AppName", R.string.AppName) + " Video"); + File videoPath = new File(telegramPath, "Telegram Video"); videoPath.mkdir(); if (saveToGallery) { @@ -1946,7 +1946,7 @@ public class MediaController implements NotificationCenter.NotificationCenterDel } } - private static MediaCodecInfo selectCodec(String mimeType) { + public static MediaCodecInfo selectCodec(String mimeType) { int numCodecs = MediaCodecList.getCodecCount(); MediaCodecInfo lastCodecInfo = null; for (int i = 0; i < numCodecs; i++) { @@ -1982,7 +1982,7 @@ public class MediaController implements NotificationCenter.NotificationCenterDel } } - private static int selectColorFormat(MediaCodecInfo codecInfo, String mimeType) { + public static int selectColorFormat(MediaCodecInfo codecInfo, String mimeType) { MediaCodecInfo.CodecCapabilities capabilities = codecInfo.getCapabilitiesForType(mimeType); int lastColorFormat = 0; for (int i = 0; i < capabilities.colorFormats.length; i++) { diff --git a/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java b/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java index d48d7b700..ba6cd5cc2 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java +++ b/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java @@ -1241,7 +1241,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter return; } } - req.typing = true; + req.action = new TLRPC.TL_sendMessageTypingAction(); sendingTypings.put(dialog_id, true); long reqId = ConnectionsManager.getInstance().performRpc(req, new RPCRequest.RPCRequestDelegate() { @Override @@ -1668,6 +1668,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter } req.max_id = max_positive_id; req.offset = offset; + req.read_contents = true; if (offset == 0) { MessagesStorage.getInstance().processPendingRead(dialog_id, max_positive_id, max_date, false); MessagesStorage.getInstance().storageQueue.postRunnable(new Runnable() { @@ -1712,17 +1713,6 @@ public class MessagesController implements NotificationCenter.NotificationCenter } }); } - - if (offset == 0) { - TLRPC.TL_messages_receivedMessages req2 = new TLRPC.TL_messages_receivedMessages(); - req2.max_id = max_positive_id; - ConnectionsManager.getInstance().performRpc(req2, new RPCRequest.RPCRequestDelegate() { - @Override - public void run(TLObject response, TLRPC.TL_error error) { - - } - }, true, RPCRequest.RPCRequestClassGeneric | RPCRequest.RPCRequestClassFailOnServerErrors); - } } else { if (max_date == 0) { return; @@ -1967,7 +1957,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter } } - public void deleteUserFromChat(int chat_id, final TLRPC.User user, final TLRPC.ChatParticipants info) { + public void deleteUserFromChat(final int chat_id, final TLRPC.User user, final TLRPC.ChatParticipants info) { if (user == null) { return; } @@ -2008,9 +1998,13 @@ public class MessagesController implements NotificationCenter.NotificationCenter } } if (changed) { - MessagesStorage.getInstance().updateChatInfo(info.chat_id, info, true); + MessagesStorage.getInstance().updateChatInfo(chat_id, info, true); NotificationCenter.getInstance().postNotificationName(NotificationCenter.chatInfoDidLoaded, info.chat_id, info); + } else { + MessagesStorage.getInstance().updateChatInfo(chat_id, user.id, true, 0, 0); } + } else { + MessagesStorage.getInstance().updateChatInfo(chat_id, user.id, true, 0, 0); } } }); @@ -2575,6 +2569,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter message.to_id.chat_id = updates.chat_id; message.message = updates.message; message.date = updates.date; + message.flags = TLRPC.MESSAGE_FLAG_UNREAD; message.unread = true; message.media = new TLRPC.TL_messageMediaEmpty(); MessagesStorage.lastSeqValue = updates.seq; @@ -2641,6 +2636,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter message.message = updates.message; message.date = updates.date; message.unread = true; + message.flags = TLRPC.MESSAGE_FLAG_UNREAD; message.media = new TLRPC.TL_messageMediaEmpty(); MessagesStorage.lastSeqValue = updates.seq; MessagesStorage.lastPtsValue = updates.pts; @@ -2873,7 +2869,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter } else if (update instanceof TLRPC.TL_updateRestoreMessages) { MessagesStorage.lastPtsValue = update.pts; } else if (update instanceof TLRPC.TL_updateUserTyping || update instanceof TLRPC.TL_updateChatUserTyping) { - if (update.user_id != UserConfig.getClientUserId()) { + if (update.action instanceof TLRPC.TL_sendMessageTypingAction && update.user_id != UserConfig.getClientUserId()) { long uid = -update.chat_id; if (uid == 0) { uid = update.user_id; @@ -2919,6 +2915,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter newMessage.local_id = newMessage.id = UserConfig.getNewMessageId(); UserConfig.saveConfig(false); newMessage.unread = true; + newMessage.flags = TLRPC.MESSAGE_FLAG_UNREAD; newMessage.date = update.date; newMessage.from_id = update.user_id; newMessage.to_id = new TLRPC.TL_peerUser(); @@ -2964,6 +2961,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter newMessage.local_id = newMessage.id = UserConfig.getNewMessageId(); UserConfig.saveConfig(false); newMessage.unread = true; + newMessage.flags = TLRPC.MESSAGE_FLAG_UNREAD; newMessage.date = update.date; newMessage.from_id = 777000; newMessage.to_id = new TLRPC.TL_peerUser(); @@ -3509,6 +3507,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter newMessage.to_id = new TLRPC.TL_peerUser(); newMessage.random_id = message.random_id; newMessage.to_id.user_id = UserConfig.getClientUserId(); + newMessage.flags = TLRPC.MESSAGE_FLAG_UNREAD; newMessage.out = false; newMessage.unread = true; newMessage.dialog_id = ((long)chat.id) << 32; @@ -3657,6 +3656,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter } newMessage.local_id = newMessage.id = UserConfig.getNewMessageId(); UserConfig.saveConfig(false); + newMessage.flags = TLRPC.MESSAGE_FLAG_UNREAD; newMessage.unread = true; newMessage.date = message.date; newMessage.from_id = from_id; diff --git a/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java b/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java index 6b0459eb9..9661cc6e8 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java +++ b/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java @@ -1213,23 +1213,19 @@ public class MessagesStorage { SQLiteCursor cursor = database.queryFinalized("SELECT u.data, u.status, u.name FROM users as u INNER JOIN contacts as c ON u.uid = c.uid"); while (cursor.next()) { String name = cursor.stringValue(2); - String[] args = name.split(" "); - for (String str : args) { - if (str.startsWith(q)) { - ByteBufferDesc data = buffersStorage.getFreeBuffer(cursor.byteArrayLength(0)); - if (data != null && cursor.byteBufferValue(0, data.buffer) != 0) { - TLRPC.User user = (TLRPC.User)TLClassStore.Instance().TLdeserialize(data, data.readInt32()); - if (user.id != UserConfig.getClientUserId()) { - if (user.status != null) { - user.status.expires = cursor.intValue(1); - } - resultArrayNames.add(Utilities.generateSearchName(user.first_name, user.last_name, q)); - resultArray.add(user); + if (name.startsWith(q) || name.contains(" " + q)) { + ByteBufferDesc data = buffersStorage.getFreeBuffer(cursor.byteArrayLength(0)); + if (data != null && cursor.byteBufferValue(0, data.buffer) != 0) { + TLRPC.User user = (TLRPC.User)TLClassStore.Instance().TLdeserialize(data, data.readInt32()); + if (user.id != UserConfig.getClientUserId()) { + if (user.status != null) { + user.status.expires = cursor.intValue(1); } + resultArrayNames.add(Utilities.generateSearchName(user.first_name, user.last_name, q)); + resultArray.add(user); } - buffersStorage.reuseFreeBuffer(data); - break; } + buffersStorage.reuseFreeBuffer(data); } } cursor.dispose(); @@ -1238,30 +1234,26 @@ public class MessagesStorage { cursor = database.queryFinalized("SELECT q.data, q.name, q.user, q.g, q.authkey, q.ttl, u.data, u.status FROM enc_chats as q INNER JOIN dialogs as d ON (q.uid << 32) = d.did INNER JOIN users as u ON q.user = u.uid"); while (cursor.next()) { String name = cursor.stringValue(1); - String[] args = name.split(" "); - for (String arg : args) { - if (arg.startsWith(q)) { - ByteBufferDesc data = buffersStorage.getFreeBuffer(cursor.byteArrayLength(0)); - ByteBufferDesc data2 = buffersStorage.getFreeBuffer(cursor.byteArrayLength(6)); - if (data != null && cursor.byteBufferValue(0, data.buffer) != 0 && cursor.byteBufferValue(6, data2.buffer) != 0) { - TLRPC.EncryptedChat chat = (TLRPC.EncryptedChat) TLClassStore.Instance().TLdeserialize(data, data.readInt32()); - chat.user_id = cursor.intValue(2); - chat.a_or_b = cursor.byteArrayValue(3); - chat.auth_key = cursor.byteArrayValue(4); - chat.ttl = cursor.intValue(5); + if (name.startsWith(q) || name.contains(" " + q)) { + ByteBufferDesc data = buffersStorage.getFreeBuffer(cursor.byteArrayLength(0)); + ByteBufferDesc data2 = buffersStorage.getFreeBuffer(cursor.byteArrayLength(6)); + if (data != null && cursor.byteBufferValue(0, data.buffer) != 0 && cursor.byteBufferValue(6, data2.buffer) != 0) { + TLRPC.EncryptedChat chat = (TLRPC.EncryptedChat) TLClassStore.Instance().TLdeserialize(data, data.readInt32()); + chat.user_id = cursor.intValue(2); + chat.a_or_b = cursor.byteArrayValue(3); + chat.auth_key = cursor.byteArrayValue(4); + chat.ttl = cursor.intValue(5); - TLRPC.User user = (TLRPC.User)TLClassStore.Instance().TLdeserialize(data2, data2.readInt32()); - if (user.status != null) { - user.status.expires = cursor.intValue(7); - } - resultArrayNames.add(Html.fromHtml("" + ContactsController.formatName(user.first_name, user.last_name) + "")); - resultArray.add(chat); - encUsers.add(user); + TLRPC.User user = (TLRPC.User)TLClassStore.Instance().TLdeserialize(data2, data2.readInt32()); + if (user.status != null) { + user.status.expires = cursor.intValue(7); } - buffersStorage.reuseFreeBuffer(data); - buffersStorage.reuseFreeBuffer(data2); - break; + resultArrayNames.add(Html.fromHtml("" + ContactsController.formatName(user.first_name, user.last_name) + "")); + resultArray.add(chat); + encUsers.add(user); } + buffersStorage.reuseFreeBuffer(data); + buffersStorage.reuseFreeBuffer(data2); } } cursor.dispose(); @@ -1271,20 +1263,17 @@ public class MessagesStorage { while (cursor.next()) { String name = cursor.stringValue(1); String[] args = name.split(" "); - for (String arg : args) { - if (arg.startsWith(q)) { - ByteBufferDesc data = buffersStorage.getFreeBuffer(cursor.byteArrayLength(0)); - if (data != null && cursor.byteBufferValue(0, data.buffer) != 0) { - TLRPC.Chat chat = (TLRPC.Chat) TLClassStore.Instance().TLdeserialize(data, data.readInt32()); - if (!needEncrypted && chat.id < 0) { - continue; - } - resultArrayNames.add(Utilities.generateSearchName(chat.title, null, q)); - resultArray.add(chat); + if (name.startsWith(q) || name.contains(" " + q)) { + ByteBufferDesc data = buffersStorage.getFreeBuffer(cursor.byteArrayLength(0)); + if (data != null && cursor.byteBufferValue(0, data.buffer) != 0) { + TLRPC.Chat chat = (TLRPC.Chat) TLClassStore.Instance().TLdeserialize(data, data.readInt32()); + if (!needEncrypted && chat.id < 0) { + continue; } - buffersStorage.reuseFreeBuffer(data); - break; + resultArrayNames.add(Utilities.generateSearchName(chat.title, null, q)); + resultArray.add(chat); } + buffersStorage.reuseFreeBuffer(data); } } cursor.dispose(); diff --git a/TMessagesProj/src/main/java/org/telegram/android/SendMessagesHelper.java b/TMessagesProj/src/main/java/org/telegram/android/SendMessagesHelper.java index 4a0245596..990ce1785 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/SendMessagesHelper.java +++ b/TMessagesProj/src/main/java/org/telegram/android/SendMessagesHelper.java @@ -486,6 +486,7 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter } newMsg.local_id = newMsg.id = UserConfig.getNewMessageId(); newMsg.from_id = UserConfig.getClientUserId(); + newMsg.flags |= TLRPC.MESSAGE_FLAG_OUT; newMsg.out = true; UserConfig.saveConfig(false); } @@ -493,6 +494,7 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter newMsg.random_id = getNextRandomId(); } newMsg.date = ConnectionsManager.getInstance().getCurrentTime(); + newMsg.flags |= TLRPC.MESSAGE_FLAG_UNREAD; newMsg.unread = true; newMsg.dialog_id = peer; int lower_id = (int) peer; @@ -581,7 +583,7 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter performSendMessageRequest(reqSend, newMsgObj, null); } } else { - TLRPC.TL_decryptedMessage reqSend = new TLRPC.TL_decryptedMessage(); + TLRPC.TL_decryptedMessage_old reqSend = new TLRPC.TL_decryptedMessage_old(); reqSend.random_id = newMsg.random_id; reqSend.random_bytes = new byte[Math.max(1, (int) Math.ceil(Utilities.random.nextDouble() * 16))]; Utilities.random.nextBytes(reqSend.random_bytes); @@ -733,7 +735,7 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter } } } else { - TLRPC.TL_decryptedMessage reqSend = new TLRPC.TL_decryptedMessage(); + TLRPC.TL_decryptedMessage_old reqSend = new TLRPC.TL_decryptedMessage_old(); reqSend.random_id = newMsg.random_id; reqSend.random_bytes = new byte[Math.max(1, (int) Math.ceil(Utilities.random.nextDouble() * 16))]; Utilities.random.nextBytes(reqSend.random_bytes); @@ -1407,7 +1409,7 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter if (!(encryptedChat instanceof TLRPC.TL_encryptedChat)) { return; } - TLRPC.TL_decryptedMessageService reqSend = new TLRPC.TL_decryptedMessageService(); + TLRPC.TL_decryptedMessageService_old reqSend = new TLRPC.TL_decryptedMessageService_old(); reqSend.random_id = getNextRandomId(); reqSend.random_bytes = new byte[Math.max(1, (int)Math.ceil(Utilities.random.nextDouble() * 16))]; Utilities.random.nextBytes(reqSend.random_bytes); @@ -1420,7 +1422,7 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter if (!(encryptedChat instanceof TLRPC.TL_encryptedChat)) { return; } - TLRPC.TL_decryptedMessageService reqSend = new TLRPC.TL_decryptedMessageService(); + TLRPC.TL_decryptedMessageService_old reqSend = new TLRPC.TL_decryptedMessageService_old(); reqSend.random_id = getNextRandomId(); reqSend.random_bytes = new byte[Math.max(1, (int)Math.ceil(Utilities.random.nextDouble() * 16))]; Utilities.random.nextBytes(reqSend.random_bytes); @@ -1439,6 +1441,7 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter newMsg.local_id = newMsg.id = UserConfig.getNewMessageId(); newMsg.from_id = UserConfig.getClientUserId(); newMsg.unread = true; + newMsg.flags = TLRPC.MESSAGE_FLAG_UNREAD | TLRPC.MESSAGE_FLAG_OUT; newMsg.dialog_id = ((long)encryptedChat.id) << 32; newMsg.to_id = new TLRPC.TL_peerUser(); if (encryptedChat.participant_id == UserConfig.getClientUserId()) { @@ -1461,7 +1464,7 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter MessagesController.getInstance().updateInterfaceWithMessages(newMsg.dialog_id, objArr); NotificationCenter.getInstance().postNotificationName(NotificationCenter.dialogsNeedReload); - TLRPC.TL_decryptedMessageService reqSend = new TLRPC.TL_decryptedMessageService(); + TLRPC.TL_decryptedMessageService_old reqSend = new TLRPC.TL_decryptedMessageService_old(); reqSend.random_id = newMsg.random_id; reqSend.random_bytes = new byte[Math.max(1, (int)Math.ceil(Utilities.random.nextDouble() * 16))]; Utilities.random.nextBytes(reqSend.random_bytes); @@ -1486,6 +1489,7 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter newMsg.local_id = newMsg.id = UserConfig.getNewMessageId(); newMsg.from_id = UserConfig.getClientUserId(); newMsg.unread = true; + newMsg.flags = TLRPC.MESSAGE_FLAG_UNREAD | TLRPC.MESSAGE_FLAG_OUT; newMsg.dialog_id = ((long)encryptedChat.id) << 32; newMsg.to_id = new TLRPC.TL_peerUser(); if (encryptedChat.participant_id == UserConfig.getClientUserId()) { @@ -1508,7 +1512,7 @@ public class SendMessagesHelper implements NotificationCenter.NotificationCenter MessagesController.getInstance().updateInterfaceWithMessages(newMsg.dialog_id, objArr); NotificationCenter.getInstance().postNotificationName(NotificationCenter.dialogsNeedReload); - TLRPC.TL_decryptedMessageService reqSend = new TLRPC.TL_decryptedMessageService(); + TLRPC.TL_decryptedMessageService_old reqSend = new TLRPC.TL_decryptedMessageService_old(); reqSend.random_id = newMsg.random_id; reqSend.random_bytes = new byte[Math.max(1, (int)Math.ceil(Utilities.random.nextDouble() * 16))]; Utilities.random.nextBytes(reqSend.random_bytes); diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/BuildVars.java b/TMessagesProj/src/main/java/org/telegram/messenger/BuildVars.java index 6c3b530c8..a327cbfd6 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/BuildVars.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/BuildVars.java @@ -9,9 +9,9 @@ package org.telegram.messenger; public class BuildVars { - public static boolean DEBUG_VERSION = true; - public static int APP_ID = 2458; - public static String APP_HASH = "5bce48dc7d331e62c955669eb7233217"; + public static boolean DEBUG_VERSION = false; + public static int APP_ID = 0; //obtaion your own APP_ID at https://core.telegram.org/api/obtaining_api_id + public static String APP_HASH = ""; //obtaion your own APP_HASH at https://core.telegram.org/api/obtaining_api_id public static String HOCKEY_APP_HASH = "your-hockeyapp-api-key-here"; public static String GCM_SENDER_ID = "760348033672"; public static String SEND_LOGS_EMAIL = "email@gmail.com"; diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/ConnectionsManager.java b/TMessagesProj/src/main/java/org/telegram/messenger/ConnectionsManager.java index 8a476f6b1..a1c538a44 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/ConnectionsManager.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/ConnectionsManager.java @@ -833,7 +833,7 @@ public class ConnectionsManager implements Action.ActionDelegate, TcpConnection. } object = invoke; } - TLRPC.invokeWithLayer14 invoke = new TLRPC.invokeWithLayer14(); + TLRPC.invokeWithLayer17 invoke = new TLRPC.invokeWithLayer17(); invoke.query = object; FileLog.d("wrap in layer", "" + object); return invoke; @@ -1604,12 +1604,12 @@ public class ConnectionsManager implements Action.ActionDelegate, TcpConnection. TLRPC.TL_protoMessage message = networkMessage.protoMessage; if (BuildVars.DEBUG_VERSION) { - if (message.body instanceof TLRPC.invokeWithLayer14) { - FileLog.d("tmessages", connection.getSissionId() + ":DC" + datacenter.datacenterId + "> Send message (" + message.seqno + ", " + message.msg_id + "): " + ((TLRPC.invokeWithLayer14)message.body).query); + if (message.body instanceof TLRPC.invokeWithLayer17) { + FileLog.d("tmessages", connection.getSissionId() + ":DC" + datacenter.datacenterId + "> Send message (" + message.seqno + ", " + message.msg_id + "): " + ((TLRPC.invokeWithLayer17)message.body).query); } else if (message.body instanceof TLRPC.initConnection) { TLRPC.initConnection r = (TLRPC.initConnection)message.body; - if (r.query instanceof TLRPC.invokeWithLayer14) { - FileLog.d("tmessages", connection.getSissionId() + ":DC" + datacenter.datacenterId + "> Send message (" + message.seqno + ", " + message.msg_id + "): " + ((TLRPC.invokeWithLayer14)r.query).query); + if (r.query instanceof TLRPC.invokeWithLayer17) { + FileLog.d("tmessages", connection.getSissionId() + ":DC" + datacenter.datacenterId + "> Send message (" + message.seqno + ", " + message.msg_id + "): " + ((TLRPC.invokeWithLayer17)r.query).query); } else { FileLog.d("tmessages", connection.getSissionId() + ":DC" + datacenter.datacenterId + "> Send message (" + message.seqno + ", " + message.msg_id + "): " + r.query); } @@ -1644,12 +1644,12 @@ public class ConnectionsManager implements Action.ActionDelegate, TcpConnection. TLRPC.TL_protoMessage message = networkMessage.protoMessage; containerMessages.add(message); if (BuildVars.DEBUG_VERSION) { - if (message.body instanceof TLRPC.invokeWithLayer14) { - FileLog.d("tmessages", connection.getSissionId() + ":DC" + datacenter.datacenterId + "> Send message (" + message.seqno + ", " + message.msg_id + "): " + ((TLRPC.invokeWithLayer14)message.body).query); + if (message.body instanceof TLRPC.invokeWithLayer17) { + FileLog.d("tmessages", connection.getSissionId() + ":DC" + datacenter.datacenterId + "> Send message (" + message.seqno + ", " + message.msg_id + "): " + ((TLRPC.invokeWithLayer17)message.body).query); } else if (message.body instanceof TLRPC.initConnection) { TLRPC.initConnection r = (TLRPC.initConnection)message.body; - if (r.query instanceof TLRPC.invokeWithLayer14) { - FileLog.d("tmessages", connection.getSissionId() + ":DC" + datacenter.datacenterId + "> Send message (" + message.seqno + ", " + message.msg_id + "): " + ((TLRPC.invokeWithLayer14)r.query).query); + if (r.query instanceof TLRPC.invokeWithLayer17) { + FileLog.d("tmessages", connection.getSissionId() + ":DC" + datacenter.datacenterId + "> Send message (" + message.seqno + ", " + message.msg_id + "): " + ((TLRPC.invokeWithLayer17)r.query).query); } else { FileLog.d("tmessages", connection.getSissionId() + ":DC" + datacenter.datacenterId + "> Send message (" + message.seqno + ", " + message.msg_id + "): " + r.query); } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoader.java b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoader.java index 9b1d25938..4d45efa60 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoader.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoader.java @@ -593,38 +593,42 @@ public class FileLoader { } public static File getPathToAttach(TLObject attach) { + return getPathToAttach(attach, false); + } + + public static File getPathToAttach(TLObject attach, boolean forceCache) { File dir = null; if (attach instanceof TLRPC.Video) { TLRPC.Video video = (TLRPC.Video)attach; - if (video.key != null) { + if (forceCache || 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) { + if (forceCache || 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 || photoSize.location.volume_id == Integer.MIN_VALUE && photoSize.location.local_id < 0) { + if (forceCache || photoSize.location == null || photoSize.location.key != null || photoSize.location.volume_id == Integer.MIN_VALUE && photoSize.location.local_id < 0) { 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) { + if (forceCache || 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 || fileLocation.volume_id == Integer.MIN_VALUE && fileLocation.local_id < 0) { + if (forceCache || fileLocation.key != null || fileLocation.volume_id == Integer.MIN_VALUE && fileLocation.local_id < 0) { dir = getInstance().getDirectory(MEDIA_DIR_CACHE); } else { dir = getInstance().getDirectory(MEDIA_DIR_IMAGE); diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/TLClassStore.java b/TMessagesProj/src/main/java/org/telegram/messenger/TLClassStore.java index 3961c717e..164abd926 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/TLClassStore.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/TLClassStore.java @@ -24,6 +24,10 @@ public class TLClassStore { classStore.put(TLRPC.TL_error.constructor, TLRPC.TL_error.class); classStore.put(TLRPC.TL_messages_sentEncryptedMessage.constructor, TLRPC.TL_messages_sentEncryptedMessage.class); classStore.put(TLRPC.TL_messages_sentEncryptedFile.constructor, TLRPC.TL_messages_sentEncryptedFile.class); + classStore.put(TLRPC.TL_notifyAll.constructor, TLRPC.TL_notifyAll.class); + classStore.put(TLRPC.TL_notifyChats.constructor, TLRPC.TL_notifyChats.class); + classStore.put(TLRPC.TL_notifyUsers.constructor, TLRPC.TL_notifyUsers.class); + classStore.put(TLRPC.TL_notifyPeer.constructor, TLRPC.TL_notifyPeer.class); classStore.put(TLRPC.TL_auth_checkedPhone.constructor, TLRPC.TL_auth_checkedPhone.class); classStore.put(TLRPC.TL_msgs_ack.constructor, TLRPC.TL_msgs_ack.class); classStore.put(TLRPC.TL_messages_chatFull.constructor, TLRPC.TL_messages_chatFull.class); @@ -54,6 +58,16 @@ public class TLClassStore { classStore.put(TLRPC.TL_message.constructor, TLRPC.TL_message.class); classStore.put(TLRPC.TL_messageService.constructor, TLRPC.TL_messageService.class); classStore.put(TLRPC.TL_inputPhoneContact.constructor, TLRPC.TL_inputPhoneContact.class); + classStore.put(TLRPC.TL_sendMessageGeoLocationAction.constructor, TLRPC.TL_sendMessageGeoLocationAction.class); + classStore.put(TLRPC.TL_sendMessageChooseContactAction.constructor, TLRPC.TL_sendMessageChooseContactAction.class); + classStore.put(TLRPC.TL_sendMessageTypingAction.constructor, TLRPC.TL_sendMessageTypingAction.class); + classStore.put(TLRPC.TL_sendMessageUploadDocumentAction.constructor, TLRPC.TL_sendMessageUploadDocumentAction.class); + classStore.put(TLRPC.TL_sendMessageRecordVideoAction.constructor, TLRPC.TL_sendMessageRecordVideoAction.class); + classStore.put(TLRPC.TL_sendMessageUploadPhotoAction.constructor, TLRPC.TL_sendMessageUploadPhotoAction.class); + classStore.put(TLRPC.TL_sendMessageUploadVideoAction.constructor, TLRPC.TL_sendMessageUploadVideoAction.class); + classStore.put(TLRPC.TL_sendMessageUploadAudioAction.constructor, TLRPC.TL_sendMessageUploadAudioAction.class); + classStore.put(TLRPC.TL_sendMessageCancelAction.constructor, TLRPC.TL_sendMessageCancelAction.class); + classStore.put(TLRPC.TL_sendMessageRecordAudioAction.constructor, TLRPC.TL_sendMessageRecordAudioAction.class); classStore.put(TLRPC.TL_invokeAfterMsg.constructor, TLRPC.TL_invokeAfterMsg.class); classStore.put(TLRPC.TL_messageMediaVideo.constructor, TLRPC.TL_messageMediaVideo.class); classStore.put(TLRPC.TL_messageMediaPhoto.constructor, TLRPC.TL_messageMediaPhoto.class); @@ -63,6 +77,7 @@ public class TLClassStore { classStore.put(TLRPC.TL_messageMediaAudio.constructor, TLRPC.TL_messageMediaAudio.class); classStore.put(TLRPC.TL_messageMediaContact.constructor, TLRPC.TL_messageMediaContact.class); classStore.put(TLRPC.TL_messageMediaUnsupported.constructor, TLRPC.TL_messageMediaUnsupported.class); + classStore.put(TLRPC.TL_auth_sentAppCode.constructor, TLRPC.TL_auth_sentAppCode.class); classStore.put(TLRPC.TL_auth_sentCode.constructor, TLRPC.TL_auth_sentCode.class); classStore.put(TLRPC.TL_peerNotifySettingsEmpty.constructor, TLRPC.TL_peerNotifySettingsEmpty.class); classStore.put(TLRPC.TL_peerNotifySettings.constructor, TLRPC.TL_peerNotifySettings.class); @@ -183,6 +198,7 @@ public class TLClassStore { classStore.put(TLRPC.TL_updateReadMessages.constructor, TLRPC.TL_updateReadMessages.class); classStore.put(TLRPC.TL_updateChatParticipantDelete.constructor, TLRPC.TL_updateChatParticipantDelete.class); classStore.put(TLRPC.TL_updateRestoreMessages.constructor, TLRPC.TL_updateRestoreMessages.class); + classStore.put(TLRPC.TL_updateNotifySettings.constructor, TLRPC.TL_updateNotifySettings.class); classStore.put(TLRPC.TL_updateUserTyping.constructor, TLRPC.TL_updateUserTyping.class); classStore.put(TLRPC.TL_updateChatUserTyping.constructor, TLRPC.TL_updateChatUserTyping.class); classStore.put(TLRPC.TL_updateUserName.constructor, TLRPC.TL_updateUserName.class); @@ -194,6 +210,7 @@ public class TLClassStore { classStore.put(TLRPC.TL_updateDcOptions.constructor, TLRPC.TL_updateDcOptions.class); classStore.put(TLRPC.TL_updateChatParticipants.constructor, TLRPC.TL_updateChatParticipants.class); classStore.put(TLRPC.TL_updateEncryption.constructor, TLRPC.TL_updateEncryption.class); + classStore.put(TLRPC.TL_updateUserBlocked.constructor, TLRPC.TL_updateUserBlocked.class); classStore.put(TLRPC.TL_updateActivation.constructor, TLRPC.TL_updateActivation.class); classStore.put(TLRPC.TL_updateNewAuthorization.constructor, TLRPC.TL_updateNewAuthorization.class); classStore.put(TLRPC.TL_updateNewGeoChatMessage.constructor, TLRPC.TL_updateNewGeoChatMessage.class); @@ -208,7 +225,13 @@ public class TLClassStore { classStore.put(TLRPC.TL_inputEncryptedFileBigUploaded.constructor, TLRPC.TL_inputEncryptedFileBigUploaded.class); classStore.put(TLRPC.TL_inputEncryptedFileEmpty.constructor, TLRPC.TL_inputEncryptedFileEmpty.class); classStore.put(TLRPC.TL_inputEncryptedFileUploaded.constructor, TLRPC.TL_inputEncryptedFileUploaded.class); + classStore.put(TLRPC.TL_decryptedMessageActionFlushHistory.constructor, TLRPC.TL_decryptedMessageActionFlushHistory.class); + classStore.put(TLRPC.TL_decryptedMessageActionNotifyLayer.constructor, TLRPC.TL_decryptedMessageActionNotifyLayer.class); classStore.put(TLRPC.TL_decryptedMessageActionSetMessageTTL.constructor, TLRPC.TL_decryptedMessageActionSetMessageTTL.class); + classStore.put(TLRPC.TL_decryptedMessageActionDeleteMessages.constructor, TLRPC.TL_decryptedMessageActionDeleteMessages.class); + classStore.put(TLRPC.TL_decryptedMessageActionTyping.constructor, TLRPC.TL_decryptedMessageActionTyping.class); + classStore.put(TLRPC.TL_decryptedMessageActionReadMessages.constructor, TLRPC.TL_decryptedMessageActionReadMessages.class); + classStore.put(TLRPC.TL_decryptedMessageActionScreenshotMessages.constructor, TLRPC.TL_decryptedMessageActionScreenshotMessages.class); classStore.put(TLRPC.TL_contacts_myLinkRequested.constructor, TLRPC.TL_contacts_myLinkRequested.class); classStore.put(TLRPC.TL_contacts_myLinkContact.constructor, TLRPC.TL_contacts_myLinkContact.class); classStore.put(TLRPC.TL_contacts_myLinkEmpty.constructor, TLRPC.TL_contacts_myLinkEmpty.class); @@ -228,6 +251,7 @@ public class TLClassStore { classStore.put(TLRPC.TL_config.constructor, TLRPC.TL_config.class); classStore.put(TLRPC.TL_inputAudio.constructor, TLRPC.TL_inputAudio.class); classStore.put(TLRPC.TL_inputAudioEmpty.constructor, TLRPC.TL_inputAudioEmpty.class); + classStore.put(TLRPC.TL_help_support.constructor, TLRPC.TL_help_support.class); classStore.put(TLRPC.TL_messages_chats.constructor, TLRPC.TL_messages_chats.class); classStore.put(TLRPC.TL_contacts_found.constructor, TLRPC.TL_contacts_found.class); classStore.put(TLRPC.TL_chatParticipants.constructor, TLRPC.TL_chatParticipants.class); @@ -245,18 +269,21 @@ public class TLClassStore { classStore.put(TLRPC.TL_chatEmpty.constructor, TLRPC.TL_chatEmpty.class); classStore.put(TLRPC.TL_chat.constructor, TLRPC.TL_chat.class); classStore.put(TLRPC.TL_storage_fileUnknown.constructor, TLRPC.TL_storage_fileUnknown.class); + classStore.put(TLRPC.TL_storage_fileMp4.constructor, TLRPC.TL_storage_fileMp4.class); classStore.put(TLRPC.TL_storage_fileWebp.constructor, TLRPC.TL_storage_fileWebp.class); classStore.put(TLRPC.TL_storage_filePng.constructor, TLRPC.TL_storage_filePng.class); classStore.put(TLRPC.TL_storage_fileGif.constructor, TLRPC.TL_storage_fileGif.class); - classStore.put(TLRPC.TL_storage_fileMov.constructor, TLRPC.TL_storage_fileMov.class); + classStore.put(TLRPC.TL_storage_filePdf.constructor, TLRPC.TL_storage_filePdf.class); classStore.put(TLRPC.TL_storage_fileMp3.constructor, TLRPC.TL_storage_fileMp3.class); classStore.put(TLRPC.TL_storage_fileJpeg.constructor, TLRPC.TL_storage_fileJpeg.class); + classStore.put(TLRPC.TL_storage_fileMov.constructor, TLRPC.TL_storage_fileMov.class); classStore.put(TLRPC.TL_storage_filePartial.constructor, TLRPC.TL_storage_filePartial.class); - classStore.put(TLRPC.TL_storage_fileMp4.constructor, TLRPC.TL_storage_fileMp4.class); classStore.put(TLRPC.TL_inputMessagesFilterVideo.constructor, TLRPC.TL_inputMessagesFilterVideo.class); classStore.put(TLRPC.TL_inputMessagesFilterEmpty.constructor, TLRPC.TL_inputMessagesFilterEmpty.class); classStore.put(TLRPC.TL_inputMessagesFilterPhotos.constructor, TLRPC.TL_inputMessagesFilterPhotos.class); classStore.put(TLRPC.TL_inputMessagesFilterPhotoVideo.constructor, TLRPC.TL_inputMessagesFilterPhotoVideo.class); + classStore.put(TLRPC.TL_inputMessagesFilterDocument.constructor, TLRPC.TL_inputMessagesFilterDocument.class); + classStore.put(TLRPC.TL_inputMessagesFilterAudio.constructor, TLRPC.TL_inputMessagesFilterAudio.class); classStore.put(TLRPC.TL_msgs_state_info.constructor, TLRPC.TL_msgs_state_info.class); classStore.put(TLRPC.TL_upload_file.constructor, TLRPC.TL_upload_file.class); classStore.put(TLRPC.TL_dialog.constructor, TLRPC.TL_dialog.class); @@ -310,117 +337,6 @@ public class TLClassStore { classStore.put(TLRPC.TL_inputPhotoCrop.constructor, TLRPC.TL_inputPhotoCrop.class); classStore.put(TLRPC.TL_messages_dialogs.constructor, TLRPC.TL_messages_dialogs.class); classStore.put(TLRPC.TL_messages_dialogsSlice.constructor, TLRPC.TL_messages_dialogsSlice.class); - classStore.put(TLRPC.TL_req_pq.constructor, TLRPC.TL_req_pq.class); - classStore.put(TLRPC.TL_req_DH_params.constructor, TLRPC.TL_req_DH_params.class); - classStore.put(TLRPC.TL_set_client_DH_params.constructor, TLRPC.TL_set_client_DH_params.class); - classStore.put(TLRPC.TL_ping.constructor, TLRPC.TL_ping.class); - classStore.put(TLRPC.TL_ping_delay_disconnect.constructor, TLRPC.TL_ping_delay_disconnect.class); - classStore.put(TLRPC.TL_destroy_session.constructor, TLRPC.TL_destroy_session.class); - classStore.put(TLRPC.TL_destroy_sessions.constructor, TLRPC.TL_destroy_sessions.class); - classStore.put(TLRPC.TL_get_future_salts.constructor, TLRPC.TL_get_future_salts.class); - classStore.put(TLRPC.TL_rpc_drop_answer.constructor, TLRPC.TL_rpc_drop_answer.class); - classStore.put(TLRPC.TL_auth_checkPhone.constructor, TLRPC.TL_auth_checkPhone.class); - classStore.put(TLRPC.TL_auth_sendCode.constructor, TLRPC.TL_auth_sendCode.class); - classStore.put(TLRPC.TL_auth_sendCall.constructor, TLRPC.TL_auth_sendCall.class); - classStore.put(TLRPC.TL_auth_signUp.constructor, TLRPC.TL_auth_signUp.class); - classStore.put(TLRPC.TL_auth_signIn.constructor, TLRPC.TL_auth_signIn.class); - classStore.put(TLRPC.TL_auth_logOut.constructor, TLRPC.TL_auth_logOut.class); - classStore.put(TLRPC.TL_auth_resetAuthorizations.constructor, TLRPC.TL_auth_resetAuthorizations.class); - classStore.put(TLRPC.TL_auth_sendInvites.constructor, TLRPC.TL_auth_sendInvites.class); - classStore.put(TLRPC.TL_auth_exportAuthorization.constructor, TLRPC.TL_auth_exportAuthorization.class); - classStore.put(TLRPC.TL_auth_importAuthorization.constructor, TLRPC.TL_auth_importAuthorization.class); - classStore.put(TLRPC.TL_account_registerDevice.constructor, TLRPC.TL_account_registerDevice.class); - classStore.put(TLRPC.TL_account_unregisterDevice.constructor, TLRPC.TL_account_unregisterDevice.class); - classStore.put(TLRPC.TL_account_updateNotifySettings.constructor, TLRPC.TL_account_updateNotifySettings.class); - classStore.put(TLRPC.TL_account_getNotifySettings.constructor, TLRPC.TL_account_getNotifySettings.class); - classStore.put(TLRPC.TL_account_resetNotifySettings.constructor, TLRPC.TL_account_resetNotifySettings.class); - classStore.put(TLRPC.TL_account_updateProfile.constructor, TLRPC.TL_account_updateProfile.class); - classStore.put(TLRPC.TL_account_updateStatus.constructor, TLRPC.TL_account_updateStatus.class); - classStore.put(TLRPC.TL_account_getWallPapers.constructor, TLRPC.TL_account_getWallPapers.class); - classStore.put(TLRPC.TL_users_getUsers.constructor, TLRPC.TL_users_getUsers.class); - classStore.put(TLRPC.TL_users_getFullUser.constructor, TLRPC.TL_users_getFullUser.class); - classStore.put(TLRPC.TL_contacts_getStatuses.constructor, TLRPC.TL_contacts_getStatuses.class); - classStore.put(TLRPC.TL_contacts_getContacts.constructor, TLRPC.TL_contacts_getContacts.class); - classStore.put(TLRPC.TL_contacts_importContacts.constructor, TLRPC.TL_contacts_importContacts.class); - classStore.put(TLRPC.TL_contacts_search.constructor, TLRPC.TL_contacts_search.class); - classStore.put(TLRPC.TL_contacts_getSuggested.constructor, TLRPC.TL_contacts_getSuggested.class); - classStore.put(TLRPC.TL_contacts_deleteContact.constructor, TLRPC.TL_contacts_deleteContact.class); - classStore.put(TLRPC.TL_contacts_deleteContacts.constructor, TLRPC.TL_contacts_deleteContacts.class); - classStore.put(TLRPC.TL_contacts_block.constructor, TLRPC.TL_contacts_block.class); - classStore.put(TLRPC.TL_contacts_unblock.constructor, TLRPC.TL_contacts_unblock.class); - classStore.put(TLRPC.TL_contacts_getBlocked.constructor, TLRPC.TL_contacts_getBlocked.class); - classStore.put(TLRPC.TL_messages_getMessages.constructor, TLRPC.TL_messages_getMessages.class); - classStore.put(TLRPC.TL_messages_getDialogs.constructor, TLRPC.TL_messages_getDialogs.class); - classStore.put(TLRPC.TL_messages_getHistory.constructor, TLRPC.TL_messages_getHistory.class); - classStore.put(TLRPC.TL_messages_search.constructor, TLRPC.TL_messages_search.class); - classStore.put(TLRPC.TL_messages_readHistory.constructor, TLRPC.TL_messages_readHistory.class); - classStore.put(TLRPC.TL_messages_deleteHistory.constructor, TLRPC.TL_messages_deleteHistory.class); - classStore.put(TLRPC.TL_messages_deleteMessages.constructor, TLRPC.TL_messages_deleteMessages.class); - classStore.put(TLRPC.TL_messages_restoreMessages.constructor, TLRPC.TL_messages_restoreMessages.class); - classStore.put(TLRPC.TL_messages_receivedMessages.constructor, TLRPC.TL_messages_receivedMessages.class); - classStore.put(TLRPC.TL_messages_setTyping.constructor, TLRPC.TL_messages_setTyping.class); - classStore.put(TLRPC.TL_messages_sendMessage.constructor, TLRPC.TL_messages_sendMessage.class); - classStore.put(TLRPC.TL_messages_sendMedia.constructor, TLRPC.TL_messages_sendMedia.class); - classStore.put(TLRPC.TL_messages_forwardMessages.constructor, TLRPC.TL_messages_forwardMessages.class); - classStore.put(TLRPC.TL_messages_getChats.constructor, TLRPC.TL_messages_getChats.class); - classStore.put(TLRPC.TL_messages_getFullChat.constructor, TLRPC.TL_messages_getFullChat.class); - classStore.put(TLRPC.TL_messages_editChatTitle.constructor, TLRPC.TL_messages_editChatTitle.class); - classStore.put(TLRPC.TL_messages_editChatPhoto.constructor, TLRPC.TL_messages_editChatPhoto.class); - classStore.put(TLRPC.TL_messages_addChatUser.constructor, TLRPC.TL_messages_addChatUser.class); - classStore.put(TLRPC.TL_messages_deleteChatUser.constructor, TLRPC.TL_messages_deleteChatUser.class); - classStore.put(TLRPC.TL_messages_createChat.constructor, TLRPC.TL_messages_createChat.class); - classStore.put(TLRPC.TL_updates_getState.constructor, TLRPC.TL_updates_getState.class); - classStore.put(TLRPC.TL_updates_getDifference.constructor, TLRPC.TL_updates_getDifference.class); - classStore.put(TLRPC.TL_photos_updateProfilePhoto.constructor, TLRPC.TL_photos_updateProfilePhoto.class); - classStore.put(TLRPC.TL_photos_uploadProfilePhoto.constructor, TLRPC.TL_photos_uploadProfilePhoto.class); - classStore.put(TLRPC.TL_upload_saveFilePart.constructor, TLRPC.TL_upload_saveFilePart.class); - classStore.put(TLRPC.TL_upload_getFile.constructor, TLRPC.TL_upload_getFile.class); - classStore.put(TLRPC.TL_help_getConfig.constructor, TLRPC.TL_help_getConfig.class); - classStore.put(TLRPC.TL_help_getNearestDc.constructor, TLRPC.TL_help_getNearestDc.class); - classStore.put(TLRPC.TL_help_getAppUpdate.constructor, TLRPC.TL_help_getAppUpdate.class); - classStore.put(TLRPC.TL_help_saveAppLog.constructor, TLRPC.TL_help_saveAppLog.class); - classStore.put(TLRPC.TL_help_getInviteText.constructor, TLRPC.TL_help_getInviteText.class); - classStore.put(TLRPC.TL_photos_getUserPhotos.constructor, TLRPC.TL_photos_getUserPhotos.class); - classStore.put(TLRPC.TL_messages_forwardMessage.constructor, TLRPC.TL_messages_forwardMessage.class); - classStore.put(TLRPC.TL_messages_sendBroadcast.constructor, TLRPC.TL_messages_sendBroadcast.class); - classStore.put(TLRPC.TL_geochats_getLocated.constructor, TLRPC.TL_geochats_getLocated.class); - classStore.put(TLRPC.TL_geochats_getRecents.constructor, TLRPC.TL_geochats_getRecents.class); - classStore.put(TLRPC.TL_geochats_checkin.constructor, TLRPC.TL_geochats_checkin.class); - classStore.put(TLRPC.TL_geochats_getFullChat.constructor, TLRPC.TL_geochats_getFullChat.class); - classStore.put(TLRPC.TL_geochats_editChatTitle.constructor, TLRPC.TL_geochats_editChatTitle.class); - classStore.put(TLRPC.TL_geochats_editChatPhoto.constructor, TLRPC.TL_geochats_editChatPhoto.class); - classStore.put(TLRPC.TL_geochats_search.constructor, TLRPC.TL_geochats_search.class); - classStore.put(TLRPC.TL_geochats_getHistory.constructor, TLRPC.TL_geochats_getHistory.class); - classStore.put(TLRPC.TL_geochats_setTyping.constructor, TLRPC.TL_geochats_setTyping.class); - classStore.put(TLRPC.TL_geochats_sendMessage.constructor, TLRPC.TL_geochats_sendMessage.class); - classStore.put(TLRPC.TL_geochats_sendMedia.constructor, TLRPC.TL_geochats_sendMedia.class); - classStore.put(TLRPC.TL_geochats_createGeoChat.constructor, TLRPC.TL_geochats_createGeoChat.class); - classStore.put(TLRPC.TL_messages_getDhConfig.constructor, TLRPC.TL_messages_getDhConfig.class); - classStore.put(TLRPC.TL_messages_requestEncryption.constructor, TLRPC.TL_messages_requestEncryption.class); - classStore.put(TLRPC.TL_messages_acceptEncryption.constructor, TLRPC.TL_messages_acceptEncryption.class); - classStore.put(TLRPC.TL_messages_discardEncryption.constructor, TLRPC.TL_messages_discardEncryption.class); - classStore.put(TLRPC.TL_messages_setEncryptedTyping.constructor, TLRPC.TL_messages_setEncryptedTyping.class); - classStore.put(TLRPC.TL_messages_readEncryptedHistory.constructor, TLRPC.TL_messages_readEncryptedHistory.class); - classStore.put(TLRPC.TL_messages_sendEncrypted.constructor, TLRPC.TL_messages_sendEncrypted.class); - classStore.put(TLRPC.TL_messages_sendEncryptedFile.constructor, TLRPC.TL_messages_sendEncryptedFile.class); - classStore.put(TLRPC.TL_messages_sendEncryptedService.constructor, TLRPC.TL_messages_sendEncryptedService.class); - classStore.put(TLRPC.TL_messages_receivedQueue.constructor, TLRPC.TL_messages_receivedQueue.class); - classStore.put(TLRPC.TL_upload_saveBigFilePart.constructor, TLRPC.TL_upload_saveBigFilePart.class); - classStore.put(TLRPC.TL_help_support.constructor, TLRPC.TL_help_support.class); - classStore.put(TLRPC.TL_help_getSupport.constructor, TLRPC.TL_help_getSupport.class); - classStore.put(TLRPC.TL_decryptedMessageActionDeleteMessages.constructor, TLRPC.TL_decryptedMessageActionDeleteMessages.class); - classStore.put(TLRPC.TL_decryptedMessageActionFlushHistory.constructor, TLRPC.TL_decryptedMessageActionFlushHistory.class); - classStore.put(TLRPC.TL_decryptedMessageActionScreenshotMessages.constructor, TLRPC.TL_decryptedMessageActionScreenshotMessages.class); - classStore.put(TLRPC.TL_messageEcryptedAction.constructor, TLRPC.TL_messageEcryptedAction.class); - classStore.put(TLRPC.TL_decryptedMessageActionNotifyLayer.constructor, TLRPC.TL_decryptedMessageActionNotifyLayer.class); - classStore.put(TLRPC.TL_decryptedMessageActionReadMessages.constructor, TLRPC.TL_decryptedMessageActionReadMessages.class); - classStore.put(TLRPC.TL_updateNotifySettings.constructor, TLRPC.TL_updateNotifySettings.class); - classStore.put(TLRPC.TL_updateUserBlocked.constructor, TLRPC.TL_updateUserBlocked.class); - classStore.put(TLRPC.TL_notifyAll.constructor, TLRPC.TL_notifyAll.class); - classStore.put(TLRPC.TL_notifyChats.constructor, TLRPC.TL_notifyChats.class); - classStore.put(TLRPC.TL_notifyUsers.constructor, TLRPC.TL_notifyUsers.class); - classStore.put(TLRPC.TL_notifyPeer.constructor, TLRPC.TL_notifyPeer.class); - classStore.put(TLRPC.TL_photos_deletePhotos.constructor, TLRPC.TL_photos_deletePhotos.class); classStore.put(TLRPC.TL_msg_container.constructor, TLRPC.TL_msg_container.class); classStore.put(TLRPC.TL_fileEncryptedLocation.constructor, TLRPC.TL_fileEncryptedLocation.class); @@ -441,6 +357,11 @@ public class TLClassStore { classStore.put(TLRPC.TL_audio_old.constructor, TLRPC.TL_audio_old.class); classStore.put(TLRPC.TL_video_old.constructor, TLRPC.TL_video_old.class); classStore.put(TLRPC.TL_messageActionCreatedBroadcastList.constructor, TLRPC.TL_messageActionCreatedBroadcastList.class); + classStore.put(TLRPC.TL_messageForwarded_old.constructor, TLRPC.TL_messageForwarded_old.class); + classStore.put(TLRPC.TL_message_old.constructor, TLRPC.TL_message_old.class); + classStore.put(TLRPC.TL_messageService_old.constructor, TLRPC.TL_messageService_old.class); + classStore.put(TLRPC.TL_decryptedMessageService_old.constructor, TLRPC.TL_decryptedMessageService_old.class); + classStore.put(TLRPC.TL_decryptedMessage_old.constructor, TLRPC.TL_decryptedMessage_old.class); } static TLClassStore store = null; diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/TLRPC.java b/TMessagesProj/src/main/java/org/telegram/messenger/TLRPC.java index 3f08baa4a..111255042 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/TLRPC.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/TLRPC.java @@ -13,6 +13,10 @@ import java.util.Locale; @SuppressWarnings("unchecked") public class TLRPC { + + public static int MESSAGE_FLAG_UNREAD = 1; + public static int MESSAGE_FLAG_OUT = 2; + public static class ChatPhoto extends TLObject { public FileLocation photo_small; public FileLocation photo_big; @@ -815,32 +819,6 @@ public class TLRPC { } } - public static class TL_messageService extends Message { - public static int constructor = 0x9f8d60bb; - - - public void readParams(AbsSerializedData stream) { - id = stream.readInt32(); - from_id = stream.readInt32(); - to_id = (Peer)TLClassStore.Instance().TLdeserialize(stream, stream.readInt32()); - out = stream.readBool(); - unread = stream.readBool(); - date = stream.readInt32(); - action = (MessageAction)TLClassStore.Instance().TLdeserialize(stream, stream.readInt32()); - } - - public void serializeToStream(AbsSerializedData stream) { - stream.writeInt32(constructor); - stream.writeInt32(id); - stream.writeInt32(from_id); - to_id.serializeToStream(stream); - stream.writeBool(out); - stream.writeBool(unread); - stream.writeInt32(date); - action.serializeToStream(stream); - } - } - public static class TL_inputPhoneContact extends TLObject { public static int constructor = 0xf392b7f4; @@ -865,6 +843,99 @@ public class TLRPC { } } + public static class SendMessageAction extends TLObject { + } + + public static class TL_sendMessageGeoLocationAction extends SendMessageAction { + public static int constructor = 0x176f8ba1; + + + public void serializeToStream(AbsSerializedData stream) { + stream.writeInt32(constructor); + } + } + + public static class TL_sendMessageChooseContactAction extends SendMessageAction { + public static int constructor = 0x628cbc6f; + + + public void serializeToStream(AbsSerializedData stream) { + stream.writeInt32(constructor); + } + } + + public static class TL_sendMessageTypingAction extends SendMessageAction { + public static int constructor = 0x16bf744e; + + + public void serializeToStream(AbsSerializedData stream) { + stream.writeInt32(constructor); + } + } + + public static class TL_sendMessageUploadDocumentAction extends SendMessageAction { + public static int constructor = 0x8faee98e; + + + public void serializeToStream(AbsSerializedData stream) { + stream.writeInt32(constructor); + } + } + + public static class TL_sendMessageRecordVideoAction extends SendMessageAction { + public static int constructor = 0xa187d66f; + + + public void serializeToStream(AbsSerializedData stream) { + stream.writeInt32(constructor); + } + } + + public static class TL_sendMessageUploadPhotoAction extends SendMessageAction { + public static int constructor = 0x990a3c1a; + + + public void serializeToStream(AbsSerializedData stream) { + stream.writeInt32(constructor); + } + } + + public static class TL_sendMessageUploadVideoAction extends SendMessageAction { + public static int constructor = 0x92042ff7; + + + public void serializeToStream(AbsSerializedData stream) { + stream.writeInt32(constructor); + } + } + + public static class TL_sendMessageUploadAudioAction extends SendMessageAction { + public static int constructor = 0xe6ac8a6f; + + + public void serializeToStream(AbsSerializedData stream) { + stream.writeInt32(constructor); + } + } + + public static class TL_sendMessageCancelAction extends SendMessageAction { + public static int constructor = 0xfd5ec8f5; + + + public void serializeToStream(AbsSerializedData stream) { + stream.writeInt32(constructor); + } + } + + public static class TL_sendMessageRecordAudioAction extends SendMessageAction { + public static int constructor = 0xd52f73f7; + + + public void serializeToStream(AbsSerializedData stream) { + stream.writeInt32(constructor); + } + } + public static class TL_invokeAfterMsg extends TLObject { public static int constructor = 0xcb9f372d; @@ -1009,13 +1080,36 @@ public class TLRPC { } } - public static class TL_auth_sentCode extends TLObject { - public static int constructor = 0xefed51d9; - + public static class auth_SentCode extends TLObject { public boolean phone_registered; public String phone_code_hash; public int send_call_timeout; public boolean is_password; + } + + public static class TL_auth_sentAppCode extends auth_SentCode { + public static int constructor = 0xe325edcf; + + + public void readParams(AbsSerializedData stream) { + phone_registered = stream.readBool(); + phone_code_hash = stream.readString(); + send_call_timeout = stream.readInt32(); + is_password = stream.readBool(); + } + + public void serializeToStream(AbsSerializedData stream) { + stream.writeInt32(constructor); + stream.writeBool(phone_registered); + stream.writeString(phone_code_hash); + stream.writeInt32(send_call_timeout); + stream.writeBool(is_password); + } + } + + public static class TL_auth_sentCode extends auth_SentCode { + public static int constructor = 0xefed51d9; + public void readParams(AbsSerializedData stream) { phone_registered = stream.readBool(); @@ -2463,18 +2557,23 @@ public class TLRPC { public static class DecryptedMessage extends TLObject { public long random_id; public byte[] random_bytes; + public int in_seq_no; + public int out_seq_no; public DecryptedMessageAction action; + public int ttl; public String message; public DecryptedMessageMedia media; } public static class TL_decryptedMessageService extends DecryptedMessage { - public static int constructor = 0xaa48327d; + public static int constructor = 0xda431693; public void readParams(AbsSerializedData stream) { random_id = stream.readInt64(); random_bytes = stream.readByteArray(); + in_seq_no = stream.readInt32(); + out_seq_no = stream.readInt32(); action = (DecryptedMessageAction)TLClassStore.Instance().TLdeserialize(stream, stream.readInt32()); } @@ -2482,17 +2581,22 @@ public class TLRPC { stream.writeInt32(constructor); stream.writeInt64(random_id); stream.writeByteArray(random_bytes); + stream.writeInt32(in_seq_no); + stream.writeInt32(out_seq_no); action.serializeToStream(stream); } } public static class TL_decryptedMessage extends DecryptedMessage { - public static int constructor = 0x1f814f1f; + public static int constructor = 0x4e748938; public void readParams(AbsSerializedData stream) { random_id = stream.readInt64(); random_bytes = stream.readByteArray(); + in_seq_no = stream.readInt32(); + out_seq_no = stream.readInt32(); + ttl = stream.readInt32(); message = stream.readString(); media = (DecryptedMessageMedia)TLClassStore.Instance().TLdeserialize(stream, stream.readInt32()); } @@ -2501,6 +2605,9 @@ public class TLRPC { stream.writeInt32(constructor); stream.writeInt64(random_id); stream.writeByteArray(random_bytes); + stream.writeInt32(in_seq_no); + stream.writeInt32(out_seq_no); + stream.writeInt32(ttl); stream.writeString(message); media.serializeToStream(stream); } @@ -3334,6 +3441,7 @@ public class TLRPC { public int version; public NotifyPeer peer; public PeerNotifySettings notify_settings; + public SendMessageAction action; public String first_name; public String last_name; public int qts; @@ -3473,32 +3581,36 @@ public class TLRPC { } public static class TL_updateUserTyping extends Update { - public static int constructor = 0x6baa8508; + public static int constructor = 0x5c486927; public void readParams(AbsSerializedData stream) { user_id = stream.readInt32(); + action = (SendMessageAction)TLClassStore.Instance().TLdeserialize(stream, stream.readInt32()); } public void serializeToStream(AbsSerializedData stream) { stream.writeInt32(constructor); stream.writeInt32(user_id); + action.serializeToStream(stream); } } public static class TL_updateChatUserTyping extends Update { - public static int constructor = 0x3c46cfe6; + public static int constructor = 0x9a65ea1f; public void readParams(AbsSerializedData stream) { chat_id = stream.readInt32(); user_id = stream.readInt32(); + action = (SendMessageAction)TLClassStore.Instance().TLdeserialize(stream, stream.readInt32()); } public void serializeToStream(AbsSerializedData stream) { stream.writeInt32(constructor); stream.writeInt32(chat_id); stream.writeInt32(user_id); + action.serializeToStream(stream); } } @@ -3942,6 +4054,7 @@ public class TLRPC { public int layer; public int ttl_seconds; public ArrayList random_ids = new ArrayList(); + public SendMessageAction action; } public static class TL_decryptedMessageActionSetMessageTTL extends DecryptedMessageAction { @@ -4002,6 +4115,20 @@ public class TLRPC { } } + public static class TL_decryptedMessageActionTyping extends DecryptedMessageAction { + public static int constructor = 0xccb27641; + + + public void readParams(AbsSerializedData stream) { + action = (SendMessageAction)TLClassStore.Instance().TLdeserialize(stream, stream.readInt32()); + } + + public void serializeToStream(AbsSerializedData stream) { + stream.writeInt32(constructor); + action.serializeToStream(stream); + } + } + public static class contacts_MyLink extends TLObject { public boolean contact; } @@ -4413,6 +4540,52 @@ public class TLRPC { } } + public static class TL_auth_sendSms extends TLObject { + public static int constructor = 0xda9f3e8; + + public String phone_number; + public String phone_code_hash; + + public Class responseClass () { + return Bool.class; + } + + public void readParams(AbsSerializedData stream) { + phone_number = stream.readString(); + phone_code_hash = stream.readString(); + } + + public void serializeToStream(AbsSerializedData stream) { + stream.writeInt32(constructor); + stream.writeString(phone_number); + stream.writeString(phone_code_hash); + } + } + + public static class TL_messages_readMessageContents extends TLObject { + public static int constructor = 0x354b5bc2; + + public ArrayList id = new ArrayList(); + + public void readParams(AbsSerializedData stream) { + stream.readInt32(); + int count = stream.readInt32(); + for (int a = 0; a < count; a++) { + id.add(stream.readInt32()); + } + } + + public void serializeToStream(AbsSerializedData stream) { + stream.writeInt32(constructor); + stream.writeInt32(0x1cb5c415); + int count = id.size(); + stream.writeInt32(count); + for (Integer anId : id) { + stream.writeInt32(anId); + } + } + } + public static class InputAudio extends TLObject { public long id; public long access_hash; @@ -4892,6 +5065,15 @@ public class TLRPC { } } + public static class TL_storage_filePdf extends storage_FileType { + public static int constructor = 0xae1e508d; + + + public void serializeToStream(AbsSerializedData stream) { + stream.writeInt32(constructor); + } + } + public static class TL_storage_fileMov extends storage_FileType { public static int constructor = 0x4b09ebbc; @@ -4976,6 +5158,24 @@ public class TLRPC { } } + public static class TL_inputMessagesFilterDocument extends MessagesFilter { + public static int constructor = 0x9eddf188; + + + public void serializeToStream(AbsSerializedData stream) { + stream.writeInt32(constructor); + } + } + + public static class TL_inputMessagesFilterAudio extends MessagesFilter { + public static int constructor = 0xcfc87522; + + + public void serializeToStream(AbsSerializedData stream) { + stream.writeInt32(constructor); + } + } + public static class TL_msgs_state_info extends TLObject { public static int constructor = 0x04deb57d; @@ -7058,11 +7258,12 @@ public class TLRPC { } public static class TL_messages_readHistory extends TLObject { - public static int constructor = 0xb04f2510; + public static int constructor = 0xeed884c6; public InputPeer peer; public int max_id; public int offset; + public boolean read_contents; public Class responseClass () { return TL_messages_affectedHistory.class; @@ -7072,6 +7273,7 @@ public class TLRPC { peer = (InputPeer)TLClassStore.Instance().TLdeserialize(stream, stream.readInt32()); max_id = stream.readInt32(); offset = stream.readInt32(); + read_contents = stream.readBool(); } public void serializeToStream(AbsSerializedData stream) { @@ -7079,6 +7281,7 @@ public class TLRPC { peer.serializeToStream(stream); stream.writeInt32(max_id); stream.writeInt32(offset); + stream.writeBool(read_contents); } } @@ -7105,10 +7308,10 @@ public class TLRPC { } public static class TL_messages_setTyping extends TLObject { - public static int constructor = 0x719839e9; + public static int constructor = 0xa3825e50; public InputPeer peer; - public boolean typing; + public SendMessageAction action; public Class responseClass () { return Bool.class; @@ -7116,13 +7319,13 @@ public class TLRPC { public void readParams(AbsSerializedData stream) { peer = (InputPeer)TLClassStore.Instance().TLdeserialize(stream, stream.readInt32()); - typing = stream.readBool(); + action = (SendMessageAction)TLClassStore.Instance().TLdeserialize(stream, stream.readInt32()); } public void serializeToStream(AbsSerializedData stream) { stream.writeInt32(constructor); peer.serializeToStream(stream); - stream.writeBool(typing); + action.serializeToStream(stream); } } @@ -8225,6 +8428,44 @@ public class TLRPC { } } + public static class TL_decryptedMessageService_old extends TL_decryptedMessageService { + public static int constructor = 0xaa48327d; + + + public void readParams(AbsSerializedData stream) { + random_id = stream.readInt64(); + random_bytes = stream.readByteArray(); + action = (DecryptedMessageAction)TLClassStore.Instance().TLdeserialize(stream, stream.readInt32()); + } + + public void serializeToStream(AbsSerializedData stream) { + stream.writeInt32(constructor); + stream.writeInt64(random_id); + stream.writeByteArray(random_bytes); + action.serializeToStream(stream); + } + } + + public static class TL_decryptedMessage_old extends TL_decryptedMessage { + public static int constructor = 0x1f814f1f; + + + public void readParams(AbsSerializedData stream) { + random_id = stream.readInt64(); + random_bytes = stream.readByteArray(); + message = stream.readString(); + media = (DecryptedMessageMedia)TLClassStore.Instance().TLdeserialize(stream, stream.readInt32()); + } + + public void serializeToStream(AbsSerializedData stream) { + stream.writeInt32(constructor); + stream.writeInt64(random_id); + stream.writeByteArray(random_bytes); + stream.writeString(message); + media.serializeToStream(stream); + } + } + public static class TL_messages_sendEncryptedFile extends TLObject { public static int constructor = 0x9a901b66; @@ -8522,6 +8763,7 @@ public class TLRPC { } public static class Message extends TLObject { + public int flags; public int id; public int fwd_from_id; public int fwd_date; @@ -8544,6 +8786,140 @@ public class TLRPC { } public static class TL_messageForwarded extends Message { + public static int constructor = 0xa367e716; + + + public void readParams(AbsSerializedData stream) { + flags = stream.readInt32(); + id = stream.readInt32(); + fwd_from_id = stream.readInt32(); + fwd_date = stream.readInt32(); + from_id = stream.readInt32(); + to_id = (Peer)TLClassStore.Instance().TLdeserialize(stream, stream.readInt32()); + date = stream.readInt32(); + message = stream.readString(); + media = (MessageMedia)TLClassStore.Instance().TLdeserialize(stream, stream.readInt32()); + out = (flags & MESSAGE_FLAG_OUT) != 0; + unread = (flags & MESSAGE_FLAG_UNREAD) != 0; + if (id < 0) { + fwd_msg_id = stream.readInt32(); + } + if (id < 0 || (media != null && !(media instanceof TL_messageMediaEmpty) && message != null && message.length() != 0 && message.startsWith("-1"))) { + attachPath = stream.readString(); + } + if (id < 0 && message.length() > 6 && media instanceof TL_messageMediaVideo) { + videoEditedInfo = new VideoEditedInfo(); + videoEditedInfo.parseString(message); + } + } + + public void serializeToStream(AbsSerializedData stream) { + stream.writeInt32(constructor); + stream.writeInt32(flags); + stream.writeInt32(id); + stream.writeInt32(fwd_from_id); + stream.writeInt32(fwd_date); + stream.writeInt32(from_id); + to_id.serializeToStream(stream); + stream.writeInt32(date); + stream.writeString(message); + media.serializeToStream(stream); + if (id < 0) { + stream.writeInt32(fwd_msg_id); + } + stream.writeString(attachPath); + } + } + + public static class TL_message extends Message { + public static int constructor = 0x567699b3; + + + public void readParams(AbsSerializedData stream) { + flags = stream.readInt32(); + id = stream.readInt32(); + from_id = stream.readInt32(); + to_id = (Peer)TLClassStore.Instance().TLdeserialize(stream, stream.readInt32()); + date = stream.readInt32(); + message = stream.readString(); + media = (MessageMedia)TLClassStore.Instance().TLdeserialize(stream, stream.readInt32()); + out = (flags & 2) != 0; + unread = (flags & 1) != 0; + if (id < 0 || (media != null && !(media instanceof TL_messageMediaEmpty) && message != null && message.length() != 0 && message.startsWith("-1"))) { + attachPath = stream.readString(); + } + if (id < 0 && message.length() > 6 && media instanceof TL_messageMediaVideo) { + videoEditedInfo = new VideoEditedInfo(); + videoEditedInfo.parseString(message); + } + } + + public void serializeToStream(AbsSerializedData stream) { + stream.writeInt32(constructor); + stream.writeInt32(flags); + stream.writeInt32(id); + stream.writeInt32(from_id); + to_id.serializeToStream(stream); + stream.writeInt32(date); + stream.writeString(message); + media.serializeToStream(stream); + stream.writeString(attachPath); + } + } + + public static class TL_messageService extends Message { + public static int constructor = 0x1d86f70e; + + + public void readParams(AbsSerializedData stream) { + flags = stream.readInt32(); + id = stream.readInt32(); + from_id = stream.readInt32(); + to_id = (Peer)TLClassStore.Instance().TLdeserialize(stream, stream.readInt32()); + date = stream.readInt32(); + action = (MessageAction)TLClassStore.Instance().TLdeserialize(stream, stream.readInt32()); + out = (flags & 2) != 0; + unread = (flags & 1) != 0; + } + + public void serializeToStream(AbsSerializedData stream) { + stream.writeInt32(constructor); + stream.writeInt32(flags); + stream.writeInt32(id); + stream.writeInt32(from_id); + to_id.serializeToStream(stream); + stream.writeInt32(date); + action.serializeToStream(stream); + } + } + + public static class TL_messageService_old extends TL_messageService { + public static int constructor = 0x9f8d60bb; + + + public void readParams(AbsSerializedData stream) { + id = stream.readInt32(); + from_id = stream.readInt32(); + to_id = (Peer)TLClassStore.Instance().TLdeserialize(stream, stream.readInt32()); + out = stream.readBool(); + unread = stream.readBool(); + date = stream.readInt32(); + action = (MessageAction)TLClassStore.Instance().TLdeserialize(stream, stream.readInt32()); + } + + public void serializeToStream(AbsSerializedData stream) { + stream.writeInt32(constructor); + stream.writeInt32(id); + stream.writeInt32(from_id); + to_id.serializeToStream(stream); + stream.writeBool(out); + stream.writeBool(unread); + stream.writeInt32(date); + action.serializeToStream(stream); + } + } + + public static class TL_messageForwarded_old extends TL_messageForwarded { public static int constructor = 0x5f46804; @@ -8589,7 +8965,7 @@ public class TLRPC { } } - public static class TL_message extends Message { + public static class TL_message_old extends TL_message { public static int constructor = 0x22eb6aba; public void readParams(AbsSerializedData stream) { @@ -9226,8 +9602,8 @@ public class TLRPC { } } - public static class invokeWithLayer14 extends TLObject { - public static int constructor = 0x2b9b08fa; + public static class invokeWithLayer17 extends TLObject { + public static int constructor = 0x50858a19; public TLObject query; diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/Utilities.java b/TMessagesProj/src/main/java/org/telegram/messenger/Utilities.java index e6d7ed8c6..02815f5ca 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/Utilities.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/Utilities.java @@ -530,7 +530,7 @@ public class Utilities { private static File getAlbumDir() { File storageDir = null; if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) { - storageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), LocaleController.getString("AppName", R.string.AppName)); + storageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "Telegram"); if (storageDir != null) { if (!storageDir.mkdirs()) { if (!storageDir.exists()){ @@ -644,7 +644,6 @@ public class Utilities { if (name == null && name2 == null) { return ""; } - int index; SpannableStringBuilder builder = new SpannableStringBuilder(); String wholeString = name; if (wholeString == null || wholeString.length() == 0) { @@ -653,28 +652,34 @@ public class Utilities { wholeString += " " + name2; } wholeString = wholeString.trim(); - String[] args = wholeString.split(" "); + String lower = " " + wholeString.toLowerCase(); - for (String arg : args) { - String str = arg; - if (str != null) { - String lower = str.toLowerCase(); - if (lower.startsWith(q)) { - if (builder.length() != 0) { - builder.append(" "); - } - String query = str.substring(0, q.length()); - builder.append(Html.fromHtml("" + query + "")); - str = str.substring(q.length()); - builder.append(str); - } else { - if (builder.length() != 0) { - builder.append(" "); - } - builder.append(str); - } + int index = -1; + int lastIndex = 0; + while ((index = lower.indexOf(" " + q, lastIndex)) != -1) { + int idx = index - (index == 0 ? 0 : 1); + int end = q.length() + (index == 0 ? 0 : 1) + idx; + + if (lastIndex != 0 && lastIndex != idx + 1) { + builder.append(wholeString.substring(lastIndex, idx)); + } else if (lastIndex == 0 && idx != 0) { + builder.append(wholeString.substring(0, idx)); } + + String query = wholeString.substring(idx, end); + if (query.startsWith(" ")) { + builder.append(" "); + } + query.trim(); + builder.append(Html.fromHtml("" + query + "")); + + lastIndex = end; } + + if (lastIndex != -1 && lastIndex != wholeString.length()) { + builder.append(wholeString.substring(lastIndex, wholeString.length())); + } + return builder; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/ContactsActivitySearchAdapter.java b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/ContactsActivitySearchAdapter.java index 08ef989d8..c6fc1baf0 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/ContactsActivitySearchAdapter.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/ContactsActivitySearchAdapter.java @@ -87,7 +87,8 @@ public class ContactsActivitySearchAdapter extends BaseFragmentAdapter { for (TLRPC.TL_contact contact : contactsCopy) { TLRPC.User user = MessagesController.getInstance().getUser(contact.user_id); - if (user.first_name != null && user.first_name.toLowerCase().startsWith(q) || user.last_name != null && user.last_name.toLowerCase().startsWith(q)) { + String name = ContactsController.formatName(user.first_name, user.last_name).toLowerCase(); + if (name.startsWith(q) || name.contains(" " + q)) { if (user.id == UserConfig.getClientUserId()) { continue; } 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 fba3f0ccb..febf68909 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatAudioCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatAudioCell.java @@ -354,9 +354,9 @@ public class ChatAudioCell extends ChatBaseCell implements SeekBar.SeekBarDelega if (audioUser.photo != null) { currentPhoto = audioUser.photo.photo_small; } - avatarImage.setImage(currentPhoto, "50_50", getResources().getDrawable(AndroidUtilities.getUserAvatarForId(uid))); + avatarImage.setImage(currentPhoto, "50_50", getResources().getDrawable(AndroidUtilities.getUserAvatarForId(uid)), false); } else { - avatarImage.setImage((TLRPC.FileLocation)null, "50_50", getResources().getDrawable(AndroidUtilities.getUserAvatarForId(uid))); + avatarImage.setImage((TLRPC.FileLocation)null, "50_50", getResources().getDrawable(AndroidUtilities.getUserAvatarForId(uid)), false); } if (messageObject.isOut()) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatBaseCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatBaseCell.java index 480fd97dd..2577049de 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatBaseCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatBaseCell.java @@ -265,9 +265,9 @@ public class ChatBaseCell extends BaseCell { } else { currentPhoto = null; } - avatarImage.setImage(currentPhoto, "50_50", getResources().getDrawable(AndroidUtilities.getUserAvatarForId(currentUser.id))); + avatarImage.setImage(currentPhoto, "50_50", getResources().getDrawable(AndroidUtilities.getUserAvatarForId(currentUser.id)), false); } else { - avatarImage.setImage((TLRPC.FileLocation)null, "50_50", null); + avatarImage.setImage(null, "50_50", null, false); } } 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 1b58638cc..54d96e86d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMediaCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMediaCell.java @@ -310,9 +310,9 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD cancelLoading = false; if (currentMessageObject.type == 1) { if (currentMessageObject.imagePreview != null) { - photoImage.setImage(currentPhotoObject.photoOwner.location, currentPhotoFilter, new BitmapDrawable(currentMessageObject.imagePreview), currentPhotoObject.photoOwner.size); + photoImage.setImage(currentPhotoObject.photoOwner.location, currentPhotoFilter, new BitmapDrawable(currentMessageObject.imagePreview), currentPhotoObject.photoOwner.size, false); } else { - photoImage.setImage(currentPhotoObject.photoOwner.location, currentPhotoFilter, currentMessageObject.isOut() ? placeholderOutDrawable : placeholderInDrawable, currentPhotoObject.photoOwner.size); + photoImage.setImage(currentPhotoObject.photoOwner.location, currentPhotoFilter, currentMessageObject.isOut() ? placeholderOutDrawable : placeholderInDrawable, currentPhotoObject.photoOwner.size, false); } } else if (currentMessageObject.type == 8 || currentMessageObject.type == 9) { FileLoader.getInstance().loadFile(currentMessageObject.messageOwner.media.document, true); @@ -479,7 +479,7 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD photoImage.setImageBitmap(currentPhotoObject.image); } else { currentPhotoFilter = String.format(Locale.US, "%d_%d_b", photoWidth, photoHeight); - photoImage.setImage(currentPhotoObject.photoOwner.location, currentPhotoFilter, null, 0); + photoImage.setImage(currentPhotoObject.photoOwner.location, currentPhotoFilter, null, 0, false); } } else { photoImage.setImageBitmap((BitmapDrawable)null); @@ -572,9 +572,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), noSize ? 0 : currentPhotoObject.photoOwner.size); + photoImage.setImage(currentPhotoObject.photoOwner.location, currentPhotoFilter, new BitmapDrawable(messageObject.imagePreview), noSize ? 0 : currentPhotoObject.photoOwner.size, false); } else { - photoImage.setImage(currentPhotoObject.photoOwner.location, currentPhotoFilter, messageObject.isOut() ? placeholderOutDrawable : placeholderInDrawable, noSize ? 0 : currentPhotoObject.photoOwner.size); + photoImage.setImage(currentPhotoObject.photoOwner.location, currentPhotoFilter, messageObject.isOut() ? placeholderOutDrawable : placeholderInDrawable, noSize ? 0 : currentPhotoObject.photoOwner.size, false); } } else { photoNotSet = true; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatOrUserCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatOrUserCell.java index 5b496167c..4b782b913 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatOrUserCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatOrUserCell.java @@ -215,7 +215,7 @@ public class ChatOrUserCell extends BaseCell { lastAvatar = photo; - avatarImage.setImage(photo, "50_50", placeHolderId == 0 ? null : getResources().getDrawable(placeHolderId)); + avatarImage.setImage(photo, "50_50", placeHolderId == 0 ? null : getResources().getDrawable(placeHolderId), false); if (getMeasuredWidth() != 0 || getMeasuredHeight() != 0) { buildLayout(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/DialogCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DialogCell.java index ef6f19191..99970c904 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/DialogCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DialogCell.java @@ -263,7 +263,7 @@ public class DialogCell extends BaseCell { placeHolderId = AndroidUtilities.getBroadcastAvatarForId(chat.id); } } - avatarImage.setImage(photo, "50_50", placeHolderId == 0 ? null : getResources().getDrawable(placeHolderId)); + avatarImage.setImage(photo, "50_50", placeHolderId == 0 ? null : getResources().getDrawable(placeHolderId), false); if (getMeasuredWidth() != 0 || getMeasuredHeight() != 0) { buildLayout(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java index 819c0e375..8cf9b4380 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java @@ -9,6 +9,8 @@ package org.telegram.ui; import android.animation.Animator; +import android.animation.AnimatorSet; +import android.animation.ObjectAnimator; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; @@ -114,6 +116,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not private View bottomOverlayChat; private TypingDotsDrawable typingDotsDrawable; private View emptyViewContainer; + private ArrayList actionModeViews = new ArrayList(); private TextView bottomOverlayText; @@ -574,8 +577,10 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not item.addSubItem(attach_location, LocaleController.getString("ChatLocation", R.string.ChatLocation), R.drawable.ic_attach_location); menuItem = item; + actionModeViews.clear(); + ActionBarMenu actionMode = actionBarLayer.createActionMode(); - actionMode.addItem(-2, R.drawable.ic_ab_done_gray, R.drawable.bar_selector_mode); + actionModeViews.add(actionMode.addItem(-2, R.drawable.ic_ab_done_gray, R.drawable.bar_selector_mode)); FrameLayout layout = new FrameLayout(actionMode.getContext()); layout.setBackgroundColor(0xffe5e5e5); @@ -587,6 +592,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not layoutParams.bottomMargin = AndroidUtilities.dp(12); layoutParams.gravity = Gravity.CENTER_VERTICAL; layout.setLayoutParams(layoutParams); + actionModeViews.add(layout); selectedMessagesCountTextView = new TextView(actionMode.getContext()); selectedMessagesCountTextView.setTextSize(18); @@ -610,12 +616,12 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not selectedMessagesCountTextView.setLayoutParams(layoutParams); if (currentEncryptedChat == null) { - actionMode.addItem(copy, R.drawable.ic_ab_fwd_copy, R.drawable.bar_selector_mode); - actionMode.addItem(forward, R.drawable.ic_ab_fwd_forward, R.drawable.bar_selector_mode); - actionMode.addItem(delete, R.drawable.ic_ab_fwd_delete, R.drawable.bar_selector_mode); + actionModeViews.add(actionMode.addItem(copy, R.drawable.ic_ab_fwd_copy, R.drawable.bar_selector_mode)); + actionModeViews.add(actionMode.addItem(forward, R.drawable.ic_ab_fwd_forward, R.drawable.bar_selector_mode)); + actionModeViews.add(actionMode.addItem(delete, R.drawable.ic_ab_fwd_delete, R.drawable.bar_selector_mode)); } else { - actionMode.addItem(copy, R.drawable.ic_ab_fwd_copy, R.drawable.bar_selector_mode); - actionMode.addItem(delete, R.drawable.ic_ab_fwd_delete, R.drawable.bar_selector_mode); + actionModeViews.add(actionMode.addItem(copy, R.drawable.ic_ab_fwd_copy, R.drawable.bar_selector_mode)); + actionModeViews.add(actionMode.addItem(delete, R.drawable.ic_ab_fwd_delete, R.drawable.bar_selector_mode)); } actionMode.getItem(copy).setVisibility(selectedMessagesCanCopyIds.size() != 0 ? View.VISIBLE : View.GONE); @@ -2886,6 +2892,21 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not return; } actionBarLayer.showActionMode(); + if (Build.VERSION.SDK_INT >= 11) { + AnimatorSet animatorSet = new AnimatorSet(); + ArrayList animators = new ArrayList(); + for (int a = 0; a < actionModeViews.size(); a++) { + View view = actionModeViews.get(a); + if (a < 2) { + animators.add(ObjectAnimator.ofFloat(view, "translationX", -AndroidUtilities.dp(56), 0)); + } else { + animators.add(ObjectAnimator.ofFloat(view, "scaleY", 0.1f, 1.0f)); + } + } + animatorSet.playTogether(animators); + animatorSet.setDuration(250); + animatorSet.start(); + } addToSelectedMessages(message); updateActionModeTitle(); updateVisibleRows(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ContactsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ContactsActivity.java index 8076f0454..d530fdc83 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ContactsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ContactsActivity.java @@ -18,6 +18,7 @@ import android.os.Bundle; import android.text.InputType; import android.view.Gravity; import android.view.LayoutInflater; +import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.EditorInfo; @@ -202,6 +203,12 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter listView = (PinnedHeaderListView)fragmentView.findViewById(R.id.listView); listView.setEmptyView(emptyTextView); + emptyTextView.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + return true; + } + }); listView.setVerticalScrollBarEnabled(false); listViewAdapter = new ContactsActivityAdapter(getParentActivity(), onlyUsers, usersAsSections, ignoreUsers); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/CountrySelectActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/CountrySelectActivity.java index a71e38703..332381d6c 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/CountrySelectActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/CountrySelectActivity.java @@ -10,6 +10,7 @@ package org.telegram.ui; import android.content.Context; import android.view.LayoutInflater; +import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView; @@ -193,6 +194,12 @@ public class CountrySelectActivity extends BaseFragment { listView = (PinnedHeaderListView)fragmentView.findViewById(R.id.listView); listView.setEmptyView(emptyTextView); + emptyTextView.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + return true; + } + }); listView.setVerticalScrollBarEnabled(false); listView.setAdapter(listViewAdapter = new ListAdapter(getParentActivity())); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/DocumentSelectActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/DocumentSelectActivity.java index d97f49816..293fc3a45 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/DocumentSelectActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/DocumentSelectActivity.java @@ -17,6 +17,7 @@ import android.os.Build; import android.os.Environment; import android.os.StatFs; import android.view.LayoutInflater; +import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; @@ -151,6 +152,12 @@ public class DocumentSelectActivity extends BaseFragment { fragmentView = inflater.inflate(R.layout.document_select_layout, container, false); listAdapter = new ListAdapter(getParentActivity()); emptyView = (TextView)fragmentView.findViewById(R.id.searchEmptyView); + emptyView.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + return true; + } + }); listView = (ListView)fragmentView.findViewById(R.id.listView); listView.setEmptyView(emptyView); listView.setAdapter(listAdapter); @@ -400,10 +407,10 @@ public class DocumentSelectActivity extends BaseFragment { items.add(fs); try { - File telegramPath = new File(Environment.getExternalStorageDirectory(), LocaleController.getString("AppName", R.string.AppName)); + File telegramPath = new File(Environment.getExternalStorageDirectory(), "Telegram"); if (telegramPath.exists()) { fs = new ListItem(); - fs.title = LocaleController.getString("AppName", R.string.AppName); + fs.title = "Telegram"; fs.subtitle = telegramPath.toString(); fs.icon = R.drawable.ic_directory; fs.file = telegramPath; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java index 9aefe5125..52395ca14 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java @@ -24,6 +24,7 @@ import android.text.SpannableStringBuilder; import android.text.TextWatcher; import android.text.style.ImageSpan; import android.view.LayoutInflater; +import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView; @@ -175,6 +176,12 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen emptyTextView = (TextView)fragmentView.findViewById(R.id.searchEmptyView); emptyTextView.setText(LocaleController.getString("NoContacts", R.string.NoContacts)); + emptyTextView.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + return true; + } + }); userSelectEditText = (EditText)fragmentView.findViewById(R.id.bubble_input_text); userSelectEditText.setHint(LocaleController.getString("SendMessageTo", R.string.SendMessageTo)); if (Build.VERSION.SDK_INT >= 11) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LanguageSelectActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LanguageSelectActivity.java index bee83e3f3..0ab87bc8b 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LanguageSelectActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LanguageSelectActivity.java @@ -12,6 +12,7 @@ import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.view.LayoutInflater; +import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView; @@ -108,6 +109,12 @@ public class LanguageSelectActivity extends BaseFragment { listView.setAdapter(listAdapter); emptyTextView = (TextView)fragmentView.findViewById(R.id.searchEmptyView); listView.setEmptyView(emptyTextView); + emptyTextView.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + return true; + } + }); searchListViewAdapter = new SearchAdapter(getParentActivity()); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java index f2d27cbde..f42452d5d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java @@ -583,6 +583,11 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa if (PhotoViewer.getInstance().isVisible()) { PhotoViewer.getInstance().closePhoto(false); } + + if (AndroidUtilities.isTablet()) { + actionBarLayout.showLastFragment(); + rightActionBarLayout.showLastFragment(); + } } if (open_settings != 0) { actionBarLayout.presentFragment(new SettingsActivity(), false, true, true); @@ -745,6 +750,7 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa if (AndroidUtilities.isSmallTablet() && actionBarLayout.fragmentsStack.size() == 2) { BaseFragment chatFragment = actionBarLayout.fragmentsStack.get(1); + chatFragment.onPause(); actionBarLayout.fragmentsStack.remove(1); actionBarLayout.showLastFragment(); rightActionBarLayout.fragmentsStack.add(chatFragment); @@ -770,6 +776,7 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa if (rightActionBarLayout.fragmentsStack.size() == 1) { BaseFragment chatFragment = rightActionBarLayout.fragmentsStack.get(0); + chatFragment.onPause(); rightActionBarLayout.fragmentsStack.remove(0); actionBarLayout.presentFragment(chatFragment, false, true, false); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/MediaActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/MediaActivity.java index 50051bbfb..5118653fd 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/MediaActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/MediaActivity.java @@ -13,6 +13,7 @@ import android.content.Context; import android.os.Build; import android.os.Bundle; import android.view.LayoutInflater; +import android.view.MotionEvent; import android.view.Surface; import android.view.View; import android.view.ViewGroup; @@ -107,6 +108,12 @@ public class MediaActivity extends BaseFragment implements NotificationCenter.No emptyView = (TextView)fragmentView.findViewById(R.id.searchEmptyView); emptyView.setText(LocaleController.getString("NoMedia", R.string.NoMedia)); + emptyView.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + return true; + } + }); listView = (GridView)fragmentView.findViewById(R.id.media_grid); progressView = fragmentView.findViewById(R.id.progressLayout); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java index 1bceb8cf3..9471d2fb9 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java @@ -13,6 +13,7 @@ import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; import android.view.LayoutInflater; +import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView; @@ -51,7 +52,7 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter private MessagesAdapter messagesListViewAdapter; private TextView searchEmptyView; private View progressView; - private View empryView; + private View emptyView; private String selectAlertString; private String selectAlertStringGroup; private boolean serverOnly = false; @@ -136,8 +137,8 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter if (messagesListView != null) { messagesListView.setEmptyView(searchEmptyView); } - if (empryView != null) { - empryView.setVisibility(View.GONE); + if (emptyView != null) { + emptyView.setVisibility(View.GONE); } } @@ -147,7 +148,7 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter searching = false; searchWas = false; if (messagesListView != null) { - messagesListView.setEmptyView(empryView); + messagesListView.setEmptyView(emptyView); searchEmptyView.setVisibility(View.GONE); } if (messagesListViewAdapter != null) { @@ -166,7 +167,7 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter } if (searchEmptyView != null) { messagesListView.setEmptyView(searchEmptyView); - empryView.setVisibility(View.GONE); + emptyView.setVisibility(View.GONE); } } } @@ -238,8 +239,20 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter progressView = fragmentView.findViewById(R.id.progressLayout); messagesListViewAdapter.notifyDataSetChanged(); searchEmptyView = (TextView)fragmentView.findViewById(R.id.searchEmptyView); + searchEmptyView.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + return true; + } + }); searchEmptyView.setText(LocaleController.getString("NoResult", R.string.NoResult)); - empryView = fragmentView.findViewById(R.id.list_empty_view); + emptyView = fragmentView.findViewById(R.id.list_empty_view); + emptyView.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + return true; + } + }); TextView textView = (TextView)fragmentView.findViewById(R.id.list_empty_view_text1); textView.setText(LocaleController.getString("NoChats", R.string.NoChats)); textView = (TextView)fragmentView.findViewById(R.id.list_empty_view_text2); @@ -248,14 +261,14 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter if (MessagesController.getInstance().loadingDialogs && MessagesController.getInstance().dialogs.isEmpty()) { messagesListView.setEmptyView(null); searchEmptyView.setVisibility(View.GONE); - empryView.setVisibility(View.GONE); + emptyView.setVisibility(View.GONE); progressView.setVisibility(View.VISIBLE); } else { if (searching && searchWas) { messagesListView.setEmptyView(searchEmptyView); - empryView.setVisibility(View.GONE); + emptyView.setVisibility(View.GONE); } else { - messagesListView.setEmptyView(empryView); + messagesListView.setEmptyView(emptyView); searchEmptyView.setVisibility(View.GONE); } progressView.setVisibility(View.GONE); @@ -460,15 +473,15 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter messagesListView.setEmptyView(null); } searchEmptyView.setVisibility(View.GONE); - empryView.setVisibility(View.GONE); + emptyView.setVisibility(View.GONE); progressView.setVisibility(View.VISIBLE); } else { if (messagesListView.getEmptyView() == null) { if (searching && searchWas) { messagesListView.setEmptyView(searchEmptyView); - empryView.setVisibility(View.GONE); + emptyView.setVisibility(View.GONE); } else { - messagesListView.setEmptyView(empryView); + messagesListView.setEmptyView(emptyView); searchEmptyView.setVisibility(View.GONE); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PhotoPickerActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/PhotoPickerActivity.java index 81b253b91..f9ce31655 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PhotoPickerActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PhotoPickerActivity.java @@ -12,6 +12,7 @@ import android.app.Activity; import android.content.Context; import android.os.Build; import android.view.LayoutInflater; +import android.view.MotionEvent; import android.view.Surface; import android.view.View; import android.view.ViewGroup; @@ -119,6 +120,12 @@ public class PhotoPickerActivity extends BaseFragment implements NotificationCen fragmentView = inflater.inflate(R.layout.photo_picker_layout, container, false); emptyView = (TextView)fragmentView.findViewById(R.id.searchEmptyView); + emptyView.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + return true; + } + }); emptyView.setText(LocaleController.getString("NoPhotos", R.string.NoPhotos)); listView = (GridView)fragmentView.findViewById(R.id.media_grid); progressView = fragmentView.findViewById(R.id.progressLayout); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java b/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java index 65d47fe8b..c1c13b1b4 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java @@ -513,7 +513,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if (currentMessageObject != null) { f = FileLoader.getPathToMessage(currentMessageObject.messageOwner); } else if (currentFileLocation != null) { - f = FileLoader.getPathToAttach(currentFileLocation); + f = FileLoader.getPathToAttach(currentFileLocation, avatarsUserId != 0); } if (f != null && f.exists()) { @@ -572,7 +572,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat return true; } } else if (currentFileLocation != null) { - File f = FileLoader.getPathToAttach(currentFileLocation); + File f = FileLoader.getPathToAttach(currentFileLocation, avatarsUserId != 0); if (f.exists()) { return true; } @@ -616,7 +616,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if (fileLocation == null) { return; } - File f = FileLoader.getPathToAttach(fileLocation); + File f = FileLoader.getPathToAttach(fileLocation, avatarsUserId != 0); if (f.exists()) { Intent intent = new Intent(Intent.ACTION_SEND); if (f.toString().endsWith("mp4")) { @@ -1341,7 +1341,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if (currentMessageObject != null) { f = FileLoader.getPathToMessage(currentMessageObject.messageOwner); } else if (currentFileLocation != null) { - f = FileLoader.getPathToAttach(currentFileLocation); + f = FileLoader.getPathToAttach(currentFileLocation, avatarsUserId != 0); } if (f.exists()) { progressBar.setVisibility(View.GONE); @@ -1399,7 +1399,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if (currentThumb != null && imageReceiver == centerImage) { placeHolder = currentThumb; } - imageReceiver.setImage(fileLocation, null, placeHolder != null ? new BitmapDrawable(null, placeHolder) : null, 0); + imageReceiver.setImage(fileLocation, null, placeHolder != null ? new BitmapDrawable(null, placeHolder) : null, 0, true); } else { imageReceiver.setImageBitmap(parentActivity.getResources().getDrawable(R.drawable.photoview_placeholder)); } @@ -1414,7 +1414,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if (size[0] == 0) { size[0] = -1; } - imageReceiver.setImage(fileLocation, null, placeHolder != null ? new BitmapDrawable(null, placeHolder) : null, size[0]); + imageReceiver.setImage(fileLocation, null, placeHolder != null ? new BitmapDrawable(null, placeHolder) : null, size[0], avatarsUserId != 0); } } else { if (size[0] == 0) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/SettingsBlockedUsersActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/SettingsBlockedUsersActivity.java index ef88c1e02..b1f888cad 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/SettingsBlockedUsersActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/SettingsBlockedUsersActivity.java @@ -13,6 +13,7 @@ import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; import android.view.LayoutInflater; +import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; @@ -88,6 +89,12 @@ public class SettingsBlockedUsersActivity extends BaseFragment implements Notifi listView = (ListView)fragmentView.findViewById(R.id.listView); progressView = fragmentView.findViewById(R.id.progressLayout); emptyView = (TextView)fragmentView.findViewById(R.id.searchEmptyView); + emptyView.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + return true; + } + }); emptyView.setText(LocaleController.getString("NoBlocked", R.string.NoBlocked)); if (MessagesController.getInstance().loadingBlockedUsers) { progressView.setVisibility(View.VISIBLE); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/VideoEditorActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/VideoEditorActivity.java index dd536e5a9..01072920e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/VideoEditorActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/VideoEditorActivity.java @@ -13,6 +13,7 @@ import android.app.Activity; import android.content.SharedPreferences; import android.content.res.Configuration; import android.graphics.SurfaceTexture; +import android.media.MediaCodecInfo; import android.media.MediaPlayer; import android.os.Build; import android.os.Bundle; @@ -41,6 +42,7 @@ import com.googlecode.mp4parser.util.Path; import org.telegram.android.AndroidUtilities; import org.telegram.android.LocaleController; +import org.telegram.android.MediaController; import org.telegram.messenger.FileLog; import org.telegram.messenger.R; import org.telegram.messenger.Utilities; @@ -234,7 +236,7 @@ public class VideoEditorActivity extends BaseFragment implements TextureView.Sur } } if (delegate != null) { - if (compressVideo.getVisibility() == View.VISIBLE && !compressVideo.isChecked()) { + if (compressVideo.getVisibility() == View.GONE || compressVideo.getVisibility() == View.VISIBLE && !compressVideo.isChecked()) { delegate.didFinishEditVideo(videoPath, startTime, endTime, originalWidth, originalHeight, rotationValue, originalWidth, originalHeight, bitrate, estimatedSize, esimatedDuration); } else { delegate.didFinishEditVideo(videoPath, startTime, endTime, resultWidth, resultHeight, rotationValue, originalWidth, originalHeight, bitrate, estimatedSize, esimatedDuration); @@ -272,6 +274,27 @@ public class VideoEditorActivity extends BaseFragment implements TextureView.Sur updateVideoEditedInfo(); } }); + + if (Build.VERSION.SDK_INT < 18) { + MediaCodecInfo codecInfo = MediaController.selectCodec(MediaController.MIME_TYPE); + if (codecInfo == null) { + compressVideo.setVisibility(View.GONE); + } else { + String name = codecInfo.getName(); + if (name.equals("OMX.google.h264.encoder") || + name.equals("OMX.ST.VFM.H264Enc") || + name.equals("OMX.Exynos.avc.enc") || + name.equals("OMX.MARVELL.VIDEO.HW.CODA7542ENCODER") || + name.equals("OMX.MARVELL.VIDEO.H264ENCODER")) { + compressVideo.setVisibility(View.GONE); + } else { + if (MediaController.selectColorFormat(codecInfo, MediaController.MIME_TYPE) == 0) { + compressVideo.setVisibility(View.GONE); + } + } + } + } + TextView titleTextView = (TextView) fragmentView.findViewById(R.id.original_title); titleTextView.setText(LocaleController.getString("OriginalVideo", R.string.OriginalVideo)); titleTextView = (TextView) fragmentView.findViewById(R.id.edited_title); @@ -457,7 +480,7 @@ public class VideoEditorActivity extends BaseFragment implements TextureView.Sur int width = 0; int height = 0; - if (compressVideo.getVisibility() == View.VISIBLE && !compressVideo.isChecked()) { + if (compressVideo.getVisibility() == View.GONE || compressVideo.getVisibility() == View.VISIBLE && !compressVideo.isChecked()) { width = rotationValue == 90 || rotationValue == 270 ? originalHeight : originalWidth; height = rotationValue == 90 || rotationValue == 270 ? originalWidth : originalHeight; estimatedSize = (int)(originalSize * ((float)esimatedDuration / videoDuration)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Views/BackupImageView.java b/TMessagesProj/src/main/java/org/telegram/ui/Views/BackupImageView.java index 7010f4e16..529f715cd 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Views/BackupImageView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Views/BackupImageView.java @@ -69,7 +69,7 @@ public class BackupImageView extends View { } else if (placeholder != 0) { placeholderDrawable = getResources().getDrawable(placeholder); } - imageReceiver.setImage(path, httpUrl, filter, placeholderDrawable, size); + imageReceiver.setImage(path, httpUrl, filter, placeholderDrawable, size, false); } public void setImageBitmap(Bitmap bitmap) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Views/ChatActivityEnterView.java b/TMessagesProj/src/main/java/org/telegram/ui/Views/ChatActivityEnterView.java index 4165bdae2..96c92a174 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Views/ChatActivityEnterView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Views/ChatActivityEnterView.java @@ -9,10 +9,14 @@ package org.telegram.ui.Views; import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.AnimatorSet; +import android.animation.ObjectAnimator; import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; import android.graphics.Rect; +import android.os.Build; import android.os.PowerManager; import android.text.Editable; import android.text.TextWatcher; @@ -63,6 +67,8 @@ public class ChatActivityEnterView implements NotificationCenter.NotificationCen private View slideText; private PowerManager.WakeLock mWakeLock = null; private SizeNotifierRelativeLayout sizeNotifierRelativeLayout; + private Object runningAnimation = null; + private int runningAnimationType = 0; private int keyboardHeight = 0; private int keyboardHeightLand = 0; @@ -124,7 +130,6 @@ public class ChatActivityEnterView implements NotificationCenter.NotificationCen messsageEditText.setHint(LocaleController.getString("TypeMessage", R.string.TypeMessage)); sendButton = (ImageButton)containerView.findViewById(R.id.chat_send_button); - sendButton.setEnabled(false); sendButton.setVisibility(View.INVISIBLE); emojiButton = (ImageView)containerView.findViewById(R.id.chat_smile_button); audioSendButton = (ImageButton)containerView.findViewById(R.id.chat_audio_send_button); @@ -261,8 +266,7 @@ public class ChatActivityEnterView implements NotificationCenter.NotificationCen @Override public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) { String message = getTrimmedString(charSequence.toString()); - sendButton.setEnabled(message.length() != 0); - checkSendButton(); + checkSendButton(true); if (message.length() != 0 && lastTypingTimeSend < System.currentTimeMillis() - 5000 && !ignoreTextChange) { int currentTime = ConnectionsManager.getInstance().getCurrentTime(); @@ -299,7 +303,7 @@ public class ChatActivityEnterView implements NotificationCenter.NotificationCen } }); - checkSendButton(); + checkSendButton(false); } private void sendMessage() { @@ -339,14 +343,107 @@ public class ChatActivityEnterView implements NotificationCenter.NotificationCen return src; } - private void checkSendButton() { + private void checkSendButton(boolean animated) { String message = getTrimmedString(messsageEditText.getText().toString()); if (message.length() > 0) { - sendButton.setVisibility(View.VISIBLE); - audioSendButton.setVisibility(View.INVISIBLE); - } else { - sendButton.setVisibility(View.INVISIBLE); - audioSendButton.setVisibility(View.VISIBLE); + if (audioSendButton.getVisibility() == View.VISIBLE) { + if (Build.VERSION.SDK_INT >= 11 && animated) { + if (runningAnimationType == 1) { + return; + } + if (runningAnimation != null) { + ((AnimatorSet)runningAnimation).cancel(); + runningAnimation = null; + } + + sendButton.setVisibility(View.VISIBLE); + AnimatorSet animatorSet = new AnimatorSet(); + runningAnimation = animatorSet; + runningAnimationType = 1; + animatorSet.playTogether( + ObjectAnimator.ofFloat(audioSendButton, "scaleX", 0.1f), + ObjectAnimator.ofFloat(audioSendButton, "scaleY", 0.1f), + ObjectAnimator.ofFloat(audioSendButton, "alpha", 0.0f), + ObjectAnimator.ofFloat(sendButton, "scaleX", 1.0f), + ObjectAnimator.ofFloat(sendButton, "scaleY", 1.0f), + ObjectAnimator.ofFloat(sendButton, "alpha", 1.0f) + ); + + animatorSet.setDuration(200); + animatorSet.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + if (animation == runningAnimation) { + sendButton.setVisibility(View.VISIBLE); + audioSendButton.setVisibility(View.INVISIBLE); + runningAnimation = null; + runningAnimationType = 0; + } + } + }); + animatorSet.start(); + } else { + if (Build.VERSION.SDK_INT >= 11) { + audioSendButton.setScaleX(0.1f); + audioSendButton.setScaleY(0.1f); + audioSendButton.setAlpha(0.0f); + sendButton.setScaleX(1.0f); + sendButton.setScaleY(1.0f); + sendButton.setAlpha(1.0f); + } + sendButton.setVisibility(View.VISIBLE); + audioSendButton.setVisibility(View.INVISIBLE); + } + } + } else if (sendButton.getVisibility() == View.VISIBLE) { + if (Build.VERSION.SDK_INT >= 11 && animated) { + if (runningAnimationType == 2) { + return; + } + + if (runningAnimation != null) { + ((AnimatorSet)runningAnimation).cancel(); + runningAnimation = null; + } + + audioSendButton.setVisibility(View.VISIBLE); + AnimatorSet animatorSet = new AnimatorSet(); + runningAnimation = animatorSet; + runningAnimationType = 2; + animatorSet.playTogether( + ObjectAnimator.ofFloat(sendButton, "scaleX", 0.1f), + ObjectAnimator.ofFloat(sendButton, "scaleY", 0.1f), + ObjectAnimator.ofFloat(sendButton, "alpha", 0.0f), + ObjectAnimator.ofFloat(audioSendButton, "scaleX", 1.0f), + ObjectAnimator.ofFloat(audioSendButton, "scaleY", 1.0f), + ObjectAnimator.ofFloat(audioSendButton, "alpha", 1.0f) + ); + + animatorSet.setDuration(200); + animatorSet.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + if (animation == runningAnimation) { + sendButton.setVisibility(View.INVISIBLE); + audioSendButton.setVisibility(View.VISIBLE); + runningAnimation = null; + runningAnimationType = 0; + } + } + }); + animatorSet.start(); + } else { + if (Build.VERSION.SDK_INT >= 11) { + sendButton.setScaleX(0.1f); + sendButton.setScaleY(0.1f); + sendButton.setAlpha(0.0f); + audioSendButton.setScaleX(1.0f); + audioSendButton.setScaleY(1.0f); + audioSendButton.setAlpha(1.0f); + } + sendButton.setVisibility(View.INVISIBLE); + audioSendButton.setVisibility(View.VISIBLE); + } } } diff --git a/TMessagesProj/src/main/res/drawable/send_button_states.xml b/TMessagesProj/src/main/res/drawable/send_button_states.xml deleted file mode 100644 index 90174a3d0..000000000 --- a/TMessagesProj/src/main/res/drawable/send_button_states.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/layout/chat_layout.xml b/TMessagesProj/src/main/res/layout/chat_layout.xml index e9d9bbb11..11e46e8fc 100644 --- a/TMessagesProj/src/main/res/layout/chat_layout.xml +++ b/TMessagesProj/src/main/res/layout/chat_layout.xml @@ -133,7 +133,7 @@ android:layout_alignParentRight="true" android:layout_alignBottom="@+id/chat_text_edit" android:enabled="false" - android:src="@drawable/send_button_states" + android:src="@drawable/ic_send" android:background="@android:color/transparent"/> 텔레그램에 관한 질문은 자원봉사자들이 답변해 드립니다. 신속한 답변을 위해 노력하지만 답변이 다소 늦을 수 있습니다.
]]>일반적인 문제와 해결방법]]>에 대해서는 \'자주 묻는 질문]]>\'을 확인해 보세요. 질문하기 자주 묻는 질문 - https://telegram.org/faq + https://telegram.org/faq/ko 언어를 삭제할까요? 언어 파일이 올바르지 않습니다. 켜기 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 138d9cf0f..45c257f58 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Mon Jun 09 01:00:32 MSK 2014 +#Mon Oct 06 17:04:43 MSK 2014 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=http\://services.gradle.org/distributions/gradle-1.12-all.zip +distributionUrl=http\://services.gradle.org/distributions/gradle-2.1-all.zip