From 86ab14e5ec5c6acfcee1d6177c77f5ac9c9dbe31 Mon Sep 17 00:00:00 2001 From: ouwou <26526779+ouwou@users.noreply.github.com> Date: Fri, 7 May 2021 01:57:08 -0400 Subject: start friends list --- components/friendslist.hpp | 66 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 components/friendslist.hpp (limited to 'components/friendslist.hpp') diff --git a/components/friendslist.hpp b/components/friendslist.hpp new file mode 100644 index 0000000..8d05c1e --- /dev/null +++ b/components/friendslist.hpp @@ -0,0 +1,66 @@ +#pragma once +#include +#include "../discord/relationship.hpp" + +class FriendsListAddComponent : public Gtk::Box { +public: + FriendsListAddComponent(); + +private: + Gtk::Label m_label; + Gtk::Label m_status; + Gtk::Entry m_entry; + Gtk::Button m_add; + Gtk::Box m_box; +}; + +class FriendsList : public Gtk::Box { +public: + FriendsList(); + +private: + enum FilterMode { + FILTER_FRIENDS, + FILTER_ONLINE, + FILTER_PENDING, + FILTER_BLOCKED, + }; + + FilterMode m_filter_mode; + + int ListSortFunc(Gtk::ListBoxRow *a, Gtk::ListBoxRow *b); + bool ListFilterFunc(Gtk::ListBoxRow *row); + + FriendsListAddComponent m_add; + Gtk::RadioButtonGroup m_group; + Gtk::ButtonBox m_buttons; + Gtk::ScrolledWindow m_scroll; + Gtk::ListBox m_list; +}; + +class FriendsListFriendRow : public Gtk::ListBoxRow { +public: + FriendsListFriendRow(RelationshipType type, const UserData &str); + + Snowflake ID; + RelationshipType Type; + Glib::ustring Name; + +private: + Gtk::Menu m_menu; + Gtk::MenuItem m_remove; // or cancel or ignore + + using type_signal_remove = sigc::signal; + type_signal_remove m_signal_remove; + +public: + type_signal_remove signal_action_remove(); +}; + +class FriendsListWindow : public Gtk::Window { +public: + FriendsListWindow(); + +private: + FriendsList m_friends; +}; -- cgit v1.2.3