Remove account avatar from stories header (use bottom menu for account switch)
This commit is contained in:
parent
24676bba9d
commit
1a7c4d72f3
2 changed files with 179 additions and 48 deletions
|
|
@ -602,6 +602,8 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
|
|||
private ChatActivityEnterView commentView;
|
||||
private ChatActivityEnterView.SendButton writeButton;
|
||||
private ActionBarMenuItem switchItem;
|
||||
private FrameLayout mainTabsAvatarButton;
|
||||
private BackupImageView mainTabsAvatarImage;
|
||||
|
||||
private RectF rect = new RectF();
|
||||
private Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
|
||||
|
|
@ -1611,8 +1613,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
|
|||
float pHalf = Utilities.clamp(p / 0.5f, 1f, 0f);
|
||||
dialogStoriesCell.setClipTop(0);
|
||||
if (!hasStories && animateToHasStories) {
|
||||
dialogStoriesCell.setTranslationY(-dp(DialogStoriesCell.HEIGHT_IN_DP) - dp(8));
|
||||
dialogStoriesCell.setProgressToCollapse(1f);
|
||||
dialogStoriesCell.setTranslationY(-dp(DialogStoriesCell.HEIGHT_IN_DP) - dp(8)); dialogStoriesCell.setProgressToCollapse(1f);
|
||||
containersAlpha = 1f - progressToDialogStoriesCell;
|
||||
} else {
|
||||
dialogStoriesCell.setTranslationY(Math.max(scrollYOffset, -getMaxScrollYOffsetWithoutSearch()) + storiesYOffset + storiesOverscroll / 2f - dp(8));
|
||||
|
|
@ -1666,6 +1667,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
|
|||
actionBar.getAdditionalSubTitleOverlayContainer().setAlpha(titleAlpha);
|
||||
actionBar.getAdditionalSubTitleOverlayContainer().setVisibility(titleAlpha > 0 ? View.VISIBLE : View.INVISIBLE);
|
||||
}
|
||||
updateMainTabsAvatarPosition();
|
||||
}
|
||||
|
||||
public static float viewOffset = 0.0f;
|
||||
|
|
@ -2942,8 +2944,8 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
|
|||
}
|
||||
|
||||
BirthdayController.getInstance(currentAccount).check();
|
||||
additionNavigationBarHeight = hasMainTabs && !NekoConfig.hideBottomNavigationBar ? dp(MAIN_TABS_HEIGHT_WITH_MARGINS) : 0;
|
||||
additionFloatingButtonOffset = hasMainTabs && !NekoConfig.hideBottomNavigationBar ? dp(DialogsActivity.MAIN_TABS_HEIGHT + DialogsActivity.MAIN_TABS_MARGIN) : 0;
|
||||
additionNavigationBarHeight = hasMainTabs && !NekoConfig.isBottomNavigationBarHidden() ? dp(MAIN_TABS_HEIGHT_WITH_MARGINS) : 0;
|
||||
additionFloatingButtonOffset = hasMainTabs && !NekoConfig.isBottomNavigationBarHidden() ? dp(DialogsActivity.MAIN_TABS_HEIGHT + DialogsActivity.MAIN_TABS_MARGIN) : 0;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
@ -3167,8 +3169,8 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
|
|||
|
||||
@Override
|
||||
public View createView(final Context context) {
|
||||
additionNavigationBarHeight = hasMainTabs && !NekoConfig.hideBottomNavigationBar ? dp(MAIN_TABS_HEIGHT_WITH_MARGINS) : 0;
|
||||
additionFloatingButtonOffset = hasMainTabs && !NekoConfig.hideBottomNavigationBar ? dp(DialogsActivity.MAIN_TABS_HEIGHT + DialogsActivity.MAIN_TABS_MARGIN) : 0;
|
||||
additionNavigationBarHeight = hasMainTabs && !NekoConfig.isBottomNavigationBarHidden() ? dp(MAIN_TABS_HEIGHT_WITH_MARGINS) : 0;
|
||||
additionFloatingButtonOffset = hasMainTabs && !NekoConfig.isBottomNavigationBarHidden() ? dp(DialogsActivity.MAIN_TABS_HEIGHT + DialogsActivity.MAIN_TABS_MARGIN) : 0;
|
||||
searching = false;
|
||||
searchWas = false;
|
||||
wasDrawn = false;
|
||||
|
|
@ -3188,12 +3190,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
|
|||
ActionBarMenu menu = actionBar.createMenu();
|
||||
searchItem = menu.addItem(0, R.drawable.outline_header_search).setIsSearchField(true, false);
|
||||
searchItem.setOnClickListener(v -> {
|
||||
showSearch(true, false, true);
|
||||
fragmentSearchFieldWatcher.toggleSearch(true);
|
||||
AndroidUtilities.runOnUIThread(() -> {
|
||||
fragmentSearchField.editText.requestFocus();
|
||||
AndroidUtilities.showKeyboard(fragmentSearchField.editText);
|
||||
}, 100);
|
||||
openSearch();
|
||||
|
||||
/*
|
||||
AnimatorSet animatorSet = new AnimatorSet();
|
||||
|
|
@ -4737,28 +4734,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
|
|||
|
||||
floatingButton3 = new FragmentFloatingButton(context, resourceProvider);
|
||||
contentView.addView(floatingButton3, FragmentFloatingButton.createDefaultLayoutParams());
|
||||
floatingButton3.setOnClickListener(v -> {
|
||||
if (parentLayout != null && parentLayout.isInPreviewMode()) {
|
||||
finishPreviewFragment();
|
||||
return;
|
||||
}
|
||||
if (initialDialogsType == DIALOGS_TYPE_WIDGET) {
|
||||
if (delegate == null || selectedDialogs.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
ArrayList<MessagesStorage.TopicKey> topicKeys = new ArrayList<>();
|
||||
for (int i = 0; i < selectedDialogs.size(); i++) {
|
||||
topicKeys.add(MessagesStorage.TopicKey.of(selectedDialogs.get(i), 0));
|
||||
}
|
||||
delegate.didSelectDialogs(DialogsActivity.this, topicKeys, null, false, notify, scheduleDate, scheduleRepeatPeriod, null);
|
||||
} else {
|
||||
if (MessagesController.getInstance(currentAccount).isFrozen()) {
|
||||
AccountFrozenAlert.show(currentAccount);
|
||||
return;
|
||||
}
|
||||
openWriteContacts();
|
||||
}
|
||||
});
|
||||
floatingButton3.setOnClickListener(v -> performComposeClick());
|
||||
|
||||
if (!isArchive() && initialDialogsType == DIALOGS_TYPE_DEFAULT) {
|
||||
if (MessagesController.getInstance(currentAccount).getMainSettings().getBoolean("storyhint", true)) {
|
||||
|
|
@ -5592,6 +5568,9 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
|
|||
updateFilterTabs(true, false);
|
||||
rightSlidingDialogContainer.setOpenProgress(0f);
|
||||
contentView.addView(dialogStoriesCell, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, DialogStoriesCell.HEIGHT_IN_DP));
|
||||
if (hasMainTabs && !onlySelect && folderId == 0 && searchString == null) {
|
||||
// avatar removed: account switching is in bottom menu
|
||||
}
|
||||
contentView.addView(rightSlidingDialogContainer, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT));
|
||||
|
||||
dialogsActivityStatusLayout = new DialogsActivityStatusLayout(context);
|
||||
|
|
@ -8773,7 +8752,11 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
|
|||
}
|
||||
|
||||
private void updateFloatingButtonVisibility(boolean animated) {
|
||||
final boolean isVisible = !(onlySelect && initialDialogsType != 10 || folderId != 0 || inPreviewMode || (searching && !onlySelect) || floatingButtonHidden);
|
||||
boolean isVisible = !(onlySelect && initialDialogsType != 10 || folderId != 0 || inPreviewMode || (searching && !onlySelect) || floatingButtonHidden);
|
||||
if (hasMainTabs && !NekoConfig.isBottomNavigationBarHidden()) {
|
||||
// Compose action is hosted inside the bottom tabs bar
|
||||
isVisible = false;
|
||||
}
|
||||
|
||||
if (floatingButton3 != null) {
|
||||
floatingButton3.setButtonVisible(isVisible, animated);
|
||||
|
|
@ -10493,6 +10476,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
|
|||
}
|
||||
}
|
||||
updateStatus(UserConfig.getInstance(account).getCurrentUser(), true);
|
||||
updateMainTabsAvatar();
|
||||
} else if (id == NotificationCenter.appDidLogout) {
|
||||
dialogsLoaded[currentAccount] = false;
|
||||
} else if (id == NotificationCenter.encryptedChatUpdated) {
|
||||
|
|
@ -11504,6 +11488,20 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
|
|||
commentView.setFieldText(first.caption == null ? "" : first.caption);
|
||||
}
|
||||
|
||||
public void openSearch() {
|
||||
if (searchItem == null || searchIsShowed) {
|
||||
return;
|
||||
}
|
||||
showSearch(true, false, true);
|
||||
fragmentSearchFieldWatcher.toggleSearch(true);
|
||||
AndroidUtilities.runOnUIThread(() -> {
|
||||
if (fragmentSearchField != null && fragmentSearchField.editText != null) {
|
||||
fragmentSearchField.editText.requestFocus();
|
||||
AndroidUtilities.showKeyboard(fragmentSearchField.editText);
|
||||
}
|
||||
}, 100);
|
||||
}
|
||||
|
||||
public void setSearchString(String string) {
|
||||
searchString = string;
|
||||
}
|
||||
|
|
@ -13340,6 +13338,29 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
|
|||
}, 0);
|
||||
}
|
||||
|
||||
public void performComposeClick() {
|
||||
if (parentLayout != null && parentLayout.isInPreviewMode()) {
|
||||
finishPreviewFragment();
|
||||
return;
|
||||
}
|
||||
if (initialDialogsType == DIALOGS_TYPE_WIDGET) {
|
||||
if (delegate == null || selectedDialogs.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
ArrayList<MessagesStorage.TopicKey> topicKeys = new ArrayList<>();
|
||||
for (int i = 0; i < selectedDialogs.size(); i++) {
|
||||
topicKeys.add(MessagesStorage.TopicKey.of(selectedDialogs.get(i), 0));
|
||||
}
|
||||
delegate.didSelectDialogs(DialogsActivity.this, topicKeys, null, false, notify, scheduleDate, scheduleRepeatPeriod, null);
|
||||
} else {
|
||||
if (MessagesController.getInstance(currentAccount).isFrozen()) {
|
||||
AccountFrozenAlert.show(currentAccount);
|
||||
return;
|
||||
}
|
||||
openWriteContacts();
|
||||
}
|
||||
}
|
||||
|
||||
private void openWriteContacts() {
|
||||
Bundle args = new Bundle();
|
||||
args.putBoolean("destroyAfterSelect", true);
|
||||
|
|
@ -13525,7 +13546,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
|
|||
});
|
||||
});
|
||||
io.addGap();
|
||||
if (NekoConfig.hideBottomNavigationBar) {
|
||||
if (NekoConfig.isBottomNavigationBarHidden()) {
|
||||
io.add(R.drawable.left_status_profile, getString(R.string.MyProfile), () -> {
|
||||
Bundle args = new Bundle();
|
||||
args.putLong("user_id", getUserConfig().getClientUserId());
|
||||
|
|
@ -13545,7 +13566,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
|
|||
Bundle args = new Bundle();
|
||||
presentFragment(new GroupCreateActivity(args));
|
||||
});
|
||||
if (NekoConfig.hideBottomNavigationBar) {
|
||||
if (NekoConfig.isBottomNavigationBarHidden()) {
|
||||
io.add(R.drawable.msg_contacts, getString(R.string.Contacts), () -> {
|
||||
Bundle args = new Bundle();
|
||||
args.putBoolean("needPhonebook", true);
|
||||
|
|
@ -13588,12 +13609,12 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
|
|||
}
|
||||
}
|
||||
}
|
||||
if (NekoConfig.hideBottomNavigationBar || getUserConfig().showCallsTab) {
|
||||
if (NekoConfig.isBottomNavigationBarHidden() || getUserConfig().showCallsTab) {
|
||||
io.add(R.drawable.msg_settings_old, getString(R.string.Settings), () -> {
|
||||
presentFragment(new SettingsActivity());
|
||||
});
|
||||
}
|
||||
if (NekoConfig.hideBottomNavigationBar) {
|
||||
if (NekoConfig.isBottomNavigationBarHidden()) {
|
||||
PopupHelper.fillAccountSelectorMenu(io, currentAccount, getParentActivity(), resourceProvider);
|
||||
}
|
||||
|
||||
|
|
@ -13890,6 +13911,18 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
|
|||
checkUi_itemSpeedVisibility();
|
||||
checkUi_itemPasscodeVisibility();
|
||||
checkUi_itemSearchVisibility();
|
||||
checkUi_mainTabsAvatarVisibility();
|
||||
}
|
||||
|
||||
private void checkUi_mainTabsAvatarVisibility() {
|
||||
if (mainTabsAvatarButton == null) {
|
||||
return;
|
||||
}
|
||||
final float factor1 = 1f - animatorSearchVisible.getFloatValue();
|
||||
final float factor2 = 1f - getRightSlidingProgress();
|
||||
final float factor3 = 1f - animatorDoneButtonVisible.getFloatValue();
|
||||
final float factor = factor1 * factor2 * factor3;
|
||||
FragmentFloatingButton.setAnimatedVisibility(mainTabsAvatarButton, factor);
|
||||
}
|
||||
|
||||
private void checkUi_itemBackButtonVisibility() {
|
||||
|
|
@ -13940,7 +13973,8 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
|
|||
}
|
||||
|
||||
private void checkUi_itemSearchVisibility() {
|
||||
final float factor0 = isSupportSearch() ? 1 : 0;
|
||||
// Hide the top-right search icon in MainTabs mode (search lives in bottom menu)
|
||||
final float factor0 = (isSupportSearch() && !(hasMainTabs && !NekoConfig.isBottomNavigationBarHidden())) ? 1 : 0;
|
||||
final float factor1 = animatorSearchButtonVisible.getFloatValue();
|
||||
final float factor2 = 1f - getRightSlidingProgress();
|
||||
final float factor3 = 1f - animatorDoneButtonVisible.getFloatValue();
|
||||
|
|
@ -14003,7 +14037,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
|
|||
iBlur3PositionActionBar.set(0, -additionalList, fragmentView.getMeasuredWidth(), lerp(actionBarHeight, actionBarHeightSearch, animatorSearchVisible.getFloatValue()) + additionalList );
|
||||
|
||||
boolean hasBottomBlur = false;
|
||||
if (hasMainTabs && !NekoConfig.hideBottomNavigationBar) {
|
||||
if (hasMainTabs && !NekoConfig.isBottomNavigationBarHidden()) {
|
||||
iBlur3PositionMainTabs.set(0, mainTabTop, fragmentView.getMeasuredWidth(), mainTabBottom);
|
||||
iBlur3PositionMainTabs.inset(0, LiteMode.isEnabled(LiteMode.FLAG_LIQUID_GLASS) ? 0 : -dp(48));
|
||||
|
||||
|
|
@ -14109,7 +14143,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
|
|||
return 0;
|
||||
}
|
||||
float height = dp(FILTER_TABS_HEIGHT + 7);
|
||||
if (!floatingButton && NekoConfig.hideBottomNavigationBar) {
|
||||
if (!floatingButton && NekoConfig.isBottomNavigationBarHidden()) {
|
||||
height += dp(7);
|
||||
}
|
||||
height *= filterTabsView.getAlpha();
|
||||
|
|
@ -14123,7 +14157,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
|
|||
float bottom = navigationBarHeight + additionNavigationBarHeight;
|
||||
if (commentView != null && chatInputViewsContainer != null) {
|
||||
bottom += lerp(0, dp(9) + chatInputViewsContainer.getInputBubbleHeight() + dp(2), chatInputViewsContainer.getAlpha());
|
||||
} else if (!NekoConfig.hideBottomNavigationBar) {
|
||||
} else if (!NekoConfig.isBottomNavigationBarHidden()) {
|
||||
bottom -= dp(MAIN_TABS_MARGIN);
|
||||
}
|
||||
filterTabsView.setTranslationY(-bottom);
|
||||
|
|
@ -14168,6 +14202,51 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
|
|||
}
|
||||
}
|
||||
|
||||
private void createMainTabsAvatar(Context context, ViewGroup parent) {
|
||||
if (mainTabsAvatarButton != null) {
|
||||
return;
|
||||
}
|
||||
mainTabsAvatarButton = new FrameLayout(context);
|
||||
mainTabsAvatarButton.setBackground(Theme.createSelectorDrawable(getThemedColor(Theme.key_actionBarActionModeDefaultSelector), 1, dp(20)));
|
||||
mainTabsAvatarButton.setContentDescription(getString(R.string.MainTabsProfile));
|
||||
|
||||
mainTabsAvatarImage = new BackupImageView(context);
|
||||
mainTabsAvatarImage.setRoundRadius(dp(18));
|
||||
mainTabsAvatarButton.addView(mainTabsAvatarImage, LayoutHelper.createFrame(36, 36, Gravity.CENTER));
|
||||
|
||||
mainTabsAvatarButton.setOnClickListener(this::openAccountSelector);
|
||||
mainTabsAvatarButton.setOnLongClickListener(this::openAccountSelector);
|
||||
|
||||
// Added on top of the stories cell so it stays visible at the top-left.
|
||||
parent.addView(mainTabsAvatarButton, LayoutHelper.createFrame(40, 40, Gravity.LEFT | Gravity.TOP, 8, 0, 0, 0));
|
||||
mainTabsAvatarButton.post(this::updateMainTabsAvatarPosition);
|
||||
|
||||
updateMainTabsAvatar();
|
||||
}
|
||||
|
||||
private void updateMainTabsAvatarPosition() {
|
||||
if (mainTabsAvatarButton == null || dialogStoriesCell == null) {
|
||||
return;
|
||||
}
|
||||
// Center the avatar vertically within the stories row and follow its translationY
|
||||
final float storiesTop = dialogStoriesCell.getTop() + dialogStoriesCell.getTranslationY();
|
||||
final float storiesHeight = dp(DialogStoriesCell.HEIGHT_IN_DP);
|
||||
final float top = storiesTop + (storiesHeight - dp(40)) / 2f;
|
||||
mainTabsAvatarButton.setTranslationY(top);
|
||||
}
|
||||
|
||||
private void updateMainTabsAvatar() {
|
||||
if (mainTabsAvatarImage == null) {
|
||||
return;
|
||||
}
|
||||
final TLRPC.User user = getUserConfig().getCurrentUser();
|
||||
final AvatarDrawable avatarDrawable = new AvatarDrawable();
|
||||
avatarDrawable.setInfo(currentAccount, user);
|
||||
final Drawable thumb = user != null && user.photo != null && user.photo.strippedBitmap != null ? user.photo.strippedBitmap : avatarDrawable;
|
||||
mainTabsAvatarImage.getImageReceiver().setCurrentAccount(currentAccount);
|
||||
mainTabsAvatarImage.setImage(ImageLocation.getForUserOrChat(currentAccount, user, ImageLocation.TYPE_SMALL), "50_50", ImageLocation.getForUserOrChat(user, ImageLocation.TYPE_STRIPPED), "50_50", thumb, user);
|
||||
}
|
||||
|
||||
public LinearLayout accountView(int account, boolean selected) {
|
||||
final LinearLayout btn = new LinearLayout(getContext());
|
||||
btn.setOrientation(LinearLayout.HORIZONTAL);
|
||||
|
|
@ -14236,6 +14315,29 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
|
|||
});
|
||||
|
||||
ItemOptions o = ItemOptions.makeOptions(this, view);
|
||||
if (UserConfig.getActivatedAccountsCount() < UserConfig.MAX_ACCOUNT_COUNT) {
|
||||
o.add(R.drawable.msg_addbot, getString(R.string.AddAccount), () -> {
|
||||
o.dismiss();
|
||||
int freeAccounts = 0;
|
||||
Integer availableAccount = null;
|
||||
for (int a = UserConfig.MAX_ACCOUNT_COUNT - 1; a >= 0; a--) {
|
||||
if (!UserConfig.getInstance(a).isClientActivated()) {
|
||||
freeAccounts++;
|
||||
if (availableAccount == null) {
|
||||
availableAccount = a;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!UserConfig.hasPremiumOnAccounts()) {
|
||||
freeAccounts -= (UserConfig.MAX_ACCOUNT_COUNT - UserConfig.MAX_ACCOUNT_DEFAULT_COUNT);
|
||||
}
|
||||
if (freeAccounts > 0 && availableAccount != null) {
|
||||
presentFragment(new LoginActivity(availableAccount));
|
||||
} else if (!UserConfig.hasPremiumOnAccounts()) {
|
||||
showDialog(new LimitReachedBottomSheet(this, getContext(), TYPE_ACCOUNTS, currentAccount, null));
|
||||
}
|
||||
});
|
||||
}
|
||||
if (accountNumbers.size() > 0) {
|
||||
if (o.getItemsCount() > 0) o.addGap();
|
||||
for (int acc : accountNumbers) {
|
||||
|
|
@ -14274,7 +14376,13 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
|
|||
o.setViewAdditionalOffsets(-dp(4), -dp(4), -dp(4), -dp(4));
|
||||
o.setScrimViewBackground(bg);
|
||||
o.translate(0, -dp(4));
|
||||
o.setGravity(Gravity.RIGHT);
|
||||
boolean anchorOnLeft = false;
|
||||
if (view != null && fragmentView != null) {
|
||||
final int[] loc = new int[2];
|
||||
view.getLocationInWindow(loc);
|
||||
anchorOnLeft = loc[0] + view.getWidth() / 2f < fragmentView.getWidth() / 2f;
|
||||
}
|
||||
o.setGravity(anchorOnLeft ? Gravity.LEFT : Gravity.RIGHT);
|
||||
o.show();
|
||||
|
||||
return true;
|
||||
|
|
|
|||
|
|
@ -577,6 +577,10 @@ public class PeerStoriesView extends SizeNotifierFrameLayout implements Notifica
|
|||
|
||||
@Override
|
||||
protected void dispatchDraw(Canvas canvas) {
|
||||
if (!isActive) {
|
||||
headerView.backupImageView.getImageReceiver().setVisible(true, true);
|
||||
}
|
||||
|
||||
if (!unsupported) {
|
||||
if (playerSharedScope.renderView != null || storyAreasView != null && (storyAreasView.hasSelectedForScale() || storyAreasView.parentHighlightScaleAlpha.isInProgress())) {
|
||||
invalidate();
|
||||
|
|
@ -4222,6 +4226,7 @@ public class PeerStoriesView extends SizeNotifierFrameLayout implements Notifica
|
|||
isPremiumBlocked = !UserConfig.getInstance(currentAccount).isPremium() && DialogObject.isPremiumBlocked(r);
|
||||
starsPriceBlocked = DialogObject.getMessagesStarsPrice(r);
|
||||
avatarDrawable.setInfo(currentAccount, user);
|
||||
headerView.backupImageView.getImageReceiver().setForUserOrChat(user, avatarDrawable);
|
||||
setTitle(true, dialogId, false);
|
||||
} else {
|
||||
isSelf = false;
|
||||
|
|
@ -4238,6 +4243,7 @@ public class PeerStoriesView extends SizeNotifierFrameLayout implements Notifica
|
|||
isPremiumBlocked = isGroup && !ChatObject.canSendPlain(chat);
|
||||
starsPriceBlocked = MessagesController.getInstance(currentAccount).getSendPaidMessagesStars(dialogId);
|
||||
avatarDrawable.setInfo(currentAccount, chat);
|
||||
headerView.backupImageView.getImageReceiver().setForUserOrChat(chat, avatarDrawable);
|
||||
setTitle(true, dialogId, false);
|
||||
}
|
||||
if (isActive && (isSelf || isChannel)) {
|
||||
|
|
@ -5160,6 +5166,7 @@ public class PeerStoriesView extends SizeNotifierFrameLayout implements Notifica
|
|||
if (headerView.radialProgress != null) {
|
||||
headerView.radialProgress.setProgress(currentStory.uploadingStory.progress, false);
|
||||
}
|
||||
headerView.backupImageView.invalidate();
|
||||
} else if (!animateSubtitle) {
|
||||
headerView.progressToUploading = 0;
|
||||
}
|
||||
|
|
@ -6296,6 +6303,7 @@ public class PeerStoriesView extends SizeNotifierFrameLayout implements Notifica
|
|||
updatePreloadImages();
|
||||
muteIconView.setAnimation(sharedResources.muteDrawable);
|
||||
isActive = true;
|
||||
headerView.backupImageView.getImageReceiver().setVisible(true, true);
|
||||
if (currentStory.storyItem != null) {
|
||||
FileLog.d("StoryViewer displayed story dialogId=" + dialogId + " storyId=" + currentStory.storyItem.id + " " + currentStory.getMediaDebugString());
|
||||
}
|
||||
|
|
@ -6329,6 +6337,7 @@ public class PeerStoriesView extends SizeNotifierFrameLayout implements Notifica
|
|||
}
|
||||
|
||||
public void reset() {
|
||||
headerView.backupImageView.getImageReceiver().setVisible(true, true);
|
||||
if (changeBoundAnimator != null) {
|
||||
chatActivityEnterView.reset();
|
||||
chatActivityEnterView.setAlpha(1f - outT);
|
||||
|
|
@ -6606,6 +6615,7 @@ public class PeerStoriesView extends SizeNotifierFrameLayout implements Notifica
|
|||
|
||||
public static class PeerHeaderView extends FrameLayout {
|
||||
|
||||
public BackupImageView backupImageView;
|
||||
public SimpleTextView titleView;
|
||||
private TextView[] subtitleView = new TextView[2];
|
||||
RadialProgress radialProgress;
|
||||
|
|
@ -6619,6 +6629,18 @@ public class PeerStoriesView extends SizeNotifierFrameLayout implements Notifica
|
|||
public PeerHeaderView(@NonNull Context context, StoryItemHolder holder) {
|
||||
super(context);
|
||||
this.storyItemHolder = holder;
|
||||
backupImageView = new BackupImageView(context) {
|
||||
@Override
|
||||
protected void onDraw(Canvas canvas) {
|
||||
if (imageReceiver.getVisible()) {
|
||||
AndroidUtilities.rectTmp.set(0, 0, getMeasuredWidth(), getMeasuredHeight());
|
||||
drawUploadingProgress(canvas, AndroidUtilities.rectTmp, true, 1f);
|
||||
}
|
||||
super.onDraw(canvas);
|
||||
}
|
||||
};
|
||||
backupImageView.setRoundRadius(dp(16));
|
||||
addView(backupImageView, LayoutHelper.createFrame(32, 32, 0, 12, 2, 0, 0));
|
||||
setClipChildren(false);
|
||||
|
||||
titleView = new SimpleTextView(context) {
|
||||
|
|
@ -6636,7 +6658,7 @@ public class PeerStoriesView extends SizeNotifierFrameLayout implements Notifica
|
|||
// titleView.setSingleLine(true);
|
||||
// titleView.setEllipsize(TextUtils.TruncateAt.END);
|
||||
NotificationCenter.listenEmojiLoading(titleView);
|
||||
addView(titleView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, 0, 12, 0, 86, 0));
|
||||
addView(titleView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, 0, 54, 0, 86, 0));
|
||||
|
||||
for (int a = 0; a < 2; ++a) {
|
||||
subtitleView[a] = new TextView(context);
|
||||
|
|
@ -6646,7 +6668,7 @@ public class PeerStoriesView extends SizeNotifierFrameLayout implements Notifica
|
|||
subtitleView[a].setEllipsize(TextUtils.TruncateAt.MIDDLE);
|
||||
subtitleView[a].setTextColor(Color.WHITE);
|
||||
subtitleView[a].setPadding(dp(3), 0, dp(3), dp(1));
|
||||
addView(subtitleView[a], LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, 0, 9, 18, 83, 0));
|
||||
addView(subtitleView[a], LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, 0, 51, 18, 83, 0));
|
||||
}
|
||||
|
||||
titleView.setTextColor(Color.WHITE);
|
||||
|
|
@ -6736,10 +6758,11 @@ public class PeerStoriesView extends SizeNotifierFrameLayout implements Notifica
|
|||
}
|
||||
}
|
||||
if (radialProgress == null) {
|
||||
radialProgress = new RadialProgress(null);
|
||||
radialProgress = new RadialProgress(backupImageView);
|
||||
radialProgress.setBackground(null, true, false);
|
||||
}
|
||||
radialProgress.setDiff(0);
|
||||
ImageReceiver imageReceiver = backupImageView.getImageReceiver();
|
||||
float offset = AndroidUtilities.dp(3) - AndroidUtilities.dp(6) * (1f - progressToUploading);
|
||||
radialProgress.setProgressRect(
|
||||
(int) (rect.left - offset), (int) (rect.top - offset),
|
||||
|
|
@ -6751,7 +6774,7 @@ public class PeerStoriesView extends SizeNotifierFrameLayout implements Notifica
|
|||
}
|
||||
if (allowDraw) {
|
||||
if (progressToOpen != 1f) {
|
||||
Paint paint = StoriesUtilities.getUnreadCirclePaint(rect, false);
|
||||
Paint paint = StoriesUtilities.getUnreadCirclePaint(imageReceiver, false);
|
||||
paint.setAlpha((int) (255 * progressToUploading));
|
||||
radialProgress.setPaint(paint);
|
||||
radialProgress.draw(canvas);
|
||||
|
|
|
|||
Loading…
Reference in a new issue