diff --git a/TMessagesProj/build.gradle b/TMessagesProj/build.gradle index 1019bf14b..c156309c2 100644 --- a/TMessagesProj/build.gradle +++ b/TMessagesProj/build.gradle @@ -81,7 +81,7 @@ android { defaultConfig { minSdkVersion 8 targetSdkVersion 19 - versionCode 252 - versionName "1.5.1" + versionCode 253 + versionName "1.5.2" } } diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/MessagesController.java b/TMessagesProj/src/main/java/org/telegram/messenger/MessagesController.java index b2d554c3d..f6f9d8ec9 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/MessagesController.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/MessagesController.java @@ -4529,7 +4529,6 @@ public class MessagesController implements NotificationCenter.NotificationCenter notification.ledOnMS = 1000; notification.ledOffMS = 1000; if (needVibrate) { - notification.defaults = Notification.DEFAULT_VIBRATE; notification.vibrate = new long[]{0, 100, 0, 100}; } else { notification.vibrate = new long[]{0, 0}; diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/Utilities.java b/TMessagesProj/src/main/java/org/telegram/messenger/Utilities.java index 4440d6f13..2922900b6 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/Utilities.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/Utilities.java @@ -15,6 +15,7 @@ import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.ActivityInfo; +import android.content.res.Configuration; import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.Point; @@ -166,19 +167,47 @@ public class Utilities { WindowManager manager = (WindowManager)activity.getSystemService(Activity.WINDOW_SERVICE); if (manager != null && manager.getDefaultDisplay() != null) { int rotation = manager.getDefaultDisplay().getRotation(); + int orientation = activity.getResources().getConfiguration().orientation; + if (rotation == Surface.ROTATION_270) { - if (Build.VERSION.SDK_INT >= 9) { - activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE); + if (orientation == Configuration.ORIENTATION_PORTRAIT) { + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); + } else { + if (Build.VERSION.SDK_INT >= 9) { + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE); + } else { + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); + } + } + } else if (rotation == Surface.ROTATION_90) { + if (orientation == Configuration.ORIENTATION_PORTRAIT) { + if (Build.VERSION.SDK_INT >= 9) { + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT); + } else { + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); + } } else { activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); } - } else if (rotation == Surface.ROTATION_90) { - activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); } else if (rotation == Surface.ROTATION_0) { - activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); + if (orientation == Configuration.ORIENTATION_LANDSCAPE) { + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); + } else { + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); + } } else { - if (Build.VERSION.SDK_INT >= 9) { - activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT); + if (orientation == Configuration.ORIENTATION_LANDSCAPE) { + if (Build.VERSION.SDK_INT >= 9) { + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE); + } else { + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); + } + } else { + if (Build.VERSION.SDK_INT >= 9) { + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT); + } else { + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); + } } } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java index 69233e1c5..85e5f4ac3 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java @@ -2859,7 +2859,7 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa } public void createMenu(View v, boolean single) { - if (actionBarLayer.isActionModeShowed()) { + if (getParentActivity() == null || actionBarLayer.isActionModeShowed()) { return; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java b/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java index d6157c098..a3e03900e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java @@ -101,6 +101,8 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat private boolean overlayViewVisible = true; private int animationInProgress = 0; + private PlaceProviderObject showAfterAnimation; + private PlaceProviderObject hideAfterAnimation; private boolean disableShowCheck = false; private Animation.AnimationListener animationListener; @@ -327,6 +329,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if (setToImage != -1) { setImageIndex(setToImage, true); } else { + imagesArrLocations.add(0, currentFileLocation); setImageIndex(0, true); } if (fromCache) { @@ -1147,15 +1150,20 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } } - if (!init) { - if (android.os.Build.VERSION.SDK_INT >= 11 && currentPlaceObject != null) { + + if (android.os.Build.VERSION.SDK_INT >= 11 && currentPlaceObject != null) { + if (animationInProgress == 0) { currentPlaceObject.imageReceiver.setVisible(true, true); + } else { + showAfterAnimation = currentPlaceObject; } } currentPlaceObject = placeProvider.getPlaceForPhoto(currentMessageObject, currentFileLocation, currentIndex); - if (!init) { - if (android.os.Build.VERSION.SDK_INT >= 11 && currentPlaceObject != null) { + if (android.os.Build.VERSION.SDK_INT >= 11 && currentPlaceObject != null) { + if (animationInProgress == 0) { currentPlaceObject.imageReceiver.setVisible(false, true); + } else { + hideAfterAnimation = currentPlaceObject; } } @@ -1343,6 +1351,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } disableShowCheck = true; + animationInProgress = 1; onPhotoShow(messageObject, fileLocation, messages, photos, index, object); isVisible = true; backgroundDrawable.setAlpha(255); @@ -1352,8 +1361,6 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat if(android.os.Build.VERSION.SDK_INT >= 11) { Utilities.lockOrientation(parentActivity); - animationInProgress = 1; - animatingImageView.setVisibility(View.VISIBLE); animatingImageView.setImageBitmap(object.thumb); @@ -1419,6 +1426,12 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat containerView.invalidate(); animatingImageView.setVisibility(View.GONE); Utilities.unlockOrientation(parentActivity); + if (showAfterAnimation != null) { + showAfterAnimation.imageReceiver.setVisible(true, true); + } + if (hideAfterAnimation != null) { + hideAfterAnimation.imageReceiver.setVisible(false, true); + } } }); animatorSet.start(); @@ -1437,6 +1450,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat } }); } else { + animationInProgress = 0; containerView.invalidate(); AnimationSet animationSet = new AnimationSet(true); AlphaAnimation animation = new AlphaAnimation(0.0f, 1.0f); 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 756ba743a..ff544b672 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 @@ -40,9 +40,21 @@ import java.util.ArrayList; public class ActionBarActivity extends Activity { + private class FrameLayoutAnimationListener extends FrameLayout { + public FrameLayoutAnimationListener(Context context) { + super(context); + } + + @Override + protected void onAnimationEnd() { + super.onAnimationEnd(); + ActionBarActivity.this.onAnimationEnd(); + } + } + protected ActionBar actionBar; - private FrameLayout containerView; - private FrameLayout containerViewBack; + private FrameLayoutAnimationListener containerView; + private FrameLayoutAnimationListener containerViewBack; protected FrameLayout contentView; private View shadowView; @@ -116,10 +128,10 @@ public class ActionBarActivity extends Activity { contentView = new FrameLayoutTouch(this); setContentView(contentView, new ViewGroup.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT)); - containerViewBack = new FrameLayout(this); + containerViewBack = new FrameLayoutAnimationListener(this); contentView.addView(containerViewBack); - containerView = new FrameLayout(this); + containerView = new FrameLayoutAnimationListener(this); contentView.addView(containerView); shadowView = new FrameLayout(this); @@ -172,7 +184,6 @@ public class ActionBarActivity extends Activity { lastFragment.onResume(); actionBar.setCurrentActionBarLayer(lastFragment.actionBarLayer); - onShowFragment(); } } @@ -198,7 +209,7 @@ public class ActionBarActivity extends Activity { lastFragment.setParentActivity(null); fragmentsStack.remove(fragmentsStack.size() - 1); - FrameLayout temp = containerView; + FrameLayoutAnimationListener temp = containerView; containerView = containerViewBack; containerViewBack = temp; ViewGroup parent = (ViewGroup)containerView.getParent(); @@ -391,6 +402,7 @@ public class ActionBarActivity extends Activity { public boolean checkTransitionAnimation() { if (transitionAnimationInProgress && transitionAnimationStartTime < System.currentTimeMillis() - 400) { transitionAnimationInProgress = false; + onAnimationEnd(); } return transitionAnimationInProgress; } @@ -465,6 +477,7 @@ public class ActionBarActivity extends Activity { } } } + containerViewBack.setVisibility(View.GONE); } public boolean presentFragment(BaseFragment fragment) { @@ -485,13 +498,10 @@ public class ActionBarActivity extends Activity { boolean needAnimation = openAnimation != null && !forceWithoutAnimation && getSharedPreferences("mainconfig", Activity.MODE_PRIVATE).getBoolean("view_animations", true); final BaseFragment currentFragment = !fragmentsStack.isEmpty() ? fragmentsStack.get(fragmentsStack.size() - 1) : null; - if (!needAnimation) { - presentFragmentInternalRemoveOld(removeLast, currentFragment); - } fragment.setParentActivity(this); View fragmentView = fragment.createView(getLayoutInflater(), null); - containerView.addView(fragmentView); + containerViewBack.addView(fragmentView); ViewGroup.LayoutParams layoutParams = fragmentView.getLayoutParams(); layoutParams.width = FrameLayout.LayoutParams.MATCH_PARENT; layoutParams.height = FrameLayout.LayoutParams.MATCH_PARENT; @@ -502,7 +512,19 @@ public class ActionBarActivity extends Activity { if (fragmentView.getBackground() == null) { fragmentView.setBackgroundColor(0xffffffff); } - onShowFragment(); + + FrameLayoutAnimationListener temp = containerView; + containerView = containerViewBack; + containerViewBack = temp; + containerView.setVisibility(View.VISIBLE); + ViewGroup parent = (ViewGroup)containerView.getParent(); + parent.removeView(containerView); + parent.addView(containerView, 1); + + if (!needAnimation) { + presentFragmentInternalRemoveOld(removeLast, currentFragment); + } + if (needAnimation) { transitionAnimationStartTime = System.currentTimeMillis(); transitionAnimationInProgress = true; @@ -514,23 +536,7 @@ public class ActionBarActivity extends Activity { } }; openAnimation.reset(); - openAnimation.setAnimationListener(new Animation.AnimationListener() { - @Override - public void onAnimationStart(Animation animation) { - - } - - @Override - public void onAnimationEnd(Animation animation) { - onOpenAnimationEnd(true); - } - - @Override - public void onAnimationRepeat(Animation animation) { - - } - }); - fragmentView.startAnimation(openAnimation); + containerView.startAnimation(openAnimation); } else { fragment.onOpenAnimationEnd(); } @@ -551,6 +557,10 @@ public class ActionBarActivity extends Activity { fragment.onFragmentDestroy(); fragment.setParentActivity(null); fragmentsStack.remove(fragment); + containerViewBack.setVisibility(View.GONE); + ViewGroup parent = (ViewGroup)containerView.getParent(); + parent.removeView(containerViewBack); + parent.addView(containerViewBack, 0); } public void closeLastFragment(boolean animated) { @@ -563,13 +573,15 @@ public class ActionBarActivity extends Activity { boolean needAnimation = animated && closeAnimation != null && getSharedPreferences("mainconfig", Activity.MODE_PRIVATE).getBoolean("view_animations", true); final BaseFragment currentFragment = fragmentsStack.get(fragmentsStack.size() - 1); BaseFragment previousFragment = fragmentsStack.get(fragmentsStack.size() - 2); - if (!needAnimation) { - closeLastFragmentInternalRemoveOld(currentFragment); - } + + FrameLayoutAnimationListener temp = containerView; + containerView = containerViewBack; + containerViewBack = temp; + containerView.setVisibility(View.VISIBLE); previousFragment.setParentActivity(this); View fragmentView = previousFragment.createView(getLayoutInflater(), null); - containerView.addView(fragmentView, 0); + containerView.addView(fragmentView); ViewGroup.LayoutParams layoutParams = fragmentView.getLayoutParams(); layoutParams.width = FrameLayout.LayoutParams.MATCH_PARENT; layoutParams.height = FrameLayout.LayoutParams.MATCH_PARENT; @@ -579,35 +591,22 @@ public class ActionBarActivity extends Activity { if (fragmentView.getBackground() == null) { fragmentView.setBackgroundColor(0xffffffff); } - onShowFragment(); + + if (!needAnimation) { + closeLastFragmentInternalRemoveOld(currentFragment); + } + if (needAnimation) { transitionAnimationStartTime = System.currentTimeMillis(); transitionAnimationInProgress = true; closeAnimation.reset(); - closeAnimation.setFillAfter(true); onCloseAnimationEndRunnable = new Runnable() { @Override public void run() { closeLastFragmentInternalRemoveOld(currentFragment); } }; - closeAnimation.setAnimationListener(new Animation.AnimationListener() { - @Override - public void onAnimationStart(Animation animation) { - - } - - @Override - public void onAnimationEnd(Animation animation) { - onCloseAnimationEnd(true); - } - - @Override - public void onAnimationRepeat(Animation animation) { - - } - }); - currentFragment.fragmentView.startAnimation(closeAnimation); + containerViewBack.startAnimation(closeAnimation); } } @@ -625,7 +624,6 @@ public class ActionBarActivity extends Activity { if (fragmentView.getBackground() == null) { fragmentView.setBackgroundColor(0xffffffff); } - onShowFragment(); } public void removeFragmentFromStack(BaseFragment fragment) { @@ -645,10 +643,6 @@ public class ActionBarActivity extends Activity { } - protected void onShowFragment() { - - } - public void showActionBar() { actionBar.setVisibility(View.VISIBLE); needLayout(); @@ -725,6 +719,11 @@ public class ActionBarActivity extends Activity { } } + private void onAnimationEnd() { + onCloseAnimationEnd(false); + onOpenAnimationEnd(false); + } + @Override public void startActivityForResult(final Intent intent, final int requestCode) { if (transitionAnimationInProgress) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/ActionBarMenuItem.java b/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/ActionBarMenuItem.java index 1a97a0407..33b977b7a 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/ActionBarMenuItem.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/ActionBarMenuItem.java @@ -128,13 +128,12 @@ public class ActionBarMenuItem extends ImageView { popupWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_UNSPECIFIED); popupLayout.measure(MeasureSpec.makeMeasureSpec(Utilities.dp(1000), MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(Utilities.dp(1000), MeasureSpec.AT_MOST)); } + popupWindow.setFocusable(true); if (popupLayout.getMeasuredWidth() == 0) { popupWindow.showAsDropDown(this, parentActionBar.getMeasuredWidth() - popupLayout.getMeasuredWidth() - getLeft() - parentMenu.getLeft(), 0); popupWindow.update(this, parentActionBar.getMeasuredWidth() - popupLayout.getMeasuredWidth() - getLeft() - parentMenu.getLeft(), 0, -1, -1); - popupWindow.setFocusable(true); } else { popupWindow.showAsDropDown(this, parentActionBar.getMeasuredWidth() - popupLayout.getMeasuredWidth() - getLeft() - parentMenu.getLeft(), 0); - popupWindow.setFocusable(true); } } diff --git a/TMessagesProj/src/main/res/values-pt-rBR/strings.xml b/TMessagesProj/src/main/res/values-pt-rBR/strings.xml index ff7b82f07..122fd1e7e 100644 --- a/TMessagesProj/src/main/res/values-pt-rBR/strings.xml +++ b/TMessagesProj/src/main/res/values-pt-rBR/strings.xml @@ -100,8 +100,8 @@ %s convidou você para uma conversa secreta. Você convidou %s para uma conversa secreta. Conversas secretas: - Utilizam criptografia ponta a ponta - Não deixam rasto em nossos servidores + Utilizam criptografia ponto a ponto + Não deixam rastro em nossos servidores Têm temporizador para a autodestruição das mensagens Não permitem o reencaminhamento %1$d nova mensagem