From d66325b45ced43d934fec905bb2a3f1964f325c5 Mon Sep 17 00:00:00 2001 From: RadRussianRus Date: Mon, 30 Mar 2020 08:41:05 +0300 Subject: [PATCH] Set folder default from context menu --- Telegram/Resources/langs/lang.strings | 2 + Telegram/Resources/langs/rewrites/ru.json | 4 +- .../window/window_filters_menu.cpp | 38 ++++++++++++++++++- .../SourceFiles/window/window_filters_menu.h | 2 + 4 files changed, 43 insertions(+), 3 deletions(-) diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings index 10a57e408..0bfba6cd6 100644 --- a/Telegram/Resources/langs/lang.strings +++ b/Telegram/Resources/langs/lang.strings @@ -2461,5 +2461,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "ktg_settings_recent_stickers_limit_none" = "Recent stickers: hide all"; "ktg_filters_default" = "Default folder"; +"ktg_filters_context_edit_all" = "Edit folders"; +"ktg_filters_context_make_default" = "Make folder default"; // Keys finished diff --git a/Telegram/Resources/langs/rewrites/ru.json b/Telegram/Resources/langs/rewrites/ru.json index 7575b175f..ef61e45ee 100644 --- a/Telegram/Resources/langs/rewrites/ru.json +++ b/Telegram/Resources/langs/rewrites/ru.json @@ -98,5 +98,7 @@ "other": "Недавние стикеры: показывать {count} стикеров" }, "ktg_settings_recent_stickers_limit_none": "Недавние стикеры: скрыть все", - "ktg_filters_default": "Папка по умолчанию" + "ktg_filters_default": "Папка по умолчанию", + "ktg_filters_context_edit_all": "Изменить папки", + "ktg_filters_context_make_default": "Сделать папкой по умолчанию" } diff --git a/Telegram/SourceFiles/window/window_filters_menu.cpp b/Telegram/SourceFiles/window/window_filters_menu.cpp index ef562932a..beca13eba 100644 --- a/Telegram/SourceFiles/window/window_filters_menu.cpp +++ b/Telegram/SourceFiles/window/window_filters_menu.cpp @@ -241,12 +241,16 @@ base::unique_qptr FiltersMenu::prepareButton( } } }); - if (id > 0) { + if (id >= 0) { raw->events( ) | rpl::filter([=](not_null e) { return e->type() == QEvent::ContextMenu; }) | rpl::start_with_next([=] { - showMenu(QCursor::pos(), id); + if (id){ + showMenu(QCursor::pos(), id); + } else { + showAllMenu(QCursor::pos()); + } }, raw->lifetime()); } return button; @@ -265,12 +269,42 @@ void FiltersMenu::showMenu(QPoint position, FilterId id) { _popupMenu->addAction( tr::lng_filters_context_edit(tr::now), crl::guard(&_outer, [=] { showEditBox(id); })); + if (cDefaultFilterId() != id) { + _popupMenu->addAction( + tr::ktg_filters_context_make_default(tr::now), + crl::guard(&_outer, [=] { setDefaultFilter(id); })); + } _popupMenu->addAction( tr::lng_filters_context_remove(tr::now), crl::guard(&_outer, [=] { showRemoveBox(id); })); _popupMenu->popup(position); } +void FiltersMenu::showAllMenu(QPoint position) { + if (_popupMenu) { + _popupMenu = nullptr; + return; + } + _popupMenu = base::make_unique_q(_all); + _popupMenu->addAction( + tr::ktg_filters_context_edit_all(tr::now), + crl::guard(&_outer, [=] { _session->showSettings(Settings::Type::Folders); })); + if (cDefaultFilterId() != 0) { + _popupMenu->addAction( + tr::ktg_filters_context_make_default(tr::now), + crl::guard(&_outer, [=] { setDefaultFilter(0); })); + } + + _popupMenu->popup(position); +} + +void FiltersMenu::setDefaultFilter(FilterId id) { + if (cDefaultFilterId() != id) { + cSetDefaultFilterId(id); + KotatoSettings::Write(); + } +} + void FiltersMenu::showEditBox(FilterId id) { EditExistingFilter(_session, id); } diff --git a/Telegram/SourceFiles/window/window_filters_menu.h b/Telegram/SourceFiles/window/window_filters_menu.h index 7c64c5969..6266a0d4f 100644 --- a/Telegram/SourceFiles/window/window_filters_menu.h +++ b/Telegram/SourceFiles/window/window_filters_menu.h @@ -46,6 +46,8 @@ private: const QString &title, Ui::FilterIcon icon); void showMenu(QPoint position, FilterId id); + void showAllMenu(QPoint position); + void setDefaultFilter(FilterId id); void showEditBox(FilterId id); void showRemoveBox(FilterId id); void remove(FilterId id);