From: Peter Penz Date: Sat, 13 Mar 2010 20:05:21 +0000 (+0000) Subject: Meta data configuration dialog improvements X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/5c802867260ef56567d8113c65a72eb442db3941 Meta data configuration dialog improvements * use the data provided by the model instead reading it again * allow to enable/disable also custom meta data svn path=/trunk/KDE/kdebase/apps/; revision=1102852 --- diff --git a/src/panels/information/kmetadataconfigurationdialog.cpp b/src/panels/information/kmetadataconfigurationdialog.cpp index 6c1ee21d0..e80a38ede 100644 --- a/src/panels/information/kmetadataconfigurationdialog.cpp +++ b/src/panels/information/kmetadataconfigurationdialog.cpp @@ -21,6 +21,7 @@ #include #include +#include "kmetadatamodel.h" #include "kmetadatawidget.h" #include "knfotranslator_p.h" #include @@ -46,7 +47,9 @@ public: void init(); void loadMetaData(); - void addItem(const QUrl& uri); + void addItem(const KUrl& uri); + + void slotLoadingFinished(); int m_visibleDataTypes; QLabel* m_descriptionLabel; @@ -78,6 +81,7 @@ KMetaDataConfigurationDialog::Private::Private(KMetaDataConfigurationDialog* par m_metaDataList = new QListWidget(q); m_metaDataList->setSelectionMode(QAbstractItemView::NoSelection); + m_metaDataList->setSortingEnabled(true); topLayout->addWidget(m_descriptionLabel); topLayout->addWidget(m_metaDataList); @@ -132,19 +136,6 @@ void KMetaDataConfigurationDialog::Private::loadMetaData() if (visibleDataTypes & KMetaDataWidget::PermissionsData) { fixedItems.append(FixedItem("kfileitem#permissions", i18nc("@item::inlistbox", "Permissions"))); } -#ifdef HAVE_NEPOMUK - if (Nepomuk::ResourceManager::instance()->init() == 0) { - if (visibleDataTypes & KMetaDataWidget::RatingData) { - fixedItems.append(FixedItem("kfileitem#rating", i18nc("@item::inlistbox", "Rating"))); - } - if (visibleDataTypes & KMetaDataWidget::TagsData) { - fixedItems.append(FixedItem("kfileitem#tags", i18nc("@item::inlistbox", "Tags"))); - } - if (visibleDataTypes & KMetaDataWidget::CommentData) { - fixedItems.append(FixedItem("kfileitem#comment", i18nc("@item::inlistbox", "Comment"))); - } - } -#endif foreach (const FixedItem& fixedItem, fixedItems) { const QString key = fixedItem.first; @@ -156,43 +147,25 @@ void KMetaDataConfigurationDialog::Private::loadMetaData() } #ifdef HAVE_NEPOMUK - // Get all meta information labels that are available for - // the currently shown file item and add them to the list. - if (m_metaDataWidget == 0) { - // TODO: in this case all available meta data from the system - // should be added. + if ((m_metaDataWidget == 0) || (m_metaDataWidget->items().count() != 1)) { return; } - const KFileItemList items = m_metaDataWidget->items(); - if (items.count() != 1) { - // TODO: handle als usecases for more than one item: - return; - } - - Nepomuk::Resource res(items.first().nepomukUri()); - QHash properties = res.properties(); - if (properties.isEmpty()) { - // the file is not indexed or Nepomuk is disabled - KFileMetaInfo metaInfo(items.first().url()); - const QHash metaInfoItems = metaInfo.items(); - foreach (const KFileMetaInfoItem& metaInfoItem, metaInfoItems) { - addItem(metaInfoItem.name()); - } - - } else { - // show meta information provided by Nepomuk - QHash::const_iterator it = properties.constBegin(); - while (it != properties.constEnd()) { - Nepomuk::Types::Property prop(it.key()); - addItem(prop.uri()); + // Get all meta information labels that are available for + // the currently shown file item and add them to the list. + KMetaDataModel* model = m_metaDataWidget->model(); + if (model != 0) { + const QHash data = model->data(); + QHash::const_iterator it = data.constBegin(); + while (it != data.constEnd()) { + addItem(it.key()); ++it; } } #endif } -void KMetaDataConfigurationDialog::Private::addItem(const QUrl& uri) +void KMetaDataConfigurationDialog::Private::addItem(const KUrl& uri) { // Meta information provided by Nepomuk that is already // available from KFileItem as "fixed item" (see above) @@ -209,7 +182,7 @@ void KMetaDataConfigurationDialog::Private::addItem(const QUrl& uri) }; int i = 0; - const QString key = uri.toString(); + const QString key = uri.url(); while (hiddenProperties[i] != 0) { if (key == QLatin1String(hiddenProperties[i])) { // the item is hidden @@ -222,7 +195,10 @@ void KMetaDataConfigurationDialog::Private::addItem(const QUrl& uri) KConfig config("kmetainformationrc", KConfig::NoGlobals); KConfigGroup settings = config.group("Show"); - const QString label = KNfoTranslator::instance().translation(uri); + const QString label = (m_metaDataWidget == 0) + ? KNfoTranslator::instance().translation(uri) + : m_metaDataWidget->label(uri); + QListWidgetItem* item = new QListWidgetItem(label, m_metaDataList); item->setData(Qt::UserRole, key); const bool show = settings.readEntry(key, true); @@ -230,15 +206,15 @@ void KMetaDataConfigurationDialog::Private::addItem(const QUrl& uri) } KMetaDataConfigurationDialog::KMetaDataConfigurationDialog(QWidget* parent, - Qt::WFlags flags) : + Qt::WFlags flags) : KDialog(parent, flags), d(new Private(this, 0)) { } KMetaDataConfigurationDialog::KMetaDataConfigurationDialog(KMetaDataWidget* metaDataWidget, - QWidget* parent, - Qt::WFlags flags) : + QWidget* parent, + Qt::WFlags flags) : KDialog(parent, flags), d(new Private(this, metaDataWidget)) { diff --git a/src/panels/information/kmetadatawidget.h b/src/panels/information/kmetadatawidget.h index 4281b6519..004fdc95c 100644 --- a/src/panels/information/kmetadatawidget.h +++ b/src/panels/information/kmetadatawidget.h @@ -151,10 +151,6 @@ public: /** @see QWidget::sizeHint() */ virtual QSize sizeHint() const; -Q_SIGNALS: - void urlActivated(const KUrl& url); - -protected: #ifdef HAVE_NEPOMUK /** * @return Translated string for the label of the meta data represented @@ -162,7 +158,13 @@ protected: * base implementation must be invoked. */ virtual QString label(const KUrl& metaDataUri) const; +#endif +Q_SIGNALS: + void urlActivated(const KUrl& url); + +protected: +#ifdef HAVE_NEPOMUK /** * @return Pointer to the custom value-widget that should be used * to show the meta data represented by \p metaDataUri. If 0