diff options
| author | Méven Car <[email protected]> | 2021-04-24 09:00:31 +0000 |
|---|---|---|
| committer | Méven Car <[email protected]> | 2021-04-24 09:00:31 +0000 |
| commit | 6cec386192e58089b4572996a265c9696cdcb3c0 (patch) | |
| tree | 4a32fc3ac2feef856774247d01c0f3d13cb4209c /src/kitemviews | |
| parent | 020ba2c3fc94336545f6b8d7c13c9a615000482a (diff) | |
InformationPanel: Allow to refresh the panel when its displayed content changes
BUG: 430095
BUG: 412902
FIXED-IN: 21.08
Diffstat (limited to 'src/kitemviews')
| -rw-r--r-- | src/kitemviews/kfileitemmodel.cpp | 14 | ||||
| -rw-r--r-- | src/kitemviews/kfileitemmodel.h | 6 |
2 files changed, 20 insertions, 0 deletions
diff --git a/src/kitemviews/kfileitemmodel.cpp b/src/kitemviews/kfileitemmodel.cpp index da15ccbdd..fa101f89a 100644 --- a/src/kitemviews/kfileitemmodel.cpp +++ b/src/kitemviews/kfileitemmodel.cpp @@ -1015,6 +1015,8 @@ void KFileItemModel::slotItemsAdded(const QUrl &directoryUrl, const KFileItemLis // emitted during the maximum update interval. m_maximumUpdateIntervalTimer->start(); } + + Q_EMIT fileItemsChanged({KFileItem(directoryUrl)}); } void KFileItemModel::slotItemsDeleted(const KFileItemList& items) @@ -1023,6 +1025,7 @@ void KFileItemModel::slotItemsDeleted(const KFileItemList& items) QVector<int> indexesToRemove; indexesToRemove.reserve(items.count()); + KFileItemList dirsChanged; for (const KFileItem& item : items) { const int indexForItem = index(item); @@ -1036,6 +1039,11 @@ void KFileItemModel::slotItemsDeleted(const KFileItemList& items) m_filteredItems.erase(it); } } + + QUrl parentUrl = item.url().adjusted(QUrl::RemoveFilename | QUrl::StripTrailingSlash); + if (dirsChanged.findByUrl(parentUrl).isNull()) { + dirsChanged << KFileItem(parentUrl); + } } std::sort(indexesToRemove.begin(), indexesToRemove.end()); @@ -1063,6 +1071,8 @@ void KFileItemModel::slotItemsDeleted(const KFileItemList& items) const KItemRangeList itemRanges = KItemRangeList::fromSortedContainer(indexesToRemove); removeFilteredChildren(itemRanges); removeItems(itemRanges, DeleteItemData); + + Q_EMIT fileItemsChanged(dirsChanged); } void KFileItemModel::slotRefreshItems(const QList<QPair<KFileItem, KFileItem> >& items) @@ -1077,6 +1087,7 @@ void KFileItemModel::slotRefreshItems(const QList<QPair<KFileItem, KFileItem> >& indexes.reserve(items.count()); QSet<QByteArray> changedRoles; + KFileItemList changedFiles; QListIterator<QPair<KFileItem, KFileItem> > it(items); while (it.hasNext()) { @@ -1102,6 +1113,7 @@ void KFileItemModel::slotRefreshItems(const QList<QPair<KFileItem, KFileItem> >& m_items.remove(oldItem.url()); m_items.insert(newItem.url(), indexForItem); + changedFiles.append(newItem); indexes.append(indexForItem); } else { // Check if 'oldItem' is one of the filtered items. @@ -1130,6 +1142,8 @@ void KFileItemModel::slotRefreshItems(const QList<QPair<KFileItem, KFileItem> >& std::sort(indexes.begin(), indexes.end()); const KItemRangeList itemRangeList = KItemRangeList::fromSortedContainer(indexes); emitItemsChangedAndTriggerResorting(itemRangeList, changedRoles); + + Q_EMIT fileItemsChanged(changedFiles); } void KFileItemModel::slotClear() diff --git a/src/kitemviews/kfileitemmodel.h b/src/kitemviews/kfileitemmodel.h index 886a1c6de..acf4b761c 100644 --- a/src/kitemviews/kfileitemmodel.h +++ b/src/kitemviews/kfileitemmodel.h @@ -245,6 +245,12 @@ Q_SIGNALS: */ void urlIsFileError(const QUrl& url); + /** + * It is emitted for files when they change and + * for dirs when files are added or removed. + */ + void fileItemsChanged(const KFileItemList &changedFileItems); + protected: void onGroupedSortingChanged(bool current) override; void onSortRoleChanged(const QByteArray& current, const QByteArray& previous, bool resortItems = true) override; |
