int TileLoader::maximumTileLevel( GeoSceneTiled const & texture ) { // if maximum tile level is configured in the DGML files, // then use it, otherwise use old detection code. if ( texture.maximumTileLevel() >= 0 ) { return texture.maximumTileLevel(); } int maximumTileLevel = -1; const QFileInfo themeStr( texture.themeStr() ); const QString tilepath = themeStr.isAbsolute() ? themeStr.absoluteFilePath() : MarbleDirs::path( texture.themeStr() ); // mDebug() << "StackedTileLoader::maxPartialTileLevel tilepath" << tilepath; QStringList leveldirs = QDir( tilepath ).entryList( QDir::AllDirs | QDir::NoSymLinks | QDir::NoDotAndDotDot ); QStringList::const_iterator it = leveldirs.constBegin(); QStringList::const_iterator const end = leveldirs.constEnd(); for (; it != end; ++it ) { bool ok = true; const int value = (*it).toInt( &ok, 10 ); if ( ok && value > maximumTileLevel ) maximumTileLevel = value; } // mDebug() << "Detected maximum tile level that contains data: " // << maxtilelevel; return maximumTileLevel + 1; }
void PlaylistImporter::fixFilePath(QFileInfo &filename, const QDir &baseDir, const QDir &rootDir) { if(filename.filePath().startsWith("/")) { while(filename.filePath().startsWith("/")) { filename.setFile(filename.filePath().mid(1)); } filename.setFile(rootDir.filePath(filename.filePath())); } if(!filename.isAbsolute()) { filename.setFile(baseDir.filePath(filename.filePath())); } }
QString clangExecutableFromSettings(Core::Id toolchainType, bool *isValid) { QString executable = ClangStaticAnalyzerSettings::instance()->clangExecutable(); if (executable.isEmpty()) { *isValid = false; return executable; } const QString hostExeSuffix = QLatin1String(QTC_HOST_EXE_SUFFIX); const Qt::CaseSensitivity caseSensitivity = Utils::HostOsInfo::fileNameCaseSensitivity(); const bool hasSuffix = executable.endsWith(hostExeSuffix, caseSensitivity); if (toolchainType == ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID) { if (hasSuffix) executable.chop(hostExeSuffix.length()); executable.append(QLatin1String("-cl")); if (hasSuffix) executable.append(hostExeSuffix); } const QFileInfo fileInfo = QFileInfo(executable); if (fileInfo.isAbsolute()) { if (!hasSuffix) executable.append(hostExeSuffix); } else { const Utils::Environment &environment = Utils::Environment::systemEnvironment(); const QString executableFromPath = environment.searchInPath(executable).toString(); if (executableFromPath.isEmpty()) { *isValid = false; return executable; } executable = executableFromPath; } *isValid = isFileExecutable(executable) && isClangExecutableUsable(executable); return executable; }
static void parse_command(QString cmdline, const QString &id, const QString &whichCommand, QString *command, QStringList *prefix, QStringList *suffix, ArchiveDefinition::ArgumentPassingMethod *method, bool parseFilePlaceholder) { Q_ASSERT(prefix); Q_ASSERT(suffix); Q_ASSERT(method); KShell::Errors errors; QStringList l; if (cmdline.startsWith(NULL_SEPARATED_STDIN_INDICATOR)) { *method = ArchiveDefinition::NullSeparatedInputFile; cmdline.remove(0, 2); } else if (cmdline.startsWith(NEWLINE_SEPARATED_STDIN_INDICATOR)) { *method = ArchiveDefinition::NewlineSeparatedInputFile; cmdline.remove(0, 1); } else { *method = ArchiveDefinition::CommandLine; } if (*method != ArchiveDefinition::CommandLine && cmdline.contains(FILE_PLACEHOLDER)) { throw ArchiveDefinitionError(id, i18n("Cannot use both %f and | in '%1'", whichCommand)); } cmdline.replace(FILE_PLACEHOLDER, QLatin1String("__files_go_here__")) .replace(INSTALLPATH_PLACEHOLDER, QStringLiteral("__path_goes_here__")); l = KShell::splitArgs(cmdline, KShell::AbortOnMeta | KShell::TildeExpand, &errors); l = l.replaceInStrings(QStringLiteral("__files_go_here__"), FILE_PLACEHOLDER); if (l.indexOf(QRegExp(QLatin1String(".*__path_goes_here__.*"))) >= 0) { l = l.replaceInStrings(QStringLiteral("__path_goes_here__"), ArchiveDefinition::installPath()); } if (errors == KShell::BadQuoting) { throw ArchiveDefinitionError(id, i18n("Quoting error in '%1' entry", whichCommand)); } if (errors == KShell::FoundMeta) { throw ArchiveDefinitionError(id, i18n("'%1' too complex (would need shell)", whichCommand)); } qCDebug(KLEOPATRA_LOG) << "ArchiveDefinition[" << id << ']' << l; if (l.empty()) { throw ArchiveDefinitionError(id, i18n("'%1' entry is empty/missing", whichCommand)); } const QFileInfo fi1(l.front()); if (fi1.isAbsolute()) { *command = try_extensions(l.front()); } else { *command = QStandardPaths::findExecutable(fi1.fileName()); } if (command->isEmpty()) { throw ArchiveDefinitionError(id, i18n("'%1' empty or not found", whichCommand)); } if (parseFilePlaceholder) { const int idx1 = l.indexOf(FILE_PLACEHOLDER); if (idx1 < 0) { // none -> append *prefix = l.mid(1); } else { *prefix = l.mid(1, idx1 - 1); *suffix = l.mid(idx1 + 1); } } else { *prefix = l.mid(1); } switch (*method) { case ArchiveDefinition::CommandLine: qCDebug(KLEOPATRA_LOG) << "ArchiveDefinition[" << id << ']' << *command << *prefix << FILE_PLACEHOLDER << *suffix; break; case ArchiveDefinition::NewlineSeparatedInputFile: qCDebug(KLEOPATRA_LOG) << "ArchiveDefinition[" << id << ']' << "find | " << *command << *prefix; break; case ArchiveDefinition::NullSeparatedInputFile: qCDebug(KLEOPATRA_LOG) << "ArchiveDefinition[" << id << ']' << "find -print0 | " << *command << *prefix; break; case ArchiveDefinition::NumArgumentPassingMethods: Q_ASSERT(!"Should not happen"); break; } }