diff --git a/TMessagesProj/build.gradle b/TMessagesProj/build.gradle
index 097c0cd3..52181cf0 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 346
- 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 00c4ecb6..1e64f97a 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 d4d941d4..f77805d4 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 dc245900..d371cab8 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 47537218..06a4cb05 100644
--- a/TMessagesProj/src/main/java/org/telegram/android/LocaleController.java
+++ b/TMessagesProj/src/main/java/org/telegram/android/LocaleController.java
@@ -216,6 +216,14 @@ public class LocaleController {
sortedLanguages.add(localeInfo);
languagesDict.put(localeInfo.shortName, localeInfo);
+ localeInfo = new LocaleInfo();
+ localeInfo.name = "한국어";
+ localeInfo.nameEnglish = "Korean";
+ localeInfo.shortName = "ko";
+ localeInfo.pathToFile = null;
+ sortedLanguages.add(localeInfo);
+ languagesDict.put(localeInfo.shortName, localeInfo);
+
loadOtherLanguages();
for (LocaleInfo locale : otherLanguages) {
@@ -510,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) {
@@ -672,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";
@@ -727,7 +751,11 @@ public class LocaleController {
formatString = "h:mm a";
}
}
- formatterDay = FastDateFormat.getInstance(formatString, locale);
+ if (lang.toLowerCase().equals("ar") || lang.toLowerCase().equals("ko")) {
+ formatterDay = FastDateFormat.getInstance(formatString, locale);
+ } else {
+ formatterDay = FastDateFormat.getInstance(formatString, Locale.US);
+ }
}
public static String stringForMessageListDate(long date) {
diff --git a/TMessagesProj/src/main/java/org/telegram/android/MediaController.java b/TMessagesProj/src/main/java/org/telegram/android/MediaController.java
index c91e0035..48e974fe 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 d48d7b70..ba6cd5cc 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 6b0459eb..9661cc6e 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 4a024559..990ce178 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 6c3b530c..a327cbfd 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 8a476f6b..a1c538a4 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 9b1d2593..4d45efa6 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 3961c717..164abd92 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 3f08baa4..11125504 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 e6d7ed8c..02815f5c 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 08ef989d..c6fc1baf 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 fba3f0cc..febf6890 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 480fd97d..2577049d 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 1b58638c..54d96e86 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 5b496167..4b782b91 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 ef6f1919..99970c90 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 819c0e37..8cf9b438 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/ChatProfileActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileActivity.java
index 8f4ba826..d3253ada 100644
--- a/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileActivity.java
+++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileActivity.java
@@ -630,7 +630,7 @@ public class ChatProfileActivity extends BaseFragment implements NotificationCen
}
if (count != 0 && onlineCount > 1) {
- onlineText.setText(Html.fromHtml(String.format("%s, %d %s", LocaleController.formatPluralString("Members", count), onlineCount, LocaleController.formatPluralString("Online", onlineCount))));
+ onlineText.setText(Html.fromHtml(String.format("%s, %s", LocaleController.formatPluralString("Members", count), LocaleController.formatPluralString("Online", onlineCount))));
} else {
onlineText.setText(LocaleController.formatPluralString("Members", count));
}
diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ContactsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ContactsActivity.java
index 8076f045..d530fdc8 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 a71e3870..332381d6 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 d97f4981..293fc3a4 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 9aefe512..52395ca1 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 bee83e3f..0ab87bc8 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 f2d27cbd..f42452d5 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 50051bbf..5118653f 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 1bceb8cf..9471d2fb 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 81b253b9..f9ce3165 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 65d47fe8..c1c13b1b 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 ef88c1e0..b1f888ca 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 dd536e5a..01072920 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 7010f4e1..529f715c 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 990cc90d..96c92a17 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);
+ }
}
}
@@ -587,7 +684,7 @@ public class ChatActivityEnterView implements NotificationCenter.NotificationCen
}
int rotation = manager.getDefaultDisplay().getRotation();
- if (height > AndroidUtilities.dp(50)) {
+ if (height > AndroidUtilities.dp(50) && keyboardVisible) {
if (rotation == Surface.ROTATION_270 || rotation == Surface.ROTATION_90) {
keyboardHeightLand = height;
ApplicationLoader.applicationContext.getSharedPreferences("emoji", 0).edit().putInt("kbd_height_land3", keyboardHeightLand).commit();
@@ -598,25 +695,29 @@ public class ChatActivityEnterView implements NotificationCenter.NotificationCen
}
if (emojiPopup != null && emojiPopup.isShowing()) {
- WindowManager wm = (WindowManager) ApplicationLoader.applicationContext.getSystemService(Context.WINDOW_SERVICE);
- final WindowManager.LayoutParams layoutParams = (WindowManager.LayoutParams)emojiPopup.getContentView().getLayoutParams();
- layoutParams.width = AndroidUtilities.displaySize.x;
+ int newHeight = 0;
if (rotation == Surface.ROTATION_270 || rotation == Surface.ROTATION_90) {
- layoutParams.height = keyboardHeightLand;
+ newHeight = keyboardHeightLand;
} else {
- layoutParams.height = keyboardHeight;
+ newHeight = keyboardHeight;
}
- wm.updateViewLayout(emojiPopup.getContentView(), layoutParams);
- if (!keyboardVisible) {
- sizeNotifierRelativeLayout.post(new Runnable() {
- @Override
- public void run() {
- if (sizeNotifierRelativeLayout != null) {
- sizeNotifierRelativeLayout.setPadding(0, 0, 0, layoutParams.height);
- sizeNotifierRelativeLayout.requestLayout();
+ final WindowManager.LayoutParams layoutParams = (WindowManager.LayoutParams)emojiPopup.getContentView().getLayoutParams();
+ if (layoutParams.width != AndroidUtilities.displaySize.x || layoutParams.height != newHeight) {
+ WindowManager wm = (WindowManager) ApplicationLoader.applicationContext.getSystemService(Context.WINDOW_SERVICE);
+ layoutParams.width = AndroidUtilities.displaySize.x;
+ layoutParams.height = newHeight;
+ wm.updateViewLayout(emojiPopup.getContentView(), layoutParams);
+ if (!keyboardVisible) {
+ sizeNotifierRelativeLayout.post(new Runnable() {
+ @Override
+ public void run() {
+ if (sizeNotifierRelativeLayout != null) {
+ sizeNotifierRelativeLayout.setPadding(0, 0, 0, layoutParams.height);
+ sizeNotifierRelativeLayout.requestLayout();
+ }
}
- }
- });
+ });
+ }
}
}
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 90174a3d..00000000
--- 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 e9d9bbb1..11e46e8f 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"/>
EEE
HH:mm
h:mm a
- %1$s \'الساعة\' %2$s
+ %1$s الساعة %2$s
CACHE_TAG
\ No newline at end of file
diff --git a/TMessagesProj/src/main/res/values-de/strings.xml b/TMessagesProj/src/main/res/values-de/strings.xml
index 0159a1e3..c6f6c6cc 100644
--- a/TMessagesProj/src/main/res/values-de/strings.xml
+++ b/TMessagesProj/src/main/res/values-de/strings.xml
@@ -443,7 +443,7 @@
EEE
HH:mm
h:mm a
- %1$s \'um\' %2$s
+ %1$s um %2$s
CACHE_TAG
\ No newline at end of file
diff --git a/TMessagesProj/src/main/res/values-es/strings.xml b/TMessagesProj/src/main/res/values-es/strings.xml
index 63e25cca..70f76dec 100644
--- a/TMessagesProj/src/main/res/values-es/strings.xml
+++ b/TMessagesProj/src/main/res/values-es/strings.xml
@@ -443,7 +443,7 @@
EEE
HH:mm
h:mm a
- %1$s \'a las\' %2$s
+ %1$s a las %2$s
CACHE_TAG
\ No newline at end of file
diff --git a/TMessagesProj/src/main/res/values-it/strings.xml b/TMessagesProj/src/main/res/values-it/strings.xml
index 2a1499a3..23a75066 100644
--- a/TMessagesProj/src/main/res/values-it/strings.xml
+++ b/TMessagesProj/src/main/res/values-it/strings.xml
@@ -443,7 +443,7 @@
EEE
HH:mm
h:mm a
- %1$s \'alle\' %2$s
+ %1$s alle %2$s
CACHE_TAG
\ No newline at end of file
diff --git a/TMessagesProj/src/main/res/values-ko/strings.xml b/TMessagesProj/src/main/res/values-ko/strings.xml
new file mode 100644
index 00000000..754bc210
--- /dev/null
+++ b/TMessagesProj/src/main/res/values-ko/strings.xml
@@ -0,0 +1,449 @@
+
+
+
+
+
+ 텔레그램
+ 한국어
+ Korean
+ ko
+
+ 전화번호 입력
+ 국가번호와 전화번호를 입력하세요.대한민국 국가번호: 82
+ 국가를 선택하세요
+ 올바른 국가번호를 입력하세요
+
+ 인증코드 입력
+ 인증코드 메시지를 아래 번호로 전송했습니다]]>
+ 텔레그램이 %1$d:%2$02d 후에는 전화를 겁니다.
+ 텔레그램이 전화 거는 중...
+ 코드
+ 전화번호가 틀렸나요?
+ 코드를 받지 못하셨나요?
+
+ 이름 입력
+ 이름을 입력하세요
+
+ 이름(필수)
+ 성(선택)
+ 가입 취소
+
+ 채팅방
+ 검색
+ 새 메시지
+ 설정
+ 주소록
+ 새 그룹
+ 어제
+ 결과 없음
+ 채팅방이 없습니다...
+ 대화를 시작하려면 우측 상단의\n초대하기 버튼을 누르거나\n메뉴 버튼을 눌러 보세요.
+ 네트워크 연결을 기다리는 중...
+ 연결 중...
+ 업데이트 중...
+ 비밀대화 시작
+ %s님을 기다리는 중...
+ 비밀대화가 끝났습니다
+ 암호키 교환중...
+ %s님이 비밀대화에 참여했습니다.
+ 비밀대화에 참여했습니다.
+ 대화내용 지우기
+ 채팅방 나가기
+ 숨긴 이름
+ 채팅방 선택
+
+ 단체 메시지 리스트
+ 새 단체 메시지 리스트
+ 리스트 이름을 입력하세요
+ 단체 메시지 리스트를 만들었습니다
+ 받는 사람 추가
+ 리스트에서 제외
+
+ 파일 선택
+ %2$s 중 %1$s 남음
+ 알 수 없는 오류
+ 접근 오류
+ 파일이 없습니다
+ 파일 크기는 %1$s보다 작아야 합니다
+ 스토리지가 마운트되지 않음
+ USB 전송 활성
+ 내부 저장소
+ 외부 저장소
+ 시스템 루트
+ SD 카드
+
+ 숨김
+ 입력 중...
+ 첨부
+ 님이 입력 중...
+ 님이 입력 중...
+ 텔레그램에 관해\n궁금한 사항이 있나요?
+ 사진 촬영
+ 앨범
+ 위치
+ 동영상
+ 문서
+ 메시지가 없습니다...
+ 사진 보기
+ 위치 보기
+ 동영상 재생
+ 전달된 메시지
+ 보낸 사람
+ 최근에 사용한 이모티콘
+ 메시지
+ 메시지 입력
+ 다운로드
+ 선택: %d
+ 내 연락처 공유
+ 주소록에 추가
+ %s님이 비밀대화에 초대했습니다.
+ %s님을 비밀대화에 초대했습니다.
+ 비밀대화는
+ 단대단 암호화를 사용합니다
+ 서버에 어떤 흔적도 남기지 않습니다
+ 일정 시간 후에 자동삭제가 가능합니다
+ 전달 기능이 허용되지 않습니다
+ 그룹에서 추방되었습니다
+ 그룹을 떠났습니다
+ 이 그룹 삭제
+ 이 채팅방 삭제
+ 밀어서 취소
+ 다운로드 폴더에 저장
+ 언어 파일 적용
+ 지원하지 않는 형식입니다
+
+ 비밀대화를 요청했습니다
+ 비밀대화를 시작했습니다
+ %1$s님이 자동삭제를 %2$s 후로 설정했습니다
+ 자동삭제를 %1$s 후로 설정했습니다
+ %1$s님이 자동삭제를 해제했습니다
+ 자동삭제를 해제했습니다
+ 2초
+ 5초
+ 1분
+ 1시간
+ 하루
+ 일주일
+ 새 메시지가 있습니다
+ %1$s: %2$s
+ %1$s님이 메시지를 보냈습니다
+ %1$s님이 사진을 보냈습니다
+ %1$s님이 동영상을 보냈습니다
+ %1$s님이 연락처를 공유했습니다
+ %1$s님이 위치를 보냈습니다
+ %1$s님이 문서를 보냈습니다
+ %1$s님이 음성메시지를 보냈습니다
+ %1$s @ %2$s: %3$s
+ %1$s님이 %2$s 그룹에 메시지를 보냈습니다
+ %1$s님이 %2$s 그룹에 사진을 보냈습니다
+ %1$s님이 %2$s 그룹에 동영상을 보냈습니다
+ %1$s님이 %2$s 그룹에 연락처를 공유했습니다
+ %1$s님이 %2$s 그룹에 위치를 보냈습니다
+ %1$s님이 %2$s 그룹에 문서를 보냈습니다
+ %1$s님이 %2$s 그룹에 음성메시지를 보냈습니다
+ %1$s님이 %2$s 그룹에 초대했습니다
+ %1$s님이 그룹 이름을 %2$s 그룹으로 변경했습니다
+ %1$s님이 %2$s 그룹 사진을 변경했습니다
+ %1$s님이 %3$s님을 %2$s 그룹에 초대했습니다
+ %1$s님이 %3$s님을 %2$s 그룹에서 추방했습니다
+ %1$s님이 %2$s 그룹에서 추방했습니다
+ %1$s님이 %2$s 그룹을 떠났습니다
+ %1$s님이 텔레그램에 가입했습니다!
+ %1$s님,\n%2$s에 새 기기에서 회원님의 계정에 로그인하였습니다.\n\n기기: %3$s\n위치: %4$s\n\n본인의 접속이 아니라면 \'설정\'으로 가서 \'다른 모든 세션 종료\'를 실행하세요.\n\n감사합니다.\n텔레그램 팀 드림
+ %1$s님이 프로필 사진을 변경했습니다
+ 답장
+ %1$s 그룹에 답장하기
+ %1$s님에게 답장하기
+ %2$s %1$s
+
+ 대화상대 선택
+ 대화상대가 없습니다
+ 텔레그램으로 초대합니다! http://telegram.org/dl2
+ 오늘
+ 어제
+ 온라인
+ 오프라인
+ 마지막 접속:
+ 마지막 접속:
+ 친구 초대
+
+ 메시지 보내기...
+ 그룹 이름 입력
+ 그룹 이름
+ 모든 대화상대
+ 대화상대 %1$d/%2$d
+
+ 그룹 이름을 입력하세요
+ 공유한 미디어
+ 그룹 정보
+ 공유한 미디어
+ 설정
+ 대화상대 추가
+ 그룹에서 나가기
+ 알림
+ 그룹에서 내보내기
+
+ 공유
+ 추가
+ 차단
+ 편집
+ 삭제
+ 집
+ 휴대전화
+ 직장
+ 기타
+ 기본
+ 연락처 정보
+ 전화번호
+ 비밀대화 시작
+ 오류가 발생했습니다.
+ %1$s님의 텔레그램 버전이 낮아 비밀대화를 시작할 수 없습니다.\n\n비밀대화를 시작하려면 %2$s님이 텔레그램을 업데이트해야 합니다.
+ 비밀대화
+ 암호화 키
+ 자동삭제 타이머
+ 해제
+ 2초
+ 5초
+ 1분
+ 1시간
+ 하루
+ 일주일
+ 이 이미지는 ]]>%1$s]]>님과의 비밀대화에 사용 중인 암호화 키의 모습입니다.
]]>이 이미지가 ]]>%2$s]]>님의 암호화 키와 똑같다면 대화는 200%% 안전합니다.
]]>더 자세한 사항은 telegram.org 를 참고해 주세요.
+
+ 모든 알림 설정이 초기화되었습니다
+ 채팅 글자 크기
+ 질문하기
+ 화면 전환 효과 사용
+ 차단 해제
+ 차단을 해제하려면 대화상대를 길게 누르세요.
+ 차단한 친구가 없습니다
+ 전화번호
+ 메시지 알림
+ 알림 사용
+ 메시지 미리보기
+ 그룹 알림
+ 알림음
+ 앱을 실행 중일 때 알림
+ 실행 중일 때 알림음
+ 실행 중일 때 진동
+ 진동
+ 실행 중일 때 미리보기
+ 초기화
+ 모든 알림 설정 초기화
+ 연락처와 그룹에 대한 모든 알림 설정을 처음 상태로 되돌립니다.
+ 알림 및 소리
+ 차단 목록
+ 받은 사진 저장
+ 로그아웃
+ 이름
+ 알림음 없음
+ 기본값
+ 지원
+ 채팅방 배경화면
+ 메시지
+ 엔터키로 메시지 전송
+ 다른 모든 세션 종료
+ 이벤트
+ 친구의 텔레그램 가입 알림
+ PEBBLE 스마트워치 지원
+ 언어
+ 텔레그램에 관한 질문은 자원봉사자들이 답변해 드립니다. 신속한 답변을 위해 노력하지만 답변이 다소 늦을 수 있습니다.
]]>일반적인 문제와 해결방법]]>에 대해서는 \'자주 묻는 질문]]>\'을 확인해 보세요.
+ 질문하기
+ 자주 묻는 질문
+ https://telegram.org/faq/ko
+ 언어를 삭제할까요?
+ 언어 파일이 올바르지 않습니다.
+ 켜기
+ 끄기
+ 알림 서비스
+ 알림 서비스를 비활성화 하면 새로운 메시지의 알림이 다소 늦을 수 있습니다.텔레그램이 백그라운드에서 작동하며 알림을 바로 알릴 수 있도록 활성화 하는것을 권장합니다.
+ 정렬
+ 연락처 가져오기
+ WiFi 전용
+ 이름
+ 성
+ LED 색상
+ 알림 팝업
+ 사용 안 함
+ 화면이 켜져 있을 때만
+ 화면이 꺼져 있을 때만
+ 항상 표시
+ 앱 아이콘에 알림 개수 표시
+ 짧게
+ 길게
+ 시스템 기본값
+ 설정 기본값
+ 미디어 자동 다운로드
+ 모바일 데이터를 사용 중일 때
+ Wi-Fi에 연결 중일 때
+ 로밍 중일 때
+ 다운로드 안함
+ 앨범에 자동 저장
+
+ 공유한 미디어가 없습니다
+ 다운로드 취소
+
+ 내 위치
+ 지도
+ 위성
+ 혼합
+ m 떨어짐
+ km 떨어짐
+ 위치 보내기
+ 위치 공유
+
+ 모든 미디어 보기
+ 앨범에 저장
+ %1$d / %2$d
+ 앨범
+ 모든 사진
+ 사진이 없습니다.
+
+ 동영상 편집
+ 동영상 원본
+ 편집한 동영상
+ 동영상 보내는 중...
+ 동영상 크기 줄이기
+
+ 다음
+ 뒤로
+ 완료
+ 열기
+ 취소
+ 추가
+ 편집
+ 보내기
+ 전화 걸기
+ 복사
+ 삭제
+ 전달
+ 재전송
+ 사진 촬영
+ 앨범
+ 사진 삭제
+ 사진 열기
+ 설정
+ 확인
+
+ un1님이 un2님을 추방했습니다
+ un1님이 퇴장했습니다
+ un1님이 un2님을 초대했습니다
+ un1님이 그룹 사진을 삭제했습니다
+ un1님이 그룹 사진을 변경했습니다
+ un1님이 그룹 이름을 un2 그룹으로 변경했습니다
+ un1님이 그룹을 만들었습니다
+ un2님을 추방했습니다
+ 그룹을 떠났습니다
+ un2님을 초대했습니다
+ 그룹 사진을 삭제했습니다
+ 그룹 사진을 변경했습니다
+ 그룹 이름을 un2 그룹으로 변경했습니다
+ 그룹을 만들었습니다
+ un1님이 추방했습니다
+ un1님이 그룹에 초대했습니다
+ 이 메시지는 사용 중인 텔레그램의 버전이 낮아 지원하지 않습니다. 앱을 업데이트 하세요: http://telegram.org/update
+ 사진
+ 동영상
+ 위치
+ 연락처
+ 문서
+ 음성메시지
+ 나
+ 화면을 캡처했습니다!
+ un1님이 화면을 캡처했습니다!
+
+ 올바른 전화번호를 입력해 주세요
+ 코드가 만료되었습니다. 다시 로그인하세요
+ 너무 많이 시도하셨습니다. 나중에 다시 시도하세요
+ 올바른 코드를 입력해 주세요
+ 올바른 이름을 입력해 주세요
+ 올바른 성을 입력해 주세요
+ 불러오는 중...
+ 동영상 재생 앱이 없습니다. 계속하려면 앱을 설치해 주세요.
+ sms@telegram.org 이메일 주소로 이 문제를 보내주세요.
+ \'%1$s\' 파일 형식을 처리할 앱이 없습니다. 계속하려면 앱을 설치해 주세요.
+ 친구가 아직 텔레그램을 사용하지 않네요. 초대해 보세요!
+ 확실합니까?
+ 주소록에 추가할까요?
+ %1$s님을 그룹에 초대할까요?\n\n전달할 최근 메시지 개수:
+ %1$s님에게 메시지를 전달할까요?
+ 이 채팅방을 삭제할까요?
+ %1$s님에게 메시지를 보낼까요?
+ 로그아웃을 하시겠습니까?
+ 현재 기기를 제외하고 다른 기기에 로그인된 세션을 모두 종료시킬까요?
+ 그룹에서 나갈까요?
+ 채팅방을 삭제할까요?
+ 연락처를 공유할까요?
+ 대화상대를 차단할까요?
+ 차단을 해제할까요?
+ 대화상대를 삭제할까요?
+ 비밀대화를 시작할까요?
+ 내 이름으로 전달
+ %1$s 그룹에 메시지를 보낼까요?
+ %1$s 그룹에 메시지를 전달할까요?
+
+ 텔레그램
+ 눈부신 속도
+ 완전 무료
+ 보안성
+ 강력함
+ 클라우드 기반
+ 사생활 보호
+ 세상에서 가장 빠르고 안전한
무료]]> 메신저입니다.
+ 텔레그램]]>은 어떤 메신저보다도]]>빠르게 메시지를 전송합니다.
+ 텔레그램]]>은 영원히 무료입니다.]]>광고도 없고 이용료도 없습니다.
+ 텔레그램]]>은 그 어떤 누구로부터도]]>메시지를 안전하게 보호합니다.
+ 텔레그램]]>은 대화나 미디어의]]>용량에 제한이 없습니다.
+ 텔레그램]]>은 다른 기기에서도]]>동시에 사용할 수 있습니다.
+ 텔레그램]]>은 메시지를 강력하게 암호화하며]]>자동으로 삭제되게 할 수 있습니다.
+ 시작하기
+
+ 온라인 %1$d명
+ 온라인 %1$d명
+ 온라인 %1$d명
+ 온라인 %1$d명
+ 온라인 %1$d명
+ 온라인 %1$d명
+ 대화상대 없음
+ 대화상대 %1$d명
+ 대화상대 %1$d명
+ 대화상대 %1$d명
+ 대화상대 %1$d명
+ 대화상대 %1$d명
+ 외 %1$d명이 입력 중
+ 외 %1$d명이 입력 중
+ 외 %1$d명이 입력 중
+ 외 %1$d명이 입력 중
+ 외 %1$d명이 입력 중
+ 외 %1$d명이 입력 중
+ 새 메시지 없음
+ 새 메시지 %1$d건
+ 새 메시지 %1$d건
+ 새 메시지 %1$d건
+ 새 메시지 %1$d건
+ 새 메시지 %1$d건
+ 메시지 없음
+ 메시지 %1$d건
+ 메시지 %1$d건
+ 메시지 %1$d건
+ 메시지 %1$d건
+ 메시지 %1$d건
+ 보낸곳 없음 -
+ 채팅방 %1$d개에서
+ 채팅방 %1$d개에서
+ 채팅방 %1$d개에서
+ 채팅방 %1$d개에서
+ 채팅방 %1$d개에서
+
+ M\'월\' d\'일\'
+ yyyy.MM.dd.
+ yyyy. MM. dd.
+ M\'월\' d\'일\' EEEE
+ yyyy\'년\' M\'월\' d\'일\' EEEE
+ EEEE
+ HH:mm
+ a h:mm
+ %1$s %2$s
+
+ CACHE_TAG
+
\ No newline at end of file
diff --git a/TMessagesProj/src/main/res/values-nl/strings.xml b/TMessagesProj/src/main/res/values-nl/strings.xml
index 273e0eca..6a790bbf 100644
--- a/TMessagesProj/src/main/res/values-nl/strings.xml
+++ b/TMessagesProj/src/main/res/values-nl/strings.xml
@@ -443,7 +443,7 @@
EEE
HH:mm
h:mm a
- %1$s \'om\' %2$s
+ %1$s om %2$s
CACHE_TAG
\ No newline at end of file
diff --git a/TMessagesProj/src/main/res/values-pt-rBR/strings.xml b/TMessagesProj/src/main/res/values-pt-rBR/strings.xml
index a5e6957e..8af461b7 100644
--- a/TMessagesProj/src/main/res/values-pt-rBR/strings.xml
+++ b/TMessagesProj/src/main/res/values-pt-rBR/strings.xml
@@ -443,7 +443,7 @@
EEE
HH:mm
h:mm a
- %1$s \'às\' %2$s
+ %1$s às %2$s
CACHE_TAG
\ No newline at end of file
diff --git a/TMessagesProj/src/main/res/values-pt-rPT/strings.xml b/TMessagesProj/src/main/res/values-pt-rPT/strings.xml
index 248e03ab..1d089246 100644
--- a/TMessagesProj/src/main/res/values-pt-rPT/strings.xml
+++ b/TMessagesProj/src/main/res/values-pt-rPT/strings.xml
@@ -443,7 +443,7 @@
EEE
HH:mm
h:mm a
- %1$s \'às\' %2$s
+ %1$s às %2$s
CACHE_TAG
\ No newline at end of file
diff --git a/TMessagesProj/src/main/res/values/strings.xml b/TMessagesProj/src/main/res/values/strings.xml
index 0bbdd068..b6cd51c4 100644
--- a/TMessagesProj/src/main/res/values/strings.xml
+++ b/TMessagesProj/src/main/res/values/strings.xml
@@ -443,7 +443,7 @@
EEE
HH:mm
h:mm a
- %1$s \'at\' %2$s
+ %1$s at %2$s
CACHE_TAG
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 138d9cf0..45c257f5 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