[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