Cockatrice 2025-11-30-Development-2.11.0-beta.38
A cross-platform 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]] QMap<QString, ServerInfo_User> getAllUsersList() const
51 {
52 return onlineUsers;
53 }
54 [[nodiscard]] QMap<QString, ServerInfo_User> getBuddyList() const
55 {
56 return buddyUsers;
57 }
58 [[nodiscard]] QMap<QString, ServerInfo_User> getIgnoreList() const
59 {
60 return ignoredUsers;
61 }
62
63 [[nodiscard]] bool isOwnUserRegistered() const override;
64 [[nodiscard]] QString getOwnUsername() const override;
65 [[nodiscard]] bool isUserBuddy(const QString &userName) const override;
66 [[nodiscard]] bool isUserIgnored(const QString &userName) const override;
67 [[nodiscard]] const ServerInfo_User *getOnlineUser(const QString &userName) const override;
68
69public slots:
70 void handleConnect();
71 void handleDisconnect();
72
73signals:
74 void userLeft(const QString &userName);
75 void userJoined(const ServerInfo_User &userInfo);
76};
77
78#endif // COCKATRICE_USER_LIST_MANAGER_H
Definition abstract_client.h:51
Definition tab_supervisor.h:83
bool isUserBuddy(const QString &userName) const override
Definition user_list_manager.cpp:146
void handleDisconnect()
Definition user_list_manager.cpp:37
void userJoined(const ServerInfo_User &userInfo)
bool isOwnUserRegistered() const override
Definition user_list_manager.cpp:136
void populateInitialOnlineUsers()
Definition user_list_manager.cpp:52
ServerInfo_User * ownUserInfo
Definition user_list_manager.h:32
void processAddToListEvent(const Event_AddToList &event)
Definition user_list_manager.cpp:100
QString getOwnUsername() const override
Definition user_list_manager.cpp:141
void processUserJoinedEvent(const Event_UserJoined &event)
Definition user_list_manager.cpp:71
const ServerInfo_User * getOnlineUser(const QString &userName) const override
Definition user_list_manager.cpp:156
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:151
void handleConnect()
Definition user_list_manager.cpp:32
QMap< QString, ServerInfo_User > getAllUsersList() const
Definition user_list_manager.h:50
QMap< QString, ServerInfo_User > getIgnoreList() const
Definition user_list_manager.h:58
void processListUsersResponse(const Response &response)
Definition user_list_manager.cpp:59
QMap< QString, ServerInfo_User > getBuddyList() const
Definition user_list_manager.h:54
void processRemoveFromListEvent(const Event_RemoveFromList &event)
Definition user_list_manager.cpp:119
void userLeft(const QString &userName)
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:78
void buddyListReceived(const QList< ServerInfo_User > &_buddyList)
Definition user_list_manager.cpp:84
QMap< QString, ServerInfo_User > onlineUsers
Definition user_list_manager.h:33
void ignoreListReceived(const QList< ServerInfo_User > &_ignoreList)
Definition user_list_manager.cpp:92
void setOwnUserInfo(const ServerInfo_User &userInfo)
Definition user_list_manager.cpp:47
Definition user_list_proxy.h:19
TODO: Document this.