From 797e1ebde30e82fbaf831f177604e53ccee7bf74 Mon Sep 17 00:00:00 2001
From: NekoInverter <42698724+NekoInverter@users.noreply.github.com>
Date: Wed, 8 Apr 2020 16:16:23 +0800
Subject: [PATCH] Allow show tabs on forward
---
.../java/org/telegram/ui/DialogsActivity.java | 31 +++++++++++--------
.../java/tw/nekomimi/nekogram/NekoConfig.java | 11 +++++++
.../nekogram/NekoSettingsActivity.java | 14 +++++++--
.../src/main/res/values/strings_neko.xml | 1 +
4 files changed, 42 insertions(+), 15 deletions(-)
diff --git a/TMessagesProj/src/main/java/org/telegram/ui/DialogsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/DialogsActivity.java
index 880be64a9..0dff262a4 100644
--- a/TMessagesProj/src/main/java/org/telegram/ui/DialogsActivity.java
+++ b/TMessagesProj/src/main/java/org/telegram/ui/DialogsActivity.java
@@ -614,9 +614,9 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
} else if (child == filterTabsView) {
childTop = actionBar.getMeasuredHeight();
} else if (child == searchListView || child == searchEmptyView) {
- childTop = (onlySelect ? 0 : actionBar.getMeasuredHeight()) + topPadding;
+ childTop = (onlySelect && !(initialDialogsType == 3 && NekoConfig.showTabsOnForward) ? 0 : actionBar.getMeasuredHeight()) + topPadding;
} else if (child instanceof ViewPage) {
- if (!onlySelect) {
+ if ((initialDialogsType == 3 && NekoConfig.showTabsOnForward) || !onlySelect) {
if (filterTabsView != null && filterTabsView.getVisibility() == VISIBLE) {
childTop = AndroidUtilities.dp(44);
} else {
@@ -954,7 +954,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
@Override
protected void onMeasure(int widthSpec, int heightSpec) {
int t = 0;
- if (!onlySelect) {
+ if ((initialDialogsType == 3 && NekoConfig.showTabsOnForward) || !onlySelect) {
ignoreLayout = true;
if (filterTabsView != null && filterTabsView.getVisibility() == VISIBLE) {
t = ActionBar.getCurrentActionBarHeight() + (actionBar.getOccupyStatusBar() ? AndroidUtilities.statusBarHeight : 0);
@@ -987,7 +987,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
}
checkIfAdapterValid();
super.onMeasure(widthSpec, heightSpec);
- if (!onlySelect) {
+ if ((initialDialogsType == 3 && NekoConfig.showTabsOnForward) || !onlySelect) {
if (appliedPaddingTop != t && viewPages != null && viewPages.length > 1) {
viewPages[1].setTranslationX(viewPages[0].getMeasuredWidth());
}
@@ -1646,7 +1646,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
actionBar.setSupportsHolidayImage(true);
}
}
- if (!onlySelect) {
+ if ((initialDialogsType == 3 && NekoConfig.showTabsOnForward) || !onlySelect) {
actionBar.setAddToContainer(false);
actionBar.setCastShadows(false);
actionBar.setClipContent(true);
@@ -1656,7 +1656,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
scrollToTop();
});
- if (initialDialogsType == 0 && folderId == 0 && !onlySelect) {
+ if ((initialDialogsType == 3 && NekoConfig.showTabsOnForward) || initialDialogsType == 0 && folderId == 0 && !onlySelect) {
scrimPaint = new Paint() {
@Override
public void setAlpha(int a) {
@@ -2098,7 +2098,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 && NekoConfig.showTabsOnForward) || (folderId == 0 && initialDialogsType == 0 && !onlySelect) ? 2 : 1;
viewPages = new ViewPage[pagesCount];
for (int a = 0; a < pagesCount; a++) {
final ViewPage viewPage = new ViewPage(context) {
@@ -2837,7 +2837,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
if (filterTabsView != null) {
contentView.addView(filterTabsView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 44));
}
- if (!onlySelect) {
+ if ((initialDialogsType == 3 && NekoConfig.showTabsOnForward) || !onlySelect) {
contentView.addView(actionBar, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
}
@@ -2888,7 +2888,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
RecyclerView.Adapter currentAdapter = viewPages[a].listView.getAdapter();
if (viewPages[a].selectedType == Integer.MAX_VALUE) {
- viewPages[a].dialogsType = 0;
+ viewPages[a].dialogsType = initialDialogsType;
viewPages[a].listView.updatePullState();
} else {
MessagesController.DialogFilter filter = getMessagesController().dialogFilters.get(viewPages[a].selectedType);
@@ -2983,14 +2983,14 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
}
if (viewPages[0].selectedType != Integer.MAX_VALUE) {
viewPages[0].selectedType = Integer.MAX_VALUE;
- viewPages[0].dialogsAdapter.setDialogsType(0);
- viewPages[0].dialogsType = 0;
+ viewPages[0].dialogsAdapter.setDialogsType(initialDialogsType);
+ viewPages[0].dialogsType = initialDialogsType;
viewPages[0].dialogsAdapter.notifyDataSetChanged();
}
viewPages[1].setVisibility(View.GONE);
viewPages[1].selectedType = Integer.MAX_VALUE;
- viewPages[1].dialogsAdapter.setDialogsType(0);
- viewPages[1].dialogsType = 0;
+ viewPages[1].dialogsAdapter.setDialogsType(initialDialogsType);
+ viewPages[1].dialogsType = initialDialogsType;
viewPages[1].dialogsAdapter.notifyDataSetChanged();
filterTabsView.setVisibility(View.GONE);
for (int a = 0; a < viewPages.length; a++) {
@@ -5597,4 +5597,9 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
return arrayList.toArray(new ThemeDescription[0]);
}
+
+ @Override
+ public boolean isSwipeBackEnabled(MotionEvent event) {
+ return !((initialDialogsType == 3 && NekoConfig.showTabsOnForward) && viewPages[0].selectedType != filterTabsView.getFirstTabId());
+ }
}
diff --git a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/NekoConfig.java b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/NekoConfig.java
index b67714166..ff706ce9e 100644
--- a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/NekoConfig.java
+++ b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/NekoConfig.java
@@ -46,6 +46,7 @@ public class NekoConfig {
public static boolean forceTablet = false;
public static boolean openArchiveOnPull = false;
public static boolean avatarAsDrawerBackground = false;
+ public static boolean showTabsOnForward = false;
public static int nameOrder = 1;
public static int eventType = 0;
public static boolean newYear = false;
@@ -93,6 +94,7 @@ public class NekoConfig {
editor.putBoolean("showHiddenFeature", showHiddenFeature);
editor.putBoolean("avatarAsDrawerBackground", avatarAsDrawerBackground);
editor.putBoolean("useSystemEmoji", useSystemEmoji);
+ editor.putBoolean("showTabsOnForward", showTabsOnForward);
editor.putFloat("stickerSize", stickerSize);
editor.putInt("typeface", typeface);
editor.putInt("nameOrder", nameOrder);
@@ -148,6 +150,7 @@ public class NekoConfig {
hideKeyboardOnChatScroll = preferences.getBoolean("hideKeyboardOnChatScroll", false);
avatarAsDrawerBackground = preferences.getBoolean("avatarAsDrawerBackground", false);
useSystemEmoji = preferences.getBoolean("useSystemEmoji", SharedConfig.useSystemEmoji);
+ showTabsOnForward = preferences.getBoolean("showTabsOnForward", showTabsOnForward);
configLoaded = true;
}
}
@@ -426,4 +429,12 @@ public class NekoConfig {
editor.putBoolean("useSystemEmoji", useSystemEmoji);
editor.commit();
}
+
+ public static void toggleShowTabsOnForward() {
+ showTabsOnForward = !showTabsOnForward;
+ SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("nekoconfig", Activity.MODE_PRIVATE);
+ SharedPreferences.Editor editor = preferences.edit();
+ editor.putBoolean("showTabsOnForward", showTabsOnForward);
+ editor.commit();
+ }
}
diff --git a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/NekoSettingsActivity.java b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/NekoSettingsActivity.java
index 3e84ebc3e..909eff063 100644
--- a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/NekoSettingsActivity.java
+++ b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/NekoSettingsActivity.java
@@ -93,6 +93,7 @@ public class NekoSettingsActivity extends BaseFragment {
private int forceTabletRow;
private int openArchiveOnPullRow;
private int avatarAsDrawerBackgroundRow;
+ private int showTabsOnForwardRow;
private int eventTypeRow;
private int newYearRow;
private int actionBarDecorationRow;
@@ -510,6 +511,11 @@ public class NekoSettingsActivity extends BaseFragment {
if (view instanceof TextCheckCell) {
((TextCheckCell) view).setChecked(NekoConfig.avatarAsDrawerBackground);
}
+ } else if (position == showTabsOnForwardRow) {
+ NekoConfig.toggleShowTabsOnForward();
+ if (view instanceof TextCheckCell) {
+ ((TextCheckCell) view).setChecked(NekoConfig.showTabsOnForward);
+ }
}
});
@@ -552,6 +558,7 @@ public class NekoSettingsActivity extends BaseFragment {
forceTabletRow = rowCount++;
openArchiveOnPullRow = rowCount++;
avatarAsDrawerBackgroundRow = rowCount++;
+ showTabsOnForwardRow = rowCount++;
nameOrderRow = rowCount++;
eventTypeRow = NekoConfig.showHiddenFeature ? rowCount++ : -1;
newYearRow = NekoConfig.showHiddenFeature ? rowCount++ : -1;
@@ -1040,6 +1047,8 @@ public class NekoSettingsActivity extends BaseFragment {
textCell.setTextAndCheck(LocaleController.getString("HideKeyboardOnChatScroll", R.string.HideKeyboardOnChatScroll), NekoConfig.hideKeyboardOnChatScroll, true);
} else if (position == avatarAsDrawerBackgroundRow) {
textCell.setTextAndCheck(LocaleController.getString("UseAvatarAsDrawerBackground", R.string.UseAvatarAsDrawerBackground), NekoConfig.avatarAsDrawerBackground, true);
+ } else if (position == showTabsOnForwardRow) {
+ textCell.setTextAndCheck(LocaleController.getString("ShowTabsOnForward", R.string.ShowTabsOnForward), NekoConfig.showTabsOnForward, true);
}
break;
}
@@ -1078,7 +1087,8 @@ public class NekoSettingsActivity extends BaseFragment {
position == unlimitedFavedStickersRow || position == messageMenuRow || position == deleteAccountRow ||
position == translationProviderRow || position == smoothKeyboardRow || position == pauseMusicOnRecordRow ||
position == disablePhotoSideActionRow || position == unlimitedPinnedDialogsRow || position == openArchiveOnPullRow ||
- position == connection2Row || position == hideKeyboardOnChatScrollRow || position == avatarAsDrawerBackgroundRow;
+ position == connection2Row || position == hideKeyboardOnChatScrollRow || position == avatarAsDrawerBackgroundRow ||
+ position == showTabsOnForwardRow;
}
@Override
@@ -1132,7 +1142,7 @@ public class NekoSettingsActivity extends BaseFragment {
position == saveCacheToPrivateDirectoryRow || position == unlimitedFavedStickersRow ||
position == disableFilteringRow || position == smoothKeyboardRow || position == pauseMusicOnRecordRow ||
position == disablePhotoSideActionRow || position == unlimitedPinnedDialogsRow || position == openArchiveOnPullRow ||
- position == hideKeyboardOnChatScrollRow || position == avatarAsDrawerBackgroundRow) {
+ position == hideKeyboardOnChatScrollRow || position == avatarAsDrawerBackgroundRow || position == showTabsOnForwardRow) {
return 3;
} else if (position == settingsRow || position == connectionRow || position == chatRow || position == experimentRow) {
return 4;
diff --git a/TMessagesProj/src/main/res/values/strings_neko.xml b/TMessagesProj/src/main/res/values/strings_neko.xml
index 8d83a3019..b1e91dda2 100644
--- a/TMessagesProj/src/main/res/values/strings_neko.xml
+++ b/TMessagesProj/src/main/res/values/strings_neko.xml
@@ -85,4 +85,5 @@
Send Stickers
Send GIFs
Use avatar as drawer background
+ Show tabs on forward
\ No newline at end of file