From 11d72d6bd5d1fee6ed818f54c9c997a03762cc6a Mon Sep 17 00:00:00 2001 From: RadRussianRus Date: Thu, 9 Jul 2020 11:42:10 +0300 Subject: [PATCH] Added option to open chat on click --- Telegram/Resources/langs/lang.strings | 2 ++ Telegram/Resources/langs/rewrites/en.json | 2 ++ Telegram/Resources/langs/rewrites/pl.json | 2 ++ Telegram/Resources/langs/rewrites/ru.json | 2 ++ Telegram/Resources/langs/rewrites/tr.json | 2 ++ Telegram/Resources/langs/rewrites/uk.json | 2 ++ Telegram/SourceFiles/boxes/share_box.cpp | 24 +++++++++++++++---- Telegram/SourceFiles/kotato/json_settings.cpp | 5 ++++ Telegram/SourceFiles/kotato/settings.cpp | 1 + Telegram/SourceFiles/kotato/settings.h | 1 + Telegram/SourceFiles/kotato/settings_menu.cpp | 3 ++- 11 files changed, 41 insertions(+), 5 deletions(-) diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings index 96fb42e79..61592e775 100644 --- a/Telegram/Resources/langs/lang.strings +++ b/Telegram/Resources/langs/lang.strings @@ -2580,5 +2580,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "ktg_settings_forward" = "Forward"; "ktg_settings_forward_retain_selection" = "Retain selection after forward"; +"ktg_settings_forward_chat_on_click" = "Open chat on click"; +"ktg_settings_forward_chat_on_click_description" = "You can hold Ctrl to select multiple chats regardless of this option."; // Keys finished diff --git a/Telegram/Resources/langs/rewrites/en.json b/Telegram/Resources/langs/rewrites/en.json index 0baf7a452..fd4a941fe 100644 --- a/Telegram/Resources/langs/rewrites/en.json +++ b/Telegram/Resources/langs/rewrites/en.json @@ -170,6 +170,8 @@ "ktg_forward_go_to_chat": "Go to chat", "ktg_settings_forward": "Forward", "ktg_settings_forward_retain_selection": "Retain selection after forward", + "ktg_settings_forward_chat_on_click": "Open chat on click", + "ktg_settings_forward_chat_on_click_description": "You can hold Ctrl to select multiple chats regardless of this option.", // This string should always be last for better work with Git. "dummy_last_string": "" diff --git a/Telegram/Resources/langs/rewrites/pl.json b/Telegram/Resources/langs/rewrites/pl.json index 24492479d..719688518 100644 --- a/Telegram/Resources/langs/rewrites/pl.json +++ b/Telegram/Resources/langs/rewrites/pl.json @@ -178,6 +178,8 @@ "ktg_forward_go_to_chat": "Go to chat", "ktg_settings_forward": "Forward", "ktg_settings_forward_retain_selection": "Retain selection after forward", + "ktg_settings_forward_chat_on_click": "Open chat on click", + "ktg_settings_forward_chat_on_click_description": "You can hold Ctrl to select multiple chats regardless of this option.", // This string should always be last for better work with Git. "dummy_last_string": "" diff --git a/Telegram/Resources/langs/rewrites/ru.json b/Telegram/Resources/langs/rewrites/ru.json index 934cb9d5f..e4eac04ac 100644 --- a/Telegram/Resources/langs/rewrites/ru.json +++ b/Telegram/Resources/langs/rewrites/ru.json @@ -177,6 +177,8 @@ "ktg_forward_go_to_chat": "Перейти в чат", "ktg_settings_forward": "Пересылка", "ktg_settings_forward_retain_selection": "Сохранять выделение после пересылки", + "ktg_settings_forward_chat_on_click": "Открывать чат по клику", + "ktg_settings_forward_chat_on_click_description": "Удерживайте Ctrl для выбора нескольких чатов вне зависимости от этой настройки.", // This string should always be last for better work with Git. "dummy_last_string": "" diff --git a/Telegram/Resources/langs/rewrites/tr.json b/Telegram/Resources/langs/rewrites/tr.json index 8af321664..5034f8568 100644 --- a/Telegram/Resources/langs/rewrites/tr.json +++ b/Telegram/Resources/langs/rewrites/tr.json @@ -170,6 +170,8 @@ "ktg_forward_go_to_chat": "Go to chat", "ktg_settings_forward": "Forward", "ktg_settings_forward_retain_selection": "Retain selection after forward", + "ktg_settings_forward_chat_on_click": "Open chat on click", + "ktg_settings_forward_chat_on_click_description": "You can hold Ctrl to select multiple chats regardless of this option.", // This string should always be last for better work with Git. "dummy_last_string": "" diff --git a/Telegram/Resources/langs/rewrites/uk.json b/Telegram/Resources/langs/rewrites/uk.json index 7fb592e99..8163e306e 100644 --- a/Telegram/Resources/langs/rewrites/uk.json +++ b/Telegram/Resources/langs/rewrites/uk.json @@ -177,6 +177,8 @@ "ktg_forward_go_to_chat": "Go to chat", "ktg_settings_forward": "Forward", "ktg_settings_forward_retain_selection": "Retain selection after forward", + "ktg_settings_forward_chat_on_click": "Open chat on click", + "ktg_settings_forward_chat_on_click_description": "You can hold Ctrl to select multiple chats regardless of this option.", // This string should always be last for better work with Git. "dummy_last_string": "" diff --git a/Telegram/SourceFiles/boxes/share_box.cpp b/Telegram/SourceFiles/boxes/share_box.cpp index 09d8af0c3..3478ff6f4 100644 --- a/Telegram/SourceFiles/boxes/share_box.cpp +++ b/Telegram/SourceFiles/boxes/share_box.cpp @@ -51,6 +51,7 @@ public: void setPeerSelectedChangedCallback( Fn callback); void setSubmitRequest(Fn callback); + void setGoToChatRequest(Fn callback); void peerUnselected(not_null peer); std::vector> selected() const; @@ -143,6 +144,7 @@ private: Fn _peerSelectedChangedCallback; Fn _submitRequest; + Fn _goToChatRequest; bool _searching = false; QString _lastQuery; @@ -276,6 +278,13 @@ void ShareBox::prepare() { submit({}); }); + if (_goToChatCallback) { + _inner->setGoToChatRequest([=] { + const auto singleChat = _inner->selected().at(0); + goToChat(singleChat); + }); + } + Ui::Emoji::SuggestionsController::Init( getDelegate()->outerContainer(), _comment->entity(), @@ -931,11 +940,14 @@ void ShareBox::Inner::mousePressEvent(QMouseEvent *e) { updateUpon(e->pos()); changeCheckState(getChatAtIndex(_upon)); if (!_hadSelection - && _submitRequest && !(e->modifiers() & Qt::ControlModifier) - && _selected.size() == 1 - && _selected.front()->isSelf()) { - _submitRequest(); + && _selected.size() == 1) { + if (_submitRequest && _selected.front()->isSelf()) { + _submitRequest(); + } else if (_goToChatRequest && cForwardChatOnClick()) { + _goToChatRequest(); + } + _hadSelection = true; } else if (!_hadSelection) { _hadSelection = true; } @@ -990,6 +1002,10 @@ void ShareBox::Inner::setSubmitRequest(Fn callback) { _submitRequest = std::move(callback); } +void ShareBox::Inner::setGoToChatRequest(Fn callback) { + _goToChatRequest = std::move(callback); +} + void ShareBox::Inner::changePeerCheckState( not_null chat, bool checked, diff --git a/Telegram/SourceFiles/kotato/json_settings.cpp b/Telegram/SourceFiles/kotato/json_settings.cpp index b7e21c6a4..78dece7fd 100644 --- a/Telegram/SourceFiles/kotato/json_settings.cpp +++ b/Telegram/SourceFiles/kotato/json_settings.cpp @@ -213,6 +213,7 @@ QByteArray GenerateSettingsJson(bool areDefault = false) { settings.insert(qsl("hover_emoji_panel"), HoverEmojiPanel()); settings.insert(qsl("monospace_large_bubbles"), MonospaceLargeBubbles()); settings.insert(qsl("forward_retain_selection"), cForwardRetainSelection()); + settings.insert(qsl("forward_on_click"), cForwardChatOnClick()); settingsFonts.insert(qsl("use_system_font"), cUseSystemFont()); settingsFonts.insert(qsl("use_original_metrics"), cUseOriginalMetrics()); @@ -521,6 +522,10 @@ bool Manager::readCustomFile() { ReadBoolOption(settings, "forward_retain_selection", [&](auto v) { cSetForwardRetainSelection(v); }); + + ReadBoolOption(settings, "forward_on_click", [&](auto v) { + cSetForwardChatOnClick(v); + }); return true; } diff --git a/Telegram/SourceFiles/kotato/settings.cpp b/Telegram/SourceFiles/kotato/settings.cpp index 72caea07a..63cd09c0c 100644 --- a/Telegram/SourceFiles/kotato/settings.cpp +++ b/Telegram/SourceFiles/kotato/settings.cpp @@ -188,3 +188,4 @@ rpl::producer HoverEmojiPanelChanges() { } bool gForwardRetainSelection = false; +bool gForwardChatOnClick = false; diff --git a/Telegram/SourceFiles/kotato/settings.h b/Telegram/SourceFiles/kotato/settings.h index 459df11ab..3c0424814 100644 --- a/Telegram/SourceFiles/kotato/settings.h +++ b/Telegram/SourceFiles/kotato/settings.h @@ -123,3 +123,4 @@ void SetHoverEmojiPanel(bool enabled); [[nodiscard]] rpl::producer HoverEmojiPanelChanges(); DeclareSetting(bool, ForwardRetainSelection); +DeclareSetting(bool, ForwardChatOnClick); diff --git a/Telegram/SourceFiles/kotato/settings_menu.cpp b/Telegram/SourceFiles/kotato/settings_menu.cpp index 1c75369bd..47e88bd55 100644 --- a/Telegram/SourceFiles/kotato/settings_menu.cpp +++ b/Telegram/SourceFiles/kotato/settings_menu.cpp @@ -378,12 +378,13 @@ void SetupKotatoForward(not_null container) { AddSubsectionTitle(container, tr::ktg_settings_forward()); SettingsMenuCSwitch(ktg_settings_forward_retain_selection, ForwardRetainSelection); + SettingsMenuCSwitch(ktg_settings_forward_chat_on_click, ForwardChatOnClick); AddSkip(container); + AddDividerText(container, tr::ktg_settings_forward_chat_on_click_description()); } void SetupKotatoNetwork(not_null container) { - AddDivider(container); AddSkip(container); AddSubsectionTitle(container, tr::ktg_settings_network());