summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJani Honkonen <jani.honkonen@digia.com>2010-06-17 13:39:16 +0300
committerJani Honkonen <jani.honkonen@digia.com>2010-06-17 13:51:00 +0300
commitfeb6f3e7eae86ad69b2d6acb09e300c494513843 (patch)
tree13befebb2b9b71b588d5f9fdf1043e71eb96d1a1
parent51b0ad5a59c666441c00c5c4bb8285df242378a9 (diff)
Symbian: Added created timestamp support
Also added some debug code for more easier detection of errors in transform classes.
-rw-r--r--plugins/organizer/symbian/organizeritemtransform.cpp44
-rw-r--r--plugins/organizer/symbian/organizeritemtransform.h1
-rw-r--r--plugins/organizer/symbian/qorganizersymbian.cpp19
-rw-r--r--plugins/organizer/symbian/transform/organizereventtimerangetransform.cpp5
-rw-r--r--plugins/organizer/symbian/transform/organizereventtimerangetransform.h1
-rw-r--r--plugins/organizer/symbian/transform/organizeritemdescriptiontransform.cpp6
-rw-r--r--plugins/organizer/symbian/transform/organizeritemdescriptiontransform.h1
-rw-r--r--plugins/organizer/symbian/transform/organizeritemdetailtransform.cpp7
-rw-r--r--plugins/organizer/symbian/transform/organizeritemdetailtransform.h2
-rw-r--r--plugins/organizer/symbian/transform/organizeritemdisplaylabeltransform.cpp6
-rw-r--r--plugins/organizer/symbian/transform/organizeritemdisplaylabeltransform.h1
-rw-r--r--plugins/organizer/symbian/transform/organizeritemguidtransform.cpp11
-rw-r--r--plugins/organizer/symbian/transform/organizeritemguidtransform.h2
-rw-r--r--plugins/organizer/symbian/transform/organizeritemlocationtransform.cpp5
-rw-r--r--plugins/organizer/symbian/transform/organizeritemlocationtransform.h1
-rw-r--r--plugins/organizer/symbian/transform/organizeritemprioritytransform.cpp5
-rw-r--r--plugins/organizer/symbian/transform/organizeritemprioritytransform.h1
-rw-r--r--plugins/organizer/symbian/transform/organizeritemrecurrencetransform.cpp5
-rw-r--r--plugins/organizer/symbian/transform/organizeritemrecurrencetransform.h1
-rw-r--r--plugins/organizer/symbian/transform/organizeritemtimestamptransform.cpp29
-rw-r--r--plugins/organizer/symbian/transform/organizeritemtimestamptransform.h2
-rw-r--r--plugins/organizer/symbian/transform/organizeritemtypetransform.cpp11
-rw-r--r--plugins/organizer/symbian/transform/organizeritemtypetransform.h1
-rw-r--r--plugins/organizer/symbian/transform/organizerjournaltimerangetransform.cpp5
-rw-r--r--plugins/organizer/symbian/transform/organizerjournaltimerangetransform.h1
-rw-r--r--plugins/organizer/symbian/transform/organizertodoprogresstransform.cpp6
-rw-r--r--plugins/organizer/symbian/transform/organizertodoprogresstransform.h1
-rw-r--r--plugins/organizer/symbian/transform/organizertodotimerangetransform.cpp5
-rw-r--r--plugins/organizer/symbian/transform/organizertodotimerangetransform.h1
-rw-r--r--plugins/organizer/symbian/tsrc/tst_symbianom/tst_symbianom.cpp17
30 files changed, 173 insertions, 30 deletions
diff --git a/plugins/organizer/symbian/organizeritemtransform.cpp b/plugins/organizer/symbian/organizeritemtransform.cpp
index 93e8daccd6..a63c6e5763 100644
--- a/plugins/organizer/symbian/organizeritemtransform.cpp
+++ b/plugins/organizer/symbian/organizeritemtransform.cpp
@@ -80,22 +80,48 @@ OrganizerItemTransform::OrganizerItemTransform()
OrganizerItemTransform::~OrganizerItemTransform()
{
+ // Delete transform objects
foreach (OrganizerItemDetailTransform *i, m_detailTransforms)
delete i;
}
void OrganizerItemTransform::toEntryL(const QOrganizerItem &item, CCalEntry *entry)
{
- // Loop through transform classes
- foreach (OrganizerItemDetailTransform *i, m_detailTransforms)
- i->transformToEntryL(item, entry);
+ // Loop through transform objects
+ foreach (OrganizerItemDetailTransform *i, m_detailTransforms) {
+ // TODO: This is just for debugging. Remove before release.
+ TRAPD(err, i->transformToEntryL(item, entry));
+ if (err) {
+ qDebug() << "transformToEntryL failed! detail:" << i->detailDefinitionName() << "err:" << err;
+ User::Leave(err);
+ }
+ }
}
void OrganizerItemTransform::toItemL(const CCalEntry &entry, QOrganizerItem *item) const
{
- // Loop through transform classes
- foreach (OrganizerItemDetailTransform *i, m_detailTransforms)
- i->transformToDetailL(entry, item);
+ // Loop through transform objects
+ foreach (OrganizerItemDetailTransform *i, m_detailTransforms) {
+ // TODO: This is just for debugging. Remove before release.
+ TRAPD(err, i->transformToDetailL(entry, item));
+ if (err) {
+ qDebug() << "transformToDetailL failed! detail:" << i->detailDefinitionName() << "err:" << err;
+ User::Leave(err);
+ }
+ }
+}
+
+void OrganizerItemTransform::toItemPostSaveL(const CCalEntry &entry, QOrganizerItem *item) const
+{
+ // Loop through transform objects
+ foreach (OrganizerItemDetailTransform *i, m_detailTransforms) {
+ // TODO: This is just for debugging. Remove before release.
+ TRAPD(err, i->transformToDetailPostSaveL(entry, item));
+ if (err) {
+ qDebug() << "transformToDetailPostSaveL failed! detail:" << i->detailDefinitionName() << "err:" << err;
+ User::Leave(err);
+ }
+ }
}
void OrganizerItemTransform::toItemL(const CCalInstance &instance, QOrganizerItem *item) const
@@ -110,9 +136,9 @@ void OrganizerItemTransform::toItemL(const CCalInstance &instance, QOrganizerIte
void OrganizerItemTransform::debugEntryL(const CCalEntry &entry) const
{
- qDebug() << "CCalEntry";
- qDebug() << "LocalUid :" << entry.LocalUidL();
- qDebug() << "Uid :" << OrganizerItemDetailTransform::toQString(entry.UidL());
+ qDebug() << QString("CCalEntry uid-%1 localUid-%2")
+ .arg(OrganizerItemDetailTransform::toQString(entry.UidL()))
+ .arg(entry.LocalUidL());
qDebug() << "Type :" << entry.EntryTypeL();
qDebug() << "Summary :" << OrganizerItemDetailTransform::toQString(entry.SummaryL());
qDebug() << "Desription :" << OrganizerItemDetailTransform::toQString(entry.DescriptionL());
diff --git a/plugins/organizer/symbian/organizeritemtransform.h b/plugins/organizer/symbian/organizeritemtransform.h
index 6f7c095d34..86e888a4c6 100644
--- a/plugins/organizer/symbian/organizeritemtransform.h
+++ b/plugins/organizer/symbian/organizeritemtransform.h
@@ -62,6 +62,7 @@ public:
void toEntryL(const QOrganizerItem &item, CCalEntry *entry);
void toItemL(const CCalEntry &entry, QOrganizerItem *item) const;
+ void toItemPostSaveL(const CCalEntry &entry, QOrganizerItem *item) const;
void toItemL(const CCalInstance &instance, QOrganizerItem *item) const;
private:
diff --git a/plugins/organizer/symbian/qorganizersymbian.cpp b/plugins/organizer/symbian/qorganizersymbian.cpp
index 3c480a2be1..e0b07a09dc 100644
--- a/plugins/organizer/symbian/qorganizersymbian.cpp
+++ b/plugins/organizer/symbian/qorganizersymbian.cpp
@@ -293,10 +293,13 @@ void QOrganizerItemSymbianEngine::saveItemL(QOrganizerItem *item)
CCalEntry *entry = CCalEntry::NewL(type, globalUid, method, seqNum);
CleanupStack::Pop(globalUid); // ownership passed?
CleanupStack::PushL(entry);
+
+ // Check if this is an exising entry which needs update.
+ if (item->localId() && item->id().managerUri() == managerUri()) {
+ // Use old local id.
+ entry->SetLocalUidL(TCalLocalUid(item->localId()));
+ }
- // Update last modified date to entry
- entry->SetLastModifiedDateL();
-
// Transform QOrganizerItem -> CCalEntry
m_itemTransform.toEntryL(*item, entry);
@@ -314,15 +317,9 @@ void QOrganizerItemSymbianEngine::saveItemL(QOrganizerItem *item)
// -> let's use the "one-error-fits-all" error code KErrGeneral.
User::Leave(KErrGeneral);
}
-
- // Update timestamp
- QOrganizerItemTimestamp timeStamp = item->detail<QOrganizerItemTimestamp>();
- timeStamp.setLastModified(OrganizerItemDetailTransform::toQDateTimeL(entry->LastModifiedDateL()));
- // TODO: where do we get the created timestamp? native api does not seem to support it
- item->saveDetail(&timeStamp);
- // Update guid
- item->setGuid(OrganizerItemDetailTransform::toQString(entry->UidL()));
+ // Transform details that are available/updated after saving
+ m_itemTransform.toItemPostSaveL(*entry, item);
// Update local id
QOrganizerItemId itemId;
diff --git a/plugins/organizer/symbian/transform/organizereventtimerangetransform.cpp b/plugins/organizer/symbian/transform/organizereventtimerangetransform.cpp
index 772d3f94be..d148c3e624 100644
--- a/plugins/organizer/symbian/transform/organizereventtimerangetransform.cpp
+++ b/plugins/organizer/symbian/transform/organizereventtimerangetransform.cpp
@@ -81,3 +81,8 @@ void OrganizerEventTimeRangeTransform::transformToEntryL(const QOrganizerItem& i
User::Leave(KErrArgument);
}
}
+
+QString OrganizerEventTimeRangeTransform::detailDefinitionName()
+{
+ return QOrganizerEventTimeRange::DefinitionName;
+}
diff --git a/plugins/organizer/symbian/transform/organizereventtimerangetransform.h b/plugins/organizer/symbian/transform/organizereventtimerangetransform.h
index 5dd6489b19..2097f26d0d 100644
--- a/plugins/organizer/symbian/transform/organizereventtimerangetransform.h
+++ b/plugins/organizer/symbian/transform/organizereventtimerangetransform.h
@@ -49,6 +49,7 @@ class OrganizerEventTimeRangeTransform : public OrganizerItemDetailTransform
public:
void transformToDetailL(const CCalEntry& entry, QOrganizerItem *item);
void transformToEntryL(const QOrganizerItem& item, CCalEntry* entry);
+ QString detailDefinitionName();
};
#endif /* ORGANIZEREVENTTIMERANGETRANSFORM_H_ */
diff --git a/plugins/organizer/symbian/transform/organizeritemdescriptiontransform.cpp b/plugins/organizer/symbian/transform/organizeritemdescriptiontransform.cpp
index bd54ab228d..989b22e7de 100644
--- a/plugins/organizer/symbian/transform/organizeritemdescriptiontransform.cpp
+++ b/plugins/organizer/symbian/transform/organizeritemdescriptiontransform.cpp
@@ -39,6 +39,7 @@
**
****************************************************************************/
#include "organizeritemdescriptiontransform.h"
+#include "qorganizeritemdescription.h"
void OrganizerItemDescriptionTransform::transformToDetailL(const CCalEntry& entry, QOrganizerItem *item)
{
@@ -52,3 +53,8 @@ void OrganizerItemDescriptionTransform::transformToEntryL(const QOrganizerItem&
if (!item.description().isEmpty())
entry->SetDescriptionL(toPtrC16(item.description()));
}
+
+QString OrganizerItemDescriptionTransform::detailDefinitionName()
+{
+ return QOrganizerItemDescription::DefinitionName;
+}
diff --git a/plugins/organizer/symbian/transform/organizeritemdescriptiontransform.h b/plugins/organizer/symbian/transform/organizeritemdescriptiontransform.h
index c0fb929678..dd19769c8e 100644
--- a/plugins/organizer/symbian/transform/organizeritemdescriptiontransform.h
+++ b/plugins/organizer/symbian/transform/organizeritemdescriptiontransform.h
@@ -48,6 +48,7 @@ class OrganizerItemDescriptionTransform : public OrganizerItemDetailTransform
public:
void transformToDetailL(const CCalEntry& entry, QOrganizerItem *item);
void transformToEntryL(const QOrganizerItem& item, CCalEntry* entry);
+ QString detailDefinitionName();
};
#endif /* ORGANIZERITEMDESCRIPTIONTRANSFORM_H_ */
diff --git a/plugins/organizer/symbian/transform/organizeritemdetailtransform.cpp b/plugins/organizer/symbian/transform/organizeritemdetailtransform.cpp
index ad5f21edda..cc0f6b5b4d 100644
--- a/plugins/organizer/symbian/transform/organizeritemdetailtransform.cpp
+++ b/plugins/organizer/symbian/transform/organizeritemdetailtransform.cpp
@@ -50,6 +50,13 @@ OrganizerItemDetailTransform::~OrganizerItemDetailTransform()
}
+void OrganizerItemDetailTransform::transformToDetailPostSaveL(const CCalEntry& entry, QOrganizerItem *item)
+{
+ Q_UNUSED(entry);
+ Q_UNUSED(item);
+ // empty default implementation
+}
+
QString OrganizerItemDetailTransform::toQString(const TDesC8 &des)
{
return QString::fromUtf8((const char *)des.Ptr(), des.Length());
diff --git a/plugins/organizer/symbian/transform/organizeritemdetailtransform.h b/plugins/organizer/symbian/transform/organizeritemdetailtransform.h
index d3cb726453..047b309c17 100644
--- a/plugins/organizer/symbian/transform/organizeritemdetailtransform.h
+++ b/plugins/organizer/symbian/transform/organizeritemdetailtransform.h
@@ -54,7 +54,9 @@ public:
virtual ~OrganizerItemDetailTransform();
virtual void transformToDetailL(const CCalEntry& entry, QOrganizerItem *item) = 0;
+ virtual void transformToDetailPostSaveL(const CCalEntry& entry, QOrganizerItem *item);
virtual void transformToEntryL(const QOrganizerItem& item, CCalEntry* entry) = 0;
+ virtual QString detailDefinitionName() = 0;
static QString toQString(const TDesC8 &des);
static QString toQString(const TDesC16 &des);
diff --git a/plugins/organizer/symbian/transform/organizeritemdisplaylabeltransform.cpp b/plugins/organizer/symbian/transform/organizeritemdisplaylabeltransform.cpp
index 953face76e..c104032478 100644
--- a/plugins/organizer/symbian/transform/organizeritemdisplaylabeltransform.cpp
+++ b/plugins/organizer/symbian/transform/organizeritemdisplaylabeltransform.cpp
@@ -40,6 +40,7 @@
****************************************************************************/
#include "organizeritemdisplaylabeltransform.h"
+#include "qorganizeritemdisplaylabel.h"
void OrganizerItemDisplayLabelTransform::transformToDetailL(const CCalEntry& entry, QOrganizerItem *item)
{
@@ -53,3 +54,8 @@ void OrganizerItemDisplayLabelTransform::transformToEntryL(const QOrganizerItem&
if (!item.displayLabel().isEmpty())
entry->SetSummaryL(toPtrC16(item.displayLabel()));
}
+
+QString OrganizerItemDisplayLabelTransform::detailDefinitionName()
+{
+ return QOrganizerItemDisplayLabel::DefinitionName;
+}
diff --git a/plugins/organizer/symbian/transform/organizeritemdisplaylabeltransform.h b/plugins/organizer/symbian/transform/organizeritemdisplaylabeltransform.h
index 7013c1c8ff..43cafe09a0 100644
--- a/plugins/organizer/symbian/transform/organizeritemdisplaylabeltransform.h
+++ b/plugins/organizer/symbian/transform/organizeritemdisplaylabeltransform.h
@@ -48,6 +48,7 @@ class OrganizerItemDisplayLabelTransform : public OrganizerItemDetailTransform
public:
void transformToDetailL(const CCalEntry& entry, QOrganizerItem *item);
void transformToEntryL(const QOrganizerItem& item, CCalEntry* entry);
+ QString detailDefinitionName();
};
#endif /* ORGANIZERITEMDISPLAYLABELTRANSFORM_H_ */
diff --git a/plugins/organizer/symbian/transform/organizeritemguidtransform.cpp b/plugins/organizer/symbian/transform/organizeritemguidtransform.cpp
index 2607d4f21d..924efb3e7b 100644
--- a/plugins/organizer/symbian/transform/organizeritemguidtransform.cpp
+++ b/plugins/organizer/symbian/transform/organizeritemguidtransform.cpp
@@ -39,6 +39,7 @@
**
****************************************************************************/
#include "organizeritemguidtransform.h"
+#include "qorganizeritemguid.h"
const TInt KGuidLength = 30;
@@ -58,6 +59,11 @@ void OrganizerItemGuidTransform::transformToDetailL(const CCalEntry& entry, QOrg
item->setGuid(guid);
}
+void OrganizerItemGuidTransform::transformToDetailPostSaveL(const CCalEntry& entry, QOrganizerItem *item)
+{
+ transformToDetailL(entry, item);
+}
+
void OrganizerItemGuidTransform::transformToEntryL(const QOrganizerItem& item, CCalEntry* entry)
{
Q_UNUSED(item);
@@ -65,6 +71,11 @@ void OrganizerItemGuidTransform::transformToEntryL(const QOrganizerItem& item, C
// Not used. Guid is already set when CCalEntry was created.
}
+QString OrganizerItemGuidTransform::detailDefinitionName()
+{
+ return QOrganizerItemGuid::DefinitionName;
+}
+
HBufC8 *OrganizerItemGuidTransform::guidLC(const QOrganizerItem &item)
{
// Read guid from organizer item
diff --git a/plugins/organizer/symbian/transform/organizeritemguidtransform.h b/plugins/organizer/symbian/transform/organizeritemguidtransform.h
index 53952c700f..770dbb86e3 100644
--- a/plugins/organizer/symbian/transform/organizeritemguidtransform.h
+++ b/plugins/organizer/symbian/transform/organizeritemguidtransform.h
@@ -48,7 +48,9 @@ class OrganizerItemGuidTransform : public OrganizerItemDetailTransform
public:
OrganizerItemGuidTransform();
void transformToDetailL(const CCalEntry& entry, QOrganizerItem *item);
+ void transformToDetailPostSaveL(const CCalEntry& entry, QOrganizerItem *item);
void transformToEntryL(const QOrganizerItem& item, CCalEntry* entry);
+ QString detailDefinitionName();
static HBufC8 *guidLC(const QOrganizerItem &item);
};
diff --git a/plugins/organizer/symbian/transform/organizeritemlocationtransform.cpp b/plugins/organizer/symbian/transform/organizeritemlocationtransform.cpp
index 67e3e9a082..161f2b42c3 100644
--- a/plugins/organizer/symbian/transform/organizeritemlocationtransform.cpp
+++ b/plugins/organizer/symbian/transform/organizeritemlocationtransform.cpp
@@ -59,3 +59,8 @@ void OrganizerItemLocationTransform::transformToEntryL(const QOrganizerItem& ite
entry->SetLocationL(toPtrC16(loc.locationName()));
}
}
+
+QString OrganizerItemLocationTransform::detailDefinitionName()
+{
+ return QOrganizerItemLocation::DefinitionName;
+}
diff --git a/plugins/organizer/symbian/transform/organizeritemlocationtransform.h b/plugins/organizer/symbian/transform/organizeritemlocationtransform.h
index 14e864c1ab..4ac0a3c0f1 100644
--- a/plugins/organizer/symbian/transform/organizeritemlocationtransform.h
+++ b/plugins/organizer/symbian/transform/organizeritemlocationtransform.h
@@ -48,6 +48,7 @@ class OrganizerItemLocationTransform : public OrganizerItemDetailTransform
public:
void transformToDetailL(const CCalEntry& entry, QOrganizerItem *item);
void transformToEntryL(const QOrganizerItem& item, CCalEntry* entry);
+ QString detailDefinitionName();
};
#endif /* ORGANIZERITEMLOCATIONTRANSFORM_H_ */
diff --git a/plugins/organizer/symbian/transform/organizeritemprioritytransform.cpp b/plugins/organizer/symbian/transform/organizeritemprioritytransform.cpp
index e6d2fb4256..b362932873 100644
--- a/plugins/organizer/symbian/transform/organizeritemprioritytransform.cpp
+++ b/plugins/organizer/symbian/transform/organizeritemprioritytransform.cpp
@@ -56,3 +56,8 @@ void OrganizerItemPriorityTransform::transformToEntryL(const QOrganizerItem& ite
if (!priority.isEmpty())
entry->SetPriorityL(priority.priority()); // allowed values between 0 and 255.
}
+
+QString OrganizerItemPriorityTransform::detailDefinitionName()
+{
+ return QOrganizerItemPriority::DefinitionName;
+}
diff --git a/plugins/organizer/symbian/transform/organizeritemprioritytransform.h b/plugins/organizer/symbian/transform/organizeritemprioritytransform.h
index dcebcfe79b..dfb28d70e7 100644
--- a/plugins/organizer/symbian/transform/organizeritemprioritytransform.h
+++ b/plugins/organizer/symbian/transform/organizeritemprioritytransform.h
@@ -49,6 +49,7 @@ class OrganizerItemPriorityTransform : public OrganizerItemDetailTransform
public:
void transformToDetailL(const CCalEntry& entry, QOrganizerItem *item);
void transformToEntryL(const QOrganizerItem& item, CCalEntry* entry);
+ QString detailDefinitionName();
};
#endif // ORGANIZERITEMPRIORITYTRANSFORM_H_
diff --git a/plugins/organizer/symbian/transform/organizeritemrecurrencetransform.cpp b/plugins/organizer/symbian/transform/organizeritemrecurrencetransform.cpp
index ebd48edcd1..6d3369ac2a 100644
--- a/plugins/organizer/symbian/transform/organizeritemrecurrencetransform.cpp
+++ b/plugins/organizer/symbian/transform/organizeritemrecurrencetransform.cpp
@@ -94,6 +94,11 @@ void OrganizerItemRecurrenceTransform::transformToEntryL(const QOrganizerItem& i
// TODO: what about recurrence.exceptionRules()? there is no match in native API.
}
+QString OrganizerItemRecurrenceTransform::detailDefinitionName()
+{
+ return QOrganizerItemRecurrence::DefinitionName;
+}
+
void OrganizerItemRecurrenceTransform::toTCalTimesL(const QList<QDate> &dates, RArray<TCalTime> &calDates) const
{
foreach (QDate date, dates) {
diff --git a/plugins/organizer/symbian/transform/organizeritemrecurrencetransform.h b/plugins/organizer/symbian/transform/organizeritemrecurrencetransform.h
index 68689b7660..fee2027b60 100644
--- a/plugins/organizer/symbian/transform/organizeritemrecurrencetransform.h
+++ b/plugins/organizer/symbian/transform/organizeritemrecurrencetransform.h
@@ -49,6 +49,7 @@ class OrganizerItemRecurrenceTransform : public OrganizerItemDetailTransform
public:
void transformToDetailL(const CCalEntry& entry, QOrganizerItem *item);
void transformToEntryL(const QOrganizerItem& item, CCalEntry* entry);
+ QString detailDefinitionName();
private:
void toTCalTimesL(const QList<QDate> &dateTimes, RArray<TCalTime> &calDates) const;
diff --git a/plugins/organizer/symbian/transform/organizeritemtimestamptransform.cpp b/plugins/organizer/symbian/transform/organizeritemtimestamptransform.cpp
index ec9e93f762..9223c6fabc 100644
--- a/plugins/organizer/symbian/transform/organizeritemtimestamptransform.cpp
+++ b/plugins/organizer/symbian/transform/organizeritemtimestamptransform.cpp
@@ -43,14 +43,35 @@
void OrganizerItemTimeStampTransform::transformToDetailL(const CCalEntry& entry, QOrganizerItem *item)
{
- QOrganizerItemTimestamp timeStamp;
+ QOrganizerItemTimestamp timeStamp = item->detail<QOrganizerItemTimestamp>();
+ timeStamp.setCreated(toQDateTimeL(entry.DTStampL()));
timeStamp.setLastModified(toQDateTimeL(entry.LastModifiedDateL()));
item->saveDetail(&timeStamp);
}
+void OrganizerItemTimeStampTransform::transformToDetailPostSaveL(const CCalEntry& entry, QOrganizerItem *item)
+{
+ transformToDetailL(entry, item);
+}
+
void OrganizerItemTimeStampTransform::transformToEntryL(const QOrganizerItem& item, CCalEntry* entry)
{
- Q_UNUSED(item);
- Q_UNUSED(entry);
- // Not used. Timestamp was set when CCalEntry was created.
+ QOrganizerItemTimestamp timeStamp = item.detail<QOrganizerItemTimestamp>();
+ if (!timeStamp.created().isNull() && timeStamp.created().isValid()) {
+ // This is an old entry.
+ entry->SetDTStampL(toTCalTimeL(timeStamp.created()));
+ } else {
+ // This is new entry. Generate creation time.
+ TCalTime dtstamp;
+ TTime currentUtcTime;
+ currentUtcTime.UniversalTime();
+ dtstamp.SetTimeUtcL(currentUtcTime);
+ entry->SetDTStampL(dtstamp);
+ }
+ // NOTE: modified timestamp is automatically set by symbian calendar server
+}
+
+QString OrganizerItemTimeStampTransform::detailDefinitionName()
+{
+ return QOrganizerItemTimestamp::DefinitionName;
}
diff --git a/plugins/organizer/symbian/transform/organizeritemtimestamptransform.h b/plugins/organizer/symbian/transform/organizeritemtimestamptransform.h
index 9df9a02b52..f5cb18c250 100644
--- a/plugins/organizer/symbian/transform/organizeritemtimestamptransform.h
+++ b/plugins/organizer/symbian/transform/organizeritemtimestamptransform.h
@@ -47,7 +47,9 @@ class OrganizerItemTimeStampTransform : public OrganizerItemDetailTransform
{
public:
void transformToDetailL(const CCalEntry& entry, QOrganizerItem *item);
+ void transformToDetailPostSaveL(const CCalEntry& entry, QOrganizerItem *item);
void transformToEntryL(const QOrganizerItem& item, CCalEntry* entry);
+ QString detailDefinitionName();
};
#endif /* ORGANIZERITEMTIMESTAMPTRANSFORM_H_ */
diff --git a/plugins/organizer/symbian/transform/organizeritemtypetransform.cpp b/plugins/organizer/symbian/transform/organizeritemtypetransform.cpp
index d6eef86d55..07424d74d3 100644
--- a/plugins/organizer/symbian/transform/organizeritemtypetransform.cpp
+++ b/plugins/organizer/symbian/transform/organizeritemtypetransform.cpp
@@ -52,12 +52,12 @@ void OrganizerItemTypeTransform::transformToDetailL(const CCalEntry& entry, QOrg
itemType = QLatin1String(QOrganizerItemType::TypeEvent);
else if (entryType == CCalEntry::EAppt)
itemType = QLatin1String(QOrganizerItemType::TypeEvent);
+ else if (entryType == CCalEntry::EAnniv)
+ itemType = QLatin1String(QOrganizerItemType::TypeEvent);
else
User::Leave(KErrUnknown); // unknown type
- // TODO: CCalEntry::EAppt
// TODO: CCalEntry::EReminder
- // TODO: CCalEntry::EAnniv
item->setType(itemType);
}
@@ -69,6 +69,11 @@ void OrganizerItemTypeTransform::transformToEntryL(const QOrganizerItem& item, C
// Not used. Entry type is already set when CCalEntry was created.
}
+QString OrganizerItemTypeTransform::detailDefinitionName()
+{
+ return QOrganizerItemType::DefinitionName;
+}
+
CCalEntry::TType OrganizerItemTypeTransform::entryTypeL(const QOrganizerItem &item)
{
QString itemType = item.type();
@@ -83,7 +88,7 @@ CCalEntry::TType OrganizerItemTypeTransform::entryTypeL(const QOrganizerItem &it
// TODO: CCalEntry::EEvent???
// TODO: CCalEntry::EReminder
- // TODO: CCalEntry::EAnniv
+ // TODO: CCalEntry::EAnniv if itemType=event & category=anniversary
return entryType;
}
diff --git a/plugins/organizer/symbian/transform/organizeritemtypetransform.h b/plugins/organizer/symbian/transform/organizeritemtypetransform.h
index 10ce78ebb7..e85c1edb86 100644
--- a/plugins/organizer/symbian/transform/organizeritemtypetransform.h
+++ b/plugins/organizer/symbian/transform/organizeritemtypetransform.h
@@ -48,6 +48,7 @@ class OrganizerItemTypeTransform : public OrganizerItemDetailTransform
public:
void transformToDetailL(const CCalEntry& entry, QOrganizerItem *item);
void transformToEntryL(const QOrganizerItem& item, CCalEntry* entry);
+ QString detailDefinitionName();
static CCalEntry::TType entryTypeL(const QOrganizerItem &item);
};
diff --git a/plugins/organizer/symbian/transform/organizerjournaltimerangetransform.cpp b/plugins/organizer/symbian/transform/organizerjournaltimerangetransform.cpp
index 648500b21e..d594f72d72 100644
--- a/plugins/organizer/symbian/transform/organizerjournaltimerangetransform.cpp
+++ b/plugins/organizer/symbian/transform/organizerjournaltimerangetransform.cpp
@@ -63,3 +63,8 @@ void OrganizerJournalTimeRangeTransform::transformToEntryL(const QOrganizerItem&
entry->SetDTStampL(toTCalTimeL(range.entryDateTime())); // TODO: is DTStamp correct?
}
}
+
+QString OrganizerJournalTimeRangeTransform::detailDefinitionName()
+{
+ return QOrganizerJournalTimeRange::DefinitionName;
+}
diff --git a/plugins/organizer/symbian/transform/organizerjournaltimerangetransform.h b/plugins/organizer/symbian/transform/organizerjournaltimerangetransform.h
index df9433d462..157a3dcdb5 100644
--- a/plugins/organizer/symbian/transform/organizerjournaltimerangetransform.h
+++ b/plugins/organizer/symbian/transform/organizerjournaltimerangetransform.h
@@ -48,6 +48,7 @@ class OrganizerJournalTimeRangeTransform : public OrganizerItemDetailTransform
public:
void transformToDetailL(const CCalEntry& entry, QOrganizerItem *item);
void transformToEntryL(const QOrganizerItem& item, CCalEntry* entry);
+ QString detailDefinitionName();
};
#endif /* ORGANIZERJOURNALTIMERANGETRANSFORM_H_ */
diff --git a/plugins/organizer/symbian/transform/organizertodoprogresstransform.cpp b/plugins/organizer/symbian/transform/organizertodoprogresstransform.cpp
index f3049e1e3c..81dc61dc2d 100644
--- a/plugins/organizer/symbian/transform/organizertodoprogresstransform.cpp
+++ b/plugins/organizer/symbian/transform/organizertodoprogresstransform.cpp
@@ -84,3 +84,9 @@ void OrganizerTodoProgressTransform::transformToEntryL(const QOrganizerItem& ite
entry->SetCompletedL(true, toTCalTimeL(progress.finishedDateTime()));
}
}
+
+QString OrganizerTodoProgressTransform::detailDefinitionName()
+{
+ return QOrganizerTodoProgress::DefinitionName;
+}
+
diff --git a/plugins/organizer/symbian/transform/organizertodoprogresstransform.h b/plugins/organizer/symbian/transform/organizertodoprogresstransform.h
index 7781ad1018..415cea4a8d 100644
--- a/plugins/organizer/symbian/transform/organizertodoprogresstransform.h
+++ b/plugins/organizer/symbian/transform/organizertodoprogresstransform.h
@@ -48,6 +48,7 @@ class OrganizerTodoProgressTransform : public OrganizerItemDetailTransform
public:
void transformToDetailL(const CCalEntry& entry, QOrganizerItem *item);
void transformToEntryL(const QOrganizerItem& item, CCalEntry* entry);
+ QString detailDefinitionName();
};
#endif /* ORGANIZERTODOPROGRESSTRANSFORM_H_ */
diff --git a/plugins/organizer/symbian/transform/organizertodotimerangetransform.cpp b/plugins/organizer/symbian/transform/organizertodotimerangetransform.cpp
index bd533a0120..920a1783e9 100644
--- a/plugins/organizer/symbian/transform/organizertodotimerangetransform.cpp
+++ b/plugins/organizer/symbian/transform/organizertodotimerangetransform.cpp
@@ -67,3 +67,8 @@ void OrganizerTodoTimeRangeTransform::transformToEntryL(const QOrganizerItem& it
entry->SetStartAndEndTimeL(toTCalTimeL(range.startDateTime()), toTCalTimeL(range.dueDateTime()));
}
}
+
+QString OrganizerTodoTimeRangeTransform::detailDefinitionName()
+{
+ return QOrganizerTodoTimeRange::DefinitionName;
+}
diff --git a/plugins/organizer/symbian/transform/organizertodotimerangetransform.h b/plugins/organizer/symbian/transform/organizertodotimerangetransform.h
index b099191dd7..9cb4614350 100644
--- a/plugins/organizer/symbian/transform/organizertodotimerangetransform.h
+++ b/plugins/organizer/symbian/transform/organizertodotimerangetransform.h
@@ -48,6 +48,7 @@ class OrganizerTodoTimeRangeTransform : public OrganizerItemDetailTransform
public:
void transformToDetailL(const CCalEntry& entry, QOrganizerItem *item);
void transformToEntryL(const QOrganizerItem& item, CCalEntry* entry);
+ QString detailDefinitionName();
};
#endif /* ORGANIZERTODOTIMERANGETRANSFORM_H_ */
diff --git a/plugins/organizer/symbian/tsrc/tst_symbianom/tst_symbianom.cpp b/plugins/organizer/symbian/tsrc/tst_symbianom/tst_symbianom.cpp
index a016509143..0d210451b9 100644
--- a/plugins/organizer/symbian/tsrc/tst_symbianom/tst_symbianom.cpp
+++ b/plugins/organizer/symbian/tsrc/tst_symbianom/tst_symbianom.cpp
@@ -307,6 +307,9 @@ void tst_SymbianOm::timeStamp()
// TODO: support for created time? is it possible with symbian?
// TODO: check detail definitions
+ QDateTime startTime = QDateTime::currentDateTime();
+ //qDebug() << "starttime:" << startTime;
+
// Save item
QOrganizerTodo item1;
item1.setDisplayLabel("do stuff");
@@ -314,9 +317,13 @@ void tst_SymbianOm::timeStamp()
// Verify timestamp
QOrganizerItemTimestamp timeStamp1 = item1.detail<QOrganizerItemTimestamp>();
+ //qDebug() << "timestamp1" << timeStamp1;
QVERIFY(!timeStamp1.isEmpty());
+ QVERIFY(timeStamp1.created().isValid());
QVERIFY(timeStamp1.lastModified().isValid());
-
+ QVERIFY(timeStamp1.created() >= startTime);
+ QVERIFY(timeStamp1.lastModified() >= startTime);
+
// Wait a while
QTest::qSleep(1000);
@@ -326,14 +333,18 @@ void tst_SymbianOm::timeStamp()
// Verify timestamp
QOrganizerItemTimestamp timeStamp2 = item1.detail<QOrganizerItemTimestamp>();
+ //qDebug() << "timestamp2" << timeStamp2;
QVERIFY(!timeStamp2.isEmpty());
+ QVERIFY(timeStamp2.created().isValid());
+ QVERIFY(timeStamp2.created() == timeStamp1.created());
QVERIFY(timeStamp2.lastModified().isValid());
- QVERIFY(timeStamp2.lastModified() > timeStamp1.lastModified());
-
+ QVERIFY(timeStamp2.lastModified() > timeStamp1.lastModified());
+
// Load the same item again
QOrganizerTodo item2 = m_om->item(item1.localId());
QVERIFY(m_om->error() == QOrganizerItemManager::NoError);
QOrganizerItemTimestamp timeStamp3 = item2.detail<QOrganizerItemTimestamp>();
+ //qDebug() << "timestamp3" << timeStamp3;
QVERIFY(timeStamp3.lastModified() == timeStamp2.lastModified());
}