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_widget.h
Go to the documentation of this file.
1
6
7#ifndef USERLIST_H
8#define USERLIST_H
9
10#include <QComboBox>
11#include <QDialog>
12#include <QGroupBox>
13#include <QStyledItemDelegate>
14#include <QTextEdit>
15#include <QTreeWidgetItem>
17#include <libcockatrice/protocol/pb/moderator_commands.pb.h>
18
19class QTreeWidget;
20class ServerInfo_User;
21class AbstractClient;
22class TabSupervisor;
23class QLabel;
24class QCheckBox;
25class QSpinBox;
26class QRadioButton;
27class QPlainTextEdit;
28class Response;
29class CommandContainer;
30class UserContextMenu;
31
32class BanDialog : public QDialog
33{
34 Q_OBJECT
35private:
41 QPlainTextEdit *reasonEdit, *visibleReasonEdit;
42private slots:
43 void okClicked();
44 void enableTemporaryEdits(bool enabled);
45
46public:
47 explicit BanDialog(const ServerInfo_User &info, QWidget *parent = nullptr);
48 [[nodiscard]] QString getBanName() const;
49 [[nodiscard]] QString getBanIP() const;
50 [[nodiscard]] QString getBanId() const;
51 [[nodiscard]] int getMinutes() const;
52 [[nodiscard]] QString getReason() const;
53 [[nodiscard]] QString getVisibleReason() const;
54 [[nodiscard]] int getDeleteMessages() const;
55};
56
57class WarningDialog : public QDialog
58{
59 Q_OBJECT
60private:
62 QLineEdit *nameWarning;
63 QComboBox *warningOption;
64 QLineEdit *warnClientID;
65 QCheckBox *deleteMessages;
66private slots:
67 void okClicked();
68
69public:
70 WarningDialog(const QString userName, const QString clientID, QWidget *parent = nullptr);
71 [[nodiscard]] QString getName() const;
72 [[nodiscard]] QString getWarnID() const;
73 [[nodiscard]] QString getReason() const;
74 [[nodiscard]] int getDeleteMessages() const;
75 void addWarningOption(const QString warning);
76};
77
78class AdminNotesDialog : public QDialog
79{
80 Q_OBJECT
81
82private:
83 QString userName;
84 QPlainTextEdit *notes;
85
86public:
87 explicit AdminNotesDialog(const QString &_userName, const QString &_notes, QWidget *_parent = nullptr);
88 [[nodiscard]] QString getName() const
89 {
90 return userName;
91 }
92 [[nodiscard]] QString getNotes() const;
93};
94
95class UserListItemDelegate : public QStyledItemDelegate
96{
97public:
98 explicit UserListItemDelegate(QObject *const parent);
99 bool editorEvent(QEvent *event,
100 QAbstractItemModel *model,
101 const QStyleOptionViewItem &option,
102 const QModelIndex &index) override;
103};
104
105class UserListTWI : public QTreeWidgetItem
106{
107private:
108 ServerInfo_User userInfo;
109
110public:
111 explicit UserListTWI(const ServerInfo_User &_userInfo);
112 const ServerInfo_User &getUserInfo() const
113 {
114 return userInfo;
115 }
116 void setUserInfo(const ServerInfo_User &_userInfo);
117 void setOnline(bool online);
118 bool operator<(const QTreeWidgetItem &other) const override;
119};
120
121class UserListWidget : public QGroupBox
122{
123 Q_OBJECT
124public:
132
133private:
134 QMap<QString, UserListTWI *> users;
138 QTreeWidget *userTree;
142 QString titleStr;
143 void updateCount();
144private slots:
145 void userClicked(QTreeWidgetItem *item, int column);
146signals:
147 void openMessageDialog(const QString &userName, bool focus);
148 void addBuddy(const QString &userName);
149 void removeBuddy(const QString &userName);
150 void addIgnore(const QString &userName);
151 void removeIgnore(const QString &userName);
152
153public:
154 UserListWidget(TabSupervisor *_tabSupervisor,
155 AbstractClient *_client,
156 UserListType _type,
157 QWidget *parent = nullptr);
158 void retranslateUi();
159 void processUserInfo(const ServerInfo_User &user, bool online);
160 bool deleteUser(const QString &userName);
161 void setUserOnline(const QString &userName, bool online);
162 [[nodiscard]] const QMap<QString, UserListTWI *> &getUsers() const
163 {
164 return users;
165 }
166 void showContextMenu(const QPoint &pos, const QModelIndex &index);
167 void sortItems();
168};
169
170#endif
Definition abstract_client.h:51
QString userName
Definition user_list_widget.h:83
AdminNotesDialog(const QString &_userName, const QString &_notes, QWidget *_parent=nullptr)
Definition user_list_widget.cpp:281
QString getName() const
Definition user_list_widget.h:88
QString getNotes() const
Definition user_list_widget.cpp:302
QPlainTextEdit * notes
Definition user_list_widget.h:84
QString getBanName() const
Definition user_list_widget.cpp:250
QRadioButton * temporaryRadio
Definition user_list_widget.h:40
QSpinBox * minutesEdit
Definition user_list_widget.h:39
BanDialog(const ServerInfo_User &info, QWidget *parent=nullptr)
Definition user_list_widget.cpp:27
QCheckBox * idBanCheckBox
Definition user_list_widget.h:37
void enableTemporaryEdits(bool enabled)
Definition user_list_widget.cpp:235
QLineEdit * nameBanEdit
Definition user_list_widget.h:38
QRadioButton * permanentRadio
Definition user_list_widget.h:40
QLineEdit * idBanEdit
Definition user_list_widget.h:38
int getMinutes() const
Definition user_list_widget.cpp:260
QSpinBox * daysEdit
Definition user_list_widget.h:39
QLabel * minutesLabel
Definition user_list_widget.h:36
QCheckBox * deleteMessages
Definition user_list_widget.h:37
QPlainTextEdit * visibleReasonEdit
Definition user_list_widget.h:41
QLineEdit * ipBanEdit
Definition user_list_widget.h:38
QString getVisibleReason() const
Definition user_list_widget.cpp:271
QLabel * hoursLabel
Definition user_list_widget.h:36
QString getBanId() const
Definition user_list_widget.cpp:245
void okClicked()
Definition user_list_widget.cpp:201
QSpinBox * hoursEdit
Definition user_list_widget.h:39
QCheckBox * ipBanCheckBox
Definition user_list_widget.h:37
QPlainTextEdit * reasonEdit
Definition user_list_widget.h:41
QString getBanIP() const
Definition user_list_widget.cpp:255
QString getReason() const
Definition user_list_widget.cpp:266
QLabel * daysLabel
Definition user_list_widget.h:36
int getDeleteMessages() const
Definition user_list_widget.cpp:276
QCheckBox * nameBanCheckBox
Definition user_list_widget.h:37
Definition tab_supervisor.h:83
Definition user_context_menu.h:26
Definition user_list_widget.h:96
bool editorEvent(QEvent *event, QAbstractItemModel *model, const QStyleOptionViewItem &option, const QModelIndex &index) override
Definition user_list_widget.cpp:311
UserListItemDelegate(QObject *const parent)
Definition user_list_widget.cpp:307
bool operator<(const QTreeWidgetItem &other) const override
Definition user_list_widget.cpp:366
void setOnline(bool online)
Definition user_list_widget.cpp:348
ServerInfo_User userInfo
Definition user_list_widget.h:108
void setUserInfo(const ServerInfo_User &_userInfo)
Definition user_list_widget.cpp:335
const ServerInfo_User & getUserInfo() const
Definition user_list_widget.h:112
UserListTWI(const ServerInfo_User &_userInfo)
Definition user_list_widget.cpp:330
const QMap< QString, UserListTWI * > & getUsers() const
Definition user_list_widget.h:162
void userClicked(QTreeWidgetItem *item, int column)
Definition user_list_widget.cpp:515
QTreeWidget * userTree
Definition user_list_widget.h:138
UserListWidget(TabSupervisor *_tabSupervisor, AbstractClient *_client, UserListType _type, QWidget *parent=nullptr)
Definition user_list_widget.cpp:411
TabSupervisor * tabSupervisor
Definition user_list_widget.h:135
UserListType type
Definition user_list_widget.h:137
int onlineCount
Definition user_list_widget.h:141
void openMessageDialog(const QString &userName, bool focus)
void removeBuddy(const QString &userName)
void showContextMenu(const QPoint &pos, const QModelIndex &index)
Definition user_list_widget.cpp:520
void processUserInfo(const ServerInfo_User &user, bool online)
Definition user_list_widget.cpp:460
void setUserOnline(const QString &userName, bool online)
Definition user_list_widget.cpp:493
void removeIgnore(const QString &userName)
QString titleStr
Definition user_list_widget.h:142
UserContextMenu * userContextMenu
Definition user_list_widget.h:140
UserListItemDelegate * itemDelegate
Definition user_list_widget.h:139
void addBuddy(const QString &userName)
void retranslateUi()
Definition user_list_widget.cpp:440
QMap< QString, UserListTWI * > users
Definition user_list_widget.h:134
UserListType
Definition user_list_widget.h:126
@ AllUsersList
Definition user_list_widget.h:127
@ RoomList
Definition user_list_widget.h:128
@ BuddyList
Definition user_list_widget.h:129
@ IgnoreList
Definition user_list_widget.h:130
void addIgnore(const QString &userName)
bool deleteUser(const QString &userName)
Definition user_list_widget.cpp:477
void sortItems()
Definition user_list_widget.cpp:529
AbstractClient * client
Definition user_list_widget.h:136
void updateCount()
Definition user_list_widget.cpp:507
void addWarningOption(const QString warning)
Definition user_list_widget.cpp:196
QLabel * descriptionLabel
Definition user_list_widget.h:61
QString getReason() const
Definition user_list_widget.cpp:186
QLineEdit * nameWarning
Definition user_list_widget.h:62
QLineEdit * warnClientID
Definition user_list_widget.h:64
WarningDialog(const QString userName, const QString clientID, QWidget *parent=nullptr)
Definition user_list_widget.cpp:125
void okClicked()
Definition user_list_widget.cpp:159
QString getWarnID() const
Definition user_list_widget.cpp:181
int getDeleteMessages() const
Definition user_list_widget.cpp:191
QCheckBox * deleteMessages
Definition user_list_widget.h:65
QString getName() const
Definition user_list_widget.cpp:176
QComboBox * warningOption
Definition user_list_widget.h:63