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