diff options
| author | Renato Araujo Oliveira Filho <[email protected]> | 2017-12-20 15:26:35 -0300 |
|---|---|---|
| committer | Renato Araujo Oliveira Filho <[email protected]> | 2018-01-08 08:52:38 -0300 |
| commit | 94b2b2a2dbd3b861f74277b273ab268f28e8678a (patch) | |
| tree | 332e483d1b6a16ee4ff85bc17c98afad8a10e960 | |
| parent | a6ed2e7b6b6499c32f47d484f8deb47c505cddbc (diff) | |
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
| -rw-r--r-- | src/panels/places/placesitemmodel.cpp | 4 | ||||
| -rw-r--r-- | src/tests/placesitemmodeltest.cpp | 24 |
2 files changed, 28 insertions, 0 deletions
diff --git a/src/panels/places/placesitemmodel.cpp b/src/panels/places/placesitemmodel.cpp index 577596c74..b23877629 100644 --- a/src/panels/places/placesitemmodel.cpp +++ b/src/panels/places/placesitemmodel.cpp @@ -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); diff --git a/src/tests/placesitemmodeltest.cpp b/src/tests/placesitemmodeltest.cpp index 7c4cf308b..ef24292ed 100644 --- a/src/tests/placesitemmodeltest.cpp +++ b/src/tests/placesitemmodeltest.cpp @@ -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" |
