X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=gui%2Fchannelwidget.cpp;h=f5024b2312e14e2f529183d441f3ec61166f44cc;hp=70066dc87a9bf7590012e0c9d2c785905e0ba287;hb=1c7d9f13b744cd517c0769f453fd8dc3106cd94c;hpb=855fa19ba139d5dbdbf26bb660251ff8fe620e12 diff --git a/gui/channelwidget.cpp b/gui/channelwidget.cpp index 70066dc8..f5024b23 100644 --- a/gui/channelwidget.cpp +++ b/gui/channelwidget.cpp @@ -24,43 +24,111 @@ #include #include -ChannelWidget::ChannelWidget(QWidget *parent) : QWidget(parent) { +ChannelWidget::ChannelWidget(QString netname, QString bufname, QWidget *parent) : QWidget(parent) { ui.setupUi(this); - //ui.inputEdit->grabKeyboard(); - -/* //ui.splitter-> - ui.textBrowser->setHtml("[17:21] --> Dante has joined #quassel (~hurz@p1af2242.dip.t-dialin.net)
" - "[17:21] --> Sput has joined #quassel (~Sput42@vincent.mindpool.net)
" - "[17:23] <Dante> Das sieht ja soweit schonmal Klasse aus!
" - "[17:23] <Sput> Find ich auch... schade dass es noch nix tut :p
" - "[17:24] <Dante> Das wird sich ja gottseidank bald ändern.
" - "[17:24] <Sput> Wollen wir's hoffen :D" - ); - ui.listWidget->addItem("@Dante"); - ui.listWidget->addItem("@Sput"); - */ - //connect(&core, SIGNAL(outputLine( const QString& )), ui.textBrowser, SLOT(insertPlainText(const QString &))); - //connect(ui.lineEdit, SIGNAL( - //connect(&core, SIGNAL(outputLine( const QString& )), this, SLOT(lineReceived(const QString &))); + _networkName = netname; + _bufferName = bufname; connect(ui.inputEdit, SIGNAL(returnPressed()), this, SLOT(enterPressed())); - //connect(this, SIGNAL(inputLine( const QString& )), &core, SLOT(inputLine( const QString& ))); + //ui.inputEdit->setFocus(); - connect(this, SIGNAL(inputLine(QString)), guiProxy, SLOT(gsUserInput(QString))); - connect(guiProxy, SIGNAL(csSendMessage(QString, QString, QString)), this, SLOT(msgReceived(QString, QString, QString))); - connect(guiProxy, SIGNAL(csSendStatusMsg(QString, QString)), this, SLOT(statusMsgReceived(QString, QString))); - ui.inputEdit->setFocus(); + // Define standard colors + stdCol = QColor("black"); + noticeCol = QColor("darkblue"); + serverCol = QColor("darkblue"); + errorCol = QColor("red"); + joinCol = QColor("green"); + quitCol = QColor("firebrick"); + partCol = QColor("firebrick"); + } void ChannelWidget::enterPressed() { - emit inputLine(ui.inputEdit->text()); + emit sendMessage(networkName(), bufferName(), ui.inputEdit->text()); ui.inputEdit->clear(); } -void ChannelWidget::msgReceived(QString net, QString chan, QString msg) { - ui.chatWidget->insertPlainText(QString("[%1:%2] %3\n").arg(net).arg(chan).arg(msg)); +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::statusMsgReceived(QString net, QString msg) { - msgReceived(net, "STATUS", msg); +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); +} +