mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-04-16 06:07:06 +02:00
feat: add toggles to customization
This commit is contained in:
parent
aa0d733cde
commit
ae3dfacdf9
7 changed files with 233 additions and 71 deletions
|
@ -4493,6 +4493,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
"ayu_SettingsShowID_Hide" = "Hide";
|
||||
"ayu_SettingsRecentStickersCount" = "Recent stickers count";
|
||||
"ayu_SettingsCustomizationHint" = "After making changes to the \"Customization\" section, you must restart the application.";
|
||||
"ayu_DrawerElementsHeader" = "Drawer Elements";
|
||||
"ayu_TrayElementsHeader" = "Tray Elements";
|
||||
"ayu_RegexFilters" = "Message Filters";
|
||||
"ayu_RegexFiltersAmount" = "filters";
|
||||
"ayu_RegexFiltersHeader" = "Filters";
|
||||
|
|
|
@ -286,11 +286,36 @@ void AyuGramSettings::set_recentStickersCount(int val)
|
|||
recentStickersCount = val;
|
||||
}
|
||||
|
||||
void AyuGramSettings::set_showLReadToggleInDrawer(bool val)
|
||||
{
|
||||
showLReadToggleInDrawer = val;
|
||||
}
|
||||
|
||||
void AyuGramSettings::set_showSReadToggleInDrawer(bool val)
|
||||
{
|
||||
showSReadToggleInDrawer = val;
|
||||
}
|
||||
|
||||
void AyuGramSettings::set_showGhostToggleInDrawer(bool val)
|
||||
{
|
||||
showGhostToggleInDrawer = val;
|
||||
}
|
||||
|
||||
void AyuGramSettings::set_showStreamerToggleInDrawer(bool val)
|
||||
{
|
||||
showStreamerToggleInDrawer = val;
|
||||
}
|
||||
|
||||
void AyuGramSettings::set_showGhostToggleInTray(bool val)
|
||||
{
|
||||
showGhostToggleInTray = val;
|
||||
}
|
||||
|
||||
void AyuGramSettings::set_showStreamerToggleInTray(bool val)
|
||||
{
|
||||
showStreamerToggleInTray = val;
|
||||
}
|
||||
|
||||
void AyuGramSettings::set_mainFont(QString val)
|
||||
{
|
||||
mainFont = val;
|
||||
|
|
|
@ -63,8 +63,16 @@ public:
|
|||
simpleQuotesAndReplies = true;
|
||||
deletedMark = "🧹";
|
||||
editedMark = tr::lng_edited(tr::now);
|
||||
recentStickersCount = 20;
|
||||
recentStickersCount = 50;
|
||||
|
||||
showLReadToggleInDrawer = true;
|
||||
showSReadToggleInDrawer = true;
|
||||
showGhostToggleInDrawer = true;
|
||||
showStreamerToggleInDrawer = false;
|
||||
|
||||
showGhostToggleInTray = true;
|
||||
showStreamerToggleInTray = false;
|
||||
|
||||
mainFont = "";
|
||||
monoFont = "";
|
||||
|
||||
|
@ -105,7 +113,12 @@ public:
|
|||
QString deletedMark;
|
||||
QString editedMark;
|
||||
int recentStickersCount;
|
||||
bool showLReadToggleInDrawer;
|
||||
bool showSReadToggleInDrawer;
|
||||
bool showGhostToggleInDrawer;
|
||||
bool showStreamerToggleInDrawer;
|
||||
bool showGhostToggleInTray;
|
||||
bool showStreamerToggleInTray;
|
||||
QString mainFont;
|
||||
QString monoFont;
|
||||
int showPeerId;
|
||||
|
@ -160,8 +173,18 @@ public:
|
|||
|
||||
void set_recentStickersCount(int val);
|
||||
|
||||
void set_showLReadToggleInDrawer(bool val);
|
||||
|
||||
void set_showSReadToggleInDrawer(bool val);
|
||||
|
||||
void set_showGhostToggleInDrawer(bool val);
|
||||
|
||||
void set_showStreamerToggleInDrawer(bool val);
|
||||
|
||||
void set_showGhostToggleInTray(bool val);
|
||||
|
||||
void set_showStreamerToggleInTray(bool val);
|
||||
|
||||
void set_mainFont(QString val);
|
||||
|
||||
void set_monoFont(QString val);
|
||||
|
@ -201,7 +224,12 @@ NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(
|
|||
deletedMark,
|
||||
editedMark,
|
||||
recentStickersCount,
|
||||
showLReadToggleInDrawer,
|
||||
showSReadToggleInDrawer,
|
||||
showGhostToggleInDrawer,
|
||||
showStreamerToggleInDrawer,
|
||||
showGhostToggleInTray,
|
||||
showStreamerToggleInTray,
|
||||
mainFont,
|
||||
monoFont,
|
||||
showPeerId,
|
||||
|
|
|
@ -46,22 +46,11 @@
|
|||
#include "ui/wrap/slide_wrap.h"
|
||||
#include "ui/wrap/vertical_layout.h"
|
||||
#include "window/window_session_controller.h"
|
||||
#include "styles/style_ayu_icons.h"
|
||||
|
||||
|
||||
class PainterHighQualityEnabler;
|
||||
|
||||
const char kStreamerMode[] =
|
||||
"streamer-mode";
|
||||
|
||||
base::options::toggle StreamerMode(
|
||||
{
|
||||
.id = kStreamerMode,
|
||||
.name = "Show streamer mode toggles",
|
||||
.description = "Streamer mode completely hides AyuGram windows and notifications from capture apps.",
|
||||
.scope = base::options::windows,
|
||||
.restartRequired = true
|
||||
}
|
||||
);
|
||||
|
||||
not_null<Ui::RpWidget *> AddInnerToggle(not_null<Ui::VerticalLayout *> container,
|
||||
const style::SettingsButton &st,
|
||||
std::vector<not_null<Ui::AbstractCheckView *>> innerCheckViews,
|
||||
|
@ -848,12 +837,134 @@ void Ayu::SetupCustomization(not_null<Ui::VerticalLayout *> container,
|
|||
AyuSettings::save();
|
||||
}, container->lifetime());
|
||||
|
||||
AddSkip(container);
|
||||
AddDivider(container);
|
||||
SetupDrawerElements(container);
|
||||
AddSkip(container);
|
||||
AddDivider(container);
|
||||
SetupTrayElements(container);
|
||||
AddSkip(container);
|
||||
AddDivider(container);
|
||||
AddSkip(container);
|
||||
SetupFonts(container, controller);
|
||||
}
|
||||
|
||||
void Ayu::SetupDrawerElements(not_null<Ui::VerticalLayout *> container)
|
||||
{
|
||||
auto settings = &AyuSettings::getInstance();
|
||||
|
||||
AddSkip(container);
|
||||
AddSubsectionTitle(container, tr::ayu_DrawerElementsHeader());
|
||||
|
||||
AddButton(
|
||||
container,
|
||||
tr::ayu_LReadMessages(),
|
||||
st::settingsButton,
|
||||
{&st::ayuLReadMenuIcon}
|
||||
)->toggleOn(
|
||||
rpl::single(settings->showLReadToggleInDrawer)
|
||||
)->toggledValue(
|
||||
) | rpl::filter([=](bool enabled)
|
||||
{
|
||||
return (enabled != settings->showLReadToggleInDrawer);
|
||||
}) | start_with_next([=](bool enabled)
|
||||
{
|
||||
settings->set_showLReadToggleInDrawer(enabled);
|
||||
AyuSettings::save();
|
||||
}, container->lifetime());
|
||||
|
||||
AddButton(
|
||||
container,
|
||||
tr::ayu_SReadMessages(),
|
||||
st::settingsButton,
|
||||
{&st::ayuSReadMenuIcon}
|
||||
)->toggleOn(
|
||||
rpl::single(settings->showSReadToggleInDrawer)
|
||||
)->toggledValue(
|
||||
) | rpl::filter([=](bool enabled)
|
||||
{
|
||||
return (enabled != settings->showSReadToggleInDrawer);
|
||||
}) | start_with_next([=](bool enabled)
|
||||
{
|
||||
settings->set_showSReadToggleInDrawer(enabled);
|
||||
AyuSettings::save();
|
||||
}, container->lifetime());
|
||||
|
||||
AddButton(
|
||||
container,
|
||||
tr::ayu_GhostModeToggle(),
|
||||
st::settingsButton,
|
||||
{&st::ayuGhostIcon}
|
||||
)->toggleOn(
|
||||
rpl::single(settings->showGhostToggleInDrawer)
|
||||
)->toggledValue(
|
||||
) | rpl::filter([=](bool enabled)
|
||||
{
|
||||
return (enabled != settings->showGhostToggleInDrawer);
|
||||
}) | start_with_next([=](bool enabled)
|
||||
{
|
||||
settings->set_showGhostToggleInDrawer(enabled);
|
||||
AyuSettings::save();
|
||||
}, container->lifetime());
|
||||
|
||||
AddButton(
|
||||
container,
|
||||
tr::ayu_StreamerModeToggle(),
|
||||
st::settingsButton,
|
||||
{&st::ayuStreamerModeMenuIcon}
|
||||
)->toggleOn(
|
||||
rpl::single(settings->showStreamerToggleInDrawer)
|
||||
)->toggledValue(
|
||||
) | rpl::filter([=](bool enabled)
|
||||
{
|
||||
return (enabled != settings->showStreamerToggleInDrawer);
|
||||
}) | start_with_next([=](bool enabled)
|
||||
{
|
||||
settings->set_showStreamerToggleInDrawer(enabled);
|
||||
AyuSettings::save();
|
||||
}, container->lifetime());
|
||||
}
|
||||
|
||||
void Ayu::SetupTrayElements(not_null<Ui::VerticalLayout *> container)
|
||||
{
|
||||
auto settings = &AyuSettings::getInstance();
|
||||
|
||||
AddSkip(container);
|
||||
AddSubsectionTitle(container, tr::ayu_TrayElementsHeader());
|
||||
|
||||
AddButton(
|
||||
container,
|
||||
tr::ayu_EnableGhostModeTray(),
|
||||
st::settingsButtonNoIcon
|
||||
)->toggleOn(
|
||||
rpl::single(settings->showGhostToggleInTray)
|
||||
)->toggledValue(
|
||||
) | rpl::filter([=](bool enabled)
|
||||
{
|
||||
return (enabled != settings->showGhostToggleInTray);
|
||||
}) | start_with_next([=](bool enabled)
|
||||
{
|
||||
settings->set_showGhostToggleInTray(enabled);
|
||||
AyuSettings::save();
|
||||
}, container->lifetime());
|
||||
|
||||
AddButton(
|
||||
container,
|
||||
tr::ayu_EnableStreamerModeTray(),
|
||||
st::settingsButtonNoIcon
|
||||
)->toggleOn(
|
||||
rpl::single(settings->showStreamerToggleInTray)
|
||||
)->toggledValue(
|
||||
) | rpl::filter([=](bool enabled)
|
||||
{
|
||||
return (enabled != settings->showStreamerToggleInTray);
|
||||
}) | start_with_next([=](bool enabled)
|
||||
{
|
||||
settings->set_showStreamerToggleInTray(enabled);
|
||||
AyuSettings::save();
|
||||
}, container->lifetime());
|
||||
}
|
||||
|
||||
void Ayu::SetupShowPeerId(not_null<Ui::VerticalLayout *> container,
|
||||
not_null<Window::SessionController *> controller)
|
||||
{
|
||||
|
@ -1057,13 +1168,6 @@ void Ayu::SetupSendConfirmations(not_null<Ui::VerticalLayout *> container)
|
|||
}, container->lifetime());
|
||||
}
|
||||
|
||||
void Ayu::SetupExperimental(not_null<Ui::VerticalLayout *> container,
|
||||
not_null<Window::SessionController *> controller)
|
||||
{
|
||||
AddSubsectionTitle(container, tr::lng_settings_experimental());
|
||||
AddPlatformOption(controller, container, StreamerMode, rpl::producer<>());
|
||||
}
|
||||
|
||||
void Ayu::SetupAyuGramSettings(not_null<Ui::VerticalLayout *> container,
|
||||
not_null<Window::SessionController *> controller)
|
||||
{
|
||||
|
@ -1102,10 +1206,7 @@ void Ayu::SetupAyuGramSettings(not_null<Ui::VerticalLayout *> container,
|
|||
AddSkip(container);
|
||||
SetupSendConfirmations(container);
|
||||
AddSkip(container);
|
||||
|
||||
AddDivider(container);
|
||||
AddSkip(container);
|
||||
SetupExperimental(container, controller);
|
||||
|
||||
AddDividerText(container, tr::ayu_SettingsWatermark());
|
||||
}
|
||||
|
|
|
@ -17,10 +17,6 @@ class Controller;
|
|||
class SessionController;
|
||||
} // namespace Window
|
||||
|
||||
extern const char kStreamerMode[];
|
||||
|
||||
extern base::options::toggle StreamerMode;
|
||||
|
||||
namespace Settings
|
||||
{
|
||||
|
||||
|
@ -53,6 +49,10 @@ private:
|
|||
void SetupCustomization(not_null<Ui::VerticalLayout *> container,
|
||||
not_null<Window::SessionController *> controller);
|
||||
|
||||
void SetupDrawerElements(not_null<Ui::VerticalLayout *> container);
|
||||
|
||||
void SetupTrayElements(not_null<Ui::VerticalLayout *> container);
|
||||
|
||||
void SetupShowPeerId(not_null<Ui::VerticalLayout *> container, not_null<Window::SessionController *> controller);
|
||||
|
||||
void SetupRecentStickersLimitSlider(not_null<Ui::VerticalLayout *> container);
|
||||
|
@ -63,9 +63,6 @@ private:
|
|||
|
||||
void SetupSendConfirmations(not_null<Ui::VerticalLayout *> container);
|
||||
|
||||
void SetupExperimental(not_null<Ui::VerticalLayout *> container,
|
||||
not_null<Window::SessionController *> controller);
|
||||
|
||||
void SetupAyuGramSettings(not_null<Ui::VerticalLayout *> container, not_null<Window::SessionController *> null);
|
||||
|
||||
void setupContent(not_null<Window::SessionController *> controller);
|
||||
|
|
|
@ -100,6 +100,8 @@ void Tray::rebuildMenu() {
|
|||
[=] { toggleSoundNotifications(); });
|
||||
}
|
||||
|
||||
auto settings = &AyuSettings::getInstance();
|
||||
|
||||
auto turnGhostModeText = _textUpdates.events(
|
||||
) | rpl::map([=]
|
||||
{
|
||||
|
@ -111,7 +113,6 @@ void Tray::rebuildMenu() {
|
|||
});
|
||||
_tray.addAction(std::move(turnGhostModeText), [=]
|
||||
{
|
||||
auto settings = &AyuSettings::getInstance();
|
||||
bool ghostMode = AyuSettings::get_ghostModeEnabled();
|
||||
|
||||
settings->set_ghostModeEnabled(!ghostMode);
|
||||
|
@ -119,7 +120,7 @@ void Tray::rebuildMenu() {
|
|||
AyuSettings::save();
|
||||
});
|
||||
|
||||
if (StreamerMode.value()) {
|
||||
if (settings->showStreamerToggleInTray) {
|
||||
auto turnStreamerModeText = _textUpdates.events(
|
||||
) | rpl::map([=] {
|
||||
bool streamerModeEnabled = AyuFeatures::StreamerMode::isEnabled();
|
||||
|
|
|
@ -927,28 +927,35 @@ void MainMenu::setupMenu() {
|
|||
)->setClickedCallback([=] {
|
||||
controller->showPeerHistory(controller->session().user());
|
||||
});
|
||||
addAction(
|
||||
tr::ayu_LReadMessages(),
|
||||
{ &st::ayuLReadMenuIcon }
|
||||
)->setClickedCallback([=]
|
||||
{
|
||||
auto settings = &AyuSettings::getInstance();
|
||||
auto prev = settings->sendReadMessages;
|
||||
settings->set_sendReadMessages(false);
|
||||
|
||||
auto chats = controller->session().data().chatsList();
|
||||
MarkAsReadChatList(chats);
|
||||
const auto settings = &AyuSettings::getInstance();
|
||||
|
||||
settings->set_sendReadMessages(prev);
|
||||
});
|
||||
addAction(
|
||||
tr::ayu_SReadMessages(),
|
||||
{ &st::ayuSReadMenuIcon }
|
||||
)->setClickedCallback([=]
|
||||
{
|
||||
auto box = Box<AyuUi::ConfirmationBox>(controller);
|
||||
Ui::show(std::move(box));
|
||||
});
|
||||
if (settings->showLReadToggleInDrawer) {
|
||||
addAction(
|
||||
tr::ayu_LReadMessages(),
|
||||
{&st::ayuLReadMenuIcon}
|
||||
)->setClickedCallback([=]
|
||||
{
|
||||
auto prev = settings->sendReadMessages;
|
||||
settings->set_sendReadMessages(false);
|
||||
|
||||
auto chats = controller->session().data().chatsList();
|
||||
MarkAsReadChatList(chats);
|
||||
|
||||
settings->set_sendReadMessages(prev);
|
||||
});
|
||||
}
|
||||
|
||||
if (settings->showSReadToggleInDrawer) {
|
||||
addAction(
|
||||
tr::ayu_SReadMessages(),
|
||||
{&st::ayuSReadMenuIcon}
|
||||
)->setClickedCallback([=]
|
||||
{
|
||||
auto box = Box<AyuUi::ConfirmationBox>(controller);
|
||||
Ui::show(std::move(box));
|
||||
});
|
||||
}
|
||||
} else {
|
||||
addAction(
|
||||
tr::lng_profile_add_contact(),
|
||||
|
@ -1011,36 +1018,37 @@ void MainMenu::setupMenu() {
|
|||
}, _nightThemeToggle->lifetime());
|
||||
|
||||
const auto settings = &AyuSettings::getInstance();
|
||||
if (settings->showGhostToggleInDrawer)
|
||||
{
|
||||
if (settings->showGhostToggleInDrawer) {
|
||||
_ghostModeToggle = addAction(
|
||||
tr::ayu_GhostModeToggle(),
|
||||
{ &st::ayuGhostIcon }
|
||||
{&st::ayuGhostIcon}
|
||||
)->toggleOn(AyuSettings::get_ghostModeEnabledReactive());
|
||||
|
||||
_ghostModeToggle->toggledChanges(
|
||||
) | rpl::start_with_next([=](bool ghostMode)
|
||||
{
|
||||
settings->set_ghostModeEnabled(ghostMode);
|
||||
{
|
||||
settings->set_ghostModeEnabled(ghostMode);
|
||||
|
||||
AyuSettings::save();
|
||||
}, _ghostModeToggle->lifetime());
|
||||
AyuSettings::save();
|
||||
}, _ghostModeToggle->lifetime());
|
||||
}
|
||||
|
||||
if (StreamerMode.value()) {
|
||||
if (settings->showStreamerToggleInDrawer) {
|
||||
_streamerModeToggle = addAction(
|
||||
tr::ayu_StreamerModeToggle(),
|
||||
{ &st::ayuStreamerModeMenuIcon }
|
||||
)->toggleOn(rpl::single(AyuFeatures::StreamerMode::isEnabled()));
|
||||
tr::ayu_StreamerModeToggle(),
|
||||
{&st::ayuStreamerModeMenuIcon}
|
||||
)->toggleOn(rpl::single(AyuFeatures::StreamerMode::isEnabled()));
|
||||
|
||||
_streamerModeToggle->toggledChanges(
|
||||
) | rpl::start_with_next([=](bool enabled) {
|
||||
if (enabled) {
|
||||
AyuFeatures::StreamerMode::enable();
|
||||
} else {
|
||||
AyuFeatures::StreamerMode::disable();
|
||||
}
|
||||
}, _streamerModeToggle->lifetime());
|
||||
) | rpl::start_with_next([=](bool enabled)
|
||||
{
|
||||
if (enabled) {
|
||||
AyuFeatures::StreamerMode::enable();
|
||||
}
|
||||
else {
|
||||
AyuFeatures::StreamerMode::disable();
|
||||
}
|
||||
}, _streamerModeToggle->lifetime());
|
||||
}
|
||||
|
||||
Core::App().settings().systemDarkModeValue(
|
||||
|
|
Loading…
Add table
Reference in a new issue