QSet<KUrl> expectedExpandedUrls;
QCOMPARE(detailsView->expandedUrls(), expectedExpandedUrls);
- // Every time we expand a folder, we have to wait until the view has finished loading
- // its contents before we can expand further subfolders. We keep track of the reloading
- // using a signal spy.
- QSignalSpy spyFinishedPathLoading(&view, SIGNAL(finishedPathLoading(const KUrl&)));
-
// Expand URLs one by one and verify the result of DolphinDetailsView::expandedUrls()
QStringList itemsToExpand;
itemsToExpand << "b" << "b/a" << "b/a/c" << "b/c" << "c";
// Before we proceed, we have to make sure that the view has finished
// loading the contents of the expanded folder.
- while (spyFinishedPathLoading.isEmpty()) {
- QTest::qWait(10);
- }
- spyFinishedPathLoading.takeFirst();
+ QVERIFY(waitForFinishedPathLoading(&view));
}
// Collapse URLs one by one and verify the result of DolphinDetailsView::expandedUrls()
// Show hidden files. This triggers the dir lister
// -> we have to wait until loading the hidden files is finished
view.setShowHiddenFiles(true);
- QVERIFY(QTest::kWaitForSignal(&view, SIGNAL(finishedPathLoading(const KUrl&)), 2000));
+ QVERIFY(waitForFinishedPathLoading(&view));
QVERIFY(view.showHiddenFiles());
QCOMPARE(viewItems(&view), QStringList() << ".f" << "a" << "b" << "c" << "d" << "e");
// Change the URL
view.setUrl(dir.name() + "51");
- QVERIFY(QTest::kWaitForSignal(&view, SIGNAL(finishedPathLoading(const KUrl&)), 2000));
+ QVERIFY(waitForFinishedPathLoading(&view));
qApp->sendPostedEvents();
// Go back, but do not call DolphinView::restoreState()
view.setUrl(dir.url());
- QVERIFY(QTest::kWaitForSignal(&view, SIGNAL(finishedPathLoading(const KUrl&)), 2000));
+ QVERIFY(waitForFinishedPathLoading(&view));
qApp->sendPostedEvents();
// Verify that the view is scrolled to top-left corner and that item 45 is not the current item.
// Change the URL again
view.setUrl(dir.name() + "51");
- QVERIFY(QTest::kWaitForSignal(&view, SIGNAL(finishedPathLoading(const KUrl&)), 2000));
+ QVERIFY(waitForFinishedPathLoading(&view));
qApp->sendPostedEvents();
// Check that the current item and scroll position are correct if DolphinView::restoreState()
view.setUrl(dir.url());
QDataStream restoreStream(viewState);
view.restoreState(restoreStream);
- QVERIFY(QTest::kWaitForSignal(&view, SIGNAL(finishedPathLoading(const KUrl&)), 2000));
+ QVERIFY(waitForFinishedPathLoading(&view));
qApp->sendPostedEvents();
QCOMPARE(itemView(&view)->currentIndex(), index45);
return view->m_viewAccessor.itemView();
}
+bool TestBase::waitForFinishedPathLoading(DolphinView* view, int milliseconds)
+{
+ return QTest::kWaitForSignal(view, SIGNAL(finishedPathLoading(const KUrl&)), milliseconds);
+}
+
void TestBase::reloadViewAndWait(DolphinView* view)
{
view->reload();
- QVERIFY(QTest::kWaitForSignal(view, SIGNAL(finishedPathLoading(const KUrl&)), 2000));
+ QVERIFY(waitForFinishedPathLoading(view));
}
QStringList TestBase::viewItems(const DolphinView* view)
/** Returns the item view (icons, details, or columns) */
static QAbstractItemView* itemView(const DolphinView* view);
+ /**
+ * Waits until the view emits its finishedPathLoading(const KUrl&) signal.
+ * Returns false if it is not received within the given number of milliseconds.
+ */
+ static bool waitForFinishedPathLoading(DolphinView* view, int milliseconds=2000);
+
/** Reloads the view and waits for the finishedPathLoading(const KUrl&) signal. */
static void reloadViewAndWait(DolphinView* view);