]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Merge remote-tracking branch 'origin/KDE/4.11'
authorFrank Reininghaus <frank78ac@googlemail.com>
Mon, 9 Sep 2013 19:21:43 +0000 (21:21 +0200)
committerFrank Reininghaus <frank78ac@googlemail.com>
Mon, 9 Sep 2013 19:27:22 +0000 (21:27 +0200)
The most recent commit from the KDE/4.11 branch (new unit test) had to
be modified slightly due to the changed signal emission when resorting
the model changes only the groups, and not the order of the items
(groupsChaged instead of itemsMoved).

1  2 
src/dolphinviewcontainer.cpp
src/tests/kfileitemmodeltest.cpp

index 3ea81e4bad627d67046d10704372c976a5a57654,e7c571294be20f9ae13681be58a1de1f36762e62..cc26198a0f4f333bbae4078c641fcbe5fcb6feea
@@@ -98,6 -98,7 +98,7 @@@ DolphinViewContainer::DolphinViewContai
  
      m_searchBox = new DolphinSearchBox(this);
      m_searchBox->hide();
+     connect(m_searchBox, SIGNAL(activated()), this, SLOT(activate()));
      connect(m_searchBox, SIGNAL(closeRequest()), this, SLOT(closeSearchBox()));
      connect(m_searchBox, SIGNAL(searchRequest()), this, SLOT(startSearching()));
      connect(m_searchBox, SIGNAL(returnPressed(QString)), this, SLOT(requestFocus()));
@@@ -195,6 -196,7 +196,7 @@@ KUrl DolphinViewContainer::url() cons
  
  void DolphinViewContainer::setActive(bool active)
  {
+     m_searchBox->setActive(active);
      m_urlNavigator->setActive(active);
      m_view->setActive(active);
  
@@@ -506,7 -508,8 +508,7 @@@ void DolphinViewContainer::showItemInfo
      if (item.isNull()) {
          m_statusBar->resetToDefaultText();
      } else {
 -        const QString text = item.isDir() ? item.text() : item.getStatusBarInfo();
 -        m_statusBar->setText(text);
 +        m_statusBar->setText(item.getStatusBarInfo());
      }
  }
  
index 1d9646b3efb2a5175b71d41ceba21db3538a2bf8,b0a27cd01267628e0b7222ed1ffaedc782127df6..7979202469ca8b9a0e9bdec3e40c865f447d770d
@@@ -49,7 -49,6 +49,7 @@@ namespace 
      const int DefaultTimeout = 5000;
  };
  
 +Q_DECLARE_METATYPE(KItemRange)
  Q_DECLARE_METATYPE(KItemRangeList)
  Q_DECLARE_METATYPE(QList<int>)
  
