diff options
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 48ac8c39..10d27986 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 |