diff options
Diffstat (limited to 'src/windows')
-rw-r--r-- | src/windows/guildsettings/emojispane.cpp | 6 | ||||
-rw-r--r-- | src/windows/guildsettings/rolespane.cpp | 44 | ||||
-rw-r--r-- | src/windows/voicesettingswindow.cpp | 29 | ||||
-rw-r--r-- | src/windows/voicewindow.cpp | 40 |
4 files changed, 83 insertions, 36 deletions
diff --git a/src/windows/guildsettings/emojispane.cpp b/src/windows/guildsettings/emojispane.cpp index 702432f..fd0abd5 100644 --- a/src/windows/guildsettings/emojispane.cpp +++ b/src/windows/guildsettings/emojispane.cpp @@ -34,7 +34,7 @@ GuildSettingsEmojisPane::GuildSettingsEmojisPane(Snowflake guild_id) discord.signal_guild_emojis_update().connect(sigc::hide<0>(sigc::mem_fun(*this, &GuildSettingsEmojisPane::OnFetchEmojis))); const auto self_id = discord.GetUserData().ID; - const bool can_manage = discord.HasGuildPermission(self_id, GuildID, Permission::MANAGE_EMOJIS); + const bool can_manage = discord.HasGuildPermission(self_id, GuildID, Permission::MANAGE_GUILD_EXPRESSIONS); m_menu_delete.set_sensitive(can_manage); m_search.set_placeholder_text("Filter"); @@ -104,7 +104,7 @@ void GuildSettingsEmojisPane::OnMap() { auto &discord = Abaddon::Get().GetDiscordClient(); const auto self_id = discord.GetUserData().ID; - const bool can_manage = discord.HasGuildPermission(self_id, GuildID, Permission::MANAGE_EMOJIS); + const bool can_manage = discord.HasGuildPermission(self_id, GuildID, Permission::MANAGE_GUILD_EXPRESSIONS); m_menu_delete.set_sensitive(can_manage); discord.FetchGuildEmojis(GuildID, sigc::mem_fun(*this, &GuildSettingsEmojisPane::OnFetchEmojis)); @@ -228,7 +228,7 @@ bool GuildSettingsEmojisPane::OnTreeButtonPress(GdkEventButton *event) { if (event->button == GDK_BUTTON_SECONDARY) { auto &discord = Abaddon::Get().GetDiscordClient(); const auto self_id = discord.GetUserData().ID; - const bool can_manage = discord.HasGuildPermission(self_id, GuildID, Permission::MANAGE_EMOJIS); + const bool can_manage = discord.HasGuildPermission(self_id, GuildID, Permission::MANAGE_GUILD_EXPRESSIONS); m_menu_delete.set_sensitive(can_manage); auto selection = m_view.get_selection(); diff --git a/src/windows/guildsettings/rolespane.cpp b/src/windows/guildsettings/rolespane.cpp index 158fa11..25088d7 100644 --- a/src/windows/guildsettings/rolespane.cpp +++ b/src/windows/guildsettings/rolespane.cpp @@ -258,49 +258,61 @@ GuildSettingsRolesPaneInfo::GuildSettingsRolesPaneInfo(Snowflake guild_id) // fuck you clang-format you suck // clang-format off - add_perms("General", LEFT, { + add_perms("General", RIGHT, { Permission::VIEW_CHANNEL, Permission::MANAGE_CHANNELS, Permission::MANAGE_ROLES, - Permission::MANAGE_EMOJIS, + Permission::CREATE_GUILD_EXPRESSIONS, + Permission::MANAGE_GUILD_EXPRESSIONS, Permission::VIEW_AUDIT_LOG, - Permission::VIEW_GUILD_INSIGHTS, Permission::MANAGE_WEBHOOKS, Permission::MANAGE_GUILD }); - add_perms("Membership", LEFT, { - Permission::CREATE_INSTANT_INVITE, - Permission::CHANGE_NICKNAME, - Permission::MANAGE_NICKNAMES, - Permission::KICK_MEMBERS, - Permission::BAN_MEMBERS }); - - add_perms("Text Channels", RIGHT, { + add_perms("Text Channels", LEFT, { Permission::SEND_MESSAGES, - Permission::USE_PUBLIC_THREADS, - Permission::USE_PRIVATE_THREADS, + Permission::SEND_MESSAGES_IN_THREADS, + Permission::CREATE_PUBLIC_THREADS, + Permission::CREATE_PRIVATE_THREADS, Permission::EMBED_LINKS, Permission::ATTACH_FILES, Permission::ADD_REACTIONS, Permission::USE_EXTERNAL_EMOJIS, + Permission::USE_EXTERNAL_STICKERS, Permission::MENTION_EVERYONE, Permission::MANAGE_MESSAGES, Permission::MANAGE_THREADS, Permission::READ_MESSAGE_HISTORY, Permission::SEND_TTS_MESSAGES, - Permission::USE_SLASH_COMMANDS }); + Permission::USE_APPLICATION_COMMANDS, + Permission::SEND_VOICE_MESSAGES, }); + + add_perms("Membership", LEFT, { + Permission::CREATE_INSTANT_INVITE, + Permission::CHANGE_NICKNAME, + Permission::MANAGE_NICKNAMES, + Permission::KICK_MEMBERS, + Permission::BAN_MEMBERS, + Permission::MODERATE_MEMBERS }); + + add_perms("Advanced", LEFT, { Permission::ADMINISTRATOR }); add_perms("Voice Channels", RIGHT, { Permission::CONNECT, Permission::SPEAK, Permission::STREAM, + Permission::USE_EMBEDDED_ACTIVITIES, + Permission::USE_SOUNDBOARD, + Permission::USE_EXTERNAL_SOUNDS, Permission::USE_VAD, Permission::PRIORITY_SPEAKER, Permission::MUTE_MEMBERS, Permission::DEAFEN_MEMBERS, - Permission::MOVE_MEMBERS }); + Permission::MOVE_MEMBERS, + Permission::SET_VOICE_CHANNEL_STATUS }); - add_perms("Advanced", LEFT, { Permission::ADMINISTRATOR }); + add_perms("Events", RIGHT, { + Permission::CREATE_EVENTS, + Permission::MANAGE_EVENTS, }); // clang-format on diff --git a/src/windows/voicesettingswindow.cpp b/src/windows/voicesettingswindow.cpp index 97f77b5..c114c04 100644 --- a/src/windows/voicesettingswindow.cpp +++ b/src/windows/voicesettingswindow.cpp @@ -12,6 +12,7 @@ VoiceSettingsWindow::VoiceSettingsWindow() : m_main(Gtk::ORIENTATION_VERTICAL) { get_style_context()->add_class("app-window"); + get_style_context()->add_class("voice-settings-window"); set_default_size(300, 300); m_encoding_mode.append("Voice"); @@ -111,14 +112,28 @@ VoiceSettingsWindow::VoiceSettingsWindow() m_gain.set_increments(1.0, 5.0); m_gain.set_range(0.0, 6969696969.0); m_gain.set_value(Abaddon::Get().GetAudio().GetCaptureGain() * 100.0); - m_gain.signal_value_changed().connect([this]() { + const auto cb = [this]() { + spdlog::get("ui")->warn("emit"); m_signal_gain.emit(m_gain.get_value() / 100.0); - }); - - m_main.add(m_encoding_mode); - m_main.add(m_signal); - m_main.add(m_bitrate); - m_main.add(m_gain); + }; + // m_gain.signal_value_changed can be fired during destruction. thankfully signals are trackable + m_gain.signal_value_changed().connect(sigc::track_obj(cb, *this, m_signal_gain)); + + auto *layout = Gtk::make_managed<Gtk::HBox>(); + auto *labels = Gtk::make_managed<Gtk::VBox>(); + auto *widgets = Gtk::make_managed<Gtk::VBox>(); + layout->pack_start(*labels, false, true, 5); + layout->pack_start(*widgets); + labels->pack_start(*Gtk::make_managed<Gtk::Label>("Coding Mode", Gtk::ALIGN_END)); + labels->pack_start(*Gtk::make_managed<Gtk::Label>("Signal Hint", Gtk::ALIGN_END)); + labels->pack_start(*Gtk::make_managed<Gtk::Label>("Bitrate", Gtk::ALIGN_END)); + labels->pack_start(*Gtk::make_managed<Gtk::Label>("Gain", Gtk::ALIGN_END)); + widgets->pack_start(m_encoding_mode); + widgets->pack_start(m_signal); + widgets->pack_start(m_bitrate); + widgets->pack_start(m_gain); + + m_main.add(*layout); add(m_main); show_all_children(); diff --git a/src/windows/voicewindow.cpp b/src/windows/voicewindow.cpp index 16a9fed..825681c 100644 --- a/src/windows/voicewindow.cpp +++ b/src/windows/voicewindow.cpp @@ -181,7 +181,7 @@ VoiceWindow::VoiceWindow(Snowflake channel_id) m_mix_mono.set_active(audio.GetMixMono()); m_mix_mono.signal_toggled().connect([this]() { - Abaddon::Get().GetAudio().SetMixMono(m_mix_mono.get_active()); + Abaddon::Get().GetAudio().SetMixMono(m_mix_mono.get_active()); }); auto *playback_renderer = Gtk::make_managed<Gtk::CellRendererText>(); @@ -225,20 +225,40 @@ VoiceWindow::VoiceWindow(Snowflake channel_id) window->show(); }); + auto *sliders_container = Gtk::make_managed<Gtk::HBox>(); + auto *sliders_labels = Gtk::make_managed<Gtk::VBox>(); + auto *sliders_sliders = Gtk::make_managed<Gtk::VBox>(); + sliders_container->pack_start(*sliders_labels, false, true, 2); + sliders_container->pack_start(*sliders_sliders); + sliders_labels->pack_start(*Gtk::make_managed<Gtk::Label>("Threshold", Gtk::ALIGN_END)); + sliders_labels->pack_start(*Gtk::make_managed<Gtk::Label>("Gain", Gtk::ALIGN_END)); + sliders_sliders->pack_start(m_vad_param); + sliders_sliders->pack_start(m_capture_gain); + + auto *combos_container = Gtk::make_managed<Gtk::HBox>(); + auto *combos_labels = Gtk::make_managed<Gtk::VBox>(); + auto *combos_combos = Gtk::make_managed<Gtk::VBox>(); + combos_container->pack_start(*combos_labels, false, true, 6); + combos_container->pack_start(*combos_combos, Gtk::PACK_EXPAND_WIDGET, 6); + combos_labels->pack_start(*Gtk::make_managed<Gtk::Label>("VAD Method", Gtk::ALIGN_END)); + combos_labels->pack_start(*Gtk::make_managed<Gtk::Label>("Output Device", Gtk::ALIGN_END)); + combos_labels->pack_start(*Gtk::make_managed<Gtk::Label>("Input Device", Gtk::ALIGN_END)); + combos_combos->pack_start(m_vad_combo); + combos_combos->pack_start(m_playback_combo); + combos_combos->pack_start(m_capture_combo); + m_scroll.add(m_user_list); m_controls.add(m_mute); m_controls.add(m_deafen); m_controls.add(m_noise_suppression); m_controls.add(m_mix_mono); - m_main.add(m_menu_bar); - m_main.add(m_controls); - m_main.add(m_vad_value); - m_main.add(m_vad_param); - m_main.add(m_capture_gain); - m_main.add(m_scroll); - m_main.add(m_vad_combo); - m_main.add(m_playback_combo); - m_main.add(m_capture_combo); + m_main.pack_start(m_menu_bar); + m_main.pack_start(m_controls); + m_main.pack_start(m_vad_value); + m_main.pack_start(*Gtk::make_managed<Gtk::Label>("Input Settings")); + m_main.pack_start(*sliders_container); + m_main.pack_start(m_scroll); + m_main.pack_start(*combos_container, Gtk::PACK_EXPAND_WIDGET, 2); add(m_main); show_all_children(); |