Cockatrice/cockatrice/src/interface/widgets/tabs/tab_message.h
2026-05-21 22:58:07 +02:00

70 lines
1.6 KiB
C++

/**
* @file tab_message.h
* @ingroup MessagingTabs
*/
//! \todo Document this file.
#ifndef TAB_MESSAGE_H
#define TAB_MESSAGE_H
#include "tab.h"
#include <QLoggingCategory>
inline Q_LOGGING_CATEGORY(TabMessageLog, "tab_message");
class AbstractClient;
class ChatView;
class LineEditUnfocusable;
class Event_UserMessage;
class Response;
class ServerInfo_User;
class TabMessage : public Tab
{
Q_OBJECT
private:
AbstractClient *client;
QMenu *messageMenu;
ServerInfo_User *ownUserInfo;
ServerInfo_User *otherUserInfo;
bool userOnline;
ChatView *chatView;
LineEditUnfocusable *sayEdit;
QAction *aLeave;
signals:
void talkClosing(TabMessage *tab);
void maximizeClient();
private slots:
void sendMessage();
void messageSent(const Response &response);
void addMentionTag(QString mentionTag);
void messageClicked();
protected slots:
void closeEvent(QCloseEvent *event) override;
public:
TabMessage(TabSupervisor *_tabSupervisor,
AbstractClient *_client,
const ServerInfo_User &_ownUserInfo,
const ServerInfo_User &_otherUserInfo);
~TabMessage() override;
void retranslateUi() override;
void tabActivated() override;
[[nodiscard]] QString getUserName() const;
[[nodiscard]] QString getTabText() const override;
void processUserMessageEvent(const Event_UserMessage &event);
void processUserLeft();
void processUserJoined(const ServerInfo_User &_userInfo);
private:
bool shouldShowSystemPopup(const Event_UserMessage &event);
void showSystemPopup(const Event_UserMessage &event);
};
#endif