diff -r aba12c885d83 -r 96907930389d calendarui/server/CalenSvr/src/CalenSvrBootManager.cpp --- a/calendarui/server/CalenSvr/src/CalenSvrBootManager.cpp Thu Jul 15 18:37:27 2010 +0300 +++ b/calendarui/server/CalenSvr/src/CalenSvrBootManager.cpp Thu Aug 19 09:53:43 2010 +0300 @@ -24,10 +24,15 @@ #include "CalenServer.h" #include +#include +#include #include // LOCAL CONSTANTS AND MACROS +const TInt KBuffLength = 8; + +_LIT( KCalendarDatabaseFilePath, "c:calendar" ); enum TCalenSvrBootManagerPanic { @@ -189,6 +194,13 @@ CleanupReleasePushL( *gData ); gData->CalSessionL(); CleanupStack::PopAndDestroy( gData ); + iState = EStateDeleteDeadCalendars; + CompleteSelf(); + } + break; + case EStateDeleteDeadCalendars: + { + RemoveDeadCalendarsL(); iState = EStateReady; CompleteSelf(); } @@ -263,4 +275,49 @@ TRACE_EXIT_POINT; } +// ----------------------------------------------------------------------------- +// CCalenSvrBootManager::RemoveDeadCalendarsL +// Remove all the files which are marked as EMarkAsDelete from device's +// file system +// ----------------------------------------------------------------------------- +// +void CCalenSvrBootManager::RemoveDeadCalendarsL() + { + TRACE_ENTRY_POINT; + TBool softDelete; + TBuf8 keyBuff; + + // Mark the meta property key as SoftDeleted + keyBuff.Zero(); + keyBuff.AppendNum(EMarkAsDelete); + + CCalSession* session = CCalSession::NewL(); + CleanupStack::PushL(session); + CCalCalendarIterator* calendarIterator = + CCalCalendarIterator::NewL(*session); + CleanupStack::PushL(calendarIterator); + + for( CCalCalendarInfo* calendarInfo = calendarIterator->FirstL(); + calendarInfo!=NULL;calendarInfo = calendarIterator->NextL()) + { + CleanupStack::PushL(calendarInfo); + softDelete = EFalse; + TPckgC pkgSoftDelete( softDelete ); + TRAPD(err,pkgSoftDelete.Set(calendarInfo->PropertyValueL(keyBuff))); + if( KErrNone == err ) + { + softDelete = pkgSoftDelete(); + } + if(softDelete && calendarInfo->FileNameL().CompareF(KCalendarDatabaseFilePath) ) + { + //Delete the calendar except default calendar. + TRAP_IGNORE(session->DeleteCalFileL(calendarInfo->FileNameL())); + } + CleanupStack::PopAndDestroy(calendarInfo); + } + CleanupStack::PopAndDestroy(calendarIterator); + CleanupStack::PopAndDestroy( session ); + TRACE_EXIT_POINT; + } + // End of File