diff -r 7333d7932ef7 -r 8b7f4e561641 iaupdate/IAD/backgroundchecker/src/iaupdatebgsoftnotification.cpp --- a/iaupdate/IAD/backgroundchecker/src/iaupdatebgsoftnotification.cpp Tue Aug 31 15:21:33 2010 +0300 +++ b/iaupdate/IAD/backgroundchecker/src/iaupdatebgsoftnotification.cpp Wed Sep 01 12:22:02 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008 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" @@ -18,74 +18,26 @@ // INCLUDE FILES -#include -#include +#include +#include #include "iaupdatebgsoftnotification.h" #include "iaupdatebginternalfilehandler.h" #include "iaupdatebgconst.h" #include "iaupdatebglogger.h" -// Indicator type -_LIT(KIndicatorTypeBgc, "com.nokia.iaupdate.indicatorplugin/1.0"); // ============================ MEMBER FUNCTIONS =============================== -void CIAUpdateBGSoftNotification::NotificationDialogActivated( - const CHbDeviceNotificationDialogSymbian* /* aDialog */) - { - - FLOG("[bgchecker] softnotification callback function ACCEPTED"); - - // indicator shall not be shown - SetIndicatorEnabled( EFalse ); - - // Remove (possibly) existing indicator - RemoveIndicatorL(); - - iCallback->SoftNotificationCallBack( ETrue ); - - // remove dialog - //delete iNotificationDialog; - //iNotificationDialog = 0; - - return; - } - -void CIAUpdateBGSoftNotification::NotificationDialogClosed - ( const CHbDeviceNotificationDialogSymbian* /* aDialog */, - TInt /* aCompletionCode*/ ) - { - - - FLOG("[bgchecker] softnotification callback function Closed"); - - // Set indicator, if needed - if (IsIndicatorEnabled()) - { - ShowIndicatorL(); - } - - - iCallback->SoftNotificationCallBack( EFalse ); - - // remove dialog - //delete iNotificationDialog; - //iNotificationDialog = 0; - - return; - } - - // ----------------------------------------------------------------------------- // CIAUpdateBGSoftNotification::NewLC // Static constructor // ----------------------------------------------------------------------------- // -CIAUpdateBGSoftNotification* CIAUpdateBGSoftNotification::NewL( - MIAUpdateBGSoftNotificationCallBack* aCallback ) +CIAUpdateBGSoftNotification* CIAUpdateBGSoftNotification::NewL( MIAUpdateBGSoftNotificationCallBack* aCallback, + CIAUpdateBGInternalFileHandler* aInternalFile ) { CIAUpdateBGSoftNotification* self = - new ( ELeave ) CIAUpdateBGSoftNotification( aCallback ); + new ( ELeave ) CIAUpdateBGSoftNotification( aCallback, aInternalFile ); CleanupStack::PushL( self ); self->ConstructL(); @@ -100,88 +52,83 @@ // CIAUpdateBGSoftNotification::~CIAUpdateBGSoftNotification() { + delete iSoftkey1; + delete iSoftkey2; - delete iTitle; - delete iText; - - delete iNotificationDialog; + delete iLabel; + delete iGroupLabel; + delete iImageData; + + delete iNotifier; } - + // ----------------------------------------------------------------------------- -// CIAUpdateBGSoftNotification::ShowNotificationL -// Displays notification +// CIAUpdateBGSoftNotification::NotificationAccepted +// Dynamic soft notification was accepted by user. // ----------------------------------------------------------------------------- // -void CIAUpdateBGSoftNotification::ShowNotificationL() +void CIAUpdateBGSoftNotification::NotificationAccepted( TInt /*aIdentifier*/ ) { - - FLOG("[bgchecker] ShowNotificationL"); - - // crete dialog, id does not exist already - if (!iNotificationDialog) - { - iNotificationDialog = CHbDeviceNotificationDialogSymbian::NewL( this ); - } + FLOG("[bgchecker] softnotification callback function ACCEPTED"); + //remove the soft notifiation id + iInternalFile->SetSoftNotificationID( 0 ); + TRAP_IGNORE( iInternalFile->WriteControllerDataL() ); - // enable indicator showing - SetIndicatorEnabled( ETrue ); - - // fill texts, icon & behaviour parameters - FillNotificationParams(); - - iNotificationDialog->ShowL(); - - return; - + iCallback->SoftNotificationCallBack( ETrue ); } // ----------------------------------------------------------------------------- -// CIAUpdateBGSoftNotification::ShowIndicatorL -// Displays indicator +// CIAUpdateBGSoftNotification::NotificationCanceled +// Dynamic soft notification was canceled by user. +// ----------------------------------------------------------------------------- +// +void CIAUpdateBGSoftNotification::NotificationCanceled( TInt /*aIdentifier*/ ) + { + FLOG("[bgchecker] softnotification callback function Canceled"); + //remove the soft notifiation id + iInternalFile->SetSoftNotificationID( 0 ); + TRAP_IGNORE( iInternalFile->WriteControllerDataL() ); + + iCallback->SoftNotificationCallBack( EFalse ); + } + +// ----------------------------------------------------------------------------- +// CIAUpdateBGSoftNotification::ShowSoftNotificationL +// Displays a soft notification // ----------------------------------------------------------------------------- // -void CIAUpdateBGSoftNotification::ShowIndicatorL() +void CIAUpdateBGSoftNotification::ShowSoftNotificationL() { - - FLOG("[bgchecker] ShowIndicatorL"); + TAknDynamicSoftNotificationParams param( KSoftNotificationPriority ); + FillNotificationParams( param ); - CHbIndicatorSymbian *ind = CHbIndicatorSymbian::NewL(); - CleanupStack::PushL( ind ); - - TInt value = GetNrOfUpdates(); - - // Set indicator - CHbSymbianVariant* varValue = CHbSymbianVariant::NewL( &value, - CHbSymbianVariant::EInt ); - CleanupStack::PushL( varValue ); - // Temporary removal - ind->Activate( KIndicatorTypeBgc, varValue ); - CleanupStack::PopAndDestroy( varValue ); - CleanupStack::PopAndDestroy( ind ); - - return; - + TInt oldId = iNotificationId; + iNotificationId = + iNotifier->SetDynamicNotificationCountL( param, iNotificationId, 1 ); + + if( oldId != iNotificationId ) + { + FLOG("[bgchecker] softnotification save notification Id"); + iInternalFile->SetSoftNotificationID( iNotificationId ); + TRAP_IGNORE( iInternalFile->WriteControllerDataL() ); + + iNotifier->StopObserving( oldId ); + iNotifier->StartObservingL( iNotificationId, this ); + } } // ----------------------------------------------------------------------------- -// CIAUpdateBGSoftNotification::Remove indicator -// Removes indicator +// CIAUpdateBGSoftNotification::RemoveSoftNotificationL +// Cancels and removes the soft notification // ----------------------------------------------------------------------------- // -void CIAUpdateBGSoftNotification::RemoveIndicatorL() +void CIAUpdateBGSoftNotification::RemoveSoftNotificationL( TInt aNotifierId ) { - - FLOG("[bgchecker] RemoveIndicatorL"); - - CHbIndicatorSymbian *ind = CHbIndicatorSymbian::NewL(); - CleanupStack::PushL( ind ); - // Temporary removal - ind->Deactivate( KIndicatorTypeBgc ); - CleanupStack::PopAndDestroy(ind); - - return; - + if ( aNotifierId != 0 ) + { + iNotifier->CancelDynamicNotificationL( aNotifierId ); + } } // ----------------------------------------------------------------------------- @@ -189,29 +136,58 @@ // Sets a text for a soft notification // ----------------------------------------------------------------------------- // -void CIAUpdateBGSoftNotification::SetTextL( - const TDesC& aTitle, const TDesC& aText ) +void CIAUpdateBGSoftNotification::SetTextL( const TDesC& aText, const TDesC& aGroupText ) { - HBufC* txt = aTitle.AllocL(); - delete iTitle; - iTitle = txt; + HBufC* txt = aText.AllocL(); + delete iLabel; + iLabel = txt; - txt = aText.AllocL(); - delete iText; - iText = txt; + txt = aGroupText.AllocL(); + delete iGroupLabel; + iGroupLabel = txt; } // ----------------------------------------------------------------------------- -// CIAUpdateBGSoftNotification::SetNrOfUpdates -// Sets an image path for a soft notification +// CIAUpdateBGSoftNotification::SetSoftkeyLabelsL +// Sets new labels for softkeys // ----------------------------------------------------------------------------- // -void CIAUpdateBGSoftNotification::SetNrOfUpdates( const TInt& aNrOfUpdates) +void CIAUpdateBGSoftNotification::SetSoftkeyLabelsL( + const TDesC& aSoftkey1Label, + const TDesC& aSoftkey2Label ) { - // save number of updates - iNrOfUpdates = aNrOfUpdates; - return; + HBufC* txt = aSoftkey1Label.AllocL(); + delete iSoftkey1; + iSoftkey1 = txt; + + txt = aSoftkey2Label.AllocL(); + delete iSoftkey2; + iSoftkey2 = txt; } + +// ----------------------------------------------------------------------------- +// CIAUpdateBGSoftNotification::SetImageL +// Sets an image for a soft notification +// ----------------------------------------------------------------------------- +// +void CIAUpdateBGSoftNotification::SetImageL( + const TDesC8& aImage ) + { + HBufC8* image = aImage.AllocL(); + delete iImageData; + iImageData = image; + } + +// ----------------------------------------------------------------------------- +// CIAUpdateBGSoftNotification::Id +// Notification Id +// ----------------------------------------------------------------------------- +// +TInt CIAUpdateBGSoftNotification::Id() + { + return iNotificationId; + } + // ----------------------------------------------------------------------------- // CIAUpdateBGSoftNotification::ConstructL // Symbian 2nd phase constructor can leave. @@ -220,6 +196,11 @@ void CIAUpdateBGSoftNotification::ConstructL() { FLOG("[bgchecker] softnotification ConstructL"); + iNotifier = CAknDynamicSoftNotifier::NewL(); + + iInternalFile->ReadControllerDataL(); + iNotificationId = iInternalFile->SoftNotificationID(); + } // ----------------------------------------------------------------------------- @@ -228,66 +209,54 @@ // might leave. // ----------------------------------------------------------------------------- // -CIAUpdateBGSoftNotification::CIAUpdateBGSoftNotification( - MIAUpdateBGSoftNotificationCallBack* aCallback ) - : iCallback ( aCallback ) +CIAUpdateBGSoftNotification::CIAUpdateBGSoftNotification( MIAUpdateBGSoftNotificationCallBack* aCallback, + CIAUpdateBGInternalFileHandler* aInternalFile ) + : iCallback ( aCallback ), iInternalFile ( aInternalFile ) { } // ----------------------------------------------------------------------------- +// CIAUpdateBGSoftNotification::StartObservingIfNeededL +// ----------------------------------------------------------------------------- +// +void CIAUpdateBGSoftNotification::StartObservingIfNeededL() + { + if ( iNotificationId ) + { + FLOG("[bgchecker] softnotification There is a buffered softnotification"); + //a buffering soft notification + iNotifier->StartObservingL( iNotificationId, this ); + } + } + +// ----------------------------------------------------------------------------- // CIAUpdateBGSoftNotification::FillNotificationParams // ----------------------------------------------------------------------------- // - -void CIAUpdateBGSoftNotification::FillNotificationParams() +void CIAUpdateBGSoftNotification::FillNotificationParams( + TAknDynamicSoftNotificationParams& aParam ) { - - // set title, text and icon - if ( iTitle ) + if( iSoftkey1 && iSoftkey2 ) + { + aParam.SetSoftkeys( *iSoftkey1, *iSoftkey2 ); + } + + if( iLabel ) { - iNotificationDialog->SetTitleL(iTitle->Des()); + aParam.SetNoteLabels( *iLabel, *iLabel ); } - - if ( iText ) + + if( iGroupLabel ) { - iNotificationDialog->SetTextL(iText->Des()); + //aParam.SetGroupLabels( *iGroupLabel, *iGroupLabel ); + } + + if( iImageData ) + { + aParam.SetImageData( *iImageData ); } - // set wrapping, timeout and touch - iNotificationDialog->SetTitleTextWrapping( - CHbDeviceNotificationDialogSymbian::TextWordWrap); - iNotificationDialog->SetTimeout(4000); //default 3000 - iNotificationDialog->EnableTouchActivation(ETrue); // default FALSE - - } -// ---------------------------------------------------------- -// CIAUpdateBGSoftNotification::EnableIndicator(TBool aEnabled) -// ---------------------------------------------------------- -void CIAUpdateBGSoftNotification::SetIndicatorEnabled( TBool aEnabled ) - { - - iActivateIndicator = aEnabled; - - } - -// ---------------------------------------------------------- -// CIAUpdateBGSoftNotification::IndicatorEnabled() -// ---------------------------------------------------------- -TBool CIAUpdateBGSoftNotification::IsIndicatorEnabled() - { - - return iActivateIndicator; - - } - -// ---------------------------------------------------------- -// CIAUpdateBGSoftNotification::GetNrOfUpdates() -// ---------------------------------------------------------- -int CIAUpdateBGSoftNotification::GetNrOfUpdates() - { - - return iNrOfUpdates; - + aParam.EnableObserver(); } // End of File