┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2010-03-13 20:05:21 +0000
committerPeter Penz <[email protected]>2010-03-13 20:05:21 +0000
commit5c802867260ef56567d8113c65a72eb442db3941 (patch)
tree472f607804d0f06b4baef2d7e581a1074dd2a90f
parent7b8a3ae8005a1a199b92b564b15f02c884ed7816 (diff)
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
-rw-r--r--src/panels/information/kmetadataconfigurationdialog.cpp70
-rw-r--r--src/panels/information/kmetadatawidget.h10
2 files changed, 29 insertions, 51 deletions
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 <kfilemetainfo.h>
#include <kfilemetainfoitem.h>
+#include "kmetadatamodel.h"
#include "kmetadatawidget.h"
#include "knfotranslator_p.h"
#include <klocale.h>
@@ -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<QUrl, Nepomuk::Variant> properties = res.properties();
- if (properties.isEmpty()) {
- // the file is not indexed or Nepomuk is disabled
- KFileMetaInfo metaInfo(items.first().url());
- const QHash<QString, KFileMetaInfoItem> metaInfoItems = metaInfo.items();
- foreach (const KFileMetaInfoItem& metaInfoItem, metaInfoItems) {
- addItem(metaInfoItem.name());
- }
-
- } else {
- // show meta information provided by Nepomuk
- QHash<QUrl, Nepomuk::Variant>::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<KUrl, Nepomuk::Variant> data = model->data();
+ QHash<KUrl, Nepomuk::Variant>::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