From c4590f8b2382fb23a733d2cf2f6c645f02e2fc48 Mon Sep 17 00:00:00 2001 From: ouwou <26526779+ouwou@users.noreply.github.com> Date: Tue, 3 Jan 2023 22:52:41 -0500 Subject: start voice info box --- src/discord/discord.cpp | 17 +++++++++++++++++ src/discord/discord.hpp | 9 +++++++++ src/discord/voiceclient.cpp | 5 +++++ src/discord/voiceclient.hpp | 6 +++++- 4 files changed, 36 insertions(+), 1 deletion(-) (limited to 'src/discord') diff --git a/src/discord/discord.cpp b/src/discord/discord.cpp index c068243..44f64a9 100644 --- a/src/discord/discord.cpp +++ b/src/discord/discord.cpp @@ -31,6 +31,9 @@ DiscordClient::DiscordClient(bool mem_store) m_voice.signal_speaking().connect([this](const VoiceSpeakingData &data) { m_signal_voice_speaking.emit(data); }); + m_voice.signal_state_update().connect([this](DiscordVoiceClient::State state) { + m_signal_voice_client_state_update.emit(state); + }); #endif LoadEventMap(); @@ -1186,12 +1189,14 @@ void DiscordClient::ConnectToVoice(Snowflake channel_id) { m.ChannelID = channel_id; m.PreferredRegion = "newark"; m_websocket.Send(m); + m_signal_voice_requested_connect.emit(channel_id); } void DiscordClient::DisconnectFromVoice() { m_voice.Stop(); VoiceStateUpdateMessage m; m_websocket.Send(m); + m_signal_voice_requested_disconnect.emit(); } bool DiscordClient::IsVoiceConnected() const noexcept { @@ -2995,4 +3000,16 @@ DiscordClient::type_signal_voice_user_disconnect DiscordClient::signal_voice_use DiscordClient::type_signal_voice_user_connect DiscordClient::signal_voice_user_connect() { return m_signal_voice_user_connect; } + +DiscordClient::type_signal_voice_requested_connect DiscordClient::signal_voice_requested_connect() { + return m_signal_voice_requested_connect; +} + +DiscordClient::type_signal_voice_requested_disconnect DiscordClient::signal_voice_requested_disconnect() { + return m_signal_voice_requested_disconnect; +} + +DiscordClient::type_signal_voice_client_state_update DiscordClient::signal_voice_client_state_update() { + return m_signal_voice_client_state_update; +} #endif diff --git a/src/discord/discord.hpp b/src/discord/discord.hpp index 1e500e9..a7e3f79 100644 --- a/src/discord/discord.hpp +++ b/src/discord/discord.hpp @@ -440,6 +440,9 @@ public: using type_signal_voice_speaking = sigc::signal; using type_signal_voice_user_disconnect = sigc::signal; using type_signal_voice_user_connect = sigc::signal; + using type_signal_voice_requested_connect = sigc::signal; + using type_signal_voice_requested_disconnect = sigc::signal; + using type_signal_voice_client_state_update = sigc::signal; #endif type_signal_gateway_ready signal_gateway_ready(); @@ -502,6 +505,9 @@ public: type_signal_voice_speaking signal_voice_speaking(); type_signal_voice_user_disconnect signal_voice_user_disconnect(); type_signal_voice_user_connect signal_voice_user_connect(); + type_signal_voice_requested_connect signal_voice_requested_connect(); + type_signal_voice_requested_disconnect signal_voice_requested_disconnect(); + type_signal_voice_client_state_update signal_voice_client_state_update(); #endif protected: @@ -565,5 +571,8 @@ protected: type_signal_voice_speaking m_signal_voice_speaking; type_signal_voice_user_disconnect m_signal_voice_user_disconnect; type_signal_voice_user_connect m_signal_voice_user_connect; + type_signal_voice_requested_connect m_signal_voice_requested_connect; + type_signal_voice_requested_disconnect m_signal_voice_requested_disconnect; + type_signal_voice_client_state_update m_signal_voice_client_state_update; #endif }; diff --git a/src/discord/voiceclient.cpp b/src/discord/voiceclient.cpp index 379a65c..ed83e3c 100644 --- a/src/discord/voiceclient.cpp +++ b/src/discord/voiceclient.cpp @@ -423,6 +423,7 @@ void DiscordVoiceClient::KeepaliveThread() { void DiscordVoiceClient::SetState(State state) { m_log->debug("Changing state to {}", GetStateName(state)); m_state = state; + m_signal_state_update.emit(state); } void DiscordVoiceClient::OnUDPData(std::vector data) { @@ -464,6 +465,10 @@ DiscordVoiceClient::type_signal_speaking DiscordVoiceClient::signal_speaking() { return m_signal_speaking; } +DiscordVoiceClient::type_signal_state_update DiscordVoiceClient::signal_state_update() { + return m_signal_state_update; +} + void from_json(const nlohmann::json &j, VoiceGatewayMessage &m) { JS_D("op", m.Opcode); m.Data = j.at("d"); diff --git a/src/discord/voiceclient.hpp b/src/discord/voiceclient.hpp index 7e4dee3..916d070 100644 --- a/src/discord/voiceclient.hpp +++ b/src/discord/voiceclient.hpp @@ -201,7 +201,6 @@ public: [[nodiscard]] bool IsConnected() const noexcept; [[nodiscard]] bool IsConnecting() const noexcept; -private: enum class State { ConnectingToWebsocket, EstablishingConnection, @@ -209,6 +208,8 @@ private: DisconnectedByClient, DisconnectedByServer, }; + +private: static const char *GetStateName(State state); void OnGatewayMessage(const std::string &msg); @@ -272,13 +273,16 @@ private: using type_signal_connected = sigc::signal; using type_signal_disconnected = sigc::signal; using type_signal_speaking = sigc::signal; + using type_signal_state_update = sigc::signal; type_signal_connected m_signal_connected; type_signal_disconnected m_signal_disconnected; type_signal_speaking m_signal_speaking; + type_signal_state_update m_signal_state_update; public: type_signal_connected signal_connected(); type_signal_disconnected signal_disconnected(); type_signal_speaking signal_speaking(); + type_signal_state_update signal_state_update(); }; #endif -- cgit v1.2.3