X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fclient.cpp;h=d8dbcbf51ed94e9f56078b3be9255cf46e9eb464;hp=fe49f774049e4fd11df6cac1d6458039415ad237;hb=7cd3ad607186b3a14989075968daa4f1e2ea265b;hpb=4a5065255e652dd0c301bac0db41b7afb777ef49 diff --git a/src/client/client.cpp b/src/client/client.cpp index fe49f774..d8dbcbf5 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2013 by the Quassel Project * + * Copyright (C) 2005-2015 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -34,6 +34,7 @@ #include "clientirclisthelper.h" #include "clientidentity.h" #include "clientignorelistmanager.h" +#include "clienttransfermanager.h" #include "clientuserinputhandler.h" #include "coreaccountmodel.h" #include "coreconnection.h" @@ -47,6 +48,7 @@ #include "quassel.h" #include "signalproxy.h" #include "util.h" +#include "clientauthhandler.h" #include #include @@ -102,10 +104,11 @@ Client::Client(QObject *parent) _inputHandler(0), _networkConfig(0), _ignoreListManager(0), + _transferManager(0), _messageModel(0), _messageProcessor(0), _coreAccountModel(new CoreAccountModel(this)), - _coreConnection(new CoreConnection(_coreAccountModel, this)), + _coreConnection(new CoreConnection(this)), _connected(false), _debugLog(&_debugLogBuffer) { @@ -381,28 +384,39 @@ void Client::setSyncedToCore() connect(bufferSyncer(), SIGNAL(buffersPermanentlyMerged(BufferId, BufferId)), _messageModel, SLOT(buffersPermanentlyMerged(BufferId, BufferId))); connect(bufferSyncer(), SIGNAL(bufferMarkedAsRead(BufferId)), SIGNAL(bufferMarkedAsRead(BufferId))); connect(networkModel(), SIGNAL(requestSetLastSeenMsg(BufferId, MsgId)), bufferSyncer(), SLOT(requestSetLastSeenMsg(BufferId, const MsgId &))); - signalProxy()->synchronize(bufferSyncer()); + + SignalProxy *p = signalProxy(); + + if ((Client::coreFeatures() & Quassel::PasswordChange)) { + p->attachSignal(this, SIGNAL(clientChangePassword(QString))); + } + + p->synchronize(bufferSyncer()); // create a new BufferViewManager Q_ASSERT(!_bufferViewManager); - _bufferViewManager = new ClientBufferViewManager(signalProxy(), this); + _bufferViewManager = new ClientBufferViewManager(p, this); connect(_bufferViewManager, SIGNAL(initDone()), _bufferViewOverlay, SLOT(restore())); // create AliasManager Q_ASSERT(!_aliasManager); _aliasManager = new ClientAliasManager(this); connect(aliasManager(), SIGNAL(initDone()), SLOT(sendBufferedUserInput())); - signalProxy()->synchronize(aliasManager()); + p->synchronize(aliasManager()); // create NetworkConfig Q_ASSERT(!_networkConfig); _networkConfig = new NetworkConfig("GlobalNetworkConfig", this); - signalProxy()->synchronize(networkConfig()); + p->synchronize(networkConfig()); // create IgnoreListManager Q_ASSERT(!_ignoreListManager); _ignoreListManager = new ClientIgnoreListManager(this); - signalProxy()->synchronize(ignoreListManager()); + p->synchronize(ignoreListManager()); + + Q_ASSERT(!_transferManager); + _transferManager = new ClientTransferManager(this); + p->synchronize(transferManager()); // trigger backlog request once all active bufferviews are initialized connect(bufferViewOverlay(), SIGNAL(initDone()), this, SLOT(requestInitialBacklog())); @@ -473,6 +487,12 @@ void Client::setDisconnectedFromCore() _ignoreListManager->deleteLater(); _ignoreListManager = 0; } + + if (_transferManager) { + _transferManager->deleteLater(); + _transferManager = 0; + } + // we probably don't want to save pending input for reconnect _userInputBuffer.clear(); @@ -633,7 +653,16 @@ void Client::markBufferAsRead(BufferId id) bufferSyncer()->requestMarkBufferAsRead(id); } +void Client::changePassword(QString newPassword) { + CoreAccount account = currentCoreAccount(); + account.setPassword(newPassword); + coreAccountModel()->createOrUpdateAccount(account); + coreAccountModel()->save(); + emit clientChangePassword(newPassword); +} + +#if QT_VERSION < 0x050000 void Client::logMessage(QtMsgType type, const char *msg) { fprintf(stderr, "%s\n", msg); @@ -653,3 +682,26 @@ void Client::logMessage(QtMsgType type, const char *msg) emit instance()->logUpdated(msgString); } } +#else +void Client::logMessage(QtMsgType type, const QMessageLogContext &context, const QString &msg) +{ + Q_UNUSED(context); + + fprintf(stderr, "%s\n", msg.toLocal8Bit().constData()); + fflush(stderr); + if (type == QtFatalMsg) { + Quassel::logFatalMessage(msg.toLocal8Bit().constData()); + } + else { + QString msgString = QString("%1\n").arg(msg); + + //Check to see if there is an instance around, else we risk recursions + //when calling instance() and creating new ones. + if (!instanceExists()) + return; + + instance()->_debugLog << msgString; + emit instance()->logUpdated(msgString); + } +} +#endif