Option to always show top bar userpic

This commit is contained in:
Eric Kotato 2020-03-09 20:43:26 +03:00
parent 9ecb0c12a0
commit 1a462f4d26
4 changed files with 17 additions and 2 deletions

View file

@ -323,6 +323,10 @@ bool Manager::readCustomFile() {
cSetUserpicCornersType(v);
}
});
ReadBoolOption(settings, "always_show_top_userpic", [&](auto v) {
cSetShowTopBarUserpic(v);
});
return true;
}
@ -365,6 +369,7 @@ void Manager::writeDefaultFile() {
settings.insert(qsl("no_taskbar_flash"), cNoTaskbarFlashing());
settings.insert(qsl("recent_stickers_limit"), RecentStickersLimit());
settings.insert(qsl("userpic_corner_type"), cUserpicCornersType());
settings.insert(qsl("always_show_top_userpic"), cShowTopBarUserpic());
auto settingsScales = QJsonArray();
settings.insert(qsl("scales"), settingsScales);
@ -428,6 +433,7 @@ void Manager::writeCurrentSettings() {
settings.insert(qsl("no_taskbar_flash"), cNoTaskbarFlashing());
settings.insert(qsl("recent_stickers_limit"), RecentStickersLimit());
settings.insert(qsl("userpic_corner_type"), cUserpicCornersType());
settings.insert(qsl("always_show_top_userpic"), cShowTopBarUserpic());
auto settingsScales = QJsonArray();
auto currentScales = cInterfaceScales();

View file

@ -569,13 +569,20 @@ void TopBarWidget::updateControlsGeometry() {
_clear->moveToRight(st::topBarActionSkip, selectedButtonsTop);
if (_back->isHidden()) {
_leftTaken = st::topBarArrowPadding.right();
if (cShowTopBarUserpic()) {
_leftTaken = st::topBarActionSkip;
} else {
_leftTaken = st::topBarArrowPadding.right();
}
} else {
const auto smallDialogsColumn = _activeChat.folder()
&& (width() < _back->width() + _search->width());
_leftTaken = smallDialogsColumn ? (width() - _back->width()) / 2 : 0;
_back->moveToLeft(_leftTaken, otherButtonsTop);
_leftTaken += _back->width();
}
if (!_back->isHidden() || cShowTopBarUserpic()) {
if (_info && !_info->isHidden()) {
_info->moveToLeft(_leftTaken, otherButtonsTop);
_leftTaken += _info->width();
@ -630,7 +637,7 @@ void TopBarWidget::updateControlsVisibility() {
|| _activeChat.folder();
_back->setVisible(backVisible);
if (_info) {
_info->setVisible(Adaptive::OneColumn());
_info->setVisible(cShowTopBarUserpic() || Adaptive::OneColumn());
}
if (_unreadBadge) {
_unreadBadge->show();

View file

@ -317,3 +317,4 @@ rpl::producer<int> RecentStickersLimitChanges() {
}
int gUserpicCornersType = 3;
bool gShowTopBarUserpic = false;

View file

@ -247,3 +247,4 @@ void SetRecentStickersLimit(int limit);
[[nodiscard]] rpl::producer<int> RecentStickersLimitChanges();
DeclareSetting(int, UserpicCornersType);
DeclareSetting(bool, ShowTopBarUserpic);