--- 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 <hbindicatorsymbian.h>
-#include <hbsymbianvariant.h>
+#include <AknDynamicSoftNotifier.h>
+#include <AknDynamicSoftNotificationParams.h>
#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