Replace phone number with "Set Emoji Status".

This commit is contained in:
John Preston 2022-09-07 20:39:57 +04:00
parent 2215500c9a
commit c00f2f96ec
5 changed files with 28 additions and 37 deletions

View file

@ -17,6 +17,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
"lng_menu_night_mode" = "Night Mode"; "lng_menu_night_mode" = "Night Mode";
"lng_menu_add_account" = "Add Account"; "lng_menu_add_account" = "Add Account";
"lng_menu_activate" = "Activate"; "lng_menu_activate" = "Activate";
"lng_menu_set_status" = "Set Emoji Status";
"lng_disable_notifications_from_tray" = "Disable notifications"; "lng_disable_notifications_from_tray" = "Disable notifications";
"lng_enable_notifications_from_tray" = "Enable notifications"; "lng_enable_notifications_from_tray" = "Enable notifications";

View file

@ -213,7 +213,7 @@ void EmojiStatusPanel::show(
const auto global = button->mapToGlobal(QPoint()); const auto global = button->mapToGlobal(QPoint());
const auto local = parent->mapFromGlobal(global); const auto local = parent->mapFromGlobal(global);
_panel->moveTopRight( _panel->moveTopRight(
local.y() + button->height(), local.y() + button->height() - (st::normalFont->height / 2),
local.x() + button->width() * 3); local.x() + button->width() * 3);
_panel->toggleAnimated(); _panel->toggleAnimated();
} }

View file

@ -114,7 +114,7 @@ mainMenuResetScaleTop: 2px;
mainMenuResetScaleIconLeft: 5px; mainMenuResetScaleIconLeft: 5px;
mainMenuCoverNameLeft: 26px; mainMenuCoverNameLeft: 26px;
mainMenuCoverNameTop: 84px; mainMenuCoverNameTop: 84px;
mainMenuCoverStatusLeft: 24px; mainMenuCoverStatusLeft: mainMenuCoverNameLeft;
mainMenuCoverStatusTop: 103px; mainMenuCoverStatusTop: 103px;
mainMenuPhoneFont: font(12px); mainMenuPhoneFont: font(12px);
mainMenuSkip: 6px; mainMenuSkip: 6px;

View file

