diff --git a/Telegram/Resources/icons/settings_stickers.png b/Telegram/Resources/icons/settings_stickers.png new file mode 100644 index 0000000000..d041037b11 Binary files /dev/null and b/Telegram/Resources/icons/settings_stickers.png differ diff --git a/Telegram/Resources/icons/settings_stickers@2x.png b/Telegram/Resources/icons/settings_stickers@2x.png new file mode 100644 index 0000000000..bea50dd427 Binary files /dev/null and b/Telegram/Resources/icons/settings_stickers@2x.png differ diff --git a/Telegram/Resources/icons/settings_themes.png b/Telegram/Resources/icons/settings_themes.png new file mode 100644 index 0000000000..fd36932b56 Binary files /dev/null and b/Telegram/Resources/icons/settings_themes.png differ diff --git a/Telegram/Resources/icons/settings_themes@2x.png b/Telegram/Resources/icons/settings_themes@2x.png new file mode 100644 index 0000000000..b26c2cd2b2 Binary files /dev/null and b/Telegram/Resources/icons/settings_themes@2x.png differ diff --git a/Telegram/SourceFiles/base/bytes.h b/Telegram/SourceFiles/base/bytes.h index 09a4cc028d..4606a2d3fc 100644 --- a/Telegram/SourceFiles/base/bytes.h +++ b/Telegram/SourceFiles/base/bytes.h @@ -20,9 +20,15 @@ using vector = std::vector; template using array = std::array; +inline span make_detached_span(QByteArray &container) { + return gsl::as_writeable_bytes(gsl::make_span(container)); +} + template < typename Container, - typename = std::enable_if_t>> + typename = std::enable_if_t< + !std::is_const_v + && !std::is_same_v>> inline span make_span(Container &container) { return gsl::as_writeable_bytes(gsl::make_span(container)); } diff --git a/Telegram/SourceFiles/settings/settings.style b/Telegram/SourceFiles/settings/settings.style index 75338efdb2..319550244b 100644 --- a/Telegram/SourceFiles/settings/settings.style +++ b/Telegram/SourceFiles/settings/settings.style @@ -53,6 +53,8 @@ settingsIconPrivacySecurity: icon {{ "settings_privacy_security", menuIconFg }}; settingsIconLanguage: icon {{ "settings_language", menuIconFg }}; settingsIconInterfaceScale: icon {{ "settings_interface_scale", menuIconFg }}; settingsIconFaq: icon {{ "settings_faq", menuIconFg }}; +settingsIconStickers: icon {{ "settings_stickers", menuIconFg }}; +settingsIconThemes: icon {{ "settings_themes", menuIconFg }}; settingsSetPhotoSkip: 7px; @@ -64,7 +66,6 @@ settingsLink: boxLinkButton; settingsAdvancedNotificationsPadding: margins(22px, 20px, 10px, 10px); settingsLinkLabel: defaultFlatLabel; settingsCheckboxesSkip: 12px; -settingsStickersEmojiPadding: 17px; settingsSendType: settingsCheckbox; settingsSendTypePadding: margins(22px, 5px, 10px, 5px); @@ -153,6 +154,13 @@ settingsBioLabelPadding: margins(22px, 11px, 22px, 0px); settingsPrivacyEditLabelPadding: margins(22px, 11px, 22px, 11px); +settingsChatButton: InfoProfileButton(settingsSectionButton) { + padding: margins(59px, 13px, 22px, 11px); +} +settingsChatIconLeft: 19px; + +settingsThemesTopSkip: 10px; +settingsThemesBottomSkip: 8px; settingsTheme: Checkbox(defaultCheckbox) { textFg: windowSubTextFg; textFgActive: windowActiveTextFg; @@ -160,7 +168,7 @@ settingsTheme: Checkbox(defaultCheckbox) { width: 80px; margin: margins(0px, 0px, 0px, 0px); - textPosition: point(0px, 88px); + textPosition: point(0px, 86px); checkPosition: point(0px, 0px); style: defaultTextStyle; diff --git a/Telegram/SourceFiles/settings/settings_chat.cpp b/Telegram/SourceFiles/settings/settings_chat.cpp index 0ceee59954..471dd43360 100644 --- a/Telegram/SourceFiles/settings/settings_chat.cpp +++ b/Telegram/SourceFiles/settings/settings_chat.cpp @@ -416,7 +416,8 @@ QString DownloadPathText() { } void SetupStickersEmoji(not_null container) { - AddSkip(container, st::settingsStickersEmojiPadding); + AddDivider(container); + AddSkip(container); AddSubsectionTitle(container, lng_settings_stickers_emoji); @@ -472,7 +473,9 @@ void SetupStickersEmoji(not_null container) { AddButton( container, lng_stickers_you_have, - st::settingsButton + st::settingsChatButton, + &st::settingsIconStickers, + st::settingsChatIconLeft )->addClickHandler([] { Ui::show(Box(StickersBox::Section::Installed)); }); @@ -910,19 +913,22 @@ void SetupDefaultThemes(not_null container) { } void SetupThemeOptions(not_null container) { - AddDivider(container); - AddSkip(container); + AddSkip(container, st::settingsPrivacySkip); AddSubsectionTitle(container, lng_settings_themes); + AddSkip(container, st::settingsThemesTopSkip); SetupDefaultThemes(container); + AddSkip(container, st::settingsThemesBottomSkip); AddButton( container, lng_settings_bg_edit_theme, - st::settingsButton + st::settingsChatButton, + &st::settingsIconThemes, + st::settingsChatIconLeft )->addClickHandler(App::LambdaDelayed( - st::settingsButton.ripple.hideDuration, + st::settingsChatButton.ripple.hideDuration, container, [] { Window::Theme::Editor::Start(); })); @@ -940,10 +946,10 @@ Chat::Chat(QWidget *parent, not_null self) void Chat::setupContent() { const auto content = Ui::CreateChild(this); + SetupThemeOptions(content); + SetupChatBackground(content); SetupStickersEmoji(content); SetupMessages(content); - SetupChatBackground(content); - SetupThemeOptions(content); Ui::ResizeFitChild(this, content); } diff --git a/Telegram/SourceFiles/settings/settings_common.cpp b/Telegram/SourceFiles/settings/settings_common.cpp index bc7b5530ad..1397ef53a3 100644 --- a/Telegram/SourceFiles/settings/settings_common.cpp +++ b/Telegram/SourceFiles/settings/settings_common.cpp @@ -77,15 +77,17 @@ not_null AddButton( not_null container, LangKey text, const style::InfoProfileButton &st, - const style::icon *leftIcon) { - return AddButton(container, Lang::Viewer(text), st, leftIcon); + const style::icon *leftIcon, + int iconLeft) { + return AddButton(container, Lang::Viewer(text), st, leftIcon, iconLeft); } not_null AddButton( not_null container, rpl::producer text, const style::InfoProfileButton &st, - const style::icon *leftIcon) { + const style::icon *leftIcon, + int iconLeft) { const auto result = container->add(object_ptr