void OrganizerItemTypeTransform::transformToDetailL(const CCalInstance& instance, QOrganizerItem *itemOccurrence) { QString itemType; CCalEntry &entry = instance.Entry(); TCalRRule rrule; bool isRecurring = entry.GetRRuleL(rrule); bool isExceptional = entry.RecurrenceIdL().TimeUtcL() != Time::NullTTime(); CCalEntry::TType entryType = entry.EntryTypeL(); if (entryType == CCalEntry::ETodo) { if (isRecurring || isExceptional) itemType = QLatin1String(QOrganizerItemType::TypeTodoOccurrence); else itemType = QLatin1String(QOrganizerItemType::TypeTodo); } else if (entryType == CCalEntry::EEvent || entryType == CCalEntry::EAppt || entryType == CCalEntry::EAnniv) { if (isRecurring || isExceptional) itemType = QLatin1String(QOrganizerItemType::TypeEventOccurrence); else itemType = QLatin1String(QOrganizerItemType::TypeEvent); } else User::Leave(KErrUnknown); // unknown type itemOccurrence->setType(itemType); }
// Helper method // Extract all instances given by Guids in iCurrentTestData void CDummyCalendarApp::ExtractInstancesL() { TCalTime startDate; startDate.SetTimeLocalL(iCurrentTestData->iStartDate); TCalTime endDate; endDate.SetTimeLocalL(iCurrentTestData->iEndDate); CalCommon::TCalTimeRange timeRange(startDate, endDate); RPointerArray<CCalInstance> instanceArray; if (iCurrentTestData->iSearchString) { CCalInstanceView::TCalSearchParams searchParams(*iCurrentTestData->iSearchString, iCurrentTestData->iSearchBehaviour); iInstanceView->FindInstanceL(instanceArray, (CalCommon::TCalViewFilter)iCurrentTestData->iFilter, timeRange, searchParams); } else { iInstanceView->FindInstanceL(instanceArray, (CalCommon::TCalViewFilter)iCurrentTestData->iFilter, timeRange); } TBuf<26> startBuf; TBuf<26> endBuf; startDate.TimeLocalL().FormatL(startBuf,KFormatDate()); endDate.TimeLocalL().FormatL(endBuf,KFormatDate()); test.Printf(_L("Checking instances between %S and %S\n"), &startBuf, &endBuf); if (instanceArray.Count() == 0) { test.Printf(_L("No instances found\n")); } else { TInt instanceCount = 0; TTime instTime; TBuf<26> instBuf; while (instanceCount < instanceArray.Count()) { CCalInstance* inst = instanceArray[instanceCount]; CleanupStack::PushL(inst); instTime = inst->Time().TimeLocalL(); instTime.FormatL(instBuf,KFormatDate()); TBuf<62> rptType; TCalRRule rptDef; if (!inst->Entry().GetRRuleL(rptDef)) { rptType.Copy(_L("One off")); } else { switch (rptDef.Type()) { case TCalRRule::EDaily: rptType.Format(_L("Daily every %d days"), rptDef.Interval()); break; case TCalRRule::EWeekly: rptType.Format(_L("Weekly every %d weeks"), rptDef.Interval()); break; case TCalRRule::EMonthly: rptType.Format(_L("MonthlyByDates every %d months"), rptDef.Interval()); break; case TCalRRule::EYearly: rptType.Format(_L("YearlyByDate every %d years"), rptDef.Interval()); break; default: ASSERT(0); break; } } test.Printf(_L("One instance is on %S, %d:%d - %S"), &instBuf, instTime.DateTime().Hour(), instTime.DateTime().Minute(), &rptType); if (iCurrentTestData->iTimes.Find(instTime) == KErrNotFound) { test.Printf(_L("THIS ENTRY WAS NOT EXPECTED\n")); test(0); } instanceCount++; CleanupStack::Pop(inst); } if (iCurrentTestData->iFunction) ASSERT(iCurrentTestData->iFunction->CallBack() == 0); } if (instanceArray.Count() != iCurrentTestData->iTimes.Count()) { test.Printf(_L("Some expected entries were not found!\n")); test(0); } instanceArray.ResetAndDestroy(); }