tests/auto/qfiledialog2/tst_qfiledialog2.cpp
changeset 7 f7bc934e204c
parent 0 1918ee327afb
equal deleted inserted replaced
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"