X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fclient%2Fclient.h;h=7642c3e6bbf3e09e37e21f2d1ee4d39275b022f3;hb=39328183a6a87c6eb10a9dbbffcd5d65bf154a1f;hp=29ee34282f19b689bc7d54dc119127ea280c0451;hpb=8e93326fd70af3c0accc599770796619ef3cee6e;p=quassel.git diff --git a/src/client/client.h b/src/client/client.h index 29ee3428..7642c3e6 100644 --- a/src/client/client.h +++ b/src/client/client.h @@ -20,6 +20,10 @@ #pragma once +#include "client-export.h" + +#include + #include #include @@ -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 { 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, QObject *parent = nullptr); + ~Client() override; + static AbstractUi *mainUi(); static QList networkIds(); @@ -172,12 +176,14 @@ public: * * @see Client::showChannelList() * - * @param networkId Network ID for associated network - * @param channelFilters Partial channel name to search for, or empty to show all + * @param networkId Network ID for associated network + * @param channelFilters Partial channel name to search for, or empty to show all + * @param listImmediately If true, immediately list channels, otherwise just show dialog */ - void displayChannelList(NetworkId networkId, const QString &channelFilters = {}) + void displayChannelList(NetworkId networkId, const QString &channelFilters = {}, + bool listImmediately = false) { - emit showChannelList(networkId, channelFilters); + emit showChannelList(networkId, channelFilters, listImmediately); } signals: @@ -190,10 +196,13 @@ signals: * * @see MainWin::showChannelList() * - * @param networkId Network ID for associated network - * @param channelFilters Partial channel name to search for, or empty to show all + * @param networkId Network ID for associated network + * @param channelFilters Partial channel name to search for, or empty to show all + * @param listImmediately If true, immediately list channels, otherwise just show dialog */ - void showChannelList(NetworkId networkId, const QString &channelFilters = {}); + void showChannelList(NetworkId networkId, const QString &channelFilters = {}, + bool listImmediately = false); + void showIgnoreList(QString ignoreRule); void connected(); @@ -251,6 +260,9 @@ signals: //! Emitted when database schema upgrade starts or ends (only mono client) void dbUpgradeInProgress(bool inProgress); + //! Emitted before an exit request is handled + void exitRequested(const QString &reason); + public slots: void disconnectFromCore(); @@ -261,6 +273,7 @@ public slots: void markBufferAsRead(BufferId id); void onDbUpgradeInProgress(bool inProgress); + void onExitRequested(int exitCode, const QString &reason); private slots: void setSyncedToCore(); @@ -283,10 +296,6 @@ private slots: void sendBufferedUserInput(); private: - Client(QObject *parent = 0); - virtual ~Client(); - void init(); - void requestInitialBacklog(); /** @@ -302,10 +311,8 @@ private: static void addNetwork(Network *); - static QPointer instanceptr; - SignalProxy *_signalProxy; - AbstractUi *_mainUi; + std::unique_ptr _mainUi; NetworkModel *_networkModel; BufferModel *_bufferModel; BufferSyncer *_bufferSyncer;