2021-01-15 06:37:35 +00:00
|
|
|
#include "guildsettingswindow.hpp"
|
|
|
|
|
2024-01-19 01:30:54 +00:00
|
|
|
#include "abaddon.hpp"
|
|
|
|
|
2021-01-15 06:37:35 +00:00
|
|
|
GuildSettingsWindow::GuildSettingsWindow(Snowflake id)
|
|
|
|
: m_main(Gtk::ORIENTATION_VERTICAL)
|
2021-01-20 07:08:48 +00:00
|
|
|
, m_pane_info(id)
|
2021-11-16 19:38:14 +00:00
|
|
|
, m_pane_members(id)
|
|
|
|
, m_pane_roles(id)
|
2021-01-22 04:49:42 +00:00
|
|
|
, m_pane_bans(id)
|
2021-01-25 03:24:03 +00:00
|
|
|
, m_pane_invites(id)
|
2021-11-16 19:38:14 +00:00
|
|
|
, m_pane_emojis(id)
|
2021-02-28 07:00:15 +00:00
|
|
|
, m_pane_audit_log(id)
|
2021-11-16 19:38:14 +00:00
|
|
|
, GuildID(id) {
|
2021-01-15 06:37:35 +00:00
|
|
|
auto &discord = Abaddon::Get().GetDiscordClient();
|
|
|
|
const auto guild = *discord.GetGuild(id);
|
|
|
|
|
|
|
|
auto guild_update_cb = [this](Snowflake id) {
|
|
|
|
if (id != GuildID) return;
|
|
|
|
const auto guild = *Abaddon::Get().GetDiscordClient().GetGuild(id);
|
|
|
|
set_title(guild.Name);
|
|
|
|
if (guild.HasIcon())
|
|
|
|
Abaddon::Get().GetImageManager().LoadFromURL(guild.GetIconURL(), sigc::mem_fun(*this, &GuildSettingsWindow::set_icon));
|
|
|
|
};
|
|
|
|
discord.signal_guild_update().connect(sigc::track_obj(guild_update_cb, *this));
|
|
|
|
|
|
|
|
set_name("guild-settings");
|
|
|
|
set_default_size(800, 600);
|
|
|
|
set_title(guild.Name);
|
|
|
|
set_position(Gtk::WIN_POS_CENTER);
|
|
|
|
get_style_context()->add_class("app-window");
|
2021-01-25 03:24:03 +00:00
|
|
|
get_style_context()->add_class("app-popup");
|
2021-02-02 04:23:44 +00:00
|
|
|
get_style_context()->add_class("guild-settings-window");
|
2021-01-15 06:37:35 +00:00
|
|
|
|
|
|
|
if (guild.HasIcon()) {
|
|
|
|
Abaddon::Get().GetImageManager().LoadFromURL(guild.GetIconURL(), sigc::mem_fun(*this, &GuildSettingsWindow::set_icon));
|
|
|
|
}
|
|
|
|
|
|
|
|
m_switcher.set_stack(m_stack);
|
|
|
|
m_switcher.set_halign(Gtk::ALIGN_CENTER);
|
|
|
|
m_switcher.set_hexpand(true);
|
|
|
|
m_switcher.set_margin_top(10);
|
|
|
|
m_switcher.show();
|
|
|
|
|
|
|
|
m_pane_info.show();
|
2021-02-28 07:00:15 +00:00
|
|
|
m_pane_members.show();
|
2021-03-07 06:34:08 +00:00
|
|
|
m_pane_roles.show();
|
2021-01-20 07:08:48 +00:00
|
|
|
m_pane_bans.show();
|
2021-01-22 04:49:42 +00:00
|
|
|
m_pane_invites.show();
|
2021-03-18 03:55:41 +00:00
|
|
|
m_pane_emojis.show();
|
2021-01-25 03:24:03 +00:00
|
|
|
m_pane_audit_log.show();
|
2021-01-20 07:08:48 +00:00
|
|
|
|
2021-01-22 04:49:42 +00:00
|
|
|
m_stack.set_transition_duration(100);
|
|
|
|
m_stack.set_transition_type(Gtk::STACK_TRANSITION_TYPE_CROSSFADE);
|
2021-01-20 07:08:48 +00:00
|
|
|
m_stack.set_margin_top(10);
|
|
|
|
m_stack.set_margin_bottom(10);
|
|
|
|
m_stack.set_margin_left(10);
|
|
|
|
m_stack.set_margin_right(10);
|
2021-01-15 06:37:35 +00:00
|
|
|
|
2021-02-12 05:34:30 +00:00
|
|
|
const auto self_id = discord.GetUserData().ID;
|
|
|
|
|
2021-01-15 06:37:35 +00:00
|
|
|
m_stack.add(m_pane_info, "info", "Info");
|
2021-02-28 07:00:15 +00:00
|
|
|
m_stack.add(m_pane_members, "members", "Members");
|
2021-03-07 06:34:08 +00:00
|
|
|
m_stack.add(m_pane_roles, "roles", "Roles");
|
2021-01-20 07:08:48 +00:00
|
|
|
m_stack.add(m_pane_bans, "bans", "Bans");
|
2021-02-12 05:34:30 +00:00
|
|
|
if (discord.HasGuildPermission(self_id, GuildID, Permission::MANAGE_GUILD))
|
|
|
|
m_stack.add(m_pane_invites, "invites", "Invites");
|
2021-03-18 03:55:41 +00:00
|
|
|
m_stack.add(m_pane_emojis, "emojis", "Emojis");
|
2021-02-12 05:34:30 +00:00
|
|
|
if (discord.HasGuildPermission(self_id, GuildID, Permission::VIEW_AUDIT_LOG))
|
|
|
|
m_stack.add(m_pane_audit_log, "audit-log", "Audit Log");
|
2021-01-15 06:37:35 +00:00
|
|
|
m_stack.show();
|
|
|
|
|
|
|
|
m_main.add(m_switcher);
|
|
|
|
m_main.add(m_stack);
|
|
|
|
m_main.show();
|
|
|
|
add(m_main);
|
|
|
|
}
|