[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [plasma-mobile/mart/metadataModelQuerySeparation] components/metadatamodel: roles managed by the que
From:       Marco Martin <notmart () gmail ! com>
Date:       2012-11-12 19:00:05
Message-ID: 20121112190005.66F36A6091 () git ! kde ! org
[Download RAW message or body]

Git commit e2f4fcdf32f0051445a0f0ab420a716a9ba10c1d by Marco Martin.
Committed on 12/11/2012 at 19:59.
Pushed by mart into branch 'mart/metadataModelQuerySeparation'.

roles managed by the queryprovider

M  +26   -7    components/metadatamodel/metadatacloudmodel.cpp
M  +0    -6    components/metadatamodel/metadatacloudmodel.h
M  +20   -0    components/metadatamodel/queryproviders/basicqueryprovider.cpp
M  +7    -0    components/metadatamodel/queryproviders/basicqueryprovider.h
M  +5    -0    components/metadatamodel/queryproviders/cloudqueryprovider.cpp
M  +5    -0    components/metadatamodel/queryproviders/cloudqueryprovider.h

http://commits.kde.org/plasma-mobile/e2f4fcdf32f0051445a0f0ab420a716a9ba10c1d

diff --git a/components/metadatamodel/metadatacloudmodel.cpp \
b/components/metadatamodel/metadatacloudmodel.cpp index b5ed696..07afabb 100644
--- a/components/metadatamodel/metadatacloudmodel.cpp
+++ b/components/metadatamodel/metadatacloudmodel.cpp
@@ -50,11 +50,6 @@ MetadataCloudModel::MetadataCloudModel(QObject *parent)
     : AbstractMetadataModel(parent),
       m_queryClient(0)
 {
-    QHash<int, QByteArray> roleNames;
-    roleNames[Label] = "label";
-    roleNames[Count] = "count";
-    roleNames[TotalCount] = "totalCount";
-    setRoleNames(roleNames);
 }
 
 MetadataCloudModel::~MetadataCloudModel()
@@ -67,6 +62,7 @@ void MetadataCloudModel::setQueryProvider(BasicQueryProvider \
*provider)  return;
     }
 
+    setRoleNames(provider->roleNames());
     if (m_queryProvider) {
         disconnect(m_queryProvider.data(), 0, this, 0);
     }
@@ -119,6 +115,29 @@ void MetadataCloudModel::newEntries(const QList< \
Nepomuk2::Query::Result > &entr  QVariantList categories;
 
     foreach (const Nepomuk2::Query::Result &res, entries) {
+        QHash<int, QVariant> result;
+        foreach(const QString &name, res.additionalBindings().bindingNames()) {
+            if (!m_queryProvider.data()->roleIds().contains(name)) {
+                continue;
+            }
+
+            const QVariant val = res.additionalBinding(name.toLatin1()).variant();
+            if (val.canConvert<QUrl>()) {
+                const QUrl url = val.value<QUrl>();
+                if (url.scheme() == "nepomuk") {
+                    result[m_queryProvider.data()->roleIds().value(name)] = \
Nepomuk2::Resource(url).genericLabel(); +                //TODO: it should convert \
from ontology url to short form nfo:Document +                } else {
+                    result[m_queryProvider.data()->roleIds().value(name)] = \
propertyShortName(url); +                }
+            } else {
+                result[m_queryProvider.data()->roleIds().value(name)] = val;
+            }
+        }
+
+        results << result;
+        continue;
+
         QString label;
         int count = res.additionalBinding(QLatin1String("count")).variant().toInt();
         int totalCount = \
res.additionalBinding(QLatin1String("totalCount")).variant().toInt(); @@ -151,12 \
+170,12 @@ void MetadataCloudModel::newEntries(const QList< Nepomuk2::Query::Result > \
&entr  continue;
             }
         }*/
-        QHash<int, QVariant> result;
+/*        QHash<int, QVariant> result;
         result[Label] = label;
         result[Count] = count;
         result[TotalCount] = totalCount;
         results << result;
-        categories << label;
+        categories << label;*/
     }
     if (results.count() > 0) {
         beginInsertRows(QModelIndex(), m_results.count(), \
                m_results.count()+results.count()-1);
diff --git a/components/metadatamodel/metadatacloudmodel.h \
b/components/metadatamodel/metadatacloudmodel.h index 4bc214d..9d10813 100644
--- a/components/metadatamodel/metadatacloudmodel.h
+++ b/components/metadatamodel/metadatacloudmodel.h
@@ -53,12 +53,6 @@ class MetadataCloudModel : public AbstractMetadataModel
     Q_PROPERTY(BasicQueryProvider *queryProvider READ queryProvider WRITE \
setQueryProvider NOTIFY queryProviderChanged)  
 public:
-    enum Roles {
-        Label = Qt::UserRole+1,
-        Count,
-        TotalCount
-    };
-
     MetadataCloudModel(QObject *parent = 0);
     ~MetadataCloudModel();
 
diff --git a/components/metadatamodel/queryproviders/basicqueryprovider.cpp \
b/components/metadatamodel/queryproviders/basicqueryprovider.cpp index \
                d1f455d..14c4cb1 100644
--- a/components/metadatamodel/queryproviders/basicqueryprovider.cpp
+++ b/components/metadatamodel/queryproviders/basicqueryprovider.cpp
@@ -49,6 +49,26 @@ BasicQueryProvider::~BasicQueryProvider()
 }
 
 
