mirror of
https://invent.kde.org/system/dolphin
synced 2024-11-05 18:47:12 +00:00
Include parent-child relationships in KFileItemModel's consistency check
This commit is contained in:
parent
03e0c3066b
commit
234ed72985
2 changed files with 21 additions and 1 deletions
|
@ -2018,12 +2018,12 @@ void KFileItemModel::determineMimeTypes(const KFileItemList& items, int timeout)
|
|||
|
||||
bool KFileItemModel::isConsistent() const
|
||||
{
|
||||
// Check that m_items and m_itemData are consistent, and that the items are sorted.
|
||||
if (m_items.count() != m_itemData.count()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for (int i = 0; i < count(); ++i) {
|
||||
// Check if m_items and m_itemData are consistent.
|
||||
const KFileItem item = fileItem(i);
|
||||
if (item.isNull()) {
|
||||
qWarning() << "Item" << i << "is null";
|
||||
|
@ -2036,11 +2036,28 @@ bool KFileItemModel::isConsistent() const
|
|||
return false;
|
||||
}
|
||||
|
||||
// Check if the items are sorted correctly.
|
||||
if (i > 0 && !lessThan(m_itemData.at(i - 1), m_itemData.at(i))) {
|
||||
qWarning() << "The order of items" << i - 1 << "and" << i << "is wrong:"
|
||||
<< fileItem(i - 1) << fileItem(i);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check if all parent-child relationships are consistent.
|
||||
const ItemData* data = m_itemData.at(i);
|
||||
const ItemData* parent = data->parent;
|
||||
if (parent) {
|
||||
if (data->values.value("expandedParentsCount").toInt() != parent->values.value("expandedParentsCount").toInt() + 1) {
|
||||
qWarning() << "expandedParentsCount is inconsistent for parent" << parent->item << "and child" << data->item;
|
||||
return false;
|
||||
}
|
||||
|
||||
const int parentIndex = index(parent->item);
|
||||
if (parentIndex >= i) {
|
||||
qWarning() << "Index" << parentIndex << "of parent" << parent->item << "is not smaller than index" << i << "of child" << data->item;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
|
|
|
@ -486,6 +486,7 @@ void KFileItemModelTest::testExpandItems()
|
|||
QCOMPARE(spyRemoved.count(), 1);
|
||||
itemRangeList = spyRemoved.takeFirst().at(0).value<KItemRangeList>();
|
||||
QCOMPARE(itemRangeList, KItemRangeList() << KItemRange(1, 4)); // 4 items removed
|
||||
QVERIFY(m_model->isConsistent());
|
||||
|
||||
// Clear the model, reload the folder and try to restore the expanded folders.
|
||||
m_model->clear();
|
||||
|
@ -502,6 +503,7 @@ void KFileItemModelTest::testExpandItems()
|
|||
QVERIFY(m_model->isExpanded(3));
|
||||
QVERIFY(!m_model->isExpanded(4));
|
||||
QCOMPARE(m_model->expandedDirectories(), allFolders);
|
||||
QVERIFY(m_model->isConsistent());
|
||||
|
||||
// Move to a sub folder, then call restoreExpandedFolders() *before* going back.
|
||||
// This is how DolphinView restores the expanded folders when navigating in history.
|
||||
|
@ -564,6 +566,7 @@ void KFileItemModelTest::testExpandParentItems()
|
|||
QVERIFY(m_model->isExpanded(2));
|
||||
QVERIFY(m_model->isExpanded(3));
|
||||
QVERIFY(!m_model->isExpanded(4));
|
||||
QVERIFY(m_model->isConsistent());
|
||||
}
|
||||
|
||||
void KFileItemModelTest::testSorting()
|
||||
|
|
Loading…
Reference in a new issue