Search for exercises in XDG_DATA_DIRS for macos
AbandonedPublic

Authored by patrickelectric on Apr 23 2020, 10:19 AM.

Details

Reviewers
sandroandrade

Diff Detail

Repository
R163 Minuet
Lint
Lint Skipped
Unit
Unit Tests Skipped
Restricted Application added a project: KDE Edu. · View Herald TranscriptApr 23 2020, 10:19 AM
Restricted Application added a subscriber: kde-edu. · View Herald Transcript
patrickelectric requested review of this revision.Apr 23 2020, 10:19 AM
tcanabrava added a subscriber: tcanabrava.EditedApr 25 2020, 4:52 PM
QList<QString> populateDirs() {
    QList<QString> jsonDirs;
    const QString xdgDataDirsEnv = QFile::decodeName(qgetenv("XDG_DATA_DIRS"));
    if (xdgDataDirsEnv.isEmpty()) {
        return;
    }
    const auto parts = xdgDataDirsEnv.splitRef(QLatin1Char(':'), QString::SkipEmptyParts);
    // Normalize paths, skip relative paths
    for (const QStringRef &dir : parts) {
        if (dir.startsWith(QLatin1Char('/'))) {
            const QDir testDir(QDir(dir.toString()).absoluteFilePath(QStringLiteral("minuet/") + directoryName));
            if (testDir.exists()) {
                jsonDirs << testDir.absolutePath();
            }
        }
    }
    return jsonDirs;
}

#ifdef Q_OS_MACOS
    // Qt does not check XDG_DATA_DIRS for MACOS but KDE prefix.sh script sets it.
    // If AppDataLocation fail, we should give a shot and check XDG env variable
    if (jsonDirs.isEmpty()) {
            jsonDirs << populateDirs();
    }
#endif

?