@ -40,6 +40,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "boxes/about_box.h" #include "boxes/about_box.h"
#include "ui/boxes/confirm_box.h" #include "ui/boxes/confirm_box.h"
#include "boxes/peer_list_controllers.h" #include "boxes/peer_list_controllers.h"
#include "boxes/premium_preview_box.h"
#include "calls/calls_box_controller.h" #include "calls/calls_box_controller.h"
#include "lang/lang_keys.h" #include "lang/lang_keys.h"
#include "core/click_handler_types.h" #include "core/click_handler_types.h"
@ -339,6 +340,9 @@ MainMenu::MainMenu(
Ui::UserpicButton::Role::Custom, Ui::UserpicButton::Role::Custom,
st::mainMenuUserpic) st::mainMenuUserpic)
, _toggleAccounts(this) , _toggleAccounts(this)
, _setEmojiStatus(this, tr::lng_menu_set_status([](const QString &text) {
return Ui::Text::Link(text);
}))
, _emojiStatusPanel(std::make_unique<Info::Profile::EmojiStatusPanel>()) , _emojiStatusPanel(std::make_unique<Info::Profile::EmojiStatusPanel>())
, _badge(std::make_unique<Info::Profile::Badge>( , _badge(std::make_unique<Info::Profile::Badge>(
this, this,
@ -373,6 +377,7 @@ MainMenu::MainMenu(
setupUserpicButton(); setupUserpicButton();
setupAccountsToggle(); setupAccountsToggle();
setupSetEmojiStatus();
setupAccounts(); setupAccounts();
setupArchive(); setupArchive();
setupMenu(); setupMenu();
@ -440,10 +445,7 @@ MainMenu::MainMenu(
moveBadge(); moveBadge();
}, lifetime()); }, lifetime());
_badge->setPremiumClickCallback([=] { _badge->setPremiumClickCallback([=] {
_emojiStatusPanel->show( chooseEmojiStatus();
_controller,
_badge->widget(),
_badge->sizeTag());
}); });
_controller->session().downloaderTaskFinished( _controller->session().downloaderTaskFinished(
@ -451,14 +453,6 @@ MainMenu::MainMenu(
update(); update();
}, lifetime()); }, lifetime());
_controller->session().changes().peerUpdates(
_controller->session().user(),
Data::PeerUpdate::Flag::PhoneNumber
) | rpl::start_with_next([=] {
updatePhone();
}, lifetime());
updatePhone();
initResetScaleButton(); initResetScaleButton();
} }
@ -624,18 +618,16 @@ void MainMenu::setupAccountsToggle() {
_toggleAccounts->addClickHandler([=](Qt::MouseButton button) { _toggleAccounts->addClickHandler([=](Qt::MouseButton button) {
if (button == Qt::LeftButton) { if (button == Qt::LeftButton) {
toggleAccounts(); toggleAccounts();
} else if (button == Qt::RightButton) {
const auto menu = Ui::CreateChild<Ui::PopupMenu>(
_toggleAccounts.data());
menu->addAction(tr::lng_profile_copy_phone(tr::now), [=] {
QGuiApplication::clipboard()->setText(_phoneText);
});
menu->popup(QCursor::pos());
} }
}); });
} }
void MainMenu::setupSetEmojiStatus() {
_setEmojiStatus->overrideLinkClickHandler([=] {
chooseEmojiStatus();
});
}
void MainMenu::parentResized() { void MainMenu::parentResized() {
resize(st::mainMenuWidth, parentWidget()->height()); resize(st::mainMenuWidth, parentWidget()->height());
} }
@ -755,8 +747,6 @@ void MainMenu::setupMenu() {
_nightThemeSwitches.fire_copy(*darkMode); _nightThemeSwitches.fire_copy(*darkMode);
} }
}, _nightThemeToggle->lifetime()); }, _nightThemeToggle->lifetime());
updatePhone();
} }
void MainMenu::resizeEvent(QResizeEvent *e) { void MainMenu::resizeEvent(QResizeEvent *e) {
@ -771,6 +761,10 @@ void MainMenu::updateControlsGeometry() {
if (_resetScaleButton) { if (_resetScaleButton) {
_resetScaleButton->moveToRight(0, 0); _resetScaleButton->moveToRight(0, 0);
} }
_setEmojiStatus->moveToLeft(
st::mainMenuCoverStatusLeft,
st::mainMenuCoverStatusTop,
width());
_toggleAccounts->setGeometry( _toggleAccounts->setGeometry(
0, 0,
st::mainMenuCoverNameTop, st::mainMenuCoverNameTop,
@ -796,9 +790,12 @@ void MainMenu::updateInnerControlsGeometry() {
} }
} }
void MainMenu::updatePhone() { void MainMenu::chooseEmojiStatus() {
_phoneText = Ui::FormatPhone(_controller->session().user()->phone()); if (const auto widget = _badge->widget()) {
update(); _emojiStatusPanel->show(_controller, widget, _badge->sizeTag());
} else {
ShowPremiumPreviewBox(_controller, PremiumPreview::EmojiStatus);
}
} }
void MainMenu::paintEvent(QPaintEvent *e) { void MainMenu::paintEvent(QPaintEvent *e) {
@ -832,13 +829,6 @@ void MainMenu::paintEvent(QPaintEvent *e) {
? (st::semiboldFont->spacew + _badge->widget()->width()) ? (st::semiboldFont->spacew + _badge->widget()->width())
: 0)), : 0)),
width()); width());
p.setFont(st::mainMenuPhoneFont);
p.setPen(st::windowSubTextFg);
p.drawTextLeft(
st::mainMenuCoverStatusLeft,
st::mainMenuCoverStatusTop,
width(),
_phoneText);
} }
} }

View file

@ -64,19 +64,21 @@ private:
void setupUserpicButton(); void setupUserpicButton();
void setupAccounts(); void setupAccounts();
void setupAccountsToggle(); void setupAccountsToggle();
void setupSetEmojiStatus();
void setupArchive(); void setupArchive();
void setupMenu(); void setupMenu();
void updateControlsGeometry(); void updateControlsGeometry();
void updateInnerControlsGeometry(); void updateInnerControlsGeometry();
void updatePhone();
void initResetScaleButton(); void initResetScaleButton();
void toggleAccounts(); void toggleAccounts();
void chooseEmojiStatus();
const not_null<SessionController*> _controller; const not_null<SessionController*> _controller;
object_ptr<Ui::UserpicButton> _userpicButton; object_ptr<Ui::UserpicButton> _userpicButton;
Ui::Text::String _name; Ui::Text::String _name;
int _nameVersion = 0; int _nameVersion = 0;
object_ptr<ToggleAccountsButton> _toggleAccounts; object_ptr<ToggleAccountsButton> _toggleAccounts;
object_ptr<Ui::FlatLabel> _setEmojiStatus;
std::unique_ptr<Info::Profile::EmojiStatusPanel> _emojiStatusPanel; std::unique_ptr<Info::Profile::EmojiStatusPanel> _emojiStatusPanel;
std::unique_ptr<Info::Profile::Badge> _badge; std::unique_ptr<Info::Profile::Badge> _badge;
object_ptr<ResetScaleButton> _resetScaleButton = { nullptr }; object_ptr<ResetScaleButton> _resetScaleButton = { nullptr };
@ -94,8 +96,6 @@ private:
base::Timer _nightThemeSwitch; base::Timer _nightThemeSwitch;
base::unique_qptr<Ui::PopupMenu> _contextMenu; base::unique_qptr<Ui::PopupMenu> _contextMenu;
QString _phoneText;
}; };
struct OthersUnreadState { struct OthersUnreadState {