Quassel IRC  Pre-Release
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros
coreaccountsettingspage.h
Go to the documentation of this file.
1 /***************************************************************************
2  * Copyright (C) 2005-2015 by the Quassel Project *
3  * devel@quassel-irc.org *
4  * *
5  * This program is free software; you can redistribute it and/or modify *
6  * it under the terms of the GNU General Public License as published by *
7  * the Free Software Foundation; either version 2 of the License, or *
8  * (at your option) version 3. *
9  * *
10  * This program is distributed in the hope that it will be useful, *
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13  * GNU General Public License for more details. *
14  * *
15  * You should have received a copy of the GNU General Public License *
16  * along with this program; if not, write to the *
17  * Free Software Foundation, Inc., *
18  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
19  ***************************************************************************/
20 
21 #ifndef COREACCOUNTSETTINGSPAGE_H_
22 #define COREACCOUNTSETTINGSPAGE_H_
23 
24 #include <QSortFilterProxyModel>
25 
26 #include "settingspage.h"
27 
28 #include "coreaccount.h"
29 
30 #include "ui_coreaccounteditdlg.h"
31 #include "ui_coreaccountsettingspage.h"
32 
33 class CoreAccountModel;
35 
37 {
38  Q_OBJECT
39 
40 public:
41  CoreAccountSettingsPage(QWidget *parent = 0);
42 
43  inline bool hasDefaults() const { return false; }
44  inline bool isStandAlone() const { return _standalone; }
45 
46  AccountId selectedAccount() const;
47 
48 public slots:
49  void save();
50  void load();
51 
52  void setSelectedAccount(AccountId accId);
53  void setStandAlone(bool);
54 
55 signals:
56  void connectToCore(AccountId accId);
57 
58 private slots:
62  void on_accountView_doubleClicked(const QModelIndex &index);
63 
64  void setWidgetStates();
65  void widgetHasChanged();
66 
67  void rowsAboutToBeRemoved(const QModelIndex &index, int start, int end);
68  void rowsInserted(const QModelIndex &index, int start, int end);
69 
70 private:
71  Ui::CoreAccountSettingsPage ui;
72 
74  inline CoreAccountModel *model() const { return _model; }
77 
80 
81  void editAccount(const QModelIndex &);
82 
83  bool testHasChanged();
84 
85  inline QString settingsKey() const { return QString("CoreAccounts"); }
86 };
87 
88 
89 // ========================================
90 // CoreAccountEditDlg
91 // ========================================
92 class CoreAccountEditDlg : public QDialog
93 {
94  Q_OBJECT
95 
96 public:
97  CoreAccountEditDlg(const CoreAccount &account, QWidget *parent = 0);
98 
100 
101 private slots:
102  void on_hostName_textChanged(const QString &);
103  void on_accountName_textChanged(const QString &);
104  void on_user_textChanged(const QString &);
105 
106  void setWidgetStates();
107 
108 private:
109  Ui::CoreAccountEditDlg ui;
111 };
112 
113 
114 // ========================================
115 // FilteredCoreAccountModel
116 // ========================================
117 
119 class FilteredCoreAccountModel : public QSortFilterProxyModel
120 {
121  Q_OBJECT
122 
123 public:
124  FilteredCoreAccountModel(CoreAccountModel *model, QObject *parent = 0);
125 
126 protected:
127  virtual bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const;
128 
129 private:
131 };
132 
133 
134 #endif