+ emit sendMessage(networkName(), bufferName(), ui.inputEdit->text());
+ ui.inputEdit->clear();
+}
+
+void ChannelWidget::recvMessage(Message msg) {
+ QString s;
+ QColor c = stdCol;
+ switch(msg.type) {
+ case Message::Server:
+ c = serverCol; s = msg.msg;
+ break;
+ case Message::Error:
+ c = errorCol; s = msg.msg;
+ break;
+ default:
+ c = stdCol; s = QString("[%1] %2").arg(msg.sender).arg(msg.msg);
+ break;
+ }
+ ui.chatWidget->setTextColor(c);
+ ui.chatWidget->insertPlainText(QString("%1\n").arg(s));
+ ui.chatWidget->ensureCursorVisible();
+}
+
+void ChannelWidget::recvStatusMsg(QString msg) {
+ ui.chatWidget->insertPlainText(QString("[STATUS] %1").arg(msg));
+ ui.chatWidget->ensureCursorVisible();
+}
+
+void ChannelWidget::setTopic(QString topic) {
+ ui.topicEdit->setText(topic);
+}
+
+void ChannelWidget::setNicks(QStringList nicks) {
+
+
+}
+
+/**********************************************************************************************/
+
+
+IrcWidget::IrcWidget(QWidget *parent) : QWidget(parent) {
+ ui.setupUi(this);
+ ui.tabWidget->removeTab(0);
+
+ connect(guiProxy, SIGNAL(csSendMessage(QString, QString, Message)), this, SLOT(recvMessage(QString, QString, Message)));
+ connect(guiProxy, SIGNAL(csSendStatusMsg(QString, QString)), this, SLOT(recvStatusMsg(QString, QString)));
+ connect(guiProxy, SIGNAL(csSetTopic(QString, QString, QString)), this, SLOT(setTopic(QString, QString, QString)));
+ connect(guiProxy, SIGNAL(csSetNicks(QString, QString, QStringList)), this, SLOT(setNicks(QString, QString, QStringList)));
+ connect(this, SIGNAL(sendMessage( QString, QString, QString )), guiProxy, SLOT(gsUserInput(QString, QString, QString)));
+}
+
+ChannelWidget * IrcWidget::getBuffer(QString net, QString buf) {
+ QString key = net + buf;
+ if(!buffers.contains(key)) {
+ ChannelWidget *cw = new ChannelWidget(net, buf);
+ connect(cw, SIGNAL(sendMessage(QString, QString, QString)), this, SLOT(userInput(QString, QString, QString)));
+ ui.tabWidget->addTab(cw, net+buf);
+ ui.tabWidget->setCurrentWidget(cw);
+ //cw->setFocus();
+ buffers[key] = cw;
+ }
+ return buffers[key];
+}
+
+
+void IrcWidget::recvMessage(QString net, QString buf, Message msg) {
+ ChannelWidget *cw = getBuffer(net, buf);
+ cw->recvMessage(msg);
+}
+
+void IrcWidget::recvStatusMsg(QString net, QString msg) {
+ recvMessage(net, "", QString("[STATUS] %1").arg(msg));
+
+}
+
+void IrcWidget::userInput(QString net, QString buf, QString msg) {
+ emit sendMessage(net, buf, msg);
+}
+
+void IrcWidget::setTopic(QString net, QString buf, QString topic) {
+ ChannelWidget *cw = getBuffer(net, buf);
+ cw->setTopic(topic);
+}
+
+void IrcWidget::setNicks(QString net, QString buf, QStringList nicks) {
+ ChannelWidget *cw = getBuffer(net, buf);
+ cw->setNicks(nicks);