From 8af5901fb893c3fc25b31bf484a90b47d1c24c2c Mon Sep 17 00:00:00 2001 From: dec05eba Date: Tue, 10 Aug 2021 13:01:50 +0200 Subject: Matrix: add ctrl+p/ctrl+d to pin/unpin messages --- src/QuickMedia.cpp | 51 +++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 43 insertions(+), 8 deletions(-) (limited to 'src/QuickMedia.cpp') 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(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(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) { -- cgit v1.2.3