diff options
author | Denis Dzyubenko <denis.dzyubenko@nokia.com> | 2012-04-11 15:59:00 +0200 |
---|---|---|
committer | Denis Dzyubenko <denis.dzyubenko@nokia.com> | 2012-04-11 16:54:46 +0200 |
commit | 6b7df60a752422b1f6ff07bb2682c21e18a43985 (patch) | |
tree | 3e56bd3f4ee34a228777d00ff328ef1c53cb1df1 /src/imports/jsondb/jsondbmodelutils.h | |
parent | 20549eedb5b5e852c0e384cd76bfbff14168dbda (diff) | |
parent | 7ef36e3c5a88560eb4e3a81c2c9f14059739108b (diff) |
Merge remote-tracking branch 'gerrit/master' into hbtreehbtree
Conflicts:
src/daemon/daemon.pri
src/daemon/jsondbview.cpp
src/partition/jsondbindex.cpp
src/partition/jsondbindex.h
src/partition/jsondbindexquery.h
src/partition/jsondbmanagedbtree.cpp
src/partition/jsondbmanagedbtree.h
src/partition/jsondbmanagedbtreetxn.cpp
src/partition/jsondbmanagedbtreetxn.h
src/partition/jsondbobjecttable.cpp
src/partition/jsondbobjecttable.h
src/partition/jsondbpartition.cpp
src/partition/jsondbpartition.h
tests/auto/auto.pro
tests/auto/partition/testpartition.cpp
tests/benchmarks/benchmarks.pro
Change-Id: I963adefd6d32fca9b3537981306b67538c759034
Diffstat (limited to 'src/imports/jsondb/jsondbmodelutils.h')
-rw-r--r-- | src/imports/jsondb/jsondbmodelutils.h | 54 |
1 files changed, 43 insertions, 11 deletions
diff --git a/src/imports/jsondb/jsondbmodelutils.h b/src/imports/jsondb/jsondbmodelutils.h index 48ac8c3..10d2798 100644 --- a/src/imports/jsondb/jsondbmodelutils.h +++ b/src/imports/jsondb/jsondbmodelutils.h @@ -39,7 +39,6 @@ ** ****************************************************************************/ - #ifndef JSONDBMODELUTILS_H #define JSONDBMODELUTILS_H #include <QSharedData> @@ -47,7 +46,9 @@ #include <QUuid> #include <QJSValue> #include <QVariant> -#include "jsondb-client.h" +#include <QPointer> +#include <QJsonDbWatcher> +#include <QJsonDbReadRequest> QT_BEGIN_NAMESPACE_JSONDB @@ -57,16 +58,21 @@ struct CallbackInfo { QJSValue errorCallback; }; +struct NotificationItem { + int partitionIndex; + QJsonObject item; + QJsonDbWatcher::Action action; +}; + struct NotifyItem { - QString notifyUuid; - QVariant item; - JsonDbClient::NotifyType action; + int partitionIndex; + QVariantMap item; + QJsonDbWatcher::Action action; }; struct SortIndexSpec { QString propertyName; - QString propertyType; //### TODO remove QString name; bool caseSensitive; enum Type { None, String, Number, UUID }; @@ -75,13 +81,35 @@ struct SortIndexSpec SortIndexSpec() : caseSensitive(false), type(SortIndexSpec::None) {} SortIndexSpec(const SortIndexSpec &other) : propertyName(other.propertyName), - propertyType(other.propertyType), name(other.name), caseSensitive(other.caseSensitive), type(other.type) {} }; +class JsonDbListModelPrivate; +class ModelRequest : public QObject +{ + friend class JsonDbListModelPrivate; + Q_OBJECT +public: + + ModelRequest(QObject *parent = 0); + ~ModelRequest(); + + QJsonDbReadRequest* newRequest(int newIndex); + void resetRequest(); +Q_SIGNALS: + void finished(int index, const QList<QJsonObject> &items, const QString &sortKey); + void error(QtJsonDb::QJsonDbRequest::ErrorCode code, const QString &message); + +private Q_SLOTS: + void onQueryFinished(); + +private: + QPointer<QJsonDbReadRequest> request; + int index; +}; struct IndexInfo { @@ -102,6 +130,7 @@ class SortingKey { public: SortingKey(int partitionIndex, const QVariantMap &object, const QList<bool> &directions, const QList<QStringList> &paths, const SortIndexSpec &spec = SortIndexSpec()); SortingKey(int partitionIndex, const QVariantList &object, const QList<bool> &directions, const SortIndexSpec &spec = SortIndexSpec()); + SortingKey(int partitionIndex, const QByteArray &uuid, const QVariantList &object, const QList<bool> &directions, const SortIndexSpec &spec = SortIndexSpec()); SortingKey(const SortingKey&); SortingKey() {} int partitionIndex() const; @@ -113,20 +142,21 @@ private: struct RequestInfo { - int requestId; int lastOffset; - QString notifyUuid; int lastSize; int requestCount; + QPointer<QJsonDbWatcher> watcher; RequestInfo() { clear();} void clear() { - requestId = -1; lastOffset = 0; lastSize = -1; requestCount = 0; - notifyUuid.clear(); + if (watcher) { + delete watcher; + watcher = 0; + } } }; @@ -168,6 +198,8 @@ template <typename T> int iterator_position(T &begin, T &end, T &value) QVariant lookupProperty(QVariantMap object, const QStringList &path); QString removeArrayOperator(QString propertyName); +QList<QJsonObject> qvariantlist_to_qjsonobject_list(const QVariantList &list); +QVariantList qjsonobject_list_to_qvariantlist(const QList<QJsonObject> &list); QT_END_NAMESPACE_JSONDB |