diff options
Diffstat (limited to 'src/widgets/dialogs/qfiledialog_p.h')
-rw-r--r-- | src/widgets/dialogs/qfiledialog_p.h | 32 |
1 files changed, 19 insertions, 13 deletions
diff --git a/src/widgets/dialogs/qfiledialog_p.h b/src/widgets/dialogs/qfiledialog_p.h index 3a93a53911..dcf147348f 100644 --- a/src/widgets/dialogs/qfiledialog_p.h +++ b/src/widgets/dialogs/qfiledialog_p.h @@ -98,7 +98,7 @@ class QPlatformDialogHelper; struct QFileDialogArgs { - QFileDialogArgs() : parent(0), mode(QFileDialog::AnyFile) {} + QFileDialogArgs() : parent(nullptr), mode(QFileDialog::AnyFile) {} QWidget *parent; QString caption; @@ -116,6 +116,14 @@ class Q_WIDGETS_EXPORT QFileDialogPrivate : public QDialogPrivate Q_DECLARE_PUBLIC(QFileDialog) public: + using PersistentModelIndexList = QVector<QPersistentModelIndex>; + + struct HistoryItem + { + QString path; + PersistentModelIndexList selection; + }; + QFileDialogPrivate(); QPlatformFileDialogHelper *platformFileDialogHelper() const @@ -164,13 +172,9 @@ public: QDir::Filters filterForMode(QDir::Filters filters) const { - const QFileDialog::FileMode fileMode = q_func()->fileMode(); - if (fileMode == QFileDialog::DirectoryOnly) { - filters |= QDir::Drives | QDir::AllDirs | QDir::Dirs; + filters |= QDir::Drives | QDir::AllDirs | QDir::Dirs | QDir::Files; + if (q_func()->testOption(QFileDialog::ShowDirsOnly)) filters &= ~QDir::Files; - } else { - filters |= QDir::Drives | QDir::AllDirs | QDir::Files | QDir::Dirs; - } return filters; } @@ -187,7 +191,7 @@ public: #endif } -#ifndef QT_NO_SETTINGS +#if QT_CONFIG(settings) void saveSettings(); bool restoreFromSettings(); #endif @@ -197,9 +201,11 @@ public: void retranslateWindowTitle(); void retranslateStrings(); void emitFilesSelected(const QStringList &files); + void saveHistorySelection(); void _q_goHome(); void _q_pathChanged(const QString &); + void navigate(HistoryItem &); void _q_navigateBackward(); void _q_navigateForward(); void _q_navigateToParent(); @@ -241,7 +247,7 @@ public: QString setWindowTitle; - QStringList currentHistory; + QList<HistoryItem> currentHistory; int currentHistoryLocation; QAction *renameAction; @@ -290,13 +296,13 @@ private: virtual void helperPrepareShow(QPlatformDialogHelper *) override; virtual void helperDone(QDialog::DialogCode, QPlatformDialogHelper *) override; - Q_DISABLE_COPY(QFileDialogPrivate) + Q_DISABLE_COPY_MOVE(QFileDialogPrivate) }; class QFileDialogLineEdit : public QLineEdit { public: - QFileDialogLineEdit(QWidget *parent = 0) : QLineEdit(parent), d_ptr(0){} + QFileDialogLineEdit(QWidget *parent = nullptr) : QLineEdit(parent), d_ptr(nullptr){} void setFileDialogPrivate(QFileDialogPrivate *d_pointer) {d_ptr = d_pointer; } void keyPressEvent(QKeyEvent *e) override; bool hideOnEsc; @@ -307,7 +313,7 @@ private: class QFileDialogComboBox : public QComboBox { public: - QFileDialogComboBox(QWidget *parent = 0) : QComboBox(parent), urlModel(0) {} + QFileDialogComboBox(QWidget *parent = nullptr) : QComboBox(parent), urlModel(nullptr) {} void setFileDialogPrivate(QFileDialogPrivate *d_pointer); void showPopup() override; void setHistory(const QStringList &paths); @@ -323,7 +329,7 @@ private: class QFileDialogListView : public QListView { public: - QFileDialogListView(QWidget *parent = 0); + QFileDialogListView(QWidget *parent = nullptr); void setFileDialogPrivate(QFileDialogPrivate *d_pointer); QSize sizeHint() const override; protected: |