diff --git a/TMessagesProj/build.gradle b/TMessagesProj/build.gradle index aac3f3014..21e7db2be 100644 --- a/TMessagesProj/build.gradle +++ b/TMessagesProj/build.gradle @@ -81,7 +81,7 @@ android { defaultConfig { minSdkVersion 8 targetSdkVersion 19 - versionCode 245 + versionCode 247 versionName "1.5.0" } } diff --git a/TMessagesProj/config/debug/AndroidManifest.xml b/TMessagesProj/config/debug/AndroidManifest.xml index 015b83b61..8a10bfb38 100644 --- a/TMessagesProj/config/debug/AndroidManifest.xml +++ b/TMessagesProj/config/debug/AndroidManifest.xml @@ -1,6 +1,7 @@ + package="org.telegram.messenger" + android:installLocation="auto"> diff --git a/TMessagesProj/config/foss/AndroidManifest.xml b/TMessagesProj/config/foss/AndroidManifest.xml index a20d76eac..17b3445ef 100644 --- a/TMessagesProj/config/foss/AndroidManifest.xml +++ b/TMessagesProj/config/foss/AndroidManifest.xml @@ -1,6 +1,7 @@ + package="org.telegram.messenger" + android:installLocation="auto"> + package="org.telegram.messenger" + android:installLocation="auto"> diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/ConnectionsManager.java b/TMessagesProj/src/main/java/org/telegram/messenger/ConnectionsManager.java index 88454987c..b6d0af3f7 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/ConnectionsManager.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/ConnectionsManager.java @@ -148,15 +148,33 @@ public class ConnectionsManager implements Action.ActionDelegate, TcpConnection. if (datacenters != null) { MessagesController.getInstance().updateTimerProc(); Datacenter datacenter = datacenterWithId(currentDatacenterId); - if (datacenter != null && datacenter.authKey != null) { - if (lastPingTime < System.currentTimeMillis() - 19000) { - lastPingTime = System.currentTimeMillis(); - generatePing(); + if (datacenter != null) { + if (datacenter.authKey != null) { + if (lastPingTime < System.currentTimeMillis() - 19000) { + lastPingTime = System.currentTimeMillis(); + generatePing(); + } + if (!updatingDcSettings && lastDcUpdateTime < (int) (System.currentTimeMillis() / 1000) - DC_UPDATE_TIME) { + updateDcSettings(0); + } + processRequestQueue(0, 0); + } else { + boolean notFound = true; + for (Action actor : actionQueue) { + if (actor instanceof HandshakeAction) { + HandshakeAction eactor = (HandshakeAction)actor; + if (eactor.datacenter.datacenterId == datacenter.datacenterId) { + notFound = false; + break; + } + } + } + if (notFound) { + HandshakeAction actor = new HandshakeAction(datacenter); + actor.delegate = ConnectionsManager.this; + dequeueActor(actor, true); + } } - if (!updatingDcSettings && lastDcUpdateTime < (int)(System.currentTimeMillis() / 1000) - DC_UPDATE_TIME) { - updateDcSettings(0); - } - processRequestQueue(0, 0); } } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java index 1a2b32b63..180bb2011 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java @@ -11,6 +11,9 @@ package org.telegram.messenger; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Build; +import android.provider.MediaStore; + +import org.telegram.ui.ApplicationLoader; import java.io.RandomAccessFile; import java.net.URL; @@ -158,14 +161,24 @@ public class FileLoadOperation { boolean ignoreCache = false; boolean onlyCache = false; boolean isLocalFile = false; + Long mediaId = null; String fileNameFinal = null; String fileNameTemp = null; String fileNameIv = null; if (httpUrl != null) { if (!httpUrl.startsWith("http")) { + if (httpUrl.startsWith("thumb://")) { + int idx = httpUrl.indexOf(":", 8); + if (idx >= 0) { + String media = httpUrl.substring(8, idx); + mediaId = Long.parseLong(media); + fileNameFinal = httpUrl.substring(idx + 1); + } + } else { + fileNameFinal = httpUrl; + } onlyCache = true; isLocalFile = true; - fileNameFinal = httpUrl; } else { fileNameFinal = Utilities.MD5(httpUrl); fileNameTemp = fileNameFinal + "_temp.jpg"; @@ -197,6 +210,7 @@ public class FileLoadOperation { cacheFileFinal = new File(Utilities.getCacheDir(), fileNameFinal); } final boolean dontDelete = isLocalFile; + final Long mediaIdFinal = mediaId; if ((exist = cacheFileFinal.exists()) && !ignoreCache) { FileLoader.cacheOutQueue.postRunnable(new Runnable() { @Override @@ -206,15 +220,18 @@ public class FileLoadOperation { if (FileLoader.getInstance().runtimeHack != null) { delay = 60; } - if (FileLoader.lastCacheOutTime != 0 && FileLoader.lastCacheOutTime > System.currentTimeMillis() - delay) { + if (mediaIdFinal != null) { + delay = 0; + } + if (delay != 0 && FileLoader.lastCacheOutTime != 0 && FileLoader.lastCacheOutTime > System.currentTimeMillis() - delay) { Thread.sleep(delay); } FileLoader.lastCacheOutTime = System.currentTimeMillis(); if (state != 1) { return; } + if (needBitmapCreate) { - FileInputStream is = new FileInputStream(cacheFileFinal); BitmapFactory.Options opts = new BitmapFactory.Options(); float w_filter = 0; @@ -223,9 +240,14 @@ public class FileLoadOperation { String args[] = filter.split("_"); w_filter = Float.parseFloat(args[0]) * Utilities.density; h_filter = Float.parseFloat(args[1]) * Utilities.density; - opts.inJustDecodeBounds = true; - BitmapFactory.decodeFile(cacheFileFinal.getAbsolutePath(), opts); + + if (mediaIdFinal != null) { + MediaStore.Images.Thumbnails.getThumbnail(ApplicationLoader.applicationContext.getContentResolver(), mediaIdFinal, MediaStore.Images.Thumbnails.MINI_KIND, opts); + } else { + BitmapFactory.decodeFile(cacheFileFinal.getAbsolutePath(), opts); + } + float photoW = opts.outWidth; float photoH = opts.outHeight; float scaleFactor = Math.max(photoW / w_filter, photoH / h_filter); @@ -242,8 +264,14 @@ public class FileLoadOperation { opts.inPreferredConfig = Bitmap.Config.RGB_565; } opts.inDither = false; - image = BitmapFactory.decodeStream(is, null, opts); - is.close(); + if (mediaIdFinal != null) { + image = MediaStore.Images.Thumbnails.getThumbnail(ApplicationLoader.applicationContext.getContentResolver(), mediaIdFinal, MediaStore.Images.Thumbnails.MINI_KIND, opts); + } + if (image == null) { + FileInputStream is = new FileInputStream(cacheFileFinal); + image = BitmapFactory.decodeStream(is, null, opts); + is.close(); + } if (image == null) { if (!dontDelete && (cacheFileFinal.length() == 0 || filter == null)) { cacheFileFinal.delete(); diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/TcpConnection.java b/TMessagesProj/src/main/java/org/telegram/messenger/TcpConnection.java index 660354c77..2bc8153c5 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/TcpConnection.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/TcpConnection.java @@ -81,30 +81,6 @@ public class TcpConnection extends ConnectionContext { public void connect() { if (!ConnectionsManager.isNetworkOnline()) { - synchronized (timerSync) { - reconnectTimer = new Timer(); - reconnectTimer.schedule(new TimerTask() { - @Override - public void run() { - selector.scheduleTask(new Runnable() { - @Override - public void run() { - try { - synchronized (timerSync) { - if (reconnectTimer != null) { - reconnectTimer.cancel(); - reconnectTimer = null; - } - } - } catch (Exception e2) { - FileLog.e("tmessages", e2); - } - connect(); - } - }); - } - }, 500); - } if (delegate != null) { final TcpConnectionDelegate finalDelegate = delegate; Utilities.stageQueue.postRunnable(new Runnable() { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java index 8d0f4aa10..54f42fd61 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java @@ -418,6 +418,7 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { actionBarLayer.setDisplayHomeAsUpEnabled(true, R.drawable.ic_ab_back); + actionBarLayer.setBackOverlay(R.layout.updating_state_layout); actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { @Override public void onItemClick(int id) { @@ -551,6 +552,7 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa } } }); + updateSubtitle(); if (currentEncryptedChat != null) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileActivity.java index 767afa2a8..e3d3faf0e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileActivity.java @@ -145,6 +145,7 @@ public class ChatProfileActivity extends BaseFragment implements NotificationCen public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { actionBarLayer.setDisplayHomeAsUpEnabled(true, R.drawable.ic_ab_back); + actionBarLayer.setBackOverlay(R.layout.updating_state_layout); actionBarLayer.setTitle(LocaleController.getString("GroupInfo", R.string.GroupInfo)); actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { @Override @@ -331,6 +332,7 @@ public class ChatProfileActivity extends BaseFragment implements NotificationCen @Override public void restoreSelfArgs(Bundle args) { + MessagesController.getInstance().loadChatInfo(chat_id); if (avatarUpdater != null) { avatarUpdater.currentPicturePath = args.getString("path"); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileChangeNameActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileChangeNameActivity.java index f3532402d..1902d8fb2 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileChangeNameActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileChangeNameActivity.java @@ -67,9 +67,9 @@ public class ChatProfileChangeNameActivity extends BaseFragment { } }); - cancelButton.setText(LocaleController.getString("Cancel", R.string.Cancel)); + cancelButton.setText(LocaleController.getString("Cancel", R.string.Cancel).toUpperCase()); TextView textView = (TextView)doneButton.findViewById(R.id.done_button_text); - textView.setText(LocaleController.getString("Done", R.string.Done)); + textView.setText(LocaleController.getString("Done", R.string.Done).toUpperCase()); fragmentView = inflater.inflate(R.layout.chat_profile_change_name_layout, container, false); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ContactAddActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ContactAddActivity.java index 5c8622281..552e5f889 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ContactAddActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ContactAddActivity.java @@ -87,9 +87,9 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent } }); - cancelButton.setText(LocaleController.getString("Cancel", R.string.Cancel)); + cancelButton.setText(LocaleController.getString("Cancel", R.string.Cancel).toUpperCase()); TextView textView = (TextView)doneButton.findViewById(R.id.done_button_text); - textView.setText(LocaleController.getString("Done", R.string.Done)); + textView.setText(LocaleController.getString("Done", R.string.Done).toUpperCase()); fragmentView = inflater.inflate(R.layout.contact_add_layout, container, false); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ContactsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ContactsActivity.java index 7234524ab..b3f8ee191 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ContactsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ContactsActivity.java @@ -116,6 +116,7 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { actionBarLayer.setDisplayHomeAsUpEnabled(true, R.drawable.ic_ab_back); + actionBarLayer.setBackOverlay(R.layout.updating_state_layout); if (destroyAfterSelect) { actionBarLayer.setTitle(LocaleController.getString("SelectContact", R.string.SelectContact)); } else { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/CountrySelectActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/CountrySelectActivity.java index ed7cd03d5..405a64e4a 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/CountrySelectActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/CountrySelectActivity.java @@ -119,6 +119,7 @@ public class CountrySelectActivity extends BaseFragment { public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { actionBarLayer.setDisplayHomeAsUpEnabled(true, R.drawable.ic_ab_back); + actionBarLayer.setBackOverlay(R.layout.updating_state_layout); actionBarLayer.setTitle(LocaleController.getString("ChooseCountry", R.string.ChooseCountry)); actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/DocumentSelectActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/DocumentSelectActivity.java index 508b98ba7..b59867c12 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/DocumentSelectActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/DocumentSelectActivity.java @@ -127,6 +127,7 @@ public class DocumentSelectActivity extends BaseFragment { if (fragmentView == null) { actionBarLayer.setDisplayHomeAsUpEnabled(true, R.drawable.ic_ab_back); + actionBarLayer.setBackOverlay(R.layout.updating_state_layout); actionBarLayer.setTitle(LocaleController.getString("SelectFile", R.string.SelectFile)); actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { @Override diff --git a/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java index 183be989e..8e3b54196 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java @@ -124,6 +124,7 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { actionBarLayer.setDisplayHomeAsUpEnabled(true, R.drawable.ic_ab_back); + actionBarLayer.setBackOverlay(R.layout.updating_state_layout); actionBarLayer.setTitle(LocaleController.getString("NewGroup", R.string.NewGroup)); actionBarLayer.setSubtitle(String.format("%d/200 %s", selectedContacts.size(), LocaleController.getString("Members", R.string.Members))); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateFinalActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateFinalActivity.java index 3a4f6500d..d5386df27 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateFinalActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateFinalActivity.java @@ -119,6 +119,7 @@ public class GroupCreateFinalActivity extends BaseFragment implements Notificati public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { actionBarLayer.setDisplayHomeAsUpEnabled(true, R.drawable.ic_ab_back); + actionBarLayer.setBackOverlay(R.layout.updating_state_layout); actionBarLayer.setTitle(LocaleController.getString("NewGroup", R.string.NewGroup)); actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { @@ -167,7 +168,7 @@ public class GroupCreateFinalActivity extends BaseFragment implements Notificati View doneItem = menu.addItemResource(done_button, R.layout.group_create_done_layout); TextView doneTextView = (TextView)doneItem.findViewById(R.id.done_button); - doneTextView.setText(LocaleController.getString("Done", R.string.Done)); + doneTextView.setText(LocaleController.getString("Done", R.string.Done).toUpperCase()); fragmentView = inflater.inflate(R.layout.group_create_final_layout, container, false); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/IdenticonActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/IdenticonActivity.java index 2222804cc..f3010c792 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/IdenticonActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/IdenticonActivity.java @@ -46,6 +46,7 @@ public class IdenticonActivity extends BaseFragment { public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { actionBarLayer.setDisplayHomeAsUpEnabled(true, R.drawable.ic_ab_back); + actionBarLayer.setBackOverlay(R.layout.updating_state_layout); actionBarLayer.setTitle(LocaleController.getString("EncryptionKey", R.string.EncryptionKey)); actionBarLayer.setTitleIcon(R.drawable.ic_lock_white, Utilities.dp(4)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/IntroActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/IntroActivity.java index 33fb8927f..b8fa101be 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/IntroActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/IntroActivity.java @@ -17,6 +17,7 @@ import android.support.v4.view.ViewPager; import android.text.Html; import android.view.View; import android.view.ViewGroup; +import android.view.Window; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.ImageView; @@ -42,6 +43,7 @@ public class IntroActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { setTheme(R.style.Theme_TMessages); super.onCreate(savedInstanceState); + requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.intro_layout); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LanguageSelectActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LanguageSelectActivity.java index 4bc7578ca..ffa06d574 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LanguageSelectActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LanguageSelectActivity.java @@ -49,6 +49,7 @@ public class LanguageSelectActivity extends BaseFragment { public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { actionBarLayer.setDisplayHomeAsUpEnabled(true, R.drawable.ic_ab_back); + actionBarLayer.setBackOverlay(R.layout.updating_state_layout); actionBarLayer.setTitle(LocaleController.getString("Language", R.string.Language)); actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java index 55cc58220..465a097e1 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java @@ -59,10 +59,6 @@ public class LaunchActivity extends ActionBarActivity implements NotificationCen private ArrayList documentsPathArray = null; private ArrayList contactsToSend = null; private int currentConnectionState; - private View statusView; - private View backStatusButton; - private View statusBackground; - private TextView statusText; @Override protected void onCreate(Bundle savedInstanceState) { @@ -104,19 +100,6 @@ public class LaunchActivity extends ActionBarActivity implements NotificationCen NotificationCenter.getInstance().addObserver(this, 702); NotificationCenter.getInstance().addObserver(this, 703); - statusView = getLayoutInflater().inflate(R.layout.updating_state_layout, null); - statusBackground = statusView.findViewById(R.id.back_button_background); - backStatusButton = statusView.findViewById(R.id.back_button); - statusText = (TextView)statusView.findViewById(R.id.status_text); - statusBackground.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (fragmentsStack.size() > 1) { - onBackPressed(); - } - } - }); - if (fragmentsStack.isEmpty()) { if (!UserConfig.clientActivated) { addFragmentToStack(new LoginActivity()); @@ -186,7 +169,7 @@ public class LaunchActivity extends ActionBarActivity implements NotificationCen imagesPathArray = null; documentsPathArray = null; - if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) == 0) { + if ((intent.getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) == 0) { if (intent != null && intent.getAction() != null && !restore) { if (Intent.ACTION_SEND.equals(intent.getAction())) { @@ -407,10 +390,10 @@ public class LaunchActivity extends ActionBarActivity implements NotificationCen } } - if (getIntent().getAction() != null && getIntent().getAction().startsWith("com.tmessages.openchat") && !restore) { - int chatId = getIntent().getIntExtra("chatId", 0); - int userId = getIntent().getIntExtra("userId", 0); - int encId = getIntent().getIntExtra("encId", 0); + if (intent.getAction() != null && intent.getAction().startsWith("com.tmessages.openchat") && !restore) { + int chatId = intent.getIntExtra("chatId", 0); + int userId = intent.getIntExtra("userId", 0); + int encId = intent.getIntExtra("encId", 0); if (chatId != 0) { TLRPC.Chat chat = MessagesController.getInstance().chats.get(chatId); if (chat != null) { @@ -477,7 +460,7 @@ public class LaunchActivity extends ActionBarActivity implements NotificationCen showLastFragment(); } - getIntent().setAction(null); + intent.setAction(null); } @Override @@ -579,7 +562,7 @@ public class LaunchActivity extends ActionBarActivity implements NotificationCen Utilities.checkForCrashes(this); Utilities.checkForUpdates(this); ApplicationLoader.resetLastPauseTime(); - updateActionBar(); + actionBar.setBackOverlayVisible(currentConnectionState != 0); try { NotificationManager mNotificationManager = (NotificationManager)this.getSystemService(Context.NOTIFICATION_SERVICE); mNotificationManager.cancel(1); @@ -678,39 +661,26 @@ public class LaunchActivity extends ActionBarActivity implements NotificationCen if (currentConnectionState != state) { FileLog.e("tmessages", "switch to state " + state); currentConnectionState = state; - updateActionBar(); + actionBar.setBackOverlayVisible(currentConnectionState != 0); } } } - public void updateActionBar() { - if (currentConnectionState != 0 && statusView != null) { - onShowFragment(); - if (currentConnectionState == 1) { - statusText.setText(getString(R.string.WaitingForNetwork)); - } else if (currentConnectionState == 2) { - statusText.setText(getString(R.string.Connecting)); - } else if (currentConnectionState == 3) { - statusText.setText(getString(R.string.Updating)); - } - - statusText.measure(View.MeasureSpec.makeMeasureSpec(800, View.MeasureSpec.AT_MOST), View.MeasureSpec.makeMeasureSpec(100, View.MeasureSpec.AT_MOST)); - actionBar.setBackOverlay(statusView, (statusText.getMeasuredWidth() + Utilities.dp(54))); - } else { - actionBar.setBackOverlay(null, 0); - } - } - @Override - protected void onShowFragment() { - if (statusView != null) { - if (fragmentsStack.size() > 1) { - backStatusButton.setVisibility(View.VISIBLE); - statusBackground.setEnabled(true); - } else { - backStatusButton.setVisibility(View.GONE); - statusBackground.setEnabled(false); - } + public void onOverlayShow(View view, BaseFragment fragment) { + if (view == null || fragment == null || fragmentsStack.isEmpty()) { + return; + } + View backStatusButton = view.findViewById(R.id.back_button); + TextView statusText = (TextView)view.findViewById(R.id.status_text); + backStatusButton.setVisibility(fragmentsStack.get(0) == fragment ? View.GONE : View.VISIBLE); + view.setEnabled(fragmentsStack.get(0) != fragment); + if (currentConnectionState == 1) { + statusText.setText(LocaleController.getString("WaitingForNetwork", R.string.WaitingForNetwork)); + } else if (currentConnectionState == 2) { + statusText.setText(LocaleController.getString("Connecting", R.string.Connecting)); + } else if (currentConnectionState == 3) { + statusText.setText(LocaleController.getString("Updating", R.string.Updating)); } } @@ -732,6 +702,7 @@ public class LaunchActivity extends ActionBarActivity implements NotificationCen } else if (lastFragment instanceof SettingsWallpapersActivity) { outState.putString("fragment", "wallpapers"); } else if (lastFragment instanceof ChatProfileActivity && args != null) { + outState.putBundle("args", args); outState.putString("fragment", "chat_profile"); } lastFragment.saveSelfArgs(outState); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LocationActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LocationActivity.java index 3fcd31c35..ccc43d62e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LocationActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LocationActivity.java @@ -81,6 +81,7 @@ public class LocationActivity extends BaseFragment implements NotificationCenter public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { actionBarLayer.setDisplayHomeAsUpEnabled(true, R.drawable.ic_ab_back); + actionBarLayer.setBackOverlay(R.layout.updating_state_layout); if (messageObject != null) { actionBarLayer.setTitle(LocaleController.getString("ChatLocation", R.string.ChatLocation)); } else { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LoginActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LoginActivity.java index 0bb5d68a3..7e1625826 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LoginActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LoginActivity.java @@ -56,7 +56,7 @@ public class LoginActivity extends BaseFragment implements SlideView.SlideViewDe @Override public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { - actionBarLayer.setDisplayUseLogoEnabled(true, R.drawable.ic_ab_back); + actionBarLayer.setDisplayUseLogoEnabled(true, R.drawable.ic_ab_logo); actionBarLayer.setTitle(LocaleController.getString("AppName", R.string.AppName)); actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { @@ -71,7 +71,7 @@ public class LoginActivity extends BaseFragment implements SlideView.SlideViewDe ActionBarMenu menu = actionBarLayer.createMenu(); View doneItem = menu.addItemResource(done_button, R.layout.group_create_done_layout); TextView doneTextView = (TextView)doneItem.findViewById(R.id.done_button); - doneTextView.setText(LocaleController.getString("Done", R.string.Done)); + doneTextView.setText(LocaleController.getString("Done", R.string.Done).toUpperCase()); fragmentView = inflater.inflate(R.layout.login_layout, container, false); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/MediaActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/MediaActivity.java index bcd226a0e..6df22b7ac 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/MediaActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/MediaActivity.java @@ -87,6 +87,7 @@ public class MediaActivity extends BaseFragment implements NotificationCenter.No public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { actionBarLayer.setDisplayHomeAsUpEnabled(true, R.drawable.ic_ab_back); + actionBarLayer.setBackOverlay(R.layout.updating_state_layout); actionBarLayer.setTitle(LocaleController.getString("SharedMedia", R.string.SharedMedia)); actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { @Override diff --git a/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java index a41925070..c1b5b94d5 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java @@ -176,6 +176,7 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter item.addSubItem(messages_list_menu_contacts, LocaleController.getString("Contacts", R.string.Contacts), 0); item.addSubItem(messages_list_menu_settings, LocaleController.getString("Settings", R.string.Settings), 0); } + actionBarLayer.setBackOverlay(R.layout.updating_state_layout); actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { @Override diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PhotoCropActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/PhotoCropActivity.java index c5d6ff9a9..6c2feab37 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PhotoCropActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PhotoCropActivity.java @@ -353,9 +353,9 @@ public class PhotoCropActivity extends BaseFragment { } }); - cancelButton.setText(LocaleController.getString("Cancel", R.string.Cancel)); + cancelButton.setText(LocaleController.getString("Cancel", R.string.Cancel).toUpperCase()); TextView textView = (TextView)doneButton.findViewById(R.id.done_button_text); - textView.setText(LocaleController.getString("Done", R.string.Done)); + textView.setText(LocaleController.getString("Done", R.string.Done).toUpperCase()); fragmentView = view = new PhotoCropView(getParentActivity()); fragmentView.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PhotoPickerActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/PhotoPickerActivity.java index 3b06142e3..949c85dac 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PhotoPickerActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PhotoPickerActivity.java @@ -492,7 +492,7 @@ public class PhotoPickerActivity extends BaseFragment implements NotificationCen MediaController.AlbumEntry albumEntry = albumsSorted.get(i); BackupImageView imageView = (BackupImageView)view.findViewById(R.id.media_photo_image); if (albumEntry.coverPhoto != null && albumEntry.coverPhoto.path != null) { - imageView.setImage(albumEntry.coverPhoto.path, "150_150", R.drawable.nophotos); + imageView.setImage("thumb://" + albumEntry.coverPhoto.imageId + ":" + albumEntry.coverPhoto.path, "150_150", R.drawable.nophotos); } else { imageView.setImageResource(R.drawable.nophotos); } @@ -534,7 +534,7 @@ public class PhotoPickerActivity extends BaseFragment implements NotificationCen imageView.setTag(i); view.setTag(i); if (photoEntry.path != null) { - imageView.setImage(photoEntry.path, "100_100", R.drawable.nophotos); + imageView.setImage("thumb://" + photoEntry.imageId + ":" + photoEntry.path, "100_100", R.drawable.nophotos); } else { imageView.setImageResource(R.drawable.nophotos); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java b/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java index 493cacd99..43cef317d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java @@ -34,7 +34,10 @@ import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.view.WindowManager; import android.view.animation.AlphaAnimation; +import android.view.animation.Animation; +import android.view.animation.AnimationSet; import android.view.animation.DecelerateInterpolator; +import android.view.animation.ScaleAnimation; import android.widget.Button; import android.widget.FrameLayout; import android.widget.ImageView; @@ -81,7 +84,8 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat private boolean isActionBarVisible = true; private WindowManager.LayoutParams windowLayoutParams; - private FrameLayoutTouchListener containerView; + private FrameLayoutDrawer containerView; + private FrameLayoutTouchListener windowView; private ClippingImageView animatingImageView; private FrameLayout bottomLayout; private TextView nameTextView; @@ -97,7 +101,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat private boolean canShowBottom = true; private boolean overlayViewVisible = true; - private boolean animationInProgress = false; + private int animationInProgress = 0; private boolean disableShowCheck = false; private ImageReceiver leftImage = new ImageReceiver(); @@ -229,11 +233,6 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat return getInstance().onTouchEvent(event); } - @Override - protected void onDraw(Canvas canvas) { - getInstance().onDraw(canvas); - } - @Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) { super.onLayout(changed, left, top, right, bottom); @@ -241,6 +240,18 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } } + private static class FrameLayoutDrawer extends FrameLayout { + public FrameLayoutDrawer(Context context) { + super(context); + setWillNotDraw(false); + } + + @Override + protected void onDraw(Canvas canvas) { + getInstance().onDraw(canvas); + } + } + private static volatile PhotoViewer Instance = null; public static PhotoViewer getInstance() { PhotoViewer localInstance = Instance; @@ -404,9 +415,21 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat public void setParentActivity(Activity activity) { parentActivity = activity; - containerView = new FrameLayoutTouchListener(activity); - containerView.setBackgroundDrawable(backgroundDrawable); + windowView = new FrameLayoutTouchListener(activity); + windowView.setBackgroundDrawable(backgroundDrawable); + windowView.setFocusable(false); + + animatingImageView = new ClippingImageView(windowView.getContext()); + windowView.addView(animatingImageView); + + containerView = new FrameLayoutDrawer(activity); containerView.setFocusable(false); + windowView.addView(containerView); + FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams)containerView.getLayoutParams(); + layoutParams.width = FrameLayout.LayoutParams.MATCH_PARENT; + layoutParams.height = FrameLayout.LayoutParams.MATCH_PARENT; + layoutParams.gravity = Gravity.TOP | Gravity.LEFT; + containerView.setLayoutParams(layoutParams); windowLayoutParams = new WindowManager.LayoutParams(); windowLayoutParams.height = WindowManager.LayoutParams.MATCH_PARENT; @@ -416,13 +439,10 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat windowLayoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION; windowLayoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; - animatingImageView = new ClippingImageView(containerView.getContext()); - containerView.addView(animatingImageView); - actionBar = new ActionBar(activity); containerView.addView(actionBar); - actionBar.setBackgroundColor(0xdd000000); - FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams)actionBar.getLayoutParams(); + actionBar.setBackgroundColor(0x7F000000); + layoutParams = (FrameLayout.LayoutParams)actionBar.getLayoutParams(); layoutParams.width = FrameLayout.LayoutParams.MATCH_PARENT; actionBar.setLayoutParams(layoutParams); actionBarLayer = actionBar.createLayer(); @@ -510,7 +530,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat layoutParams.height = Utilities.dp(48); layoutParams.gravity = Gravity.BOTTOM | Gravity.LEFT; bottomLayout.setLayoutParams(layoutParams); - bottomLayout.setBackgroundColor(0xdd000000); + bottomLayout.setBackgroundColor(0x7F000000); ImageView shareButton = new ImageView(containerView.getContext()); shareButton.setImageResource(R.drawable.ic_ab_share_white); @@ -1111,13 +1131,13 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } if (!init) { - if (currentPlaceObject != null) { + if (android.os.Build.VERSION.SDK_INT >= 11 && currentPlaceObject != null) { currentPlaceObject.imageReceiver.setVisible(true, true); } } currentPlaceObject = placeProvider.getPlaceForPhoto(currentMessageObject, currentFileLocation, currentIndex); if (!init) { - if (currentPlaceObject != null) { + if (android.os.Build.VERSION.SDK_INT >= 11 && currentPlaceObject != null) { currentPlaceObject.imageReceiver.setVisible(false, true); } } @@ -1253,15 +1273,15 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } public boolean isShowingImage(MessageObject object) { - return !disableShowCheck && object != null && currentMessageObject != null && currentMessageObject.messageOwner.id == object.messageOwner.id; + return android.os.Build.VERSION.SDK_INT >= 11 && isVisible && !disableShowCheck && object != null && currentMessageObject != null && currentMessageObject.messageOwner.id == object.messageOwner.id; } public boolean isShowingImage(TLRPC.FileLocation object) { - return !disableShowCheck && object != null && currentFileLocation != null && object.local_id == currentFileLocation.local_id && object.volume_id == currentFileLocation.volume_id && object.dc_id == currentFileLocation.dc_id; + return android.os.Build.VERSION.SDK_INT >= 11 && isVisible && !disableShowCheck && object != null && currentFileLocation != null && object.local_id == currentFileLocation.local_id && object.volume_id == currentFileLocation.volume_id && object.dc_id == currentFileLocation.dc_id; } public boolean isShowingImage(String object) { - return !disableShowCheck && object != null && currentPathObject != null && object.equals(currentPathObject); + return android.os.Build.VERSION.SDK_INT >= 11 && isVisible && !disableShowCheck && object != null && currentPathObject != null && object.equals(currentPathObject); } public void openPhoto(final MessageObject messageObject, final PhotoViewerProvider provider) { @@ -1281,7 +1301,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } public void openPhoto(final MessageObject messageObject, final TLRPC.FileLocation fileLocation, final ArrayList messages, final ArrayList photos, final int index, final PhotoViewerProvider provider) { - if (parentActivity == null || isVisible || provider == null || animationInProgress || messageObject == null && fileLocation == null && messages == null && photos == null) { + if (parentActivity == null || isVisible || provider == null || animationInProgress != 0 || messageObject == null && fileLocation == null && messages == null && photos == null) { return; } final PlaceProviderObject object = provider.getPlaceForPhoto(messageObject, fileLocation, index); @@ -1299,7 +1319,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat placeProvider = provider; WindowManager wm = (WindowManager) parentActivity.getSystemService(Context.WINDOW_SERVICE); - wm.addView(containerView, windowLayoutParams); + wm.addView(windowView, windowLayoutParams); if (velocityTracker == null) { velocityTracker = VelocityTracker.obtain(); @@ -1315,7 +1335,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if(android.os.Build.VERSION.SDK_INT >= 11) { Utilities.lockOrientation(parentActivity); - animationInProgress = true; + animationInProgress = 1; animatingImageView.setVisibility(View.VISIBLE); animatingImageView.setImageBitmap(object.thumb); @@ -1370,18 +1390,16 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat ObjectAnimator.ofInt(animatingImageView, "clipHorizontal", clipHorizontal, 0), ObjectAnimator.ofInt(animatingImageView, "clipTop", clipTop, 0), ObjectAnimator.ofInt(animatingImageView, "clipBottom", clipBottom, 0), - ObjectAnimator.ofFloat(actionBar, "alpha", 0.0f, 1.0f), - ObjectAnimator.ofFloat(bottomLayout, "alpha", 0.0f, 1.0f), - ObjectAnimator.ofFloat(progressBar, "alpha", 0.0f, 1.0f), - ObjectAnimator.ofFloat(currentOverlay, "alpha", 0.0f, 1.0f), - ObjectAnimator.ofFloat(checkImageView, "alpha", 0.0f, 1.0f) + ObjectAnimator.ofFloat(containerView, "alpha", 0.0f, 1.0f), + ObjectAnimator.ofFloat(currentOverlay, "alpha", 1.0f) ); animatorSet.setDuration(250); animatorSet.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { - animationInProgress = false; + animationInProgress = 0; + containerView.invalidate(); animatingImageView.setVisibility(View.GONE); Utilities.unlockOrientation(parentActivity); } @@ -1393,19 +1411,33 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat public void onDraw() { disableShowCheck = false; animatingImageView.setOnDrawListener(null); - object.imageReceiver.setVisible(false, true); + if (android.os.Build.VERSION.SDK_INT >= 11) { + object.imageReceiver.setVisible(false, true); + } } }); return true; } }); } else { + containerView.invalidate(); + AnimationSet animationSet = new AnimationSet(true); + AlphaAnimation animation = new AlphaAnimation(0.0f, 1.0f); + animation.setDuration(150); + animation.setFillAfter(false); + animationSet.addAnimation(animation); + ScaleAnimation scaleAnimation = new ScaleAnimation(0.9f, 1.0f, 0.9f, 1.0f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); + scaleAnimation.setDuration(150); + scaleAnimation.setFillAfter(false); + animationSet.addAnimation(scaleAnimation); + animationSet.setDuration(150); + containerView.startAnimation(animationSet); disableShowCheck = false; } } public void closePhoto(boolean animated) { - if (parentActivity == null || !isVisible || animationInProgress) { + if (parentActivity == null || !isVisible || animationInProgress != 0) { return; } @@ -1430,7 +1462,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if(android.os.Build.VERSION.SDK_INT >= 11 && animated) { Utilities.lockOrientation(parentActivity); - animationInProgress = true; + animationInProgress = 1; animatingImageView.setVisibility(View.VISIBLE); AnimatorSet animatorSet = new AnimatorSet(); @@ -1460,7 +1492,9 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat animatingImageView.setScaleY(scale * scale2); if (object != null) { - object.imageReceiver.setVisible(false, true); + if (android.os.Build.VERSION.SDK_INT >= 11) { + object.imageReceiver.setVisible(false, true); + } int clipHorizontal = Math.abs(object.imageReceiver.drawRegion.left - object.imageReceiver.imageX); int clipVertical = Math.abs(object.imageReceiver.drawRegion.top - object.imageReceiver.imageY); @@ -1487,22 +1521,14 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat ObjectAnimator.ofInt(animatingImageView, "clipHorizontal", clipHorizontal), ObjectAnimator.ofInt(animatingImageView, "clipTop", clipTop), ObjectAnimator.ofInt(animatingImageView, "clipBottom", clipBottom), - ObjectAnimator.ofFloat(actionBar, "alpha", 0.0f), - ObjectAnimator.ofFloat(bottomLayout, "alpha", 0.0f), - ObjectAnimator.ofFloat(progressBar, "alpha", 0.0f), - ObjectAnimator.ofFloat(currentOverlay, "alpha", 0.0f), - ObjectAnimator.ofFloat(checkImageView, "alpha", 0.0f) + ObjectAnimator.ofFloat(containerView, "alpha", 0.0f) ); } else { animatorSet.playTogether( ObjectAnimator.ofInt(backgroundDrawable, "alpha", 0), - ObjectAnimator.ofFloat(actionBar, "alpha", 0.0f), ObjectAnimator.ofFloat(animatingImageView, "alpha", 0.0f), - ObjectAnimator.ofFloat(bottomLayout, "alpha", 0.0f), - ObjectAnimator.ofFloat(progressBar, "alpha", 0.0f), ObjectAnimator.ofFloat(animatingImageView, "translationY", translationY >= 0 ? Utilities.displaySize.y : -Utilities.displaySize.y), - ObjectAnimator.ofFloat(currentOverlay, "alpha", 0.0f), - ObjectAnimator.ofFloat(checkImageView, "alpha", 0.0f) + ObjectAnimator.ofFloat(containerView, "alpha", 0.0f) ); } @@ -1511,13 +1537,41 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat @Override public void onAnimationEnd(Animator animation) { Utilities.unlockOrientation(parentActivity); - animationInProgress = false; + animationInProgress = 0; onPhotoClosed(object); } }); animatorSet.start(); } else { - onPhotoClosed(object); + AnimationSet animationSet = new AnimationSet(true); + AlphaAnimation animation = new AlphaAnimation(1.0f, 0.0f); + animation.setDuration(150); + animation.setFillAfter(false); + animationSet.addAnimation(animation); + ScaleAnimation scaleAnimation = new ScaleAnimation(1.0f, 0.9f, 1.0f, 0.9f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); + scaleAnimation.setDuration(150); + scaleAnimation.setFillAfter(false); + animationSet.addAnimation(scaleAnimation); + animationSet.setDuration(150); + animationInProgress = 2; + animationSet.setAnimationListener(new Animation.AnimationListener() { + @Override + public void onAnimationStart(Animation animation) { + + } + + @Override + public void onAnimationEnd(Animation animation) { + animationInProgress = 0; + onPhotoClosed(object); + } + + @Override + public void onAnimationRepeat(Animation animation) { + + } + }); + containerView.startAnimation(animationSet); } } @@ -1530,15 +1584,21 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat centerImage.setImageBitmap((Bitmap)null); leftImage.setImageBitmap((Bitmap) null); rightImage.setImageBitmap((Bitmap)null); - if (object != null) { + if (android.os.Build.VERSION.SDK_INT >= 11 && object != null) { object.imageReceiver.setVisible(true, true); } containerView.post(new Runnable() { @Override public void run() { animatingImageView.setImageBitmap(null); - WindowManager wm = (WindowManager) parentActivity.getSystemService(Context.WINDOW_SERVICE); - wm.removeView(containerView); + try { + WindowManager wm = (WindowManager) parentActivity.getSystemService(Context.WINDOW_SERVICE); + if (windowView.getParent() != null) { + wm.removeView(windowView); + } + } catch (Exception e) { + FileLog.e("tmessages", e); + } } }); if (placeProvider != null) { @@ -1570,7 +1630,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } private boolean onTouchEvent(MotionEvent ev) { - if (animationInProgress || animationStartTime != 0) { + if (animationInProgress != 0 || animationStartTime != 0) { if (animationStartTime == 0) { Utilities.unlockOrientation(parentActivity); } @@ -1798,7 +1858,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } private void onDraw(Canvas canvas) { - if (animationInProgress || !isVisible) { + if (animationInProgress == 1 || !isVisible && animationInProgress != 2) { return; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/SettingsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/SettingsActivity.java index 185b896e0..56f5ede27 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/SettingsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/SettingsActivity.java @@ -221,6 +221,7 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { actionBarLayer.setDisplayHomeAsUpEnabled(true, R.drawable.ic_ab_back); + actionBarLayer.setBackOverlay(R.layout.updating_state_layout); actionBarLayer.setTitle(LocaleController.getString("Settings", R.string.Settings)); actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { @Override diff --git a/TMessagesProj/src/main/java/org/telegram/ui/SettingsBlockedUsers.java b/TMessagesProj/src/main/java/org/telegram/ui/SettingsBlockedUsers.java index 88912f31f..b0643ce6e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/SettingsBlockedUsers.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/SettingsBlockedUsers.java @@ -68,6 +68,7 @@ public class SettingsBlockedUsers extends BaseFragment implements NotificationCe public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { actionBarLayer.setDisplayHomeAsUpEnabled(true, R.drawable.ic_ab_back); + actionBarLayer.setBackOverlay(R.layout.updating_state_layout); actionBarLayer.setTitle(LocaleController.getString("BlockedUsers", R.string.BlockedUsers)); actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { @Override diff --git a/TMessagesProj/src/main/java/org/telegram/ui/SettingsChangeNameActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/SettingsChangeNameActivity.java index e45734fc7..866e0b10c 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/SettingsChangeNameActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/SettingsChangeNameActivity.java @@ -59,9 +59,9 @@ public class SettingsChangeNameActivity extends BaseFragment { } }); - cancelButton.setText(LocaleController.getString("Cancel", R.string.Cancel)); + cancelButton.setText(LocaleController.getString("Cancel", R.string.Cancel).toUpperCase()); TextView textView = (TextView)doneButton.findViewById(R.id.done_button_text); - textView.setText(LocaleController.getString("Done", R.string.Done)); + textView.setText(LocaleController.getString("Done", R.string.Done).toUpperCase()); fragmentView = inflater.inflate(R.layout.settings_change_name_layout, container, false); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/SettingsNotificationsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/SettingsNotificationsActivity.java index 8b3165c57..7c268ea67 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/SettingsNotificationsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/SettingsNotificationsActivity.java @@ -98,6 +98,7 @@ public class SettingsNotificationsActivity extends BaseFragment { public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { actionBarLayer.setDisplayHomeAsUpEnabled(true, R.drawable.ic_ab_back); + actionBarLayer.setBackOverlay(R.layout.updating_state_layout); actionBarLayer.setTitle(LocaleController.getString("NotificationsAndSounds", R.string.NotificationsAndSounds)); actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() { @Override diff --git a/TMessagesProj/src/main/java/org/telegram/ui/SettingsWallpapersActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/SettingsWallpapersActivity.java index 29e48d807..536876128 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/SettingsWallpapersActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/SettingsWallpapersActivity.java @@ -143,9 +143,9 @@ public class SettingsWallpapersActivity extends BaseFragment implements Notifica } }); - cancelButton.setText(LocaleController.getString("Cancel", R.string.Cancel)); + cancelButton.setText(LocaleController.getString("Cancel", R.string.Cancel).toUpperCase()); TextView textView = (TextView)doneButton.findViewById(R.id.done_button_text); - textView.setText(LocaleController.getString("Set", R.string.Set)); + textView.setText(LocaleController.getString("Set", R.string.Set).toUpperCase()); fragmentView = inflater.inflate(R.layout.settings_wallpapers_layout, container, false); listAdapter = new ListAdapter(getParentActivity()); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/UserProfileActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/UserProfileActivity.java index 33322a47f..496ed2afe 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/UserProfileActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/UserProfileActivity.java @@ -135,6 +135,7 @@ public class UserProfileActivity extends BaseFragment implements NotificationCen public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { actionBarLayer.setDisplayHomeAsUpEnabled(true, R.drawable.ic_ab_back); + actionBarLayer.setBackOverlay(R.layout.updating_state_layout); if (dialog_id != 0) { actionBarLayer.setTitle(LocaleController.getString("SecretTitle", R.string.SecretTitle)); actionBarLayer.setTitleIcon(R.drawable.ic_lock_white, Utilities.dp(4)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/ActionBar.java b/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/ActionBar.java index 9be684dae..a2309d722 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/ActionBar.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/ActionBar.java @@ -29,9 +29,8 @@ public class ActionBar extends FrameLayout { private static Drawable logoDrawable; protected ActionBarLayer currentLayer = null; private ActionBarLayer previousLayer = null; - private View currentBackOverlay; private View shadowView = null; - private int currentBackOverlayWidth; + private boolean isBackOverlayVisible; public ActionBar(Context context) { super(context); @@ -87,42 +86,19 @@ public class ActionBar extends FrameLayout { layoutParams.height = LayoutParams.MATCH_PARENT; layoutParams.gravity = Gravity.TOP | Gravity.LEFT; layer.setLayoutParams(layoutParams); - updateBackOverlay(MeasureSpec.makeMeasureSpec(getMeasuredWidth(), MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(getMeasuredHeight(), MeasureSpec.EXACTLY)); + currentLayer.setBackOverlayVisible(isBackOverlayVisible); if(android.os.Build.VERSION.SDK_INT >= 11) { layer.setAlpha(1); } } - public void setBackOverlay(View view, int width) { - if (currentBackOverlay != null) { - removeView(currentBackOverlay); - } - if (view != null) { - addView(view); - } - currentBackOverlayWidth = width; - currentBackOverlay = view; - updateBackOverlay(MeasureSpec.makeMeasureSpec(getMeasuredWidth(), MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(getMeasuredHeight(), MeasureSpec.EXACTLY)); - } - - private void updateBackOverlay(int widthMeasureSpec, int heightMeasureSpec) { + public void setBackOverlayVisible(boolean visible) { + isBackOverlayVisible = visible; if (currentLayer != null) { - currentLayer.setBackLayoutVisible(currentLayer.isSearchFieldVisible || currentBackOverlay == null ? VISIBLE : INVISIBLE); + currentLayer.setBackOverlayVisible(visible); } - if (currentBackOverlay != null) { - ViewGroup.LayoutParams layoutParams = currentBackOverlay.getLayoutParams(); - if (currentLayer != null) { - currentBackOverlay.setVisibility(currentLayer.isSearchFieldVisible ? GONE : VISIBLE); - currentLayer.measure(widthMeasureSpec, heightMeasureSpec); - layoutParams.width = Math.min(currentBackOverlayWidth, currentLayer.getBackLayoutWidth()); - } else { - currentBackOverlay.setVisibility(VISIBLE); - layoutParams.width = LayoutParams.WRAP_CONTENT; - } - if (layoutParams.width != 0) { - layoutParams.height = LayoutParams.MATCH_PARENT; - currentBackOverlay.setLayoutParams(layoutParams); - } + if (previousLayer != null) { + previousLayer.setBackOverlayVisible(visible); } } @@ -142,6 +118,7 @@ public class ActionBar extends FrameLayout { layer.setLayoutParams(layoutParams); shadowView.setX(-Utilities.dp(2)); shadowView.setVisibility(VISIBLE); + previousLayer.setBackOverlayVisible(isBackOverlayVisible); } public void stopMoving(boolean backAnimation) { @@ -153,6 +130,7 @@ public class ActionBar extends FrameLayout { removeView(currentLayer); currentLayer = previousLayer; currentLayer.setAlpha(1); + previousLayer = null; } else { removeView(previousLayer); previousLayer = null; @@ -192,7 +170,6 @@ public class ActionBar extends FrameLayout { @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - updateBackOverlay(widthMeasureSpec, heightMeasureSpec); if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(Utilities.dp(40), MeasureSpec.EXACTLY)); } else { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/ActionBarActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/ActionBarActivity.java index 183903aba..8659a1cd3 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/ActionBarActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/ActionBarActivity.java @@ -13,6 +13,7 @@ import android.animation.AnimatorSet; import android.animation.ObjectAnimator; import android.app.Activity; import android.content.Context; +import android.content.Intent; import android.content.res.Configuration; import android.os.Build; import android.os.Bundle; @@ -24,6 +25,7 @@ import android.view.VelocityTracker; import android.view.View; import android.view.ViewGroup; import android.view.ViewTreeObserver; +import android.view.Window; import android.view.WindowManager; import android.view.animation.Animation; import android.view.animation.AnimationUtils; @@ -97,6 +99,7 @@ public class ActionBarActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + requestWindowFeature(Window.FEATURE_NO_TITLE); try { openAnimation = AnimationUtils.loadAnimation(this, R.anim.scale_in); @@ -511,6 +514,7 @@ public class ActionBarActivity extends Activity { transitionAnimationStartTime = 0; fragment.onOpenAnimationEnd(); presentFragmentInternalRemoveOld(removeLast, currentFragment); + listener = null; } } @@ -585,6 +589,7 @@ public class ActionBarActivity extends Activity { transitionAnimationInProgress = false; transitionAnimationStartTime = 0; closeLastFragmentInternalRemoveOld(currentFragment); + listener = null; } } @@ -653,6 +658,10 @@ public class ActionBarActivity extends Activity { return super.onKeyUp(keyCode, event); } + public void onOverlayShow(View view, BaseFragment fragment) { + + } + @Override public void onActionModeStarted(ActionMode mode) { super.onActionModeStarted(mode); @@ -670,4 +679,14 @@ public class ActionBarActivity extends Activity { public boolean onPreIme() { return false; } + + @Override + public void startActivityForResult(Intent intent, int requestCode) { + if (transitionAnimationInProgress && listener != null) { + openAnimation.cancel(); + closeAnimation.cancel(); + listener.onAnimationEnd(null); + } + super.startActivityForResult(intent, requestCode); + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/ActionBarLayer.java b/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/ActionBarLayer.java index 4ccde6a1e..2096d434d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/ActionBarLayer.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/ActionBarLayer.java @@ -48,9 +48,11 @@ public class ActionBarLayer extends FrameLayout { protected ActionBar parentActionBar; private boolean oldUseLogo; private boolean oldUseBack; - private boolean isBackLayoutHidden = false; + private View actionOverlay; protected boolean isSearchFieldVisible; protected int itemsBackgroundResourceId; + private boolean isBackOverlayVisible; + protected BaseFragment parentFragment; public ActionBarMenuOnItemClick actionBarMenuOnItemClick; public ActionBarLayer(Context context, ActionBar actionBar) { @@ -340,18 +342,6 @@ public class ActionBarLayer extends FrameLayout { addView(view); } - public void setBackLayoutVisible(int visibility) { - isBackLayoutHidden = visibility != VISIBLE; - backButtonFrameLayout.setVisibility(isSearchFieldVisible ? VISIBLE : visibility); - } - - public int getBackLayoutWidth() { - if (menu != null) { - return getMeasuredWidth() - menu.getMeasuredWidth(); - } - return getMeasuredWidth(); - } - public ActionBarMenu createActionMode() { if (actionMode != null) { return actionMode; @@ -419,11 +409,7 @@ public class ActionBarLayer extends FrameLayout { } else { setDisplayHomeAsUpEnabled(oldUseBack, backResourceId); } - if (visible) { - backButtonFrameLayout.setVisibility(VISIBLE); - } else { - backButtonFrameLayout.setVisibility(isBackLayoutHidden ? INVISIBLE : VISIBLE); - } + positionBackOverlay(getMeasuredWidth(), getMeasuredHeight()); } public void closeSearchField() { @@ -439,6 +425,7 @@ public class ActionBarLayer extends FrameLayout { positionBackImage(MeasureSpec.getSize(heightMeasureSpec)); positionMenu(MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.getSize(heightMeasureSpec)); positionTitle(MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.getSize(heightMeasureSpec)); + positionBackOverlay(MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.getSize(heightMeasureSpec)); super.onMeasure(widthMeasureSpec, heightMeasureSpec); } @@ -464,6 +451,45 @@ public class ActionBarLayer extends FrameLayout { } } + public void setBackOverlay(int resourceId) { + LayoutInflater li = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); + actionOverlay = li.inflate(resourceId, null); + addView(actionOverlay); + actionOverlay.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + if (actionBarMenuOnItemClick != null) { + actionBarMenuOnItemClick.onItemClick(-1); + } + } + }); + } + + public void setBackOverlayVisible(boolean visible) { + if (actionOverlay == null) { + return; + } + isBackOverlayVisible = visible; + positionBackOverlay(getMeasuredWidth(), getMeasuredHeight()); + if (visible) { + ((ActionBarActivity)getContext()).onOverlayShow(actionOverlay, parentFragment); + } + } + + private void positionBackOverlay(int widthMeasureSpec, int heightMeasureSpec) { + if (actionOverlay == null) { + return; + } + backButtonFrameLayout.setVisibility(isSearchFieldVisible || actionOverlay == null || actionOverlay.getVisibility() == GONE ? VISIBLE : INVISIBLE); + actionOverlay.setVisibility(!isSearchFieldVisible && isBackOverlayVisible ? VISIBLE : GONE); + if (actionOverlay.getVisibility() == VISIBLE) { + ViewGroup.LayoutParams layoutParams = actionOverlay.getLayoutParams(); + layoutParams.width = widthMeasureSpec - (menu != null ? menu.getMeasuredWidth() : 0); + layoutParams.height = LayoutParams.MATCH_PARENT; + actionOverlay.setLayoutParams(layoutParams); + } + } + public void setItemsBackground(int resourceId) { itemsBackgroundResourceId = resourceId; backButtonFrameLayout.setBackgroundResource(itemsBackgroundResourceId); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/BaseFragment.java b/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/BaseFragment.java index a30354e39..1e7b14963 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/BaseFragment.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/BaseFragment.java @@ -61,6 +61,7 @@ public class BaseFragment { actionBarLayer.onDestroy(); } actionBarLayer = parentActivity.getInternalActionBar().createLayer(); + actionBarLayer.parentFragment = this; actionBarLayer.setBackgroundResource(R.color.header); actionBarLayer.setItemsBackground(R.drawable.bar_selector); } diff --git a/TMessagesProj/src/main/res/layout/media_layout.xml b/TMessagesProj/src/main/res/layout/media_layout.xml index f8e949071..405fbcce8 100644 --- a/TMessagesProj/src/main/res/layout/media_layout.xml +++ b/TMessagesProj/src/main/res/layout/media_layout.xml @@ -16,6 +16,7 @@ android:numColumns="auto_fit" android:stretchMode="columnWidth" android:gravity="center" + android:listSelector="@drawable/list_selector" android:layout_gravity="top"/> diff --git a/TMessagesProj/src/main/res/layout/photo_picker_layout.xml b/TMessagesProj/src/main/res/layout/photo_picker_layout.xml index ca95b52be..5dae18975 100644 --- a/TMessagesProj/src/main/res/layout/photo_picker_layout.xml +++ b/TMessagesProj/src/main/res/layout/photo_picker_layout.xml @@ -22,7 +22,8 @@ android:stretchMode="columnWidth" android:gravity="center" android:layout_gravity="top" - android:scrollbars="none"/> + android:scrollbars="none" + android:listSelector="@drawable/list_selector"/> - - لقد تم إخراجك من هذه المجموعة لقد قمت بمغادرة المجموعة حذف المجموعة - Delete this chat + حذف هذه الدردشة قم بالسحب للإلغاء حفظ في الجهاز تطبيق ملف التعريب @@ -258,18 +258,20 @@ PEBBLE اللغة نرجو الأخذ بالعلم أن الدعم الفني في تيليجرام يقوم به مجموعة من المتطوعين. نحاول الرد بسرعة قدر المستطاع، لكن ربما نستغرق القليل من الوقت.
]]>يرجى الإطلاع على صفحة الأسئلة الأكثر شيوعًا]]>: يوجد بها حلول للمشاكل وإجابات لمعظم الأسئلة.
- اسأل متطوع - Telegram FAQ + اسأل أحد المتطوعين + الأسئلة الشائعة عن تيليجرام https://telegram.org/faq/ar - Delete localization? - Incorrect localization file - Enabled - Disabled - Notifications Service - If google play services are enough for you to receive notifications, you can disable Notifications Service. However we recommend you to leave it enabled to keep app running in background and receive instant notifications. - Sort By - Import Contacts - via WiFi only + حذف التعريب؟ + ملف التعريب غير صحيح + تمكين + تعطيل + خدمة الإشعارات + إذا كانت خدمات Google play كافية بالنسبة لك لتلقي الإشعارات ، يمكنك تعطيل " خدمة الإشعارات " . ومع ذلك نحن نوصي بترك هذه الخدمة مفعلة للحفاظ على تشغيل التطبيق في الخلفية ، ولتلقي إشعارات الدردشة . + فرز حسب + استيراد جهات الاتصال + بواسطة WiFi فقط + الاسم الأول + اسم العائلة لا توجد وسائط بعد @@ -339,8 +341,8 @@ مستند مقطع صوتي أنت - You took a screenshot! - un1 took a screenshot! + أنت أخذت لقطة للشاشة ! + un1 أخذ لقطة للشاشة ! رقم الهاتف غير صحيح diff --git a/TMessagesProj/src/main/res/values-de/strings.xml b/TMessagesProj/src/main/res/values-de/strings.xml index 34ae39406..b6f10a09f 100644 --- a/TMessagesProj/src/main/res/values-de/strings.xml +++ b/TMessagesProj/src/main/res/values-de/strings.xml @@ -109,7 +109,7 @@ Du wurdest aus der Gruppe entfernt Du hast die Gruppe verlassen Diese Gruppe löschen - Delete this chat + Diesen Chat löschen WISCHEN UM ABZUBRECHEN In Ordner Downloads speichern Sprachdatei benutzen @@ -263,13 +263,15 @@ https://telegram.org/faq Lokalisierung löschen? Falsche Sprachdatei - Enabled - Disabled - Notifications Service - If google play services are enough for you to receive notifications, you can disable Notifications Service. However we recommend you to leave it enabled to keep app running in background and receive instant notifications. - Sort By - Import Contacts - via WiFi only + Aktiviert + Deaktiviert + Benachrichtigungsdienst + Sofern Google Play Dienste ausreichend für deine Benachrichtigungen sind, kannst du unseren Benachrichtigungsdienst abschalten. Wir empfehlen allerdings, unseren Dienst dauerhaft aktiviert zu lassen um über neue Nachrichten in Echtzeit informiert zu werden. + sortiert nach + Kontakte importieren + nur über WLAN + Vorname + Nachname Noch keine geteilten Medien vorhanden @@ -339,8 +341,8 @@ Dokument Audio Du - You took a screenshot! - un1 took a screenshot! + Du hast ein Bildschirmfoto gemacht! + un1 hat ein Bildschirmfoto gemacht! Ungültige Telefonnummer diff --git a/TMessagesProj/src/main/res/values-es/strings.xml b/TMessagesProj/src/main/res/values-es/strings.xml index 9ce3ab077..c0b33d94f 100644 --- a/TMessagesProj/src/main/res/values-es/strings.xml +++ b/TMessagesProj/src/main/res/values-es/strings.xml @@ -109,7 +109,7 @@ Has sido expulsado de este grupo Has abandonado este grupo Eliminar este grupo - Delete this chat + Eliminar esta conversación DESLIZA PARA CANCELAR Guardar en descargas Aplicar fichero de localización @@ -263,13 +263,15 @@ https://telegram.org/faq/es ¿Eliminar localización? Fichero de localización incorrecto - Enabled - Disabled - Notifications Service - If google play services are enough for you to receive notifications, you can disable Notifications Service. However we recommend you to leave it enabled to keep app running in background and receive instant notifications. - Sort By - Import Contacts - via WiFi only + Activado + Desactivado + Servicio de notificaciones + Si los servicios de google play son suficientes para recibir notificaciones, puedes desactivar el \'Servicio de notificaciones\'. Sin embargo, te recomendamos activarlos para mantener la aplicación funcionando en segundo plano y recibir notificaciones de forma instantánea. + Ordenar por + Importar contactos + Sólo vía WiFi + Nombre + Apellido No hay fotos ni vídeos compartidos aún @@ -339,8 +341,8 @@ Archivo Audio - You took a screenshot! - un1 took a screenshot! + ¡Hiciste una captura de pantalla! + ¡un1 hizo una captura de pantalla! Número de teléfono inválido diff --git a/TMessagesProj/src/main/res/values-it/strings.xml b/TMessagesProj/src/main/res/values-it/strings.xml index eb6369d40..d502fbeed 100644 --- a/TMessagesProj/src/main/res/values-it/strings.xml +++ b/TMessagesProj/src/main/res/values-it/strings.xml @@ -109,7 +109,7 @@ Sei stato espulso da questo gruppo Hai lasciato il gruppo Elimina questo gruppo - Delete this chat + Elimina questa chat TRASCINA PER ANNULLARE Salva in download Applica file di localizzazione @@ -263,13 +263,15 @@ https://telegram.org/faq Eliminare la localizzazione? File della localizzazione non valido - Enabled - Disabled - Notifications Service - If google play services are enough for you to receive notifications, you can disable Notifications Service. However we recommend you to leave it enabled to keep app running in background and receive instant notifications. - Sort By - Import Contacts - via WiFi only + Abilitato + Disabilitato + Servizio notifiche + Se i servizi di Google Play ti bastano per ricevere le notifiche, puoi disabilitare il Servizio notifiche. Tuttavia sarebbe meglio lasciarlo abilitato al fine di mantenere l\'applicazione attiva in background e ricevere notifiche istantanee. + Ordina per + Importa contatti + solo tramite WiFi + Nome + Cognome Nessun media condiviso @@ -339,8 +341,8 @@ Documento Audio Tu - You took a screenshot! - un1 took a screenshot! + Hai catturato la schermata! + un1 ha catturato la schermata! Numero di telefono non valido diff --git a/TMessagesProj/src/main/res/values-nl/strings.xml b/TMessagesProj/src/main/res/values-nl/strings.xml index edba6cf60..a621b3589 100644 --- a/TMessagesProj/src/main/res/values-nl/strings.xml +++ b/TMessagesProj/src/main/res/values-nl/strings.xml @@ -109,7 +109,7 @@ U bent verwijderd uit deze groep U hebt deze groep verlaten Deze groep verwijderen - Delete this chat + Verwijder dit gesprek SLEEP OM TE ANNULEREN Opslaan in Downloads Vertaling toepassen @@ -263,13 +263,15 @@ https://telegram.org/faq Verwijder vertaling? Ongeldig vertalingsbestand - Enabled - Disabled - Notifications Service - If google play services are enough for you to receive notifications, you can disable Notifications Service. However we recommend you to leave it enabled to keep app running in background and receive instant notifications. - Sort By - Import Contacts - via WiFi only + Inschakelen + Uitschakelen + Meldingen service + Als Google Play services genoeg is om notificaties te ontvang, kan de meldingen service worden uitgeschakeld. Echter, we adviseren de service ingeschakeld te laten zodat de app in de achtergrond blijft draaien en meldingen direct worden ontvangen. + Sorteren op + Importeer contacten + alleen via WIFI + Voornaam + Achternaam Nog geen media gedeeld @@ -339,8 +341,8 @@ Document Geluidsbestand U - You took a screenshot! - un1 took a screenshot! + U heeft een schermafbeelding gemaakt! + un1 maakte een schermafbeeling! Ongeldig telefoonnummer diff --git a/TMessagesProj/src/main/res/values/styles.xml b/TMessagesProj/src/main/res/values/styles.xml index dcaa2c83a..2f71635a7 100644 --- a/TMessagesProj/src/main/res/values/styles.xml +++ b/TMessagesProj/src/main/res/values/styles.xml @@ -8,7 +8,6 @@ @android:color/white @android:color/white @drawable/shadow - true