diff options
| author | Richard Moe Gustavsen <richard.gustavsen@theqtcompany.com> | 2015-03-24 15:22:07 +0100 |
|---|---|---|
| committer | Shawn Rutledge <shawn.rutledge@digia.com> | 2015-03-30 15:23:35 +0000 |
| commit | 60026a8cc35dc1e806bcf61a137e236caa0878ed (patch) | |
| tree | ed2429a1a54572750264d9718391cf8a7cc96215 /src | |
| parent | 5061d101310bd110e86831249b94d137a831d3be (diff) | |
Dialogs: store m_shortcutDetails as JS array
Simplify the code a bit by storing the shortcuts as an
JS array that keeps track of its own length.
Change-Id: I4aa3c353d9d88d58feaf8e452cf11cc5bc05646c
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Diffstat (limited to 'src')
| -rw-r--r-- | src/dialogs/DefaultFileDialog.qml | 4 | ||||
| -rw-r--r-- | src/dialogs/qquickfiledialog.cpp | 30 | ||||
| -rw-r--r-- | src/dialogs/qquickfiledialog_p.h | 4 |
3 files changed, 18 insertions, 20 deletions
diff --git a/src/dialogs/DefaultFileDialog.qml b/src/dialogs/DefaultFileDialog.qml index bcfafb41c..e79a54d17 100644 --- a/src/dialogs/DefaultFileDialog.qml +++ b/src/dialogs/DefaultFileDialog.qml @@ -187,7 +187,7 @@ AbstractFileDialog { height: shortcutLabel.implicitHeight * 1.5 Text { id: shortcutLabel - text: __shortcuts[Object.keys(__shortcuts)[index]].name + text: __shortcuts[index].name anchors { verticalCenter: parent.verticalCenter left: parent.left @@ -204,7 +204,7 @@ AbstractFileDialog { } MouseArea { anchors.fill: parent - onClicked: root.folder = __shortcuts[Object.keys(__shortcuts)[index]].url + onClicked: root.folder = __shortcuts[index].url } } } diff --git a/src/dialogs/qquickfiledialog.cpp b/src/dialogs/qquickfiledialog.cpp index f85f06997..dd6795e23 100644 --- a/src/dialogs/qquickfiledialog.cpp +++ b/src/dialogs/qquickfiledialog.cpp @@ -116,7 +116,7 @@ QList<QUrl> QQuickFileDialog::fileUrls() const return m_selections; } -void QQuickFileDialog::addShortcut(uint &i, const QString &name, const QString &visibleName, const QString &path) +void QQuickFileDialog::addShortcut(const QString &name, const QString &visibleName, const QString &path) { QJSEngine *engine = qmlEngine(this); QUrl url = QUrl::fromLocalFile(path); @@ -124,12 +124,12 @@ void QQuickFileDialog::addShortcut(uint &i, const QString &name, const QString & o.setProperty("name", visibleName); // TODO maybe some day QJSValue could directly store a QUrl o.setProperty("url", url.toString()); - m_shortcutDetails.setProperty(name, o); m_shortcuts.setProperty(name, url.toString()); - ++i; + int length = m_shortcutDetails.property(QLatin1String("length")).toInt(); + m_shortcutDetails.setProperty(length, o); } -void QQuickFileDialog::maybeAdd(uint &i, const QString &name, const QString &visibleName, QStandardPaths::StandardLocation loc) +void QQuickFileDialog::maybeAdd(const QString &name, const QString &visibleName, QStandardPaths::StandardLocation loc) { if (name.isEmpty() || visibleName.isEmpty()) return; @@ -149,36 +149,34 @@ void QQuickFileDialog::maybeAdd(uint &i, const QString &name, const QString &vis usable = QDir(path).isReadable(); } if (usable) - addShortcut(i, name, visibleName, path); + addShortcut(name, visibleName, path); } void QQuickFileDialog::populateShortcuts() { QJSEngine *engine = qmlEngine(this); - m_shortcutDetails = engine->newObject(); + m_shortcutDetails = engine->newArray(); m_shortcuts = engine->newObject(); - uint i = 0; - maybeAdd(i, QLatin1String("desktop"), QStandardPaths::displayName(QStandardPaths::DesktopLocation), QStandardPaths::DesktopLocation); - maybeAdd(i, QLatin1String("documents"), QStandardPaths::displayName(QStandardPaths::DocumentsLocation), QStandardPaths::DocumentsLocation); - maybeAdd(i, QLatin1String("music"), QStandardPaths::displayName(QStandardPaths::MusicLocation), QStandardPaths::MusicLocation); - maybeAdd(i, QLatin1String("movies"), QStandardPaths::displayName(QStandardPaths::MoviesLocation), QStandardPaths::MoviesLocation); - maybeAdd(i, QLatin1String("pictures"), QStandardPaths::displayName(QStandardPaths::PicturesLocation), QStandardPaths::PicturesLocation); - maybeAdd(i, QLatin1String("home"), QStandardPaths::displayName(QStandardPaths::HomeLocation), QStandardPaths::HomeLocation); + maybeAdd(QLatin1String("desktop"), QStandardPaths::displayName(QStandardPaths::DesktopLocation), QStandardPaths::DesktopLocation); + maybeAdd(QLatin1String("documents"), QStandardPaths::displayName(QStandardPaths::DocumentsLocation), QStandardPaths::DocumentsLocation); + maybeAdd(QLatin1String("music"), QStandardPaths::displayName(QStandardPaths::MusicLocation), QStandardPaths::MusicLocation); + maybeAdd(QLatin1String("movies"), QStandardPaths::displayName(QStandardPaths::MoviesLocation), QStandardPaths::MoviesLocation); + maybeAdd(QLatin1String("pictures"), QStandardPaths::displayName(QStandardPaths::PicturesLocation), QStandardPaths::PicturesLocation); + maybeAdd(QLatin1String("home"), QStandardPaths::displayName(QStandardPaths::HomeLocation), QStandardPaths::HomeLocation); #ifdef Q_OS_IOS // PicturesLocation is a special URL, which we cannot check with QDir::isReadable() if (m_selectExisting) - addShortcut(i, QLatin1String("pictures"), QStandardPaths::displayName(QStandardPaths::PicturesLocation), + addShortcut(QLatin1String("pictures"), QStandardPaths::displayName(QStandardPaths::PicturesLocation), QStandardPaths::standardLocations(QStandardPaths::PicturesLocation).last()); #else // on iOS, this returns only "/", which is never a useful path to read or write anything QFileInfoList drives = QDir::drives(); foreach (QFileInfo fi, drives) - addShortcut(i, fi.absoluteFilePath(), fi.absoluteFilePath(), fi.absoluteFilePath()); + addShortcut(fi.absoluteFilePath(), fi.absoluteFilePath(), fi.absoluteFilePath()); #endif - m_shortcutDetails.setProperty(QLatin1String("length"), i); emit shortcutsChanged(); } diff --git a/src/dialogs/qquickfiledialog_p.h b/src/dialogs/qquickfiledialog_p.h index 59a64deee..0eb4eddfc 100644 --- a/src/dialogs/qquickfiledialog_p.h +++ b/src/dialogs/qquickfiledialog_p.h @@ -83,8 +83,8 @@ protected: Q_INVOKABLE QUrl pathToUrl(const QString &path) { return QUrl::fromLocalFile(path); } Q_INVOKABLE QUrl pathFolder(const QString &path); - void addShortcut(uint &i, const QString &name, const QString &visibleName, const QString &path); - void maybeAdd(uint &i, const QString &name, const QString &visibleName, QStandardPaths::StandardLocation loc); + void addShortcut(const QString &name, const QString &visibleName, const QString &path); + void maybeAdd(const QString &name, const QString &visibleName, QStandardPaths::StandardLocation loc); void populateShortcuts(); void updateModes() Q_DECL_OVERRIDE; |
