diff --git a/TMessagesProj/build.gradle b/TMessagesProj/build.gradle index 8eccd89d..40415de7 100644 --- a/TMessagesProj/build.gradle +++ b/TMessagesProj/build.gradle @@ -17,7 +17,7 @@ tasks.withType(JavaCompile) { } dependencies { - compile 'com.android.support:support-v4:20.0.+' + compile 'com.android.support:support-v4:21.0.+' compile 'com.google.android.gms:play-services:3.2.+' compile 'net.hockeyapp.android:HockeySDK:3.0.2' compile 'com.googlecode.mp4parser:isoparser:1.0.+' diff --git a/TMessagesProj/src/main/java/org/telegram/android/AndroidUtilities.java b/TMessagesProj/src/main/java/org/telegram/android/AndroidUtilities.java index ccaf8f10..84f46c41 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/AndroidUtilities.java +++ b/TMessagesProj/src/main/java/org/telegram/android/AndroidUtilities.java @@ -17,8 +17,10 @@ import android.content.res.Configuration; import android.graphics.Point; import android.graphics.Rect; import android.graphics.Typeface; +import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Environment; +import android.util.StateSet; import android.view.Display; import android.view.Surface; import android.view.View; @@ -491,4 +493,23 @@ public class AndroidUtilities { } } } + + public static void clearDrawableAnimation(View view) { + if (Build.VERSION.SDK_INT < 21 || view == null) { + return; + } + Drawable drawable = null; + if (view instanceof ListView) { + drawable = ((ListView) view).getSelector(); + if (drawable != null) { + drawable.setState(StateSet.NOTHING); + } + } else { + drawable = view.getBackground(); + if (drawable != null) { + drawable.setState(StateSet.NOTHING); + drawable.jumpToCurrentState(); + } + } + } } diff --git a/TMessagesProj/src/main/java/org/telegram/android/ContactsController.java b/TMessagesProj/src/main/java/org/telegram/android/ContactsController.java index 45a85ecf..ba0e4c0a 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/ContactsController.java +++ b/TMessagesProj/src/main/java/org/telegram/android/ContactsController.java @@ -54,6 +54,11 @@ public class ContactsController { private String inviteText; private boolean updatingInviteText = false; + private int loadingDeleteInfo = 0; + private int deleteAccountTTL; + private int loadingLastSeenInfo = 0; + private ArrayList privacyRules = null; + public static class Contact { public int id; public ArrayList phones = new ArrayList(); @@ -119,6 +124,10 @@ public class ContactsController { contactsLoaded = false; contactsBookLoaded = false; lastContactsVersions = ""; + loadingDeleteInfo = 0; + deleteAccountTTL = 0; + loadingLastSeenInfo = 0; + privacyRules = null; } public void checkInviteText() { @@ -1568,6 +1577,81 @@ public class ContactsController { }, true, RPCRequest.RPCRequestClassGeneric); } + public void loadPrivacySettings() { + if (loadingDeleteInfo == 0) { + loadingDeleteInfo = 1; + TLRPC.TL_account_getAccountTTL req = new TLRPC.TL_account_getAccountTTL(); + ConnectionsManager.getInstance().performRpc(req, new RPCRequest.RPCRequestDelegate() { + @Override + public void run(final TLObject response, final TLRPC.TL_error error) { + AndroidUtilities.runOnUIThread(new Runnable() { + @Override + public void run() { + if (error == null) { + TLRPC.TL_accountDaysTTL ttl = (TLRPC.TL_accountDaysTTL) response; + deleteAccountTTL = ttl.days; + loadingDeleteInfo = 2; + } else { + loadingDeleteInfo = 0; + } + NotificationCenter.getInstance().postNotificationName(NotificationCenter.privacyRulesUpdated); + } + }); + } + }); + } + if (loadingLastSeenInfo == 0) { + loadingLastSeenInfo = 1; + TLRPC.TL_account_getPrivacy req = new TLRPC.TL_account_getPrivacy(); + req.key = new TLRPC.TL_inputPrivacyKeyStatusTimestamp(); + ConnectionsManager.getInstance().performRpc(req, new RPCRequest.RPCRequestDelegate() { + @Override + public void run(final TLObject response, final TLRPC.TL_error error) { + AndroidUtilities.runOnUIThread(new Runnable() { + @Override + public void run() { + if (error == null) { + TLRPC.TL_account_privacyRules rules = (TLRPC.TL_account_privacyRules) response; + MessagesController.getInstance().putUsers(rules.users, false); + privacyRules = rules.rules; + loadingLastSeenInfo = 2; + } else { + loadingLastSeenInfo = 0; + } + NotificationCenter.getInstance().postNotificationName(NotificationCenter.privacyRulesUpdated); + } + }); + } + }); + } + NotificationCenter.getInstance().postNotificationName(NotificationCenter.privacyRulesUpdated); + } + + public void setDeleteAccountTTL(int ttl) { + deleteAccountTTL = ttl; + } + + public int getDeleteAccountTTL() { + return deleteAccountTTL; + } + + public boolean getLoadingDeleteInfo() { + return loadingDeleteInfo != 2; + } + + public boolean getLoadingLastSeenInfo() { + return loadingLastSeenInfo != 2; + } + + public ArrayList getPrivacyRules() { + return privacyRules; + } + + public void setPrivacyRules(ArrayList rules) { + privacyRules = rules; + NotificationCenter.getInstance().postNotificationName(NotificationCenter.privacyRulesUpdated); + } + public static String formatName(String firstName, String lastName) { String result = null; if (LocaleController.nameDisplayOrder == 1) { diff --git a/TMessagesProj/src/main/java/org/telegram/android/ImageReceiver.java b/TMessagesProj/src/main/java/org/telegram/android/ImageReceiver.java index 36aeb355..21229633 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/ImageReceiver.java +++ b/TMessagesProj/src/main/java/org/telegram/android/ImageReceiver.java @@ -427,4 +427,8 @@ public class ImageReceiver { bitmapRect = null; } } + + public int getRoundRadius() { + return roundRadius; + } } diff --git a/TMessagesProj/src/main/java/org/telegram/android/LocaleController.java b/TMessagesProj/src/main/java/org/telegram/android/LocaleController.java index fb20c948..6e47fe01 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/LocaleController.java +++ b/TMessagesProj/src/main/java/org/telegram/android/LocaleController.java @@ -783,7 +783,7 @@ public class LocaleController { public static String formatUserStatus(TLRPC.User user) { if (user == null || user.status == null || user.status.expires == 0 || user instanceof TLRPC.TL_userDeleted || user instanceof TLRPC.TL_userEmpty) { - return getString("Offline", R.string.Offline); + return getString("ALongTimeAgo", R.string.ALongTimeAgo); } else { int currentTime = ConnectionsManager.getInstance().getCurrentTime(); if (user.status.expires > currentTime) { @@ -791,7 +791,13 @@ public class LocaleController { } else { if (user.status.expires == -1) { return getString("Invisible", R.string.Invisible); - } else { + } else if (user.status.expires == -100) { + return getString("Lately", R.string.Lately); + } else if (user.status.expires == -101) { + return getString("WithinAWeek", R.string.WithinAWeek); + } else if (user.status.expires == -102) { + return getString("WithinAMonth", R.string.WithinAMonth); + } else { return formatDateOnline(user.status.expires); } } diff --git a/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java b/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java index f6332c27..27fb562f 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java +++ b/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java @@ -60,7 +60,6 @@ public class MessagesController implements NotificationCenter.NotificationCenter public boolean loadingBlockedUsers = false; public ArrayList blockedUsers = new ArrayList(); - public HashMap hidenAddToContacts = new HashMap(); private HashMap acceptingChats = new HashMap(); private ArrayList updatesQueue = new ArrayList(); private ArrayList pendingEncMessagesToDelete = new ArrayList(); @@ -317,7 +316,6 @@ public class MessagesController implements NotificationCenter.NotificationCenter printingStrings.clear(); totalDialogsCount = 0; lastPrintingStringCount = 0; - hidenAddToContacts.clear(); updatesQueue.clear(); pendingEncMessagesToDelete.clear(); delayedEncryptedChatUpdates.clear(); @@ -391,7 +389,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter if (user == null) { return false; } - fromCache = fromCache && user.id / 1000 != 333; + fromCache = fromCache && user.id / 1000 != 333 && user.id != 777000; TLRPC.User oldUser = users.get(user.id); if (!fromCache) { users.put(user.id, user); @@ -758,6 +756,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter if (user != null) { user.photo = UserConfig.getCurrentUser().photo; } + NotificationCenter.getInstance().postNotificationName(NotificationCenter.mainUserInfoChanged); NotificationCenter.getInstance().postNotificationName(NotificationCenter.updateInterfaces, MessagesController.UPDATE_MASK_ALL); ConnectionsManager.getInstance().performRpc(req, new RPCRequest.RPCRequestDelegate() { @Override @@ -1379,7 +1378,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter if (!isCache) { MessagesStorage.getInstance().putMessages(messagesRes, dialog_id); } - if (lower_id != 0 && isCache && messagesRes.messages.size() == 0 && (load_type == 0 || load_type == 3)) { + if (lower_id != 0 && isCache && messagesRes.messages.size() == 0 && (load_type == 0 || load_type == 2 || load_type == 3)) { AndroidUtilities.runOnUIThread(new Runnable() { @Override public void run() { @@ -3242,6 +3241,8 @@ public class MessagesController implements NotificationCenter.NotificationCenter } arr.add(obj); pushMessages.add(obj); + } else if (update instanceof TLRPC.TL_updatePrivacy) { + updatesOnMainThread.add(update); } } if (!messages.isEmpty()) { @@ -3299,7 +3300,18 @@ public class MessagesController implements NotificationCenter.NotificationCenter TLRPC.User toDbUser = new TLRPC.User(); toDbUser.id = update.user_id; TLRPC.User currentUser = getUser(update.user_id); - if (update instanceof TLRPC.TL_updateUserStatus) { + if (update instanceof TLRPC.TL_updatePrivacy) { + if (update.key instanceof TLRPC.TL_privacyKeyStatusTimestamp) { + ContactsController.getInstance().setPrivacyRules(update.rules); + } + } else if (update instanceof TLRPC.TL_updateUserStatus) { + if (update.status instanceof TLRPC.TL_userStatusRecently) { + update.status.expires = -100; + } else if (update.status instanceof TLRPC.TL_userStatusLastWeek) { + update.status.expires = -101; + } else if (update.status instanceof TLRPC.TL_userStatusLastMonth) { + update.status.expires = -102; + } if (currentUser != null) { currentUser.id = update.user_id; currentUser.status = update.status; diff --git a/TMessagesProj/src/main/java/org/telegram/android/NotificationCenter.java b/TMessagesProj/src/main/java/org/telegram/android/NotificationCenter.java index d85db21c..661e5ff2 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/NotificationCenter.java +++ b/TMessagesProj/src/main/java/org/telegram/android/NotificationCenter.java @@ -41,6 +41,8 @@ public class NotificationCenter { public static final int hideEmojiKeyboard = 30; public static final int stopEncodingService = 31; public static final int didCreatedNewDeleteTask = 32; + public static final int mainUserInfoChanged = 33; + public static final int privacyRulesUpdated = 34; public static final int wallpapersDidLoaded = 171; public static final int closeOtherAppActivities = 702; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBar.java b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBar.java index 2c0c69e9..2fc14521 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBar.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBar.java @@ -17,7 +17,6 @@ import android.view.Gravity; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; -import android.view.ViewGroup; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; @@ -38,8 +37,6 @@ public class ActionBar extends FrameLayout { } } - private static boolean withStatusBar = Build.VERSION.SDK_INT >= 21; - private FrameLayout titleFrameLayout; private ImageView backButtonImageView; private TextView titleTextView; @@ -47,6 +44,7 @@ public class ActionBar extends FrameLayout { private ActionBarMenu menu; private ActionBarMenu actionMode; private View actionOverlay; + private boolean occupyStatusBar = Build.VERSION.SDK_INT >= 21; protected boolean isSearchFieldVisible; protected int itemsBackgroundResourceId; @@ -64,9 +62,6 @@ public class ActionBar extends FrameLayout { layoutParams.width = LayoutParams.WRAP_CONTENT; layoutParams.height = LayoutParams.FILL_PARENT; layoutParams.gravity = Gravity.TOP | Gravity.LEFT; - if (withStatusBar) { - layoutParams.topMargin = AndroidUtilities.statusBarHeight; - } titleFrameLayout.setLayoutParams(layoutParams); titleFrameLayout.setPadding(0, 0, AndroidUtilities.dp(4), 0); titleFrameLayout.setEnabled(false); @@ -162,8 +157,9 @@ public class ActionBar extends FrameLayout { subTitleTextView.setLayoutParams(layoutParams); } - ViewGroup.LayoutParams layoutParams1 = titleFrameLayout.getLayoutParams(); + MarginLayoutParams layoutParams1 = (MarginLayoutParams) titleFrameLayout.getLayoutParams(); layoutParams1.width = x + maxTextWidth + (isSearchFieldVisible ? 0 : AndroidUtilities.dp(6)); + layoutParams1.topMargin = occupyStatusBar ? AndroidUtilities.statusBarHeight : 0; titleFrameLayout.setLayoutParams(layoutParams1); } @@ -175,9 +171,7 @@ public class ActionBar extends FrameLayout { layoutParams.width = isSearchFieldVisible ? LayoutParams.MATCH_PARENT : LayoutParams.WRAP_CONTENT; layoutParams.height = height; layoutParams.leftMargin = isSearchFieldVisible ? AndroidUtilities.dp(54) : 0; - if (withStatusBar) { - layoutParams.topMargin = AndroidUtilities.statusBarHeight; - } + layoutParams.topMargin = occupyStatusBar ? AndroidUtilities.statusBarHeight : 0; menu.setLayoutParams(layoutParams); menu.measure(width, height); } @@ -330,9 +324,7 @@ public class ActionBar extends FrameLayout { FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams)view.getLayoutParams(); layoutParams.width = LayoutParams.FILL_PARENT; layoutParams.height = LayoutParams.FILL_PARENT; - if (withStatusBar) { - layoutParams.topMargin = AndroidUtilities.statusBarHeight; - } + layoutParams.topMargin = occupyStatusBar ? AndroidUtilities.statusBarHeight : 0; view.setLayoutParams(layoutParams); } @@ -343,13 +335,11 @@ public class ActionBar extends FrameLayout { actionMode = new ActionBarMenu(getContext(), this); actionMode.setBackgroundResource(R.drawable.editheader); addView(actionMode); + actionMode.setPadding(0, occupyStatusBar ? AndroidUtilities.statusBarHeight : 0, 0, 0); FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams)actionMode.getLayoutParams(); layoutParams.height = LayoutParams.FILL_PARENT; layoutParams.width = LayoutParams.FILL_PARENT; layoutParams.gravity = Gravity.RIGHT; - if (withStatusBar) { - layoutParams.topMargin = AndroidUtilities.statusBarHeight; - } actionMode.setLayoutParams(layoutParams); actionMode.setVisibility(GONE); return actionMode; @@ -414,9 +404,7 @@ public class ActionBar extends FrameLayout { positionMenu(MeasureSpec.getSize(widthMeasureSpec), actionBarHeight); positionTitle(MeasureSpec.getSize(widthMeasureSpec), actionBarHeight); positionBackOverlay(MeasureSpec.getSize(widthMeasureSpec), actionBarHeight); - if (Build.VERSION.SDK_INT >= 21) { - actionBarHeight += AndroidUtilities.statusBarHeight; - } + actionBarHeight += occupyStatusBar ? AndroidUtilities.statusBarHeight : 0; super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(actionBarHeight + extraHeight, MeasureSpec.EXACTLY)); } @@ -495,14 +483,20 @@ public class ActionBar extends FrameLayout { layoutParams.height = LayoutParams.MATCH_PARENT; actionOverlay.setLayoutParams(layoutParams); actionOverlay.measure(widthMeasureSpec, heightMeasureSpec); - if (withStatusBar) { - layoutParams.topMargin = AndroidUtilities.statusBarHeight; - } + layoutParams.topMargin = occupyStatusBar ? AndroidUtilities.statusBarHeight : 0; layoutParams.width = Math.min(actionOverlay.getMeasuredWidth() + AndroidUtilities.dp(4), widthMeasureSpec - (menu != null ? menu.getMeasuredWidth() : 0)); actionOverlay.setLayoutParams(layoutParams); } } + public void setOccupyStatusBar(boolean value) { + occupyStatusBar = value; + } + + public boolean getOccupyStatusBar() { + return occupyStatusBar; + } + public void setItemsBackground(int resourceId) { itemsBackgroundResourceId = resourceId; if (backButtonImageView != null) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarLayout.java b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarLayout.java index 6a9bb5b0..dc1641d7 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarLayout.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarLayout.java @@ -56,14 +56,46 @@ public class ActionBarLayout extends FrameLayout { setOrientation(VERTICAL); } - /*@Override + @Override protected boolean drawChild(Canvas canvas, View child, long drawingTime) { - int saveCount = canvas.save(); - canvas.clipRect(0, 0, getWidth(), getHeight()); - boolean result = super.drawChild(canvas, child, drawingTime); - canvas.restoreToCount(saveCount); - return result; - }*/ + if (child instanceof ActionBar) { + return super.drawChild(canvas, child, drawingTime); + } else { + boolean wasActionBar = false; + int actionBarHeight = 0; + int childCount = getChildCount(); + for (int a = 0; a < childCount; a++) { + View view = getChildAt(a); + if (view == child) { + continue; + } + if (view instanceof ActionBar) { + actionBarHeight = view.getMeasuredHeight(); + wasActionBar = true; + break; + } + } + /*if (!wasActionBar) { + if (child instanceof ViewGroup) { + ViewGroup viewGroup = (ViewGroup) child; + childCount = viewGroup.getChildCount(); + for (int a = 0; a < childCount; a++) { + View possibleActionBar = viewGroup.getChildAt(a); + if (possibleActionBar instanceof ActionBar) { + actionBarHeight = possibleActionBar.getMeasuredHeight(); + break; + } + } + } + }*/ + boolean result = super.drawChild(canvas, child, drawingTime); + if (actionBarHeight != 0 && headerShadowDrawable != null) { + headerShadowDrawable.setBounds(0, actionBarHeight, getMeasuredWidth(), actionBarHeight + headerShadowDrawable.getIntrinsicHeight()); + headerShadowDrawable.draw(canvas); + } + return result; + } + } } private static Drawable headerShadowDrawable; @@ -79,21 +111,22 @@ public class ActionBarLayout extends FrameLayout { public float innerTranslationX; - private boolean maybeStartTracking = false; - protected boolean startedTracking = false; + private boolean maybeStartTracking; + protected boolean startedTracking; private int startedTrackingX; private int startedTrackingY; - protected boolean animationInProgress = false; - private VelocityTracker velocityTracker = null; - private boolean beginTrackingSent = false; - private boolean transitionAnimationInProgress = false; + protected boolean animationInProgress; + private VelocityTracker velocityTracker; + private boolean beginTrackingSent; + private boolean transitionAnimationInProgress; private long transitionAnimationStartTime; - private boolean inActionMode = false; + private boolean inActionMode; private int startedTrackingPointerId; - private Runnable onCloseAnimationEndRunnable = null; - private Runnable onOpenAnimationEndRunnable = null; - private boolean useAlphaAnimations = false; + private Runnable onCloseAnimationEndRunnable; + private Runnable onOpenAnimationEndRunnable; + private boolean useAlphaAnimations; private View backgroundView; + private boolean removeActionBarExtraHeight; private ActionBarLayoutDelegate delegate = null; protected Activity parentActivity = null; @@ -106,6 +139,7 @@ public class ActionBarLayout extends FrameLayout { if (layerShadowDrawable == null) { layerShadowDrawable = getResources().getDrawable(R.drawable.layer_shadow); + headerShadowDrawable = getResources().getDrawable(R.drawable.header_shadow); scrimPaint = new Paint(); } } @@ -113,7 +147,6 @@ public class ActionBarLayout extends FrameLayout { public void init(ArrayList stack) { fragmentsStack = stack; containerViewBack = new LinearLayoutContainer(parentActivity); - //containerViewBack.setOrientation(LinearLayout.VERTICAL); addView(containerViewBack); FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) containerViewBack.getLayoutParams(); layoutParams.width = LayoutParams.MATCH_PARENT; @@ -122,7 +155,6 @@ public class ActionBarLayout extends FrameLayout { containerViewBack.setLayoutParams(layoutParams); containerView = new LinearLayoutContainer(parentActivity); - //containerView.setOrientation(LinearLayout.VERTICAL); addView(containerView); layoutParams = (FrameLayout.LayoutParams) containerView.getLayoutParams(); layoutParams.width = LayoutParams.MATCH_PARENT; @@ -199,10 +231,10 @@ public class ActionBarLayout extends FrameLayout { @Override protected boolean drawChild(Canvas canvas, View child, long drawingTime) { - int width = getWidth(); - int translationX = (int) innerTranslationX; - int clipLeft = 0; - int clipRight = width; + int width = getWidth() - getPaddingLeft() - getPaddingRight(); + int translationX = (int) innerTranslationX + getPaddingRight(); + int clipLeft = getPaddingLeft(); + int clipRight = width + getPaddingLeft(); if (child == containerViewBack) { clipRight = translationX; @@ -296,6 +328,9 @@ public class ActionBarLayout extends FrameLayout { if (parent != null) { parent.removeView(lastFragment.actionBar); } + if (removeActionBarExtraHeight) { + lastFragment.actionBar.setOccupyStatusBar(false); + } containerViewBack.addView(lastFragment.actionBar); } containerViewBack.addView(fragmentView); @@ -513,15 +548,15 @@ public class ActionBarLayout extends FrameLayout { NotificationCenter.getInstance().postNotificationName(NotificationCenter.hideEmojiKeyboard); } boolean needAnimation = Build.VERSION.SDK_INT > 10 && !forceWithoutAnimation && parentActivity.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE).getBoolean("view_animations", true); - if (useAlphaAnimations && fragmentsStack.size() == 0) { - needAnimation = false; - } final BaseFragment currentFragment = !fragmentsStack.isEmpty() ? fragmentsStack.get(fragmentsStack.size() - 1) : null; fragment.setParentLayout(this); View fragmentView = fragment.createView(parentActivity.getLayoutInflater(), null); if (fragment.needAddActionBar() && fragment.actionBar != null) { + if (removeActionBarExtraHeight) { + fragment.actionBar.setOccupyStatusBar(false); + } containerViewBack.addView(fragment.actionBar); } containerViewBack.addView(fragmentView); @@ -553,8 +588,6 @@ public class ActionBarLayout extends FrameLayout { if (needAnimation) { if (useAlphaAnimations && fragmentsStack.size() == 1) { presentFragmentInternalRemoveOld(removeLast, currentFragment); - AnimatorSetProxy animatorSet = new AnimatorSetProxy(); - animatorSet.playTogether(); ArrayList animators = new ArrayList(); animators.add(ObjectAnimatorProxy.ofFloat(this, "alpha", 0.0f, 1.0f)); @@ -639,9 +672,6 @@ public class ActionBarLayout extends FrameLayout { AndroidUtilities.hideKeyboard(parentActivity.getCurrentFocus()); } boolean needAnimation = Build.VERSION.SDK_INT > 10 && animated && parentActivity.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE).getBoolean("view_animations", true); - if (useAlphaAnimations && fragmentsStack.size() == 1) { - needAnimation = false; - } final BaseFragment currentFragment = fragmentsStack.get(fragmentsStack.size() - 1); BaseFragment previousFragment = null; if (fragmentsStack.size() > 1) { @@ -657,6 +687,9 @@ public class ActionBarLayout extends FrameLayout { previousFragment.setParentLayout(this); View fragmentView = previousFragment.createView(parentActivity.getLayoutInflater(), null); if (previousFragment.needAddActionBar() && previousFragment.actionBar != null) { + if (removeActionBarExtraHeight) { + previousFragment.actionBar.setOccupyStatusBar(false); + } containerView.addView(previousFragment.actionBar); } containerView.addView(fragmentView); @@ -700,7 +733,7 @@ public class ActionBarLayout extends FrameLayout { currentAnimation.start(); } } else { - if (needAnimation && useAlphaAnimations) { + if (useAlphaAnimations) { transitionAnimationStartTime = System.currentTimeMillis(); transitionAnimationInProgress = true; @@ -712,6 +745,9 @@ public class ActionBarLayout extends FrameLayout { if (backgroundView != null) { backgroundView.setVisibility(GONE); } + if (drawerLayoutContainer != null) { + drawerLayoutContainer.setAllowOpenDrawer(true); + } } }; @@ -750,6 +786,9 @@ public class ActionBarLayout extends FrameLayout { previousFragment.setParentLayout(this); View fragmentView = previousFragment.createView(parentActivity.getLayoutInflater(), null); if (previousFragment.needAddActionBar() && previousFragment.actionBar != null) { + if (removeActionBarExtraHeight) { + previousFragment.actionBar.setOccupyStatusBar(false); + } containerView.addView(previousFragment.actionBar); } containerView.addView(fragmentView); @@ -891,4 +930,8 @@ public class ActionBarLayout extends FrameLayout { public DrawerLayoutContainer getDrawerLayoutContainer() { return drawerLayoutContainer; } + + public void setRemoveActionBarExtraHeight(boolean value) { + removeActionBarExtraHeight = value; + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenu.java b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenu.java index fe678124..8af54572 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenu.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenu.java @@ -9,6 +9,7 @@ package org.telegram.ui.ActionBar; import android.content.Context; +import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; @@ -58,19 +59,31 @@ public class ActionBarMenu extends LinearLayout { return view; } + public ActionBarMenuItem addItem(int id, Drawable drawable) { + return addItem(id, 0, parentActionBar.itemsBackgroundResourceId, drawable, AndroidUtilities.dp(48)); + } + public ActionBarMenuItem addItem(int id, int icon) { return addItem(id, icon, parentActionBar.itemsBackgroundResourceId); } public ActionBarMenuItem addItem(int id, int icon, int backgroundResource) { - return addItem(id, icon, parentActionBar.itemsBackgroundResourceId, AndroidUtilities.dp(48)); + return addItem(id, icon, backgroundResource, null, AndroidUtilities.dp(48)); } - public ActionBarMenuItem addItem(int id, int icon, int backgroundResource, int width) { + public ActionBarMenuItem addItemWithWidth(int id, int icon, int width) { + return addItem(id, icon, parentActionBar.itemsBackgroundResourceId, null, width); + } + + public ActionBarMenuItem addItem(int id, int icon, int backgroundResource, Drawable drawable, int width) { ActionBarMenuItem menuItem = new ActionBarMenuItem(getContext(), this, backgroundResource); menuItem.setTag(id); menuItem.setScaleType(ImageView.ScaleType.CENTER); - menuItem.setImageResource(icon); + if (drawable != null) { + menuItem.setImageDrawable(drawable); + } else { + menuItem.setImageResource(icon); + } addView(menuItem); LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams)menuItem.getLayoutParams(); layoutParams.height = FrameLayout.LayoutParams.MATCH_PARENT; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenuItem.java b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenuItem.java index 92d0a143..ba83613b 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenuItem.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBarMenuItem.java @@ -54,7 +54,7 @@ public class ActionBarMenuItem extends ImageView { private View selectedMenuView; private Runnable showMenuRunnable; private boolean showFromBottom; - private int height; + private int menuHeight = AndroidUtilities.dp(16); public ActionBarMenuItem(Context context, ActionBarMenu menu, int background) { super(context); @@ -135,7 +135,7 @@ public class ActionBarMenuItem extends ImageView { showFromBottom = value; } - public void addSubItem(int id, String text, int icon) { + public TextView addSubItem(int id, String text, int icon) { if (popupLayout == null) { rect = new Rect(); location = new int[2]; @@ -166,7 +166,7 @@ public class ActionBarMenuItem extends ImageView { }); } TextView textView = new TextView(getContext()); - textView.setTextColor(0xff000000); + textView.setTextColor(0xff212121); textView.setBackgroundResource(R.drawable.list_selector); if (!LocaleController.isRTL) { textView.setGravity(Gravity.CENTER_VERTICAL); @@ -203,6 +203,8 @@ public class ActionBarMenuItem extends ImageView { } } }); + menuHeight += layoutParams.height; + return textView; } public boolean hasSubMenu() { @@ -245,25 +247,31 @@ public class ActionBarMenuItem extends ImageView { popupWindow.setFocusable(true); if (popupLayout.getMeasuredWidth() == 0) { if (showFromBottom) { - popupWindow.showAsDropDown(this, -popupLayout.getMeasuredWidth() + getMeasuredWidth() + AndroidUtilities.dp(12), -popupLayout.getMeasuredHeight() + AndroidUtilities.dp(12)); - popupWindow.update(this, -popupLayout.getMeasuredWidth() + getMeasuredWidth() + AndroidUtilities.dp(12), -popupLayout.getMeasuredHeight() + AndroidUtilities.dp(12), -1, -1); - height = popupLayout.getMeasuredHeight(); + popupWindow.showAsDropDown(this, -popupLayout.getMeasuredWidth() + getMeasuredWidth() + AndroidUtilities.dp(14), getBottomOffsetY()); + popupWindow.update(this, -popupLayout.getMeasuredWidth() + getMeasuredWidth() + AndroidUtilities.dp(14), getBottomOffsetY(), -1, -1); } else { popupWindow.showAsDropDown(this, parentMenu.parentActionBar.getMeasuredWidth() - popupLayout.getMeasuredWidth() - getLeft() - parentMenu.getLeft(), -getMeasuredHeight()); popupWindow.update(this, parentMenu.parentActionBar.getMeasuredWidth() - popupLayout.getMeasuredWidth() - getLeft() - parentMenu.getLeft(), -getMeasuredHeight(), -1, -1); } } else { if (showFromBottom) { - if (height == 0) { - height = popupLayout.getMeasuredHeight(); - } - popupWindow.showAsDropDown(this, -popupLayout.getMeasuredWidth() + getMeasuredWidth() + AndroidUtilities.dp(12), -height + AndroidUtilities.dp(12)); + popupWindow.showAsDropDown(this, -popupLayout.getMeasuredWidth() + getMeasuredWidth() + AndroidUtilities.dp(14), getBottomOffsetY()); } else { popupWindow.showAsDropDown(this, parentMenu.parentActionBar.getMeasuredWidth() - popupLayout.getMeasuredWidth() - getLeft() - parentMenu.getLeft(), -getMeasuredHeight()); } } } + private int getBottomOffsetY() { + getLocationOnScreen(location); + int diff = location[1] - (Build.VERSION.SDK_INT >= 21 ? AndroidUtilities.statusBarHeight : 0) + getMeasuredHeight() - menuHeight; + int y = AndroidUtilities.dp(8) - menuHeight; + if (diff < 0) { + y -= diff; + } + return y; + } + public boolean toggleSearch() { if (searchField == null) { return false; @@ -407,7 +415,7 @@ public class ActionBarMenuItem extends ImageView { super.onLayout(changed, left, top, right, bottom); if (popupWindow != null && popupWindow.isShowing()) { if (showFromBottom) { - popupWindow.update(this, -popupLayout.getMeasuredWidth() + getMeasuredWidth() + AndroidUtilities.dp(12), -height + AndroidUtilities.dp(12), -1, -1); + popupWindow.update(this, -popupLayout.getMeasuredWidth() + getMeasuredWidth() + AndroidUtilities.dp(14), getBottomOffsetY(), -1, -1); } else { popupWindow.update(this, parentMenu.parentActionBar.getMeasuredWidth() - popupLayout.getMeasuredWidth() - getLeft() - parentMenu.getLeft(), -getMeasuredHeight(), -1, -1); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/DrawerLayoutContainer.java b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/DrawerLayoutContainer.java index d67db6c3..aeada83f 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/DrawerLayoutContainer.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ActionBar/DrawerLayoutContainer.java @@ -320,7 +320,7 @@ public class DrawerLayoutContainer extends FrameLayout { } } } - if (startedTracking) { + if (startedTracking || drawerPosition != 0 && drawerPosition != drawerLayout.getMeasuredWidth()) { float velX = velocityTracker.getXVelocity(); float velY = velocityTracker.getYVelocity(); boolean backAnimation = drawerPosition < drawerLayout.getMeasuredWidth() / 2.0f && (velX < 1500 || Math.abs(velX) < Math.abs(velY)) || velX < 0 && Math.abs(velX) >= 1500; @@ -458,9 +458,11 @@ public class DrawerLayoutContainer extends FrameLayout { canvas.drawRect(clipLeft, 0, clipRight, getHeight(), scrimPaint); } else if (shadowLeft != null) { final float alpha = Math.max(0, Math.min((float) drawerPosition / AndroidUtilities.dp(20), 1.0f)); - shadowLeft.setBounds(drawerPosition, child.getTop(), drawerPosition + shadowLeft.getIntrinsicWidth(), child.getBottom()); - shadowLeft.setAlpha((int) (0xff * alpha)); - shadowLeft.draw(canvas); + if (alpha != 0) { + shadowLeft.setBounds(drawerPosition, child.getTop(), drawerPosition + shadowLeft.getIntrinsicWidth(), child.getBottom()); + shadowLeft.setAlpha((int) (0xff * alpha)); + shadowLeft.draw(canvas); + } } return result; } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/ContactsSearchAdapter.java b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/ContactsSearchAdapter.java index aa68e357..d9999a6a 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/ContactsSearchAdapter.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/ContactsSearchAdapter.java @@ -247,6 +247,7 @@ public class ContactsSearchAdapter extends BaseContactsSearchAdapter { ((UserCell) view).setChecked(checkedMap.containsKey(user.id)); } } else { + ((ProfileSearchCell) view).setData(user, null, null, name, username); ((ProfileSearchCell) view).useSeparator = (i != getCount() - 1 && i != searchResult.size() - 1); if (ignoreUsers != null) { if (ignoreUsers.containsKey(user.id)) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/AnimationCompat/AnimatorSetProxy.java b/TMessagesProj/src/main/java/org/telegram/ui/AnimationCompat/AnimatorSetProxy.java index be53d82d..50ac0c1d 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/AnimationCompat/AnimatorSetProxy.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/AnimationCompat/AnimatorSetProxy.java @@ -18,12 +18,33 @@ import org.telegram.ui.Animation.AnimatorListenerAdapter10; import org.telegram.ui.Animation.AnimatorSet10; import org.telegram.ui.Animation.View10; +import java.lang.reflect.Array; import java.util.ArrayList; -import java.util.Arrays; public class AnimatorSetProxy { + private Object animatorSet; + public static T[] copyOf(U[] original, int newLength, Class newType) { + return copyOfRange(original, 0, newLength, newType); + } + + @SuppressWarnings("unchecked") + public static T[] copyOfRange(U[] original, int start, int end, Class newType) { + if (start > end) { + throw new IllegalArgumentException(); + } + int originalLength = original.length; + if (start < 0 || start > originalLength) { + throw new ArrayIndexOutOfBoundsException(); + } + int resultLength = end - start; + int copyLength = Math.min(resultLength, originalLength - start); + T[] result = (T[]) Array.newInstance(newType.getComponentType(), resultLength); + System.arraycopy(original, start, result, 0, copyLength); + return result; + } + public AnimatorSetProxy() { if (View10.NEED_PROXY) { animatorSet = new AnimatorSet10(); @@ -32,12 +53,13 @@ public class AnimatorSetProxy { } } + @SuppressWarnings("unchecked") public void playTogether(Object... items) { if (View10.NEED_PROXY) { - Animator10[] animators = Arrays.copyOf(items, items.length, Animator10[].class); + Animator10[] animators = copyOf(items, items.length, Animator10[].class); ((AnimatorSet10) animatorSet).playTogether(animators); } else { - Animator[] animators = Arrays.copyOf(items, items.length, Animator[].class); + Animator[] animators = copyOf(items, items.length, Animator[].class); ((AnimatorSet) animatorSet).playTogether(animators); } } @@ -98,4 +120,9 @@ public class AnimatorSetProxy { ((AnimatorSet) animatorSet).setInterpolator(interpolator); } } + + @Override + public boolean equals(Object o) { + return animatorSet == o; + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/AnimationCompat/ObjectAnimatorProxy.java b/TMessagesProj/src/main/java/org/telegram/ui/AnimationCompat/ObjectAnimatorProxy.java index cd4df17e..d4432f09 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/AnimationCompat/ObjectAnimatorProxy.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/AnimationCompat/ObjectAnimatorProxy.java @@ -8,9 +8,11 @@ package org.telegram.ui.AnimationCompat; +import android.animation.AnimatorListenerAdapter; import android.animation.ObjectAnimator; import android.view.animation.Interpolator; +import org.telegram.ui.Animation.AnimatorListenerAdapter10; import org.telegram.ui.Animation.ObjectAnimator10; import org.telegram.ui.Animation.View10; @@ -110,4 +112,13 @@ public class ObjectAnimatorProxy { ((ObjectAnimator) objectAnimator).cancel(); } } + + public ObjectAnimatorProxy addListener(AnimatorListenerAdapterProxy listener) { + if (View10.NEED_PROXY) { + ((ObjectAnimator10) objectAnimator).addListener((AnimatorListenerAdapter10) listener.animatorListenerAdapter); + } else { + ((ObjectAnimator) objectAnimator).addListener((AnimatorListenerAdapter) listener.animatorListenerAdapter); + } + return this; + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/BlockedUsersActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/BlockedUsersActivity.java index 5d361b09..42130077 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/BlockedUsersActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/BlockedUsersActivity.java @@ -38,6 +38,7 @@ import org.telegram.ui.ActionBar.ActionBarMenu; import org.telegram.ui.ActionBar.BaseFragment; public class BlockedUsersActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate, ContactsActivity.ContactsActivityDelegate { + private ListView listView; private ListAdapter listViewAdapter; private FrameLayout progressView; @@ -93,7 +94,7 @@ public class BlockedUsersActivity extends BaseFragment implements NotificationCe emptyTextView = new TextView(getParentActivity()); emptyTextView.setTextColor(0xff808080); - emptyTextView.setTextSize(24); + emptyTextView.setTextSize(20); emptyTextView.setGravity(Gravity.CENTER); emptyTextView.setVisibility(View.INVISIBLE); emptyTextView.setText(LocaleController.getString("NoBlocked", R.string.NoBlocked)); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatActionCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatActionCell.java index 8570dc30..2f12ebf4 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatActionCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatActionCell.java @@ -74,6 +74,7 @@ public class ChatActionCell extends BaseCell { textPaint.linkColor = 0xffffffff; } imageReceiver = new ImageReceiver(this); + imageReceiver.setRoundRadius(AndroidUtilities.dp(32)); avatarDrawable = new AvatarDrawable(); textPaint.setTextSize(AndroidUtilities.dp(MessagesController.getInstance().fontSize)); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatAudioCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatAudioCell.java index 271c863e..9ab00e61 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatAudioCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatAudioCell.java @@ -65,6 +65,7 @@ public class ChatAudioCell extends ChatBaseCell implements SeekBar.SeekBarDelega TAG = MediaController.getInstance().generateObserverTag(); avatarImage = new ImageReceiver(this); + avatarImage.setRoundRadius(AndroidUtilities.dp(25)); seekBar = new SeekBar(context); seekBar.delegate = this; progressView = new ProgressView(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatBaseCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatBaseCell.java index 615c05c7..0440eb25 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatBaseCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatBaseCell.java @@ -156,6 +156,7 @@ public class ChatBaseCell extends BaseCell { forwardNamePaint.setTextSize(AndroidUtilities.dp(14)); } avatarImage = new ImageReceiver(this); + avatarImage.setRoundRadius(AndroidUtilities.dp(21)); avatarDrawable = new AvatarDrawable(); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatContactCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatContactCell.java index 4e47935c..c7b316f1 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatContactCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatContactCell.java @@ -66,12 +66,13 @@ public class ChatContactCell extends ChatBaseCell { phonePaint = new TextPaint(TextPaint.ANTI_ALIAS_FLAG); phonePaint.setTextSize(AndroidUtilities.dp(15)); - phonePaint.setColor(0xff000000); + phonePaint.setColor(0xff212121); addContactDrawableIn = getResources().getDrawable(R.drawable.addcontact_blue); addContactDrawableOut = getResources().getDrawable(R.drawable.addcontact_green); } avatarImage = new ImageReceiver(this); + avatarImage.setRoundRadius(AndroidUtilities.dp(21)); avatarDrawable = new AvatarDrawable(); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMediaCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMediaCell.java index 754a7e16..bc31d48b 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMediaCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMediaCell.java @@ -133,7 +133,7 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD infoPaint.setTextSize(AndroidUtilities.dp(12)); namePaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); - namePaint.setColor(0xff000000); + namePaint.setColor(0xff212121); namePaint.setTextSize(AndroidUtilities.dp(16)); docBackPaint = new Paint(); @@ -827,7 +827,7 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD menuDrawable = docMenuInDrawable; } - setDrawableBounds(menuDrawable, photoImage.getImageX() + backgroundWidth - AndroidUtilities.dp(50), AndroidUtilities.dp(10)); + setDrawableBounds(menuDrawable, photoImage.getImageX() + backgroundWidth - AndroidUtilities.dp(44), AndroidUtilities.dp(10)); menuDrawable.draw(canvas); if (!imageDrawn) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/DialogCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DialogCell.java index 4810729b..575ded30 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/DialogCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/DialogCell.java @@ -566,29 +566,35 @@ public class DialogCell extends BaseCell { continueUpdate = true; } } - if ((mask & MessagesController.UPDATE_MASK_AVATAR) != 0) { + if (!continueUpdate && (mask & MessagesController.UPDATE_MASK_AVATAR) != 0) { if (chat == null) { continueUpdate = true; } } - if ((mask & MessagesController.UPDATE_MASK_NAME) != 0) { + if (!continueUpdate && (mask & MessagesController.UPDATE_MASK_NAME) != 0) { if (chat == null) { continueUpdate = true; } } - if ((mask & MessagesController.UPDATE_MASK_CHAT_AVATAR) != 0) { + if (!continueUpdate && (mask & MessagesController.UPDATE_MASK_CHAT_AVATAR) != 0) { if (user == null) { continueUpdate = true; } } - if ((mask & MessagesController.UPDATE_MASK_CHAT_NAME) != 0) { + if (!continueUpdate && (mask & MessagesController.UPDATE_MASK_CHAT_NAME) != 0) { if (user == null) { continueUpdate = true; } } - if ((mask & MessagesController.UPDATE_MASK_READ_DIALOG_MESSAGE) != 0) { + if (!continueUpdate && (mask & MessagesController.UPDATE_MASK_READ_DIALOG_MESSAGE) != 0) { if (message != null && lastUnreadState != message.isUnread()) { continueUpdate = true; + } else if (allowPrintStrings) { + TLRPC.TL_dialog dialog = MessagesController.getInstance().dialogs_dict.get(currentDialogId); + if (dialog != null && unreadCount != dialog.unread_count) { + unreadCount = dialog.unread_count; + continueUpdate = true; + } } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ShadowBottomSectionCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ShadowBottomSectionCell.java new file mode 100644 index 00000000..39a4dfca --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ShadowBottomSectionCell.java @@ -0,0 +1,48 @@ +/* + * This is the source code of Telegram for Android v. 1.7.x. + * It is licensed under GNU GPL v. 2 or later. + * You should have received a copy of the license in this archive (see LICENSE). + * + * Copyright Nikolai Kudashov, 2013-2014. + */ + +package org.telegram.ui.Cells; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.View; + +import org.telegram.android.AndroidUtilities; +import org.telegram.messenger.R; + +public class ShadowBottomSectionCell extends View { + + private void init() { + setBackgroundResource(R.drawable.greydivider_bottom); + } + + public ShadowBottomSectionCell(Context context) { + super(context); + init(); + } + + public ShadowBottomSectionCell(Context context, AttributeSet attrs) { + super(context, attrs); + init(); + } + + public ShadowBottomSectionCell(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + init(); + } + + public ShadowBottomSectionCell(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + init(); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(6), MeasureSpec.EXACTLY)); + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCell.java index 729a0528..cb10f1ee 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCell.java @@ -31,7 +31,7 @@ public class TextCell extends FrameLayout { super(context); textView = new TextView(context); - textView.setTextColor(0xff000000); + textView.setTextColor(0xff212121); textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); textView.setLines(1); textView.setMaxLines(1); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCheckCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCheckCell.java index e8cc2e6e..a6323731 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCheckCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextCheckCell.java @@ -18,9 +18,10 @@ import android.widget.TextView; import org.telegram.android.AndroidUtilities; import org.telegram.android.LocaleController; +import org.telegram.ui.Views.FrameLayoutFixed; import org.telegram.ui.Views.Switch; -public class TextCheckCell extends FrameLayout { +public class TextCheckCell extends FrameLayoutFixed { private TextView textView; private Switch checkBox; @@ -37,7 +38,7 @@ public class TextCheckCell extends FrameLayout { } textView = new TextView(context); - textView.setTextColor(0xff000000); + textView.setTextColor(0xff212121); textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); textView.setLines(1); textView.setMaxLines(1); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextColorCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextColorCell.java index 2d4fe372..59b6c9e6 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextColorCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextColorCell.java @@ -40,7 +40,7 @@ public class TextColorCell extends FrameLayout { } textView = new TextView(context); - textView.setTextColor(0xff000000); + textView.setTextColor(0xff212121); textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); textView.setLines(1); textView.setMaxLines(1); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextDetailCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextDetailCell.java index e3b6c7c2..86afa608 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextDetailCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextDetailCell.java @@ -29,7 +29,7 @@ public class TextDetailCell extends FrameLayout { super(context); textView = new TextView(context); - textView.setTextColor(0xff000000); + textView.setTextColor(0xff212121); textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); textView.setLines(1); textView.setMaxLines(1); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextDetailDocumentsCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextDetailDocumentsCell.java new file mode 100644 index 00000000..46bcf793 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextDetailDocumentsCell.java @@ -0,0 +1,120 @@ +/* + * This is the source code of Telegram for Android v. 1.7.x. + * It is licensed under GNU GPL v. 2 or later. + * You should have received a copy of the license in this archive (see LICENSE). + * + * Copyright Nikolai Kudashov, 2013-2014. + */ + +package org.telegram.ui.Cells; + +import android.content.Context; +import android.graphics.Typeface; +import android.text.TextUtils; +import android.util.TypedValue; +import android.view.Gravity; +import android.widget.FrameLayout; +import android.widget.TextView; + +import org.telegram.android.AndroidUtilities; +import org.telegram.android.LocaleController; +import org.telegram.ui.Views.BackupImageView; + +public class TextDetailDocumentsCell extends FrameLayout { + + private TextView textView; + private TextView valueTextView; + private TextView typeTextView; + private BackupImageView imageView; + + public TextDetailDocumentsCell(Context context) { + super(context); + + textView = new TextView(context); + textView.setTextColor(0xff212121); + textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); + textView.setLines(1); + textView.setMaxLines(1); + textView.setSingleLine(true); + textView.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); + addView(textView); + LayoutParams layoutParams = (LayoutParams) textView.getLayoutParams(); + layoutParams.width = LayoutParams.WRAP_CONTENT; + layoutParams.height = LayoutParams.WRAP_CONTENT; + layoutParams.topMargin = AndroidUtilities.dp(10); + layoutParams.leftMargin = AndroidUtilities.dp(LocaleController.isRTL ? 16 : 71); + layoutParams.rightMargin = AndroidUtilities.dp(LocaleController.isRTL ? 71 : 16); + layoutParams.gravity = LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT; + textView.setLayoutParams(layoutParams); + + valueTextView = new TextView(context); + valueTextView.setTextColor(0xff8a8a8a); + valueTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 13); + valueTextView.setLines(1); + valueTextView.setMaxLines(1); + valueTextView.setSingleLine(true); + valueTextView.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); + addView(valueTextView); + layoutParams = (LayoutParams) valueTextView.getLayoutParams(); + layoutParams.width = LayoutParams.WRAP_CONTENT; + layoutParams.height = LayoutParams.WRAP_CONTENT; + layoutParams.topMargin = AndroidUtilities.dp(35); + layoutParams.leftMargin = AndroidUtilities.dp(LocaleController.isRTL ? 16 : 71); + layoutParams.rightMargin = AndroidUtilities.dp(LocaleController.isRTL ? 71 : 16); + layoutParams.gravity = LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT; + valueTextView.setLayoutParams(layoutParams); + + typeTextView = new TextView(context); + typeTextView.setBackgroundColor(0xff757575); + typeTextView.setEllipsize(TextUtils.TruncateAt.MARQUEE); + typeTextView.setGravity(Gravity.CENTER); + typeTextView.setSingleLine(true); + typeTextView.setTextColor(0xffd1d1d1); + typeTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); + typeTextView.setTypeface(Typeface.DEFAULT_BOLD); + addView(typeTextView); + layoutParams = (LayoutParams) typeTextView.getLayoutParams(); + layoutParams.width = AndroidUtilities.dp(40); + layoutParams.height = AndroidUtilities.dp(40); + layoutParams.leftMargin = AndroidUtilities.dp(LocaleController.isRTL ? 0 : 16); + layoutParams.rightMargin = AndroidUtilities.dp(LocaleController.isRTL ? 16 : 0); + layoutParams.gravity = (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.CENTER_VERTICAL; + typeTextView.setLayoutParams(layoutParams); + + imageView = new BackupImageView(context); + addView(imageView); + layoutParams = (LayoutParams) imageView.getLayoutParams(); + layoutParams.width = AndroidUtilities.dp(40); + layoutParams.height = AndroidUtilities.dp(40); + layoutParams.leftMargin = AndroidUtilities.dp(LocaleController.isRTL ? 0 : 16); + layoutParams.rightMargin = AndroidUtilities.dp(LocaleController.isRTL ? 16 : 0); + layoutParams.gravity = (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.CENTER_VERTICAL; + imageView.setLayoutParams(layoutParams); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(64), MeasureSpec.EXACTLY)); + } + + public void setTextAndValueAndTypeAndThumb(String text, String value, String type, String thumb, int resId) { + textView.setText(text); + valueTextView.setText(value); + if (type != null) { + typeTextView.setVisibility(VISIBLE); + typeTextView.setText(type); + } else { + typeTextView.setVisibility(GONE); + } + if (thumb != null || resId != 0) { + if (thumb != null) { + imageView.setImage(thumb, "40_40", null); + } else { + imageView.setImageResource(resId); + } + imageView.setVisibility(VISIBLE); + } else { + imageView.setVisibility(GONE); + } + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextDetailSettingsCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextDetailSettingsCell.java index 2c844aac..03330695 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextDetailSettingsCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextDetailSettingsCell.java @@ -13,13 +13,13 @@ import android.graphics.Canvas; import android.graphics.Paint; import android.util.TypedValue; import android.view.Gravity; -import android.widget.FrameLayout; import android.widget.TextView; import org.telegram.android.AndroidUtilities; import org.telegram.android.LocaleController; +import org.telegram.ui.Views.FrameLayoutFixed; -public class TextDetailSettingsCell extends FrameLayout { +public class TextDetailSettingsCell extends FrameLayoutFixed { private TextView textView; private TextView valueTextView; @@ -37,7 +37,7 @@ public class TextDetailSettingsCell extends FrameLayout { } textView = new TextView(context); - textView.setTextColor(0xff000000); + textView.setTextColor(0xff212121); textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); textView.setLines(1); textView.setMaxLines(1); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextInfoPrivacyCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextInfoPrivacyCell.java new file mode 100644 index 00000000..3cdcc872 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextInfoPrivacyCell.java @@ -0,0 +1,50 @@ +/* + * This is the source code of Telegram for Android v. 1.7.x. + * It is licensed under GNU GPL v. 2 or later. + * You should have received a copy of the license in this archive (see LICENSE). + * + * Copyright Nikolai Kudashov, 2013-2014. + */ + +package org.telegram.ui.Cells; + +import android.content.Context; +import android.util.TypedValue; +import android.view.Gravity; +import android.widget.FrameLayout; +import android.widget.TextView; + +import org.telegram.android.AndroidUtilities; +import org.telegram.android.LocaleController; + +public class TextInfoPrivacyCell extends FrameLayout { + + private TextView textView; + + public TextInfoPrivacyCell(Context context) { + super(context); + + textView = new TextView(context); + textView.setTextColor(0xffa3a3a3); + textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 13); + textView.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); + textView.setPadding(0, AndroidUtilities.dp(6), 0, AndroidUtilities.dp(16)); + addView(textView); + LayoutParams layoutParams = (LayoutParams) textView.getLayoutParams(); + layoutParams.width = LayoutParams.WRAP_CONTENT; + layoutParams.height = LayoutParams.WRAP_CONTENT; + layoutParams.leftMargin = AndroidUtilities.dp(17); + layoutParams.rightMargin = AndroidUtilities.dp(17); + layoutParams.gravity = LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT; + textView.setLayoutParams(layoutParams); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); + } + + public void setText(String text) { + textView.setText(text); + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextSettingsCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextSettingsCell.java index 5a3baf8c..a69ebbc2 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextSettingsCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/TextSettingsCell.java @@ -15,6 +15,7 @@ import android.text.TextUtils; import android.util.TypedValue; import android.view.Gravity; import android.widget.FrameLayout; +import android.widget.ImageView; import android.widget.TextView; import org.telegram.android.AndroidUtilities; @@ -24,6 +25,7 @@ public class TextSettingsCell extends FrameLayout { private TextView textView; private TextView valueTextView; + private ImageView valueImageView; private static Paint paint; private boolean needDivider; @@ -37,7 +39,7 @@ public class TextSettingsCell extends FrameLayout { } textView = new TextView(context); - textView.setTextColor(0xff000000); + textView.setTextColor(0xff212121); textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); textView.setLines(1); textView.setMaxLines(1); @@ -69,6 +71,18 @@ public class TextSettingsCell extends FrameLayout { layoutParams.rightMargin = AndroidUtilities.dp(17); layoutParams.gravity = LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT; valueTextView.setLayoutParams(layoutParams); + + valueImageView = new ImageView(context); + valueImageView.setScaleType(ImageView.ScaleType.CENTER); + valueImageView.setVisibility(GONE); + addView(valueImageView); + layoutParams = (LayoutParams) valueImageView.getLayoutParams(); + layoutParams.width = LayoutParams.WRAP_CONTENT; + layoutParams.height = LayoutParams.WRAP_CONTENT; + layoutParams.leftMargin = AndroidUtilities.dp(LocaleController.isRTL ? 17 : 0); + layoutParams.rightMargin = AndroidUtilities.dp(LocaleController.isRTL ? 0 : 17); + layoutParams.gravity = (LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.CENTER_VERTICAL; + valueImageView.setLayoutParams(layoutParams); } @Override @@ -77,6 +91,9 @@ public class TextSettingsCell extends FrameLayout { int availableWidth = getMeasuredWidth() - getPaddingLeft() - getPaddingRight() - AndroidUtilities.dp(34); int width = availableWidth / 2; + if (valueImageView.getVisibility() == VISIBLE) { + valueImageView.measure(MeasureSpec.makeMeasureSpec(width, MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(getMeasuredHeight(), MeasureSpec.EXACTLY)); + } if (valueTextView.getVisibility() == VISIBLE) { valueTextView.measure(MeasureSpec.makeMeasureSpec(width, MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(getMeasuredHeight(), MeasureSpec.EXACTLY)); width = availableWidth - valueTextView.getMeasuredWidth() - AndroidUtilities.dp(8); @@ -99,8 +116,26 @@ public class TextSettingsCell extends FrameLayout { public void setTextAndValue(String text, String value, boolean divider) { textView.setText(text); - valueTextView.setText(value); - valueTextView.setVisibility(VISIBLE); + valueImageView.setVisibility(GONE); + if (value != null) { + valueTextView.setText(value); + valueTextView.setVisibility(VISIBLE); + } else { + valueTextView.setVisibility(GONE); + } + needDivider = divider; + setWillNotDraw(!divider); + } + + public void setTextAndIcon(String text, int resId, boolean divider) { + textView.setText(text); + valueTextView.setVisibility(GONE); + if (resId != 0) { + valueImageView.setVisibility(VISIBLE); + valueImageView.setImageResource(resId); + } else { + valueImageView.setVisibility(GONE); + } needDivider = divider; setWillNotDraw(!divider); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChangeChatNameActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChangeChatNameActivity.java index 89a82c3e..2f5aac14 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChangeChatNameActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChangeChatNameActivity.java @@ -16,6 +16,7 @@ import android.util.TypedValue; import android.view.Gravity; import android.view.KeyEvent; import android.view.LayoutInflater; +import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.EditorInfo; @@ -74,25 +75,31 @@ public class ChangeChatNameActivity extends BaseFragment { }); ActionBarMenu menu = actionBar.createMenu(); - doneButton = menu.addItem(done_button, R.drawable.ic_done, 0, AndroidUtilities.dp(56)); + doneButton = menu.addItemWithWidth(done_button, R.drawable.ic_done, AndroidUtilities.dp(56)); TLRPC.Chat currentChat = MessagesController.getInstance().getChat(chat_id); fragmentView = new LinearLayout(inflater.getContext()); fragmentView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); - fragmentView.setPadding(0, AndroidUtilities.dp(8), 0, 0); ((LinearLayout) fragmentView).setOrientation(LinearLayout.VERTICAL); + fragmentView.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + return true; + } + }); firstNameField = new EditText(inflater.getContext()); firstNameField.setText(currentChat.title); - firstNameField.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 19); - firstNameField.setHintTextColor(0xffa3a3a3); - firstNameField.setTextColor(0xff000000); - firstNameField.setPadding(AndroidUtilities.dp(15), 0, AndroidUtilities.dp(15), AndroidUtilities.dp(15)); + firstNameField.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); + firstNameField.setHintTextColor(0xff979797); + firstNameField.setTextColor(0xff212121); firstNameField.setMaxLines(3); + firstNameField.setPadding(0, 0, 0, 0); firstNameField.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); firstNameField.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES | InputType.TYPE_TEXT_FLAG_MULTI_LINE | InputType.TYPE_TEXT_FLAG_AUTO_CORRECT); firstNameField.setImeOptions(EditorInfo.IME_ACTION_DONE); + firstNameField.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); AndroidUtilities.clearCursorDrawable(firstNameField); firstNameField.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override @@ -104,17 +111,14 @@ public class ChangeChatNameActivity extends BaseFragment { return false; } }); - if (LocaleController.isRTL) { - firstNameField.setGravity(Gravity.RIGHT); - } ((LinearLayout) fragmentView).addView(firstNameField); LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams)firstNameField.getLayoutParams(); - layoutParams.topMargin = AndroidUtilities.dp(15); - layoutParams.leftMargin = AndroidUtilities.dp(16); - layoutParams.rightMargin = AndroidUtilities.dp(16); + layoutParams.topMargin = AndroidUtilities.dp(24); + layoutParams.height = AndroidUtilities.dp(36); + layoutParams.leftMargin = AndroidUtilities.dp(24); + layoutParams.rightMargin = AndroidUtilities.dp(24); layoutParams.width = LinearLayout.LayoutParams.MATCH_PARENT; - layoutParams.height = LinearLayout.LayoutParams.WRAP_CONTENT; firstNameField.setLayoutParams(layoutParams); if (chat_id > 0) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChangeNameActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChangeNameActivity.java index b063700d..f4176f9c 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChangeNameActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChangeNameActivity.java @@ -15,6 +15,7 @@ import android.util.TypedValue; import android.view.Gravity; import android.view.KeyEvent; import android.view.LayoutInflater; +import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.EditorInfo; @@ -35,7 +36,6 @@ import org.telegram.messenger.UserConfig; import org.telegram.ui.ActionBar.ActionBar; import org.telegram.ui.ActionBar.ActionBarMenu; import org.telegram.ui.ActionBar.BaseFragment; -import org.telegram.ui.Views.SettingsSectionLayout; public class ChangeNameActivity extends BaseFragment { @@ -67,9 +67,7 @@ public class ChangeNameActivity extends BaseFragment { }); ActionBarMenu menu = actionBar.createMenu(); - doneButton = menu.addItem(done_button, R.drawable.ic_done, 0, AndroidUtilities.dp(56)); - - fragmentView = inflater.inflate(R.layout.contact_add_layout, container, false); + doneButton = menu.addItemWithWidth(done_button, R.drawable.ic_done, AndroidUtilities.dp(56)); TLRPC.User user = MessagesController.getInstance().getUser(UserConfig.getClientUserId()); if (user == null) { @@ -78,25 +76,34 @@ public class ChangeNameActivity extends BaseFragment { fragmentView = new LinearLayout(inflater.getContext()); fragmentView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); - fragmentView.setPadding(AndroidUtilities.dp(16), AndroidUtilities.dp(8), AndroidUtilities.dp(16), 0); ((LinearLayout) fragmentView).setOrientation(LinearLayout.VERTICAL); - - SettingsSectionLayout settingsSectionLayout = new SettingsSectionLayout(inflater.getContext()); - ((LinearLayout) fragmentView).addView(settingsSectionLayout); - settingsSectionLayout.setText(LocaleController.getString("YourFirstNameAndLastName", R.string.YourFirstNameAndLastName).toUpperCase()); + fragmentView.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + return true; + } + }); firstNameField = new EditText(inflater.getContext()); - firstNameField.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 19); - firstNameField.setHintTextColor(0xffa3a3a3); - firstNameField.setTextColor(0xff000000); - firstNameField.setPadding(AndroidUtilities.dp(15), 0, AndroidUtilities.dp(15), AndroidUtilities.dp(15)); + firstNameField.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); + firstNameField.setHintTextColor(0xff979797); + firstNameField.setTextColor(0xff212121); firstNameField.setMaxLines(1); firstNameField.setLines(1); firstNameField.setSingleLine(true); firstNameField.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); - firstNameField.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES | InputType.TYPE_TEXT_FLAG_MULTI_LINE | InputType.TYPE_TEXT_FLAG_AUTO_CORRECT); + firstNameField.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES | InputType.TYPE_TEXT_FLAG_AUTO_CORRECT); firstNameField.setImeOptions(EditorInfo.IME_ACTION_NEXT); firstNameField.setHint(LocaleController.getString("FirstName", R.string.FirstName)); + AndroidUtilities.clearCursorDrawable(firstNameField); + ((LinearLayout) fragmentView).addView(firstNameField); + LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams)firstNameField.getLayoutParams(); + layoutParams.topMargin = AndroidUtilities.dp(24); + layoutParams.height = AndroidUtilities.dp(36); + layoutParams.leftMargin = AndroidUtilities.dp(24); + layoutParams.rightMargin = AndroidUtilities.dp(24); + layoutParams.width = LinearLayout.LayoutParams.MATCH_PARENT; + firstNameField.setLayoutParams(layoutParams); firstNameField.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) { @@ -108,26 +115,27 @@ public class ChangeNameActivity extends BaseFragment { return false; } }); - AndroidUtilities.clearCursorDrawable(firstNameField); - ((LinearLayout) fragmentView).addView(firstNameField); - LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams)firstNameField.getLayoutParams(); - layoutParams.topMargin = AndroidUtilities.dp(15); - layoutParams.width = LinearLayout.LayoutParams.MATCH_PARENT; - layoutParams.height = LinearLayout.LayoutParams.WRAP_CONTENT; - firstNameField.setLayoutParams(layoutParams); lastNameField = new EditText(inflater.getContext()); - lastNameField.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 19); - lastNameField.setHintTextColor(0xffa3a3a3); - lastNameField.setTextColor(0xff000000); - lastNameField.setPadding(AndroidUtilities.dp(15), 0, AndroidUtilities.dp(15), AndroidUtilities.dp(15)); + lastNameField.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); + lastNameField.setHintTextColor(0xff979797); + lastNameField.setTextColor(0xff212121); lastNameField.setMaxLines(1); lastNameField.setLines(1); lastNameField.setSingleLine(true); lastNameField.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); - lastNameField.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES | InputType.TYPE_TEXT_FLAG_MULTI_LINE | InputType.TYPE_TEXT_FLAG_AUTO_CORRECT); + lastNameField.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES | InputType.TYPE_TEXT_FLAG_AUTO_CORRECT); lastNameField.setImeOptions(EditorInfo.IME_ACTION_DONE); lastNameField.setHint(LocaleController.getString("LastName", R.string.LastName)); + AndroidUtilities.clearCursorDrawable(lastNameField); + ((LinearLayout) fragmentView).addView(lastNameField); + layoutParams = (LinearLayout.LayoutParams)lastNameField.getLayoutParams(); + layoutParams.topMargin = AndroidUtilities.dp(16); + layoutParams.height = AndroidUtilities.dp(36); + layoutParams.leftMargin = AndroidUtilities.dp(24); + layoutParams.rightMargin = AndroidUtilities.dp(24); + layoutParams.width = LinearLayout.LayoutParams.MATCH_PARENT; + lastNameField.setLayoutParams(layoutParams); lastNameField.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) { @@ -138,13 +146,6 @@ public class ChangeNameActivity extends BaseFragment { return false; } }); - AndroidUtilities.clearCursorDrawable(lastNameField); - ((LinearLayout) fragmentView).addView(lastNameField); - layoutParams = (LinearLayout.LayoutParams)lastNameField.getLayoutParams(); - layoutParams.topMargin = AndroidUtilities.dp(10); - layoutParams.width = LinearLayout.LayoutParams.MATCH_PARENT; - layoutParams.height = LinearLayout.LayoutParams.WRAP_CONTENT; - lastNameField.setLayoutParams(layoutParams); if (user != null) { firstNameField.setText(user.first_name); @@ -190,6 +191,7 @@ public class ChangeNameActivity extends BaseFragment { user.last_name = req.last_name; } UserConfig.saveConfig(true); + NotificationCenter.getInstance().postNotificationName(NotificationCenter.mainUserInfoChanged); NotificationCenter.getInstance().postNotificationName(NotificationCenter.updateInterfaces, MessagesController.UPDATE_MASK_NAME); ConnectionsManager.getInstance().performRpc(req, new RPCRequest.RPCRequestDelegate() { @Override diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChangeUsernameActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChangeUsernameActivity.java index 82cee7a3..af617e51 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChangeUsernameActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChangeUsernameActivity.java @@ -21,6 +21,7 @@ import android.util.TypedValue; import android.view.Gravity; import android.view.KeyEvent; import android.view.LayoutInflater; +import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.EditorInfo; @@ -43,7 +44,6 @@ import org.telegram.messenger.UserConfig; import org.telegram.ui.ActionBar.ActionBar; import org.telegram.ui.ActionBar.ActionBarMenu; import org.telegram.ui.ActionBar.BaseFragment; -import org.telegram.ui.Views.SettingsSectionLayout; import java.util.ArrayList; @@ -77,7 +77,7 @@ public class ChangeUsernameActivity extends BaseFragment { }); ActionBarMenu menu = actionBar.createMenu(); - doneButton = menu.addItem(done_button, R.drawable.ic_done, 0, AndroidUtilities.dp(56)); + doneButton = menu.addItemWithWidth(done_button, R.drawable.ic_done, AndroidUtilities.dp(56)); TLRPC.User user = MessagesController.getInstance().getUser(UserConfig.getClientUserId()); if (user == null) { @@ -86,20 +86,21 @@ public class ChangeUsernameActivity extends BaseFragment { fragmentView = new LinearLayout(inflater.getContext()); fragmentView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); - fragmentView.setPadding(AndroidUtilities.dp(16), AndroidUtilities.dp(8), AndroidUtilities.dp(16), 0); ((LinearLayout) fragmentView).setOrientation(LinearLayout.VERTICAL); - - SettingsSectionLayout settingsSectionLayout = new SettingsSectionLayout(inflater.getContext()); - ((LinearLayout) fragmentView).addView(settingsSectionLayout); - settingsSectionLayout.setText(LocaleController.getString("Username", R.string.Username).toUpperCase()); + fragmentView.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + return true; + } + }); firstNameField = new EditText(inflater.getContext()); - firstNameField.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 19); - firstNameField.setHintTextColor(0xffa3a3a3); - firstNameField.setTextColor(0xff000000); - firstNameField.setPadding(AndroidUtilities.dp(15), 0, AndroidUtilities.dp(15), AndroidUtilities.dp(15)); + firstNameField.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); + firstNameField.setHintTextColor(0xff979797); + firstNameField.setTextColor(0xff212121); firstNameField.setMaxLines(1); firstNameField.setLines(1); + firstNameField.setPadding(0, 0, 0, 0); firstNameField.setSingleLine(true); firstNameField.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); firstNameField.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES | InputType.TYPE_TEXT_FLAG_MULTI_LINE | InputType.TYPE_TEXT_FLAG_AUTO_CORRECT); @@ -119,9 +120,11 @@ public class ChangeUsernameActivity extends BaseFragment { ((LinearLayout) fragmentView).addView(firstNameField); LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams)firstNameField.getLayoutParams(); - layoutParams.topMargin = AndroidUtilities.dp(15); + layoutParams.topMargin = AndroidUtilities.dp(24); + layoutParams.height = AndroidUtilities.dp(36); + layoutParams.leftMargin = AndroidUtilities.dp(24); + layoutParams.rightMargin = AndroidUtilities.dp(24); layoutParams.width = LinearLayout.LayoutParams.MATCH_PARENT; - layoutParams.height = LinearLayout.LayoutParams.WRAP_CONTENT; firstNameField.setLayoutParams(layoutParams); if (user != null && user.username != null && user.username.length() > 0) { @@ -131,7 +134,6 @@ public class ChangeUsernameActivity extends BaseFragment { checkTextView = new TextView(inflater.getContext()); checkTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15); - checkTextView.setPadding(AndroidUtilities.dp(8), 0, AndroidUtilities.dp(8), 0); checkTextView.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); ((LinearLayout) fragmentView).addView(checkTextView); layoutParams = (LinearLayout.LayoutParams)checkTextView.getLayoutParams(); @@ -139,12 +141,13 @@ public class ChangeUsernameActivity extends BaseFragment { layoutParams.width = LinearLayout.LayoutParams.WRAP_CONTENT; layoutParams.height = LinearLayout.LayoutParams.WRAP_CONTENT; layoutParams.gravity = LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT; + layoutParams.leftMargin = AndroidUtilities.dp(24); + layoutParams.rightMargin = AndroidUtilities.dp(24); checkTextView.setLayoutParams(layoutParams); TextView helpTextView = new TextView(inflater.getContext()); helpTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15); helpTextView.setTextColor(0xff6d6d72); - helpTextView.setPadding(AndroidUtilities.dp(8), 0, AndroidUtilities.dp(8), 0); helpTextView.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); helpTextView.setText(Html.fromHtml(LocaleController.getString("UsernameHelp", R.string.UsernameHelp))); ((LinearLayout) fragmentView).addView(helpTextView); @@ -153,6 +156,8 @@ public class ChangeUsernameActivity extends BaseFragment { layoutParams.width = LinearLayout.LayoutParams.WRAP_CONTENT; layoutParams.height = LinearLayout.LayoutParams.WRAP_CONTENT; layoutParams.gravity = LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT; + layoutParams.leftMargin = AndroidUtilities.dp(24); + layoutParams.rightMargin = AndroidUtilities.dp(24); helpTextView.setLayoutParams(layoutParams); firstNameField.addTextChangedListener(new TextWatcher() { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java index 120fb8dc..94edf8c8 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java @@ -8,9 +8,6 @@ package org.telegram.ui; -import android.animation.Animator; -import android.animation.AnimatorSet; -import android.animation.ObjectAnimator; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; @@ -41,7 +38,6 @@ import android.webkit.MimeTypeMap; import android.widget.AbsListView; import android.widget.AdapterView; import android.widget.FrameLayout; -import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; @@ -65,6 +61,10 @@ import org.telegram.messenger.R; import org.telegram.messenger.UserConfig; import org.telegram.messenger.Utilities; import org.telegram.ui.Adapters.BaseFragmentAdapter; +import org.telegram.ui.AnimationCompat.AnimatorListenerAdapterProxy; +import org.telegram.ui.AnimationCompat.AnimatorSetProxy; +import org.telegram.ui.AnimationCompat.ObjectAnimatorProxy; +import org.telegram.ui.AnimationCompat.ViewProxy; import org.telegram.ui.Cells.ChatActionCell; import org.telegram.ui.Cells.ChatAudioCell; import org.telegram.ui.Cells.ChatBaseCell; @@ -79,9 +79,10 @@ import org.telegram.ui.Views.BackupImageView; import org.telegram.ui.ActionBar.BaseFragment; import org.telegram.ui.Views.ChatActivityEnterView; import org.telegram.android.ImageReceiver; +import org.telegram.ui.Views.FrameLayoutFixed; import org.telegram.ui.Views.LayoutListView; import org.telegram.ui.Views.SizeNotifierRelativeLayout; -import org.telegram.ui.Views.TimerButton; +import org.telegram.ui.Views.TimerDrawable; import org.telegram.ui.Views.TypingDotsDrawable; import java.io.File; @@ -98,13 +99,14 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not private TLRPC.EncryptedChat currentEncryptedChat; private boolean userBlocked = false; - private View topPanel; private View progressView; private View bottomOverlay; private ChatAdapter chatAdapter; private ChatActivityEnterView chatActivityEnterView; - private View timeItem; - private View menuItem; + private ActionBarMenuItem timeItem; + private TimerDrawable timerDrawable; + private ActionBarMenuItem menuItem; + private TextView addContactItem; private LayoutListView chatListView; private BackupImageView avatarImageView; private TextView bottomOverlayChatText; @@ -116,12 +118,11 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not private TextView onlineTextView; private FrameLayout avatarContainer; private TextView bottomOverlayText; + private TextView secretViewStatusTextView; + private TextView selectedMessagesCountTextView; private MessageObject selectedObject; private MessageObject forwaringMessage; - private TextView secretViewStatusTextView; - private TimerButton timerButton; - private TextView selectedMessagesCountTextView; private boolean paused = true; private boolean readWhenResume = false; @@ -130,9 +131,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not private boolean scrollToTopOnResume = false; private boolean scrollToTopUnReadOnResume = false; private boolean isCustomTheme = false; - private ImageView topPlaneClose; private View pagedownButton; - private TextView topPanelText; private long dialog_id; private boolean isBroadcast = false; private HashMap selectedMessagesIds = new HashMap(); @@ -188,6 +187,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not private final static int attach_video = 8; private final static int attach_document = 9; private final static int attach_location = 10; + private final static int clear_history = 11; + private final static int delete_chat = 12; + private final static int share_contact = 13; AdapterView.OnItemLongClickListener onItemLongClickListener = new AdapterView.OnItemLongClickListener() { @Override @@ -438,18 +440,23 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (currentEncryptedChat != null) { MediaController.getInstance().stopMediaObserver(); } - getParentActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); + if (!AndroidUtilities.isTablet()) { + getParentActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); + } AndroidUtilities.unlockOrientation(getParentActivity()); MediaController.getInstance().stopAudio(); } public View createView(LayoutInflater inflater, ViewGroup container) { if (fragmentView == null) { + lastPrintString = null; + lastStatus = null; + actionBar.setBackButtonImage(R.drawable.ic_ab_back); actionBar.setBackOverlay(R.layout.updating_state_layout); actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { @Override - public void onItemClick(int id) { + public void onItemClick(final int id) { if (id == -1) { finishFragment(); } else if (id == -2) { @@ -606,17 +613,79 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not MessagesActivity fragment = new MessagesActivity(args); fragment.setDelegate(ChatActivity.this); presentFragment(fragment); + } else if (id == chat_enc_timer) { + if (getParentActivity() == null) { + return; + } + showAlertDialog(AndroidUtilities.buildTTLAlert(getParentActivity(), currentEncryptedChat)); + } else if (id == clear_history || id == delete_chat) { + final boolean isChat = (int)dialog_id < 0 && (int)(dialog_id >> 32) != 1; + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); + if (id == clear_history) { + builder.setMessage(LocaleController.getString("AreYouSureClearHistory", R.string.AreYouSureClearHistory)); + } else { + if (isChat) { + builder.setMessage(LocaleController.getString("AreYouSureDeleteAndExit", R.string.AreYouSureDeleteAndExit)); + } else { + builder.setMessage(LocaleController.getString("AreYouSureDeleteThisChat", R.string.AreYouSureDeleteThisChat)); + } + } + builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + MessagesController.getInstance().deleteDialog(dialog_id, 0, id == clear_history); + if (id != clear_history) { + if (isChat) { + MessagesController.getInstance().deleteUserFromChat((int) -dialog_id, MessagesController.getInstance().getUser(UserConfig.getClientUserId()), null); + } + finishFragment(); + } + } + }); + builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); + showAlertDialog(builder); + } else if (id == share_contact) { + if (currentUser == null || getParentActivity() == null) { + return; + } + if (currentUser.phone != null && currentUser.phone.length() != 0) { + Bundle args = new Bundle(); + args.putInt("user_id", currentUser.id); + args.putBoolean("addContact", true); + presentFragment(new ContactAddActivity(args)); + } else { + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + builder.setMessage(LocaleController.getString("AreYouSureShareMyContactInfo", R.string.AreYouSureShareMyContactInfo)); + builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); + builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + SendMessagesHelper.getInstance().sendMessage(UserConfig.getCurrentUser(), dialog_id); + chatListView.post(new Runnable() { + @Override + public void run() { + chatListView.setSelectionFromTop(messages.size() - 1, -100000 - chatListView.getPaddingTop()); + } + }); + } + }); + builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); + showAlertDialog(builder); + } } } }); - avatarContainer = new FrameLayout(getParentActivity()); + avatarContainer = new FrameLayoutFixed(getParentActivity()); + avatarContainer.setBackgroundResource(R.drawable.bar_selector); + avatarContainer.setPadding(AndroidUtilities.dp(8), 0, AndroidUtilities.dp(8), 0); actionBar.addView(avatarContainer); FrameLayout.LayoutParams layoutParams2 = (FrameLayout.LayoutParams) avatarContainer.getLayoutParams(); - layoutParams2.height = AndroidUtilities.dp(48); + layoutParams2.height = FrameLayout.LayoutParams.MATCH_PARENT; layoutParams2.width = FrameLayout.LayoutParams.WRAP_CONTENT; - layoutParams2.rightMargin = AndroidUtilities.dp(48 + (currentEncryptedChat != null ? 48 : 0)); - layoutParams2.leftMargin = AndroidUtilities.dp(64); + layoutParams2.rightMargin = AndroidUtilities.dp(40); + layoutParams2.leftMargin = AndroidUtilities.dp(56); layoutParams2.gravity = Gravity.TOP | Gravity.LEFT; avatarContainer.setLayoutParams(layoutParams2); avatarContainer.setOnClickListener(new View.OnClickListener() { @@ -657,6 +726,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not layoutParams2.width = AndroidUtilities.dp(42); layoutParams2.height = AndroidUtilities.dp(42); layoutParams2.topMargin = AndroidUtilities.dp(3); + layoutParams2.gravity = Gravity.TOP | Gravity.LEFT; avatarImageView.setLayoutParams(layoutParams2); nameTextView = new TextView(getParentActivity()); @@ -708,43 +778,42 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not ActionBarMenu menu = actionBar.createMenu(); if (currentEncryptedChat != null) { - timeItem = menu.addItemResource(chat_enc_timer, R.layout.chat_header_enc_layout); + timeItem = menu.addItem(chat_enc_timer, timerDrawable = new TimerDrawable(getParentActivity())); + } else { + ActionBarMenuItem item = menu.addItem(0, R.drawable.ic_ab_other); + if (currentUser != null) { + addContactItem = item.addSubItem(share_contact, "", 0); + } + item.addSubItem(clear_history, LocaleController.getString("ClearHistory", R.string.ClearHistory), 0); + if (currentChat != null && !isBroadcast) { + item.addSubItem(delete_chat, LocaleController.getString("DeleteAndExit", R.string.DeleteAndExit), 0); + } else { + item.addSubItem(delete_chat, LocaleController.getString("DeleteChatUser", R.string.DeleteChatUser), 0); + } } - ActionBarMenuItem item = menu.addItem(chat_menu_attach, R.drawable.ic_ab_attach); - item.addSubItem(attach_photo, LocaleController.getString("ChatTakePhoto", R.string.ChatTakePhoto), R.drawable.ic_attach_photo); - item.addSubItem(attach_gallery, LocaleController.getString("ChatGallery", R.string.ChatGallery), R.drawable.ic_attach_gallery); - item.addSubItem(attach_video, LocaleController.getString("ChatVideo", R.string.ChatVideo), R.drawable.ic_attach_video); - item.addSubItem(attach_document, LocaleController.getString("ChatDocument", R.string.ChatDocument), R.drawable.ic_ab_doc); - item.addSubItem(attach_location, LocaleController.getString("ChatLocation", R.string.ChatLocation), R.drawable.ic_attach_location); - menuItem = item; - item.setShowFromBottom(true); - item.setBackground(null); + menuItem = menu.addItem(chat_menu_attach, R.drawable.ic_ab_attach); + menuItem.addSubItem(attach_photo, LocaleController.getString("ChatTakePhoto", R.string.ChatTakePhoto), R.drawable.ic_attach_photo); + menuItem.addSubItem(attach_gallery, LocaleController.getString("ChatGallery", R.string.ChatGallery), R.drawable.ic_attach_gallery); + menuItem.addSubItem(attach_video, LocaleController.getString("ChatVideo", R.string.ChatVideo), R.drawable.ic_attach_video); + menuItem.addSubItem(attach_document, LocaleController.getString("ChatDocument", R.string.ChatDocument), R.drawable.ic_ab_doc); + menuItem.addSubItem(attach_location, LocaleController.getString("ChatLocation", R.string.ChatLocation), R.drawable.ic_attach_location); + menuItem.setShowFromBottom(true); + menuItem.setBackgroundDrawable(null); actionModeViews.clear(); final ActionBarMenu actionMode = actionBar.createActionMode(); - actionModeViews.add(actionMode.addItem(-2, R.drawable.ic_ab_done_gray, R.drawable.bar_selector_mode)); - - FrameLayout layout = new FrameLayout(actionMode.getContext()); - layout.setBackgroundColor(0xffe5e5e5); - actionMode.addView(layout); - LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams)layout.getLayoutParams(); - layoutParams.width = AndroidUtilities.dp(1); - layoutParams.height = LinearLayout.LayoutParams.MATCH_PARENT; - layoutParams.topMargin = AndroidUtilities.dp(12); - layoutParams.bottomMargin = AndroidUtilities.dp(12); - layoutParams.gravity = Gravity.CENTER_VERTICAL; - layout.setLayoutParams(layoutParams); - actionModeViews.add(layout); + actionModeViews.add(actionMode.addItem(-2, R.drawable.ic_ab_back_grey, R.drawable.bar_selector_mode, null, AndroidUtilities.dp(54))); selectedMessagesCountTextView = new TextView(actionMode.getContext()); selectedMessagesCountTextView.setTextSize(18); - selectedMessagesCountTextView.setTextColor(0xff000000); + selectedMessagesCountTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + selectedMessagesCountTextView.setTextColor(0xff737373); selectedMessagesCountTextView.setSingleLine(true); selectedMessagesCountTextView.setLines(1); selectedMessagesCountTextView.setEllipsize(TextUtils.TruncateAt.END); - selectedMessagesCountTextView.setPadding(AndroidUtilities.dp(11), 0, 0, 0); + selectedMessagesCountTextView.setPadding(AndroidUtilities.dp(11), 0, 0, AndroidUtilities.dp(2)); selectedMessagesCountTextView.setGravity(Gravity.CENTER_VERTICAL); selectedMessagesCountTextView.setOnTouchListener(new View.OnTouchListener() { @Override @@ -753,7 +822,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } }); actionMode.addView(selectedMessagesCountTextView); - layoutParams = (LinearLayout.LayoutParams)selectedMessagesCountTextView.getLayoutParams(); + LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams)selectedMessagesCountTextView.getLayoutParams(); layoutParams.weight = 1; layoutParams.width = 0; layoutParams.height = LinearLayout.LayoutParams.MATCH_PARENT; @@ -785,9 +854,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not emptyView.setText(LocaleController.getString("NoMessages", R.string.NoMessages)); chatListView = (LayoutListView)fragmentView.findViewById(R.id.chat_list_view); chatListView.setAdapter(chatAdapter = new ChatAdapter(getParentActivity())); - topPanel = fragmentView.findViewById(R.id.top_panel); - topPlaneClose = (ImageView)fragmentView.findViewById(R.id.top_plane_close); - topPanelText = (TextView)fragmentView.findViewById(R.id.top_panel_text); bottomOverlay = fragmentView.findViewById(R.id.bottom_overlay); bottomOverlayText = (TextView)fragmentView.findViewById(R.id.bottom_overlay_text); bottomOverlayChat = fragmentView.findViewById(R.id.bottom_overlay_chat); @@ -1148,37 +1214,22 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } if (show) { if (pagedownButton.getVisibility() == View.GONE) { - if (Build.VERSION.SDK_INT > 13 && animated) { + if (animated) { pagedownButton.setVisibility(View.VISIBLE); - pagedownButton.setAlpha(0); - pagedownButton.animate().alpha(1).setDuration(200).setListener(null).start(); + ViewProxy.setAlpha(pagedownButton, 0); + ObjectAnimatorProxy.ofFloatProxy(pagedownButton, "alpha", 1.0f).setDuration(200).start(); } else { pagedownButton.setVisibility(View.VISIBLE); } } } else { if (pagedownButton.getVisibility() == View.VISIBLE) { - if (Build.VERSION.SDK_INT > 13 && animated) { - pagedownButton.animate().alpha(0).setDuration(200).setListener(new Animator.AnimatorListener() { + if (animated) { + ObjectAnimatorProxy.ofFloatProxy(pagedownButton, "alpha", 0.0f).setDuration(200).addListener(new AnimatorListenerAdapterProxy() { @Override - public void onAnimationStart(Animator animation) { - - } - - @Override - public void onAnimationEnd(Animator animation) { + public void onAnimationEnd(Object animation) { pagedownButton.setVisibility(View.GONE); } - - @Override - public void onAnimationCancel(Animator animation) { - - } - - @Override - public void onAnimationRepeat(Animator animation) { - - } }).start(); } else { pagedownButton.setVisibility(View.GONE); @@ -1241,17 +1292,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } if (timeItem != null) { - timerButton = (TimerButton)timeItem.findViewById(R.id.chat_timer); - timerButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (getParentActivity() == null) { - return; - } - showAlertDialog(AndroidUtilities.buildTTLAlert(getParentActivity(), currentEncryptedChat)); - } - }); - timerButton.setTime(currentEncryptedChat.ttl); + timerDrawable.setTime(currentEncryptedChat.ttl); } checkAndUpdateAvatar(); @@ -1426,11 +1467,14 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not return; } if (!selectedMessagesIds.isEmpty()) { - selectedMessagesCountTextView.setText(LocaleController.formatString("Selected", R.string.Selected, selectedMessagesIds.size())); + selectedMessagesCountTextView.setText(String.format("%d", selectedMessagesIds.size())); } } private void updateTitle() { + if (nameTextView == null) { + return; + } if (currentChat != null) { nameTextView.setText(currentChat.title); } else if (currentUser != null) { @@ -1447,6 +1491,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } private void updateSubtitle() { + if (onlineTextView == null) { + return; + } CharSequence printString = MessagesController.getInstance().printingStrings.get(dialog_id); if (printString != null) { printString = TextUtils.replace(printString, new String[]{"..."}, new String[]{""}); @@ -1493,15 +1540,21 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } if (start) { try { - onlineTextView.setCompoundDrawablesWithIntrinsicBounds(typingDotsDrawable, null, null, null); - onlineTextView.setCompoundDrawablePadding(AndroidUtilities.dp(4)); - typingDotsDrawable.start(); + if (onlineTextView != null) { + onlineTextView.setCompoundDrawablesWithIntrinsicBounds(typingDotsDrawable, null, null, null); + onlineTextView.setCompoundDrawablePadding(AndroidUtilities.dp(4)); + } + if (typingDotsDrawable != null) { + typingDotsDrawable.start(); + } } catch (Exception e) { FileLog.e("tmessages", e); } } else { - onlineTextView.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null); - onlineTextView.setCompoundDrawablePadding(0); + if (onlineTextView != null) { + onlineTextView.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null); + onlineTextView.setCompoundDrawablePadding(0); + } if (typingDotsDrawable != null) { typingDotsDrawable.stop(); } @@ -1989,9 +2042,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not for (MessageObject obj : arr) { if (currentEncryptedChat != null && obj.messageOwner.action != null && obj.messageOwner.action instanceof TLRPC.TL_messageEncryptedAction && - obj.messageOwner.action.encryptedAction instanceof TLRPC.TL_decryptedMessageActionSetMessageTTL && timerButton != null) { + obj.messageOwner.action.encryptedAction instanceof TLRPC.TL_decryptedMessageActionSetMessageTTL && timerDrawable != null) { TLRPC.TL_decryptedMessageActionSetMessageTTL action = (TLRPC.TL_decryptedMessageActionSetMessageTTL)obj.messageOwner.action.encryptedAction; - timerButton.setTime(action.ttl_seconds); + timerDrawable.setTime(action.ttl_seconds); } if (obj.isOut() && obj.isSending()) { scrollToLastMessage(); @@ -2035,9 +2088,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not int oldCount = messages.size(); for (MessageObject obj : arr) { if (currentEncryptedChat != null && obj.messageOwner.action != null && obj.messageOwner.action instanceof TLRPC.TL_messageEncryptedAction && - obj.messageOwner.action.encryptedAction instanceof TLRPC.TL_decryptedMessageActionSetMessageTTL && timerButton != null) { + obj.messageOwner.action.encryptedAction instanceof TLRPC.TL_decryptedMessageActionSetMessageTTL && timerDrawable != null) { TLRPC.TL_decryptedMessageActionSetMessageTTL action = (TLRPC.TL_decryptedMessageActionSetMessageTTL)obj.messageOwner.action.encryptedAction; - timerButton.setTime(action.ttl_seconds); + timerDrawable.setTime(action.ttl_seconds); } if (messagesDict.containsKey(obj.messageOwner.id)) { continue; @@ -2383,11 +2436,11 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } private void updateContactStatus() { - if (topPanel == null) { + if (addContactItem == null) { return; } if (currentUser == null) { - topPanel.setVisibility(View.GONE); + addContactItem.setVisibility(View.GONE); } else { TLRPC.User user = MessagesController.getInstance().getUser(currentUser.id); if (user != null) { @@ -2398,74 +2451,13 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not || currentUser instanceof TLRPC.TL_userEmpty || currentUser instanceof TLRPC.TL_userDeleted || ContactsController.getInstance().isLoadingContacts() || (currentUser.phone != null && currentUser.phone.length() != 0 && ContactsController.getInstance().contactsDict.get(currentUser.id) != null && (ContactsController.getInstance().contactsDict.size() != 0 || !ContactsController.getInstance().isLoadingContacts()))) { - topPanel.setVisibility(View.GONE); + addContactItem.setVisibility(View.GONE); } else { - topPanel.setVisibility(View.VISIBLE); - topPanelText.setShadowLayer(1, 0, AndroidUtilities.dp(1), 0xff8797a3); - if (isCustomTheme) { - topPlaneClose.setImageResource(R.drawable.ic_msg_btn_cross_custom); - topPanel.setBackgroundResource(R.drawable.top_pane_custom); - } else { - topPlaneClose.setImageResource(R.drawable.ic_msg_btn_cross_custom); - topPanel.setBackgroundResource(R.drawable.top_pane); - } + addContactItem.setVisibility(View.VISIBLE); if (currentUser.phone != null && currentUser.phone.length() != 0) { - if (MessagesController.getInstance().hidenAddToContacts.get(currentUser.id) != null) { - topPanel.setVisibility(View.INVISIBLE); - } else { - topPanelText.setText(LocaleController.getString("AddToContacts", R.string.AddToContacts)); - topPlaneClose.setVisibility(View.VISIBLE); - topPlaneClose.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - MessagesController.getInstance().hidenAddToContacts.put(currentUser.id, currentUser); - topPanel.setVisibility(View.GONE); - } - }); - topPanel.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - Bundle args = new Bundle(); - args.putInt("user_id", currentUser.id); - args.putBoolean("addContact", true); - presentFragment(new ContactAddActivity(args)); - } - }); - } + addContactItem.setText(LocaleController.getString("AddToContacts", R.string.AddToContacts)); } else { - if (MessagesController.getInstance().hidenAddToContacts.get(currentUser.id) != null) { - topPanel.setVisibility(View.INVISIBLE); - } else { - topPanelText.setText(LocaleController.getString("ShareMyContactInfo", R.string.ShareMyContactInfo)); - topPlaneClose.setVisibility(View.GONE); - topPanel.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (getParentActivity() == null) { - return; - } - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); - builder.setMessage(LocaleController.getString("AreYouSureShareMyContactInfo", R.string.AreYouSureShareMyContactInfo)); - builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); - builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - MessagesController.getInstance().hidenAddToContacts.put(currentUser.id, currentUser); - topPanel.setVisibility(View.GONE); - SendMessagesHelper.getInstance().sendMessage(UserConfig.getCurrentUser(), dialog_id); - chatListView.post(new Runnable() { - @Override - public void run() { - chatListView.setSelectionFromTop(messages.size() - 1, -100000 - chatListView.getPaddingTop()); - } - }); - } - }); - builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); - showAlertDialog(builder); - } - }); - } + addContactItem.setText(LocaleController.getString("ShareMyContactInfo", R.string.ShareMyContactInfo)); } } } @@ -2475,7 +2467,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not public void onResume() { super.onResume(); - getParentActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); + if (!AndroidUtilities.isTablet()) { + getParentActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); + } checkActionBarMenu(); @@ -2605,12 +2599,14 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not return false; } if (!AndroidUtilities.isTablet() && getParentActivity().getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { - selectedMessagesCountTextView.setTextSize(16); - } else { selectedMessagesCountTextView.setTextSize(18); + } else { + selectedMessagesCountTextView.setTextSize(20); } + int padding = (AndroidUtilities.getCurrentActionBarHeight() - AndroidUtilities.dp(48)) / 2; + avatarContainer.setPadding(avatarContainer.getPaddingLeft(), padding, avatarContainer.getPaddingRight(), padding); FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams)avatarContainer.getLayoutParams(); - layoutParams.topMargin = (Build.VERSION.SDK_INT >= 21 ? AndroidUtilities.statusBarHeight : 0) + (AndroidUtilities.getCurrentActionBarHeight() - AndroidUtilities.dp(48)) / 2; + layoutParams.topMargin = (Build.VERSION.SDK_INT >= 21 ? AndroidUtilities.statusBarHeight : 0); avatarContainer.setLayoutParams(layoutParams); return false; } @@ -2799,21 +2795,22 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not return; } actionBar.showActionMode(); - if (Build.VERSION.SDK_INT >= 11) { - AnimatorSet animatorSet = new AnimatorSet(); - ArrayList animators = new ArrayList(); - for (int a = 0; a < actionModeViews.size(); a++) { - View view = actionModeViews.get(a); - if (a < 2) { - animators.add(ObjectAnimator.ofFloat(view, "translationX", -AndroidUtilities.dp(56), 0)); - } else { - animators.add(ObjectAnimator.ofFloat(view, "scaleY", 0.1f, 1.0f)); - } + + AnimatorSetProxy animatorSet = new AnimatorSetProxy(); + ArrayList animators = new ArrayList(); + for (int a = 0; a < actionModeViews.size(); a++) { + View view = actionModeViews.get(a); + AndroidUtilities.clearDrawableAnimation(view); + if (a < 1) { + animators.add(ObjectAnimatorProxy.ofFloat(view, "translationX", -AndroidUtilities.dp(56), 0)); + } else { + animators.add(ObjectAnimatorProxy.ofFloat(view, "scaleY", 0.1f, 1.0f)); } - animatorSet.playTogether(animators); - animatorSet.setDuration(250); - animatorSet.start(); } + animatorSet.playTogether(animators); + animatorSet.setDuration(250); + animatorSet.start(); + addToSelectedMessages(message); updateActionModeTitle(); updateVisibleRows(); @@ -2951,9 +2948,11 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not args.putInt("chat_id", -lower_part); } forwardSelectedMessages(did, param); - presentFragment(new ChatActivity(args), true); + ChatActivity chatActivity = new ChatActivity(args); + presentFragment(chatActivity, true); if (!AndroidUtilities.isTablet()) { removeSelfFromStack(); + chatActivity.getParentActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); } } else { activity.finishFragment(); @@ -3095,7 +3094,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not object.viewY = coords[1] - AndroidUtilities.statusBarHeight; object.parentView = chatListView; object.imageReceiver = imageReceiver; - object.thumb = object.imageReceiver.getBitmap(); + object.thumb = imageReceiver.getBitmap(); + object.radius = imageReceiver.getRoundRadius(); return object; } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ContactAddActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ContactAddActivity.java index 67dc13c1..618e9bb6 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ContactAddActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ContactAddActivity.java @@ -10,14 +10,21 @@ package org.telegram.ui; import android.app.Activity; import android.content.SharedPreferences; -import android.graphics.Typeface; import android.os.Bundle; +import android.text.InputType; +import android.text.TextUtils; +import android.util.TypedValue; +import android.view.Gravity; import android.view.KeyEvent; import android.view.LayoutInflater; +import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.EditorInfo; import android.widget.EditText; +import android.widget.FrameLayout; +import android.widget.LinearLayout; +import android.widget.ScrollView; import android.widget.TextView; import org.telegram.android.AndroidUtilities; @@ -40,8 +47,8 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent private EditText firstNameField; private EditText lastNameField; private BackupImageView avatarImage; - private TextView onlineText; - private TextView phoneText; + private TextView nameTextView; + private TextView onlineTextView; private int user_id; private boolean addContact; @@ -98,27 +105,148 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent }); ActionBarMenu menu = actionBar.createMenu(); - doneButton = menu.addItem(done_button, R.drawable.ic_done, 0, AndroidUtilities.dp(56)); + doneButton = menu.addItemWithWidth(done_button, R.drawable.ic_done, AndroidUtilities.dp(56)); - fragmentView = inflater.inflate(R.layout.contact_add_layout, container, false); + /* - TLRPC.User user = MessagesController.getInstance().getUser(user_id); - if (user.phone == null) { - if (phone != null) { - user.phone = PhoneFormat.stripExceptNumbers(phone); + + + + + + + + + + + + + + +*/ + + fragmentView = new ScrollView(getParentActivity()); + + LinearLayout linearLayout = new LinearLayout(getParentActivity()); + linearLayout.setOrientation(LinearLayout.VERTICAL); + ((ScrollView) fragmentView).addView(linearLayout); + ScrollView.LayoutParams layoutParams2 = (ScrollView.LayoutParams) linearLayout.getLayoutParams(); + layoutParams2.width = ScrollView.LayoutParams.MATCH_PARENT; + layoutParams2.height = ScrollView.LayoutParams.WRAP_CONTENT; + linearLayout.setLayoutParams(layoutParams2); + linearLayout.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + return true; } - } + }); - onlineText = (TextView)fragmentView.findViewById(R.id.settings_online); - avatarImage = (BackupImageView)fragmentView.findViewById(R.id.settings_avatar_image); + FrameLayout frameLayout = new FrameLayout(getParentActivity()); + linearLayout.addView(frameLayout); + LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) frameLayout.getLayoutParams(); + layoutParams.topMargin = AndroidUtilities.dp(24); + layoutParams.leftMargin = AndroidUtilities.dp(24); + layoutParams.rightMargin = AndroidUtilities.dp(24); + layoutParams.width = LinearLayout.LayoutParams.MATCH_PARENT; + layoutParams.height = LinearLayout.LayoutParams.WRAP_CONTENT; + frameLayout.setLayoutParams(layoutParams); + + avatarImage = new BackupImageView(getParentActivity()); + avatarImage.imageReceiver.setRoundRadius(AndroidUtilities.dp(30)); avatarImage.processDetach = false; - avatarImage.imageReceiver.setRoundRadius(AndroidUtilities.dp(32)); - phoneText = (TextView)fragmentView.findViewById(R.id.settings_name); - Typeface typeface = AndroidUtilities.getTypeface("fonts/rmedium.ttf"); - phoneText.setTypeface(typeface); + frameLayout.addView(avatarImage); + FrameLayout.LayoutParams layoutParams3 = (FrameLayout.LayoutParams) avatarImage.getLayoutParams(); + layoutParams3.gravity = (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP; + layoutParams3.width = AndroidUtilities.dp(60); + layoutParams3.height = AndroidUtilities.dp(60); + avatarImage.setLayoutParams(layoutParams3); - firstNameField = (EditText)fragmentView.findViewById(R.id.first_name_field); + nameTextView = new TextView(getParentActivity()); + nameTextView.setTextColor(0xff212121); + nameTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20); + nameTextView.setLines(1); + nameTextView.setMaxLines(1); + nameTextView.setSingleLine(true); + nameTextView.setEllipsize(TextUtils.TruncateAt.END); + nameTextView.setGravity((LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT)); + nameTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + frameLayout.addView(nameTextView); + layoutParams3 = (FrameLayout.LayoutParams) nameTextView.getLayoutParams(); + layoutParams3.width = FrameLayout.LayoutParams.WRAP_CONTENT; + layoutParams3.height = FrameLayout.LayoutParams.WRAP_CONTENT; + layoutParams3.leftMargin = AndroidUtilities.dp(LocaleController.isRTL ? 0 : 80); + layoutParams3.rightMargin = AndroidUtilities.dp(LocaleController.isRTL ? 80 : 0); + layoutParams3.topMargin = AndroidUtilities.dp(3); + layoutParams3.gravity = (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP; + nameTextView.setLayoutParams(layoutParams3); + + onlineTextView = new TextView(getParentActivity()); + onlineTextView.setTextColor(0xff999999); + onlineTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); + onlineTextView.setLines(1); + onlineTextView.setMaxLines(1); + onlineTextView.setSingleLine(true); + onlineTextView.setEllipsize(TextUtils.TruncateAt.END); + onlineTextView.setGravity((LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT)); + frameLayout.addView(onlineTextView); + layoutParams3 = (FrameLayout.LayoutParams) onlineTextView.getLayoutParams(); + layoutParams3.width = FrameLayout.LayoutParams.WRAP_CONTENT; + layoutParams3.height = FrameLayout.LayoutParams.WRAP_CONTENT; + layoutParams3.leftMargin = AndroidUtilities.dp(LocaleController.isRTL ? 0 : 80); + layoutParams3.rightMargin = AndroidUtilities.dp(LocaleController.isRTL ? 80 : 0); + layoutParams3.topMargin = AndroidUtilities.dp(32); + layoutParams3.gravity = (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP; + onlineTextView.setLayoutParams(layoutParams3); + + firstNameField = new EditText(inflater.getContext()); + firstNameField.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); + firstNameField.setHintTextColor(0xff979797); + firstNameField.setTextColor(0xff212121); + firstNameField.setMaxLines(1); + firstNameField.setLines(1); + firstNameField.setSingleLine(true); + firstNameField.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); + firstNameField.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES | InputType.TYPE_TEXT_FLAG_AUTO_CORRECT); + firstNameField.setImeOptions(EditorInfo.IME_ACTION_NEXT); firstNameField.setHint(LocaleController.getString("FirstName", R.string.FirstName)); + AndroidUtilities.clearCursorDrawable(firstNameField); + linearLayout.addView(firstNameField); + layoutParams = (LinearLayout.LayoutParams) firstNameField.getLayoutParams(); + layoutParams.topMargin = AndroidUtilities.dp(24); + layoutParams.height = AndroidUtilities.dp(36); + layoutParams.leftMargin = AndroidUtilities.dp(24); + layoutParams.rightMargin = AndroidUtilities.dp(24); + layoutParams.width = LinearLayout.LayoutParams.MATCH_PARENT; + firstNameField.setLayoutParams(layoutParams); firstNameField.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) { @@ -130,8 +258,27 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent return false; } }); - lastNameField = (EditText)fragmentView.findViewById(R.id.last_name_field); + + lastNameField = new EditText(inflater.getContext()); + lastNameField.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); + lastNameField.setHintTextColor(0xff979797); + lastNameField.setTextColor(0xff212121); + lastNameField.setMaxLines(1); + lastNameField.setLines(1); + lastNameField.setSingleLine(true); + lastNameField.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT); + lastNameField.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES | InputType.TYPE_TEXT_FLAG_AUTO_CORRECT); + lastNameField.setImeOptions(EditorInfo.IME_ACTION_DONE); lastNameField.setHint(LocaleController.getString("LastName", R.string.LastName)); + AndroidUtilities.clearCursorDrawable(lastNameField); + linearLayout.addView(lastNameField); + layoutParams = (LinearLayout.LayoutParams) lastNameField.getLayoutParams(); + layoutParams.topMargin = AndroidUtilities.dp(16); + layoutParams.height = AndroidUtilities.dp(36); + layoutParams.leftMargin = AndroidUtilities.dp(24); + layoutParams.rightMargin = AndroidUtilities.dp(24); + layoutParams.width = LinearLayout.LayoutParams.MATCH_PARENT; + lastNameField.setLayoutParams(layoutParams); lastNameField.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) { @@ -143,7 +290,13 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent } }); + TLRPC.User user = MessagesController.getInstance().getUser(user_id); if (user != null) { + if (user.phone == null) { + if (phone != null) { + user.phone = PhoneFormat.stripExceptNumbers(phone); + } + } firstNameField.setText(user.first_name); firstNameField.setSelection(firstNameField.length()); lastNameField.setText(user.last_name); @@ -151,7 +304,7 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent updateAvatarLayout(); } else { - ViewGroup parent = (ViewGroup)fragmentView.getParent(); + ViewGroup parent = (ViewGroup) fragmentView.getParent(); if (parent != null) { parent.removeView(fragmentView); } @@ -160,15 +313,15 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent } private void updateAvatarLayout() { - if (phoneText == null) { + if (nameTextView == null) { return; } TLRPC.User user = MessagesController.getInstance().getUser(user_id); if (user == null) { return; } - phoneText.setText(PhoneFormat.getInstance().format("+" + user.phone)); - onlineText.setText(LocaleController.formatUserStatus(user)); + nameTextView.setText(PhoneFormat.getInstance().format("+" + user.phone)); + onlineTextView.setText(LocaleController.formatUserStatus(user)); TLRPC.FileLocation photo = null; if (user.photo != null) { @@ -179,7 +332,7 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent public void didReceivedNotification(int id, Object... args) { if (id == NotificationCenter.updateInterfaces) { - int mask = (Integer)args[0]; + int mask = (Integer) args[0]; if ((mask & MessagesController.UPDATE_MASK_AVATAR) != 0 || (mask & MessagesController.UPDATE_MASK_STATUS) != 0) { updateAvatarLayout(); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ContactsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ContactsActivity.java index f6716a91..77286da3 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ContactsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ContactsActivity.java @@ -25,6 +25,7 @@ import android.widget.AbsListView; import android.widget.AdapterView; import android.widget.EditText; import android.widget.FrameLayout; +import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; @@ -183,27 +184,44 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter fragmentView = new FrameLayout(getParentActivity()); - emptyTextView = new TextView(getParentActivity()); - emptyTextView.setTextColor(0xff808080); - emptyTextView.setTextSize(24); - emptyTextView.setGravity(Gravity.CENTER); - emptyTextView.setVisibility(View.INVISIBLE); - emptyTextView.setText(LocaleController.getString("NoContacts", R.string.NoContacts)); - ((FrameLayout) fragmentView).addView(emptyTextView); - FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) emptyTextView.getLayoutParams(); + LinearLayout emptyTextLayout = new LinearLayout(getParentActivity()); + emptyTextLayout.setVisibility(View.INVISIBLE); + emptyTextLayout.setOrientation(LinearLayout.VERTICAL); + ((FrameLayout) fragmentView).addView(emptyTextLayout); + FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) emptyTextLayout.getLayoutParams(); layoutParams.width = FrameLayout.LayoutParams.MATCH_PARENT; layoutParams.height = FrameLayout.LayoutParams.MATCH_PARENT; layoutParams.gravity = Gravity.TOP; - emptyTextView.setLayoutParams(layoutParams); - emptyTextView.setOnTouchListener(new View.OnTouchListener() { + emptyTextLayout.setLayoutParams(layoutParams); + emptyTextLayout.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { return true; } }); + emptyTextView = new TextView(getParentActivity()); + emptyTextView.setTextColor(0xff808080); + emptyTextView.setTextSize(20); + emptyTextView.setGravity(Gravity.CENTER); + emptyTextView.setText(LocaleController.getString("NoContacts", R.string.NoContacts)); + emptyTextLayout.addView(emptyTextView); + LinearLayout.LayoutParams layoutParams1 = (LinearLayout.LayoutParams) emptyTextView.getLayoutParams(); + layoutParams1.width = LinearLayout.LayoutParams.MATCH_PARENT; + layoutParams1.height = LinearLayout.LayoutParams.MATCH_PARENT; + layoutParams1.weight = 0.5f; + emptyTextView.setLayoutParams(layoutParams1); + + FrameLayout frameLayout = new FrameLayout(getParentActivity()); + emptyTextLayout.addView(frameLayout); + layoutParams1 = (LinearLayout.LayoutParams) frameLayout.getLayoutParams(); + layoutParams1.width = LinearLayout.LayoutParams.MATCH_PARENT; + layoutParams1.height = LinearLayout.LayoutParams.MATCH_PARENT; + layoutParams1.weight = 0.5f; + frameLayout.setLayoutParams(layoutParams1); + listView = new SectionsListView(getParentActivity()); - listView.setEmptyView(emptyTextView); + listView.setEmptyView(emptyTextLayout); listView.setVerticalScrollBarEnabled(false); listView.setDivider(null); listView.setDividerHeight(0); @@ -348,6 +366,9 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter @Override public void onScroll(AbsListView absListView, int firstVisibleItem, int visibleItemCount, int totalItemCount) { + if (absListView.isFastScrollEnabled()) { + AndroidUtilities.clearDrawableAnimation(absListView); + } } }); } else { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/CountrySelectActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/CountrySelectActivity.java index 890ff660..cb5689f5 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/CountrySelectActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/CountrySelectActivity.java @@ -18,6 +18,7 @@ import android.widget.AbsListView; import android.widget.AdapterView; import android.widget.EditText; import android.widget.FrameLayout; +import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; @@ -127,27 +128,44 @@ public class CountrySelectActivity extends BaseFragment { fragmentView = new FrameLayout(getParentActivity()); - emptyTextView = new TextView(getParentActivity()); - emptyTextView.setTextColor(0xff808080); - emptyTextView.setTextSize(24); - emptyTextView.setGravity(Gravity.CENTER); - emptyTextView.setVisibility(View.INVISIBLE); - emptyTextView.setText(LocaleController.getString("NoResult", R.string.NoResult)); - ((FrameLayout) fragmentView).addView(emptyTextView); - FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) emptyTextView.getLayoutParams(); + LinearLayout emptyTextLayout = new LinearLayout(getParentActivity()); + emptyTextLayout.setVisibility(View.INVISIBLE); + emptyTextLayout.setOrientation(LinearLayout.VERTICAL); + ((FrameLayout) fragmentView).addView(emptyTextLayout); + FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) emptyTextLayout.getLayoutParams(); layoutParams.width = FrameLayout.LayoutParams.MATCH_PARENT; layoutParams.height = FrameLayout.LayoutParams.MATCH_PARENT; layoutParams.gravity = Gravity.TOP; - emptyTextView.setLayoutParams(layoutParams); - emptyTextView.setOnTouchListener(new View.OnTouchListener() { + emptyTextLayout.setLayoutParams(layoutParams); + emptyTextLayout.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { return true; } }); + emptyTextView = new TextView(getParentActivity()); + emptyTextView.setTextColor(0xff808080); + emptyTextView.setTextSize(20); + emptyTextView.setGravity(Gravity.CENTER); + emptyTextView.setText(LocaleController.getString("NoResult", R.string.NoResult)); + emptyTextLayout.addView(emptyTextView); + LinearLayout.LayoutParams layoutParams1 = (LinearLayout.LayoutParams) emptyTextView.getLayoutParams(); + layoutParams1.width = LinearLayout.LayoutParams.MATCH_PARENT; + layoutParams1.height = LinearLayout.LayoutParams.MATCH_PARENT; + layoutParams1.weight = 0.5f; + emptyTextView.setLayoutParams(layoutParams1); + + FrameLayout frameLayout = new FrameLayout(getParentActivity()); + emptyTextLayout.addView(frameLayout); + layoutParams1 = (LinearLayout.LayoutParams) frameLayout.getLayoutParams(); + layoutParams1.width = LinearLayout.LayoutParams.MATCH_PARENT; + layoutParams1.height = LinearLayout.LayoutParams.MATCH_PARENT; + layoutParams1.weight = 0.5f; + frameLayout.setLayoutParams(layoutParams1); + listView = new SectionsListView(getParentActivity()); - listView.setEmptyView(emptyTextView); + listView.setEmptyView(emptyTextLayout); listView.setVerticalScrollBarEnabled(false); listView.setDivider(null); listView.setDividerHeight(0); @@ -198,6 +216,9 @@ public class CountrySelectActivity extends BaseFragment { @Override public void onScroll(AbsListView absListView, int firstVisibleItem, int visibleItemCount, int totalItemCount) { + if (absListView.isFastScrollEnabled()) { + AndroidUtilities.clearDrawableAnimation(absListView); + } } }); } else { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/DocumentSelectActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/DocumentSelectActivity.java index ca5d47f5..224372b2 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/DocumentSelectActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/DocumentSelectActivity.java @@ -24,6 +24,7 @@ import android.widget.AdapterView; import android.widget.ListView; import android.widget.TextView; +import org.telegram.android.AndroidUtilities; import org.telegram.messenger.FileLog; import org.telegram.android.LocaleController; import org.telegram.messenger.R; @@ -32,7 +33,7 @@ import org.telegram.ui.Adapters.BaseFragmentAdapter; import org.telegram.ui.ActionBar.ActionBar; import org.telegram.ui.ActionBar.ActionBarMenu; import org.telegram.ui.ActionBar.ActionBarMenuItem; -import org.telegram.ui.Views.BackupImageView; +import org.telegram.ui.Cells.TextDetailDocumentsCell; import org.telegram.ui.ActionBar.BaseFragment; import java.io.BufferedReader; @@ -261,6 +262,7 @@ public class DocumentSelectActivity extends BaseFragment { } else { emptyView.setText(LocaleController.getString("NotMounted", R.string.NotMounted)); } + AndroidUtilities.clearDrawableAnimation(listView); listAdapter.notifyDataSetChanged(); return true; } @@ -309,6 +311,7 @@ public class DocumentSelectActivity extends BaseFragment { item.file = file; if (file.isDirectory()) { item.icon = R.drawable.ic_directory; + item.subtitle = LocaleController.getString("Folder", R.string.Folder); } else { String fname = file.getName(); String[] sp = fname.split("\\."); @@ -323,10 +326,11 @@ public class DocumentSelectActivity extends BaseFragment { } ListItem item = new ListItem(); item.title = ".."; - item.subtitle = ""; + item.subtitle = LocaleController.getString("Folder", R.string.Folder); item.icon = R.drawable.ic_directory; item.file = null; items.add(0, item); + AndroidUtilities.clearDrawableAnimation(listView); listAdapter.notifyDataSetChanged(); return true; } @@ -335,11 +339,7 @@ public class DocumentSelectActivity extends BaseFragment { if (getParentActivity() == null) { return; } - new AlertDialog.Builder(getParentActivity()) - .setTitle(LocaleController.getString("AppName", R.string.AppName)) - .setMessage(error) - .setPositiveButton(R.string.OK, null) - .show(); + new AlertDialog.Builder(getParentActivity()).setTitle(LocaleController.getString("AppName", R.string.AppName)).setMessage(error).setPositiveButton(R.string.OK, null).show(); } private void listRoots() { @@ -420,6 +420,7 @@ public class DocumentSelectActivity extends BaseFragment { FileLog.e("tmessages", e); } + AndroidUtilities.clearDrawableAnimation(listView); listAdapter.notifyDataSetChanged(); } @@ -465,35 +466,18 @@ public class DocumentSelectActivity extends BaseFragment { @Override public View getView(int position, View convertView, ViewGroup parent) { - View v = convertView; + if (convertView == null) { + convertView = new TextDetailDocumentsCell(mContext); + } + TextDetailDocumentsCell textDetailCell = (TextDetailDocumentsCell) convertView; ListItem item = items.get(position); - if (v == null) { - v = View.inflate(mContext, R.layout.document_item, null); - if (item.subtitle.length() == 0) { - v.findViewById(R.id.docs_item_info).setVisibility(View.GONE); - } - } - TextView typeTextView = (TextView)v.findViewById(R.id.docs_item_type); - ((TextView)v.findViewById(R.id.docs_item_title)).setText(item.title); - - ((TextView)v.findViewById(R.id.docs_item_info)).setText(item.subtitle); - BackupImageView imageView = (BackupImageView)v.findViewById(R.id.docs_item_thumb); - if (item.thumb != null) { - imageView.setImageBitmap(null); - typeTextView.setText(item.ext.toUpperCase().substring(0, Math.min(item.ext.length(), 4))); - imageView.setImage(item.thumb, "55_42", null); - imageView.setVisibility(View.VISIBLE); - typeTextView.setVisibility(View.VISIBLE); - } else if (item.icon != 0) { - imageView.setImageResource(item.icon); - imageView.setVisibility(View.VISIBLE); - typeTextView.setVisibility(View.GONE); + if (item.icon != 0) { + ((TextDetailDocumentsCell) convertView).setTextAndValueAndTypeAndThumb(item.title, item.subtitle, null, null, item.icon); } else { - typeTextView.setText(item.ext.toUpperCase().substring(0, Math.min(item.ext.length(), 4))); - imageView.setVisibility(View.GONE); - typeTextView.setVisibility(View.VISIBLE); + String type = item.ext.toUpperCase().substring(0, Math.min(item.ext.length(), 4)); + ((TextDetailDocumentsCell) convertView).setTextAndValueAndTypeAndThumb(item.title, item.subtitle, type, item.thumb, 0); } - return v; + return convertView; } } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java index 0f6d65d7..65cfbee2 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateActivity.java @@ -59,7 +59,11 @@ import java.util.HashMap; public class GroupCreateActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate { - public class XImageSpan extends ImageSpan { + public static interface GroupCreateActivityDelegate { + public abstract void didSelectUsers(ArrayList ids); + } + + private class XImageSpan extends ImageSpan { public int uid; public XImageSpan(Drawable d, int verticalAlignment) { @@ -90,10 +94,14 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen private SectionsListView listView; private ContactsSearchAdapter searchListViewAdapter; + private GroupCreateActivityDelegate delegate; + private int beforeChangeIndex; private int maxCount = 200; private boolean ignoreChange = false; private boolean isBroadcast = false; + private boolean isAlwaysShare = false; + private boolean isNeverShare = false; private boolean searchWas; private boolean searching; private CharSequence changeString; @@ -109,6 +117,8 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen public GroupCreateActivity(Bundle args) { super(args); isBroadcast = args.getBoolean("broadcast", false); + isAlwaysShare = args.getBoolean("isAlwaysShare", false); + isNeverShare = args.getBoolean("isNeverShare", false); maxCount = !isBroadcast ? MessagesController.getInstance().maxGroupCount : MessagesController.getInstance().maxBroadcastCount; } @@ -136,8 +146,14 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen actionBar.setBackButtonImage(R.drawable.ic_ab_back); actionBar.setBackOverlay(R.layout.updating_state_layout); - actionBar.setTitle(isBroadcast ? LocaleController.getString("NewBroadcastList", R.string.NewBroadcastList) : LocaleController.getString("NewGroup", R.string.NewGroup)); - actionBar.setSubtitle(LocaleController.formatString("MembersCount", R.string.MembersCount, selectedContacts.size(), maxCount)); + if (isAlwaysShare) { + actionBar.setTitle(LocaleController.getString("AlwaysShareWithTitle", R.string.AlwaysShareWithTitle)); + } else if (isNeverShare) { + actionBar.setTitle(LocaleController.getString("NeverShareWithTitle", R.string.NeverShareWithTitle)); + } else { + actionBar.setTitle(isBroadcast ? LocaleController.getString("NewBroadcastList", R.string.NewBroadcastList) : LocaleController.getString("NewGroup", R.string.NewGroup)); + actionBar.setSubtitle(LocaleController.formatString("MembersCount", R.string.MembersCount, selectedContacts.size(), maxCount)); + } actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { @Override @@ -145,9 +161,17 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen if (id == -1) { finishFragment(); } else if (id == done_button) { - if (!selectedContacts.isEmpty()) { - ArrayList result = new ArrayList(); - result.addAll(selectedContacts.keySet()); + if (selectedContacts.isEmpty()) { + return; + } + ArrayList result = new ArrayList(); + result.addAll(selectedContacts.keySet()); + if (isAlwaysShare || isNeverShare) { + if (delegate != null) { + delegate.didSelectUsers(result); + } + finishFragment(); + } else { Bundle args = new Bundle(); args.putIntegerArrayList("result", result); args.putBoolean("broadcast", isBroadcast); @@ -157,7 +181,7 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen } }); ActionBarMenu menu = actionBar.createMenu(); - menu.addItem(done_button, R.drawable.ic_done, 0, AndroidUtilities.dp(56)); + menu.addItemWithWidth(done_button, R.drawable.ic_done, AndroidUtilities.dp(56)); searchListViewAdapter = new ContactsSearchAdapter(getParentActivity(), null, false); searchListViewAdapter.setCheckedMap(selectedContacts); @@ -179,8 +203,8 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen userSelectEditText = new EditText(getParentActivity()); userSelectEditText.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); - userSelectEditText.setHintTextColor(0xffa6a6a6); - userSelectEditText.setTextColor(0xff000000); + userSelectEditText.setHintTextColor(0xff979797); + userSelectEditText.setTextColor(0xff212121); userSelectEditText.setInputType(InputType.TYPE_TEXT_VARIATION_FILTER | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS | InputType.TYPE_TEXT_FLAG_MULTI_LINE); userSelectEditText.setMinimumHeight(AndroidUtilities.dp(54)); userSelectEditText.setSingleLine(false); @@ -201,7 +225,13 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen layoutParams1.gravity = Gravity.TOP; userSelectEditText.setLayoutParams(layoutParams1); - userSelectEditText.setHint(LocaleController.getString("SendMessageTo", R.string.SendMessageTo)); + if (isAlwaysShare) { + userSelectEditText.setHint(LocaleController.getString("AlwaysShareWithPlaceholder", R.string.AlwaysShareWithPlaceholder)); + } else if (isNeverShare) { + userSelectEditText.setHint(LocaleController.getString("NeverShareWithPlaceholder", R.string.NeverShareWithPlaceholder)); + } else { + userSelectEditText.setHint(LocaleController.getString("SendMessageTo", R.string.SendMessageTo)); + } if (Build.VERSION.SDK_INT >= 11) { userSelectEditText.setTextIsSelectable(false); } @@ -243,7 +273,9 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen selectedContacts.remove(sp.uid); } } - actionBar.setSubtitle(LocaleController.formatString("MembersCount", R.string.MembersCount, selectedContacts.size(), maxCount)); + if (!isAlwaysShare && !isNeverShare) { + actionBar.setSubtitle(LocaleController.formatString("MembersCount", R.string.MembersCount, selectedContacts.size(), maxCount)); + } listView.invalidateViews(); } else { search = true; @@ -288,27 +320,43 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen } }); - emptyTextView = new TextView(getParentActivity()); - emptyTextView.setTextColor(0xff808080); - emptyTextView.setTextSize(24); - emptyTextView.setGravity(Gravity.CENTER); - emptyTextView.setVisibility(View.INVISIBLE); - emptyTextView.setText(LocaleController.getString("NoContacts", R.string.NoContacts)); - linearLayout.addView(emptyTextView); - layoutParams = (LinearLayout.LayoutParams) emptyTextView.getLayoutParams(); - layoutParams.width = LinearLayout.LayoutParams.MATCH_PARENT; - layoutParams.height = LinearLayout.LayoutParams.MATCH_PARENT; - layoutParams.gravity = Gravity.TOP; - emptyTextView.setLayoutParams(layoutParams); - emptyTextView.setOnTouchListener(new View.OnTouchListener() { + LinearLayout emptyTextLayout = new LinearLayout(getParentActivity()); + emptyTextLayout.setVisibility(View.INVISIBLE); + emptyTextLayout.setOrientation(LinearLayout.VERTICAL); + linearLayout.addView(emptyTextLayout); + layoutParams = (LinearLayout.LayoutParams) emptyTextLayout.getLayoutParams(); + layoutParams.width = FrameLayout.LayoutParams.MATCH_PARENT; + layoutParams.height = FrameLayout.LayoutParams.MATCH_PARENT; + emptyTextLayout.setLayoutParams(layoutParams); + emptyTextLayout.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { return true; } }); + emptyTextView = new TextView(getParentActivity()); + emptyTextView.setTextColor(0xff808080); + emptyTextView.setTextSize(20); + emptyTextView.setGravity(Gravity.CENTER); + emptyTextView.setText(LocaleController.getString("NoContacts", R.string.NoContacts)); + emptyTextLayout.addView(emptyTextView); + layoutParams = (LinearLayout.LayoutParams) emptyTextView.getLayoutParams(); + layoutParams.width = LinearLayout.LayoutParams.MATCH_PARENT; + layoutParams.height = LinearLayout.LayoutParams.MATCH_PARENT; + layoutParams.weight = 0.5f; + emptyTextView.setLayoutParams(layoutParams); + + FrameLayout frameLayout2 = new FrameLayout(getParentActivity()); + emptyTextLayout.addView(frameLayout2); + layoutParams = (LinearLayout.LayoutParams) frameLayout2.getLayoutParams(); + layoutParams.width = LinearLayout.LayoutParams.MATCH_PARENT; + layoutParams.height = LinearLayout.LayoutParams.MATCH_PARENT; + layoutParams.weight = 0.5f; + frameLayout2.setLayoutParams(layoutParams); + listView = new SectionsListView(getParentActivity()); - listView.setEmptyView(emptyTextView); + listView.setEmptyView(emptyTextLayout); listView.setVerticalScrollBarEnabled(false); listView.setDivider(null); listView.setDividerHeight(0); @@ -361,7 +409,9 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen span.uid = user.id; ignoreChange = false; } - actionBar.setSubtitle(LocaleController.formatString("MembersCount", R.string.MembersCount, selectedContacts.size(), maxCount)); + if (!isAlwaysShare && !isNeverShare) { + actionBar.setSubtitle(LocaleController.formatString("MembersCount", R.string.MembersCount, selectedContacts.size(), maxCount)); + } if (searching || searchWas) { ignoreChange = true; SpannableStringBuilder ssb = new SpannableStringBuilder(""); @@ -400,6 +450,9 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen @Override public void onScroll(AbsListView absListView, int firstVisibleItem, int visibleItemCount, int totalItemCount) { + if (absListView.isFastScrollEnabled()) { + AndroidUtilities.clearDrawableAnimation(absListView); + } } }); } else { @@ -434,7 +487,11 @@ public class GroupCreateActivity extends BaseFragment implements NotificationCen } } - public XImageSpan createAndPutChipForUser(TLRPC.User user) { + public void setDelegate(GroupCreateActivityDelegate delegate) { + this.delegate = delegate; + } + + private XImageSpan createAndPutChipForUser(TLRPC.User user) { LayoutInflater lf = (LayoutInflater)ApplicationLoader.applicationContext.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); View textView = lf.inflate(R.layout.group_create_bubble, null); TextView text = (TextView)textView.findViewById(R.id.bubble_text_view); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateFinalActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateFinalActivity.java index bef7552a..953cca7c 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateFinalActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/GroupCreateFinalActivity.java @@ -184,7 +184,7 @@ public class GroupCreateFinalActivity extends BaseFragment implements Notificati }); ActionBarMenu menu = actionBar.createMenu(); - menu.addItem(done_button, R.drawable.ic_done, 0, AndroidUtilities.dp(56)); + menu.addItemWithWidth(done_button, R.drawable.ic_done, AndroidUtilities.dp(56)); fragmentView = new LinearLayout(getParentActivity()); LinearLayout linearLayout = (LinearLayout) fragmentView; @@ -198,6 +198,7 @@ public class GroupCreateFinalActivity extends BaseFragment implements Notificati frameLayout.setLayoutParams(layoutParams); avatarImage = new BackupImageView(getParentActivity()); + avatarImage.imageReceiver.setRoundRadius(AndroidUtilities.dp(32)); avatarDrawable.setInfo(5, null, null, isBroadcast); avatarImage.setImageDrawable(avatarDrawable); frameLayout.addView(avatarImage); @@ -254,12 +255,12 @@ public class GroupCreateFinalActivity extends BaseFragment implements Notificati nameTextView.setMaxLines(4); nameTextView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT); nameTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); - nameTextView.setHintTextColor(0xffa6a6a6); + nameTextView.setHintTextColor(0xff979797); nameTextView.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI); nameTextView.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES); nameTextView.setPadding(0, 0, 0, AndroidUtilities.dp(8)); AndroidUtilities.clearCursorDrawable(nameTextView); - nameTextView.setTextColor(0xff000000); + nameTextView.setTextColor(0xff212121); frameLayout.addView(nameTextView); layoutParams1 = (FrameLayout.LayoutParams) nameTextView.getLayoutParams(); layoutParams1.width = FrameLayout.LayoutParams.MATCH_PARENT; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LanguageSelectActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LanguageSelectActivity.java index a0fa16ec..98d88236 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LanguageSelectActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LanguageSelectActivity.java @@ -20,6 +20,7 @@ import android.widget.AbsListView; import android.widget.AdapterView; import android.widget.EditText; import android.widget.FrameLayout; +import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; @@ -94,7 +95,6 @@ public class LanguageSelectActivity extends BaseFragment { if (text.length() != 0) { searchWas = true; if (listView != null) { - listView.setPadding(AndroidUtilities.dp(16), listView.getPaddingTop(), AndroidUtilities.dp(16), listView.getPaddingBottom()); listView.setAdapter(searchListViewAdapter); } } @@ -106,27 +106,44 @@ public class LanguageSelectActivity extends BaseFragment { fragmentView = new FrameLayout(getParentActivity()); - emptyTextView = new TextView(getParentActivity()); - emptyTextView.setTextColor(0xff808080); - emptyTextView.setTextSize(24); - emptyTextView.setGravity(Gravity.CENTER); - emptyTextView.setVisibility(View.INVISIBLE); - emptyTextView.setText(LocaleController.getString("NoResult", R.string.NoResult)); - ((FrameLayout) fragmentView).addView(emptyTextView); - FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) emptyTextView.getLayoutParams(); + LinearLayout emptyTextLayout = new LinearLayout(getParentActivity()); + emptyTextLayout.setVisibility(View.INVISIBLE); + emptyTextLayout.setOrientation(LinearLayout.VERTICAL); + ((FrameLayout) fragmentView).addView(emptyTextLayout); + FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) emptyTextLayout.getLayoutParams(); layoutParams.width = FrameLayout.LayoutParams.MATCH_PARENT; layoutParams.height = FrameLayout.LayoutParams.MATCH_PARENT; layoutParams.gravity = Gravity.TOP; - emptyTextView.setLayoutParams(layoutParams); - emptyTextView.setOnTouchListener(new View.OnTouchListener() { + emptyTextLayout.setLayoutParams(layoutParams); + emptyTextLayout.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { return true; } }); + emptyTextView = new TextView(getParentActivity()); + emptyTextView.setTextColor(0xff808080); + emptyTextView.setTextSize(20); + emptyTextView.setGravity(Gravity.CENTER); + emptyTextView.setText(LocaleController.getString("NoResult", R.string.NoResult)); + emptyTextLayout.addView(emptyTextView); + LinearLayout.LayoutParams layoutParams1 = (LinearLayout.LayoutParams) emptyTextView.getLayoutParams(); + layoutParams1.width = LinearLayout.LayoutParams.MATCH_PARENT; + layoutParams1.height = LinearLayout.LayoutParams.MATCH_PARENT; + layoutParams1.weight = 0.5f; + emptyTextView.setLayoutParams(layoutParams1); + + FrameLayout frameLayout = new FrameLayout(getParentActivity()); + emptyTextLayout.addView(frameLayout); + layoutParams1 = (LinearLayout.LayoutParams) frameLayout.getLayoutParams(); + layoutParams1.width = LinearLayout.LayoutParams.MATCH_PARENT; + layoutParams1.height = LinearLayout.LayoutParams.MATCH_PARENT; + layoutParams1.weight = 0.5f; + frameLayout.setLayoutParams(layoutParams1); + listView = new ListView(getParentActivity()); - listView.setEmptyView(emptyTextView); + listView.setEmptyView(emptyTextLayout); listView.setVerticalScrollBarEnabled(false); listView.setDivider(null); listView.setDividerHeight(0); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LastSeenActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LastSeenActivity.java new file mode 100644 index 00000000..86be9fa8 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/LastSeenActivity.java @@ -0,0 +1,469 @@ +/* + * This is the source code of Telegram for Android v. 1.7.x. + * It is licensed under GNU GPL v. 2 or later. + * You should have received a copy of the license in this archive (see LICENSE). + * + * Copyright Nikolai Kudashov, 2013-2014. + */ + +package org.telegram.ui; + +import android.app.AlertDialog; +import android.content.Context; +import android.os.Bundle; +import android.text.Spannable; +import android.text.method.LinkMovementMethod; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.FrameLayout; +import android.widget.ListView; +import android.widget.TextView; + +import org.telegram.android.AndroidUtilities; +import org.telegram.android.ContactsController; +import org.telegram.android.LocaleController; +import org.telegram.android.MessagesController; +import org.telegram.android.NotificationCenter; +import org.telegram.messenger.ConnectionsManager; +import org.telegram.messenger.FileLog; +import org.telegram.messenger.R; +import org.telegram.messenger.RPCRequest; +import org.telegram.messenger.TLObject; +import org.telegram.messenger.TLRPC; +import org.telegram.ui.ActionBar.ActionBar; +import org.telegram.ui.ActionBar.ActionBarMenu; +import org.telegram.ui.ActionBar.BaseFragment; +import org.telegram.ui.Adapters.BaseFragmentAdapter; +import org.telegram.ui.Cells.HeaderCell; +import org.telegram.ui.Cells.TextInfoPrivacyCell; +import org.telegram.ui.Cells.TextSettingsCell; + +import java.util.ArrayList; + +public class LastSeenActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate { + + private ListAdapter listAdapter; + private View doneButton; + + private int currentType = 0; + private ArrayList currentPlus; + private ArrayList currentMinus; + + private int lastSeenSectionRow; + private int everybodyRow; + private int myContactsRow; + private int nobodyRow; + private int lastSeenDetailRow; + private int shareSectionRow; + private int alwaysShareRow; + private int neverShareRow; + private int shareDetailRow; + private int rowCount; + + private final static int done_button = 1; + + private static class LinkMovementMethodMy extends LinkMovementMethod { + @Override + public boolean onTouchEvent(TextView widget, Spannable buffer, MotionEvent event) { + try { + return super.onTouchEvent(widget, buffer, event); + } catch (Exception e) { + FileLog.e("tmessages", e); + } + return false; + } + } + + @Override + public boolean onFragmentCreate() { + super.onFragmentCreate(); + checkPrivacy(); + updateRows(); + NotificationCenter.getInstance().addObserver(this, NotificationCenter.privacyRulesUpdated); + return true; + } + + @Override + public void onFragmentDestroy() { + super.onFragmentDestroy(); + NotificationCenter.getInstance().removeObserver(this, NotificationCenter.privacyRulesUpdated); + } + + @Override + public View createView(LayoutInflater inflater, ViewGroup container) { + if (fragmentView == null) { + actionBar.setBackButtonImage(R.drawable.ic_ab_back); + actionBar.setBackOverlay(R.layout.updating_state_layout); + actionBar.setTitle(LocaleController.getString("PrivacyLastSeen", R.string.PrivacyLastSeen)); + actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { + @Override + public void onItemClick(int id) { + if (id == -1) { + finishFragment(); + } else if (id == done_button) { + TLRPC.TL_account_setPrivacy req = new TLRPC.TL_account_setPrivacy(); + req.key = new TLRPC.TL_inputPrivacyKeyStatusTimestamp(); + if (currentType != 0 && currentPlus.size() > 0) { + TLRPC.TL_inputPrivacyValueAllowUsers rule = new TLRPC.TL_inputPrivacyValueAllowUsers(); + for (Integer uid : currentPlus) { + TLRPC.User user = MessagesController.getInstance().getUser(uid); + if (user != null) { + TLRPC.InputUser inputUser = MessagesController.getInputUser(user); + if (inputUser != null) { + rule.users.add(inputUser); + } + } + } + req.rules.add(rule); + } + if (currentType != 1 && currentMinus.size() > 0) { + TLRPC.TL_inputPrivacyValueDisallowUsers rule = new TLRPC.TL_inputPrivacyValueDisallowUsers(); + for (Integer uid : currentMinus) { + TLRPC.User user = MessagesController.getInstance().getUser(uid); + if (user != null) { + TLRPC.InputUser inputUser = MessagesController.getInputUser(user); + if (inputUser != null) { + rule.users.add(inputUser); + } + } + } + req.rules.add(rule); + } + if (currentType == 0) { + req.rules.add(new TLRPC.TL_inputPrivacyValueAllowAll()); + } else if (currentType == 1) { + req.rules.add(new TLRPC.TL_inputPrivacyValueDisallowAll()); + } else if (currentType == 2) { + req.rules.add(new TLRPC.TL_inputPrivacyValueAllowContacts()); + } + ConnectionsManager.getInstance().performRpc(req, new RPCRequest.RPCRequestDelegate() { + @Override + public void run(final TLObject response, final TLRPC.TL_error error) { + AndroidUtilities.runOnUIThread(new Runnable() { + @Override + public void run() { + if (error == null) { + finishFragment(); + TLRPC.TL_account_privacyRules rules = (TLRPC.TL_account_privacyRules) response; + MessagesController.getInstance().putUsers(rules.users, false); + ContactsController.getInstance().setPrivacyRules(rules.rules); + } else { + showErrorAlert(); + } + } + }); + } + }, true, RPCRequest.RPCRequestClassGeneric | RPCRequest.RPCRequestClassFailOnServerErrors); + } + } + }); + + ActionBarMenu menu = actionBar.createMenu(); + doneButton = menu.addItemWithWidth(done_button, R.drawable.ic_done, AndroidUtilities.dp(56)); + doneButton.setVisibility(View.GONE); + + listAdapter = new ListAdapter(getParentActivity()); + + fragmentView = new FrameLayout(getParentActivity()); + FrameLayout frameLayout = (FrameLayout) fragmentView; + frameLayout.setBackgroundColor(0xfff0f0f0); + + ListView listView = new ListView(getParentActivity()); + listView.setDivider(null); + listView.setDividerHeight(0); + listView.setVerticalScrollBarEnabled(false); + listView.setDrawSelectorOnTop(true); + frameLayout.addView(listView); + FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) listView.getLayoutParams(); + layoutParams.width = FrameLayout.LayoutParams.MATCH_PARENT; + layoutParams.height = FrameLayout.LayoutParams.MATCH_PARENT; + layoutParams.gravity = Gravity.TOP; + listView.setLayoutParams(layoutParams); + listView.setAdapter(listAdapter); + listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, final int i, long l) { + if (i == nobodyRow || i == everybodyRow || i == myContactsRow) { + int newType = currentType; + if (i == nobodyRow) { + newType = 1; + } else if (i == everybodyRow) { + newType = 0; + } else if (i == myContactsRow) { + newType = 2; + } + if (newType == currentType) { + return; + } + doneButton.setVisibility(View.VISIBLE); + currentType = newType; + updateRows(); + } else if (i == neverShareRow || i == alwaysShareRow) { + ArrayList createFromArray = null; + if (i == neverShareRow) { + createFromArray = currentMinus; + } else { + createFromArray = currentPlus; + } + if (createFromArray.isEmpty()) { + Bundle args = new Bundle(); + args.putBoolean(i == neverShareRow ? "isNeverShare" : "isAlwaysShare", true); + GroupCreateActivity fragment = new GroupCreateActivity(args); + fragment.setDelegate(new GroupCreateActivity.GroupCreateActivityDelegate() { + @Override + public void didSelectUsers(ArrayList ids) { + if (i == neverShareRow) { + currentMinus = ids; + } else { + currentPlus = ids; + } + doneButton.setVisibility(View.VISIBLE); + listAdapter.notifyDataSetChanged(); + } + }); + presentFragment(fragment); + } else { + LastSeenUsersActivity fragment = new LastSeenUsersActivity(createFromArray, i == alwaysShareRow); + fragment.setDelegate(new LastSeenUsersActivity.LastSeenUsersActivityDelegate() { + @Override + public void didUpdatedUserList(ArrayList ids, boolean added) { + if (i == neverShareRow) { + currentMinus = ids; + if (added) { + for (Integer id : currentMinus) { + currentPlus.remove(id); + } + } + } else { + currentPlus = ids; + if (added) { + for (Integer id : currentPlus) { + currentMinus.remove(id); + } + } + } + doneButton.setVisibility(View.VISIBLE); + listAdapter.notifyDataSetChanged(); + } + }); + presentFragment(fragment); + } + } + } + }); + } else { + ViewGroup parent = (ViewGroup) fragmentView.getParent(); + if (parent != null) { + parent.removeView(fragmentView); + } + } + return fragmentView; + } + + @Override + public void didReceivedNotification(int id, Object... args) { + if (id == NotificationCenter.privacyRulesUpdated) { + checkPrivacy(); + } + } + + private void showErrorAlert() { + if (getParentActivity() == null) { + return; + } + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); + builder.setMessage(LocaleController.getString("PrivacyFloodControlError", R.string.PrivacyFloodControlError)); + builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), null); + showAlertDialog(builder); + } + + private void checkPrivacy() { + currentPlus = new ArrayList(); + currentMinus = new ArrayList(); + ArrayList privacyRules = ContactsController.getInstance().getPrivacyRules(); + if (privacyRules.size() == 0) { + currentType = 1; + return; + } + int type = -1; + for (TLRPC.PrivacyRule rule : privacyRules) { + if (rule instanceof TLRPC.TL_privacyValueAllowUsers) { + currentPlus.addAll(rule.users); + } else if (rule instanceof TLRPC.TL_privacyValueDisallowUsers) { + currentMinus.addAll(rule.users); + } else if (rule instanceof TLRPC.TL_privacyValueAllowAll) { + type = 0; + } else if (rule instanceof TLRPC.TL_privacyValueDisallowAll) { + type = 1; + } else { + type = 2; + } + } + if (type == 0 || type == -1 && currentMinus.size() > 0) { + currentType = 0; + } else if (type == 2 || type == -1 && currentMinus.size() > 0 && currentPlus.size() > 0) { + currentType = 2; + } else if (type == 1 || type == -1 && currentPlus.size() > 0) { + currentType = 1; + } + if (doneButton != null) { + doneButton.setVisibility(View.GONE); + } + updateRows(); + } + + private void updateRows() { + rowCount = 0; + lastSeenSectionRow = rowCount++; + everybodyRow = rowCount++; + myContactsRow = rowCount++; + nobodyRow = rowCount++; + lastSeenDetailRow = rowCount++; + shareSectionRow = rowCount++; + if (currentType == 1 || currentType == 2) { + alwaysShareRow = rowCount++; + } else { + alwaysShareRow = -1; + } + if (currentType == 0 || currentType == 2) { + neverShareRow = rowCount++; + } else { + neverShareRow = -1; + } + shareDetailRow = rowCount++; + if (listAdapter != null) { + listAdapter.notifyDataSetChanged(); + } + } + + @Override + public void onResume() { + super.onResume(); + if (listAdapter != null) { + listAdapter.notifyDataSetChanged(); + } + } + + private class ListAdapter extends BaseFragmentAdapter { + private Context mContext; + + public ListAdapter(Context context) { + mContext = context; + } + + @Override + public boolean areAllItemsEnabled() { + return false; + } + + @Override + public boolean isEnabled(int i) { + return i == nobodyRow || i == everybodyRow || i == myContactsRow || i == neverShareRow || i == alwaysShareRow; + } + + @Override + public int getCount() { + return rowCount; + } + + @Override + public Object getItem(int i) { + return null; + } + + @Override + public long getItemId(int i) { + return i; + } + + @Override + public boolean hasStableIds() { + return false; + } + + @Override + public View getView(int i, View view, ViewGroup viewGroup) { + int type = getItemViewType(i); + if (type == 0) { + if (view == null) { + view = new TextSettingsCell(mContext); + view.setBackgroundColor(0xffffffff); + } + TextSettingsCell textCell = (TextSettingsCell) view; + if (i == everybodyRow) { + textCell.setTextAndIcon(LocaleController.getString("LastSeenEverybody", R.string.LastSeenEverybody), currentType == 0 ? R.drawable.check_blue : 0, true); + } else if (i == myContactsRow) { + textCell.setTextAndIcon(LocaleController.getString("LastSeenContacts", R.string.LastSeenContacts), currentType == 2 ? R.drawable.check_blue : 0, true); + } else if (i == nobodyRow) { + textCell.setTextAndIcon(LocaleController.getString("LastSeenNobody", R.string.LastSeenNobody), currentType == 1 ? R.drawable.check_blue : 0, false); + } else if (i == alwaysShareRow) { + String value; + if (currentPlus.size() != 0) { + value = LocaleController.formatPluralString("Users", currentPlus.size()); + } else { + value = LocaleController.getString("EmpryUsersPlaceholder", R.string.EmpryUsersPlaceholder); + } + textCell.setTextAndValue(LocaleController.getString("AlwaysShareWith", R.string.AlwaysShareWith), value, neverShareRow != -1); + } else if (i == neverShareRow) { + String value; + if (currentMinus.size() != 0) { + value = LocaleController.formatPluralString("Users", currentMinus.size()); + } else { + value = LocaleController.getString("EmpryUsersPlaceholder", R.string.EmpryUsersPlaceholder); + } + textCell.setTextAndValue(LocaleController.getString("NeverShareWith", R.string.NeverShareWith), value, false); + } + } else if (type == 1) { + if (view == null) { + view = new TextInfoPrivacyCell(mContext); + view.setBackgroundColor(0xffffffff); + } + if (i == lastSeenDetailRow) { + ((TextInfoPrivacyCell) view).setText(LocaleController.getString("CustomHelp", R.string.CustomHelp)); + view.setBackgroundResource(R.drawable.greydivider); + } else if (i == shareDetailRow) { + ((TextInfoPrivacyCell) view).setText(LocaleController.getString("CustomShareSettingsHelp", R.string.CustomShareSettingsHelp)); + view.setBackgroundResource(R.drawable.greydivider_bottom); + } + } else if (type == 2) { + if (view == null) { + view = new HeaderCell(mContext); + view.setBackgroundColor(0xffffffff); + } + if (i == lastSeenSectionRow) { + ((HeaderCell) view).setText(LocaleController.getString("LastSeenTitle", R.string.LastSeenTitle)); + } else if (i == shareSectionRow) { + ((HeaderCell) view).setText(LocaleController.getString("AddExceptions", R.string.AddExceptions)); + } + } + return view; + } + + @Override + public int getItemViewType(int i) { + if (i == alwaysShareRow || i == neverShareRow || i == everybodyRow || i == myContactsRow || i == nobodyRow) { + return 0; + } else if (i == shareDetailRow || i == lastSeenDetailRow) { + return 1; + } else if (i == lastSeenSectionRow || i == shareSectionRow) { + return 2; + } + return 0; + } + + @Override + public int getViewTypeCount() { + return 3; + } + + @Override + public boolean isEmpty() { + return false; + } + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LastSeenUsersActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LastSeenUsersActivity.java new file mode 100644 index 00000000..6d3232b6 --- /dev/null +++ b/TMessagesProj/src/main/java/org/telegram/ui/LastSeenUsersActivity.java @@ -0,0 +1,313 @@ +/* + * This is the source code of Telegram for Android v. 2.0.x. + * It is licensed under GNU GPL v. 2 or later. + * You should have received a copy of the license in this archive (see LICENSE). + * + * Copyright Nikolai Kudashov, 2013-2014. + */ + +package org.telegram.ui; + +import android.app.AlertDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.os.Build; +import android.os.Bundle; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.FrameLayout; +import android.widget.ListView; +import android.widget.TextView; + +import org.telegram.PhoneFormat.PhoneFormat; +import org.telegram.android.LocaleController; +import org.telegram.android.MessagesController; +import org.telegram.android.NotificationCenter; +import org.telegram.messenger.R; +import org.telegram.messenger.TLRPC; +import org.telegram.ui.ActionBar.ActionBar; +import org.telegram.ui.ActionBar.ActionBarMenu; +import org.telegram.ui.ActionBar.BaseFragment; +import org.telegram.ui.Adapters.BaseFragmentAdapter; +import org.telegram.ui.Cells.TextInfoCell; +import org.telegram.ui.Cells.UserCell; + +import java.util.ArrayList; + +public class LastSeenUsersActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate { + + public static interface LastSeenUsersActivityDelegate { + public abstract void didUpdatedUserList(ArrayList ids, boolean added); + } + + private ListView listView; + private ListAdapter listViewAdapter; + private int selectedUserId; + + private ArrayList uidArray; + private boolean isAlwaysShare; + + private LastSeenUsersActivityDelegate delegate; + + private final static int block_user = 1; + + public LastSeenUsersActivity(ArrayList users, boolean always) { + super(); + uidArray = users; + isAlwaysShare = always; + } + + @Override + public boolean onFragmentCreate() { + super.onFragmentCreate(); + NotificationCenter.getInstance().addObserver(this, NotificationCenter.updateInterfaces); + return true; + } + + @Override + public void onFragmentDestroy() { + super.onFragmentDestroy(); + NotificationCenter.getInstance().removeObserver(this, NotificationCenter.updateInterfaces); + } + + @Override + public View createView(LayoutInflater inflater, ViewGroup container) { + if (fragmentView == null) { + actionBar.setBackButtonImage(R.drawable.ic_ab_back); + actionBar.setBackOverlay(R.layout.updating_state_layout); + if (isAlwaysShare) { + actionBar.setTitle(LocaleController.getString("AlwaysShareWithTitle", R.string.AlwaysShareWithTitle)); + } else { + actionBar.setTitle(LocaleController.getString("NeverShareWithTitle", R.string.NeverShareWithTitle)); + } + actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { + @Override + public void onItemClick(int id) { + if (id == -1) { + finishFragment(); + } else if (id == block_user) { + Bundle args = new Bundle(); + args.putBoolean(isAlwaysShare ? "isAlwaysShare" : "isNeverShare", true); + GroupCreateActivity fragment = new GroupCreateActivity(args); + fragment.setDelegate(new GroupCreateActivity.GroupCreateActivityDelegate() { + @Override + public void didSelectUsers(ArrayList ids) { + for (Integer id : ids) { + if (uidArray.contains(id)) { + continue; + } + uidArray.add(id); + } + listViewAdapter.notifyDataSetChanged(); + if (delegate != null) { + delegate.didUpdatedUserList(uidArray, true); + } + } + }); + presentFragment(fragment); + } + } + }); + + ActionBarMenu menu = actionBar.createMenu(); + menu.addItem(block_user, R.drawable.plus); + + fragmentView = new FrameLayout(getParentActivity()); + FrameLayout frameLayout = (FrameLayout) fragmentView; + + TextView emptyTextView = new TextView(getParentActivity()); + emptyTextView.setTextColor(0xff808080); + emptyTextView.setTextSize(20); + emptyTextView.setGravity(Gravity.CENTER); + emptyTextView.setVisibility(View.INVISIBLE); + emptyTextView.setText(LocaleController.getString("NoContacts", R.string.NoContacts)); + frameLayout.addView(emptyTextView); + FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) emptyTextView.getLayoutParams(); + layoutParams.width = FrameLayout.LayoutParams.MATCH_PARENT; + layoutParams.height = FrameLayout.LayoutParams.MATCH_PARENT; + layoutParams.gravity = Gravity.TOP; + emptyTextView.setLayoutParams(layoutParams); + emptyTextView.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + return true; + } + }); + + listView = new ListView(getParentActivity()); + listView.setEmptyView(emptyTextView); + listView.setVerticalScrollBarEnabled(false); + listView.setDivider(null); + listView.setDividerHeight(0); + listView.setAdapter(listViewAdapter = new ListAdapter(getParentActivity())); + if (Build.VERSION.SDK_INT >= 11) { + listView.setVerticalScrollbarPosition(LocaleController.isRTL ? ListView.SCROLLBAR_POSITION_LEFT : ListView.SCROLLBAR_POSITION_RIGHT); + } + frameLayout.addView(listView); + layoutParams = (FrameLayout.LayoutParams) listView.getLayoutParams(); + layoutParams.width = FrameLayout.LayoutParams.MATCH_PARENT; + layoutParams.height = FrameLayout.LayoutParams.MATCH_PARENT; + listView.setLayoutParams(layoutParams); + + listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int i, long l) { + if (i < uidArray.size()) { + Bundle args = new Bundle(); + args.putInt("user_id", uidArray.get(i)); + presentFragment(new ProfileActivity(args)); + } + } + }); + + listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { + @Override + public boolean onItemLongClick(AdapterView adapterView, View view, int i, long l) { + if (i < 0 || i >= uidArray.size() || getParentActivity() == null) { + return true; + } + selectedUserId = uidArray.get(i); + + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + CharSequence[] items = new CharSequence[] {LocaleController.getString("Delete", R.string.Delete)}; + builder.setItems(items, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + if (i == 0) { + uidArray.remove((Integer)selectedUserId); + listViewAdapter.notifyDataSetChanged(); + if (delegate != null) { + delegate.didUpdatedUserList(uidArray, false); + } + } + } + }); + showAlertDialog(builder); + return true; + } + }); + } else { + ViewGroup parent = (ViewGroup)fragmentView.getParent(); + if (parent != null) { + parent.removeView(fragmentView); + } + } + return fragmentView; + } + + @Override + public void didReceivedNotification(int id, Object... args) { + if (id == NotificationCenter.updateInterfaces) { + int mask = (Integer)args[0]; + if ((mask & MessagesController.UPDATE_MASK_AVATAR) != 0 || (mask & MessagesController.UPDATE_MASK_NAME) != 0) { + updateVisibleRows(mask); + } + } + } + + private void updateVisibleRows(int mask) { + if (listView == null) { + return; + } + int count = listView.getChildCount(); + for (int a = 0; a < count; a++) { + View child = listView.getChildAt(a); + if (child instanceof UserCell) { + ((UserCell) child).update(mask); + } + } + } + + public void setDelegate(LastSeenUsersActivityDelegate delegate) { + this.delegate = delegate; + } + + @Override + public void onResume() { + super.onResume(); + if (listViewAdapter != null) { + listViewAdapter.notifyDataSetChanged(); + } + } + + private class ListAdapter extends BaseFragmentAdapter { + private Context mContext; + + public ListAdapter(Context context) { + mContext = context; + } + + @Override + public boolean areAllItemsEnabled() { + return false; + } + + @Override + public boolean isEnabled(int i) { + return i != uidArray.size(); + } + + @Override + public int getCount() { + if (uidArray.isEmpty()) { + return 0; + } + return uidArray.size() + 1; + } + + @Override + public Object getItem(int i) { + return null; + } + + @Override + public long getItemId(int i) { + return i; + } + + @Override + public boolean hasStableIds() { + return false; + } + + @Override + public View getView(int i, View view, ViewGroup viewGroup) { + int type = getItemViewType(i); + if (type == 0) { + if (view == null) { + view = new UserCell(mContext, 1); + } + TLRPC.User user = MessagesController.getInstance().getUser(uidArray.get(i)); + ((UserCell)view).setData(user, null, user.phone != null && user.phone.length() != 0 ? PhoneFormat.getInstance().format("+" + user.phone) : LocaleController.getString("NumberUnknown", R.string.NumberUnknown), 0); + } else if (type == 1) { + if (view == null) { + view = new TextInfoCell(mContext); + ((TextInfoCell) view).setText(LocaleController.getString("RemoveFromListText", R.string.RemoveFromListText)); + } + } + return view; + } + + @Override + public int getItemViewType(int i) { + if(i == uidArray.size()) { + return 1; + } + return 0; + } + + @Override + public int getViewTypeCount() { + return 2; + } + + @Override + public boolean isEmpty() { + return uidArray.isEmpty(); + } + } +} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java index f3690f32..d54c273c 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java @@ -27,11 +27,11 @@ import android.view.View; import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.view.Window; +import android.view.WindowManager; import android.widget.AbsListView; import android.widget.AdapterView; import android.widget.FrameLayout; import android.widget.ImageView; -import android.widget.LinearLayout; import android.widget.ListView; import android.widget.RelativeLayout; import android.widget.TextView; @@ -61,28 +61,28 @@ import java.util.ArrayList; import java.util.Map; public class LaunchActivity extends Activity implements ActionBarLayout.ActionBarLayoutDelegate, NotificationCenter.NotificationCenterDelegate, MessagesActivity.MessagesActivityDelegate { - private boolean finished = false; - private String videoPath = null; - private String sendingText = null; - private ArrayList photoPathsArray = null; - private ArrayList documentsPathsArray = null; - private ArrayList documentsOriginalPathsArray = null; - private ArrayList contactsToSend = null; + private boolean finished; + private String videoPath; + private String sendingText; + private ArrayList photoPathsArray; + private ArrayList documentsPathsArray; + private ArrayList documentsOriginalPathsArray; + private ArrayList contactsToSend; private int currentConnectionState; private static ArrayList mainFragmentsStack = new ArrayList(); private static ArrayList layerFragmentsStack = new ArrayList(); private static ArrayList rightFragmentsStack = new ArrayList(); - private ActionBarLayout actionBarLayout = null; - private ActionBarLayout layersActionBarLayout = null; - private ActionBarLayout rightActionBarLayout = null; - private FrameLayout shadowTablet = null; - private LinearLayout buttonLayoutTablet = null; - private FrameLayout shadowTabletSide = null; - private ImageView backgroundTablet = null; - private DrawerLayoutContainer drawerLayoutContainer = null; + private ActionBarLayout actionBarLayout; + private ActionBarLayout layersActionBarLayout; + private ActionBarLayout rightActionBarLayout; + private FrameLayout shadowTablet; + private FrameLayout shadowTabletSide; + private ImageView backgroundTablet; + private DrawerLayoutContainer drawerLayoutContainer; + private DrawerLayoutAdapter drawerLayoutAdapter; - private boolean tabletFullSize = false; + private boolean tabletFullSize; @Override protected void onCreate(Bundle savedInstanceState) { @@ -114,14 +114,66 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa super.onCreate(savedInstanceState); - actionBarLayout = new ActionBarLayout(this); - if (AndroidUtilities.isTablet()) { - setContentView(R.layout.launch_layout_tablet); - shadowTablet = (FrameLayout)findViewById(R.id.shadow_tablet); - buttonLayoutTablet = (LinearLayout)findViewById(R.id.launch_button_layout); - shadowTabletSide = (FrameLayout)findViewById(R.id.shadow_tablet_side); - backgroundTablet = (ImageView)findViewById(R.id.launch_background); + int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android"); + if (resourceId > 0) { + AndroidUtilities.statusBarHeight = getResources().getDimensionPixelSize(resourceId); + } + actionBarLayout = new ActionBarLayout(this); + + drawerLayoutContainer = new DrawerLayoutContainer(this); + setContentView(drawerLayoutContainer, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); + + if (AndroidUtilities.isTablet()) { + getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); + + RelativeLayout launchLayout = new RelativeLayout(this); + drawerLayoutContainer.addView(launchLayout); + FrameLayout.LayoutParams layoutParams1 = (FrameLayout.LayoutParams) launchLayout.getLayoutParams(); + layoutParams1.width = FrameLayout.LayoutParams.MATCH_PARENT; + layoutParams1.height = FrameLayout.LayoutParams.MATCH_PARENT; + launchLayout.setLayoutParams(layoutParams1); + + backgroundTablet = new ImageView(this); + backgroundTablet.setScaleType(ImageView.ScaleType.CENTER_CROP); + backgroundTablet.setImageResource(R.drawable.cats); + launchLayout.addView(backgroundTablet); + RelativeLayout.LayoutParams relativeLayoutParams = (RelativeLayout.LayoutParams) backgroundTablet.getLayoutParams(); + relativeLayoutParams.width = RelativeLayout.LayoutParams.MATCH_PARENT; + relativeLayoutParams.height = RelativeLayout.LayoutParams.MATCH_PARENT; + backgroundTablet.setLayoutParams(relativeLayoutParams); + + launchLayout.addView(actionBarLayout); + relativeLayoutParams = (RelativeLayout.LayoutParams) actionBarLayout.getLayoutParams(); + relativeLayoutParams.width = RelativeLayout.LayoutParams.MATCH_PARENT; + relativeLayoutParams.height = RelativeLayout.LayoutParams.MATCH_PARENT; + actionBarLayout.setLayoutParams(relativeLayoutParams); + + rightActionBarLayout = new ActionBarLayout(this); + launchLayout.addView(rightActionBarLayout); + relativeLayoutParams = (RelativeLayout.LayoutParams)rightActionBarLayout.getLayoutParams(); + relativeLayoutParams.width = AndroidUtilities.dp(320); + relativeLayoutParams.height = RelativeLayout.LayoutParams.MATCH_PARENT; + rightActionBarLayout.setLayoutParams(relativeLayoutParams); + rightActionBarLayout.init(rightFragmentsStack); + rightActionBarLayout.setDelegate(this); + + shadowTabletSide = new FrameLayout(this); + shadowTabletSide.setBackgroundColor(0x40295274); + launchLayout.addView(shadowTabletSide); + relativeLayoutParams = (RelativeLayout.LayoutParams) shadowTabletSide.getLayoutParams(); + relativeLayoutParams.width = AndroidUtilities.dp(1); + relativeLayoutParams.height = RelativeLayout.LayoutParams.MATCH_PARENT; + shadowTabletSide.setLayoutParams(relativeLayoutParams); + + shadowTablet = new FrameLayout(this); + shadowTablet.setVisibility(View.GONE); + shadowTablet.setBackgroundColor(0x7F000000); + launchLayout.addView(shadowTablet); + relativeLayoutParams = (RelativeLayout.LayoutParams) shadowTablet.getLayoutParams(); + relativeLayoutParams.width = RelativeLayout.LayoutParams.MATCH_PARENT; + relativeLayoutParams.height = RelativeLayout.LayoutParams.MATCH_PARENT; + shadowTablet.setLayoutParams(relativeLayoutParams); shadowTablet.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { @@ -157,176 +209,105 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa } }); - RelativeLayout launchLayout = (RelativeLayout)findViewById(R.id.launch_layout); - layersActionBarLayout = new ActionBarLayout(this); + layersActionBarLayout.setRemoveActionBarExtraHeight(true); layersActionBarLayout.setBackgroundView(shadowTablet); layersActionBarLayout.setUseAlphaAnimations(true); layersActionBarLayout.setBackgroundResource(R.drawable.boxshadow); launchLayout.addView(layersActionBarLayout); - RelativeLayout.LayoutParams relativeLayoutParams = (RelativeLayout.LayoutParams)layersActionBarLayout.getLayoutParams(); + relativeLayoutParams = (RelativeLayout.LayoutParams)layersActionBarLayout.getLayoutParams(); relativeLayoutParams.width = AndroidUtilities.dp(498); relativeLayoutParams.height = AndroidUtilities.dp(528); - relativeLayoutParams.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE); layersActionBarLayout.setLayoutParams(relativeLayoutParams); layersActionBarLayout.init(layerFragmentsStack); layersActionBarLayout.setDelegate(this); + layersActionBarLayout.setDrawerLayoutContainer(drawerLayoutContainer); layersActionBarLayout.setVisibility(View.GONE); + } else { + drawerLayoutContainer.addView(actionBarLayout, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); + } - launchLayout.addView(actionBarLayout, 2); - relativeLayoutParams = (RelativeLayout.LayoutParams)actionBarLayout.getLayoutParams(); - relativeLayoutParams.width = AndroidUtilities.dp(320); - relativeLayoutParams.height = RelativeLayout.LayoutParams.MATCH_PARENT; - actionBarLayout.setLayoutParams(relativeLayoutParams); + ListView listView = new ListView(this); + listView.setAdapter(drawerLayoutAdapter = new DrawerLayoutAdapter(this)); + drawerLayoutContainer.setDrawerLayout(listView); + listView.setBackgroundColor(0xffffffff); + FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams)listView.getLayoutParams(); + Point screenSize = AndroidUtilities.getRealScreenSize(); + layoutParams.width = AndroidUtilities.isTablet() ? AndroidUtilities.dp(320) : Math.min(screenSize.x, screenSize.y) - AndroidUtilities.dp(56); + layoutParams.height = FrameLayout.LayoutParams.MATCH_PARENT; + listView.setPadding(0, 0, 0, 0); + listView.setChoiceMode(AbsListView.CHOICE_MODE_SINGLE); + listView.setDivider(null); + listView.setDividerHeight(0); + listView.setLayoutParams(layoutParams); + listView.setVerticalScrollBarEnabled(false); - rightActionBarLayout = new ActionBarLayout(this); - launchLayout.addView(rightActionBarLayout, 3); - relativeLayoutParams = (RelativeLayout.LayoutParams)rightActionBarLayout.getLayoutParams(); - relativeLayoutParams.width = AndroidUtilities.dp(320); - relativeLayoutParams.height = RelativeLayout.LayoutParams.MATCH_PARENT; - rightActionBarLayout.setLayoutParams(relativeLayoutParams); - rightActionBarLayout.init(rightFragmentsStack); - rightActionBarLayout.setDelegate(this); - - TextView button = (TextView)findViewById(R.id.new_group_button); - button.setText(LocaleController.getString("NewGroup", R.string.NewGroup)); - button.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { + listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + if (position == 2) { presentFragment(new GroupCreateActivity()); - } - }); - - button = (TextView)findViewById(R.id.new_secret_button); - button.setText(LocaleController.getString("NewSecretChat", R.string.NewSecretChat)); - button.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { + drawerLayoutContainer.closeDrawer(false); + } else if (position == 3) { Bundle args = new Bundle(); args.putBoolean("onlyUsers", true); args.putBoolean("destroyAfterSelect", true); args.putBoolean("createSecretChat", true); presentFragment(new ContactsActivity(args)); - } - }); - - button = (TextView)findViewById(R.id.new_broadcast_button); - button.setText(LocaleController.getString("NewBroadcastList", R.string.NewBroadcastList)); - button.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { + drawerLayoutContainer.closeDrawer(false); + } else if (position == 4) { Bundle args = new Bundle(); args.putBoolean("broadcast", true); presentFragment(new GroupCreateActivity(args)); - } - }); - - button = (TextView)findViewById(R.id.contacts_button); - button.setText(LocaleController.getString("Contacts", R.string.Contacts)); - button.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { + drawerLayoutContainer.closeDrawer(false); + } else if (position == 6) { presentFragment(new ContactsActivity(null)); - } - }); - - button = (TextView)findViewById(R.id.settings_button); - button.setText(LocaleController.getString("Settings", R.string.Settings)); - button.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - presentFragment(new SettingsActivity()); - } - }); - } else { - drawerLayoutContainer = new DrawerLayoutContainer(this); - drawerLayoutContainer.addView(actionBarLayout, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); - - ListView listView = new ListView(this); - listView.setAdapter(new DrawerLayoutAdapter(this)); - drawerLayoutContainer.setDrawerLayout(listView); - listView.setBackgroundColor(0xffffffff); - FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams)listView.getLayoutParams(); - Point screenSize = AndroidUtilities.getRealScreenSize(); - layoutParams.width = Math.min(screenSize.x, screenSize.y) - AndroidUtilities.dp(56); - layoutParams.height = FrameLayout.LayoutParams.MATCH_PARENT; - listView.setPadding(0, 0, 0, 0); - listView.setChoiceMode(AbsListView.CHOICE_MODE_SINGLE); - listView.setDivider(null); - listView.setDividerHeight(0); - listView.setLayoutParams(layoutParams); - listView.setVerticalScrollBarEnabled(false); - - listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - if (position == 2) { - presentFragment(new GroupCreateActivity()); - drawerLayoutContainer.closeDrawer(false); - } else if (position == 3) { - Bundle args = new Bundle(); - args.putBoolean("onlyUsers", true); - args.putBoolean("destroyAfterSelect", true); - args.putBoolean("createSecretChat", true); - presentFragment(new ContactsActivity(args)); - drawerLayoutContainer.closeDrawer(false); - } else if (position == 4) { - Bundle args = new Bundle(); - args.putBoolean("broadcast", true); - presentFragment(new GroupCreateActivity(args)); - drawerLayoutContainer.closeDrawer(false); - } else if (position == 6) { - presentFragment(new ContactsActivity(null)); - drawerLayoutContainer.closeDrawer(false); - } else if (position == 7) { - try { - Intent intent = new Intent(Intent.ACTION_SEND); - intent.setType("text/plain"); - intent.putExtra(Intent.EXTRA_TEXT, ContactsController.getInstance().getInviteText()); - startActivity(intent); - } catch (Exception e) { - FileLog.e("tmessages", e); - } - drawerLayoutContainer.closeDrawer(false); - } else if (position == 8) { - presentFragment(new SettingsActivity()); - drawerLayoutContainer.closeDrawer(false); - } else if (position == 9) { - try { - Intent pickIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(LocaleController.getString("TelegramFaqUrl", R.string.TelegramFaqUrl))); - startActivity(pickIntent); - } catch (Exception e) { - FileLog.e("tmessages", e); - } - drawerLayoutContainer.closeDrawer(false); + drawerLayoutContainer.closeDrawer(false); + } else if (position == 7) { + try { + Intent intent = new Intent(Intent.ACTION_SEND); + intent.setType("text/plain"); + intent.putExtra(Intent.EXTRA_TEXT, ContactsController.getInstance().getInviteText()); + startActivity(intent); + } catch (Exception e) { + FileLog.e("tmessages", e); } + drawerLayoutContainer.closeDrawer(false); + } else if (position == 8) { + presentFragment(new SettingsActivity()); + drawerLayoutContainer.closeDrawer(false); + } else if (position == 9) { + try { + Intent pickIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(LocaleController.getString("TelegramFaqUrl", R.string.TelegramFaqUrl))); + startActivity(pickIntent); + } catch (Exception e) { + FileLog.e("tmessages", e); + } + drawerLayoutContainer.closeDrawer(false); } - }); + } + }); - setContentView(drawerLayoutContainer, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); - drawerLayoutContainer.setParentActionBarLayout(actionBarLayout); - actionBarLayout.setDrawerLayoutContainer(drawerLayoutContainer); - } + drawerLayoutContainer.setParentActionBarLayout(actionBarLayout); + actionBarLayout.setDrawerLayoutContainer(drawerLayoutContainer); actionBarLayout.init(mainFragmentsStack); actionBarLayout.setDelegate(this); - int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android"); - if (resourceId > 0) { - AndroidUtilities.statusBarHeight = getResources().getDimensionPixelSize(resourceId); - } - NotificationCenter.getInstance().postNotificationName(NotificationCenter.closeOtherAppActivities, this); currentConnectionState = ConnectionsManager.getInstance().getConnectionState(); NotificationCenter.getInstance().addObserver(this, NotificationCenter.appDidLogout); + NotificationCenter.getInstance().addObserver(this, NotificationCenter.mainUserInfoChanged); NotificationCenter.getInstance().addObserver(this, NotificationCenter.closeOtherAppActivities); NotificationCenter.getInstance().addObserver(this, NotificationCenter.didUpdatedConnectionState); if (actionBarLayout.fragmentsStack.isEmpty()) { if (!UserConfig.isClientActivated()) { actionBarLayout.addFragmentToStack(new LoginActivity()); + drawerLayoutContainer.setAllowOpenDrawer(false); } else { actionBarLayout.addFragmentToStack(new MessagesActivity(null)); + drawerLayoutContainer.setAllowOpenDrawer(true); } try { @@ -672,18 +653,22 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa if (UserConfig.isClientActivated()) { if (actionBarLayout.fragmentsStack.isEmpty()) { actionBarLayout.addFragmentToStack(new MessagesActivity(null)); + drawerLayoutContainer.setAllowOpenDrawer(true); } } else { if (layersActionBarLayout.fragmentsStack.isEmpty()) { layersActionBarLayout.addFragmentToStack(new LoginActivity()); + drawerLayoutContainer.setAllowOpenDrawer(false); } } } else { if (actionBarLayout.fragmentsStack.isEmpty()) { if (!UserConfig.isClientActivated()) { actionBarLayout.addFragmentToStack(new LoginActivity()); + drawerLayoutContainer.setAllowOpenDrawer(false); } else { actionBarLayout.addFragmentToStack(new MessagesActivity(null)); + drawerLayoutContainer.setAllowOpenDrawer(true); } } } @@ -781,6 +766,7 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa } finished = true; NotificationCenter.getInstance().removeObserver(this, NotificationCenter.appDidLogout); + NotificationCenter.getInstance().removeObserver(this, NotificationCenter.mainUserInfoChanged); NotificationCenter.getInstance().removeObserver(this, NotificationCenter.closeOtherAppActivities); NotificationCenter.getInstance().removeObserver(this, NotificationCenter.didUpdatedConnectionState); } @@ -795,6 +781,13 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa public void needLayout() { if (AndroidUtilities.isTablet()) { + + RelativeLayout.LayoutParams relativeLayoutParams = (RelativeLayout.LayoutParams)layersActionBarLayout.getLayoutParams(); + relativeLayoutParams.leftMargin = (AndroidUtilities.displaySize.x - relativeLayoutParams.width) / 2; + int y = (Build.VERSION.SDK_INT >= 21 ? AndroidUtilities.statusBarHeight : 0); + relativeLayoutParams.topMargin = y + (AndroidUtilities.displaySize.y - relativeLayoutParams.height - y) / 2; + layersActionBarLayout.setLayoutParams(relativeLayoutParams); + if (!AndroidUtilities.isSmallTablet() || getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { tabletFullSize = false; int leftWidth = AndroidUtilities.displaySize.x / 100 * 35; @@ -802,7 +795,7 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa leftWidth = AndroidUtilities.dp(320); } - RelativeLayout.LayoutParams relativeLayoutParams = (RelativeLayout.LayoutParams) actionBarLayout.getLayoutParams(); + relativeLayoutParams = (RelativeLayout.LayoutParams) actionBarLayout.getLayoutParams(); relativeLayoutParams.width = leftWidth; relativeLayoutParams.height = RelativeLayout.LayoutParams.MATCH_PARENT; actionBarLayout.setLayoutParams(relativeLayoutParams); @@ -817,12 +810,6 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa relativeLayoutParams.leftMargin = leftWidth; rightActionBarLayout.setLayoutParams(relativeLayoutParams); - relativeLayoutParams = (RelativeLayout.LayoutParams) buttonLayoutTablet.getLayoutParams(); - relativeLayoutParams.width = AndroidUtilities.displaySize.x - leftWidth; - relativeLayoutParams.height = RelativeLayout.LayoutParams.WRAP_CONTENT; - relativeLayoutParams.leftMargin = leftWidth; - buttonLayoutTablet.setLayoutParams(relativeLayoutParams); - if (AndroidUtilities.isSmallTablet() && actionBarLayout.fragmentsStack.size() == 2) { BaseFragment chatFragment = actionBarLayout.fragmentsStack.get(1); chatFragment.onPause(); @@ -833,13 +820,12 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa } rightActionBarLayout.setVisibility(rightActionBarLayout.fragmentsStack.isEmpty() ? View.GONE : View.VISIBLE); - buttonLayoutTablet.setVisibility(!actionBarLayout.fragmentsStack.isEmpty() && rightActionBarLayout.fragmentsStack.isEmpty() ? View.VISIBLE : View.GONE); backgroundTablet.setVisibility(rightActionBarLayout.fragmentsStack.isEmpty() ? View.VISIBLE : View.GONE); shadowTabletSide.setVisibility(!actionBarLayout.fragmentsStack.isEmpty() ? View.VISIBLE : View.GONE); } else { tabletFullSize = true; - RelativeLayout.LayoutParams relativeLayoutParams = (RelativeLayout.LayoutParams) actionBarLayout.getLayoutParams(); + relativeLayoutParams = (RelativeLayout.LayoutParams) actionBarLayout.getLayoutParams(); relativeLayoutParams.width = RelativeLayout.LayoutParams.MATCH_PARENT; relativeLayoutParams.height = RelativeLayout.LayoutParams.MATCH_PARENT; actionBarLayout.setLayoutParams(relativeLayoutParams); @@ -847,7 +833,6 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa shadowTabletSide.setVisibility(View.GONE); rightActionBarLayout.setVisibility(View.GONE); backgroundTablet.setVisibility(!actionBarLayout.fragmentsStack.isEmpty() ? View.GONE : View.VISIBLE); - buttonLayoutTablet.setVisibility(View.GONE); if (rightActionBarLayout.fragmentsStack.size() == 1) { BaseFragment chatFragment = rightActionBarLayout.fragmentsStack.get(0); @@ -974,6 +959,8 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa currentConnectionState = state; //actionBarLayout.getActionBar().setBackOverlayVisible(currentConnectionState != 0); } + } else if (id == NotificationCenter.mainUserInfoChanged) { + drawerLayoutAdapter.notifyDataSetChanged(); } } @@ -1118,8 +1105,8 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa @Override public boolean needPresentFragment(BaseFragment fragment, boolean removeLast, boolean forceWithoutAnimation, ActionBarLayout layout) { - drawerLayoutContainer.setAllowOpenDrawer(!(fragment instanceof LoginActivity)); if (AndroidUtilities.isTablet()) { + drawerLayoutContainer.setAllowOpenDrawer(!(fragment instanceof LoginActivity) && layersActionBarLayout.getVisibility() != View.VISIBLE); if (fragment instanceof MessagesActivity) { MessagesActivity messagesActivity = (MessagesActivity)fragment; if (messagesActivity.getDelegate() == null && layout != actionBarLayout) { @@ -1127,10 +1114,10 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa actionBarLayout.presentFragment(fragment, removeLast, forceWithoutAnimation, false); layersActionBarLayout.removeAllFragments(); layersActionBarLayout.setVisibility(View.GONE); + drawerLayoutContainer.setAllowOpenDrawer(true); if (!tabletFullSize) { shadowTabletSide.setVisibility(View.VISIBLE); if (rightActionBarLayout.fragmentsStack.isEmpty()) { - buttonLayoutTablet.setVisibility(View.VISIBLE); backgroundTablet.setVisibility(View.VISIBLE); } } @@ -1140,7 +1127,6 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa if (fragment instanceof ChatActivity) { if (!tabletFullSize && layout != rightActionBarLayout) { rightActionBarLayout.setVisibility(View.VISIBLE); - buttonLayoutTablet.setVisibility(View.GONE); backgroundTablet.setVisibility(View.GONE); rightActionBarLayout.removeAllFragments(); rightActionBarLayout.presentFragment(fragment, removeLast, true, false); @@ -1177,8 +1163,8 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa } } else if (layout != layersActionBarLayout) { layersActionBarLayout.setVisibility(View.VISIBLE); + drawerLayoutContainer.setAllowOpenDrawer(false); if (fragment instanceof LoginActivity) { - buttonLayoutTablet.setVisibility(View.GONE); backgroundTablet.setVisibility(View.VISIBLE); shadowTabletSide.setVisibility(View.GONE); shadowTablet.setBackgroundColor(0x00000000); @@ -1190,14 +1176,15 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa } return true; } else { + drawerLayoutContainer.setAllowOpenDrawer(!(fragment instanceof LoginActivity)); return true; } } @Override public boolean needAddFragmentToStack(BaseFragment fragment, ActionBarLayout layout) { - drawerLayoutContainer.setAllowOpenDrawer(!(fragment instanceof LoginActivity)); if (AndroidUtilities.isTablet()) { + drawerLayoutContainer.setAllowOpenDrawer(!(fragment instanceof LoginActivity) && layersActionBarLayout.getVisibility() != View.VISIBLE); if (fragment instanceof MessagesActivity) { MessagesActivity messagesActivity = (MessagesActivity)fragment; if (messagesActivity.getDelegate() == null && layout != actionBarLayout) { @@ -1205,10 +1192,10 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa actionBarLayout.addFragmentToStack(fragment); layersActionBarLayout.removeAllFragments(); layersActionBarLayout.setVisibility(View.GONE); + drawerLayoutContainer.setAllowOpenDrawer(true); if (!tabletFullSize) { shadowTabletSide.setVisibility(View.VISIBLE); if (rightActionBarLayout.fragmentsStack.isEmpty()) { - buttonLayoutTablet.setVisibility(View.VISIBLE); backgroundTablet.setVisibility(View.VISIBLE); } } @@ -1217,7 +1204,6 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa } else if (fragment instanceof ChatActivity) { if (!tabletFullSize && layout != rightActionBarLayout) { rightActionBarLayout.setVisibility(View.VISIBLE); - buttonLayoutTablet.setVisibility(View.GONE); backgroundTablet.setVisibility(View.GONE); rightActionBarLayout.removeAllFragments(); rightActionBarLayout.addFragmentToStack(fragment); @@ -1242,8 +1228,8 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa } } else if (layout != layersActionBarLayout) { layersActionBarLayout.setVisibility(View.VISIBLE); + drawerLayoutContainer.setAllowOpenDrawer(false); if (fragment instanceof LoginActivity) { - buttonLayoutTablet.setVisibility(View.GONE); backgroundTablet.setVisibility(View.VISIBLE); shadowTabletSide.setVisibility(View.GONE); shadowTablet.setBackgroundColor(0x00000000); @@ -1255,6 +1241,7 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa } return true; } else { + drawerLayoutContainer.setAllowOpenDrawer(!(fragment instanceof LoginActivity)); return true; } } @@ -1268,7 +1255,6 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa return false; } else if (layout == rightActionBarLayout) { if (!tabletFullSize) { - buttonLayoutTablet.setVisibility(View.VISIBLE); backgroundTablet.setVisibility(View.VISIBLE); } } else if (layout == layersActionBarLayout && actionBarLayout.fragmentsStack.isEmpty() && layersActionBarLayout.fragmentsStack.size() == 1) { @@ -1294,17 +1280,6 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa rightActionBarLayout.showLastFragment(); actionBarLayout.rebuildAllFragmentViews(true); actionBarLayout.showLastFragment(); - - TextView button = (TextView)findViewById(R.id.new_group_button); - button.setText(LocaleController.getString("NewGroup", R.string.NewGroup)); - button = (TextView)findViewById(R.id.new_secret_button); - button.setText(LocaleController.getString("NewSecretChat", R.string.NewSecretChat)); - button = (TextView)findViewById(R.id.new_broadcast_button); - button.setText(LocaleController.getString("NewBroadcastList", R.string.NewBroadcastList)); - button = (TextView)findViewById(R.id.contacts_button); - button.setText(LocaleController.getString("Contacts", R.string.Contacts)); - button = (TextView)findViewById(R.id.settings_button); - button.setText(LocaleController.getString("Settings", R.string.Settings)); } } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LocationActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LocationActivity.java index 8839b184..b15ed466 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LocationActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LocationActivity.java @@ -27,6 +27,7 @@ import com.google.android.gms.maps.model.LatLng; import com.google.android.gms.maps.model.Marker; import com.google.android.gms.maps.model.MarkerOptions; +import org.telegram.android.AndroidUtilities; import org.telegram.android.ContactsController; import org.telegram.messenger.FileLog; import org.telegram.android.LocaleController; @@ -145,6 +146,7 @@ public class LocationActivity extends BaseFragment implements NotificationCenter avatarImageView = (BackupImageView)fragmentView.findViewById(R.id.location_avatar_view); if (avatarImageView != null) { avatarImageView.processDetach = false; + avatarImageView.imageReceiver.setRoundRadius(AndroidUtilities.dp(32)); } nameTextView = (TextView)fragmentView.findViewById(R.id.location_name_label); distanceTextView = (TextView)fragmentView.findViewById(R.id.location_distance_label); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LoginActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LoginActivity.java index 8f409371..06f8cef0 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/LoginActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/LoginActivity.java @@ -117,7 +117,7 @@ public class LoginActivity extends BaseFragment { }); ActionBarMenu menu = actionBar.createMenu(); - menu.addItem(done_button, R.drawable.ic_done, 0, AndroidUtilities.dp(56)); + menu.addItemWithWidth(done_button, R.drawable.ic_done, AndroidUtilities.dp(56)); fragmentView = new ScrollView(getParentActivity()); ScrollView scrollView = (ScrollView) fragmentView; @@ -207,13 +207,17 @@ public class LoginActivity extends BaseFragment { @Override public void onPause() { super.onPause(); - getParentActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); + if (!AndroidUtilities.isTablet()) { + getParentActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); + } } @Override public void onResume() { super.onResume(); - getParentActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); + if (!AndroidUtilities.isTablet()) { + getParentActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); + } } private Bundle loadCurrentState() { @@ -411,6 +415,7 @@ public class LoginActivity extends BaseFragment { public void needFinishActivity() { clearCurrentState(); presentFragment(new MessagesActivity(null), true); + NotificationCenter.getInstance().postNotificationName(NotificationCenter.mainUserInfoChanged); } public class SlideView extends LinearLayout { @@ -989,7 +994,7 @@ public class LoginActivity extends BaseFragment { codeField.setHintTextColor(0xff979797); codeField.setImeOptions(EditorInfo.IME_ACTION_NEXT | EditorInfo.IME_FLAG_NO_EXTRACT_UI); codeField.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); - codeField.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL); + codeField.setInputType(InputType.TYPE_CLASS_NUMBER); codeField.setMaxLines(1); codeField.setPadding(0, 0, 0, 0); addView(codeField); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/MediaActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/MediaActivity.java index de8e586c..16a17f2a 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/MediaActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/MediaActivity.java @@ -41,6 +41,7 @@ import java.util.ArrayList; import java.util.HashMap; public class MediaActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate, PhotoViewer.PhotoViewerProvider { + private GridView listView; private ListAdapter listAdapter; private ArrayList messages = new ArrayList(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java index 9d503d07..c02d0d2c 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java @@ -58,7 +58,7 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter private ListView messagesListView; private DialogsAdapter dialogsAdapter; private DialogsSearchAdapter dialogsSearchAdapter; - private TextView searchEmptyView; + private View searchEmptyView; private View progressView; private View emptyView; private ImageView floatingButton; @@ -243,14 +243,13 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter progressView = fragmentView.findViewById(R.id.progressLayout); dialogsAdapter.notifyDataSetChanged(); - searchEmptyView = (TextView)fragmentView.findViewById(R.id.searchEmptyView); + searchEmptyView = fragmentView.findViewById(R.id.search_empty_view); searchEmptyView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { return true; } }); - searchEmptyView.setText(LocaleController.getString("NoResult", R.string.NoResult)); emptyView = fragmentView.findViewById(R.id.list_empty_view); emptyView.setOnTouchListener(new View.OnTouchListener() { @Override @@ -258,10 +257,14 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter return true; } }); + + TextView textView = (TextView)fragmentView.findViewById(R.id.list_empty_view_text1); textView.setText(LocaleController.getString("NoChats", R.string.NoChats)); textView = (TextView)fragmentView.findViewById(R.id.list_empty_view_text2); - textView.setText(LocaleController.getString("NoChats", R.string.NoChatsHelp)); + textView.setText(LocaleController.getString("NoChatsHelp", R.string.NoChatsHelp)); + textView = (TextView)fragmentView.findViewById(R.id.search_empty_text); + textView.setText(LocaleController.getString("NoResult", R.string.NoResult)); floatingButton = (ImageView)fragmentView.findViewById(R.id.floating_button); floatingButton.setVisibility(onlySelect ? View.GONE : View.VISIBLE); @@ -393,56 +396,40 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter int lower_id = (int)selectedDialog; int high_id = (int)(selectedDialog >> 32); - if (lower_id < 0 && high_id != 1) { - builder.setItems(new CharSequence[]{LocaleController.getString("ClearHistory", R.string.ClearHistory), LocaleController.getString("DeleteChat", R.string.DeleteChat)}, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - if (which == 0) { - MessagesController.getInstance().deleteDialog(selectedDialog, 0, true); - } else if (which == 1) { - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + final boolean isChat = lower_id < 0 && high_id != 1; + builder.setItems(new CharSequence[]{LocaleController.getString("ClearHistory", R.string.ClearHistory), + isChat ? LocaleController.getString("DeleteChat", R.string.DeleteChat) : LocaleController.getString("Delete", R.string.Delete)}, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, final int which) { + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); + if (which == 0) { + builder.setMessage(LocaleController.getString("AreYouSureClearHistory", R.string.AreYouSureClearHistory)); + } else { + if (isChat) { builder.setMessage(LocaleController.getString("AreYouSureDeleteAndExit", R.string.AreYouSureDeleteAndExit)); - builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); - builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - MessagesController.getInstance().deleteUserFromChat((int) -selectedDialog, MessagesController.getInstance().getUser(UserConfig.getClientUserId()), null); - MessagesController.getInstance().deleteDialog(selectedDialog, 0, false); - if (AndroidUtilities.isTablet()) { - NotificationCenter.getInstance().postNotificationName(NotificationCenter.closeChats, selectedDialog); - } - } - }); - builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); - showAlertDialog(builder); - } - } - }); - } else { - builder.setItems(new CharSequence[]{LocaleController.getString("ClearHistory", R.string.ClearHistory), LocaleController.getString("Delete", R.string.Delete)}, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - if (which == 0) { - MessagesController.getInstance().deleteDialog(selectedDialog, 0, true); } else { - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); builder.setMessage(LocaleController.getString("AreYouSureDeleteThisChat", R.string.AreYouSureDeleteThisChat)); - builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); - builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - MessagesController.getInstance().deleteDialog(selectedDialog, 0, false); - if (AndroidUtilities.isTablet()) { - NotificationCenter.getInstance().postNotificationName(NotificationCenter.closeChats, selectedDialog); - } - } - }); - builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); - showAlertDialog(builder); } } - }); - } + builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + MessagesController.getInstance().deleteDialog(selectedDialog, 0, which == 0); + if (which != 0) { + if (isChat) { + MessagesController.getInstance().deleteUserFromChat((int) -selectedDialog, MessagesController.getInstance().getUser(UserConfig.getClientUserId()), null); + } + if (AndroidUtilities.isTablet()) { + NotificationCenter.getInstance().postNotificationName(NotificationCenter.closeChats, selectedDialog); + } + } + } + }); + builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); + showAlertDialog(builder); + } + }); builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); showAlertDialog(builder); return true; @@ -545,14 +532,12 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter emptyView.setVisibility(View.GONE); messagesListView.setEmptyView(progressView); } else { - if (messagesListView.getEmptyView() == null) { - if (searching && searchWas) { - messagesListView.setEmptyView(searchEmptyView); - emptyView.setVisibility(View.GONE); - } else { - messagesListView.setEmptyView(emptyView); - searchEmptyView.setVisibility(View.GONE); - } + if (searching && searchWas) { + messagesListView.setEmptyView(searchEmptyView); + emptyView.setVisibility(View.GONE); + } else { + messagesListView.setEmptyView(emptyView); + searchEmptyView.setVisibility(View.GONE); } progressView.setVisibility(View.GONE); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PhotoCropActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/PhotoCropActivity.java index 8d5ea20b..ca5eb7a7 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PhotoCropActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PhotoCropActivity.java @@ -353,7 +353,7 @@ public class PhotoCropActivity extends BaseFragment { }); ActionBarMenu menu = actionBar.createMenu(); - menu.addItem(done_button, R.drawable.ic_done, 0, AndroidUtilities.dp(56)); + menu.addItemWithWidth(done_button, R.drawable.ic_done, AndroidUtilities.dp(56)); 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/PhotoViewer.java b/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java index 7235b98a..528750df 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PhotoViewer.java @@ -76,6 +76,7 @@ import java.util.HashMap; import java.util.Locale; public class PhotoViewer implements NotificationCenter.NotificationCenterDelegate, GestureDetector.OnGestureListener, GestureDetector.OnDoubleTapListener { + private int classGuid; private PhotoViewerProvider placeProvider; private boolean isVisible; @@ -325,6 +326,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat public int user_id; public int index; public int size; + public int radius; } public static interface PhotoViewerProvider { @@ -602,6 +604,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat actionBar = new ActionBar(activity); actionBar.setBackgroundColor(0x7F000000); + actionBar.setOccupyStatusBar(false); actionBar.setItemsBackground(R.drawable.bar_selector_white); actionBar.setBackButtonImage(R.drawable.ic_ab_back); actionBar.setTitle(LocaleController.formatString("Of", R.string.Of, 1, 1)); @@ -1591,6 +1594,8 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat final Rect drawRegion = object.imageReceiver.getDrawRegion(); animatingImageView.setVisibility(View.VISIBLE); + animatingImageView.setRadius(object.radius); + animatingImageView.setNeedRadius(object.radius != 0); animatingImageView.setImageBitmap(object.thumb); ViewProxy.setAlpha(animatingImageView, 1.0f); @@ -1643,6 +1648,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat ObjectAnimatorProxy.ofInt(animatingImageView, "clipHorizontal", clipHorizontal, 0), ObjectAnimatorProxy.ofInt(animatingImageView, "clipTop", clipTop, 0), ObjectAnimatorProxy.ofInt(animatingImageView, "clipBottom", clipBottom, 0), + ObjectAnimatorProxy.ofInt(animatingImageView, "radius", 0), ObjectAnimatorProxy.ofFloat(containerView, "alpha", 0.0f, 1.0f) ); @@ -1731,11 +1737,13 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat final ViewGroup.LayoutParams layoutParams = animatingImageView.getLayoutParams(); Rect drawRegion = null; if (object != null) { + animatingImageView.setNeedRadius(object.radius != 0); drawRegion = object.imageReceiver.getDrawRegion(); layoutParams.width = drawRegion.right - drawRegion.left; layoutParams.height = drawRegion.bottom - drawRegion.top; animatingImageView.setImageBitmap(object.thumb); } else { + animatingImageView.setNeedRadius(false); layoutParams.width = centerImage.getImageWidth(); layoutParams.height = centerImage.getImageHeight(); animatingImageView.setImageBitmap(centerImage.getBitmap()); @@ -1782,6 +1790,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat ObjectAnimatorProxy.ofInt(animatingImageView, "clipHorizontal", clipHorizontal), ObjectAnimatorProxy.ofInt(animatingImageView, "clipTop", clipTop), ObjectAnimatorProxy.ofInt(animatingImageView, "clipBottom", clipBottom), + ObjectAnimatorProxy.ofInt(animatingImageView, "radius", object.radius), ObjectAnimatorProxy.ofFloat(containerView, "alpha", 0.0f) ); } else { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PopupNotificationActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/PopupNotificationActivity.java index 0d40b8db..492e309e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PopupNotificationActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PopupNotificationActivity.java @@ -15,6 +15,7 @@ import android.content.Intent; import android.content.res.Configuration; import android.os.Bundle; import android.os.PowerManager; +import android.text.TextUtils; import android.util.AttributeSet; import android.util.TypedValue; import android.view.Gravity; @@ -61,6 +62,9 @@ public class PopupNotificationActivity extends Activity implements NotificationC private ActionBar actionBar; private ChatActivityEnterView chatActivityEnterView; private BackupImageView avatarImageView; + private TextView nameTextView; + private TextView onlineTextView; + private FrameLayout avatarContainer; private TextView countText; private ViewGroup messageContainer; private ViewGroup centerView; @@ -182,6 +186,7 @@ public class PopupNotificationActivity extends Activity implements NotificationC popupContainer.addView(messageContainer, 0); actionBar = new ActionBar(this); + actionBar.setOccupyStatusBar(false); actionBar.setBackButtonImage(R.drawable.ic_ab_back); actionBar.setBackgroundResource(R.color.header); actionBar.setItemsBackground(R.drawable.bar_selector); @@ -194,9 +199,62 @@ public class PopupNotificationActivity extends Activity implements NotificationC View view = menu.addItemResource(2, R.layout.popup_count_layout); countText = (TextView) view.findViewById(R.id.count_text); - view = menu.addItemResource(1, R.layout.chat_header_layout); - avatarImageView = (BackupImageView)view.findViewById(R.id.chat_avatar_image); + avatarContainer = new FrameLayoutFixed(this); + avatarContainer.setBackgroundResource(R.drawable.bar_selector); + avatarContainer.setPadding(AndroidUtilities.dp(4), 0, AndroidUtilities.dp(4), 0); + actionBar.addView(avatarContainer); + FrameLayout.LayoutParams layoutParams2 = (FrameLayout.LayoutParams) avatarContainer.getLayoutParams(); + layoutParams2.height = FrameLayout.LayoutParams.MATCH_PARENT; + layoutParams2.width = FrameLayout.LayoutParams.WRAP_CONTENT; + layoutParams2.rightMargin = AndroidUtilities.dp(48); + layoutParams2.leftMargin = AndroidUtilities.dp(60); + layoutParams2.gravity = Gravity.TOP | Gravity.LEFT; + avatarContainer.setLayoutParams(layoutParams2); + + avatarImageView = new BackupImageView(this); + avatarImageView.imageReceiver.setRoundRadius(AndroidUtilities.dp(21)); avatarImageView.processDetach = false; + avatarContainer.addView(avatarImageView); + layoutParams2 = (FrameLayout.LayoutParams) avatarImageView.getLayoutParams(); + layoutParams2.width = AndroidUtilities.dp(42); + layoutParams2.height = AndroidUtilities.dp(42); + layoutParams2.topMargin = AndroidUtilities.dp(3); + avatarImageView.setLayoutParams(layoutParams2); + + nameTextView = new TextView(this); + nameTextView.setTextColor(0xffffffff); + nameTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); + nameTextView.setLines(1); + nameTextView.setMaxLines(1); + nameTextView.setSingleLine(true); + nameTextView.setEllipsize(TextUtils.TruncateAt.END); + nameTextView.setGravity(Gravity.LEFT); + nameTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf")); + avatarContainer.addView(nameTextView); + layoutParams2 = (FrameLayout.LayoutParams) nameTextView.getLayoutParams(); + layoutParams2.width = FrameLayout.LayoutParams.WRAP_CONTENT; + layoutParams2.height = FrameLayout.LayoutParams.WRAP_CONTENT; + layoutParams2.leftMargin = AndroidUtilities.dp(54); + layoutParams2.bottomMargin = AndroidUtilities.dp(22); + layoutParams2.gravity = Gravity.BOTTOM; + nameTextView.setLayoutParams(layoutParams2); + + onlineTextView = new TextView(this); + onlineTextView.setTextColor(0xffd7e8f7); + onlineTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); + onlineTextView.setLines(1); + onlineTextView.setMaxLines(1); + onlineTextView.setSingleLine(true); + onlineTextView.setEllipsize(TextUtils.TruncateAt.END); + onlineTextView.setGravity(Gravity.LEFT); + avatarContainer.addView(onlineTextView); + layoutParams2 = (FrameLayout.LayoutParams) onlineTextView.getLayoutParams(); + layoutParams2.width = FrameLayout.LayoutParams.WRAP_CONTENT; + layoutParams2.height = FrameLayout.LayoutParams.WRAP_CONTENT; + layoutParams2.leftMargin = AndroidUtilities.dp(54); + layoutParams2.bottomMargin = AndroidUtilities.dp(4); + layoutParams2.gravity = Gravity.BOTTOM; + onlineTextView.setLayoutParams(layoutParams2); actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { @Override @@ -616,22 +674,37 @@ public class PopupNotificationActivity extends Activity implements NotificationC } private void fixLayout() { - messageContainer.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { - @Override - public boolean onPreDraw() { - messageContainer.getViewTreeObserver().removeOnPreDrawListener(this); - if (!checkTransitionAnimation() && !startedMoving) { - ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams)messageContainer.getLayoutParams(); - layoutParams.topMargin = AndroidUtilities.getCurrentActionBarHeight(); - layoutParams.bottomMargin = AndroidUtilities.dp(48); - layoutParams.width = ViewGroup.MarginLayoutParams.MATCH_PARENT; - layoutParams.height = ViewGroup.MarginLayoutParams.MATCH_PARENT; - messageContainer.setLayoutParams(layoutParams); - applyViewsLayoutParams(0); + if (avatarContainer != null) { + avatarContainer.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { + @Override + public boolean onPreDraw() { + if (avatarContainer != null) { + avatarContainer.getViewTreeObserver().removeOnPreDrawListener(this); + } + int padding = (AndroidUtilities.getCurrentActionBarHeight() - AndroidUtilities.dp(48)) / 2; + avatarContainer.setPadding(avatarContainer.getPaddingLeft(), padding, avatarContainer.getPaddingRight(), padding); + return false; } - return false; - } - }); + }); + } + if (messageContainer != null) { + messageContainer.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { + @Override + public boolean onPreDraw() { + messageContainer.getViewTreeObserver().removeOnPreDrawListener(this); + if (!checkTransitionAnimation() && !startedMoving) { + ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) messageContainer.getLayoutParams(); + layoutParams.topMargin = AndroidUtilities.getCurrentActionBarHeight(); + layoutParams.bottomMargin = AndroidUtilities.dp(48); + layoutParams.width = ViewGroup.MarginLayoutParams.MATCH_PARENT; + layoutParams.height = ViewGroup.MarginLayoutParams.MATCH_PARENT; + messageContainer.setLayoutParams(layoutParams); + applyViewsLayoutParams(0); + } + return false; + } + }); + } } private void handleIntent(Intent intent) { @@ -732,15 +805,18 @@ public class PopupNotificationActivity extends Activity implements NotificationC } if (currentChat != null && currentUser != null) { - actionBar.setTitle(currentChat.title); - actionBar.setSubtitle(ContactsController.formatName(currentUser.first_name, currentUser.last_name)); - actionBar.setTitleIcon(0, 0); + nameTextView.setText(currentChat.title); + onlineTextView.setText(ContactsController.formatName(currentUser.first_name, currentUser.last_name)); + nameTextView.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0); + nameTextView.setCompoundDrawablePadding(0); } else if (currentUser != null) { - actionBar.setTitle(ContactsController.formatName(currentUser.first_name, currentUser.last_name)); + nameTextView.setText(ContactsController.formatName(currentUser.first_name, currentUser.last_name)); if ((int)dialog_id == 0) { - actionBar.setTitleIcon(R.drawable.ic_lock_white, AndroidUtilities.dp(4)); + nameTextView.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_lock_white, 0, 0, 0); + nameTextView.setCompoundDrawablePadding(AndroidUtilities.dp(4)); } else { - actionBar.setTitleIcon(0, 0); + nameTextView.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0); + nameTextView.setCompoundDrawablePadding(0); } } @@ -759,12 +835,12 @@ public class PopupNotificationActivity extends Activity implements NotificationC } if (currentUser.id / 1000 != 777 && currentUser.id / 1000 != 333 && ContactsController.getInstance().contactsDict.get(currentUser.id) == null && (ContactsController.getInstance().contactsDict.size() != 0 || !ContactsController.getInstance().isLoadingContacts())) { if (currentUser.phone != null && currentUser.phone.length() != 0) { - actionBar.setTitle(PhoneFormat.getInstance().format("+" + currentUser.phone)); + nameTextView.setText(PhoneFormat.getInstance().format("+" + currentUser.phone)); } else { - actionBar.setTitle(ContactsController.formatName(currentUser.first_name, currentUser.last_name)); + nameTextView.setText(ContactsController.formatName(currentUser.first_name, currentUser.last_name)); } } else { - actionBar.setTitle(ContactsController.formatName(currentUser.first_name, currentUser.last_name)); + nameTextView.setText(ContactsController.formatName(currentUser.first_name, currentUser.last_name)); } CharSequence printString = MessagesController.getInstance().printingStrings.get(currentMessageObject.getDialogId()); if (printString == null || printString.length() == 0) { @@ -774,10 +850,10 @@ public class PopupNotificationActivity extends Activity implements NotificationC if (user != null) { currentUser = user; } - actionBar.setSubtitle(LocaleController.formatUserStatus(currentUser)); + onlineTextView.setText(LocaleController.formatUserStatus(currentUser)); } else { lastPrintString = printString; - actionBar.setSubtitle(printString); + onlineTextView.setText(printString); setTypingAnimation(true); } } @@ -817,13 +893,15 @@ public class PopupNotificationActivity extends Activity implements NotificationC } if (start) { try { - actionBar.setSubTitleIcon(0, typingDotsDrawable, AndroidUtilities.dp(4)); + onlineTextView.setCompoundDrawablesWithIntrinsicBounds(typingDotsDrawable, null, null, null); + onlineTextView.setCompoundDrawablePadding(AndroidUtilities.dp(4)); typingDotsDrawable.start(); } catch (Exception e) { FileLog.e("tmessages", e); } } else { - actionBar.setSubTitleIcon(0, null, 0); + onlineTextView.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null); + onlineTextView.setCompoundDrawablePadding(0); typingDotsDrawable.stop(); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/PrivacySettingsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/PrivacySettingsActivity.java index 19deb750..0ebc8432 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/PrivacySettingsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/PrivacySettingsActivity.java @@ -8,7 +8,427 @@ package org.telegram.ui; -import org.telegram.ui.ActionBar.BaseFragment; +import android.app.AlertDialog; +import android.app.ProgressDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.FrameLayout; +import android.widget.ListView; +import android.widget.Toast; -public class PrivacySettingsActivity extends BaseFragment { +import org.telegram.android.AndroidUtilities; +import org.telegram.android.ContactsController; +import org.telegram.android.LocaleController; +import org.telegram.android.MessagesController; +import org.telegram.android.NotificationCenter; +import org.telegram.messenger.ConnectionsManager; +import org.telegram.messenger.FileLog; +import org.telegram.messenger.R; +import org.telegram.messenger.RPCRequest; +import org.telegram.messenger.TLObject; +import org.telegram.messenger.TLRPC; +import org.telegram.messenger.UserConfig; +import org.telegram.ui.ActionBar.ActionBar; +import org.telegram.ui.ActionBar.BaseFragment; +import org.telegram.ui.Adapters.BaseFragmentAdapter; +import org.telegram.ui.Cells.HeaderCell; +import org.telegram.ui.Cells.TextInfoPrivacyCell; +import org.telegram.ui.Cells.TextSettingsCell; + +import java.util.ArrayList; + +public class PrivacySettingsActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate { + + private ListAdapter listAdapter; + + private int privacySectionRow; + private int blockedRow; + private int lastSeenRow; + private int lastSeenDetailRow; + private int securitySectionRow; + private int terminateSessionsRow; + private int terminateSessionsDetailRow; + private int deleteAccountSectionRow; + private int deleteAccountRow; + private int deleteAccountDetailRow; + private int rowCount; + + @Override + public boolean onFragmentCreate() { + super.onFragmentCreate(); + + ContactsController.getInstance().loadPrivacySettings(); + + rowCount = 0; + privacySectionRow = rowCount++; + blockedRow = rowCount++; + lastSeenRow = rowCount++; + lastSeenDetailRow = rowCount++; + securitySectionRow = rowCount++; + terminateSessionsRow = rowCount++; + terminateSessionsDetailRow = rowCount++; + deleteAccountSectionRow = rowCount++; + deleteAccountRow = rowCount++; + deleteAccountDetailRow = rowCount++; + + NotificationCenter.getInstance().addObserver(this, NotificationCenter.privacyRulesUpdated); + + return true; + } + + @Override + public void onFragmentDestroy() { + super.onFragmentDestroy(); + NotificationCenter.getInstance().removeObserver(this, NotificationCenter.privacyRulesUpdated); + } + + @Override + public View createView(LayoutInflater inflater, ViewGroup container) { + if (fragmentView == null) { + actionBar.setBackButtonImage(R.drawable.ic_ab_back); + actionBar.setBackOverlay(R.layout.updating_state_layout); + actionBar.setTitle(LocaleController.getString("PrivacySettings", R.string.PrivacySettings)); + actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { + @Override + public void onItemClick(int id) { + if (id == -1) { + finishFragment(); + } + } + }); + + listAdapter = new ListAdapter(getParentActivity()); + + fragmentView = new FrameLayout(getParentActivity()); + FrameLayout frameLayout = (FrameLayout) fragmentView; + frameLayout.setBackgroundColor(0xfff0f0f0); + + ListView listView = new ListView(getParentActivity()); + listView.setDivider(null); + listView.setDividerHeight(0); + listView.setVerticalScrollBarEnabled(false); + listView.setDrawSelectorOnTop(true); + frameLayout.addView(listView); + FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) listView.getLayoutParams(); + layoutParams.width = FrameLayout.LayoutParams.MATCH_PARENT; + layoutParams.height = FrameLayout.LayoutParams.MATCH_PARENT; + layoutParams.gravity = Gravity.TOP; + listView.setLayoutParams(layoutParams); + listView.setAdapter(listAdapter); + listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, final int i, long l) { + if (i == blockedRow) { + presentFragment(new BlockedUsersActivity()); + } else if (i == terminateSessionsRow) { + if (getParentActivity() == null) { + return; + } + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + builder.setMessage(LocaleController.getString("AreYouSureSessions", R.string.AreYouSureSessions)); + builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); + builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + TLRPC.TL_auth_resetAuthorizations req = new TLRPC.TL_auth_resetAuthorizations(); + ConnectionsManager.getInstance().performRpc(req, new RPCRequest.RPCRequestDelegate() { + @Override + public void run(final TLObject response, final TLRPC.TL_error error) { + AndroidUtilities.runOnUIThread(new Runnable() { + @Override + public void run() { + if (getParentActivity() == null) { + return; + } + 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.registeredForInternalPush = false; + UserConfig.saveConfig(false); + MessagesController.getInstance().registerForPush(UserConfig.pushString); + ConnectionsManager.getInstance().initPushConnection(); + } + }); + } + }); + builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); + showAlertDialog(builder); + } else if (i == deleteAccountRow) { + if (getParentActivity() == null) { + return; + } + AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); + builder.setTitle(LocaleController.getString("DeleteAccountTitle", R.string.DeleteAccountTitle)); + builder.setItems(new CharSequence[] { + LocaleController.getString("DeleteAccountNever", R.string.DeleteAccountNever), + LocaleController.formatPluralString("Months", 1), + LocaleController.formatPluralString("Months", 3), + LocaleController.formatPluralString("Months", 6), + LocaleController.formatPluralString("Years", 1) + }, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + int value = 0; + if (which == 1) { + value = 30; + } else if (which == 2) { + value = 60; + } else if (which == 3) { + value = 182; + } else if (which == 4) { + value = 365; + } + final ProgressDialog progressDialog = new ProgressDialog(getParentActivity()); + progressDialog.setMessage(LocaleController.getString("Loading", R.string.Loading)); + progressDialog.setCanceledOnTouchOutside(false); + progressDialog.setCancelable(false); + progressDialog.show(); + + final TLRPC.TL_account_setAccountTTL req = new TLRPC.TL_account_setAccountTTL(); + req.ttl = new TLRPC.TL_accountDaysTTL(); + req.ttl.days = value; + ConnectionsManager.getInstance().performRpc(req, new RPCRequest.RPCRequestDelegate() { + @Override + public void run(final TLObject response, final TLRPC.TL_error error) { + AndroidUtilities.runOnUIThread(new Runnable() { + @Override + public void run() { + try { + progressDialog.dismiss(); + } catch (Exception e) { + FileLog.e("tmessages", e); + } + if (response instanceof TLRPC.TL_boolTrue) { + ContactsController.getInstance().setDeleteAccountTTL(req.ttl.days); + listAdapter.notifyDataSetChanged(); + } + } + }); + } + }); + } + }); + builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); + showAlertDialog(builder); + } else if (i == lastSeenRow) { + presentFragment(new LastSeenActivity()); + } + } + }); + } else { + ViewGroup parent = (ViewGroup)fragmentView.getParent(); + if (parent != null) { + parent.removeView(fragmentView); + } + } + return fragmentView; + } + + @Override + public void didReceivedNotification(int id, Object... args) { + if (id == NotificationCenter.privacyRulesUpdated) { + if (listAdapter != null) { + listAdapter.notifyDataSetChanged(); + } + } + } + + private String formatRulesString() { + ArrayList privacyRules = ContactsController.getInstance().getPrivacyRules(); + if (privacyRules.size() == 0) { + return LocaleController.getString("LastSeenNobody", R.string.LastSeenNobody); + } + int type = -1; + int plus = 0; + int minus = 0; + for (TLRPC.PrivacyRule rule : privacyRules) { + if (rule instanceof TLRPC.TL_privacyValueAllowUsers) { + plus += rule.users.size(); + } else if (rule instanceof TLRPC.TL_privacyValueDisallowUsers) { + minus += rule.users.size(); + } else if (rule instanceof TLRPC.TL_privacyValueAllowAll) { + type = 0; + } else if (rule instanceof TLRPC.TL_privacyValueDisallowAll) { + type = 1; + } else { + type = 2; + } + } + if (type == 0 || type == -1 && minus > 0) { + if (minus == 0) { + return LocaleController.getString("LastSeenEverybody", R.string.LastSeenEverybody); + } else { + return LocaleController.formatString("LastSeenEverybodyMinus", R.string.LastSeenEverybodyMinus, minus); + } + } else if (type == 2 || type == -1 && minus > 0 && plus > 0) { + if (plus == 0 && minus == 0) { + return LocaleController.getString("LastSeenContacts", R.string.LastSeenContacts); + } else { + if (plus != 0 && minus != 0) { + return LocaleController.formatString("LastSeenContactsMinusPlus", R.string.LastSeenContactsMinusPlus, minus, plus); + } else if (minus != 0) { + return LocaleController.formatString("LastSeenContactsMinus", R.string.LastSeenContactsMinus, minus); + } else if (plus != 0) { + return LocaleController.formatString("LastSeenContactsPlus", R.string.LastSeenContactsPlus, plus); + } + } + } else if (type == 1 || type == -1 && plus > 0) { + if (plus == 0) { + return LocaleController.getString("LastSeenNobody", R.string.LastSeenNobody); + } else { + return LocaleController.formatString("LastSeenNobodyPlus", R.string.LastSeenNobodyPlus, plus); + } + } + return "unknown"; + } + + @Override + public void onResume() { + super.onResume(); + if (listAdapter != null) { + listAdapter.notifyDataSetChanged(); + } + } + + private class ListAdapter extends BaseFragmentAdapter { + private Context mContext; + + public ListAdapter(Context context) { + mContext = context; + } + + @Override + public boolean areAllItemsEnabled() { + return false; + } + + @Override + public boolean isEnabled(int i) { + return i == blockedRow || i == terminateSessionsRow || i == lastSeenRow && !ContactsController.getInstance().getLoadingLastSeenInfo() || i == deleteAccountRow && !ContactsController.getInstance().getLoadingDeleteInfo(); + } + + @Override + public int getCount() { + return rowCount; + } + + @Override + public Object getItem(int i) { + return null; + } + + @Override + public long getItemId(int i) { + return i; + } + + @Override + public boolean hasStableIds() { + return false; + } + + @Override + public View getView(int i, View view, ViewGroup viewGroup) { + int type = getItemViewType(i); + if (type == 0) { + if (view == null) { + view = new TextSettingsCell(mContext); + view.setBackgroundColor(0xffffffff); + } + TextSettingsCell textCell = (TextSettingsCell) view; + if (i == blockedRow) { + textCell.setText(LocaleController.getString("BlockedUsers", R.string.BlockedUsers), true); + } else if (i == terminateSessionsRow) { + textCell.setText(LocaleController.getString("TerminateAllSessions", R.string.TerminateAllSessions), false); + } else if (i == lastSeenRow) { + String value; + if (ContactsController.getInstance().getLoadingLastSeenInfo()) { + value = LocaleController.getString("Loading", R.string.Loading); + } else { + value = formatRulesString(); + } + textCell.setTextAndValue(LocaleController.getString("PrivacyLastSeen", R.string.PrivacyLastSeen), value, false); + } else if (i == deleteAccountRow) { + String value; + if (ContactsController.getInstance().getLoadingDeleteInfo()) { + value = LocaleController.getString("Loading", R.string.Loading); + } else { + int ttl = ContactsController.getInstance().getDeleteAccountTTL(); + if (ttl == 0) { + value = LocaleController.getString("DeleteAccountNever", R.string.DeleteAccountNever); + } else if (ttl <= 182) { + value = LocaleController.formatPluralString("Months", ttl / 30); + } else if (ttl == 365) { + value = LocaleController.formatPluralString("Years", ttl / 365); + } else { + value = LocaleController.formatPluralString("Days", ttl); + } + } + textCell.setTextAndValue(LocaleController.getString("DeleteAccountIfAwayFor", R.string.DeleteAccountIfAwayFor), value, false); + } + } else if (type == 1) { + if (view == null) { + view = new TextInfoPrivacyCell(mContext); + view.setBackgroundColor(0xffffffff); + } + if (i == deleteAccountDetailRow) { + ((TextInfoPrivacyCell) view).setText(LocaleController.getString("DeleteAccountHelp", R.string.DeleteAccountHelp)); + view.setBackgroundResource(R.drawable.greydivider_bottom); + } else if (i == lastSeenDetailRow) { + ((TextInfoPrivacyCell) view).setText(LocaleController.getString("LastSeenHelp", R.string.LastSeenHelp)); + view.setBackgroundResource(R.drawable.greydivider); + } else if (i == terminateSessionsDetailRow) { + ((TextInfoPrivacyCell) view).setText(LocaleController.getString("ClearOtherSessionsHelp", R.string.ClearOtherSessionsHelp)); + view.setBackgroundResource(R.drawable.greydivider); + } + } else if (type == 2) { + if (view == null) { + view = new HeaderCell(mContext); + view.setBackgroundColor(0xffffffff); + } + if (i == privacySectionRow) { + ((HeaderCell) view).setText(LocaleController.getString("PrivacyTitle", R.string.PrivacyTitle)); + } else if (i == securitySectionRow) { + ((HeaderCell) view).setText(LocaleController.getString("SecurityTitle", R.string.SecurityTitle)); + } else if (i == deleteAccountSectionRow) { + ((HeaderCell) view).setText(LocaleController.getString("DeleteAccountTitle", R.string.DeleteAccountTitle)); + } + } + return view; + } + + @Override + public int getItemViewType(int i) { + if (i == lastSeenRow || i == blockedRow || i == deleteAccountRow || i == terminateSessionsRow) { + return 0; + } else if (i == deleteAccountDetailRow || i == lastSeenDetailRow || i == terminateSessionsDetailRow) { + return 1; + } else if (i == securitySectionRow || i == deleteAccountSectionRow || i == privacySectionRow) { + return 2; + } + return 0; + } + + @Override + public int getViewTypeCount() { + return 3; + } + + @Override + public boolean isEmpty() { + return false; + } + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java index 2f4d945b..568accd3 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java @@ -224,6 +224,9 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. actionBar.setBackButtonImage(R.drawable.ic_ab_back); actionBar.setBackOverlay(R.layout.updating_state_layout); actionBar.setExtraHeight(AndroidUtilities.dp(88), false); + if (AndroidUtilities.isTablet()) { + actionBar.setOccupyStatusBar(false); + } actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { @Override public void onItemClick(final int id) { @@ -675,7 +678,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. FrameLayout.LayoutParams layoutParams; if (listView != null) { layoutParams = (FrameLayout.LayoutParams) listView.getLayoutParams(); - layoutParams.topMargin = (Build.VERSION.SDK_INT >= 21 ? AndroidUtilities.statusBarHeight : 0) + AndroidUtilities.getCurrentActionBarHeight(); + layoutParams.topMargin = (actionBar.getOccupyStatusBar() ? AndroidUtilities.statusBarHeight : 0) + AndroidUtilities.getCurrentActionBarHeight(); listView.setLayoutParams(layoutParams); } @@ -694,7 +697,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. if (writeButton != null) { layoutParams = (FrameLayout.LayoutParams) writeButton.getLayoutParams(); - layoutParams.topMargin = (Build.VERSION.SDK_INT >= 21 ? AndroidUtilities.statusBarHeight : 0) + AndroidUtilities.getCurrentActionBarHeight() + actionBar.getExtraHeight() - AndroidUtilities.dp(29.5f); + layoutParams.topMargin = (actionBar.getOccupyStatusBar() ? AndroidUtilities.statusBarHeight : 0) + AndroidUtilities.getCurrentActionBarHeight() + actionBar.getExtraHeight() - AndroidUtilities.dp(29.5f); writeButton.setLayoutParams(layoutParams); ViewProxy.setAlpha(writeButton, diff); writeButton.setVisibility(diff == 0 ? View.GONE : View.VISIBLE); @@ -877,6 +880,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. object.user_id = user_id; object.thumb = object.imageReceiver.getBitmap(); object.size = -1; + object.radius = avatarImage.imageReceiver.getRoundRadius(); return object; } return null; @@ -1019,6 +1023,9 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } private void updateProfileData() { + if (avatarImage == null) { + return; + } if (user_id != 0) { TLRPC.User user = MessagesController.getInstance().getUser(user_id); TLRPC.FileLocation photo = null; @@ -1219,7 +1226,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. view = new TextCell(mContext); } TextCell textCell = (TextCell) view; - textCell.setTextColor(0xff000000); + textCell.setTextColor(0xff212121); if (i == sharedMediaRow) { String value; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/SettingsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/SettingsActivity.java index 070e3e86..d9eb509e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/SettingsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/SettingsActivity.java @@ -38,7 +38,6 @@ import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; -import android.widget.Toast; import org.telegram.android.AndroidUtilities; import org.telegram.android.ContactsController; @@ -101,10 +100,9 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter private int settingsSectionRow2; private int enableAnimationsRow; private int notificationRow; - private int blockedRow; private int backgroundRow; private int languageRow; - private int terminateSessionsRow; + private int privacyRow; private int mediaDownloadSection; private int mediaDownloadSection2; private int mobileDownloadRow; @@ -194,6 +192,7 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter @Override public void run() { NotificationCenter.getInstance().postNotificationName(NotificationCenter.updateInterfaces, MessagesController.UPDATE_MASK_ALL); + NotificationCenter.getInstance().postNotificationName(NotificationCenter.mainUserInfoChanged); UserConfig.saveConfig(true); } }); @@ -214,10 +213,9 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter settingsSectionRow2 = rowCount++; enableAnimationsRow = rowCount++; notificationRow = rowCount++; - blockedRow = rowCount++; + privacyRow = rowCount++; backgroundRow = rowCount++; languageRow = rowCount++; - terminateSessionsRow = rowCount++; mediaDownloadSection = rowCount++; mediaDownloadSection2 = rowCount++; mobileDownloadRow = rowCount++; @@ -268,6 +266,9 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter actionBar.setBackButtonImage(R.drawable.ic_ab_back); actionBar.setBackOverlay(R.layout.updating_state_layout); actionBar.setExtraHeight(AndroidUtilities.dp(88), false); + if (AndroidUtilities.isTablet()) { + actionBar.setOccupyStatusBar(false); + } actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() { @Override public void onItemClick(int id) { @@ -303,7 +304,6 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter } }); ActionBarMenu menu = actionBar.createMenu(); - menu.clearItems(); ActionBarMenuItem item = menu.addItem(0, R.drawable.ic_ab_other); item.addSubItem(edit_name, LocaleController.getString("EditName", R.string.EditName), 0); item.addSubItem(logout, LocaleController.getString("LogOut", R.string.LogOut), 0); @@ -425,8 +425,6 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter } } else if (i == notificationRow) { presentFragment(new NotificationsSettingsActivity()); - } else if (i == blockedRow) { - presentFragment(new BlockedUsersActivity()); } else if (i == backgroundRow) { presentFragment(new WallpapersActivity()); } else if (i == askQuestionRow) { @@ -467,46 +465,8 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter if (listView != null) { listView.invalidateViews(); } - } else if (i == terminateSessionsRow) { - if (getParentActivity() == null) { - return; - } - AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); - builder.setMessage(LocaleController.getString("AreYouSureSessions", R.string.AreYouSureSessions)); - builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); - builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - TLRPC.TL_auth_resetAuthorizations req = new TLRPC.TL_auth_resetAuthorizations(); - ConnectionsManager.getInstance().performRpc(req, new RPCRequest.RPCRequestDelegate() { - @Override - public void run(final TLObject response, final TLRPC.TL_error error) { - AndroidUtilities.runOnUIThread(new Runnable() { - @Override - public void run() { - if (getParentActivity() == null) { - return; - } - 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.registeredForInternalPush = false; - UserConfig.saveConfig(false); - MessagesController.getInstance().registerForPush(UserConfig.pushString); - ConnectionsManager.getInstance().initPushConnection(); - } - }); - } - }); - builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null); - showAlertDialog(builder); + } else if (i == privacyRow) { + presentFragment(new PrivacySettingsActivity()); } else if (i == languageRow) { presentFragment(new LanguageSelectActivity()); } else if (i == switchBackendButtonRow) { @@ -745,6 +705,7 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter object.user_id = UserConfig.getClientUserId(); object.thumb = object.imageReceiver.getBitmap(); object.size = -1; + object.radius = avatarImage.imageReceiver.getRoundRadius(); return object; } } @@ -903,7 +864,7 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter FrameLayout.LayoutParams layoutParams; if (listView != null) { layoutParams = (FrameLayout.LayoutParams) listView.getLayoutParams(); - layoutParams.topMargin = (Build.VERSION.SDK_INT >= 21 ? AndroidUtilities.statusBarHeight : 0) + AndroidUtilities.getCurrentActionBarHeight(); + layoutParams.topMargin = (actionBar.getOccupyStatusBar() ? AndroidUtilities.statusBarHeight : 0) + AndroidUtilities.getCurrentActionBarHeight(); listView.setLayoutParams(layoutParams); } @@ -921,7 +882,7 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter int statusY = avatarY + AndroidUtilities.dp(8 - 7 * diffm); layoutParams = (FrameLayout.LayoutParams) writeButton.getLayoutParams(); - layoutParams.topMargin = (Build.VERSION.SDK_INT >= 21 ? AndroidUtilities.statusBarHeight : 0) + AndroidUtilities.getCurrentActionBarHeight() + actionBar.getExtraHeight() - AndroidUtilities.dp(29.5f); + layoutParams.topMargin = (actionBar.getOccupyStatusBar() ? AndroidUtilities.statusBarHeight : 0) + AndroidUtilities.getCurrentActionBarHeight() + actionBar.getExtraHeight() - AndroidUtilities.dp(29.5f); writeButton.setLayoutParams(layoutParams); ViewProxy.setAlpha(writeButton, diff); writeButton.setVisibility(diff == 0 ? View.GONE : View.VISIBLE); @@ -1021,8 +982,8 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter @Override public boolean isEnabled(int i) { - return i == textSizeRow || i == enableAnimationsRow || i == blockedRow || i == notificationRow || i == backgroundRow || - i == askQuestionRow || i == sendLogsRow || i == sendByEnterRow || i == terminateSessionsRow || i == wifiDownloadRow || + return i == textSizeRow || i == enableAnimationsRow || i == notificationRow || i == backgroundRow || + i == askQuestionRow || i == sendLogsRow || i == sendByEnterRow || i == privacyRow || i == wifiDownloadRow || i == mobileDownloadRow || i == clearLogsRow || i == roamingDownloadRow || i == languageRow || i == usernameRow || i == switchBackendButtonRow || i == telegramFaqRow || i == contactsSortRow || i == contactsReimportRow || i == saveToGalleryRow; } @@ -1073,7 +1034,7 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter int size = preferences.getInt("fons_size", AndroidUtilities.isTablet() ? 18 : 16); textCell.setTextAndValue(LocaleController.getString("TextSize", R.string.TextSize), String.format("%d", size), true); } else if (i == languageRow) { - textCell.setTextAndValue(LocaleController.getString("Language", R.string.Language), LocaleController.getCurrentLanguageName(), true); + textCell.setTextAndValue(LocaleController.getString("Language", R.string.Language), LocaleController.getCurrentLanguageName(), false); } else if (i == contactsSortRow) { String value; SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE); @@ -1088,8 +1049,6 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter textCell.setTextAndValue(LocaleController.getString("SortBy", R.string.SortBy), value, true); } else if (i == notificationRow) { textCell.setText(LocaleController.getString("NotificationsAndSounds", R.string.NotificationsAndSounds), true); - } else if (i == blockedRow) { - textCell.setText(LocaleController.getString("BlockedUsers", R.string.BlockedUsers), true); } else if (i == backgroundRow) { textCell.setText(LocaleController.getString("ChatBackground", R.string.ChatBackground), true); } else if (i == sendLogsRow) { @@ -1098,8 +1057,8 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter textCell.setText("Clear Logs", true); } else if (i == askQuestionRow) { textCell.setText(LocaleController.getString("AskAQuestion", R.string.AskAQuestion), true); - } else if (i == terminateSessionsRow) { - textCell.setText(LocaleController.getString("TerminateAllSessions", R.string.TerminateAllSessions), false); + } else if (i == privacyRow) { + textCell.setText(LocaleController.getString("PrivacySettings", R.string.PrivacySettings), true); } else if (i == switchBackendButtonRow) { textCell.setText("Switch Backend", true); } else if (i == telegramFaqRow) { @@ -1223,7 +1182,7 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter return 1; } else if (i == enableAnimationsRow || i == sendByEnterRow || i == saveToGalleryRow) { return 3; - } else if (i == notificationRow || i == blockedRow || i == backgroundRow || i == askQuestionRow || i == sendLogsRow || i == terminateSessionsRow || i == clearLogsRow || i == switchBackendButtonRow || i == telegramFaqRow || i == contactsReimportRow || i == textSizeRow || i == languageRow || i == contactsSortRow) { + } else if (i == notificationRow || i == backgroundRow || i == askQuestionRow || i == sendLogsRow || i == privacyRow || i == clearLogsRow || i == switchBackendButtonRow || i == telegramFaqRow || i == contactsReimportRow || i == textSizeRow || i == languageRow || i == contactsSortRow) { return 2; } else if (i == versionRow) { return 5; diff --git a/TMessagesProj/src/main/java/org/telegram/ui/VideoEditorActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/VideoEditorActivity.java index c96a0f59..24d4837e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/VideoEditorActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/VideoEditorActivity.java @@ -254,7 +254,7 @@ public class VideoEditorActivity extends BaseFragment implements TextureView.Sur }); ActionBarMenu menu = actionBar.createMenu(); - menu.addItem(1, R.drawable.ic_done, 0, AndroidUtilities.dp(56)); + menu.addItemWithWidth(1, R.drawable.ic_done, AndroidUtilities.dp(56)); fragmentView = inflater.inflate(R.layout.video_editor_layout, container, false); originalSizeTextView = (TextView) fragmentView.findViewById(R.id.original_size); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Views/ChatActivityEnterView.java b/TMessagesProj/src/main/java/org/telegram/ui/Views/ChatActivityEnterView.java index 1652118a..e22e2400 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Views/ChatActivityEnterView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Views/ChatActivityEnterView.java @@ -8,15 +8,10 @@ package org.telegram.ui.Views; -import android.animation.Animator; -import android.animation.AnimatorListenerAdapter; -import android.animation.AnimatorSet; -import android.animation.ObjectAnimator; import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; import android.graphics.Rect; -import android.os.Build; import android.os.PowerManager; import android.text.Editable; import android.text.TextWatcher; @@ -48,10 +43,12 @@ import org.telegram.messenger.FileLog; import org.telegram.android.NotificationCenter; import org.telegram.messenger.R; import org.telegram.messenger.TLRPC; +import org.telegram.ui.AnimationCompat.AnimatorListenerAdapterProxy; +import org.telegram.ui.AnimationCompat.AnimatorSetProxy; +import org.telegram.ui.AnimationCompat.ObjectAnimatorProxy; +import org.telegram.ui.AnimationCompat.ViewProxy; import org.telegram.ui.ApplicationLoader; -import java.util.ArrayList; - public class ChatActivityEnterView implements NotificationCenter.NotificationCenterDelegate, SizeNotifierRelativeLayout.SizeNotifierRelativeLayoutDelegate { public static interface ChatActivityEnterViewDelegate { @@ -71,7 +68,8 @@ public class ChatActivityEnterView implements NotificationCenter.NotificationCen private PowerManager.WakeLock mWakeLock; private SizeNotifierRelativeLayout sizeNotifierRelativeLayout; private FrameLayout attachButton; - private Object runningAnimation; + private AnimatorSetProxy runningAnimation; + private AnimatorSetProxy runningAnimation2; private int runningAnimationType; private int keyboardHeight; @@ -134,6 +132,9 @@ public class ChatActivityEnterView implements NotificationCenter.NotificationCen messsageEditText.setHint(LocaleController.getString("TypeMessage", R.string.TypeMessage)); attachButton = (FrameLayout) containerView.findViewById(R.id.chat_attach_button); + if (attachButton != null) { + ViewProxy.setPivotX(attachButton, AndroidUtilities.dp(48)); + } sendButton = (ImageButton) containerView.findViewById(R.id.chat_send_button); sendButton.setVisibility(View.INVISIBLE); @@ -224,38 +225,37 @@ public class ChatActivityEnterView implements NotificationCenter.NotificationCen recordingAudio = false; updateAudioRecordIntefrace(); } - if (android.os.Build.VERSION.SDK_INT > 13) { - x = x + audioSendButton.getX(); - FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) slideText.getLayoutParams(); - if (startedDraggingX != -1) { - float dist = (x - startedDraggingX); - params.leftMargin = AndroidUtilities.dp(30) + (int) dist; - slideText.setLayoutParams(params); - float alpha = 1.0f + dist / distCanMove; - if (alpha > 1) { - alpha = 1; - } else if (alpha < 0) { - alpha = 0; - } - slideText.setAlpha(alpha); + + x = x + ViewProxy.getX(audioSendButton); + FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) slideText.getLayoutParams(); + if (startedDraggingX != -1) { + float dist = (x - startedDraggingX); + params.leftMargin = AndroidUtilities.dp(30) + (int) dist; + slideText.setLayoutParams(params); + float alpha = 1.0f + dist / distCanMove; + if (alpha > 1) { + alpha = 1; + } else if (alpha < 0) { + alpha = 0; } - if (x <= slideText.getX() + slideText.getWidth() + AndroidUtilities.dp(30)) { - if (startedDraggingX == -1) { - startedDraggingX = x; - distCanMove = (recordPanel.getMeasuredWidth() - slideText.getMeasuredWidth() - AndroidUtilities.dp(48)) / 2.0f; - if (distCanMove <= 0) { - distCanMove = AndroidUtilities.dp(80); - } else if (distCanMove > AndroidUtilities.dp(80)) { - distCanMove = AndroidUtilities.dp(80); - } + ViewProxy.setAlpha(slideText, alpha); + } + if (x <= ViewProxy.getX(slideText) + slideText.getWidth() + AndroidUtilities.dp(30)) { + if (startedDraggingX == -1) { + startedDraggingX = x; + distCanMove = (recordPanel.getMeasuredWidth() - slideText.getMeasuredWidth() - AndroidUtilities.dp(48)) / 2.0f; + if (distCanMove <= 0) { + distCanMove = AndroidUtilities.dp(80); + } else if (distCanMove > AndroidUtilities.dp(80)) { + distCanMove = AndroidUtilities.dp(80); } } - if (params.leftMargin > AndroidUtilities.dp(30)) { - params.leftMargin = AndroidUtilities.dp(30); - slideText.setLayoutParams(params); - slideText.setAlpha(1); - startedDraggingX = -1; - } + } + if (params.leftMargin > AndroidUtilities.dp(30)) { + params.leftMargin = AndroidUtilities.dp(30); + slideText.setLayoutParams(params); + ViewProxy.setAlpha(slideText, 1); + startedDraggingX = -1; } } view.onTouchEvent(motionEvent); @@ -349,46 +349,63 @@ public class ChatActivityEnterView implements NotificationCenter.NotificationCen return src; } - private void checkSendButton(boolean animated) { + private void checkSendButton(final boolean animated) { String message = getTrimmedString(messsageEditText.getText().toString()); if (message.length() > 0) { if (audioSendButton.getVisibility() == View.VISIBLE) { - if (Build.VERSION.SDK_INT >= 11 && animated) { + if (animated) { if (runningAnimationType == 1) { return; } if (runningAnimation != null) { - ((AnimatorSet) runningAnimation).cancel(); + runningAnimation.cancel(); runningAnimation = null; } + if (runningAnimation2 != null) { + runningAnimation2.cancel(); + runningAnimation2 = null; + } + + if (attachButton != null) { + runningAnimation2 = new AnimatorSetProxy(); + runningAnimation2.playTogether( + ObjectAnimatorProxy.ofFloat(attachButton, "alpha", 0.0f), + ObjectAnimatorProxy.ofFloat(attachButton, "scaleX", 0.0f) + ); + runningAnimation2.setDuration(100); + runningAnimation2.addListener(new AnimatorListenerAdapterProxy() { + @Override + public void onAnimationEnd(Object animation) { + if (runningAnimation2.equals(animation)) { + attachButton.setVisibility(View.GONE); + } + } + }); + runningAnimation2.start(); + + FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) messsageEditText.getLayoutParams(); + layoutParams.rightMargin = AndroidUtilities.dp(2); + messsageEditText.setLayoutParams(layoutParams); + } sendButton.setVisibility(View.VISIBLE); - AnimatorSet animatorSet = new AnimatorSet(); - runningAnimation = animatorSet; + runningAnimation = new AnimatorSetProxy(); runningAnimationType = 1; - ArrayList animators = new ArrayList(); - animators.add(ObjectAnimator.ofFloat(audioSendButton, "scaleX", 0.1f)); - animators.add(ObjectAnimator.ofFloat(audioSendButton, "scaleY", 0.1f)); - animators.add(ObjectAnimator.ofFloat(audioSendButton, "alpha", 0.0f)); - animators.add(ObjectAnimator.ofFloat(sendButton, "scaleX", 1.0f)); - animators.add(ObjectAnimator.ofFloat(sendButton, "scaleY", 1.0f)); - animators.add(ObjectAnimator.ofFloat(sendButton, "alpha", 1.0f)); - if (attachButton != null) { - animators.add(ObjectAnimator.ofFloat(attachButton, "alpha", 0.0f)); - animators.add(ObjectAnimator.ofFloat(attachButton, "translationX", AndroidUtilities.dp(48))); + runningAnimation.playTogether( + ObjectAnimatorProxy.ofFloat(audioSendButton, "scaleX", 0.1f), + ObjectAnimatorProxy.ofFloat(audioSendButton, "scaleY", 0.1f), + ObjectAnimatorProxy.ofFloat(audioSendButton, "alpha", 0.0f), + ObjectAnimatorProxy.ofFloat(sendButton, "scaleX", 1.0f), + ObjectAnimatorProxy.ofFloat(sendButton, "scaleY", 1.0f), + ObjectAnimatorProxy.ofFloat(sendButton, "alpha", 1.0f) + ); - FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) messsageEditText.getLayoutParams(); - layoutParams.rightMargin = AndroidUtilities.dp(6); - messsageEditText.setLayoutParams(layoutParams); - } - animatorSet.playTogether(animators); - - animatorSet.setDuration(200); - animatorSet.addListener(new AnimatorListenerAdapter() { + runningAnimation.setDuration(150); + runningAnimation.addListener(new AnimatorListenerAdapterProxy() { @Override - public void onAnimationEnd(Animator animation) { - if (animation == runningAnimation) { + public void onAnimationEnd(Object animation) { + if (runningAnimation.equals(animation)) { sendButton.setVisibility(View.VISIBLE); audioSendButton.setVisibility(View.INVISIBLE); runningAnimation = null; @@ -396,16 +413,14 @@ public class ChatActivityEnterView implements NotificationCenter.NotificationCen } } }); - animatorSet.start(); + runningAnimation.start(); } else { - if (Build.VERSION.SDK_INT >= 11) { - audioSendButton.setScaleX(0.1f); - audioSendButton.setScaleY(0.1f); - audioSendButton.setAlpha(0.0f); - sendButton.setScaleX(1.0f); - sendButton.setScaleY(1.0f); - sendButton.setAlpha(1.0f); - } + ViewProxy.setScaleX(audioSendButton, 0.1f); + ViewProxy.setScaleY(audioSendButton, 0.1f); + ViewProxy.setAlpha(audioSendButton, 0.0f); + ViewProxy.setScaleX(sendButton, 1.0f); + ViewProxy.setScaleY(sendButton, 1.0f); + ViewProxy.setAlpha(sendButton, 1.0f); sendButton.setVisibility(View.VISIBLE); audioSendButton.setVisibility(View.INVISIBLE); if (attachButton != null) { @@ -414,43 +429,53 @@ public class ChatActivityEnterView implements NotificationCenter.NotificationCen } } } else if (sendButton.getVisibility() == View.VISIBLE) { - if (Build.VERSION.SDK_INT >= 11 && animated) { + if (animated) { if (runningAnimationType == 2) { return; } if (runningAnimation != null) { - ((AnimatorSet) runningAnimation).cancel(); + runningAnimation.cancel(); runningAnimation = null; } + if (runningAnimation2 != null) { + runningAnimation2.cancel(); + runningAnimation2 = null; + } + + if (attachButton != null) { + attachButton.setVisibility(View.VISIBLE); + runningAnimation2 = new AnimatorSetProxy(); + runningAnimation2.playTogether( + ObjectAnimatorProxy.ofFloat(attachButton, "alpha", 1.0f), + ObjectAnimatorProxy.ofFloat(attachButton, "scaleX", 1.0f) + ); + runningAnimation2.setDuration(100); + runningAnimation2.start(); + + FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) messsageEditText.getLayoutParams(); + layoutParams.rightMargin = AndroidUtilities.dp(2); + messsageEditText.setLayoutParams(layoutParams); + } audioSendButton.setVisibility(View.VISIBLE); - AnimatorSet animatorSet = new AnimatorSet(); - runningAnimation = animatorSet; + runningAnimation = new AnimatorSetProxy(); runningAnimationType = 2; - ArrayList animators = new ArrayList(); - animators.add(ObjectAnimator.ofFloat(sendButton, "scaleX", 0.1f)); - animators.add(ObjectAnimator.ofFloat(sendButton, "scaleY", 0.1f)); - animators.add(ObjectAnimator.ofFloat(sendButton, "alpha", 0.0f)); - animators.add(ObjectAnimator.ofFloat(audioSendButton, "scaleX", 1.0f)); - animators.add(ObjectAnimator.ofFloat(audioSendButton, "scaleY", 1.0f)); - animators.add(ObjectAnimator.ofFloat(audioSendButton, "alpha", 1.0f)); - if (attachButton != null) { - animators.add(ObjectAnimator.ofFloat(attachButton, "alpha", 1.0f)); - animators.add(ObjectAnimator.ofFloat(attachButton, "translationX", 0.0f)); + runningAnimation.playTogether( + ObjectAnimatorProxy.ofFloat(sendButton, "scaleX", 0.1f), + ObjectAnimatorProxy.ofFloat(sendButton, "scaleY", 0.1f), + ObjectAnimatorProxy.ofFloat(sendButton, "alpha", 0.0f), + ObjectAnimatorProxy.ofFloat(audioSendButton, "scaleX", 1.0f), + ObjectAnimatorProxy.ofFloat(audioSendButton, "scaleY", 1.0f), + ObjectAnimatorProxy.ofFloat(audioSendButton, "alpha", 1.0f) + ); - FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) messsageEditText.getLayoutParams(); - layoutParams.rightMargin = AndroidUtilities.dp(54); - messsageEditText.setLayoutParams(layoutParams); - } - animatorSet.playTogether(animators); - - animatorSet.setDuration(200); - animatorSet.addListener(new AnimatorListenerAdapter() { + runningAnimation.setDuration(150); + runningAnimation.addListener(new AnimatorListenerAdapterProxy() { @Override - public void onAnimationEnd(Animator animation) { - if (animation == runningAnimation) { + public void onAnimationEnd(Object animation) { + if (runningAnimation.equals(animation)) { sendButton.setVisibility(View.INVISIBLE); audioSendButton.setVisibility(View.VISIBLE); runningAnimation = null; @@ -458,16 +483,14 @@ public class ChatActivityEnterView implements NotificationCenter.NotificationCen } } }); - animatorSet.start(); + runningAnimation.start(); } else { - if (Build.VERSION.SDK_INT >= 11) { - sendButton.setScaleX(0.1f); - sendButton.setScaleY(0.1f); - sendButton.setAlpha(0.0f); - audioSendButton.setScaleX(1.0f); - audioSendButton.setScaleY(1.0f); - audioSendButton.setAlpha(1.0f); - } + ViewProxy.setScaleX(sendButton, 0.1f); + ViewProxy.setScaleY(sendButton, 0.1f); + ViewProxy.setAlpha(sendButton, 0.0f); + ViewProxy.setScaleX(audioSendButton, 1.0f); + ViewProxy.setScaleY(audioSendButton, 1.0f); + ViewProxy.setAlpha(audioSendButton, 1.0f); sendButton.setVisibility(View.INVISIBLE); audioSendButton.setVisibility(View.VISIBLE); if (attachButton != null) { @@ -493,31 +516,21 @@ public class ChatActivityEnterView implements NotificationCenter.NotificationCen recordPanel.setVisibility(View.VISIBLE); recordTimeText.setText("00:00"); lastTimeString = null; - if (android.os.Build.VERSION.SDK_INT > 13) { - FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) slideText.getLayoutParams(); - params.leftMargin = AndroidUtilities.dp(30); - slideText.setLayoutParams(params); - slideText.setAlpha(1); - recordPanel.setX(AndroidUtilities.displaySize.x); - recordPanel.animate().setInterpolator(new AccelerateDecelerateInterpolator()).setListener(new Animator.AnimatorListener() { - @Override - public void onAnimationStart(Animator animator) { - } - @Override - public void onAnimationEnd(Animator animator) { - recordPanel.setX(0); - } - - @Override - public void onAnimationCancel(Animator animator) { - } - - @Override - public void onAnimationRepeat(Animator animator) { - } - }).setDuration(300).translationX(0).start(); - } + FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) slideText.getLayoutParams(); + params.leftMargin = AndroidUtilities.dp(30); + slideText.setLayoutParams(params); + ViewProxy.setAlpha(slideText, 1); + recordPanel.setX(AndroidUtilities.displaySize.x); + ObjectAnimatorProxy animatorProxy = ObjectAnimatorProxy.ofFloatProxy(recordPanel, "translationX", 0).setDuration(300); + animatorProxy.addListener(new AnimatorListenerAdapterProxy() { + @Override + public void onAnimationEnd(Object animator) { + ViewProxy.setX(recordPanel, 0); + } + }); + animatorProxy.setInterpolator(new AccelerateDecelerateInterpolator()); + animatorProxy.start(); } else { if (mWakeLock != null) { try { @@ -528,33 +541,20 @@ public class ChatActivityEnterView implements NotificationCenter.NotificationCen } } AndroidUtilities.unlockOrientation(parentActivity); - if (android.os.Build.VERSION.SDK_INT > 13) { - recordPanel.animate().setInterpolator(new AccelerateDecelerateInterpolator()).setListener(new Animator.AnimatorListener() { - @Override - public void onAnimationStart(Animator animator) { - } - - @Override - public void onAnimationEnd(Animator animator) { - FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) slideText.getLayoutParams(); - params.leftMargin = AndroidUtilities.dp(30); - slideText.setLayoutParams(params); - slideText.setAlpha(1); - recordPanel.setVisibility(View.GONE); - } - - @Override - public void onAnimationCancel(Animator animator) { - } - - @Override - public void onAnimationRepeat(Animator animator) { - } - }).setDuration(300).translationX(AndroidUtilities.displaySize.x).start(); - } else { - recordPanel.setVisibility(View.GONE); - } + ObjectAnimatorProxy animatorProxy = ObjectAnimatorProxy.ofFloatProxy(recordPanel, "translationX", AndroidUtilities.displaySize.x).setDuration(300); + animatorProxy.addListener(new AnimatorListenerAdapterProxy() { + @Override + public void onAnimationEnd(Object animator) { + FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) slideText.getLayoutParams(); + params.leftMargin = AndroidUtilities.dp(30); + slideText.setLayoutParams(params); + ViewProxy.setAlpha(slideText, 1); + recordPanel.setVisibility(View.GONE); + } + }); + animatorProxy.setInterpolator(new AccelerateDecelerateInterpolator()); + animatorProxy.start(); } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Views/ClippingImageView.java b/TMessagesProj/src/main/java/org/telegram/ui/Views/ClippingImageView.java index 7ab955fc..e3243f9e 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Views/ClippingImageView.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Views/ClippingImageView.java @@ -10,9 +10,13 @@ package org.telegram.ui.Views; import android.content.Context; import android.graphics.Bitmap; +import android.graphics.BitmapShader; import android.graphics.Canvas; +import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.Rect; +import android.graphics.RectF; +import android.graphics.Shader; import android.view.View; import org.telegram.messenger.FileLog; @@ -28,6 +32,14 @@ public class ClippingImageView extends View { private Bitmap bmp; private onDrawListener drawListener; + private boolean needRadius; + private int radius; + private BitmapShader bitmapShader; + private Paint roundPaint; + private RectF roundRect; + private RectF bitmapRect; + private Matrix shaderMatrix; + public static interface onDrawListener { public abstract void onDraw(); } @@ -59,6 +71,10 @@ public class ClippingImageView extends View { return clipTop; } + public int getRadius() { + return radius; + } + public void onDraw(Canvas canvas) { if (getVisibility() == GONE || getVisibility() == INVISIBLE) { return; @@ -69,12 +85,20 @@ public class ClippingImageView extends View { drawListener.onDraw(); } canvas.save(); - canvas.clipRect(clipLeft / scaleY, clipTop / scaleY, getWidth() - clipRight / scaleY, getHeight() - clipBottom / scaleY); - drawRect.set(0, 0, getWidth(), getHeight()); - try { - canvas.drawBitmap(this.bmp, null, drawRect, this.paint); - } catch (Exception e) { - FileLog.e("tmessages", e); + if (needRadius) { + roundRect.set(0, 0, getWidth(), getHeight()); + shaderMatrix.reset(); + shaderMatrix.setRectToRect(bitmapRect, roundRect, Matrix.ScaleToFit.FILL); + bitmapShader.setLocalMatrix(shaderMatrix); + canvas.drawRoundRect(roundRect, radius, radius, roundPaint); + } else { + canvas.clipRect(clipLeft / scaleY, clipTop / scaleY, getWidth() - clipRight / scaleY, getHeight() - clipBottom / scaleY); + drawRect.set(0, 0, getWidth(), getHeight()); + try { + canvas.drawBitmap(bmp, null, drawRect, paint); + } catch (Exception e) { + FileLog.e("tmessages", e); + } } canvas.restore(); } @@ -114,10 +138,27 @@ public class ClippingImageView extends View { public void setImageBitmap(Bitmap bitmap) { bmp = bitmap; + if (bitmap != null && needRadius) { + roundRect = new RectF(); + shaderMatrix = new Matrix(); + bitmapRect = new RectF(); + bitmapRect.set(0, 0, bitmap.getWidth(), bitmap.getHeight()); + bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); + roundPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + roundPaint.setShader(bitmapShader); + } invalidate(); } public void setOnDrawListener(onDrawListener listener) { drawListener = listener; } + + public void setNeedRadius(boolean value) { + needRadius = value; + } + + public void setRadius(int value) { + radius = value; + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Views/SettingsSectionLayout.java b/TMessagesProj/src/main/java/org/telegram/ui/Views/SettingsSectionLayout.java deleted file mode 100644 index 547e5352..00000000 --- a/TMessagesProj/src/main/java/org/telegram/ui/Views/SettingsSectionLayout.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * This is the source code of Telegram for Android v. 1.7.x. - * It is licensed under GNU GPL v. 2 or later. - * You should have received a copy of the license in this archive (see LICENSE). - * - * Copyright Nikolai Kudashov, 2013-2014. - */ - -package org.telegram.ui.Views; - -import android.content.Context; -import android.graphics.Typeface; -import android.util.AttributeSet; -import android.util.TypedValue; -import android.view.Gravity; -import android.view.View; -import android.widget.LinearLayout; -import android.widget.TextView; - -import org.telegram.android.AndroidUtilities; -import org.telegram.android.LocaleController; - -public class SettingsSectionLayout extends LinearLayout { - - private TextView textView; - - private void init() { - setOrientation(LinearLayout.VERTICAL); - - textView = new TextView(getContext()); - textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14); - textView.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD)); - textView.setTextColor(0xff3b84c0); - addView(textView); - LayoutParams layoutParams = (LayoutParams)textView.getLayoutParams(); - layoutParams.width = LayoutParams.WRAP_CONTENT; - layoutParams.height = LayoutParams.WRAP_CONTENT; - layoutParams.leftMargin = AndroidUtilities.dp(8); - layoutParams.rightMargin = AndroidUtilities.dp(8); - layoutParams.topMargin = AndroidUtilities.dp(6); - layoutParams.bottomMargin = AndroidUtilities.dp(4); - if (LocaleController.isRTL) { - textView.setGravity(Gravity.RIGHT); - layoutParams.gravity = Gravity.RIGHT; - } - textView.setLayoutParams(layoutParams); - - View view = new View(getContext()); - view.setBackgroundColor(0xff6caae4); - addView(view); - layoutParams = (LayoutParams)view.getLayoutParams(); - layoutParams.weight = LayoutParams.MATCH_PARENT; - layoutParams.height = AndroidUtilities.dp(1); - view.setLayoutParams(layoutParams); - } - - public SettingsSectionLayout(Context context) { - super(context); - init(); - } - - public SettingsSectionLayout(Context context, AttributeSet attrs) { - super(context, attrs); - init(); - } - - public SettingsSectionLayout(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - init(); - } - - public SettingsSectionLayout(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { - super(context, attrs, defStyleAttr, defStyleRes); - init(); - } - - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(heightMeasureSpec), MeasureSpec.UNSPECIFIED)); - } - - public void setText(String text) { - textView.setText(text); - } -} diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Views/TimerButton.java b/TMessagesProj/src/main/java/org/telegram/ui/Views/TimerDrawable.java similarity index 80% rename from TMessagesProj/src/main/java/org/telegram/ui/Views/TimerButton.java rename to TMessagesProj/src/main/java/org/telegram/ui/Views/TimerDrawable.java index 9c6c4304..2a9dc523 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Views/TimerButton.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Views/TimerDrawable.java @@ -10,20 +10,19 @@ package org.telegram.ui.Views; import android.content.Context; import android.graphics.Canvas; +import android.graphics.ColorFilter; import android.graphics.Paint; import android.graphics.Typeface; import android.graphics.drawable.Drawable; import android.text.Layout; import android.text.StaticLayout; import android.text.TextPaint; -import android.util.AttributeSet; -import android.view.View; import org.telegram.android.AndroidUtilities; import org.telegram.messenger.FileLog; import org.telegram.messenger.R; -public class TimerButton extends View { +public class TimerDrawable extends Drawable { private static Drawable emptyTimerDrawable; private static Drawable timerDrawable; @@ -33,32 +32,15 @@ public class TimerButton extends View { private int timeHeight = 0; private int time = 0; - private void init() { + public TimerDrawable(Context context) { if (emptyTimerDrawable == null) { - emptyTimerDrawable = getResources().getDrawable(R.drawable.header_timer); - timerDrawable = getResources().getDrawable(R.drawable.header_timer2); + emptyTimerDrawable = context.getResources().getDrawable(R.drawable.header_timer); + timerDrawable = context.getResources().getDrawable(R.drawable.header_timer2); timePaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); timePaint.setTextSize(AndroidUtilities.dp(10)); timePaint.setColor(0xffd7e8f7); timePaint.setTypeface(Typeface.DEFAULT_BOLD); } - - setBackgroundResource(R.drawable.bar_selector); - } - - public TimerButton(Context context) { - super(context); - init(); - } - - public TimerButton(Context context, AttributeSet attrs) { - super(context, attrs); - init(); - } - - public TimerButton(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - init(); } public void setTime(int value) { @@ -103,13 +85,13 @@ public class TimerButton extends View { FileLog.e("tmessages", e); } - invalidate(); + invalidateSelf(); } @Override - protected void onDraw(Canvas canvas) { - int width = getMeasuredWidth(); - int height = getMeasuredHeight(); + public void draw(Canvas canvas) { + int width = canvas.getWidth(); + int height = canvas.getHeight(); Drawable drawable = null; if (time == 0) { drawable = timerDrawable; @@ -127,4 +109,29 @@ public class TimerButton extends View { timeLayout.draw(canvas); } } + + @Override + public void setAlpha(int alpha) { + + } + + @Override + public void setColorFilter(ColorFilter cf) { + + } + + @Override + public int getOpacity() { + return 0; + } + + @Override + public int getIntrinsicWidth() { + return -1; + } + + @Override + public int getIntrinsicHeight() { + return -1; + } } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/WallpapersActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/WallpapersActivity.java index b3cfd5f3..75da9911 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/WallpapersActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/WallpapersActivity.java @@ -155,7 +155,7 @@ public class WallpapersActivity extends BaseFragment implements NotificationCent }); ActionBarMenu menu = actionBar.createMenu(); - doneButton = menu.addItem(done_button, R.drawable.ic_done, 0, AndroidUtilities.dp(56)); + doneButton = menu.addItemWithWidth(done_button, R.drawable.ic_done, AndroidUtilities.dp(56)); fragmentView = inflater.inflate(R.layout.settings_wallpapers_layout, container, false); listAdapter = new ListAdapter(getParentActivity()); diff --git a/TMessagesProj/src/main/res/anim/slide_down.xml b/TMessagesProj/src/main/res/anim/slide_down.xml deleted file mode 100644 index a6182700..00000000 --- a/TMessagesProj/src/main/res/anim/slide_down.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/anim/slide_up.xml b/TMessagesProj/src/main/res/anim/slide_up.xml deleted file mode 100644 index ce5a7152..00000000 --- a/TMessagesProj/src/main/res/anim/slide_up.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable-hdpi/call.png b/TMessagesProj/src/main/res/drawable-hdpi/call.png deleted file mode 100755 index 8a87c04b..00000000 Binary files a/TMessagesProj/src/main/res/drawable-hdpi/call.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/check_blue.png b/TMessagesProj/src/main/res/drawable-hdpi/check_blue.png new file mode 100755 index 00000000..80ade6ab Binary files /dev/null and b/TMessagesProj/src/main/res/drawable-hdpi/check_blue.png differ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/greydivider.9.png b/TMessagesProj/src/main/res/drawable-hdpi/greydivider.9.png new file mode 100644 index 00000000..9a69cf43 Binary files /dev/null and b/TMessagesProj/src/main/res/drawable-hdpi/greydivider.9.png differ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/greydivider.png b/TMessagesProj/src/main/res/drawable-hdpi/greydivider.png deleted file mode 100755 index fd8713b0..00000000 Binary files a/TMessagesProj/src/main/res/drawable-hdpi/greydivider.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/greydivider_bottom.9.png b/TMessagesProj/src/main/res/drawable-hdpi/greydivider_bottom.9.png new file mode 100644 index 00000000..64d23a36 Binary files /dev/null and b/TMessagesProj/src/main/res/drawable-hdpi/greydivider_bottom.9.png differ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/ic_ab_back_grey.png b/TMessagesProj/src/main/res/drawable-hdpi/ic_ab_back_grey.png new file mode 100755 index 00000000..0ca6612a Binary files /dev/null and b/TMessagesProj/src/main/res/drawable-hdpi/ic_ab_back_grey.png differ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/ic_ab_done.png b/TMessagesProj/src/main/res/drawable-hdpi/ic_ab_done.png deleted file mode 100644 index 7cbf465e..00000000 Binary files a/TMessagesProj/src/main/res/drawable-hdpi/ic_ab_done.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/ic_ab_done_gray.png b/TMessagesProj/src/main/res/drawable-hdpi/ic_ab_done_gray.png deleted file mode 100755 index 99240881..00000000 Binary files a/TMessagesProj/src/main/res/drawable-hdpi/ic_ab_done_gray.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/ic_directory.png b/TMessagesProj/src/main/res/drawable-hdpi/ic_directory.png old mode 100644 new mode 100755 index 0d999eea..e3dccd29 Binary files a/TMessagesProj/src/main/res/drawable-hdpi/ic_directory.png and b/TMessagesProj/src/main/res/drawable-hdpi/ic_directory.png differ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/ic_external_storage.png b/TMessagesProj/src/main/res/drawable-hdpi/ic_external_storage.png old mode 100644 new mode 100755 index 6b6f6113..5b7c4e19 Binary files a/TMessagesProj/src/main/res/drawable-hdpi/ic_external_storage.png and b/TMessagesProj/src/main/res/drawable-hdpi/ic_external_storage.png differ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/ic_msg_btn_cross.png b/TMessagesProj/src/main/res/drawable-hdpi/ic_msg_btn_cross.png deleted file mode 100644 index 9d7f7d9f..00000000 Binary files a/TMessagesProj/src/main/res/drawable-hdpi/ic_msg_btn_cross.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/ic_msg_btn_cross_custom.png b/TMessagesProj/src/main/res/drawable-hdpi/ic_msg_btn_cross_custom.png deleted file mode 100644 index 865ffa1a..00000000 Binary files a/TMessagesProj/src/main/res/drawable-hdpi/ic_msg_btn_cross_custom.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/ic_profile_send_message.png b/TMessagesProj/src/main/res/drawable-hdpi/ic_profile_send_message.png deleted file mode 100755 index 3ad169b6..00000000 Binary files a/TMessagesProj/src/main/res/drawable-hdpi/ic_profile_send_message.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/ic_send_disabled.png b/TMessagesProj/src/main/res/drawable-hdpi/ic_send_disabled.png deleted file mode 100755 index 4473d1c6..00000000 Binary files a/TMessagesProj/src/main/res/drawable-hdpi/ic_send_disabled.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/ic_storage.png b/TMessagesProj/src/main/res/drawable-hdpi/ic_storage.png old mode 100644 new mode 100755 index 696acc68..fb446d76 Binary files a/TMessagesProj/src/main/res/drawable-hdpi/ic_storage.png and b/TMessagesProj/src/main/res/drawable-hdpi/ic_storage.png differ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/p2r_progress.png b/TMessagesProj/src/main/res/drawable-hdpi/p2r_progress.png deleted file mode 100644 index f22cd844..00000000 Binary files a/TMessagesProj/src/main/res/drawable-hdpi/p2r_progress.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/p2r_progress_custom.png b/TMessagesProj/src/main/res/drawable-hdpi/p2r_progress_custom.png deleted file mode 100644 index d99e53cf..00000000 Binary files a/TMessagesProj/src/main/res/drawable-hdpi/p2r_progress_custom.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/phone.png b/TMessagesProj/src/main/res/drawable-hdpi/phone.png deleted file mode 100755 index 7936266c..00000000 Binary files a/TMessagesProj/src/main/res/drawable-hdpi/phone.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/search_dark.9.png b/TMessagesProj/src/main/res/drawable-hdpi/search_dark.9.png new file mode 100644 index 00000000..a178a67f Binary files /dev/null and b/TMessagesProj/src/main/res/drawable-hdpi/search_dark.9.png differ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/search_dark_activated.9.png b/TMessagesProj/src/main/res/drawable-hdpi/search_dark_activated.9.png new file mode 100644 index 00000000..d5d4c78b Binary files /dev/null and b/TMessagesProj/src/main/res/drawable-hdpi/search_dark_activated.9.png differ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/search_light.9.png b/TMessagesProj/src/main/res/drawable-hdpi/search_light.9.png deleted file mode 100644 index 6c97d2b9..00000000 Binary files a/TMessagesProj/src/main/res/drawable-hdpi/search_light.9.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/search_light_activated.9.png b/TMessagesProj/src/main/res/drawable-hdpi/search_light_activated.9.png index b8d54c87..7fb04f90 100644 Binary files a/TMessagesProj/src/main/res/drawable-hdpi/search_light_activated.9.png and b/TMessagesProj/src/main/res/drawable-hdpi/search_light_activated.9.png differ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/tooltip.png b/TMessagesProj/src/main/res/drawable-hdpi/tooltip.png deleted file mode 100755 index 58ce9023..00000000 Binary files a/TMessagesProj/src/main/res/drawable-hdpi/tooltip.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/top_pane.9.png b/TMessagesProj/src/main/res/drawable-hdpi/top_pane.9.png deleted file mode 100644 index 5e4df285..00000000 Binary files a/TMessagesProj/src/main/res/drawable-hdpi/top_pane.9.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-hdpi/top_pane_custom.9.png b/TMessagesProj/src/main/res/drawable-hdpi/top_pane_custom.9.png deleted file mode 100644 index 202926d1..00000000 Binary files a/TMessagesProj/src/main/res/drawable-hdpi/top_pane_custom.9.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/call.png b/TMessagesProj/src/main/res/drawable-mdpi/call.png deleted file mode 100755 index d4ce6a78..00000000 Binary files a/TMessagesProj/src/main/res/drawable-mdpi/call.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/check_blue.png b/TMessagesProj/src/main/res/drawable-mdpi/check_blue.png new file mode 100755 index 00000000..c37aa71b Binary files /dev/null and b/TMessagesProj/src/main/res/drawable-mdpi/check_blue.png differ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/greydivider.9.png b/TMessagesProj/src/main/res/drawable-mdpi/greydivider.9.png new file mode 100644 index 00000000..48a21259 Binary files /dev/null and b/TMessagesProj/src/main/res/drawable-mdpi/greydivider.9.png differ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/greydivider.png b/TMessagesProj/src/main/res/drawable-mdpi/greydivider.png deleted file mode 100755 index 342fb818..00000000 Binary files a/TMessagesProj/src/main/res/drawable-mdpi/greydivider.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/greydivider_bottom.9.png b/TMessagesProj/src/main/res/drawable-mdpi/greydivider_bottom.9.png new file mode 100644 index 00000000..d8fc75bc Binary files /dev/null and b/TMessagesProj/src/main/res/drawable-mdpi/greydivider_bottom.9.png differ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/ic_ab_back_grey.png b/TMessagesProj/src/main/res/drawable-mdpi/ic_ab_back_grey.png new file mode 100755 index 00000000..44e1c11b Binary files /dev/null and b/TMessagesProj/src/main/res/drawable-mdpi/ic_ab_back_grey.png differ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/ic_ab_done.png b/TMessagesProj/src/main/res/drawable-mdpi/ic_ab_done.png deleted file mode 100644 index f1966a34..00000000 Binary files a/TMessagesProj/src/main/res/drawable-mdpi/ic_ab_done.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/ic_ab_done_gray.png b/TMessagesProj/src/main/res/drawable-mdpi/ic_ab_done_gray.png deleted file mode 100755 index 47beed22..00000000 Binary files a/TMessagesProj/src/main/res/drawable-mdpi/ic_ab_done_gray.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/ic_directory.png b/TMessagesProj/src/main/res/drawable-mdpi/ic_directory.png old mode 100644 new mode 100755 index d3359460..1028bfaf Binary files a/TMessagesProj/src/main/res/drawable-mdpi/ic_directory.png and b/TMessagesProj/src/main/res/drawable-mdpi/ic_directory.png differ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/ic_external_storage.png b/TMessagesProj/src/main/res/drawable-mdpi/ic_external_storage.png old mode 100644 new mode 100755 index d6614588..630eacbb Binary files a/TMessagesProj/src/main/res/drawable-mdpi/ic_external_storage.png and b/TMessagesProj/src/main/res/drawable-mdpi/ic_external_storage.png differ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/ic_msg_btn_cross.png b/TMessagesProj/src/main/res/drawable-mdpi/ic_msg_btn_cross.png deleted file mode 100644 index 00c973bc..00000000 Binary files a/TMessagesProj/src/main/res/drawable-mdpi/ic_msg_btn_cross.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/ic_msg_btn_cross_custom.png b/TMessagesProj/src/main/res/drawable-mdpi/ic_msg_btn_cross_custom.png deleted file mode 100644 index d6410665..00000000 Binary files a/TMessagesProj/src/main/res/drawable-mdpi/ic_msg_btn_cross_custom.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/ic_profile_send_message.png b/TMessagesProj/src/main/res/drawable-mdpi/ic_profile_send_message.png deleted file mode 100755 index a319f398..00000000 Binary files a/TMessagesProj/src/main/res/drawable-mdpi/ic_profile_send_message.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/ic_send_disabled.png b/TMessagesProj/src/main/res/drawable-mdpi/ic_send_disabled.png deleted file mode 100755 index c183f5f9..00000000 Binary files a/TMessagesProj/src/main/res/drawable-mdpi/ic_send_disabled.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/ic_storage.png b/TMessagesProj/src/main/res/drawable-mdpi/ic_storage.png old mode 100644 new mode 100755 index 7bc0ddab..6189a7ee Binary files a/TMessagesProj/src/main/res/drawable-mdpi/ic_storage.png and b/TMessagesProj/src/main/res/drawable-mdpi/ic_storage.png differ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/p2r_progress.png b/TMessagesProj/src/main/res/drawable-mdpi/p2r_progress.png deleted file mode 100644 index 3dbd2b05..00000000 Binary files a/TMessagesProj/src/main/res/drawable-mdpi/p2r_progress.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/p2r_progress_custom.png b/TMessagesProj/src/main/res/drawable-mdpi/p2r_progress_custom.png deleted file mode 100644 index b226340d..00000000 Binary files a/TMessagesProj/src/main/res/drawable-mdpi/p2r_progress_custom.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/phone.png b/TMessagesProj/src/main/res/drawable-mdpi/phone.png deleted file mode 100755 index 080456b4..00000000 Binary files a/TMessagesProj/src/main/res/drawable-mdpi/phone.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/search_dark.9.png b/TMessagesProj/src/main/res/drawable-mdpi/search_dark.9.png new file mode 100644 index 00000000..e7ae6040 Binary files /dev/null and b/TMessagesProj/src/main/res/drawable-mdpi/search_dark.9.png differ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/search_dark_activated.9.png b/TMessagesProj/src/main/res/drawable-mdpi/search_dark_activated.9.png new file mode 100644 index 00000000..cf31f1c6 Binary files /dev/null and b/TMessagesProj/src/main/res/drawable-mdpi/search_dark_activated.9.png differ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/search_light.9.png b/TMessagesProj/src/main/res/drawable-mdpi/search_light.9.png index 9aac78f8..ee38ad34 100644 Binary files a/TMessagesProj/src/main/res/drawable-mdpi/search_light.9.png and b/TMessagesProj/src/main/res/drawable-mdpi/search_light.9.png differ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/search_light_activated.9.png b/TMessagesProj/src/main/res/drawable-mdpi/search_light_activated.9.png index 8d7b83f7..fe325dde 100644 Binary files a/TMessagesProj/src/main/res/drawable-mdpi/search_light_activated.9.png and b/TMessagesProj/src/main/res/drawable-mdpi/search_light_activated.9.png differ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/tooltip.png b/TMessagesProj/src/main/res/drawable-mdpi/tooltip.png deleted file mode 100755 index 01b2766d..00000000 Binary files a/TMessagesProj/src/main/res/drawable-mdpi/tooltip.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/top_pane.9.png b/TMessagesProj/src/main/res/drawable-mdpi/top_pane.9.png deleted file mode 100644 index 20fff14c..00000000 Binary files a/TMessagesProj/src/main/res/drawable-mdpi/top_pane.9.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-mdpi/top_pane_custom.9.png b/TMessagesProj/src/main/res/drawable-mdpi/top_pane_custom.9.png deleted file mode 100644 index ce76ac80..00000000 Binary files a/TMessagesProj/src/main/res/drawable-mdpi/top_pane_custom.9.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/call.png b/TMessagesProj/src/main/res/drawable-xhdpi/call.png deleted file mode 100755 index f303cdb1..00000000 Binary files a/TMessagesProj/src/main/res/drawable-xhdpi/call.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/check_blue.png b/TMessagesProj/src/main/res/drawable-xhdpi/check_blue.png new file mode 100755 index 00000000..37b2d047 Binary files /dev/null and b/TMessagesProj/src/main/res/drawable-xhdpi/check_blue.png differ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/greydivider.9.png b/TMessagesProj/src/main/res/drawable-xhdpi/greydivider.9.png new file mode 100644 index 00000000..f14b4733 Binary files /dev/null and b/TMessagesProj/src/main/res/drawable-xhdpi/greydivider.9.png differ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/greydivider.png b/TMessagesProj/src/main/res/drawable-xhdpi/greydivider.png deleted file mode 100755 index a2d2af9d..00000000 Binary files a/TMessagesProj/src/main/res/drawable-xhdpi/greydivider.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/greydivider_bottom.9.png b/TMessagesProj/src/main/res/drawable-xhdpi/greydivider_bottom.9.png new file mode 100644 index 00000000..e1043341 Binary files /dev/null and b/TMessagesProj/src/main/res/drawable-xhdpi/greydivider_bottom.9.png differ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_back_grey.png b/TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_back_grey.png new file mode 100755 index 00000000..acb9af95 Binary files /dev/null and b/TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_back_grey.png differ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_done.png b/TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_done.png deleted file mode 100644 index 88992095..00000000 Binary files a/TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_done.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_done_gray.png b/TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_done_gray.png deleted file mode 100755 index 41671b4f..00000000 Binary files a/TMessagesProj/src/main/res/drawable-xhdpi/ic_ab_done_gray.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/ic_directory.png b/TMessagesProj/src/main/res/drawable-xhdpi/ic_directory.png old mode 100644 new mode 100755 index 4c99f987..190df823 Binary files a/TMessagesProj/src/main/res/drawable-xhdpi/ic_directory.png and b/TMessagesProj/src/main/res/drawable-xhdpi/ic_directory.png differ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/ic_external_storage.png b/TMessagesProj/src/main/res/drawable-xhdpi/ic_external_storage.png old mode 100644 new mode 100755 index 3280482f..2c34f5dc Binary files a/TMessagesProj/src/main/res/drawable-xhdpi/ic_external_storage.png and b/TMessagesProj/src/main/res/drawable-xhdpi/ic_external_storage.png differ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/ic_msg_btn_cross.png b/TMessagesProj/src/main/res/drawable-xhdpi/ic_msg_btn_cross.png deleted file mode 100644 index 842d02ac..00000000 Binary files a/TMessagesProj/src/main/res/drawable-xhdpi/ic_msg_btn_cross.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/ic_msg_btn_cross_custom.png b/TMessagesProj/src/main/res/drawable-xhdpi/ic_msg_btn_cross_custom.png deleted file mode 100644 index 9ad38982..00000000 Binary files a/TMessagesProj/src/main/res/drawable-xhdpi/ic_msg_btn_cross_custom.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/ic_profile_send_message.png b/TMessagesProj/src/main/res/drawable-xhdpi/ic_profile_send_message.png deleted file mode 100755 index ea83586d..00000000 Binary files a/TMessagesProj/src/main/res/drawable-xhdpi/ic_profile_send_message.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/ic_send_disabled.png b/TMessagesProj/src/main/res/drawable-xhdpi/ic_send_disabled.png deleted file mode 100755 index d63101df..00000000 Binary files a/TMessagesProj/src/main/res/drawable-xhdpi/ic_send_disabled.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/ic_storage.png b/TMessagesProj/src/main/res/drawable-xhdpi/ic_storage.png old mode 100644 new mode 100755 index 6aba104d..d9d8b481 Binary files a/TMessagesProj/src/main/res/drawable-xhdpi/ic_storage.png and b/TMessagesProj/src/main/res/drawable-xhdpi/ic_storage.png differ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/p2r_progress.png b/TMessagesProj/src/main/res/drawable-xhdpi/p2r_progress.png deleted file mode 100644 index 6209ff0b..00000000 Binary files a/TMessagesProj/src/main/res/drawable-xhdpi/p2r_progress.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/p2r_progress_custom.png b/TMessagesProj/src/main/res/drawable-xhdpi/p2r_progress_custom.png deleted file mode 100644 index d0f30cd6..00000000 Binary files a/TMessagesProj/src/main/res/drawable-xhdpi/p2r_progress_custom.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/phone.png b/TMessagesProj/src/main/res/drawable-xhdpi/phone.png deleted file mode 100755 index bed929c5..00000000 Binary files a/TMessagesProj/src/main/res/drawable-xhdpi/phone.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/search_dark.9.png b/TMessagesProj/src/main/res/drawable-xhdpi/search_dark.9.png new file mode 100644 index 00000000..fcb8ced7 Binary files /dev/null and b/TMessagesProj/src/main/res/drawable-xhdpi/search_dark.9.png differ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/search_dark_activated.9.png b/TMessagesProj/src/main/res/drawable-xhdpi/search_dark_activated.9.png new file mode 100644 index 00000000..cd2456c1 Binary files /dev/null and b/TMessagesProj/src/main/res/drawable-xhdpi/search_dark_activated.9.png differ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/search_light.9.png b/TMessagesProj/src/main/res/drawable-xhdpi/search_light.9.png index 2514e223..71be4da7 100644 Binary files a/TMessagesProj/src/main/res/drawable-xhdpi/search_light.9.png and b/TMessagesProj/src/main/res/drawable-xhdpi/search_light.9.png differ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/search_light_activated.9.png b/TMessagesProj/src/main/res/drawable-xhdpi/search_light_activated.9.png index 8413643c..ce495c02 100644 Binary files a/TMessagesProj/src/main/res/drawable-xhdpi/search_light_activated.9.png and b/TMessagesProj/src/main/res/drawable-xhdpi/search_light_activated.9.png differ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/tooltip.png b/TMessagesProj/src/main/res/drawable-xhdpi/tooltip.png deleted file mode 100755 index 4e2da555..00000000 Binary files a/TMessagesProj/src/main/res/drawable-xhdpi/tooltip.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/top_pane.9.png b/TMessagesProj/src/main/res/drawable-xhdpi/top_pane.9.png deleted file mode 100644 index b3ea8d1b..00000000 Binary files a/TMessagesProj/src/main/res/drawable-xhdpi/top_pane.9.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/top_pane_custom.9.png b/TMessagesProj/src/main/res/drawable-xhdpi/top_pane_custom.9.png deleted file mode 100644 index 962909f8..00000000 Binary files a/TMessagesProj/src/main/res/drawable-xhdpi/top_pane_custom.9.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/call.png b/TMessagesProj/src/main/res/drawable-xxhdpi/call.png deleted file mode 100755 index dea70f73..00000000 Binary files a/TMessagesProj/src/main/res/drawable-xxhdpi/call.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/check_blue.png b/TMessagesProj/src/main/res/drawable-xxhdpi/check_blue.png new file mode 100755 index 00000000..d01961fa Binary files /dev/null and b/TMessagesProj/src/main/res/drawable-xxhdpi/check_blue.png differ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/greydivider.9.png b/TMessagesProj/src/main/res/drawable-xxhdpi/greydivider.9.png new file mode 100644 index 00000000..ef001a3d Binary files /dev/null and b/TMessagesProj/src/main/res/drawable-xxhdpi/greydivider.9.png differ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/greydivider.png b/TMessagesProj/src/main/res/drawable-xxhdpi/greydivider.png deleted file mode 100755 index f6b2b94d..00000000 Binary files a/TMessagesProj/src/main/res/drawable-xxhdpi/greydivider.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/greydivider_bottom.9.png b/TMessagesProj/src/main/res/drawable-xxhdpi/greydivider_bottom.9.png new file mode 100644 index 00000000..1d72587a Binary files /dev/null and b/TMessagesProj/src/main/res/drawable-xxhdpi/greydivider_bottom.9.png differ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_back_grey.png b/TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_back_grey.png new file mode 100755 index 00000000..06104d81 Binary files /dev/null and b/TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_back_grey.png differ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_done.png b/TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_done.png deleted file mode 100644 index e2915f83..00000000 Binary files a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_done.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_done_gray.png b/TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_done_gray.png deleted file mode 100755 index 4ff3b63b..00000000 Binary files a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_ab_done_gray.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_directory.png b/TMessagesProj/src/main/res/drawable-xxhdpi/ic_directory.png old mode 100644 new mode 100755 index 91b4d6cb..6fbc4045 Binary files a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_directory.png and b/TMessagesProj/src/main/res/drawable-xxhdpi/ic_directory.png differ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_external_storage.png b/TMessagesProj/src/main/res/drawable-xxhdpi/ic_external_storage.png old mode 100644 new mode 100755 index 44304c6c..c924710a Binary files a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_external_storage.png and b/TMessagesProj/src/main/res/drawable-xxhdpi/ic_external_storage.png differ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_msg_btn_cross.png b/TMessagesProj/src/main/res/drawable-xxhdpi/ic_msg_btn_cross.png deleted file mode 100644 index 17cd802f..00000000 Binary files a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_msg_btn_cross.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_msg_btn_cross_custom.png b/TMessagesProj/src/main/res/drawable-xxhdpi/ic_msg_btn_cross_custom.png deleted file mode 100644 index 23945858..00000000 Binary files a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_msg_btn_cross_custom.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_profile_send_message.png b/TMessagesProj/src/main/res/drawable-xxhdpi/ic_profile_send_message.png deleted file mode 100755 index 76270c85..00000000 Binary files a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_profile_send_message.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_send_disabled.png b/TMessagesProj/src/main/res/drawable-xxhdpi/ic_send_disabled.png deleted file mode 100755 index 633bad32..00000000 Binary files a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_send_disabled.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_storage.png b/TMessagesProj/src/main/res/drawable-xxhdpi/ic_storage.png old mode 100644 new mode 100755 index a19c0aa8..0c75f96f Binary files a/TMessagesProj/src/main/res/drawable-xxhdpi/ic_storage.png and b/TMessagesProj/src/main/res/drawable-xxhdpi/ic_storage.png differ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/p2r_progress.png b/TMessagesProj/src/main/res/drawable-xxhdpi/p2r_progress.png deleted file mode 100644 index 919933bf..00000000 Binary files a/TMessagesProj/src/main/res/drawable-xxhdpi/p2r_progress.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/p2r_progress_custom.png b/TMessagesProj/src/main/res/drawable-xxhdpi/p2r_progress_custom.png deleted file mode 100644 index 8448e133..00000000 Binary files a/TMessagesProj/src/main/res/drawable-xxhdpi/p2r_progress_custom.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/phone.png b/TMessagesProj/src/main/res/drawable-xxhdpi/phone.png deleted file mode 100755 index 4d899437..00000000 Binary files a/TMessagesProj/src/main/res/drawable-xxhdpi/phone.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/tooltip.png b/TMessagesProj/src/main/res/drawable-xxhdpi/tooltip.png deleted file mode 100755 index e02e62b5..00000000 Binary files a/TMessagesProj/src/main/res/drawable-xxhdpi/tooltip.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/top_pane.9.png b/TMessagesProj/src/main/res/drawable-xxhdpi/top_pane.9.png deleted file mode 100644 index 30b768df..00000000 Binary files a/TMessagesProj/src/main/res/drawable-xxhdpi/top_pane.9.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable-xxhdpi/top_pane_custom.9.png b/TMessagesProj/src/main/res/drawable-xxhdpi/top_pane_custom.9.png deleted file mode 100644 index e72232bd..00000000 Binary files a/TMessagesProj/src/main/res/drawable-xxhdpi/top_pane_custom.9.png and /dev/null differ diff --git a/TMessagesProj/src/main/res/drawable/chat_incoming_text_states.xml b/TMessagesProj/src/main/res/drawable/chat_incoming_text_states.xml deleted file mode 100644 index aff66023..00000000 --- a/TMessagesProj/src/main/res/drawable/chat_incoming_text_states.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/chat_outgoing_text_states.xml b/TMessagesProj/src/main/res/drawable/chat_outgoing_text_states.xml deleted file mode 100644 index d06b071c..00000000 --- a/TMessagesProj/src/main/res/drawable/chat_outgoing_text_states.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/fast_thumb.xml b/TMessagesProj/src/main/res/drawable/fast_thumb.xml deleted file mode 100644 index 79b0792b..00000000 --- a/TMessagesProj/src/main/res/drawable/fast_thumb.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/gray_button.xml b/TMessagesProj/src/main/res/drawable/gray_button.xml deleted file mode 100644 index 3ab27aed..00000000 --- a/TMessagesProj/src/main/res/drawable/gray_button.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/launch_button_states.xml b/TMessagesProj/src/main/res/drawable/launch_button_states.xml deleted file mode 100644 index b9581e53..00000000 --- a/TMessagesProj/src/main/res/drawable/launch_button_states.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/messages_list_divider.xml b/TMessagesProj/src/main/res/drawable/messages_list_divider.xml deleted file mode 100644 index 87dd7c21..00000000 --- a/TMessagesProj/src/main/res/drawable/messages_list_divider.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/messages_list_divider2.xml b/TMessagesProj/src/main/res/drawable/messages_list_divider2.xml deleted file mode 100644 index 42b348a2..00000000 --- a/TMessagesProj/src/main/res/drawable/messages_list_divider2.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/photo_progress.xml b/TMessagesProj/src/main/res/drawable/photo_progress.xml deleted file mode 100644 index e0635bdd..00000000 --- a/TMessagesProj/src/main/res/drawable/photo_progress.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/photo_progress_chat.xml b/TMessagesProj/src/main/res/drawable/photo_progress_chat.xml deleted file mode 100644 index 37f07f52..00000000 --- a/TMessagesProj/src/main/res/drawable/photo_progress_chat.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/drawable/progress_chat.xml b/TMessagesProj/src/main/res/drawable/progress_chat.xml deleted file mode 100644 index 0656b5e8..00000000 --- a/TMessagesProj/src/main/res/drawable/progress_chat.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/layout-ar/contact_add_layout.xml b/TMessagesProj/src/main/res/layout-ar/contact_add_layout.xml deleted file mode 100644 index 1fc9c018..00000000 --- a/TMessagesProj/src/main/res/layout-ar/contact_add_layout.xml +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/layout-ar/document_item.xml b/TMessagesProj/src/main/res/layout-ar/document_item.xml deleted file mode 100644 index 96d3d776..00000000 --- a/TMessagesProj/src/main/res/layout-ar/document_item.xml +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/layout-ar/launch_layout_tablet.xml b/TMessagesProj/src/main/res/layout-ar/launch_layout_tablet.xml deleted file mode 100644 index a86e2e18..00000000 --- a/TMessagesProj/src/main/res/layout-ar/launch_layout_tablet.xml +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/layout/chat_header_enc_layout.xml b/TMessagesProj/src/main/res/layout/chat_header_enc_layout.xml deleted file mode 100644 index 66a9281e..00000000 --- a/TMessagesProj/src/main/res/layout/chat_header_enc_layout.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/layout/chat_header_layout.xml b/TMessagesProj/src/main/res/layout/chat_header_layout.xml deleted file mode 100644 index 35e9b977..00000000 --- a/TMessagesProj/src/main/res/layout/chat_header_layout.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/layout/chat_layout.xml b/TMessagesProj/src/main/res/layout/chat_layout.xml index 57c147fb..a37e137c 100644 --- a/TMessagesProj/src/main/res/layout/chat_layout.xml +++ b/TMessagesProj/src/main/res/layout/chat_layout.xml @@ -19,7 +19,7 @@ android:paddingBottom="2dp" android:paddingLeft="7dp" android:paddingRight="7dp" - android:textSize="14dp" + android:textSize="16dp" android:id="@+id/searchEmptyView" android:layout_gravity="center"/> @@ -77,32 +77,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/layout/document_item.xml b/TMessagesProj/src/main/res/layout/document_item.xml deleted file mode 100644 index f2511bce..00000000 --- a/TMessagesProj/src/main/res/layout/document_item.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/layout/document_select_layout.xml b/TMessagesProj/src/main/res/layout/document_select_layout.xml index e1b4db3a..9576e591 100644 --- a/TMessagesProj/src/main/res/layout/document_select_layout.xml +++ b/TMessagesProj/src/main/res/layout/document_select_layout.xml @@ -19,7 +19,7 @@ android:layout_height="match_parent" android:textColor="#808080" android:gravity="center" - android:textSize="24dp" + android:textSize="20dp" android:id="@+id/searchEmptyView" android:visibility="gone" android:layout_gravity="top"/> diff --git a/TMessagesProj/src/main/res/layout/empty_layout.xml b/TMessagesProj/src/main/res/layout/empty_layout.xml deleted file mode 100644 index 26e058fd..00000000 --- a/TMessagesProj/src/main/res/layout/empty_layout.xml +++ /dev/null @@ -1,5 +0,0 @@ - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/layout/group_create_final_layout.xml b/TMessagesProj/src/main/res/layout/group_create_final_layout.xml deleted file mode 100644 index 8f2b4089..00000000 --- a/TMessagesProj/src/main/res/layout/group_create_final_layout.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/TMessagesProj/src/main/res/layout/language_select_layout.xml b/TMessagesProj/src/main/res/layout/language_select_layout.xml deleted file mode 100644 index d14c2951..00000000 --- a/TMessagesProj/src/main/res/layout/language_select_layout.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/layout/launch_layout_tablet.xml b/TMessagesProj/src/main/res/layout/launch_layout_tablet.xml deleted file mode 100644 index 740ed46a..00000000 --- a/TMessagesProj/src/main/res/layout/launch_layout_tablet.xml +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMessagesProj/src/main/res/layout/media_layout.xml b/TMessagesProj/src/main/res/layout/media_layout.xml index e29bce34..04b9f3a8 100644 --- a/TMessagesProj/src/main/res/layout/media_layout.xml +++ b/TMessagesProj/src/main/res/layout/media_layout.xml @@ -25,7 +25,7 @@ android:layout_height="match_parent" android:textColor="#808080" android:gravity="center" - android:textSize="24dp" + android:textSize="20dp" android:id="@+id/searchEmptyView" android:visibility="gone"/> diff --git a/TMessagesProj/src/main/res/layout/messages_list.xml b/TMessagesProj/src/main/res/layout/messages_list.xml index 5309106a..b051134b 100644 --- a/TMessagesProj/src/main/res/layout/messages_list.xml +++ b/TMessagesProj/src/main/res/layout/messages_list.xml @@ -14,18 +14,33 @@ android:dividerHeight="0px" android:animationCache="false"/> - + android:visibility="gone"> + + + + + + diff --git a/TMessagesProj/src/main/res/layout/popup_notification_layout.xml b/TMessagesProj/src/main/res/layout/popup_notification_layout.xml index 6a5a3ab6..0bc24ab7 100644 --- a/TMessagesProj/src/main/res/layout/popup_notification_layout.xml +++ b/TMessagesProj/src/main/res/layout/popup_notification_layout.xml @@ -19,140 +19,147 @@ android:layout_marginRight="12dp" android:id="@+id/popup_container"> - + android:id="@+id/chat_compose_panel" + android:background="@drawable/compose_panel" + android:orientation="horizontal"> - - - - - + android:layout_width="0dp" + android:layout_weight="1"> - + - + android:layout_gravity="bottom" + android:id="@+id/chat_text_edit" + android:layout_marginTop="2dp" + android:maxLines="2" + android:textSize="18dp" + android:textColorHint="#909090" + android:ems="10" + android:imeOptions="flagNoExtractUi" + android:inputType="textCapSentences|textMultiLine" + android:maxLength="16384" + android:layout_marginLeft="52dp" + android:layout_marginRight="2dp" + android:layout_marginBottom="4dp" + android:paddingBottom="10dp" + android:paddingTop="4dp" + android:textCursorDrawable="@null" + android:textColor="#000000"/> - + + + + + + + + + + + android:paddingLeft="13dp" + android:orientation="horizontal" + android:background="#ffffffff"> - + - + - + - + - + - - - - - + android:layout_gravity="bottom" + android:layout_marginTop="2dp"> - + + + + + + + diff --git a/TMessagesProj/src/main/res/layout/popup_text_layout.xml b/TMessagesProj/src/main/res/layout/popup_text_layout.xml index 8f949a75..02358aac 100644 --- a/TMessagesProj/src/main/res/layout/popup_text_layout.xml +++ b/TMessagesProj/src/main/res/layout/popup_text_layout.xml @@ -19,6 +19,7 @@ android:layout_height="wrap_content" android:textSize="16dp" android:textColor="#ff000000" + android:textColorLink="#ff000000" android:id="@+id/message_text" android:gravity="center" android:layout_gravity="center"/> diff --git a/TMessagesProj/src/main/res/raw/sound_a.wav b/TMessagesProj/src/main/res/raw/sound_a.wav deleted file mode 100644 index c6b95a1e..00000000 Binary files a/TMessagesProj/src/main/res/raw/sound_a.wav and /dev/null differ diff --git a/TMessagesProj/src/main/res/values/colors.xml b/TMessagesProj/src/main/res/values/colors.xml index 3636d32c..9b1c746d 100755 --- a/TMessagesProj/src/main/res/values/colors.xml +++ b/TMessagesProj/src/main/res/values/colors.xml @@ -1,9 +1,6 @@ #6633B5E5 - #ffd6e4ef - #ff000000 - #ffffffff #dcdcdc #ff54759e \ No newline at end of file diff --git a/TMessagesProj/src/main/res/values/dimens.xml b/TMessagesProj/src/main/res/values/dimens.xml deleted file mode 100644 index 47c82246..00000000 --- a/TMessagesProj/src/main/res/values/dimens.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - 16dp - 16dp - diff --git a/TMessagesProj/src/main/res/values/strings.xml b/TMessagesProj/src/main/res/values/strings.xml index 07152d99..c4c38251 100644 --- a/TMessagesProj/src/main/res/values/strings.xml +++ b/TMessagesProj/src/main/res/values/strings.xml @@ -28,16 +28,13 @@ Last name (optional) Cancel registration - Chats - Search - New messages Settings Contacts New Group yesterday No results No chats yet... - Start messaging by pressing the\ncompose button in the top right corner\nor tap the menu button for more options. + Start messaging by pressing the\nnew message button in the bottom right corner\nor tap the menu button for more options. Waiting for network... Connecting... Updating... @@ -47,16 +44,15 @@ Exchanging encryption keys... %s joined your secret chat. You joined the secret chat. - Clear History + Clear history Delete and exit + Delete chat Hidden Name Select Chat Tap and hold to view %1$s is using an older version of Telegram, so secret photos will be shown in compatibility mode.\n\nOnce %2$s updates Telegram, photos with timers for 1 minute or less will start working in \'Tap and hold to view\' mode, and you will be notified whenever the other party takes a screenshot. - CONVERSATIONS MESSAGES - Broadcast List New Broadcast List Enter list name You created a broadcast list @@ -75,10 +71,10 @@ External Storage System Root SD Card + Folder invisible typing... - Attach is typing... are typing... Got a question\nabout Telegram? @@ -88,18 +84,13 @@ Video Document No messages here yet... - View Photo - View Location - Play Video Forwarded message From No recent Message - Type message - Download - Selected: %d - SHARE MY CONTACT INFO - ADD TO CONTACTS + Message + Share my contact + Add to contacts %s invited you to join a secret chat. You have invited %s to join a secret chat. Secret chats: @@ -116,8 +107,6 @@ Apply localization file Unsupported attachment - Secret chat requested - Secret chat started %1$s set the self-destruct timer to %2$s You set the self-destruct timer to %1$s %1$s disabled the self-destruct timer @@ -160,21 +149,21 @@ today at yesterday at online - offline last seen last seen Invite Friends GLOBAL SEARCH + last seen recently + last seen within a week + last seen within a month + last seen a long time ago Send message to... Enter group name Group name - ALL CONTACTS %1$d/%2$d members - Enter group name Shared Media - Group Info Settings Add member Delete and leave group @@ -192,11 +181,8 @@ Work Other Main - Contact Info - PHONE Start Secret Chat An error occurred. - Secret Chat Encryption Key Self-Destruct Timer Off @@ -240,9 +226,7 @@ Undo all custom notification settings for all your contacts and groups Notifications and Sounds Blocked Users - Save Incoming Photos Log out - YOUR FIRST AND LAST NAME No sound Default Support @@ -266,7 +250,6 @@ 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 First name Last name LED Color @@ -289,9 +272,7 @@ Edit name No shared media yet - Cancel Download - My location Map Satellite Hybrid @@ -325,6 +306,8 @@ Delete your account? Never Change who can see your Last Seen time. + Who can see your Last Seen time? + Add exceptions Important: you won\'t be able to see Last Seen times for people with whom you don\'t share your Last Seen time. Approximate last seen will be shown instead (recently, within a week, witin a month). Always Share With Never Share With @@ -334,9 +317,9 @@ Never Share Never share with users... Add Users - Add %1$s to this list? Sorry, too many requests. Unable to change privacy settings now, please wait. - + Logs out all devices except for this one. + Tap and hold on user to delete. Edit Video Original Video @@ -360,7 +343,6 @@ From camera From gallery Delete photo - Open photo Set OK @@ -403,10 +385,8 @@ You don\'t have applications that can handle the file type \'%1$s\', please install one to continue This user does not have Telegram yet, send an invitation? Are you sure? - Add contact? Add %1$s to the group?\n\nNumber of last messages to forward: Forward messages to %1$s? - Delete this chat? Send messages to %1$s? Are you sure you want to log out? Are you sure you want to terminate all other sessions? @@ -418,7 +398,7 @@ Are you sure you want to delete this contact? Are you sure you want to start a secret chat? Are you sure you want to cancel registration? - forward from my name + Are you sure you want to clear history? Send messages to %1$s? Forward messages to %1$s? Sorry, this feature is currently not available in your country. @@ -505,6 +485,18 @@ %1$d weeks %1$d weeks %1$d weeks + %1$d months + %1$d month + %1$d months + %1$d months + %1$d months + %1$d months + %1$d years + %1$d year + %1$d years + %1$d years + %1$d years + %1$d years %1$d users %1$d user %1$d users