X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fnetworkmodelcontroller.h;h=455e9d436c7465de48e757927fca56c47ce87568;hp=ec27c878ecf756c46c9f9cdb4e18910ed98ecbdf;hb=694f9bfbf7f1af19108461c7e00d133e55082bce;hpb=61c8d84d1c849373e0f115dc748ed45cff95287d diff --git a/src/uisupport/networkmodelcontroller.h b/src/uisupport/networkmodelcontroller.h index ec27c878..455e9d43 100644 --- a/src/uisupport/networkmodelcontroller.h +++ b/src/uisupport/networkmodelcontroller.h @@ -31,169 +31,172 @@ class QComboBox; class QDialogButtonBox; class QLineEdit; -class NetworkModelController : public QObject { - Q_OBJECT +class NetworkModelController : public QObject +{ + Q_OBJECT public: - NetworkModelController(QObject *parent = 0); - virtual ~NetworkModelController(); - - // don't change enums without doublechecking masks etc. in code - enum ActionType { - // Network actions - NetworkMask = 0x0f, - NetworkConnect = 0x01, - NetworkDisconnect = 0x02, - NetworkConnectAll = 0x03, - NetworkDisconnectAll = 0x04, - - // Buffer actions - BufferMask = 0xf0, - BufferJoin = 0x10, - BufferPart = 0x20, - BufferSwitchTo = 0x30, - BufferRemove = 0x40, - - // Hide actions - HideMask = 0x0f00, - HideJoin = 0x0100, - HidePart = 0x0200, - HideQuit = 0x0300, - HideNick = 0x0400, - HideMode = 0x0500, - HideDayChange = 0x0600, - HideTopic = 0x0700, - HideUseDefaults = 0xe00, - HideApplyToAll = 0xf00, - - // General actions - GeneralMask = 0xf000, - JoinChannel = 0x1000, - ShowChannelList = 0x2000, - ShowIgnoreList = 0x3000, - - // Nick actions - NickMask = 0xff0000, - NickWhois = 0x010000, - NickQuery = 0x020000, - NickSwitchTo = 0x030000, - NickCtcpVersion = 0x040000, - NickCtcpPing = 0x050000, - NickCtcpTime = 0x060000, - NickCtcpClientinfo = 0x070000, - NickOp = 0x080000, - NickDeop = 0x090000, - NickVoice = 0x0a0000, - NickDevoice = 0x0b0000, - NickHalfop = 0x0c0000, - NickDehalfop = 0x0d0000, - NickKick = 0x0e0000, - NickBan = 0x0f0000, - NickKickBan = 0x100000, - NickIgnoreUser = 0x200000, - NickIgnoreHost = 0x300000, - NickIgnoreDomain = 0x400000, - NickIgnoreCustom = 0x500000, - // The next 5 types have to stay together - // Don't change without reading ContextMenuActionProvider::addIgnoreMenu! - NickIgnoreToggleEnabled0 = 0x600000, - NickIgnoreToggleEnabled1 = 0x700000, - NickIgnoreToggleEnabled2 = 0x800000, - NickIgnoreToggleEnabled3 = 0x900000, - NickIgnoreToggleEnabled4 = 0xa00000, - - // Actions that are handled externally - // These emit a signal to the action requester, rather than being handled here - ExternalMask = 0xff000000, - HideBufferTemporarily = 0x01000000, - HideBufferPermanently = 0x02000000 - }; - - inline Action *action(ActionType type) const; + NetworkModelController(QObject *parent = 0); + virtual ~NetworkModelController(); + + // don't change enums without doublechecking masks etc. in code + enum ActionType { + // Network actions + NetworkMask = 0x0f, + NetworkConnect = 0x01, + NetworkDisconnect = 0x02, + NetworkConnectAll = 0x03, + NetworkDisconnectAll = 0x04, + + // Buffer actions + BufferMask = 0xf0, + BufferJoin = 0x10, + BufferPart = 0x20, + BufferSwitchTo = 0x30, + BufferRemove = 0x40, + + // Hide actions + HideMask = 0x0f00, + HideJoin = 0x0100, + HidePart = 0x0200, + HideQuit = 0x0300, + HideNick = 0x0400, + HideMode = 0x0500, + HideDayChange = 0x0600, + HideTopic = 0x0700, + HideUseDefaults = 0xe00, + HideApplyToAll = 0xf00, + + // General actions + GeneralMask = 0xf000, + JoinChannel = 0x1000, + ShowChannelList = 0x2000, + ShowIgnoreList = 0x3000, + + // Nick actions + NickMask = 0xff0000, + NickWhois = 0x010000, + NickQuery = 0x020000, + NickSwitchTo = 0x030000, + NickCtcpVersion = 0x040000, + NickCtcpPing = 0x050000, + NickCtcpTime = 0x060000, + NickCtcpClientinfo = 0x070000, + NickOp = 0x080000, + NickDeop = 0x090000, + NickVoice = 0x0a0000, + NickDevoice = 0x0b0000, + NickHalfop = 0x0c0000, + NickDehalfop = 0x0d0000, + NickKick = 0x0e0000, + NickBan = 0x0f0000, + NickKickBan = 0x100000, + NickIgnoreUser = 0x200000, + NickIgnoreHost = 0x300000, + NickIgnoreDomain = 0x400000, + NickIgnoreCustom = 0x500000, + // The next 5 types have to stay together + // Don't change without reading ContextMenuActionProvider::addIgnoreMenu! + NickIgnoreToggleEnabled0 = 0x600000, + NickIgnoreToggleEnabled1 = 0x700000, + NickIgnoreToggleEnabled2 = 0x800000, + NickIgnoreToggleEnabled3 = 0x900000, + NickIgnoreToggleEnabled4 = 0xa00000, + + // Actions that are handled externally + // These emit a signal to the action requester, rather than being handled here + ExternalMask = 0xff000000, + HideBufferTemporarily = 0x01000000, + HideBufferPermanently = 0x02000000 + }; + + inline Action *action(ActionType type) const; public: - enum ItemActiveState { - InactiveState = 0x01, - ActiveState = 0x02 - }; - Q_DECLARE_FLAGS(ItemActiveStates, ItemActiveState) + enum ItemActiveState { + InactiveState = 0x01, + ActiveState = 0x02 + }; + Q_DECLARE_FLAGS(ItemActiveStates, ItemActiveState) public slots: - virtual void connectedToCore() {} - virtual void disconnectedFromCore() {} + virtual void connectedToCore() {} + virtual void disconnectedFromCore() {} protected: - inline ActionCollection *actionCollection() const; - inline QList indexList() const; - inline MessageFilter *messageFilter() const; - inline QString contextItem() const ; ///< Channel name or nick to provide context menu for - inline QObject *receiver() const ; - inline const char *method() const; - - void setIndexList(const QModelIndex &); - void setIndexList(const QList &); - void setMessageFilter(MessageFilter *); - void setContextItem(const QString &); - void setSlot(QObject *receiver, const char *method); - - Action * registerAction(ActionType type, const QString &text, bool checkable = false); - Action * registerAction(ActionType type, const QPixmap &icon, const QString &text, bool checkable = false); - bool checkRequirements(const QModelIndex &index, ItemActiveStates requiredActiveState = QFlags(ActiveState | InactiveState)); - - QString nickName(const QModelIndex &index) const; - BufferId findQueryBuffer(const QModelIndex &index, const QString &predefinedNick = QString()) const; - BufferId findQueryBuffer(NetworkId, const QString &nickName) const; - void removeBuffers(const QModelIndexList &indexList); + inline ActionCollection *actionCollection() const; + inline QList indexList() const; + inline MessageFilter *messageFilter() const; + inline QString contextItem() const; ///< Channel name or nick to provide context menu for + inline QObject *receiver() const; + inline const char *method() const; + + void setIndexList(const QModelIndex &); + void setIndexList(const QList &); + void setMessageFilter(MessageFilter *); + void setContextItem(const QString &); + void setSlot(QObject *receiver, const char *method); + + Action *registerAction(ActionType type, const QString &text, bool checkable = false); + Action *registerAction(ActionType type, const QPixmap &icon, const QString &text, bool checkable = false); + bool checkRequirements(const QModelIndex &index, ItemActiveStates requiredActiveState = QFlags(ActiveState | InactiveState)); + + QString nickName(const QModelIndex &index) const; + BufferId findQueryBuffer(const QModelIndex &index, const QString &predefinedNick = QString()) const; + BufferId findQueryBuffer(NetworkId, const QString &nickName) const; + void removeBuffers(const QModelIndexList &indexList); protected slots: - virtual void actionTriggered(QAction *); + virtual void actionTriggered(QAction *); signals: - void showChannelList(NetworkId); - void showIgnoreList(QString); + void showChannelList(NetworkId); + void showIgnoreList(QString); protected: - virtual void handleNetworkAction(ActionType, QAction *); - virtual void handleBufferAction(ActionType, QAction *); - virtual void handleHideAction(ActionType, QAction *); - virtual void handleNickAction(ActionType, QAction *action); - virtual void handleGeneralAction(ActionType, QAction *); - virtual void handleExternalAction(ActionType, QAction *); + virtual void handleNetworkAction(ActionType, QAction *); + virtual void handleBufferAction(ActionType, QAction *); + virtual void handleHideAction(ActionType, QAction *); + virtual void handleNickAction(ActionType, QAction *action); + virtual void handleGeneralAction(ActionType, QAction *); + virtual void handleExternalAction(ActionType, QAction *); - class JoinDlg; + class JoinDlg; private: - NetworkModel *_model; + NetworkModel *_model; - ActionCollection *_actionCollection; - QHash _actionByType; + ActionCollection *_actionCollection; + QHash _actionByType; - QList _indexList; - MessageFilter *_messageFilter; - QString _contextItem; ///< Channel name or nick to provide context menu for - QObject *_receiver; - const char *_method; + QList _indexList; + MessageFilter *_messageFilter; + QString _contextItem; ///< Channel name or nick to provide context menu for + QObject *_receiver; + const char *_method; }; + //! Input dialog for joining a channel -class NetworkModelController::JoinDlg : public QDialog { - Q_OBJECT +class NetworkModelController::JoinDlg : public QDialog +{ + Q_OBJECT public: - JoinDlg(const QModelIndex &index, QWidget *parent = 0); + JoinDlg(const QModelIndex &index, QWidget *parent = 0); - QString channelName() const; - QString channelPassword() const; - NetworkId networkId() const; + QString channelName() const; + QString channelPassword() const; + NetworkId networkId() const; private slots: - void on_channel_textChanged(const QString &); + void on_channel_textChanged(const QString &); private: - QComboBox *networks; - QLineEdit *channel; - QLineEdit *password; - QDialogButtonBox *buttonBox; + QComboBox *networks; + QLineEdit *channel; + QLineEdit *password; + QDialogButtonBox *buttonBox; };