libosmscout  1.1.1
Settings.h
Go to the documentation of this file.
1 #ifndef OSMSCOUT_CLIENT_QT_SETTINGS_H
2 #define OSMSCOUT_CLIENT_QT_SETTINGS_H
3 
4 /*
5  OSMScout - a Qt backend for libosmscout and libosmscout-map
6  Copyright (C) 2013 Tim Teulings
7 
8  This library is free software; you can redistribute it and/or
9  modify it under the terms of the GNU Lesser General Public
10  License as published by the Free Software Foundation; either
11  version 2.1 of the License, or (at your option) any later version.
12 
13  This library 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  Lesser General Public License for more details.
17 
18  You should have received a copy of the GNU Lesser General Public
19  License along with this library; if not, write to the Free Software
20  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 */
22 
23 #include <memory>
24 
25 #include <QSettings>
26 
28 #include <osmscout/InputHandler.h>
30 #include <osmscout/MapProvider.h>
31 #include <osmscout/VoiceProvider.h>
32 
34 
35 // this variable should be defined by build system
36 #ifndef LIBOSMSCOUT_VERSION_STRING
37 #define LIBOSMSCOUT_VERSION_STRING "v?"
38 #endif
39 
40 namespace osmscout {
41 
56 class OSMSCOUT_CLIENT_QT_API Settings: public QObject
57 {
58  Q_OBJECT
59  Q_PROPERTY(double mapDPI READ GetMapDPI WRITE SetMapDPI NOTIFY MapDPIChange)
60  Q_PROPERTY(bool onlineTiles READ GetOnlineTilesEnabled WRITE SetOnlineTilesEnabled NOTIFY OnlineTilesEnabledChanged)
61  Q_PROPERTY(QString onlineTileProviderId READ GetOnlineTileProviderId WRITE SetOnlineTileProviderId NOTIFY OnlineTileProviderIdChanged)
62  Q_PROPERTY(bool offlineMap READ GetOfflineMap WRITE SetOfflineMap NOTIFY OfflineMapChanged)
63  Q_PROPERTY(bool renderSea READ GetRenderSea WRITE SetRenderSea NOTIFY RenderSeaChanged)
64  Q_PROPERTY(QString styleSheetDirectory READ GetStyleSheetDirectory WRITE SetStyleSheetDirectory NOTIFY StyleSheetDirectoryChanged)
65  Q_PROPERTY(QString styleSheetFile READ GetStyleSheetFile WRITE SetStyleSheetFile NOTIFY StyleSheetFileChanged)
66  Q_PROPERTY(QString fontName READ GetFontName WRITE SetFontName NOTIFY FontNameChanged)
67  Q_PROPERTY(double fontSize READ GetFontSize WRITE SetFontSize NOTIFY FontSizeChanged)
68  Q_PROPERTY(bool showAltLanguage READ GetShowAltLanguage WRITE SetShowAltLanguage NOTIFY ShowAltLanguageChanged)
70  Q_PROPERTY(QString units READ GetUnits WRITE SetUnits NOTIFY UnitsChanged)
71  Q_PROPERTY(QString voiceLookupDirectory READ GetVoiceLookupDirectory WRITE SetVoiceLookupDirectory NOTIFY VoiceLookupDirectoryChanged)
72  Q_PROPERTY(QString voiceDir READ GetVoiceDir WRITE SetVoiceDir NOTIFY VoiceDirChanged)
73 
74 signals:
75  void MapDPIChange(double dpi);
76  void OnlineTilesEnabledChanged(bool);
77  void OnlineTileProviderIdChanged(const QString id);
78  void OnlineTileProviderChanged(const OnlineTileProvider &provider);
79  void OfflineMapChanged(bool);
80  void RenderSeaChanged(bool);
81  void StyleSheetDirectoryChanged(const QString dir);
82  void StyleSheetFileChanged(const QString file);
83  void VoiceLookupDirectoryChanged(const QString dir);
84  void VoiceDirChanged(const QString voice);
85  void FontNameChanged(const QString fontName);
86  void FontSizeChanged(double fontSize);
87  void ShowAltLanguageChanged(bool showAltLanguage);
88  void UnitsChanged(const QString units);
89 
90 private:
91  QSettings *storage;
92  double physicalDpi;
93  QMap<QString, OnlineTileProvider> onlineProviderMap;
94  QList<OnlineTileProvider> onlineProviders;
95  QList<MapProvider> mapProviders;
96  QList<VoiceProvider> voiceProviders;
97 
98 public:
99  Settings(QSettings *providedStorage=nullptr);
100  ~Settings() override;
101 
102  double GetPhysicalDPI() const;
103 
104  void SetMapDPI(double dpi);
105  double GetMapDPI() const;
106 
107  osmscout::Vehicle GetRoutingVehicle() const;
108  void SetRoutingVehicle(const osmscout::Vehicle& vehicle);
109 
110  bool GetOnlineTilesEnabled() const;
111  void SetOnlineTilesEnabled(bool b);
112 
113  const QList<OnlineTileProvider> GetOnlineProviders() const;
114  const OnlineTileProvider GetOnlineTileProvider() const;
115 
116  const QList<MapProvider> GetMapProviders() const;
117  const QList<VoiceProvider> GetVoiceProviders() const;
118 
119  const QString GetOnlineTileProviderId() const;
120  void SetOnlineTileProviderId(QString id);
121 
122  bool loadOnlineTileProviders(QString path);
123  bool loadMapProviders(QString path);
124  bool loadVoiceProviders(QString path);
125 
126  bool GetOfflineMap() const;
127  void SetOfflineMap(bool);
128 
129  bool GetRenderSea() const;
130  void SetRenderSea(bool);
131 
132  const QString GetStyleSheetDirectory() const;
133  void SetStyleSheetDirectory(const QString dir);
134 
135  const QString GetVoiceLookupDirectory() const;
136  void SetVoiceLookupDirectory(const QString &voiceLookupDirectory);
137 
138  const QString GetVoiceDir() const;
139  void SetVoiceDir(const QString &voice);
140 
141  const QString GetStyleSheetFile() const;
142  const QString GetStyleSheetAbsoluteFile() const;
143  void SetStyleSheetFile(const QString file);
144 
145  const std::unordered_map<std::string,bool> GetStyleSheetFlags(const QString styleSheetFile);
146  const std::unordered_map<std::string,bool> GetStyleSheetFlags();
147  void SetStyleSheetFlags(const QString styleSheetFile, std::unordered_map<std::string,bool> flags);
148  void SetStyleSheetFlags(std::unordered_map<std::string,bool> flags);
149 
150  QString GetFontName() const;
151  void SetFontName(const QString fontName);
152 
153  double GetFontSize() const;
154  void SetFontSize(double fontSize);
155 
156  bool GetShowAltLanguage() const;
157  void SetShowAltLanguage(bool showAltLanguage);
158 
159  const QString GetHttpCacheDir() const;
160 
161  const QByteArray GetCookieData() const;
162  void SetCookieData(QByteArray data);
163 
164  QString GetUnits() const;
165  void SetUnits(const QString units);
166 };
167 
171 using SettingsRef = std::shared_ptr<Settings>;
172 
192 class OSMSCOUT_CLIENT_QT_API QmlSettings: public QObject{
193  Q_OBJECT
194  Q_PROPERTY(double physicalDPI READ GetPhysicalDPI CONSTANT)
195  Q_PROPERTY(double mapDPI READ GetMapDPI WRITE SetMapDPI NOTIFY MapDPIChange)
196  Q_PROPERTY(bool onlineTiles READ GetOnlineTilesEnabled WRITE SetOnlineTilesEnabled NOTIFY OnlineTilesEnabledChanged)
197  Q_PROPERTY(QString onlineTileProviderId READ GetOnlineTileProviderId WRITE SetOnlineTileProviderId NOTIFY OnlineTileProviderIdChanged)
198  Q_PROPERTY(bool offlineMap READ GetOfflineMap WRITE SetOfflineMap NOTIFY OfflineMapChanged)
199  Q_PROPERTY(QString styleSheetFile READ GetStyleSheetFile WRITE SetStyleSheetFile NOTIFY StyleSheetFileChanged)
200  Q_PROPERTY(bool renderSea READ GetRenderSea WRITE SetRenderSea NOTIFY RenderSeaChanged)
201  Q_PROPERTY(QString fontName READ GetFontName WRITE SetFontName NOTIFY FontNameChanged)
202  Q_PROPERTY(double fontSize READ GetFontSize WRITE SetFontSize NOTIFY FontSizeChanged)
203  Q_PROPERTY(bool showAltLanguage READ GetShowAltLanguage WRITE SetShowAltLanguage NOTIFY ShowAltLanguageChanged)
205  Q_PROPERTY(QString units READ GetUnits WRITE SetUnits NOTIFY UnitsChanged)
206 
207 private:
208  SettingsRef settings;
209 
210 signals:
211  void MapDPIChange(double dpi);
212  void OnlineTilesEnabledChanged(bool enabled);
213  void OnlineTileProviderIdChanged(const QString id);
214  void OfflineMapChanged(bool);
215  void StyleSheetFileChanged(const QString file);
216  void RenderSeaChanged(bool);
217  void FontNameChanged(const QString fontName);
218  void FontSizeChanged(double fontSize);
219  void ShowAltLanguageChanged(bool showAltLanguage);
220  void UnitsChanged(const QString units);
221 
222 public:
223  QmlSettings();
224 
225  ~QmlSettings() override = default;
226 
227  double GetPhysicalDPI() const;
228 
229  void SetMapDPI(double dpi);
230  double GetMapDPI() const;
231 
232  bool GetOnlineTilesEnabled() const;
233  void SetOnlineTilesEnabled(bool b);
234 
235  const QString GetOnlineTileProviderId() const;
236  void SetOnlineTileProviderId(QString id);
237 
238  Q_INVOKABLE QString onlineProviderCopyright();
239 
240  bool GetOfflineMap() const;
241  void SetOfflineMap(bool);
242 
243  QString GetStyleSheetFile() const;
244  void SetStyleSheetFile(const QString file);
245 
246  bool GetRenderSea() const;
247  void SetRenderSea(bool);
248 
249  QString GetFontName() const;
250  void SetFontName(const QString fontName);
251 
252  double GetFontSize() const;
253  void SetFontSize(double fontSize);
254 
255  bool GetShowAltLanguage() const;
256  void SetShowAltLanguage(bool showAltLanguage);
257 
258  QString GetUnits() const;
259  void SetUnits(const QString units);
260 };
261 
262 }
263 
264 #endif
std::shared_ptr< Settings > SettingsRef
Definition: Settings.h:171
Definition: OnlineTileProvider.h:39
Definition: MapProvider.h:38
#define OSMSCOUT_CLIENT_QT_API
Definition: ClientQtImportExport.h:45
Definition: Settings.h:192
STL namespace.
Vehicle
Definition: OSMScoutTypes.h:55
Definition: Area.h:38
Definition: Settings.h:56
Definition: VoiceProvider.h:38