feat: hide folder notification counters

This commit is contained in:
ZavaruKitsu 2024-01-02 03:09:55 +03:00
parent 2aef563374
commit 115517fae1
6 changed files with 181 additions and 158 deletions

View file

@ -4623,9 +4623,10 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
"ayu_MaximumMediaSizeCellular" = "Media size limit (cellular data)"; "ayu_MaximumMediaSizeCellular" = "Media size limit (cellular data)";
"ayu_MaximumMediaSizeWiFi" = "Media size limit (WiFi)"; "ayu_MaximumMediaSizeWiFi" = "Media size limit (WiFi)";
"ayu_MessageSavingOtherHeader" = "Other"; "ayu_MessageSavingOtherHeader" = "Other";
"ayu_MessageSavingSaveFormatting" = "Save formatting";
"ayu_MessageSavingSaveReactions" = "Save reactions"; "ayu_MessageSavingSaveReactions" = "Save reactions";
"ayu_MessageSavingSaveForBots" = "Save in bot dialogs"; "ayu_MessageSavingSaveForBots" = "Save in bot dialogs";
"ayu_MessageSavingSavePath" = "Attachments folder";
"ayu_MessageSavingSavePathTitle" = "Choose folder";
"ayu_SpyAllToggle" = "Spy on people"; "ayu_SpyAllToggle" = "Spy on people";
"ayu_SpySaveReadMarks" = "Save read date"; "ayu_SpySaveReadMarks" = "Save read date";
"ayu_SpySaveLastActivity" = "Save last activity"; "ayu_SpySaveLastActivity" = "Save last activity";
@ -4639,6 +4640,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
"ayu_CustomizationHeader" = "Customization"; "ayu_CustomizationHeader" = "Customization";
"ayu_DeletedMarkText" = "Deleted mark"; "ayu_DeletedMarkText" = "Deleted mark";
"ayu_EditedMarkText" = "Edited mark"; "ayu_EditedMarkText" = "Edited mark";
"ayu_HideNotificationCounters" = "Hide notification counters";
"ayu_HideAllChats" = "Hide \"All chats\" folder"; "ayu_HideAllChats" = "Hide \"All chats\" folder";
"ayu_ShowGhostToggleInDrawer" = "Show ghost mode toggle"; "ayu_ShowGhostToggleInDrawer" = "Show ghost mode toggle";
"ayu_ShowKllButtonInDrawer" = "Show kill app button"; "ayu_ShowKllButtonInDrawer" = "Show kill app button";
@ -4660,6 +4662,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
"ayu_RegexFiltersAmount" = "filters"; "ayu_RegexFiltersAmount" = "filters";
"ayu_RegexFiltersHeader" = "Filters"; "ayu_RegexFiltersHeader" = "Filters";
"ayu_RegexFiltersShared" = "Shared filters"; "ayu_RegexFiltersShared" = "Shared filters";
"ayu_RegexFiltersExcluded" = "Excluded filters";
"ayu_FiltersHideFromBlocked" = "Hide from blocked users"; "ayu_FiltersHideFromBlocked" = "Hide from blocked users";
"ayu_FiltersHideFromBlockedNote" = "Message filters were enabled."; "ayu_FiltersHideFromBlockedNote" = "Message filters were enabled.";
"ayu_RegexFiltersEnableSharedInChats" = "Enable shared filters in chats"; "ayu_RegexFiltersEnableSharedInChats" = "Enable shared filters in chats";

View file

