X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fsettingspages%2Fnetworkssettingspage.h;h=3ce019070ec28bcf5ea8775eaa7bd5996ce0f623;hp=09128c8c1c17973cbb7c03258a2784a8f5bca168;hb=e04ec81f1b7a29542135286854040d353e1e1474;hpb=694f9bfbf7f1af19108461c7e00d133e55082bce diff --git a/src/qtui/settingspages/networkssettingspage.h b/src/qtui/settingspages/networkssettingspage.h index 09128c8c..3ce01907 100644 --- a/src/qtui/settingspages/networkssettingspage.h +++ b/src/qtui/settingspages/networkssettingspage.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-09 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 * @@ -15,16 +15,17 @@ * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #ifndef NETWORKSSETTINGSPAGE_H #define NETWORKSSETTINGSPAGE_H -#include +#include #include "network.h" #include "settingspage.h" +#include "clientidentity.h" #include "ui_networkssettingspage.h" #include "ui_networkadddlg.h" @@ -46,6 +47,7 @@ public: public slots: void save(); void load(); + void bufferList_Open(NetworkId); private slots: void widgetHasChanged(); @@ -57,6 +59,16 @@ private slots: void displayNetwork(NetworkId); void setItemState(NetworkId, QListWidgetItem *item = 0); + /** + * Update the capability-dependent settings according to what the server supports + * + * For example, this updates the SASL text for when the server advertises support. This should + * only be called on the currently displayed network. + * + * @param[in] id NetworkId referencing network used to update settings user interface. + */ + void setNetworkCapStates(NetworkId id); + void clientNetworkAdded(NetworkId); void clientNetworkRemoved(NetworkId); void clientNetworkUpdated(); @@ -65,6 +77,15 @@ private slots: void clientIdentityRemoved(IdentityId); void clientIdentityUpdated(); + /** + * Update the settings user interface according to capabilities advertised by the IRC server + */ + void clientNetworkCapsUpdated(); + +#ifdef HAVE_SSL + void sslUpdated(); +#endif + void on_networkList_itemSelectionChanged(); void on_addNetwork_clicked(); void on_deleteNetwork_clicked(); @@ -80,14 +101,38 @@ 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; QHash networkInfos; bool _ignoreWidgetChanges; +#ifdef HAVE_SSL + CertIdentity *_cid; +#endif + + QIcon connectedIcon, connectingIcon, disconnectedIcon; + + // Status icons + QIcon infoIcon, warningIcon; - QPixmap connectedIcon, connectingIcon, disconnectedIcon; + CapSupportStatus _saslStatusSelected; /// Status of SASL support for currently-selected network void reset(); bool testHasChanged(); @@ -96,6 +141,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); }; @@ -111,6 +163,16 @@ public: private slots: void setButtonStates(); + /** + * Update the default server port according to isChecked + * + * Connect with useSSL->toggled() in order to keep the port number in sync. This only modifies + * the port if it's not been changed from defaults. + * + * @param isChecked If true and port unchanged, set port to 6697, else set port to 6667. + */ + void updateSslPort(bool isChecked); + private: Ui::NetworkAddDlg ui; @@ -149,6 +211,16 @@ public: private slots: void on_host_textChanged(); + /** + * Update the default server port according to isChecked + * + * Connect with useSSL->toggled() in order to keep the port number in sync. This only modifies + * the port if it's not been changed from defaults. + * + * @param isChecked If true and port unchanged, set port to 6697, else set port to 6667. + */ + void updateSslPort(bool isChecked); + private: Ui::ServerEditDlg ui; };