diff --git a/TMessagesProj/src/main/java/org/telegram/ui/DialogsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/DialogsActivity.java index 93df35417..70de00a25 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/DialogsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/DialogsActivity.java @@ -769,7 +769,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. if (child instanceof DatabaseMigrationHint) { int contentWidthSpec = View.MeasureSpec.makeMeasureSpec(widthSize, View.MeasureSpec.EXACTLY); int h = View.MeasureSpec.getSize(heightMeasureSpec) + keyboardSize; - int contentHeightSpec = View.MeasureSpec.makeMeasureSpec(Math.max(AndroidUtilities.dp(10), h - inputFieldHeight + AndroidUtilities.dp(2) - actionBar.getMeasuredHeight()), View.MeasureSpec.EXACTLY); + int contentHeightSpec = View.MeasureSpec.makeMeasureSpec(Math.max(AndroidUtilities.dp(10), h - inputFieldHeight + AndroidUtilities.dp(2) - (onlySelect && initialDialogsType != 3 ? 0 : actionBar.getMeasuredHeight()) - topPadding) - (searchTabsView == null ? 0 : AndroidUtilities.dp(44)), View.MeasureSpec.EXACTLY); child.measure(contentWidthSpec, contentHeightSpec); } else if (child instanceof ViewPage) { int contentWidthSpec = View.MeasureSpec.makeMeasureSpec(widthSize, View.MeasureSpec.EXACTLY); @@ -777,7 +777,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. if (filterTabsView != null && filterTabsView.getVisibility() == VISIBLE) { h = heightSize - inputFieldHeight + AndroidUtilities.dp(2) - AndroidUtilities.dp(44) - topPadding; } else { - h = heightSize - inputFieldHeight + AndroidUtilities.dp(2) - (onlySelect ? 0 : actionBar.getMeasuredHeight()) - topPadding; + h = heightSize - inputFieldHeight + AndroidUtilities.dp(2) - ((onlySelect && initialDialogsType != 3) ? 0 : actionBar.getMeasuredHeight()) - topPadding; } if (filtersTabAnimator != null && filterTabsView != null && filterTabsView.getVisibility() == VISIBLE) { @@ -793,8 +793,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. } else if (child == searchViewPager) { searchViewPager.setTranslationY(0); int contentWidthSpec = View.MeasureSpec.makeMeasureSpec(widthSize, View.MeasureSpec.EXACTLY); - int h = View.MeasureSpec.getSize(heightMeasureSpec) + keyboardSize; - int contentHeightSpec = View.MeasureSpec.makeMeasureSpec(Math.max(AndroidUtilities.dp(10), h - inputFieldHeight + AndroidUtilities.dp(2) - (onlySelect ? 0 : actionBar.getMeasuredHeight()) - topPadding) - (searchTabsView == null ? 0 : AndroidUtilities.dp(44)), View.MeasureSpec.EXACTLY); + int contentHeightSpec = View.MeasureSpec.makeMeasureSpec(Math.max(AndroidUtilities.dp(10), heightSize - inputFieldHeight + AndroidUtilities.dp(2) - (onlySelect && initialDialogsType != 3 ? 0 : actionBar.getMeasuredHeight()) - topPadding), View.MeasureSpec.EXACTLY); child.measure(contentWidthSpec, contentHeightSpec); child.setPivotX(child.getMeasuredWidth() / 2); } else if (commentView != null && commentView.isPopupView(child)) { @@ -884,11 +883,11 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. } else if (child == filterTabsView || child == searchTabsView || child == filtersView) { childTop = actionBar.getMeasuredHeight(); } else if (child == searchViewPager) { - childTop = (onlySelect ? 0 : actionBar.getMeasuredHeight()) + topPadding + (searchTabsView == null ? 0 : AndroidUtilities.dp(44)); + childTop = (onlySelect && initialDialogsType != 3 ? 0 : actionBar.getMeasuredHeight()) + topPadding + (searchTabsView == null ? 0 : AndroidUtilities.dp(44)); } else if (child instanceof DatabaseMigrationHint) { childTop = actionBar.getMeasuredHeight(); } else if (child instanceof ViewPage) { - if (!onlySelect) { + if (initialDialogsType == 3 || !onlySelect) { if (filterTabsView != null && filterTabsView.getVisibility() == VISIBLE) { childTop = AndroidUtilities.dp(44); } else { @@ -1312,26 +1311,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. @Override protected void onMeasure(int widthSpec, int heightSpec) { int t = 0; - if (!onlySelect) { - if (filterTabsView != null && filterTabsView.getVisibility() == VISIBLE) { - t = AndroidUtilities.dp(44); - } else { - t = actionBar.getMeasuredHeight(); - } - } - - int pos = parentPage.layoutManager.findFirstVisibleItemPosition(); - if (pos != RecyclerView.NO_POSITION && !dialogsListFrozen && parentPage.itemTouchhelper.isIdle()) { - RecyclerView.ViewHolder holder = parentPage.listView.findViewHolderForAdapterPosition(pos); - if (holder != null) { - int top = holder.itemView.getTop(); - - ignoreLayout = true; - parentPage.layoutManager.scrollToPositionWithOffset(pos, (int) (top - lastListPadding + scrollAdditionalOffset)); - ignoreLayout = false; - } - } - if (!onlySelect) { + if (initialDialogsType == 3 || !onlySelect) { ignoreLayout = true; if (filterTabsView != null && filterTabsView.getVisibility() == VISIBLE) { t = ActionBar.getCurrentActionBarHeight() + (actionBar.getOccupyStatusBar() ? AndroidUtilities.statusBarHeight : 0); @@ -1355,7 +1335,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. } checkIfAdapterValid(); super.onMeasure(widthSpec, heightSpec); - if (!onlySelect) { + if (initialDialogsType == 3 || !onlySelect) { if (appliedPaddingTop != t && viewPages != null && viewPages.length > 1) { viewPages[1].setTranslationX(viewPages[0].getMeasuredWidth()); } @@ -2039,16 +2019,17 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. AndroidUtilities.runOnUIThread(() -> Theme.createChatResources(context, false)); ActionBarMenu menu = actionBar.createMenu(); + doneItem = new ActionBarMenuItem(context, null, Theme.getColor(Theme.key_actionBarDefaultSelector), Theme.getColor(Theme.key_actionBarDefaultIcon), true); + doneItem.setText(LocaleController.getString("Done", R.string.Done).toUpperCase()); + actionBar.addView(doneItem, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.TOP | Gravity.RIGHT, 0, 0, 10, 0)); + doneItem.setOnClickListener(v -> { + filterTabsView.setIsEditing(false); + showDoneItem(false); + }); + doneItem.setAlpha(0.0f); + doneItem.setVisibility(View.GONE); + if (!onlySelect && searchString == null && folderId == 0) { - doneItem = new ActionBarMenuItem(context, null, Theme.getColor(Theme.key_actionBarDefaultSelector), Theme.getColor(Theme.key_actionBarDefaultIcon), true); - doneItem.setText(LocaleController.getString("Done", R.string.Done).toUpperCase()); - actionBar.addView(doneItem, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.TOP | Gravity.RIGHT, 0, 0, 10, 0)); - doneItem.setOnClickListener(v -> { - filterTabsView.setIsEditing(false); - showDoneItem(false); - }); - doneItem.setAlpha(0.0f); - doneItem.setVisibility(View.GONE); proxyDrawable = new ProxyDrawable(context); proxyItem = menu.addItem(2, proxyDrawable); proxyItem.setContentDescription(LocaleController.getString("ProxySettings", R.string.ProxySettings)); @@ -2197,7 +2178,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. actionBar.setSupportsHolidayImage(true); } } - if (!onlySelect) { + if (initialDialogsType == 3 || !onlySelect) { actionBar.setAddToContainer(false); actionBar.setCastShadows(false); actionBar.setClipContent(true); @@ -2209,7 +2190,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. scrollToTop(); }); - if (initialDialogsType == 0 && folderId == 0 && !onlySelect && TextUtils.isEmpty(searchString)) { + if (initialDialogsType == 3 || initialDialogsType == 0 && folderId == 0 && !onlySelect && TextUtils.isEmpty(searchString)) { scrimPaint = new Paint() { @Override public void setAlpha(int a) { @@ -2590,7 +2571,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. ContentView contentView = new ContentView(context); fragmentView = contentView; - int pagesCount = folderId == 0 && initialDialogsType == 0 && !onlySelect ? 2 : 1; + int pagesCount = initialDialogsType == 3 || (folderId == 0 && initialDialogsType == 0 && !onlySelect) ? 2 : 1; viewPages = new ViewPage[pagesCount]; for (int a = 0; a < pagesCount; a++) { final ViewPage viewPage = new ViewPage(context) { @@ -3537,12 +3518,8 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. if (filterTabsView != null) { contentView.addView(filterTabsView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 44)); } - if (!onlySelect) { - final FrameLayout.LayoutParams layoutParams = LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT); - if (inPreviewMode && Build.VERSION.SDK_INT >= 21) { - layoutParams.topMargin = AndroidUtilities.statusBarHeight; - } - contentView.addView(actionBar, layoutParams); + if (initialDialogsType == 3 || !onlySelect) { + contentView.addView(actionBar, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT)); } if (searchString == null && initialDialogsType == 0) { @@ -6688,7 +6665,13 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. layoutManager.scrollToPositionWithOffset(1, 0); } - if (viewPages[a].dialogsAdapter.isDataSetChanged() || args.length > 0) { + if (viewPages[a].selectedType >= 0 && viewPages[a].selectedType < getMessagesController().dialogFilters.size() && + getMessagesController().dialogFilters.get(viewPages[a].selectedType) != null && + getMessagesController().selectedDialogFilter[viewPages[a].dialogsType == 8 ? 1 : 0] != null && + getMessagesController().dialogFilters.get(viewPages[a].selectedType).id != getMessagesController().selectedDialogFilter[viewPages[a].dialogsType == 8 ? 1 : 0].id) { + getMessagesController().selectDialogFilter(getMessagesController().dialogFilters.get(viewPages[a].selectedType), viewPages[a].dialogsType == 8 ? 1 : 0); + viewPages[a].dialogsAdapter.notifyDataSetChanged(); + } else if (viewPages[a].dialogsAdapter.isDataSetChanged() || args.length > 0) { viewPages[a].dialogsAdapter.updateHasHints(); int newItemCount = viewPages[a].dialogsAdapter.getItemCount(); if (newItemCount == 1 && oldItemCount == 1 && viewPages[a].dialogsAdapter.getItemViewType(0) == 5) { @@ -8273,5 +8256,11 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter. } return ColorUtils.calculateLuminance(color) > 0.7f; } + + @Override + public boolean isSwipeBackEnabled(MotionEvent event) { + return !(initialDialogsType == 3 && viewPages[0].selectedType != filterTabsView.getFirstTabId()); + } + }