QmlProjectManager: Even more FilePath use

Change-Id: I4990b9171598d7f277f8e8e5a2b3e0fb1a3375d0
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
hjk
2022-12-13 12:58:35 +01:00
parent 5c7c102f3e
commit 6a4123a96f
5 changed files with 43 additions and 32 deletions

View File

@@ -2,15 +2,21 @@
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
#include "qmlprojectfileformat.h"
#include "qmlprojectitem.h"
#include "filefilteritems.h"
#include <qmljs/qmljssimplereader.h>
#include <utils/filepath.h>
#include <QDebug>
#include <QVariant>
#include <memory>
using namespace Utils;
enum {
debug = false
};
@@ -108,7 +114,7 @@ std::unique_ptr<QmlProjectItem> QmlProjectFileFormat::parseProjectFile(const Uti
const auto targetDirectoryPropery = rootNode->property("targetDirectory");
if (targetDirectoryPropery.isValid())
projectItem->setTargetDirectory(targetDirectoryPropery.value.toString());
projectItem->setTargetDirectory(FilePath::fromVariant(targetDirectoryPropery.value));
const auto qtForMCUProperty = rootNode->property("qtForMCUs");
if (qtForMCUProperty.isValid() && qtForMCUProperty.value.toBool())

View File

@@ -8,10 +8,12 @@
#include <QDir>
using namespace Utils;
namespace QmlProjectManager {
// kind of initialization
void QmlProjectItem::setSourceDirectory(const QString &directoryPath)
void QmlProjectItem::setSourceDirectory(const FilePath &directoryPath)
{
if (m_sourceDirectory == directoryPath)
return;
@@ -19,7 +21,7 @@ void QmlProjectItem::setSourceDirectory(const QString &directoryPath)
m_sourceDirectory = directoryPath;
for (auto &fileFilter : m_content) {
fileFilter->setDefaultDirectory(directoryPath);
fileFilter->setDefaultDirectory(directoryPath.toFSPathString());
connect(fileFilter.get(),
&FileFilterBaseItem::filesChanged,
this,
@@ -27,7 +29,7 @@ void QmlProjectItem::setSourceDirectory(const QString &directoryPath)
}
}
void QmlProjectItem::setTargetDirectory(const QString &directoryPath)
void QmlProjectItem::setTargetDirectory(const FilePath &directoryPath)
{
m_targetDirectory = directoryPath;
}

View File

@@ -6,6 +6,7 @@
#include "filefilteritems.h"
#include <utils/environment.h>
#include <utils/filepath.h>
#include <QObject>
#include <QSet>
@@ -21,10 +22,10 @@ class QmlProjectItem : public QObject
Q_OBJECT
public:
QString sourceDirectory() const { return m_sourceDirectory; }
void setSourceDirectory(const QString &directoryPath);
QString targetDirectory() const { return m_targetDirectory; }
void setTargetDirectory(const QString &directoryPath);
const Utils::FilePath &sourceDirectory() const { return m_sourceDirectory; }
void setSourceDirectory(const Utils::FilePath &directoryPath);
const Utils::FilePath &targetDirectory() const { return m_targetDirectory; }
void setTargetDirectory(const Utils::FilePath &directoryPath);
bool qtForMCUs() const { return m_qtForMCUs; }
void setQtForMCUs(bool qtForMCUs);
@@ -80,8 +81,8 @@ signals:
void qmlFilesChanged(const QSet<QString> &, const QSet<QString> &);
protected:
QString m_sourceDirectory;
QString m_targetDirectory;
Utils::FilePath m_sourceDirectory;
Utils::FilePath m_targetDirectory;
QStringList m_importPaths;
QStringList m_fileSelectors;
bool m_multilanguageSupport;

View File

@@ -214,9 +214,9 @@ void QmlBuildSystem::parseProject(RefreshOptions options)
}
}
if (m_projectItem) {
m_projectItem->setSourceDirectory(canonicalProjectDir().toString());
m_projectItem->setSourceDirectory(canonicalProjectDir());
if (m_projectItem->targetDirectory().isEmpty())
m_projectItem->setTargetDirectory(canonicalProjectDir().toString());
m_projectItem->setTargetDirectory(canonicalProjectDir());
if (auto modelManager = QmlJS::ModelManagerInterface::instance()) {
QStringList files = m_projectItem->files();
@@ -415,23 +415,22 @@ void QmlBuildSystem::setMainFile(const QString &mainFilePath)
m_projectItem->setMainFile(mainFilePath);
}
Utils::FilePath QmlBuildSystem::targetDirectory() const
FilePath QmlBuildSystem::targetDirectory() const
{
if (DeviceTypeKitAspect::deviceTypeId(kit())
== ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE)
return canonicalProjectDir();
return m_projectItem ? Utils::FilePath::fromString(m_projectItem->targetDirectory())
: Utils::FilePath();
return m_projectItem ? m_projectItem->targetDirectory() : FilePath();
}
Utils::FilePath QmlBuildSystem::targetFile(const Utils::FilePath &sourceFile) const
FilePath QmlBuildSystem::targetFile(const FilePath &sourceFile) const
{
const QDir sourceDir(m_projectItem ? m_projectItem->sourceDirectory()
: canonicalProjectDir().toString());
const QDir targetDir(targetDirectory().toString());
const QString relative = sourceDir.relativeFilePath(sourceFile.toString());
return Utils::FilePath::fromString(QDir::cleanPath(targetDir.absoluteFilePath(relative)));
const FilePath sourceDir = m_projectItem ? m_projectItem->sourceDirectory()
: canonicalProjectDir();
const FilePath targetDir = targetDirectory();
const FilePath relative = sourceFile.relativePathFrom(sourceDir);
return targetDir.resolvePath(relative);
}
Utils::EnvironmentItems QmlBuildSystem::environment() const