--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/uifw/AvKon/notifsrc/aknglobalprogressdialog.cpp Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,211 @@
+/*
+* Copyright (c) 2002-2007 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: Implementation of a global progress dialog. See header file
+* for usage example.
+*
+*/
+
+#include "AknGlobalProgressDialog.h"
+#include <AknNotifyStd.h>
+#include <AknPanic.h>
+#include <s32mem.h>
+#include <AknNotifySignature.h>
+#include <aknSDData.h>
+
+const TInt KBufferGranularity = 128;
+
+EXPORT_C CAknGlobalProgressDialog* CAknGlobalProgressDialog::NewL()
+ {
+ CAknGlobalProgressDialog* self = NewLC();
+ CleanupStack::Pop(); // self
+ return self;
+ }
+
+EXPORT_C CAknGlobalProgressDialog* CAknGlobalProgressDialog::NewLC()
+ {
+ CAknGlobalProgressDialog* self = new(ELeave) CAknGlobalProgressDialog;
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ return self;
+ }
+
+EXPORT_C CAknGlobalProgressDialog::~CAknGlobalProgressDialog()
+ {
+ iNotify.Close();
+ delete iBuffer;
+ delete iIconText;
+ delete iIconFile;
+ delete iImageFile;
+ delete iAknSDData;
+ }
+
+EXPORT_C void CAknGlobalProgressDialog::SetIconL(
+ const TDesC& aIconText,
+ const TDesC& aIconFile,
+ TInt aIconId,
+ TInt aIconMaskId )
+ {
+ delete iIconText;
+ iIconText = NULL;
+ delete iIconFile;
+ iIconFile = NULL;
+ iIconText = aIconText.AllocL();
+ iIconFile = aIconFile.AllocL();
+ iIconId = aIconId;
+ iIconMaskId = aIconMaskId;
+ }
+
+EXPORT_C void CAknGlobalProgressDialog::SetImageL(
+ const TDesC& aImageFile,
+ TInt aImageId,
+ TInt aImageMaskId )
+ {
+ delete iImageFile;
+ iImageFile = NULL;
+ iImageFile = aImageFile.AllocL();
+ iImageId = aImageId;
+ iImageMaskId = aImageMaskId;
+ }
+
+EXPORT_C void CAknGlobalProgressDialog::ShowProgressDialogL(
+ TRequestStatus& aStatus,
+ const TDesC& aPrompt,
+ TInt aSoftkeys,
+ TInt aFinalValue,
+ CAknNoteDialog::TTone aTone)
+ {
+ delete iBuffer;
+ iBuffer = NULL;
+ iBuffer = CBufFlat::NewL(KBufferGranularity);
+
+ RBufWriteStream bufStream;
+ bufStream.Open(*iBuffer);
+
+ CleanupClosePushL(bufStream);
+
+ bufStream.WriteInt32L(KAKNNOTIFIERSIGNATURE);
+
+ bufStream.WriteInt32L(aSoftkeys);
+ bufStream.WriteInt16L(iImageId);
+ bufStream.WriteInt16L(iImageMaskId);
+ bufStream.WriteInt16L(iIconId);
+ bufStream.WriteInt16L(iIconMaskId);
+ bufStream.WriteInt32L(aFinalValue);
+ bufStream.WriteInt16L(aTone);
+ bufStream.WriteInt16L(aPrompt.Length());
+ if ( aPrompt.Length() )
+ {
+ bufStream << aPrompt;
+ }
+ bufStream.WriteInt16L( iImageFile ? iImageFile->Length() : 0 );
+ if (iImageFile && iImageFile->Length())
+ {
+ bufStream << *iImageFile;
+ }
+ bufStream.WriteInt16L( iIconFile ? iIconFile->Length() : 0 );
+ if (iIconFile && iIconFile->Length())
+ {
+ bufStream << *iIconFile;
+ }
+ bufStream.WriteInt16L( iIconText ? iIconText->Length() : 0 );
+ if (iIconText && iIconText->Length())
+ {
+ bufStream << *iIconText;
+ }
+
+ bufStream.WriteInt32L(iImageSkinsMajorId);
+ bufStream.WriteInt32L(iImageSkinsMinorId);
+
+ bufStream.WriteInt32L(iIconSkinsMajorId);
+ bufStream.WriteInt32L(iIconSkinsMinorId);
+
+ if (iAknSDData)
+ {
+ bufStream.WriteInt8L(ETrue);
+ bufStream << *iAknSDData;
+ }
+ else
+ {
+ bufStream.WriteInt8L(EFalse);
+ }
+
+ iBufferPtr.Set(iBuffer->Ptr(0));
+ iNotify.StartNotifierAndGetResponse(aStatus, KAknGlobalProgressDialogUid,
+ iBufferPtr, iResultBuf);
+
+ CleanupStack::PopAndDestroy(); // bufStream
+ }
+
+EXPORT_C void CAknGlobalProgressDialog::UpdateProgressDialog(
+ TInt aValue,
+ TInt aFinalValue )
+ {
+ iCmd = EAknUpdateGlobalQuery;
+ iValue = aValue;
+ iFinalValue = aFinalValue;
+ UpdateNotifier();
+ }
+
+EXPORT_C void CAknGlobalProgressDialog::ProcessFinished()
+ {
+ iCmd = EAknFinishGlobalProgressDialog;
+ UpdateNotifier();
+ }
+
+EXPORT_C void CAknGlobalProgressDialog::CancelProgressDialog()
+ {
+ if (iBuffer)
+ {
+ iNotify.CancelNotifier(KAknGlobalProgressDialogUid );
+ delete iBuffer;
+ iBuffer = 0;
+ }
+ }
+
+void CAknGlobalProgressDialog::UpdateNotifier()
+ {
+ TPckgBuf<SAknNotifierPackage<SAknGlobalProgressDialogParams> > pckg;
+ pckg().iParamData.iCmd = iCmd;
+ pckg().iParamData.iValue = iValue;
+ pckg().iParamData.iFinalValue = iFinalValue;
+ TPckgBuf<TInt> ret;
+ iNotify.UpdateNotifier( KAknGlobalProgressDialogUid, pckg, ret);
+ }
+
+CAknGlobalProgressDialog::CAknGlobalProgressDialog()
+ {
+ }
+
+void CAknGlobalProgressDialog::ConstructL()
+ {
+ User::LeaveIfError(iNotify.Connect());
+ }
+
+EXPORT_C void CAknGlobalProgressDialog::SetImageSkinIds( TAknsItemID& aImageId,
+ TAknsItemID& aIconId )
+ {
+ iImageSkinsMajorId = aImageId.iMajor;
+ iImageSkinsMinorId= aImageId.iMinor;
+
+ iIconSkinsMajorId = aIconId.iMajor;
+ iIconSkinsMinorId = aIconId.iMinor;
+ }
+
+EXPORT_C void CAknGlobalProgressDialog::SetSecondaryDisplayData(CAknSDData* aData)
+ {
+ delete iAknSDData;
+ iAknSDData = aData;
+ }
+
+// End of File