summaryrefslogtreecommitdiff
path: root/src/components/channellist/classic/guildlistfolderitem.hpp
blob: 06d05f16361a65306302e0bb46de08dcb8d7c9a6 (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/box.h>
#include <gtkmm/eventbox.h>
#include <gtkmm/grid.h>
#include <gtkmm/image.h>
#include <gtkmm/revealer.h>
#include <gtkmm/stack.h>

#include "guildlistguilditem.hpp"
#include "discord/usersettings.hpp"

class GuildListGuildItem;

class GuildListFolderButton : public Gtk::Grid {
public:
    GuildListFolderButton();
    void SetGuilds(const std::vector<Snowflake> &guild_ids);

private:
    Gtk::Image m_images[2][2];
};

class GuildListFolderItem : public Gtk::VBox {
public:
    GuildListFolderItem(const UserSettingsGuildFoldersEntry &folder);

    void AddGuildWidget(Gtk::Widget *widget);

private:
    void OnMessageCreate(const Message &msg);
    void OnMessageAck(const MessageAckData &data);
    void CheckUnreadStatus();

    std::vector<Snowflake> m_guild_ids;

    Gtk::Stack m_stack;
    GuildListFolderButton m_grid;
    Gtk::Image m_icon;

    Gtk::EventBox m_ev;
    Gtk::Image m_image;
    Gtk::Revealer m_revealer;
    Gtk::VBox m_box;
};