/***************************************************************************
- * 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 *
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();
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
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<NetworkId, NetworkInfo> networkInfos;
bool _ignoreWidgetChanges;
#ifdef HAVE_SSL
- CertIdentity *_cid;
+ CertIdentity *_cid{nullptr};
#endif
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);
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);
};
Q_OBJECT
public:
- NetworkAddDlg(const QStringList &existing = QStringList(), QWidget *parent = 0);
+ NetworkAddDlg(QStringList existing = QStringList(), QWidget *parent = nullptr);
NetworkInfo networkInfo() const;
Q_OBJECT
public:
- NetworkEditDlg(const QString &old, const QStringList &existing = QStringList(), QWidget *parent = 0);
+ NetworkEditDlg(const QString &old, QStringList existing = QStringList(), QWidget *parent = nullptr);
QString networkName() const;
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;
Q_OBJECT
public:
- SaveNetworksDlg(const QList<NetworkInfo> &toCreate, const QList<NetworkInfo> &toUpdate, const QList<NetworkId> &toRemove, QWidget *parent = 0);
+ SaveNetworksDlg(const QList<NetworkInfo> &toCreate, const QList<NetworkInfo> &toUpdate, const QList<NetworkId> &toRemove, QWidget *parent = nullptr);
private slots:
void clientEvent();