changeset 7 | f7bc934e204c |
parent 0 | 1918ee327afb |
3:41300fa6a67c | 7:f7bc934e204c |
---|---|
1 /**************************************************************************** |
1 /**************************************************************************** |
2 ** |
2 ** |
3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). |
3 ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). |
4 ** All rights reserved. |
4 ** All rights reserved. |
5 ** Contact: Nokia Corporation (qt-info@nokia.com) |
5 ** Contact: Nokia Corporation (qt-info@nokia.com) |
6 ** |
6 ** |
7 ** This file is part of the test suite of the Qt Toolkit. |
7 ** This file is part of the test suite of the Qt Toolkit. |
8 ** |
8 ** |
85 { |
85 { |
86 setOption(QFileDialog::DontUseNativeDialog, true); |
86 setOption(QFileDialog::DontUseNativeDialog, true); |
87 } |
87 } |
88 }; |
88 }; |
89 |
89 |
90 class tst_QFiledialog : public QObject |
90 class tst_QFileDialog2 : public QObject |
91 { |
91 { |
92 Q_OBJECT |
92 Q_OBJECT |
93 |
93 |
94 public: |
94 public: |
95 tst_QFiledialog(); |
95 tst_QFileDialog2(); |
96 virtual ~tst_QFiledialog(); |
96 virtual ~tst_QFileDialog2(); |
97 |
97 |
98 public slots: |
98 public slots: |
99 void init(); |
99 void init(); |
100 void cleanup(); |
100 void cleanup(); |
101 |
101 |
114 void task227304_proxyOnFileDialog(); |
114 void task227304_proxyOnFileDialog(); |
115 void task227930_correctNavigationKeyboardBehavior(); |
115 void task227930_correctNavigationKeyboardBehavior(); |
116 #if defined(Q_OS_WIN) && !defined(Q_OS_WINCE) |
116 #if defined(Q_OS_WIN) && !defined(Q_OS_WINCE) |
117 void task226366_lowerCaseHardDriveWindows(); |
117 void task226366_lowerCaseHardDriveWindows(); |
118 #endif |
118 #endif |
119 void completionOnLevelAfterRoot(); |
|
119 void task233037_selectingDirectory(); |
120 void task233037_selectingDirectory(); |
120 void task235069_hideOnEscape(); |
121 void task235069_hideOnEscape(); |
121 void task236402_dontWatchDeletedDir(); |
122 void task236402_dontWatchDeletedDir(); |
122 void task203703_returnProperSeparator(); |
123 void task203703_returnProperSeparator(); |
123 void task228844_ensurePreviousSorting(); |
124 void task228844_ensurePreviousSorting(); |
128 void task254490_selectFileMultipleTimes(); |
129 void task254490_selectFileMultipleTimes(); |
129 void task257579_sideBarWithNonCleanUrls(); |
130 void task257579_sideBarWithNonCleanUrls(); |
130 void task259105_filtersCornerCases(); |
131 void task259105_filtersCornerCases(); |
131 |
132 |
132 void QTBUG4419_lineEditSelectAll(); |
133 void QTBUG4419_lineEditSelectAll(); |
134 void QTBUG6558_showDirsOnly(); |
|
135 void QTBUG4842_selectFilterWithHideNameFilterDetails(); |
|
133 |
136 |
134 private: |
137 private: |
135 QByteArray userSettings; |
138 QByteArray userSettings; |
136 }; |
139 }; |
137 |
140 |
138 tst_QFiledialog::tst_QFiledialog() |
141 tst_QFileDialog2::tst_QFileDialog2() |
139 { |
142 { |
140 #if defined(Q_OS_WINCE) |
143 #if defined(Q_OS_WINCE) |
141 qApp->setAutoMaximizeThreshold(-1); |
144 qApp->setAutoMaximizeThreshold(-1); |
142 #endif |
145 #endif |
143 } |
146 } |
144 |
147 |
145 tst_QFiledialog::~tst_QFiledialog() |
148 tst_QFileDialog2::~tst_QFileDialog2() |
146 { |
149 { |
147 } |
150 } |
148 |
151 |
149 void tst_QFiledialog::init() |
152 void tst_QFileDialog2::init() |
150 { |
153 { |
151 // Save the developers settings so they don't get mad when their sidebar folders are gone. |
154 // Save the developers settings so they don't get mad when their sidebar folders are gone. |
152 QSettings settings(QSettings::UserScope, QLatin1String("Trolltech")); |
155 QSettings settings(QSettings::UserScope, QLatin1String("Trolltech")); |
153 settings.beginGroup(QLatin1String("Qt")); |
156 settings.beginGroup(QLatin1String("Qt")); |
154 userSettings = settings.value(QLatin1String("filedialog")).toByteArray(); |
157 userSettings = settings.value(QLatin1String("filedialog")).toByteArray(); |
159 #if defined(Q_OS_WINCE) |
162 #if defined(Q_OS_WINCE) |
160 QTest::qWait(1000); |
163 QTest::qWait(1000); |
161 #endif |
164 #endif |
162 } |
165 } |
163 |
166 |
164 void tst_QFiledialog::cleanup() |
167 void tst_QFileDialog2::cleanup() |
165 { |
168 { |
166 QSettings settings(QSettings::UserScope, QLatin1String("Trolltech")); |
169 QSettings settings(QSettings::UserScope, QLatin1String("Trolltech")); |
167 settings.beginGroup(QLatin1String("Qt")); |
170 settings.beginGroup(QLatin1String("Qt")); |
168 settings.setValue(QLatin1String("filedialog"), userSettings); |
171 settings.setValue(QLatin1String("filedialog"), userSettings); |
169 } |
172 } |
170 |
173 |
171 void tst_QFiledialog::listRoot() |
174 void tst_QFileDialog2::listRoot() |
172 { |
175 { |
173 #if defined QT_BUILD_INTERNAL |
176 #if defined QT_BUILD_INTERNAL |
174 QFileInfoGatherer fileInfoGatherer; |
177 QFileInfoGatherer fileInfoGatherer; |
175 fileInfoGatherer.start(); |
178 fileInfoGatherer.start(); |
176 QTest::qWait(1500); |
179 QTest::qWait(1500); |
188 #endif |
191 #endif |
189 QCOMPARE(QFileInfoGatherer::fetchedRoot,true); |
192 QCOMPARE(QFileInfoGatherer::fetchedRoot,true); |
190 #endif |
193 #endif |
191 } |
194 } |
192 |
195 |
193 void tst_QFiledialog::heapCorruption() |
196 void tst_QFileDialog2::heapCorruption() |
194 { |
197 { |
195 QVector<QNonNativeFileDialog*> dialogs; |
198 QVector<QNonNativeFileDialog*> dialogs; |
196 for (int i=0; i < 10; i++) { |
199 for (int i=0; i < 10; i++) { |
197 QNonNativeFileDialog *f = new QNonNativeFileDialog(NULL); |
200 QNonNativeFileDialog *f = new QNonNativeFileDialog(NULL); |
198 dialogs << f; |
201 dialogs << f; |
199 } |
202 } |
200 qDeleteAll(dialogs); |
203 qDeleteAll(dialogs); |
201 } |
204 } |
202 |
205 |
203 struct FriendlyQFileDialog : public QFileDialog |
206 struct FriendlyQFileDialog : public QNonNativeFileDialog |
204 { |
207 { |
205 friend class tst_QFileDialog; |
208 friend class tst_QFileDialog2; |
206 Q_DECLARE_PRIVATE(QFileDialog) |
209 Q_DECLARE_PRIVATE(QFileDialog) |
207 }; |
210 }; |
208 |
211 |
209 |
212 |
210 void tst_QFiledialog::deleteDirAndFiles() |
213 void tst_QFileDialog2::deleteDirAndFiles() |
211 { |
214 { |
212 #if defined QT_BUILD_INTERNAL |
215 #if defined QT_BUILD_INTERNAL |
213 QString tempPath = QDir::tempPath() + '/' + "QFileDialogTestDir4FullDelete"; |
216 QString tempPath = QDir::tempPath() + '/' + "QFileDialogTestDir4FullDelete"; |
214 QDir dir; |
217 QDir dir; |
215 QVERIFY(dir.mkpath(tempPath + "/foo")); |
218 QVERIFY(dir.mkpath(tempPath + "/foo")); |
237 QTest::qWait(2000); |
240 QTest::qWait(2000); |
238 QVERIFY(!info.exists()); |
241 QVERIFY(!info.exists()); |
239 #endif |
242 #endif |
240 } |
243 } |
241 |
244 |
242 void tst_QFiledialog::filter() |
245 void tst_QFileDialog2::filter() |
243 { |
246 { |
244 QNonNativeFileDialog fd; |
247 QNonNativeFileDialog fd; |
245 QAction *hiddenAction = qFindChild<QAction*>(&fd, "qt_show_hidden_action"); |
248 QAction *hiddenAction = qFindChild<QAction*>(&fd, "qt_show_hidden_action"); |
246 QVERIFY(hiddenAction); |
249 QVERIFY(hiddenAction); |
247 QVERIFY(hiddenAction->isEnabled()); |
250 QVERIFY(hiddenAction->isEnabled()); |
250 filter |= QDir::Hidden; |
253 filter |= QDir::Hidden; |
251 fd.setFilter(filter); |
254 fd.setFilter(filter); |
252 QVERIFY(hiddenAction->isChecked()); |
255 QVERIFY(hiddenAction->isChecked()); |
253 } |
256 } |
254 |
257 |
255 void tst_QFiledialog::showNameFilterDetails() |
258 void tst_QFileDialog2::showNameFilterDetails() |
256 { |
259 { |
257 QNonNativeFileDialog fd; |
260 QNonNativeFileDialog fd; |
258 QComboBox *filters = qFindChild<QComboBox*>(&fd, "fileTypeCombo"); |
261 QComboBox *filters = qFindChild<QComboBox*>(&fd, "fileTypeCombo"); |
259 QVERIFY(filters); |
262 QVERIFY(filters); |
260 QVERIFY(fd.isNameFilterDetailsVisible()); |
263 QVERIFY(fd.isNameFilterDetailsVisible()); |
275 QCOMPARE(filters->itemText(0), filterChoices.at(0)); |
278 QCOMPARE(filters->itemText(0), filterChoices.at(0)); |
276 QCOMPARE(filters->itemText(1), filterChoices.at(1)); |
279 QCOMPARE(filters->itemText(1), filterChoices.at(1)); |
277 QCOMPARE(filters->itemText(2), filterChoices.at(2)); |
280 QCOMPARE(filters->itemText(2), filterChoices.at(2)); |
278 } |
281 } |
279 |
282 |
280 void tst_QFiledialog::unc() |
283 void tst_QFileDialog2::unc() |
281 { |
284 { |
282 #if defined(Q_OS_WIN) && !defined(Q_OS_WINCE) |
285 #if defined(Q_OS_WIN) && !defined(Q_OS_WINCE) |
283 // Only test UNC on Windows./ |
286 // Only test UNC on Windows./ |
284 QString dir("\\\\" + QtNetworkSettings::winServerName() + "\\testsharewritable"); |
287 QString dir("\\\\" + QtNetworkSettings::winServerName() + "\\testsharewritable"); |
285 #else |
288 #else |
290 QFileSystemModel *model = qFindChild<QFileSystemModel*>(&fd, "qt_filesystem_model"); |
293 QFileSystemModel *model = qFindChild<QFileSystemModel*>(&fd, "qt_filesystem_model"); |
291 QVERIFY(model); |
294 QVERIFY(model); |
292 QCOMPARE(model->index(fd.directory().absolutePath()), model->index(dir)); |
295 QCOMPARE(model->index(fd.directory().absolutePath()), model->index(dir)); |
293 } |
296 } |
294 |
297 |
295 void tst_QFiledialog::emptyUncPath() |
298 void tst_QFileDialog2::emptyUncPath() |
296 { |
299 { |
297 QNonNativeFileDialog fd; |
300 QNonNativeFileDialog fd; |
298 fd.show(); |
301 fd.show(); |
299 QLineEdit *lineEdit = qFindChild<QLineEdit*>(&fd, "fileNameEdit"); |
302 QLineEdit *lineEdit = qFindChild<QLineEdit*>(&fd, "fileNameEdit"); |
300 QVERIFY(lineEdit); |
303 QVERIFY(lineEdit); |
303 QTest::keyPress(lineEdit, Qt::Key_Backslash); |
306 QTest::keyPress(lineEdit, Qt::Key_Backslash); |
304 QFileSystemModel *model = qFindChild<QFileSystemModel*>(&fd, "qt_filesystem_model"); |
307 QFileSystemModel *model = qFindChild<QFileSystemModel*>(&fd, "qt_filesystem_model"); |
305 QVERIFY(model); |
308 QVERIFY(model); |
306 } |
309 } |
307 |
310 |
308 void tst_QFiledialog::task178897_minimumSize() |
311 void tst_QFileDialog2::task178897_minimumSize() |
309 { |
312 { |
310 QNonNativeFileDialog fd; |
313 QNonNativeFileDialog fd; |
311 QSize oldMs = fd.layout()->minimumSize(); |
314 QSize oldMs = fd.layout()->minimumSize(); |
312 QStringList history = fd.history(); |
315 QStringList history = fd.history(); |
313 history << QDir::toNativeSeparators("/verylongdirectory/" |
316 history << QDir::toNativeSeparators("/verylongdirectory/" |
317 |
320 |
318 QSize ms = fd.layout()->minimumSize(); |
321 QSize ms = fd.layout()->minimumSize(); |
319 QVERIFY(ms.width() <= oldMs.width()); |
322 QVERIFY(ms.width() <= oldMs.width()); |
320 } |
323 } |
321 |
324 |
322 void tst_QFiledialog::task180459_lastDirectory_data() |
325 void tst_QFileDialog2::task180459_lastDirectory_data() |
323 { |
326 { |
324 QTest::addColumn<QString>("path"); |
327 QTest::addColumn<QString>("path"); |
325 QTest::addColumn<QString>("directory"); |
328 QTest::addColumn<QString>("directory"); |
326 QTest::addColumn<bool>("isEnabled"); |
329 QTest::addColumn<bool>("isEnabled"); |
327 QTest::addColumn<QString>("result"); |
330 QTest::addColumn<QString>("result"); |
340 << QDir::tempPath() << true |
343 << QDir::tempPath() << true |
341 << QDir::tempPath() + QDir::separator() + "foo.txt"; |
344 << QDir::tempPath() + QDir::separator() + "foo.txt"; |
342 |
345 |
343 } |
346 } |
344 |
347 |
345 void tst_QFiledialog::task180459_lastDirectory() |
348 void tst_QFileDialog2::task180459_lastDirectory() |
346 { |
349 { |
347 //first visit the temp directory and close the dialog |
350 //first visit the temp directory and close the dialog |
348 QNonNativeFileDialog *dlg = new QNonNativeFileDialog(0, "", QDir::tempPath()); |
351 QNonNativeFileDialog *dlg = new QNonNativeFileDialog(0, "", QDir::tempPath()); |
349 QFileSystemModel *model = qFindChild<QFileSystemModel*>(dlg, "qt_filesystem_model"); |
352 QFileSystemModel *model = qFindChild<QFileSystemModel*>(dlg, "qt_filesystem_model"); |
350 QVERIFY(model); |
353 QVERIFY(model); |
444 sortProxy *proxyModel = new sortProxy(this); |
447 sortProxy *proxyModel = new sortProxy(this); |
445 setProxyModel(proxyModel); |
448 setProxyModel(proxyModel); |
446 } |
449 } |
447 }; |
450 }; |
448 |
451 |
449 void tst_QFiledialog::task227304_proxyOnFileDialog() |
452 void tst_QFileDialog2::task227304_proxyOnFileDialog() |
450 { |
453 { |
451 #if defined QT_BUILD_INTERNAL |
454 #if defined QT_BUILD_INTERNAL |
452 QNonNativeFileDialog fd(0, "", QDir::currentPath(), 0); |
455 QNonNativeFileDialog fd(0, "", QDir::currentPath(), 0); |
453 fd.setProxyModel(new FilterDirModel(QDir::currentPath())); |
456 fd.setProxyModel(new FilterDirModel(QDir::currentPath())); |
454 fd.show(); |
457 fd.show(); |
483 QTest::qWait(250); |
486 QTest::qWait(250); |
484 //We shouldn't crash |
487 //We shouldn't crash |
485 #endif |
488 #endif |
486 } |
489 } |
487 |
490 |
488 void tst_QFiledialog::task227930_correctNavigationKeyboardBehavior() |
491 void tst_QFileDialog2::task227930_correctNavigationKeyboardBehavior() |
489 { |
492 { |
490 QDir current = QDir::currentPath(); |
493 QDir current = QDir::currentPath(); |
491 current.mkdir("test"); |
494 current.mkdir("test"); |
492 current.cd("test"); |
495 current.cd("test"); |
493 QFile file("test/out.txt"); |
496 QFile file("test/out.txt"); |
522 current.rmdir("test"); |
525 current.rmdir("test"); |
523 current.rmdir("test2"); |
526 current.rmdir("test2"); |
524 } |
527 } |
525 |
528 |
526 #if defined(Q_OS_WIN) && !defined(Q_OS_WINCE) |
529 #if defined(Q_OS_WIN) && !defined(Q_OS_WINCE) |
527 void tst_QFiledialog::task226366_lowerCaseHardDriveWindows() |
530 void tst_QFileDialog2::task226366_lowerCaseHardDriveWindows() |
528 { |
531 { |
529 QNonNativeFileDialog fd; |
532 QNonNativeFileDialog fd; |
530 fd.setDirectory(QDir::root().path()); |
533 fd.setDirectory(QDir::root().path()); |
531 fd.show(); |
534 fd.show(); |
532 QLineEdit *edit = qFindChild<QLineEdit*>(&fd, "fileNameEdit"); |
535 QLineEdit *edit = qFindChild<QLineEdit*>(&fd, "fileNameEdit"); |
548 QTest::keyClick(edit->completer()->popup(), Qt::Key_Down); |
551 QTest::keyClick(edit->completer()->popup(), Qt::Key_Down); |
549 QCOMPARE(edit->text(), QString("C:")); |
552 QCOMPARE(edit->text(), QString("C:")); |
550 } |
553 } |
551 #endif |
554 #endif |
552 |
555 |
553 void tst_QFiledialog::task233037_selectingDirectory() |
556 void tst_QFileDialog2::completionOnLevelAfterRoot() |
557 { |
|
558 QNonNativeFileDialog fd; |
|
559 #if defined(Q_OS_WIN) && !defined(Q_OS_WINCE) |
|
560 fd.setDirectory("C:"); |
|
561 QDir current = fd.directory(); |
|
562 current.mkdir("completionOnLevelAfterRootTest"); |
|
563 #else |
|
564 fd.setFilter(QDir::Hidden | QDir::AllDirs | QDir::Files | QDir::System); |
|
565 fd.setDirectory("/"); |
|
566 QDir etc("/etc"); |
|
567 if (!etc.exists()) |
|
568 QSKIP("This test requires to have an etc directory under /", SkipAll); |
|
569 #endif |
|
570 fd.show(); |
|
571 QLineEdit *edit = qFindChild<QLineEdit*>(&fd, "fileNameEdit"); |
|
572 QTest::qWait(2000); |
|
573 #if defined(Q_OS_WIN) && !defined(Q_OS_WINCE) |
|
574 //I love testlib :D |
|
575 QTest::keyClick(edit, Qt::Key_C); |
|
576 QTest::keyClick(edit, Qt::Key_O); |
|
577 QTest::keyClick(edit, Qt::Key_M); |
|
578 QTest::keyClick(edit, Qt::Key_P); |
|
579 QTest::keyClick(edit, Qt::Key_L); |
|
580 #else |
|
581 QTest::keyClick(edit, Qt::Key_E); |
|
582 QTest::keyClick(edit, Qt::Key_T); |
|
583 #endif |
|
584 QTest::qWait(200); |
|
585 QTest::keyClick(edit->completer()->popup(), Qt::Key_Down); |
|
586 QTest::qWait(200); |
|
587 #if defined(Q_OS_WIN) && !defined(Q_OS_WINCE) |
|
588 QCOMPARE(edit->text(), QString("completionOnLevelAfterRootTest")); |
|
589 current.rmdir("completionOnLevelAfterRootTest"); |
|
590 #else |
|
591 QCOMPARE(edit->text(), QString("etc")); |
|
592 #endif |
|
593 } |
|
594 |
|
595 void tst_QFileDialog2::task233037_selectingDirectory() |
|
554 { |
596 { |
555 QDir current = QDir::currentPath(); |
597 QDir current = QDir::currentPath(); |
556 current.mkdir("test"); |
598 current.mkdir("test"); |
557 QNonNativeFileDialog fd; |
599 QNonNativeFileDialog fd; |
558 fd.setViewMode(QFileDialog::List); |
600 fd.setViewMode(QFileDialog::List); |
571 QVERIFY(button); |
613 QVERIFY(button); |
572 QCOMPARE(button->isEnabled(), true); |
614 QCOMPARE(button->isEnabled(), true); |
573 current.rmdir("test"); |
615 current.rmdir("test"); |
574 } |
616 } |
575 |
617 |
576 void tst_QFiledialog::task235069_hideOnEscape() |
618 void tst_QFileDialog2::task235069_hideOnEscape() |
577 { |
619 { |
578 QDir current = QDir::currentPath(); |
620 QDir current = QDir::currentPath(); |
579 QNonNativeFileDialog fd; |
621 QNonNativeFileDialog fd; |
580 fd.setViewMode(QFileDialog::List); |
622 fd.setViewMode(QFileDialog::List); |
581 fd.setDirectory(current.absolutePath()); |
623 fd.setDirectory(current.absolutePath()); |
593 QLineEdit *edit = qFindChild<QLineEdit*>(&fd2, "fileNameEdit"); |
635 QLineEdit *edit = qFindChild<QLineEdit*>(&fd2, "fileNameEdit"); |
594 QTest::keyClick(edit, Qt::Key_Escape); |
636 QTest::keyClick(edit, Qt::Key_Escape); |
595 QCOMPARE(fd2.isVisible(), false); |
637 QCOMPARE(fd2.isVisible(), false); |
596 } |
638 } |
597 |
639 |
598 void tst_QFiledialog::task236402_dontWatchDeletedDir() |
640 void tst_QFileDialog2::task236402_dontWatchDeletedDir() |
599 { |
641 { |
600 #if defined QT_BUILD_INTERNAL |
642 #if defined QT_BUILD_INTERNAL |
601 //THIS TEST SHOULD NOT DISPLAY WARNINGS |
643 //THIS TEST SHOULD NOT DISPLAY WARNINGS |
602 QDir current = QDir::currentPath(); |
644 QDir current = QDir::currentPath(); |
603 //make sure it is the first on the list |
645 //make sure it is the first on the list |
618 fd.d_func()->removeDirectory(current.absolutePath() + "/aaaaaaaaaa/"); |
660 fd.d_func()->removeDirectory(current.absolutePath() + "/aaaaaaaaaa/"); |
619 QTest::qWait(1000); |
661 QTest::qWait(1000); |
620 #endif |
662 #endif |
621 } |
663 } |
622 |
664 |
623 void tst_QFiledialog::task203703_returnProperSeparator() |
665 void tst_QFileDialog2::task203703_returnProperSeparator() |
624 { |
666 { |
625 QDir current = QDir::currentPath(); |
667 QDir current = QDir::currentPath(); |
626 current.mkdir("aaaaaaaaaaaaaaaaaa"); |
668 current.mkdir("aaaaaaaaaaaaaaaaaa"); |
627 QNonNativeFileDialog fd; |
669 QNonNativeFileDialog fd; |
628 fd.setDirectory(current.absolutePath()); |
670 fd.setDirectory(current.absolutePath()); |
643 QVERIFY(result.at(result.count() - 1) != '/'); |
685 QVERIFY(result.at(result.count() - 1) != '/'); |
644 QVERIFY(!result.contains('\\')); |
686 QVERIFY(!result.contains('\\')); |
645 current.rmdir("aaaaaaaaaaaaaaaaaa"); |
687 current.rmdir("aaaaaaaaaaaaaaaaaa"); |
646 } |
688 } |
647 |
689 |
648 void tst_QFiledialog::task228844_ensurePreviousSorting() |
690 void tst_QFileDialog2::task228844_ensurePreviousSorting() |
649 { |
691 { |
650 QDir current = QDir::currentPath(); |
692 QDir current = QDir::currentPath(); |
651 current.mkdir("aaaaaaaaaaaaaaaaaa"); |
693 current.mkdir("aaaaaaaaaaaaaaaaaa"); |
652 current.cd("aaaaaaaaaaaaaaaaaa"); |
694 current.cd("aaaaaaaaaaaaaaaaaa"); |
653 current.mkdir("a"); |
695 current.mkdir("a"); |
745 current.cdUp(); |
787 current.cdUp(); |
746 current.rmdir("aaaaaaaaaaaaaaaaaa"); |
788 current.rmdir("aaaaaaaaaaaaaaaaaa"); |
747 } |
789 } |
748 |
790 |
749 |
791 |
750 void tst_QFiledialog::task239706_editableFilterCombo() |
792 void tst_QFileDialog2::task239706_editableFilterCombo() |
751 { |
793 { |
752 QNonNativeFileDialog d; |
794 QNonNativeFileDialog d; |
753 d.setNameFilter("*.cpp *.h"); |
795 d.setNameFilter("*.cpp *.h"); |
754 |
796 |
755 d.show(); |
797 d.show(); |
768 QTest::mouseClick(filterCombo, Qt::LeftButton); |
810 QTest::mouseClick(filterCombo, Qt::LeftButton); |
769 QTest::keyPress(filterCombo, Qt::Key_X); |
811 QTest::keyPress(filterCombo, Qt::Key_X); |
770 QTest::keyPress(filterCombo, Qt::Key_Enter); // should not trigger assertion failure |
812 QTest::keyPress(filterCombo, Qt::Key_Enter); // should not trigger assertion failure |
771 } |
813 } |
772 |
814 |
773 void tst_QFiledialog::task218353_relativePaths() |
815 void tst_QFileDialog2::task218353_relativePaths() |
774 { |
816 { |
775 QDir appDir = QDir::current(); |
817 QDir appDir = QDir::current(); |
776 QVERIFY(appDir.cdUp() != false); |
818 QVERIFY(appDir.cdUp() != false); |
777 QNonNativeFileDialog d(0, "TestDialog", ".."); |
819 QNonNativeFileDialog d(0, "TestDialog", ".."); |
778 QCOMPARE(d.directory().absolutePath(), appDir.absolutePath()); |
820 QCOMPARE(d.directory().absolutePath(), appDir.absolutePath()); |
785 d.setDirectory(appDir.absolutePath() + QLatin1String("/test/../test/../")); |
827 d.setDirectory(appDir.absolutePath() + QLatin1String("/test/../test/../")); |
786 QCOMPARE(d.directory().absolutePath(), appDir.absolutePath()); |
828 QCOMPARE(d.directory().absolutePath(), appDir.absolutePath()); |
787 appDir.rmdir("test"); |
829 appDir.rmdir("test"); |
788 } |
830 } |
789 |
831 |
790 void tst_QFiledialog::task251321_sideBarHiddenEntries() |
832 void tst_QFileDialog2::task251321_sideBarHiddenEntries() |
791 { |
833 { |
792 #if defined QT_BUILD_INTERNAL |
834 #if defined QT_BUILD_INTERNAL |
793 QNonNativeFileDialog fd; |
835 QNonNativeFileDialog fd; |
794 |
836 |
795 QDir current = QDir::currentPath(); |
837 QDir current = QDir::currentPath(); |
845 model()->removeRow(indexes.at(i).row()); |
887 model()->removeRow(indexes.at(i).row()); |
846 } |
888 } |
847 }; |
889 }; |
848 #endif |
890 #endif |
849 |
891 |
850 void tst_QFiledialog::task251341_sideBarRemoveEntries() |
892 void tst_QFileDialog2::task251341_sideBarRemoveEntries() |
851 { |
893 { |
852 #if defined QT_BUILD_INTERNAL |
894 #if defined QT_BUILD_INTERNAL |
853 QNonNativeFileDialog fd; |
895 QNonNativeFileDialog fd; |
854 |
896 |
855 QDir current = QDir::currentPath(); |
897 QDir current = QDir::currentPath(); |
910 |
952 |
911 current.rmdir("testDir"); |
953 current.rmdir("testDir"); |
912 #endif |
954 #endif |
913 } |
955 } |
914 |
956 |
915 void tst_QFiledialog::task254490_selectFileMultipleTimes() |
957 void tst_QFileDialog2::task254490_selectFileMultipleTimes() |
916 { |
958 { |
917 QString tempPath = QDir::tempPath(); |
959 QString tempPath = QDir::tempPath(); |
918 QTemporaryFile *t; |
960 QTemporaryFile *t; |
919 t = new QTemporaryFile; |
961 t = new QTemporaryFile; |
920 t->open(); |
962 t->open(); |
942 QCOMPARE(list->selectionModel()->selectedRows(0).count(), 0); |
984 QCOMPARE(list->selectionModel()->selectedRows(0).count(), 0); |
943 |
985 |
944 t->deleteLater(); |
986 t->deleteLater(); |
945 } |
987 } |
946 |
988 |
947 void tst_QFiledialog::task257579_sideBarWithNonCleanUrls() |
989 void tst_QFileDialog2::task257579_sideBarWithNonCleanUrls() |
948 { |
990 { |
949 #if defined QT_BUILD_INTERNAL |
991 #if defined QT_BUILD_INTERNAL |
950 QDir tempDir = QDir::temp(); |
992 QDir tempDir = QDir::temp(); |
951 QLatin1String dirname("autotest_task257579"); |
993 QLatin1String dirname("autotest_task257579"); |
952 tempDir.rmdir(dirname); //makes sure it doesn't exist any more |
994 tempDir.rmdir(dirname); //makes sure it doesn't exist any more |
968 //all tests are finished, we can remove the temporary dir |
1010 //all tests are finished, we can remove the temporary dir |
969 QVERIFY(tempDir.rmdir(dirname)); |
1011 QVERIFY(tempDir.rmdir(dirname)); |
970 #endif |
1012 #endif |
971 } |
1013 } |
972 |
1014 |
973 void tst_QFiledialog::task259105_filtersCornerCases() |
1015 void tst_QFileDialog2::task259105_filtersCornerCases() |
974 { |
1016 { |
975 QNonNativeFileDialog fd(0, "TestFileDialog"); |
1017 QNonNativeFileDialog fd(0, "TestFileDialog"); |
976 fd.setNameFilter(QLatin1String("All Files! (*);;Text Files (*.txt)")); |
1018 fd.setNameFilter(QLatin1String("All Files! (*);;Text Files (*.txt)")); |
977 fd.setOption(QFileDialog::HideNameFilterDetails, true); |
1019 fd.setOption(QFileDialog::HideNameFilterDetails, true); |
978 fd.show(); |
1020 fd.show(); |
1012 QCOMPARE(filters->currentText(), QLatin1String("\352 (I like cheese) All Files!")); |
1054 QCOMPARE(filters->currentText(), QLatin1String("\352 (I like cheese) All Files!")); |
1013 filters->setCurrentIndex(1); |
1055 filters->setCurrentIndex(1); |
1014 QCOMPARE(filters->currentText(), QLatin1String("Text Files")); |
1056 QCOMPARE(filters->currentText(), QLatin1String("Text Files")); |
1015 } |
1057 } |
1016 |
1058 |
1017 void tst_QFiledialog::QTBUG4419_lineEditSelectAll() |
1059 void tst_QFileDialog2::QTBUG4419_lineEditSelectAll() |
1018 { |
1060 { |
1019 QString tempPath = QDir::tempPath(); |
1061 QString tempPath = QDir::tempPath(); |
1020 QTemporaryFile *t; |
1062 QTemporaryFile *t; |
1021 t = new QTemporaryFile; |
1063 t = new QTemporaryFile; |
1022 t->open(); |
1064 t->open(); |
1038 |
1080 |
1039 QCOMPARE(tempPath + QChar('/') + lineEdit->text(), t->fileName()); |
1081 QCOMPARE(tempPath + QChar('/') + lineEdit->text(), t->fileName()); |
1040 QCOMPARE(tempPath + QChar('/') + lineEdit->selectedText(), t->fileName()); |
1082 QCOMPARE(tempPath + QChar('/') + lineEdit->selectedText(), t->fileName()); |
1041 } |
1083 } |
1042 |
1084 |
1043 QTEST_MAIN(tst_QFiledialog) |
1085 void tst_QFileDialog2::QTBUG6558_showDirsOnly() |
1086 { |
|
1087 const QString tempPath = QDir::tempPath(); |
|
1088 QDir dirTemp(tempPath); |
|
1089 const QString tempName = QLatin1String("showDirsOnly.") + QString::number(qrand()); |
|
1090 dirTemp.mkdir(tempName); |
|
1091 dirTemp.cd(tempName); |
|
1092 QTRY_VERIFY(dirTemp.exists()); |
|
1093 |
|
1094 const QString dirPath = dirTemp.absolutePath(); |
|
1095 QDir dir(dirPath); |
|
1096 |
|
1097 //We create two dirs |
|
1098 dir.mkdir("a"); |
|
1099 dir.mkdir("b"); |
|
1100 |
|
1101 //Create a file |
|
1102 QFile tempFile(dirPath + "/plop.txt"); |
|
1103 tempFile.open(QIODevice::WriteOnly | QIODevice::Text); |
|
1104 QTextStream out(&tempFile); |
|
1105 out << "The magic number is: " << 49 << "\n"; |
|
1106 tempFile.close(); |
|
1107 |
|
1108 QNonNativeFileDialog fd(0, "TestFileDialog"); |
|
1109 |
|
1110 fd.setDirectory(dir.absolutePath()); |
|
1111 fd.setViewMode(QFileDialog::List); |
|
1112 fd.setAcceptMode(QFileDialog::AcceptSave); |
|
1113 fd.setOption(QFileDialog::ShowDirsOnly, true); |
|
1114 fd.show(); |
|
1115 |
|
1116 QApplication::setActiveWindow(&fd); |
|
1117 QTest::qWaitForWindowShown(&fd); |
|
1118 QTRY_COMPARE(fd.isVisible(), true); |
|
1119 QTRY_COMPARE(QApplication::activeWindow(), static_cast<QWidget*>(&fd)); |
|
1120 |
|
1121 QFileSystemModel *model = qFindChild<QFileSystemModel*>(&fd, "qt_filesystem_model"); |
|
1122 QTRY_COMPARE(model->rowCount(model->index(dir.absolutePath())), 2); |
|
1123 |
|
1124 fd.setOption(QFileDialog::ShowDirsOnly, false); |
|
1125 QTRY_COMPARE(model->rowCount(model->index(dir.absolutePath())), 3); |
|
1126 |
|
1127 fd.setOption(QFileDialog::ShowDirsOnly, true); |
|
1128 QTRY_COMPARE(model->rowCount(model->index(dir.absolutePath())), 2); |
|
1129 |
|
1130 fd.setFileMode(QFileDialog::DirectoryOnly); |
|
1131 QTRY_COMPARE(model->rowCount(model->index(dir.absolutePath())), 2); |
|
1132 QTRY_COMPARE(bool(fd.options() & QFileDialog::ShowDirsOnly), true); |
|
1133 |
|
1134 fd.setFileMode(QFileDialog::AnyFile); |
|
1135 QTRY_COMPARE(model->rowCount(model->index(dir.absolutePath())), 3); |
|
1136 QTRY_COMPARE(bool(fd.options() & QFileDialog::ShowDirsOnly), false); |
|
1137 |
|
1138 fd.setDirectory(QDir::homePath()); |
|
1139 |
|
1140 //We remove the dirs |
|
1141 dir.rmdir("a"); |
|
1142 dir.rmdir("b"); |
|
1143 |
|
1144 //we delete the file |
|
1145 tempFile.remove(); |
|
1146 |
|
1147 dirTemp.cdUp(); |
|
1148 dirTemp.rmdir(tempName); |
|
1149 } |
|
1150 |
|
1151 void tst_QFileDialog2::QTBUG4842_selectFilterWithHideNameFilterDetails() |
|
1152 { |
|
1153 QStringList filtersStr; |
|
1154 filtersStr << "Images (*.png *.xpm *.jpg)" << "Text files (*.txt)" << "XML files (*.xml)"; |
|
1155 QString chosenFilterString("Text files (*.txt)"); |
|
1156 |
|
1157 QNonNativeFileDialog fd(0, "TestFileDialog"); |
|
1158 fd.setAcceptMode(QFileDialog::AcceptSave); |
|
1159 fd.setOption(QFileDialog::HideNameFilterDetails, true); |
|
1160 fd.setNameFilters(filtersStr); |
|
1161 fd.selectNameFilter(chosenFilterString); |
|
1162 fd.show(); |
|
1163 |
|
1164 QApplication::setActiveWindow(&fd); |
|
1165 QTest::qWaitForWindowShown(&fd); |
|
1166 QTRY_COMPARE(fd.isVisible(), true); |
|
1167 QTRY_COMPARE(QApplication::activeWindow(), static_cast<QWidget*>(&fd)); |
|
1168 |
|
1169 QComboBox *filters = qFindChild<QComboBox*>(&fd, "fileTypeCombo"); |
|
1170 //We compare the current combobox text with the stripped version |
|
1171 QCOMPARE(filters->currentText(), QString("Text files")); |
|
1172 |
|
1173 QNonNativeFileDialog fd2(0, "TestFileDialog"); |
|
1174 fd2.setAcceptMode(QFileDialog::AcceptSave); |
|
1175 fd2.setOption(QFileDialog::HideNameFilterDetails, false); |
|
1176 fd2.setNameFilters(filtersStr); |
|
1177 fd2.selectNameFilter(chosenFilterString); |
|
1178 fd2.show(); |
|
1179 |
|
1180 QApplication::setActiveWindow(&fd2); |
|
1181 QTest::qWaitForWindowShown(&fd2); |
|
1182 QTRY_COMPARE(fd2.isVisible(), true); |
|
1183 QTRY_COMPARE(QApplication::activeWindow(), static_cast<QWidget*>(&fd2)); |
|
1184 |
|
1185 QComboBox *filters2 = qFindChild<QComboBox*>(&fd2, "fileTypeCombo"); |
|
1186 //We compare the current combobox text with the non stripped version |
|
1187 QCOMPARE(filters2->currentText(), chosenFilterString); |
|
1188 |
|
1189 } |
|
1190 |
|
1191 QTEST_MAIN(tst_QFileDialog2) |
|
1044 #include "tst_qfiledialog2.moc" |
1192 #include "tst_qfiledialog2.moc" |