diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings index e3b8fab60..3ec5dd596 100644 --- a/Telegram/Resources/langs/lang.strings +++ b/Telegram/Resources/langs/lang.strings @@ -2470,6 +2470,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "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"; +"ktg_settings_filters_hide_all" = "Hide \"All chats\" folder"; "ktg_settings_top_bar_mute" = "Mute in profile top bar"; diff --git a/Telegram/Resources/langs/rewrites/ru.json b/Telegram/Resources/langs/rewrites/ru.json index 6eca43b2b..f9feee973 100644 --- a/Telegram/Resources/langs/rewrites/ru.json +++ b/Telegram/Resources/langs/rewrites/ru.json @@ -106,5 +106,6 @@ "ktg_settings_filters_hide_edit": "Скрыть кнопку изменения", "ktg_settings_filters_hide_folder_names": "Компактные папки", "ktg_settings_top_bar_mute": "Уведомления вверху профиля", - "ktg_settings_messages": "Сообщения" + "ktg_settings_messages": "Сообщения", + "ktg_settings_filters_hide_all": "Скрыть папку «Все чаты»" } diff --git a/Telegram/SourceFiles/core/kotato_settings.cpp b/Telegram/SourceFiles/core/kotato_settings.cpp index ccbf96257..dbe6f4adc 100644 --- a/Telegram/SourceFiles/core/kotato_settings.cpp +++ b/Telegram/SourceFiles/core/kotato_settings.cpp @@ -350,6 +350,10 @@ bool Manager::readCustomFile() { ReadBoolOption(o, "hide_names", [&](auto v) { cSetHideFilterNames(v); }); + + ReadBoolOption(o, "hide_all_chats", [&](auto v) { + cSetHideFilterAllChats(v); + }); }); ReadBoolOption(settings, "profile_top_mute", [&](auto v) { @@ -406,6 +410,7 @@ void Manager::writeDefaultFile() { settingsFolders.insert(qsl("count_unmuted_only"), cUnmutedFilterCounterOnly()); settingsFolders.insert(qsl("hide_edit_button"), cHideFilterEditButton()); settingsFolders.insert(qsl("hide_names"), cHideFilterNames()); + settingsFolders.insert(qsl("hide_all_chats"), cHideFilterAllChats()); settings.insert(qsl("folders"), settingsFolders); @@ -480,6 +485,7 @@ void Manager::writeCurrentSettings() { settingsFolders.insert(qsl("count_unmuted_only"), cUnmutedFilterCounterOnly()); settingsFolders.insert(qsl("hide_edit_button"), cHideFilterEditButton()); settingsFolders.insert(qsl("hide_names"), cHideFilterNames()); + settingsFolders.insert(qsl("hide_all_chats"), cHideFilterAllChats()); settings.insert(qsl("folders"), settingsFolders); diff --git a/Telegram/SourceFiles/settings.cpp b/Telegram/SourceFiles/settings.cpp index e373aa4c7..d450bb32d 100644 --- a/Telegram/SourceFiles/settings.cpp +++ b/Telegram/SourceFiles/settings.cpp @@ -324,5 +324,6 @@ int gDefaultFilterId = 0; bool gUnmutedFilterCounterOnly = false; bool gHideFilterEditButton = false; bool gHideFilterNames = false; +bool gHideFilterAllChats = false; bool gProfileTopBarNotifications = false; diff --git a/Telegram/SourceFiles/settings.h b/Telegram/SourceFiles/settings.h index 94a74284a..97669af82 100644 --- a/Telegram/SourceFiles/settings.h +++ b/Telegram/SourceFiles/settings.h @@ -254,5 +254,6 @@ DeclareSetting(int, DefaultFilterId); DeclareSetting(bool, UnmutedFilterCounterOnly); DeclareSetting(bool, HideFilterEditButton); DeclareSetting(bool, HideFilterNames); +DeclareSetting(bool, HideFilterAllChats); DeclareSetting(bool, ProfileTopBarNotifications); diff --git a/Telegram/SourceFiles/settings/settings_kotato.cpp b/Telegram/SourceFiles/settings/settings_kotato.cpp index 5cd00a6d5..9531f8f12 100644 --- a/Telegram/SourceFiles/settings/settings_kotato.cpp +++ b/Telegram/SourceFiles/settings/settings_kotato.cpp @@ -246,6 +246,22 @@ void SetupKotatoFolders( App::wnd()->fixOrder(); }, container->lifetime()); + AddButton( + container, + tr::ktg_settings_filters_hide_all(), + st::settingsButton + )->toggleOn( + rpl::single(cHideFilterAllChats()) + )->toggledValue( + ) | rpl::filter([](bool enabled) { + return (enabled != cHideFilterAllChats()); + }) | rpl::start_with_next([=](bool enabled) { + cSetHideFilterAllChats(enabled); + KotatoSettings::Write(); + controller->reloadFiltersMenu(); + App::wnd()->fixOrder(); + }, container->lifetime()); + AddButton( container, tr::ktg_settings_filters_hide_edit(), diff --git a/Telegram/SourceFiles/window/window_filters_menu.cpp b/Telegram/SourceFiles/window/window_filters_menu.cpp index 0fbddcc60..f881f3c45 100644 --- a/Telegram/SourceFiles/window/window_filters_menu.cpp +++ b/Telegram/SourceFiles/window/window_filters_menu.cpp @@ -116,7 +116,7 @@ void FiltersMenu::setup() { const auto i = _filters.find(_activeFilterId); if (i != end(_filters)) { i->second->setActive(false); - } else if (!_activeFilterId) { + } else if (!_activeFilterId && _all) { _all->setActive(false); } _activeFilterId = id; @@ -124,7 +124,7 @@ void FiltersMenu::setup() { if (j != end(_filters)) { j->second->setActive(true); scrollToButton(j->second); - } else if (!_activeFilterId) { + } else if (!_activeFilterId && _all) { _all->setActive(true); scrollToButton(_all); } @@ -193,11 +193,13 @@ void FiltersMenu::refresh(bool firstLoad) { } void FiltersMenu::setupList() { - _all = prepareButton( - _container, - 0, - tr::lng_filters_all(tr::now), - Ui::FilterIcon::All); + if (!cHideFilterAllChats()) { + _all = prepareButton( + _container, + 0, + tr::lng_filters_all(tr::now), + Ui::FilterIcon::All); + } _list = _container->add(object_ptr(_container)); if (!cHideFilterEditButton()) { _setup = prepareButton( diff --git a/Telegram/SourceFiles/window/window_session_controller.cpp b/Telegram/SourceFiles/window/window_session_controller.cpp index ec6479e94..c8eebd552 100644 --- a/Telegram/SourceFiles/window/window_session_controller.cpp +++ b/Telegram/SourceFiles/window/window_session_controller.cpp @@ -215,13 +215,20 @@ void SessionController::toggleFiltersMenu(bool enabled) { void SessionController::reloadFiltersMenu() { const auto enabled = !session().data().chatsFilters().list().empty(); if (enabled) { - const auto previousFilter = activeChatsFilterCurrent(); + auto previousFilter = activeChatsFilterCurrent(); + rpl::single( + rpl::empty_value() + ) | rpl::then( + filtersMenuChanged() + ) | rpl::start_with_next([=] { + toggleFiltersMenu(true); + if (previousFilter) { + setActiveChatsFilter(previousFilter); + } + }, lifetime()); + setActiveChatsFilter(0); toggleFiltersMenu(false); - toggleFiltersMenu(true); - if (previousFilter) { - setActiveChatsFilter(previousFilter); - } } }