Actually make the code visible to QML
[quandoparte] / application / settings.h
1 #ifndef SETTINGS_H
2 #define SETTINGS_H
3
4 /*
5
6 Copyright (C) 2011 Luciano Montanaro <mikelima@cirulla.net>
7
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2 of the License, or
11 (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16 General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with this program; see the file COPYING.  If not, write to
20 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
21 Boston, MA 02110-1301, USA.
22
23 */
24
25 #include "stationlistproxymodel.h"
26 #include <QObject>
27 #include <QSettings>
28 #include <QString>
29 #include <QStringList>
30
31 class Settings : public QObject
32 {
33     Q_OBJECT
34     Q_PROPERTY(QString queryBaseUrl
35                READ queryBaseUrl WRITE setQueryBaseUrl
36                NOTIFY queryBaseUrlChanged)
37     Q_PROPERTY(QStringList recentStations
38                READ recentStations WRITE setRecentStations
39                NOTIFY recentStationsChanged)
40     Q_PROPERTY(int checkingInterval
41                READ checkingInterval WRITE setCheckingInterval
42                NOTIFY checkingIntervalChanged)
43     Q_PROPERTY(bool autoUpdate
44                READ autoUpdate WRITE setAutoUpdate
45                NOTIFY autoUpdateChanged)
46     Q_PROPERTY(bool stationViewPreferred
47                READ stationViewPreferred WRITE setStationViewPreferred
48                NOTIFY stationViewPreferredChanged)
49     Q_PROPERTY(bool showArrivalsPreferred
50                READ showArrivalsPreferred WRITE setShowArrivalsPreferred
51                NOTIFY showArrivalsPreferredChanged)
52     Q_PROPERTY(StationListProxyModel::SortingMode stationListSortingMode
53                READ stationListSortingMode WRITE setStationListSortingMode
54                NOTIFY stationListSortingModeChanged)
55     Q_PROPERTY(QString versionString READ versionString CONSTANT)
56 public:
57     explicit Settings(QObject *parent = 0);
58     ~Settings();
59     Q_INVOKABLE static Settings *instance();
60
61     Q_INVOKABLE void save(void);
62
63     QString queryBaseUrl();
64     void setQueryBaseUrl(const QString &url);
65
66     QStringList recentStations();
67     void setRecentStations(const QStringList &stations);
68
69     int checkingInterval();
70     void setCheckingInterval(int);
71
72     bool autoUpdate();
73     void setAutoUpdate(bool);
74
75     bool stationViewPreferred();
76     void setStationViewPreferred(bool);
77
78     bool showArrivalsPreferred();
79     void setShowArrivalsPreferred(bool);
80
81     StationListProxyModel::SortingMode stationListSortingMode();
82     void setStationListSortingMode(StationListProxyModel::SortingMode mode);
83
84     QString versionString(void);
85
86 signals:
87     void queryBaseUrlChanged();
88     void recentStationsChanged();
89     void checkingIntervalChanged();
90     void autoUpdateChanged();
91     void stationViewPreferredChanged();
92     void showArrivalsPreferredChanged();
93     void stationListSortingModeChanged();
94 };
95
96 #endif // SETTINGS_H