-
Notifications
You must be signed in to change notification settings - Fork 56
/
Copy pathpermissionhelper.h
65 lines (54 loc) · 2.55 KB
/
permissionhelper.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#ifndef PERMISSIONHELPER_H
#define PERMISSIONHELPER_H
#include <QObject>
#include <QQmlEngine>
#include <QLoggingCategory>
Q_DECLARE_LOGGING_CATEGORY(dcPermissionHelper)
class PermissionHelper : public QObject
{
Q_OBJECT
Q_PROPERTY(PermissionStatus localNetworkPermission READ localNetworkPermission NOTIFY localNetworkPermissionChanged)
Q_PROPERTY(PermissionStatus bluetoothPermission READ bluetoothPermission NOTIFY bluetoothPermissionChanged)
Q_PROPERTY(PermissionStatus foregroundLocationPermission READ foregroundLocationPermission NOTIFY foregroundLocationPermissionChanged)
Q_PROPERTY(PermissionStatus backgroundLocationPermission READ backgroundLocationPermission NOTIFY backgroundLocationPermissionChanged)
Q_PROPERTY(PermissionStatus notificationsPermission READ notificationsPermission NOTIFY notificationsPermissionChanged)
public:
enum Permission {
PermissionNone = 0x00,
PermissionLocalNetwork = 0x01,
PermissionBluetooth = 0x02,
PermissionForegroundLocation = 0x04,
PermissionBackgroundLocation = 0x08,
PermissionNotifications = 0x10
};
Q_ENUM(Permission)
Q_DECLARE_FLAGS(Permissions, Permission)
Q_FLAG(Permissions)
enum PermissionStatus {
PermissionStatusNotDetermined,
PermissionStatusGranted,
PermissionStatusDenied,
};
Q_ENUM(PermissionStatus)
static QObject* permissionsHelperProvider(QQmlEngine *engine, QJSEngine *scriptEngine);
static PermissionHelper* instance();
virtual ~PermissionHelper() override = default;
virtual PermissionStatus localNetworkPermission() const { return PermissionStatusGranted; }
virtual PermissionStatus bluetoothPermission() const { return PermissionStatusGranted; }
virtual PermissionStatus foregroundLocationPermission() const { return PermissionStatusGranted; }
virtual PermissionStatus backgroundLocationPermission() const { return PermissionStatusGranted; }
virtual PermissionStatus notificationsPermission() const { return PermissionStatusGranted; }
Q_INVOKABLE virtual void requestPermission(Permission permission) { Q_UNUSED(permission) }
Q_INVOKABLE virtual void openPermissionSettings() {}
signals:
void localNetworkPermissionChanged();
void bluetoothPermissionChanged();
void foregroundLocationPermissionChanged();
void backgroundLocationPermissionChanged();
void notificationsPermissionChanged();
protected:
explicit PermissionHelper(QObject *parent = nullptr);
private:
static PermissionHelper *s_instance;
};
#endif // PERMISSIONHELPER_H