modernize: Prefer default member init over ctor init
[quassel.git] / src / client / client.h
index 00c9c97..dd76191 100644 (file)
 
 #pragma once
 
+#include "client-export.h"
+
+#include <memory>
+
 #include <QList>
 #include <QPointer>
 
@@ -29,6 +33,7 @@
 #include "coreconnection.h"
 #include "highlightrulemanager.h"
 #include "quassel.h"
+#include "singleton.h"
 #include "types.h"
 
 class Message;
@@ -63,7 +68,7 @@ class TransferModel;
 
 struct NetworkInfo;
 
-class Client : public QObject
+class CLIENT_EXPORT Client : public QObject, public Singleton<Client>
 {
     Q_OBJECT
 
@@ -73,10 +78,9 @@ public:
         RemoteCore
     };
 
-    static bool instanceExists();
-    static Client *instance();
-    static void destroy();
-    static void init(AbstractUi *);
+    Client(std::unique_ptr<AbstractUi>, QObject *parent = nullptr);
+    ~Client() override;
+
     static AbstractUi *mainUi();
 
     static QList<NetworkId> networkIds();
@@ -292,10 +296,6 @@ private slots:
     void sendBufferedUserInput();
 
 private:
-    Client(QObject *parent = 0);
-    virtual ~Client();
-    void init();
-
     void requestInitialBacklog();
 
     /**
@@ -311,39 +311,37 @@ private:
 
     static void addNetwork(Network *);
 
-    static QPointer<Client> instanceptr;
-
-    SignalProxy *_signalProxy;
-    AbstractUi *_mainUi;
-    NetworkModel *_networkModel;
-    BufferModel *_bufferModel;
-    BufferSyncer *_bufferSyncer;
-    ClientAliasManager *_aliasManager;
-    ClientBacklogManager *_backlogManager;
-    ClientBufferViewManager *_bufferViewManager;
-    BufferViewOverlay *_bufferViewOverlay;
-    CoreInfo *_coreInfo;
-    DccConfig *_dccConfig;
-    ClientIrcListHelper *_ircListHelper;
-    ClientUserInputHandler *_inputHandler;
-    NetworkConfig *_networkConfig;
-    ClientIgnoreListManager *_ignoreListManager;
-    HighlightRuleManager *_highlightRuleManager;
-    ClientTransferManager *_transferManager;
-    TransferModel *_transferModel;
-
-    MessageModel *_messageModel;
-    AbstractMessageProcessor *_messageProcessor;
-
-    CoreAccountModel *_coreAccountModel;
-    CoreConnection *_coreConnection;
-
-    ClientMode clientMode;
+    SignalProxy *_signalProxy{nullptr};
+    std::unique_ptr<AbstractUi> _mainUi;
+    NetworkModel *_networkModel{nullptr};
+    BufferModel *_bufferModel{nullptr};
+    BufferSyncer *_bufferSyncer{nullptr};
+    ClientAliasManager *_aliasManager{nullptr};
+    ClientBacklogManager *_backlogManager{nullptr};
+    ClientBufferViewManager *_bufferViewManager{nullptr};
+    BufferViewOverlay *_bufferViewOverlay{nullptr};
+    CoreInfo *_coreInfo{nullptr};
+    DccConfig *_dccConfig{nullptr};
+    ClientIrcListHelper *_ircListHelper{nullptr};
+    ClientUserInputHandler *_inputHandler{nullptr};
+    NetworkConfig *_networkConfig{nullptr};
+    ClientIgnoreListManager *_ignoreListManager{nullptr};
+    HighlightRuleManager *_highlightRuleManager{nullptr};
+    ClientTransferManager *_transferManager{nullptr};
+    TransferModel *_transferModel{nullptr};
+
+    MessageModel *_messageModel{nullptr};
+    AbstractMessageProcessor *_messageProcessor{nullptr};
+
+    CoreAccountModel *_coreAccountModel{nullptr};
+    CoreConnection *_coreConnection{nullptr};
+
+    ClientMode clientMode{};
 
     QHash<NetworkId, Network *> _networks;
     QHash<IdentityId, Identity *> _identities;
 
-    bool _connected;
+    bool _connected{false};
 
     QList<QPair<BufferInfo, QString> > _userInputBuffer;