diff --git a/src/filemetadataconfigwidget.h b/src/filemetadataconfigwidget.h --- a/src/filemetadataconfigwidget.h +++ b/src/filemetadataconfigwidget.h @@ -61,8 +61,8 @@ /** @see QWidget::sizeHint() */ QSize sizeHint() const override; -protected: - bool event(QEvent* event) override; +Q_SIGNALS: + void loadingFinished(); private: class Private; diff --git a/src/filemetadataconfigwidget.cpp b/src/filemetadataconfigwidget.cpp --- a/src/filemetadataconfigwidget.cpp +++ b/src/filemetadataconfigwidget.cpp @@ -27,7 +27,6 @@ #include #include #include -#include using namespace Baloo; @@ -48,7 +47,6 @@ */ void slotLoadingFinished(); - int m_visibleDataTypes; KFileItemList m_fileItems; FileMetaDataProvider* m_provider; QListWidget* m_metaDataList; @@ -59,7 +57,6 @@ FileMetaDataConfigWidget::Private::Private(FileMetaDataConfigWidget* parent) : - m_visibleDataTypes(0), m_fileItems(), m_provider(nullptr), m_metaDataList(nullptr), @@ -74,7 +71,9 @@ m_provider = new FileMetaDataProvider(q); m_provider->setReadOnly(true); - connect(m_provider, SIGNAL(loadingFinished()), q, SLOT(slotLoadingFinished())); + connect(m_provider, &FileMetaDataProvider::loadingFinished, [this] { + this->slotLoadingFinished(); + }); } FileMetaDataConfigWidget::Private::~Private() @@ -143,6 +142,10 @@ addItem("rating"); addItem("tags"); addItem("userComment"); + + q->updateGeometry(); + + emit q->loadingFinished(); } FileMetaDataConfigWidget::FileMetaDataConfigWidget(QWidget* parent) : @@ -183,20 +186,17 @@ showGroup.sync(); } -bool FileMetaDataConfigWidget::event(QEvent* event) -{ - if (event->type() == QEvent::Polish) { - qDebug() << "GOT POLISH EVENT!!!"; - // loadMetaData() must be invoked asynchronously, as the list - // must finish it's initialization first - QMetaObject::invokeMethod(this, "loadMetaData", Qt::QueuedConnection); - } - return QWidget::event(event);; -} - QSize FileMetaDataConfigWidget::sizeHint() const { - return d->m_metaDataList->sizeHint(); + // get the height of the first row + const int rowHeight = d->m_metaDataList->sizeHintForRow(0); + + QSize sizeHint = d->m_metaDataList->sizeHint(); + + // extrapole the height of the widget based on the first row height plus 2 pixels to account for spacing + sizeHint.setHeight((rowHeight + 2) * d->m_metaDataList->count()); + + return sizeHint; } #include "moc_filemetadataconfigwidget.cpp"