diff -r 5cc91383ab1e -r 7333d7932ef7 iaupdate/IAD/backgroundchecker/src/iaupdatebgrefreshtimer.cpp --- a/iaupdate/IAD/backgroundchecker/src/iaupdatebgrefreshtimer.cpp Thu Aug 19 10:02:49 2010 +0300 +++ b/iaupdate/IAD/backgroundchecker/src/iaupdatebgrefreshtimer.cpp Tue Aug 31 15:21:33 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -25,15 +25,12 @@ #include #include #include -#include -#include -#include -#include #include #include #include //sysversioninfo #include +#include #include "iaupdateprivatecrkeys.h" #include "iaupdate.hrh" @@ -45,9 +42,7 @@ //MACROS _LIT8( KRefreshFromNetworkDenied, "1" ); -_LIT(KIAUpdateResourceFile, "iaupdate.rsc"); _LIT(KIAUpdateLauncherExe, "iaupdatelauncher.exe" ); -//_LIT(KImageFile, "qgn_note_swupdate_notification.svg"); //CONSTANTS const TUint KIADUpdateLauncherUid( 0x2001FE2F ); @@ -73,7 +68,6 @@ CTimer::ConstructL(); CActiveScheduler::Add( this ); - iReminderTimer = CIAUpdateBGReminderTimer::NewL( this ); iUpdate = NULL; iParameters = NULL; @@ -84,26 +78,20 @@ iInternalFile = CIAUpdateBGInternalFileHandler::NewL(); - iSoftNotification = CIAUpdateBGSoftNotification::NewL( this, iInternalFile ); - iSoftNotification->StartObservingIfNeededL(); + iSoftNotification = CIAUpdateBGSoftNotification::NewL( this ); + + iIndicatorNotifyHandler = CIAUpdateBGNotifyHandler::NewL(); - // Get resource file path - TFileName fileName; - fileName.Copy(TParsePtrC(RProcess().FileName()).Drive()); - fileName.Append(KDC_APP_RESOURCE_DIR); - fileName.Append(KIAUpdateResourceFile); - - User::LeaveIfError(iFs.Connect()); - - // Get language of resource file - BaflUtils::NearestLanguageFile( iFs, fileName ); - - // Open resource file - iResourceFile.OpenL( iFs, fileName ); - iResourceFile.ConfirmSignatureL(); + // loc: initialize localisation text loader + /* + TBool res = HbTextResolverSymbian::Init(KLocFile, KLocFilePath); + if ( res != KErrNone ) + { + // nothing to do + } + */ } - // ---------------------------------------------------------- // CIAUpdateBGTimer::~CIAUpdateBGTimer() // ---------------------------------------------------------- @@ -112,7 +100,6 @@ Cancel(); delete iUpdate; delete iParameters; - delete iReminderTimer; if ( iNotifyHandler ) { @@ -124,26 +111,37 @@ delete iControllerFile; delete iInternalFile; delete iSoftNotification; + delete iIndicatorNotifyHandler; - iResourceFile.Close(); - iFs.Close(); } - // ---------------------------------------------------------- // CIAUpdateBGTimer::StartProcessL() // ---------------------------------------------------------- void CIAUpdateBGTimer::StartProcessL() { FLOG("[bgchecker] StartProcessL"); - + + // start listening indicator remove + iIndicatorNotifyHandler->StartListeningL( this ); + + iMode = ModeL(); switch ( iMode ) { case EFirstTimeMode: - case EFirstTimeRemindMode: { + // while not released keep in sleep mode + int test = 0; + if ( test == 0 ) + { + ListenAutoUpdateSettingsL(); + iMode = ESleepMode; + SetModeL( iMode ); + return; + } + if ( IsFirstTimeDialogDisabledL() ) { //this should only happen in testing @@ -171,9 +169,6 @@ FLOG("[bgchecker] StartProcessL EFirstTimeMode"); - - - //Wait for some days before activate the first time mode TTimeIntervalMinutes timetowait = TimeIntervalFromNextShowOfNewFeatureDialogL(); @@ -220,14 +215,7 @@ case EFirstTimeMode2: { - FLOG("[bgchecker] StartProcessL EFirstTimeMode2"); - RunL(); - break; - } - - case EFirstTimeMode3: - { - FLOG("[bgchecker] StartProcessL EFirstTimeMode 3"); + FLOG("[bgchecker] StartProcessL EFirstTimeMode 2"); //if user accepted the disclaimer already and reboot the phone, //this mode could go to network immediately after boot //We put one min delay here to wait for network ready. @@ -250,13 +238,39 @@ } iNotifyHandler->StartListeningL(); + + + if ( !IsAgreementAcceptedL() ) + { + FLOG("[bgchecker] EFirstTimeMode4 ShowIndicator"); + // Set number of updates; zero for first case + iSoftNotification->SetNrOfUpdates( 0 ); + + // do not show indicator when testing + int test = 0; + if ( test == 1) + iSoftNotification->ShowIndicatorL(); + + } + + break; } case ENormalMode: case ERetryMode: { + + // Should indicator be shown ? + TInt entries = NrOfIndicatorEntries(); + if ( entries ) + { + iSoftNotification->SetNrOfUpdates( entries ); + iSoftNotification->ShowIndicatorL(); + } + StartUpdatesCheckingL(); + break; } @@ -283,19 +297,6 @@ // ---------------------------------------------------------- -// CIAUpdateBGTimer::IsAskedAlreadyL() -// ---------------------------------------------------------- -TBool CIAUpdateBGTimer::IsAskedAlreadyL() - { - CIAUpdateBGFirstTimeHandler* fthandler = CIAUpdateBGFirstTimeHandler::NewL(); - CleanupStack::PushL( fthandler ); - TBool result = fthandler->AgreementAskedL(); - CleanupStack::PopAndDestroy( fthandler ); - return result; - } - - -// ---------------------------------------------------------- // CIAUpdateBGTimer::StartUpdatesCheckingL() // ---------------------------------------------------------- void CIAUpdateBGTimer::StartUpdatesCheckingL() @@ -331,36 +332,7 @@ FLOG_NUM( "Start checking update after %d minutes", timetowait.Int()); StartL( timetowait ); - //start reminder timer also if user choose later before reboot - //check the value from private folder - - if ( ReminderOnL() ) - { - TTime currenttime; - currenttime.UniversalTime(); - - FTIME( currenttime ); - - TTime nextremindtime = NextRemindTimeL(); - - FTIME( nextremindtime ); - - TTimeIntervalMinutes timetogo; - nextremindtime.MinutesFrom( currenttime, timetogo ); - - FLOG_NUM("time to go = %d", timetogo.Int() ); - - if ( timetogo.Int() <= 0 ) - { - //pop up the reminder directly - ReminderTimerCallBack(); - } - else - { - iReminderTimer->StartReminderTimerL( timetogo ); - } - } - } + } } @@ -485,49 +457,6 @@ return err; } - -// ---------------------------------------------------------- -// CIAUpdateBGTimer::NextRemindTimeL() -// ---------------------------------------------------------- -TTime CIAUpdateBGTimer::NextRemindTimeL() - { - iInternalFile->ReadControllerDataL(); - return iInternalFile->NextRemindTime(); - } - - -// ---------------------------------------------------------- -// CIAUpdateBGTimer::SetNextRemindTimeL() -// ---------------------------------------------------------- -TInt CIAUpdateBGTimer::SetNextRemindTimeL( TTime aTime ) - { - iInternalFile->SetNextRemindTime( aTime ); - TRAPD( err,iInternalFile->WriteControllerDataL() ); - return err; - } - - -// ---------------------------------------------------------- -// CIAUpdateBGTimer::ReminderOnL() -// ---------------------------------------------------------- -TBool CIAUpdateBGTimer::ReminderOnL() - { - iInternalFile->ReadControllerDataL(); - return iInternalFile->ReminderOn(); - } - - -// ---------------------------------------------------------- -// CIAUpdateBGTimer::SetReminderL() -// ---------------------------------------------------------- -TInt CIAUpdateBGTimer::SetReminderL( TBool aOn ) - { - iInternalFile->SetReminder( aOn ); - TRAPD( err,iInternalFile->WriteControllerDataL() ); - return err; - } - - // ---------------------------------------------------------- // CIAUpdateBGTimer::ModeL() // ---------------------------------------------------------- @@ -548,6 +477,25 @@ return err; } +// ---------------------------------------------------------- +// CIAUpdateBGTimer::NrOfIndicatorEntries() +// ---------------------------------------------------------- +TInt CIAUpdateBGTimer::NrOfIndicatorEntries() + { + iInternalFile->ReadControllerDataL(); + return iInternalFile->NrOfIndicatorEntries(); + } + + +// ---------------------------------------------------------- +// CIAUpdateBGTimer::SetNrOfIndicatorEntriesL() +// ---------------------------------------------------------- +TInt CIAUpdateBGTimer::SetNrOfIndicatorEntriesL( TInt aEntries ) + { + iInternalFile->SetNrOfIndicatorEntries( aEntries ); + TRAPD( err,iInternalFile->WriteControllerDataL() ); + return err; + } // ---------------------------------------------------------- // CIAUpdateBGTimer::RetryTimesL() @@ -585,15 +533,6 @@ void CIAUpdateBGTimer::DoUpdatesCheckingL( const TBool& aUpdateFromServer ) { FLOG( "DoUpdatesCheckingL update"); - //turn off the reminder, user will decide whether to turn if on or off - //The user's decision will be checked in soft notification callback function - - if ( ReminderOnL()) - { - FLOG( "Do CheckUpdates 3"); - iReminderTimer->CancelReminderTimerL(); - SetReminderL( EFalse ); - } if( !iUpdate ) { @@ -644,6 +583,15 @@ { FLOG_NUM( "CheckUpdatesComplete aErrorCode = %d", aErrorCode ); FLOG_NUM( "CheckUpdatesComplete aAvailableUpdates = %d", aAvailableUpdates ); + + //HLa + int test = 0; + if ( test == 0 ) + { + aErrorCode = 0; + aAvailableUpdates = 0; + } + if ( !IAUpdateEnabledL() ) { Shutdown(); @@ -688,8 +636,7 @@ { FLOG( "CheckUpdatesComplete 4"); - LaunchSoftNotificationL(R_IAUPDATE_UPDATE_AVAILABLE, - R_TEXT_SOFTKEY_SHOW, R_TEXT_SOFTKEY_LATER ); + LaunchNotificationL( aAvailableUpdates ); } FLOG( "CheckUpdatesComplete 5"); @@ -736,19 +683,6 @@ StartL( interval ); SetLastRefreshTime(); } - else - { - //don't show soft notification and restart the timer. - TTimeIntervalMinutes oneweek( UpdateAvailableReminderIntervalInMinutesL() ); - TTime currenttime; - currenttime.UniversalTime(); - TTime nextRemindTime = currenttime + oneweek; - - SetReminderL( ETrue ); - SetNextRemindTimeL( nextRemindTime ); - - iReminderTimer->StartReminderTimerL( oneweek ); - } //clear the retry time SetRetryTimesL( 0 ); } @@ -893,7 +827,6 @@ break; case EFirstTimeMode: - case EFirstTimeRemindMode: { FLOG("[bgchecker] runl EFirstTimeMode"); @@ -921,14 +854,7 @@ case EFirstTimeMode2: { - FLOG("[bgchecker] runl EFirstTimeMode2"); - LaunchSoftNotificationL(R_IAUPDATE_REMIND_LATER, R_TEXT_SOFTKEY_YES, R_TEXT_SOFTKEY_NO ); - } - break; - - case EFirstTimeMode3: - { - FLOG("[bgchecker] runl EFirstTimeMode3"); + FLOG("[bgchecker] runl EFirstTimeMode2"); //disclaimer is not accepted if ( !IsAgreementAcceptedL() ) @@ -984,8 +910,7 @@ { //this is first time mode FLOG("[bgchecker]HandlerFirstTimeL 3 "); - LaunchSoftNotificationL( R_IAUPDATE_FEATURES_AVAILABLE, - R_TEXT_SOFTKEY_OK, R_TEXT_SOFTKEY_CANCEL ); + LaunchNotificationL( 0 ); } } @@ -1252,11 +1177,6 @@ FLOG(" current mode is FirstTimeMode "); interval = FirstTimeDialogDelayInMinutesL(); } - else if ( ModeL() == EFirstTimeRemindMode ) - { - FLOG(" current mode is FirstTimeRemindMode"); - interval = FirstTimeDialogReminderIntervalInMinutesL(); - } else { //nothing @@ -1290,16 +1210,19 @@ switch ( iMode ) { case EFirstTimeMode: - case EFirstTimeRemindMode: { FLOG("[bgchecker] SoftNotificationCallBack EFirstTimeMode"); if ( !aIsAccepted ) { - FLOG("[bgchecker] SoftNotificationCallBack EFirstTimeMode not accepted"); - iMode = EFirstTimeMode2; + FLOG("[bgchecker] SoftNotificationCallBack EFirstTimeMode, not accepted"); + //in sleep mode now + iMode = ESleepMode; SetModeL( iMode ); - StartL( StartNow ); + + //subscribe to cenrep key for automatic checking for wake up from sleep mode + ListenAutoUpdateSettingsL(); + } else { @@ -1309,7 +1232,7 @@ //check the disclaimer acceptance and automatic checking setting in 10mins StartL( KDelayForUserToAcceptDisclaimer ); - iMode = EFirstTimeMode3; + iMode = EFirstTimeMode2; SetModeL( iMode ); @@ -1319,64 +1242,19 @@ break; } - - - case EFirstTimeMode2: - { - FLOG("[bgchecker] SoftNotificationCallBack EFirstTimeMode2 "); - if ( aIsAccepted ) - { - FLOG("[bgchecker] SoftNotificationCallBack EFirstTimeMode2, accepted"); - //user wants to be reminder so remind in 4 weeks - //set to first time remind mode - iMode = EFirstTimeRemindMode; - SetModeL( iMode ); - TTimeIntervalMinutes fourweeks( FirstTimeDialogReminderIntervalInMinutesL() ); - TTime currenttime; - currenttime.UniversalTime(); - - //save the next show new feature dialog time - //in case use switch off the device and restarted. - User::LeaveIfError( SetLastTimeShowNewFeatureDialogL( currenttime ) ); - - StartL( fourweeks ); - return; - } - else - { - FLOG("[bgchecker] SoftNotificationCallBack EFirstTimeMode2, not accepted"); - //in sleep mode now - iMode = ESleepMode; - SetModeL( iMode ); - - //subscribe to cenrep key for automatic checking for wake up from sleep mode - ListenAutoUpdateSettingsL(); - } - break; - } - case ENormalMode: { FLOG("[bgchecker] SoftNotificationCallBack ENormalMode"); if ( !aIsAccepted ) { FLOG("[bgchecker] SoftNotificationCallBack ENormalMode not accpeted"); - //user wants to be reminded later - TTimeIntervalMinutes oneweek( UpdateAvailableReminderIntervalInMinutesL() ); - TTime currenttime; - currenttime.UniversalTime(); - TTime nextRemindTime = currenttime + oneweek; - - SetReminderL( ETrue ); - SetNextRemindTimeL( nextRemindTime ); - iReminderTimer->StartReminderTimerL( oneweek ); - - //the reminder call back function will be called when reminder timer expires. } else { - //accepted, launch iad + //accepted, clear indicator entries + SetNrOfIndicatorEntriesL( 0 ); + // start IAD StartIaupdateL(); } break; @@ -1411,81 +1289,110 @@ return iMode; } - // ---------------------------------------------------------- -// CIAUpdateBGTimer::DoReminderTimerCallBack() +// CIAUpdateBGTimer::LaunchNotificationL( const int aNrOfUpdates ) // ---------------------------------------------------------- -void CIAUpdateBGTimer::DoReminderTimerCallBackL() +void CIAUpdateBGTimer::LaunchNotificationL( const int aNrOfUpdates ) { - FLOG("[bgchecker] ReminderTimerCallBack begin"); - if ( !IAUpdateEnabledL() ) - { - Shutdown(); - return; - } - //Check the automatic update setting, if it has been disabled, - //then go to sleep mode. - if ( IsAutoUpdateDisabledL() ) - { - FLOG("[bgchecker] ReminderTimerCallBack autoupdate is disabled, switch to sleep mode"); - ListenAutoUpdateSettingsL(); - iMode = ESleepMode; - SetModeL( iMode ); - return; - } - - TTimeIntervalMinutes timetowait = TimeIntervalFromNextRefreshL(); - - if ( timetowait.Int() <= KRefreshTimerReminderTimerGap ) - { - FLOG("[bgchecker] ReminderTimerCallBack refresh is about to come in one day. We don't show reminder then"); - return; - } + + _LIT( KFirstTimeText, "Update checking" ); + _LIT( KNormalText, "Updates available" ); + _LIT( KSecondText, "Tap to view" ); + + // loc: + /* + _LIT( KIcon, "z:\\resource\\iaupdate\\qgn_note_swupdate_notification.svg" ); + _LIT(KLocFile, "Text_Map_Swupdate_"); + _LIT(KLocFilePath, "z:\\resource\\iaupdate\\"); - //if reminder is still on which means the BGTimer is not expired - //and checkupdate() is not called yet, then go ahead to call DoupdatesChecking - //this is to avoid DoUpdateChecking being called at the same time. - - if ( ReminderOnL() ) - { - FLOG("[bgchecker] ReminderTimerCallBack Reminder is still ON"); - DoUpdatesCheckingL( EFalse ); - } - FLOG("[bgchecker] ReminderTimerCallBack end"); - } - -// ---------------------------------------------------------- -// CIAUpdateBGTimer::ReminderTimerCallBack() -// ---------------------------------------------------------- -void CIAUpdateBGTimer::ReminderTimerCallBack() - { - TRAP_IGNORE( DoReminderTimerCallBackL() ); - } - -// ---------------------------------------------------------- -// CIAUpdateBGTimer::LaunchSoftNotificationL() -// ---------------------------------------------------------- -void CIAUpdateBGTimer::LaunchSoftNotificationL( const TInt& aResourceId, const TInt& SK1, const TInt& SK2 ) - { - iInternalFile->ReadControllerDataL(); - TInt snid = iInternalFile->SoftNotificationID(); - if ( snid ) - { - //there is a soft notification buffered, remove it - iSoftNotification->RemoveSoftNotificationL( snid ); - } + _LIT(KTitleFirstTime, "txt_software_dpophead_update_checking"); + _LIT(KTitleOneUpdate, "txt_software_dpophead_update_available"); + _LIT(KTitleSeveralUpdates, "txt_software_dpophead_updates_available"); + - FLOG("[bgchecker] LaunchSoftNotificationL "); - HBufC* text = ReadResourceLC( aResourceId ); - HBufC* sk1 = ReadResourceLC( SK1 ); - HBufC* sk2 = ReadResourceLC( SK2 ); + _LIT(KSecondFirstTime, "txt_software_dpopinfo_tap_to_view"); + _LIT(KSecondOneUpdate, "txt_software_dpopinfo_tap_to_view"); + _LIT(KSecondSeveralUpdates, "txt_software_dpopinfo_tap_to_view"); + */ + FLOG("[bgchecker] LaunchNotificationL "); iMode = ModeL(); -/* - // Commented out, so no icon is shown in the soft notification. - // Other functions, used by the code below, are also commented out. + // loc: initialize localisation text loader + /* + TBool res = HbTextResolverSymbian::Init(KLocFile, KLocFilePath); + if ( res != KErrNone ) + { + // nothing to do + } + */ + + + // loc: Resolve title text + /* + HBufC* titleText; + if ( aNrOfUpdates == 0 ) + { + // First time case + titleText = HbTextResolverSymbian::LoadL( KTitleFirstTime ); + } + else if ( aNrOfUpdates == 1 ) + { + // one update available + titleText = HbTextResolverSymbian::LoadL( KTitleOneUpdate ); + } + else + { + // several updates available + titleText = HbTextResolverSymbian::LoadL( KTitleSeveralUpdates ); + } + + // Resolve second text + HBufC* secondText; + if ( aNrOfUpdates == 0 ) + { + // First time case + secondText = HbTextResolverSymbian::LoadL( KSecondFirstTime ); + } + else if ( aNrOfUpdates == 1 ) + { + // one update available + secondText = HbTextResolverSymbian::LoadL( KSecondOneUpdate, aNrOfUpdates ); + } + else + { + // several updates available + // loc: text.append(hbTrId("txt_software_dblist_updates_available")); + secondText = HbTextResolverSymbian::LoadL( KSecondSeveralUpdates, aNrOfUpdates ); + } + */ + + // loc: Load title and second line + // HBufC* titleText = HbTextResolverSymbian::LoadL(KTextTitle); + // CleanupStack::PushL( titleText ); + // HBufC* secondText3 = HbTextResolverSymbian::LoadL(KTextSecond); + // CleanupStack::PushL( titleText ); + + + TBuf<128> titleText; + TBuf<128> secondText; + + //title text (normal/first time) + if ( iMode == ENormalMode ) + { + titleText.Append(KNormalText); + } + else + { + titleText.Append(KFirstTimeText); + } + + //text for 2nd line + secondText.Append(KSecondText); + + // icon + /* HLa--> if ( iMode == ENormalMode ) { TFileName path; @@ -1493,187 +1400,35 @@ if ( err == KErrNone ) { - HBufC8* image = LoadFileLC( path ); - iSoftNotification->SetImageL( *image ); - CleanupStack::PopAndDestroy( image ); + iSoftNotification->SetImagePathL( path ); + //HBufC8* image = LoadFileLC( path ); + //iSoftNotification->SetImageL( *image ); + //CleanupStack::PopAndDestroy( image ); } } -*/ + */ + // loc: set image path + // iSoftNotification->SetImagePathL( KIcon ); + // Set texts + // loc: iSoftNotification->SetTextL( titleText->Des(), secondText->Des() ); + iSoftNotification->SetTextL( titleText, secondText ); - iSoftNotification->SetTextL( *text, *text ); - iSoftNotification->SetSoftkeyLabelsL( *sk1, *sk2 ); - - iSoftNotification->ShowSoftNotificationL(); - FLOG("[bgchecker] LaunchSoftNotificationL 1"); - CleanupStack::PopAndDestroy( 3 ); //text, sk1, sk2 - } - - -// ---------------------------------------------------------- -// CIAUpdateBGTimer::GetPrivatePathL() -// ---------------------------------------------------------- -TInt CIAUpdateBGTimer::GetPrivatePathL( TFileName& /*aPath*/ ) - { -/* - RFs fsSession; - User::LeaveIfError( fsSession.Connect() ); - CleanupClosePushL( fsSession ); - - // This will set the correct drive and private path - // for the file server session. - TInt err = KErrNone; - TRAP( err, SetPrivateDriveL( fsSession, KImageFile ) ); + // loc: delete text buffers + // CleanupStack::PopAndDestroy( titleText ); + // CleanupStack::PopAndDestroy( titleText ); - if ( err != KErrNone ) - { - CleanupStack::PopAndDestroy( &fsSession ); - return err; - } - - err = fsSession.SessionPath( aPath ); - aPath.Append( KImageFile ); + // Set number of updates for dialog and internal file + iSoftNotification->SetNrOfUpdates( aNrOfUpdates ); + SetNrOfIndicatorEntriesL( aNrOfUpdates ); - CleanupStack::PopAndDestroy( &fsSession ); - return err; -*/ - return 0; + iSoftNotification->ShowNotificationL(); + FLOG("[bgchecker] LaunchNotificationL 1"); + + return; } // ---------------------------------------------------------- -// CIAUpdateBGTimer::LoadFileLC() -// ---------------------------------------------------------- - HBufC8* CIAUpdateBGTimer::LoadFileLC(const TDesC& /*aFile*/) - { -/* - RFs fs; - User::LeaveIfError( fs.Connect() ); - CleanupClosePushL( fs ); - RFile file; - User::LeaveIfError(file.Open(fs, aFile, EFileRead)); - CleanupClosePushL(file); - TInt size; - User::LeaveIfError(file.Size(size)); - HBufC8* imagebuf = HBufC8::NewL(size); - TPtr8 imageptr(imagebuf->Des()); - file.Read(imageptr); - CleanupStack::PopAndDestroy( &file ); - CleanupStack::PopAndDestroy( &fs ); - CleanupDeletePushL(imagebuf); - return imagebuf; -*/ - return NULL; - } - - - // ---------------------------------------------------------- - // CIAUpdateBGTimer::SetPrivateDriveL() - // ---------------------------------------------------------- - void CIAUpdateBGTimer::SetPrivateDriveL( - RFs& /*aFs*/, - const TDesC& /*aFileName*/ ) const - { -/* - // First try to find the file from the private directory - // of the drive where the process exists. - RProcess process; - - // Set the session private path according to - // the process file name drive. - TInt driveNum( - SetSessionPrivatePathL( aFs, process.FileName() ) ); - - // Get the session path that was set above. - TFileName sessionPath; - User::LeaveIfError( aFs.SessionPath( sessionPath ) ); - - // Use the file finder to check if the file actually exists - // in the given drive path. If it does not, the file finder - // will automatically check from other drives. So, here we - // should always find the file if any exists. - TFindFile finder( aFs ); - User::LeaveIfError( finder.FindByDir( aFileName, sessionPath ) ); - - // The drive may have changed if the file was not found from - // the first suggested drive. So, be sure to have the correct - // private path. - driveNum = SetSessionPrivatePathL( aFs, finder.File() ); - - // Use the drive info to check if the drive is ROM drive. - // We prefer non ROM drives. But, accept ROM if nothing else is - // available. - TDriveInfo info; - User::LeaveIfError( aFs.Drive( info, driveNum ) ); - TBool isRomDrive( info.iDriveAtt & KDriveAttRom ); - if ( !isRomDrive ) - { - // The current file is not in ROM drive so use that. - return; - } - - // Because previous finding was ROM file, try to find a non ROM file. - TInt findErrorCode( finder.Find() ); - if ( findErrorCode == KErrNotFound ) - { - // Because no new file is found, use the current settings. - return; - } - User::LeaveIfError( findErrorCode ); - - // Update the session path for the correct file. - SetSessionPrivatePathL( aFs, finder.File() ); -*/ - } - - - // ---------------------------------------------------------- - // CIAUpdateBGTimer::SetSessionPrivatePathL() - // ---------------------------------------------------------- - TInt CIAUpdateBGTimer::SetSessionPrivatePathL( - RFs& /*aFs*/, - const TDesC& /*aPath*/ ) const - { -/* - // Use the parser to get the drive information from the path. - TParsePtrC parser( aPath ); - - if ( !parser.DrivePresent() ) - { - User::Leave( KErrArgument ); - } - - // Drive check was passed above. - // So, drive information is safe to use. - const TDesC& drive( parser.Drive() ); - const TChar driveChar( drive[ 0 ] ); - TInt driveNum( EDriveA ); - User::LeaveIfError( - RFs::CharToDrive( driveChar, driveNum ) ); - - // Set the file drive to be file session private path drive. - User::LeaveIfError( aFs.SetSessionToPrivate( driveNum ) ); - - return driveNum; -*/ - return 0; - } - -// ---------------------------------------------------------- -// CIAUpdateBGTimer::ReadResourceLC() -// ---------------------------------------------------------- -HBufC* CIAUpdateBGTimer::ReadResourceLC( TInt aResourceId ) - { - TResourceReader reader; - HBufC8* buff = iResourceFile.AllocReadLC( aResourceId ); - reader.SetBuffer( buff ); - HBufC* text = reader.ReadHBufCL(); - CleanupStack::PopAndDestroy( buff ); - CleanupStack::PushL( text ); - return text; - } - - -// ---------------------------------------------------------- // CIAUpdateBGTimer::IsAutoUpdateDisabledL() // ---------------------------------------------------------- TBool CIAUpdateBGTimer::IsAutoUpdateDisabledL() @@ -1800,8 +1555,8 @@ delete iUpdate; iUpdate = NULL; - delete iReminderTimer; - iReminderTimer = NULL; + //delete iReminderTimer; + //iReminderTimer = NULL; if ( iNotifyHandler ) { @@ -1812,18 +1567,31 @@ if ( iSoftNotification ) { - TRAP_IGNORE( iSoftNotification->RemoveSoftNotificationL( iSoftNotification->Id() ) ); delete iSoftNotification; iSoftNotification = NULL; } + if ( iIndicatorNotifyHandler ) + { + delete iIndicatorNotifyHandler; + iIndicatorNotifyHandler = NULL; + } + CActiveScheduler::Stop(); FLOG("[bgchecker] Shutdown() end"); + } +// --------------------------------------------------------------------------- +// CIAUpdateBGTimer::HandleIndicatorRemoveL() +// --------------------------------------------------------------------------- +// +void CIAUpdateBGTimer::HandleIndicatorRemoveL() + { + // remove indicator from indicator menu + iSoftNotification->RemoveIndicatorL(); + + //clear nr of indicator entries in internal file + SetNrOfIndicatorEntriesL( 0 ); } - - // End of file - -