+void BasicQueryProvider::setRoleNames(const QHash<int, QByteArray> &names)
+{
+    m_roleNames = names;
+    m_roleIds.clear();
+    QHash<int, QByteArray>::const_iterator i;
+    for (i = names.constBegin(); i != names.constEnd(); ++i) {
+        m_roleIds[i.value()] = i.key();
+    }
+}
+
+QHash<int, QByteArray> BasicQueryProvider::roleNames() const
+{
+    return m_roleNames;
+}
+
+QHash<QString, int> BasicQueryProvider::roleIds() const
+{
+    return m_roleIds;
+}
+
 void BasicQueryProvider::setQuery(const Nepomuk2::Query::Query &query)
 {
     m_query = query;
diff --git a/components/metadatamodel/queryproviders/basicqueryprovider.h \
b/components/metadatamodel/queryproviders/basicqueryprovider.h index 270a880..904e2d7 \
                100644
--- a/components/metadatamodel/queryproviders/basicqueryprovider.h
+++ b/components/metadatamodel/queryproviders/basicqueryprovider.h
@@ -115,9 +115,13 @@ public:
     BasicQueryProvider(QObject *parent = 0);
     ~BasicQueryProvider();
 
+
     /**
      * C++ API
      */
+    QHash<int, QByteArray> roleNames() const;
+    QHash<QString, int> roleIds() const;
+
     void setQuery(const Nepomuk2::Query::Query &query);
     Nepomuk2::Query::Query query() const;
 
@@ -178,6 +182,7 @@ protected Q_SLOTS:
     virtual void doQuery();
 
 protected:
+    void setRoleNames(const QHash<int, QByteArray> &names);
     QString retrieveIconName(const QStringList &types) const;
     /* from nie:url
      * to QUrl("http://www.semanticdesktop.org/ontologies/2007/01/19/nie#url")
@@ -255,6 +260,8 @@ protected:
     void requestRefresh();
 
 private:
+    QHash<int, QByteArray> m_roleNames;
+    QHash<QString, int> m_roleIds;
     QTimer *m_queryTimer;
 
     QString m_resourceType;
diff --git a/components/metadatamodel/queryproviders/cloudqueryprovider.cpp \
b/components/metadatamodel/queryproviders/cloudqueryprovider.cpp index \
                e261615..5b1559a 100644
--- a/components/metadatamodel/queryproviders/cloudqueryprovider.cpp
+++ b/components/metadatamodel/queryproviders/cloudqueryprovider.cpp
@@ -41,7 +41,12 @@ CloudQueryProvider::CloudQueryProvider(QObject* parent)
     : BasicQueryProvider(parent),
       m_showEmptyCategories(false)
 {
+    QHash<int, QByteArray> roleNames;
+    roleNames[Label] = "label";
+    roleNames[Count] = "count";
+    roleNames[TotalCount] = "totalCount";
 
+    setRoleNames(roleNames);
 }
 
 CloudQueryProvider::~CloudQueryProvider()
diff --git a/components/metadatamodel/queryproviders/cloudqueryprovider.h \
b/components/metadatamodel/queryproviders/cloudqueryprovider.h index 5814df1..3260a8e \
                100644
--- a/components/metadatamodel/queryproviders/cloudqueryprovider.h
+++ b/components/metadatamodel/queryproviders/cloudqueryprovider.h
@@ -44,6 +44,11 @@ class CloudQueryProvider : public BasicQueryProvider
 
 
 public:
+    enum Roles {
+        Label = Qt::UserRole+1,
+        Count,
+        TotalCount
+    };
     CloudQueryProvider(QObject* parent = 0);
     ~CloudQueryProvider();
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic