X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fclient.cpp;h=b89b83b1a80bc0622cd40642ba8fe81452535e78;hp=295e062e596ea460a5ee9081d389dd96fc80bcc9;hb=75d7f7d582826603236394a37f43feb4cd725bb0;hpb=1adc00219ba072da57994764d086beed8ffb7bb4 diff --git a/src/client/client.cpp b/src/client/client.cpp index 295e062e..b89b83b1 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -25,6 +25,7 @@ #include "buffermodel.h" #include "buffersettings.h" #include "buffersyncer.h" +#include "bufferviewconfig.h" #include "bufferviewmanager.h" #include "clientbacklogmanager.h" #include "clientirclisthelper.h" @@ -81,6 +82,7 @@ Client::Client(QObject *parent) _messageProcessor(0), _connectedToCore(false), _syncedToCore(false), + _internalCore(false), _debugLog(&_debugLogBuffer) { _signalProxy->synchronize(_ircListHelper); @@ -275,6 +277,7 @@ void Client::setConnectedToCore(AccountId id, QIODevice *socket) { socket->setParent(0); signalProxy()->addPeer(socket); } + _internalCore = !socket; _connectedToCore = true; setCurrentCoreAccount(id); } @@ -286,6 +289,8 @@ void Client::setSyncedToCore() { connect(bufferSyncer(), SIGNAL(lastSeenMsgSet(BufferId, MsgId)), _networkModel, SLOT(setLastSeenMsgId(BufferId, MsgId))); connect(bufferSyncer(), SIGNAL(bufferRemoved(BufferId)), this, SLOT(bufferRemoved(BufferId))); connect(bufferSyncer(), SIGNAL(bufferRenamed(BufferId, QString)), this, SLOT(bufferRenamed(BufferId, QString))); + connect(bufferSyncer(), SIGNAL(buffersPermanentlyMerged(BufferId, BufferId)), this, SLOT(buffersPermanentlyMerged(BufferId, BufferId))); + connect(bufferSyncer(), SIGNAL(buffersPermanentlyMerged(BufferId, BufferId)), _messageModel, SLOT(buffersPermanentlyMerged(BufferId, BufferId))); connect(bufferSyncer(), SIGNAL(initDone()), this, SLOT(requestInitialBacklog())); connect(networkModel(), SIGNAL(setLastSeenMsg(BufferId, MsgId)), bufferSyncer(), SLOT(requestSetLastSeenMsg(BufferId, const MsgId &))); signalProxy()->synchronize(bufferSyncer()); @@ -294,7 +299,7 @@ void Client::setSyncedToCore() { Q_ASSERT(!_bufferViewManager); _bufferViewManager = new BufferViewManager(signalProxy(), this); connect(bufferViewManager(), SIGNAL(initDone()), this, SLOT(requestInitialBacklog())); - + connect(bufferViewManager(), SIGNAL(initDone()), this, SLOT(createDefautBufferView())); _syncedToCore = true; emit connected(); emit coreConnectionStateChanged(true); @@ -305,6 +310,14 @@ void Client::requestInitialBacklog() { Client::backlogManager()->requestInitialBacklog(); } +void Client::createDefautBufferView() { + if(bufferViewManager()->bufferViewConfigs().isEmpty()) { + BufferViewConfig config(-1); + config.setBufferViewName(tr("All Buffers")); + bufferViewManager()->requestCreateBufferView(config.toVariantMap()); + } +} + void Client::setSecuredConnection() { emit securedConnection(); } @@ -398,6 +411,18 @@ void Client::removeBuffer(BufferId id) { bufferSyncer()->requestRemoveBuffer(id); } +void Client::renameBuffer(BufferId bufferId, const QString &newName) { + if(!bufferSyncer()) + return; + bufferSyncer()->requestRenameBuffer(bufferId, newName); +} + +void Client::mergeBuffersPermanently(BufferId bufferId1, BufferId bufferId2) { + if(!bufferSyncer()) + return; + bufferSyncer()->requestMergeBuffersPermanently(bufferId1, bufferId2); +} + void Client::bufferRemoved(BufferId bufferId) { // select a sane buffer (status buffer) /* we have to manually select a buffer because otherwise inconsitent changes @@ -423,6 +448,12 @@ void Client::bufferRenamed(BufferId bufferId, const QString &newName) { } } +void Client::buffersPermanentlyMerged(BufferId bufferId1, BufferId bufferId2) { + QModelIndex idx = networkModel()->bufferIndex(bufferId1); + bufferModel()->setCurrentIndex(bufferModel()->mapFromSource(idx)); + networkModel()->removeBuffer(bufferId2); +} + void Client::logMessage(QtMsgType type, const char *msg) { fprintf(stderr, "%s\n", msg); fflush(stderr);