~mterry/+junk/u8

« back to all changes in this revision

Viewing changes to include/paths.h.in

Merge

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/*
2
 
 * Copyright (C) 2012 Canonical, Ltd.
3
 
 *
4
 
 * Authors:
5
 
 *  Ugo Riboni <ugo.riboni@canonical.com>
 
2
 * Copyright (C) 2012-2016 Canonical, Ltd.
6
3
 *
7
4
 * This program is free software; you can redistribute it and/or modify
8
5
 * it under the terms of the GNU General Public License as published by
17
14
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
18
15
 */
19
16
 
20
 
#ifndef PATHS_H
21
 
#define PATHS_H
 
17
#pragma once
22
18
 
23
19
// Qt
24
20
#include <QtCore/QCoreApplication>
27
23
#include <QtQml/QQmlEngine>
28
24
#include <QStandardPaths>
29
25
 
 
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("@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_BINDIR@")).canonicalPath()) {
 
33
            installRoot = snapRoot;
 
34
        } else if (QCoreApplication::applicationDirPath() ==
 
35
                   QDir(QStringLiteral("@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_BINDIR@")).canonicalPath()) {
 
36
            installRoot = QStringLiteral("");
 
37
        }
 
38
        installRootSet = true;
 
39
    }
 
40
    return installRoot;
 
41
}
 
42
 
30
43
inline bool isRunningInstalled() {
31
 
    static bool installed = (QCoreApplication::applicationDirPath() ==
32
 
                             QDir(QStringLiteral("@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_BINDIR@")).canonicalPath());
33
 
    return installed;
 
44
    return !installRoot().isNull();
34
45
}
35
46
 
36
47
inline QString buildDirectory() {
45
56
 
46
57
inline QString translationDirectory() {
47
58
    if (isRunningInstalled()) {
48
 
        return QStringLiteral("@CMAKE_INSTALL_PREFIX@/share/locale");
 
59
        return installRoot() + QStringLiteral("@CMAKE_INSTALL_PREFIX@/share/locale");
49
60
    } else {
50
 
        return QString(buildDirectory() + "/po/locale");
 
61
        return buildDirectory() + QStringLiteral("/po/locale");
51
62
    }
52
63
}
53
64
 
54
65
inline QString qmlDirectory() {
55
66
    if (isRunningInstalled()) {
56
 
        return QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_APP_DIR@/");
 
67
        return installRoot() + QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_APP_DIR@/");
57
68
    } else {
58
 
        return QString(sourceDirectory() + "/qml");
 
69
        return sourceDirectory() + QStringLiteral("/qml");
59
70
    }
60
71
}
61
72
 
62
73
inline QStringList overrideImportPaths() {
63
74
    QStringList paths;
64
75
    if (!isRunningInstalled()) {
65
 
        paths << QString(buildDirectory() + "/plugins");
 
76
        paths << buildDirectory() + QStringLiteral("/plugins");
66
77
    }
67
78
    return paths;
68
79
}
70
81
inline QStringList nonMirImportPaths() {
71
82
    QStringList paths;
72
83
    if (isRunningInstalled()) {
73
 
        paths << QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@/nonmirplugins");
 
84
        paths << installRoot() + QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@/nonmirplugins");
74
85
    } else {
75
 
        paths << QString(buildDirectory() + "/nonmirplugins");
 
86
        paths << buildDirectory() + QStringLiteral("/nonmirplugins");
76
87
    }
77
88
    return paths;
78
89
}
80
91
inline QStringList fallbackImportPaths() {
81
92
    QStringList paths;
82
93
    if (isRunningInstalled()) {
83
 
        paths << QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@");
84
 
        paths << QStringLiteral("@USS_PRIVATE_PLUGINDIR@");
85
 
        paths << QStringLiteral("@SHELL_PLUGINDIR@");
86
 
        paths << QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@/mocks");
 
94
        paths << installRoot() + QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@");
 
95
        paths << installRoot() + QStringLiteral("@USS_PRIVATE_PLUGINDIR@");
 
96
        paths << installRoot() + QStringLiteral("@SHELL_PLUGINDIR@");
 
97
        paths << installRoot() + QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@/mocks");
87
98
    } else {
88
99
        paths << QStringLiteral("@USS_PRIVATE_PLUGINDIR@");
89
100
        paths << QStringLiteral("@SHELL_PLUGINDIR@");
90
 
        paths << QString(buildDirectory() + "/tests/mocks");
 
101
        paths << buildDirectory() + QStringLiteral("/tests/mocks");
91
102
    }
92
103
    return paths;
93
104
}
94
105
 
95
106
inline QString mockPluginsDir() {
96
107
    if (isRunningInstalled()) {
97
 
        return QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@/mocks");
 
108
        return installRoot() + QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@/mocks");
98
109
    } else {
99
 
        return QString(buildDirectory() + "/tests/mocks");
 
110
        return buildDirectory() + QStringLiteral("/tests/mocks");
100
111
    }
101
112
}
102
113
 
137
148
    }
138
149
    engine->setImportPathList(importPathList);
139
150
}
140
 
 
141
 
#endif