Update locales, bug fixes
This commit is contained in:
parent
16150fe751
commit
9f7b47f517
@ -80,7 +80,7 @@ android {
|
|||||||
defaultConfig {
|
defaultConfig {
|
||||||
minSdkVersion 8
|
minSdkVersion 8
|
||||||
targetSdkVersion 19
|
targetSdkVersion 19
|
||||||
versionCode 315
|
versionCode 318
|
||||||
versionName "1.8.0"
|
versionName "1.8.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -110,6 +110,16 @@ METHODDEF(void) my_error_exit(j_common_ptr cinfo) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT void Java_org_telegram_messenger_Utilities_blurBitmap(JNIEnv *env, jclass class, jobject bitmap, int width, int height, int stride) {
|
JNIEXPORT void Java_org_telegram_messenger_Utilities_blurBitmap(JNIEnv *env, jclass class, jobject bitmap, int width, int height, int stride) {
|
||||||
|
AndroidBitmapInfo info;
|
||||||
|
|
||||||
|
if (AndroidBitmap_getInfo(env, bitmap, &info) < 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (info.format != ANDROID_BITMAP_FORMAT_RGBA_8888) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
void *pixels = 0;
|
void *pixels = 0;
|
||||||
if (AndroidBitmap_lockPixels(env, bitmap, &pixels) < 0) {
|
if (AndroidBitmap_lockPixels(env, bitmap, &pixels) < 0) {
|
||||||
return;
|
return;
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -91,7 +91,7 @@ public class MessagesStorage {
|
|||||||
database.executeFast("CREATE TABLE messages(mid INTEGER PRIMARY KEY, uid INTEGER, read_state INTEGER, send_state INTEGER, date INTEGER, data BLOB, out INTEGER, ttl INTEGER)").stepThis().dispose();
|
database.executeFast("CREATE TABLE messages(mid INTEGER PRIMARY KEY, uid INTEGER, read_state INTEGER, send_state INTEGER, date INTEGER, data BLOB, out INTEGER, ttl INTEGER)").stepThis().dispose();
|
||||||
database.executeFast("CREATE TABLE chats(uid INTEGER PRIMARY KEY, name TEXT, data BLOB)").stepThis().dispose();
|
database.executeFast("CREATE TABLE chats(uid INTEGER PRIMARY KEY, name TEXT, data BLOB)").stepThis().dispose();
|
||||||
database.executeFast("CREATE TABLE enc_chats(uid INTEGER PRIMARY KEY, user INTEGER, name TEXT, data BLOB, g BLOB, authkey BLOB, ttl INTEGER)").stepThis().dispose();
|
database.executeFast("CREATE TABLE enc_chats(uid INTEGER PRIMARY KEY, user INTEGER, name TEXT, data BLOB, g BLOB, authkey BLOB, ttl INTEGER)").stepThis().dispose();
|
||||||
database.executeFast("CREATE TABLE dialogs(did INTEGER PRIMARY KEY, date INTEGER, unread_count INTEGER, last_mid INTEGER, flags INTEGER)").stepThis().dispose();
|
database.executeFast("CREATE TABLE dialogs(did INTEGER PRIMARY KEY, date INTEGER, unread_count INTEGER, last_mid INTEGER)").stepThis().dispose();
|
||||||
database.executeFast("CREATE TABLE chat_settings(uid INTEGER PRIMARY KEY, participants BLOB)").stepThis().dispose();
|
database.executeFast("CREATE TABLE chat_settings(uid INTEGER PRIMARY KEY, participants BLOB)").stepThis().dispose();
|
||||||
database.executeFast("CREATE TABLE contacts(uid INTEGER PRIMARY KEY, mutual INTEGER)").stepThis().dispose();
|
database.executeFast("CREATE TABLE contacts(uid INTEGER PRIMARY KEY, mutual INTEGER)").stepThis().dispose();
|
||||||
database.executeFast("CREATE TABLE pending_read(uid INTEGER PRIMARY KEY, max_id INTEGER)").stepThis().dispose();
|
database.executeFast("CREATE TABLE pending_read(uid INTEGER PRIMARY KEY, max_id INTEGER)").stepThis().dispose();
|
||||||
@ -105,6 +105,7 @@ public class MessagesStorage {
|
|||||||
database.executeFast("CREATE TABLE user_photos(uid INTEGER, id INTEGER, data BLOB, PRIMARY KEY (uid, id))").stepThis().dispose();
|
database.executeFast("CREATE TABLE user_photos(uid INTEGER, id INTEGER, data BLOB, PRIMARY KEY (uid, id))").stepThis().dispose();
|
||||||
database.executeFast("CREATE TABLE blocked_users(uid INTEGER PRIMARY KEY)").stepThis().dispose();
|
database.executeFast("CREATE TABLE blocked_users(uid INTEGER PRIMARY KEY)").stepThis().dispose();
|
||||||
database.executeFast("CREATE TABLE download_queue(uid INTEGER, type INTEGER, date INTEGER, data BLOB, PRIMARY KEY (uid, type));").stepThis().dispose();
|
database.executeFast("CREATE TABLE download_queue(uid INTEGER, type INTEGER, date INTEGER, data BLOB, PRIMARY KEY (uid, type));").stepThis().dispose();
|
||||||
|
database.executeFast("CREATE TABLE dialog_settings(did INTEGER PRIMARY KEY, flags INTEGER);").stepThis().dispose();
|
||||||
//database.executeFast("CREATE TABLE attach_data(uid INTEGER, id INTEGER, data BLOB, PRIMARY KEY (uid, id))").stepThis().dispose();
|
//database.executeFast("CREATE TABLE attach_data(uid INTEGER, id INTEGER, data BLOB, PRIMARY KEY (uid, id))").stepThis().dispose();
|
||||||
|
|
||||||
database.executeFast("CREATE TABLE user_contacts_v6(uid INTEGER PRIMARY KEY, fname TEXT, sname TEXT)").stepThis().dispose();
|
database.executeFast("CREATE TABLE user_contacts_v6(uid INTEGER PRIMARY KEY, fname TEXT, sname TEXT)").stepThis().dispose();
|
||||||
@ -121,7 +122,7 @@ public class MessagesStorage {
|
|||||||
database.executeFast("CREATE INDEX IF NOT EXISTS date_idx_dialogs ON dialogs(date);").stepThis().dispose();
|
database.executeFast("CREATE INDEX IF NOT EXISTS date_idx_dialogs ON dialogs(date);").stepThis().dispose();
|
||||||
database.executeFast("CREATE INDEX IF NOT EXISTS date_idx_enc_tasks ON enc_tasks(date);").stepThis().dispose();
|
database.executeFast("CREATE INDEX IF NOT EXISTS date_idx_enc_tasks ON enc_tasks(date);").stepThis().dispose();
|
||||||
database.executeFast("CREATE INDEX IF NOT EXISTS last_mid_idx_dialogs ON dialogs(last_mid);").stepThis().dispose();
|
database.executeFast("CREATE INDEX IF NOT EXISTS last_mid_idx_dialogs ON dialogs(last_mid);").stepThis().dispose();
|
||||||
database.executeFast("CREATE INDEX IF NOT EXISTS unread_count_flags_idx_dialogs ON dialogs(unread_count, flags);").stepThis().dispose();
|
database.executeFast("CREATE INDEX IF NOT EXISTS unread_count_idx_dialogs ON dialogs(unread_count);").stepThis().dispose();
|
||||||
|
|
||||||
database.executeFast("CREATE INDEX IF NOT EXISTS uid_mid_idx_media ON media(uid, mid);").stepThis().dispose();
|
database.executeFast("CREATE INDEX IF NOT EXISTS uid_mid_idx_media ON media(uid, mid);").stepThis().dispose();
|
||||||
database.executeFast("CREATE INDEX IF NOT EXISTS mid_idx_media ON media(mid);").stepThis().dispose();
|
database.executeFast("CREATE INDEX IF NOT EXISTS mid_idx_media ON media(mid);").stepThis().dispose();
|
||||||
@ -132,7 +133,7 @@ public class MessagesStorage {
|
|||||||
database.executeFast("CREATE INDEX IF NOT EXISTS mid_out_idx_messages ON messages(mid, out);").stepThis().dispose();
|
database.executeFast("CREATE INDEX IF NOT EXISTS mid_out_idx_messages ON messages(mid, out);").stepThis().dispose();
|
||||||
database.executeFast("CREATE INDEX IF NOT EXISTS task_idx_messages ON messages(uid, out, read_state, ttl, date, send_state);").stepThis().dispose();
|
database.executeFast("CREATE INDEX IF NOT EXISTS task_idx_messages ON messages(uid, out, read_state, ttl, date, send_state);").stepThis().dispose();
|
||||||
database.executeFast("CREATE INDEX IF NOT EXISTS send_state_idx_messages ON messages(mid, send_state, date) WHERE mid < 0 AND send_state = 1;").stepThis().dispose();
|
database.executeFast("CREATE INDEX IF NOT EXISTS send_state_idx_messages ON messages(mid, send_state, date) WHERE mid < 0 AND send_state = 1;").stepThis().dispose();
|
||||||
database.executeFast("PRAGMA user_version = 3").stepThis().dispose();
|
database.executeFast("PRAGMA user_version = 4").stepThis().dispose();
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
SQLiteCursor cursor = database.queryFinalized("SELECT seq, pts, date, qts, lsv, sg, pbytes FROM params WHERE id = 1");
|
SQLiteCursor cursor = database.queryFinalized("SELECT seq, pts, date, qts, lsv, sg, pbytes FROM params WHERE id = 1");
|
||||||
@ -164,8 +165,8 @@ public class MessagesStorage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int version = database.executeInt("PRAGMA user_version");
|
int version = database.executeInt("PRAGMA user_version");
|
||||||
if (version < 3) {
|
if (version < 4) {
|
||||||
updateDbToVersion3();
|
updateDbToVersion4();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@ -174,7 +175,7 @@ public class MessagesStorage {
|
|||||||
loadUnreadMessages();
|
loadUnreadMessages();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateDbToVersion3() {
|
public void updateDbToVersion4() {
|
||||||
storageQueue.postRunnable(new Runnable() {
|
storageQueue.postRunnable(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
@ -187,7 +188,6 @@ public class MessagesStorage {
|
|||||||
database.executeFast("DROP INDEX IF EXISTS read_state_out_idx_messages;").stepThis().dispose();
|
database.executeFast("DROP INDEX IF EXISTS read_state_out_idx_messages;").stepThis().dispose();
|
||||||
database.executeFast("DROP INDEX IF EXISTS ttl_idx_messages;").stepThis().dispose();
|
database.executeFast("DROP INDEX IF EXISTS ttl_idx_messages;").stepThis().dispose();
|
||||||
database.executeFast("DROP INDEX IF EXISTS date_idx_messages;").stepThis().dispose();
|
database.executeFast("DROP INDEX IF EXISTS date_idx_messages;").stepThis().dispose();
|
||||||
database.executeFast("DROP INDEX IF EXISTS unread_count_idx_dialogs;").stepThis().dispose();
|
|
||||||
|
|
||||||
database.executeFast("CREATE INDEX IF NOT EXISTS mid_out_idx_messages ON messages(mid, out);").stepThis().dispose();
|
database.executeFast("CREATE INDEX IF NOT EXISTS mid_out_idx_messages ON messages(mid, out);").stepThis().dispose();
|
||||||
database.executeFast("CREATE INDEX IF NOT EXISTS task_idx_messages ON messages(uid, out, read_state, ttl, date, send_state);").stepThis().dispose();
|
database.executeFast("CREATE INDEX IF NOT EXISTS task_idx_messages ON messages(uid, out, read_state, ttl, date, send_state);").stepThis().dispose();
|
||||||
@ -206,23 +206,19 @@ public class MessagesStorage {
|
|||||||
database.executeFast("CREATE TABLE IF NOT EXISTS download_queue(uid INTEGER, type INTEGER, date INTEGER, data BLOB, PRIMARY KEY (uid, type));").stepThis().dispose();
|
database.executeFast("CREATE TABLE IF NOT EXISTS download_queue(uid INTEGER, type INTEGER, date INTEGER, data BLOB, PRIMARY KEY (uid, type));").stepThis().dispose();
|
||||||
database.executeFast("CREATE INDEX IF NOT EXISTS type_date_idx_download_queue ON download_queue(type, date);").stepThis().dispose();
|
database.executeFast("CREATE INDEX IF NOT EXISTS type_date_idx_download_queue ON download_queue(type, date);").stepThis().dispose();
|
||||||
|
|
||||||
|
database.executeFast("CREATE TABLE IF NOT EXISTS dialog_settings(did INTEGER PRIMARY KEY, flags INTEGER);").stepThis().dispose();
|
||||||
|
|
||||||
database.executeFast("CREATE INDEX IF NOT EXISTS send_state_idx_messages ON messages(mid, send_state, date) WHERE mid < 0 AND send_state = 1;").stepThis().dispose();
|
database.executeFast("CREATE INDEX IF NOT EXISTS send_state_idx_messages ON messages(mid, send_state, date) WHERE mid < 0 AND send_state = 1;").stepThis().dispose();
|
||||||
|
|
||||||
|
database.executeFast("CREATE INDEX IF NOT EXISTS unread_count_idx_dialogs ON dialogs(unread_count);").stepThis().dispose();
|
||||||
|
|
||||||
database.executeFast("UPDATE messages SET send_state = 2 WHERE mid < 0 AND send_state = 1").stepThis().dispose();
|
database.executeFast("UPDATE messages SET send_state = 2 WHERE mid < 0 AND send_state = 1").stepThis().dispose();
|
||||||
|
|
||||||
try {
|
database.executeFast("PRAGMA user_version = 4").stepThis().dispose();
|
||||||
database.executeFast("ALTER TABLE dialogs ADD COLUMN flags INTEGER NOT NULL default 0;").stepThis().dispose();
|
|
||||||
} catch (Exception e) {
|
|
||||||
FileLog.e("tmessages", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
database.executeFast("CREATE INDEX IF NOT EXISTS unread_count_flags_idx_dialogs ON dialogs(unread_count, flags);").stepThis().dispose();
|
|
||||||
|
|
||||||
database.executeFast("PRAGMA user_version = 3").stepThis().dispose();
|
|
||||||
storageQueue.postRunnable(new Runnable() {
|
storageQueue.postRunnable(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
String ids = "";
|
ArrayList<Integer> ids = new ArrayList<Integer>();
|
||||||
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Context.MODE_PRIVATE);
|
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Context.MODE_PRIVATE);
|
||||||
Map<String, ?> values = preferences.getAll();
|
Map<String, ?> values = preferences.getAll();
|
||||||
for (Map.Entry<String, ?> entry : values.entrySet()) {
|
for (Map.Entry<String, ?> entry : values.entrySet()) {
|
||||||
@ -231,15 +227,25 @@ public class MessagesStorage {
|
|||||||
Integer value = (Integer)entry.getValue();
|
Integer value = (Integer)entry.getValue();
|
||||||
if (value == 2) {
|
if (value == 2) {
|
||||||
key = key.replace("notify2_", "");
|
key = key.replace("notify2_", "");
|
||||||
if (ids.length() != 0) {
|
try {
|
||||||
ids += ",";
|
ids.add(Integer.parseInt(key));
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
ids += key;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
database.executeFast("UPDATE dialogs SET flags = 1 WHERE did IN (" + ids + ");").stepThis().dispose();
|
database.beginTransaction();
|
||||||
|
SQLitePreparedStatement state = database.executeFast("REPLACE INTO dialog_settings VALUES(?, ?)");
|
||||||
|
for (Integer id : ids) {
|
||||||
|
state.requery();
|
||||||
|
state.bindLong(1, id);
|
||||||
|
state.bindInteger(2, 1);
|
||||||
|
state.step();
|
||||||
|
}
|
||||||
|
state.dispose();
|
||||||
|
database.commitTransaction();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
FileLog.e("tmessages", e);
|
FileLog.e("tmessages", e);
|
||||||
}
|
}
|
||||||
@ -345,7 +351,7 @@ public class MessagesStorage {
|
|||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
try {
|
try {
|
||||||
database.executeFast("UPDATE dialogs SET flags = " + flags + " WHERE did = " + did).stepThis().dispose();
|
database.executeFast(String.format(Locale.US, "REPLACE INTO dialog_settings VALUES(%d, %d)", did, flags)).stepThis().dispose();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
FileLog.e("tmessages", e);
|
FileLog.e("tmessages", e);
|
||||||
}
|
}
|
||||||
@ -359,9 +365,10 @@ public class MessagesStorage {
|
|||||||
public void run() {
|
public void run() {
|
||||||
try {
|
try {
|
||||||
final HashMap<Long, Integer> pushDialogs = new HashMap<Long, Integer>();
|
final HashMap<Long, Integer> pushDialogs = new HashMap<Long, Integer>();
|
||||||
SQLiteCursor cursor = database.queryFinalized("SELECT did, unread_count FROM dialogs WHERE unread_count != 0 AND flags != 1");
|
SQLiteCursor cursor = database.queryFinalized("SELECT d.did, d.unread_count, s.flags FROM dialogs as d LEFT JOIN dialog_settings as s ON d.did = s.did WHERE d.unread_count != 0");
|
||||||
String ids = "";
|
String ids = "";
|
||||||
while (cursor.next()) {
|
while (cursor.next()) {
|
||||||
|
if (cursor.isNull(2) || cursor.intValue(2) != 1) {
|
||||||
long did = cursor.longValue(0);
|
long did = cursor.longValue(0);
|
||||||
int count = cursor.intValue(1);
|
int count = cursor.intValue(1);
|
||||||
pushDialogs.put(did, count);
|
pushDialogs.put(did, count);
|
||||||
@ -370,6 +377,7 @@ public class MessagesStorage {
|
|||||||
}
|
}
|
||||||
ids += did;
|
ids += did;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
cursor.dispose();
|
cursor.dispose();
|
||||||
|
|
||||||
final ArrayList<TLRPC.Message> messages = new ArrayList<TLRPC.Message>();
|
final ArrayList<TLRPC.Message> messages = new ArrayList<TLRPC.Message>();
|
||||||
@ -2237,12 +2245,11 @@ public class MessagesStorage {
|
|||||||
buffersStorage.reuseFreeBuffer(data3);
|
buffersStorage.reuseFreeBuffer(data3);
|
||||||
|
|
||||||
if (dialog != null) {
|
if (dialog != null) {
|
||||||
state = database.executeFast("REPLACE INTO dialogs VALUES(?, ?, ?, ?, ?)");
|
state = database.executeFast("REPLACE INTO dialogs(did, date, unread_count, last_mid) VALUES(?, ?, ?, ?)");
|
||||||
state.bindLong(1, dialog.id);
|
state.bindLong(1, dialog.id);
|
||||||
state.bindInteger(2, dialog.last_message_date);
|
state.bindInteger(2, dialog.last_message_date);
|
||||||
state.bindInteger(3, dialog.unread_count);
|
state.bindInteger(3, dialog.unread_count);
|
||||||
state.bindInteger(4, dialog.top_message);
|
state.bindInteger(4, dialog.top_message);
|
||||||
state.bindInteger(5, dialog.flags);
|
|
||||||
state.step();
|
state.step();
|
||||||
state.dispose();
|
state.dispose();
|
||||||
}
|
}
|
||||||
@ -2572,18 +2579,16 @@ public class MessagesStorage {
|
|||||||
state3.dispose();
|
state3.dispose();
|
||||||
state4.dispose();
|
state4.dispose();
|
||||||
|
|
||||||
state = database.executeFast("REPLACE INTO dialogs VALUES(?, ?, ?, ?, ?)");
|
state = database.executeFast("REPLACE INTO dialogs(did, date, unread_count, last_mid) VALUES(?, ?, ?, ?)");
|
||||||
for (HashMap.Entry<Long, TLRPC.Message> pair : messagesMap.entrySet()) {
|
for (HashMap.Entry<Long, TLRPC.Message> pair : messagesMap.entrySet()) {
|
||||||
Long key = pair.getKey();
|
Long key = pair.getKey();
|
||||||
|
|
||||||
int dialog_date = 0;
|
int dialog_date = 0;
|
||||||
int old_unread_count = 0;
|
int old_unread_count = 0;
|
||||||
int old_flags = 0;
|
SQLiteCursor cursor = database.queryFinalized("SELECT date, unread_count FROM dialogs WHERE did = " + key);
|
||||||
SQLiteCursor cursor = database.queryFinalized("SELECT date, unread_count, flags FROM dialogs WHERE did = " + key);
|
|
||||||
if (cursor.next()) {
|
if (cursor.next()) {
|
||||||
dialog_date = cursor.intValue(0);
|
dialog_date = cursor.intValue(0);
|
||||||
old_unread_count = cursor.intValue(1);
|
old_unread_count = cursor.intValue(1);
|
||||||
old_flags = cursor.intValue(2);
|
|
||||||
}
|
}
|
||||||
cursor.dispose();
|
cursor.dispose();
|
||||||
|
|
||||||
@ -2607,7 +2612,6 @@ public class MessagesStorage {
|
|||||||
}
|
}
|
||||||
state.bindInteger(3, old_unread_count + unread_count);
|
state.bindInteger(3, old_unread_count + unread_count);
|
||||||
state.bindInteger(4, messageId);
|
state.bindInteger(4, messageId);
|
||||||
state.bindInteger(5, old_flags);
|
|
||||||
state.step();
|
state.step();
|
||||||
}
|
}
|
||||||
state.dispose();
|
state.dispose();
|
||||||
@ -3043,14 +3047,13 @@ public class MessagesStorage {
|
|||||||
ArrayList<Integer> usersToLoad = new ArrayList<Integer>();
|
ArrayList<Integer> usersToLoad = new ArrayList<Integer>();
|
||||||
ArrayList<Integer> chatsToLoad = new ArrayList<Integer>();
|
ArrayList<Integer> chatsToLoad = new ArrayList<Integer>();
|
||||||
ArrayList<Integer> encryptedToLoad = new ArrayList<Integer>();
|
ArrayList<Integer> encryptedToLoad = new ArrayList<Integer>();
|
||||||
cursor = database.queryFinalized(String.format(Locale.US, "SELECT d.did, d.last_mid, d.unread_count, d.date, m.data, m.read_state, m.mid, m.send_state, d.flags FROM dialogs as d LEFT JOIN messages as m ON d.last_mid = m.mid WHERE d.did IN(%s)", ids));
|
cursor = database.queryFinalized(String.format(Locale.US, "SELECT d.did, d.last_mid, d.unread_count, d.date, m.data, m.read_state, m.mid, m.send_state FROM dialogs as d LEFT JOIN messages as m ON d.last_mid = m.mid WHERE d.did IN(%s)", ids));
|
||||||
while (cursor.next()) {
|
while (cursor.next()) {
|
||||||
TLRPC.TL_dialog dialog = new TLRPC.TL_dialog();
|
TLRPC.TL_dialog dialog = new TLRPC.TL_dialog();
|
||||||
dialog.id = cursor.longValue(0);
|
dialog.id = cursor.longValue(0);
|
||||||
dialog.top_message = cursor.intValue(1);
|
dialog.top_message = cursor.intValue(1);
|
||||||
dialog.unread_count = cursor.intValue(2);
|
dialog.unread_count = cursor.intValue(2);
|
||||||
dialog.last_message_date = cursor.intValue(3);
|
dialog.last_message_date = cursor.intValue(3);
|
||||||
dialog.flags = cursor.intValue(8);
|
|
||||||
dialogs.dialogs.add(dialog);
|
dialogs.dialogs.add(dialog);
|
||||||
|
|
||||||
ByteBufferDesc data = buffersStorage.getFreeBuffer(cursor.byteArrayLength(4));
|
ByteBufferDesc data = buffersStorage.getFreeBuffer(cursor.byteArrayLength(4));
|
||||||
@ -3315,14 +3318,13 @@ public class MessagesStorage {
|
|||||||
usersToLoad.add(UserConfig.getClientUserId());
|
usersToLoad.add(UserConfig.getClientUserId());
|
||||||
ArrayList<Integer> chatsToLoad = new ArrayList<Integer>();
|
ArrayList<Integer> chatsToLoad = new ArrayList<Integer>();
|
||||||
ArrayList<Integer> encryptedToLoad = new ArrayList<Integer>();
|
ArrayList<Integer> encryptedToLoad = new ArrayList<Integer>();
|
||||||
SQLiteCursor cursor = database.queryFinalized(String.format(Locale.US, "SELECT d.did, d.last_mid, d.unread_count, d.date, m.data, m.read_state, m.mid, m.send_state, d.flags FROM dialogs as d LEFT JOIN messages as m ON d.last_mid = m.mid ORDER BY d.date DESC LIMIT %d,%d", offset, count));
|
SQLiteCursor cursor = database.queryFinalized(String.format(Locale.US, "SELECT d.did, d.last_mid, d.unread_count, d.date, m.data, m.read_state, m.mid, m.send_state FROM dialogs as d LEFT JOIN messages as m ON d.last_mid = m.mid ORDER BY d.date DESC LIMIT %d,%d", offset, count));
|
||||||
while (cursor.next()) {
|
while (cursor.next()) {
|
||||||
TLRPC.TL_dialog dialog = new TLRPC.TL_dialog();
|
TLRPC.TL_dialog dialog = new TLRPC.TL_dialog();
|
||||||
dialog.id = cursor.longValue(0);
|
dialog.id = cursor.longValue(0);
|
||||||
dialog.top_message = cursor.intValue(1);
|
dialog.top_message = cursor.intValue(1);
|
||||||
dialog.unread_count = cursor.intValue(2);
|
dialog.unread_count = cursor.intValue(2);
|
||||||
dialog.last_message_date = cursor.intValue(3);
|
dialog.last_message_date = cursor.intValue(3);
|
||||||
dialog.flags = cursor.intValue(8);
|
|
||||||
dialogs.dialogs.add(dialog);
|
dialogs.dialogs.add(dialog);
|
||||||
|
|
||||||
ByteBufferDesc data = buffersStorage.getFreeBuffer(cursor.byteArrayLength(4));
|
ByteBufferDesc data = buffersStorage.getFreeBuffer(cursor.byteArrayLength(4));
|
||||||
@ -3498,12 +3500,14 @@ public class MessagesStorage {
|
|||||||
|
|
||||||
if (!dialogs.dialogs.isEmpty()) {
|
if (!dialogs.dialogs.isEmpty()) {
|
||||||
SQLitePreparedStatement state = database.executeFast("REPLACE INTO messages VALUES(?, ?, ?, ?, ?, ?, ?, ?)");
|
SQLitePreparedStatement state = database.executeFast("REPLACE INTO messages VALUES(?, ?, ?, ?, ?, ?, ?, ?)");
|
||||||
SQLitePreparedStatement state2 = database.executeFast("REPLACE INTO dialogs VALUES(?, ?, ?, ?, ?)");
|
SQLitePreparedStatement state2 = database.executeFast("REPLACE INTO dialogs(did, date, unread_count, last_mid) VALUES(?, ?, ?, ?)");
|
||||||
SQLitePreparedStatement state3 = database.executeFast("REPLACE INTO media VALUES(?, ?, ?, ?)");
|
SQLitePreparedStatement state3 = database.executeFast("REPLACE INTO media VALUES(?, ?, ?, ?)");
|
||||||
|
SQLitePreparedStatement state4 = database.executeFast("REPLACE INTO dialog_settings VALUES(?, ?)");
|
||||||
|
|
||||||
for (TLRPC.TL_dialog dialog : dialogs.dialogs) {
|
for (TLRPC.TL_dialog dialog : dialogs.dialogs) {
|
||||||
state.requery();
|
state.requery();
|
||||||
state2.requery();
|
state2.requery();
|
||||||
|
state4.requery();
|
||||||
int uid = dialog.peer.user_id;
|
int uid = dialog.peer.user_id;
|
||||||
if (uid == 0) {
|
if (uid == 0) {
|
||||||
uid = -dialog.peer.chat_id;
|
uid = -dialog.peer.chat_id;
|
||||||
@ -3526,12 +3530,12 @@ public class MessagesStorage {
|
|||||||
state2.bindInteger(2, message.date);
|
state2.bindInteger(2, message.date);
|
||||||
state2.bindInteger(3, dialog.unread_count);
|
state2.bindInteger(3, dialog.unread_count);
|
||||||
state2.bindInteger(4, dialog.top_message);
|
state2.bindInteger(4, dialog.top_message);
|
||||||
if (dialog.notify_settings.mute_until != 0) {
|
|
||||||
dialog.flags = 1;
|
|
||||||
}
|
|
||||||
state2.bindInteger(5, dialog.flags);
|
|
||||||
state2.step();
|
state2.step();
|
||||||
|
|
||||||
|
state4.bindLong(1, uid);
|
||||||
|
state4.bindInteger(2, dialog.notify_settings.mute_until != 0 ? 1 : 0);
|
||||||
|
state4.step();
|
||||||
|
|
||||||
if (message.media instanceof TLRPC.TL_messageMediaVideo || message.media instanceof TLRPC.TL_messageMediaPhoto) {
|
if (message.media instanceof TLRPC.TL_messageMediaVideo || message.media instanceof TLRPC.TL_messageMediaPhoto) {
|
||||||
state3.requery();
|
state3.requery();
|
||||||
state3.bindLong(1, message.id);
|
state3.bindLong(1, message.id);
|
||||||
@ -3545,6 +3549,7 @@ public class MessagesStorage {
|
|||||||
state.dispose();
|
state.dispose();
|
||||||
state2.dispose();
|
state2.dispose();
|
||||||
state3.dispose();
|
state3.dispose();
|
||||||
|
state4.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!dialogs.users.isEmpty()) {
|
if (!dialogs.users.isEmpty()) {
|
||||||
|
@ -576,9 +576,8 @@ public class NotificationsController {
|
|||||||
if (popup != 0) {
|
if (popup != 0) {
|
||||||
popupMessages.add(0, messageObject);
|
popupMessages.add(0, messageObject);
|
||||||
}
|
}
|
||||||
pushMessagesDict.put(messageObject.messageOwner.id, messageObject);
|
|
||||||
pushMessages.add(0, messageObject);
|
pushMessages.add(0, messageObject);
|
||||||
FileLog.e("tmessages", "processNewMessages add dialog = " + dialog_id);
|
pushMessagesDict.put(messageObject.messageOwner.id, messageObject);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -609,16 +608,17 @@ public class NotificationsController {
|
|||||||
|
|
||||||
Integer currentCount = pushDialogs.get(dialog_id);
|
Integer currentCount = pushDialogs.get(dialog_id);
|
||||||
Integer newCount = entry.getValue();
|
Integer newCount = entry.getValue();
|
||||||
FileLog.e("tmessages", "processDialogsUpdateRead dialog = " + dialog_id + " newCount = " + newCount + " oldCount = " + currentCount);
|
|
||||||
if (newCount < 0) {
|
if (newCount < 0) {
|
||||||
if (currentCount == null) {
|
if (currentCount == null) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
newCount = currentCount + newCount;
|
newCount = currentCount + newCount;
|
||||||
}
|
}
|
||||||
|
if (canAddValue || newCount == 0) {
|
||||||
if (currentCount != null) {
|
if (currentCount != null) {
|
||||||
total_unread_count -= currentCount;
|
total_unread_count -= currentCount;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (newCount == 0) {
|
if (newCount == 0) {
|
||||||
pushDialogs.remove(dialog_id);
|
pushDialogs.remove(dialog_id);
|
||||||
for (int a = 0; a < pushMessages.size(); a++) {
|
for (int a = 0; a < pushMessages.size(); a++) {
|
||||||
@ -654,12 +654,23 @@ public class NotificationsController {
|
|||||||
pushMessagesDict.clear();
|
pushMessagesDict.clear();
|
||||||
total_unread_count = 0;
|
total_unread_count = 0;
|
||||||
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Context.MODE_PRIVATE);
|
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Context.MODE_PRIVATE);
|
||||||
|
HashMap<Long, Boolean> settingsCache = new HashMap<Long, Boolean>();
|
||||||
|
|
||||||
for (HashMap.Entry<Long, Integer> entry : dialogs.entrySet()) {
|
for (HashMap.Entry<Long, Integer> entry : dialogs.entrySet()) {
|
||||||
pushDialogs.put(entry.getKey(), entry.getValue());
|
long dialog_id = entry.getKey();
|
||||||
total_unread_count += entry.getValue();
|
Boolean value = settingsCache.get(dialog_id);
|
||||||
FileLog.e("tmessages", "processLoadedUnreadMessages dialog = " + entry.getKey() + " count = " + entry.getValue());
|
if (value == null) {
|
||||||
|
int notify_override = preferences.getInt("notify2_" + dialog_id, 0);
|
||||||
|
value = !(notify_override == 2 || (!preferences.getBoolean("EnableAll", true) || ((int) dialog_id < 0) && !preferences.getBoolean("EnableGroup", true)) && notify_override == 0);
|
||||||
|
settingsCache.put(dialog_id, value);
|
||||||
|
}
|
||||||
|
if (!value) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
int count = entry.getValue();
|
||||||
|
pushDialogs.put(dialog_id, count);
|
||||||
|
total_unread_count += count;
|
||||||
}
|
}
|
||||||
FileLog.e("tmessages", "processLoadedUnreadMessages total = " + total_unread_count + " messages = " + messages.size());
|
|
||||||
if (messages != null) {
|
if (messages != null) {
|
||||||
for (TLRPC.Message message : messages) {
|
for (TLRPC.Message message : messages) {
|
||||||
if (pushMessagesDict.containsKey(message.id)) {
|
if (pushMessagesDict.containsKey(message.id)) {
|
||||||
@ -667,7 +678,13 @@ public class NotificationsController {
|
|||||||
}
|
}
|
||||||
MessageObject messageObject = new MessageObject(message, null, 0);
|
MessageObject messageObject = new MessageObject(message, null, 0);
|
||||||
long dialog_id = messageObject.getDialogId();
|
long dialog_id = messageObject.getDialogId();
|
||||||
if (dialog_id == openned_dialog_id && ApplicationLoader.isScreenOn) {
|
Boolean value = settingsCache.get(dialog_id);
|
||||||
|
if (value == null) {
|
||||||
|
int notify_override = preferences.getInt("notify2_" + dialog_id, 0);
|
||||||
|
value = !(notify_override == 2 || (!preferences.getBoolean("EnableAll", true) || ((int) dialog_id < 0) && !preferences.getBoolean("EnableGroup", true)) && notify_override == 0);
|
||||||
|
settingsCache.put(dialog_id, value);
|
||||||
|
}
|
||||||
|
if (!value || dialog_id == openned_dialog_id && ApplicationLoader.isScreenOn) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
pushMessagesDict.put(messageObject.messageOwner.id, messageObject);
|
pushMessagesDict.put(messageObject.messageOwner.id, messageObject);
|
||||||
|
@ -8886,7 +8886,6 @@ public class TLRPC {
|
|||||||
public int last_message_date;
|
public int last_message_date;
|
||||||
public long id;
|
public long id;
|
||||||
public int last_read;
|
public int last_read;
|
||||||
public int flags;
|
|
||||||
|
|
||||||
public void readParams(AbsSerializedData stream) {
|
public void readParams(AbsSerializedData stream) {
|
||||||
peer = (Peer)TLClassStore.Instance().TLdeserialize(stream, stream.readInt32());
|
peer = (Peer)TLClassStore.Instance().TLdeserialize(stream, stream.readInt32());
|
||||||
|
@ -405,6 +405,8 @@ public class LaunchActivity extends ActionBarActivity implements NotificationCen
|
|||||||
removeFragmentFromStack(fragmentsStack.get(a));
|
removeFragmentFromStack(fragmentsStack.get(a));
|
||||||
a--;
|
a--;
|
||||||
}
|
}
|
||||||
|
pushOpened = false;
|
||||||
|
isNew = false;
|
||||||
}
|
}
|
||||||
if (videoPath != null || photoPathsArray != null || sendingText != null || documentsPathsArray != null || contactsToSend != null) {
|
if (videoPath != null || photoPathsArray != null || sendingText != null || documentsPathsArray != null || contactsToSend != null) {
|
||||||
NotificationCenter.getInstance().postNotificationName(NotificationCenter.closeChats);
|
NotificationCenter.getInstance().postNotificationName(NotificationCenter.closeChats);
|
||||||
|
@ -2344,7 +2344,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat
|
|||||||
if (canShowBottom) {
|
if (canShowBottom) {
|
||||||
toggleActionBar(!isActionBarVisible, true);
|
toggleActionBar(!isActionBarVisible, true);
|
||||||
} else {
|
} else {
|
||||||
checkImageView.callOnClick();
|
checkImageView.performClick();
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,7 @@
|
|||||||
<string name="Yesterday">أمس</string>
|
<string name="Yesterday">أمس</string>
|
||||||
<string name="NoResult">لا توجد نتائج</string>
|
<string name="NoResult">لا توجد نتائج</string>
|
||||||
<string name="NoChats">...لا توجد محادثات بعد</string>
|
<string name="NoChats">...لا توجد محادثات بعد</string>
|
||||||
<string name="NoChatsHelp">إبدأ المراسلة بالضغط على \nأيقونة النقاط في أعلى يمين الشاشة\nأو اذهب لقسم جهات الاتصال.</string>
|
<string name="NoChatsHelp">إبدأ المراسلة بالضغط على\nأيقونة النقاط في أعلى يمين الشاشة\nأو اذهب لقسم جهات الاتصال.</string>
|
||||||
<string name="WaitingForNetwork">في إنتظار الشبكة...</string>
|
<string name="WaitingForNetwork">في إنتظار الشبكة...</string>
|
||||||
<string name="Connecting">جاري الاتصال...</string>
|
<string name="Connecting">جاري الاتصال...</string>
|
||||||
<string name="Updating">جاري التحديث...</string>
|
<string name="Updating">جاري التحديث...</string>
|
||||||
@ -160,7 +160,7 @@
|
|||||||
<string name="NotificationContactJoined">%1$s قام بالتسجيل في تيليجرام!</string>
|
<string name="NotificationContactJoined">%1$s قام بالتسجيل في تيليجرام!</string>
|
||||||
<string name="NotificationUnrecognizedDevice">%1$s,\nتم تسجيل الدخول لحسابك من جهاز جديد يوم %2$s\n\nالجهاز: %3$s\nالموقع: %4$s\n\nإذا لم يكن أنت من سجل الدخول، يمكنك الذهاب للإعدادات ثم تسجيل الخروج من كافة الأجهزة الأخرى.\n\nشكرًا,\nفريق عمل تيليجرام</string>
|
<string name="NotificationUnrecognizedDevice">%1$s,\nتم تسجيل الدخول لحسابك من جهاز جديد يوم %2$s\n\nالجهاز: %3$s\nالموقع: %4$s\n\nإذا لم يكن أنت من سجل الدخول، يمكنك الذهاب للإعدادات ثم تسجيل الخروج من كافة الأجهزة الأخرى.\n\nشكرًا,\nفريق عمل تيليجرام</string>
|
||||||
<string name="NotificationContactNewPhoto">%1$s قام بتغيير صورته الشخصية</string>
|
<string name="NotificationContactNewPhoto">%1$s قام بتغيير صورته الشخصية</string>
|
||||||
<string name="Reply">Reply</string>
|
<string name="Reply">الرد</string>
|
||||||
|
|
||||||
<!--contacts view-->
|
<!--contacts view-->
|
||||||
<string name="SelectContact">اختر جهة اتصال</string>
|
<string name="SelectContact">اختر جهة اتصال</string>
|
||||||
@ -275,21 +275,21 @@
|
|||||||
<string name="SortFirstName">الاسم الأول</string>
|
<string name="SortFirstName">الاسم الأول</string>
|
||||||
<string name="SortLastName">اسم العائلة</string>
|
<string name="SortLastName">اسم العائلة</string>
|
||||||
<string name="LedColor">لون إضاءة الـ LED</string>
|
<string name="LedColor">لون إضاءة الـ LED</string>
|
||||||
<string name="PopupNotification">إشعارات منبثقة</string>
|
<string name="PopupNotification">الإشعارات المنبثقة</string>
|
||||||
<string name="NoPopup">بدون إشعارات منبثقة</string>
|
<string name="NoPopup">بدون إشعارات منبثقة</string>
|
||||||
<string name="OnlyWhenScreenOn">فقط عندما تكون الشاشة تعمل</string>
|
<string name="OnlyWhenScreenOn">فقط عندما تكون الشاشة تعمل</string>
|
||||||
<string name="OnlyWhenScreenOff">فقط عندما تكون الشاشة مطفأة</string>
|
<string name="OnlyWhenScreenOff">فقط عندما تكون الشاشة مطفأة</string>
|
||||||
<string name="AlwaysShowPopup">دائمًا أظهر الإشعارات المنبثقة</string>
|
<string name="AlwaysShowPopup">دائمًا أظهر الإشعارات المنبثقة</string>
|
||||||
<string name="BadgeNumber">Badge Number</string>
|
<string name="BadgeNumber">عداد الشارات</string>
|
||||||
<string name="Short">Short</string>
|
<string name="Short">قصير</string>
|
||||||
<string name="Long">Long</string>
|
<string name="Long">طويل</string>
|
||||||
<string name="SystemDefault">System default</string>
|
<string name="SystemDefault">النظام الإفتراضي</string>
|
||||||
<string name="SettingsDefault">Settings default</string>
|
<string name="SettingsDefault">الإعدادات الإفتراضية</string>
|
||||||
<string name="AutomaticMediaDownload">AUTOMATIC MEDIA DOWNLOAD</string>
|
<string name="AutomaticMediaDownload">تنزيل الوسائط تلقائيا</string>
|
||||||
<string name="WhenUsingMobileData">When using mobile data</string>
|
<string name="WhenUsingMobileData">عند استخدام البيانات الخلوية</string>
|
||||||
<string name="WhenConnectedOnWiFi">When connected on Wi-Fi</string>
|
<string name="WhenConnectedOnWiFi">عند الاتصال بالشبكة اللاسلكية</string>
|
||||||
<string name="WhenRoaming">When roaming</string>
|
<string name="WhenRoaming">عند تواجدك خارج البلاد</string>
|
||||||
<string name="NoMediaAutoDownload">No media</string>
|
<string name="NoMediaAutoDownload">لا يوجد وسائط</string>
|
||||||
|
|
||||||
<!--media view-->
|
<!--media view-->
|
||||||
<string name="NoMedia">لا توجد وسائط بعد</string>
|
<string name="NoMedia">لا توجد وسائط بعد</string>
|
||||||
@ -376,24 +376,24 @@
|
|||||||
<string name="InvalidLastName">اسم العائلة غير صحيح</string>
|
<string name="InvalidLastName">اسم العائلة غير صحيح</string>
|
||||||
<string name="Loading">جاري التحميل ...</string>
|
<string name="Loading">جاري التحميل ...</string>
|
||||||
<string name="NoPlayerInstalled">ليس لديك أي مشغل مقاطع مرئية، يرجى تنزيل أية مشغل</string>
|
<string name="NoPlayerInstalled">ليس لديك أي مشغل مقاطع مرئية، يرجى تنزيل أية مشغل</string>
|
||||||
<string name="NoMailInstalled">يرجى التفضل بإرسال بريد الكتروني إلى sms@telegram.org وشرح مشكلتك.</string>
|
<string name="NoMailInstalled">يرجى إرسال رسالة بواسطة البريد الإلكتروني إلى sms@telegram.org لتخبرنا عن مشكلتك.</string>
|
||||||
<string name="NoHandleAppInstalled">لا يوجد لديك تطبيق يمكنه فتح \'%1$s\'، يرجى تنزيل تطبيق مناسب للإستمرار</string>
|
<string name="NoHandleAppInstalled">لا يوجد لديك تطبيق يمكنه فتح \'%1$s\'، يرجى تنزيل تطبيق مناسب للإستمرار</string>
|
||||||
<string name="InviteUser">هذا المستخدم ليس لديه تيليجرام بعد ، هل ترغب في دعوته الآن؟</string>
|
<string name="InviteUser">هذا المستخدم ليس لديه تيليجرام بعد ، هل ترغب في دعوته الآن؟</string>
|
||||||
<string name="AreYouSure">هل أنت متأكد؟</string>
|
<string name="AreYouSure">هل أنت متأكد؟</string>
|
||||||
<string name="AddContactQ">هل تريد إضافة جهة اتصال؟</string>
|
<string name="AddContactQ">هل تريد إضافة جهة اتصال؟</string>
|
||||||
<string name="AddToTheGroup">هل ترغب في إضافة %1$s للمجموعة؟\n\n\n\nعدد الرسائل الحديثة المراد إعادة تحويلها:</string>
|
<string name="AddToTheGroup">هل ترغب في إضافة %1$s للمجموعة؟\n\nعدد الرسائل الحديثة المراد إعادة تحويلها:</string>
|
||||||
<string name="ForwardMessagesTo">؟%1$s هل تريد إعادة توجيه الرسائل إلى</string>
|
<string name="ForwardMessagesTo">؟%1$s هل تريد إعادة توجيه الرسائل إلى</string>
|
||||||
<string name="DeleteChatQuestion">هل تريد حذف هذه الدردشة؟</string>
|
<string name="DeleteChatQuestion">هل تريد حذف هذه الدردشة؟</string>
|
||||||
<string name="SendMessagesTo">هل ترغب في إرسال رسالة إلى %1$s؟</string>
|
<string name="SendMessagesTo">هل ترغب في إرسال رسالة إلى %1$s؟</string>
|
||||||
<string name="AreYouSureLogout">هل أنت متأكد من رغبتك في تسجيل الخروج؟</string>
|
<string name="AreYouSureLogout">هل أنت متأكد من أنك تريد تسجيل الخروج؟</string>
|
||||||
<string name="AreYouSureSessions">هل أنت متأكد من تسجيل الخروج من جميع الأجهزة الأخرى باستثناء هذا الجهاز؟</string>
|
<string name="AreYouSureSessions">هل أنت متأكد من تسجيل الخروج من جميع الأجهزة الأخرى باستثناء هذا الجهاز؟</string>
|
||||||
<string name="AreYouSureDeleteAndExit">هل أنت متأكد من رغبتك في مغادرة المجموعة وحذفها؟</string>
|
<string name="AreYouSureDeleteAndExit">هل أنت متأكد من أنك تريد حذف المجموعة والخروج منها؟</string>
|
||||||
<string name="AreYouSureDeleteThisChat">هل أنت متأكد من رغبتك في حذف المجموعة؟</string>
|
<string name="AreYouSureDeleteThisChat">هل أنت متأكد من رغبتك في حذف المجموعة؟</string>
|
||||||
<string name="AreYouSureShareMyContactInfo">هل أنت متأكد من رغبتك في مشاركة جهة الاتصال الخاصة بك؟</string>
|
<string name="AreYouSureShareMyContactInfo">هل أنت متأكد من أنك تريد مشاركة معلومات جهة الاتصال الخاصة بك؟</string>
|
||||||
<string name="AreYouSureBlockContact">هل أنت متأكد من رغبتك في حظر جهة الاتصال هذه؟</string>
|
<string name="AreYouSureBlockContact">هل أنت متأكد من رغبتك في حظر جهة الاتصال هذه؟</string>
|
||||||
<string name="AreYouSureUnblockContact">هل أنت متأكد من رغبتك في إزالة الحظر عن جهة الاتصال هذه؟</string>
|
<string name="AreYouSureUnblockContact">هل أنت متأكد من رغبتك في إزالة الحظر عن جهة الاتصال هذه؟</string>
|
||||||
<string name="AreYouSureDeleteContact">هل أنت متأكد من رغبتك في حذف جهة الاتصال هذه؟</string>
|
<string name="AreYouSureDeleteContact">هل أنت متأكد من رغبتك في حذف جهة الاتصال هذه؟</string>
|
||||||
<string name="AreYouSureSecretChat">هل أنت متأكد من رغبتك في بدء محادثة سرية؟</string>
|
<string name="AreYouSureSecretChat">هل أنت متأكد من أنك تريد بدء محادثة سرية؟</string>
|
||||||
<string name="ForwardFromMyName">أعد الإرسال باستخدام اسمي</string>
|
<string name="ForwardFromMyName">أعد الإرسال باستخدام اسمي</string>
|
||||||
|
|
||||||
<!--Intro view-->
|
<!--Intro view-->
|
||||||
|
@ -80,7 +80,7 @@
|
|||||||
<string name="SdCard">SD-Karte</string>
|
<string name="SdCard">SD-Karte</string>
|
||||||
|
|
||||||
<!--chat view-->
|
<!--chat view-->
|
||||||
<string name="Invisible">unsichtbar</string>
|
<string name="Invisible">offline</string>
|
||||||
<string name="Typing">schreibt…</string>
|
<string name="Typing">schreibt…</string>
|
||||||
<string name="Attach">Anhängen</string>
|
<string name="Attach">Anhängen</string>
|
||||||
<string name="IsTyping">schreibt...</string>
|
<string name="IsTyping">schreibt...</string>
|
||||||
@ -158,9 +158,9 @@
|
|||||||
<string name="NotificationGroupKickYou">%1$s hat dich aus der Gruppe %2$s entfernt</string>
|
<string name="NotificationGroupKickYou">%1$s hat dich aus der Gruppe %2$s entfernt</string>
|
||||||
<string name="NotificationGroupLeftMember">%1$s hat die Gruppe %2$s verlassen</string>
|
<string name="NotificationGroupLeftMember">%1$s hat die Gruppe %2$s verlassen</string>
|
||||||
<string name="NotificationContactJoined">%1$s benutzt jetzt Telegram!</string>
|
<string name="NotificationContactJoined">%1$s benutzt jetzt Telegram!</string>
|
||||||
<string name="NotificationUnrecognizedDevice">%1$s,\nWir haben eine Anmeldung von einem neuen Gerät mit der IP-Adresse %2$s festgestellt.\n\nGerät: %3$s\nStandort: %4$s\n\nWenn du es nicht selbst gewesen bist, melde alle anderen Sitzungen in den Telegram Einstellungen unverzüglich ab. \n\n\nMit freundlichen Grüßen,\nDas Telegram Team</string>
|
<string name="NotificationUnrecognizedDevice">%1$s,\nWir haben eine Anmeldung von einem neuen Gerät am %2$s festgestellt.\n\nGerät: %3$s\nStandort: %4$s\n\nWenn du das nicht selbst gewesen bist, melde alle anderen Sitzungen in den Telegram Einstellungen unverzüglich ab.\n\nMit freundlichen Grüßen,\nDas Telegram Team</string>
|
||||||
<string name="NotificationContactNewPhoto">%1$s hat das Profilbild geändert</string>
|
<string name="NotificationContactNewPhoto">%1$s hat das Profilbild geändert</string>
|
||||||
<string name="Reply">Reply</string>
|
<string name="Reply">Beantworten</string>
|
||||||
|
|
||||||
<!--contacts view-->
|
<!--contacts view-->
|
||||||
<string name="SelectContact">Kontakt auswählen</string>
|
<string name="SelectContact">Kontakt auswählen</string>
|
||||||
@ -281,15 +281,15 @@
|
|||||||
<string name="OnlyWhenScreenOff">Nur wenn Bildschirm „aus“</string>
|
<string name="OnlyWhenScreenOff">Nur wenn Bildschirm „aus“</string>
|
||||||
<string name="AlwaysShowPopup">Popups immer anzeigen</string>
|
<string name="AlwaysShowPopup">Popups immer anzeigen</string>
|
||||||
<string name="BadgeNumber">BADGE (Anzahl)</string>
|
<string name="BadgeNumber">BADGE (Anzahl)</string>
|
||||||
<string name="Short">Short</string>
|
<string name="Short">Kurz</string>
|
||||||
<string name="Long">Long</string>
|
<string name="Long">Lang</string>
|
||||||
<string name="SystemDefault">System default</string>
|
<string name="SystemDefault">Systemstandard</string>
|
||||||
<string name="SettingsDefault">Settings default</string>
|
<string name="SettingsDefault">Standardeinstellungen</string>
|
||||||
<string name="AutomaticMediaDownload">AUTOMATIC MEDIA DOWNLOAD</string>
|
<string name="AutomaticMediaDownload">AUTOMATISCHER DOWNLOAD VON MEDIEN</string>
|
||||||
<string name="WhenUsingMobileData">When using mobile data</string>
|
<string name="WhenUsingMobileData">über Mobilfunk</string>
|
||||||
<string name="WhenConnectedOnWiFi">When connected on Wi-Fi</string>
|
<string name="WhenConnectedOnWiFi">über W-LAN</string>
|
||||||
<string name="WhenRoaming">When roaming</string>
|
<string name="WhenRoaming">bei Roaming</string>
|
||||||
<string name="NoMediaAutoDownload">No media</string>
|
<string name="NoMediaAutoDownload">kein automatischer Download</string>
|
||||||
|
|
||||||
<!--media view-->
|
<!--media view-->
|
||||||
<string name="NoMedia">Noch keine geteilten Medien vorhanden</string>
|
<string name="NoMedia">Noch keine geteilten Medien vorhanden</string>
|
||||||
|
@ -158,9 +158,9 @@
|
|||||||
<string name="NotificationGroupKickYou">%1$s te ha expulsado del grupo %2$s</string>
|
<string name="NotificationGroupKickYou">%1$s te ha expulsado del grupo %2$s</string>
|
||||||
<string name="NotificationGroupLeftMember">%1$s abandonó el grupo %2$s</string>
|
<string name="NotificationGroupLeftMember">%1$s abandonó el grupo %2$s</string>
|
||||||
<string name="NotificationContactJoined">¡%1$s se unió a Telegram!</string>
|
<string name="NotificationContactJoined">¡%1$s se unió a Telegram!</string>
|
||||||
<string name="NotificationUnrecognizedDevice">%1$s,\nHemos detectado un inicio de sesión en tu cuenta desde un nuevo dispositivo, el %2$s\n\nDispositivo: %3$s\nUbicación: %4$s\n\nSi no eras tú, puedes ir a Ajustes - Cerrar todas las otras sesiones. \n\nAtentamente,\nEl Equipo de Telegram</string>
|
<string name="NotificationUnrecognizedDevice">%1$s,\nHemos detectado un inicio de sesión en tu cuenta desde un nuevo dispositivo, el %2$s\n\nDispositivo: %3$s\nUbicación: %4$s\n\nSi no eras tú, puedes ir a Ajustes - Cerrar todas las otras sesiones.\n\nAtentamente,\nEl Equipo de Telegram</string>
|
||||||
<string name="NotificationContactNewPhoto">%1$s actualizó su foto de perfil</string>
|
<string name="NotificationContactNewPhoto">%1$s actualizó su foto de perfil</string>
|
||||||
<string name="Reply">Reply</string>
|
<string name="Reply">Responder</string>
|
||||||
|
|
||||||
<!--contacts view-->
|
<!--contacts view-->
|
||||||
<string name="SelectContact">Seleccionar contacto</string>
|
<string name="SelectContact">Seleccionar contacto</string>
|
||||||
@ -281,15 +281,15 @@
|
|||||||
<string name="OnlyWhenScreenOff">Sólo con pantalla apagada</string>
|
<string name="OnlyWhenScreenOff">Sólo con pantalla apagada</string>
|
||||||
<string name="AlwaysShowPopup">Siempre mostrar notificación emergente</string>
|
<string name="AlwaysShowPopup">Siempre mostrar notificación emergente</string>
|
||||||
<string name="BadgeNumber">Globo en el ícono</string>
|
<string name="BadgeNumber">Globo en el ícono</string>
|
||||||
<string name="Short">Short</string>
|
<string name="Short">Corto</string>
|
||||||
<string name="Long">Long</string>
|
<string name="Long">Largo</string>
|
||||||
<string name="SystemDefault">System default</string>
|
<string name="SystemDefault">Por defecto del sistema</string>
|
||||||
<string name="SettingsDefault">Settings default</string>
|
<string name="SettingsDefault">Ajustes por defecto</string>
|
||||||
<string name="AutomaticMediaDownload">AUTOMATIC MEDIA DOWNLOAD</string>
|
<string name="AutomaticMediaDownload">DESCARGA AUTOMÁTICA DE MULTIMEDIA</string>
|
||||||
<string name="WhenUsingMobileData">When using mobile data</string>
|
<string name="WhenUsingMobileData">Con uso de datos móviles</string>
|
||||||
<string name="WhenConnectedOnWiFi">When connected on Wi-Fi</string>
|
<string name="WhenConnectedOnWiFi">Con conexión a Wi-Fi</string>
|
||||||
<string name="WhenRoaming">When roaming</string>
|
<string name="WhenRoaming">Con itinerancia de datos</string>
|
||||||
<string name="NoMediaAutoDownload">No media</string>
|
<string name="NoMediaAutoDownload">Ningún contenido multimedia</string>
|
||||||
|
|
||||||
<!--media view-->
|
<!--media view-->
|
||||||
<string name="NoMedia">No hay fotos ni vídeos compartidos aún</string>
|
<string name="NoMedia">No hay fotos ni vídeos compartidos aún</string>
|
||||||
|
@ -259,7 +259,7 @@
|
|||||||
<string name="ContactJoined">Un contatto si è collegato a Telegram</string>
|
<string name="ContactJoined">Un contatto si è collegato a Telegram</string>
|
||||||
<string name="Pebble">PEBBLE</string>
|
<string name="Pebble">PEBBLE</string>
|
||||||
<string name="Language">Lingua</string>
|
<string name="Language">Lingua</string>
|
||||||
<string name="AskAQuestionInfo">Nota che il supporto di Telegram è fornito da volontari. Proviamo a rispondere non appena possibile, ma potrebbe richiedere del tempo.<![CDATA[<br><br>]]>Dai un\'occhiata alle <![CDATA[<a href=\"https://telegram.org/faq/it#domande-generali\">Domande frequenti</a>]]>: troverai risposte alla maggior parte delle domande e suggerimenti importanti per <![CDATA[<a href=\"https://telegram.org/faq/it#risoluzione-dei-problemi\">l\'individuazione del problema</a>]]>.</string>
|
<string name="AskAQuestionInfo">Nota che il supporto di Telegram è fornito da volontari. Proviamo a rispondere non appena possibile, ma potrebbe richiedere del tempo.<![CDATA[<br><br>]]>Dai un\'occhiata alle <![CDATA[<a href="https://telegram.org/faq/it#domande-generali">Domande frequenti</a>]]>: troverai risposte alla maggior parte delle domande e suggerimenti importanti per <![CDATA[<a href="https://telegram.org/faq/it#risoluzione-dei-problemi">l\'individuazione del problema</a>]]>.</string>
|
||||||
<string name="AskButton">Chiedi a un volontario</string>
|
<string name="AskButton">Chiedi a un volontario</string>
|
||||||
<string name="TelegramFaq">Domande frequenti</string>
|
<string name="TelegramFaq">Domande frequenti</string>
|
||||||
<string name="TelegramFaqUrl">https://telegram.org/faq/it</string>
|
<string name="TelegramFaqUrl">https://telegram.org/faq/it</string>
|
||||||
|
@ -58,12 +58,12 @@
|
|||||||
<string name="SelectChat">Selecione uma Conversa</string>
|
<string name="SelectChat">Selecione uma Conversa</string>
|
||||||
|
|
||||||
<!--broadcasts-->
|
<!--broadcasts-->
|
||||||
<string name="BroadcastList">Lista de Broadcast</string>
|
<string name="BroadcastList">Lista de Transmissão</string>
|
||||||
<string name="NewBroadcastList">Nova lista de Broadcast</string>
|
<string name="NewBroadcastList">Nova Lista de Transmissão</string>
|
||||||
<string name="EnterListName">Digite o nome da lista</string>
|
<string name="EnterListName">Digite o nome da lista</string>
|
||||||
<string name="YouCreatedBroadcastList">Você criou uma lista de broadcast</string>
|
<string name="YouCreatedBroadcastList">Você criou uma lista de transmissão</string>
|
||||||
<string name="AddRecipient">Adicionar Recipiente</string>
|
<string name="AddRecipient">Adicionar Recipiente</string>
|
||||||
<string name="KickFromBroadcast">Remover da lista de broadcast</string>
|
<string name="KickFromBroadcast">Remover da lista de trasmissão</string>
|
||||||
|
|
||||||
<!--documents view-->
|
<!--documents view-->
|
||||||
<string name="SelectFile">Selecione um Arquivo</string>
|
<string name="SelectFile">Selecione um Arquivo</string>
|
||||||
@ -160,7 +160,7 @@
|
|||||||
<string name="NotificationContactJoined">%1$s entrou para o Telegram!</string>
|
<string name="NotificationContactJoined">%1$s entrou para o Telegram!</string>
|
||||||
<string name="NotificationUnrecognizedDevice">%1$s,\nNós detectamos um login na sua conta de um novo dispositivo %2$s\n\nDispositivo: %3$s\nLocalização: %4$s\n\nSe não foi você, você pode ir para Configurações - Terminar todas as sessões.\n\nAtenciosamente,\nTime do Telegram</string>
|
<string name="NotificationUnrecognizedDevice">%1$s,\nNós detectamos um login na sua conta de um novo dispositivo %2$s\n\nDispositivo: %3$s\nLocalização: %4$s\n\nSe não foi você, você pode ir para Configurações - Terminar todas as sessões.\n\nAtenciosamente,\nTime do Telegram</string>
|
||||||
<string name="NotificationContactNewPhoto">%1$s atualizou a foto do perfil</string>
|
<string name="NotificationContactNewPhoto">%1$s atualizou a foto do perfil</string>
|
||||||
<string name="Reply">Reply</string>
|
<string name="Reply">Responder</string>
|
||||||
|
|
||||||
<!--contacts view-->
|
<!--contacts view-->
|
||||||
<string name="SelectContact">Selecionar Contato</string>
|
<string name="SelectContact">Selecionar Contato</string>
|
||||||
@ -281,15 +281,15 @@
|
|||||||
<string name="OnlyWhenScreenOff">Somente com a tela desligada</string>
|
<string name="OnlyWhenScreenOff">Somente com a tela desligada</string>
|
||||||
<string name="AlwaysShowPopup">Sempre mostrar popup</string>
|
<string name="AlwaysShowPopup">Sempre mostrar popup</string>
|
||||||
<string name="BadgeNumber">Contador de medalhas</string>
|
<string name="BadgeNumber">Contador de medalhas</string>
|
||||||
<string name="Short">Short</string>
|
<string name="Short">Curta</string>
|
||||||
<string name="Long">Long</string>
|
<string name="Long">Longa</string>
|
||||||
<string name="SystemDefault">System default</string>
|
<string name="SystemDefault">Padrão do sistema</string>
|
||||||
<string name="SettingsDefault">Settings default</string>
|
<string name="SettingsDefault">Configurações padrão</string>
|
||||||
<string name="AutomaticMediaDownload">AUTOMATIC MEDIA DOWNLOAD</string>
|
<string name="AutomaticMediaDownload">DOWNLOAD AUTOMÁTICO DE MÍDIA</string>
|
||||||
<string name="WhenUsingMobileData">When using mobile data</string>
|
<string name="WhenUsingMobileData">Ao usar dados móveis</string>
|
||||||
<string name="WhenConnectedOnWiFi">When connected on Wi-Fi</string>
|
<string name="WhenConnectedOnWiFi">Quando conectado em Wi-Fi</string>
|
||||||
<string name="WhenRoaming">When roaming</string>
|
<string name="WhenRoaming">Em roaming</string>
|
||||||
<string name="NoMediaAutoDownload">No media</string>
|
<string name="NoMediaAutoDownload">Sem mídia</string>
|
||||||
|
|
||||||
<!--media view-->
|
<!--media view-->
|
||||||
<string name="NoMedia">Ainda não há mídia compartilhada</string>
|
<string name="NoMedia">Ainda não há mídia compartilhada</string>
|
||||||
|
Loading…
Reference in New Issue
Block a user