This repository has been archived by the owner on Mar 4, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathquickextras.cpp
53 lines (45 loc) · 1.6 KB
/
quickextras.cpp
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
#include "qmlsingleton.h"
#include "qsortfilterproxymodelqmlextension.h"
#include "quickextras.h"
#include "svgimageprovider.h"
#include <QQmlFileSelector>
#include <QFileSelector>
#include <QGuiApplication>
#include <QScreen>
static void registerInQml();
static QObject *createQmlSingleton(QQmlEngine *qmlEngine, QJSEngine *jsEngine);
Q_COREAPP_STARTUP_FUNCTION(registerInQml)
void QuickExtras::setupEngine(QQmlEngine *engine)
{
auto dpi = QGuiApplication::primaryScreen()->devicePixelRatio();
QQmlFileSelector *selector = QQmlFileSelector::get(engine);
if(dpi >= 4.0)
selector->setExtraSelectors({"xxxhdpi"});
else if(dpi >= 3.0)
selector->setExtraSelectors({"xxhdpi"});
else if(dpi >= 2.0)
selector->setExtraSelectors({"xhdpi"});
else if(dpi >= 1.5)
selector->setExtraSelectors({"hdpi"});
else if(dpi >= 1.0)
selector->setExtraSelectors({"mdpi"});
else
selector->setExtraSelectors({"ldpi"});
engine->addImageProvider(QStringLiteral("svg"), new SvgImageProvider());
}
static void registerInQml()
{
qmlRegisterSingletonType<QmlSingleton>("de.skycoder42.quickextras", 2, 0, "QuickExtras", createQmlSingleton);
qmlRegisterExtendedType<QSortFilterProxyModel, QSortFilterProxyModelQmlExtension>("de.skycoder42.quickextras", 2, 0, "SortFilterProxyModel");
//qmlProtectModule("de.skycoder42.quickextras", 2);
}
static QObject *createQmlSingleton(QQmlEngine *qmlEngine, QJSEngine *jsEngine)
{
Q_UNUSED(qmlEngine)
Q_UNUSED(jsEngine)
return new QmlSingleton();
}
void QuickExtras::setHapticFeedbackProvider(const std::function<void ()> &triggerFeedback)
{
QmlSingleton::hapticFeedbackProvider = triggerFeedback;
}