Fix file browser in qmlvideo example.
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: Iec6d9f96fbe2181c939e9dbbe6aa042eac630918 Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
This commit is contained in:
committed by
The Qt Project
parent
9f26d9e242
commit
de9092389f
@@ -129,13 +129,11 @@ int main(int argc, char *argv[])
|
||||
rootObject, SLOT(qmlFramePainted()));
|
||||
#endif
|
||||
|
||||
QUrl videoPath;
|
||||
const QStringList moviesLocation = QStandardPaths::standardLocations(QStandardPaths::MoviesLocation);
|
||||
if (moviesLocation.isEmpty()) {
|
||||
QUrl appPath(QString("file://%1").arg(app.applicationDirPath()));
|
||||
videoPath = appPath.resolved(QUrl("./"));
|
||||
} else
|
||||
videoPath = QString("file://%1").arg(moviesLocation.first());
|
||||
const QUrl videoPath =
|
||||
QUrl::fromLocalFile(moviesLocation.isEmpty() ?
|
||||
app.applicationDirPath() :
|
||||
moviesLocation.front());
|
||||
viewer.rootContext()->setContextProperty("videoPath", videoPath);
|
||||
|
||||
QMetaObject::invokeMethod(rootObject, "init");
|
||||
|
||||
@@ -101,7 +101,11 @@ Rectangle {
|
||||
Rectangle {
|
||||
id: wrapper
|
||||
function launch() {
|
||||
var path = "file://" + filePath;
|
||||
console.debug("launch " + 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
|
||||
@@ -306,7 +310,7 @@ Rectangle {
|
||||
MouseArea { id: upRegion; anchors.centerIn: parent
|
||||
width: 56
|
||||
height: 56
|
||||
onClicked: if (folders.parentFolder != "") up()
|
||||
onClicked: up()
|
||||
}
|
||||
states: [
|
||||
State {
|
||||
@@ -352,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;
|
||||
|
||||
Reference in New Issue
Block a user