20 #include <QtCore/QCoreApplication> 21 #include <QtCore/QDir> 22 #include <QtGui/QIcon> 23 #include <QtQml/QQmlEngine> 24 #include <QStandardPaths> 26 inline QString installRoot() {
27 static QString installRoot;
28 static bool installRootSet =
false;
29 if (!installRootSet) {
30 QString snapRoot = QFile::decodeName(qgetenv(
"SNAP"));
31 if (!snapRoot.isEmpty() && QCoreApplication::applicationDirPath() ==
32 QDir(snapRoot + QStringLiteral(
"/usr/bin")).canonicalPath()) {
33 installRoot = snapRoot;
34 }
else if (QCoreApplication::applicationDirPath() ==
35 QDir(QStringLiteral(
"/usr/bin")).canonicalPath()) {
36 installRoot = QStringLiteral(
"");
38 installRootSet =
true;
43 inline bool isRunningInstalled() {
44 return !installRoot().isNull();
47 inline QString buildDirectory() {
48 if (!qEnvironmentVariableIsEmpty(
"UNITY_BINARY_DIR"))
return qgetenv(
"UNITY_BINARY_DIR");
49 return QStringLiteral(
"/build/unity8-wkBWU2/unity8-8.15+17.04.20161215/obj-x86_64-linux-gnu");
52 inline QString sourceDirectory() {
53 if (!qEnvironmentVariableIsEmpty(
"UNITY_SOURCE_DIR"))
return qgetenv(
"UNITY_SOURCE_DIR");
54 return QStringLiteral(
"/build/unity8-wkBWU2/unity8-8.15+17.04.20161215");
57 inline QString translationDirectory() {
58 if (isRunningInstalled()) {
59 return installRoot() + QStringLiteral(
"/usr/share/locale");
61 return buildDirectory() + QStringLiteral(
"/po/locale");
65 inline QString qmlDirectory() {
66 if (isRunningInstalled()) {
67 return installRoot() + QStringLiteral(
"/usr/share/unity8/");
69 return sourceDirectory() + QStringLiteral(
"/qml");
73 inline QStringList overrideImportPaths() {
75 if (!isRunningInstalled()) {
76 paths << buildDirectory() + QStringLiteral(
"/plugins");
81 inline QStringList nonMirImportPaths() {
83 if (isRunningInstalled()) {
84 paths << installRoot() + QStringLiteral(
"/usr/lib/x86_64-linux-gnu/unity8/qml/nonmirplugins");
86 paths << buildDirectory() + QStringLiteral(
"/nonmirplugins");
91 inline QStringList fallbackImportPaths() {
93 if (isRunningInstalled()) {
94 paths << installRoot() + QStringLiteral(
"/usr/lib/x86_64-linux-gnu/unity8/qml");
95 paths << installRoot() + QStringLiteral(
"/usr/lib/x86_64-linux-gnu/ubuntu-system-settings/private");
96 paths << installRoot() + QStringLiteral(
"/usr/lib/x86_64-linux-gnu/unity8/qml");
97 paths << installRoot() + QStringLiteral(
"/usr/lib/x86_64-linux-gnu/unity8/qml/mocks");
99 paths << QStringLiteral(
"/usr/lib/x86_64-linux-gnu/ubuntu-system-settings/private");
100 paths << QStringLiteral(
"/usr/lib/x86_64-linux-gnu/unity8/qml");
101 paths << buildDirectory() + QStringLiteral(
"/tests/mocks");
106 inline QString mockPluginsDir() {
107 if (isRunningInstalled()) {
108 return installRoot() + QStringLiteral(
"/usr/lib/x86_64-linux-gnu/unity8/qml/mocks");
110 return buildDirectory() + QStringLiteral(
"/tests/mocks");
114 inline QStringList shellDataDirs() {
115 QStringList dirs = QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation);
116 if (isRunningInstalled()) {
118 dirs.append(qmlDirectory());
123 inline void prependImportPaths(QQmlEngine *engine,
const QStringList &paths)
125 QStringList importPathList = engine->importPathList();
126 for (
int i = paths.count() -1; i >= 0; i--) {
128 const QString& path = paths[i];
129 QStringList::iterator iter = qFind(importPathList.begin(), importPathList.end(), path);
130 if (iter == importPathList.end()) {
131 engine->addImportPath(path);
139 inline void appendImportPaths(QQmlEngine *engine,
const QStringList &paths)
141 QStringList importPathList = engine->importPathList();
142 Q_FOREACH(
const QString& path, paths) {
144 QStringList::iterator iter = qFind(importPathList.begin(), importPathList.end(), path);
145 if (iter == importPathList.end()) {
146 importPathList.append(path);
149 engine->setImportPathList(importPathList);