X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fclient.h;h=dd76191f242dcc99519f9b73b0a3c8913fcd2af5;hp=7850b0fc644f8c479f4178f5bdb9e3f9370129fc;hb=158443f71d48215eea8b47b836b61afd77654b78;hpb=37110ceaa070167b4f40ed449ac9ea130503a792 diff --git a/src/client/client.h b/src/client/client.h index 7850b0fc..dd76191f 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(); @@ -167,15 +171,38 @@ public: emit showIgnoreList(ignoreRule); } - void displayChannelList(NetworkId networkId) { - emit showChannelList(networkId); + /** + * Request to show the channel list dialog for the network, optionally searching by channel name + * + * @see Client::showChannelList() + * + * @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 = {}, + bool listImmediately = false) + { + emit showChannelList(networkId, channelFilters, listImmediately); } signals: void requestNetworkStates(); void showConfigWizard(const QVariantMap &coredata); - void showChannelList(NetworkId networkId); + + /** + * Request to show the channel list dialog for the network, optionally searching by channel name + * + * @see MainWin::showChannelList() + * + * @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 = {}, + bool listImmediately = false); + void showIgnoreList(QString ignoreRule); void connected(); @@ -233,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(); @@ -243,6 +273,7 @@ public slots: void markBufferAsRead(BufferId id); void onDbUpgradeInProgress(bool inProgress); + void onExitRequested(int exitCode, const QString &reason); private slots: void setSyncedToCore(); @@ -265,10 +296,6 @@ private slots: void sendBufferedUserInput(); private: - Client(QObject *parent = 0); - virtual ~Client(); - void init(); - void requestInitialBacklog(); /** @@ -284,39 +311,37 @@ private: static void addNetwork(Network *); - static QPointer 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 _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 _networks; QHash _identities; - bool _connected; + bool _connected{false}; QList > _userInputBuffer;