X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fsettingspages%2Fcoreaccountsettingspage.h;h=831ab5ee0b5620305d86553cf5cf622f00146eca;hp=6948e85a823f8811c858b82faf9bb2a4f0ce4e7a;hb=4a5065255e652dd0c301bac0db41b7afb777ef49;hpb=bf86381e85cd97ef04a9dc45c2b1a063035391fa diff --git a/src/qtui/settingspages/coreaccountsettingspage.h b/src/qtui/settingspages/coreaccountsettingspage.h index 6948e85a..831ab5ee 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-2013 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -15,12 +15,14 @@ * 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 + #include "settingspage.h" #include "coreaccount.h" @@ -29,11 +31,13 @@ #include "ui_coreaccountsettingspage.h" class CoreAccountModel; +class FilteredCoreAccountModel; -class CoreAccountSettingsPage : public SettingsPage { - Q_OBJECT +class CoreAccountSettingsPage : public SettingsPage +{ + Q_OBJECT - public: +public: CoreAccountSettingsPage(QWidget *parent = 0); inline bool hasDefaults() const { return false; } @@ -41,7 +45,7 @@ class CoreAccountSettingsPage : public SettingsPage { AccountId selectedAccount() const; - public slots: +public slots: void save(); void load(); @@ -51,58 +55,80 @@ class CoreAccountSettingsPage : public SettingsPage { 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); - private: +private: Ui::CoreAccountSettingsPage ui; CoreAccountModel *_model; inline CoreAccountModel *model() const { return _model; } + FilteredCoreAccountModel *_filteredModel; + inline FilteredCoreAccountModel *filteredModel() const { return _filteredModel; } AccountId _lastAccountId, _lastAutoConnectId; bool _standalone; - 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"); } }; + // ======================================== // 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 = 0); - 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 setWidgetStates(); + void setWidgetStates(); private: - Ui::CoreAccountEditDlg ui; - CoreAccount _account; + Ui::CoreAccountEditDlg ui; + CoreAccount _account; }; + +// ======================================== +// 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 = 0); + +protected: + virtual bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const; + +private: + AccountId _internalAccount; +}; + + #endif