From 9db320259305fb77252f1cd1625dc433c0e47a6c Mon Sep 17 00:00:00 2001 From: RadRussianRus Date: Mon, 30 Mar 2020 19:36:59 +0300 Subject: [PATCH] Added folders options in menu --- Telegram/Resources/langs/lang.strings | 5 ++ Telegram/Resources/langs/rewrites/ru.json | 6 +- .../SourceFiles/settings/settings_kotato.cpp | 60 +++++++++++++++++++ .../SourceFiles/settings/settings_kotato.h | 3 + .../window/window_session_controller.cpp | 8 +++ .../window/window_session_controller.h | 1 + 6 files changed, 82 insertions(+), 1 deletion(-) diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings index 0bfba6cd6..fe2139fec 100644 --- a/Telegram/Resources/langs/lang.strings +++ b/Telegram/Resources/langs/lang.strings @@ -2464,4 +2464,9 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "ktg_filters_context_edit_all" = "Edit folders"; "ktg_filters_context_make_default" = "Make folder default"; +"ktg_settings_filters" = "Folders"; +"ktg_settings_filters_only_unmuted_counter" = "Do not count muted chats"; +"ktg_settings_filters_hide_edit" = "Hide Edit button"; +"ktg_settings_filters_hide_folder_names" = "Compact folders"; + // Keys finished diff --git a/Telegram/Resources/langs/rewrites/ru.json b/Telegram/Resources/langs/rewrites/ru.json index ef61e45ee..82ea37ee0 100644 --- a/Telegram/Resources/langs/rewrites/ru.json +++ b/Telegram/Resources/langs/rewrites/ru.json @@ -100,5 +100,9 @@ "ktg_settings_recent_stickers_limit_none": "Недавние стикеры: скрыть все", "ktg_filters_default": "Папка по умолчанию", "ktg_filters_context_edit_all": "Изменить папки", - "ktg_filters_context_make_default": "Сделать папкой по умолчанию" + "ktg_filters_context_make_default": "Сделать папкой по умолчанию", + "ktg_settings_filters": "Папки", + "ktg_settings_filters_only_unmuted_counter": "Не считать чаты без уведомлений", + "ktg_settings_filters_hide_edit": "Скрыть кнопку изменения", + "ktg_settings_filters_hide_folder_names": "Компактные папки" } diff --git a/Telegram/SourceFiles/settings/settings_kotato.cpp b/Telegram/SourceFiles/settings/settings_kotato.cpp index 0d63f8934..015652f2c 100644 --- a/Telegram/SourceFiles/settings/settings_kotato.cpp +++ b/Telegram/SourceFiles/settings/settings_kotato.cpp @@ -31,6 +31,7 @@ https://github.com/kotatogram/kotatogram-desktop/blob/dev/LEGAL #include "data/data_session.h" #include "main/main_session.h" #include "layout.h" +#include "mainwindow.h" #include "facades.h" #include "app.h" #include "styles/style_settings.h" @@ -201,6 +202,64 @@ void SetupKotatoNetwork(not_null container) { AddSkip(container); } +void SetupKotatoFolders( + not_null controller, + not_null container) { + AddDivider(container); + AddSkip(container); + AddSubsectionTitle(container, tr::ktg_settings_filters()); + + AddButton( + container, + tr::ktg_settings_filters_only_unmuted_counter(), + st::settingsButton + )->toggleOn( + rpl::single(cUnmutedFilterCounterOnly()) + )->toggledValue( + ) | rpl::filter([](bool enabled) { + return (enabled != cUnmutedFilterCounterOnly()); + }) | rpl::start_with_next([=](bool enabled) { + cSetUnmutedFilterCounterOnly(enabled); + KotatoSettings::Write(); + controller->reloadFiltersMenu(); + App::wnd()->fixOrder(); + }, container->lifetime()); + + AddButton( + container, + tr::ktg_settings_filters_hide_edit(), + st::settingsButton + )->toggleOn( + rpl::single(cHideFilterEditButton()) + )->toggledValue( + ) | rpl::filter([](bool enabled) { + return (enabled != cHideFilterEditButton()); + }) | rpl::start_with_next([=](bool enabled) { + cSetHideFilterEditButton(enabled); + KotatoSettings::Write(); + controller->reloadFiltersMenu(); + App::wnd()->fixOrder(); + }, container->lifetime()); + + AddButton( + container, + tr::ktg_settings_filters_hide_folder_names(), + st::settingsButton + )->toggleOn( + rpl::single(cHideFilterNames()) + )->toggledValue( + ) | rpl::filter([](bool enabled) { + return (enabled != cHideFilterNames()); + }) | rpl::start_with_next([=](bool enabled) { + cSetHideFilterNames(enabled); + KotatoSettings::Write(); + controller->reloadFiltersMenu(); + App::wnd()->fixOrder(); + }, container->lifetime()); + + AddSkip(container); +} + void SetupKotatoSystem(not_null container) { AddDivider(container); AddSkip(container); @@ -285,6 +344,7 @@ void Kotato::setupContent(not_null controller) { SetupKotatoChats(content); SetupKotatoNetwork(content); + SetupKotatoFolders(controller, content); SetupKotatoSystem(content); SetupKotatoOther(content); diff --git a/Telegram/SourceFiles/settings/settings_kotato.h b/Telegram/SourceFiles/settings/settings_kotato.h index c6d5e44ef..7da5917f8 100644 --- a/Telegram/SourceFiles/settings/settings_kotato.h +++ b/Telegram/SourceFiles/settings/settings_kotato.h @@ -15,6 +15,9 @@ namespace Settings { void SetupKotatoChats(not_null container); void SetupKotatoNetwork(not_null container); +void SetupKotatoFolders( + not_null controller, + not_null container); void SetupKotatoSystem(not_null container); void SetupKotatoOther(not_null container); diff --git a/Telegram/SourceFiles/window/window_session_controller.cpp b/Telegram/SourceFiles/window/window_session_controller.cpp index ed4211632..f440176a7 100644 --- a/Telegram/SourceFiles/window/window_session_controller.cpp +++ b/Telegram/SourceFiles/window/window_session_controller.cpp @@ -212,6 +212,14 @@ void SessionController::toggleFiltersMenu(bool enabled) { _filtersMenuChanged.fire({}); } +void SessionController::reloadFiltersMenu() { + const auto enabled = !session().data().chatsFilters().list().empty(); + if (enabled) { + toggleFiltersMenu(false); + toggleFiltersMenu(true); + } +} + void SessionController::refreshFiltersMenu() { const auto enabled = !session().data().chatsFilters().list().empty(); if (enabled != Global::DialogsFiltersEnabled()) { diff --git a/Telegram/SourceFiles/window/window_session_controller.h b/Telegram/SourceFiles/window/window_session_controller.h index f6b9f4c47..a79338d02 100644 --- a/Telegram/SourceFiles/window/window_session_controller.h +++ b/Telegram/SourceFiles/window/window_session_controller.h @@ -299,6 +299,7 @@ public: void setActiveChatsFilter(FilterId id); void toggleFiltersMenu(bool enabled); + void reloadFiltersMenu(); [[nodiscard]] rpl::producer<> filtersMenuChanged() const; rpl::lifetime &lifetime() {