Q_GLOBAL_STATIC(QString, lastVisitedDir)
-/*
- \internal
-
- Exported hooks that can be used to customize the static functions.
- */
-typedef QString (*_qt_filedialog_existing_directory_hook)(QWidget *parent, const QString &caption, const QString &dir, QFileDialog::Options options);
-Q_GUI_EXPORT _qt_filedialog_existing_directory_hook qt_filedialog_existing_directory_hook = 0;
-
-typedef QString (*_qt_filedialog_open_filename_hook)(QWidget * parent, const QString &caption, const QString &dir, const QString &filter, QString *selectedFilter, QFileDialog::Options options);
-Q_GUI_EXPORT _qt_filedialog_open_filename_hook qt_filedialog_open_filename_hook = 0;
-
-typedef QStringList (*_qt_filedialog_open_filenames_hook)(QWidget * parent, const QString &caption, const QString &dir, const QString &filter, QString *selectedFilter, QFileDialog::Options options);
-Q_GUI_EXPORT _qt_filedialog_open_filenames_hook qt_filedialog_open_filenames_hook = 0;
-
-typedef QString (*_qt_filedialog_save_filename_hook)(QWidget * parent, const QString &caption, const QString &dir, const QString &filter, QString *selectedFilter, QFileDialog::Options options);
-Q_GUI_EXPORT _qt_filedialog_save_filename_hook qt_filedialog_save_filename_hook = 0;
-
/*!
\class QFileDialog
\brief The QFileDialog class provides a dialog that allow users to select files or directories.
}
/*!
- \internal
-*/
-QFileDialog::QFileDialog(const QFileDialogArgs &args)
- : QDialog(*new QFileDialogPrivate, args.parent, 0)
-{
- Q_D(QFileDialog);
- d->init(args.directory, args.filter, args.caption);
- setFileMode(args.mode);
- setOptions(args.options);
- selectFile(args.selection);
- d->lineEdit()->selectAll();
-}
-
-/*!
Destroys the file dialog.
*/
QFileDialog::~QFileDialog()
QString *selectedFilter,
Options options)
{
- if (qt_filedialog_open_filename_hook)
- return qt_filedialog_open_filename_hook(parent, caption, dir, filter, selectedFilter, options);
- QFileDialogArgs args;
- args.parent = parent;
- args.caption = caption;
- args.directory = QFileDialogPrivate::workingDirectory(dir);
- args.selection = QFileDialogPrivate::initialSelection(dir);
- args.filter = filter;
- args.mode = ExistingFile;
- args.options = options;
-
- // create a qt dialog
- QFileDialog dialog(args);
+ // create a Katie dialog
+ QFileDialog dialog(parent, caption, QFileDialogPrivate::workingDirectory(dir), filter);
+ dialog.setFileMode(QFileDialog::ExistingFile);
+ dialog.setOptions(options);
+ dialog.selectFile(QFileDialogPrivate::initialSelection(dir));
+
if (selectedFilter && !selectedFilter->isEmpty())
dialog.selectNameFilter(*selectedFilter);
if (dialog.exec() == QDialog::Accepted) {
\snippet doc/src/snippets/code/src_gui_dialogs_qfiledialog.cpp 10
- On Symbian^3 the parameter \a selectedFilter has no meaning and the
- \a options parameter is only used to define if the native file dialog is
- used. On Symbian^3, this function can only return a single filename.
-
\warning Do not delete \a parent during the execution of the dialog. If you
want to do this, you should create the dialog yourself using one of the
QFileDialog constructors.
QString *selectedFilter,
Options options)
{
- if (qt_filedialog_open_filenames_hook)
- return qt_filedialog_open_filenames_hook(parent, caption, dir, filter, selectedFilter, options);
- QFileDialogArgs args;
- args.parent = parent;
- args.caption = caption;
- args.directory = QFileDialogPrivate::workingDirectory(dir);
- args.selection = QFileDialogPrivate::initialSelection(dir);
- args.filter = filter;
- args.mode = ExistingFiles;
- args.options = options;
-
- // create a qt dialog
- QFileDialog dialog(args);
+ // create a Katie dialog
+ QFileDialog dialog(parent, caption, QFileDialogPrivate::workingDirectory(dir), filter);
+ dialog.setFileMode(QFileDialog::ExistingFiles);
+ dialog.setOptions(options);
+ dialog.selectFile(QFileDialogPrivate::initialSelection(dir));
+
if (selectedFilter && !selectedFilter->isEmpty())
dialog.selectNameFilter(*selectedFilter);
if (dialog.exec() == QDialog::Accepted) {
follow symlinks. For example, if \c{/usr/tmp} is a symlink to \c{/var/tmp},
the file dialog will change to \c{/var/tmp} after entering \c{/usr/tmp}.
- On Symbian^3 the parameters \a filter and \a selectedFilter have no
- meaning. The \a options parameter is only used to define if the native file
- dialog is used.
-
\warning Do not delete \a parent during the execution of the dialog. If you
want to do this, you should create the dialog yourself using one of the
QFileDialog constructors.
QString *selectedFilter,
Options options)
{
- if (qt_filedialog_save_filename_hook)
- return qt_filedialog_save_filename_hook(parent, caption, dir, filter, selectedFilter, options);
- QFileDialogArgs args;
- args.parent = parent;
- args.caption = caption;
- args.directory = QFileDialogPrivate::workingDirectory(dir);
- args.selection = QFileDialogPrivate::initialSelection(dir);
- args.filter = filter;
- args.mode = AnyFile;
- args.options = options;
-
- // create a qt dialog
- QFileDialog dialog(args);
- dialog.setAcceptMode(AcceptSave);
+ // create a Katie dialog
+ QFileDialog dialog(parent, caption, QFileDialogPrivate::workingDirectory(dir), filter);
+ dialog.setFileMode(QFileDialog::AnyFile);
+ dialog.setOptions(options);
+ dialog.selectFile(QFileDialogPrivate::initialSelection(dir));
+ dialog.setAcceptMode(QFileDialog::AcceptSave);
+
if (selectedFilter && !selectedFilter->isEmpty())
dialog.selectNameFilter(*selectedFilter);
if (dialog.exec() == QDialog::Accepted) {
follow symlinks. For example, if \c{/usr/tmp} is a symlink to \c{/var/tmp},
the file dialog will change to \c{/var/tmp} after entering \c{/usr/tmp}.
- On Windows the dialog will spin a blocking modal event loop that will not
- dispatch any QTimers, and if \a parent is not 0 then it will position the
- dialog just below the parent's title bar.
-
\warning Do not delete \a parent during the execution of the dialog. If you
want to do this, you should create the dialog yourself using one of the
QFileDialog constructors.
const QString &dir,
Options options)
{
- if (qt_filedialog_existing_directory_hook)
- return qt_filedialog_existing_directory_hook(parent, caption, dir, options);
- QFileDialogArgs args;
- args.parent = parent;
- args.caption = caption;
- args.directory = QFileDialogPrivate::workingDirectory(dir);
- args.mode = (options & ShowDirsOnly ? DirectoryOnly : Directory);
- args.options = options;
-
- // create a qt dialog
- QFileDialog dialog(args);
+ // create a Katie dialog
+ QFileDialog dialog(parent, caption, QFileDialogPrivate::workingDirectory(dir));
+ dialog.setFileMode(options & QFileDialog::ShowDirsOnly ? QFileDialog::DirectoryOnly : QFileDialog::Directory);
+ dialog.setOptions(options);
+ dialog.selectFile(QFileDialogPrivate::initialSelection(dir));
+
if (dialog.exec() == QDialog::Accepted) {
return dialog.selectedFiles().value(0);
}
class QHBoxLayout;
class Ui_QFileDialog;
-
-struct QFileDialogArgs
-{
- QFileDialogArgs() : parent(0), mode(QFileDialog::AnyFile) {}
-
- QWidget *parent;
- QString caption;
- QString directory;
- QString selection;
- QString filter;
- QFileDialog::FileMode mode;
- QFileDialog::Options options;
-};
-
class Q_AUTOTEST_EXPORT QFileDialogPrivate : public QDialogPrivate
{
Q_DECLARE_PUBLIC(QFileDialog)
QFileDialogPrivate *d_ptr;
};
-inline QModelIndex QFileDialogPrivate::mapToSource(const QModelIndex &index) const {
+inline QModelIndex QFileDialogPrivate::mapToSource(const QModelIndex &index) const
+{
#ifdef QT_NO_PROXYMODEL
return index;
#else
return proxyModel ? proxyModel->mapToSource(index) : index;
#endif
}
-inline QModelIndex QFileDialogPrivate::mapFromSource(const QModelIndex &index) const {
+
+inline QModelIndex QFileDialogPrivate::mapFromSource(const QModelIndex &index) const
+{
#ifdef QT_NO_PROXYMODEL
return index;
#else
#endif
}
-inline QString QFileDialogPrivate::rootPath() const {
+inline QString QFileDialogPrivate::rootPath() const
+{
return model->rootPath();
}
-// Dummies for platforms that don't use native dialogs:
-inline void QFileDialogPrivate::deleteNativeDialog_sys() { qt_guiPlatformPlugin()->fileDialogDelete(q_func()); }
-inline bool QFileDialogPrivate::setVisible_sys(bool visible) { return qt_guiPlatformPlugin()->fileDialogSetVisible(q_func(), visible); }
-inline QDialog::DialogCode QFileDialogPrivate::dialogResultCode_sys(){ return qt_guiPlatformPlugin()->fileDialogResultCode(q_func()); }
-inline void QFileDialogPrivate::setDirectory_sys(const QString &directory) { qt_guiPlatformPlugin()->fileDialogSetDirectory(q_func(), directory); }
-inline QString QFileDialogPrivate::directory_sys() const { return qt_guiPlatformPlugin()->fileDialogDirectory(q_func()); }
-inline void QFileDialogPrivate::selectFile_sys(const QString &filename) { qt_guiPlatformPlugin()->fileDialogSelectFile(q_func(), filename); }
-inline QStringList QFileDialogPrivate::selectedFiles_sys() const { return qt_guiPlatformPlugin()->fileDialogSelectedFiles(q_func()); }
-inline void QFileDialogPrivate::setFilter_sys() { qt_guiPlatformPlugin()->fileDialogSetFilter(q_func()); }
-inline void QFileDialogPrivate::setNameFilters_sys(const QStringList &filters) { qt_guiPlatformPlugin()->fileDialogSetNameFilters(q_func(), filters); }
-inline void QFileDialogPrivate::selectNameFilter_sys(const QString &filter) { qt_guiPlatformPlugin()->fileDialogSelectNameFilter(q_func(), filter); }
-inline QString QFileDialogPrivate::selectedNameFilter_sys() const { return qt_guiPlatformPlugin()->fileDialogSelectedNameFilter(q_func()); }
+inline void QFileDialogPrivate::deleteNativeDialog_sys()
+{
+ qt_guiPlatformPlugin()->fileDialogDelete(q_func());
+}
+
+inline bool QFileDialogPrivate::setVisible_sys(bool visible)
+{
+ return qt_guiPlatformPlugin()->fileDialogSetVisible(q_func(), visible);
+}
+
+inline QDialog::DialogCode QFileDialogPrivate::dialogResultCode_sys()
+{
+ return qt_guiPlatformPlugin()->fileDialogResultCode(q_func());
+}
+
+inline void QFileDialogPrivate::setDirectory_sys(const QString &directory)
+{
+ qt_guiPlatformPlugin()->fileDialogSetDirectory(q_func(), directory);
+}
+
+inline QString QFileDialogPrivate::directory_sys() const
+{
+ return qt_guiPlatformPlugin()->fileDialogDirectory(q_func());
+}
+
+inline void QFileDialogPrivate::selectFile_sys(const QString &filename)
+{
+ qt_guiPlatformPlugin()->fileDialogSelectFile(q_func(), filename);
+}
+
+inline QStringList QFileDialogPrivate::selectedFiles_sys() const
+{
+ return qt_guiPlatformPlugin()->fileDialogSelectedFiles(q_func());
+}
+
+inline void QFileDialogPrivate::setFilter_sys()
+{
+ qt_guiPlatformPlugin()->fileDialogSetFilter(q_func());
+}
+
+inline void QFileDialogPrivate::setNameFilters_sys(const QStringList &filters)
+{
+ qt_guiPlatformPlugin()->fileDialogSetNameFilters(q_func(), filters);
+}
+
+inline void QFileDialogPrivate::selectNameFilter_sys(const QString &filter)
+{
+ qt_guiPlatformPlugin()->fileDialogSelectNameFilter(q_func(), filter);
+}
+
+inline QString QFileDialogPrivate::selectedNameFilter_sys() const
+{
+ return qt_guiPlatformPlugin()->fileDialogSelectedNameFilter(q_func());
+}
QT_END_NAMESPACE
class Q_GUI_EXPORT QGuiPlatformPlugin : public QObject
{
Q_OBJECT
- public:
- enum PlatformHint {
- PH_ToolButtonStyle,
- PH_ToolBarIconSize,
- PH_ItemView_ActivateItemOnSingleClick
- };
+public:
+ enum PlatformHint {
+ PH_ToolButtonStyle,
+ PH_ToolBarIconSize,
+ PH_ItemView_ActivateItemOnSingleClick
+ };
- explicit QGuiPlatformPlugin(QObject *parent = nullptr);
- ~QGuiPlatformPlugin();
+ explicit QGuiPlatformPlugin(QObject *parent = nullptr);
+ ~QGuiPlatformPlugin();
- virtual QString styleName();
- virtual QPalette palette();
- virtual QString systemIconThemeName();
- virtual QStringList iconThemeSearchPaths();
- virtual QIcon systemIcon(const QString &name);
- virtual QIcon fileSystemIcon(const QFileInfo &name);
+ virtual QString styleName();
+ virtual QPalette palette();
+ virtual QString systemIconThemeName();
+ virtual QStringList iconThemeSearchPaths();
+ virtual QIcon systemIcon(const QString &name);
+ virtual QIcon fileSystemIcon(const QFileInfo &name);
+ virtual int platformHint(PlatformHint hint);
- virtual int platformHint(PlatformHint hint);
+ virtual void fileDialogDelete(QFileDialog *);
+ virtual bool fileDialogSetVisible(QFileDialog *, bool);
+ virtual QDialog::DialogCode fileDialogResultCode(QFileDialog *);
+ virtual void fileDialogSetDirectory(QFileDialog *, const QString &);
+ virtual QString fileDialogDirectory(const QFileDialog *) const;
+ virtual void fileDialogSelectFile(QFileDialog *, const QString &);
+ virtual QStringList fileDialogSelectedFiles(const QFileDialog *) const;
+ virtual void fileDialogSetFilter(QFileDialog *);
+ virtual void fileDialogSetNameFilters(QFileDialog *, const QStringList &);
+ virtual void fileDialogSelectNameFilter(QFileDialog *, const QString &);
+ virtual QString fileDialogSelectedNameFilter(const QFileDialog *) const;
- virtual void fileDialogDelete(QFileDialog *);
- virtual bool fileDialogSetVisible(QFileDialog *, bool);
- virtual QDialog::DialogCode fileDialogResultCode(QFileDialog *);
- virtual void fileDialogSetDirectory(QFileDialog *, const QString &);
- virtual QString fileDialogDirectory(const QFileDialog *) const;
- virtual void fileDialogSelectFile(QFileDialog *, const QString &);
- virtual QStringList fileDialogSelectedFiles(const QFileDialog *) const;
- virtual void fileDialogSetFilter(QFileDialog *);
- virtual void fileDialogSetNameFilters(QFileDialog *, const QStringList &);
- virtual void fileDialogSelectNameFilter(QFileDialog *, const QString &);
- virtual QString fileDialogSelectedNameFilter(const QFileDialog *) const;
-
- virtual void colorDialogDelete(QColorDialog *);
- virtual bool colorDialogSetVisible(QColorDialog *, bool);
- virtual void colorDialogSetCurrentColor(QColorDialog *, const QColor &);
+ virtual void colorDialogDelete(QColorDialog *);
+ virtual bool colorDialogSetVisible(QColorDialog *, bool);
+ virtual void colorDialogSetCurrentColor(QColorDialog *, const QColor &);
};
// internal