smartinstaller/common/globalwaitnote.cpp
author Santosh V Patil <santosh.v.patil@nokia.com>
Wed, 30 Jun 2010 11:01:26 +0530
branchADM
changeset 48 364021cecc90
permissions -rw-r--r--
SmartInstaller contribution based on the Nokia Qt SDK 1.0 release

/*
* Copyright (c) 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:
*     CGlobalWaitNoteObserver Definition.
*
*
*/

#include <aknglobalnote.h>
#include <stringloader.h>
#include <avkon.hrh>
#include <avkon.rsg>

#include "globalwaitnote.h"

CGlobalWaitNote* CGlobalWaitNote::NewLC(MGlobalWaitNoteClient& aOwner, TBool aCancellable)
	{
	CGlobalWaitNote* self = new(ELeave) CGlobalWaitNote(aOwner, aCancellable);
	CleanupStack::PushL(self);
	self->ConstructL();
	return self;
	}

CGlobalWaitNote* CGlobalWaitNote::NewL(MGlobalWaitNoteClient& aOwner, TBool aCancellable)
	{
	CGlobalWaitNote* self = NewLC(aOwner, aCancellable);
	CleanupStack::Pop(self);
	return self;
	}

CGlobalWaitNote::CGlobalWaitNote(MGlobalWaitNoteClient& aOwner, TBool aCancellable) :
	CActive(EPriorityStandard),
	iOwner(aOwner),
	iCancellable(aCancellable)
	{
	CActiveScheduler::Add(this);
	}

void CGlobalWaitNote::ConstructL()
	{
	iWaitNote = CAknGlobalNote::NewL();
	}

CGlobalWaitNote::~CGlobalWaitNote()
	{
	if ( IsActive() )
		{
		Cancel();
		}
	delete iWaitNote;
	iWaitNote = NULL;
	}

void CGlobalWaitNote::ShowNoteL(const TDesC& aText)
	{
	if ( !IsActive() )
		{
		if ( !iCancellable )
			{
			iWaitNote->SetSoftkeys( R_AVKON_SOFTKEYS_EMPTY );
			}
		iWaitNoteId = iWaitNote->ShowNoteL(
			iStatus,
			EAknGlobalWaitNote,
			aText );
		SetActive();
		}
	}

void CGlobalWaitNote::CancelNoteL()
	{
	if ( iWaitNote /* && iWaitNoteId >= 0*/ )
		{
		iWaitNote->CancelNoteL( iWaitNoteId );
		delete iWaitNote;
		iWaitNote = NULL;
		}
	}

void CGlobalWaitNote::RunL()
	{
	// Always cancel i.e. remove the note
	CancelNoteL();
	if ( iCancellable && iStatus.Int() == EAknSoftkeyCancel )
		{
		iOwner.WaitNoteCancelled();
		}
	}

void CGlobalWaitNote::DoCancel()
	{
	}