Skip to content

Commit 41ec558

Browse files
committed
增加隐藏聊天标题栏 fix #23
1 parent 206782c commit 41ec558

File tree

4 files changed

+82
-30
lines changed

4 files changed

+82
-30
lines changed

TMessagesProj/src/main/java/org/telegram/ui/ActionBar/ActionBar.java

+22-8
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,8 @@ public boolean canOpenMenu() {
9191
private boolean occupyStatusBar = Build.VERSION.SDK_INT >= 21;
9292
private boolean actionModeVisible;
9393
private boolean addToContainer = true;
94+
95+
private boolean isHide = false;
9496
private boolean clipContent;
9597
private boolean interceptTouches = true;
9698
private boolean forceSkipTouches;
@@ -1195,7 +1197,7 @@ public void requestLayout() {
11951197
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
11961198
int width = MeasureSpec.getSize(widthMeasureSpec);
11971199
int height = MeasureSpec.getSize(heightMeasureSpec);
1198-
int actionBarHeight = getCurrentActionBarHeight();
1200+
int actionBarHeight = getActionBarHeight();
11991201
int actionBarHeightSpec = MeasureSpec.makeMeasureSpec(actionBarHeight, MeasureSpec.EXACTLY);
12001202

12011203
ignoreLayoutRequest = true;
@@ -1334,33 +1336,33 @@ protected void onLayout(boolean changed, int left, int top, int right, int botto
13341336
if (titleTextView[i] != null && titleTextView[i].getVisibility() != GONE) {
13351337
int textTop;
13361338
if (((fromBottom && i == 0) || (!fromBottom && i == 1)) && overlayTitleAnimation && titleAnimationRunning) {
1337-
textTop = (getCurrentActionBarHeight() - titleTextView[i].getTextHeight()) / 2;
1339+
textTop = (getActionBarHeight() - titleTextView[i].getTextHeight()) / 2;
13381340
} else {
13391341
if ((subtitleTextView != null && subtitleTextView.getVisibility() != GONE)) {
1340-
textTop = (getCurrentActionBarHeight() / 2 - titleTextView[i].getTextHeight()) / 2 + AndroidUtilities.dp(!AndroidUtilities.isTablet() && getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE ? 2 : 3);
1342+
textTop = (getActionBarHeight() / 2 - titleTextView[i].getTextHeight()) / 2 + AndroidUtilities.dp(!AndroidUtilities.isTablet() && getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE ? 2 : 3);
13411343
} else {
1342-
textTop = (getCurrentActionBarHeight() - titleTextView[i].getTextHeight()) / 2;
1344+
textTop = (getActionBarHeight() - titleTextView[i].getTextHeight()) / 2;
13431345
}
13441346
}
13451347
titleTextView[i].layout(textLeft, additionalTop + textTop - titleTextView[i].getPaddingTop(), textLeft + titleTextView[i].getMeasuredWidth(), additionalTop + textTop + titleTextView[i].getTextHeight() - titleTextView[i].getPaddingTop() + titleTextView[i].getPaddingBottom());
13461348
}
13471349
}
13481350
if (subtitleTextView != null && subtitleTextView.getVisibility() != GONE) {
1349-
int textTop = getCurrentActionBarHeight() / 2 + (getCurrentActionBarHeight() / 2 - subtitleTextView.getTextHeight()) / 2 - AndroidUtilities.dp(!AndroidUtilities.isTablet() && getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE ? 1 : 1);
1351+
int textTop = getActionBarHeight() / 2 + (getActionBarHeight() / 2 - subtitleTextView.getTextHeight()) / 2 - AndroidUtilities.dp(!AndroidUtilities.isTablet() && getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE ? 1 : 1);
13501352
subtitleTextView.layout(textLeft, additionalTop + textTop, textLeft + subtitleTextView.getMeasuredWidth(), additionalTop + textTop + subtitleTextView.getTextHeight());
13511353
}
13521354

13531355
if (additionalSubtitleTextView != null && additionalSubtitleTextView.getVisibility() != GONE) {
1354-
int textTop = getCurrentActionBarHeight() / 2 + (getCurrentActionBarHeight() / 2 - additionalSubtitleTextView.getTextHeight()) / 2 - AndroidUtilities.dp(!AndroidUtilities.isTablet() && getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE ? 1 : 1);
1356+
int textTop = getActionBarHeight() / 2 + (getActionBarHeight() / 2 - additionalSubtitleTextView.getTextHeight()) / 2 - AndroidUtilities.dp(!AndroidUtilities.isTablet() && getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE ? 1 : 1);
13551357
additionalSubtitleTextView.layout(textLeft, additionalTop + textTop, textLeft + additionalSubtitleTextView.getMeasuredWidth(), additionalTop + textTop + additionalSubtitleTextView.getTextHeight());
13561358
}
13571359

13581360
if (avatarSearchImageView != null) {
13591361
avatarSearchImageView.layout(
13601362
AndroidUtilities.dp(56 + 8),
1361-
additionalTop + (getCurrentActionBarHeight() - avatarSearchImageView.getMeasuredHeight()) / 2,
1363+
additionalTop + (getActionBarHeight() - avatarSearchImageView.getMeasuredHeight()) / 2,
13621364
AndroidUtilities.dp(56 + 8) + avatarSearchImageView.getMeasuredWidth(),
1363-
additionalTop + (getCurrentActionBarHeight() + avatarSearchImageView.getMeasuredHeight()) / 2
1365+
additionalTop + (getActionBarHeight() + avatarSearchImageView.getMeasuredHeight()) / 2
13641366
);
13651367
}
13661368

@@ -1412,6 +1414,14 @@ protected void onLayout(boolean changed, int left, int top, int right, int botto
14121414
}
14131415
}
14141416

1417+
public void setHide(boolean hide) {
1418+
isHide = hide;
1419+
}
1420+
1421+
public boolean isHide() {
1422+
return isHide;
1423+
}
1424+
14151425
public void onMenuButtonPressed() {
14161426
if (isActionModeShowed()) {
14171427
return;
@@ -1620,6 +1630,10 @@ public boolean onTouchEvent(MotionEvent event) {
16201630
}
16211631
return super.onTouchEvent(event) || interceptTouches;
16221632
}
1633+
public int getActionBarHeight() {
1634+
if(isHide) return 0;
1635+
return getCurrentActionBarHeight();
1636+
}
16231637

16241638
public static int getCurrentActionBarHeight() {
16251639
if (AndroidUtilities.isTablet()) {

TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java

+58-21
Original file line numberDiff line numberDiff line change
@@ -1874,7 +1874,7 @@ public void onMessageEditEnd(boolean loading) {
18741874

18751875
@Override
18761876
public void onWindowSizeChanged(int size) {
1877-
if (size < AndroidUtilities.dp(72) + ActionBar.getCurrentActionBarHeight()) {
1877+
if (size < AndroidUtilities.dp(72) + actionBar.getActionBarHeight()) {
18781878
allowStickersPanel = false;
18791879
if (suggestEmojiPanel.getVisibility() == View.VISIBLE && !BuildVars.IS_CHAT_AIR) {
18801880
suggestEmojiPanel.setVisibility(View.INVISIBLE);
@@ -3041,25 +3041,9 @@ public void run(boolean revoke) {
30413041
VoIPHelper.startCall(currentUser, id == video_call, userInfo != null && userInfo.video_calls_available, getParentActivity(), getMessagesController().getUserFull(currentUser.id), getAccountInstance());
30423042
}
30433043
} else if (id == context_clear) {
3044-
3045-
if (messages != null && messages.size() > 0 && (messages.get(0).type != 10)) {
3046-
getMessagesController().clearContext(dialog_id);
3047-
}
3048-
3044+
clearContext();
30493045
} else if (id == undo_context_clear) {
3050-
3051-
if (messages != null && messages.size() > 0) {
3052-
MessageObject messageObject = messages.get(0);
3053-
3054-
if (messageObject.type == 10 && messageObject.messageOwner.action
3055-
instanceof TLRPC.TL_messageActionClearContext) {
3056-
ArrayList<Integer> arr = new ArrayList<>();
3057-
arr.add(messageObject.messageOwner.id);
3058-
//cacheOnly为true则不向服务器发送删除数据
3059-
getMessagesController()
3060-
.deleteMessages(arr, null, null, dialog_id, false, false, true, 0, null);
3061-
}
3062-
}
3046+
unClearContext();
30633047
} else if (id == change_user_ai_parameters) {
30643048
if (avatarContainer != null) {
30653049
avatarContainer.openProfile(true);
@@ -3244,6 +3228,9 @@ public void onLongPress() {
32443228
getConnectionsManager().bindRequestToGuid(req, classGuid);
32453229
} else {
32463230
//添加actionBar内容view
3231+
if(getUserConfig().isHideToolbar) {
3232+
avatarContainer.setVisibility(View.GONE);
3233+
}
32473234
actionBar.addView(avatarContainer, 0, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.LEFT, !inPreviewMode ? 56 : (chatMode == MODE_PINNED ? 10 : 0), 0, 40, 0));
32483235
}
32493236

@@ -7196,6 +7183,9 @@ public void onAllEffectsEnd() {
71967183
};
71977184
//背景模糊配置
71987185
actionBar.setDrawBlurBackground(contentView);
7186+
if(getUserConfig().isHideToolbar) {
7187+
actionBar.setHide(true);
7188+
}
71997189

72007190
if (isTopic) {
72017191
reactionsMentionCount = forumTopic.unread_reactions_count;
@@ -8803,7 +8793,7 @@ public void onAnimationEnd(Animator animation) {
88038793
@Override
88048794
public int getPreviewHeight() {
88058795
if (chatMode == MODE_PINNED && messages.size() == 2) {
8806-
return getHeightForMessage(messages.get(0)) + AndroidUtilities.dp(80) + ActionBar.getCurrentActionBarHeight();
8796+
return getHeightForMessage(messages.get(0)) + AndroidUtilities.dp(80) + actionBar.getActionBarHeight();
88078797
}
88088798
return super.getPreviewHeight();
88098799
}
@@ -13324,6 +13314,7 @@ protected boolean drawChild(Canvas canvas, View child, long drawingTime) {
1332413314

1332513315
@Override
1332613316
protected boolean isActionBarVisible() {
13317+
if(actionBar.isHide()) return false;
1332713318
return actionBar.getVisibility() == VISIBLE;
1332813319
}
1332913320

@@ -23884,6 +23875,21 @@ public void setAutoDeleteHistory(int time, int action) {
2388423875
items.add(LocaleController.getString("Copy", R.string.Copy));
2388523876
options.add(OPTION_COPY);
2388623877
icons.add(R.drawable.msg_copy);
23878+
23879+
if(getUserConfig().isHideToolbar) {
23880+
if(isContextClear) {
23881+
items.add(LocaleController.getString("ContextClear",
23882+
R.string.ContextClear));
23883+
options.add(context_clear);
23884+
icons.add(R.drawable.msg_clear);
23885+
} else {
23886+
items.add(LocaleController.getString("UndoContextClear",
23887+
R.string.UndoContextClear));
23888+
options.add(undo_context_clear);
23889+
icons.add(R.drawable.chats_undo);
23890+
}
23891+
}
23892+
2388723893
}
2388823894
if (!isThreadChat() && chatMode != MODE_SCHEDULED && currentChat != null && (currentChat.has_link || message.hasReplies()) && currentChat.megagroup && message.canViewThread()) {
2388923895
if (message.hasReplies()) {
@@ -25286,7 +25292,7 @@ public void dismiss(boolean animated) {
2528625292
ArrayList<Animator> animators = new ArrayList<>();
2528725293
for (int a = 0; a < actionModeViews.size(); a++) {
2528825294
View view = actionModeViews.get(a);
25289-
view.setPivotY(ActionBar.getCurrentActionBarHeight() / 2);
25295+
view.setPivotY(actionBar.getActionBarHeight() / 2);
2529025296
AndroidUtilities.clearDrawableAnimation(view);
2529125297
animators.add(ObjectAnimator.ofFloat(view, View.SCALE_Y, 0.1f, 1.0f));
2529225298
}
@@ -25823,6 +25829,14 @@ private void processSelectedOption(int option) {
2582325829
undoView.showWithAction(0, UndoView.ACTION_MESSAGE_COPIED, null);
2582425830
break;
2582525831
}
25832+
case context_clear: {
25833+
clearContext();
25834+
break;
25835+
}
25836+
case undo_context_clear: {
25837+
unClearContext();
25838+
break;
25839+
}
2582625840
case OPTION_SHARE_CHAT: {
2582725841
//分享
2582825842
try {
@@ -26435,6 +26449,29 @@ private void processSelectedOption(int option) {
2643526449
closeMenu(!preserveDim);
2643626450
}
2643726451

26452+
private void clearContext() {
26453+
if (messages != null && messages.size() > 0 && (messages.get(0).type != 10)) {
26454+
getMessagesController().clearContext(dialog_id);
26455+
}
26456+
}
26457+
26458+
private void unClearContext() {
26459+
if (messages != null && messages.size() > 0) {
26460+
MessageObject messageObject = messages.get(0);
26461+
26462+
if (messageObject.type == 10 && messageObject.messageOwner.action
26463+
instanceof TLRPC.TL_messageActionClearContext) {
26464+
ArrayList<Integer> arr = new ArrayList<>();
26465+
arr.add(messageObject.messageOwner.id);
26466+
//cacheOnly为true则不向服务器发送删除数据
26467+
getMessagesController()
26468+
.deleteMessages(arr, null, null, dialog_id,
26469+
false, false,
26470+
true, 0, null);
26471+
}
26472+
}
26473+
}
26474+
2643826475
@Override
2643926476
public boolean didSelectDialogs(DialogsActivity fragment, ArrayList<MessagesStorage.TopicKey> dids, CharSequence message, boolean param, TopicsFragment topicsFragment) {
2644026477
if (forwardingMessage == null && selectedMessagesIds[0].size() == 0 && selectedMessagesIds[1].size() == 0) {

TMessagesProj/src/main/java/org/telegram/ui/Components/SizeNotifierFrameLayout.java

+1
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,7 @@ protected void onDraw(Canvas canvas) {
156156
drawable.setAlpha(255);
157157
}
158158
if (drawable instanceof MotionBackgroundDrawable) {
159+
// 配置背景
159160
MotionBackgroundDrawable motionBackgroundDrawable = (MotionBackgroundDrawable) drawable;
160161
if (motionBackgroundDrawable.hasPattern()) {
161162
int actionBarHeight = (isActionBarVisible() ? ActionBar.getCurrentActionBarHeight() : 0) + (Build.VERSION.SDK_INT >= 21 && occupyStatusBar ? AndroidUtilities.statusBarHeight : 0);

TMessagesProj/src/main/java/org/telegram/ui/ThemeActivity.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -699,7 +699,7 @@ private void updateRows(boolean notify) {
699699
// 副标题内容切换
700700
switchSubtitleContentRow = rowCount++;
701701
// 隐藏标题栏
702-
// switchHideToolbarRow = rowCount++;
702+
switchHideToolbarRow = rowCount++;
703703
}
704704

705705
settings2Row = rowCount++;

0 commit comments

Comments
 (0)