diff --git a/src/filemetadatawidget.cpp b/src/filemetadatawidget.cpp --- a/src/filemetadatawidget.cpp +++ b/src/filemetadatawidget.cpp @@ -295,27 +295,25 @@ void FileMetaDataWidget::setItems(const KFileItemList& items) { KFileItemList localItemsList; - QStringList list; bool xAttrSuppored = true; foreach(const KFileItem& item, items) { QUrl url = item.targetUrl(); if (url.isLocalFile()) { localItemsList << item; QString path = url.toLocalFile(); - list << path; KFileMetaData::UserMetaData md(path); xAttrSuppored &= md.isSupported(); } } setReadOnly(!xAttrSuppored); d->m_provider->setItems(localItemsList); - d->m_widgetFactory->setItems(list); setReadOnly(!xAttrSuppored); + d->m_widgetFactory->setItems(items); } KFileItemList FileMetaDataWidget::items() const diff --git a/src/widgetfactory.h b/src/widgetfactory.h --- a/src/widgetfactory.h +++ b/src/widgetfactory.h @@ -43,7 +43,7 @@ explicit WidgetFactory(QObject* parent = nullptr); ~WidgetFactory() override; - void setItems(const QStringList& items); + void setItems(const KFileItemList& items); void setReadOnly(bool value); void setNoLinks(bool value); @@ -76,7 +76,7 @@ KRatingWidget* m_ratingWidget; KCommentWidget* m_commentWidget; - QStringList m_items; + KFileItemList m_items; QStringList m_prevTags; bool m_readOnly; bool m_noLinks; diff --git a/src/widgetfactory.cpp b/src/widgetfactory.cpp --- a/src/widgetfactory.cpp +++ b/src/widgetfactory.cpp @@ -252,18 +252,26 @@ void WidgetFactory::slotCommentChanged(const QString& comment) { - for (const QString& filePath : m_items) { - KFileMetaData::UserMetaData md(filePath); + for (const KFileItem& item : qAsConst(m_items)) { + QUrl url = item.targetUrl(); + if (!url.isLocalFile()) { + continue; + } + KFileMetaData::UserMetaData md(url.toLocalFile()); md.setUserComment(comment); } emit dataChangeStarted(); emit dataChangeFinished(); } void WidgetFactory::slotRatingChanged(uint rating) { - for (const QString& filePath : m_items) { - KFileMetaData::UserMetaData md(filePath); + for (const KFileItem& item : qAsConst(m_items)) { + QUrl url = item.targetUrl(); + if (!url.isLocalFile()) { + continue; + } + KFileMetaData::UserMetaData md(url.toLocalFile()); md.setRating(rating); } emit dataChangeStarted(); @@ -273,8 +281,12 @@ void WidgetFactory::slotTagsChanged(const QStringList& tags) { if (m_tagWidget) { - for (const QString& filePath : m_items) { - KFileMetaData::UserMetaData md(filePath); + for (const KFileItem& item : qAsConst(m_items)) { + QUrl url = item.targetUrl(); + if (!url.isLocalFile()) { + continue; + } + KFileMetaData::UserMetaData md(url.toLocalFile()); // When multiple tags are selected one doesn't want to loose the old tags // of any of the resources. Unless specifically removed. @@ -327,7 +339,7 @@ m_noLinks = value; } -void WidgetFactory::setItems(const QStringList& items) +void WidgetFactory::setItems(const KFileItemList& items) { m_items = items; }