summaryrefslogtreecommitdiff
path: root/windows
diff options
context:
space:
mode:
authorouwou <26526779+ouwou@users.noreply.github.com>2021-02-18 14:38:40 -0500
committerouwou <26526779+ouwou@users.noreply.github.com>2021-02-18 14:38:40 -0500
commit3ab3119602c46e7c4802b2b8e017752738cd7031 (patch)
tree5b69db1fc8159212e988ffbcb74dde402dfc9023 /windows
parenta721600016686cebb39bc359916a35f12a70766a (diff)
downloadabaddon-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.cpp20
-rw-r--r--windows/mainwindow.hpp5
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;