diff options
Diffstat (limited to 'src/abaddon.cpp')
-rw-r--r-- | src/abaddon.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/abaddon.cpp b/src/abaddon.cpp index 02dcd08..bdedc7c 100644 --- a/src/abaddon.cpp +++ b/src/abaddon.cpp @@ -3,6 +3,7 @@ #include <string> #include <algorithm> #include "platform.hpp" +#include "audio/manager.hpp" #include "discord/discord.hpp" #include "dialogs/token.hpp" #include "dialogs/editmessage.hpp" @@ -219,6 +220,16 @@ int Abaddon::StartGTK() { return 1; } +#ifdef WITH_VOICE + m_audio = std::make_unique<AudioManager>(); + if (!m_audio->OK()) { + Gtk::MessageDialog dlg(*m_main_window, "The audio engine could not be initialized!", false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true); + dlg.set_position(Gtk::WIN_POS_CENTER); + dlg.run(); + return 1; + } +#endif + // store must be checked before this can be called m_main_window->UpdateComponents(); @@ -239,6 +250,11 @@ int Abaddon::StartGTK() { m_main_window->GetChannelList()->signal_action_guild_leave().connect(sigc::mem_fun(*this, &Abaddon::ActionLeaveGuild)); m_main_window->GetChannelList()->signal_action_guild_settings().connect(sigc::mem_fun(*this, &Abaddon::ActionGuildSettings)); +#ifdef WITH_VOICE + m_main_window->GetChannelList()->signal_action_join_voice_channel().connect(sigc::mem_fun(*this, &Abaddon::ActionJoinVoiceChannel)); + m_main_window->GetChannelList()->signal_action_disconnect_voice().connect(sigc::mem_fun(*this, &Abaddon::ActionDisconnectVoice)); +#endif + m_main_window->GetChatWindow()->signal_action_message_edit().connect(sigc::mem_fun(*this, &Abaddon::ActionChatEditMessage)); m_main_window->GetChatWindow()->signal_action_chat_submit().connect(sigc::mem_fun(*this, &Abaddon::ActionChatInputSubmit)); m_main_window->GetChatWindow()->signal_action_chat_load_history().connect(sigc::mem_fun(*this, &Abaddon::ActionChatLoadHistory)); @@ -912,6 +928,16 @@ void Abaddon::ActionViewThreads(Snowflake channel_id) { window->show(); } +#ifdef WITH_VOICE +void Abaddon::ActionJoinVoiceChannel(Snowflake channel_id) { + m_discord.ConnectToVoice(channel_id); +} + +void Abaddon::ActionDisconnectVoice() { + m_discord.DisconnectFromVoice(); +} +#endif + std::optional<Glib::ustring> Abaddon::ShowTextPrompt(const Glib::ustring &prompt, const Glib::ustring &title, const Glib::ustring &placeholder, Gtk::Window *window) { TextInputDialog dlg(prompt, title, placeholder, window != nullptr ? *window : *m_main_window); const auto code = dlg.run(); @@ -951,15 +977,24 @@ EmojiResource &Abaddon::GetEmojis() { return m_emojis; } +#ifdef WITH_VOICE +AudioManager &Abaddon::GetAudio() { + return *m_audio; +} +#endif + void Abaddon::on_tray_click() { m_main_window->set_visible(!m_main_window->is_visible()); } + void Abaddon::on_tray_menu_click() { m_gtk_app->quit(); } + void Abaddon::on_tray_popup_menu(int button, int activate_time) { m_tray->popup_menu_at_position(*m_tray_menu, button, activate_time); } + void Abaddon::on_window_hide() { if (!m_settings.GetSettings().HideToTray) { m_gtk_app->quit(); |