Fix file browser in qmlvideofx example.
authorFriedemann Kleint <Friedemann.Kleint@digia.com>
Wed, 31 Jul 2013 09:15:25 +0000 (11:15 +0200)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Mon, 19 Aug 2013 08:07:19 +0000 (10:07 +0200)
Similar to de9092389f2e43370c2cfcd6759d08cc11da9a68 for qmlvideo.
Use QUrl::fromLocalFile() to get Windows drive handling
right. Emulate its behavior in QML code. Fix up() to terminate
correctly.

Task-number: QTBUG-32139
Change-Id: I36bafaa608ff054190dc76694f6254a74f3b513e
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
examples/multimedia/video/qmlvideofx/main.cpp
examples/multimedia/video/qmlvideofx/qml/qmlvideofx/FileBrowser.qml

index b0698e2..7465dea 100644 (file)
@@ -116,21 +116,13 @@ int main(int argc, char *argv[])
     FileReader fileReader;
     viewer.rootContext()->setContextProperty("fileReader", &fileReader);
 
-    QUrl appPath(QString("file://%1").arg(app.applicationDirPath()));
-    QUrl imagePath;
+    const QUrl appPath(QUrl::fromLocalFile(app.applicationDirPath()));
     const QStringList picturesLocation = QStandardPaths::standardLocations(QStandardPaths::PicturesLocation);
-    if (picturesLocation.isEmpty())
-        imagePath = appPath.resolved(QUrl("images"));
-    else
-        imagePath = QString("file://%1").arg(picturesLocation.first());
+    const QUrl imagePath = picturesLocation.isEmpty() ? appPath : QUrl::fromLocalFile(picturesLocation.first());
     viewer.rootContext()->setContextProperty("imagePath", imagePath);
 
-    QUrl videoPath;
     const QStringList moviesLocation = QStandardPaths::standardLocations(QStandardPaths::MoviesLocation);
-    if (moviesLocation.isEmpty())
-        videoPath = appPath.resolved(QUrl("./"));
-    else
-        videoPath = QString("file://%1").arg(moviesLocation.first());
+    const QUrl videoPath = moviesLocation.isEmpty() ? appPath : QUrl::fromLocalFile(moviesLocation.first());
     viewer.rootContext()->setContextProperty("videoPath", videoPath);
 
     viewer.setTitle("qmlvideofx");
index 3d4343c..7c86103 100644 (file)
@@ -102,7 +102,10 @@ Rectangle {
                 Rectangle {
                     id: wrapper
                     function launch() {
-                        var path = "file://" + filePath
+                        var path = "file://";
+                        if (filePath.length > 2 && filePath[1] === ':') // Windows drive logic, see QUrl::fromLocalFile()
+                            path += '/';
+                        path += filePath;
                         if (folders.isFolder(index))
                             down(path);
                         else
@@ -307,7 +310,7 @@ Rectangle {
                     MouseArea { id: upRegion; anchors.centerIn: parent
                         width: 56
                         height: 56
-                        onClicked: if (folders.parentFolder != "") up()
+                        onClicked: up()
                     }
                     states: [
                         State {
@@ -353,6 +356,8 @@ Rectangle {
 
             function up() {
                 var path = folders.parentFolder;
+                if (path.toString().length === 0 || path.toString() === 'file:')
+                    return;
                 if (folders == folders1) {
                     view = view2
                     folders = folders2;