QVERIFY(!m_selectionManager->hasSelection());
QCOMPARE(m_selectionManager->selectedItems().count(), 0);
QCOMPARE(m_selectionManager->currentItem(), 0);
- QCOMPARE(m_selectionManager->anchorItem(), -1);
+ QCOMPARE(m_selectionManager->m_anchorItem, -1);
}
void KItemListSelectionManagerTest::testCurrentItemAnchorItem()
{
QSignalSpy spyCurrent(m_selectionManager, SIGNAL(currentChanged(int,int)));
- QSignalSpy spyAnchor(m_selectionManager, SIGNAL(anchorChanged(int,int)));
-
- m_selectionManager->setAnchoredSelectionActive(true);
- QVERIFY(m_selectionManager->isAnchoredSelectionActive());
// Set current item and check that the selection manager emits the currentChanged(int,int) signal correctly.
m_selectionManager->setCurrentItem(4);
QCOMPARE(qvariant_cast<int>(spyCurrent.at(0).at(0)), 4);
spyCurrent.takeFirst();
- // Set anchor item and check that the selection manager emits the anchorChanged(int,int) signal correctly.
- m_selectionManager->setAnchorItem(3);
- QCOMPARE(m_selectionManager->anchorItem(), 3);
- QCOMPARE(spyAnchor.count(), 1);
- QCOMPARE(qvariant_cast<int>(spyAnchor.at(0).at(0)), 3);
- spyAnchor.takeFirst();
-
- m_selectionManager->setAnchorItem(5);
- QCOMPARE(m_selectionManager->anchorItem(), 5);
- QCOMPARE(spyAnchor.count(), 1);
- QCOMPARE(qvariant_cast<int>(spyAnchor.at(0).at(0)), 5);
- QCOMPARE(qvariant_cast<int>(spyAnchor.at(0).at(1)), 3);
- spyAnchor.takeFirst();
+ // Begin an anchored selection.
+ m_selectionManager->beginAnchoredSelection(5);
+ QVERIFY(m_selectionManager->isAnchoredSelectionActive());
+ QCOMPARE(m_selectionManager->m_anchorItem, 5);
// Items between current and anchor should be selected now
QCOMPARE(m_selectionManager->selectedItems(), QSet<int>() << 4 << 5);
QCOMPARE(qvariant_cast<int>(spyCurrent.at(0).at(1)), 2);
spyCurrent.takeFirst();
- QCOMPARE(m_selectionManager->anchorItem(), 8);
- QCOMPARE(spyAnchor.count(), 1);
- QCOMPARE(qvariant_cast<int>(spyAnchor.at(0).at(0)), 8);
- QCOMPARE(qvariant_cast<int>(spyAnchor.at(0).at(1)), 5);
- spyAnchor.takeFirst();
+ QCOMPARE(m_selectionManager->m_anchorItem, 8);
QCOMPARE(m_selectionManager->selectedItems(), QSet<int>() << 5 << 6 << 7 << 8);
QVERIFY(m_selectionManager->hasSelection());
QCOMPARE(qvariant_cast<int>(spyCurrent.at(0).at(1)), 5);
spyCurrent.takeFirst();
- QCOMPARE(m_selectionManager->anchorItem(), 5);
- QCOMPARE(spyAnchor.count(), 1);
- QCOMPARE(qvariant_cast<int>(spyAnchor.at(0).at(0)), 5);
- QCOMPARE(qvariant_cast<int>(spyAnchor.at(0).at(1)), 8);
- spyAnchor.takeFirst();
+ QCOMPARE(m_selectionManager->m_anchorItem, 5);
QCOMPARE(m_selectionManager->selectedItems(), QSet<int>() << 2 << 3 << 4 << 5);
QVERIFY(m_selectionManager->hasSelection());
m_selectionManager->clearSelection();
QCOMPARE(m_selectionManager->selectedItems(), QSet<int>());
QVERIFY(!m_selectionManager->hasSelection());
+
+ m_selectionManager->endAnchoredSelection();
+ QVERIFY(!m_selectionManager->isAnchoredSelectionActive());
}
void KItemListSelectionManagerTest::testSetSelected_data()
{
m_selectionManager->beginAnchoredSelection(5);
QVERIFY(m_selectionManager->isAnchoredSelectionActive());
- QCOMPARE(m_selectionManager->anchorItem(), 5);
+ QCOMPARE(m_selectionManager->m_anchorItem, 5);
m_selectionManager->setCurrentItem(6);
QCOMPARE(m_selectionManager->currentItem(), 6);
// Start a new anchored selection that overlaps the previous one
m_selectionManager->beginAnchoredSelection(9);
QVERIFY(m_selectionManager->isAnchoredSelectionActive());
- QCOMPARE(m_selectionManager->anchorItem(), 9);
+ QCOMPARE(m_selectionManager->m_anchorItem, 9);
m_selectionManager->setCurrentItem(6);
QCOMPARE(m_selectionManager->currentItem(), 6);
NoChange,
InsertItems,
RemoveItems,
- EndAnchoredSelection
+ EndAnchoredSelection,
+ ToggleSelected
};
}
<< 2 << 3
<< (QSet<int>() << 2 << 3 << 5 << 6)
<< NoChange << KItemRangeList()
- << (QSet<int>() << 2 << 3 << 5 << 6);
+ << (QSet<int>() << 2 << 3 << 5 << 6);
QTest::newRow("Insert Items")
<< (QSet<int>() << 5 << 6)
<< QSet<int>()
<< EndAnchoredSelection << KItemRangeList()
<< QSet<int>();
+
+ QTest::newRow("Toggle selection")
+ << (QSet<int>() << 1 << 3 << 4)
+ << 6 << 8
+ << (QSet<int>() << 1 << 3 << 4 << 6 << 7 << 8)
+ << ToggleSelected << (KItemRangeList() << KItemRange(0, 10))
+ << (QSet<int>() << 0 << 2 << 5 << 9);
}
void KItemListSelectionManagerTest::testChangeSelection()
m_selectionManager->setCurrentItem(anchor);
m_selectionManager->beginAnchoredSelection(anchor);
m_selectionManager->setCurrentItem(current);
+ QCOMPARE(m_selectionManager->m_anchorItem, anchor);
+ QCOMPARE(m_selectionManager->currentItem(), current);
QCOMPARE(m_selectionManager->selectedItems(), expectedSelection);
QCOMPARE(m_selectionManager->hasSelection(), !expectedSelection.isEmpty());
if (expectedSelection == initialSelection) {
m_selectionManager->endAnchoredSelection();
QVERIFY(!m_selectionManager->isAnchoredSelectionActive());
break;
+ case ToggleSelected:
+ foreach(const KItemRange& range, changedItems) {
+ m_selectionManager->setSelected(range.index, range.count, KItemListSelectionManager::Toggle);
+ }
+ break;
case NoChange:
break;
}