1
0
mirror of https://invent.kde.org/system/dolphin synced 2024-07-07 10:51:45 +00:00

[Information Panel] Allows to refresh icon and metadata for urls such as trash:/

Summary: CCBUG: 392882

Test Plan:
1. Create a file
2. Remove it, so that it goes to the trash
3. Open trash
4. Empty trash

Before:
Information panel icon is still user-trash-full

After:
Information panel icon is changed to user-trash

Reviewers: ngraham, #dolphin, elvisangelaccio

Reviewed By: ngraham, #dolphin, elvisangelaccio

Subscribers: kfm-devel

Tags: #dolphin

Differential Revision: https://phabricator.kde.org/D23668
This commit is contained in:
Méven Car 2019-11-11 14:07:47 +01:00
parent b9a2df09fc
commit 89a7b316d1
3 changed files with 13 additions and 12 deletions

View File

@ -8,7 +8,7 @@ set (KDE_APPLICATIONS_VERSION "${KDE_APPLICATIONS_VERSION_MAJOR}.${KDE_APPLICATI
project(Dolphin VERSION ${KDE_APPLICATIONS_VERSION}) project(Dolphin VERSION ${KDE_APPLICATIONS_VERSION})
set(QT_MIN_VERSION "5.11.0") set(QT_MIN_VERSION "5.11.0")
set(KF5_MIN_VERSION "5.63.0") set(KF5_MIN_VERSION "5.64.0")
# ECM setup # ECM setup
find_package(ECM ${KF5_MIN_VERSION} CONFIG REQUIRED) find_package(ECM ${KF5_MIN_VERSION} CONFIG REQUIRED)

View File

@ -290,8 +290,8 @@ void InformationPanel::reset()
void InformationPanel::slotFileRenamed(const QString& source, const QString& dest) void InformationPanel::slotFileRenamed(const QString& source, const QString& dest)
{ {
if (m_shownUrl == QUrl::fromLocalFile(source)) { if (m_shownUrl == QUrl::fromUserInput(source)) {
m_shownUrl = QUrl::fromLocalFile(dest); m_shownUrl = QUrl::fromUserInput(dest);
m_fileItem = KFileItem(m_shownUrl); m_fileItem = KFileItem(m_shownUrl);
if ((m_selection.count() == 1) && (m_selection[0].url() == QUrl::fromLocalFile(source))) { if ((m_selection.count() == 1) && (m_selection[0].url() == QUrl::fromLocalFile(source))) {
@ -308,10 +308,10 @@ void InformationPanel::slotFileRenamed(const QString& source, const QString& des
void InformationPanel::slotFilesAdded(const QString& directory) void InformationPanel::slotFilesAdded(const QString& directory)
{ {
if (m_shownUrl == QUrl::fromLocalFile(directory)) { if (m_shownUrl == QUrl::fromUserInput(directory)) {
// If the 'trash' icon changes because the trash has been emptied or got filled, // If the 'trash' icon changes because the trash has been emptied or got filled,
// the signal filesAdded("trash:/") will be emitted. // the signal filesAdded("trash:/") will be emitted.
KFileItem item(QUrl::fromLocalFile(directory)); KFileItem item(QUrl::fromUserInput(directory));
requestDelayedItemInfo(item); requestDelayedItemInfo(item);
} }
} }
@ -319,7 +319,7 @@ void InformationPanel::slotFilesAdded(const QString& directory)
void InformationPanel::slotFilesChanged(const QStringList& files) void InformationPanel::slotFilesChanged(const QStringList& files)
{ {
for (const QString& fileName : files) { for (const QString& fileName : files) {
if (m_shownUrl == QUrl::fromLocalFile(fileName)) { if (m_shownUrl == QUrl::fromUserInput(fileName)) {
showItemInfo(); showItemInfo();
break; break;
} }
@ -329,7 +329,7 @@ void InformationPanel::slotFilesChanged(const QStringList& files)
void InformationPanel::slotFilesRemoved(const QStringList& files) void InformationPanel::slotFilesRemoved(const QStringList& files)
{ {
for (const QString& fileName : files) { for (const QString& fileName : files) {
if (m_shownUrl == QUrl::fromLocalFile(fileName)) { if (m_shownUrl == QUrl::fromUserInput(fileName)) {
// the currently shown item has been removed, show // the currently shown item has been removed, show
// the parent directory as fallback // the parent directory as fallback
markUrlAsInvalid(); markUrlAsInvalid();
@ -340,15 +340,15 @@ void InformationPanel::slotFilesRemoved(const QStringList& files)
void InformationPanel::slotEnteredDirectory(const QString& directory) void InformationPanel::slotEnteredDirectory(const QString& directory)
{ {
if (m_shownUrl == QUrl::fromLocalFile(directory)) { if (m_shownUrl == QUrl::fromUserInput(directory)) {
KFileItem item(QUrl::fromLocalFile(directory)); KFileItem item(QUrl::fromUserInput(directory));
requestDelayedItemInfo(item); requestDelayedItemInfo(item);
} }
} }
void InformationPanel::slotLeftDirectory(const QString& directory) void InformationPanel::slotLeftDirectory(const QString& directory)
{ {
if (m_shownUrl == QUrl::fromLocalFile(directory)) { if (m_shownUrl == QUrl::fromUserInput(directory)) {
// The signal 'leftDirectory' is also emitted when a media // The signal 'leftDirectory' is also emitted when a media
// has been unmounted. In this case no directory change will be // has been unmounted. In this case no directory change will be
// done in Dolphin, but the Information Panel must be updated to // done in Dolphin, but the Information Panel must be updated to

View File

@ -166,12 +166,13 @@ InformationPanelContent::~InformationPanelContent()
void InformationPanelContent::showItem(const KFileItem& item) void InformationPanelContent::showItem(const KFileItem& item)
{ {
if (item != m_item) { // compares item entries, comparing items only compares urls
if (m_item.entry() != item.entry()) {
m_item = item; m_item = item;
m_preview->stopAnimatedImage(); m_preview->stopAnimatedImage();
refreshMetaData(); refreshMetaData();
} }
refreshPreview(); refreshPreview();
} }