Fix PlacesItemModel loading with hidden devices

Summary:
Make sure that hidden devices loaded after module initialization does
not appear in the view.
Check for item visibility before add it on the model.

Test Plan: Unit test created

Reviewers: franckarrecot

Reviewed By: franckarrecot

Subscribers: cfeck, ervin, #dolphin

Differential Revision: https://phabricator.kde.org/D9441
This commit is contained in:
Renato Araujo Oliveira Filho 2017-12-20 15:26:35 -03:00
parent a6ed2e7b6b
commit 94b2b2a2db
2 changed files with 28 additions and 0 deletions

View file

@ -392,6 +392,10 @@ void PlacesItemModel::dropMimeDataBefore(int index, const QMimeData* mimeData)
void PlacesItemModel::addItemFromSourceModel(const QModelIndex &index)
{
if (!m_hiddenItemsShown && m_sourceModel->isHidden(index)) {
return;
}
const KBookmark bookmark = m_sourceModel->bookmarkForIndex(index);
Q_ASSERT(!bookmark.isNull());
PlacesItem *item = new PlacesItem(bookmark);

View file

@ -82,6 +82,7 @@ private slots:
void testIcons_data();
void testIcons();
void testDragAndDrop();
void testHideDevices();
private:
PlacesItemModel* m_model;
@ -758,6 +759,29 @@ void PlacesItemModelTest::testDragAndDrop()
CHECK_PLACES_URLS(urls);
}
void PlacesItemModelTest::testHideDevices()
{
QSignalSpy itemsRemoved(m_model, &PlacesItemModel::itemsRemoved);
QStringList urls = initialUrls();
m_model->setGroupHidden(KFilePlacesModel::RemovableDevicesType, true);
QTRY_VERIFY(m_model->isGroupHidden(KFilePlacesModel::RemovableDevicesType));
QTRY_COMPARE(itemsRemoved.count(), 3);
// remove removable-devices
urls.removeOne(QStringLiteral("/media/floppy0"));
urls.removeOne(QStringLiteral("/media/XO-Y4"));
urls.removeOne(QStringLiteral("/media/cdrom"));
// check if the correct urls was removed
CHECK_PLACES_URLS(urls);
delete m_model;
m_model = new PlacesItemModel();
QTRY_COMPARE(m_model->count(), urls.count());
CHECK_PLACES_URLS(urls);
}
QTEST_MAIN(PlacesItemModelTest)
#include "placesitemmodeltest.moc"