+/**
+ * Check that setting the directory view properties works.
+ */
+
+void DolphinViewTest_AllViewModes::testViewPropertySettings()
+{
+ // Create some files with different sizes and modification times to check the different sorting options
+ QDateTime now = QDateTime::currentDateTime();
+
+ createFile("a", "A file", now.addDays(-3));
+ createFile("b", "A larger file", now.addDays(0));
+ createDir("c", now.addDays(-2));
+ createFile("d", "The largest file in this directory", now.addDays(-1));
+ createFile("e", "An even larger file", now.addDays(-4));
+ createFile(".f");
+
+ reloadViewAndWait();
+
+ // First set all settings to the default.
+ m_view->setSorting(DolphinView::SortByName);
+ QCOMPARE(m_view->sorting(), DolphinView::SortByName);
+
+ m_view->setSortOrder(Qt::AscendingOrder);
+ QCOMPARE(m_view->sortOrder(), Qt::AscendingOrder);
+
+ m_view->setSortFoldersFirst(true);
+ QVERIFY(m_view->sortFoldersFirst());
+
+ m_view->setShowPreview(false);
+ QVERIFY(!m_view->showPreview());
+
+ m_view->setShowHiddenFiles(false);
+ QVERIFY(!m_view->showHiddenFiles());
+
+ if (mode() == DolphinView::ColumnView) {
+ // If the columns view is used, the view is empty before calling qApp->sendPostedEvents.
+ // It seems that some event needs to be processed to see the items in the view.
+ // TODO: Find out why this is needed for the columns view, but not for the other view modes.
+ qApp->sendPostedEvents();
+ }
+
+ /** Check that the sort order is correct for different kinds of settings */
+
+ // Sort by Name, ascending
+ QCOMPARE(m_view->sorting(), DolphinView::SortByName);
+ QCOMPARE(m_view->sortOrder(), Qt::AscendingOrder);
+ QCOMPARE(viewItems(), QStringList() << "c" << "a" << "b" << "d" << "e");
+
+ // Sort by Name, descending
+ m_view->setSortOrder(Qt::DescendingOrder);
+ QCOMPARE(m_view->sorting(), DolphinView::SortByName);
+ QCOMPARE(m_view->sortOrder(), Qt::DescendingOrder);
+ QCOMPARE(viewItems(), QStringList() << "c" << "e" << "d" << "b" << "a");
+
+ // Sort by Size, descending
+ m_view->setSorting(DolphinView::SortBySize);
+ QCOMPARE(m_view->sorting(), DolphinView::SortBySize);
+ QCOMPARE(m_view->sortOrder(), Qt::DescendingOrder);
+ QCOMPARE(viewItems(), QStringList() << "c" << "d" << "e" << "b" << "a");
+
+ // Sort by Size, ascending
+ m_view->setSortOrder(Qt::AscendingOrder);
+ QCOMPARE(m_view->sorting(), DolphinView::SortBySize);
+ QCOMPARE(m_view->sortOrder(), Qt::AscendingOrder);
+ QCOMPARE(viewItems(), QStringList() << "c" << "a" << "b" << "e" << "d");
+
+ // Sort by Date, ascending
+ m_view->setSorting(DolphinView::SortByDate);
+ QCOMPARE(m_view->sorting(), DolphinView::SortByDate);
+ QCOMPARE(m_view->sortOrder(), Qt::AscendingOrder);
+ QCOMPARE(viewItems(), QStringList() << "c" << "e" << "a" << "d" << "b");
+
+ // Sort by Date, descending
+ m_view->setSortOrder(Qt::DescendingOrder);
+ QCOMPARE(m_view->sorting(), DolphinView::SortByDate);
+ QCOMPARE(m_view->sortOrder(), Qt::DescendingOrder);
+ QCOMPARE(viewItems(), QStringList() << "c" << "b" << "d" << "a" << "e");
+
+ // Disable "Sort Folders First"
+ m_view->setSortFoldersFirst(false);
+ QVERIFY(!m_view->sortFoldersFirst());
+ QCOMPARE(viewItems(), QStringList()<< "b" << "d" << "c" << "a" << "e");
+
+ // Try again with Sort by Name, ascending
+ m_view->setSorting(DolphinView::SortByName);
+ m_view->setSortOrder(Qt::AscendingOrder);
+ QCOMPARE(m_view->sorting(), DolphinView::SortByName);
+ QCOMPARE(m_view->sortOrder(), Qt::AscendingOrder);
+ QCOMPARE(viewItems(), QStringList() << "a" << "b" << "c" << "d" << "e");
+
+ // Show hidden files. This triggers the dir lister
+ // -> we have to wait until loading the hidden files is finished
+ m_view->setShowHiddenFiles(true);
+ QVERIFY(QTest::kWaitForSignal(m_view, SIGNAL(finishedPathLoading(const KUrl&)), 2000));
+ QVERIFY(m_view->showHiddenFiles());
+ QCOMPARE(viewItems(), QStringList() << ".f" << "a" << "b" << "c" << "d" << "e");
+
+ // Previews
+ m_view->setShowPreview(true);
+ QVERIFY(m_view->showPreview());
+
+ // TODO: Check that the view properties are restored correctly when changing the folder and then going back.
+}
+
+/**
+ * testKeyboardFocus() checks whether a view grabs the keyboard focus.
+ *
+ * A view may never grab the keyboard focus itself and must respect the focus-state
+ * when switching the view mode.
+ */
+