summaryrefslogtreecommitdiff
path: root/windows/guildsettings/invitespane.hpp
blob: b9d1255d6d179280fc742b8f5e5d6649d70f52c6 (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 <gtkmm.h>
#include "../../components/inotifyswitched.hpp"
#include "../../discord/objects.hpp"

class GuildSettingsInvitesPane : public Gtk::ScrolledWindow, public INotifySwitched {
public:
    GuildSettingsInvitesPane(Snowflake id);

private:
    void on_switched_to() override;

    bool m_requested = false;

    void AppendInvite(const InviteData &invite);
    void OnInviteFetch(const std::optional<InviteData> &invite);
    void OnInvitesFetch(const std::vector<InviteData> &invites);
    void OnInviteCreate(const InviteData &invite);
    void OnInviteDelete(const InviteDeleteObject &data);
    void OnMenuDelete();
    bool OnTreeButtonPress(GdkEventButton *event);

    Gtk::TreeView m_view;

    Snowflake GuildID;

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

        Gtk::TreeModelColumn<Glib::ustring> m_col_code;
        Gtk::TreeModelColumn<Glib::ustring> m_col_expires;
        Gtk::TreeModelColumn<Glib::ustring> m_col_inviter;
        Gtk::TreeModelColumn<Glib::ustring> m_col_temporary;
        Gtk::TreeModelColumn<int> m_col_uses;
        Gtk::TreeModelColumn<Glib::ustring> m_col_max_uses;
    };

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

    Gtk::Menu m_menu;
    Gtk::MenuItem m_menu_delete;
};