summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Adams <christopher.adams@nokia.com>2010-07-23 15:07:17 +1000
committerChris Adams <christopher.adams@nokia.com>2010-07-23 15:07:17 +1000
commitcc358f606d87a7e78e95873d33ed06a3df6a667d (patch)
treea2a45731deb104838ca35b38817bf2f9e0012a20
parent64d745c48ded47820c0b4ea75ab7a880e48e0368 (diff)
Add datastream operators to organizer module
This commit is based off commits to contacts module, in particular: 7015714ac77179e051033395ff0cc88fb0f99452, 4a39ce6c251183a3eed6a537d951a567bf2b27a2, d6e93229f98fe1022c0cb3866e11a9265d8550de, 1393121f1e5043c56714b967d23e20602cf78980 and 7bdf5ad0c69f852bae1973d8b500d7e4c96df268.
-rw-r--r--src/organizer/filters/qorganizeritemchangelogfilter_p.h18
-rw-r--r--src/organizer/filters/qorganizeritemdatetimeperiodfilter_p.h16
-rw-r--r--src/organizer/filters/qorganizeritemdetailfilter_p.h19
-rw-r--r--src/organizer/filters/qorganizeritemdetailrangefilter_p.h22
-rw-r--r--src/organizer/filters/qorganizeritemintersectionfilter_p.h16
-rw-r--r--src/organizer/filters/qorganizeriteminvalidfilter.cpp12
-rw-r--r--src/organizer/filters/qorganizeritemlocalidfilter_p.h16
-rw-r--r--src/organizer/filters/qorganizeritemunionfilter_p.h16
-rw-r--r--src/organizer/qorganizeritem.cpp35
-rw-r--r--src/organizer/qorganizeritem.h11
-rw-r--r--src/organizer/qorganizeritemdetail.cpp43
-rw-r--r--src/organizer/qorganizeritemdetail.h13
-rw-r--r--src/organizer/qorganizeritemdetaildefinition.cpp35
-rw-r--r--src/organizer/qorganizeritemdetaildefinition.h7
-rw-r--r--src/organizer/qorganizeritemdetailfielddefinition.cpp30
-rw-r--r--src/organizer/qorganizeritemdetailfielddefinition.h7
-rw-r--r--src/organizer/qorganizeritemfetchhint.cpp27
-rw-r--r--src/organizer/qorganizeritemfetchhint.h7
-rw-r--r--src/organizer/qorganizeritemfilter.cpp65
-rw-r--r--src/organizer/qorganizeritemfilter.h14
-rw-r--r--src/organizer/qorganizeritemfilter_p.h4
-rw-r--r--src/organizer/qorganizeritemid.cpp25
-rw-r--r--src/organizer/qorganizeritemid.h7
-rw-r--r--src/organizer/qorganizeritemsortorder.cpp40
-rw-r--r--src/organizer/qorganizeritemsortorder.h7
25 files changed, 510 insertions, 2 deletions
diff --git a/src/organizer/filters/qorganizeritemchangelogfilter_p.h b/src/organizer/filters/qorganizeritemchangelogfilter_p.h
index f7acdd3774..c3fd135244 100644
--- a/src/organizer/filters/qorganizeritemchangelogfilter_p.h
+++ b/src/organizer/filters/qorganizeritemchangelogfilter_p.h
@@ -88,6 +88,24 @@ public:
return true;
}
+ QDataStream& outputToStream(QDataStream& stream, quint8 formatVersion) const
+ {
+ if (formatVersion == 1) {
+ stream << static_cast<quint32>(m_eventType) << m_since;
+ }
+ return stream;
+ }
+
+ QDataStream& inputFromStream(QDataStream& stream, quint8 formatVersion)
+ {
+ if (formatVersion == 1) {
+ quint32 eventType;
+ stream >> eventType >> m_since;
+ m_eventType = static_cast<QOrganizerItemChangeLogFilter::EventType>(eventType);
+ }
+ return stream;
+ }
+
Q_IMPLEMENT_ORGANIZERITEMFILTER_VIRTUALCTORS(QOrganizerItemChangeLogFilter, QOrganizerItemFilter::ChangeLogFilter)
QOrganizerItemChangeLogFilter::EventType m_eventType;
diff --git a/src/organizer/filters/qorganizeritemdatetimeperiodfilter_p.h b/src/organizer/filters/qorganizeritemdatetimeperiodfilter_p.h
index 418d02a439..dc8beb944f 100644
--- a/src/organizer/filters/qorganizeritemdatetimeperiodfilter_p.h
+++ b/src/organizer/filters/qorganizeritemdatetimeperiodfilter_p.h
@@ -88,6 +88,22 @@ public:
return true;
}
+ QDataStream& outputToStream(QDataStream& stream, quint8 formatVersion) const
+ {
+ if (formatVersion == 1) {
+ stream << m_start << m_end;
+ }
+ return stream;
+ }
+
+ QDataStream& inputFromStream(QDataStream& stream, quint8 formatVersion)
+ {
+ if (formatVersion == 1) {
+ stream >> m_start >> m_end;
+ }
+ return stream;
+ }
+
Q_IMPLEMENT_ORGANIZERITEMFILTER_VIRTUALCTORS(QOrganizerItemDateTimePeriodFilter, QOrganizerItemFilter::OrganizerItemDateTimePeriodFilter)
QDateTime m_start;
diff --git a/src/organizer/filters/qorganizeritemdetailfilter_p.h b/src/organizer/filters/qorganizeritemdetailfilter_p.h
index 7c0e2053c9..ad3e230443 100644
--- a/src/organizer/filters/qorganizeritemdetailfilter_p.h
+++ b/src/organizer/filters/qorganizeritemdetailfilter_p.h
@@ -93,6 +93,25 @@ public:
return true;
}
+ QDataStream& outputToStream(QDataStream& stream, quint8 formatVersion) const
+ {
+ if (formatVersion == 1) {
+ stream << m_defId << m_fieldId << m_exactValue << static_cast<quint32>(m_flags);
+ }
+ return stream;
+ }
+
+ QDataStream& inputFromStream(QDataStream& stream, quint8 formatVersion)
+ {
+ if (formatVersion == 1) {
+ quint32 flags;
+ stream >> m_defId >> m_fieldId >> m_exactValue >> flags;
+ m_flags = static_cast<QOrganizerItemFilter::MatchFlags>(flags);
+ }
+ return stream;
+ }
+
+
Q_IMPLEMENT_ORGANIZERITEMFILTER_VIRTUALCTORS(QOrganizerItemDetailFilter, QOrganizerItemFilter::OrganizerItemDetailFilter)
QString m_defId;
diff --git a/src/organizer/filters/qorganizeritemdetailrangefilter_p.h b/src/organizer/filters/qorganizeritemdetailrangefilter_p.h
index 63a8291585..ec6dfca465 100644
--- a/src/organizer/filters/qorganizeritemdetailrangefilter_p.h
+++ b/src/organizer/filters/qorganizeritemdetailrangefilter_p.h
@@ -102,6 +102,28 @@ public:
return true;
}
+ QDataStream& outputToStream(QDataStream& stream, quint8 formatVersion) const
+ {
+ if (formatVersion == 1) {
+ stream << m_defId << m_fieldId << m_minValue << m_maxValue
+ << static_cast<quint32>(m_flags)
+ << static_cast<quint32>(m_rangeflags);
+ }
+ return stream;
+ }
+
+ QDataStream& inputFromStream(QDataStream& stream, quint8 formatVersion)
+ {
+ if (formatVersion == 1) {
+ quint32 flags;
+ quint32 rangeFlags;
+ stream >> m_defId >> m_fieldId >> m_minValue >> m_maxValue >> flags >> rangeFlags;
+ m_flags = static_cast<QOrganizerItemFilter::MatchFlags>(flags);
+ m_rangeflags = static_cast<QOrganizerItemDetailRangeFilter::RangeFlags>(rangeFlags);
+ }
+ return stream;
+ }
+
Q_IMPLEMENT_ORGANIZERITEMFILTER_VIRTUALCTORS(QOrganizerItemDetailRangeFilter, QOrganizerItemFilter::OrganizerItemDetailRangeFilter)
QString m_defId;
diff --git a/src/organizer/filters/qorganizeritemintersectionfilter_p.h b/src/organizer/filters/qorganizeritemintersectionfilter_p.h
index ddc55e9f3b..0fa214f045 100644
--- a/src/organizer/filters/qorganizeritemintersectionfilter_p.h
+++ b/src/organizer/filters/qorganizeritemintersectionfilter_p.h
@@ -84,6 +84,22 @@ public:
return true;
}
+ QDataStream& outputToStream(QDataStream& stream, quint8 formatVersion) const
+ {
+ if (formatVersion == 1) {
+ stream << m_filters;
+ }
+ return stream;
+ }
+
+ QDataStream& inputFromStream(QDataStream& stream, quint8 formatVersion)
+ {
+ if (formatVersion == 1) {
+ stream >> m_filters;
+ }
+ return stream;
+ }
+
Q_IMPLEMENT_ORGANIZERITEMFILTER_VIRTUALCTORS(QOrganizerItemIntersectionFilter, QOrganizerItemFilter::IntersectionFilter)
QList<QOrganizerItemFilter> m_filters;
diff --git a/src/organizer/filters/qorganizeriteminvalidfilter.cpp b/src/organizer/filters/qorganizeriteminvalidfilter.cpp
index 0f51e672b7..409c836d2b 100644
--- a/src/organizer/filters/qorganizeriteminvalidfilter.cpp
+++ b/src/organizer/filters/qorganizeriteminvalidfilter.cpp
@@ -66,6 +66,18 @@ public:
return true; // all invalid filters are alike
}
+ QDataStream& outputToStream(QDataStream& stream, quint8 formatVersion) const
+ {
+ Q_UNUSED(formatVersion)
+ return stream;
+ }
+
+ QDataStream& inputFromStream(QDataStream& stream, quint8 formatVersion)
+ {
+ Q_UNUSED(formatVersion)
+ return stream;
+ }
+
/* There is no way this can be called - d is never detached */
QOrganizerItemFilterPrivate* clone() const
{
diff --git a/src/organizer/filters/qorganizeritemlocalidfilter_p.h b/src/organizer/filters/qorganizeritemlocalidfilter_p.h
index aba81cc8c9..b4ad0a5ceb 100644
--- a/src/organizer/filters/qorganizeritemlocalidfilter_p.h
+++ b/src/organizer/filters/qorganizeritemlocalidfilter_p.h
@@ -83,6 +83,22 @@ public:
return true;
}
+ QDataStream& outputToStream(QDataStream& stream, quint8 formatVersion) const
+ {
+ if (formatVersion == 1) {
+ stream << m_ids;
+ }
+ return stream;
+ }
+
+ QDataStream& inputFromStream(QDataStream& stream, quint8 formatVersion)
+ {
+ if (formatVersion == 1) {
+ stream >> m_ids;
+ }
+ return stream;
+ }
+
Q_IMPLEMENT_ORGANIZERITEMFILTER_VIRTUALCTORS(QOrganizerItemLocalIdFilter, QOrganizerItemFilter::LocalIdFilter)
QList<QOrganizerItemLocalId> m_ids;
diff --git a/src/organizer/filters/qorganizeritemunionfilter_p.h b/src/organizer/filters/qorganizeritemunionfilter_p.h
index d7b80a422d..62f7f07bef 100644
--- a/src/organizer/filters/qorganizeritemunionfilter_p.h
+++ b/src/organizer/filters/qorganizeritemunionfilter_p.h
@@ -84,6 +84,22 @@ public:
return true;
}
+ QDataStream& outputToStream(QDataStream& stream, quint8 formatVersion) const
+ {
+ if (formatVersion == 1) {
+ stream << m_filters;
+ }
+ return stream;
+ }
+
+ QDataStream& inputFromStream(QDataStream& stream, quint8 formatVersion)
+ {
+ if (formatVersion == 1) {
+ stream >> m_filters;
+ }
+ return stream;
+ }
+
Q_IMPLEMENT_ORGANIZERITEMFILTER_VIRTUALCTORS(QOrganizerItemUnionFilter, QOrganizerItemFilter::UnionFilter)
QList<QOrganizerItemFilter> m_filters;
diff --git a/src/organizer/qorganizeritem.cpp b/src/organizer/qorganizeritem.cpp
index 1488a0c10d..968de224a3 100644
--- a/src/organizer/qorganizeritem.cpp
+++ b/src/organizer/qorganizeritem.cpp
@@ -41,9 +41,9 @@
#include "qorganizeritem.h"
-
#include <QSet>
#include <QDebug>
+#include <QDataStream>
#include "qorganizeritem.h"
#include "qorganizeritem_p.h"
@@ -631,6 +631,7 @@ uint qHash(const QOrganizerItem &key)
return hash;
}
+#ifndef QT_NO_DEBUG_STREAM
QDebug operator<<(QDebug dbg, const QOrganizerItem& organizeritem)
{
dbg.nospace() << "QOrganizerItem(" << organizeritem.id() << ")";
@@ -639,6 +640,38 @@ QDebug operator<<(QDebug dbg, const QOrganizerItem& organizeritem)
}
return dbg.maybeSpace();
}
+#endif
+
+#ifndef QT_NO_DATASTREAM
+/*!
+ * Writes \a item to the stream \a out.
+ */
+QDataStream& operator<<(QDataStream& out, const QOrganizerItem& item)
+{
+ quint8 formatVersion = 1; // Version of QDataStream format for QOrganizerItem
+ return out << formatVersion << item.id() << item.details();
+}
+
+/*!
+ * Reads an item from stream \a in into \a item.
+ */
+QDataStream& operator>>(QDataStream& in, QOrganizerItem& item)
+{
+ quint8 formatVersion;
+ in >> formatVersion;
+ if (formatVersion == 1) {
+ item = QOrganizerItem();
+ QOrganizerItemId id;
+ QList<QOrganizerItemDetail> details;
+ in >> id >> details;
+ item.setId(id);
+ item.d->m_details = details;
+ } else {
+ in.setStatus(QDataStream::ReadCorruptData);
+ }
+ return in;
+}
+#endif
/*!
* Returns the type of the organizer item. Every organizer item has exactly one type which
diff --git a/src/organizer/qorganizeritem.h b/src/organizer/qorganizeritem.h
index 4c520a8365..a986602268 100644
--- a/src/organizer/qorganizeritem.h
+++ b/src/organizer/qorganizeritem.h
@@ -56,12 +56,21 @@
#include "qorganizeritemdisplaylabel.h"
#include "qorganizeritemdescription.h"
+class QDataStream;
+
QTM_BEGIN_NAMESPACE
class QOrganizerItemManager;
class QOrganizerItemData;
class QOrganizerItemName;
+// MSVC needs the function declared before the friend declaration
+class QOrganizerItem;
+#ifndef QT_NO_DATASTREAM
+Q_ORGANIZER_EXPORT QDataStream& operator<<(QDataStream& out, const QOrganizerItem& item);
+Q_ORGANIZER_EXPORT QDataStream& operator>>(QDataStream& in, QOrganizerItem& item);
+#endif
+
class Q_ORGANIZER_EXPORT QOrganizerItem
{
public:
@@ -185,6 +194,8 @@ protected:
friend class QOrganizerItemManager;
friend class QOrganizerItemManagerData;
friend class QOrganizerItemManagerEngine;
+ friend QDataStream& operator<<(QDataStream& out, const QOrganizerItem& item);
+ friend QDataStream& operator>>(QDataStream& in, QOrganizerItem& item);
QSharedDataPointer<QOrganizerItemData> d;
};
diff --git a/src/organizer/qorganizeritemdetail.cpp b/src/organizer/qorganizeritemdetail.cpp
index b70ad4b343..ffb90da297 100644
--- a/src/organizer/qorganizeritemdetail.cpp
+++ b/src/organizer/qorganizeritemdetail.cpp
@@ -43,6 +43,7 @@
#include "qorganizeritemdetail_p.h"
#include "qorganizeritemmanager.h"
#include <QDebug>
+#include <QDataStream>
QTM_BEGIN_NAMESPACE
@@ -368,6 +369,48 @@ QDebug operator<<(QDebug dbg, const QOrganizerItemDetail& detail)
}
#endif
+#ifndef QT_NO_DATASTREAM
+/*!
+ * Writes \a detail to the stream \a out.
+ */
+QDataStream& operator<<(QDataStream& out, const QOrganizerItemDetail& detail)
+{
+ quint8 formatVersion = 1; // Version of QDataStream format for QOrganizerItemDetail
+ return out << formatVersion
+ << detail.definitionName()
+ << static_cast<quint32>(detail.accessConstraints())
+ << detail.variantValues();
+}
+
+/*!
+ * Reads aan organizer item detail from stream \a in into \a detail.
+ */
+QDataStream& operator>>(QDataStream& in, QOrganizerItemDetail& detail)
+{
+ quint8 formatVersion;
+ in >> formatVersion;
+ if (formatVersion == 1) {
+ QString definitionName;
+ quint32 accessConstraintsInt;
+ QVariantMap values;
+ in >> definitionName >> accessConstraintsInt >> values;
+
+ detail = QOrganizerItemDetail(definitionName);
+ QOrganizerItemDetail::AccessConstraints accessConstraints(accessConstraintsInt);
+ detail.d->m_access = accessConstraints;
+
+ QMapIterator<QString, QVariant> it(values);
+ while (it.hasNext()) {
+ it.next();
+ detail.setValue(it.key(), it.value());
+ }
+ } else {
+ in.setStatus(QDataStream::ReadCorruptData);
+ }
+ return in;
+}
+#endif
+
/*!
Returns true if no values are contained in this detail. Note that context is stored as a value; hence, if a context is set, this function will return false.
*/
diff --git a/src/organizer/qorganizeritemdetail.h b/src/organizer/qorganizeritemdetail.h
index 1c8eb46436..50643a75dc 100644
--- a/src/organizer/qorganizeritemdetail.h
+++ b/src/organizer/qorganizeritemdetail.h
@@ -49,9 +49,19 @@
#include <QStringList>
#include <QVariant>
+class QDataStream;
+
QTM_BEGIN_NAMESPACE
class QOrganizerItemDetailPrivate;
+
+// MSVC needs the function declared before the friend declaration
+class QOrganizerItemDetail;
+#ifndef QT_NO_DATASTREAM
+Q_ORGANIZER_EXPORT QDataStream& operator<<(QDataStream& out, const QOrganizerItemDetail& detail);
+Q_ORGANIZER_EXPORT QDataStream& operator>>(QDataStream& in, QOrganizerItemDetail& detail);
+#endif
+
class Q_ORGANIZER_EXPORT QOrganizerItemDetail
{
public:
@@ -146,6 +156,9 @@ protected:
private:
friend class QOrganizerItem;
friend class QOrganizerItemDetailPrivate;
+#ifndef QT_NO_DATASTREAM
+ friend QDataStream& operator>>(QDataStream& in, QOrganizerItemDetail& detail);
+#endif
QSharedDataPointer<QOrganizerItemDetailPrivate> d;
};
diff --git a/src/organizer/qorganizeritemdetaildefinition.cpp b/src/organizer/qorganizeritemdetaildefinition.cpp
index 74cb2e8e90..ffec57333d 100644
--- a/src/organizer/qorganizeritemdetaildefinition.cpp
+++ b/src/organizer/qorganizeritemdetaildefinition.cpp
@@ -107,6 +107,41 @@ bool QOrganizerItemDetailDefinition::isEmpty() const
return true;
}
+#ifndef QT_NO_DATASTREAM
+/*!
+ * Writes \a definition to the stream \a out.
+ */
+QDataStream& operator<<(QDataStream& out, const QOrganizerItemDetailDefinition& definition)
+{
+ quint8 formatVersion = 1; // Version of QDataStream format for QOrganizerItemDetailDefinition
+ return out << formatVersion
+ << definition.name()
+ << definition.isUnique()
+ << definition.fields();
+}
+
+/*!
+ * Reads a detail definition from stream \a in into \a definition.
+ */
+QDataStream& operator>>(QDataStream& in, QOrganizerItemDetailDefinition& definition)
+{
+ quint8 formatVersion;
+ in >> formatVersion;
+ if (formatVersion == 1) {
+ QString name;
+ bool unique;
+ QMap<QString, QOrganizerItemDetailFieldDefinition> fields;
+ in >> name >> unique >> fields;
+ definition.setName(name);
+ definition.setUnique(unique);
+ definition.setFields(fields);
+ } else {
+ in.setStatus(QDataStream::ReadCorruptData);
+ }
+ return in;
+}
+#endif
+
/*! Sets the unique identifier of this detail type to \a definitionName. */
void QOrganizerItemDetailDefinition::setName(const QString& definitionName)
{
diff --git a/src/organizer/qorganizeritemdetaildefinition.h b/src/organizer/qorganizeritemdetaildefinition.h
index 1b8a6c25d6..931cac5b49 100644
--- a/src/organizer/qorganizeritemdetaildefinition.h
+++ b/src/organizer/qorganizeritemdetaildefinition.h
@@ -51,6 +51,8 @@
#include "qtorganizerglobal.h"
#include "qorganizeritemdetailfielddefinition.h"
+class QDataStream;
+
QTM_BEGIN_NAMESPACE
class QOrganizerItemDetailDefinitionData;
@@ -92,6 +94,11 @@ private:
QSharedDataPointer<QOrganizerItemDetailDefinitionData> d;
};
+#ifndef QT_NO_DATASTREAM
+Q_ORGANIZER_EXPORT QDataStream& operator<<(QDataStream& out, const QOrganizerItemDetailDefinition& definition);
+Q_ORGANIZER_EXPORT QDataStream& operator>>(QDataStream& in, QOrganizerItemDetailDefinition& definition);
+#endif
+
QTM_END_NAMESPACE
Q_DECLARE_TYPEINFO(QTM_PREPEND_NAMESPACE(QOrganizerItemDetailDefinition), Q_MOVABLE_TYPE);
diff --git a/src/organizer/qorganizeritemdetailfielddefinition.cpp b/src/organizer/qorganizeritemdetailfielddefinition.cpp
index 5ca4811480..27c74faf41 100644
--- a/src/organizer/qorganizeritemdetailfielddefinition.cpp
+++ b/src/organizer/qorganizeritemdetailfielddefinition.cpp
@@ -138,4 +138,34 @@ bool QOrganizerItemDetailFieldDefinition::operator!=(const QOrganizerItemDetailF
return !(*this == other);
}
+#ifndef QT_NO_DATASTREAM
+/*!
+ * Writes the detail field definition \a definition to the stream \a out.
+ */
+QDataStream& operator<<(QDataStream& out, const QOrganizerItemDetailFieldDefinition& definition)
+{
+ quint8 formatVersion = 1; // Version of QDataStream format for QOrganizerItemDetailFieldDefinition
+ return out << formatVersion << static_cast<quint32>(definition.dataType()) << definition.allowableValues();
+}
+
+/*!
+ * Reads a detail field definition from stream \a in into \a definition.
+ */
+QDataStream& operator>>(QDataStream& in, QOrganizerItemDetailFieldDefinition& definition)
+{
+ quint8 formatVersion;
+ in >> formatVersion;
+ if (formatVersion == 1) {
+ quint32 dataType;
+ QVariantList allowableValues;
+ in >> dataType >> allowableValues;
+ definition.setDataType(QVariant::Type(dataType));
+ definition.setAllowableValues(allowableValues);
+ } else {
+ in.setStatus(QDataStream::ReadCorruptData);
+ }
+ return in;
+}
+#endif
+
QTM_END_NAMESPACE
diff --git a/src/organizer/qorganizeritemdetailfielddefinition.h b/src/organizer/qorganizeritemdetailfielddefinition.h
index 605ea4cacb..e1adb915b0 100644
--- a/src/organizer/qorganizeritemdetailfielddefinition.h
+++ b/src/organizer/qorganizeritemdetailfielddefinition.h
@@ -48,6 +48,8 @@
#include "qtorganizerglobal.h"
+class QDataStream;
+
QTM_BEGIN_NAMESPACE
class QOrganizerItemDetailFieldDefinitionPrivate;
@@ -73,6 +75,11 @@ private:
QSharedDataPointer<QOrganizerItemDetailFieldDefinitionPrivate> d;
};
+#ifndef QT_NO_DATASTREAM
+Q_ORGANIZER_EXPORT QDataStream& operator<<(QDataStream& out, const QOrganizerItemDetailFieldDefinition& definition);
+Q_ORGANIZER_EXPORT QDataStream& operator>>(QDataStream& in, QOrganizerItemDetailFieldDefinition& definition);
+#endif
+
QTM_END_NAMESPACE
Q_DECLARE_TYPEINFO(QTM_PREPEND_NAMESPACE(QOrganizerItemDetailFieldDefinition), Q_MOVABLE_TYPE);
diff --git a/src/organizer/qorganizeritemfetchhint.cpp b/src/organizer/qorganizeritemfetchhint.cpp
index 585acbefbc..ee66007e3a 100644
--- a/src/organizer/qorganizeritemfetchhint.cpp
+++ b/src/organizer/qorganizeritemfetchhint.cpp
@@ -168,4 +168,31 @@ void QOrganizerItemFetchHint::setOptimizationHints(OptimizationHints hints)
d->m_optimizationHints = hints;
}
+#ifndef QT_NO_DATASTREAM
+QDataStream& operator<<(QDataStream& out, const QOrganizerItemFetchHint& hint)
+{
+ quint8 formatVersion = 1; // Version of QDataStream format for QOrganizerItemFetchHint
+ return out << formatVersion
+ << hint.detailDefinitionsHint()
+ << static_cast<quint32>(hint.optimizationHints());
+}
+
+QDataStream& operator>>(QDataStream& in, QOrganizerItemFetchHint& hint)
+{
+ quint8 formatVersion;
+ in >> formatVersion;
+ if (formatVersion == 1) {
+ QStringList detailDefinitionHints;
+ quint32 optimizations;
+ in >> detailDefinitionHints >> optimizations;
+ hint.setDetailDefinitionsHint(detailDefinitionHints);
+ hint.setOptimizationHints(static_cast<QOrganizerItemFetchHint::OptimizationHints>(optimizations));
+ } else {
+ in.setStatus(QDataStream::ReadCorruptData);
+ }
+ return in;
+}
+#endif
+
+
QTM_END_NAMESPACE
diff --git a/src/organizer/qorganizeritemfetchhint.h b/src/organizer/qorganizeritemfetchhint.h
index 5d8055dc5d..bc3cc5bbc6 100644
--- a/src/organizer/qorganizeritemfetchhint.h
+++ b/src/organizer/qorganizeritemfetchhint.h
@@ -49,6 +49,8 @@
#include "qtorganizerglobal.h"
#include "qorganizeritemdetaildefinition.h"
+class QDataStream;
+
QTM_BEGIN_NAMESPACE
class QOrganizerItemFetchHintPrivate;
@@ -77,6 +79,11 @@ private:
QSharedDataPointer<QOrganizerItemFetchHintPrivate> d;
};
+#ifndef QT_NO_DATASTREAM
+Q_ORGANIZER_EXPORT QDataStream& operator<<(QDataStream& out, const QOrganizerItemFetchHint& hint);
+Q_ORGANIZER_EXPORT QDataStream& operator>>(QDataStream& in, QOrganizerItemFetchHint& hint);
+#endif
+
QTM_END_NAMESPACE
#endif
diff --git a/src/organizer/qorganizeritemfilter.cpp b/src/organizer/qorganizeritemfilter.cpp
index 886656b01f..c65aafa51a 100644
--- a/src/organizer/qorganizeritemfilter.cpp
+++ b/src/organizer/qorganizeritemfilter.cpp
@@ -41,6 +41,7 @@
#include "qorganizeritemfilter.h"
#include "qorganizeritemfilter_p.h"
+#include "qorganizeritemfilters.h"
#include "qorganizeritemintersectionfilter.h"
#include "qorganizeritemunionfilter.h"
@@ -152,6 +153,70 @@ bool QOrganizerItemFilter::operator==(const QOrganizerItemFilter& other) const
return d_ptr->compare(other.d_ptr);
}
+#ifndef QT_NO_DATASTREAM
+/*!
+ * Writes \a filter to the stream \a out.
+ */
+QDataStream& operator<<(QDataStream& out, const QOrganizerItemFilter& filter)
+{
+ quint8 formatVersion = 1; // Version of QDataStream format for QOrganizerItemDetailFilter
+ out << formatVersion << static_cast<quint32>(filter.type());
+ if (filter.d_ptr)
+ filter.d_ptr->outputToStream(out, formatVersion);
+ return out;
+}
+
+/*!
+ * Reads an organizer item filter from stream \a in into \a filter.
+ */
+QDataStream& operator>>(QDataStream& in, QOrganizerItemFilter& filter)
+{
+ quint8 formatVersion;
+ in >> formatVersion;
+ if (formatVersion == 1) {
+ quint32 type;
+ in >> type;
+ switch (type) {
+ case QOrganizerItemFilter::InvalidFilter:
+ filter = QOrganizerItemInvalidFilter();
+ break;
+ case QOrganizerItemFilter::OrganizerItemDetailFilter:
+ filter = QOrganizerItemDetailFilter();
+ break;
+ case QOrganizerItemFilter::OrganizerItemDetailRangeFilter:
+ filter = QOrganizerItemDetailRangeFilter();
+ break;
+ case QOrganizerItemFilter::ChangeLogFilter:
+ filter = QOrganizerItemChangeLogFilter();
+ break;
+ case QOrganizerItemFilter::IntersectionFilter:
+ filter = QOrganizerItemIntersectionFilter();
+ break;
+ case QOrganizerItemFilter::UnionFilter:
+ filter = QOrganizerItemUnionFilter();
+ break;
+ case QOrganizerItemFilter::LocalIdFilter:
+ filter = QOrganizerItemLocalIdFilter();
+ break;
+ case QOrganizerItemFilter::OrganizerItemDateTimePeriodFilter:
+ filter = QOrganizerItemDateTimePeriodFilter();
+ break;
+ case QOrganizerItemFilter::DefaultFilter:
+ filter = QOrganizerItemFilter();
+ break;
+ }
+
+ if (filter.d_ptr) {
+ filter.d_ptr->inputFromStream(in, formatVersion);
+ }
+ } else {
+ in.setStatus(QDataStream::ReadCorruptData);
+ }
+ return in;
+}
+#endif
+
+
/*!
\internal
Constructs a new filter from the given data pointer \a d
diff --git a/src/organizer/qorganizeritemfilter.h b/src/organizer/qorganizeritemfilter.h
index a57a541c54..ea5d1f0c3a 100644
--- a/src/organizer/qorganizeritemfilter.h
+++ b/src/organizer/qorganizeritemfilter.h
@@ -49,6 +49,8 @@
#include "qtorganizerglobal.h"
+class QDataStream;
+
QTM_BEGIN_NAMESPACE
/* Manual Q_DECLARE_ORGANIZERITEMFILTER_PRIVATE macro */
@@ -59,6 +61,14 @@ QTM_BEGIN_NAMESPACE
friend class Class##Private;
class QOrganizerItemFilterPrivate;
+
+// MSVC needs the function declared before the friend declaration
+class QOrganizerItemFilter;
+#ifndef QT_NO_DATASTREAM
+Q_ORGANIZER_EXPORT QDataStream& operator<<(QDataStream& out, const QOrganizerItemFilter& filter);
+Q_ORGANIZER_EXPORT QDataStream& operator>>(QDataStream& in, QOrganizerItemFilter& filter);
+#endif
+
class Q_ORGANIZER_EXPORT QOrganizerItemFilter
{
public:
@@ -101,6 +111,10 @@ protected:
protected:
friend class QOrganizerItemFilterPrivate;
+#ifndef QT_NO_DATASTREAM
+ friend QDataStream& operator<<(QDataStream& out, const QOrganizerItemFilter& filter);
+ friend QDataStream& operator>>(QDataStream& in, QOrganizerItemFilter& filter);
+#endif
QSharedDataPointer<QOrganizerItemFilterPrivate> d_ptr;
};
diff --git a/src/organizer/qorganizeritemfilter_p.h b/src/organizer/qorganizeritemfilter_p.h
index 4dc16a4c96..406fe7d597 100644
--- a/src/organizer/qorganizeritemfilter_p.h
+++ b/src/organizer/qorganizeritemfilter_p.h
@@ -55,7 +55,7 @@
#include "qorganizeritemfilter.h"
#include <QSharedData>
-
+#include <QDataStream>
/* Boiler plate code */
#define Q_IMPLEMENT_ORGANIZERITEMFILTER_PRIVATE(Class) \
@@ -87,6 +87,8 @@ public:
}
virtual bool compare(const QOrganizerItemFilterPrivate* other) const = 0;
+ virtual QDataStream& outputToStream(QDataStream& stream, quint8 formatVersion) const = 0;
+ virtual QDataStream& inputFromStream(QDataStream& stream, quint8 formatVersion) = 0;
virtual QOrganizerItemFilterPrivate* clone() const = 0;
virtual QOrganizerItemFilter::FilterType type() const = 0;
diff --git a/src/organizer/qorganizeritemid.cpp b/src/organizer/qorganizeritemid.cpp
index aa7e3d2ac0..a6e0064dba 100644
--- a/src/organizer/qorganizeritemid.cpp
+++ b/src/organizer/qorganizeritemid.cpp
@@ -43,6 +43,7 @@
#include "qorganizeritemid_p.h"
#include <QHash>
#include <QDebug>
+#include <QDataStream>
QTM_BEGIN_NAMESPACE
@@ -159,6 +160,30 @@ QDebug operator<<(QDebug dbg, const QOrganizerItemId& id)
}
#endif
+#ifndef QT_NO_DATASTREAM
+QDataStream& operator<<(QDataStream& out, const QOrganizerItemId& id)
+{
+ quint8 formatVersion = 1; // Version of QDataStream format for QOrganizerItemId
+ return out << formatVersion << id.managerUri() << id.localId();
+}
+
+QDataStream& operator>>(QDataStream& in, QOrganizerItemId& id)
+{
+ quint8 formatVersion;
+ in >> formatVersion;
+ if (formatVersion == 1) {
+ QString managerUri;
+ QOrganizerItemLocalId localId;
+ in >> managerUri >> localId;
+ id.setManagerUri(managerUri);
+ id.setLocalId(localId);
+ } else {
+ in.setStatus(QDataStream::ReadCorruptData);
+ }
+ return in;
+}
+#endif
+
/*!
* Returns the URI of the manager which contains the organizer item identified by this id
*/
diff --git a/src/organizer/qorganizeritemid.h b/src/organizer/qorganizeritemid.h
index 85dbfb2acf..e115da1e31 100644
--- a/src/organizer/qorganizeritemid.h
+++ b/src/organizer/qorganizeritemid.h
@@ -47,6 +47,8 @@
#include "qtorganizerglobal.h"
+class QDataStream;
+
QTM_BEGIN_NAMESPACE
typedef quint32 QOrganizerItemLocalId;
@@ -80,6 +82,11 @@ Q_ORGANIZER_EXPORT uint qHash(const QOrganizerItemId& key);
Q_ORGANIZER_EXPORT QDebug operator<<(QDebug dbg, const QOrganizerItemId& id);
#endif
+#ifndef QT_NO_DATASTREAM
+Q_ORGANIZER_EXPORT QDataStream& operator<<(QDataStream& out, const QOrganizerItemId& id);
+Q_ORGANIZER_EXPORT QDataStream& operator>>(QDataStream& in, QOrganizerItemId& id);
+#endif
+
QTM_END_NAMESPACE
Q_DECLARE_TYPEINFO(QTM_PREPEND_NAMESPACE(QOrganizerItemId), Q_MOVABLE_TYPE);
diff --git a/src/organizer/qorganizeritemsortorder.cpp b/src/organizer/qorganizeritemsortorder.cpp
index bc87f53d3c..974f9aecf1 100644
--- a/src/organizer/qorganizeritemsortorder.cpp
+++ b/src/organizer/qorganizeritemsortorder.cpp
@@ -130,6 +130,46 @@ bool QOrganizerItemSortOrder::operator ==(const QOrganizerItemSortOrder& other)
return false;
}
+#ifndef QT_NO_DATASTREAM
+/*!
+ * Writes \a sortOrder to the stream \a out.
+ */
+QDataStream& operator<<(QDataStream& out, const QOrganizerItemSortOrder& sortOrder)
+{
+ quint8 formatVersion = 1; // Version of QDataStream format for QOrganizerItemSortOrder
+ return out << formatVersion
+ << sortOrder.detailDefinitionName()
+ << sortOrder.detailFieldName()
+ << static_cast<quint32>(sortOrder.blankPolicy())
+ << static_cast<quint32>(sortOrder.direction())
+ << static_cast<quint32>(sortOrder.caseSensitivity());
+}
+
+/*!
+ * Reads a sort order from stream \a in into \a sortOrder.
+ */
+QDataStream& operator>>(QDataStream& in, QOrganizerItemSortOrder& sortOrder)
+{
+ quint8 formatVersion;
+ in >> formatVersion;
+ if (formatVersion == 1) {
+ QString definitionName;
+ QString fieldName;
+ quint32 blankPolicy;
+ quint32 direction;
+ quint32 caseSensitivity;
+ in >> definitionName >> fieldName >> blankPolicy >> direction >> caseSensitivity;
+ sortOrder.setDetailDefinitionName(definitionName, fieldName);
+ sortOrder.setBlankPolicy(static_cast<QOrganizerItemSortOrder::BlankPolicy>(blankPolicy));
+ sortOrder.setDirection(static_cast<Qt::SortOrder>(direction));
+ sortOrder.setCaseSensitivity(static_cast<Qt::CaseSensitivity>(caseSensitivity));
+ } else {
+ in.setStatus(QDataStream::ReadCorruptData);
+ }
+ return in;
+}
+#endif
+
/*!
* Sets the definition name of the details which will be inspected to perform sorting to \a definitionName,
* and the name of those details' fields which contains the value which organizer items will be sorted by to \a fieldName
diff --git a/src/organizer/qorganizeritemsortorder.h b/src/organizer/qorganizeritemsortorder.h
index 9a734c25a1..a7523fb7ff 100644
--- a/src/organizer/qorganizeritemsortorder.h
+++ b/src/organizer/qorganizeritemsortorder.h
@@ -48,6 +48,8 @@
#include <QSharedData>
#include <QList>
+class QDataStream;
+
QTM_BEGIN_NAMESPACE
class QOrganizerItemSortOrderPrivate;
@@ -90,6 +92,11 @@ private:
QSharedDataPointer<QOrganizerItemSortOrderPrivate> d;
};
+#ifndef QT_NO_DATASTREAM
+Q_ORGANIZER_EXPORT QDataStream& operator<<(QDataStream& out, const QOrganizerItemSortOrder& sortOrder);
+Q_ORGANIZER_EXPORT QDataStream& operator>>(QDataStream& in, QOrganizerItemSortOrder& sortOrder);
+#endif
+
QTM_END_NAMESPACE
Q_DECLARE_TYPEINFO(QTM_PREPEND_NAMESPACE(QOrganizerItemSortOrder), Q_MOVABLE_TYPE);