Kirigami2

settings.h
1 /*
2  * SPDX-FileCopyrightText: 2016 Marco Martin <[email protected]>
3  *
4  * SPDX-License-Identifier: LGPL-2.0-or-later
5  */
6 #ifndef SETTINGS_H
7 #define SETTINGS_H
8 
9 #include <QObject>
10 #include <QVariant>
11 
12 /**
13  * This class contains global kirigami settings about the current device setup
14  * It is exposed to QML as the singleton "Settings"
15  */
16 class Settings : public QObject
17 {
18  Q_OBJECT
19 
20  /**
21  * This property holds whether the system can dynamically enter and exit tablet mode
22  * (or the device is actually a tablet).
23  * This is the case for foldable convertibles and transformable laptops that support
24  * keyboard detachment.
25  */
26  Q_PROPERTY(bool tabletModeAvailable READ isTabletModeAvailable NOTIFY tabletModeAvailableChanged)
27 
28  /**
29  * This property holds whether the application is running on a small mobile device
30  * such as a mobile phone. This is used when we want to do specific adaptations to
31  * the UI for small screen form factors, such as having bigger touch areas.
32  */
33  Q_PROPERTY(bool isMobile READ isMobile NOTIFY isMobileChanged)
34 
35  /**
36  * This property holds whether the application is running on a device that is
37  * behaving like a tablet.
38  *
39  * @note This doesn't mean exactly a tablet form factor, but
40  * that the preferred input mode for the device is the touch screen
41  * and that pointer and keyboard are either secondary or not available.
42  */
43  Q_PROPERTY(bool tabletMode READ tabletMode NOTIFY tabletModeChanged)
44 
45  /**
46  * This property holds whether the system has a platform menu bar; e.g. a user is
47  * on macOS or has a global menu on KDE Plasma.
48  *
49  * @warning Android has a platform menu bar; which may not be what you expected.
50  */
52 
53  /**
54  * This property holds whether the user in this moment is interacting with the app
55  * with the touch screen.
56  */
57  Q_PROPERTY(bool hasTransientTouchInput READ hasTransientTouchInput NOTIFY hasTransientTouchInputChanged)
58 
59  /**
60  * This property holds the name of the QtQuickControls2 style the application is using,
61  * for instance org.kde.desktop, Plasma, Material, Universal etc
62  */
63  Q_PROPERTY(QString style READ style CONSTANT)
64 
65  // TODO: make this adapt without file watchers?
66  /**
67  * This property holds the number of lines of text the mouse wheel should scroll.
68  */
70 
71  /**
72  * This property holds the runtime information about the libraries in use.
73  *
74  * @since 5.52
75  * @since org.kde.kirigami 2.6
76  */
78 
79  /**
80  * This property holds the name of the application window icon.
81  * @see QGuiApplication::windowIcon()
82  *
83  * @since 5.62
84  * @since org.kde.kirigami 2.10
85  */
87 
88 public:
89  Settings(QObject *parent = nullptr);
90  ~Settings() override;
91 
92  void setTabletModeAvailable(bool mobile);
93  bool isTabletModeAvailable() const;
94 
95  void setIsMobile(bool mobile);
96  bool isMobile() const;
97 
98  void setTabletMode(bool tablet);
99  bool tabletMode() const;
100 
101  void setTransientTouchInput(bool touch);
102  bool hasTransientTouchInput() const;
103 
104  bool hasPlatformMenuBar() const;
105 
106  QString style() const;
107  void setStyle(const QString &style);
108 
109  int mouseWheelScrollLines() const;
110 
111  QStringList information() const;
112 
114 
115  static Settings *self();
116 
117 protected:
118  bool eventFilter(QObject *watched, QEvent *event) override;
119 
120 Q_SIGNALS:
121  void tabletModeAvailableChanged();
122  void tabletModeChanged();
123  void isMobileChanged();
124  void hasTransientTouchInputChanged();
125 
126 private:
127  QString m_style;
128  int m_scrollLines = 0;
129  bool m_tabletModeAvailable : 1;
130  bool m_mobile : 1;
131  bool m_tabletMode : 1;
132  bool m_hasTouchScreen : 1;
133  bool m_hasTransientTouchInput : 1;
134  bool m_hasPlatformMenuBar : 1;
135 };
136 
137 #endif
Q_OBJECTQ_OBJECT
This class contains global kirigami settings about the current device setup It is exposed to QML as t...
Definition: settings.h:16
Q_PROPERTY(...)
QVariant applicationWindowIcon
This property holds the name of the application window icon.
Definition: settings.h:86
bool isMobile
This property holds whether the application is running on a small mobile device such as a mobile phon...
Definition: settings.h:33
virtual bool event(QEvent *e)
QStringList information
This property holds the runtime information about the libraries in use.
Definition: settings.h:77
bool tabletMode
This property holds whether the application is running on a device that is behaving like a tablet.
Definition: settings.h:43
Q_SIGNALSQ_SIGNALS
int mouseWheelScrollLines
This property holds the number of lines of text the mouse wheel should scroll.
Definition: settings.h:69
bool hasTransientTouchInput
This property holds whether the user in this moment is interacting with the app with the touch screen...
Definition: settings.h:57
bool hasPlatformMenuBar
This property holds whether the system has a platform menu bar; e.g.
Definition: settings.h:51
bool tabletModeAvailable
This property holds whether the system can dynamically enter and exit tablet mode (or the device is a...
Definition: settings.h:26
QObject * parent() const const
QString style
This property holds the name of the QtQuickControls2 style the application is using,...
Definition: settings.h:63
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Tue Feb 7 2023 04:14:24 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.