aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorOliver Eftevaag <oliver.eftevaag@qt.io>2022-07-06 18:26:01 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2022-08-17 16:13:34 +0000
commitd6acd74c85617a096e59363f798ed41d60334b96 (patch)
tree21c1bcf6779833c12e3d51c80e1f4678d59b0797 /tests
parentdb390f4a82e108990ad3e73fb72d3e7f25897819 (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. Fixes: QTBUG-101502 Change-Id: Id800a1e34de0e65455409a7edc5fa2f5f13b4b19 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> (cherry picked from commit b7ae0a90c162cd2f137b259e1336634c737973b6) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/quickdialogs/qquickfiledialogimpl/tst_qquickfiledialogimpl.cpp44
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"