diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings index d7e287bd5..3ec06e94b 100644 --- a/Telegram/Resources/langs/lang.strings +++ b/Telegram/Resources/langs/lang.strings @@ -2634,4 +2634,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "ktg_forward_subtitle_group_all_media" = "as albums"; "ktg_forward_subtitle_separate_messages" = "one by one"; +"ktg_profile_mention_user" = "Mention user"; + // Keys finished diff --git a/Telegram/Resources/langs/rewrites/en.json b/Telegram/Resources/langs/rewrites/en.json index 04a57fa29..4dad11358 100644 --- a/Telegram/Resources/langs/rewrites/en.json +++ b/Telegram/Resources/langs/rewrites/en.json @@ -183,6 +183,7 @@ "ktg_forward_subtitle_uncaptioned": "uncaptioned", "ktg_forward_subtitle_group_all_media": "as albums", "ktg_forward_subtitle_separate_messages": "one by one", + "ktg_profile_mention_user": "Mention user", // This string should always be last for better work with Git. "dummy_last_string": "" diff --git a/Telegram/Resources/langs/rewrites/it.json b/Telegram/Resources/langs/rewrites/it.json index 9aad95ed0..7c2169bc2 100644 --- a/Telegram/Resources/langs/rewrites/it.json +++ b/Telegram/Resources/langs/rewrites/it.json @@ -183,6 +183,7 @@ "ktg_forward_subtitle_uncaptioned": "uncaptioned", "ktg_forward_subtitle_group_all_media": "as albums", "ktg_forward_subtitle_separate_messages": "one by one", + "ktg_profile_mention_user": "Mention user", // 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 75536cbca..d5081c560 100644 --- a/Telegram/Resources/langs/rewrites/pl.json +++ b/Telegram/Resources/langs/rewrites/pl.json @@ -191,6 +191,7 @@ "ktg_forward_subtitle_uncaptioned": "uncaptioned", "ktg_forward_subtitle_group_all_media": "as albums", "ktg_forward_subtitle_separate_messages": "one by one", + "ktg_profile_mention_user": "Mention user", // This string should always be last for better work with Git. "dummy_last_string": "" diff --git a/Telegram/Resources/langs/rewrites/pt-br.json b/Telegram/Resources/langs/rewrites/pt-br.json index 23dfd4787..83f9af4da 100644 --- a/Telegram/Resources/langs/rewrites/pt-br.json +++ b/Telegram/Resources/langs/rewrites/pt-br.json @@ -183,6 +183,7 @@ "ktg_forward_subtitle_uncaptioned": "uncaptioned", "ktg_forward_subtitle_group_all_media": "as albums", "ktg_forward_subtitle_separate_messages": "one by one", + "ktg_profile_mention_user": "Mention user", // 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 517401c53..f9811192c 100644 --- a/Telegram/Resources/langs/rewrites/ru.json +++ b/Telegram/Resources/langs/rewrites/ru.json @@ -190,6 +190,7 @@ "ktg_forward_subtitle_uncaptioned": "без подписей", "ktg_forward_subtitle_group_all_media": "альбомами", "ktg_forward_subtitle_separate_messages": "по одному", + "ktg_profile_mention_user": "Упомянуть пользователя", // 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 949b4703a..bab37f01f 100644 --- a/Telegram/Resources/langs/rewrites/tr.json +++ b/Telegram/Resources/langs/rewrites/tr.json @@ -183,6 +183,7 @@ "ktg_forward_subtitle_uncaptioned": "uncaptioned", "ktg_forward_subtitle_group_all_media": "as albums", "ktg_forward_subtitle_separate_messages": "one by one", + "ktg_profile_mention_user": "Mention user", // 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 da2f820c3..9b67eceea 100644 --- a/Telegram/Resources/langs/rewrites/uk.json +++ b/Telegram/Resources/langs/rewrites/uk.json @@ -190,6 +190,7 @@ "ktg_forward_subtitle_uncaptioned": "uncaptioned", "ktg_forward_subtitle_group_all_media": "as albums", "ktg_forward_subtitle_separate_messages": "one by one", + "ktg_profile_mention_user": "Mention user", // This string should always be last for better work with Git. "dummy_last_string": "" diff --git a/Telegram/SourceFiles/boxes/peers/edit_participants_box.cpp b/Telegram/SourceFiles/boxes/peers/edit_participants_box.cpp index e5717703b..47f7aee4d 100644 --- a/Telegram/SourceFiles/boxes/peers/edit_participants_box.cpp +++ b/Telegram/SourceFiles/boxes/peers/edit_participants_box.cpp @@ -17,6 +17,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "facades.h" #include "apiwrap.h" #include "lang/lang_keys.h" +#include "mainwindow.h" #include "mainwidget.h" #include "dialogs/dialogs_indexed_list.h" #include "data/data_peer_values.h" @@ -1426,6 +1427,17 @@ base::unique_qptr ParticipantsBoxController::rowContextMenu( } return result; } + if (const auto window = App::wnd()) { + if (const auto mainwidget = window->sessionContent()) { + if (const auto openedPeer = mainwidget->peer()) { + if (openedPeer->canWrite()) { + result->addAction( + tr::ktg_profile_mention_user(tr::now), + crl::guard(this, [=] { mainwidget->mentionUser(user); })); + } + } + } + } if (_additional.canAddOrEditAdmin(user)) { const auto isAdmin = _additional.isCreator(user) || _additional.adminRights(user).has_value(); diff --git a/Telegram/SourceFiles/history/history_widget.cpp b/Telegram/SourceFiles/history/history_widget.cpp index 593f73a69..8b250be65 100644 --- a/Telegram/SourceFiles/history/history_widget.cpp +++ b/Telegram/SourceFiles/history/history_widget.cpp @@ -5690,6 +5690,25 @@ bool HistoryWidget::sendExistingPhoto( return true; } +void HistoryWidget::mentionUser(PeerData *peer) { + if (!peer || !peer->isUser()) { + return; + } + + const auto user = peer->asUser(); + QString replacement, entityTag; + if (user->username.isEmpty()) { + replacement = user->firstName; + if (replacement.isEmpty()) { + replacement = user->name; + } + entityTag = PrepareMentionTag(user); + } else { + replacement = '@' + user->username; + } + _field->insertTag(replacement, entityTag); +} + void HistoryWidget::showInfoTooltip( const TextWithEntities &text, Fn hiddenCallback) { diff --git a/Telegram/SourceFiles/history/history_widget.h b/Telegram/SourceFiles/history/history_widget.h index c31e2d5ac..f36102dc4 100644 --- a/Telegram/SourceFiles/history/history_widget.h +++ b/Telegram/SourceFiles/history/history_widget.h @@ -261,6 +261,8 @@ public: not_null photo, Api::SendOptions options); + void mentionUser(PeerData *peer); + void showInfoTooltip( const TextWithEntities &text, Fn hiddenCallback); diff --git a/Telegram/SourceFiles/mainwidget.cpp b/Telegram/SourceFiles/mainwidget.cpp index 887c57db6..707c8888c 100644 --- a/Telegram/SourceFiles/mainwidget.cpp +++ b/Telegram/SourceFiles/mainwidget.cpp @@ -2578,6 +2578,14 @@ void MainWidget::searchInChat(Dialogs::Key chat) { } } +void MainWidget::mentionUser(PeerData *peer) { + if (!_history->peer() || !_history->peer()->canWrite()) { + return; + } + + _history->mentionUser(peer); +} + void MainWidget::openPeerByName( const QString &username, MsgId msgId, diff --git a/Telegram/SourceFiles/mainwidget.h b/Telegram/SourceFiles/mainwidget.h index d042ff0aa..890b807d2 100644 --- a/Telegram/SourceFiles/mainwidget.h +++ b/Telegram/SourceFiles/mainwidget.h @@ -220,6 +220,8 @@ public: void searchInChat(Dialogs::Key chat); + void mentionUser(PeerData *peer); + void ui_showPeerHistory( PeerId peer, const SectionShow ¶ms,