diff options
author | Oliver Eftevaag <oliver.eftevaag@qt.io> | 2022-07-06 18:26:01 +0200 |
---|---|---|
committer | Oliver Eftevaag <oliver.eftevaag@qt.io> | 2022-08-17 10:41:18 +0200 |
commit | b7ae0a90c162cd2f137b259e1336634c737973b6 (patch) | |
tree | 0dbd030a45b8c29cb7d81762371d19624fa5e83c /tests/auto/quickdialogs | |
parent | 58bae53237417f28eac6d772fa6ecab657f8a73f (diff) |
QQuickFileDialog: give non-native dialog a text field for filename
The non-native filedialog was missing a text input field that would
allow the user to easily set the filename in a filedialog with fileMode
set to SaveFile.
Pick-to: 6.4
Fixes: QTBUG-101502
Change-Id: Id800a1e34de0e65455409a7edc5fa2f5f13b4b19
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'tests/auto/quickdialogs')
-rw-r--r-- | tests/auto/quickdialogs/qquickfiledialogimpl/tst_qquickfiledialogimpl.cpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/tests/auto/quickdialogs/qquickfiledialogimpl/tst_qquickfiledialogimpl.cpp b/tests/auto/quickdialogs/qquickfiledialogimpl/tst_qquickfiledialogimpl.cpp index ae9db3dfd1..e7ff33eee1 100644 --- a/tests/auto/quickdialogs/qquickfiledialogimpl/tst_qquickfiledialogimpl.cpp +++ b/tests/auto/quickdialogs/qquickfiledialogimpl/tst_qquickfiledialogimpl.cpp @@ -86,6 +86,8 @@ private slots: void done(); void setSelectedFile_data(); void setSelectedFile(); + void selectNewFileViaTextField_data(); + void selectNewFileViaTextField(); private: QTemporaryDir tempDir; @@ -1370,6 +1372,48 @@ void tst_QQuickFileDialogImpl::setSelectedFile() } } +void tst_QQuickFileDialogImpl::selectNewFileViaTextField_data() +{ + fileMode_data(); +} +void tst_QQuickFileDialogImpl::selectNewFileViaTextField() +{ + QFETCH(QQuickFileDialog::FileMode, fileMode); + + // Open the dialog. + FileDialogTestHelper dialogHelper(this, "fileDialog.qml"); + dialogHelper.dialog->setFileMode(fileMode); + + if (fileMode == QQuickFileDialog::SaveFile) + dialogHelper.dialog->setSelectedFile(QUrl()); + + OPEN_QUICK_DIALOG(); + QQuickTest::qWaitForPolish(dialogHelper.window()); + + const QQuickTextField *fileNameTextField = + dialogHelper.quickDialog->findChild<QQuickTextField *>("fileNameTextField"); + QVERIFY(fileNameTextField); + + QVERIFY2(fileNameTextField->isVisible() == (fileMode == QQuickFileDialog::SaveFile), + "The TextField for file name should only be visible when the FileMode is 'SaveFile'"); + + if (fileMode == QQuickFileDialog::SaveFile) { + const QPoint textFieldCenterPos = + fileNameTextField->mapToScene({ fileNameTextField->width() / 2, fileNameTextField->height() / 2 }).toPoint(); + + QTest::mouseClick(dialogHelper.window(), Qt::LeftButton, Qt::NoModifier, textFieldCenterPos); + QTRY_VERIFY(fileNameTextField->hasActiveFocus()); + + const QByteArray newFileName("foo.txt"); + for (const auto &c : newFileName) + QTest::keyClick(dialogHelper.window(), c); + QTest::keyClick(dialogHelper.window(), Qt::Key_Enter); + + QTRY_COMPARE(fileNameTextField->text(), newFileName); + QCOMPARE(dialogHelper.dialog->selectedFile().fileName(), newFileName); + } +} + QTEST_MAIN(tst_QQuickFileDialogImpl) #include "tst_qquickfiledialogimpl.moc" |