From 130aa67ba049060f3fdb7b1839e36faa9c2edbac Mon Sep 17 00:00:00 2001 From: John Preston Date: Mon, 17 Sep 2018 13:52:34 +0300 Subject: [PATCH] Some settings reordered in sections. --- Telegram/Resources/langs/lang.strings | 11 +- Telegram/SourceFiles/settings/settings.style | 18 +- .../SourceFiles/settings/settings_chat.cpp | 167 +++++++++--------- .../SourceFiles/settings/settings_common.cpp | 23 ++- .../SourceFiles/settings/settings_common.h | 3 +- .../SourceFiles/settings/settings_general.cpp | 45 ++--- .../SourceFiles/settings/settings_intro.cpp | 7 +- .../SourceFiles/settings/settings_main.cpp | 12 +- Telegram/SourceFiles/settings/settings_main.h | 3 + .../settings/settings_privacy_security.cpp | 61 +++---- 10 files changed, 163 insertions(+), 187 deletions(-) diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings index 53a2ae160..ab45758ff 100644 --- a/Telegram/Resources/langs/lang.strings +++ b/Telegram/Resources/langs/lang.strings @@ -354,8 +354,9 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "lng_settings_peer_to_peer_about" = "Disabling peer-to-peer will relay all calls through Telegram servers to avoid revealing your IP address, but may slightly decrease audio quality."; "lng_settings_advanced" = "Advanced"; "lng_settings_stickers_emoji" = "Stickers and emoji"; +"lng_settings_messages" = "Messages"; "lng_settings_themes" = "Themes"; -"lng_settings_chat_other" = "Other"; +"lng_settings_data_storage" = "Data and storage"; "lng_settings_information" = "Edit profile"; "lng_settings_passcode_title" = "Local passcode"; "lng_settings_password_title" = "Two-step verification"; @@ -369,10 +370,10 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "lng_theme_keep_changes" = "Keep changes"; "lng_theme_revert" = "Revert"; -"lng_download_path_dont_ask" = "Don't ask download path for each file"; -"lng_download_path_label" = "Download path:"; -"lng_download_path_temp" = "temp folder"; -"lng_download_path_default" = "default folder"; +"lng_download_path_ask" = "Ask download path for each file"; +"lng_download_path" = "Download path"; +"lng_download_path_temp" = "Temp folder"; +"lng_download_path_default" = "Default folder"; "lng_download_path_clear" = "Clear all"; "lng_download_path_header" = "Choose download path"; "lng_download_path_default_radio" = "Telegram folder in system «Downloads»"; diff --git a/Telegram/SourceFiles/settings/settings.style b/Telegram/SourceFiles/settings/settings.style index b4246336b..e11a4c4ac 100644 --- a/Telegram/SourceFiles/settings/settings.style +++ b/Telegram/SourceFiles/settings/settings.style @@ -14,13 +14,7 @@ settingsSectionButton: InfoProfileButton(infoProfileButton) { font: boxTextFont; padding: margins(79px, 13px, 22px, 11px); } -settingsGeneralButton: InfoProfileButton(settingsSectionButton) { - padding: margins(24px, 13px, 22px, 11px); -} settingsButton: InfoProfileButton(settingsSectionButton) { - padding: margins(22px, 13px, 22px, 11px); -} -settingsPrivacyButton: InfoProfileButton(settingsButton) { padding: margins(22px, 10px, 22px, 8px); } settingsSectionSkip: 9px; @@ -30,24 +24,25 @@ settingsButtonRightSkip: 28px; settingsButtonRight: FlatLabel(defaultFlatLabel) { textFg: windowActiveTextFg; style: boxTextStyle; + maxHeight: 20px; } settingsScalePadding: margins(79px, 10px, 28px, 8px); -settingsBigScalePadding: margins(24px, 10px, 24px, 8px); +settingsBigScalePadding: margins(22px, 10px, 22px, 8px); settingsSlider: SettingsSlider(defaultSettingsSlider) { barFg: windowBgOver; labelFg: windowSubTextFg; labelFgActive: windowActiveTextFg; } -settingsUpdateToggle: InfoProfileButton(settingsGeneralButton) { +settingsUpdateToggle: InfoProfileButton(settingsButton) { height: 40px; - padding: margins(24px, 8px, 22px, 8px); + padding: margins(22px, 8px, 22px, 8px); } settingsUpdateState: FlatLabel(defaultFlatLabel) { textFg: windowSubTextFg; } settingsUpdate: InfoProfileButton(infoMainButton, settingsButton) { } -settingsUpdateStatePosition: point(24px, 29px); +settingsUpdateStatePosition: point(22px, 29px); settingsDividerLabelPadding: margins(22px, 10px, 22px, 19px); settingsIconInformation: icon {{ "settings_information", menuIconFg }}; @@ -75,9 +70,6 @@ settingsSendType: settingsCheckbox; settingsSendTypePadding: margins(22px, 5px, 10px, 5px); settingsSendTypeSkip: 5px; -settingsAskPathPadding: margins(22px, 10px, 10px, 0px); -settingsDownloadPathPadding: margins(22px, 1px, 10px, 0px); - settingsBackgroundThumb: 76px; settingsThumbSkip: 16px; settingsSubsectionTitle: FlatLabel(defaultFlatLabel) { diff --git a/Telegram/SourceFiles/settings/settings_chat.cpp b/Telegram/SourceFiles/settings/settings_chat.cpp index 9e787dfdd..962fa6924 100644 --- a/Telegram/SourceFiles/settings/settings_chat.cpp +++ b/Telegram/SourceFiles/settings/settings_chat.cpp @@ -12,6 +12,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "boxes/stickers_box.h" #include "boxes/background_box.h" #include "boxes/download_path_box.h" +#include "boxes/local_storage_box.h" #include "ui/wrap/vertical_layout.h" #include "ui/wrap/slide_wrap.h" #include "ui/widgets/checkbox.h" @@ -23,8 +24,11 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "info/profile/info_profile_button.h" #include "storage/localstorage.h" #include "core/file_utilities.h" +#include "data/data_session.h" +#include "auth_session.h" #include "mainwidget.h" #include "styles/style_settings.h" +#include "styles/style_boxes.h" namespace Settings { @@ -55,17 +59,6 @@ private: }; -#ifndef OS_WIN_STORE -class DownloadPathRow : public Ui::RpWidget { -public: - DownloadPathRow(QWidget *parent); - -private: - void setupControls(); - -}; -#endif // OS_WIN_STORE - void ChooseFromFile(not_null parent); BackgroundRow::BackgroundRow(QWidget *parent) : RpWidget(parent) @@ -315,8 +308,6 @@ void ChooseFromFile(not_null parent) { } -#ifndef OS_WIN_STORE - QString DownloadPathText() { if (Global::DownloadPath().isEmpty()) { return lang(lng_download_path_default); @@ -326,49 +317,6 @@ QString DownloadPathText() { return QDir::toNativeSeparators(Global::DownloadPath()); } -DownloadPathRow::DownloadPathRow(QWidget *parent) : RpWidget(parent) { - setupControls(); -} - -void DownloadPathRow::setupControls() { - const auto label = Ui::CreateChild( - this, - Lang::Viewer(lng_download_path_label), - st::settingsLinkLabel); - const auto link = Ui::CreateChild( - this, - DownloadPathText(), - st::settingsLink); - - base::ObservableViewer( - Global::RefDownloadPathChanged() - ) | rpl::map([] { - return DownloadPathText(); - }) | rpl::start_with_next([=](const QString &text) { - link->setText(text); - }, link->lifetime()); - - link->addClickHandler([] { - Ui::show(Box()); - }); - - rpl::combine( - widthValue(), - label->sizeValue(), - link->widthValue() - ) | rpl::start_with_next([=](int width, QSize labelSize, int possible) { - const auto space = st::settingsLinkLabel.style.font->spacew; - link->resizeToNaturalWidth(width - labelSize.width() - space); - if (link->width() == possible) { - label->moveToLeft(0, 0); - link->moveToLeft(labelSize.width() + space, 0); - resize(width, labelSize.height()); - } - }, link->lifetime()); -} - -#endif // OS_WIN_STORE - void SetupStickersEmoji(not_null container) { AddSkip(container, st::settingsStickersEmojiPadding); @@ -434,11 +382,11 @@ void SetupStickersEmoji(not_null container) { AddSkip(container, st::settingsCheckboxesSkip); } -void SetupChatOther(not_null container) { +void SetupMessages(not_null container) { AddDivider(container); AddSkip(container, st::settingsSectionSkip); - AddSubsectionTitle(container, lng_settings_chat_other); + AddSubsectionTitle(container, lng_settings_messages); AddSkip(container, st::settingsSendTypeSkip); @@ -459,9 +407,9 @@ void SetupChatOther(not_null container) { QMargins(0, skip, 0, skip))); const auto add = [&]( - SendByType value, - LangKey key, - style::margins padding) { + SendByType value, + LangKey key, + style::margins padding) { inner->add( object_ptr>( inner, @@ -492,50 +440,91 @@ void SetupChatOther(not_null container) { }); AddSkip(inner, st::settingsCheckboxesSkip); +} - const auto dontask = inner->add( +void SetupExport(not_null container) { + AddButton( + container, + lng_settings_export_data, + st::settingsButton + )->addClickHandler([] { + Ui::hideSettingsAndLayer(); + App::CallDelayed( + st::boxDuration, + &Auth(), + [] { Auth().data().startExport(); }); + }); +} + +void SetupLocalStorage(not_null container) { + AddButton( + container, + lng_settings_local_storage, + st::settingsButton + )->addClickHandler([] { + LocalStorageBox::Show(&Auth().data().cache()); + }); +} + +void SetupDataStorage(not_null container) { + AddDivider(container); + AddSkip(container, st::settingsSectionSkip); + + AddSubsectionTitle(container, lng_settings_data_storage); + + auto wrap = object_ptr(container); + const auto inner = wrap.data(); + container->add(object_ptr( + container, + std::move(wrap), + QMargins(0, 0, 0, st::settingsCheckbox.margin.bottom()))); + + const auto ask = inner->add( object_ptr( inner, - lang(lng_download_path_dont_ask), - !Global::AskDownloadPath(), + lang(lng_download_path_ask), + Global::AskDownloadPath(), st::settingsCheckbox), -#ifndef OS_WIN_STORE - st::settingsAskPathPadding); -#else // OS_WIN_STORE st::settingsCheckboxPadding); -#endif // OS_WIN_STORE #ifndef OS_WIN_STORE const auto showpath = Ui::AttachAsChild( - dontask, + ask, rpl::event_stream()); - const auto padding = st::settingsDownloadPathPadding; const auto path = container->add( - object_ptr>( + object_ptr>( container, - object_ptr(container), - QMargins( - (padding.left() - + st::settingsCheckbox.checkPosition.x() - + st::defaultCheck.diameter - + st::settingsCheckbox.textPosition.x() - - st::settingsCheckbox.margin.left()), - padding.top(), - padding.right(), - padding.bottom()))); - AddSkip(container, st::settingsCheckboxPadding.bottom()); + object_ptr