Cockatrice 2026-06-27-Development-3.1.0-beta.3
A virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
user_list_manager.h
Go to the documentation of this file.
1
6
7#ifndef COCKATRICE_USER_LIST_MANAGER_H
8#define COCKATRICE_USER_LIST_MANAGER_H
9
10#include "user_list_proxy.h"
11
12#include <QMap>
13#include <QWidget>
14#include <libcockatrice/protocol/pb/serverinfo_user.pb.h>
15
16class AbstractClient;
17class Event_AddToList;
18class Event_ListRooms;
19class Event_RemoveFromList;
20class Event_UserJoined;
21class Event_UserLeft;
22class Response;
23class ServerInfo_User;
24class TabSupervisor;
25
26class UserListManager : public QObject, public UserListProxy
27{
28 Q_OBJECT
29
30private:
32 ServerInfo_User *ownUserInfo;
33 QMap<QString, ServerInfo_User> onlineUsers, buddyUsers, ignoredUsers;
34
35private slots:
36 void setOwnUserInfo(const ServerInfo_User &userInfo);
38 void processListUsersResponse(const Response &response);
39 void processUserJoinedEvent(const Event_UserJoined &event);
40 void processUserLeftEvent(const Event_UserLeft &event);
41 void buddyListReceived(const QList<ServerInfo_User> &_buddyList);
42 void ignoreListReceived(const QList<ServerInfo_User> &_ignoreList);
43 void processAddToListEvent(const Event_AddToList &event);
44 void processRemoveFromListEvent(const Event_RemoveFromList &event);
45
46public:
47 explicit UserListManager(AbstractClient *_client, QObject *parent = nullptr);
48 ~UserListManager() override;
49
50 [[nodiscard]] const QMap<QString, ServerInfo_User> &getAllUsersList() const
51 {
52 return onlineUsers;
53 }
54
55 [[nodiscard]] const QMap<QString, ServerInfo_User> &getBuddyList() const
56 {
57 return buddyUsers;
58 }
59
60 [[nodiscard]] const QMap<QString, ServerInfo_User> &getIgnoreList() const
61 {
62 return ignoredUsers;
63 }
64
65 [[nodiscard]] bool isOwnUserRegistered() const override;
66 [[nodiscard]] QString getOwnUsername() const override;
67 [[nodiscard]] bool isUserBuddy(const QString &userName) const override;
68 [[nodiscard]] bool isUserIgnored(const QString &userName) const override;
69 [[nodiscard]] const ServerInfo_User *getOnlineUser(const QString &userName) const override;
70
71public slots:
72 void handleConnect();
73 void handleDisconnect();
74
75signals:
81 void listReset();
82
83 // ── Online user presence ──────────────────────────────────────────────────
85 void userJoinedOnline(const ServerInfo_User &user);
87 void userLeftOnline(const QString &userName);
88
89 // ── Buddy list mutations (individual, post-login) ─────────────────────────
90 void addedToBuddyList(const ServerInfo_User &user);
91 void removedFromBuddyList(const QString &userName);
92
93 // ── Ignore list mutations (individual, post-login) ────────────────────────
94 void addedToIgnoreList(const ServerInfo_User &user);
95 void removedFromIgnoreList(const QString &userName);
96};
97
98#endif // COCKATRICE_USER_LIST_MANAGER_H
Definition abstract_client.h:51
Definition tab_supervisor.h:84
bool isUserBuddy(const QString &userName) const override
Definition user_list_manager.cpp:152
void handleDisconnect()
Definition user_list_manager.cpp:37
bool isOwnUserRegistered() const override
Definition user_list_manager.cpp:142
void userJoinedOnline(const ServerInfo_User &user)
void populateInitialOnlineUsers()
Definition user_list_manager.cpp:55
ServerInfo_User * ownUserInfo
Definition user_list_manager.h:32
void processAddToListEvent(const Event_AddToList &event)
Definition user_list_manager.cpp:113
const QMap< QString, ServerInfo_User > & getBuddyList() const
Definition user_list_manager.h:55
QString getOwnUsername() const override
Definition user_list_manager.cpp:147
void processUserJoinedEvent(const Event_UserJoined &event)
Definition user_list_manager.cpp:76
const ServerInfo_User * getOnlineUser(const QString &userName) const override
Definition user_list_manager.cpp:162
AbstractClient * client
Definition user_list_manager.h:31
~UserListManager() override
Definition user_list_manager.cpp:27
QMap< QString, ServerInfo_User > ignoredUsers
Definition user_list_manager.h:33
bool isUserIgnored(const QString &userName) const override
Definition user_list_manager.cpp:157
void handleConnect()
Definition user_list_manager.cpp:32
void processListUsersResponse(const Response &response)
Definition user_list_manager.cpp:62
void removedFromIgnoreList(const QString &userName)
const QMap< QString, ServerInfo_User > & getIgnoreList() const
Definition user_list_manager.h:60
void processRemoveFromListEvent(const Event_RemoveFromList &event)
Definition user_list_manager.cpp:128
void addedToBuddyList(const ServerInfo_User &user)
UserListManager(AbstractClient *_client, QObject *parent=nullptr)
Definition user_list_manager.cpp:15
QMap< QString, ServerInfo_User > buddyUsers
Definition user_list_manager.h:33
void processUserLeftEvent(const Event_UserLeft &event)
Definition user_list_manager.cpp:85
void addedToIgnoreList(const ServerInfo_User &user)
void buddyListReceived(const QList< ServerInfo_User > &_buddyList)
Definition user_list_manager.cpp:93
const QMap< QString, ServerInfo_User > & getAllUsersList() const
Definition user_list_manager.h:50
void removedFromBuddyList(const QString &userName)
QMap< QString, ServerInfo_User > onlineUsers
Definition user_list_manager.h:33
void ignoreListReceived(const QList< ServerInfo_User > &_ignoreList)
Definition user_list_manager.cpp:103
void userLeftOnline(const QString &userName)
void setOwnUserInfo(const ServerInfo_User &userInfo)
Definition user_list_manager.cpp:50
Definition user_list_proxy.h:19