iaupdate/IAD/backgroundchecker/src/iaupdatebgsoftnotification.cpp
branchRCL_3
changeset 26 8b7f4e561641
parent 25 7333d7932ef7
--- 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