#include "buffersettings.h"
#include "buffersyncer.h"
#include "bufferviewconfig.h"
+#include "clientaliasmanager.h"
#include "clientbacklogmanager.h"
#include "clientbufferviewmanager.h"
#include "clientirclisthelper.h"
_networkModel(0),
_bufferModel(0),
_bufferSyncer(0),
+ _aliasManager(0),
_backlogManager(new ClientBacklogManager(this)),
_bufferViewManager(0),
_ircListHelper(new ClientIrcListHelper(this)),
}
}
-/*** ***/
+/*** User input handling ***/
+
void Client::userInput(const BufferInfo &bufferInfo, const QString &message) {
- inputHandler()->handleUserInput(bufferInfo, message);
+ // we need to make sure that AliasManager is ready before processing input
+ if(aliasManager() && aliasManager()->isInitialized())
+ inputHandler()->handleUserInput(bufferInfo, message);
+ else
+ instance()-> _userInputBuffer.append(qMakePair(bufferInfo, message));
+}
+
+void Client::sendBufferedUserInput() {
+ for(int i = 0; i < _userInputBuffer.count(); i++)
+ userInput(_userInputBuffer.at(i).first, _userInputBuffer.at(i).second);
+
+ _userInputBuffer.clear();
}
/*** core connection stuff ***/
connect(bufferViewManager(), SIGNAL(initDone()), this, SLOT(requestInitialBacklog()));
connect(bufferViewManager(), SIGNAL(initDone()), this, SLOT(createDefaultBufferView()));
+ // create AliasManager
+ Q_ASSERT(!_aliasManager);
+ _aliasManager = new ClientAliasManager(this);
+ connect(aliasManager(), SIGNAL(initDone()), SLOT(sendBufferedUserInput()));
+ signalProxy()->synchronize(aliasManager());
+
_syncedToCore = true;
emit connected();
emit coreConnectionStateChanged(true);
_bufferViewManager = 0;
}
+ if(_aliasManager) {
+ _aliasManager->deleteLater();
+ _aliasManager = 0;
+ }
+
+ // we probably don't want to save pending input for reconnect
+ _userInputBuffer.clear();
+
_messageModel->clear();
_networkModel->clear();