Cockatrice 2026-10-19-Development-3.1.2-beta.2
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 <QObject>
14#include <QString>
15#include <qtmetamacros.h>
16// IWYU pragma: keep
17// ServerInfo_User appears by value and inside QList in slot signatures, so the
18// moc-generated code needs the complete type.
19#include <libcockatrice/protocol/pb/serverinfo_user.pb.h>
20
21class AbstractClient;
22class Event_AddToList;
25class Event_UserLeft;
26class Response;
27class ServerInfo_User;
28template <typename T> class QList;
29
30class UserListManager : public QObject, public UserListProxy
31{
32 Q_OBJECT
33
34private:
38
39private slots:
40 void setOwnUserInfo(const ServerInfo_User &userInfo);
42 void processListUsersResponse(const Response &response);
44 void processUserLeftEvent(const Event_UserLeft &event);
45 void buddyListReceived(const QList<ServerInfo_User> &_buddyList);
46 void ignoreListReceived(const QList<ServerInfo_User> &_ignoreList);
47 void processAddToListEvent(const Event_AddToList &event);
49
50public:
51 explicit UserListManager(AbstractClient *_client, QObject *parent = nullptr);
52 ~UserListManager() override;
53
55 {
56 return onlineUsers;
57 }
58
59 [[nodiscard]] const QMap<QString, ServerInfo_User> &getBuddyList() const
60 {
61 return buddyUsers;
62 }
63
64 [[nodiscard]] const QMap<QString, ServerInfo_User> &getIgnoreList() const
65 {
66 return ignoredUsers;
67 }
68
69 [[nodiscard]] bool isOwnUserRegistered() const override;
70 [[nodiscard]] QString getOwnUsername() const override;
71 [[nodiscard]] bool isUserBuddy(const QString &userName) const override;
72 [[nodiscard]] bool isUserIgnored(const QString &userName) const override;
73 [[nodiscard]] const ServerInfo_User *getOnlineUser(const QString &userName) const override;
74
75public slots:
76 void handleConnect();
77 void handleDisconnect();
78
79signals:
85 void listReset();
86
87 // ── Online user presence ──────────────────────────────────────────────────
91 void userLeftOnline(const QString &userName);
92
93 // ── Buddy list mutations (individual, post-login) ─────────────────────────
95 void removedFromBuddyList(const QString &userName);
96
97 // ── Ignore list mutations (individual, post-login) ────────────────────────
99 void removedFromIgnoreList(const QString &userName);
100};
101
102#endif // COCKATRICE_USER_LIST_MANAGER_H
Definition abstract_client.h:73
Definition remote_connection_controller.h:20
Definition game.h:18
bool isUserBuddy(const QString &userName) const override
Definition user_list_manager.cpp:155
void handleDisconnect()
Definition user_list_manager.cpp:40
bool isOwnUserRegistered() const override
Definition user_list_manager.cpp:145
void userJoinedOnline(const ServerInfo_User &user)
void populateInitialOnlineUsers()
Definition user_list_manager.cpp:58
ServerInfo_User * ownUserInfo
Definition user_list_manager.h:36
void processAddToListEvent(const Event_AddToList &event)
Definition user_list_manager.cpp:116
const QMap< QString, ServerInfo_User > & getBuddyList() const
Definition user_list_manager.h:59
QString getOwnUsername() const override
Definition user_list_manager.cpp:150
void processUserJoinedEvent(const Event_UserJoined &event)
Definition user_list_manager.cpp:79
const ServerInfo_User * getOnlineUser(const QString &userName) const override
Definition user_list_manager.cpp:165
AbstractClient * client
Definition user_list_manager.h:35
QMap< QString, ServerInfo_User > ignoredUsers
Definition user_list_manager.h:37
bool isUserIgnored(const QString &userName) const override
Definition user_list_manager.cpp:160
void handleConnect()
Definition user_list_manager.cpp:35
void processListUsersResponse(const Response &response)
Definition user_list_manager.cpp:65
void removedFromIgnoreList(const QString &userName)
const QMap< QString, ServerInfo_User > & getIgnoreList() const
Definition user_list_manager.h:64
void processRemoveFromListEvent(const Event_RemoveFromList &event)
Definition user_list_manager.cpp:131
void addedToBuddyList(const ServerInfo_User &user)
UserListManager(AbstractClient *_client, QObject *parent=nullptr)
Definition user_list_manager.cpp:18
QMap< QString, ServerInfo_User > buddyUsers
Definition user_list_manager.h:37
void processUserLeftEvent(const Event_UserLeft &event)
Definition user_list_manager.cpp:88
void addedToIgnoreList(const ServerInfo_User &user)
void buddyListReceived(const QList< ServerInfo_User > &_buddyList)
Definition user_list_manager.cpp:96
const QMap< QString, ServerInfo_User > & getAllUsersList() const
Definition user_list_manager.h:54
void removedFromBuddyList(const QString &userName)
QMap< QString, ServerInfo_User > onlineUsers
Definition user_list_manager.h:37
void ignoreListReceived(const QList< ServerInfo_User > &_ignoreList)
Definition user_list_manager.cpp:106
void userLeftOnline(const QString &userName)
void setOwnUserInfo(const ServerInfo_User &userInfo)
Definition user_list_manager.cpp:53
Definition user_list_proxy.h:19
Definition event_add_to_list.proto:4
Definition event_remove_from_list.proto:3
Definition event_user_joined.proto:4
Definition event_user_left.proto:3
Definition response.proto:11
Definition serverinfo_user.proto:2