diff --git a/src/filemetadataprovider.h b/src/filemetadataprovider.h --- a/src/filemetadataprovider.h +++ b/src/filemetadataprovider.h @@ -105,12 +105,15 @@ Q_SIGNALS: /** - * Is emitted after the loading triggered by KFileMetaDataProvider::setItems() - * has been finished. - * - * Can be emitted multiple times to indicate data changes + * Emitted once per KFileMetaDataProvider::setItems() + * after data loading is finished. */ void loadingFinished(); + /** + * Indicates data changes. + * Can be emitted zero or more times + */ + void dataAvailable(); private Q_SLOTS: void slotLoadingFinished(KJob* job); diff --git a/src/filemetadataprovider.cpp b/src/filemetadataprovider.cpp --- a/src/filemetadataprovider.cpp +++ b/src/filemetadataprovider.cpp @@ -134,10 +134,7 @@ FileFetchJob* fetchJob = static_cast(job); QList files = fetchJob->data(); - if (files.size() == 0) { - emit loadingFinished(); - return; - } + Q_ASSERT(!files.isEmpty()); if (files.size() > 1) { insertCommonData(files); diff --git a/src/filemetadatawidget.h b/src/filemetadatawidget.h --- a/src/filemetadatawidget.h +++ b/src/filemetadatawidget.h @@ -80,6 +80,7 @@ Private* d; Q_PRIVATE_SLOT(d, void slotLoadingFinished()) + Q_PRIVATE_SLOT(d, void slotDataAvailable()) Q_PRIVATE_SLOT(d, void slotLinkActivated(QString)) Q_PRIVATE_SLOT(d, void slotDataChangeStarted()) Q_PRIVATE_SLOT(d, void slotDataChangeFinished()) diff --git a/src/filemetadatawidget.cpp b/src/filemetadatawidget.cpp --- a/src/filemetadatawidget.cpp +++ b/src/filemetadatawidget.cpp @@ -63,6 +63,7 @@ void deleteRows(); void slotLoadingFinished(); + void slotDataAvailable(); void slotLinkActivated(const QString& link); void slotDataChangeStarted(); void slotDataChangeFinished(); @@ -94,6 +95,7 @@ // TODO: If KFileMetaDataProvider might get a public class in future KDE releases, // the following code should be moved into KFileMetaDataWidget::setModel(): m_provider = new FileMetaDataProvider(q); + connect(m_provider, SIGNAL(dataAvailable()), q, SLOT(slotDataAvailable())); connect(m_provider, SIGNAL(loadingFinished()), q, SLOT(slotLoadingFinished())); } @@ -112,6 +114,12 @@ } void FileMetaDataWidget::Private::slotLoadingFinished() +{ + slotDataAvailable(); + emit q->metaDataRequestFinished(m_provider->items()); +} + +void FileMetaDataWidget::Private::slotDataAvailable() { deleteRows(); @@ -161,7 +169,7 @@ } q->updateGeometry(); - emit q->metaDataRequestFinished(m_provider->items()); + } void FileMetaDataWidget::Private::slotLinkActivated(const QString& link)