X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/a48679b36b876815fccab3ab8559734f29372907..72fb2ca0a83deef9c1cbd99e45759d4b49f131ad:/src/tests/dolphinviewtest_allviewmodes.cpp diff --git a/src/tests/dolphinviewtest_allviewmodes.cpp b/src/tests/dolphinviewtest_allviewmodes.cpp index d1557be05..45f4cb56b 100644 --- a/src/tests/dolphinviewtest_allviewmodes.cpp +++ b/src/tests/dolphinviewtest_allviewmodes.cpp @@ -1,21 +1,21 @@ -/*************************************************************************** - * Copyright (C) 2010 by Frank Reininghaus (frank78ac@googlemail.com) * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * - ***************************************************************************/ +/***************************************************************************** + * Copyright (C) 2010-2011 by Frank Reininghaus (frank78ac@googlemail.com) * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * + *****************************************************************************/ #include "dolphinviewtest_allviewmodes.h" @@ -37,6 +37,13 @@ DolphinViewTest_AllViewModes::DolphinViewTest_AllViewModes() { } void DolphinViewTest_AllViewModes::init() { + if (mode() == DolphinView::ColumnView) { + // In Columns View mode, we need to create a new DolphinView after each + // test to make the file-related tests after the first one pass. + // TODO: Try to find out if there is a hidden bug in the Columns View that causes this. + delete m_view; + m_view = new DolphinView(KUrl(m_path), 0); + } m_view->setMode(mode()); QVERIFY(verifyCorrectViewMode()); m_view->resize(200, 300); @@ -109,18 +116,126 @@ void DolphinViewTest_AllViewModes::testSelection() { verifySelectedItemsCount(5); } +/** + * 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()); + + /** 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. + * when switching the view mode, see + * + * https://bugs.kde.org/show_bug.cgi?id=261147 */ void DolphinViewTest_AllViewModes::testKeyboardFocus() { const DolphinView::Mode mode = m_view->mode(); + // Move keyboard focus to another widget. To see that this is needed, run only this test, + // i.e., pass 'testKeyboardFocus' as a parameter on the command line. + QWidget widget; + widget.show(); + QTest::qWaitForWindowShown(&widget); + widget.setFocus(); + QVERIFY(!m_view->hasFocus()); + + // Switch view modes and verify that the view does not get the focus back for (int i = 0; i <= DolphinView::MaxModeEnum; ++i) { m_view->setMode(static_cast(i)); QVERIFY(!m_view->hasFocus());