Utils: Replace FileName::FileName(QFileInfo) by a named constructor

More consistent with the fromString case and avoiding false
conversions QString -> QFileInfo -> FileName in case the
inheritance of QString suddenly disappears.

Change-Id: Ib14646ab1a660fd45dd1ea6862a0b5faa52ad0e3
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
hjk
2019-05-10 13:18:37 +02:00
parent dd304fc824
commit 8b532c2cc5
13 changed files with 21 additions and 19 deletions

View File

@@ -94,7 +94,7 @@ static FileName findQmakeInDir(const FileName &path)
if (fi.fileName() == qmake)
continue;
if (isQmake(fi.absoluteFilePath()))
return FileName(fi);
return FileName::fromFileInfo(fi);
}
return FileName();
}

View File

@@ -641,9 +641,9 @@ FileName::FileName()
}
/// Constructs a FileName from \a info
FileName::FileName(const QFileInfo &info)
: QString(info.absoluteFilePath())
FileName FileName::fromFileInfo(const QFileInfo &info)
{
return FileName::fromString(info.absoluteFilePath());
}
/// \returns a QFileInfo

View File

@@ -64,14 +64,16 @@ class QTCREATOR_UTILS_EXPORT FileName : private QString
{
public:
FileName();
explicit FileName(const QFileInfo &info);
QFileInfo toFileInfo() const;
static FileName fromString(const QString &filename);
static FileName fromFileInfo(const QFileInfo &info);
static FileName fromStringWithExtension(const QString &filename, const QString &defaultExtension);
static FileName fromLatin1(const QByteArray &filename);
static FileName fromUserInput(const QString &filename);
static FileName fromUtf8(const char *filename, int filenameSize = -1);
const QString &toString() const;
QFileInfo toFileInfo() const;
QString toUserOutput() const;
QString fileName(int pathComponents = 0) const;
bool exists() const;

View File

@@ -283,7 +283,7 @@ int ReadOnlyFilesDialog::exec()
result = static_cast<ReadOnlyResult>(buttongroup.group->checkedId());
switch (result) {
case RO_MakeWritable:
if (!Utils::FileUtils::makeWritable(Utils::FileName(QFileInfo(buttongroup.fileName)))) {
if (!Utils::FileUtils::makeWritable(Utils::FileName::fromFileInfo(buttongroup.fileName))) {
failedToMakeWritable << buttongroup.fileName;
continue;
}
@@ -403,7 +403,7 @@ void ReadOnlyFilesDialogPrivate::initDialog(const QStringList &fileNames)
auto item = new QTreeWidgetItem(ui.treeWidget);
item->setText(FileName, visibleName);
item->setIcon(FileName, FileIconProvider::icon(fileName));
item->setText(Folder, Utils::FileUtils::shortNativePath(Utils::FileName(QFileInfo(directory))));
item->setText(Folder, Utils::FileUtils::shortNativePath(Utils::FileName::fromFileInfo(directory)));
auto radioButtonGroup = new QButtonGroup;
// Add a button for opening the file with a version control system

View File

@@ -153,7 +153,7 @@ QList<LocatorFilterEntry> BaseFileFilter::matchesFor(QFutureInterface<LocatorFil
QFileInfo fi(path);
LocatorFilterEntry filterEntry(this, fi.fileName(), QString(path + fp.postfix));
filterEntry.fileName = path;
filterEntry.extraInfo = FileUtils::shortNativePath(FileName(fi));
filterEntry.extraInfo = FileUtils::shortNativePath(FileName::fromFileInfo(fi));
const int matchLevel = matchLevelFor(match, matchText);
if (hasPathSeparator) {

View File

@@ -653,7 +653,7 @@ void DebuggerItemManagerPrivate::autoDetectCdbDebuggers()
// Pre Windows SDK 8: Check 'Debugging Tools for Windows'
for (const QFileInfo &fi : dir.entryInfoList({"Debugging Tools for Windows*"},
QDir::Dirs | QDir::NoDotAndDotDot)) {
FileName filePath(fi);
FileName filePath = FileName::fromFileInfo(fi);
filePath.appendPath("cdb.exe");
if (!cdbs.contains(filePath))
cdbs.append(filePath);

View File

@@ -91,11 +91,11 @@ void XcodeProbe::setupDefaultToolchains(const QString &devPath)
const QFileInfo clangCInfo = getClangInfo("clang");
if (clangCInfo.exists())
clangProfile.cCompilerPath = Utils::FileName(clangCInfo);
clangProfile.cCompilerPath = Utils::FileName::fromFileInfo(clangCInfo);
const QFileInfo clangCppInfo = getClangInfo("clang++");
if (clangCppInfo.exists())
clangProfile.cxxCompilerPath = Utils::FileName(clangCppInfo);
clangProfile.cxxCompilerPath = Utils::FileName::fromFileInfo(clangCppInfo);
QSet<QString> allArchitectures;
static const std::map<QString, QStringList> sdkConfigs {

View File

@@ -190,7 +190,7 @@ void GnuMakeParser::taskAdded(const Task &task, int linkedLines, int skippedLine
}
}
if (possibleFiles.size() == 1)
editable.file = Utils::FileName(possibleFiles.first());
editable.file = Utils::FileName::fromFileInfo(possibleFiles.first());
// Let the Makestep apply additional heuristics (based on
// files in ther project) if we cannot uniquely
// identify the file!

View File

@@ -128,7 +128,7 @@ void SelectableFilesFromDirModel::buildTree(const Utils::FileName &baseDir, Tree
bool allChecked = true;
bool allUnchecked = true;
for (const QFileInfo &fileInfo : fileInfoList) {
Utils::FileName fn = Utils::FileName(fileInfo);
Utils::FileName fn = Utils::FileName::fromFileInfo(fileInfo);
if (m_futureCount % 100) {
emit parsingProgress(fn);
if (fi.isCanceled())

View File

@@ -260,7 +260,7 @@ static FileName findQMakeBinaryFromMakefile(const QString &makefile)
// Is qmake still installed?
QFileInfo fi(qmakePath);
if (fi.exists())
return FileName(fi);
return FileName::fromFileInfo(fi);
}
}
}

View File

@@ -280,7 +280,7 @@ QSet<FileName> QmakePriFile::recursiveEnumerate(const QString &folder)
if (file.isDir() && !file.isSymLink())
result += recursiveEnumerate(file.absoluteFilePath());
else if (!Core::EditorManager::isAutoSaveFile(file.fileName()))
result += FileName(file);
result += FileName::fromFileInfo(file);
}
return result;
}

View File

@@ -1819,7 +1819,7 @@ FileNameList BaseQtVersion::qtCorePaths() const
&& file.startsWith("QtCore")
&& file.endsWith(".framework")) {
// handle Framework
FileName lib(info);
FileName lib = FileName::fromFileInfo(info);
dynamicLibs.append(lib.appendPath(file.left(file.lastIndexOf('.'))));
} else if (info.isReadable()) {
if (file.startsWith("libQtCore")
@@ -1827,12 +1827,12 @@ FileNameList BaseQtVersion::qtCorePaths() const
|| file.startsWith("QtCore")
|| file.startsWith("Qt5Core")) {
if (file.endsWith(".a") || file.endsWith(".lib"))
staticLibs.append(FileName(info));
staticLibs.append(FileName::fromFileInfo(info));
else if (file.endsWith(".dll")
|| file.endsWith(QString::fromLatin1(".so.") + versionString)
|| file.endsWith(".so")
|| file.endsWith(QLatin1Char('.') + versionString + ".dylib"))
dynamicLibs.append(FileName(info));
dynamicLibs.append(FileName::fromFileInfo(info));
}
}
}

View File

@@ -128,7 +128,7 @@ void UpdateInfoPlugin::startCheckForUpdates()
d->m_checkUpdatesCommand->setDisplayName(tr("Checking for Updates"));
connect(d->m_checkUpdatesCommand, &ShellCommand::stdOutText, this, &UpdateInfoPlugin::collectCheckForUpdatesOutput);
connect(d->m_checkUpdatesCommand, &ShellCommand::finished, this, &UpdateInfoPlugin::checkForUpdatesFinished);
d->m_checkUpdatesCommand->addJob(Utils::FileName(QFileInfo(d->m_maintenanceTool)), QStringList(QLatin1String("--checkupdates")),
d->m_checkUpdatesCommand->addJob(Utils::FileName::fromFileInfo(d->m_maintenanceTool), {"--checkupdates"},
60 * 3, // 3 minutes timeout
/*workingDirectory=*/QString(),
[](int /*exitCode*/) { return Utils::SynchronousProcessResponse::Finished; });