X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fqtui%2Fsettingspages%2Fcoreaccountsettingspage.h;h=4ad40142a27c1188b0b64029aae45a6c8477bfea;hb=c8ddabf364eff2400c61cea395aefe69eb8ba1b3;hp=e552a0b5cc6c00abf34b2bb69bdeee38c87ba7bc;hpb=11d59689fd6e1fe322a18b29c86d24d0803d6a2d;p=quassel.git diff --git a/src/qtui/settingspages/coreaccountsettingspage.h b/src/qtui/settingspages/coreaccountsettingspage.h index e552a0b5..4ad40142 100644 --- a/src/qtui/settingspages/coreaccountsettingspage.h +++ b/src/qtui/settingspages/coreaccountsettingspage.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2009 by the Quassel Project * + * Copyright (C) 2005-2022 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -15,81 +15,124 @@ * 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 COREACCOUNTSETTINGSPAGE_H_ #define COREACCOUNTSETTINGSPAGE_H_ -#include "settingspage.h" +#include +#include #include "coreaccount.h" +#include "settingspage.h" #include "ui_coreaccounteditdlg.h" #include "ui_coreaccountsettingspage.h" class CoreAccountModel; +class FilteredCoreAccountModel; + +class CoreAccountSettingsPage : public SettingsPage +{ + Q_OBJECT + +public: + CoreAccountSettingsPage(QWidget* parent = nullptr); + + inline bool hasDefaults() const override { return false; } + inline bool isStandAlone() const { return _standalone; } -class CoreAccountSettingsPage : public SettingsPage { - Q_OBJECT + AccountId selectedAccount() const; - public: - CoreAccountSettingsPage(QWidget *parent = 0); +public slots: + void save() override; + void load() override; - virtual inline bool hasDefaults() const { return false; } + void setSelectedAccount(AccountId accId); + void setStandAlone(bool); - public slots: - void save(); - void load(); +signals: + void connectToCore(AccountId accId); - private slots: +private slots: void on_addAccountButton_clicked(); void on_editAccountButton_clicked(); void on_deleteAccountButton_clicked(); + void on_accountView_doubleClicked(const QModelIndex& index); void setWidgetStates(); + void widgetHasChanged(); - void rowsAboutToBeRemoved(const QModelIndex &index, int start, int end); - void rowsInserted(const QModelIndex &index, int start, int end); + void rowsAboutToBeRemoved(const QModelIndex& index, int start, int end); + void rowsInserted(const QModelIndex& index, int start, int end); - private: +private: Ui::CoreAccountSettingsPage ui; - CoreAccountModel *_model; - inline CoreAccountModel *model() const { return _model; } + CoreAccountModel* _model; + inline CoreAccountModel* model() const { return _model; } + FilteredCoreAccountModel* _filteredModel; + inline FilteredCoreAccountModel* filteredModel() const { return _filteredModel; } AccountId _lastAccountId, _lastAutoConnectId; + bool _standalone{false}; - virtual QVariant loadAutoWidgetValue(const QString &widgetName); - virtual void saveAutoWidgetValue(const QString &widgetName, const QVariant &value); + void editAccount(const QModelIndex&); - void widgetHasChanged(); bool testHasChanged(); - inline QString settingsKey() const { return QString("CoreAccounts"); } + inline QString settingsKey() const override { return QString("CoreAccounts"); } }; // ======================================== // CoreAccountEditDlg // ======================================== -class CoreAccountEditDlg : public QDialog { - Q_OBJECT +class CoreAccountEditDlg : public QDialog +{ + Q_OBJECT public: - CoreAccountEditDlg(const CoreAccount &account, QWidget *parent = 0); + CoreAccountEditDlg(const CoreAccount& account, QWidget* parent = nullptr); - CoreAccount account(); + CoreAccount account(); private slots: - void on_hostName_textChanged(const QString &); - void on_accountName_textChanged(const QString &); - void on_user_textChanged(const QString &); + void on_hostName_textChanged(const QString&); + void on_accountName_textChanged(const QString&); + void on_user_textChanged(const QString&); + void on_radioButtonManualProxy_toggled(bool checked); + + void setWidgetStates(); + +private: + Ui::CoreAccountEditDlg ui; + CoreAccount _account; + enum ProxyType + { + NoProxy, + SystemProxy, + ManualProxy + }; +}; + +// ======================================== +// FilteredCoreAccountModel +// ======================================== + +//! This filters out the internal account from the non-monolithic client's UI +class FilteredCoreAccountModel : public QSortFilterProxyModel +{ + Q_OBJECT + +public: + FilteredCoreAccountModel(CoreAccountModel* model, QObject* parent = nullptr); - void setWidgetStates(); +protected: + bool filterAcceptsRow(int source_row, const QModelIndex& source_parent) const override; private: - Ui::CoreAccountEditDlg ui; - CoreAccount _account; + AccountId _internalAccount; }; #endif