X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fclient.cpp;h=82e7fd420ad5f91c5c803392cedb448d92dd9d93;hp=87fa59f82110179ffa66eddba478c7bf6555a39d;hb=f9cd845a9119e0abf450a91d8802f5c1822dd638;hpb=4c4fe2b514fc7ecf3186202d73b3b5ff8847763f diff --git a/src/client/client.cpp b/src/client/client.cpp index 87fa59f8..82e7fd42 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -52,91 +52,40 @@ #include "util.h" #include "clientauthhandler.h" -#include -#include +#include +#include -QPointer Client::instanceptr = 0; - -/*** Initialization/destruction ***/ - -bool Client::instanceExists() -{ - return instanceptr; -} - - -Client *Client::instance() -{ - if (!instanceptr) - instanceptr = new Client(); - return instanceptr; -} - - -void Client::destroy() -{ - if (instanceptr) { - delete instanceptr->mainUi(); - instanceptr->deleteLater(); - instanceptr = 0; - } -} - - -void Client::init(AbstractUi *ui) -{ - instance()->_mainUi = ui; - instance()->init(); -} - - -Client::Client(QObject *parent) - : QObject(parent), +Client::Client(std::unique_ptr ui, QObject *parent) + : QObject(parent), Singleton(this), _signalProxy(new SignalProxy(SignalProxy::Client, this)), - _mainUi(0), - _networkModel(0), - _bufferModel(0), - _bufferSyncer(0), - _aliasManager(0), + _mainUi(std::move(ui)), + _networkModel(new NetworkModel(this)), + _bufferModel(new BufferModel(_networkModel)), _backlogManager(new ClientBacklogManager(this)), - _bufferViewManager(0), _bufferViewOverlay(new BufferViewOverlay(this)), _coreInfo(new CoreInfo(this)), - _dccConfig(0), _ircListHelper(new ClientIrcListHelper(this)), - _inputHandler(0), - _networkConfig(0), - _ignoreListManager(0), - _highlightRuleManager(0), - _transferManager(0), + _inputHandler(new ClientUserInputHandler(this)), _transferModel(new TransferModel(this)), - _messageModel(0), - _messageProcessor(0), + _messageModel(_mainUi->createMessageModel(this)), + _messageProcessor(_mainUi->createMessageProcessor(this)), _coreAccountModel(new CoreAccountModel(this)), - _coreConnection(new CoreConnection(this)), - _connected(false) -{ - _signalProxy->synchronize(_ircListHelper); -} - - -Client::~Client() + _coreConnection(new CoreConnection(this)) { - disconnectFromCore(); -} - +#ifdef EMBED_DATA + Q_INIT_RESOURCE(data); +#endif -void Client::init() -{ - _networkModel = new NetworkModel(this); + //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())); + connect(this, SIGNAL(disconnected()), mainUi(), SLOT(disconnectedFromCore())); - connect(this, SIGNAL(networkRemoved(NetworkId)), - _networkModel, SLOT(networkRemoved(NetworkId))); + connect(this, SIGNAL(networkRemoved(NetworkId)), _networkModel, SLOT(networkRemoved(NetworkId))); + connect(this, SIGNAL(networkRemoved(NetworkId)), _messageProcessor, SLOT(networkRemoved(NetworkId))); - _bufferModel = new BufferModel(_networkModel); - _messageModel = mainUi()->createMessageModel(this); - _messageProcessor = mainUi()->createMessageProcessor(this); - _inputHandler = new ClientUserInputHandler(this); + connect(backlogManager(), SIGNAL(messagesReceived(BufferId, int)), _messageModel, SLOT(messagesReceived(BufferId, int))); + connect(coreConnection(), SIGNAL(stateChanged(CoreConnection::ConnectionState)), SLOT(connectionStateChanged(CoreConnection::ConnectionState))); SignalProxy *p = signalProxy(); @@ -163,34 +112,24 @@ void Client::init() p->attachSignal(this, SIGNAL(requestKickClient(int)), SIGNAL(kickClient(int))); p->attachSlot(SIGNAL(disconnectFromCore()), this, SLOT(disconnectFromCore())); - //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())); - connect(this, SIGNAL(disconnected()), mainUi(), SLOT(disconnectedFromCore())); - - // Listen to network removed events - connect(this, SIGNAL(networkRemoved(NetworkId)), - _messageProcessor, SLOT(networkRemoved(NetworkId))); - - // attach backlog manager p->synchronize(backlogManager()); - connect(backlogManager(), SIGNAL(messagesReceived(BufferId, int)), _messageModel, SLOT(messagesReceived(BufferId, int))); - - coreAccountModel()->load(); - - // Attach CoreInfo p->synchronize(coreInfo()); + p->synchronize(_ircListHelper); - connect(coreConnection(), SIGNAL(stateChanged(CoreConnection::ConnectionState)), SLOT(connectionStateChanged(CoreConnection::ConnectionState))); + coreAccountModel()->load(); coreConnection()->init(); } -/*** public static methods ***/ +Client::~Client() +{ + disconnectFromCore(); +} + AbstractUi *Client::mainUi() { - return instance()->_mainUi; + return instance()->_mainUi.get(); } @@ -239,7 +178,7 @@ QList Client::networkIds() const Network *Client::network(NetworkId networkid) { if (instance()->_networks.contains(networkid)) return instance()->_networks[networkid]; - else return 0; + else return nullptr; } @@ -283,7 +222,7 @@ void Client::coreNetworkCreated(NetworkId id) qWarning() << "Creation of already existing network requested!"; return; } - Network *net = new Network(id, this); + auto *net = new Network(id, this); addNetwork(net); } @@ -309,7 +248,7 @@ QList Client::identityIds() const Identity *Client::identity(IdentityId id) { if (instance()->_identities.contains(id)) return instance()->_identities[id]; - else return 0; + else return nullptr; } @@ -344,7 +283,7 @@ void Client::removeIdentity(IdentityId id) void Client::coreIdentityCreated(const Identity &other) { if (!_identities.contains(other.id())) { - Identity *identity = new Identity(other, this); + auto *identity = new Identity(other, this); _identities[other.id()] = identity; identity->setInitialized(); signalProxy()->synchronize(identity); @@ -544,26 +483,26 @@ void Client::setDisconnectedFromCore() if (_bufferSyncer) { _bufferSyncer->deleteLater(); - _bufferSyncer = 0; + _bufferSyncer = nullptr; } _coreInfo->reset(); if (_bufferViewManager) { _bufferViewManager->deleteLater(); - _bufferViewManager = 0; + _bufferViewManager = nullptr; } _bufferViewOverlay->reset(); if (_aliasManager) { _aliasManager->deleteLater(); - _aliasManager = 0; + _aliasManager = nullptr; } if (_ignoreListManager) { _ignoreListManager->deleteLater(); - _ignoreListManager = 0; + _ignoreListManager = nullptr; } if (_highlightRuleManager) { @@ -592,7 +531,7 @@ void Client::setDisconnectedFromCore() while (netIter != _networks.end()) { Network *net = netIter.value(); emit networkRemoved(net->networkId()); - disconnect(net, SIGNAL(destroyed()), this, 0); + disconnect(net, SIGNAL(destroyed()), this, nullptr); netIter = _networks.erase(netIter); net->deleteLater(); } @@ -609,7 +548,7 @@ void Client::setDisconnectedFromCore() if (_networkConfig) { _networkConfig->deleteLater(); - _networkConfig = 0; + _networkConfig = nullptr; } } @@ -618,7 +557,7 @@ void Client::setDisconnectedFromCore() void Client::networkDestroyed() { - Network *net = static_cast(sender()); + auto *net = static_cast(sender()); QHash::iterator netIter = _networks.begin(); while (netIter != _networks.end()) { if (*netIter == net) { @@ -664,7 +603,7 @@ MsgId Client::markerLine(BufferId id) { if (id.isValid() && networkModel()) return networkModel()->markerLineMsgId(id); - return MsgId(); + return {}; }