diff options
19 files changed, 463 insertions, 12 deletions
diff --git a/examples/quick/demos/samegame/content/+blackberry/settings.js b/examples/quick/demos/samegame/content/+blackberry/settings.js new file mode 100644 index 0000000000..a86d2a9a1a --- /dev/null +++ b/examples/quick/demos/samegame/content/+blackberry/settings.js @@ -0,0 +1,56 @@ +/**************************************************************************** +** +** Copyright (C) 2013 BlackBerry Limited. All rights reserved. +** Contact: http://www.qt-project.org/legal +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +.pragma library + +//This should be switched over once a proper QML settings API exists + +var menuDelay = 500 + +var headerHeight = 70 +var footerHeight = 100 + +var fontPixelSize = 55 + +var blockSize = 64 + +var toolButtonHeight = 64 + +var menuButtonSpacing = 15 diff --git a/examples/quick/demos/samegame/content/BlockEmitter.qml b/examples/quick/demos/samegame/content/BlockEmitter.qml index ba6261c8e6..49ee38d376 100644 --- a/examples/quick/demos/samegame/content/BlockEmitter.qml +++ b/examples/quick/demos/samegame/content/BlockEmitter.qml @@ -41,7 +41,7 @@ import QtQuick 2.0 import QtQuick.Particles 2.0 -import "../settings.js" as Settings +import "settings.js" as Settings Emitter { property Item block: parent diff --git a/examples/quick/demos/samegame/content/PaintEmitter.qml b/examples/quick/demos/samegame/content/PaintEmitter.qml index fe758af181..85d148de92 100644 --- a/examples/quick/demos/samegame/content/PaintEmitter.qml +++ b/examples/quick/demos/samegame/content/PaintEmitter.qml @@ -40,7 +40,7 @@ import QtQuick 2.0 import QtQuick.Particles 2.0 -import "../settings.js" as Settings +import "settings.js" as Settings Emitter { property Item block: parent diff --git a/examples/quick/demos/samegame/content/SamegameText.qml b/examples/quick/demos/samegame/content/SamegameText.qml index 28c85f9486..e3bee989fb 100644 --- a/examples/quick/demos/samegame/content/SamegameText.qml +++ b/examples/quick/demos/samegame/content/SamegameText.qml @@ -39,7 +39,7 @@ ****************************************************************************/ import QtQuick 2.0 -import "../settings.js" as Settings +import "settings.js" as Settings Text { font.pixelSize: Settings.fontPixelSize; diff --git a/examples/quick/demos/samegame/content/samegame.js b/examples/quick/demos/samegame/content/samegame.js index 6bf402ed0a..5bb24d70db 100755 --- a/examples/quick/demos/samegame/content/samegame.js +++ b/examples/quick/demos/samegame/content/samegame.js @@ -41,7 +41,7 @@ /* This script file handles the game logic */ .pragma library .import QtQuick.LocalStorage 2.0 as Sql -.import "../settings.js" as Settings +.import "settings.js" as Settings var maxColumn = 10; var maxRow = 13; diff --git a/examples/quick/demos/samegame/settings.js b/examples/quick/demos/samegame/content/settings.js index e09dee9af3..e09dee9af3 100644 --- a/examples/quick/demos/samegame/settings.js +++ b/examples/quick/demos/samegame/content/settings.js diff --git a/examples/quick/demos/samegame/samegame.qml b/examples/quick/demos/samegame/samegame.qml index 8712141509..23cdf94acc 100644 --- a/examples/quick/demos/samegame/samegame.qml +++ b/examples/quick/demos/samegame/samegame.qml @@ -41,7 +41,7 @@ import QtQuick 2.0 import QtQuick.Particles 2.0 import "content/samegame.js" as Logic -import "settings.js" as Settings +import "content/settings.js" as Settings import "content" Rectangle { diff --git a/examples/quick/demos/samegame/samegame.qrc b/examples/quick/demos/samegame/samegame.qrc index 951b9d116c..40b7cb6478 100644 --- a/examples/quick/demos/samegame/samegame.qrc +++ b/examples/quick/demos/samegame/samegame.qrc @@ -1,7 +1,8 @@ <RCC> <qresource prefix="/demos/samegame"> <file>samegame.qml</file> - <file>settings.js</file> + <file>content/settings.js</file> + <file>content/+blackberry/settings.js</file> <file>content/gfx/text-p1-won.png</file> <file>content/gfx/background-puzzle.png</file> <file>content/gfx/background.png</file> diff --git a/examples/quick/shared/shared.h b/examples/quick/shared/shared.h index 648b2944b7..5cf1333c02 100644 --- a/examples/quick/shared/shared.h +++ b/examples/quick/shared/shared.h @@ -40,7 +40,8 @@ #include <QDir> #include <QGuiApplication> #include <QQmlEngine> -#include <QQuickView> +#include <QQmlFileSelector> +#include <QQuickView> //Not using QQmlApplicationEngine because many examples don't have a Window{} #define DECLARATIVE_EXAMPLE_MAIN(NAME) int main(int argc, char* argv[]) \ {\ QGuiApplication app(argc,argv);\ @@ -49,6 +50,7 @@ app.setApplicationName(QFileInfo(app.applicationFilePath()).baseName());\ QQuickView view;\ view.connect(view.engine(), SIGNAL(quit()), &app, SLOT(quit()));\ + view.engine()->setUrlInterceptor(new QQmlFileSelector(&view));\ view.setSource(QUrl("qrc:///" #NAME ".qml")); \ view.setResizeMode(QQuickView::SizeRootObjectToView);\ if (QGuiApplication::platformName() == QLatin1String("qnx") || \ diff --git a/src/qml/qml/qml.pri b/src/qml/qml/qml.pri index 8dfe0f1d3b..29c007ad07 100644 --- a/src/qml/qml/qml.pri +++ b/src/qml/qml/qml.pri @@ -54,7 +54,8 @@ SOURCES += \ $$PWD/qqmllistwrapper.cpp \ $$PWD/qqmlcontextwrapper.cpp \ $$PWD/qqmlvaluetypewrapper.cpp \ - $$PWD/qqmltypewrapper.cpp + $$PWD/qqmltypewrapper.cpp \ + $$PWD/qqmlfileselector.cpp HEADERS += \ $$PWD/qqmlglobal_p.h \ @@ -130,7 +131,9 @@ HEADERS += \ $$PWD/qqmllistwrapper_p.h \ $$PWD/qqmlcontextwrapper_p.h \ $$PWD/qqmlvaluetypewrapper_p.h \ - $$PWD/qqmltypewrapper_p.h + $$PWD/qqmltypewrapper_p.h \ + $$PWD/qqmlfileselector_p.h \ + $$PWD/qqmlfileselector.h include(ftw/ftw.pri) include(v8/v8.pri) diff --git a/src/qml/qml/qqmlapplicationengine.cpp b/src/qml/qml/qqmlapplicationengine.cpp index 85aeaf5786..3f13f8a140 100644 --- a/src/qml/qml/qqmlapplicationengine.cpp +++ b/src/qml/qml/qqmlapplicationengine.cpp @@ -44,6 +44,7 @@ #include <QQmlComponent> #include "qqmlapplicationengine.h" #include "qqmlapplicationengine_p.h" +#include "qqmlfileselector.h" QT_BEGIN_NAMESPACE @@ -76,6 +77,7 @@ void QQmlApplicationEnginePrivate::init() QCoreApplication::installTranslator(qtTranslator); translators << qtTranslator; #endif + q->setUrlInterceptor(new QQmlFileSelector(q)); QCoreApplication::instance()->setProperty("__qml_using_qqmlapplicationengine", QVariant(true)); } @@ -172,13 +174,12 @@ void QQmlApplicationEnginePrivate::_q_finishLoad(QObject *o) \li Connecting Qt.quit() to QCoreApplication::quit() \li Automatically loads translation files from an i18n directory adjacent to the main QML file. \li Automatically sets an incubuation controller if the scene contains a QQuickWindow. + \li Automatically sets a \c QQmlFileSelector as the url interceptor, applying file selectors to all + QML files and assets. \endlist The engine behavior can be further tweaked by using the inherited methods from QQmlEngine. - \note In the future QQmlApplicationEngine may automatically apply file selectors. - To ensure forwards compatibility, do not use folder names containing a '+' character in your QML file - structure. */ /*! diff --git a/src/qml/qml/qqmlapplicationengine_p.h b/src/qml/qml/qqmlapplicationengine_p.h index cc38c62c02..75d7cf768f 100644 --- a/src/qml/qml/qqmlapplicationengine_p.h +++ b/src/qml/qml/qqmlapplicationengine_p.h @@ -63,6 +63,7 @@ QT_BEGIN_NAMESPACE class QTranslator; +class QFileSelector; class Q_QML_PRIVATE_EXPORT QQmlApplicationEnginePrivate : public QQmlEnginePrivate { Q_DECLARE_PUBLIC(QQmlApplicationEngine) diff --git a/src/qml/qml/qqmlfileselector.cpp b/src/qml/qml/qqmlfileselector.cpp new file mode 100644 index 0000000000..5810e269eb --- /dev/null +++ b/src/qml/qml/qqmlfileselector.cpp @@ -0,0 +1,138 @@ +/**************************************************************************** +** +** Copyright (C) 2013 BlackBerry Limited. All rights reserved. +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtQml module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtCore/QFileSelector> +#include "qqmlfileselector.h" +#include "qqmlfileselector_p.h" + +QT_BEGIN_NAMESPACE + +/*! + \class QQmlFileSelector + \since 5.2 + \inmodule QtQml + \brief A convenience class for applying a QFileSelector to QML file loading + + QQmlFileSelector is a QQmlAbstractUrlInterceptor which will automatically apply a QFileSelector to + qml file and asset paths. + + It is used as follows: + + \code + QQmlEngine engine; + QQmlFileSelector selector; + engine.setUrlInterceptor(&selector); + \endcode + + Then you can swap out files like so: + \code + main.qml + Component.qml + asset.png + +unix/Component.qml + +mac/asset.png + \endcode + + In this example, main.qml will normally use Component.qml for the Component type. However on a + unix platform, the unix selector will be present and the +unix/Component.qml version will be + used instead. Note that this acts like swapping out Component.qml with +unix/Component.qml, so + when using Component.qml you should not need to alter any paths based on which version was + selected. + + For example, to pass the "asset.png" file path around you would refer to it just as "asset.png" in + all of main.qml, Component.qml, and +linux/Component.qml. It will be replaced with +mac/asset.png + on Mac platforms in all cases. + + For a list of available selectors, see \c QFileSelector. + + Your platform may also provide additional selectors for you to use. As specified by QFileSelector, + directories used for selection must start with a '+' character, so you will not accidentally + trigger this feature unless you have directories with such names inside your project. + */ + +/*! + Creates a new QQmlFileSelector, which includes its own QFileSelector. +*/ + +QQmlFileSelector::QQmlFileSelector(QObject* parent) + : QObject(*(new QQmlFileSelectorPrivate), parent) +{ +} + +QQmlFileSelectorPrivate::QQmlFileSelectorPrivate() +{ + Q_Q(QQmlFileSelector); + ownSelector = true; + selector = new QFileSelector(q); +} + +/*! + Sets a different QFileSelector instance for use by the QQmlFileSelector. QQmlFileSelector does not + take ownership of the new QFileSelector. To reset QQmlFileSelector to use its internal + QFileSelector instance, call setSelector(0). +*/ + +void QQmlFileSelector::setSelector(QFileSelector *selector) +{ + Q_D(QQmlFileSelector); + if (selector) { + if (d->ownSelector) { + delete d->selector; + d->ownSelector = false; + } + d->selector = selector; + } else { + if (!d->ownSelector) { + d->ownSelector = true; + d->selector = new QFileSelector(this); + } // Do nothing if already using internal selector + } +} + +QUrl QQmlFileSelector::intercept(const QUrl &path, DataType type) +{ + Q_D(QQmlFileSelector); + if ( type == QQmlAbstractUrlInterceptor::QmldirFile ) //Don't intercept qmldir files, to prevent double interception + return path; + return d->selector->select(path); +} + +QT_END_NAMESPACE diff --git a/src/qml/qml/qqmlfileselector.h b/src/qml/qml/qqmlfileselector.h new file mode 100644 index 0000000000..0152ce292a --- /dev/null +++ b/src/qml/qml/qqmlfileselector.h @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2013 BlackBerry Limited. All rights reserved. +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtQml module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QQMLFILESELECTOR_H +#define QQMLFILESELECTOR_H + +#include <QtCore/QObject> +#include <QtCore/QUrl> +#include <QtQml/QQmlAbstractUrlInterceptor> +#include <qtqmlglobal.h> + +QT_BEGIN_NAMESPACE + +class QFileSelector; +class QQmlFileSelectorPrivate; +class Q_QML_EXPORT QQmlFileSelector : public QObject, public QQmlAbstractUrlInterceptor +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QQmlFileSelector) +public: + QQmlFileSelector(QObject* parent=0); + void setSelector(QFileSelector *selector); + +protected: + virtual QUrl intercept(const QUrl &path, DataType type); + +private: + Q_DISABLE_COPY(QQmlFileSelector) +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/qml/qml/qqmlfileselector_p.h b/src/qml/qml/qqmlfileselector_p.h new file mode 100644 index 0000000000..60d6072c8c --- /dev/null +++ b/src/qml/qml/qqmlfileselector_p.h @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** Copyright (C) 2013 BlackBerry Limited. All rights reserved. +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtQml module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QQMLFILESELECTOR_P_H +#define QQMLFILESELECTOR_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "qqmlfileselector.h" +#include <private/qobject_p.h> +#include <private/qtqmlglobal_p.h> + +QT_BEGIN_NAMESPACE + +class QFileSelector; +class Q_QML_PRIVATE_EXPORT QQmlFileSelectorPrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QQmlFileSelector) +public: + QQmlFileSelectorPrivate(); + QFileSelector* selector; + bool ownSelector; +}; + +QT_END_NAMESPACE + +#endif diff --git a/tests/auto/qml/qqmlfileselector/data/+basic/basicTest.qml b/tests/auto/qml/qqmlfileselector/data/+basic/basicTest.qml new file mode 100644 index 0000000000..6c07e2d020 --- /dev/null +++ b/tests/auto/qml/qqmlfileselector/data/+basic/basicTest.qml @@ -0,0 +1,5 @@ +import QtQml 2.0 + +QtObject { + property string value: "selected" +} diff --git a/tests/auto/qml/qqmlfileselector/data/basicTest.qml b/tests/auto/qml/qqmlfileselector/data/basicTest.qml new file mode 100644 index 0000000000..b7f24e81d0 --- /dev/null +++ b/tests/auto/qml/qqmlfileselector/data/basicTest.qml @@ -0,0 +1,5 @@ +import QtQml 2.0 + +QtObject { + property string value: "default" +} diff --git a/tests/auto/qml/qqmlfileselector/qqmlfileselector.pro b/tests/auto/qml/qqmlfileselector/qqmlfileselector.pro new file mode 100644 index 0000000000..3475fa4b1d --- /dev/null +++ b/tests/auto/qml/qqmlfileselector/qqmlfileselector.pro @@ -0,0 +1,13 @@ +CONFIG += testcase +TARGET = tst_qqmlfileselector +macx:CONFIG -= app_bundle + +SOURCES += tst_qqmlfileselector.cpp + +include (../../shared/util.pri) + +TESTDATA = data/* + +CONFIG += parallel_test +QT += core-private gui-private qml-private testlib +DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/qml/qqmlfileselector/tst_qqmlfileselector.cpp b/tests/auto/qml/qqmlfileselector/tst_qqmlfileselector.cpp new file mode 100644 index 0000000000..a583fd0c4c --- /dev/null +++ b/tests/auto/qml/qqmlfileselector/tst_qqmlfileselector.cpp @@ -0,0 +1,81 @@ +/**************************************************************************** +** +** Copyright (C) 2013 BlackBerry Limited. All rights reserved. +** Contact: http://www.qt-project.org/legal +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <qtest.h> +#include <QQmlEngine> +#include <QQmlComponent> +#include <QQmlFileSelector> +#include <QFileSelector> +#include <QQmlContext> +#include <qqmlinfo.h> +#include "../../shared/util.h" + +class tst_qqmlfileselector : public QQmlDataTest +{ + Q_OBJECT +public: + tst_qqmlfileselector() {} + +private slots: + void basicTest(); + +}; + +void tst_qqmlfileselector::basicTest() +{ + QQmlEngine engine; + QFileSelector selector; + selector.setExtraSelectors(QStringList() << "basic"); + QQmlFileSelector qmlSelector; + qmlSelector.setSelector(&selector); + engine.setUrlInterceptor(&qmlSelector); + + QQmlComponent component(&engine, testFileUrl("basicTest.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + QCOMPARE(object->property("value").toString(), QString("selected")); + + delete object; +} + +QTEST_MAIN(tst_qqmlfileselector) + +#include "tst_qqmlfileselector.moc" |