File indexing completed on 2024-05-12 04:04:14
0001 /* 0002 This file is part of Knights, a chess board for KDE SC 4. 0003 SPDX-FileCopyrightText: 2009, 2010, 2011 Miha Čančula <miha@noughmad.eu> 0004 0005 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0006 */ 0007 0008 #ifndef KNIGHTS_CHATWIDGET_H 0009 #define KNIGHTS_CHATWIDGET_H 0010 0011 #include <QWidget> 0012 #include <QMap> 0013 #include <QTextBrowser> 0014 0015 namespace Ui { 0016 class ChatWidget; 0017 } 0018 0019 namespace Knights { 0020 0021 class Terminal: public QTextBrowser { 0022 protected: 0023 void resizeEvent ( QResizeEvent * event ) override; 0024 }; 0025 0026 class ChatWidget : public QWidget { 0027 Q_OBJECT 0028 Q_ENUMS(MessageType) 0029 0030 public: 0031 enum MessageType { 0032 AccountMessage, 0033 SeekMessage, 0034 ChallengeMessage, 0035 ChatMessage, 0036 GreetMessage, 0037 StatusMessage, 0038 GeneralMessage, 0039 ErrorMessage, 0040 MoveMessage 0041 }; 0042 0043 typedef QPair<QString,MessageType> Message; 0044 0045 explicit ChatWidget ( QWidget* parent = nullptr, Qt::WindowFlags f = {} ); 0046 ~ChatWidget() override; 0047 0048 void addExtraButton ( const QString& text, const QString& title = QString(), const QString& icon = QString() ); 0049 0050 QColor messageColor ( MessageType type ) const; 0051 void setMessageColor ( MessageType type, const QColor& color ); 0052 0053 void setConsoleMode ( bool console ); 0054 bool consoleMode() const; 0055 0056 public Q_SLOTS: 0057 void addText ( const QString& text, MessageType type ); 0058 void addText ( const QByteArray& text, MessageType type ); 0059 void addText ( const Message& message ); 0060 void setPasswordMode ( bool pwMode ); 0061 0062 private Q_SLOTS: 0063 void sendButtonClicked ( ); 0064 void buttonClicked ( ); 0065 Q_SIGNALS: 0066 void sendText ( const QString& text ); 0067 0068 private: 0069 Ui::ChatWidget* ui; 0070 Terminal * m_terminal; 0071 QMap<QObject*, QString> m_extraButtons; 0072 QMap<MessageType, QColor> m_colors; 0073 bool m_consoleMode; 0074 }; 0075 0076 } 0077 0078 #endif // KNIGHTS_CHATWIDGET_H