diff options
author | dec05eba <dec05eba@protonmail.com> | 2021-08-10 13:01:50 +0200 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2021-08-10 13:01:50 +0200 |
commit | 8af5901fb893c3fc25b31bf484a90b47d1c24c2c (patch) | |
tree | a2898fa4357a264b1ba98746379cabf0c9e55b85 /src/QuickMedia.cpp | |
parent | fde558b220118ff873cc2e735f6ec167ebcf5167 (diff) |
Matrix: add ctrl+p/ctrl+d to pin/unpin messages
Diffstat (limited to 'src/QuickMedia.cpp')
-rw-r--r-- | src/QuickMedia.cpp | 51 |
1 files changed, 43 insertions, 8 deletions
diff --git a/src/QuickMedia.cpp b/src/QuickMedia.cpp index a21cf11..a45da87 100644 --- a/src/QuickMedia.cpp +++ b/src/QuickMedia.cpp @@ -5876,17 +5876,15 @@ namespace QuickMedia { } } - if(current_room) { - if(event.key.control && event.key.code == sf::Keyboard::C) { - BodyItem *selected = tabs[selected_tab].body->get_selected(); - if(selected) { - auto desc = selected->get_description(); - sf::Clipboard::setString(sf::String::fromUtf8(desc.begin(), desc.end())); - } + if(event.key.control && event.key.code == sf::Keyboard::C) { + BodyItem *selected = tabs[selected_tab].body->get_selected(); + if(selected) { + auto desc = selected->get_description(); + sf::Clipboard::setString(sf::String::fromUtf8(desc.begin(), desc.end())); } } - if(selected_tab == MESSAGES_TAB_INDEX && current_room) { + if(selected_tab == MESSAGES_TAB_INDEX) { if(event.key.code == sf::Keyboard::U) { frame_skip_text_entry = true; new_page = PageType::FILE_MANAGER; @@ -5983,6 +5981,43 @@ namespace QuickMedia { show_notification("QuickMedia", "No message selected for deletion"); } } + + if(event.key.control && event.key.code == sf::Keyboard::P && !chat_input.is_editable()) { + frame_skip_text_entry = true; + BodyItem *selected = tabs[selected_tab].body->get_selected(); + if(selected) { + Message *selected_message = static_cast<Message*>(selected->userdata); + if(!is_state_message_type(selected_message)) { + if(selected_message->event_id.empty()) { + // TODO: Show inline notification + show_notification("QuickMedia", "You can't pin a message that hasn't been sent yet"); + } else { + run_task_with_loading_screen([this, current_room, selected_message] { + return matrix->pin_message(current_room, selected_message->event_id) == PluginResult::OK; + }); + } + } + } else { + // TODO: Show inline notification + show_notification("QuickMedia", "No message selected for pinning"); + } + } + } else if(selected_tab == PINNED_TAB_INDEX) { + if(event.key.control && event.key.code == sf::Keyboard::D && !chat_input.is_editable()) { + frame_skip_text_entry = true; + BodyItem *selected = tabs[selected_tab].body->get_selected(); + if(selected) { + PinnedEventData *selected_pinned_event_data = static_cast<PinnedEventData*>(selected->userdata); + if(selected_pinned_event_data) { + run_task_with_loading_screen([this, current_room, selected_pinned_event_data] { + return matrix->unpin_message(current_room, selected_pinned_event_data->event_id) == PluginResult::OK; + }); + } + } else { + // TODO: Show inline notification + show_notification("QuickMedia", "No message selected for unpinning"); + } + } } } else if(event.type == sf::Event::KeyPressed && chat_state == ChatState::URL_SELECTION) { if(event.key.code == sf::Keyboard::Escape) { |