Commit 02a20acc authored by DrKLO's avatar DrKLO

Possible crash fixes, fixed gif selection from new photo picker, added button...

Possible crash fixes, fixed gif selection from new photo picker, added button to select documents from external apps
parent 19ba20cd
...@@ -81,7 +81,7 @@ android { ...@@ -81,7 +81,7 @@ android {
defaultConfig { defaultConfig {
minSdkVersion 8 minSdkVersion 8
targetSdkVersion 19 targetSdkVersion 19
versionCode 253 versionCode 254
versionName "1.5.2" versionName "1.5.3"
} }
} }
...@@ -1536,7 +1536,7 @@ public class MediaController implements NotificationCenter.NotificationCenterDel ...@@ -1536,7 +1536,7 @@ public class MediaController implements NotificationCenter.NotificationCenterDel
return false; return false;
} }
public static String copyDocumentToCache(Uri uri) { public static String copyDocumentToCache(Uri uri, String ext) {
ParcelFileDescriptor parcelFD = null; ParcelFileDescriptor parcelFD = null;
FileInputStream input = null; FileInputStream input = null;
FileOutputStream output = null; FileOutputStream output = null;
...@@ -1545,7 +1545,7 @@ public class MediaController implements NotificationCenter.NotificationCenterDel ...@@ -1545,7 +1545,7 @@ public class MediaController implements NotificationCenter.NotificationCenterDel
UserConfig.lastLocalId--; UserConfig.lastLocalId--;
parcelFD = ApplicationLoader.applicationContext.getContentResolver().openFileDescriptor(uri, "r"); parcelFD = ApplicationLoader.applicationContext.getContentResolver().openFileDescriptor(uri, "r");
input = new FileInputStream(parcelFD.getFileDescriptor()); input = new FileInputStream(parcelFD.getFileDescriptor());
File f = new File(Utilities.getCacheDir(), String.format(Locale.US, "%d.gif", id)); File f = new File(Utilities.getCacheDir(), String.format(Locale.US, "%d.%s", id, ext));
output = new FileOutputStream(f); output = new FileOutputStream(f);
input.getChannel().transferTo(0, input.getChannel().size(), output.getChannel()); input.getChannel().transferTo(0, input.getChannel().size(), output.getChannel());
UserConfig.saveConfig(false); UserConfig.saveConfig(false);
......
...@@ -21,6 +21,7 @@ import android.content.pm.PackageInfo; ...@@ -21,6 +21,7 @@ import android.content.pm.PackageInfo;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.os.Handler; import android.os.Handler;
import android.os.PowerManager; import android.os.PowerManager;
...@@ -53,7 +54,7 @@ public class ApplicationLoader extends Application { ...@@ -53,7 +54,7 @@ public class ApplicationLoader extends Application {
private static final String PROPERTY_APP_VERSION = "appVersion"; private static final String PROPERTY_APP_VERSION = "appVersion";
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 Drawable cachedWallpaper = null;
public static volatile Context applicationContext = null; public static volatile Context applicationContext = null;
public static volatile Handler applicationHandler = null; public static volatile Handler applicationHandler = null;
......
...@@ -233,7 +233,7 @@ public class ChatBaseCell extends BaseCell { ...@@ -233,7 +233,7 @@ public class ChatBaseCell extends BaseCell {
newUser = MessagesController.getInstance().users.get(currentMessageObject.messageOwner.fwd_from_id); newUser = MessagesController.getInstance().users.get(currentMessageObject.messageOwner.fwd_from_id);
newNameString = null; newNameString = null;
if (drawForwardedName && currentMessageObject.messageOwner instanceof TLRPC.TL_messageForwarded) { if (newUser != null && drawForwardedName && currentMessageObject.messageOwner instanceof TLRPC.TL_messageForwarded) {
newNameString = Utilities.formatName(newUser.first_name, newUser.last_name); newNameString = Utilities.formatName(newUser.first_name, newUser.last_name);
} }
return currentForwardNameString == null && newNameString != null || currentForwardNameString != null && newNameString == null || currentForwardNameString != null && newNameString != null && !currentForwardNameString.equals(newNameString); return currentForwardNameString == null && newNameString != null || currentForwardNameString != null && newNameString == null || currentForwardNameString != null && newNameString != null && !currentForwardNameString.equals(newNameString);
......
...@@ -21,7 +21,7 @@ import android.content.res.Configuration; ...@@ -21,7 +21,7 @@ import android.content.res.Configuration;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.Rect; import android.graphics.Rect;
import android.graphics.drawable.AnimationDrawable; import android.graphics.drawable.AnimationDrawable;
import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable;
import android.media.MediaPlayer; import android.media.MediaPlayer;
import android.media.ThumbnailUtils; import android.media.ThumbnailUtils;
import android.net.Uri; import android.net.Uri;
...@@ -60,6 +60,7 @@ import android.widget.PopupWindow; ...@@ -60,6 +60,7 @@ import android.widget.PopupWindow;
import android.widget.ProgressBar; import android.widget.ProgressBar;
import android.widget.RelativeLayout; import android.widget.RelativeLayout;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import org.telegram.PhoneFormat.PhoneFormat; import org.telegram.PhoneFormat.PhoneFormat;
import org.telegram.messenger.LocaleController; import org.telegram.messenger.LocaleController;
...@@ -643,33 +644,41 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa ...@@ -643,33 +644,41 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
updateContactStatus(); updateContactStatus();
ImageView backgroundImage = (ImageView) fragmentView.findViewById(R.id.background_image);
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE); SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE);
int selectedBackground = preferences.getInt("selectedBackground", 1000001); int selectedBackground = preferences.getInt("selectedBackground", 1000001);
int selectedColor = preferences.getInt("selectedColor", 0); int selectedColor = preferences.getInt("selectedColor", 0);
if (selectedColor != 0) { if (selectedColor != 0) {
backgroundImage.setBackgroundColor(selectedColor); contentView.setBackgroundColor(selectedColor);
chatListView.setCacheColorHint(selectedColor); chatListView.setCacheColorHint(selectedColor);
} else { } else {
chatListView.setCacheColorHint(0); chatListView.setCacheColorHint(0);
if (selectedBackground == 1000001) { try {
backgroundImage.setImageResource(R.drawable.background_hd); if (selectedBackground == 1000001) {
} else { ((SizeNotifierRelativeLayout) contentView).setBackgroundImage(R.drawable.background_hd);
File toFile = new File(ApplicationLoader.applicationContext.getFilesDir(), "wallpaper.jpg"); } else {
if (toFile.exists()) { File toFile = new File(ApplicationLoader.applicationContext.getFilesDir(), "wallpaper.jpg");
if (ApplicationLoader.cachedWallpaper != null) { if (toFile.exists()) {
backgroundImage.setImageBitmap(ApplicationLoader.cachedWallpaper); if (ApplicationLoader.cachedWallpaper != null) {
} else { ((SizeNotifierRelativeLayout) contentView).setBackgroundImage(ApplicationLoader.cachedWallpaper);
backgroundImage.setImageURI(Uri.fromFile(toFile)); } else {
if (backgroundImage.getDrawable() instanceof BitmapDrawable) { Drawable drawable = Drawable.createFromPath(toFile.getAbsolutePath());
ApplicationLoader.cachedWallpaper = ((BitmapDrawable)backgroundImage.getDrawable()).getBitmap(); if (drawable != null) {
((SizeNotifierRelativeLayout) contentView).setBackgroundImage(drawable);
ApplicationLoader.cachedWallpaper = drawable;
} else {
contentView.setBackgroundColor(-2693905);
chatListView.setCacheColorHint(-2693905);
}
} }
isCustomTheme = true;
} else {
((SizeNotifierRelativeLayout) contentView).setBackgroundImage(R.drawable.background_hd);
} }
isCustomTheme = true;
} else {
backgroundImage.setImageResource(R.drawable.background_hd);
} }
} catch (Exception e) {
contentView.setBackgroundColor(-2693905);
chatListView.setCacheColorHint(-2693905);
FileLog.e("tmessages", e);
} }
} }
...@@ -979,6 +988,9 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa ...@@ -979,6 +988,9 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
bottomOverlayChat.setOnClickListener(new View.OnClickListener() { bottomOverlayChat.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
if (getParentActivity() == null) {
return;
}
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
builder.setMessage(LocaleController.getString("AreYouSure", R.string.AreYouSure)); builder.setMessage(LocaleController.getString("AreYouSure", R.string.AreYouSure));
builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); builder.setTitle(LocaleController.getString("AppName", R.string.AppName));
...@@ -1252,6 +1264,9 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa ...@@ -1252,6 +1264,9 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
timerButton.setOnClickListener(new View.OnClickListener() { timerButton.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
if (getParentActivity() == null) {
return;
}
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
builder.setTitle(LocaleController.getString("MessageLifetime", R.string.MessageLifetime)); builder.setTitle(LocaleController.getString("MessageLifetime", R.string.MessageLifetime));
builder.setItems(new CharSequence[]{ builder.setItems(new CharSequence[]{
...@@ -1625,6 +1640,7 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa ...@@ -1625,6 +1640,7 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
currentPicturePath = null; currentPicturePath = null;
} else if (requestCode == 1) { } else if (requestCode == 1) {
if (data == null || data.getData() == null) { if (data == null || data.getData() == null) {
showAttachmentError();
return; return;
} }
String tempPath = Utilities.getPath(data.getData()); String tempPath = Utilities.getPath(data.getData());
...@@ -1635,7 +1651,7 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa ...@@ -1635,7 +1651,7 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
} else if (tempPath == null) { } else if (tempPath == null) {
isGif = MediaController.isGif(data.getData()); isGif = MediaController.isGif(data.getData());
if (isGif) { if (isGif) {
tempPath = MediaController.copyDocumentToCache(data.getData()); tempPath = MediaController.copyDocumentToCache(data.getData(), "gif");
} }
} }
...@@ -1678,10 +1694,32 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa ...@@ -1678,10 +1694,32 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
currentPicturePath = null; currentPicturePath = null;
} }
processSendingVideo(videoPath); processSendingVideo(videoPath);
} else if (requestCode == 21) {
if (data == null || data.getData() == null) {
showAttachmentError();
return;
}
String tempPath = Utilities.getPath(data.getData());
if (tempPath == null) {
tempPath = MediaController.copyDocumentToCache(data.getData(), "file");
}
if (tempPath == null) {
showAttachmentError();
return;
}
processSendingDocument(tempPath);
} }
} }
} }
private void showAttachmentError() {
if (getParentActivity() == null) {
return;
}
Toast toast = Toast.makeText(getParentActivity(), LocaleController.getString("UnsupportedAttachment", R.string.UnsupportedAttachment), Toast.LENGTH_SHORT);
toast.show();
}
@Override @Override
public void saveSelfArgs(Bundle args) { public void saveSelfArgs(Bundle args) {
if (currentPicturePath != null) { if (currentPicturePath != null) {
...@@ -1745,19 +1783,31 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa ...@@ -1745,19 +1783,31 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
} else if (!urisCopy.isEmpty()) { } else if (!urisCopy.isEmpty()) {
uri = urisCopy.get(a); uri = urisCopy.get(a);
} }
final TLRPC.TL_photo photo = MessagesController.getInstance().generatePhotoSizes(path, uri);
Utilities.RunOnUIThread(new Runnable() { boolean isGif = false;
@Override if (path != null && path.endsWith(".gif")) {
public void run() { final String finalPath = path;
if (photo != null) { Utilities.RunOnUIThread(new Runnable() {
MessagesController.getInstance().sendMessage(photo, dialog_id); @Override
if (chatListView != null) { public void run() {
chatListView.setSelection(messages.size() + 1); processSendingDocument(finalPath);
}
});
} else {
final TLRPC.TL_photo photo = MessagesController.getInstance().generatePhotoSizes(path, uri);
Utilities.RunOnUIThread(new Runnable() {
@Override
public void run() {
if (photo != null) {
MessagesController.getInstance().sendMessage(photo, dialog_id);
if (chatListView != null) {
chatListView.setSelection(messages.size() + 1);
}
scrollToTopOnResume = true;
} }
scrollToTopOnResume = true;
} }
} });
}); }
} }
} }
}).start(); }).start();
...@@ -2560,6 +2610,9 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa ...@@ -2560,6 +2610,9 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
topPanel.setOnClickListener(new View.OnClickListener() { topPanel.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
if (getParentActivity() == null) {
return;
}
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
builder.setMessage(LocaleController.getString("AreYouSure", R.string.AreYouSure)); builder.setMessage(LocaleController.getString("AreYouSure", R.string.AreYouSure));
builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); builder.setTitle(LocaleController.getString("AppName", R.string.AppName));
...@@ -2807,6 +2860,7 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa ...@@ -2807,6 +2860,7 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
} }
private void fixLayout() { private void fixLayout() {
final int lastPos = chatListView.getLastVisiblePosition();
ViewTreeObserver obs = chatListView.getViewTreeObserver(); ViewTreeObserver obs = chatListView.getViewTreeObserver();
obs.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { obs.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override @Override
...@@ -2830,6 +2884,14 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa ...@@ -2830,6 +2884,14 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
params.height = height; params.height = height;
avatarImageView.setLayoutParams(params); avatarImageView.setLayoutParams(params);
} }
if (lastPos >= messages.size() - 1) {
chatListView.post(new Runnable() {
@Override
public void run() {
chatListView.setSelectionFromTop(messages.size() - 1, -100000 - chatListView.getPaddingTop());
}
});
}
return false; return false;
} }
}); });
...@@ -2859,7 +2921,7 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa ...@@ -2859,7 +2921,7 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
} }
public void createMenu(View v, boolean single) { public void createMenu(View v, boolean single) {
if (getParentActivity() == null || actionBarLayer.isActionModeShowed()) { if (actionBarLayer.isActionModeShowed()) {
return; return;
} }
...@@ -2884,6 +2946,9 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa ...@@ -2884,6 +2946,9 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
if (single || type < 2) { if (single || type < 2) {
if (type >= 0) { if (type >= 0) {
selectedObject = message; selectedObject = message;
if (getParentActivity() == null) {
return;
}
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
CharSequence[] items = null; CharSequence[] items = null;
...@@ -3022,6 +3087,9 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa ...@@ -3022,6 +3087,9 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
if (LocaleController.getInstance().applyLanguageFile(locFile)) { if (LocaleController.getInstance().applyLanguageFile(locFile)) {
presentFragment(new LanguageSelectActivity()); presentFragment(new LanguageSelectActivity());
} else { } else {
if (getParentActivity() == null) {
return;
}
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); builder.setTitle(LocaleController.getString("AppName", R.string.AppName));
builder.setMessage(LocaleController.getString("IncorrectLocalization", R.string.IncorrectLocalization)); builder.setMessage(LocaleController.getString("IncorrectLocalization", R.string.IncorrectLocalization));
...@@ -3174,6 +3242,17 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa ...@@ -3174,6 +3242,17 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
MessagesController.getInstance().sendMessage(document, dialog_id); MessagesController.getInstance().sendMessage(document, dialog_id);
} }
@Override
public void startDocumentSelectActivity() {
try {
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("*/*");
getParentActivity().startActivityForResult(photoPickerIntent, 21);
} catch (Exception e) {
FileLog.e("tmessages", e);
}
}
@Override @Override
public void didSelectDialog(MessagesActivity activity, long did) { public void didSelectDialog(MessagesActivity activity, long did) {
if (dialog_id != 0 && (forwaringMessage != null || !selectedMessagesIds.isEmpty())) { if (dialog_id != 0 && (forwaringMessage != null || !selectedMessagesIds.isEmpty())) {
...@@ -3253,9 +3332,12 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa ...@@ -3253,9 +3332,12 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
public boolean isGoogleMapsInstalled() { public boolean isGoogleMapsInstalled() {
try { try {
ApplicationInfo info = ApplicationLoader.applicationContext.getPackageManager().getApplicationInfo("com.google.android.apps.maps", 0 ); ApplicationInfo info = ApplicationLoader.applicationContext.getPackageManager().getApplicationInfo("com.google.android.apps.maps", 0);
return true; return true;
} catch(PackageManager.NameNotFoundException e) { } catch(PackageManager.NameNotFoundException e) {
if (getParentActivity() == null) {
return false;
}
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
builder.setMessage("Install Google Maps?"); builder.setMessage("Install Google Maps?");
builder.setCancelable(true); builder.setCancelable(true);
...@@ -3376,6 +3458,9 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa ...@@ -3376,6 +3458,9 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
} }
private void alertUserOpenError(MessageObject message) { private void alertUserOpenError(MessageObject message) {
if (getParentActivity() == null) {
return;
}
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); builder.setTitle(LocaleController.getString("AppName", R.string.AppName));
builder.setPositiveButton(R.string.OK, null); builder.setPositiveButton(R.string.OK, null);
...@@ -4105,6 +4190,9 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa ...@@ -4105,6 +4190,9 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
if (message.messageOwner.media.phone_number == null || message.messageOwner.media.phone_number.length() == 0) { if (message.messageOwner.media.phone_number == null || message.messageOwner.media.phone_number.length() == 0) {
return; return;
} }
if (getParentActivity() == null) {
return;
}
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
builder.setItems(new CharSequence[] {LocaleController.getString("Copy", R.string.Copy), LocaleController.getString("Call", R.string.Call)}, new DialogInterface.OnClickListener() { builder.setItems(new CharSequence[] {LocaleController.getString("Copy", R.string.Copy), LocaleController.getString("Call", R.string.Call)}, new DialogInterface.OnClickListener() {
@Override @Override
......
...@@ -172,6 +172,10 @@ public class ChatProfileActivity extends BaseFragment implements NotificationCen ...@@ -172,6 +172,10 @@ public class ChatProfileActivity extends BaseFragment implements NotificationCen
@Override @Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) { public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
if (i > membersSectionRow && i < addMemberRow) { if (i > membersSectionRow && i < addMemberRow) {
if (getParentActivity() == null) {
return false;
}
TLRPC.TL_chatParticipant user = info.participants.get(sortedUsers.get(i - membersSectionRow - 1)); TLRPC.TL_chatParticipant user = info.participants.get(sortedUsers.get(i - membersSectionRow - 1));
if (user.user_id == UserConfig.getClientUserId()) { if (user.user_id == UserConfig.getClientUserId()) {
return false; return false;
...@@ -247,6 +251,9 @@ public class ChatProfileActivity extends BaseFragment implements NotificationCen ...@@ -247,6 +251,9 @@ public class ChatProfileActivity extends BaseFragment implements NotificationCen
args.putInt("user_id", user_id); args.putInt("user_id", user_id);
presentFragment(new UserProfileActivity(args)); presentFragment(new UserProfileActivity(args));
} else if (i == settingsVibrateRow || i == settingsNotificationsRow) { } else if (i == settingsVibrateRow || i == settingsNotificationsRow) {
if (getParentActivity() == null) {
return;
}
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); builder.setTitle(LocaleController.getString("AppName", R.string.AppName));
builder.setItems(new CharSequence[] { builder.setItems(new CharSequence[] {
...@@ -604,6 +611,9 @@ public class ChatProfileActivity extends BaseFragment implements NotificationCen ...@@ -604,6 +611,9 @@ public class ChatProfileActivity extends BaseFragment implements NotificationCen
button2.setOnClickListener(new View.OnClickListener() { button2.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
if (getParentActivity() == null) {
return;
}
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
CharSequence[] items; CharSequence[] items;
int type; int type;
...@@ -758,6 +768,9 @@ public class ChatProfileActivity extends BaseFragment implements NotificationCen ...@@ -758,6 +768,9 @@ public class ChatProfileActivity extends BaseFragment implements NotificationCen
textView.setOnClickListener(new View.OnClickListener() { textView.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
if (getParentActivity() == null) {
return;
}
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
builder.setMessage(LocaleController.getString("AreYouSure", R.string.AreYouSure)); builder.setMessage(LocaleController.getString("AreYouSure", R.string.AreYouSure));
builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); builder.setTitle(LocaleController.getString("AppName", R.string.AppName));
......
...@@ -146,6 +146,7 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter ...@@ -146,6 +146,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);
listViewAdapter.notifyDataSetChanged();
if (!LocaleController.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 {
...@@ -171,6 +172,7 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter ...@@ -171,6 +172,7 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter
if (listView != null) { if (listView != null) {
listView.setPadding(Utilities.dp(16), listView.getPaddingTop(), Utilities.dp(16), listView.getPaddingBottom()); listView.setPadding(Utilities.dp(16), listView.getPaddingTop(), Utilities.dp(16), listView.getPaddingBottom());
listView.setAdapter(searchListViewAdapter); listView.setAdapter(searchListViewAdapter);
searchListViewAdapter.notifyDataSetChanged();
if(android.os.Build.VERSION.SDK_INT >= 11) { if(android.os.Build.VERSION.SDK_INT >= 11) {
listView.setFastScrollAlwaysVisible(false); listView.setFastScrollAlwaysVisible(false);
} }
...@@ -288,7 +290,7 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter ...@@ -288,7 +290,7 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter
if (!contact.phones.isEmpty()) { if (!contact.phones.isEmpty()) {
usePhone = contact.phones.get(0); usePhone = contact.phones.get(0);
} }
if (usePhone == null) { if (usePhone == null || getParentActivity() == null) {
return; return;
} }
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
...@@ -337,6 +339,9 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter ...@@ -337,6 +339,9 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter
private void didSelectResult(final TLRPC.User user, boolean useAlert) { private void didSelectResult(final TLRPC.User user, boolean useAlert) {
if (useAlert && selectAlertString != null) { if (useAlert && selectAlertString != null) {
if (getParentActivity() == null) {
return;
}
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); builder.setTitle(LocaleController.getString("AppName", R.string.AppName));
builder.setMessage(LocaleController.formatStringSimple(selectAlertString, Utilities.formatName(user.first_name, user.last_name))); builder.setMessage(LocaleController.formatStringSimple(selectAlertString, Utilities.formatName(user.first_name, user.last_name)));
......
...@@ -29,6 +29,8 @@ import org.telegram.messenger.LocaleController; ...@@ -29,6 +29,8 @@ 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.ActionBar.ActionBarLayer; import org.telegram.ui.Views.ActionBar.ActionBarLayer;
import org.telegram.ui.Views.ActionBar.ActionBarMenu;
import org.telegram.ui.Views.ActionBar.ActionBarMenuItem;
import org.telegram.ui.Views.BackupImageView; import org.telegram.ui.Views.BackupImageView;
import org.telegram.ui.Views.ActionBar.BaseFragment; import org.telegram.ui.Views.ActionBar.BaseFragment;
...@@ -44,6 +46,7 @@ public class DocumentSelectActivity extends BaseFragment { ...@@ -44,6 +46,7 @@ public class DocumentSelectActivity extends BaseFragment {
public static abstract interface DocumentSelectActivityDelegate { public static abstract interface DocumentSelectActivityDelegate {
public void didSelectFile(DocumentSelectActivity activity, String path, String name, String ext, long size); public void didSelectFile(DocumentSelectActivity activity, String path, String name, String ext, long size);
public void startDocumentSelectActivity();
} }
private ListView listView; private ListView listView;
...@@ -134,9 +137,16 @@ public class DocumentSelectActivity extends BaseFragment { ...@@ -134,9 +137,16 @@ public class DocumentSelectActivity extends BaseFragment {
public void onItemClick(int id) { public void onItemClick(int id) {
if (id == -1) { if (id == -1) {
finishFragment(); finishFragment();
} else if (id == 1) {
if (delegate != null) {
delegate.startDocumentSelectActivity();
}
finishFragment(false);
} }
} }
}); });
ActionBarMenu menu = actionBarLayer.createMenu();
ActionBarMenuItem item = menu.addItem(1, R.drawable.ic_ab_other);
fragmentView = inflater.inflate(R.layout.document_select_layout, container, false); fragmentView = inflater.inflate(R.layout.document_select_layout, container, false);
listAdapter = new ListAdapter(getParentActivity()); listAdapter = new ListAdapter(getParentActivity());
...@@ -290,7 +300,10 @@ public class DocumentSelectActivity extends BaseFragment { ...@@ -290,7 +300,10 @@ public class DocumentSelectActivity extends BaseFragment {
return true; return true;
} }
private void showErrorBox(String error){ private void showErrorBox(String error) {
if (getParentActivity() == null) {
return;
}
new AlertDialog.Builder(getParentActivity()) new AlertDialog.Builder(getParentActivity())
.setTitle(LocaleController.getString("AppName", R.string.AppName)) .setTitle(LocaleController.getString("AppName", R.string.AppName))
.setMessage(error) .setMessage(error)
......
...@@ -176,7 +176,9 @@ public class GroupCreateFinalActivity extends BaseFragment implements Notificati ...@@ -176,7 +176,9 @@ public class GroupCreateFinalActivity extends BaseFragment implements Notificati
button2.setOnClickListener(new View.OnClickListener() { button2.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
if (getParentActivity() == null) {
return;
}
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
CharSequence[] items; CharSequence[] items;
......
...@@ -143,7 +143,7 @@ public class LanguageSelectActivity extends BaseFragment { ...@@ -143,7 +143,7 @@ public class LanguageSelectActivity extends BaseFragment {
localeInfo = LocaleController.getInstance().sortedLanguages.get(i); localeInfo = LocaleController.getInstance().sortedLanguages.get(i);
} }
} }
if (localeInfo == null || localeInfo.pathToFile == null) { if (localeInfo == null || localeInfo.pathToFile == null || getParentActivity() == null) {
return false; return false;
} }
final LocaleController.LocaleInfo finalLocaleInfo = localeInfo; final LocaleController.LocaleInfo finalLocaleInfo = localeInfo;
......
...@@ -280,7 +280,7 @@ public class LaunchActivity extends ActionBarActivity implements NotificationCen ...@@ -280,7 +280,7 @@ public class LaunchActivity extends ActionBarActivity implements NotificationCen
} else if (tempPath == null) { } else if (tempPath == null) {
isGif = MediaController.isGif(uri); isGif = MediaController.isGif(uri);
if (isGif) { if (isGif) {
documentPath = MediaController.copyDocumentToCache(uri); documentPath = MediaController.copyDocumentToCache(uri, "gif");
} }
} }
if (!isGif || documentPath == null) { if (!isGif || documentPath == null) {
...@@ -325,7 +325,7 @@ public class LaunchActivity extends ActionBarActivity implements NotificationCen ...@@ -325,7 +325,7 @@ public class LaunchActivity extends ActionBarActivity implements NotificationCen
} else if (tempPath == null) { } else if (tempPath == null) {
isGif = MediaController.isGif(uri); isGif = MediaController.isGif(uri);
if (isGif) { if (isGif) {
tempPath = MediaController.copyDocumentToCache(uri); tempPath = MediaController.copyDocumentToCache(uri, "gif");
} }
} }
if (isGif && tempPath != null) { if (isGif && tempPath != null) {
......
...@@ -314,7 +314,11 @@ public class LocationActivity extends BaseFragment implements NotificationCenter ...@@ -314,7 +314,11 @@ public class LocationActivity extends BaseFragment implements NotificationCenter
public void onPause() { public void onPause() {
super.onPause(); super.onPause();
if (mapView != null) { if (mapView != null) {
mapView.onPause(); try {
mapView.onPause();
} catch (Exception e) {
FileLog.e("tmessages", e);
}
} }
} }
......
...@@ -18,6 +18,8 @@ import android.view.LayoutInflater; ...@@ -18,6 +18,8 @@ import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.animation.AccelerateDecelerateInterpolator; import android.view.animation.AccelerateDecelerateInterpolator;
import android.widget.FrameLayout;
import android.widget.ScrollView;
import android.widget.TextView; import android.widget.TextView;
import org.telegram.messenger.FileLog; import org.telegram.messenger.FileLog;
...@@ -81,6 +83,19 @@ public class LoginActivity extends BaseFragment implements SlideView.SlideViewDe ...@@ -81,6 +83,19 @@ public class LoginActivity extends BaseFragment implements SlideView.SlideViewDe
views[1] = (SlideView)fragmentView.findViewById(R.id.login_page2); views[1] = (SlideView)fragmentView.findViewById(R.id.login_page2);
views[2] = (SlideView)fragmentView.findViewById(R.id.login_page3); views[2] = (SlideView)fragmentView.findViewById(R.id.login_page3);
try {
if (views[0] == null || views[1] == null || views[2] == null) {
FrameLayout parent = (FrameLayout)((ScrollView) fragmentView).getChildAt(0);
for (int a = 0; a < views.length; a++) {
if (views[a] == null) {
views[a] = (SlideView)parent.getChildAt(a);
}
}
}
} catch (Exception e) {
FileLog.e("tmessages", e);
}
actionBarLayer.setTitle(views[0].getHeaderName()); actionBarLayer.setTitle(views[0].getHeaderName());
Bundle savedInstanceState = loadCurrentState(); Bundle savedInstanceState = loadCurrentState();
......
...@@ -212,15 +212,12 @@ public class LoginActivitySmsView extends SlideView implements NotificationCente ...@@ -212,15 +212,12 @@ public class LoginActivitySmsView extends SlideView implements NotificationCente
Utilities.RunOnUIThread(new Runnable() { Utilities.RunOnUIThread(new Runnable() {
@Override @Override
public void run() { public void run() {
nextPressed = false; if (delegate == null) {
if (delegate != null) { return;
delegate.needHideProgress();
} }
nextPressed = false;
if (error == null) { if (error == null) {
TLRPC.TL_auth_authorization res = (TLRPC.TL_auth_authorization)response; TLRPC.TL_auth_authorization res = (TLRPC.TL_auth_authorization)response;
if (delegate == null) {
return;
}
try { try {
synchronized(timerSync) { synchronized(timerSync) {
if (timeTimer != null) { if (timeTimer != null) {
...@@ -242,9 +239,7 @@ public class LoginActivitySmsView extends SlideView implements NotificationCente ...@@ -242,9 +239,7 @@ public class LoginActivitySmsView extends SlideView implements NotificationCente
MessagesStorage.getInstance().putUsersAndChats(users, null, true, true); MessagesStorage.getInstance().putUsersAndChats(users, null, true, true);
MessagesController.getInstance().users.put(res.user.id, res.user); MessagesController.getInstance().users.put(res.user.id, res.user);
ContactsController.getInstance().checkAppAccount(); ContactsController.getInstance().checkAppAccount();
if (delegate != null) { delegate.needFinishActivity();
delegate.needFinishActivity();
}
ConnectionsManager.getInstance().initPushConnection(); ConnectionsManager.getInstance().initPushConnection();
} else { } else {
if (error.text.contains("PHONE_NUMBER_UNOCCUPIED") && registered == null) { if (error.text.contains("PHONE_NUMBER_UNOCCUPIED") && registered == null) {
...@@ -302,18 +297,16 @@ public class LoginActivitySmsView extends SlideView implements NotificationCente ...@@ -302,18 +297,16 @@ public class LoginActivitySmsView extends SlideView implements NotificationCente
} }
}, 0, 1000); }, 0, 1000);
} }
if (delegate != null) { if (error.text.contains("PHONE_NUMBER_INVALID")) {
if (error.text.contains("PHONE_NUMBER_INVALID")) { delegate.needShowAlert(LocaleController.getString("InvalidPhoneNumber", R.string.InvalidPhoneNumber));
delegate.needShowAlert(LocaleController.getString("InvalidPhoneNumber", R.string.InvalidPhoneNumber)); } else if (error.text.contains("PHONE_CODE_EMPTY") || error.text.contains("PHONE_CODE_INVALID")) {
} else if (error.text.contains("PHONE_CODE_EMPTY") || error.text.contains("PHONE_CODE_INVALID")) { delegate.needShowAlert(LocaleController.getString("InvalidCode", R.string.InvalidCode));
delegate.needShowAlert(LocaleController.getString("InvalidCode", R.string.InvalidCode)); } else if (error.text.contains("PHONE_CODE_EXPIRED")) {
} else if (error.text.contains("PHONE_CODE_EXPIRED")) { delegate.needShowAlert(LocaleController.getString("CodeExpired", R.string.CodeExpired));
delegate.needShowAlert(LocaleController.getString("CodeExpired", R.string.CodeExpired)); } else if (error.text.startsWith("FLOOD_WAIT")) {
} else if (error.text.startsWith("FLOOD_WAIT")) { delegate.needShowAlert(LocaleController.getString("FloodWait", R.string.FloodWait));
delegate.needShowAlert(LocaleController.getString("FloodWait", R.string.FloodWait)); } else {
} else { delegate.needShowAlert(error.text);
delegate.needShowAlert(error.text);
}
} }
} }
} }
......
...@@ -297,7 +297,7 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter ...@@ -297,7 +297,7 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter
messagesListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { messagesListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override @Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) { public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
if (onlySelect || searching && searchWas) { if (onlySelect || searching && searchWas || getParentActivity() == null) {
return false; return false;
} }
TLRPC.TL_dialog dialog; TLRPC.TL_dialog dialog;
...@@ -455,6 +455,9 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter ...@@ -455,6 +455,9 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter
private void didSelectResult(final long dialog_id, boolean useAlert) { private void didSelectResult(final long dialog_id, boolean useAlert) {
if (useAlert && selectAlertString != null) { if (useAlert && selectAlertString != null) {
if (getParentActivity() == null) {
return;
}
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); builder.setTitle(LocaleController.getString("AppName", R.string.AppName));
int lower_part = (int)dialog_id; int lower_part = (int)dialog_id;
......
...@@ -312,13 +312,18 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat ...@@ -312,13 +312,18 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat
imagesArrLocations.clear(); imagesArrLocations.clear();
imagesArrLocationsSizes.clear(); imagesArrLocationsSizes.clear();
for (TLRPC.Photo photo : photos) { for (TLRPC.Photo photo : photos) {
if (photo instanceof TLRPC.TL_photoEmpty) { if (photo instanceof TLRPC.TL_photoEmpty || photo.sizes == null) {
continue; continue;
} }
TLRPC.PhotoSize sizeFull = PhotoObject.getClosestPhotoSizeWithSize(photo.sizes, 640, 640); TLRPC.PhotoSize sizeFull = PhotoObject.getClosestPhotoSizeWithSize(photo.sizes, 640, 640);
if (sizeFull != null) { if (sizeFull != null) {
if (currentFileLocation != null && sizeFull.location.local_id == currentFileLocation.local_id && sizeFull.location.volume_id == currentFileLocation.volume_id) { if (currentFileLocation != null) {
setToImage = imagesArrLocations.size(); for (TLRPC.PhotoSize size : photo.sizes) {
if (size.location.local_id == currentFileLocation.local_id && size.location.volume_id == currentFileLocation.volume_id) {
setToImage = imagesArrLocations.size();
break;
}
}
} }
imagesArrLocations.add(sizeFull.location); imagesArrLocations.add(sizeFull.location);
imagesArrLocationsSizes.add(sizeFull.size); imagesArrLocationsSizes.add(sizeFull.size);
...@@ -330,6 +335,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat ...@@ -330,6 +335,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat
setImageIndex(setToImage, true); setImageIndex(setToImage, true);
} else { } else {
imagesArrLocations.add(0, currentFileLocation); imagesArrLocations.add(0, currentFileLocation);
imagesArrLocationsSizes.add(0, 0);
setImageIndex(0, true); setImageIndex(0, true);
} }
if (fromCache) { if (fromCache) {
......
...@@ -240,6 +240,9 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter ...@@ -240,6 +240,9 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter
@Override @Override
public void onItemClick(AdapterView<?> adapterView, View view, final int i, long l) { public void onItemClick(AdapterView<?> adapterView, View view, final int i, long l) {
if (i == textSizeRow) { if (i == textSizeRow) {
if (getParentActivity() == null) {
return;
}
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
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), String.format("%d", 21), String.format("%d", 22), String.format("%d", 23), String.format("%d", 24)}, 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() {
...@@ -273,6 +276,9 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter ...@@ -273,6 +276,9 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter
} else if (i == backgroundRow) { } else if (i == backgroundRow) {
presentFragment(new SettingsWallpapersActivity()); presentFragment(new SettingsWallpapersActivity());
} else if (i == askQuestionRow) { } else if (i == askQuestionRow) {
if (getParentActivity() == null) {
return;
}
final TextView message = new TextView(getParentActivity()); final TextView message = new TextView(getParentActivity());
message.setText(Html.fromHtml(LocaleController.getString("AskAQuestionInfo", R.string.AskAQuestionInfo))); message.setText(Html.fromHtml(LocaleController.getString("AskAQuestionInfo", R.string.AskAQuestionInfo)));
message.setTextSize(18); message.setTextSize(18);
...@@ -303,6 +309,9 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter ...@@ -303,6 +309,9 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter
listView.invalidateViews(); listView.invalidateViews();
} }
} else if (i == terminateSessionsRow) { } else if (i == terminateSessionsRow) {
if (getParentActivity() == null) {
return;
}
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
builder.setMessage(LocaleController.getString("AreYouSure", R.string.AreYouSure)); builder.setMessage(LocaleController.getString("AreYouSure", R.string.AreYouSure));
builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); builder.setTitle(LocaleController.getString("AppName", R.string.AppName));
...@@ -312,16 +321,27 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter ...@@ -312,16 +321,27 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter
TLRPC.TL_auth_resetAuthorizations req = new TLRPC.TL_auth_resetAuthorizations(); TLRPC.TL_auth_resetAuthorizations req = new TLRPC.TL_auth_resetAuthorizations();
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(final TLObject response, final TLRPC.TL_error error) {
if (error == null && response instanceof TLRPC.TL_boolTrue) { Utilities.RunOnUIThread(new Runnable() {
Toast toast = Toast.makeText(getParentActivity(), R.string.TerminateAllSessions, Toast.LENGTH_SHORT); @Override
toast.show(); public void run() {
} else { if (getParentActivity() == null) {
Toast toast = Toast.makeText(getParentActivity(), R.string.UnknownError, Toast.LENGTH_SHORT); return;
toast.show(); }
} if (error == null && response instanceof TLRPC.TL_boolTrue) {
Toast toast = Toast.makeText(getParentActivity(), LocaleController.getString("TerminateAllSessions", R.string.TerminateAllSessions), Toast.LENGTH_SHORT);
toast.show();
} else {
Toast toast = Toast.makeText(getParentActivity(), LocaleController.getString("UnknownError", R.string.UnknownError), Toast.LENGTH_SHORT);
toast.show();
}
}
});
UserConfig.registeredForPush = false; UserConfig.registeredForPush = false;
UserConfig.registeredForInternalPush = false;
UserConfig.saveConfig(false);
MessagesController.getInstance().registerForPush(UserConfig.pushString); MessagesController.getInstance().registerForPush(UserConfig.pushString);
ConnectionsManager.getInstance().initPushConnection();
} }
}, null, true, RPCRequest.RPCRequestClassGeneric); }, null, true, RPCRequest.RPCRequestClassGeneric);
} }
...@@ -331,6 +351,9 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter ...@@ -331,6 +351,9 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter
} else if (i == languageRow) { } else if (i == languageRow) {
presentFragment(new LanguageSelectActivity()); presentFragment(new LanguageSelectActivity());
} else if (i == switchBackendButtonRow) { } else if (i == switchBackendButtonRow) {
if (getParentActivity() == null) {
return;
}
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
builder.setMessage(LocaleController.getString("AreYouSure", R.string.AreYouSure)); builder.setMessage(LocaleController.getString("AreYouSure", R.string.AreYouSure));
builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); builder.setTitle(LocaleController.getString("AppName", R.string.AppName));
...@@ -352,6 +375,9 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter ...@@ -352,6 +375,9 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter
} else if (i == contactsReimportRow) { } else if (i == contactsReimportRow) {
} else if (i == contactsSortRow) { } else if (i == contactsSortRow) {
if (getParentActivity() == null) {
return;
}
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
builder.setTitle(LocaleController.getString("SortBy", R.string.SortBy)); builder.setTitle(LocaleController.getString("SortBy", R.string.SortBy));
builder.setItems(new CharSequence[] { builder.setItems(new CharSequence[] {
...@@ -373,6 +399,9 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter ...@@ -373,6 +399,9 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter
builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null);
showAlertDialog(builder); showAlertDialog(builder);
} else if (i == photoDownloadChatRow || i == photoDownloadPrivateRow || i == audioDownloadChatRow || i == audioDownloadPrivateRow) { } else if (i == photoDownloadChatRow || i == photoDownloadPrivateRow || i == audioDownloadChatRow || i == audioDownloadPrivateRow) {
if (getParentActivity() == null) {
return;
}
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); builder.setTitle(LocaleController.getString("AppName", R.string.AppName));
builder.setItems(new CharSequence[] { builder.setItems(new CharSequence[] {
...@@ -667,6 +696,9 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter ...@@ -667,6 +696,9 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter
button2.setOnClickListener(new View.OnClickListener() { button2.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
if (getParentActivity() == null) {
return;
}
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
CharSequence[] items; CharSequence[] items;
...@@ -890,6 +922,9 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter ...@@ -890,6 +922,9 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter
textView.setOnClickListener(new View.OnClickListener() { textView.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
if (getParentActivity() == null) {
return;
}
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
builder.setMessage(LocaleController.getString("AreYouSure", R.string.AreYouSure)); builder.setMessage(LocaleController.getString("AreYouSure", R.string.AreYouSure));
builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); builder.setTitle(LocaleController.getString("AppName", R.string.AppName));
......
...@@ -120,7 +120,7 @@ public class SettingsBlockedUsers extends BaseFragment implements NotificationCe ...@@ -120,7 +120,7 @@ public class SettingsBlockedUsers extends BaseFragment implements NotificationCe
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override @Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) { public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
if (i >= blockedContacts.size()) { if (i >= blockedContacts.size() || getParentActivity() == null) {
return true; return true;
} }
selectedUserId = blockedContacts.get(i).user_id; selectedUserId = blockedContacts.get(i).user_id;
......
...@@ -217,7 +217,7 @@ public class SettingsNotificationsActivity extends BaseFragment { ...@@ -217,7 +217,7 @@ public class SettingsNotificationsActivity extends BaseFragment {
listView.invalidateViews(); listView.invalidateViews();
} }
if (getParentActivity() != null) { if (getParentActivity() != null) {
Toast toast = Toast.makeText(getParentActivity(), R.string.ResetNotificationsText, Toast.LENGTH_SHORT); Toast toast = Toast.makeText(getParentActivity(), LocaleController.getString("ResetNotificationsText", R.string.ResetNotificationsText), Toast.LENGTH_SHORT);
toast.show(); toast.show();
} }
} }
...@@ -270,6 +270,9 @@ public class SettingsNotificationsActivity extends BaseFragment { ...@@ -270,6 +270,9 @@ public class SettingsNotificationsActivity extends BaseFragment {
listView.invalidateViews(); listView.invalidateViews();
ApplicationLoader.startPushService(); ApplicationLoader.startPushService();
} else { } else {
if (getParentActivity() == null) {
return;
}
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
builder.setMessage(LocaleController.getString("NotificationsServiceDisableInfo", R.string.NotificationsServiceDisableInfo)); builder.setMessage(LocaleController.getString("NotificationsServiceDisableInfo", R.string.NotificationsServiceDisableInfo));
builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); builder.setTitle(LocaleController.getString("AppName", R.string.AppName));
......
...@@ -158,6 +158,9 @@ public class SettingsWallpapersActivity extends BaseFragment implements Notifica ...@@ -158,6 +158,9 @@ public class SettingsWallpapersActivity extends BaseFragment implements Notifica
@Override @Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
if (i == 0) { if (i == 0) {
if (getParentActivity() == null) {
return;
}
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
CharSequence[] items = new CharSequence[] {LocaleController.getString("FromCamera", R.string.FromCamera), LocaleController.getString("FromGalley", R.string.FromGalley), LocaleController.getString("Cancel", R.string.Cancel)}; CharSequence[] items = new CharSequence[] {LocaleController.getString("FromCamera", R.string.FromCamera), LocaleController.getString("FromGalley", R.string.FromGalley), LocaleController.getString("Cancel", R.string.Cancel)};
......
...@@ -181,7 +181,7 @@ public class UserProfileActivity extends BaseFragment implements NotificationCen ...@@ -181,7 +181,7 @@ public class UserProfileActivity extends BaseFragment implements NotificationCen
presentFragment(new ContactAddActivity(args)); presentFragment(new ContactAddActivity(args));
} else if (id == delete_contact) { } else if (id == delete_contact) {
final TLRPC.User user = MessagesController.getInstance().users.get(user_id); final TLRPC.User user = MessagesController.getInstance().users.get(user_id);
if (user == null) { if (user == null || getParentActivity() == null) {
return; return;
} }
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
...@@ -213,6 +213,9 @@ public class UserProfileActivity extends BaseFragment implements NotificationCen ...@@ -213,6 +213,9 @@ public class UserProfileActivity extends BaseFragment implements NotificationCen
startSecretButton.setOnClickListener(new View.OnClickListener() { startSecretButton.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
if (getParentActivity() == null) {
return;
}
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
builder.setMessage(LocaleController.getString("AreYouSure", R.string.AreYouSure)); builder.setMessage(LocaleController.getString("AreYouSure", R.string.AreYouSure));
builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); builder.setTitle(LocaleController.getString("AppName", R.string.AppName));
...@@ -239,6 +242,9 @@ public class UserProfileActivity extends BaseFragment implements NotificationCen ...@@ -239,6 +242,9 @@ public class UserProfileActivity extends BaseFragment implements NotificationCen
@Override @Override
public void onItemClick(AdapterView<?> adapterView, View view, final int i, long l) { public void onItemClick(AdapterView<?> adapterView, View view, final int i, long l) {
if (i == settingsVibrateRow || i == settingsNotificationsRow) { if (i == settingsVibrateRow || i == settingsNotificationsRow) {
if (getParentActivity() == null) {
return;
}
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); builder.setTitle(LocaleController.getString("AppName", R.string.AppName));
builder.setItems(new CharSequence[] { builder.setItems(new CharSequence[] {
...@@ -313,6 +319,9 @@ public class UserProfileActivity extends BaseFragment implements NotificationCen ...@@ -313,6 +319,9 @@ public class UserProfileActivity extends BaseFragment implements NotificationCen
args.putInt("chat_id", (int)(dialog_id >> 32)); args.putInt("chat_id", (int)(dialog_id >> 32));
presentFragment(new IdenticonActivity(args)); presentFragment(new IdenticonActivity(args));
} else if (i == settingsTimerRow) { } else if (i == settingsTimerRow) {
if (getParentActivity() == null) {
return;
}
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
builder.setTitle(LocaleController.getString("MessageLifetime", R.string.MessageLifetime)); builder.setTitle(LocaleController.getString("MessageLifetime", R.string.MessageLifetime));
builder.setItems(new CharSequence[]{ builder.setItems(new CharSequence[]{
...@@ -657,7 +666,7 @@ public class UserProfileActivity extends BaseFragment implements NotificationCen ...@@ -657,7 +666,7 @@ public class UserProfileActivity extends BaseFragment implements NotificationCen
view.setOnClickListener(new View.OnClickListener() { view.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
if (user.phone == null || user.phone.length() == 0) { if (user.phone == null || user.phone.length() == 0 || getParentActivity() == null) {
return; return;
} }
selectedPhone = user.phone; selectedPhone = user.phone;
......
...@@ -735,9 +735,21 @@ public class ActionBarActivity extends Activity { ...@@ -735,9 +735,21 @@ public class ActionBarActivity extends Activity {
onOpenAnimationEnd(false); onOpenAnimationEnd(false);
} }
containerView.invalidate(); containerView.invalidate();
ActionBarActivity.super.startActivityForResult(intent, requestCode); if (intent != null) {
try {
ActionBarActivity.super.startActivityForResult(intent, requestCode);
} catch (Exception e) {
FileLog.e("tmessages", e);
}
}
} else { } else {
super.startActivityForResult(intent, requestCode); if (intent != null) {
try {
super.startActivityForResult(intent, requestCode);
} catch (Exception e) {
FileLog.e("tmessages", e);
}
}
} }
} }
} }
...@@ -196,9 +196,9 @@ public class BaseFragment { ...@@ -196,9 +196,9 @@ public class BaseFragment {
} }
protected boolean showAlertDialog(AlertDialog.Builder builder) { protected void showAlertDialog(AlertDialog.Builder builder) {
if (parentActivity == null || parentActivity.checkTransitionAnimation() || parentActivity.animationInProgress || parentActivity.startedTracking) { if (parentActivity == null || parentActivity.checkTransitionAnimation() || parentActivity.animationInProgress || parentActivity.startedTracking) {
return false; return;
} }
try { try {
if (visibleDialog != null) { if (visibleDialog != null) {
...@@ -216,6 +216,5 @@ public class BaseFragment { ...@@ -216,6 +216,5 @@ public class BaseFragment {
visibleDialog = null; visibleDialog = null;
} }
}); });
return true;
} }
} }
...@@ -17,6 +17,8 @@ import android.view.ViewGroup; ...@@ -17,6 +17,8 @@ import android.view.ViewGroup;
import android.widget.*; import android.widget.*;
import android.widget.AbsListView.OnScrollListener; import android.widget.AbsListView.OnScrollListener;
import org.telegram.messenger.FileLog;
public class PinnedHeaderListView extends ListView implements OnScrollListener, View.OnTouchListener { public class PinnedHeaderListView extends ListView implements OnScrollListener, View.OnTouchListener {
private OnScrollListener mOnScrollListener; private OnScrollListener mOnScrollListener;
...@@ -69,6 +71,9 @@ public class PinnedHeaderListView extends ListView implements OnScrollListener, ...@@ -69,6 +71,9 @@ public class PinnedHeaderListView extends ListView implements OnScrollListener,
@Override @Override
public void setAdapter(ListAdapter adapter) { public void setAdapter(ListAdapter adapter) {
if (mAdapter == adapter) {
return;
}
mCurrentHeader = null; mCurrentHeader = null;
if (adapter instanceof PinnedSectionedHeaderAdapter) { if (adapter instanceof PinnedSectionedHeaderAdapter) {
mAdapter = (PinnedSectionedHeaderAdapter) adapter; mAdapter = (PinnedSectionedHeaderAdapter) adapter;
...@@ -80,14 +85,14 @@ public class PinnedHeaderListView extends ListView implements OnScrollListener, ...@@ -80,14 +85,14 @@ public class PinnedHeaderListView extends ListView implements OnScrollListener,
@Override @Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
if (mAdapter == null) {
return;
}
if (mOnScrollListener != null) { if (mOnScrollListener != null) {
mOnScrollListener.onScroll(view, firstVisibleItem, visibleItemCount, totalItemCount); mOnScrollListener.onScroll(view, firstVisibleItem, visibleItemCount, totalItemCount);
} }
if (mAdapter == null) {
return;
}
if (mAdapter == null || mAdapter.getCount() == 0 || !mShouldPin || (firstVisibleItem < getHeaderViewsCount())) { if (mAdapter.getCount() == 0 || !mShouldPin || (firstVisibleItem < getHeaderViewsCount())) {
mCurrentHeader = null; mCurrentHeader = null;
mHeaderOffset = 0.0f; mHeaderOffset = 0.0f;
for (int i = firstVisibleItem; i < firstVisibleItem + visibleItemCount; i++) { for (int i = firstVisibleItem; i < firstVisibleItem + visibleItemCount; i++) {
...@@ -131,9 +136,6 @@ public class PinnedHeaderListView extends ListView implements OnScrollListener, ...@@ -131,9 +136,6 @@ public class PinnedHeaderListView extends ListView implements OnScrollListener,
@Override @Override
public void onScrollStateChanged(AbsListView view, int scrollState) { public void onScrollStateChanged(AbsListView view, int scrollState) {
if (mAdapter == null) {
return;
}
if (mOnScrollListener != null) { if (mOnScrollListener != null) {
mOnScrollListener.onScrollStateChanged(view, scrollState); mOnScrollListener.onScrollStateChanged(view, scrollState);
} }
...@@ -173,7 +175,11 @@ public class PinnedHeaderListView extends ListView implements OnScrollListener, ...@@ -173,7 +175,11 @@ public class PinnedHeaderListView extends ListView implements OnScrollListener,
} else { } else {
heightSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); heightSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
} }
header.measure(widthSpec, heightSpec); try {
header.measure(widthSpec, heightSpec);
} catch (Exception e) {
FileLog.e("tmessages", e);
}
header.layout(0, 0, header.getMeasuredWidth(), header.getMeasuredHeight()); header.layout(0, 0, header.getMeasuredWidth(), header.getMeasuredHeight());
} }
} }
......
...@@ -9,8 +9,9 @@ ...@@ -9,8 +9,9 @@
package org.telegram.ui.Views; package org.telegram.ui.Views;
import android.content.Context; import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Rect; import android.graphics.Rect;
import android.util.Log; import android.graphics.drawable.Drawable;
import android.widget.RelativeLayout; import android.widget.RelativeLayout;
import org.telegram.messenger.Utilities; import org.telegram.messenger.Utilities;
...@@ -18,6 +19,7 @@ import org.telegram.messenger.Utilities; ...@@ -18,6 +19,7 @@ import org.telegram.messenger.Utilities;
public class SizeNotifierRelativeLayout extends RelativeLayout { public class SizeNotifierRelativeLayout extends RelativeLayout {
private Rect rect = new Rect(); private Rect rect = new Rect();
private Drawable backgroundDrawable;
public SizeNotifierRelativeLayoutDelegate delegate; public SizeNotifierRelativeLayoutDelegate delegate;
public abstract interface SizeNotifierRelativeLayoutDelegate { public abstract interface SizeNotifierRelativeLayoutDelegate {
...@@ -36,6 +38,14 @@ public class SizeNotifierRelativeLayout extends RelativeLayout { ...@@ -36,6 +38,14 @@ public class SizeNotifierRelativeLayout extends RelativeLayout {
super(context, attrs, defStyle); super(context, attrs, defStyle);
} }
public void setBackgroundImage(int resourceId) {
backgroundDrawable = getResources().getDrawable(resourceId);
}
public void setBackgroundImage(Drawable bitmap) {
backgroundDrawable = bitmap;
}
@Override @Override
protected void onLayout(boolean changed, int l, int t, int r, int b) { protected void onLayout(boolean changed, int l, int t, int r, int b) {
super.onLayout(changed, l, t, r, b); super.onLayout(changed, l, t, r, b);
...@@ -46,4 +56,19 @@ public class SizeNotifierRelativeLayout extends RelativeLayout { ...@@ -46,4 +56,19 @@ public class SizeNotifierRelativeLayout extends RelativeLayout {
delegate.onSizeChanged(keyboardHeight); delegate.onSizeChanged(keyboardHeight);
} }
} }
@Override
protected void onDraw(Canvas canvas) {
if (backgroundDrawable != null) {
float scaleX = (float)Utilities.displaySize.x / (float)backgroundDrawable.getIntrinsicWidth();
float scaleY = (float)Utilities.displaySize.y / (float)backgroundDrawable.getIntrinsicHeight();
float scale = scaleX < scaleY ? scaleY : scaleX;
int width = (int)Math.ceil(backgroundDrawable.getIntrinsicWidth() * scale);
int height = (int)Math.ceil(backgroundDrawable.getIntrinsicHeight() * scale);
int x = (Utilities.displaySize.x - width) / 2;
int y = (Utilities.displaySize.y - height) / 2;
backgroundDrawable.setBounds(x, y, x + width, y + height);
backgroundDrawable.draw(canvas);
}
}
} }
...@@ -4,12 +4,6 @@ ...@@ -4,12 +4,6 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:id="@+id/chat_layout"> android:id="@+id/chat_layout">
<ImageView
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:id="@+id/background_image"
android:scaleType="centerCrop"/>
<org.telegram.ui.Views.FrameLayoutFixed <org.telegram.ui.Views.FrameLayoutFixed
android:layout_height="fill_parent" android:layout_height="fill_parent"
android:layout_width="fill_parent" android:layout_width="fill_parent"
......
...@@ -113,6 +113,7 @@ ...@@ -113,6 +113,7 @@
<string name="SlideToCancel">قم بالسحب للإلغاء</string> <string name="SlideToCancel">قم بالسحب للإلغاء</string>
<string name="SaveToDownloads">حفظ في الجهاز</string> <string name="SaveToDownloads">حفظ في الجهاز</string>
<string name="ApplyLocalizationFile">تطبيق ملف التعريب</string> <string name="ApplyLocalizationFile">تطبيق ملف التعريب</string>
<string name="UnsupportedAttachment">Unsupported attachment</string>
<!--notification--> <!--notification-->
<string name="EncryptedChatRequested">تم طلب محادثة سرية</string> <string name="EncryptedChatRequested">تم طلب محادثة سرية</string>
......
...@@ -113,6 +113,7 @@ ...@@ -113,6 +113,7 @@
<string name="SlideToCancel">WISCHEN UM ABZUBRECHEN</string> <string name="SlideToCancel">WISCHEN UM ABZUBRECHEN</string>
<string name="SaveToDownloads">Im Ordner Downloads speichern</string> <string name="SaveToDownloads">Im Ordner Downloads speichern</string>
<string name="ApplyLocalizationFile">Standort-Datei benutzen</string> <string name="ApplyLocalizationFile">Standort-Datei benutzen</string>
<string name="UnsupportedAttachment">Unsupported attachment</string>
<!--notification--> <!--notification-->
<string name="EncryptedChatRequested">Geheimen Chat angefordert</string> <string name="EncryptedChatRequested">Geheimen Chat angefordert</string>
......
...@@ -113,6 +113,7 @@ ...@@ -113,6 +113,7 @@
<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">Aplicar archivo de traducción</string> <string name="ApplyLocalizationFile">Aplicar archivo de traducción</string>
<string name="UnsupportedAttachment">Unsupported attachment</string>
<!--notification--> <!--notification-->
<string name="EncryptedChatRequested">Chat secreto solicitado</string> <string name="EncryptedChatRequested">Chat secreto solicitado</string>
......
...@@ -113,6 +113,7 @@ ...@@ -113,6 +113,7 @@
<string name="SlideToCancel">TRASCINA PER ANNULLARE</string> <string name="SlideToCancel">TRASCINA PER ANNULLARE</string>
<string name="SaveToDownloads">Salva in download</string> <string name="SaveToDownloads">Salva in download</string>
<string name="ApplyLocalizationFile">Applica file di localizzazione</string> <string name="ApplyLocalizationFile">Applica file di localizzazione</string>
<string name="UnsupportedAttachment">Unsupported attachment</string>
<!--notification--> <!--notification-->
<string name="EncryptedChatRequested">Chat segreta richiesta</string> <string name="EncryptedChatRequested">Chat segreta richiesta</string>
......
...@@ -113,6 +113,7 @@ ...@@ -113,6 +113,7 @@
<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">Vertaling toepassen</string> <string name="ApplyLocalizationFile">Vertaling toepassen</string>
<string name="UnsupportedAttachment">Unsupported attachment</string>
<!--notification--> <!--notification-->
<string name="EncryptedChatRequested">Privégesprek aangevraagd</string> <string name="EncryptedChatRequested">Privégesprek aangevraagd</string>
......
...@@ -113,6 +113,7 @@ ...@@ -113,6 +113,7 @@
<string name="SlideToCancel">DESLIZE PARA CANCELAR</string> <string name="SlideToCancel">DESLIZE PARA CANCELAR</string>
<string name="SaveToDownloads">Salvar em downloads</string> <string name="SaveToDownloads">Salvar em downloads</string>
<string name="ApplyLocalizationFile">Aplicar arquivo de localização</string> <string name="ApplyLocalizationFile">Aplicar arquivo de localização</string>
<string name="UnsupportedAttachment">Unsupported attachment</string>
<!--notification--> <!--notification-->
<string name="EncryptedChatRequested">Conversa secreta solicitada</string> <string name="EncryptedChatRequested">Conversa secreta solicitada</string>
......
...@@ -113,6 +113,7 @@ ...@@ -113,6 +113,7 @@
<string name="SlideToCancel">DESLIZAR PARA CANCELAR</string> <string name="SlideToCancel">DESLIZAR PARA CANCELAR</string>
<string name="SaveToDownloads">Guardar nas transferências</string> <string name="SaveToDownloads">Guardar nas transferências</string>
<string name="ApplyLocalizationFile">Aplicar o ficheiro de localização</string> <string name="ApplyLocalizationFile">Aplicar o ficheiro de localização</string>
<string name="UnsupportedAttachment">Unsupported attachment</string>
<!--notification--> <!--notification-->
<string name="EncryptedChatRequested">Chat secreto pedido</string> <string name="EncryptedChatRequested">Chat secreto pedido</string>
......
...@@ -113,6 +113,7 @@ ...@@ -113,6 +113,7 @@
<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> <string name="ApplyLocalizationFile">Apply localization file</string>
<string name="UnsupportedAttachment">Unsupported attachment</string>
<!--notification--> <!--notification-->
<string name="EncryptedChatRequested">Secret chat requested</string> <string name="EncryptedChatRequested">Secret chat requested</string>
......
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