X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fbuffer.cpp;h=023263bbb98ab0f84d3b61fd1d0029c3e20f1a81;hp=cf764c1b574efe373b15a38862376784ae67f82a;hb=8a3c3f283e33a9ae87b4b3bed94e676f12dd5d2e;hpb=130ccf5033c21ca3ad0e0357a82953b5727bd0e9 diff --git a/src/client/buffer.cpp b/src/client/buffer.cpp index cf764c1b..023263bb 100644 --- a/src/client/buffer.cpp +++ b/src/client/buffer.cpp @@ -17,30 +17,30 @@ * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ +#include #include "buffer.h" -#include "util.h" -#include "chatwidget.h" -#include "bufferwidget.h" - -/* -Buffer::Buffer(QString netname, QString bufname) { - Buffer(BufferId(0, netname, bufname)); - -} -*/ +#include "client.h" +#include "ircchannel.h" +#include "nickmodel.h" +#include "util.h" -Buffer::Buffer(BufferId bufid) { - id = bufid; - _networkName = bufid.network(); - _bufferName = bufid.buffer(); - if(_bufferName.isEmpty()) type = ServerBuffer; - else if(isChannelName(_bufferName)) type = ChannelBuffer; - else type = QueryBuffer; +Buffer::Buffer(BufferInfo bufferid, QObject *parent) + : QObject(parent), + _bufferInfo(bufferid), + _active(false), + _ircChannel(0), _nickModel(0) +{ + if(bufferid.buffer().isEmpty()) + _type = StatusType; + else if(isChannelName(bufferid.buffer())) + _type = ChannelType; + else + _type = QueryType; - active = false; + _nickModel = new NickModel(0, this); /* QSettings s; s.beginGroup(QString("GUI/BufferStates/%1/%2").arg(netname).arg(bufname)); @@ -59,79 +59,149 @@ Buffer::~Buffer() { s.endGroup(); */ //delete state; - emit bufferDestroyed(this); } -void Buffer::init() { +Buffer::Type Buffer::bufferType() const { + return _type; +} + +bool Buffer::isActive() const { + // FIXME determine status by checking for a networkInfo objekt + return true; +} + +BufferInfo Buffer::bufferInfo() const { + return _bufferInfo; +} + +void Buffer::updateBufferInfo(BufferInfo bufferid) { + _bufferInfo = bufferid; +} + +uint Buffer::uid() const { + return bufferInfo().uid(); +} +uint Buffer::networkId() const { + return bufferInfo().networkId(); +} +QString Buffer::networkName() const { + return bufferInfo().network(); } -QString Buffer::displayName() { - if(bufferType() == ServerBuffer) - return tr("status"); +QString Buffer::name() const { + if(bufferType() == StatusType) + return tr("Status Buffer"); else - return bufferName(); + return bufferInfo().buffer(); } -void Buffer::setActive(bool a) { - if(a != active) { - active = a; - emit bufferUpdated(this); - } +QList Buffer::contents() const { + return layoutedMsgs; } -void Buffer::appendChatLine(ChatLine *line) { - lines.append(line); - emit chatLineAppended(line); +QVariantMap Buffer::nickList() const { + // FIXME should return a Map or List of IrcUsers in the future + return QVariantMap(); } -void Buffer::prependChatLine(ChatLine *line) { - lines.prepend(line); - emit chatLinePrepended(line); +QString Buffer::topic() const { + // FIXME check if we got a networkInfo() object + return QString(); } -void Buffer::processUserInput(QString msg) { - // TODO User Input processing (plugins) -> well, this goes through MainWin into Core for processing... so... - emit userInput(id, msg); +QString Buffer::ownNick() const { + // FIXME check if we got a networkInfo() object + return QString(); } -void Buffer::setTopic(QString t) { - _topic = t; - emit topicSet(t); - emit bufferUpdated(this); +bool Buffer::isStatusBuffer() const { + return bufferType() == StatusType; } -void Buffer::addNick(QString nick, VarMap props) { - if(nick == ownNick()) setActive(true); - nicks[nick] = props; - emit nickListChanged(nicks); +void Buffer::setActive(bool a) { +// if(a != active) { +// active = a; +// emit bufferUpdated(this); +// } } -void Buffer::updateNick(QString nick, VarMap props) { - nicks[nick] = props; - emit nickListChanged(nicks); +void Buffer::appendMsg(const Message &msg) { + AbstractUiMsg *m = Client::layoutMsg(msg); + layoutedMsgs.append(m); + emit msgAppended(m); } -void Buffer::renameNick(QString oldnick, QString newnick) { - QVariant v = nicks.take(oldnick); - nicks[newnick] = v; - emit nickListChanged(nicks); +void Buffer::prependMsg(const Message &msg) { + layoutQueue.append(msg); } -void Buffer::removeNick(QString nick) { - if(nick == ownNick()) setActive(false); - nicks.remove(nick); - emit nickListChanged(nicks); +bool Buffer::layoutMsg() { + if(layoutQueue.count()) { + AbstractUiMsg *m = Client::layoutMsg(layoutQueue.takeFirst()); + layoutedMsgs.prepend(m); + emit msgPrepended(m); + } + return layoutQueue.count(); } -void Buffer::setOwnNick(QString nick) { - _ownNick = nick; - emit ownNickSet(nick); +void Buffer::processUserInput(QString msg) { + // TODO User Input processing (plugins) -> well, this goes through MainWin into Core for processing... so... + emit userInput(_bufferInfo, msg); } -/****************************************************************************************/ +NickModel *Buffer::nickModel() const { + return _nickModel; +} +IrcChannel *Buffer::ircChannel() const { + return _ircChannel; +} -/****************************************************************************************/ +void Buffer::setIrcChannel(IrcChannel *ircchan) { + if(_ircChannel) { + disconnect(_ircChannel, 0, this, 0); + } + _ircChannel = ircchan; + if(_ircChannel) { + connect(_ircChannel, SIGNAL(destroyed()), this, SLOT(setIrcChannel())); + } + _nickModel->setIrcChannel(ircChannel()); +} +// no longer needed +// back reference: +// void Buffer::setTopic(QString t) { +// _topic = t; +// emit topicSet(t); +// emit bufferUpdated(this); +// } + +// void Buffer::addNick(QString nick, QVariantMap props) { +// if(nick == ownNick()) setActive(true); +// nicks[nick] = props; +// emit nickListChanged(nicks); +// } + +// void Buffer::updateNick(QString nick, QVariantMap props) { +// nicks[nick] = props; +// emit nickListChanged(nicks); +// } + +// void Buffer::renameNick(QString oldnick, QString newnick) { +// QVariant v = nicks.take(oldnick); +// nicks[newnick] = v; +// emit nickListChanged(nicks); +// } + +// void Buffer::removeNick(QString nick) { +// if(nick == ownNick()) setActive(false); +// nicks.remove(nick); +// emit nickListChanged(nicks); +// } + +// void Buffer::setOwnNick(QString nick) { +// _ownNick = nick; +// emit ownNickSet(nick); +// }