diff -r 96907930389d -r 12af337248b1 alarmui/src/AlmAlarmControl.cpp --- a/alarmui/src/AlmAlarmControl.cpp Thu Aug 19 09:53:43 2010 +0300 +++ b/alarmui/src/AlmAlarmControl.cpp Tue Aug 31 15:13:43 2010 +0300 @@ -23,14 +23,14 @@ #include "AlmAlarmControl.h" #include "pim_trace.h" #include "alarmutils.h" -#include +// #include #include #include #include #include #include #include -#include +// #include #include #include @@ -39,8 +39,9 @@ #include #include +#include "alarmalertwrapper.h" -#include +// #include _LIT( KResourceFile, "AlmAlert.rsc" ); @@ -176,7 +177,7 @@ iAlarmUtils->StartKeyBlocker(); // reset the key guard - iAlarmUtils->SetKeyGuard( ETrue ); + //iAlarmUtils->SetKeyGuard( ETrue ); } break; @@ -226,9 +227,9 @@ // Allow auto-snooze only while waiting user input if( IsState( EStateWaitingInput ) ) { - SetState( EStateAfterInput ); - StopOrSnoozeAlarm(); - DoCancelDialog(); + SetState( EStateAfterInput ); + iAlarmUtils->TryToSnoozeActiveAlarm(); + DoCancelDialog(); } TRACE_EXIT_POINT; } @@ -240,11 +241,13 @@ void CAlmAlarmControl::DoCancelDialog() { TRACE_ENTRY_POINT; - if( iGlobalNoteId != KErrNotFound ) + /*if( iGlobalNoteId != KErrNotFound ) { - iAlarmUtils->NotifierDialogController()->SetNoteObserver( this ); - iAlarmUtils->NotifierDialogController()->CancelNote( iGlobalNoteId ); - } + // iAlarmUtils->NotifierDialogController()->SetNoteObserver( this ); + // iAlarmUtils->NotifierDialogController()->CancelNote( iGlobalNoteId ); + iAlarmUtils->NotifierDialogController()->dismissAlarmAlert(); + }*/ + iAlarmUtils->NotifierDialogController()->dismissAlarmAlert(); iAlarmUtils->StopAlarmSound(); iAlarmUtils->CancelAutoSnooze(); TRACE_EXIT_POINT; @@ -261,19 +264,21 @@ ASSERT( IsState( EStateBeforeAskingWakeup ) ); if( IsState( EStateBeforeAskingWakeup ) ) { - HBufC* label = NULL; - TBuf<1> time; - iAlarmUtils->GetWakeupLabelL( label ); - CleanupStack::PushL( label ); + // HBufC* label = NULL; + // TBuf<1> time; + // iAlarmUtils->GetWakeupLabelL( label ); + // CleanupStack::PushL( label ); - if(!IsVisible()) +/* if(!IsVisible()) { MakeVisible(ETrue); - } - iAlarmUtils->NotifierDialogController()->SetNoteObserver( this ); - iGlobalNoteId = iAlarmUtils->NotifierDialogController()->DisplayAlarmL( EAskWakeUp, *label, time/*not used*/ ); + }*/ + // iAlarmUtils->NotifierDialogController()->SetNoteObserver( this ); + // iGlobalNoteId = iAlarmUtils->NotifierDialogController()->DisplayAlarmL( EAskWakeUp, *label, time/*not used*/ ); + SAlarmInfo* alarmInfo = iAlarmUtils->GetAlarmInfo(); + iAlarmUtils->NotifierDialogController()->showAlarmAlert( alarmInfo ); - CleanupStack::PopAndDestroy( label ); + // CleanupStack::PopAndDestroy( label ); // shutdown automatically if user doesn't react within one minute iAlarmUtils->StartShutdownTimer( KAlarmAutoShutdown ); @@ -358,7 +363,7 @@ { //Get the Calendar instance values and //Store it in the missed alarm repository - + /* RPointerArray missedAlarmList; TCalLocalUid localUid = iAlarmUtils->AlarmData().iLocalUid; TCalTime instanceTime = iAlarmUtils->AlarmData().iInstanceTime; @@ -374,38 +379,8 @@ CleanupStack::PopAndDestroy( missedAlarmStore ); CleanupStack::Pop( missedAlarm ); missedAlarmList.ResetAndDestroy(); + */ } - - -// --------------------------------------------------------- -// Checks for calendar type alarm needed to be stored as missed alarm -// Stops the alarm and enters to missed alarm table. If the calendar type -// is clock, then snoozes the alarm. -// --------------------------------------------------------- -// -void CAlmAlarmControl::StopOrSnoozeAlarm() - { - - TRACE_ENTRY_POINT; - if( iAlarmUtils->IsCalendarAlarm() ) - { - if( iAlarmUtils->IsCalendarAlarmViewer() ) - { - iAlarmUtils->SetCalendarAlarmViewer(EFalse); - } - else - { - TRAP_IGNORE( StoreMissedAlarmDataL() ); - } - iAlarmUtils->DoStopAlarm(); - } - else - { - iAlarmUtils->TryToSnoozeActiveAlarm(); - } - TRACE_EXIT_POINT; - } - // =========================================================== // ================ INHERITED FUNCTIONS ====================== @@ -432,12 +407,12 @@ iResOffset = iEikonEnv->AddResourceFileL( resFile ); - iEikonEnv->EikAppUi()->AddToStackL( + /*iEikonEnv->EikAppUi()->AddToStackL( this, ECoeStackPriorityAlert, ECoeStackFlagRefusesFocus ); - - MakeVisible(EFalse); +*/ + // MakeVisible(EFalse); SetStopFromContext(EFalse); iAlarmUtils = CAlarmUtils::NewL( this, aSupervisor ); @@ -447,9 +422,10 @@ // observe system state changes iPropertySWStateValue = CPropertyObserver::NewL( *this, KPSUidStartup, KPSGlobalSystemState ); //For Plasma accessory handling - _LIT_SECURITY_POLICY_PASS( KGeneralReadPolicy ); - _LIT_SECURITY_POLICY_C1( KProtectedWritePolicy, ECapabilityWriteDeviceData ); + // _LIT_SECURITY_POLICY_PASS( KGeneralReadPolicy ); + // _LIT_SECURITY_POLICY_C1( KProtectedWritePolicy, ECapabilityWriteDeviceData ); + /* RProperty::Define( KPSUidAlarmExtCntl, KAlarmStopKey, RProperty::EInt, KGeneralReadPolicy, KProtectedWritePolicy ); RProperty::Define( KPSUidAlarmExtCntl, KAlarmSnoozeKey, RProperty::EInt, KGeneralReadPolicy, KProtectedWritePolicy ); @@ -458,6 +434,7 @@ //observe Plasma accessory snooze key changes iPropertySnoozeAlarm = CPropertyObserver::NewL(*this, KPSUidAlarmExtCntl, KAlarmSnoozeKey); + */ //observe SysAp backlight setting PS Key iPropertyBacklight = CPropertyObserver::NewL(*this, KPSUidCoreApplicationUIs, KLightsAlarmLightActive); TRACE_EXIT_POINT; @@ -503,39 +480,41 @@ // (e.g. updating snooze time before showing the snooze info note) TRAPD( err, iAlarmUtils->InitialiseAlarmDataL(); ) - HBufC* text = NULL; - - if( !err ) + // Get the alarm information + SAlarmInfo* alarmInfo = iAlarmUtils->GetAlarmInfo(); + // Get the ringing type + alarmInfo->iIsSilent = iAlarmUtils->IsRingingTypeSilent() || iAlarmUtils->IsOffTone(); + // Check if the alarm can be snoozed + alarmInfo->iCanSnooze = iAlarmUtils->CanSnooze(); + + // cleanup (release global data) + iAlarmUtils->UninitialiseAlarmData(); + /*if(!IsVisible()) { - TRAP( err, iAlarmUtils->GetAlarmLabelL( text ); ) + MakeVisible(ETrue); } - // cleanup (release global data) - iAlarmUtils->UninitialiseAlarmData(); - if( !err ) - { - if(!IsVisible()) - { - MakeVisible(ETrue); - } - iAlarmUtils->NotifierDialogController()->SetNoteObserver( this ); + iAlarmUtils->NotifierDialogController()->SetNoteObserver( this ); - // setup CBA for the global note - TUint cba(0); // See AknDialogController.h - // alarm type - no silence key for clock alarms, unknown alarms are handled as calendar alarms - cba |= iAlarmUtils->IsClockAlarm() ? EClockAlarm | ENoSilence : ECalendarAlarm; - // disable silence key when ringing type is set to "silent" or if alarm sounds is set off - cba |= iAlarmUtils->IsRingingTypeSilent() || iAlarmUtils->IsOffTone() ? ENoSilence : 0; - // disable silence and snooze key if alarm can't be snoozed anymore - cba |= iAlarmUtils->CanSnooze() ? 0 : EHideSnooze | ENoSilence; - // show "Open" MSK for calendar alarms if the security lock is not active - cba |= iAlarmUtils->IsCalendarAlarm() && !iAlarmUtils->IsSecurityLockActive() ? EMskOpen : 0; + // setup CBA for the global note + TUint cba(0); // See AknDialogController.h + // alarm type - no silence key for clock alarms, unknown alarms are handled as calendar alarms + cba |= iAlarmUtils->IsClockAlarm() ? EClockAlarm | ENoSilence : ECalendarAlarm; + // disable silence key when ringing type is set to "silent" or if alarm sounds is set off + cba |= iAlarmUtils->IsRingingTypeSilent() || iAlarmUtils->IsOffTone() ? ENoSilence : 0; + // disable silence and snooze key if alarm can't be snoozed anymore + cba |= iAlarmUtils->CanSnooze() ? 0 : EHideSnooze | ENoSilence; + // show "Open" MSK for calendar alarms if the security lock is not active + cba |= iAlarmUtils->IsCalendarAlarm() && !iAlarmUtils->IsSecurityLockActive() ? EMskOpen : 0; - // request alarm dialog - TBuf<1> time; - TRAP( err, iGlobalNoteId = iAlarmUtils->NotifierDialogController()->DisplayAlarmL( cba, *text, time/*not used*/ ) ); - delete text; // only delete if GetAlarmLabelL call was successfull - ASSERT( !err ); - } + // request alarm dialog + TBuf<1> time; + TRAP( err, iGlobalNoteId = iAlarmUtils->NotifierDialogController()->DisplayAlarmL( cba, *text, timenot used ) ); + delete text; // only delete if GetAlarmLabelL call was successfull + ASSERT( !err ); */ + iAlarmUtils->NotifierDialogController()->showAlarmAlert(alarmInfo); + //iAlarmUtils->StartAutoSnoozeTimer(); + //iAlarmUtils->PlayAlarmSound(); + //SetState( EStateWaitingInput ); if( err ) // failed to fetch alarm data or show the notification { @@ -544,6 +523,8 @@ // -> stop and ignore the alarm HandleInterruptAlarm( EReasonKSysApHideAlarm ); } + delete alarmInfo->iLocation; + delete alarmInfo->iSubject; } } break; @@ -750,8 +731,9 @@ // cancel the alarm if( iGlobalNoteId != KErrNotFound ) { - iAlarmUtils->NotifierDialogController()->SetNoteObserver( this ); - iAlarmUtils->NotifierDialogController()->CancelNote( iGlobalNoteId ); + // iAlarmUtils->NotifierDialogController()->SetNoteObserver( this ); + // iAlarmUtils->NotifierDialogController()->CancelNote( iGlobalNoteId ); + iAlarmUtils->NotifierDialogController()->dismissAlarmAlert(); } } else // stop @@ -771,6 +753,7 @@ } } + /* //For plasma support else if( aCategory == KPSUidAlarmExtCntl && aKey == KAlarmStopKey && aValue == EAlarmUIStopAlarm ) { @@ -789,6 +772,7 @@ ExternalSnoozeAlarm(); } + */ else if( aCategory == KPSUidCoreApplicationUIs && aKey == KLightsAlarmLightActive) { if(IsState(EStateWaitingInput) && aValue == ELightsBlinkingUninitialized ) @@ -873,7 +857,7 @@ { // Do not leave if calendar launch fails. Just continue as normally iAlarmUtils->StopAlarmSound(); - PIM_TRAPD_ASSERT( iAlarmUtils->StartCalendarL(); ) + // PIM_TRAPD_ASSERT( iAlarmUtils->StartCalendarL(); ) iAlarmUtils->StartAutoSnoozeTimer(); // restart auto-snooze timer } } @@ -961,7 +945,7 @@ { iAlarmUtils->StartAutoSnoozeTimer(); iAlarmUtils->PlayAlarmSound(); - iAlarmUtils->SetKeyGuard( EFalse ); + //iAlarmUtils->SetKeyGuard( EFalse ); SetState( EStateWaitingInput ); iAlarmUtils->StartKeyBlocker(); // block all input for 0.5 seconds } @@ -1016,8 +1000,8 @@ case EStateWaitingInput: { SetState( EStateIdle ); - DoCancelDialog(); - StopOrSnoozeAlarm(); + DoCancelDialog(); + iAlarmUtils->TryToSnoozeActiveAlarm(); } break; @@ -1123,7 +1107,7 @@ { // Normally pressing End Call key generates CancelDialog callback, but // when we have an active call we don't get the CancelDialog... - iAlarmUtils->NotifierDialogController()->CancelNote( iGlobalNoteId ); // Cancel alarm....will snooze... + // iAlarmUtils->NotifierDialogController()->CancelNote( iGlobalNoteId ); // Cancel alarm....will snooze... TRACE_EXIT_POINT; return EKeyWasNotConsumed; } @@ -1176,7 +1160,7 @@ void CAlmAlarmControl::ShowSnoozeInfoNoteL() { TRACE_ENTRY_POINT; - +/* //Changes for MPIN-73VCR2 HBufC* stringHolder = NULL; CAknInformationNote* note = new (ELeave) CAknInformationNote(); @@ -1224,6 +1208,7 @@ { SetState( EStateIdle ); } + */ TRACE_EXIT_POINT; } @@ -1322,10 +1307,91 @@ { return iStopFromContextFw; } + + void CAlmAlarmControl::alertCompleted(AlarmCommand command) + { + //iAlarmUtils->CancelShutdown(); + iAlarmUtils->StopAlarmSound(); - CAlarmUtils* CAlmAlarmControl::AlarmUtils() const + switch( iState ) + { + /** + * EStateWaitingInput: normal case + * EStateWaitingDisplayRequest: + * This happens only if the global note got handled before we got the DisplayDialogL call. + * (e.g. note is dismissed if the cover is closed at the same time when alarm expires) + **/ + case EStateWaitingInput: + case EStateWaitingDisplayRequest: + { + switch( command ) + { + case AlarmStop: + { + SetState( EStateAfterInput ); + // cancel timers + iAlarmUtils->CancelAutoSnooze(); + iAskWakeup = ETrue; // ask wakeup after all the alarms are handled + iAlarmUtils->DoStopAlarm(); // stop + break; + } + case AlarmSnooze: + { + // cancel timers + iAlarmUtils->CancelAutoSnooze(); + SetState( EStateAfterInput ); + + SetState( EStateShowingSnoozeInfo ); + iAlarmUtils->TryToSnoozeActiveAlarm(); + if( IsState( EStateWaitingShowRequest ) ) + { + ShowAlarm(); + } + else + { + SetState( EStateIdle ); + } + } + } + } + break; + } + TRACE_EXIT_POINT; + } + + void CAlmAlarmControl::alertDisplayed(AlarmCommand /*command*/) + { + TRACE_ENTRY_POINT; + switch( iState ) { - return iAlarmUtils; + case EStateWaitingDisplayRequest: + { + iAlarmUtils->StartAutoSnoozeTimer(); + iAlarmUtils->PlayAlarmSound(); + //iAlarmUtils->SetKeyGuard( EFalse ); + SetState( EStateWaitingInput ); + iAlarmUtils->StartKeyBlocker(); // block all input for 0.5 seconds + } + break; + + case EStateBeforeAskingWakeup: + { + SetState( EStateAskingWakeup ); + } + break; + + default: + { + // panic - invalid state! + Panic( EAlarmUIInvalidState | EAlarmUIDisplayDialog ); + } } - // End of File + } + void CAlmAlarmControl::alertCancelled(AlarmCommand /*command*/) + { + iAlarmUtils->StopAlarmSound(); + iAlarmUtils->CancelAutoSnooze(); + } + +// End of File