diff options
| author | Renato Araujo Oliveira Filho <[email protected]> | 2017-12-07 11:36:00 -0300 |
|---|---|---|
| committer | Renato Araujo Oliveira Filho <[email protected]> | 2017-12-14 09:42:13 -0300 |
| commit | 5f1df43b87898b380228a3548553de3290ddb0d7 (patch) | |
| tree | 0de269324e3ee153f873c8d9383070fa879555ab /src/panels/places/placesitemmodel.cpp | |
| parent | da6f8fe0862585287153f0d90e19eab0b34bfbef (diff) | |
Implemented support for hide/show groups
Summary:
Added an option on PlacesPanel context menu to show or hide the entire
group of places.
Depends on D8855
Test Plan: Open Donlphin and use PlacesPanel context menu to hide and show groups
Reviewers: franckarrecot, mlaurent, mwolff, elvisangelaccio
Reviewed By: franckarrecot, mlaurent, mwolff, elvisangelaccio
Subscribers: rkflx, mwolff, elvisangelaccio, ngraham, #dolphin
Differential Revision: https://phabricator.kde.org/D9242
Diffstat (limited to 'src/panels/places/placesitemmodel.cpp')
| -rw-r--r-- | src/panels/places/placesitemmodel.cpp | 35 |
1 files changed, 32 insertions, 3 deletions
diff --git a/src/panels/places/placesitemmodel.cpp b/src/panels/places/placesitemmodel.cpp index 074b7ab45..577596c74 100644 --- a/src/panels/places/placesitemmodel.cpp +++ b/src/panels/places/placesitemmodel.cpp @@ -73,6 +73,7 @@ PlacesItemModel::PlacesItemModel(QObject* parent) : connect(m_sourceModel.data(), &KFilePlacesModel::dataChanged, this, &PlacesItemModel::onSourceModelDataChanged); connect(m_sourceModel.data(), &KFilePlacesModel::rowsAboutToBeMoved, this, &PlacesItemModel::onSourceModelRowsAboutToBeMoved); connect(m_sourceModel.data(), &KFilePlacesModel::rowsMoved, this, &PlacesItemModel::onSourceModelRowsMoved); + connect(m_sourceModel.data(), &KFilePlacesModel::groupHiddenChanged, this, &PlacesItemModel::onSourceModelGroupHiddenChanged); } PlacesItemModel::~PlacesItemModel() @@ -195,11 +196,13 @@ void PlacesItemModel::onItemChanged(int index, const QSet<QByteArray>& changedRo qWarning() << "invalid item changed signal"; return; } - if (changedRoles.contains("isHidden")) { - m_sourceModel->setPlaceHidden(sourceIndex, changedItem->isHidden()); + if (m_sourceModel->isHidden(sourceIndex) != changedItem->isHidden()) { + m_sourceModel->setPlaceHidden(sourceIndex, changedItem->isHidden()); + } else { + m_sourceModel->refresh(); + } } - KStandardItemModel::onItemChanged(index, changedRoles); } @@ -470,6 +473,7 @@ void PlacesItemModel::updateItem(PlacesItem *item, const QModelIndex &index) { item->setGroup(index.data(KFilePlacesModel::GroupRole).toString()); item->setIcon(index.data(KFilePlacesModel::IconNameRole).toString()); + item->setGroupHidden(index.data(KFilePlacesModel::GroupHiddenRole).toBool()); } void PlacesItemModel::slotStorageTearDownDone(Solid::ErrorType error, const QVariant& errorData) @@ -590,6 +594,16 @@ void PlacesItemModel::onSourceModelDataChanged(const QModelIndex &topLeft, const } } +void PlacesItemModel::onSourceModelGroupHiddenChanged(KFilePlacesModel::GroupType group, bool hidden) +{ + for(const QModelIndex &sourceIndex : m_sourceModel->groupIndexes(group)) { + PlacesItem *item = placesItem(mapFromSource(sourceIndex)); + if (item) { + item->setGroupHidden(hidden); + } + } +} + void PlacesItemModel::loadBookmarks() { for(int r = 0, rMax = m_sourceModel->rowCount(); r < rMax; r++) { @@ -730,6 +744,21 @@ bool PlacesItemModel::isDir(int index) const return true; } +KFilePlacesModel::GroupType PlacesItemModel::groupType(int row) const +{ + return m_sourceModel->groupType(mapToSource(row)); +} + +bool PlacesItemModel::isGroupHidden(KFilePlacesModel::GroupType type) const +{ + return m_sourceModel->isGroupHidden(type); +} + +void PlacesItemModel::setGroupHidden(KFilePlacesModel::GroupType type, bool hidden) +{ + return m_sourceModel->setGroupHidden(type, hidden); +} + QModelIndex PlacesItemModel::mapToSource(int row) const { return m_indexMap.value(row); |
