diff --git a/Telegram/CMakeLists.txt b/Telegram/CMakeLists.txt index 7412592163..7cc0af58ba 100644 --- a/Telegram/CMakeLists.txt +++ b/Telegram/CMakeLists.txt @@ -129,8 +129,6 @@ set(ayugram_files ayu/ui/ayu_logo.h ayu/ui/utils/ayu_profile_values.cpp ayu/ui/utils/ayu_profile_values.h - ayu/ui/settings/icon_picker.cpp - ayu/ui/settings/icon_picker.h ayu/ui/settings/settings_ayu.cpp ayu/ui/settings/settings_ayu.h ayu/ui/context_menu/context_menu.cpp @@ -143,10 +141,8 @@ set(ayugram_files ayu/ui/message_history/history_item.h ayu/ui/message_history/history_section.cpp ayu/ui/message_history/history_section.h - ayu/ui/boxes/edit_deleted_mark.cpp - ayu/ui/boxes/edit_deleted_mark.h - ayu/ui/boxes/edit_edited_mark.cpp - ayu/ui/boxes/edit_edited_mark.h + ayu/ui/boxes/edit_mark_box.cpp + ayu/ui/boxes/edit_mark_box.h ayu/ui/boxes/font_selector.cpp ayu/ui/boxes/font_selector.h ayu/ui/boxes/theme_selector_box.cpp @@ -155,6 +151,8 @@ set(ayugram_files ayu/ui/boxes/message_shot_box.h ayu/ui/components/image_view.cpp ayu/ui/components/image_view.h + ayu/ui/components/icon_picker.cpp + ayu/ui/components/icon_picker.h ayu/libs/json.hpp ayu/libs/json_ext.hpp ayu/libs/sqlite/sqlite3.c diff --git a/Telegram/SourceFiles/api/api_polls.cpp b/Telegram/SourceFiles/api/api_polls.cpp index 303dd8f4e4..9a68a71e01 100644 --- a/Telegram/SourceFiles/api/api_polls.cpp +++ b/Telegram/SourceFiles/api/api_polls.cpp @@ -171,7 +171,7 @@ void Polls::sendVotes( hideSending(); _session->updates().applyUpdates(result); - const auto& settings = AyuSettings::getInstance(); + const auto &settings = AyuSettings::getInstance(); if (!settings.sendReadMessages && settings.markReadAfterAction && item) { readHistory(item); diff --git a/Telegram/SourceFiles/api/api_send_progress.cpp b/Telegram/SourceFiles/api/api_send_progress.cpp index 18cbbc3c64..2f3eeabc63 100644 --- a/Telegram/SourceFiles/api/api_send_progress.cpp +++ b/Telegram/SourceFiles/api/api_send_progress.cpp @@ -118,7 +118,7 @@ void SendProgressManager::send(const Key &key, int progress) { } // AyuGram sendUploadProgress - const auto& settings = AyuSettings::getInstance(); + const auto &settings = AyuSettings::getInstance(); if (!settings.sendUploadProgress) { DEBUG_LOG(("[AyuGram] Don't send upload progress")); diff --git a/Telegram/SourceFiles/api/api_updates.cpp b/Telegram/SourceFiles/api/api_updates.cpp index 2cdb347706..5bac3c0aab 100644 --- a/Telegram/SourceFiles/api/api_updates.cpp +++ b/Telegram/SourceFiles/api/api_updates.cpp @@ -998,7 +998,7 @@ void Updates::updateOnline(crl::time lastNonIdleTime, bool gotOtherOffline) { }); // AyuGram sendOnlinePackets - const auto& settings = AyuSettings::getInstance(); + const auto &settings = AyuSettings::getInstance(); const auto& config = _session->serverConfig(); bool isOnlineOrig = Core::App().hasActiveWindow(&session()); bool isOnline = settings.sendOnlinePackets && isOnlineOrig; diff --git a/Telegram/SourceFiles/apiwrap.cpp b/Telegram/SourceFiles/apiwrap.cpp index cf03883baa..44b5427fd6 100644 --- a/Telegram/SourceFiles/apiwrap.cpp +++ b/Telegram/SourceFiles/apiwrap.cpp @@ -426,7 +426,7 @@ void ApiWrap::toggleHistoryArchived( if (archived) { history->setFolder(_session->data().folder(archiveId)); } else { - const auto& settings = AyuSettings::getInstance(); + const auto &settings = AyuSettings::getInstance(); if (settings.hideAllChatsFolder) { if (const auto window = Core::App().activeWindow()) { if (const auto controller = window->sessionController()) { @@ -1303,7 +1303,7 @@ void ApiWrap::migrateFail(not_null peer, const QString &error) { void ApiWrap::markContentsRead( const base::flat_set> &items) { - const auto& settings = AyuSettings::getInstance(); + const auto &settings = AyuSettings::getInstance(); auto markedIds = QVector(); auto channelMarkedIds = base::flat_map< @@ -1349,7 +1349,7 @@ void ApiWrap::markContentsRead(not_null item) { return; } - const auto& settings = AyuSettings::getInstance(); + const auto &settings = AyuSettings::getInstance(); if (!settings.sendReadMessages && !passthrough) { return; } @@ -1752,7 +1752,7 @@ void ApiWrap::joinChannel(not_null channel) { using Flag = ChannelDataFlag; chatParticipants().loadSimilarPeers(channel); - const auto& settings = AyuSettings::getInstance(); + const auto &settings = AyuSettings::getInstance(); if (!settings.collapseSimilarChannels) { channel->setFlags(channel->flags() | Flag::SimilarExpanded); } @@ -3380,7 +3380,7 @@ void ApiWrap::forwardMessages( shared->callback(); } - const auto& settings = AyuSettings::getInstance(); + const auto &settings = AyuSettings::getInstance(); if (!settings.sendReadMessages && settings.markReadAfterAction && history->lastMessage()) { readHistory(history->lastMessage()); diff --git a/Telegram/SourceFiles/ayu/ayu_infra.cpp b/Telegram/SourceFiles/ayu/ayu_infra.cpp index 5571b36ec6..71bb7804a4 100644 --- a/Telegram/SourceFiles/ayu/ayu_infra.cpp +++ b/Telegram/SourceFiles/ayu/ayu_infra.cpp @@ -28,7 +28,7 @@ void initLang() { } void initUiSettings() { - const auto& settings = AyuSettings::getInstance(); + const auto &settings = AyuSettings::getInstance(); AyuUiSettings::setMonoFont(settings.monoFont); AyuUiSettings::setWideMultiplier(settings.wideMultiplier); diff --git a/Telegram/SourceFiles/ayu/ayu_settings.cpp b/Telegram/SourceFiles/ayu/ayu_settings.cpp index e3ea5e76ec..f38b86d612 100644 --- a/Telegram/SourceFiles/ayu/ayu_settings.cpp +++ b/Telegram/SourceFiles/ayu/ayu_settings.cpp @@ -417,8 +417,8 @@ void set_localPremium(bool val) { settings->localPremium = val; } -void set_appIcon(QString val) { - settings->appIcon = std::move(val); +void set_appIcon(const QString &val) { + settings->appIcon = val; } void set_simpleQuotesAndReplies(bool val) { @@ -429,13 +429,13 @@ void set_replaceBottomInfoWithIcons(bool val) { settings->replaceBottomInfoWithIcons = val; } -void set_deletedMark(QString val) { - settings->deletedMark = std::move(val); +void set_deletedMark(const QString &val) { + settings->deletedMark = val; deletedMarkReactive = settings->deletedMark; } -void set_editedMark(QString val) { - settings->editedMark = std::move(val); +void set_editedMark(const QString &val) { + settings->editedMark = val; editedMarkReactive = settings->editedMark; } @@ -522,7 +522,7 @@ void set_showStreamerToggleInTray(bool val) { settings->showStreamerToggleInTray = val; } -void set_monoFont(QString val) { +void set_monoFont(const QString &val) { settings->monoFont = val; } diff --git a/Telegram/SourceFiles/ayu/ayu_settings.h b/Telegram/SourceFiles/ayu/ayu_settings.h index 6bbf81c7c7..44939b05fb 100644 --- a/Telegram/SourceFiles/ayu/ayu_settings.h +++ b/Telegram/SourceFiles/ayu/ayu_settings.h @@ -132,11 +132,11 @@ void set_increaseWebviewWidth(bool val); void set_disableNotificationsDelay(bool val); void set_localPremium(bool val); -void set_appIcon(QString val); +void set_appIcon(const QString &val); void set_simpleQuotesAndReplies(bool val); void set_replaceBottomInfoWithIcons(bool val); -void set_deletedMark(QString val); -void set_editedMark(QString val); +void set_deletedMark(const QString &val); +void set_editedMark(const QString &val); void set_recentStickersCount(int val); void set_showReactionsPanelInContextMenu(int val); @@ -162,7 +162,7 @@ void set_showStreamerToggleInDrawer(bool val); void set_showGhostToggleInTray(bool val); void set_showStreamerToggleInTray(bool val); -void set_monoFont(QString val); +void set_monoFont(const QString &val); void set_hideNotificationCounters(bool val); void set_hideNotificationBadge(bool val); diff --git a/Telegram/SourceFiles/ayu/ayu_worker.cpp b/Telegram/SourceFiles/ayu/ayu_worker.cpp index 6ed8a19335..5cfc3faadc 100644 --- a/Telegram/SourceFiles/ayu/ayu_worker.cpp +++ b/Telegram/SourceFiles/ayu/ayu_worker.cpp @@ -42,7 +42,7 @@ void runOnce() { lateInit(); } - const auto& settings = AyuSettings::getInstance(); + const auto &settings = AyuSettings::getInstance(); if (!settings.sendOfflinePacketAfterOnline) { return; } diff --git a/Telegram/SourceFiles/ayu/ui/ayu_logo.cpp b/Telegram/SourceFiles/ayu/ui/ayu_logo.cpp index 45395f1ccf..59d00abe2d 100644 --- a/Telegram/SourceFiles/ayu/ui/ayu_logo.cpp +++ b/Telegram/SourceFiles/ayu/ui/ayu_logo.cpp @@ -14,7 +14,7 @@ static QImage LAST_LOADED_NO_MARGIN; namespace AyuAssets { void loadAppIco() { - const auto& settings = AyuSettings::getInstance(); + const auto &settings = AyuSettings::getInstance(); QString appDataPath = QDir::fromNativeSeparators(qgetenv("APPDATA")); QString tempIconPath = appDataPath + "/AyuGram.ico"; @@ -30,7 +30,7 @@ void loadAppIco() { } void loadIcons() { - const auto& settings = AyuSettings::getInstance(); + const auto &settings = AyuSettings::getInstance(); if (LAST_LOADED_NAME != settings.appIcon) { LAST_LOADED_NAME = settings.appIcon; diff --git a/Telegram/SourceFiles/ayu/ui/boxes/edit_edited_mark.cpp b/Telegram/SourceFiles/ayu/ui/boxes/edit_edited_mark.cpp deleted file mode 100644 index 1cc86f7aef..0000000000 --- a/Telegram/SourceFiles/ayu/ui/boxes/edit_edited_mark.cpp +++ /dev/null @@ -1,93 +0,0 @@ -// This is the source code of AyuGram for Desktop. -// -// We do not and cannot prevent the use of our code, -// but be respectful and credit the original author. -// -// Copyright @Radolyn, 2025 -#include "edit_edited_mark.h" - -#include "boxes/peer_list_controllers.h" -#include "lang/lang_keys.h" -#include "styles/style_boxes.h" -#include "styles/style_layers.h" -#include "styles/style_widgets.h" -#include "ui/widgets/popup_menu.h" -#include "ui/widgets/fields/input_field.h" -#include "ui/widgets/fields/special_fields.h" - -#include "ayu/ayu_settings.h" - -EditEditedMarkBox::EditEditedMarkBox(QWidget *) - : _text( - this, - st::defaultInputField, - tr::ayu_EditedMarkText(), - AyuSettings::getInstance().editedMark) { -} - -void EditEditedMarkBox::prepare() { - const auto defaultEditedMark = tr::lng_edited(tr::now); - auto newHeight = st::contactPadding.top() + _text->height(); - - setTitle(tr::ayu_EditedMarkText()); - - newHeight += st::boxPadding.bottom() + st::contactPadding.bottom(); - setDimensions(st::boxWidth, newHeight); - - addLeftButton(tr::ayu_BoxActionReset(), - [=] - { - _text->setText(defaultEditedMark); - }); - addButton(tr::lng_settings_save(), - [=] - { - save(); - }); - addButton(tr::lng_cancel(), - [=] - { - closeBox(); - }); - - const auto submitted = [=] - { - submit(); - }; - _text->submits( - ) | rpl::start_with_next(submitted, _text->lifetime()); -} - -void EditEditedMarkBox::setInnerFocus() { - _text->setFocusFast(); -} - -void EditEditedMarkBox::submit() { - if (_text->getLastText().trimmed().isEmpty()) { - _text->setFocus(); - _text->showError(); - } else { - save(); - } -} - -void EditEditedMarkBox::resizeEvent(QResizeEvent *e) { - BoxContent::resizeEvent(e); - - _text->resize( - width() - - st::boxPadding.left() - - st::newGroupInfoPadding.left() - - st::boxPadding.right(), - _text->height()); - - const auto left = st::boxPadding.left() + st::newGroupInfoPadding.left(); - _text->moveToLeft(left, st::contactPadding.top()); -} - -void EditEditedMarkBox::save() { - AyuSettings::set_editedMark(_text->getLastText()); - AyuSettings::save(); - - closeBox(); -} diff --git a/Telegram/SourceFiles/ayu/ui/boxes/edit_edited_mark.h b/Telegram/SourceFiles/ayu/ui/boxes/edit_edited_mark.h deleted file mode 100644 index d12e3bca2b..0000000000 --- a/Telegram/SourceFiles/ayu/ui/boxes/edit_edited_mark.h +++ /dev/null @@ -1,28 +0,0 @@ -// This is the source code of AyuGram for Desktop. -// -// We do not and cannot prevent the use of our code, -// but be respectful and credit the original author. -// -// Copyright @Radolyn, 2025 -#pragma once - -#include "base/timer.h" -#include "boxes/abstract_box.h" -#include "mtproto/sender.h" - -class EditEditedMarkBox : public Ui::BoxContent -{ -public: - EditEditedMarkBox(QWidget *); - -protected: - void setInnerFocus() override; - void prepare() override; - void resizeEvent(QResizeEvent *e) override; - -private: - void submit(); - void save(); - - object_ptr _text; -}; diff --git a/Telegram/SourceFiles/ayu/ui/boxes/edit_deleted_mark.cpp b/Telegram/SourceFiles/ayu/ui/boxes/edit_mark_box.cpp similarity index 68% rename from Telegram/SourceFiles/ayu/ui/boxes/edit_deleted_mark.cpp rename to Telegram/SourceFiles/ayu/ui/boxes/edit_mark_box.cpp index c077b9aeef..225adbda6c 100644 --- a/Telegram/SourceFiles/ayu/ui/boxes/edit_deleted_mark.cpp +++ b/Telegram/SourceFiles/ayu/ui/boxes/edit_mark_box.cpp @@ -4,7 +4,9 @@ // but be respectful and credit the original author. // // Copyright @Radolyn, 2025 -#include "edit_deleted_mark.h" +#include "edit_mark_box.h" + +#include #include "boxes/peer_list_controllers.h" #include "lang/lang_keys.h" @@ -17,19 +19,25 @@ #include "ayu/ayu_settings.h" -EditDeletedMarkBox::EditDeletedMarkBox(QWidget *) - : _text( - this, - st::defaultInputField, - tr::ayu_DeletedMarkText(), - AyuSettings::getInstance().deletedMark) { +EditMarkBox::EditMarkBox(QWidget *, + rpl::producer title, + const QString ¤tValue, + QString defaultValue, + const Fn &saveCallback) + : _title(title) + , _defaultValue(std::move(defaultValue)) + , _saveCallback(saveCallback) + , _text( + this, + st::defaultInputField, + title, + currentValue) { } -void EditDeletedMarkBox::prepare() { - const auto defaultDeletedMark = "🧹"; +void EditMarkBox::prepare() { auto newHeight = st::contactPadding.top() + _text->height(); - setTitle(tr::ayu_DeletedMarkText()); + setTitle(_title); newHeight += st::boxPadding.bottom() + st::contactPadding.bottom(); setDimensions(st::boxWidth, newHeight); @@ -37,7 +45,7 @@ void EditDeletedMarkBox::prepare() { addLeftButton(tr::ayu_BoxActionReset(), [=] { - _text->setText(defaultDeletedMark); + _text->setText(_defaultValue); }); addButton(tr::lng_settings_save(), @@ -59,11 +67,11 @@ void EditDeletedMarkBox::prepare() { ) | rpl::start_with_next(submitted, _text->lifetime()); } -void EditDeletedMarkBox::setInnerFocus() { +void EditMarkBox::setInnerFocus() { _text->setFocusFast(); } -void EditDeletedMarkBox::submit() { +void EditMarkBox::submit() { if (_text->getLastText().trimmed().isEmpty()) { _text->setFocus(); _text->showError(); @@ -72,7 +80,7 @@ void EditDeletedMarkBox::submit() { } } -void EditDeletedMarkBox::resizeEvent(QResizeEvent *e) { +void EditMarkBox::resizeEvent(QResizeEvent *e) { BoxContent::resizeEvent(e); _text->resize( @@ -86,9 +94,7 @@ void EditDeletedMarkBox::resizeEvent(QResizeEvent *e) { _text->moveToLeft(left, st::contactPadding.top()); } -void EditDeletedMarkBox::save() { - AyuSettings::set_deletedMark(_text->getLastText()); - AyuSettings::save(); - +void EditMarkBox::save() { + _saveCallback(_text->getLastText()); closeBox(); } diff --git a/Telegram/SourceFiles/ayu/ui/boxes/edit_deleted_mark.h b/Telegram/SourceFiles/ayu/ui/boxes/edit_mark_box.h similarity index 58% rename from Telegram/SourceFiles/ayu/ui/boxes/edit_deleted_mark.h rename to Telegram/SourceFiles/ayu/ui/boxes/edit_mark_box.h index f2479a8b49..c5201141ca 100644 --- a/Telegram/SourceFiles/ayu/ui/boxes/edit_deleted_mark.h +++ b/Telegram/SourceFiles/ayu/ui/boxes/edit_mark_box.h @@ -9,10 +9,14 @@ #include "base/timer.h" #include "boxes/abstract_box.h" -class EditDeletedMarkBox : public Ui::BoxContent +namespace Ui { +class InputField; +} + +class EditMarkBox : public Ui::BoxContent { public: - EditDeletedMarkBox(QWidget *); + EditMarkBox(QWidget *, rpl::producer title, const QString& currentValue, QString defaultValue, const Fn &saveCallback); protected: void setInnerFocus() override; @@ -23,5 +27,9 @@ private: void submit(); void save(); + rpl::producer _title; + QString _defaultValue; + Fn _saveCallback; + object_ptr _text; }; diff --git a/Telegram/SourceFiles/ayu/ui/boxes/message_shot_box.cpp b/Telegram/SourceFiles/ayu/ui/boxes/message_shot_box.cpp index 9b69d02cd2..872affb742 100644 --- a/Telegram/SourceFiles/ayu/ui/boxes/message_shot_box.cpp +++ b/Telegram/SourceFiles/ayu/ui/boxes/message_shot_box.cpp @@ -38,7 +38,7 @@ void MessageShotBox::prepare() { void MessageShotBox::setupContent() { _selectedPalette = std::make_shared(); - const auto& settings = AyuSettings::getInstance(); + const auto &settings = AyuSettings::getInstance(); const auto savedShowColorfulReplies = !settings.simpleQuotesAndReplies; using namespace Settings; diff --git a/Telegram/SourceFiles/ayu/ui/settings/icon_picker.cpp b/Telegram/SourceFiles/ayu/ui/components/icon_picker.cpp similarity index 98% rename from Telegram/SourceFiles/ayu/ui/settings/icon_picker.cpp rename to Telegram/SourceFiles/ayu/ui/components/icon_picker.cpp index 4be98b0355..64b8940dde 100644 --- a/Telegram/SourceFiles/ayu/ui/settings/icon_picker.cpp +++ b/Telegram/SourceFiles/ayu/ui/components/icon_picker.cpp @@ -121,7 +121,7 @@ void IconPicker::paintEvent(QPaintEvent *e) { } void IconPicker::mousePressEvent(QMouseEvent *e) { - const auto& settings = AyuSettings::getInstance(); + const auto &settings = AyuSettings::getInstance(); auto changed = false; auto x = e->pos().x(); diff --git a/Telegram/SourceFiles/ayu/ui/settings/icon_picker.h b/Telegram/SourceFiles/ayu/ui/components/icon_picker.h similarity index 100% rename from Telegram/SourceFiles/ayu/ui/settings/icon_picker.h rename to Telegram/SourceFiles/ayu/ui/components/icon_picker.h diff --git a/Telegram/SourceFiles/ayu/ui/context_menu/context_menu.cpp b/Telegram/SourceFiles/ayu/ui/context_menu/context_menu.cpp index 7216520af4..f4778ee9c7 100644 --- a/Telegram/SourceFiles/ayu/ui/context_menu/context_menu.cpp +++ b/Telegram/SourceFiles/ayu/ui/context_menu/context_menu.cpp @@ -197,7 +197,7 @@ void AddHistoryAction(not_null menu, HistoryItem *item) { } void AddHideMessageAction(not_null menu, HistoryItem *item) { - const auto& settings = AyuSettings::getInstance(); + const auto &settings = AyuSettings::getInstance(); if (!needToShowItem(settings.showHideMessageInContextMenu)) { return; } @@ -220,7 +220,7 @@ void AddHideMessageAction(not_null menu, HistoryItem *item) { } void AddUserMessagesAction(not_null menu, HistoryItem *item) { - const auto& settings = AyuSettings::getInstance(); + const auto &settings = AyuSettings::getInstance(); if (!needToShowItem(settings.showUserMessagesInContextMenu)) { return; } @@ -245,7 +245,7 @@ void AddUserMessagesAction(not_null menu, HistoryItem *item) { } void AddMessageDetailsAction(not_null menu, HistoryItem *item) { - const auto& settings = AyuSettings::getInstance(); + const auto &settings = AyuSettings::getInstance(); if (!needToShowItem(settings.showMessageDetailsInContextMenu)) { return; } @@ -464,7 +464,7 @@ void AddReadUntilAction(not_null menu, HistoryItem *item) { return; } - const auto& settings = AyuSettings::getInstance(); + const auto &settings = AyuSettings::getInstance(); if (settings.sendReadMessages) { return; } diff --git a/Telegram/SourceFiles/ayu/ui/settings/settings_ayu.cpp b/Telegram/SourceFiles/ayu/ui/settings/settings_ayu.cpp index 9ace785559..520ea113b9 100644 --- a/Telegram/SourceFiles/ayu/ui/settings/settings_ayu.cpp +++ b/Telegram/SourceFiles/ayu/ui/settings/settings_ayu.cpp @@ -7,8 +7,7 @@ #include "settings_ayu.h" #include "ayu/ayu_settings.h" -#include "ayu/ui/boxes/edit_deleted_mark.h" -#include "ayu/ui/boxes/edit_edited_mark.h" +#include "ayu/ui/boxes/edit_mark_box.h" #include "ayu/ui/boxes/font_selector.h" #include "lang_auto.h" @@ -27,7 +26,7 @@ #include "styles/style_settings.h" #include "styles/style_widgets.h" -#include "icon_picker.h" +#include "../components/icon_picker.h" #include "tray.h" #include "core/application.h" #include "main/main_domain.h" @@ -37,7 +36,6 @@ #include "ui/boxes/confirm_box.h" #include "ui/boxes/single_choice_box.h" #include "ui/text/text_utilities.h" -#include "ui/toast/toast.h" #include "ui/widgets/buttons.h" #include "ui/widgets/checkbox.h" #include "ui/widgets/continuous_sliders.h" @@ -464,41 +462,41 @@ Ayu::Ayu( } void SetupGhostModeToggle(not_null container) { - const auto& settings = AyuSettings::getInstance(); + auto *settings = &AyuSettings::getInstance(); AddSubsectionTitle(container, tr::ayu_GhostEssentialsHeader()); std::vector checkboxes{ NestedEntry{ - tr::ayu_DontReadMessages(tr::now), !settings.sendReadMessages, [=](bool enabled) + tr::ayu_DontReadMessages(tr::now), !settings->sendReadMessages, [=](bool enabled) { AyuSettings::set_sendReadMessages(!enabled); AyuSettings::save(); } }, NestedEntry{ - tr::ayu_DontReadStories(tr::now), !settings.sendReadStories, [=](bool enabled) + tr::ayu_DontReadStories(tr::now), !settings->sendReadStories, [=](bool enabled) { AyuSettings::set_sendReadStories(!enabled); AyuSettings::save(); } }, NestedEntry{ - tr::ayu_DontSendOnlinePackets(tr::now), !settings.sendOnlinePackets, [=](bool enabled) + tr::ayu_DontSendOnlinePackets(tr::now), !settings->sendOnlinePackets, [=](bool enabled) { AyuSettings::set_sendOnlinePackets(!enabled); AyuSettings::save(); } }, NestedEntry{ - tr::ayu_DontSendUploadProgress(tr::now), !settings.sendUploadProgress, [=](bool enabled) + tr::ayu_DontSendUploadProgress(tr::now), !settings->sendUploadProgress, [=](bool enabled) { AyuSettings::set_sendUploadProgress(!enabled); AyuSettings::save(); } }, NestedEntry{ - tr::ayu_SendOfflinePacketAfterOnline(tr::now), settings.sendOfflinePacketAfterOnline, [=](bool enabled) + tr::ayu_SendOfflinePacketAfterOnline(tr::now), settings->sendOfflinePacketAfterOnline, [=](bool enabled) { AyuSettings::set_sendOfflinePacketAfterOnline(enabled); AyuSettings::save(); @@ -510,13 +508,14 @@ void SetupGhostModeToggle(not_null container) { } void SetupGhostEssentials(not_null container) { - const auto& settings = AyuSettings::getInstance(); + auto *settings = &AyuSettings::getInstance(); SetupGhostModeToggle(container); - auto markReadAfterActionVal = container->lifetime().make_state>(settings.sendOfflinePacketAfterOnline); + auto markReadAfterActionVal = container->lifetime().make_state>( + settings->markReadAfterAction); auto useScheduledMessagesVal = container->lifetime().make_state>(settings.useScheduledMessages); + bool>>(settings->useScheduledMessages); AddButtonWithIcon( container, @@ -528,7 +527,7 @@ void SetupGhostEssentials(not_null container) { ) | rpl::filter( [=](bool enabled) { - return (enabled != settings.sendOfflinePacketAfterOnline); + return (enabled != settings->markReadAfterAction); }) | start_with_next( [=](bool enabled) { @@ -555,7 +554,7 @@ void SetupGhostEssentials(not_null container) { ) | rpl::filter( [=](bool enabled) { - return (enabled != settings.useScheduledMessages); + return (enabled != settings->useScheduledMessages); }) | start_with_next( [=](bool enabled) { @@ -577,12 +576,12 @@ void SetupGhostEssentials(not_null container) { tr::ayu_SendWithoutSoundByDefault(), st::settingsButtonNoIcon )->toggleOn( - rpl::single(settings.sendWithoutSound) + rpl::single(settings->sendWithoutSound) )->toggledValue( ) | rpl::filter( [=](bool enabled) { - return (enabled != settings.sendWithoutSound); + return (enabled != settings->sendWithoutSound); }) | start_with_next( [=](bool enabled) { @@ -595,7 +594,7 @@ void SetupGhostEssentials(not_null container) { } void SetupSpyEssentials(not_null container) { - const auto& settings = AyuSettings::getInstance(); + auto *settings = &AyuSettings::getInstance(); AddSubsectionTitle(container, tr::ayu_SpyEssentialsHeader()); @@ -604,12 +603,12 @@ void SetupSpyEssentials(not_null container) { tr::ayu_SaveDeletedMessages(), st::settingsButtonNoIcon )->toggleOn( - rpl::single(settings.saveDeletedMessages) + rpl::single(settings->saveDeletedMessages) )->toggledValue( ) | rpl::filter( [=](bool enabled) { - return (enabled != settings.saveDeletedMessages); + return (enabled != settings->saveDeletedMessages); }) | start_with_next( [=](bool enabled) { @@ -623,12 +622,12 @@ void SetupSpyEssentials(not_null container) { tr::ayu_SaveMessagesHistory(), st::settingsButtonNoIcon )->toggleOn( - rpl::single(settings.saveMessagesHistory) + rpl::single(settings->saveMessagesHistory) )->toggledValue( ) | rpl::filter( [=](bool enabled) { - return (enabled != settings.saveMessagesHistory); + return (enabled != settings->saveMessagesHistory); }) | start_with_next( [=](bool enabled) { @@ -646,12 +645,12 @@ void SetupSpyEssentials(not_null container) { tr::ayu_MessageSavingSaveForBots(), st::settingsButtonNoIcon )->toggleOn( - rpl::single(settings.saveForBots) + rpl::single(settings->saveForBots) )->toggledValue( ) | rpl::filter( [=](bool enabled) { - return (enabled != settings.saveForBots); + return (enabled != settings->saveForBots); }) | start_with_next( [=](bool enabled) { @@ -662,7 +661,7 @@ void SetupSpyEssentials(not_null container) { } void SetupMessageFilters(not_null container) { - auto& settings = AyuSettings::getInstance(); + auto *settings = &AyuSettings::getInstance(); AddSubsectionTitle(container, tr::ayu_RegexFilters()); @@ -671,12 +670,12 @@ void SetupMessageFilters(not_null container) { tr::ayu_FiltersHideFromBlocked(), st::settingsButtonNoIcon )->toggleOn( - rpl::single(settings.hideFromBlocked) + rpl::single(settings->hideFromBlocked) )->toggledValue( ) | rpl::filter( [=](bool enabled) { - return (enabled != settings.hideFromBlocked); + return (enabled != settings->hideFromBlocked); }) | start_with_next( [=](bool enabled) { @@ -687,7 +686,7 @@ void SetupMessageFilters(not_null container) { } void SetupQoLToggles(not_null container) { - const auto& settings = AyuSettings::getInstance(); + auto *settings = &AyuSettings::getInstance(); AddSubsectionTitle(container, tr::ayu_QoLTogglesHeader()); @@ -696,12 +695,12 @@ void SetupQoLToggles(not_null container) { tr::ayu_DisableAds(), st::settingsButtonNoIcon )->toggleOn( - rpl::single(settings.disableAds) + rpl::single(settings->disableAds) )->toggledValue( ) | rpl::filter( [=](bool enabled) { - return (enabled != settings.disableAds); + return (enabled != settings->disableAds); }) | start_with_next( [=](bool enabled) { @@ -715,12 +714,12 @@ void SetupQoLToggles(not_null container) { tr::ayu_DisableStories(), st::settingsButtonNoIcon )->toggleOn( - rpl::single(settings.disableStories) + rpl::single(settings->disableStories) )->toggledValue( ) | rpl::filter( [=](bool enabled) { - return (enabled != settings.disableStories); + return (enabled != settings->disableStories); }) | start_with_next( [=](bool enabled) { @@ -734,12 +733,12 @@ void SetupQoLToggles(not_null container) { tr::ayu_DisableCustomBackgrounds(), st::settingsButtonNoIcon )->toggleOn( - rpl::single(settings.disableCustomBackgrounds) + rpl::single(settings->disableCustomBackgrounds) )->toggledValue( ) | rpl::filter( [=](bool enabled) { - return (enabled != settings.disableCustomBackgrounds); + return (enabled != settings->disableCustomBackgrounds); }) | start_with_next( [=](bool enabled) { @@ -753,12 +752,12 @@ void SetupQoLToggles(not_null container) { tr::ayu_SimpleQuotesAndReplies(), st::settingsButtonNoIcon )->toggleOn( - rpl::single(settings.simpleQuotesAndReplies) + rpl::single(settings->simpleQuotesAndReplies) )->toggledValue( ) | rpl::filter( [=](bool enabled) { - return (enabled != settings.simpleQuotesAndReplies); + return (enabled != settings->simpleQuotesAndReplies); }) | start_with_next( [=](bool enabled) { @@ -769,14 +768,14 @@ void SetupQoLToggles(not_null container) { std::vector checkboxes = { NestedEntry{ - tr::ayu_CollapseSimilarChannels(tr::now), settings.collapseSimilarChannels, [=](bool enabled) + tr::ayu_CollapseSimilarChannels(tr::now), settings->collapseSimilarChannels, [=](bool enabled) { AyuSettings::set_collapseSimilarChannels(enabled); AyuSettings::save(); } }, NestedEntry{ - tr::ayu_HideSimilarChannelsTab(tr::now), settings.hideSimilarChannels, [=](bool enabled) + tr::ayu_HideSimilarChannelsTab(tr::now), settings->hideSimilarChannels, [=](bool enabled) { AyuSettings::set_hideSimilarChannels(enabled); AyuSettings::save(); @@ -795,12 +794,12 @@ void SetupQoLToggles(not_null container) { tr::ayu_DisableNotificationsDelay(), st::settingsButtonNoIcon )->toggleOn( - rpl::single(settings.disableNotificationsDelay) + rpl::single(settings->disableNotificationsDelay) )->toggledValue( ) | rpl::filter( [=](bool enabled) { - return (enabled != settings.disableNotificationsDelay); + return (enabled != settings->disableNotificationsDelay); }) | start_with_next( [=](bool enabled) { @@ -814,12 +813,12 @@ void SetupQoLToggles(not_null container) { tr::ayu_ShowOnlyAddedEmojisAndStickers(), st::settingsButtonNoIcon )->toggleOn( - rpl::single(settings.showOnlyAddedEmojisAndStickers) + rpl::single(settings->showOnlyAddedEmojisAndStickers) )->toggledValue( ) | rpl::filter( [=](bool enabled) { - return (enabled != settings.showOnlyAddedEmojisAndStickers); + return (enabled != settings->showOnlyAddedEmojisAndStickers); }) | start_with_next( [=](bool enabled) { @@ -833,12 +832,12 @@ void SetupQoLToggles(not_null container) { tr::ayu_LocalPremium(), st::settingsButtonNoIcon )->toggleOn( - rpl::single(settings.localPremium) + rpl::single(settings->localPremium) )->toggledValue( ) | rpl::filter( [=](bool enabled) { - return (enabled != settings.localPremium); + return (enabled != settings->localPremium); }) | start_with_next( [=](bool enabled) { @@ -856,7 +855,7 @@ void SetupAppIcon(not_null container) { void SetupContextMenuElements(not_null container, not_null controller) { - const auto& settings = AyuSettings::getInstance(); + auto *settings = &AyuSettings::getInstance(); AddSkip(container); AddSubsectionTitle(container, tr::ayu_ContextMenuElementsHeader()); @@ -870,7 +869,7 @@ void SetupContextMenuElements(not_null container, AddChooseButtonWithIconAndRightText( container, controller, - settings.showReactionsPanelInContextMenu, + settings->showReactionsPanelInContextMenu, options, tr::ayu_SettingsContextMenuReactionsPanel(), tr::ayu_SettingsContextMenuTitle(), @@ -883,7 +882,7 @@ void SetupContextMenuElements(not_null container, AddChooseButtonWithIconAndRightText( container, controller, - settings.showViewsPanelInContextMenu, + settings->showViewsPanelInContextMenu, options, tr::ayu_SettingsContextMenuViewsPanel(), tr::ayu_SettingsContextMenuTitle(), @@ -897,7 +896,7 @@ void SetupContextMenuElements(not_null container, AddChooseButtonWithIconAndRightText( container, controller, - settings.showHideMessageInContextMenu, + settings->showHideMessageInContextMenu, options, tr::ayu_ContextHideMessage(), tr::ayu_SettingsContextMenuTitle(), @@ -910,7 +909,7 @@ void SetupContextMenuElements(not_null container, AddChooseButtonWithIconAndRightText( container, controller, - settings.showUserMessagesInContextMenu, + settings->showUserMessagesInContextMenu, options, tr::ayu_UserMessagesMenuText(), tr::ayu_SettingsContextMenuTitle(), @@ -923,7 +922,7 @@ void SetupContextMenuElements(not_null container, AddChooseButtonWithIconAndRightText( container, controller, - settings.showMessageDetailsInContextMenu, + settings->showMessageDetailsInContextMenu, options, tr::ayu_MessageDetailsPC(), tr::ayu_SettingsContextMenuTitle(), @@ -939,7 +938,7 @@ void SetupContextMenuElements(not_null container, } void SetupMessageFieldElements(not_null container) { - const auto& settings = AyuSettings::getInstance(); + auto *settings = &AyuSettings::getInstance(); AddSkip(container); AddSubsectionTitle(container, tr::ayu_MessageFieldElementsHeader()); @@ -950,12 +949,12 @@ void SetupMessageFieldElements(not_null container) { st::settingsButton, {&st::messageFieldAttachIcon} )->toggleOn( - rpl::single(settings.showAttachButtonInMessageField) + rpl::single(settings->showAttachButtonInMessageField) )->toggledValue( ) | rpl::filter( [=](bool enabled) { - return (enabled != settings.showAttachButtonInMessageField); + return (enabled != settings->showAttachButtonInMessageField); }) | start_with_next( [=](bool enabled) { @@ -970,12 +969,12 @@ void SetupMessageFieldElements(not_null container) { st::settingsButton, {&st::messageFieldCommandsIcon} )->toggleOn( - rpl::single(settings.showCommandsButtonInMessageField) + rpl::single(settings->showCommandsButtonInMessageField) )->toggledValue( ) | rpl::filter( [=](bool enabled) { - return (enabled != settings.showCommandsButtonInMessageField); + return (enabled != settings->showCommandsButtonInMessageField); }) | start_with_next( [=](bool enabled) { @@ -990,12 +989,12 @@ void SetupMessageFieldElements(not_null container) { st::settingsButton, {&st::messageFieldTTLIcon} )->toggleOn( - rpl::single(settings.showAutoDeleteButtonInMessageField) + rpl::single(settings->showAutoDeleteButtonInMessageField) )->toggledValue( ) | rpl::filter( [=](bool enabled) { - return (enabled != settings.showAutoDeleteButtonInMessageField); + return (enabled != settings->showAutoDeleteButtonInMessageField); }) | start_with_next( [=](bool enabled) { @@ -1010,12 +1009,12 @@ void SetupMessageFieldElements(not_null container) { st::settingsButton, {&st::messageFieldEmojiIcon} )->toggleOn( - rpl::single(settings.showEmojiButtonInMessageField) + rpl::single(settings->showEmojiButtonInMessageField) )->toggledValue( ) | rpl::filter( [=](bool enabled) { - return (enabled != settings.showEmojiButtonInMessageField); + return (enabled != settings->showEmojiButtonInMessageField); }) | start_with_next( [=](bool enabled) { @@ -1030,12 +1029,12 @@ void SetupMessageFieldElements(not_null container) { st::settingsButton, {&st::messageFieldVoiceIcon} )->toggleOn( - rpl::single(settings.showMicrophoneButtonInMessageField) + rpl::single(settings->showMicrophoneButtonInMessageField) )->toggledValue( ) | rpl::filter( [=](bool enabled) { - return (enabled != settings.showMicrophoneButtonInMessageField); + return (enabled != settings->showMicrophoneButtonInMessageField); }) | start_with_next( [=](bool enabled) { @@ -1049,7 +1048,7 @@ void SetupMessageFieldElements(not_null container) { } void SetupMessageFieldPopups(not_null container) { - const auto& settings = AyuSettings::getInstance(); + auto *settings = &AyuSettings::getInstance(); AddSkip(container); AddSubsectionTitle(container, tr::ayu_MessageFieldPopupsHeader()); @@ -1060,12 +1059,12 @@ void SetupMessageFieldPopups(not_null container) { st::settingsButton, {&st::messageFieldAttachIcon} )->toggleOn( - rpl::single(settings.showAttachPopup) + rpl::single(settings->showAttachPopup) )->toggledValue( ) | rpl::filter( [=](bool enabled) { - return (enabled != settings.showAttachPopup); + return (enabled != settings->showAttachPopup); }) | start_with_next( [=](bool enabled) { @@ -1080,12 +1079,12 @@ void SetupMessageFieldPopups(not_null container) { st::settingsButton, {&st::messageFieldEmojiIcon} )->toggleOn( - rpl::single(settings.showEmojiPopup) + rpl::single(settings->showEmojiPopup) )->toggledValue( ) | rpl::filter( [=](bool enabled) { - return (enabled != settings.showEmojiPopup); + return (enabled != settings->showEmojiPopup); }) | start_with_next( [=](bool enabled) { @@ -1099,7 +1098,7 @@ void SetupMessageFieldPopups(not_null container) { } void SetupDrawerElements(not_null container) { - const auto& settings = AyuSettings::getInstance(); + auto *settings = &AyuSettings::getInstance(); AddSkip(container); AddSubsectionTitle(container, tr::ayu_DrawerElementsHeader()); @@ -1110,12 +1109,12 @@ void SetupDrawerElements(not_null container) { st::settingsButton, {&st::ayuLReadMenuIcon} )->toggleOn( - rpl::single(settings.showLReadToggleInDrawer) + rpl::single(settings->showLReadToggleInDrawer) )->toggledValue( ) | rpl::filter( [=](bool enabled) { - return (enabled != settings.showLReadToggleInDrawer); + return (enabled != settings->showLReadToggleInDrawer); }) | start_with_next( [=](bool enabled) { @@ -1130,12 +1129,12 @@ void SetupDrawerElements(not_null container) { st::settingsButton, {&st::ayuSReadMenuIcon} )->toggleOn( - rpl::single(settings.showSReadToggleInDrawer) + rpl::single(settings->showSReadToggleInDrawer) )->toggledValue( ) | rpl::filter( [=](bool enabled) { - return (enabled != settings.showSReadToggleInDrawer); + return (enabled != settings->showSReadToggleInDrawer); }) | start_with_next( [=](bool enabled) { @@ -1150,12 +1149,12 @@ void SetupDrawerElements(not_null container) { st::settingsButton, {&st::ayuGhostIcon} )->toggleOn( - rpl::single(settings.showGhostToggleInDrawer) + rpl::single(settings->showGhostToggleInDrawer) )->toggledValue( ) | rpl::filter( [=](bool enabled) { - return (enabled != settings.showGhostToggleInDrawer); + return (enabled != settings->showGhostToggleInDrawer); }) | start_with_next( [=](bool enabled) { @@ -1171,12 +1170,12 @@ void SetupDrawerElements(not_null container) { st::settingsButton, {&st::ayuStreamerModeMenuIcon} )->toggleOn( - rpl::single(settings.showStreamerToggleInDrawer) + rpl::single(settings->showStreamerToggleInDrawer) )->toggledValue( ) | rpl::filter( [=](bool enabled) { - return (enabled != settings.showStreamerToggleInDrawer); + return (enabled != settings->showStreamerToggleInDrawer); }) | start_with_next( [=](bool enabled) { @@ -1188,7 +1187,7 @@ void SetupDrawerElements(not_null container) { } void SetupTrayElements(not_null container) { - const auto& settings = AyuSettings::getInstance(); + auto *settings = &AyuSettings::getInstance(); AddSkip(container); AddSubsectionTitle(container, tr::ayu_TrayElementsHeader()); @@ -1198,12 +1197,12 @@ void SetupTrayElements(not_null container) { tr::ayu_EnableGhostModeTray(), st::settingsButtonNoIcon )->toggleOn( - rpl::single(settings.showGhostToggleInTray) + rpl::single(settings->showGhostToggleInTray) )->toggledValue( ) | rpl::filter( [=](bool enabled) { - return (enabled != settings.showGhostToggleInTray); + return (enabled != settings->showGhostToggleInTray); }) | start_with_next( [=](bool enabled) { @@ -1218,12 +1217,12 @@ void SetupTrayElements(not_null container) { tr::ayu_EnableStreamerModeTray(), st::settingsButtonNoIcon )->toggleOn( - rpl::single(settings.showStreamerToggleInTray) + rpl::single(settings->showStreamerToggleInTray) )->toggledValue( ) | rpl::filter( [=](bool enabled) { - return (enabled != settings.showStreamerToggleInTray); + return (enabled != settings->showStreamerToggleInTray); }) | start_with_next( [=](bool enabled) { @@ -1236,7 +1235,7 @@ void SetupTrayElements(not_null container) { void SetupShowPeerId(not_null container, not_null controller) { - const auto& settings = AyuSettings::getInstance(); + auto *settings = &AyuSettings::getInstance(); const auto options = std::vector{ QString(tr::ayu_SettingsShowID_Hide(tr::now)), @@ -1270,7 +1269,7 @@ void SetupShowPeerId(not_null container, { .title = tr::ayu_SettingsShowID(), .options = options, - .initialSelection = settings.showPeerId, + .initialSelection = settings->showPeerId, .callback = save, }); })); @@ -1278,7 +1277,7 @@ void SetupShowPeerId(not_null container, } void SetupRecentStickersLimitSlider(not_null container) { - const auto& settings = AyuSettings::getInstance(); + auto *settings = &AyuSettings::getInstance(); container->add( object_ptr