]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Meta data configuration dialog improvements
authorPeter Penz <peter.penz19@gmail.com>
Sat, 13 Mar 2010 20:05:21 +0000 (20:05 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Sat, 13 Mar 2010 20:05:21 +0000 (20:05 +0000)
* 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

src/panels/information/kmetadataconfigurationdialog.cpp
src/panels/information/kmetadatawidget.h

index 6c1ee21d0670042a8149729614390f9d1a480bbd..e80a38edeb59763932fb098155298fd6eff7bfc1 100644 (file)
@@ -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))
 {
index 4281b65190ce0494189790f454d957f02d68005b..004fdc95ce999f4453982c3352376d79e5df1d57 100644 (file)
@@ -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