Better top bar customization
This commit is contained in:
parent
93ab8bd607
commit
0fab1489d4
4 changed files with 100 additions and 27 deletions
|
|
@ -56,15 +56,15 @@ TopBarWidget::TopBarWidget(
|
||||||
not_null<Window::SessionController*> controller)
|
not_null<Window::SessionController*> controller)
|
||||||
: RpWidget(parent)
|
: RpWidget(parent)
|
||||||
, _controller(controller)
|
, _controller(controller)
|
||||||
, _clear(this, tr::lng_selected_clear(), st::topBarClearButton)
|
, _clear(this, tr::lng_selected_clear(), st::ktgTopBarClearButton)
|
||||||
, _forward(this, tr::lng_selected_forward(), st::defaultActiveButton)
|
, _forward(this, tr::lng_selected_forward(), st::ktgTopBarActiveButton)
|
||||||
, _sendNow(this, tr::lng_selected_send_now(), st::defaultActiveButton)
|
, _sendNow(this, tr::lng_selected_send_now(), st::ktgTopBarActiveButton)
|
||||||
, _delete(this, tr::lng_selected_delete(), st::defaultActiveButton)
|
, _delete(this, tr::lng_selected_delete(), st::ktgTopBarActiveButton)
|
||||||
, _back(this, st::historyTopBarBack)
|
, _back(this, st::ktgHistoryTopBarBack)
|
||||||
, _call(this, st::topBarCall)
|
, _call(this, st::ktgTopBarCall)
|
||||||
, _search(this, st::topBarSearch)
|
, _search(this, st::ktgTopBarSearch)
|
||||||
, _infoToggle(this, st::topBarInfo)
|
, _infoToggle(this, st::ktgTopBarInfo)
|
||||||
, _menuToggle(this, st::topBarMenuToggle)
|
, _menuToggle(this, st::ktgTopBarMenuToggle)
|
||||||
, _titlePeerText(st::windowMinWidth / 3)
|
, _titlePeerText(st::windowMinWidth / 3)
|
||||||
, _onlineUpdater([=] { updateOnlineDisplay(); }) {
|
, _onlineUpdater([=] { updateOnlineDisplay(); }) {
|
||||||
subscribe(Lang::Current().updated(), [=] { refreshLang(); });
|
subscribe(Lang::Current().updated(), [=] { refreshLang(); });
|
||||||
|
|
@ -318,7 +318,7 @@ void TopBarWidget::paintEvent(QPaintEvent *e) {
|
||||||
auto hasSelected = (_selectedCount > 0);
|
auto hasSelected = (_selectedCount > 0);
|
||||||
auto selectedButtonsTop = countSelectedButtonsTop(_selectedShown.value(hasSelected ? 1. : 0.));
|
auto selectedButtonsTop = countSelectedButtonsTop(_selectedShown.value(hasSelected ? 1. : 0.));
|
||||||
|
|
||||||
p.fillRect(QRect(0, 0, width(), st::topBarHeight), st::topBarBg);
|
p.fillRect(QRect(0, 0, width(), st::topBarHeight), st::ktgTopBarBg);
|
||||||
if (selectedButtonsTop < 0) {
|
if (selectedButtonsTop < 0) {
|
||||||
p.translate(0, selectedButtonsTop + st::topBarHeight);
|
p.translate(0, selectedButtonsTop + st::topBarHeight);
|
||||||
paintTopBar(p);
|
paintTopBar(p);
|
||||||
|
|
@ -349,7 +349,7 @@ void TopBarWidget::paintTopBar(Painter &p) {
|
||||||
if (availableWidth < textWidth) {
|
if (availableWidth < textWidth) {
|
||||||
text = st::historySavedFont->elided(text, availableWidth);
|
text = st::historySavedFont->elided(text, availableWidth);
|
||||||
}
|
}
|
||||||
p.setPen(st::dialogsNameFg);
|
p.setPen(st::ktgTopBarNameFg);
|
||||||
p.setFont(st::historySavedFont);
|
p.setFont(st::historySavedFont);
|
||||||
p.drawTextLeft(
|
p.drawTextLeft(
|
||||||
nameleft,
|
nameleft,
|
||||||
|
|
@ -359,7 +359,7 @@ void TopBarWidget::paintTopBar(Painter &p) {
|
||||||
} else if (_section == Section::Scheduled) {
|
} else if (_section == Section::Scheduled) {
|
||||||
auto text = tr::lng_scheduled_messages(tr::now);
|
auto text = tr::lng_scheduled_messages(tr::now);
|
||||||
|
|
||||||
p.setPen(st::dialogsNameFg);
|
p.setPen(st::ktgTopBarNameFg);
|
||||||
|
|
||||||
if (history) {
|
if (history) {
|
||||||
const auto textWidth = st::msgNameFont->width(text);
|
const auto textWidth = st::msgNameFont->width(text);
|
||||||
|
|
@ -374,7 +374,7 @@ void TopBarWidget::paintTopBar(Painter &p) {
|
||||||
text);
|
text);
|
||||||
|
|
||||||
auto nameText = history->peer->topBarNameText().toString();
|
auto nameText = history->peer->topBarNameText().toString();
|
||||||
p.setPen(st::historyStatusFg);
|
p.setPen(st::ktgTopBarStatusFg);
|
||||||
|
|
||||||
Ui::Text::String nameTextStr;
|
Ui::Text::String nameTextStr;
|
||||||
nameTextStr.setText(st::dialogsTextStyle, nameText, Ui::NameTextOptions());
|
nameTextStr.setText(st::dialogsTextStyle, nameText, Ui::NameTextOptions());
|
||||||
|
|
@ -410,7 +410,7 @@ void TopBarWidget::paintTopBar(Painter &p) {
|
||||||
badgeStyle);
|
badgeStyle);
|
||||||
const auto namewidth = availableWidth - badgeWidth;
|
const auto namewidth = availableWidth - badgeWidth;
|
||||||
|
|
||||||
p.setPen(st::dialogsNameFg);
|
p.setPen(st::ktgTopBarNameFg);
|
||||||
peer->topBarNameText().drawElided(
|
peer->topBarNameText().drawElided(
|
||||||
p,
|
p,
|
||||||
nameleft,
|
nameleft,
|
||||||
|
|
@ -426,7 +426,7 @@ void TopBarWidget::paintTopBar(Painter &p) {
|
||||||
statustop,
|
statustop,
|
||||||
availableWidth,
|
availableWidth,
|
||||||
width(),
|
width(),
|
||||||
st::historyStatusFgTyping,
|
st::ktgTopBarStatusFgActive,
|
||||||
crl::now())) {
|
crl::now())) {
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -453,7 +453,7 @@ bool TopBarWidget::paintConnectingState(
|
||||||
left += st::topBarConnectingPosition.x()
|
left += st::topBarConnectingPosition.x()
|
||||||
+ st::topBarConnectingAnimation.size.width()
|
+ st::topBarConnectingAnimation.size.width()
|
||||||
+ st::topBarConnectingSkip;
|
+ st::topBarConnectingSkip;
|
||||||
p.setPen(st::historyStatusFg);
|
p.setPen(st::ktgTopBarStatusFg);
|
||||||
p.drawTextLeft(left, top, outerWidth, tr::lng_status_connecting(tr::now));
|
p.drawTextLeft(left, top, outerWidth, tr::lng_status_connecting(tr::now));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -465,8 +465,8 @@ void TopBarWidget::paintStatus(
|
||||||
int availableWidth,
|
int availableWidth,
|
||||||
int outerWidth) {
|
int outerWidth) {
|
||||||
p.setPen(_titlePeerTextOnline
|
p.setPen(_titlePeerTextOnline
|
||||||
? st::historyStatusFgActive
|
? st::ktgTopBarStatusFgActive
|
||||||
: st::historyStatusFg);
|
: st::ktgTopBarStatusFg);
|
||||||
_titlePeerText.drawLeftElided(p, left, top, availableWidth, outerWidth);
|
_titlePeerText.drawLeftElided(p, left, top, availableWidth, outerWidth);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -852,10 +852,10 @@ void TopBarWidget::updateInfoToggleActive() {
|
||||||
&& (Core::App().settings().thirdSectionInfoEnabled()
|
&& (Core::App().settings().thirdSectionInfoEnabled()
|
||||||
|| Core::App().settings().tabbedReplacedWithInfo());
|
|| Core::App().settings().tabbedReplacedWithInfo());
|
||||||
auto iconOverride = infoThirdActive
|
auto iconOverride = infoThirdActive
|
||||||
? &st::topBarInfoActive
|
? &st::ktgTopBarInfoActive
|
||||||
: nullptr;
|
: nullptr;
|
||||||
auto rippleOverride = infoThirdActive
|
auto rippleOverride = infoThirdActive
|
||||||
? &st::lightButtonBgOver
|
? &st::ktgTopBarIconBgActiveRipple
|
||||||
: nullptr;
|
: nullptr;
|
||||||
_infoToggle->setIconOverride(iconOverride, iconOverride);
|
_infoToggle->setIconOverride(iconOverride, iconOverride);
|
||||||
_infoToggle->setRippleColorOverride(rippleOverride);
|
_infoToggle->setRippleColorOverride(rippleOverride);
|
||||||
|
|
|
||||||
|
|
@ -833,3 +833,76 @@ separatePanelBack: IconButton(separatePanelClose) {
|
||||||
icon: infoTopBarBackIcon;
|
icon: infoTopBarBackIcon;
|
||||||
iconOver: infoTopBarBackIconOver;
|
iconOver: infoTopBarBackIconOver;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ktgHistoryTopBarBack: IconButton(historyTopBarBack) {
|
||||||
|
icon: icon {{ "info_back", ktgTopBarBackIconFg }};
|
||||||
|
iconOver: icon {{ "info_back", ktgTopBarBackIconFgOver }};
|
||||||
|
|
||||||
|
ripple: RippleAnimation(defaultRippleAnimation) {
|
||||||
|
color: ktgTopBarBackIconBgRipple;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ktgTopBarCall: IconButton(topBarCall) {
|
||||||
|
icon: icon {{ "top_bar_call", ktgTopBarIconFg }};
|
||||||
|
iconOver: icon {{ "top_bar_call", ktgTopBarIconFgOver }};
|
||||||
|
|
||||||
|
ripple: RippleAnimation(defaultRippleAnimation) {
|
||||||
|
color: ktgTopBarIconBgRipple;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ktgTopBarSearch: IconButton(topBarSearch) {
|
||||||
|
icon: icon {{ "top_bar_search", ktgTopBarIconFg }};
|
||||||
|
iconOver: icon {{ "top_bar_search", ktgTopBarIconFgOver }};
|
||||||
|
|
||||||
|
ripple: RippleAnimation(defaultRippleAnimation) {
|
||||||
|
color: ktgTopBarIconBgRipple;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ktgTopBarInfo: IconButton(topBarInfo) {
|
||||||
|
icon: icon {{ "top_bar_profile", ktgTopBarIconFg }};
|
||||||
|
iconOver: icon {{ "top_bar_profile", ktgTopBarIconFgOver }};
|
||||||
|
|
||||||
|
ripple: RippleAnimation(defaultRippleAnimation) {
|
||||||
|
color: ktgTopBarIconBgRipple;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ktgTopBarInfoActive: icon {{ "top_bar_profile", ktgTopBarIconFgActive }};
|
||||||
|
|
||||||
|
ktgTopBarMenuToggle: IconButton(topBarMenuToggle) {
|
||||||
|
icon: icon {{ "title_menu_dots", ktgTopBarIconFg }};
|
||||||
|
iconOver: icon {{ "title_menu_dots", ktgTopBarIconFgOver }};
|
||||||
|
|
||||||
|
ripple: RippleAnimation(defaultRippleAnimation) {
|
||||||
|
color: ktgTopBarIconBgRipple;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ktgTopBarActiveButton: RoundButton(defaultActiveButton) {
|
||||||
|
textFg: ktgTopBarActiveButtonFg;
|
||||||
|
textFgOver: ktgTopBarActiveButtonFgOver;
|
||||||
|
numbersTextFg: ktgTopBarActiveButtonSecondaryFg;
|
||||||
|
numbersTextFgOver: ktgTopBarActiveButtonSecondaryFgOver;
|
||||||
|
textBg: ktgTopBarActiveButtonBg;
|
||||||
|
textBgOver: ktgTopBarActiveButtonBgOver;
|
||||||
|
|
||||||
|
ripple: RippleAnimation(defaultRippleAnimation) {
|
||||||
|
color: ktgTopBarActiveButtonBgRipple;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ktgTopBarClearButton: RoundButton(topBarClearButton) {
|
||||||
|
textFg: ktgTopBarClearButtonFg;
|
||||||
|
textFgOver: ktgTopBarClearButtonFgOver;
|
||||||
|
numbersTextFg: ktgTopBarClearButtonFg;
|
||||||
|
numbersTextFgOver: ktgTopBarClearButtonFgOver;
|
||||||
|
textBg: ktgTopBarClearButtonBg;
|
||||||
|
textBgOver: ktgTopBarClearButtonBgOver;
|
||||||
|
|
||||||
|
ripple: RippleAnimation(defaultRippleAnimation) {
|
||||||
|
color: ktgTopBarClearButtonBgRipple;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -479,14 +479,14 @@ void Generator::paintHistoryBackground() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Generator::paintTopBar() {
|
void Generator::paintTopBar() {
|
||||||
_p->fillRect(_topBar, st::topBarBg[_palette]);
|
_p->fillRect(_topBar, st::ktgTopBarBg[_palette]);
|
||||||
|
|
||||||
auto right = st::topBarMenuToggle.width;
|
auto right = st::topBarMenuToggle.width;
|
||||||
st::topBarMenuToggle.icon[_palette].paint(*_p, _topBar.x() + _topBar.width() - right + st::topBarMenuToggle.iconPosition.x(), _topBar.y() + st::topBarMenuToggle.iconPosition.y(), _rect.width());
|
st::ktgTopBarMenuToggle.icon[_palette].paint(*_p, _topBar.x() + _topBar.width() - right + st::topBarMenuToggle.iconPosition.x(), _topBar.y() + st::topBarMenuToggle.iconPosition.y(), _rect.width());
|
||||||
right += st::topBarSearch.width;
|
right += st::topBarSearch.width;
|
||||||
st::topBarSearch.icon[_palette].paint(*_p, _topBar.x() + _topBar.width() - right + st::topBarSearch.iconPosition.x(), _topBar.y() + st::topBarSearch.iconPosition.y(), _rect.width());
|
st::ktgTopBarSearch.icon[_palette].paint(*_p, _topBar.x() + _topBar.width() - right + st::topBarSearch.iconPosition.x(), _topBar.y() + st::topBarSearch.iconPosition.y(), _rect.width());
|
||||||
right += st::topBarCallSkip + st::topBarCall.width;
|
right += st::topBarCallSkip + st::topBarCall.width;
|
||||||
st::topBarCall.icon[_palette].paint(*_p, _topBar.x() + _topBar.width() - right + st::topBarCall.iconPosition.x(), _topBar.y() + st::topBarCall.iconPosition.y(), _rect.width());
|
st::ktgTopBarCall.icon[_palette].paint(*_p, _topBar.x() + _topBar.width() - right + st::topBarCall.iconPosition.x(), _topBar.y() + st::topBarCall.iconPosition.y(), _rect.width());
|
||||||
|
|
||||||
auto decreaseWidth = st::topBarCall.width + st::topBarCallSkip + st::topBarSearch.width + st::topBarMenuToggle.width;
|
auto decreaseWidth = st::topBarCall.width + st::topBarCallSkip + st::topBarSearch.width + st::topBarMenuToggle.width;
|
||||||
auto nameleft = _topBar.x() + st::topBarArrowPadding.right();
|
auto nameleft = _topBar.x() + st::topBarArrowPadding.right();
|
||||||
|
|
@ -494,10 +494,10 @@ void Generator::paintTopBar() {
|
||||||
auto statustop = _topBar.y() + st::topBarHeight - st::topBarArrowPadding.bottom() - st::dialogsTextFont->height;
|
auto statustop = _topBar.y() + st::topBarHeight - st::topBarArrowPadding.bottom() - st::dialogsTextFont->height;
|
||||||
auto namewidth = _topBar.x() + _topBar.width() - decreaseWidth - nameleft - st::topBarArrowPadding.right();
|
auto namewidth = _topBar.x() + _topBar.width() - decreaseWidth - nameleft - st::topBarArrowPadding.right();
|
||||||
_p->setFont(st::dialogsTextFont);
|
_p->setFont(st::dialogsTextFont);
|
||||||
_p->setPen(_topBarStatusActive ? st::historyStatusFgActive[_palette] : st::historyStatusFg[_palette]);
|
_p->setPen(_topBarStatusActive ? st::ktgTopBarStatusFgActive[_palette] : st::ktgTopBarStatusFg[_palette]);
|
||||||
_p->drawText(nameleft, statustop + st::dialogsTextFont->ascent, _topBarStatus);
|
_p->drawText(nameleft, statustop + st::dialogsTextFont->ascent, _topBarStatus);
|
||||||
|
|
||||||
_p->setPen(st::dialogsNameFg[_palette]);
|
_p->setPen(st::ktgTopBarNameFg[_palette]);
|
||||||
_topBarName.drawElided(*_p, nameleft, nametop, namewidth);
|
_topBarName.drawElided(*_p, nameleft, nametop, namewidth);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
Subproject commit 58c35e9dcc24198332958d5f874d318f5cea77ec
|
Subproject commit c279e4b0be5964838ce9d52dc53ac6960e628dfe
|
||||||
Loading…
Add table
Reference in a new issue