@@@ -486,8 -485,7 +486,8 @@@ void KFileItemModelTest::testExpandItem
      // KFileItemModel::expansionLevelsCompare(const KFileItem& a, const KFileItem& b)
      // yields the correct result for "a/a/1" and "a/a-1/", whis is non-trivial because they share the
      // first three characters.
 -    QSet<QByteArray> modelRoles = m_model->roles();
 +    QSet<QByteArray> originalModelRoles = m_model->roles();
 +    QSet<QByteArray> modelRoles = originalModelRoles;
      modelRoles << "isExpanded" << "isExpandable" << "expandedParentsCount";
      m_model->setRoles(modelRoles);
  
      QVERIFY(QTest::kWaitForSignal(m_model, SIGNAL(directoryLoadingCompleted()), DefaultTimeout));
      QCOMPARE(m_model->count(), 5);  // 5 items: "a/", "a/a/", "a/a/1", "a/a-1/", "a/a-1/1"
      QCOMPARE(m_model->expandedDirectories(), allFolders);
 +
 +    // Remove all expanded items by changing the roles
 +    spyRemoved.clear();
 +    m_model->setRoles(originalModelRoles);
 +    QVERIFY(!m_model->isExpanded(0));
 +    QCOMPARE(m_model->count(), 1);
 +    QVERIFY(!m_model->expandedDirectories().contains(KUrl(m_testDir->name() + 'a')));
 +
 +    QCOMPARE(spyRemoved.count(), 1);
 +    itemRangeList = spyRemoved.takeFirst().at(0).value<KItemRangeList>();
 +    QCOMPARE(itemRangeList, KItemRangeList() << KItemRange(1, 4)); // 4 items removed
 +    QVERIFY(m_model->isConsistent());
  }
  
  void KFileItemModelTest::testExpandParentItems()
      QVERIFY(m_model->isExpanded(3));
      QVERIFY(!m_model->isExpanded(4));
      QVERIFY(m_model->isConsistent());
 +
 +    // Expand "a 1/b1/".
 +    m_model->setExpanded(1, true);
 +    QVERIFY(QTest::kWaitForSignal(m_model, SIGNAL(directoryLoadingCompleted()), DefaultTimeout));
 +    QCOMPARE(m_model->count(), 6);
 +    QVERIFY(m_model->isExpanded(0));
 +    QVERIFY(m_model->isExpanded(1));
 +    QVERIFY(!m_model->isExpanded(2));
 +    QVERIFY(m_model->isExpanded(3));
 +    QVERIFY(m_model->isExpanded(4));
 +    QVERIFY(!m_model->isExpanded(5));
 +    QVERIFY(m_model->isConsistent());
 +
 +    // Collapse "a 1/b1/" again, and verify that the previous state is restored.
 +    m_model->setExpanded(1, false);
 +    QCOMPARE(m_model->count(), 5);
 +    QVERIFY(m_model->isExpanded(0));
 +    QVERIFY(!m_model->isExpanded(1));
 +    QVERIFY(m_model->isExpanded(2));
 +    QVERIFY(m_model->isExpanded(3));
 +    QVERIFY(!m_model->isExpanded(4));
 +    QVERIFY(m_model->isConsistent());
  }
  
  /**
@@@ -780,8 -744,7 +780,8 @@@ void KFileItemModelTest::testSorting(
      QCOMPARE(m_model->sortOrder(), Qt::AscendingOrder);
      QCOMPARE(itemsInModel(), QStringList() << "a" << "b" << "c" << "c-1" << "c-2" << "c-3" << "d" << "e");
      QCOMPARE(spyItemsMoved.count(), 1);
 -    QCOMPARE(spyItemsMoved.takeFirst().at(1).value<QList<int> >(), QList<int>() << 2 << 4 << 5 << 3 << 0 << 1 << 6 << 7);
 +    QCOMPARE(spyItemsMoved.first().at(0).value<KItemRange>(), KItemRange(0, 6));
 +    QCOMPARE(spyItemsMoved.takeFirst().at(1).value<QList<int> >(), QList<int>() << 2 << 4 << 5 << 3 << 0 << 1);
  
      // Sort by Name, descending
      m_model->setSortDirectoriesFirst(true);
      QCOMPARE(m_model->sortOrder(), Qt::DescendingOrder);
      QCOMPARE(itemsInModel(), QStringList() << "c" << "c-2" << "c-3" << "c-1" << "e" << "d" << "b" << "a");
      QCOMPARE(spyItemsMoved.count(), 2);
 -    QCOMPARE(spyItemsMoved.takeFirst().at(1).value<QList<int> >(), QList<int>() << 4 << 5 << 0 << 3 << 1 << 2 << 6 << 7);
 -    QCOMPARE(spyItemsMoved.takeFirst().at(1).value<QList<int> >(), QList<int>() << 0 << 1 << 2 << 3 << 7 << 6 << 5 << 4);
 +    QCOMPARE(spyItemsMoved.first().at(0).value<KItemRange>(), KItemRange(0, 6));
 +    QCOMPARE(spyItemsMoved.takeFirst().at(1).value<QList<int> >(), QList<int>() << 4 << 5 << 0 << 3 << 1 << 2);
 +    QCOMPARE(spyItemsMoved.first().at(0).value<KItemRange>(), KItemRange(4, 4));
 +    QCOMPARE(spyItemsMoved.takeFirst().at(1).value<QList<int> >(), QList<int>() << 7 << 6 << 5 << 4);
  
      // Sort by Date, descending
      m_model->setSortDirectoriesFirst(true);
      QCOMPARE(m_model->sortOrder(), Qt::DescendingOrder);
      QCOMPARE(itemsInModel(), QStringList() << "c" << "c-2" << "c-3" << "c-1" << "b" << "d" << "a" << "e");
      QCOMPARE(spyItemsMoved.count(), 1);
 -    QCOMPARE(spyItemsMoved.takeFirst().at(1).value<QList<int> >(), QList<int>() << 0 << 1 << 2 << 3 << 7 << 5 << 4 << 6);
 +    QCOMPARE(spyItemsMoved.first().at(0).value<KItemRange>(), KItemRange(4, 4));
 +    QCOMPARE(spyItemsMoved.takeFirst().at(1).value<QList<int> >(), QList<int>() << 7 << 5 << 4 << 6);
  
      // Sort by Date, ascending
      m_model->setSortOrder(Qt::AscendingOrder);
      QCOMPARE(m_model->sortOrder(), Qt::AscendingOrder);
      QCOMPARE(itemsInModel(), QStringList() << "c" << "c-2" << "c-3" << "c-1" << "e" << "a" << "d" << "b");
      QCOMPARE(spyItemsMoved.count(), 1);
 -    QCOMPARE(spyItemsMoved.takeFirst().at(1).value<QList<int> >(), QList<int>() << 0 << 1 << 2 << 3 << 7 << 6 << 5 << 4);
 +    QCOMPARE(spyItemsMoved.first().at(0).value<KItemRange>(), KItemRange(4, 4));
 +    QCOMPARE(spyItemsMoved.takeFirst().at(1).value<QList<int> >(), QList<int>() << 7 << 6 << 5 << 4);
  
      // Sort by Date, ascending, 'Sort Folders First' disabled
      m_model->setSortDirectoriesFirst(false);
      QVERIFY(!m_model->sortDirectoriesFirst());
      QCOMPARE(itemsInModel(), QStringList() << "e" << "a" << "c" << "c-1" << "c-2" << "c-3" << "d" << "b");
      QCOMPARE(spyItemsMoved.count(), 1);
 -    QCOMPARE(spyItemsMoved.takeFirst().at(1).value<QList<int> >(), QList<int>() << 2 << 4 << 5 << 3 << 0 << 1 << 6 << 7);
 +    QCOMPARE(spyItemsMoved.first().at(0).value<KItemRange>(), KItemRange(0, 6));
 +    QCOMPARE(spyItemsMoved.takeFirst().at(1).value<QList<int> >(), QList<int>() << 2 << 4 << 5 << 3 << 0 << 1);
  
      // Sort by Name, ascending, 'Sort Folders First' disabled
      m_model->setSortRole("text");
      QVERIFY(!m_model->sortDirectoriesFirst());
      QCOMPARE(itemsInModel(), QStringList() << "a" << "b" << "c" << "c-1" << "c-2" << "c-3" << "d" << "e");
      QCOMPARE(spyItemsMoved.count(), 1);
 +    QCOMPARE(spyItemsMoved.first().at(0).value<KItemRange>(), KItemRange(0, 8));
      QCOMPARE(spyItemsMoved.takeFirst().at(1).value<QList<int> >(), QList<int>() << 7 << 0 << 2 << 3 << 4 << 5 << 6 << 1);
  
      // Sort by Size, ascending, 'Sort Folders First' disabled
      QVERIFY(!m_model->sortDirectoriesFirst());
      QCOMPARE(itemsInModel(), QStringList() << "c" << "c-2" << "c-3" << "c-1" << "a" << "b" << "e" << "d");
      QCOMPARE(spyItemsMoved.count(), 1);
 +    QCOMPARE(spyItemsMoved.first().at(0).value<KItemRange>(), KItemRange(0, 8));
      QCOMPARE(spyItemsMoved.takeFirst().at(1).value<QList<int> >(), QList<int>() << 4 << 5 << 0 << 3 << 1 << 2 << 7 << 6);
  
 -    QSKIP("2 tests of testSorting() are temporary deactivated as in KFileItemModel resortAllItems() "
 -          "always emits a itemsMoved() signal. Before adjusting the tests think about probably introducing "
 -          "another signal", SkipSingle);
 -    // Internal note: Check comment in KFileItemModel::resortAllItems() for details.
 -
      // In 'Sort by Size' mode, folders are always first -> changing 'Sort Folders First' does not resort the model
      m_model->setSortDirectoriesFirst(true);
      QCOMPARE(m_model->sortRole(), QByteArray("size"));
      QCOMPARE(m_model->sortOrder(), Qt::AscendingOrder);
      QVERIFY(m_model->sortDirectoriesFirst());
 -    QCOMPARE(itemsInModel(), QStringList() << "c" << "a" << "b" << "e" << "d");
 +    QCOMPARE(itemsInModel(), QStringList() << "c" << "c-2" << "c-3" << "c-1" << "a" << "b" << "e" << "d");
      QCOMPARE(spyItemsMoved.count(), 0);
  
      // Sort by Size, descending, 'Sort Folders First' enabled
      QCOMPARE(m_model->sortRole(), QByteArray("size"));
      QCOMPARE(m_model->sortOrder(), Qt::DescendingOrder);
      QVERIFY(m_model->sortDirectoriesFirst());
 -    QCOMPARE(itemsInModel(), QStringList() << "c" << "d" << "e" << "b" << "a");
 +    QCOMPARE(itemsInModel(), QStringList() << "c" << "c-2" << "c-3" << "c-1" << "d" << "e" << "b" << "a");
      QCOMPARE(spyItemsMoved.count(), 1);
 -    QCOMPARE(spyItemsMoved.takeFirst().at(1).value<QList<int> >(), QList<int>() << 0 << 4 << 3 << 2 << 1);
 +    QCOMPARE(spyItemsMoved.first().at(0).value<KItemRange>(), KItemRange(4, 4));
 +    QCOMPARE(spyItemsMoved.takeFirst().at(1).value<QList<int> >(), QList<int>() << 7 << 6 << 5 << 4);
  
      // TODO: Sort by other roles; show/hide hidden files
  }
@@@ -1277,7 -1237,7 +1277,7 @@@ void KFileItemModelTest::testNameRoleGr
      // Rename c.txt to d.txt.
      data.insert("text", "d.txt");
      m_model->setData(2, data);
 -    QVERIFY(QTest::kWaitForSignal(m_model, SIGNAL(itemsMoved(KItemRange,QList<int>)), DefaultTimeout));
 +    QVERIFY(QTest::kWaitForSignal(m_model, SIGNAL(groupsChanged()), DefaultTimeout));
      QCOMPARE(itemsInModel(), QStringList() << "a.txt" << "b.txt" << "d.txt" << "e.txt");
  
      expectedGroups.clear();
      expectedGroups << QPair<int, QVariant>(2, QLatin1String("D"));
      expectedGroups << QPair<int, QVariant>(3, QLatin1String("E"));
      QCOMPARE(m_model->groups(), expectedGroups);
 -    QVERIFY(QTest::kWaitForSignal(m_model, SIGNAL(itemsMoved(KItemRange,QList<int>)), DefaultTimeout));
+     // Change d.txt back to c.txt, but this time using the dir lister's refreshItems() signal.
+     const KFileItem fileItemD = m_model->fileItem(2);
+     KFileItem fileItemC = fileItemD;
+     KUrl urlC = fileItemC.url();
+     urlC.setFileName("c.txt");
+     fileItemC.setUrl(urlC);
+     m_model->slotRefreshItems(QList<QPair<KFileItem, KFileItem> >() << qMakePair(fileItemD, fileItemC));
++    QVERIFY(QTest::kWaitForSignal(m_model, SIGNAL(groupsChanged()), DefaultTimeout));
+     QCOMPARE(itemsInModel(), QStringList() << "a.txt" << "b.txt" << "c.txt" << "e.txt");
+     expectedGroups.clear();
+     expectedGroups << QPair<int, QVariant>(0, QLatin1String("A"));
+     expectedGroups << QPair<int, QVariant>(1, QLatin1String("B"));
+     expectedGroups << QPair<int, QVariant>(2, QLatin1String("C"));
+     expectedGroups << QPair<int, QVariant>(3, QLatin1String("E"));
+     QCOMPARE(m_model->groups(), expectedGroups);
  }
  
  QStringList KFileItemModelTest::itemsInModel() const