diff options
Diffstat (limited to 'src/widgets/dialogs/qfiledialog.cpp')
-rw-r--r-- | src/widgets/dialogs/qfiledialog.cpp | 78 |
1 files changed, 17 insertions, 61 deletions
diff --git a/src/widgets/dialogs/qfiledialog.cpp b/src/widgets/dialogs/qfiledialog.cpp index 6349bdc301..605d430edf 100644 --- a/src/widgets/dialogs/qfiledialog.cpp +++ b/src/widgets/dialogs/qfiledialog.cpp @@ -39,6 +39,8 @@ ** ****************************************************************************/ +#define QT_NO_URL_CAST_FROM_STRING + #include <qvariant.h> #include <private/qwidgetitemdata_p.h> #include "qfiledialog.h" @@ -579,8 +581,8 @@ QFileDialogPrivate::~QFileDialogPrivate() void QFileDialogPrivate::initHelper(QPlatformDialogHelper *h) { QFileDialog *d = q_func(); - QObject::connect(h, SIGNAL(fileSelected(QUrl)), d, SLOT(_q_nativeFileSelected(QUrl))); - QObject::connect(h, SIGNAL(filesSelected(QList<QUrl>)), d, SLOT(_q_nativeFilesSelected(QList<QUrl>))); + QObject::connect(h, SIGNAL(fileSelected(QUrl)), d, SLOT(_q_emitUrlSelected(QUrl))); + QObject::connect(h, SIGNAL(filesSelected(QList<QUrl>)), d, SLOT(_q_emitUrlsSelected(QList<QUrl>))); QObject::connect(h, SIGNAL(currentChanged(QUrl)), d, SLOT(_q_nativeCurrentChanged(QUrl))); QObject::connect(h, SIGNAL(directoryEntered(QUrl)), d, SLOT(_q_nativeEnterDirectory(QUrl))); QObject::connect(h, SIGNAL(filterSelected(QString)), d, SIGNAL(filterSelected(QString))); @@ -2028,26 +2030,6 @@ QString QFileDialog::labelText(DialogLabel label) const return QString(); } -/* - For the native file dialogs -*/ - -#if defined(Q_WS_WIN) -extern QString qt_win_get_open_file_name(const QFileDialogArgs &args, - QString *initialDirectory, - QString *selectedFilter); - -extern QString qt_win_get_save_file_name(const QFileDialogArgs &args, - QString *initialDirectory, - QString *selectedFilter); - -extern QStringList qt_win_get_open_file_names(const QFileDialogArgs &args, - QString *initialDirectory, - QString *selectedFilter); - -extern QString qt_win_get_existing_directory(const QFileDialogArgs &args); -#endif - /*! This is a convenience static function that returns an existing file selected by the user. If the user presses Cancel, it returns a null string. @@ -2110,13 +2092,7 @@ QString QFileDialog::getOpenFileName(QWidget *parent, args.filter = filter; args.mode = ExistingFile; args.options = options; -#if defined(Q_WS_WIN) - if (QGuiApplicationPrivate::platformIntegration()->usePlatformNativeDialog() && !(args.options & DontUseNativeDialog)) { - return qt_win_get_open_file_name(args, &(args.directory), selectedFilter); - } -#endif - // create a qt dialog QFileDialog dialog(args); if (selectedFilter && !selectedFilter->isEmpty()) dialog.selectNameFilter(*selectedFilter); @@ -2239,13 +2215,6 @@ QStringList QFileDialog::getOpenFileNames(QWidget *parent, args.mode = ExistingFiles; args.options = options; -#if defined(Q_WS_WIN) - if (QGuiApplicationPrivate::platformIntegration()->usePlatformNativeDialog() && !(args.options & DontUseNativeDialog)) { - return qt_win_get_open_file_names(args, &(args.directory), selectedFilter); - } -#endif - - // create a qt dialog QFileDialog dialog(args); if (selectedFilter && !selectedFilter->isEmpty()) dialog.selectNameFilter(*selectedFilter); @@ -2371,13 +2340,6 @@ QString QFileDialog::getSaveFileName(QWidget *parent, args.mode = AnyFile; args.options = options; -#if defined(Q_WS_WIN) - if (QGuiApplicationPrivate::platformIntegration()->usePlatformNativeDialog() && !(args.options & DontUseNativeDialog)) { - return qt_win_get_save_file_name(args, &(args.directory), selectedFilter); - } -#endif - - // create a qt dialog QFileDialog dialog(args); dialog.setAcceptMode(AcceptSave); if (selectedFilter && !selectedFilter->isEmpty()) @@ -2483,17 +2445,6 @@ QString QFileDialog::getExistingDirectory(QWidget *parent, args.mode = (options & ShowDirsOnly ? DirectoryOnly : Directory); args.options = options; -#if defined(Q_WS_WIN) - if (QGuiApplicationPrivate::platformIntegration()->usePlatformNativeDialog() && !(args.options & DontUseNativeDialog) && (options & ShowDirsOnly) -#if defined(Q_OS_WINCE) - && qt_priv_ptr_valid -#endif - ) { - return qt_win_get_existing_directory(args); - } -#endif - - // create a qt dialog QFileDialog dialog(args); if (dialog.exec() == QDialog::Accepted) { return dialog.selectedFiles().value(0); @@ -2609,15 +2560,20 @@ void QFileDialog::done(int result) void QFileDialog::accept() { Q_D(QFileDialog); - QStringList files = selectedFiles(); - if (files.isEmpty()) - return; if (!d->usingWidgets()) { - d->emitFilesSelected(files); + const QList<QUrl> urls = selectedUrls(); + if (urls.isEmpty()) + return; + d->_q_emitUrlsSelected(urls); + if (urls.count() == 1) + d->_q_emitUrlSelected(urls.first()); QDialog::accept(); return; } + QStringList files = selectedFiles(); + if (files.isEmpty()) + return; QString lineEditText = d->lineEdit()->text(); // "hidden feature" type .. and then enter, and it will move up a dir // special case for ".." @@ -2780,7 +2736,7 @@ void QFileDialogPrivate::createWidgets() qFileDialogUi->setupUi(q); QList<QUrl> initialBookmarks; - initialBookmarks << QUrl::fromLocalFile(QLatin1String("")) + initialBookmarks << QUrl(QLatin1String("file:")) << QUrl::fromLocalFile(QDir::homePath()); qFileDialogUi->sidebar->setModelAndUrls(model, initialBookmarks); QFileDialog::connect(qFileDialogUi->sidebar, SIGNAL(goToUrl(QUrl)), @@ -3648,7 +3604,7 @@ void QFileDialogPrivate::_q_fileRenamed(const QString &path, const QString oldNa } } -void QFileDialogPrivate::_q_nativeFileSelected(const QUrl &file) +void QFileDialogPrivate::_q_emitUrlSelected(const QUrl &file) { Q_Q(QFileDialog); emit q->urlSelected(file); @@ -3656,7 +3612,7 @@ void QFileDialogPrivate::_q_nativeFileSelected(const QUrl &file) emit q->fileSelected(file.toLocalFile()); } -void QFileDialogPrivate::_q_nativeFilesSelected(const QList<QUrl> &files) +void QFileDialogPrivate::_q_emitUrlsSelected(const QList<QUrl> &files) { Q_Q(QFileDialog); emit q->urlsSelected(files); @@ -3757,7 +3713,7 @@ void QFileDialogComboBox::showPopup() idx = idx.parent(); } // add "my computer" - list.append(QUrl::fromLocalFile(QLatin1String(""))); + list.append(QUrl(QLatin1String("file:"))); urlModel->addUrls(list, 0); idx = model()->index(model()->rowCount() - 1, 0); |