X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fclient%2Fclient.cpp;h=91165418b08a80658430b2baf8a4cb712df178b4;hb=123fc368f8705fa7799c04ee84af85999a7ebde3;hp=d8dbcbf51ed94e9f56078b3be9255cf46e9eb464;hpb=7cd3ad607186b3a14989075968daa4f1e2ea265b;p=quassel.git diff --git a/src/client/client.cpp b/src/client/client.cpp index d8dbcbf5..91165418 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2015 by the Quassel Project * + * Copyright (C) 2005-2016 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -47,6 +47,7 @@ #include "networkmodel.h" #include "quassel.h" #include "signalproxy.h" +#include "transfermodel.h" #include "util.h" #include "clientauthhandler.h" @@ -105,6 +106,7 @@ Client::Client(QObject *parent) _networkConfig(0), _ignoreListManager(0), _transferManager(0), + _transferModel(new TransferModel(this)), _messageModel(0), _messageProcessor(0), _coreAccountModel(new CoreAccountModel(this)), @@ -153,6 +155,9 @@ void Client::init() p->attachSlot(SIGNAL(networkCreated(NetworkId)), this, SLOT(coreNetworkCreated(NetworkId))); p->attachSlot(SIGNAL(networkRemoved(NetworkId)), this, SLOT(coreNetworkRemoved(NetworkId))); + p->attachSignal(this, SIGNAL(requestPasswordChange(PeerPtr,QString,QString,QString)), SIGNAL(changePassword(PeerPtr,QString,QString,QString))); + p->attachSlot(SIGNAL(passwordChanged(PeerPtr,bool)), this, SLOT(corePasswordChanged(PeerPtr,bool))); + //connect(mainUi(), SIGNAL(connectToCore(const QVariantMap &)), this, SLOT(connectToCore(const QVariantMap &))); connect(mainUi(), SIGNAL(disconnectFromCore()), this, SLOT(disconnectFromCore())); connect(this, SIGNAL(connected()), mainUi(), SLOT(connectedToCore())); @@ -386,11 +391,6 @@ void Client::setSyncedToCore() connect(networkModel(), SIGNAL(requestSetLastSeenMsg(BufferId, MsgId)), bufferSyncer(), SLOT(requestSetLastSeenMsg(BufferId, const MsgId &))); SignalProxy *p = signalProxy(); - - if ((Client::coreFeatures() & Quassel::PasswordChange)) { - p->attachSignal(this, SIGNAL(clientChangePassword(QString))); - } - p->synchronize(bufferSyncer()); // create a new BufferViewManager @@ -414,9 +414,13 @@ void Client::setSyncedToCore() _ignoreListManager = new ClientIgnoreListManager(this); p->synchronize(ignoreListManager()); + // create TransferManager if core supports it Q_ASSERT(!_transferManager); - _transferManager = new ClientTransferManager(this); - p->synchronize(transferManager()); + if (coreFeatures() & Quassel::DccFileTransfer) { + _transferManager = new ClientTransferManager(this); + _transferModel->setManager(_transferManager); + p->synchronize(transferManager()); + } // trigger backlog request once all active bufferviews are initialized connect(bufferViewOverlay(), SIGNAL(initDone()), this, SLOT(requestInitialBacklog())); @@ -489,8 +493,9 @@ void Client::setDisconnectedFromCore() } if (_transferManager) { + _transferModel->setManager(nullptr); _transferManager->deleteLater(); - _transferManager = 0; + _transferManager = nullptr; } // we probably don't want to save pending input for reconnect @@ -537,7 +542,7 @@ void Client::networkDestroyed() break; } else { - netIter++; + ++netIter; } } } @@ -653,12 +658,20 @@ void Client::markBufferAsRead(BufferId id) bufferSyncer()->requestMarkBufferAsRead(id); } -void Client::changePassword(QString newPassword) { + +void Client::changePassword(const QString &oldPassword, const QString &newPassword) { CoreAccount account = currentCoreAccount(); account.setPassword(newPassword); coreAccountModel()->createOrUpdateAccount(account); - coreAccountModel()->save(); - emit clientChangePassword(newPassword); + emit instance()->requestPasswordChange(nullptr, account.user(), oldPassword, newPassword); +} + + +void Client::corePasswordChanged(PeerPtr, bool success) +{ + if (success) + coreAccountModel()->save(); + emit passwordChanged(success); }