diff options
author | ouwou <26526779+ouwou@users.noreply.github.com> | 2021-02-18 14:38:40 -0500 |
---|---|---|
committer | ouwou <26526779+ouwou@users.noreply.github.com> | 2021-02-18 14:38:40 -0500 |
commit | 3ab3119602c46e7c4802b2b8e017752738cd7031 (patch) | |
tree | 5b69db1fc8159212e988ffbcb74dde402dfc9023 /windows | |
parent | a721600016686cebb39bc359916a35f12a70766a (diff) | |
download | abaddon-portaudio-3ab3119602c46e7c4802b2b8e017752738cd7031.tar.gz abaddon-portaudio-3ab3119602c46e7c4802b2b8e017752738cd7031.zip |
add menu item to add recipient to group dm
Diffstat (limited to 'windows')
-rw-r--r-- | windows/mainwindow.cpp | 20 | ||||
-rw-r--r-- | windows/mainwindow.hpp | 5 |
2 files changed, 25 insertions, 0 deletions
diff --git a/windows/mainwindow.cpp b/windows/mainwindow.cpp index a09309f..db029bc 100644 --- a/windows/mainwindow.cpp +++ b/windows/mainwindow.cpp @@ -20,11 +20,14 @@ MainWindow::MainWindow() m_menu_discord_join_guild.set_sensitive(false); m_menu_discord_set_status.set_label("Set Status"); m_menu_discord_set_status.set_sensitive(false); + m_menu_discord_add_recipient.set_label("Add user to DM"); m_menu_discord_sub.append(m_menu_discord_connect); m_menu_discord_sub.append(m_menu_discord_disconnect); m_menu_discord_sub.append(m_menu_discord_set_token); m_menu_discord_sub.append(m_menu_discord_join_guild); m_menu_discord_sub.append(m_menu_discord_set_status); + m_menu_discord_sub.append(m_menu_discord_add_recipient); + m_menu_discord_sub.signal_popped_up().connect(sigc::mem_fun(*this, &MainWindow::OnDiscordSubmenuPopup)); // this gets called twice for some reason m_menu_discord.set_submenu(m_menu_discord_sub); m_menu_file.set_label("File"); @@ -72,6 +75,10 @@ MainWindow::MainWindow() Abaddon::Get().GetImageManager().ClearCache(); }); + m_menu_discord_add_recipient.signal_activate().connect([this] { + m_signal_action_add_recipient.emit(GetChatActiveChannel()); + }); + m_content_box.set_hexpand(true); m_content_box.set_vexpand(true); m_content_box.show(); @@ -237,6 +244,15 @@ void MainWindow::UpdateChatReactionRemove(Snowflake id, const Glib::ustring &par m_chat.UpdateReactions(id); } +void MainWindow::OnDiscordSubmenuPopup(const Gdk::Rectangle *flipped_rect, const Gdk::Rectangle *final_rect, bool flipped_x, bool flipped_y) { + auto &discord = Abaddon::Get().GetDiscordClient(); + auto channel_id = GetChatActiveChannel(); + auto channel = discord.GetChannel(channel_id); + m_menu_discord_add_recipient.set_visible(false); + if (channel.has_value() && channel->GetDMRecipients().size() + 1 < 10) + m_menu_discord_add_recipient.set_visible(channel->Type == ChannelType::GROUP_DM); +} + ChannelList *MainWindow::GetChannelList() { return &m_channel_list; } @@ -280,3 +296,7 @@ MainWindow::type_signal_action_show_user_menu MainWindow::signal_action_show_use MainWindow::type_signal_action_reload_settings MainWindow::signal_action_reload_settings() { return m_signal_action_reload_settings; } + +MainWindow::type_signal_action_add_recipient MainWindow::signal_action_add_recipient() { + return m_signal_action_add_recipient; +} diff --git a/windows/mainwindow.hpp b/windows/mainwindow.hpp index 747cc73..b1803ad 100644 --- a/windows/mainwindow.hpp +++ b/windows/mainwindow.hpp @@ -42,6 +42,7 @@ public: typedef sigc::signal<void> type_signal_action_set_status; typedef sigc::signal<void, const GdkEvent *, Snowflake, Snowflake> type_signal_action_show_user_menu; typedef sigc::signal<void> type_signal_action_reload_settings; + typedef sigc::signal<void, Snowflake> type_signal_action_add_recipient; // channel id type_signal_action_connect signal_action_connect(); type_signal_action_disconnect signal_action_disconnect(); @@ -51,6 +52,7 @@ public: type_signal_action_set_status signal_action_set_status(); type_signal_action_show_user_menu signal_action_show_user_menu(); type_signal_action_reload_settings signal_action_reload_settings(); + type_signal_action_add_recipient signal_action_add_recipient(); protected: type_signal_action_connect m_signal_action_connect; @@ -61,6 +63,7 @@ protected: type_signal_action_set_status m_signal_action_set_status; type_signal_action_show_user_menu m_signal_action_show_user_menu; type_signal_action_reload_settings m_signal_action_reload_settings; + type_signal_action_add_recipient m_signal_action_add_recipient; protected: Gtk::Box m_main_box; @@ -80,6 +83,8 @@ protected: Gtk::MenuItem m_menu_discord_set_token; Gtk::MenuItem m_menu_discord_join_guild; Gtk::MenuItem m_menu_discord_set_status; + Gtk::MenuItem m_menu_discord_add_recipient; // move me somewhere else some day + void OnDiscordSubmenuPopup(const Gdk::Rectangle *flipped_rect, const Gdk::Rectangle *final_rect, bool flipped_x, bool flipped_y); Gtk::MenuItem m_menu_file; Gtk::Menu m_menu_file_sub; |