diff options
author | Jani Honkonen <jani.honkonen@digia.com> | 2010-06-17 13:39:16 +0300 |
---|---|---|
committer | Jani Honkonen <jani.honkonen@digia.com> | 2010-06-17 13:51:00 +0300 |
commit | feb6f3e7eae86ad69b2d6acb09e300c494513843 (patch) | |
tree | 13befebb2b9b71b588d5f9fdf1043e71eb96d1a1 | |
parent | 51b0ad5a59c666441c00c5c4bb8285df242378a9 (diff) |
Symbian: Added created timestamp support
Also added some debug code for more easier detection of errors in transform classes.
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()); } |