X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fsettingspages%2Fnetworkssettingspage.h;h=5c9db1128a9d3141535566e6bdd161a41b60764a;hp=e88f281df09f15ec6509e16a70e0702b26a7cb08;hb=e8a39b4c3c92e193ab861a3fea84a261bb6fbd24;hpb=d5b5dab4ffbdbf30612f49cb77e000ad07b800c2 diff --git a/src/qtui/settingspages/networkssettingspage.h b/src/qtui/settingspages/networkssettingspage.h index e88f281d..5c9db112 100644 --- a/src/qtui/settingspages/networkssettingspage.h +++ b/src/qtui/settingspages/networkssettingspage.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2016 by the Quassel Project * + * Copyright (C) 2005-2018 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -38,15 +38,16 @@ class NetworksSettingsPage : public SettingsPage Q_OBJECT public: - NetworksSettingsPage(QWidget *parent = 0); + NetworksSettingsPage(QWidget *parent = nullptr); - virtual inline bool needsCoreConnection() const { return true; } + inline bool needsCoreConnection() const override { return true; } - bool aboutToSave(); + bool aboutToSave() override; public slots: - void save(); - void load(); + void save() override; + void load() override; + void bufferList_Open(NetworkId); private slots: void widgetHasChanged(); @@ -56,7 +57,17 @@ private slots: void networkConnectionError(const QString &msg); void displayNetwork(NetworkId); - void setItemState(NetworkId, QListWidgetItem *item = 0); + void setItemState(NetworkId, QListWidgetItem *item = nullptr); + + /** + * Reset the capability-dependent settings to the default unknown states + * + * For example, this updates the SASL text to indicate the status is unknown. Any actual + * information should be set by setNetworkCapStates() + * + * @see NetworksSettingsPage::setNetworkCapStates() + */ + void resetNetworkCapStates(); /** * Update the capability-dependent settings according to what the server supports @@ -100,7 +111,23 @@ private slots: void on_upServer_clicked(); void on_downServer_clicked(); + /** + * Event handler for SASL status Details button + */ + void on_saslStatusDetails_clicked(); + private: + /** + * Status of capability support + */ + enum CapSupportStatus { + Unknown, ///< Old core, or otherwise unknown, can't make assumptions + Disconnected, ///< Disconnected from network, can't determine + MaybeUnsupported, ///< Server does not advertise support at this moment + MaybeSupported ///< Server advertises support at this moment + }; + // Keep in mind networks can add, change, and remove capabilities at any time. + Ui::NetworksSettingsPage ui; NetworkId currentId; @@ -112,6 +139,11 @@ private: QIcon connectedIcon, connectingIcon, disconnectedIcon; + // Status icons + QIcon infoIcon, warningIcon; + + CapSupportStatus _saslStatusSelected; /// Status of SASL support for currently-selected network + void reset(); bool testHasChanged(); QListWidgetItem *insertNetwork(NetworkId); @@ -119,6 +151,13 @@ private: QListWidgetItem *networkItem(NetworkId) const; void saveToNetworkInfo(NetworkInfo &); IdentityId defaultIdentity() const; + + /** + * Update the SASL settings interface according to the given SASL state + * + * @param[in] saslStatus Current status of SASL support. + */ + void setSASLStatus(const CapSupportStatus saslStatus); }; @@ -127,7 +166,7 @@ class NetworkAddDlg : public QDialog Q_OBJECT public: - NetworkAddDlg(const QStringList &existing = QStringList(), QWidget *parent = 0); + NetworkAddDlg(const QStringList &existing = QStringList(), QWidget *parent = nullptr); NetworkInfo networkInfo() const; @@ -156,7 +195,7 @@ class NetworkEditDlg : public QDialog Q_OBJECT public: - NetworkEditDlg(const QString &old, const QStringList &existing = QStringList(), QWidget *parent = 0); + NetworkEditDlg(const QString &old, const QStringList &existing = QStringList(), QWidget *parent = nullptr); QString networkName() const; @@ -175,7 +214,7 @@ class ServerEditDlg : public QDialog Q_OBJECT public: - ServerEditDlg(const Network::Server &server = Network::Server(), QWidget *parent = 0); + ServerEditDlg(const Network::Server &server = Network::Server(), QWidget *parent = nullptr); Network::Server serverData() const; @@ -202,7 +241,7 @@ class SaveNetworksDlg : public QDialog Q_OBJECT public: - SaveNetworksDlg(const QList &toCreate, const QList &toUpdate, const QList &toRemove, QWidget *parent = 0); + SaveNetworksDlg(const QList &toCreate, const QList &toUpdate, const QList &toRemove, QWidget *parent = nullptr); private slots: void clientEvent();