┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/panels/places/placesitemmodel.cpp
diff options
context:
space:
mode:
authorRenato Araujo Oliveira Filho <[email protected]>2017-12-07 11:36:00 -0300
committerRenato Araujo Oliveira Filho <[email protected]>2017-12-14 09:42:13 -0300
commit5f1df43b87898b380228a3548553de3290ddb0d7 (patch)
tree0de269324e3ee153f873c8d9383070fa879555ab /src/panels/places/placesitemmodel.cpp
parentda6f8fe0862585287153f0d90e19eab0b34bfbef (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.cpp35
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);