iaupdate/IAD/backgroundchecker/src/iaupdatebgsoftnotification.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 31 Aug 2010 15:21:33 +0300
branchRCL_3
changeset 25 7333d7932ef7
parent 0 ba25891c3a9e
child 26 8b7f4e561641
permissions -rw-r--r--
Revision: 201033 Kit: 201035

/*
* 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"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:    
*
*/



// INCLUDE FILES
#include <hbindicatorsymbian.h>
#include <hbsymbianvariant.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* self =
        new ( ELeave ) CIAUpdateBGSoftNotification( aCallback );
    CleanupStack::PushL( self );
    
    self->ConstructL();
    CleanupStack::Pop( self );
    
    return self;
    }

// -----------------------------------------------------------------------------
// Destructor
// -----------------------------------------------------------------------------
//
CIAUpdateBGSoftNotification::~CIAUpdateBGSoftNotification()
    {

    delete iTitle;
    delete iText;
    
    delete iNotificationDialog;

    }
   
// -----------------------------------------------------------------------------
// CIAUpdateBGSoftNotification::ShowNotificationL
// Displays notification
// -----------------------------------------------------------------------------
//
void CIAUpdateBGSoftNotification::ShowNotificationL()
    {
    
    FLOG("[bgchecker] ShowNotificationL");
    
    // crete dialog, id does not exist already
    if (!iNotificationDialog)
        {
        iNotificationDialog = CHbDeviceNotificationDialogSymbian::NewL( this );
        }
    
    // enable indicator showing
    SetIndicatorEnabled( ETrue );

    // fill texts, icon & behaviour parameters
    FillNotificationParams();
    
    iNotificationDialog->ShowL();
    
    return;
    
    }

// -----------------------------------------------------------------------------
// CIAUpdateBGSoftNotification::ShowIndicatorL
// Displays indicator
// -----------------------------------------------------------------------------
//
void CIAUpdateBGSoftNotification::ShowIndicatorL()
    {
    
    FLOG("[bgchecker] ShowIndicatorL");
    
    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;
    
    }

// -----------------------------------------------------------------------------
// CIAUpdateBGSoftNotification::Remove indicator
// Removes indicator
// -----------------------------------------------------------------------------
//
void CIAUpdateBGSoftNotification::RemoveIndicatorL()
    {
    
    FLOG("[bgchecker] RemoveIndicatorL");
    
    CHbIndicatorSymbian *ind = CHbIndicatorSymbian::NewL();
    CleanupStack::PushL( ind );
    // Temporary removal 
    ind->Deactivate( KIndicatorTypeBgc ); 
    CleanupStack::PopAndDestroy(ind);
    
    return;
    
    }

// -----------------------------------------------------------------------------
// CIAUpdateBGSoftNotification::SetTextL
// Sets a text for a soft notification
// -----------------------------------------------------------------------------
//
void CIAUpdateBGSoftNotification::SetTextL( 
        const TDesC& aTitle, const TDesC& aText )
    {
    HBufC* txt = aTitle.AllocL();
    delete iTitle;
    iTitle = txt;

    txt = aText.AllocL();
    delete iText;
    iText = txt;
    }

// -----------------------------------------------------------------------------
// CIAUpdateBGSoftNotification::SetNrOfUpdates
// Sets an image path for a soft notification
// -----------------------------------------------------------------------------
//
void CIAUpdateBGSoftNotification::SetNrOfUpdates( const TInt& aNrOfUpdates)
    {
    // save number of updates
    iNrOfUpdates = aNrOfUpdates;
    return;
    }
// -----------------------------------------------------------------------------
// CIAUpdateBGSoftNotification::ConstructL
// Symbian 2nd phase constructor can leave.
// -----------------------------------------------------------------------------
//
void CIAUpdateBGSoftNotification::ConstructL()
    {
    FLOG("[bgchecker] softnotification ConstructL");
    }

// -----------------------------------------------------------------------------
// CIAUpdateBGSoftNotification::CIAUpdateBGSoftNotification
// C++ default constructor can NOT contain any code, that
// might leave.
// -----------------------------------------------------------------------------
//
CIAUpdateBGSoftNotification::CIAUpdateBGSoftNotification( 
        MIAUpdateBGSoftNotificationCallBack* aCallback )
    : iCallback ( aCallback )
    {
    }

// -----------------------------------------------------------------------------
// CIAUpdateBGSoftNotification::FillNotificationParams
// -----------------------------------------------------------------------------
//

void CIAUpdateBGSoftNotification::FillNotificationParams()
    {
    
    // set title, text and icon
    if ( iTitle )
        {
        iNotificationDialog->SetTitleL(iTitle->Des());
        }
    
    if ( iText )
        {
        iNotificationDialog->SetTextL(iText->Des());
        }
    
    // 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;
    
    }

//  End of File