summaryrefslogtreecommitdiff
path: root/src/windows/guildsettings/banspane.hpp
blob: d50b372d21d9640bd6356cf00e0195b119d242f8 (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
#pragma once
#include "discord/snowflake.hpp"
#include "discord/ban.hpp"

class GuildSettingsBansPane : public Gtk::Box {
public:
    GuildSettingsBansPane(Snowflake id);

private:
    void OnMap();

    bool m_requested = false;

    void OnGuildBanFetch(const BanData &ban);
    void OnGuildBansFetch(const std::vector<BanData> &bans);
    void OnMenuUnban();
    void OnMenuCopyID();
    bool OnTreeButtonPress(GdkEventButton *event);
    void OnBanRemove(Snowflake guild_id, Snowflake user_id);
    void OnBanAdd(Snowflake guild_id, Snowflake user_id);

    Gtk::Label *m_no_perms_note = nullptr;

    Gtk::ScrolledWindow m_scroll;
    Gtk::TreeView m_view;

    Snowflake GuildID;

    class ModelColumns : public Gtk::TreeModel::ColumnRecord {
    public:
        ModelColumns();

        Gtk::TreeModelColumn<Glib::ustring> m_col_user;
        Gtk::TreeModelColumn<Glib::ustring> m_col_reason;
        Gtk::TreeModelColumn<Snowflake> m_col_id;
    };

    ModelColumns m_columns;
    Glib::RefPtr<Gtk::ListStore> m_model;

    Gtk::Menu m_menu;
    Gtk::MenuItem m_menu_unban;
    Gtk::MenuItem m_menu_copy_id;
};