• Skip to content
  • Skip to link menu
KDE API Documentation - ApplicationSettings.h Source File (GCompris-qt)
  • KDE Home
  • Contact Us
 

GCompris-qt

  • src
  • core
ApplicationSettings.h
1 /* GCompris - ApplicationSettingsDefault.cpp
2  *
3  * Copyright (C) 2014 Johnny Jazeix <jazeix@gmail.com>
4  *
5  * Authors:
6  * Johnny Jazeix <jazeix@gmail.com>
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 3 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
16  * GNU 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; if not, see <http://www.gnu.org/licenses/>.
20  */
21 
22 #ifndef APPLICATIONSETTINGS_H
23 #define APPLICATIONSETTINGS_H
24 
25 #include <qqml.h>
26 #include <QtCore/QObject>
27 #include <QQmlEngine>
28 #include <QUrl>
29 #include <QtGlobal>
30 #include <QDebug>
31 
32 #include <QSettings>
33 
34 #define GC_DEFAULT_LOCALE "system"
35 
63 class ApplicationSettings : public QObject
64 {
65  Q_OBJECT
66 
67  /* General group */
68 
73  Q_PROPERTY(bool showLockedActivities READ showLockedActivities WRITE setShowLockedActivities NOTIFY showLockedActivitiesChanged)
74 
75 
78  Q_PROPERTY(bool isAudioVoicesEnabled READ isAudioVoicesEnabled WRITE setIsAudioVoicesEnabled NOTIFY audioVoicesEnabledChanged)
79 
83  Q_PROPERTY(bool isAudioEffectsEnabled READ isAudioEffectsEnabled WRITE setIsAudioEffectsEnabled NOTIFY audioEffectsEnabledChanged)
84 
88  Q_PROPERTY(bool isFullscreen READ isFullscreen WRITE setFullscreen NOTIFY fullscreenChanged)
89 
94  Q_PROPERTY(bool isVirtualKeyboard READ isVirtualKeyboard WRITE setVirtualKeyboard NOTIFY virtualKeyboardChanged)
95 
99  Q_PROPERTY(QString locale READ locale WRITE setLocale NOTIFY localeChanged)
100 
104  Q_PROPERTY(QString font READ font WRITE setFont NOTIFY fontChanged)
105 
112  Q_PROPERTY(bool isEmbeddedFont READ isEmbeddedFont WRITE setIsEmbeddedFont NOTIFY embeddedFontChanged)
113 
120  Q_PROPERTY(quint32 fontCapitalization READ fontCapitalization WRITE setFontCapitalization NOTIFY fontCapitalizationChanged)
121 
129  Q_PROPERTY(bool isAutomaticDownloadsEnabled READ isAutomaticDownloadsEnabled WRITE setIsAutomaticDownloadsEnabled NOTIFY automaticDownloadsEnabledChanged)
130 
134  Q_PROPERTY(quint32 filterLevelMin READ filterLevelMin WRITE setFilterLevelMin NOTIFY filterLevelMinChanged)
135 
139  Q_PROPERTY(quint32 filterLevelMax READ filterLevelMax WRITE setFilterLevelMax NOTIFY filterLevelMaxChanged)
140 
144  Q_PROPERTY(bool isDemoMode READ isDemoMode WRITE setDemoMode NOTIFY demoModeChanged)
145 
149  Q_PROPERTY(bool isKioskMode READ isKioskMode WRITE setKioskMode NOTIFY kioskModeChanged)
150 
154  Q_PROPERTY(bool sectionVisible READ sectionVisible WRITE setSectionVisible NOTIFY sectionVisibleChanged)
155 
166  Q_PROPERTY(int baseFontSize READ baseFontSize WRITE setBaseFontSize NOTIFY baseFontSizeChanged)
167 
173  Q_PROPERTY(int baseFontSizeMin READ baseFontSizeMin CONSTANT)
174 
180  Q_PROPERTY(int baseFontSizeMax READ baseFontSizeMax CONSTANT)
181 
182  // admin group
183 
189  Q_PROPERTY(QString downloadServerUrl READ downloadServerUrl WRITE setDownloadServerUrl NOTIFY downloadServerUrlChanged)
190 
191  // internal group
192  Q_PROPERTY(quint32 exeCount READ exeCount WRITE setExeCount NOTIFY exeCountChanged)
193 
194  // no group
195  Q_PROPERTY(bool isBarHidden READ isBarHidden WRITE setBarHidden NOTIFY barHiddenChanged)
196 
197 public:
199  explicit ApplicationSettings(QObject *parent = 0);
200  ~ApplicationSettings();
201  static void init();
202  // It is not recommended to create a singleton of Qml Singleton registered
203  // object but we could not found a better way to let us access ApplicationInfo
204  // on the C++ side. All our test shows that it works.
205  static ApplicationSettings *getInstance() {
206  if(!m_instance) {
207  m_instance = new ApplicationSettings();
208  }
209  return m_instance;
210  }
211  static QObject *systeminfoProvider(QQmlEngine *engine,
212  QJSEngine *scriptEngine);
213 
214  bool showLockedActivities() const { return m_showLockedActivities; }
215  void setShowLockedActivities(const bool newMode) {
216  m_showLockedActivities = newMode;
217  emit showLockedActivitiesChanged();
218  }
219 
220  bool isAudioVoicesEnabled() const { return m_isAudioVoicesEnabled; }
221  void setIsAudioVoicesEnabled(const bool newMode) {
222  m_isAudioVoicesEnabled = newMode;
223  emit audioVoicesEnabledChanged();
224  }
225 
226  bool isAudioEffectsEnabled() const { return m_isAudioEffectsEnabled; }
227  void setIsAudioEffectsEnabled(const bool newMode) {
228  m_isAudioEffectsEnabled = newMode;
229  emit audioEffectsEnabledChanged();
230  }
231 
232  bool isFullscreen() const { return m_isFullscreen; }
233  void setFullscreen(const bool newMode) {
234  m_isFullscreen = newMode;
235  emit fullscreenChanged();
236  }
237 
238  bool isVirtualKeyboard() const { return m_isVirtualKeyboard; }
239  void setVirtualKeyboard(const bool newMode) {
240  m_isVirtualKeyboard = newMode;
241  emit virtualKeyboardChanged();
242  }
243 
244  QString locale() const {
245  return m_locale;
246  }
247  void setLocale(const QString newLocale) {
248  m_locale = newLocale;
249  emit localeChanged();
250  }
251 
252  QString font() const { return m_font; }
253  void setFont(const QString newFont) {
254  m_font = newFont;
255  emit fontChanged();
256  }
257 
258  bool isEmbeddedFont() const { return m_isEmbeddedFont; }
259  void setIsEmbeddedFont(const bool newIsEmbeddedFont) {
260  m_isEmbeddedFont = newIsEmbeddedFont;
261  emit embeddedFontChanged();
262  }
263 
264  quint32 fontCapitalization() const { return m_fontCapitalization; }
265  void setFontCapitalization(quint32 newFontCapitalization) {
266  m_fontCapitalization = newFontCapitalization;
267  emit fontCapitalizationChanged();
268  }
269 
270  bool isAutomaticDownloadsEnabled() const;
271  void setIsAutomaticDownloadsEnabled(const bool newIsAutomaticDownloadsEnabled);
272 
273  quint32 filterLevelMin() const { return m_filterLevelMin; }
274  void setFilterLevelMin(const quint32 newFilterLevelMin) {
275  m_filterLevelMin = newFilterLevelMin;
276  emit filterLevelMinChanged();
277  }
278 
279  quint32 filterLevelMax() const { return m_filterLevelMax; }
280  void setFilterLevelMax(const quint32 newFilterLevelMax) {
281  m_filterLevelMax = newFilterLevelMax;
282  emit filterLevelMaxChanged();
283  }
284 
285  bool isDemoMode() const { return m_isDemoMode; }
286  void setDemoMode(const bool newMode);
287 
288  bool isKioskMode() const { return m_isKioskMode; }
289  void setKioskMode(const bool newMode) {
290  m_isKioskMode = newMode;
291  emit kioskModeChanged();
292  }
293 
294  // Payment API
295  // Call a payment system to sync our demoMode state with it
296  void checkPayment();
297  // Called by the payment system
298  void bought(const bool isBought) {
299  if(m_isDemoMode != !isBought) {
300  m_isDemoMode = !isBought;
301  emit demoModeChanged();
302  }
303  }
304 
305  bool sectionVisible() const { return m_sectionVisible; }
306  void setSectionVisible(const bool newMode) {
307  qDebug() << "c++ setSectionVisible=" << newMode;
308  m_sectionVisible = newMode;
309  emit sectionVisibleChanged();
310  }
311 
312  QString downloadServerUrl() const { return m_downloadServerUrl; }
313  void setDownloadServerUrl(const QString newDownloadServerUrl) {
314  m_downloadServerUrl = newDownloadServerUrl;
315  emit downloadServerUrlChanged();
316  }
317 
318  quint32 exeCount() const { return m_exeCount; }
319  void setExeCount(const quint32 newExeCount) {
320  m_exeCount = newExeCount;
321  emit exeCountChanged();
322  }
323 
324  bool isBarHidden() const { return m_isBarHidden; }
325  void setBarHidden(const bool newBarHidden) {
326  m_isBarHidden = newBarHidden;
327  emit barHiddenChanged();
328  }
329 
330  int baseFontSize() const { return m_baseFontSize; }
331  void setBaseFontSize(const int newBaseFontSize) {
332  m_baseFontSize = qMax(qMin(newBaseFontSize, baseFontSizeMax()), baseFontSizeMin());
333  emit baseFontSizeChanged();
334  }
335 
336  int baseFontSizeMin() const { return m_baseFontSizeMin; }
337  int baseFontSizeMax() const { return m_baseFontSizeMax; }
338 
339 protected slots:
340 
341  Q_INVOKABLE void notifyShowLockedActivitiesChanged();
342  Q_INVOKABLE void notifyAudioVoicesEnabledChanged();
343  Q_INVOKABLE void notifyAudioEffectsEnabledChanged();
344  Q_INVOKABLE void notifyFullscreenChanged();
345  Q_INVOKABLE void notifyVirtualKeyboardChanged();
346  Q_INVOKABLE void notifyLocaleChanged();
347  Q_INVOKABLE void notifyFontChanged();
348  Q_INVOKABLE void notifyFontCapitalizationChanged();
349  Q_INVOKABLE void notifyEmbeddedFontChanged();
350  Q_INVOKABLE void notifyAutomaticDownloadsEnabledChanged();
351  Q_INVOKABLE void notifyFilterLevelMinChanged();
352  Q_INVOKABLE void notifyFilterLevelMaxChanged();
353  Q_INVOKABLE void notifyDemoModeChanged();
354  Q_INVOKABLE void notifyKioskModeChanged();
355  Q_INVOKABLE void notifySectionVisibleChanged();
356 
357  Q_INVOKABLE void notifyDownloadServerUrlChanged();
358 
359  Q_INVOKABLE void notifyExeCountChanged();
360 
361  Q_INVOKABLE void notifyBarHiddenChanged();
362 
363 public slots:
364  Q_INVOKABLE bool isFavorite(const QString &activity);
365  Q_INVOKABLE void setFavorite(const QString &activity, bool favorite);
366  Q_INVOKABLE void saveBaseFontSize();
368 
375  Q_INVOKABLE void saveActivityConfiguration(const QString &activity, const QVariantMap &data);
376 
383  Q_INVOKABLE QVariantMap loadActivityConfiguration(const QString &activity);
384 
385 signals:
386  void showLockedActivitiesChanged();
387  void audioVoicesEnabledChanged();
388  void audioEffectsEnabledChanged();
389  void fullscreenChanged();
390  void virtualKeyboardChanged();
391  void localeChanged();
392  void fontChanged();
393  void fontCapitalizationChanged();
394  void embeddedFontChanged();
395  void automaticDownloadsEnabledChanged();
396  void filterLevelMinChanged();
397  void filterLevelMaxChanged();
398  void demoModeChanged();
399  void kioskModeChanged();
400  void sectionVisibleChanged();
401  void baseFontSizeChanged();
402 
403  void downloadServerUrlChanged();
404 
405  void exeCountChanged();
406 
407  void barHiddenChanged();
408 
409 private:
410 
411  // Update in configuration the couple {key, value} in the group.
412  template<class T> void updateValueInConfig(const QString& group,
413  const QString& key, const T& value);
414 
415  static ApplicationSettings *m_instance;
416 
417  bool m_showLockedActivities;
418  bool m_isAudioVoicesEnabled;
419  bool m_isAudioEffectsEnabled;
420  bool m_isFullscreen;
421  bool m_isVirtualKeyboard;
422  bool m_isAutomaticDownloadsEnabled;
423  bool m_isEmbeddedFont;
424  quint32 m_fontCapitalization;
425  quint32 m_filterLevelMin;
426  quint32 m_filterLevelMax;
427  bool m_defaultCursor;
428  bool m_noCursor;
429  QString m_locale;
430  QString m_font;
431  bool m_isDemoMode;
432  bool m_isKioskMode;
433  bool m_sectionVisible;
434  int m_baseFontSize;
435  const int m_baseFontSizeMin;
436  const int m_baseFontSizeMax;
437 
438  QString m_downloadServerUrl;
439 
440  quint32 m_exeCount;
441 
442  bool m_isBarHidden;
443 
444  QSettings m_config;
445 };
446 
447 #endif // APPLICATIONSETTINGS_H
ApplicationSettings::saveActivityConfiguration
Q_INVOKABLE void saveActivityConfiguration(const QString &activity, const QVariantMap &data)
Stores per-activity configuration data for activity.
Definition: ApplicationSettings.cpp:310
ApplicationSettings::isEmbeddedFont
bool isEmbeddedFont
Whether currently active font is a shipped font (or a system font).
Definition: ApplicationSettings.h:112
ApplicationSettings::filterLevelMin
quint32 filterLevelMin
Minimum value for difficulty level filter.
Definition: ApplicationSettings.h:134
ApplicationSettings::isVirtualKeyboard
bool isVirtualKeyboard
Whether on-screen keyboard should be enabled per default in activities that use it.
Definition: ApplicationSettings.h:94
ApplicationSettings::loadActivityConfiguration
Q_INVOKABLE QVariantMap loadActivityConfiguration(const QString &activity)
Loads per-activity configuration data for activity.
Definition: ApplicationSettings.cpp:320
ApplicationSettings::locale
QString locale
Locale string for currently active language.
Definition: ApplicationSettings.h:99
ApplicationSettings::baseFontSizeMin
int baseFontSizeMin
Minimum allowed value for font-scaling.
Definition: ApplicationSettings.h:173
ApplicationSettings::baseFontSizeMax
int baseFontSizeMax
Maximum allowed value for font-scaling.
Definition: ApplicationSettings.h:180
ApplicationSettings::showLockedActivities
bool showLockedActivities
Whether to show locked activities.
Definition: ApplicationSettings.h:73
ApplicationSettings::isKioskMode
bool isKioskMode
Whether kiosk mode is currently active.
Definition: ApplicationSettings.h:149
ApplicationSettings::isFullscreen
bool isFullscreen
Whether GCompris should run in fullscreen mode.
Definition: ApplicationSettings.h:88
ApplicationSettings::isDemoMode
bool isDemoMode
Whether in demo mode.
Definition: ApplicationSettings.h:144
ApplicationSettings::isAutomaticDownloadsEnabled
bool isAutomaticDownloadsEnabled
Whether downloads/updates of resource files should be done automatically, without user-interaction...
Definition: ApplicationSettings.h:129
ApplicationSettings::fontCapitalization
quint32 fontCapitalization
Font Capitalization.
Definition: ApplicationSettings.h:120
ApplicationSettings::sectionVisible
bool sectionVisible
Whether the section selection row is visible in the menu view.
Definition: ApplicationSettings.h:154
ApplicationSettings::font
QString font
Currently selected font.
Definition: ApplicationSettings.h:104
ApplicationSettings::baseFontSize
int baseFontSize
Current base font-size used for font scaling.
Definition: ApplicationSettings.h:166
ApplicationSettings::downloadServerUrl
QString downloadServerUrl
Base-URL for resource downloads.
Definition: ApplicationSettings.h:189
ApplicationSettings::isAudioEffectsEnabled
bool isAudioEffectsEnabled
Whether audio effects should be enabled.
Definition: ApplicationSettings.h:83
ApplicationSettings
Singleton that contains GCompris' persistent settings.
Definition: ApplicationSettings.h:63
ApplicationSettings::filterLevelMax
quint32 filterLevelMax
Maximum value for difficulty level filter.
Definition: ApplicationSettings.h:139
ApplicationSettings::isAudioVoicesEnabled
bool isAudioVoicesEnabled
Whether audio voices/speech should be enabled.
Definition: ApplicationSettings.h:78
This file is part of the KDE documentation.
Documentation copyright © 1996-2015 The KDE developers.
Generated on Tue Jun 2 2015 21:47:47 by doxygen 1.8.9.1 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

GCompris-qt

Skip menu "GCompris-qt"
  • Main Page
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • File List
  • Modules

Class Picker

Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal