blob: e5e342a4ef6036c6253c1e77b98e350e329a371a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
#pragma once
#include <gtkmm.h>
#include <unordered_map>
#include "../../discord/guild.hpp"
#include "../../components/draglistbox.hpp"
class GuildSettingsRolesPaneRolesListItem : public Gtk::ListBoxRow {
public:
GuildSettingsRolesPaneRolesListItem(const GuildData &guild, const RoleData &role);
Glib::ustring DisplayTerm;
Snowflake GuildID;
Snowflake RoleID;
int Position;
private:
void UpdateItem(const RoleData &role);
void OnRoleUpdate(Snowflake guild_id, Snowflake role_id);
Gtk::EventBox m_ev;
Gtk::Label m_name;
};
class GuildSettingsRolesPaneRoles : public Gtk::Box {
public:
GuildSettingsRolesPaneRoles(Snowflake guild_id);
private:
void OnRoleCreate(Snowflake guild_id, Snowflake role_id);
void OnRoleDelete(Snowflake guild_id, Snowflake role_id);
Snowflake GuildID;
Gtk::Entry m_search;
Gtk::ScrolledWindow m_list_scroll;
DragListBox m_list;
typedef sigc::signal<void, Snowflake /* role_id */> type_signal_role_select;
type_signal_role_select m_signal_role_select;
public:
std::unordered_map<Snowflake, GuildSettingsRolesPaneRolesListItem *> m_rows;
type_signal_role_select signal_role_select();
};
class GuildSettingsRolesPanePermItem : public Gtk::CheckButton {
public:
GuildSettingsRolesPanePermItem(Permission perm);
private:
Permission m_permission;
typedef sigc::signal<void, Permission, bool> type_signal_permission_click;
type_signal_permission_click m_signal_permission;
public:
type_signal_permission_click signal_permission_click();
};
class GuildSettingsRolesPaneInfo : public Gtk::ScrolledWindow {
public:
GuildSettingsRolesPaneInfo(Snowflake guild_id);
void SetRole(const RoleData &role);
private:
void OnRoleUpdate(Snowflake guild_id, Snowflake role_id);
void OnPermissionToggle(Permission perm, bool new_set);
void UpdateRoleName();
Snowflake GuildID;
Snowflake RoleID;
Permission m_perms;
std::vector<sigc::connection> m_update_connections;
Gtk::Box m_layout;
Gtk::Box m_meta;
Gtk::Entry m_role_name;
Gtk::ColorButton m_color_button;
Gtk::Grid m_grid;
std::unordered_map<Permission, GuildSettingsRolesPanePermItem *> m_perm_items;
};
class GuildSettingsRolesPane : public Gtk::Box {
public:
GuildSettingsRolesPane(Snowflake id);
private:
void OnRoleSelect(Snowflake role_id);
Snowflake GuildID;
Gtk::Box m_layout;
GuildSettingsRolesPaneRoles m_roles_list;
GuildSettingsRolesPaneInfo m_roles_perms;
};
|