mirror of
https://invent.kde.org/system/dolphin
synced 2024-11-05 18:47:12 +00:00
Merge remote-tracking branch 'origin/KDE/4.10'
This commit is contained in:
commit
fda88516e9
2 changed files with 45 additions and 4 deletions
|
@ -644,11 +644,11 @@ void KFileItemModel::onSortRoleChanged(const QByteArray& current, const QByteArr
|
||||||
Q_UNUSED(previous);
|
Q_UNUSED(previous);
|
||||||
m_sortRole = typeForRole(current);
|
m_sortRole = typeForRole(current);
|
||||||
|
|
||||||
#ifdef KFILEITEMMODEL_DEBUG
|
|
||||||
if (!m_requestRole[m_sortRole]) {
|
if (!m_requestRole[m_sortRole]) {
|
||||||
kWarning() << "The sort-role has been changed to a role that has not been received yet";
|
QSet<QByteArray> newRoles = m_roles;
|
||||||
|
newRoles << current;
|
||||||
|
setRoles(newRoles);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
resortAllItems();
|
resortAllItems();
|
||||||
}
|
}
|
||||||
|
|
|
@ -69,6 +69,7 @@ private slots:
|
||||||
void testSetData();
|
void testSetData();
|
||||||
void testSetDataWithModifiedSortRole_data();
|
void testSetDataWithModifiedSortRole_data();
|
||||||
void testSetDataWithModifiedSortRole();
|
void testSetDataWithModifiedSortRole();
|
||||||
|
void testChangeSortRole();
|
||||||
void testModelConsistencyWhenInsertingItems();
|
void testModelConsistencyWhenInsertingItems();
|
||||||
void testItemRangeConsistencyWhenInsertingItems();
|
void testItemRangeConsistencyWhenInsertingItems();
|
||||||
void testExpandItems();
|
void testExpandItems();
|
||||||
|
@ -277,6 +278,8 @@ void KFileItemModelTest::testSetDataWithModifiedSortRole()
|
||||||
// Changing the value of a sort-role must result in
|
// Changing the value of a sort-role must result in
|
||||||
// a reordering of the items.
|
// a reordering of the items.
|
||||||
QCOMPARE(m_model->sortRole(), QByteArray("text"));
|
QCOMPARE(m_model->sortRole(), QByteArray("text"));
|
||||||
|
m_model->setSortRole("rating");
|
||||||
|
QCOMPARE(m_model->sortRole(), QByteArray("rating"));
|
||||||
|
|
||||||
QStringList files;
|
QStringList files;
|
||||||
files << "a.txt" << "b.txt" << "c.txt";
|
files << "a.txt" << "b.txt" << "c.txt";
|
||||||
|
@ -302,7 +305,6 @@ void KFileItemModelTest::testSetDataWithModifiedSortRole()
|
||||||
ratingC.insert("rating", 6);
|
ratingC.insert("rating", 6);
|
||||||
m_model->setData(2, ratingC);
|
m_model->setData(2, ratingC);
|
||||||
|
|
||||||
m_model->setSortRole("rating");
|
|
||||||
QCOMPARE(m_model->data(0).value("rating").toInt(), 2);
|
QCOMPARE(m_model->data(0).value("rating").toInt(), 2);
|
||||||
QCOMPARE(m_model->data(1).value("rating").toInt(), 4);
|
QCOMPARE(m_model->data(1).value("rating").toInt(), 4);
|
||||||
QCOMPARE(m_model->data(2).value("rating").toInt(), 6);
|
QCOMPARE(m_model->data(2).value("rating").toInt(), 6);
|
||||||
|
@ -323,6 +325,45 @@ void KFileItemModelTest::testSetDataWithModifiedSortRole()
|
||||||
QVERIFY(m_model->isConsistent());
|
QVERIFY(m_model->isConsistent());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void KFileItemModelTest::testChangeSortRole()
|
||||||
|
{
|
||||||
|
QCOMPARE(m_model->sortRole(), QByteArray("text"));
|
||||||
|
|
||||||
|
QStringList files;
|
||||||
|
files << "a.txt" << "b.jpg" << "c.txt";
|
||||||
|
m_testDir->createFiles(files);
|
||||||
|
|
||||||
|
m_model->loadDirectory(m_testDir->url());
|
||||||
|
QVERIFY(QTest::kWaitForSignal(m_model, SIGNAL(itemsInserted(KItemRangeList)), DefaultTimeout));
|
||||||
|
QCOMPARE(itemsInModel(), QStringList() << "a.txt" << "b.jpg" << "c.txt");
|
||||||
|
|
||||||
|
// Simulate that KFileItemModelRolesUpdater determines the mime type.
|
||||||
|
// Resorting the files by 'type' will only work immediately if their
|
||||||
|
// mime types are known.
|
||||||
|
for (int index = 0; index < m_model->count(); ++index) {
|
||||||
|
m_model->fileItem(index).determineMimeType();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Now: sort by type.
|
||||||
|
QSignalSpy spyItemsMoved(m_model, SIGNAL(itemsMoved(KItemRange,QList<int>)));
|
||||||
|
m_model->setSortRole("type");
|
||||||
|
QCOMPARE(m_model->sortRole(), QByteArray("type"));
|
||||||
|
QVERIFY(!spyItemsMoved.isEmpty());
|
||||||
|
|
||||||
|
// The actual order of the files might depend on the translation of the
|
||||||
|
// result of KFileItem::mimeComment() in the user's language.
|
||||||
|
QStringList version1;
|
||||||
|
version1 << "b.jpg" << "a.txt" << "c.txt";
|
||||||
|
|
||||||
|
QStringList version2;
|
||||||
|
version2 << "a.txt" << "c.txt" << "b.jpg";
|
||||||
|
|
||||||
|
const bool ok1 = (itemsInModel() == version1);
|
||||||
|
const bool ok2 = (itemsInModel() == version2);
|
||||||
|
|
||||||
|
QVERIFY(ok1 || ok2);
|
||||||
|
}
|
||||||
|
|
||||||
void KFileItemModelTest::testModelConsistencyWhenInsertingItems()
|
void KFileItemModelTest::testModelConsistencyWhenInsertingItems()
|
||||||
{
|
{
|
||||||
//QSKIP("Temporary disabled", SkipSingle);
|
//QSKIP("Temporary disabled", SkipSingle);
|
||||||
|
|
Loading…
Reference in a new issue