@ -383,9 +383,9 @@ void AyuGramSettings::set_showPeerId(int val)
showPeerIdReactive = val; showPeerIdReactive = val;
} }
void AyuGramSettings::set_showMessageSeconds(bool val) void AyuGramSettings::set_hideNotificationCounters(bool val)
{ {
showMessageSeconds = val; hideNotificationCounters = val;
} }
void AyuGramSettings::set_hideAllChatsFolder(bool val) void AyuGramSettings::set_hideAllChatsFolder(bool val)
@ -393,6 +393,11 @@ void AyuGramSettings::set_hideAllChatsFolder(bool val)
hideAllChatsFolder = val; hideAllChatsFolder = val;
} }
void AyuGramSettings::set_showMessageSeconds(bool val)
{
showMessageSeconds = val;
}
void AyuGramSettings::set_stickerConfirmation(bool val) void AyuGramSettings::set_stickerConfirmation(bool val)
{ {
stickerConfirmation = val; stickerConfirmation = val;

View file

@ -88,14 +88,15 @@ public:
mainFont = ""; mainFont = "";
monoFont = ""; monoFont = "";
hideNotificationCounters = false;
hideAllChatsFolder = false;
/* /*
* showPeerId = 0 means no ID shown * showPeerId = 0 means no ID shown
* showPeerId = 1 means ID shown as for Telegram API devs * showPeerId = 1 means ID shown as for Telegram API devs
* showPeerId = 2 means ID shown as for Bot API devs (-100) * showPeerId = 2 means ID shown as for Bot API devs (-100)
*/ */
showPeerId = 2; showPeerId = 2;
hideAllChatsFolder = false;
showMessageSeconds = false; showMessageSeconds = false;
// ~ Confirmations // ~ Confirmations
@ -149,8 +150,10 @@ public:
QString mainFont; QString mainFont;
QString monoFont; QString monoFont;
int showPeerId; bool hideNotificationCounters;
bool hideAllChatsFolder; bool hideAllChatsFolder;
int showPeerId;
bool showMessageSeconds; bool showMessageSeconds;
bool stickerConfirmation; bool stickerConfirmation;
@ -205,9 +208,11 @@ public:
void set_mainFont(QString val); void set_mainFont(QString val);
void set_monoFont(QString val); void set_monoFont(QString val);
void set_hideNotificationCounters(bool val);
void set_hideAllChatsFolder(bool val);
void set_showPeerId(int val); void set_showPeerId(int val);
void set_showMessageSeconds(bool val); void set_showMessageSeconds(bool val);
void set_hideAllChatsFolder(bool val);
void set_stickerConfirmation(bool val); void set_stickerConfirmation(bool val);
void set_gifConfirmation(bool val); void set_gifConfirmation(bool val);
@ -252,9 +257,10 @@ NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(
showStreamerToggleInTray, showStreamerToggleInTray,
mainFont, mainFont,
monoFont, monoFont,
hideNotificationCounters,
hideAllChatsFolder,
showPeerId, showPeerId,
showMessageSeconds, showMessageSeconds,
hideAllChatsFolder,
stickerConfirmation, stickerConfirmation,
gifConfirmation, gifConfirmation,
voiceConfirmation voiceConfirmation

View file

@ -394,7 +394,7 @@ Ayu::Ayu(
setupContent(controller); setupContent(controller);
} }
void Ayu::SetupGhostModeToggle(not_null<Ui::VerticalLayout *> container) void SetupGhostModeToggle(not_null<Ui::VerticalLayout *> container)
{ {
auto settings = &AyuSettings::getInstance(); auto settings = &AyuSettings::getInstance();
@ -441,7 +441,7 @@ void Ayu::SetupGhostModeToggle(not_null<Ui::VerticalLayout *> container)
AddCollapsibleToggle(container, tr::ayu_GhostEssentialsHeader(), checkboxes, true); AddCollapsibleToggle(container, tr::ayu_GhostEssentialsHeader(), checkboxes, true);
} }
void Ayu::SetupReadAfterActionToggle(not_null<Ui::VerticalLayout *> container) void SetupReadAfterActionToggle(not_null<Ui::VerticalLayout *> container)
{ {
auto settings = &AyuSettings::getInstance(); auto settings = &AyuSettings::getInstance();
@ -472,7 +472,7 @@ void Ayu::SetupReadAfterActionToggle(not_null<Ui::VerticalLayout *> container)
AddCollapsibleToggle(container, tr::ayu_MarkReadAfterAction(), checkboxes, false); AddCollapsibleToggle(container, tr::ayu_MarkReadAfterAction(), checkboxes, false);
} }
void Ayu::SetupGhostEssentials(not_null<Ui::VerticalLayout *> container) void SetupGhostEssentials(not_null<Ui::VerticalLayout *> container)
{ {
auto settings = &AyuSettings::getInstance(); auto settings = &AyuSettings::getInstance();
@ -502,7 +502,7 @@ void Ayu::SetupGhostEssentials(not_null<Ui::VerticalLayout *> container)
}, container->lifetime()); }, container->lifetime());
} }
void Ayu::SetupSpyEssentials(not_null<Ui::VerticalLayout *> container) void SetupSpyEssentials(not_null<Ui::VerticalLayout *> container)
{ {
auto settings = &AyuSettings::getInstance(); auto settings = &AyuSettings::getInstance();
@ -549,7 +549,7 @@ void Ayu::SetupSpyEssentials(not_null<Ui::VerticalLayout *> container)
}, container->lifetime()); }, container->lifetime());
} }
void Ayu::SetupQoLToggles(not_null<Ui::VerticalLayout *> container) void SetupQoLToggles(not_null<Ui::VerticalLayout *> container)
{ {
auto settings = &AyuSettings::getInstance(); auto settings = &AyuSettings::getInstance();
@ -687,113 +687,14 @@ void Ayu::SetupQoLToggles(not_null<Ui::VerticalLayout *> container)
}, container->lifetime()); }, container->lifetime());
} }
void Ayu::SetupAppIcon(not_null<Ui::VerticalLayout *> container) void SetupAppIcon(not_null<Ui::VerticalLayout *> container)
{ {
container->add( container->add(
object_ptr<IconPicker>(container), object_ptr<IconPicker>(container),
st::settingsCheckboxPadding); st::settingsCheckboxPadding);
} }
void Ayu::SetupCustomization(not_null<Ui::VerticalLayout *> container, void SetupContextMenuElements(not_null<Ui::VerticalLayout *> container,
not_null<Window::SessionController *> controller)
{
auto settings = &AyuSettings::getInstance();
AddSubsectionTitle(container, tr::ayu_CustomizationHeader());
SetupAppIcon(container);
AddDivider(container);
AddSkip(container);
auto btn = AddButtonWithLabel(
container,
tr::ayu_DeletedMarkText(),
AyuSettings::get_deletedMarkReactive(),
st::settingsButtonNoIcon
);
btn->addClickHandler(
[=]()
{
auto box = Box<EditDeletedMarkBox>();
Ui::show(std::move(box));
});
auto btn2 = AddButtonWithLabel(
container,
tr::ayu_EditedMarkText(),
AyuSettings::get_editedMarkReactive(),
st::settingsButtonNoIcon
);
btn2->addClickHandler(
[=]()
{
auto box = Box<EditEditedMarkBox>();
Ui::show(std::move(box));
});
AddSkip(container);
AddDivider(container);
AddSkip(container);
SetupRecentStickersLimitSlider(container);
AddSkip(container);
AddDivider(container);
AddSkip(container);
SetupShowPeerId(container, controller);
AddButtonWithIcon(
container,
tr::ayu_HideAllChats(),
st::settingsButtonNoIcon
)->toggleOn(
rpl::single(settings->hideAllChatsFolder)
)->toggledValue(
) | rpl::filter(
[=](bool enabled)
{
return (enabled != settings->hideAllChatsFolder);
}) | start_with_next(
[=](bool enabled)
{
settings->set_hideAllChatsFolder(enabled);
AyuSettings::save();
}, container->lifetime());
AddButtonWithIcon(
container,
tr::ayu_SettingsShowMessageSeconds(),
st::settingsButtonNoIcon
)->toggleOn(
rpl::single(settings->showMessageSeconds)
)->toggledValue(
) | rpl::filter(
[=](bool enabled)
{
return (enabled != settings->showMessageSeconds);
}) | start_with_next(
[=](bool enabled)
{
settings->set_showMessageSeconds(enabled);
AyuSettings::save();
}, container->lifetime());
AddSkip(container);
AddDivider(container);
SetupContextMenuElements(container, controller);
SetupDrawerElements(container);
AddSkip(container);
AddDivider(container);
SetupTrayElements(container);
AddSkip(container);
AddDivider(container);
AddSkip(container);
SetupFonts(container, controller);
}
void Ayu::SetupContextMenuElements(not_null<Ui::VerticalLayout *> container,
not_null<Window::SessionController *> controller) not_null<Window::SessionController *> controller)
{ {
auto settings = &AyuSettings::getInstance(); auto settings = &AyuSettings::getInstance();
@ -878,7 +779,7 @@ void Ayu::SetupContextMenuElements(not_null<Ui::VerticalLayout *> container,
AddDividerText(container, tr::ayu_SettingsContextMenuDescription()); AddDividerText(container, tr::ayu_SettingsContextMenuDescription());
} }
void Ayu::SetupDrawerElements(not_null<Ui::VerticalLayout *> container) void SetupDrawerElements(not_null<Ui::VerticalLayout *> container)
{ {
auto settings = &AyuSettings::getInstance(); auto settings = &AyuSettings::getInstance();
@ -964,7 +865,7 @@ void Ayu::SetupDrawerElements(not_null<Ui::VerticalLayout *> container)
#endif #endif
} }
void Ayu::SetupTrayElements(not_null<Ui::VerticalLayout *> container) void SetupTrayElements(not_null<Ui::VerticalLayout *> container)
{ {
auto settings = &AyuSettings::getInstance(); auto settings = &AyuSettings::getInstance();
@ -1010,7 +911,7 @@ void Ayu::SetupTrayElements(not_null<Ui::VerticalLayout *> container)
#endif #endif
} }
void Ayu::SetupShowPeerId(not_null<Ui::VerticalLayout *> container, void SetupShowPeerId(not_null<Ui::VerticalLayout *> container,
not_null<Window::SessionController *> controller) not_null<Window::SessionController *> controller)
{ {
auto settings = &AyuSettings::getInstance(); auto settings = &AyuSettings::getInstance();
@ -1053,7 +954,7 @@ void Ayu::SetupShowPeerId(not_null<Ui::VerticalLayout *> container,
}); });
} }
void Ayu::SetupRecentStickersLimitSlider(not_null<Ui::VerticalLayout *> container) void SetupRecentStickersLimitSlider(not_null<Ui::VerticalLayout *> container)
{ {
auto settings = &AyuSettings::getInstance(); auto settings = &AyuSettings::getInstance();
@ -1095,7 +996,7 @@ void Ayu::SetupRecentStickersLimitSlider(not_null<Ui::VerticalLayout *> containe
}); });
} }
void Ayu::SetupFonts(not_null<Ui::VerticalLayout *> container, not_null<Window::SessionController *> controller) void SetupFonts(not_null<Ui::VerticalLayout *> container, not_null<Window::SessionController *> controller)
{ {
const auto settings = &AyuSettings::getInstance(); const auto settings = &AyuSettings::getInstance();
@ -1143,7 +1044,7 @@ void Ayu::SetupFonts(not_null<Ui::VerticalLayout *> container, not_null<Window::
} }
void Ayu::SetupAyuSync(not_null<Ui::VerticalLayout *> container) void SetupAyuSync(not_null<Ui::VerticalLayout *> container)
{ {
AddSubsectionTitle(container, tr::ayu_AyuSyncHeader()); AddSubsectionTitle(container, tr::ayu_AyuSyncHeader());
@ -1161,7 +1062,7 @@ void Ayu::SetupAyuSync(not_null<Ui::VerticalLayout *> container)
}); });
} }
void Ayu::SetupSendConfirmations(not_null<Ui::VerticalLayout *> container) void SetupSendConfirmations(not_null<Ui::VerticalLayout *> container)
{ {
auto settings = &AyuSettings::getInstance(); auto settings = &AyuSettings::getInstance();
@ -1222,7 +1123,142 @@ void Ayu::SetupSendConfirmations(not_null<Ui::VerticalLayout *> container)
}, container->lifetime()); }, container->lifetime());
} }
void Ayu::SetupAyuGramSettings(not_null<Ui::VerticalLayout *> container, void SetupMarks(not_null<Ui::VerticalLayout *> container) {
auto settings = &AyuSettings::getInstance();
AddButtonWithLabel(
container,
tr::ayu_DeletedMarkText(),
AyuSettings::get_deletedMarkReactive(),
st::settingsButtonNoIcon
)->addClickHandler(
[=]()
{
auto box = Box<EditDeletedMarkBox>();
Ui::show(std::move(box));
});
AddButtonWithLabel(
container,
tr::ayu_EditedMarkText(),
AyuSettings::get_editedMarkReactive(),
st::settingsButtonNoIcon
)->addClickHandler(
[=]()
{
auto box = Box<EditEditedMarkBox>();
Ui::show(std::move(box));
});
}
void SetupFolderSettings(not_null<Ui::VerticalLayout *> container) {
auto settings = &AyuSettings::getInstance();
AddButtonWithIcon(
container,
tr::ayu_HideNotificationCounters(),
st::settingsButtonNoIcon
)->toggleOn(
rpl::single(settings->hideNotificationCounters)
)->toggledValue(
) | rpl::filter(
[=](bool enabled)
{
return (enabled != settings->hideNotificationCounters);
}) | start_with_next(
[=](bool enabled)
{
settings->set_hideNotificationCounters(enabled);
AyuSettings::save();
}, container->lifetime());
AddButtonWithIcon(
container,
tr::ayu_HideAllChats(),
st::settingsButtonNoIcon
)->toggleOn(
rpl::single(settings->hideAllChatsFolder)
)->toggledValue(
) | rpl::filter(
[=](bool enabled)
{
return (enabled != settings->hideAllChatsFolder);
}) | start_with_next(
[=](bool enabled)
{
settings->set_hideAllChatsFolder(enabled);
AyuSettings::save();
}, container->lifetime());
}
void SetupNerdSettings(not_null<Ui::VerticalLayout *> container, not_null<Window::SessionController *> controller) {
auto settings = &AyuSettings::getInstance();
SetupShowPeerId(container, controller);
AddButtonWithIcon(
container,
tr::ayu_SettingsShowMessageSeconds(),
st::settingsButtonNoIcon
)->toggleOn(
rpl::single(settings->showMessageSeconds)
)->toggledValue(
) | rpl::filter(
[=](bool enabled)
{
return (enabled != settings->showMessageSeconds);
}) | start_with_next(
[=](bool enabled)
{
settings->set_showMessageSeconds(enabled);
AyuSettings::save();
}, container->lifetime());
}
void SetupCustomization(not_null<Ui::VerticalLayout *> container,
not_null<Window::SessionController *> controller)
{
AddSubsectionTitle(container, tr::ayu_CustomizationHeader());
SetupAppIcon(container);
AddDivider(container);
AddSkip(container);
SetupMarks(container);
AddSkip(container);
AddDivider(container);
AddSkip(container);
SetupRecentStickersLimitSlider(container);
AddSkip(container);
AddDivider(container);
AddSkip(container);
SetupFolderSettings(container);
AddSkip(container);
AddDivider(container);
AddSkip(container);
SetupNerdSettings(container, controller);
AddSkip(container);
AddDivider(container);
SetupContextMenuElements(container, controller);
SetupDrawerElements(container);
AddSkip(container);
AddDivider(container);
SetupTrayElements(container);
AddSkip(container);
AddDivider(container);
AddSkip(container);
SetupFonts(container, controller);
}
void SetupAyuGramSettings(not_null<Ui::VerticalLayout *> container,
not_null<Window::SessionController *> controller) not_null<Window::SessionController *> controller)
{ {
AddSkip(container); AddSkip(container);

View file

@ -29,40 +29,6 @@ public:
[[nodiscard]] rpl::producer<QString> title() override; [[nodiscard]] rpl::producer<QString> title() override;
private: private:
void SetupGhostModeToggle(not_null<Ui::VerticalLayout *> container);
void SetupReadAfterActionToggle(not_null<Ui::VerticalLayout *> container);
void SetupGhostEssentials(not_null<Ui::VerticalLayout *> container);
void SetupSpyEssentials(not_null<Ui::VerticalLayout *> container);
void SetupQoLToggles(not_null<Ui::VerticalLayout *> container);
void SetupAppIcon(not_null<Ui::VerticalLayout *> container);
void SetupCustomization(not_null<Ui::VerticalLayout *> container,
not_null<Window::SessionController *> controller);
void SetupContextMenuElements(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);
void SetupFonts(not_null<Ui::VerticalLayout *> container, not_null<Window::SessionController *> controller);
void SetupAyuSync(not_null<Ui::VerticalLayout *> container);
void SetupSendConfirmations(not_null<Ui::VerticalLayout *> container);
void SetupAyuGramSettings(not_null<Ui::VerticalLayout *> container, not_null<Window::SessionController *> null);
void setupContent(not_null<Window::SessionController *> controller); void setupContent(not_null<Window::SessionController *> controller);
}; };

View file

@ -313,8 +313,15 @@ base::unique_qptr<Ui::SideBarButton> FiltersMenu::prepareButton(
&_session->session(), &_session->session(),
id id
) | rpl::start_with_next([=](const Dialogs::UnreadState &state) { ) | rpl::start_with_next([=](const Dialogs::UnreadState &state) {
const auto count = (state.chats + state.marks); auto count = (state.chats + state.marks);
const auto muted = (state.chatsMuted + state.marksMuted); auto muted = (state.chatsMuted + state.marksMuted);
const auto settings = &AyuSettings::getInstance();
if (settings->hideNotificationCounters) {
count = 0;
muted = 0;
}
const auto string = !count const auto string = !count
? QString() ? QString()
: (count > 99) : (count > 99)