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
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
|
||||||
|
|
||||||
#include "qmlprojectfileformat.h"
|
#include "qmlprojectfileformat.h"
|
||||||
|
|
||||||
#include "qmlprojectitem.h"
|
#include "qmlprojectitem.h"
|
||||||
#include "filefilteritems.h"
|
#include "filefilteritems.h"
|
||||||
|
|
||||||
#include <qmljs/qmljssimplereader.h>
|
#include <qmljs/qmljssimplereader.h>
|
||||||
|
|
||||||
|
#include <utils/filepath.h>
|
||||||
|
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QVariant>
|
#include <QVariant>
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
|
using namespace Utils;
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
debug = false
|
debug = false
|
||||||
};
|
};
|
||||||
@@ -108,7 +114,7 @@ std::unique_ptr<QmlProjectItem> QmlProjectFileFormat::parseProjectFile(const Uti
|
|||||||
|
|
||||||
const auto targetDirectoryPropery = rootNode->property("targetDirectory");
|
const auto targetDirectoryPropery = rootNode->property("targetDirectory");
|
||||||
if (targetDirectoryPropery.isValid())
|
if (targetDirectoryPropery.isValid())
|
||||||
projectItem->setTargetDirectory(targetDirectoryPropery.value.toString());
|
projectItem->setTargetDirectory(FilePath::fromVariant(targetDirectoryPropery.value));
|
||||||
|
|
||||||
const auto qtForMCUProperty = rootNode->property("qtForMCUs");
|
const auto qtForMCUProperty = rootNode->property("qtForMCUs");
|
||||||
if (qtForMCUProperty.isValid() && qtForMCUProperty.value.toBool())
|
if (qtForMCUProperty.isValid() && qtForMCUProperty.value.toBool())
|
||||||
|
@@ -8,10 +8,12 @@
|
|||||||
|
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
|
|
||||||
|
using namespace Utils;
|
||||||
|
|
||||||
namespace QmlProjectManager {
|
namespace QmlProjectManager {
|
||||||
|
|
||||||
// kind of initialization
|
// kind of initialization
|
||||||
void QmlProjectItem::setSourceDirectory(const QString &directoryPath)
|
void QmlProjectItem::setSourceDirectory(const FilePath &directoryPath)
|
||||||
{
|
{
|
||||||
if (m_sourceDirectory == directoryPath)
|
if (m_sourceDirectory == directoryPath)
|
||||||
return;
|
return;
|
||||||
@@ -19,7 +21,7 @@ void QmlProjectItem::setSourceDirectory(const QString &directoryPath)
|
|||||||
m_sourceDirectory = directoryPath;
|
m_sourceDirectory = directoryPath;
|
||||||
|
|
||||||
for (auto &fileFilter : m_content) {
|
for (auto &fileFilter : m_content) {
|
||||||
fileFilter->setDefaultDirectory(directoryPath);
|
fileFilter->setDefaultDirectory(directoryPath.toFSPathString());
|
||||||
connect(fileFilter.get(),
|
connect(fileFilter.get(),
|
||||||
&FileFilterBaseItem::filesChanged,
|
&FileFilterBaseItem::filesChanged,
|
||||||
this,
|
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;
|
m_targetDirectory = directoryPath;
|
||||||
}
|
}
|
||||||
|
@@ -6,6 +6,7 @@
|
|||||||
#include "filefilteritems.h"
|
#include "filefilteritems.h"
|
||||||
|
|
||||||
#include <utils/environment.h>
|
#include <utils/environment.h>
|
||||||
|
#include <utils/filepath.h>
|
||||||
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QSet>
|
#include <QSet>
|
||||||
@@ -21,10 +22,10 @@ class QmlProjectItem : public QObject
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
QString sourceDirectory() const { return m_sourceDirectory; }
|
const Utils::FilePath &sourceDirectory() const { return m_sourceDirectory; }
|
||||||
void setSourceDirectory(const QString &directoryPath);
|
void setSourceDirectory(const Utils::FilePath &directoryPath);
|
||||||
QString targetDirectory() const { return m_targetDirectory; }
|
const Utils::FilePath &targetDirectory() const { return m_targetDirectory; }
|
||||||
void setTargetDirectory(const QString &directoryPath);
|
void setTargetDirectory(const Utils::FilePath &directoryPath);
|
||||||
|
|
||||||
bool qtForMCUs() const { return m_qtForMCUs; }
|
bool qtForMCUs() const { return m_qtForMCUs; }
|
||||||
void setQtForMCUs(bool qtForMCUs);
|
void setQtForMCUs(bool qtForMCUs);
|
||||||
@@ -80,8 +81,8 @@ signals:
|
|||||||
void qmlFilesChanged(const QSet<QString> &, const QSet<QString> &);
|
void qmlFilesChanged(const QSet<QString> &, const QSet<QString> &);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
QString m_sourceDirectory;
|
Utils::FilePath m_sourceDirectory;
|
||||||
QString m_targetDirectory;
|
Utils::FilePath m_targetDirectory;
|
||||||
QStringList m_importPaths;
|
QStringList m_importPaths;
|
||||||
QStringList m_fileSelectors;
|
QStringList m_fileSelectors;
|
||||||
bool m_multilanguageSupport;
|
bool m_multilanguageSupport;
|
||||||
|
@@ -214,9 +214,9 @@ void QmlBuildSystem::parseProject(RefreshOptions options)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (m_projectItem) {
|
if (m_projectItem) {
|
||||||
m_projectItem->setSourceDirectory(canonicalProjectDir().toString());
|
m_projectItem->setSourceDirectory(canonicalProjectDir());
|
||||||
if (m_projectItem->targetDirectory().isEmpty())
|
if (m_projectItem->targetDirectory().isEmpty())
|
||||||
m_projectItem->setTargetDirectory(canonicalProjectDir().toString());
|
m_projectItem->setTargetDirectory(canonicalProjectDir());
|
||||||
|
|
||||||
if (auto modelManager = QmlJS::ModelManagerInterface::instance()) {
|
if (auto modelManager = QmlJS::ModelManagerInterface::instance()) {
|
||||||
QStringList files = m_projectItem->files();
|
QStringList files = m_projectItem->files();
|
||||||
@@ -415,23 +415,22 @@ void QmlBuildSystem::setMainFile(const QString &mainFilePath)
|
|||||||
m_projectItem->setMainFile(mainFilePath);
|
m_projectItem->setMainFile(mainFilePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
Utils::FilePath QmlBuildSystem::targetDirectory() const
|
FilePath QmlBuildSystem::targetDirectory() const
|
||||||
{
|
{
|
||||||
if (DeviceTypeKitAspect::deviceTypeId(kit())
|
if (DeviceTypeKitAspect::deviceTypeId(kit())
|
||||||
== ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE)
|
== ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE)
|
||||||
return canonicalProjectDir();
|
return canonicalProjectDir();
|
||||||
|
|
||||||
return m_projectItem ? Utils::FilePath::fromString(m_projectItem->targetDirectory())
|
return m_projectItem ? m_projectItem->targetDirectory() : FilePath();
|
||||||
: Utils::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()
|
const FilePath sourceDir = m_projectItem ? m_projectItem->sourceDirectory()
|
||||||
: canonicalProjectDir().toString());
|
: canonicalProjectDir();
|
||||||
const QDir targetDir(targetDirectory().toString());
|
const FilePath targetDir = targetDirectory();
|
||||||
const QString relative = sourceDir.relativeFilePath(sourceFile.toString());
|
const FilePath relative = sourceFile.relativePathFrom(sourceDir);
|
||||||
return Utils::FilePath::fromString(QDir::cleanPath(targetDir.absoluteFilePath(relative)));
|
return targetDir.resolvePath(relative);
|
||||||
}
|
}
|
||||||
|
|
||||||
Utils::EnvironmentItems QmlBuildSystem::environment() const
|
Utils::EnvironmentItems QmlBuildSystem::environment() const
|
||||||
|
@@ -12,6 +12,7 @@
|
|||||||
//TESTED_COMPONENT=src/plugins/qmlprojectmanager/fileformat
|
//TESTED_COMPONENT=src/plugins/qmlprojectmanager/fileformat
|
||||||
|
|
||||||
using namespace QmlProjectManager;
|
using namespace QmlProjectManager;
|
||||||
|
using namespace Utils;
|
||||||
|
|
||||||
#define COMPARE_AS_SETS(actual, expected) \
|
#define COMPARE_AS_SETS(actual, expected) \
|
||||||
do {\
|
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)
|
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()
|
void tst_FileFormat::testFileFilter()
|
||||||
{
|
{
|
||||||
QString error;
|
QString error;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Search for qml files in directory + subdirectories
|
// Search for qml files in directory + subdirectories
|
||||||
//
|
//
|
||||||
@@ -58,7 +61,7 @@ void tst_FileFormat::testFileFilter()
|
|||||||
QVERIFY(project);
|
QVERIFY(project);
|
||||||
QVERIFY(error.isEmpty());
|
QVERIFY(error.isEmpty());
|
||||||
|
|
||||||
project->setSourceDirectory(testDataDir);
|
project->setSourceDirectory(testDataDirPath);
|
||||||
|
|
||||||
QStringList expectedFiles(QStringList() << testDataDir + "/file1.qml"
|
QStringList expectedFiles(QStringList() << testDataDir + "/file1.qml"
|
||||||
<< testDataDir + "/file2.qml"
|
<< testDataDir + "/file2.qml"
|
||||||
@@ -74,7 +77,7 @@ void tst_FileFormat::testFileFilter()
|
|||||||
QVERIFY(project);
|
QVERIFY(project);
|
||||||
QVERIFY(error.isEmpty());
|
QVERIFY(error.isEmpty());
|
||||||
|
|
||||||
project->setSourceDirectory(testDataDir);
|
project->setSourceDirectory(testDataDirPath);
|
||||||
|
|
||||||
QStringList expectedFiles(QStringList() << testDataDir + "/file1.qml"
|
QStringList expectedFiles(QStringList() << testDataDir + "/file1.qml"
|
||||||
<< testDataDir + "/file2.qml");
|
<< testDataDir + "/file2.qml");
|
||||||
@@ -89,7 +92,7 @@ void tst_FileFormat::testFileFilter()
|
|||||||
QVERIFY(project);
|
QVERIFY(project);
|
||||||
QVERIFY(error.isEmpty());
|
QVERIFY(error.isEmpty());
|
||||||
|
|
||||||
project->setSourceDirectory(testDataDir);
|
project->setSourceDirectory(testDataDirPath);
|
||||||
|
|
||||||
QStringList expectedFiles(QStringList() << testDataDir + "/subdir/file3.qml");
|
QStringList expectedFiles(QStringList() << testDataDir + "/subdir/file3.qml");
|
||||||
COMPARE_AS_SETS(project->files(), expectedFiles);
|
COMPARE_AS_SETS(project->files(), expectedFiles);
|
||||||
@@ -103,7 +106,7 @@ void tst_FileFormat::testFileFilter()
|
|||||||
QVERIFY(project);
|
QVERIFY(project);
|
||||||
QVERIFY(error.isEmpty());
|
QVERIFY(error.isEmpty());
|
||||||
|
|
||||||
project->setSourceDirectory(testDataDir);
|
project->setSourceDirectory(testDataDirPath);
|
||||||
|
|
||||||
QStringList expectedFiles(QStringList() << testDataDir + "/file1.qml"
|
QStringList expectedFiles(QStringList() << testDataDir + "/file1.qml"
|
||||||
<< testDataDir + "/file2.qml"
|
<< testDataDir + "/file2.qml"
|
||||||
@@ -120,7 +123,7 @@ void tst_FileFormat::testFileFilter()
|
|||||||
QVERIFY(project);
|
QVERIFY(project);
|
||||||
QVERIFY(error.isEmpty());
|
QVERIFY(error.isEmpty());
|
||||||
|
|
||||||
project->setSourceDirectory(testDataDir);
|
project->setSourceDirectory(testDataDirPath);
|
||||||
|
|
||||||
QStringList expectedFiles(QStringList() << testDataDir + "/file1.qml"
|
QStringList expectedFiles(QStringList() << testDataDir + "/file1.qml"
|
||||||
<< testDataDir + "/file2.qml");
|
<< testDataDir + "/file2.qml");
|
||||||
@@ -135,7 +138,7 @@ void tst_FileFormat::testFileFilter()
|
|||||||
QVERIFY(project);
|
QVERIFY(project);
|
||||||
QVERIFY(error.isEmpty());
|
QVERIFY(error.isEmpty());
|
||||||
|
|
||||||
project->setSourceDirectory(testDataDir);
|
project->setSourceDirectory(testDataDirPath);
|
||||||
|
|
||||||
QStringList expectedFiles(QStringList() << testDataDir + "/image.gif");
|
QStringList expectedFiles(QStringList() << testDataDir + "/image.gif");
|
||||||
COMPARE_AS_SETS(project->files(), expectedFiles);
|
COMPARE_AS_SETS(project->files(), expectedFiles);
|
||||||
@@ -149,7 +152,7 @@ void tst_FileFormat::testFileFilter()
|
|||||||
QVERIFY(project);
|
QVERIFY(project);
|
||||||
QVERIFY(error.isEmpty());
|
QVERIFY(error.isEmpty());
|
||||||
|
|
||||||
project->setSourceDirectory(testDataDir);
|
project->setSourceDirectory(testDataDirPath);
|
||||||
|
|
||||||
QStringList expectedFiles(QStringList() << testDataDir + "/image.gif");
|
QStringList expectedFiles(QStringList() << testDataDir + "/image.gif");
|
||||||
COMPARE_AS_SETS(project->files(), expectedFiles);
|
COMPARE_AS_SETS(project->files(), expectedFiles);
|
||||||
@@ -163,7 +166,7 @@ void tst_FileFormat::testFileFilter()
|
|||||||
QVERIFY(project);
|
QVERIFY(project);
|
||||||
QVERIFY(error.isEmpty());
|
QVERIFY(error.isEmpty());
|
||||||
|
|
||||||
project->setSourceDirectory(testDataDir);
|
project->setSourceDirectory(testDataDirPath);
|
||||||
|
|
||||||
QStringList expectedFiles(QStringList() << testDataDir + "/image.gif");
|
QStringList expectedFiles(QStringList() << testDataDir + "/image.gif");
|
||||||
COMPARE_AS_SETS(project->files(), expectedFiles);
|
COMPARE_AS_SETS(project->files(), expectedFiles);
|
||||||
@@ -180,7 +183,7 @@ void tst_FileFormat::testMatchesFile()
|
|||||||
QVERIFY(project);
|
QVERIFY(project);
|
||||||
QVERIFY(error.isEmpty());
|
QVERIFY(error.isEmpty());
|
||||||
|
|
||||||
project->setSourceDirectory(testDataDir);
|
project->setSourceDirectory(testDataDirPath);
|
||||||
|
|
||||||
QVERIFY(project->matchesFile(testDataDir + "/file1.qml"));
|
QVERIFY(project->matchesFile(testDataDir + "/file1.qml"));
|
||||||
QVERIFY(project->matchesFile(testDataDir + "/notyetexistingfile.qml"));
|
QVERIFY(project->matchesFile(testDataDir + "/notyetexistingfile.qml"));
|
||||||
@@ -199,7 +202,7 @@ void tst_FileFormat::testLibraryPaths()
|
|||||||
QVERIFY(project);
|
QVERIFY(project);
|
||||||
QVERIFY(error.isEmpty());
|
QVERIFY(error.isEmpty());
|
||||||
|
|
||||||
project->setSourceDirectory(testDataDir);
|
project->setSourceDirectory(testDataDirPath);
|
||||||
|
|
||||||
const QDir base(testDataDir);
|
const QDir base(testDataDir);
|
||||||
const QStringList expectedPaths({base.relativeFilePath(SRCDIR "/otherLibrary"),
|
const QStringList expectedPaths({base.relativeFilePath(SRCDIR "/otherLibrary"),
|
||||||
|
Reference in New Issue
Block a user