Commit d4854101 authored by DrKLO's avatar DrKLO

Merge branch 'dev'

parents d4703e32 8351b066
...@@ -82,7 +82,7 @@ android { ...@@ -82,7 +82,7 @@ android {
defaultConfig { defaultConfig {
minSdkVersion 8 minSdkVersion 8
targetSdkVersion 19 targetSdkVersion 19
versionCode 208 versionCode 211
versionName "1.4.7" versionName "1.4.8"
} }
} }
...@@ -479,7 +479,6 @@ public class ConnectionsManager implements Action.ActionDelegate, TcpConnection. ...@@ -479,7 +479,6 @@ public class ConnectionsManager implements Action.ActionDelegate, TcpConnection.
processedMessageIdsSet.remove(sessionId); processedMessageIdsSet.remove(sessionId);
nextSeqNoInSession.remove(sessionId); nextSeqNoInSession.remove(sessionId);
processedSessionChanges.remove(sessionId); processedSessionChanges.remove(sessionId);
pingIdToDate.remove(sessionId);
if (sessionId == datacenter.authSessionId) { if (sessionId == datacenter.authSessionId) {
clearRequestsForRequestClass(RPCRequest.RPCRequestClassGeneric, datacenter); clearRequestsForRequestClass(RPCRequest.RPCRequestClassGeneric, datacenter);
...@@ -858,7 +857,7 @@ public class ConnectionsManager implements Action.ActionDelegate, TcpConnection. ...@@ -858,7 +857,7 @@ public class ConnectionsManager implements Action.ActionDelegate, TcpConnection.
} }
} catch(Exception e) { } catch(Exception e) {
FileLog.e("tmessages", e); FileLog.e("tmessages", e);
return false; return true;
} }
return status; return status;
} }
......
...@@ -592,9 +592,9 @@ public class ContactsController { ...@@ -592,9 +592,9 @@ public class ContactsController {
if (!toImport.isEmpty()) { if (!toImport.isEmpty()) {
if (BuildVars.DEBUG_VERSION) { if (BuildVars.DEBUG_VERSION) {
FileLog.e("tmessages", "start import contacts"); FileLog.e("tmessages", "start import contacts");
for (TLRPC.TL_inputPhoneContact contact : toImport) { // for (TLRPC.TL_inputPhoneContact contact : toImport) {
FileLog.e("tmessages", "add contact " + contact.first_name + " " + contact.last_name + " " + contact.phone); // FileLog.e("tmessages", "add contact " + contact.first_name + " " + contact.last_name + " " + contact.phone);
} // }
} }
final int count = (int)Math.ceil(toImport.size() / 500.0f); final int count = (int)Math.ceil(toImport.size() / 500.0f);
for (int a = 0; a < count; a++) { for (int a = 0; a < count; a++) {
...@@ -614,9 +614,9 @@ public class ContactsController { ...@@ -614,9 +614,9 @@ public class ContactsController {
} }
TLRPC.TL_contacts_importedContacts res = (TLRPC.TL_contacts_importedContacts)response; TLRPC.TL_contacts_importedContacts res = (TLRPC.TL_contacts_importedContacts)response;
if (BuildVars.DEBUG_VERSION) { if (BuildVars.DEBUG_VERSION) {
for (TLRPC.User user : res.users) { // for (TLRPC.User user : res.users) {
FileLog.e("tmessages", "received user " + user.first_name + " " + user.last_name + " " + user.phone); // FileLog.e("tmessages", "received user " + user.first_name + " " + user.last_name + " " + user.phone);
} // }
} }
MessagesStorage.getInstance().putUsersAndChats(res.users, null, true, true); MessagesStorage.getInstance().putUsersAndChats(res.users, null, true, true);
ArrayList<TLRPC.TL_contact> cArr = new ArrayList<TLRPC.TL_contact>(); ArrayList<TLRPC.TL_contact> cArr = new ArrayList<TLRPC.TL_contact>();
...@@ -776,9 +776,9 @@ public class ContactsController { ...@@ -776,9 +776,9 @@ public class ContactsController {
if (user != null) { if (user != null) {
usersDict.put(user.id, user); usersDict.put(user.id, user);
if (BuildVars.DEBUG_VERSION) { // if (BuildVars.DEBUG_VERSION) {
FileLog.e("tmessages", "loaded user contact " + user.first_name + " " + user.last_name + " " + user.phone); // FileLog.e("tmessages", "loaded user contact " + user.first_name + " " + user.last_name + " " + user.phone);
} // }
} }
} }
...@@ -1398,9 +1398,9 @@ public class ContactsController { ...@@ -1398,9 +1398,9 @@ public class ContactsController {
contactsParams.add(c); contactsParams.add(c);
req.contacts = contactsParams; req.contacts = contactsParams;
req.replace = false; req.replace = false;
if (BuildVars.DEBUG_VERSION) { // if (BuildVars.DEBUG_VERSION) {
FileLog.e("tmessages", "add contact " + user.first_name + " " + user.last_name + " " + user.phone); // FileLog.e("tmessages", "add contact " + user.first_name + " " + user.last_name + " " + user.phone);
} // }
ConnectionsManager.getInstance().performRpc(req, new RPCRequest.RPCRequestDelegate() { ConnectionsManager.getInstance().performRpc(req, new RPCRequest.RPCRequestDelegate() {
@Override @Override
public void run(TLObject response, TLRPC.TL_error error) { public void run(TLObject response, TLRPC.TL_error error) {
...@@ -1410,11 +1410,11 @@ public class ContactsController { ...@@ -1410,11 +1410,11 @@ public class ContactsController {
final TLRPC.TL_contacts_importedContacts res = (TLRPC.TL_contacts_importedContacts)response; final TLRPC.TL_contacts_importedContacts res = (TLRPC.TL_contacts_importedContacts)response;
MessagesStorage.getInstance().putUsersAndChats(res.users, null, true, true); MessagesStorage.getInstance().putUsersAndChats(res.users, null, true, true);
if (BuildVars.DEBUG_VERSION) { // if (BuildVars.DEBUG_VERSION) {
for (TLRPC.User user : res.users) { // for (TLRPC.User user : res.users) {
FileLog.e("tmessages", "received user " + user.first_name + " " + user.last_name + " " + user.phone); // FileLog.e("tmessages", "received user " + user.first_name + " " + user.last_name + " " + user.phone);
} // }
} // }
for (final TLRPC.User u : res.users) { for (final TLRPC.User u : res.users) {
Utilities.globalQueue.postRunnable(new Runnable() { Utilities.globalQueue.postRunnable(new Runnable() {
......
...@@ -4344,7 +4344,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter ...@@ -4344,7 +4344,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter
} else if (messageObject.messageOwner.action instanceof TLRPC.TL_messageActionUserUpdatedPhoto) { } else if (messageObject.messageOwner.action instanceof TLRPC.TL_messageActionUserUpdatedPhoto) {
msg = LocaleController.formatString("NotificationContactNewPhoto", R.string.NotificationContactNewPhoto, Utilities.formatName(u.first_name, u.last_name)); msg = LocaleController.formatString("NotificationContactNewPhoto", R.string.NotificationContactNewPhoto, Utilities.formatName(u.first_name, u.last_name));
} else if (messageObject.messageOwner.action instanceof TLRPC.TL_messageActionLoginUnknownLocation) { } else if (messageObject.messageOwner.action instanceof TLRPC.TL_messageActionLoginUnknownLocation) {
String date = String.format("%s %s %s", Utilities.formatterYear.format(((long)messageObject.messageOwner.date) * 1000), LocaleController.getString("OtherAt", R.string.OtherAt), Utilities.formatterDay.format(((long)messageObject.messageOwner.date) * 1000)); String date = String.format("%s %s %s", LocaleController.formatterYear.format(((long)messageObject.messageOwner.date) * 1000), LocaleController.getString("OtherAt", R.string.OtherAt), LocaleController.formatterDay.format(((long)messageObject.messageOwner.date) * 1000));
msg = LocaleController.formatString("NotificationUnrecognizedDevice", R.string.NotificationUnrecognizedDevice, UserConfig.currentUser.first_name, date, messageObject.messageOwner.action.title, messageObject.messageOwner.action.address); msg = LocaleController.formatString("NotificationUnrecognizedDevice", R.string.NotificationUnrecognizedDevice, UserConfig.currentUser.first_name, date, messageObject.messageOwner.action.title, messageObject.messageOwner.action.address);
} }
} else { } else {
......
...@@ -62,6 +62,8 @@ public class MessagesStorage { ...@@ -62,6 +62,8 @@ public class MessagesStorage {
} }
public void openDatabase() { public void openDatabase() {
NativeLoader.initNativeLibs(ApplicationLoader.applicationContext);
cacheFile = new File(ApplicationLoader.applicationContext.getFilesDir(), "cache4.db"); cacheFile = new File(ApplicationLoader.applicationContext.getFilesDir(), "cache4.db");
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("dbconfig", Context.MODE_PRIVATE); SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("dbconfig", Context.MODE_PRIVATE);
......
...@@ -28,7 +28,13 @@ public class NativeLoader { ...@@ -28,7 +28,13 @@ public class NativeLoader {
0, //mips 0, //mips
}; };
public static void initNativeLibs(Context context) { private static volatile boolean nativeLoaded = false;
public static synchronized void initNativeLibs(Context context) {
if (nativeLoaded) {
return;
}
if (Build.VERSION.SDK_INT >= 9) { if (Build.VERSION.SDK_INT >= 9) {
try { try {
String folder = null; String folder = null;
...@@ -50,6 +56,7 @@ public class NativeLoader { ...@@ -50,6 +56,7 @@ public class NativeLoader {
libSize = sizes[3]; libSize = sizes[3];
} else { } else {
System.loadLibrary("tmessages"); System.loadLibrary("tmessages");
nativeLoaded = true;
Log.e("tmessages", "Unsupported arch: " + Build.CPU_ABI); Log.e("tmessages", "Unsupported arch: " + Build.CPU_ABI);
return; return;
} }
...@@ -59,6 +66,7 @@ public class NativeLoader { ...@@ -59,6 +66,7 @@ public class NativeLoader {
Log.d("tmessages", "Load normal lib"); Log.d("tmessages", "Load normal lib");
try { try {
System.loadLibrary("tmessages"); System.loadLibrary("tmessages");
nativeLoaded = true;
return; return;
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
...@@ -68,9 +76,14 @@ public class NativeLoader { ...@@ -68,9 +76,14 @@ public class NativeLoader {
File destLocalFile = new File(context.getFilesDir().getAbsolutePath() + "/libtmessages.so"); File destLocalFile = new File(context.getFilesDir().getAbsolutePath() + "/libtmessages.so");
if (destLocalFile.exists()) { if (destLocalFile.exists()) {
if (destLocalFile.length() == libSize) { if (destLocalFile.length() == libSize) {
Log.d("tmessages", "Load local lib"); try {
System.load(destLocalFile.getAbsolutePath()); Log.d("tmessages", "Load local lib");
return; System.load(destLocalFile.getAbsolutePath());
nativeLoaded = true;
return;
} catch (Exception e) {
e.printStackTrace();
}
} else { } else {
destLocalFile.delete(); destLocalFile.delete();
} }
...@@ -98,6 +111,7 @@ public class NativeLoader { ...@@ -98,6 +111,7 @@ public class NativeLoader {
out.close(); out.close();
System.load(destLocalFile.getAbsolutePath()); System.load(destLocalFile.getAbsolutePath());
nativeLoaded = true;
return; return;
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
...@@ -123,5 +137,6 @@ public class NativeLoader { ...@@ -123,5 +137,6 @@ public class NativeLoader {
} }
System.loadLibrary("tmessages"); System.loadLibrary("tmessages");
nativeLoaded = true;
} }
} }
...@@ -60,6 +60,7 @@ public class TcpConnection extends PyroClientAdapter { ...@@ -60,6 +60,7 @@ public class TcpConnection extends PyroClientAdapter {
private boolean firstPacket; private boolean firstPacket;
private Timer reconnectTimer; private Timer reconnectTimer;
private boolean tryWithNoNetworkAnyway = false;
public TcpConnection(int did) { public TcpConnection(int did) {
if (selector == null) { if (selector == null) {
...@@ -90,9 +91,13 @@ public class TcpConnection extends PyroClientAdapter { ...@@ -90,9 +91,13 @@ public class TcpConnection extends PyroClientAdapter {
connectionState = TcpConnectionState.TcpConnectionStageConnecting; connectionState = TcpConnectionState.TcpConnectionStageConnecting;
try { try {
if (!ConnectionsManager.isNetworkOnline()) { if(android.os.Build.VERSION.SDK_INT < 11) {
handleConnectionError(null); if (!ConnectionsManager.isNetworkOnline() && !tryWithNoNetworkAnyway) {
return; handleConnectionError(null);
tryWithNoNetworkAnyway = true;
return;
}
tryWithNoNetworkAnyway = false;
} }
try { try {
synchronized (timerSync) { synchronized (timerSync) {
......
...@@ -24,7 +24,6 @@ import android.provider.DocumentsContract; ...@@ -24,7 +24,6 @@ import android.provider.DocumentsContract;
import android.provider.MediaStore; import android.provider.MediaStore;
import android.text.Html; import android.text.Html;
import android.text.SpannableStringBuilder; import android.text.SpannableStringBuilder;
import android.text.format.DateFormat;
import android.util.Base64; import android.util.Base64;
import android.view.Display; import android.view.Display;
import android.view.View; import android.view.View;
...@@ -49,7 +48,6 @@ import java.security.PublicKey; ...@@ -49,7 +48,6 @@ import java.security.PublicKey;
import java.security.spec.RSAPublicKeySpec; import java.security.spec.RSAPublicKeySpec;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date; import java.util.Date;
import java.util.Hashtable; import java.util.Hashtable;
import java.util.Locale; import java.util.Locale;
...@@ -64,7 +62,6 @@ public class Utilities { ...@@ -64,7 +62,6 @@ public class Utilities {
public static int statusBarHeight = 0; public static int statusBarHeight = 0;
public static float density = 1; public static float density = 1;
public static Point displaySize = new Point(); public static Point displaySize = new Point();
public static boolean isRTL = false;
public static Pattern pattern = Pattern.compile("[0-9]+"); public static Pattern pattern = Pattern.compile("[0-9]+");
private final static Integer lock = 1; private final static Integer lock = 1;
...@@ -83,14 +80,6 @@ public class Utilities { ...@@ -83,14 +80,6 @@ public class Utilities {
public static volatile DispatchQueue imageLoadQueue = new DispatchQueue("imageLoadQueue"); public static volatile DispatchQueue imageLoadQueue = new DispatchQueue("imageLoadQueue");
public static volatile DispatchQueue fileUploadQueue = new DispatchQueue("fileUploadQueue"); public static volatile DispatchQueue fileUploadQueue = new DispatchQueue("fileUploadQueue");
public static FastDateFormat formatterDay;
public static FastDateFormat formatterWeek;
public static FastDateFormat formatterMonth;
public static FastDateFormat formatterYear;
public static FastDateFormat formatterYearMax;
public static FastDateFormat chatDate;
public static FastDateFormat chatFullDate;
public static int[] arrColors = {0xffee4928, 0xff41a903, 0xffe09602, 0xff0f94ed, 0xff8f3bf7, 0xfffc4380, 0xff00a1c4, 0xffeb7002}; public static int[] arrColors = {0xffee4928, 0xff41a903, 0xffe09602, 0xff0f94ed, 0xff8f3bf7, 0xfffc4380, 0xff00a1c4, 0xffeb7002};
public static int[] arrUsersAvatars = { public static int[] arrUsersAvatars = {
R.drawable.user_red, R.drawable.user_red,
...@@ -139,7 +128,6 @@ public class Utilities { ...@@ -139,7 +128,6 @@ public class Utilities {
} }
} }
recreateFormatters();
checkDisplaySize(); checkDisplaySize();
} }
...@@ -537,49 +525,6 @@ public class Utilities { ...@@ -537,49 +525,6 @@ public class Utilities {
}); });
} }
public static void recreateFormatters() {
Locale locale = Locale.getDefault();
String lang = locale.getLanguage();
if (lang == null) {
lang = "en";
}
isRTL = lang.toLowerCase().equals("ar");
if (lang.equals("en")) {
formatterMonth = FastDateFormat.getInstance("MMM dd", locale);
formatterYear = FastDateFormat.getInstance("dd.MM.yy", locale);
formatterYearMax = FastDateFormat.getInstance("dd.MM.yyyy", locale);
chatDate = FastDateFormat.getInstance("MMMM d", locale);
chatFullDate = FastDateFormat.getInstance("MMMM d, yyyy", locale);
} else if (lang.startsWith("es")) {
formatterMonth = FastDateFormat.getInstance("dd 'de' MMM", locale);
formatterYear = FastDateFormat.getInstance("dd.MM.yy", locale);
formatterYearMax = FastDateFormat.getInstance("dd.MM.yyyy", locale);
chatDate = FastDateFormat.getInstance("d 'de' MMMM", locale);
chatFullDate = FastDateFormat.getInstance("d 'de' MMMM 'de' yyyy", locale);
} else {
formatterMonth = FastDateFormat.getInstance("dd MMM", locale);
formatterYear = FastDateFormat.getInstance("dd.MM.yy", locale);
formatterYearMax = FastDateFormat.getInstance("dd.MM.yyyy", locale);
chatDate = FastDateFormat.getInstance("d MMMM", locale);
chatFullDate = FastDateFormat.getInstance("d MMMM yyyy", locale);
}
formatterWeek = FastDateFormat.getInstance("EEE", locale);
if (lang != null) {
if (DateFormat.is24HourFormat(ApplicationLoader.applicationContext)) {
formatterDay = FastDateFormat.getInstance("HH:mm", locale);
} else {
if (lang.toLowerCase().equals("ar")) {
formatterDay = FastDateFormat.getInstance("h:mm a", locale);
} else {
formatterDay = FastDateFormat.getInstance("h:mm a", Locale.US);
}
}
} else {
formatterDay = FastDateFormat.getInstance("h:mm a", Locale.US);
}
}
public static void checkDisplaySize() { public static void checkDisplaySize() {
try { try {
WindowManager manager = (WindowManager)ApplicationLoader.applicationContext.getSystemService(Context.WINDOW_SERVICE); WindowManager manager = (WindowManager)ApplicationLoader.applicationContext.getSystemService(Context.WINDOW_SERVICE);
...@@ -599,57 +544,6 @@ public class Utilities { ...@@ -599,57 +544,6 @@ public class Utilities {
} }
} }
public static String formatDateChat(long date) {
Calendar rightNow = Calendar.getInstance();
int year = rightNow.get(Calendar.YEAR);
rightNow.setTimeInMillis(date * 1000);
int dateYear = rightNow.get(Calendar.YEAR);
if (year == dateYear) {
return chatDate.format(date * 1000);
}
return chatFullDate.format(date * 1000);
}
public static String formatDate(long date) {
Calendar rightNow = Calendar.getInstance();
int day = rightNow.get(Calendar.DAY_OF_YEAR);
int year = rightNow.get(Calendar.YEAR);
rightNow.setTimeInMillis(date * 1000);
int dateDay = rightNow.get(Calendar.DAY_OF_YEAR);
int dateYear = rightNow.get(Calendar.YEAR);
if (dateDay == day && year == dateYear) {
return formatterDay.format(new Date(date * 1000));
} else if (dateDay + 1 == day && year == dateYear) {
return ApplicationLoader.applicationContext.getResources().getString(R.string.Yesterday);
} else if (year == dateYear) {
return formatterMonth.format(new Date(date * 1000));
} else {
return formatterYear.format(new Date(date * 1000));
}
}
public static String formatDateOnline(long date) {
Calendar rightNow = Calendar.getInstance();
int day = rightNow.get(Calendar.DAY_OF_YEAR);
int year = rightNow.get(Calendar.YEAR);
rightNow.setTimeInMillis(date * 1000);
int dateDay = rightNow.get(Calendar.DAY_OF_YEAR);
int dateYear = rightNow.get(Calendar.YEAR);
if (dateDay == day && year == dateYear) {
return String.format("%s %s %s", LocaleController.getString("LastSeen", R.string.LastSeen), LocaleController.getString("TodayAt", R.string.TodayAt), formatterDay.format(new Date(date * 1000)));
} else if (dateDay + 1 == day && year == dateYear) {
return String.format("%s %s %s", LocaleController.getString("LastSeen", R.string.LastSeen), LocaleController.getString("YesterdayAt", R.string.YesterdayAt), formatterDay.format(new Date(date * 1000)));
} else if (year == dateYear) {
return String.format("%s %s %s %s", LocaleController.getString("LastSeenDate", R.string.LastSeenDate), formatterMonth.format(new Date(date * 1000)), LocaleController.getString("OtherAt", R.string.OtherAt), formatterDay.format(new Date(date * 1000)));
} else {
return String.format("%s %s %s %s", LocaleController.getString("LastSeenDate", R.string.LastSeenDate), formatterYear.format(new Date(date * 1000)), LocaleController.getString("OtherAt", R.string.OtherAt), formatterDay.format(new Date(date * 1000)));
}
}
public static void HideProgressDialog(Activity activity) { public static void HideProgressDialog(Activity activity) {
activity.runOnUiThread(new Runnable() { activity.runOnUiThread(new Runnable() {
@Override @Override
...@@ -941,7 +835,7 @@ public class Utilities { ...@@ -941,7 +835,7 @@ public class Utilities {
} else if (result.length() != 0 && lastName.length() != 0) { } else if (result.length() != 0 && lastName.length() != 0) {
result += " " + lastName; result += " " + lastName;
} }
return result; return result.trim();
} }
public static String formatFileSize(long size) { public static String formatFileSize(long size) {
...@@ -956,28 +850,6 @@ public class Utilities { ...@@ -956,28 +850,6 @@ public class Utilities {
} }
} }
public static String stringForMessageListDate(long date) {
Calendar rightNow = Calendar.getInstance();
int day = rightNow.get(Calendar.DAY_OF_YEAR);
int year = rightNow.get(Calendar.YEAR);
rightNow.setTimeInMillis(date * 1000);
int dateDay = rightNow.get(Calendar.DAY_OF_YEAR);
int dateYear = rightNow.get(Calendar.YEAR);
if (year != dateYear) {
return formatterYear.format(new Date(date * 1000));
} else {
int dayDiff = dateDay - day;
if(dayDiff == 0 || dayDiff == -1 && (int)(System.currentTimeMillis() / 1000) - date < 60 * 60 * 8) {
return formatterDay.format(new Date(date * 1000));
} else if(dayDiff > -7 && dayDiff <= -1) {
return formatterWeek.format(new Date(date * 1000));
} else {
return formatterMonth.format(new Date(date * 1000));
}
}
}
public static byte[] decodeQuotedPrintable(final byte[] bytes) { public static byte[] decodeQuotedPrintable(final byte[] bytes) {
if (bytes == null) { if (bytes == null) {
return null; return null;
......
...@@ -202,7 +202,7 @@ public class MessageObject { ...@@ -202,7 +202,7 @@ public class MessageObject {
} }
} }
} else if (message.action instanceof TLRPC.TL_messageActionLoginUnknownLocation) { } else if (message.action instanceof TLRPC.TL_messageActionLoginUnknownLocation) {
String date = String.format("%s %s %s", Utilities.formatterYear.format(((long)message.date) * 1000), LocaleController.getString("OtherAt", R.string.OtherAt), Utilities.formatterDay.format(((long)message.date) * 1000)); String date = String.format("%s %s %s", LocaleController.formatterYear.format(((long)message.date) * 1000), LocaleController.getString("OtherAt", R.string.OtherAt), LocaleController.formatterDay.format(((long)message.date) * 1000));
messageText = LocaleController.formatString("NotificationUnrecognizedDevice", R.string.NotificationUnrecognizedDevice, UserConfig.currentUser.first_name, date, message.action.title, message.action.address); messageText = LocaleController.formatString("NotificationUnrecognizedDevice", R.string.NotificationUnrecognizedDevice, UserConfig.currentUser.first_name, date, message.action.title, message.action.address);
} else if (message.action instanceof TLRPC.TL_messageActionUserJoined) { } else if (message.action instanceof TLRPC.TL_messageActionUserJoined) {
if (fromUser != null) { if (fromUser != null) {
......
...@@ -9,7 +9,6 @@ ...@@ -9,7 +9,6 @@
package org.telegram.ui.Adapters; package org.telegram.ui.Adapters;
import android.content.Context; import android.content.Context;
import android.text.Html;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
...@@ -114,7 +113,6 @@ public class ContactsActivityAdapter extends SectionedBaseAdapter { ...@@ -114,7 +113,6 @@ public class ContactsActivityAdapter extends SectionedBaseAdapter {
if (user != null) { if (user != null) {
if (convertView == null) { if (convertView == null) {
convertView = new ChatOrUserCell(mContext); convertView = new ChatOrUserCell(mContext);
((ChatOrUserCell)convertView).useBoldFont = true;
((ChatOrUserCell)convertView).usePadding = false; ((ChatOrUserCell)convertView).usePadding = false;
} }
...@@ -153,11 +151,11 @@ public class ContactsActivityAdapter extends SectionedBaseAdapter { ...@@ -153,11 +151,11 @@ public class ContactsActivityAdapter extends SectionedBaseAdapter {
} }
} }
if (contact.first_name != null && contact.last_name != null) { if (contact.first_name != null && contact.last_name != null) {
textView.setText(Html.fromHtml(contact.first_name + " <b>" + contact.last_name + "</b>")); textView.setText(contact.first_name + " " + contact.last_name);
} else if (contact.first_name != null && contact.last_name == null) { } else if (contact.first_name != null && contact.last_name == null) {
textView.setText(Html.fromHtml("<b>" + contact.first_name + "</b>")); textView.setText(contact.first_name);
} else { } else {
textView.setText(Html.fromHtml("<b>" + contact.last_name + "</b>")); textView.setText(contact.last_name);
} }
return convertView; return convertView;
} }
......
...@@ -30,7 +30,7 @@ public class ContactsActivitySearchAdapter extends BaseFragmentAdapter { ...@@ -30,7 +30,7 @@ public class ContactsActivitySearchAdapter extends BaseFragmentAdapter {
private HashMap<Integer, TLRPC.User> ignoreUsers; private HashMap<Integer, TLRPC.User> ignoreUsers;
private ArrayList<TLRPC.User> searchResult; private ArrayList<TLRPC.User> searchResult;
private ArrayList<CharSequence> searchResultNames; private ArrayList<CharSequence> searchResultNames;
private Timer searchDialogsTimer; private Timer searchTimer;
public ContactsActivitySearchAdapter(Context context, HashMap<Integer, TLRPC.User> arg1) { public ContactsActivitySearchAdapter(Context context, HashMap<Integer, TLRPC.User> arg1) {
mContext = context; mContext = context;
...@@ -44,19 +44,19 @@ public class ContactsActivitySearchAdapter extends BaseFragmentAdapter { ...@@ -44,19 +44,19 @@ public class ContactsActivitySearchAdapter extends BaseFragmentAdapter {
notifyDataSetChanged(); notifyDataSetChanged();
} else { } else {
try { try {
if (searchDialogsTimer != null) { if (searchTimer != null) {
searchDialogsTimer.cancel(); searchTimer.cancel();
} }
} catch (Exception e) { } catch (Exception e) {
FileLog.e("tmessages", e); FileLog.e("tmessages", e);
} }
searchDialogsTimer = new Timer(); searchTimer = new Timer();
searchDialogsTimer.schedule(new TimerTask() { searchTimer.schedule(new TimerTask() {
@Override @Override
public void run() { public void run() {
try { try {
searchDialogsTimer.cancel(); searchTimer.cancel();
searchDialogsTimer = null; searchTimer = null;
} catch (Exception e) { } catch (Exception e) {
FileLog.e("tmessages", e); FileLog.e("tmessages", e);
} }
......
...@@ -30,6 +30,7 @@ import com.google.android.gms.gcm.GoogleCloudMessaging; ...@@ -30,6 +30,7 @@ import com.google.android.gms.gcm.GoogleCloudMessaging;
import org.telegram.messenger.BuildVars; import org.telegram.messenger.BuildVars;
import org.telegram.messenger.ConnectionsManager; import org.telegram.messenger.ConnectionsManager;
import org.telegram.messenger.FileLog; import org.telegram.messenger.FileLog;
import org.telegram.messenger.LocaleController;
import org.telegram.messenger.MessagesController; import org.telegram.messenger.MessagesController;
import org.telegram.messenger.NativeLoader; import org.telegram.messenger.NativeLoader;
import org.telegram.messenger.ScreenReceiver; import org.telegram.messenger.ScreenReceiver;
...@@ -39,7 +40,6 @@ import org.telegram.ui.Views.BaseFragment; ...@@ -39,7 +40,6 @@ import org.telegram.ui.Views.BaseFragment;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Locale;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
public class ApplicationLoader extends Application { public class ApplicationLoader extends Application {
...@@ -52,7 +52,6 @@ public class ApplicationLoader extends Application { ...@@ -52,7 +52,6 @@ public class ApplicationLoader extends Application {
private static final int PLAY_SERVICES_RESOLUTION_REQUEST = 9000; private static final int PLAY_SERVICES_RESOLUTION_REQUEST = 9000;
public static long lastPauseTime; public static long lastPauseTime;
public static Bitmap cachedWallpaper = null; public static Bitmap cachedWallpaper = null;
private Locale currentLocale;
public static volatile Context applicationContext = null; public static volatile Context applicationContext = null;
public static volatile Handler applicationHandler = null; public static volatile Handler applicationHandler = null;
...@@ -120,8 +119,14 @@ public class ApplicationLoader extends Application { ...@@ -120,8 +119,14 @@ public class ApplicationLoader extends Application {
super.onCreate(); super.onCreate();
lastPauseTime = System.currentTimeMillis(); lastPauseTime = System.currentTimeMillis();
applicationContext = getApplicationContext(); applicationContext = getApplicationContext();
NativeLoader.initNativeLibs(this);
try {
LocaleController.getInstance();
} catch (Exception e) {
e.printStackTrace();
}
applicationHandler = new Handler(applicationContext.getMainLooper()); applicationHandler = new Handler(applicationContext.getMainLooper());
currentLocale = Locale.getDefault();
java.lang.System.setProperty("java.net.preferIPv4Stack", "true"); java.lang.System.setProperty("java.net.preferIPv4Stack", "true");
java.lang.System.setProperty("java.net.preferIPv6Addresses", "false"); java.lang.System.setProperty("java.net.preferIPv6Addresses", "false");
...@@ -136,23 +141,17 @@ public class ApplicationLoader extends Application { ...@@ -136,23 +141,17 @@ public class ApplicationLoader extends Application {
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
FileLog.e("tmessages", "start application with time " + lastPauseTime);
} }
@Override @Override
public void onConfigurationChanged(Configuration newConfig) { public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig); super.onConfigurationChanged(newConfig);
Locale newLocale = newConfig.locale; try {
if (newLocale != null) { LocaleController.getInstance().onDeviceConfigurationChange(newConfig);
String d1 = newLocale.getDisplayName(); Utilities.checkDisplaySize();
String d2 = currentLocale.getDisplayName(); } catch (Exception e) {
if (d1 != null && d2 != null && !d1.equals(d2)) { e.printStackTrace();
Utilities.recreateFormatters();
}
currentLocale = newLocale;
} }
Utilities.checkDisplaySize();
} }
public static void resetLastPauseTime() { public static void resetLastPauseTime() {
......
...@@ -206,7 +206,7 @@ public class ChatBaseCell extends BaseCell { ...@@ -206,7 +206,7 @@ public class ChatBaseCell extends BaseCell {
currentTimePaint = timePaintIn; currentTimePaint = timePaintIn;
} }
currentTimeString = Utilities.formatterDay.format((long) (currentMessageObject.messageOwner.date) * 1000); currentTimeString = LocaleController.formatterDay.format((long) (currentMessageObject.messageOwner.date) * 1000);
timeWidth = (int)Math.ceil(currentTimePaint.measureText(currentTimeString)); timeWidth = (int)Math.ceil(currentTimePaint.measureText(currentTimeString));
namesOffset = 0; namesOffset = 0;
......
...@@ -12,7 +12,6 @@ import android.content.Context; ...@@ -12,7 +12,6 @@ import android.content.Context;
import android.graphics.Canvas; import android.graphics.Canvas;
import android.graphics.Paint; import android.graphics.Paint;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.text.Html;
import android.text.Layout; import android.text.Layout;
import android.text.StaticLayout; import android.text.StaticLayout;
import android.text.TextPaint; import android.text.TextPaint;
...@@ -55,7 +54,6 @@ public class ChatOrUserCell extends BaseCell { ...@@ -55,7 +54,6 @@ public class ChatOrUserCell extends BaseCell {
private TLRPC.FileLocation lastAvatar = null; private TLRPC.FileLocation lastAvatar = null;
public boolean usePadding = true; public boolean usePadding = true;
public boolean useBoldFont = false;
public boolean useSeparator = false; public boolean useSeparator = false;
public float drawAlpha = 1; public float drawAlpha = 1;
...@@ -275,7 +273,7 @@ public class ChatOrUserCell extends BaseCell { ...@@ -275,7 +273,7 @@ public class ChatOrUserCell extends BaseCell {
if (encryptedChat != null) { if (encryptedChat != null) {
drawNameLock = true; drawNameLock = true;
if (!Utilities.isRTL) { if (!LocaleController.isRTL) {
nameLockLeft = Utilities.dp(61 + (usePadding ? 11 : 0)); nameLockLeft = Utilities.dp(61 + (usePadding ? 11 : 0));
nameLeft = Utilities.dp(65 + (usePadding ? 11 : 0)) + lockDrawable.getIntrinsicWidth(); nameLeft = Utilities.dp(65 + (usePadding ? 11 : 0)) + lockDrawable.getIntrinsicWidth();
} else { } else {
...@@ -284,7 +282,7 @@ public class ChatOrUserCell extends BaseCell { ...@@ -284,7 +282,7 @@ public class ChatOrUserCell extends BaseCell {
} }
} else { } else {
drawNameLock = false; drawNameLock = false;
if (!Utilities.isRTL) { if (!LocaleController.isRTL) {
nameLeft = Utilities.dp(61 + (usePadding ? 11 : 0)); nameLeft = Utilities.dp(61 + (usePadding ? 11 : 0));
} else { } else {
nameLeft = usePadding ? Utilities.dp(11) : 0; nameLeft = usePadding ? Utilities.dp(11) : 0;
...@@ -294,39 +292,30 @@ public class ChatOrUserCell extends BaseCell { ...@@ -294,39 +292,30 @@ public class ChatOrUserCell extends BaseCell {
if (currentName != null) { if (currentName != null) {
nameString = currentName; nameString = currentName;
} else { } else {
if (useBoldFont) { String nameString2 = "";
if (user != null) { if (chat != null) {
if (user.first_name.length() != 0 && user.last_name.length() != 0) { nameString2 = chat.title;
nameString = Html.fromHtml(user.first_name + " <b>" + user.last_name + "</b>"); } else if (user != null) {
} else if (user.first_name.length() != 0) { if (user.id / 1000 != 333 && ContactsController.getInstance().contactsDict.get(user.id) == null) {
nameString = Html.fromHtml("<b>" + user.first_name + "</b>"); if (ContactsController.getInstance().contactsDict.size() == 0 && ContactsController.getInstance().loadingContacts) {
nameString2 = Utilities.formatName(user.first_name, user.last_name);
} else { } else {
nameString = Html.fromHtml("<b>" + user.last_name + "</b>"); if (user.phone != null && user.phone.length() != 0) {
} nameString2 = PhoneFormat.getInstance().format("+" + user.phone);
}
} else {
String nameString2 = "";
if (chat != null) {
nameString2 = chat.title;
} else if (user != null) {
if (user.id / 1000 != 333 && ContactsController.getInstance().contactsDict.get(user.id) == null) {
if (ContactsController.getInstance().contactsDict.size() == 0 && ContactsController.getInstance().loadingContacts) {
nameString2 = Utilities.formatName(user.first_name, user.last_name);
} else { } else {
if (user.phone != null && user.phone.length() != 0) { nameString2 = Utilities.formatName(user.first_name, user.last_name);
nameString2 = PhoneFormat.getInstance().format("+" + user.phone);
} else {
nameString2 = Utilities.formatName(user.first_name, user.last_name);
}
} }
} else {
nameString2 = Utilities.formatName(user.first_name, user.last_name);
} }
} else {
nameString2 = Utilities.formatName(user.first_name, user.last_name);
} }
nameString = nameString2.replace("\n", " ");
} }
nameString = nameString2.replace("\n", " ");
} }
if (nameString.length() == 0) { if (nameString.length() == 0) {
if (user.phone != null && user.phone.length() != 0) {
nameString = PhoneFormat.getInstance().format("+" + user.phone);
}
nameString = LocaleController.getString("HiddenName", R.string.HiddenName); nameString = LocaleController.getString("HiddenName", R.string.HiddenName);
} }
if (encryptedChat != null) { if (encryptedChat != null) {
...@@ -335,7 +324,7 @@ public class ChatOrUserCell extends BaseCell { ...@@ -335,7 +324,7 @@ public class ChatOrUserCell extends BaseCell {
currentNamePaint = namePaint; currentNamePaint = namePaint;
} }
if (!Utilities.isRTL) { if (!LocaleController.isRTL) {
onlineWidth = nameWidth = width - nameLeft - Utilities.dp(3 + (usePadding ? 11 : 0)); onlineWidth = nameWidth = width - nameLeft - Utilities.dp(3 + (usePadding ? 11 : 0));
} else { } else {
onlineWidth = nameWidth = width - nameLeft - Utilities.dp(61 + (usePadding ? 11 : 0)); onlineWidth = nameWidth = width - nameLeft - Utilities.dp(61 + (usePadding ? 11 : 0));
...@@ -348,7 +337,7 @@ public class ChatOrUserCell extends BaseCell { ...@@ -348,7 +337,7 @@ public class ChatOrUserCell extends BaseCell {
nameLayout = new StaticLayout(nameStringFinal, currentNamePaint, nameWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); nameLayout = new StaticLayout(nameStringFinal, currentNamePaint, nameWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false);
if (chat == null) { if (chat == null) {
if (!Utilities.isRTL) { if (!LocaleController.isRTL) {
onlineLeft = Utilities.dp(61 + (usePadding ? 11 : 0)); onlineLeft = Utilities.dp(61 + (usePadding ? 11 : 0));
} else { } else {
onlineLeft = usePadding ? Utilities.dp(11) : 0; onlineLeft = usePadding ? Utilities.dp(11) : 0;
...@@ -372,7 +361,7 @@ public class ChatOrUserCell extends BaseCell { ...@@ -372,7 +361,7 @@ public class ChatOrUserCell extends BaseCell {
if (user.status.expires <= 10000) { if (user.status.expires <= 10000) {
onlineString = getResources().getString(R.string.Invisible); onlineString = getResources().getString(R.string.Invisible);
} else { } else {
onlineString = Utilities.formatDateOnline(user.status.expires); onlineString = LocaleController.formatDateOnline(user.status.expires);
} }
} }
} }
...@@ -387,7 +376,7 @@ public class ChatOrUserCell extends BaseCell { ...@@ -387,7 +376,7 @@ public class ChatOrUserCell extends BaseCell {
nameTop = Utilities.dp(22); nameTop = Utilities.dp(22);
} }
if (!Utilities.isRTL) { if (!LocaleController.isRTL) {
avatarLeft = usePadding ? Utilities.dp(11) : 0; avatarLeft = usePadding ? Utilities.dp(11) : 0;
} else { } else {
avatarLeft = width - Utilities.dp(50 + (usePadding ? 11 : 0)); avatarLeft = width - Utilities.dp(50 + (usePadding ? 11 : 0));
...@@ -399,7 +388,7 @@ public class ChatOrUserCell extends BaseCell { ...@@ -399,7 +388,7 @@ public class ChatOrUserCell extends BaseCell {
double widthpx = 0; double widthpx = 0;
float left = 0; float left = 0;
if (Utilities.isRTL) { if (LocaleController.isRTL) {
if (nameLayout.getLineCount() > 0) { if (nameLayout.getLineCount() > 0) {
left = nameLayout.getLineLeft(0); left = nameLayout.getLineLeft(0);
if (left == 0) { if (left == 0) {
......
...@@ -359,7 +359,7 @@ public class DialogCell extends BaseCell { ...@@ -359,7 +359,7 @@ public class DialogCell extends BaseCell {
if (encryptedChat != null) { if (encryptedChat != null) {
drawNameLock = true; drawNameLock = true;
if (!Utilities.isRTL) { if (!LocaleController.isRTL) {
nameLockLeft = Utilities.dp(77); nameLockLeft = Utilities.dp(77);
nameLeft = Utilities.dp(81) + lockDrawable.getIntrinsicWidth(); nameLeft = Utilities.dp(81) + lockDrawable.getIntrinsicWidth();
} else { } else {
...@@ -368,7 +368,7 @@ public class DialogCell extends BaseCell { ...@@ -368,7 +368,7 @@ public class DialogCell extends BaseCell {
} }
} else { } else {
drawNameLock = false; drawNameLock = false;
if (!Utilities.isRTL) { if (!LocaleController.isRTL) {
nameLeft = Utilities.dp(77); nameLeft = Utilities.dp(77);
} else { } else {
nameLeft = Utilities.dp(14); nameLeft = Utilities.dp(14);
...@@ -407,7 +407,7 @@ public class DialogCell extends BaseCell { ...@@ -407,7 +407,7 @@ public class DialogCell extends BaseCell {
} }
} }
if (currentDialog.last_message_date != 0) { if (currentDialog.last_message_date != 0) {
timeString = Utilities.stringForMessageListDate(currentDialog.last_message_date); timeString = LocaleController.stringForMessageListDate(currentDialog.last_message_date);
} }
drawCheck1 = false; drawCheck1 = false;
drawCheck2 = false; drawCheck2 = false;
...@@ -418,9 +418,9 @@ public class DialogCell extends BaseCell { ...@@ -418,9 +418,9 @@ public class DialogCell extends BaseCell {
TLRPC.User fromUser = MessagesController.getInstance().users.get(message.messageOwner.from_id); TLRPC.User fromUser = MessagesController.getInstance().users.get(message.messageOwner.from_id);
if (currentDialog.last_message_date != 0) { if (currentDialog.last_message_date != 0) {
timeString = Utilities.stringForMessageListDate(currentDialog.last_message_date); timeString = LocaleController.stringForMessageListDate(currentDialog.last_message_date);
} else { } else {
timeString = Utilities.stringForMessageListDate(message.messageOwner.date); timeString = LocaleController.stringForMessageListDate(message.messageOwner.date);
} }
if (printingString != null) { if (printingString != null) {
lastPrintString = messageString = printingString; lastPrintString = messageString = printingString;
...@@ -508,7 +508,7 @@ public class DialogCell extends BaseCell { ...@@ -508,7 +508,7 @@ public class DialogCell extends BaseCell {
timeWidth = (int)Math.ceil(timePaint.measureText(timeString)); timeWidth = (int)Math.ceil(timePaint.measureText(timeString));
timeLayout = new StaticLayout(timeString, timePaint, timeWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); timeLayout = new StaticLayout(timeString, timePaint, timeWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false);
if (!Utilities.isRTL) { if (!LocaleController.isRTL) {
timeLeft = width - Utilities.dp(11) - timeWidth; timeLeft = width - Utilities.dp(11) - timeWidth;
} else { } else {
timeLeft = Utilities.dp(11); timeLeft = Utilities.dp(11);
...@@ -539,7 +539,7 @@ public class DialogCell extends BaseCell { ...@@ -539,7 +539,7 @@ public class DialogCell extends BaseCell {
nameString = LocaleController.getString("HiddenName", R.string.HiddenName); nameString = LocaleController.getString("HiddenName", R.string.HiddenName);
} }
if (!Utilities.isRTL) { if (!LocaleController.isRTL) {
nameWidth = width - nameLeft - Utilities.dp(14) - timeWidth; nameWidth = width - nameLeft - Utilities.dp(14) - timeWidth;
} else { } else {
nameWidth = width - nameLeft - Utilities.dp(77) - timeWidth; nameWidth = width - nameLeft - Utilities.dp(77) - timeWidth;
...@@ -551,7 +551,7 @@ public class DialogCell extends BaseCell { ...@@ -551,7 +551,7 @@ public class DialogCell extends BaseCell {
if (drawClock) { if (drawClock) {
int w = clockDrawable.getIntrinsicWidth() + Utilities.dp(2); int w = clockDrawable.getIntrinsicWidth() + Utilities.dp(2);
nameWidth -= w; nameWidth -= w;
if (!Utilities.isRTL) { if (!LocaleController.isRTL) {
checkDrawLeft = timeLeft - w; checkDrawLeft = timeLeft - w;
} else { } else {
checkDrawLeft = timeLeft + timeWidth + Utilities.dp(2); checkDrawLeft = timeLeft + timeWidth + Utilities.dp(2);
...@@ -562,7 +562,7 @@ public class DialogCell extends BaseCell { ...@@ -562,7 +562,7 @@ public class DialogCell extends BaseCell {
nameWidth -= w; nameWidth -= w;
if (drawCheck1) { if (drawCheck1) {
nameWidth -= halfCheckDrawable.getIntrinsicWidth() - Utilities.dp(5); nameWidth -= halfCheckDrawable.getIntrinsicWidth() - Utilities.dp(5);
if (!Utilities.isRTL) { if (!LocaleController.isRTL) {
halfCheckDrawLeft = timeLeft - w; halfCheckDrawLeft = timeLeft - w;
checkDrawLeft = halfCheckDrawLeft - Utilities.dp(5); checkDrawLeft = halfCheckDrawLeft - Utilities.dp(5);
} else { } else {
...@@ -571,7 +571,7 @@ public class DialogCell extends BaseCell { ...@@ -571,7 +571,7 @@ public class DialogCell extends BaseCell {
nameLeft += w + halfCheckDrawable.getIntrinsicWidth() - Utilities.dp(5); nameLeft += w + halfCheckDrawable.getIntrinsicWidth() - Utilities.dp(5);
} }
} else { } else {
if (!Utilities.isRTL) { if (!LocaleController.isRTL) {
checkDrawLeft = timeLeft - w; checkDrawLeft = timeLeft - w;
} else { } else {
checkDrawLeft = timeLeft + timeWidth + Utilities.dp(2); checkDrawLeft = timeLeft + timeWidth + Utilities.dp(2);
...@@ -584,7 +584,7 @@ public class DialogCell extends BaseCell { ...@@ -584,7 +584,7 @@ public class DialogCell extends BaseCell {
nameLayout = new StaticLayout(nameStringFinal, currentNamePaint, nameWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); nameLayout = new StaticLayout(nameStringFinal, currentNamePaint, nameWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false);
messageWidth = width - Utilities.dp(88); messageWidth = width - Utilities.dp(88);
if (!Utilities.isRTL) { if (!LocaleController.isRTL) {
messageLeft = Utilities.dp(77); messageLeft = Utilities.dp(77);
avatarLeft = Utilities.dp(11); avatarLeft = Utilities.dp(11);
} else { } else {
...@@ -598,7 +598,7 @@ public class DialogCell extends BaseCell { ...@@ -598,7 +598,7 @@ public class DialogCell extends BaseCell {
if (drawError) { if (drawError) {
int w = errorDrawable.getIntrinsicWidth() + Utilities.dp(8); int w = errorDrawable.getIntrinsicWidth() + Utilities.dp(8);
messageWidth -= w; messageWidth -= w;
if (!Utilities.isRTL) { if (!LocaleController.isRTL) {
errorLeft = width - errorDrawable.getIntrinsicWidth() - Utilities.dp(11); errorLeft = width - errorDrawable.getIntrinsicWidth() - Utilities.dp(11);
} else { } else {
errorLeft = Utilities.dp(11); errorLeft = Utilities.dp(11);
...@@ -609,7 +609,7 @@ public class DialogCell extends BaseCell { ...@@ -609,7 +609,7 @@ public class DialogCell extends BaseCell {
countLayout = new StaticLayout(countString, countPaint, countWidth, Layout.Alignment.ALIGN_CENTER, 1.0f, 0.0f, false); countLayout = new StaticLayout(countString, countPaint, countWidth, Layout.Alignment.ALIGN_CENTER, 1.0f, 0.0f, false);
int w = countWidth + Utilities.dp(18); int w = countWidth + Utilities.dp(18);
messageWidth -= w; messageWidth -= w;
if (!Utilities.isRTL) { if (!LocaleController.isRTL) {
countLeft = width - countWidth - Utilities.dp(16); countLeft = width - countWidth - Utilities.dp(16);
} else { } else {
countLeft = Utilities.dp(16); countLeft = Utilities.dp(16);
...@@ -636,7 +636,7 @@ public class DialogCell extends BaseCell { ...@@ -636,7 +636,7 @@ public class DialogCell extends BaseCell {
double widthpx = 0; double widthpx = 0;
float left = 0; float left = 0;
if (Utilities.isRTL) { if (LocaleController.isRTL) {
if (nameLayout.getLineCount() > 0) { if (nameLayout.getLineCount() > 0) {
left = nameLayout.getLineLeft(0); left = nameLayout.getLineLeft(0);
if (left == 0) { if (left == 0) {
......
...@@ -1315,7 +1315,7 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa ...@@ -1315,7 +1315,7 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
if (currentUser.status.expires <= 10000) { if (currentUser.status.expires <= 10000) {
actionBar.setSubtitle(LocaleController.getString("Invisible", R.string.Invisible)); actionBar.setSubtitle(LocaleController.getString("Invisible", R.string.Invisible));
} else { } else {
actionBar.setSubtitle(Utilities.formatDateOnline(currentUser.status.expires)); actionBar.setSubtitle(LocaleController.formatDateOnline(currentUser.status.expires));
} }
} }
} }
...@@ -1624,7 +1624,7 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa ...@@ -1624,7 +1624,7 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
messagesByDays.put(obj.dateKey, dayArray); messagesByDays.put(obj.dateKey, dayArray);
TLRPC.Message dateMsg = new TLRPC.Message(); TLRPC.Message dateMsg = new TLRPC.Message();
dateMsg.message = Utilities.formatDateChat(obj.messageOwner.date); dateMsg.message = LocaleController.formatDateChat(obj.messageOwner.date);
dateMsg.id = 0; dateMsg.id = 0;
MessageObject dateObj = new MessageObject(dateMsg, null); MessageObject dateObj = new MessageObject(dateMsg, null);
dateObj.type = 10; dateObj.type = 10;
...@@ -1902,7 +1902,7 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa ...@@ -1902,7 +1902,7 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
messagesByDays.put(obj.dateKey, dayArray); messagesByDays.put(obj.dateKey, dayArray);
TLRPC.Message dateMsg = new TLRPC.Message(); TLRPC.Message dateMsg = new TLRPC.Message();
dateMsg.message = Utilities.formatDateChat(obj.messageOwner.date); dateMsg.message = LocaleController.formatDateChat(obj.messageOwner.date);
dateMsg.id = 0; dateMsg.id = 0;
MessageObject dateObj = new MessageObject(dateMsg, null); MessageObject dateObj = new MessageObject(dateMsg, null);
dateObj.type = 10; dateObj.type = 10;
...@@ -3557,7 +3557,7 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa ...@@ -3557,7 +3557,7 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
int type = message.type; int type = message.type;
if (timeTextView != null) { if (timeTextView != null) {
timeTextView.setText(Utilities.formatterDay.format((long) (message.messageOwner.date) * 1000)); timeTextView.setText(LocaleController.formatterDay.format((long) (message.messageOwner.date) * 1000));
} }
if (avatarImageView != null && fromUser != null) { if (avatarImageView != null && fromUser != null) {
......
...@@ -684,7 +684,6 @@ public class ChatProfileActivity extends BaseFragment implements NotificationCen ...@@ -684,7 +684,6 @@ public class ChatProfileActivity extends BaseFragment implements NotificationCen
if (view == null) { if (view == null) {
view = new ChatOrUserCell(mContext); view = new ChatOrUserCell(mContext);
((ChatOrUserCell)view).useBoldFont = true;
((ChatOrUserCell)view).usePadding = false; ((ChatOrUserCell)view).usePadding = false;
((ChatOrUserCell)view).useSeparator = true; ((ChatOrUserCell)view).useSeparator = true;
} }
......
...@@ -141,7 +141,7 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent ...@@ -141,7 +141,7 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent
if (user.status.expires <= 10000) { if (user.status.expires <= 10000) {
onlineText.setText(LocaleController.getString("Invisible", R.string.Invisible)); onlineText.setText(LocaleController.getString("Invisible", R.string.Invisible));
} else { } else {
onlineText.setText(Utilities.formatDateOnline(user.status.expires)); onlineText.setText(LocaleController.formatDateOnline(user.status.expires));
} }
} }
} }
......
...@@ -70,7 +70,7 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter ...@@ -70,7 +70,7 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter
public int selectAlertString = 0; public int selectAlertString = 0;
public String selectAlertStringDesc = null; public String selectAlertStringDesc = null;
private SearchView searchView; private SearchView searchView;
private TextView epmtyTextView; private TextView emptyTextView;
private HashMap<Integer, TLRPC.User> ignoreUsers; private HashMap<Integer, TLRPC.User> ignoreUsers;
private SupportMenuItem searchItem; private SupportMenuItem searchItem;
...@@ -145,12 +145,12 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter ...@@ -145,12 +145,12 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter
fragmentView = inflater.inflate(R.layout.contacts_layout, container, false); fragmentView = inflater.inflate(R.layout.contacts_layout, container, false);
epmtyTextView = (TextView)fragmentView.findViewById(R.id.searchEmptyView); emptyTextView = (TextView)fragmentView.findViewById(R.id.searchEmptyView);
epmtyTextView.setText(LocaleController.getString("NoContacts", R.string.NoContacts)); emptyTextView.setText(LocaleController.getString("NoContacts", R.string.NoContacts));
searchListViewAdapter = new ContactsActivitySearchAdapter(parentActivity, ignoreUsers); searchListViewAdapter = new ContactsActivitySearchAdapter(parentActivity, ignoreUsers);
listView = (PinnedHeaderListView)fragmentView.findViewById(R.id.listView); listView = (PinnedHeaderListView)fragmentView.findViewById(R.id.listView);
listView.setEmptyView(epmtyTextView); listView.setEmptyView(emptyTextView);
listView.setVerticalScrollBarEnabled(false); listView.setVerticalScrollBarEnabled(false);
listViewAdapter = new ContactsActivityAdapter(parentActivity, onlyUsers, usersAsSections, ignoreUsers); listViewAdapter = new ContactsActivityAdapter(parentActivity, onlyUsers, usersAsSections, ignoreUsers);
...@@ -284,7 +284,7 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter ...@@ -284,7 +284,7 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter
} }
} }
}); });
epmtyTextView.setOnTouchListener(new OnSwipeTouchListener() { emptyTextView.setOnTouchListener(new OnSwipeTouchListener() {
public void onSwipeRight() { public void onSwipeRight() {
finishFragment(true); finishFragment(true);
if (searchItem != null) { if (searchItem != null) {
...@@ -444,8 +444,8 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter ...@@ -444,8 +444,8 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter
listView.setFastScrollEnabled(false); listView.setFastScrollEnabled(false);
listView.setVerticalScrollBarEnabled(true); listView.setVerticalScrollBarEnabled(true);
} }
if (epmtyTextView != null) { if (emptyTextView != null) {
epmtyTextView.setText(LocaleController.getString("NoResult", R.string.NoResult)); emptyTextView.setText(LocaleController.getString("NoResult", R.string.NoResult));
} }
} }
return true; return true;
...@@ -474,7 +474,7 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter ...@@ -474,7 +474,7 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter
searchWas = false; searchWas = false;
ViewGroup group = (ViewGroup) listView.getParent(); ViewGroup group = (ViewGroup) listView.getParent();
listView.setAdapter(listViewAdapter); listView.setAdapter(listViewAdapter);
if (!Utilities.isRTL) { if (!LocaleController.isRTL) {
listView.setPadding(Utilities.dp(16), listView.getPaddingTop(), Utilities.dp(30), listView.getPaddingBottom()); listView.setPadding(Utilities.dp(16), listView.getPaddingTop(), Utilities.dp(30), listView.getPaddingBottom());
} else { } else {
listView.setPadding(Utilities.dp(30), listView.getPaddingTop(), Utilities.dp(16), listView.getPaddingBottom()); listView.setPadding(Utilities.dp(30), listView.getPaddingTop(), Utilities.dp(16), listView.getPaddingBottom());
...@@ -486,7 +486,7 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter ...@@ -486,7 +486,7 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter
listView.setVerticalScrollBarEnabled(false); listView.setVerticalScrollBarEnabled(false);
((LaunchActivity)parentActivity).updateActionBar(); ((LaunchActivity)parentActivity).updateActionBar();
epmtyTextView.setText(LocaleController.getString("NoContacts", R.string.NoContacts)); emptyTextView.setText(LocaleController.getString("NoContacts", R.string.NoContacts));
return true; return true;
} }
}); });
......
...@@ -29,6 +29,7 @@ import android.widget.ImageView; ...@@ -29,6 +29,7 @@ import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import org.telegram.messenger.FileLog; import org.telegram.messenger.FileLog;
import org.telegram.messenger.LocaleController;
import org.telegram.messenger.R; import org.telegram.messenger.R;
import org.telegram.messenger.Utilities; import org.telegram.messenger.Utilities;
import org.telegram.ui.Views.PinnedHeaderListView; import org.telegram.ui.Views.PinnedHeaderListView;
...@@ -52,11 +53,11 @@ public class CountrySelectActivity extends ActionBarActivity { ...@@ -52,11 +53,11 @@ public class CountrySelectActivity extends ActionBarActivity {
private boolean searchWas; private boolean searchWas;
private boolean searching; private boolean searching;
private BaseAdapter searchListViewAdapter; private BaseAdapter searchListViewAdapter;
private TextView epmtyTextView; private TextView emptyTextView;
private HashMap<String, ArrayList<Country>> countries = new HashMap<String, ArrayList<Country>>(); private HashMap<String, ArrayList<Country>> countries = new HashMap<String, ArrayList<Country>>();
private ArrayList<String> sortedCountries = new ArrayList<String>(); private ArrayList<String> sortedCountries = new ArrayList<String>();
private Timer searchDialogsTimer; private Timer searchTimer;
public ArrayList<Country> searchResult; public ArrayList<Country> searchResult;
public static class Country { public static class Country {
...@@ -112,11 +113,11 @@ public class CountrySelectActivity extends ActionBarActivity { ...@@ -112,11 +113,11 @@ public class CountrySelectActivity extends ActionBarActivity {
setContentView(R.layout.country_select_layout); setContentView(R.layout.country_select_layout);
epmtyTextView = (TextView)findViewById(R.id.searchEmptyView); emptyTextView = (TextView)findViewById(R.id.searchEmptyView);
searchListViewAdapter = new SearchAdapter(this); searchListViewAdapter = new SearchAdapter(this);
listView = (PinnedHeaderListView)findViewById(R.id.listView); listView = (PinnedHeaderListView)findViewById(R.id.listView);
listView.setEmptyView(epmtyTextView); listView.setEmptyView(emptyTextView);
listView.setVerticalScrollBarEnabled(false); listView.setVerticalScrollBarEnabled(false);
listView.setAdapter(listViewAdapter = new ListAdapter(this)); listView.setAdapter(listViewAdapter = new ListAdapter(this));
...@@ -221,7 +222,7 @@ public class CountrySelectActivity extends ActionBarActivity { ...@@ -221,7 +222,7 @@ public class CountrySelectActivity extends ActionBarActivity {
@Override @Override
public boolean onQueryTextChange(String s) { public boolean onQueryTextChange(String s) {
searchDialogs(s); search(s);
if (s.length() != 0) { if (s.length() != 0) {
searchWas = true; searchWas = true;
if (listView != null) { if (listView != null) {
...@@ -233,8 +234,8 @@ public class CountrySelectActivity extends ActionBarActivity { ...@@ -233,8 +234,8 @@ public class CountrySelectActivity extends ActionBarActivity {
listView.setFastScrollEnabled(false); listView.setFastScrollEnabled(false);
listView.setVerticalScrollBarEnabled(true); listView.setVerticalScrollBarEnabled(true);
} }
if (epmtyTextView != null) { if (emptyTextView != null) {
epmtyTextView.setText(getString(R.string.NoResult)); emptyTextView.setText(getString(R.string.NoResult));
} }
} }
return true; return true;
...@@ -252,12 +253,12 @@ public class CountrySelectActivity extends ActionBarActivity { ...@@ -252,12 +253,12 @@ public class CountrySelectActivity extends ActionBarActivity {
@Override @Override
public boolean onMenuItemActionCollapse(MenuItem menuItem) { public boolean onMenuItemActionCollapse(MenuItem menuItem) {
searchView.setQuery("", false); searchView.setQuery("", false);
searchDialogs(null); search(null);
searching = false; searching = false;
searchWas = false; searchWas = false;
ViewGroup group = (ViewGroup) listView.getParent(); ViewGroup group = (ViewGroup) listView.getParent();
listView.setAdapter(listViewAdapter); listView.setAdapter(listViewAdapter);
if (!Utilities.isRTL) { if (!LocaleController.isRTL) {
listView.setPadding(Utilities.dp(16), listView.getPaddingTop(), Utilities.dp(30), listView.getPaddingBottom()); listView.setPadding(Utilities.dp(16), listView.getPaddingTop(), Utilities.dp(30), listView.getPaddingBottom());
} else { } else {
listView.setPadding(Utilities.dp(30), listView.getPaddingTop(), Utilities.dp(16), listView.getPaddingBottom()); listView.setPadding(Utilities.dp(30), listView.getPaddingTop(), Utilities.dp(16), listView.getPaddingBottom());
...@@ -269,7 +270,7 @@ public class CountrySelectActivity extends ActionBarActivity { ...@@ -269,7 +270,7 @@ public class CountrySelectActivity extends ActionBarActivity {
listView.setVerticalScrollBarEnabled(false); listView.setVerticalScrollBarEnabled(false);
applySelfActionBar(); applySelfActionBar();
epmtyTextView.setText(getString(R.string.ChooseCountry)); emptyTextView.setText(getString(R.string.ChooseCountry));
return true; return true;
} }
}); });
...@@ -305,24 +306,24 @@ public class CountrySelectActivity extends ActionBarActivity { ...@@ -305,24 +306,24 @@ public class CountrySelectActivity extends ActionBarActivity {
} }
} }
public void searchDialogs(final String query) { public void search(final String query) {
if (query == null) { if (query == null) {
searchResult = null; searchResult = null;
} else { } else {
try { try {
if (searchDialogsTimer != null) { if (searchTimer != null) {
searchDialogsTimer.cancel(); searchTimer.cancel();
} }
} catch (Exception e) { } catch (Exception e) {
FileLog.e("tmessages", e); FileLog.e("tmessages", e);
} }
searchDialogsTimer = new Timer(); searchTimer = new Timer();
searchDialogsTimer.schedule(new TimerTask() { searchTimer.schedule(new TimerTask() {
@Override @Override
public void run() { public void run() {
try { try {
searchDialogsTimer.cancel(); searchTimer.cancel();
searchDialogsTimer = null; searchTimer = null;
} catch (Exception e) { } catch (Exception e) {
FileLog.e("tmessages", e); FileLog.e("tmessages", e);
} }
......
...@@ -374,9 +374,9 @@ public class GalleryImageViewer extends AbstractGalleryActivity implements Notif ...@@ -374,9 +374,9 @@ public class GalleryImageViewer extends AbstractGalleryActivity implements Notif
Utilities.RunOnUIThread(new Runnable() { Utilities.RunOnUIThread(new Runnable() {
@Override @Override
public void run() { public void run() {
getSupportActionBar().setTitle(String.format("%d %s %d", pos, LocaleController.getString("Of", R.string.Of), totalCount)); getSupportActionBar().setTitle(LocaleController.formatString("Of", R.string.Of, pos, totalCount));
if (title != null) { if (title != null) {
fakeTitleView.setText(String.format("%d %s %d", pos, LocaleController.getString("Of", R.string.Of), totalCount)); fakeTitleView.setText(LocaleController.formatString("Of", R.string.Of, pos, totalCount));
fakeTitleView.measure(View.MeasureSpec.makeMeasureSpec(400, View.MeasureSpec.AT_MOST), View.MeasureSpec.makeMeasureSpec(100, View.MeasureSpec.AT_MOST)); fakeTitleView.measure(View.MeasureSpec.makeMeasureSpec(400, View.MeasureSpec.AT_MOST), View.MeasureSpec.makeMeasureSpec(100, View.MeasureSpec.AT_MOST));
title.setWidth(fakeTitleView.getMeasuredWidth() + Utilities.dp(8)); title.setWidth(fakeTitleView.getMeasuredWidth() + Utilities.dp(8));
title.setMaxWidth(fakeTitleView.getMeasuredWidth() + Utilities.dp(8)); title.setMaxWidth(fakeTitleView.getMeasuredWidth() + Utilities.dp(8));
...@@ -565,7 +565,7 @@ public class GalleryImageViewer extends AbstractGalleryActivity implements Notif ...@@ -565,7 +565,7 @@ public class GalleryImageViewer extends AbstractGalleryActivity implements Notif
TLRPC.User user = MessagesController.getInstance().users.get(obj.messageOwner.from_id); TLRPC.User user = MessagesController.getInstance().users.get(obj.messageOwner.from_id);
if (user != null) { if (user != null) {
nameTextView.setText(Utilities.formatName(user.first_name, user.last_name)); nameTextView.setText(Utilities.formatName(user.first_name, user.last_name));
timeTextView.setText(Utilities.formatterYearMax.format(((long)obj.messageOwner.date) * 1000)); timeTextView.setText(LocaleController.formatterYearMax.format(((long)obj.messageOwner.date) * 1000));
} else { } else {
nameTextView.setText(""); nameTextView.setText("");
} }
...@@ -866,9 +866,9 @@ public class GalleryImageViewer extends AbstractGalleryActivity implements Notif ...@@ -866,9 +866,9 @@ public class GalleryImageViewer extends AbstractGalleryActivity implements Notif
Utilities.RunOnUIThread(new Runnable() { Utilities.RunOnUIThread(new Runnable() {
@Override @Override
public void run() { public void run() {
getSupportActionBar().setTitle(String.format("%d %s %d", (totalCount - imagesArr.size()) + position + 1, LocaleController.getString("Of", R.string.Of), totalCount)); getSupportActionBar().setTitle(LocaleController.formatString("Of", R.string.Of, (totalCount - imagesArr.size()) + position + 1, totalCount));
if (title != null) { if (title != null) {
fakeTitleView.setText(String.format("%d %s %d", (totalCount - imagesArr.size()) + position + 1, LocaleController.getString("Of", R.string.Of), totalCount)); fakeTitleView.setText(LocaleController.formatString("Of", R.string.Of, (totalCount - imagesArr.size()) + position + 1, totalCount));
fakeTitleView.measure(View.MeasureSpec.makeMeasureSpec(400, View.MeasureSpec.AT_MOST), View.MeasureSpec.makeMeasureSpec(100, View.MeasureSpec.AT_MOST)); fakeTitleView.measure(View.MeasureSpec.makeMeasureSpec(400, View.MeasureSpec.AT_MOST), View.MeasureSpec.makeMeasureSpec(100, View.MeasureSpec.AT_MOST));
title.setWidth(fakeTitleView.getMeasuredWidth() + Utilities.dp(8)); title.setWidth(fakeTitleView.getMeasuredWidth() + Utilities.dp(8));
title.setMaxWidth(fakeTitleView.getMeasuredWidth() + Utilities.dp(8)); title.setMaxWidth(fakeTitleView.getMeasuredWidth() + Utilities.dp(8));
...@@ -885,9 +885,9 @@ public class GalleryImageViewer extends AbstractGalleryActivity implements Notif ...@@ -885,9 +885,9 @@ public class GalleryImageViewer extends AbstractGalleryActivity implements Notif
Utilities.RunOnUIThread(new Runnable() { Utilities.RunOnUIThread(new Runnable() {
@Override @Override
public void run() { public void run() {
getSupportActionBar().setTitle(String.format("%d %s %d", position + 1, LocaleController.getString("Of", R.string.Of), imagesArrLocations.size())); getSupportActionBar().setTitle(LocaleController.formatString("Of", R.string.Of, position + 1, imagesArrLocations.size()));
if (title != null) { if (title != null) {
fakeTitleView.setText(String.format("%d %s %d", position + 1, LocaleController.getString("Of", R.string.Of), imagesArrLocations.size())); fakeTitleView.setText(LocaleController.formatString("Of", R.string.Of, position + 1, imagesArrLocations.size()));
fakeTitleView.measure(View.MeasureSpec.makeMeasureSpec(400, View.MeasureSpec.AT_MOST), View.MeasureSpec.makeMeasureSpec(100, View.MeasureSpec.AT_MOST)); fakeTitleView.measure(View.MeasureSpec.makeMeasureSpec(400, View.MeasureSpec.AT_MOST), View.MeasureSpec.makeMeasureSpec(100, View.MeasureSpec.AT_MOST));
title.setWidth(fakeTitleView.getMeasuredWidth() + Utilities.dp(8)); title.setWidth(fakeTitleView.getMeasuredWidth() + Utilities.dp(8));
title.setMaxWidth(fakeTitleView.getMeasuredWidth() + Utilities.dp(8)); title.setMaxWidth(fakeTitleView.getMeasuredWidth() + Utilities.dp(8));
......
...@@ -148,6 +148,7 @@ public class GroupCreateFinalActivity extends BaseFragment implements Notificati ...@@ -148,6 +148,7 @@ public class GroupCreateFinalActivity extends BaseFragment implements Notificati
actionBar.setDisplayUseLogoEnabled(false); actionBar.setDisplayUseLogoEnabled(false);
actionBar.setDisplayShowCustomEnabled(false); actionBar.setDisplayShowCustomEnabled(false);
actionBar.setCustomView(null); actionBar.setCustomView(null);
actionBar.setSubtitle(null);
actionBar.setTitle(LocaleController.getString("NewGroup", R.string.NewGroup)); actionBar.setTitle(LocaleController.getString("NewGroup", R.string.NewGroup));
TextView title = (TextView)parentActivity.findViewById(R.id.action_bar_title); TextView title = (TextView)parentActivity.findViewById(R.id.action_bar_title);
...@@ -346,7 +347,6 @@ public class GroupCreateFinalActivity extends BaseFragment implements Notificati ...@@ -346,7 +347,6 @@ public class GroupCreateFinalActivity extends BaseFragment implements Notificati
if (convertView == null) { if (convertView == null) {
convertView = new ChatOrUserCell(mContext); convertView = new ChatOrUserCell(mContext);
((ChatOrUserCell)convertView).useBoldFont = true;
((ChatOrUserCell)convertView).usePadding = false; ((ChatOrUserCell)convertView).usePadding = false;
} }
......
...@@ -44,7 +44,7 @@ public class IntroActivity extends ActionBarActivity { ...@@ -44,7 +44,7 @@ public class IntroActivity extends ActionBarActivity {
setContentView(R.layout.intro_layout); setContentView(R.layout.intro_layout);
if (Utilities.isRTL) { if (LocaleController.isRTL) {
icons = new int[] { icons = new int[] {
R.drawable.intro7, R.drawable.intro7,
R.drawable.intro6, R.drawable.intro6,
...@@ -209,7 +209,7 @@ public class IntroActivity extends ActionBarActivity { ...@@ -209,7 +209,7 @@ public class IntroActivity extends ActionBarActivity {
protected void onResume() { protected void onResume() {
super.onResume(); super.onResume();
if (justCreated) { if (justCreated) {
if (Utilities.isRTL) { if (LocaleController.isRTL) {
viewPager.setCurrentItem(6); viewPager.setCurrentItem(6);
lastPage = 6; lastPage = 6;
} else { } else {
......
...@@ -86,7 +86,7 @@ public class LaunchActivity extends ActionBarActivity implements NotificationCen ...@@ -86,7 +86,7 @@ public class LaunchActivity extends ActionBarActivity implements NotificationCen
if (!UserConfig.clientActivated) { if (!UserConfig.clientActivated) {
Intent intent = getIntent(); Intent intent = getIntent();
if (intent != null && intent.getAction() != null && Intent.ACTION_SEND.equals(intent.getAction()) || intent.getAction().equals(Intent.ACTION_SEND_MULTIPLE)) { if (intent != null && intent.getAction() != null && (Intent.ACTION_SEND.equals(intent.getAction()) || intent.getAction().equals(Intent.ACTION_SEND_MULTIPLE))) {
finish(); finish();
return; return;
} }
......
...@@ -69,7 +69,7 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter ...@@ -69,7 +69,7 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter
private int activityToken = (int)(MessagesController.random.nextDouble() * Integer.MAX_VALUE); private int activityToken = (int)(MessagesController.random.nextDouble() * Integer.MAX_VALUE);
private long selectedDialog; private long selectedDialog;
private Timer searchDialogsTimer; private Timer searchTimer;
public ArrayList<TLObject> searchResult; public ArrayList<TLObject> searchResult;
public ArrayList<CharSequence> searchResultNames; public ArrayList<CharSequence> searchResultNames;
...@@ -511,19 +511,19 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter ...@@ -511,19 +511,19 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter
searchResultNames = null; searchResultNames = null;
} else { } else {
try { try {
if (searchDialogsTimer != null) { if (searchTimer != null) {
searchDialogsTimer.cancel(); searchTimer.cancel();
} }
} catch (Exception e) { } catch (Exception e) {
FileLog.e("tmessages", e); FileLog.e("tmessages", e);
} }
searchDialogsTimer = new Timer(); searchTimer = new Timer();
searchDialogsTimer.schedule(new TimerTask() { searchTimer.schedule(new TimerTask() {
@Override @Override
public void run() { public void run() {
try { try {
searchDialogsTimer.cancel(); searchTimer.cancel();
searchDialogsTimer = null; searchTimer = null;
} catch (Exception e) { } catch (Exception e) {
FileLog.e("tmessages", e); FileLog.e("tmessages", e);
} }
......
...@@ -87,6 +87,7 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter ...@@ -87,6 +87,7 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter
private int audioDownloadSection; private int audioDownloadSection;
private int audioDownloadChatRow; private int audioDownloadChatRow;
private int audioDownloadPrivateRow; private int audioDownloadPrivateRow;
private int languageRow;
@Override @Override
public boolean onFragmentCreate() { public boolean onFragmentCreate() {
...@@ -156,6 +157,7 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter ...@@ -156,6 +157,7 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter
numberRow = rowCount++; numberRow = rowCount++;
settingsSectionRow = rowCount++; settingsSectionRow = rowCount++;
enableAnimationsRow = rowCount++; enableAnimationsRow = rowCount++;
languageRow = rowCount++;
notificationRow = rowCount++; notificationRow = rowCount++;
blockedRow = rowCount++; blockedRow = rowCount++;
backgroundRow = rowCount++; backgroundRow = rowCount++;
...@@ -206,7 +208,7 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter ...@@ -206,7 +208,7 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter
if (i == textSizeRow) { if (i == textSizeRow) {
AlertDialog.Builder builder = new AlertDialog.Builder(parentActivity); AlertDialog.Builder builder = new AlertDialog.Builder(parentActivity);
builder.setTitle(LocaleController.getString("TextSize", R.string.TextSize)); builder.setTitle(LocaleController.getString("TextSize", R.string.TextSize));
builder.setItems(new CharSequence[]{String.format("%d", 12), String.format("%d", 13), String.format("%d", 14), String.format("%d", 15), String.format("%d", 16), String.format("%d", 17), String.format("%d", 18), String.format("%d", 19), String.format("%d", 20)}, new DialogInterface.OnClickListener() { builder.setItems(new CharSequence[]{String.format("%d", 12), String.format("%d", 13), String.format("%d", 14), String.format("%d", 15), String.format("%d", 16), String.format("%d", 17), String.format("%d", 18), String.format("%d", 19), String.format("%d", 20), String.format("%d", 21), String.format("%d", 22), String.format("%d", 23), String.format("%d", 24)}, new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE); SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE);
...@@ -404,6 +406,8 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter ...@@ -404,6 +406,8 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter
if (listView != null) { if (listView != null) {
listView.invalidateViews(); listView.invalidateViews();
} }
} else if (i == languageRow) {
((LaunchActivity)parentActivity).presentFragment(new LanguageSelectActivity(), "settings_wallpapers", false);
} }
// else if (i == 6) { // else if (i == 6) {
// UserConfig.saveIncomingPhotos = !UserConfig.saveIncomingPhotos; // UserConfig.saveIncomingPhotos = !UserConfig.saveIncomingPhotos;
...@@ -538,7 +542,7 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter ...@@ -538,7 +542,7 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter
public boolean isEnabled(int i) { public boolean isEnabled(int i) {
return i == textSizeRow || i == enableAnimationsRow || i == blockedRow || i == notificationRow || i == backgroundRow || return i == textSizeRow || i == enableAnimationsRow || i == blockedRow || i == notificationRow || i == backgroundRow ||
i == askQuestionRow || i == sendLogsRow || i == sendByEnterRow || i == terminateSessionsRow || i == photoDownloadPrivateRow || i == askQuestionRow || i == sendLogsRow || i == sendByEnterRow || i == terminateSessionsRow || i == photoDownloadPrivateRow ||
i == photoDownloadChatRow || i == clearLogsRow || i == audioDownloadChatRow || i == audioDownloadPrivateRow; i == photoDownloadChatRow || i == clearLogsRow || i == audioDownloadChatRow || i == audioDownloadPrivateRow || i == languageRow;
} }
@Override @Override
...@@ -569,9 +573,6 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter ...@@ -569,9 +573,6 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter
LayoutInflater li = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); LayoutInflater li = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = li.inflate(R.layout.settings_name_layout, viewGroup, false); view = li.inflate(R.layout.settings_name_layout, viewGroup, false);
TextView textView = (TextView)view.findViewById(R.id.settings_online);
textView.setText(LocaleController.getString("Online", R.string.Online));
ImageButton button = (ImageButton)view.findViewById(R.id.settings_edit_name); ImageButton button = (ImageButton)view.findViewById(R.id.settings_edit_name);
button.setOnClickListener(new View.OnClickListener() { button.setOnClickListener(new View.OnClickListener() {
@Override @Override
...@@ -672,7 +673,10 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter ...@@ -672,7 +673,10 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter
} }
}); });
} }
TextView textView = (TextView)view.findViewById(R.id.settings_name); TextView textView = (TextView)view.findViewById(R.id.settings_online);
textView.setText(LocaleController.getString("Online", R.string.Online));
textView = (TextView)view.findViewById(R.id.settings_name);
Typeface typeface = Utilities.getTypeface("fonts/rmedium.ttf"); Typeface typeface = Utilities.getTypeface("fonts/rmedium.ttf");
textView.setTypeface(typeface); textView.setTypeface(typeface);
TLRPC.User user = MessagesController.getInstance().users.get(UserConfig.clientUserId); TLRPC.User user = MessagesController.getInstance().users.get(UserConfig.clientUserId);
...@@ -860,9 +864,12 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter ...@@ -860,9 +864,12 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter
detailTextView.setText(String.format("%d", size)); detailTextView.setText(String.format("%d", size));
textView.setText(LocaleController.getString("TextSize", R.string.TextSize)); textView.setText(LocaleController.getString("TextSize", R.string.TextSize));
divider.setVisibility(View.VISIBLE); divider.setVisibility(View.VISIBLE);
} else if (i == languageRow) {
detailTextView.setText(LocaleController.getCurrentLanguageName());
textView.setText(LocaleController.getString("Language", R.string.Language));
divider.setVisibility(View.VISIBLE);
} }
} }
return view; return view;
} }
...@@ -872,7 +879,7 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter ...@@ -872,7 +879,7 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter
return 0; return 0;
} else if (i == numberSectionRow || i == settingsSectionRow || i == supportSectionRow || i == messagesSectionRow || i == photoDownloadSection || i == audioDownloadSection) { } else if (i == numberSectionRow || i == settingsSectionRow || i == supportSectionRow || i == messagesSectionRow || i == photoDownloadSection || i == audioDownloadSection) {
return 1; return 1;
} else if (i == textSizeRow) { } else if (i == textSizeRow || i == languageRow) {
return 5; return 5;
} else if (i == enableAnimationsRow || i == sendByEnterRow || i == photoDownloadChatRow || i == photoDownloadPrivateRow || i == audioDownloadChatRow || i == audioDownloadPrivateRow) { } else if (i == enableAnimationsRow || i == sendByEnterRow || i == photoDownloadChatRow || i == photoDownloadPrivateRow || i == audioDownloadChatRow || i == audioDownloadPrivateRow) {
return 3; return 3;
......
...@@ -386,7 +386,6 @@ public class SettingsBlockedUsers extends BaseFragment implements NotificationCe ...@@ -386,7 +386,6 @@ public class SettingsBlockedUsers extends BaseFragment implements NotificationCe
if (type == 0) { if (type == 0) {
if (view == null) { if (view == null) {
view = new ChatOrUserCell(mContext); view = new ChatOrUserCell(mContext);
((ChatOrUserCell)view).useBoldFont = true;
((ChatOrUserCell)view).usePadding = false; ((ChatOrUserCell)view).usePadding = false;
((ChatOrUserCell)view).useSeparator = true; ((ChatOrUserCell)view).useSeparator = true;
} }
......
...@@ -647,7 +647,7 @@ public class UserProfileActivity extends BaseFragment implements NotificationCen ...@@ -647,7 +647,7 @@ public class UserProfileActivity extends BaseFragment implements NotificationCen
if (user.status.expires <= 10000) { if (user.status.expires <= 10000) {
onlineText.setText(LocaleController.getString("Invisible", R.string.Invisible)); onlineText.setText(LocaleController.getString("Invisible", R.string.Invisible));
} else { } else {
onlineText.setText(Utilities.formatDateOnline(user.status.expires)); onlineText.setText(LocaleController.formatDateOnline(user.status.expires));
} }
} }
} }
......
...@@ -23,6 +23,7 @@ import android.widget.ImageView; ...@@ -23,6 +23,7 @@ import android.widget.ImageView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
import org.telegram.messenger.LocaleController;
import org.telegram.messenger.TLRPC; import org.telegram.messenger.TLRPC;
import org.telegram.messenger.FileLog; import org.telegram.messenger.FileLog;
import org.telegram.messenger.MessagesController; import org.telegram.messenger.MessagesController;
...@@ -305,7 +306,7 @@ public class NotificationView extends LinearLayout { ...@@ -305,7 +306,7 @@ public class NotificationView extends LinearLayout {
messageTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14); messageTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);
nameTextView.setPadding(0, Utilities.dp(2), 0, 0); nameTextView.setPadding(0, Utilities.dp(2), 0, 0);
messageTextView.setPadding(0, Utilities.dp(18), 0, 0); messageTextView.setPadding(0, Utilities.dp(18), 0, 0);
if (Utilities.isRTL) { if (LocaleController.isRTL) {
params1.setMargins(Utilities.dp(40), 0, height + Utilities.dp(6), 0); params1.setMargins(Utilities.dp(40), 0, height + Utilities.dp(6), 0);
} else { } else {
params1.setMargins(height + Utilities.dp(6), 0, Utilities.dp(40), 0); params1.setMargins(height + Utilities.dp(6), 0, Utilities.dp(40), 0);
...@@ -315,7 +316,7 @@ public class NotificationView extends LinearLayout { ...@@ -315,7 +316,7 @@ public class NotificationView extends LinearLayout {
messageTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 15); messageTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 15);
nameTextView.setPadding(0, Utilities.dp(4), 0, 0); nameTextView.setPadding(0, Utilities.dp(4), 0, 0);
messageTextView.setPadding(0, Utilities.dp(24), 0, 0); messageTextView.setPadding(0, Utilities.dp(24), 0, 0);
if (Utilities.isRTL) { if (LocaleController.isRTL) {
params1.setMargins(Utilities.dp(40), 0, height + Utilities.dp(8), 0); params1.setMargins(Utilities.dp(40), 0, height + Utilities.dp(8), 0);
} else { } else {
params1.setMargins(height + Utilities.dp(8), 0, Utilities.dp(40), 0); params1.setMargins(height + Utilities.dp(8), 0, Utilities.dp(40), 0);
......
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="#ffffff" />
<item android:state_focused="true" android:color="#ffffff" />
<item android:state_selected="true" android:color="#ffffff" />
<item android:color="#035ea8" />
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/btn_check_off_pressed_holo_light" />
<item android:state_focused="true" android:drawable="@drawable/btn_check_off_pressed_holo_light" />
<item android:state_checked="true" android:drawable="@drawable/btn_check_off_pressed_holo_light" />
<item android:drawable="@drawable/btn_check_off_holo_light" />
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/btn_check_on_pressed_holo_light" />
<item android:state_focused="true" android:drawable="@drawable/btn_check_on_pressed_holo_light" />
<item android:state_checked="true" android:drawable="@drawable/btn_check_on_pressed_holo_light" />
<item android:drawable="@drawable/btn_check_on_holo_light" />
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/compose_bubble_down" android:state_pressed="true" />
<item android:drawable="@drawable/compose_bubble_up" />
</selector>
\ No newline at end of file
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout
android:layout_width="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent" android:layout_width="fill_parent"
android:orientation="vertical"> android:layout_height="fill_parent"
android:orientation="vertical">
<FrameLayout android:layout_width="fill_parent" <FrameLayout
android:layout_height="wrap_content" android:layout_width="fill_parent"
android:id="@+id/top_layout" android:layout_height="wrap_content"
android:layout_gravity="top"> android:id="@+id/top_layout"
android:layout_gravity="top">
<FrameLayout android:layout_width="64dp" <FrameLayout
android:layout_height="64dp" android:layout_width="64dp"
android:layout_marginTop="12dp" android:layout_height="64dp"
android:layout_marginBottom="12dp" android:layout_marginTop="12dp"
android:layout_marginRight="16dp" android:layout_marginBottom="12dp"
android:layout_gravity="top|right"> android:layout_marginRight="16dp"
android:layout_gravity="top|right">
<org.telegram.ui.Views.BackupImageView <org.telegram.ui.Views.BackupImageView
android:id="@+id/settings_avatar_image" android:id="@+id/settings_avatar_image"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:layout_height="fill_parent"
android:src="@drawable/group_blue"/> android:src="@drawable/group_blue"/>
<ImageButton
android:id="@+id/settings_change_avatar_button"
android:background="@drawable/photo_spinner"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
<ImageButton android:id="@+id/settings_change_avatar_button"
android:background="@drawable/photo_spinner"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
</FrameLayout> </FrameLayout>
<EditText <EditText
...@@ -47,22 +52,24 @@ ...@@ -47,22 +52,24 @@
</FrameLayout> </FrameLayout>
<FrameLayout android:layout_width="match_parent" <FrameLayout
android:layout_height="match_parent"> android:layout_width="match_parent"
android:layout_height="match_parent">
<org.telegram.ui.Views.PinnedHeaderListView <org.telegram.ui.Views.PinnedHeaderListView
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:layout_height="fill_parent"
android:id="@+id/listView" android:id="@+id/listView"
android:clipToPadding="false" android:clipToPadding="false"
android:fadingEdge="none" android:fadingEdge="none"
android:fadingEdgeLength="0dp" android:fadingEdgeLength="0dp"
android:paddingLeft="16dp" android:paddingLeft="16dp"
android:paddingRight="16dp" android:paddingRight="16dp"
android:dividerHeight="0dp" android:dividerHeight="0dp"
android:divider="@null" android:divider="@null"
android:paddingBottom="16dp" android:paddingBottom="16dp"
android:scrollbars="none"/> android:scrollbars="none"/>
</FrameLayout> </FrameLayout>
</LinearLayout> </LinearLayout>
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
android:layout_marginRight="5dp" android:layout_marginRight="5dp"
android:minHeight="52dp" android:minHeight="52dp"
android:gravity="right|center_vertical" android:gravity="right|center_vertical"
android:maxLines="3" android:maxLines="2"
android:paddingTop="3dp" android:paddingTop="3dp"
android:layout_marginTop="0dp" android:layout_marginTop="0dp"
android:inputType="textFilter|textNoSuggestions|textMultiLine" android:inputType="textFilter|textNoSuggestions|textMultiLine"
...@@ -29,18 +29,6 @@ ...@@ -29,18 +29,6 @@
android:textCursorDrawable="@null" android:textCursorDrawable="@null"
android:textColor="#000000"/> android:textColor="#000000"/>
<TextView
android:textSize="16dp"
android:textColor="#a6a6a6"
android:gravity="center_vertical"
android:layout_gravity="top|left|center"
android:id="@+id/bubble_counter_text"
android:layout_width="wrap_content"
android:layout_height="52dp"
android:layout_marginLeft="16dp"
android:paddingBottom="4dp"
android:text="0/200"/>
</FrameLayout> </FrameLayout>
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" <FrameLayout
android:layout_width="match_parent" xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="66dp" android:layout_width="match_parent"
android:layout_gravity="top"> android:layout_height="66dp"
android:layout_gravity="top">
<org.telegram.ui.Views.BackupImageView <org.telegram.ui.Views.BackupImageView
android:layout_width="50dp" android:layout_width="50dp"
android:layout_height="50dp" android:layout_height="50dp"
android:id="@+id/messages_list_row_avatar" android:id="@+id/messages_list_row_avatar"
android:contentDescription="" android:contentDescription=""
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:layout_gravity="top|right"/> android:layout_gravity="top|right"/>
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:id="@+id/messages_list_row_name" android:id="@+id/messages_list_row_name"
android:textSize="18dp" android:textSize="18dp"
android:layout_marginRight="61dp" android:layout_marginRight="61dp"
android:ellipsize="end" android:ellipsize="end"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:textColor="#000000" android:textColor="#000000"
android:maxLines="1" android:maxLines="1"
android:layout_marginLeft="60dp" android:layout_marginLeft="60dp"
android:layout_gravity="top|right" android:layout_gravity="top|right"
android:gravity="right"/> android:gravity="right"/>
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:id="@+id/messages_list_row_message" android:id="@+id/messages_list_row_message"
android:textSize="15dp" android:textSize="15dp"
android:maxLines="1" android:maxLines="1"
android:ellipsize="end" android:ellipsize="end"
android:textColor="#808080" android:textColor="#808080"
android:layout_marginLeft="60dp" android:layout_marginLeft="60dp"
android:layout_marginTop="34dp" android:layout_marginTop="34dp"
android:layout_marginRight="61dp" android:layout_marginRight="61dp"
android:layout_gravity="top|right" android:layout_gravity="top|right"
android:gravity="right"/> android:gravity="right"/>
<ImageView android:layout_gravity="center_vertical|left" <ImageView
android:id="@+id/settings_row_check_button" android:layout_gravity="center_vertical|left"
android:layout_width="wrap_content" android:id="@+id/settings_row_check_button"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:layout_marginLeft="14dp" android:layout_height="wrap_content"
android:src="@drawable/btn_check_off_old"/> android:layout_marginLeft="14dp"
android:src="@drawable/btn_check_off_holo_light"/>
<View
android:background="@color/divider"
android:layout_width="fill_parent"
android:layout_height="1px"
android:layout_gravity="bottom"
android:id="@+id/settings_row_divider"
android:visibility="gone"/>
<View android:background="@color/divider"
android:layout_width="fill_parent"
android:layout_height="1px"
android:layout_gravity="bottom"
android:id="@+id/settings_row_divider"
android:visibility="gone"/>
</FrameLayout> </FrameLayout>
\ No newline at end of file
...@@ -5,14 +5,16 @@ ...@@ -5,14 +5,16 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<LinearLayout android:orientation="vertical" <LinearLayout
android:orientation="vertical"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:paddingLeft="16dp" android:paddingLeft="16dp"
android:paddingRight="16dp" android:paddingRight="16dp"
android:paddingTop="8dp"> android:paddingTop="8dp">
<include layout="@layout/settings_section_layout"/> <include
layout="@layout/settings_section_layout"/>
<EditText <EditText
android:textSize="19dp" android:textSize="19dp"
......
...@@ -22,7 +22,8 @@ ...@@ -22,7 +22,8 @@
android:layout_gravity="top"/> android:layout_gravity="top"/>
<TextView android:layout_width="match_parent" <TextView
android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:textColor="#808080" android:textColor="#808080"
android:gravity="center" android:gravity="center"
......
...@@ -3,18 +3,16 @@ ...@@ -3,18 +3,16 @@
<FrameLayout <FrameLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="41dp" android:layout_height="41dp"
android:paddingRight="9dp"
android:paddingTop="9dp" android:paddingTop="9dp"
xmlns:android="http://schemas.android.com/apk/res/android"> xmlns:android="http://schemas.android.com/apk/res/android">
<TextView android:layout_width="wrap_content" <TextView
android:layout_height="31dp" android:layout_width="wrap_content"
android:background="@drawable/chat_create_bubble_states" android:layout_height="26dp"
android:textSize="16dp" android:textSize="16dp"
android:paddingRight="8dp" android:gravity="center"
android:paddingLeft="8dp" android:textColor="#ff000000"
android:gravity="center" android:id="@+id/bubble_text_view"/>
android:textColor="@color/chat_create_bubble_text_states"
android:id="@+id/bubble_text_view"/>
</FrameLayout> </FrameLayout>
<FrameLayout <FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="fill_parent" android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_gravity="right|center_vertical" android:layout_gravity="right|center_vertical"
android:minHeight="60dp"> android:minHeight="60dp">
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
android:paddingRight="16dp" android:paddingRight="16dp"
android:paddingLeft="16dp" android:paddingLeft="16dp"
android:background="@drawable/bar_selector" android:background="@drawable/bar_selector"
android:minHeight="60dp"/> android:minHeight="60dp"
android:textAllCaps="true"/>
</FrameLayout> </FrameLayout>
\ No newline at end of file
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout
android:layout_width="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent" android:layout_width="fill_parent"
android:orientation="vertical"> android:layout_height="fill_parent"
android:orientation="vertical">
<FrameLayout android:layout_width="fill_parent" <FrameLayout
android:layout_height="wrap_content" android:layout_width="fill_parent"
android:id="@+id/top_layout" android:layout_height="wrap_content"
android:layout_gravity="top"> android:id="@+id/top_layout"
android:layout_gravity="top">
<FrameLayout android:layout_width="64dp" <FrameLayout
android:layout_height="64dp" android:layout_width="64dp"
android:layout_marginTop="12dp" android:layout_height="64dp"
android:layout_marginBottom="12dp" android:layout_marginTop="12dp"
android:layout_marginLeft="16dp" android:layout_marginBottom="12dp"
android:layout_gravity="top"> android:layout_marginLeft="16dp"
android:layout_gravity="top">
<org.telegram.ui.Views.BackupImageView <org.telegram.ui.Views.BackupImageView
android:id="@+id/settings_avatar_image" android:id="@+id/settings_avatar_image"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:layout_height="fill_parent"
android:src="@drawable/group_blue"/> android:src="@drawable/group_blue"/>
<ImageButton
android:id="@+id/settings_change_avatar_button"
android:background="@drawable/photo_spinner"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
<ImageButton android:id="@+id/settings_change_avatar_button"
android:background="@drawable/photo_spinner"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
</FrameLayout> </FrameLayout>
<EditText <EditText
...@@ -48,22 +53,24 @@ ...@@ -48,22 +53,24 @@
</FrameLayout> </FrameLayout>
<FrameLayout android:layout_width="match_parent" <FrameLayout
android:layout_height="match_parent"> android:layout_width="match_parent"
android:layout_height="match_parent">
<org.telegram.ui.Views.PinnedHeaderListView <org.telegram.ui.Views.PinnedHeaderListView
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:layout_height="fill_parent"
android:id="@+id/listView" android:id="@+id/listView"
android:clipToPadding="false" android:clipToPadding="false"
android:fadingEdge="none" android:fadingEdge="none"
android:fadingEdgeLength="0dp" android:fadingEdgeLength="0dp"
android:paddingLeft="16dp" android:paddingLeft="16dp"
android:paddingRight="16dp" android:paddingRight="16dp"
android:dividerHeight="0dp" android:dividerHeight="0dp"
android:divider="@null" android:divider="@null"
android:paddingBottom="16dp" android:paddingBottom="16dp"
android:scrollbars="none"/> android:scrollbars="none"/>
</FrameLayout> </FrameLayout>
</LinearLayout> </LinearLayout>
...@@ -14,14 +14,13 @@ ...@@ -14,14 +14,13 @@
android:textSize="16dp" android:textSize="16dp"
android:textColorHint="#a6a6a6" android:textColorHint="#a6a6a6"
android:id="@+id/bubble_input_text" android:id="@+id/bubble_input_text"
android:paddingRight="60dp"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="5dp" android:layout_marginLeft="5dp"
android:layout_marginRight="5dp" android:layout_marginRight="5dp"
android:minHeight="52dp" android:minHeight="52dp"
android:gravity="left|center_vertical" android:gravity="left|center_vertical"
android:maxLines="3" android:maxLines="2"
android:paddingTop="3dp" android:paddingTop="3dp"
android:layout_marginTop="0dp" android:layout_marginTop="0dp"
android:inputType="textFilter|textNoSuggestions|textMultiLine" android:inputType="textFilter|textNoSuggestions|textMultiLine"
...@@ -29,18 +28,6 @@ ...@@ -29,18 +28,6 @@
android:textCursorDrawable="@null" android:textCursorDrawable="@null"
android:textColor="#000000"/> android:textColor="#000000"/>
<TextView
android:textSize="16dp"
android:textColor="#a6a6a6"
android:gravity="center_vertical"
android:layout_gravity="top|right|center"
android:id="@+id/bubble_counter_text"
android:layout_width="wrap_content"
android:layout_height="52dp"
android:layout_marginRight="16dp"
android:paddingBottom="4dp"
android:text="0/200"/>
</FrameLayout> </FrameLayout>
<FrameLayout <FrameLayout
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" <FrameLayout
android:layout_width="match_parent" xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="66dp" android:layout_width="match_parent"
android:layout_gravity="top"> android:layout_height="66dp"
android:layout_gravity="top">
<org.telegram.ui.Views.BackupImageView <org.telegram.ui.Views.BackupImageView
android:layout_width="50dp" android:layout_width="50dp"
android:layout_height="50dp" android:layout_height="50dp"
android:id="@+id/messages_list_row_avatar" android:id="@+id/messages_list_row_avatar"
android:contentDescription="" android:contentDescription=""
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:layout_gravity="top"/> android:layout_gravity="top"/>
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:id="@+id/messages_list_row_name" android:id="@+id/messages_list_row_name"
android:textSize="18dp" android:textSize="18dp"
android:layout_marginLeft="61dp" android:layout_marginLeft="61dp"
android:ellipsize="end" android:ellipsize="end"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:maxLines="1" android:maxLines="1"
android:textColor="#000000" android:textColor="#000000"
android:layout_marginRight="60dp" android:layout_marginRight="60dp"
android:layout_gravity="top"/> android:layout_gravity="top"/>
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:id="@+id/messages_list_row_message" android:id="@+id/messages_list_row_message"
android:textSize="15dp" android:textSize="15dp"
android:maxLines="1" android:maxLines="1"
android:ellipsize="end" android:ellipsize="end"
android:textColor="#808080" android:textColor="#808080"
android:layout_marginLeft="61dp" android:layout_marginLeft="61dp"
android:layout_marginTop="34dp" android:layout_marginTop="34dp"
android:layout_marginRight="60dp" android:layout_marginRight="60dp"
android:layout_gravity="top"/> android:layout_gravity="top"/>
<ImageView android:layout_gravity="center_vertical|right" <ImageView
android:id="@+id/settings_row_check_button" android:layout_gravity="center_vertical|right"
android:layout_width="wrap_content" android:id="@+id/settings_row_check_button"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:layout_marginRight="14dp" android:layout_height="wrap_content"
android:src="@drawable/btn_check_off_old"/> android:layout_marginRight="14dp"
android:src="@drawable/btn_check_off_holo_light"/>
<View
android:background="@color/divider"
android:layout_width="fill_parent"
android:layout_height="1px"
android:layout_gravity="bottom"
android:id="@+id/settings_row_divider"
android:visibility="gone"/>
<View android:background="@color/divider"
android:layout_width="fill_parent"
android:layout_height="1px"
android:layout_gravity="bottom"
android:id="@+id/settings_row_divider"
android:visibility="gone"/>
</FrameLayout> </FrameLayout>
\ No newline at end of file
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/listView"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentBottom="true"
android:clipToPadding="false"
android:fadingEdge="none"
android:fadingEdgeLength="0dp"
android:paddingLeft="13dp"
android:paddingRight="13dp"
android:dividerHeight="0dp"
android:divider="@null"
android:scrollbars="none"/>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textColor="#808080"
android:gravity="center"
android:textSize="24dp"
android:id="@+id/searchEmptyView"
android:visibility="invisible"
android:layout_gravity="top"/>
</RelativeLayout>
\ No newline at end of file
...@@ -5,6 +5,9 @@ ...@@ -5,6 +5,9 @@
<resources> <resources>
<string name="AppName">Telegram</string> <string name="AppName">Telegram</string>
<string name="LanguangeName">العربية</string>
<string name="LanguangeNameInEnglish">Arabic</string>
<!--signin view--> <!--signin view-->
<string name="YourPhone">رقم هاتفك المحمول</string> <string name="YourPhone">رقم هاتفك المحمول</string>
<string name="StartText">يرجى التحقق من صحة رمز بلدك وإدخال رقم هاتفك المحمول</string> <string name="StartText">يرجى التحقق من صحة رمز بلدك وإدخال رقم هاتفك المحمول</string>
...@@ -107,6 +110,7 @@ ...@@ -107,6 +110,7 @@
<string name="DeleteThisGroup">حذف المجموعة</string> <string name="DeleteThisGroup">حذف المجموعة</string>
<string name="SlideToCancel">قم بالسحب للإلغاء</string> <string name="SlideToCancel">قم بالسحب للإلغاء</string>
<string name="SaveToDownloads">حفظ في الجهاز</string> <string name="SaveToDownloads">حفظ في الجهاز</string>
<string name="ApplyLocalizationFile">Apply localization file</string>
<!--notification--> <!--notification-->
<string name="EncryptedChatRequested">تم طلب محادثة سرية</string> <string name="EncryptedChatRequested">تم طلب محادثة سرية</string>
...@@ -250,6 +254,7 @@ ...@@ -250,6 +254,7 @@
<string name="Events">الأحداث</string> <string name="Events">الأحداث</string>
<string name="ContactJoined">اشترك صديق في تيليجرام</string> <string name="ContactJoined">اشترك صديق في تيليجرام</string>
<string name="Pebble">PEBBLE</string> <string name="Pebble">PEBBLE</string>
<string name="Language">اللغة</string>
<!--media view--> <!--media view-->
<string name="NoMedia">لا توجد وسائط بعد</string> <string name="NoMedia">لا توجد وسائط بعد</string>
...@@ -268,7 +273,7 @@ ...@@ -268,7 +273,7 @@
<!--photo gallery view--> <!--photo gallery view-->
<string name="ShowAllMedia">عرض كافة الوسائط</string> <string name="ShowAllMedia">عرض كافة الوسائط</string>
<string name="SaveToGallery">حفظ في الجهاز</string> <string name="SaveToGallery">حفظ في الجهاز</string>
<string name="Of">من</string> <string name="Of">%1$d من %2$d</string>
<string name="Gallery">الألبوم</string> <string name="Gallery">الألبوم</string>
<!--button titles--> <!--button titles-->
......
...@@ -5,6 +5,9 @@ ...@@ -5,6 +5,9 @@
<resources> <resources>
<string name="AppName">Telegram</string> <string name="AppName">Telegram</string>
<string name="LanguangeName">Deutsch</string>
<string name="LanguangeNameInEnglish">German</string>
<!--signin view--> <!--signin view-->
<string name="YourPhone">Dein Telefon</string> <string name="YourPhone">Dein Telefon</string>
<string name="StartText">Bitte bestätige deine Landesvorwahl und deine Telefonnummer.</string> <string name="StartText">Bitte bestätige deine Landesvorwahl und deine Telefonnummer.</string>
...@@ -107,6 +110,7 @@ ...@@ -107,6 +110,7 @@
<string name="DeleteThisGroup">Diese Gruppe löschen</string> <string name="DeleteThisGroup">Diese Gruppe löschen</string>
<string name="SlideToCancel">WISCHEN UM ABZUBRECHEN</string> <string name="SlideToCancel">WISCHEN UM ABZUBRECHEN</string>
<string name="SaveToDownloads">In Ordner Downloads speichern</string> <string name="SaveToDownloads">In Ordner Downloads speichern</string>
<string name="ApplyLocalizationFile">Apply localization file</string>
<!--notification--> <!--notification-->
<string name="EncryptedChatRequested">Geheimen Chat angefordert</string> <string name="EncryptedChatRequested">Geheimen Chat angefordert</string>
...@@ -250,6 +254,7 @@ ...@@ -250,6 +254,7 @@
<string name="Events">EREIGNISSE</string> <string name="Events">EREIGNISSE</string>
<string name="ContactJoined">Kontakt ist Telegram beigetreten</string> <string name="ContactJoined">Kontakt ist Telegram beigetreten</string>
<string name="Pebble">PEBBLE</string> <string name="Pebble">PEBBLE</string>
<string name="Language">Sprache</string>
<!--media view--> <!--media view-->
<string name="NoMedia">Noch keine geteilten Medien vorhanden</string> <string name="NoMedia">Noch keine geteilten Medien vorhanden</string>
...@@ -268,7 +273,7 @@ ...@@ -268,7 +273,7 @@
<!--photo gallery view--> <!--photo gallery view-->
<string name="ShowAllMedia">Zeige alle Medien</string> <string name="ShowAllMedia">Zeige alle Medien</string>
<string name="SaveToGallery">In der Galerie speichern</string> <string name="SaveToGallery">In der Galerie speichern</string>
<string name="Of">von</string> <string name="Of">%1$d von %2$d</string>
<string name="Gallery">Galerie</string> <string name="Gallery">Galerie</string>
<!--button titles--> <!--button titles-->
......
...@@ -5,6 +5,9 @@ ...@@ -5,6 +5,9 @@
<resources> <resources>
<string name="AppName">Telegram</string> <string name="AppName">Telegram</string>
<string name="LanguangeName">Español</string>
<string name="LanguangeNameInEnglish">Spanish</string>
<!--signin view--> <!--signin view-->
<string name="YourPhone">Tu teléfono</string> <string name="YourPhone">Tu teléfono</string>
<string name="StartText">Por favor, confirma tu código de país\ne introduce tu número.</string> <string name="StartText">Por favor, confirma tu código de país\ne introduce tu número.</string>
...@@ -107,6 +110,7 @@ ...@@ -107,6 +110,7 @@
<string name="DeleteThisGroup">Eliminar este grupo</string> <string name="DeleteThisGroup">Eliminar este grupo</string>
<string name="SlideToCancel">DESLIZA PARA CANCELAR</string> <string name="SlideToCancel">DESLIZA PARA CANCELAR</string>
<string name="SaveToDownloads">Guardar en descargas</string> <string name="SaveToDownloads">Guardar en descargas</string>
<string name="ApplyLocalizationFile">Apply localization file</string>
<!--notification--> <!--notification-->
<string name="EncryptedChatRequested">Chat secreto solicitado</string> <string name="EncryptedChatRequested">Chat secreto solicitado</string>
...@@ -250,6 +254,7 @@ ...@@ -250,6 +254,7 @@
<string name="Events">EVENTOS</string> <string name="Events">EVENTOS</string>
<string name="ContactJoined">Un contacto se unió a Telegram</string> <string name="ContactJoined">Un contacto se unió a Telegram</string>
<string name="Pebble">PEBBLE</string> <string name="Pebble">PEBBLE</string>
<string name="Language">Idioma</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>
...@@ -268,7 +273,7 @@ ...@@ -268,7 +273,7 @@
<!--photo gallery view--> <!--photo gallery view-->
<string name="ShowAllMedia">Mostrar todas las fotos y vídeos</string> <string name="ShowAllMedia">Mostrar todas las fotos y vídeos</string>
<string name="SaveToGallery">Guardar en galería</string> <string name="SaveToGallery">Guardar en galería</string>
<string name="Of">de</string> <string name="Of">%1$d de %2$d</string>
<string name="Gallery">Galería</string> <string name="Gallery">Galería</string>
<!--button titles--> <!--button titles-->
......
...@@ -5,6 +5,9 @@ ...@@ -5,6 +5,9 @@
<resources> <resources>
<string name="AppName">Telegram</string> <string name="AppName">Telegram</string>
<string name="LanguangeName">Nederlands</string>
<string name="LanguangeNameInEnglish">Dutch</string>
<!--signin view--> <!--signin view-->
<string name="YourPhone">Uw telefoon</string> <string name="YourPhone">Uw telefoon</string>
<string name="StartText">Bevestig uw landcode\nen voer uw telefoonnummer in.</string> <string name="StartText">Bevestig uw landcode\nen voer uw telefoonnummer in.</string>
...@@ -107,6 +110,7 @@ ...@@ -107,6 +110,7 @@
<string name="DeleteThisGroup">Deze groep verwijderen</string> <string name="DeleteThisGroup">Deze groep verwijderen</string>
<string name="SlideToCancel">SLEEP OM TE ANNULEREN</string> <string name="SlideToCancel">SLEEP OM TE ANNULEREN</string>
<string name="SaveToDownloads">Opslaan in downloads</string> <string name="SaveToDownloads">Opslaan in downloads</string>
<string name="ApplyLocalizationFile">Apply localization file</string>
<!--notification--> <!--notification-->
<string name="EncryptedChatRequested">Privégesprek aangevraagd</string> <string name="EncryptedChatRequested">Privégesprek aangevraagd</string>
...@@ -250,6 +254,7 @@ ...@@ -250,6 +254,7 @@
<string name="Events">GEBEURTENISSEN</string> <string name="Events">GEBEURTENISSEN</string>
<string name="ContactJoined">Contact lid geworden van Telegram</string> <string name="ContactJoined">Contact lid geworden van Telegram</string>
<string name="Pebble">PEBBLE</string> <string name="Pebble">PEBBLE</string>
<string name="Language">Taal</string>
<!--media view--> <!--media view-->
<string name="NoMedia">Nog geen media gedeeld</string> <string name="NoMedia">Nog geen media gedeeld</string>
...@@ -268,7 +273,7 @@ ...@@ -268,7 +273,7 @@
<!--photo gallery view--> <!--photo gallery view-->
<string name="ShowAllMedia">Alle media weergeven</string> <string name="ShowAllMedia">Alle media weergeven</string>
<string name="SaveToGallery">Opslaan in galerij</string> <string name="SaveToGallery">Opslaan in galerij</string>
<string name="Of">van</string> <string name="Of">%1$d van %1$d</string>
<string name="Gallery">Galerij</string> <string name="Gallery">Galerij</string>
<!--button titles--> <!--button titles-->
......
...@@ -5,6 +5,9 @@ ...@@ -5,6 +5,9 @@
<resources> <resources>
<string name="AppName">Telegram</string> <string name="AppName">Telegram</string>
<string name="LanguangeName">English</string>
<string name="LanguangeNameInEnglish">English</string>
<!--signin view--> <!--signin view-->
<string name="YourPhone">Your phone</string> <string name="YourPhone">Your phone</string>
<string name="StartText">Please confirm your country code\nand enter your phone number.</string> <string name="StartText">Please confirm your country code\nand enter your phone number.</string>
...@@ -107,6 +110,7 @@ ...@@ -107,6 +110,7 @@
<string name="DeleteThisGroup">Delete this group</string> <string name="DeleteThisGroup">Delete this group</string>
<string name="SlideToCancel">SLIDE TO CANCEL</string> <string name="SlideToCancel">SLIDE TO CANCEL</string>
<string name="SaveToDownloads">Save to downloads</string> <string name="SaveToDownloads">Save to downloads</string>
<string name="ApplyLocalizationFile">Apply localization file</string>
<!--notification--> <!--notification-->
<string name="EncryptedChatRequested">Secret chat requested</string> <string name="EncryptedChatRequested">Secret chat requested</string>
...@@ -250,6 +254,7 @@ ...@@ -250,6 +254,7 @@
<string name="Events">EVENTS</string> <string name="Events">EVENTS</string>
<string name="ContactJoined">Contact joined Telegram</string> <string name="ContactJoined">Contact joined Telegram</string>
<string name="Pebble">PEBBLE</string> <string name="Pebble">PEBBLE</string>
<string name="Language">Language</string>
<!--media view--> <!--media view-->
<string name="NoMedia">No shared media yet</string> <string name="NoMedia">No shared media yet</string>
...@@ -268,7 +273,7 @@ ...@@ -268,7 +273,7 @@
<!--photo gallery view--> <!--photo gallery view-->
<string name="ShowAllMedia">Show all media</string> <string name="ShowAllMedia">Show all media</string>
<string name="SaveToGallery">Save to gallery</string> <string name="SaveToGallery">Save to gallery</string>
<string name="Of">of</string> <string name="Of">%1$d of %2$d</string>
<string name="Gallery">Gallery</string> <string name="Gallery">Gallery</string>
<!--button titles--> <!--button titles-->
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment