forked from qt-creator/qt-creator
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:
@@ -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())
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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;
|
||||
|
@@ -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
|
||||
|
@@ -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"),
|
||||
|
Reference in New Issue
Block a user