diff options
| author | Kai Uwe Broulik <[email protected]> | 2022-01-28 19:40:11 +0100 |
|---|---|---|
| committer | Kai Uwe Broulik <[email protected]> | 2022-02-05 22:18:28 +0000 |
| commit | 0dac70d059551ad143b9bb9849efb28840b7ba4b (patch) | |
| tree | 0df2edcccbbe5d1696607994fe649db6427bd321 /src/dolphinplacesmodelsingleton.cpp | |
| parent | f645e6b4b2053926bcea3f9ae6985a53b28caab1 (diff) | |
Hide "Places" section header when panels are unlocked
Avoids showing "Places" twice.
Diffstat (limited to 'src/dolphinplacesmodelsingleton.cpp')
| -rw-r--r-- | src/dolphinplacesmodelsingleton.cpp | 42 |
1 files changed, 41 insertions, 1 deletions
diff --git a/src/dolphinplacesmodelsingleton.cpp b/src/dolphinplacesmodelsingleton.cpp index 02fbf05d0..c31ffc4c3 100644 --- a/src/dolphinplacesmodelsingleton.cpp +++ b/src/dolphinplacesmodelsingleton.cpp @@ -20,9 +20,37 @@ DolphinPlacesModel::DolphinPlacesModel(const QString &alternativeApplicationName DolphinPlacesModel::~DolphinPlacesModel() = default; +bool DolphinPlacesModel::panelsLocked() const +{ + return m_panelsLocked; +} + +void DolphinPlacesModel::setPanelsLocked(bool locked) +{ + if (m_panelsLocked == locked) { + return; + } + + m_panelsLocked = locked; + + if (rowCount() > 0) { + int lastPlace = rowCount() - 1; + + for (int i = 0; i < rowCount(); ++i) { + if (KFilePlacesModel::groupType(index(i, 0)) != KFilePlacesModel::PlacesType) { + lastPlace = i - 1; + break; + } + } + + Q_EMIT dataChanged(index(0, 0), index(lastPlace, 0), {KFilePlacesModel::GroupRole}); + } +} + QVariant DolphinPlacesModel::data(const QModelIndex &index, int role) const { - if (role == Qt::DecorationRole) { + switch (role) { + case Qt::DecorationRole: if (isTrash(index)) { if (m_isEmpty) { return QIcon::fromTheme(QStringLiteral("user-trash")); @@ -30,6 +58,18 @@ QVariant DolphinPlacesModel::data(const QModelIndex &index, int role) const return QIcon::fromTheme(QStringLiteral("user-trash-full")); } } + break; + case KFilePlacesModel::GroupRole: { + // When panels are unlocked, avoid a double "Places" heading, + // one from the panel title bar, one from the places view section. + if (!m_panelsLocked) { + const auto groupType = KFilePlacesModel::groupType(index); + if (groupType == KFilePlacesModel::PlacesType) { + return QString(); + } + } + break; + } } return KFilePlacesModel::data(index, role); |
