From 6642b332f0e12a4e20578ea17b5d421c7c917239 Mon Sep 17 00:00:00 2001 From: Max-Wilhelm Bruker Date: Sat, 18 Sep 2010 23:50:07 +0200 Subject: [PATCH] extra files --- cockatrice/src/tab_message.cpp | 78 ++++++++++++++++++++++++++++++++++ cockatrice/src/tab_message.h | 38 +++++++++++++++++ 2 files changed, 116 insertions(+) create mode 100644 cockatrice/src/tab_message.cpp create mode 100644 cockatrice/src/tab_message.h diff --git a/cockatrice/src/tab_message.cpp b/cockatrice/src/tab_message.cpp new file mode 100644 index 00000000..6310aef7 --- /dev/null +++ b/cockatrice/src/tab_message.cpp @@ -0,0 +1,78 @@ +#include +#include +#include +#include +#include +#include +#include "tab_message.h" +#include "abstractclient.h" +#include "protocol_items.h" + +TabMessage::TabMessage(AbstractClient *_client, const QString &_userName) + : Tab(), client(_client), userName(_userName) +{ + textEdit = new QTextEdit; + textEdit->setReadOnly(true); + sayEdit = new QLineEdit; + connect(sayEdit, SIGNAL(returnPressed()), this, SLOT(sendMessage())); + + QVBoxLayout *vbox = new QVBoxLayout; + vbox->addWidget(textEdit); + vbox->addWidget(sayEdit); + + aLeave = new QAction(this); + connect(aLeave, SIGNAL(triggered()), this, SLOT(actLeave())); + + tabMenu = new QMenu(this); + tabMenu->addAction(aLeave); + + retranslateUi(); + setLayout(vbox); +} + +TabMessage::~TabMessage() +{ + emit talkClosing(this); +} + +void TabMessage::retranslateUi() +{ + tabMenu->setTitle(tr("Personal &talk")); + aLeave->setText(tr("&Leave")); +} + +QString TabMessage::sanitizeHtml(QString dirty) const +{ + return dirty + .replace("&", "&") + .replace("<", "<") + .replace(">", ">"); +} + +void TabMessage::sendMessage() +{ + if (sayEdit->text().isEmpty()) + return; + + client->sendCommand(new Command_Message(userName, sayEdit->text())); + sayEdit->clear(); +} + +void TabMessage::actLeave() +{ + deleteLater(); +} + +void TabMessage::processMessageEvent(Event_Message *event) +{ + textEdit->append(QString("%1: %2").arg(sanitizeHtml(event->getSenderName())).arg(sanitizeHtml(event->getText()))); + emit userEvent(); +} + +void TabMessage::processUserLeft(const QString &name) +{ + if (userName == name) { + textEdit->append("" + tr("%1 has left the server.").arg(sanitizeHtml(name)) + ""); + sayEdit->setEnabled(false); + } +} diff --git a/cockatrice/src/tab_message.h b/cockatrice/src/tab_message.h new file mode 100644 index 00000000..0bb240f3 --- /dev/null +++ b/cockatrice/src/tab_message.h @@ -0,0 +1,38 @@ +#ifndef TAB_MESSAGE_H +#define TAB_MESSAGE_H + +#include "tab.h" + +class AbstractClient; +class QTextEdit; +class QLineEdit; +class Event_Message; + +class TabMessage : public Tab { + Q_OBJECT +private: + AbstractClient *client; + QString userName; + + QTextEdit *textEdit; + QLineEdit *sayEdit; + + QAction *aLeave; + QString sanitizeHtml(QString dirty) const; +signals: + void talkClosing(TabMessage *tab); +private slots: + void sendMessage(); + void actLeave(); +public slots: + void processMessageEvent(Event_Message *event); + void processUserLeft(const QString &userName); +public: + TabMessage(AbstractClient *_client, const QString &_userName); + ~TabMessage(); + void retranslateUi(); + QString getUserName() const { return userName; } + QString getTabText() const { return tr("Talking to %1").arg(userName); } +}; + +#endif