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

View File

@@ -12,6 +12,7 @@
//TESTED_COMPONENT=src/plugins/qmlprojectmanager/fileformat
using namespace QmlProjectManager;
using namespace Utils;
#define COMPARE_AS_SETS(actual, expected) \
do {\
@@ -39,7 +40,8 @@ tst_FileFormat::tst_FileFormat()
{
}
static QString testDataDir = QLatin1String(SRCDIR "/data");
const QString testDataDir = QLatin1String(SRCDIR "/data");
const FilePath testDataDirPath = FilePath::fromString(testDataDir);
static std::unique_ptr<QmlProjectItem> loadQmlProject(QString name, QString *error)
{
@@ -50,6 +52,7 @@ static std::unique_ptr<QmlProjectItem> loadQmlProject(QString name, QString *err
void tst_FileFormat::testFileFilter()
{
QString error;
//
// Search for qml files in directory + subdirectories
//
@@ -58,7 +61,7 @@ void tst_FileFormat::testFileFilter()
QVERIFY(project);
QVERIFY(error.isEmpty());
project->setSourceDirectory(testDataDir);
project->setSourceDirectory(testDataDirPath);
QStringList expectedFiles(QStringList() << testDataDir + "/file1.qml"
<< testDataDir + "/file2.qml"
@@ -74,7 +77,7 @@ void tst_FileFormat::testFileFilter()
QVERIFY(project);
QVERIFY(error.isEmpty());
project->setSourceDirectory(testDataDir);
project->setSourceDirectory(testDataDirPath);
QStringList expectedFiles(QStringList() << testDataDir + "/file1.qml"
<< testDataDir + "/file2.qml");
@@ -89,7 +92,7 @@ void tst_FileFormat::testFileFilter()
QVERIFY(project);
QVERIFY(error.isEmpty());
project->setSourceDirectory(testDataDir);
project->setSourceDirectory(testDataDirPath);
QStringList expectedFiles(QStringList() << testDataDir + "/subdir/file3.qml");
COMPARE_AS_SETS(project->files(), expectedFiles);
@@ -103,7 +106,7 @@ void tst_FileFormat::testFileFilter()
QVERIFY(project);
QVERIFY(error.isEmpty());
project->setSourceDirectory(testDataDir);
project->setSourceDirectory(testDataDirPath);
QStringList expectedFiles(QStringList() << testDataDir + "/file1.qml"
<< testDataDir + "/file2.qml"
@@ -120,7 +123,7 @@ void tst_FileFormat::testFileFilter()
QVERIFY(project);
QVERIFY(error.isEmpty());
project->setSourceDirectory(testDataDir);
project->setSourceDirectory(testDataDirPath);
QStringList expectedFiles(QStringList() << testDataDir + "/file1.qml"
<< testDataDir + "/file2.qml");
@@ -135,7 +138,7 @@ void tst_FileFormat::testFileFilter()
QVERIFY(project);
QVERIFY(error.isEmpty());
project->setSourceDirectory(testDataDir);
project->setSourceDirectory(testDataDirPath);
QStringList expectedFiles(QStringList() << testDataDir + "/image.gif");
COMPARE_AS_SETS(project->files(), expectedFiles);
@@ -149,7 +152,7 @@ void tst_FileFormat::testFileFilter()
QVERIFY(project);
QVERIFY(error.isEmpty());
project->setSourceDirectory(testDataDir);
project->setSourceDirectory(testDataDirPath);
QStringList expectedFiles(QStringList() << testDataDir + "/image.gif");
COMPARE_AS_SETS(project->files(), expectedFiles);
@@ -163,7 +166,7 @@ void tst_FileFormat::testFileFilter()
QVERIFY(project);
QVERIFY(error.isEmpty());
project->setSourceDirectory(testDataDir);
project->setSourceDirectory(testDataDirPath);
QStringList expectedFiles(QStringList() << testDataDir + "/image.gif");
COMPARE_AS_SETS(project->files(), expectedFiles);
@@ -180,7 +183,7 @@ void tst_FileFormat::testMatchesFile()
QVERIFY(project);
QVERIFY(error.isEmpty());
project->setSourceDirectory(testDataDir);
project->setSourceDirectory(testDataDirPath);
QVERIFY(project->matchesFile(testDataDir + "/file1.qml"));
QVERIFY(project->matchesFile(testDataDir + "/notyetexistingfile.qml"));
@@ -199,7 +202,7 @@ void tst_FileFormat::testLibraryPaths()
QVERIFY(project);
QVERIFY(error.isEmpty());
project->setSourceDirectory(testDataDir);
project->setSourceDirectory(testDataDirPath);
const QDir base(testDataDir);
const QStringList expectedPaths({base.relativeFilePath(SRCDIR "/otherLibrary"),