williamr@4: /* williamr@4: * Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies). williamr@4: * All rights reserved. williamr@4: * This component and the accompanying materials are made available williamr@4: * under the terms of "Eclipse Public License v1.0" williamr@4: * which accompanies this distribution, and is available williamr@4: * at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@4: * williamr@4: * Initial Contributors: williamr@4: * Nokia Corporation - initial contribution. williamr@4: * williamr@4: * Contributors: williamr@4: * williamr@4: * Description: Uses notification framework to show a global confirmation query. williamr@4: * williamr@4: */ williamr@4: williamr@4: #ifndef __AKNGLOBALCONFIRMATIONQUERY_H__ williamr@4: #define __AKNGLOBALCONFIRMATIONQUERY_H__ williamr@4: williamr@4: #include williamr@4: #include williamr@4: #include williamr@4: #include williamr@4: williamr@4: class CAknSDData; williamr@4: williamr@4: /** williamr@4: * CAknGlobalConfirmationQuery williamr@4: * Uses notification framework to show a global confirmation query. williamr@4: * Usage: williamr@4: * Create an active object, start it and pass its TRequestStatus as a williamr@4: * parameter to ShowConfirmationQueryL. After the user presses a softkey, williamr@4: * the request status will hold the id of the pressed softkey. E.g. If williamr@4: * the user selected Cancel, the request status will hold -1. williamr@4: * williamr@4: * Example 1. Show the global confirmation query: williamr@4: * if ( iConfObserver ) williamr@4: * { williamr@4: * iConfObserver->Cancel(); williamr@4: * delete iConfObserver; williamr@4: * } williamr@4: * iConfObserver = new(ELeave) CGlobalConfirmationObserver(iEikonEnv); williamr@4: * iConfObserver->Start(); williamr@4: * iGlobalConfirmationQuery->ShowMsgQueryL( williamr@4: * iConfObserver->iStatus, williamr@4: * iPrompt, williamr@4: * R_AVKON_SOFTKEYS_OK_CANCEL, williamr@4: * R_QUERY_NOTE_ANIMATION); williamr@4: * williamr@4: * williamr@4: * Example 2. Get and handle the result in active object. williamr@4: * void CMyActiveObject::RunL() williamr@4: * { williamr@4: * TBuf<120> msg = _L("Received: "); williamr@4: * msg.AppendNum( iStatus.Int() ); williamr@4: * iEnv->InfoMsg(msg); williamr@4: * Cancel(); williamr@4: * } williamr@4: * williamr@4: * Example 3. Update the query (softkeys) williamr@4: * iGlobalConfirmationQuery->UpdateConfirmationQuery( R_AVKON_SOFTKEYS_BACK ); williamr@4: * williamr@4: * Example 4. Cancel the query williamr@4: * iGlobalConfirmationQuery->CancelConfirmationQuery(); williamr@4: * williamr@4: * NOTE !!! All descriptors passed as parameters need to be class members, i.e. williamr@4: * they cannot be local variables of a method. That is because williamr@4: * they need to exist when server gets the message. williamr@4: */ williamr@4: williamr@4: NONSHARABLE_CLASS(CAknGlobalConfirmationQuery) : public CBase williamr@4: { williamr@4: public: williamr@4: IMPORT_C static CAknGlobalConfirmationQuery* NewL(); williamr@4: IMPORT_C static CAknGlobalConfirmationQuery* NewLC(); williamr@4: IMPORT_C ~CAknGlobalConfirmationQuery(); williamr@4: williamr@4: /** williamr@4: * Shows global confirmation query synchronously. williamr@4: * williamr@4: * @param aStatus TRequestStatus which will be completed when user williamr@4: * selects one item from the list query. williamr@4: * @param aPrompt Prompt text. williamr@4: * @param aSoftkeys Softkey resource. williamr@4: * @param aAnimation Animation resource. williamr@4: * @param aTone Tone id. williamr@4: * @param aDismissWithAllKeys If set ETrue the query gets dismissed with all williamr@4: * keypresses. williamr@4: */ williamr@4: IMPORT_C void ShowConfirmationQueryL( williamr@4: TRequestStatus& aStatus, williamr@4: const TDesC& aPrompt, williamr@4: TInt aSoftkeys = 0, williamr@4: TInt aAnimation = 0, williamr@4: const TDesC& aImageFile = KNullDesC, williamr@4: TInt aImageId = 0, williamr@4: TInt aImageMaskId = 0, williamr@4: CAknQueryDialog::TTone aTone = CAknQueryDialog::ENoTone, williamr@4: TBool aDismissWithAllKeys = EFalse ); williamr@4: /** williamr@4: * Update the softkeys of the confirmation query. williamr@4: * williamr@4: * @param aSoftkeys New resource for softkeys. williamr@4: */ williamr@4: IMPORT_C void UpdateConfirmationQuery( TInt aSoftkeys ); williamr@4: williamr@4: /** williamr@4: * Cancel the confirmation query. williamr@4: */ williamr@4: IMPORT_C void CancelConfirmationQuery(); williamr@4: williamr@4: /** williamr@4: * Set skin id for query image. Must be called before ShowConfirmationQueryL in order to williamr@4: * have effect. No need to use this method if image from avkon.mbm is used. williamr@4: * williamr@4: * @aparam aId SkinId for image in query. If image is not found from the active skin, williamr@4: * image definitions used in ShowConfirmationQueryL are used instead. williamr@4: * @since S60 2.6 williamr@4: */ williamr@4: IMPORT_C void SetImageSkinId( TAknsItemID& aId ); williamr@4: williamr@4: /** williamr@4: * Sets additional information to be sent to secondary display. Takes ownership of object. williamr@4: * Must be called before sending data to notifier to have effect. williamr@4: * williamr@4: * @param aData Data to be sent to cover UI. williamr@4: * @since S60 3.1 williamr@4: * @internal to S60 williamr@4: */ williamr@4: IMPORT_C void SetSecondaryDisplayData(CAknSDData* aData); williamr@4: williamr@4: private: williamr@4: CAknGlobalConfirmationQuery(); williamr@4: void ConstructL(); williamr@4: williamr@4: private: williamr@4: TAknGlobalQueryCmd iCmd; williamr@4: TInt iSoftkeys; williamr@4: TInt iAnimation; williamr@4: CAknQueryDialog::TTone iTone; williamr@4: RNotifier iNotify; williamr@4: CBufFlat *iBuffer; williamr@4: TPtrC8 iBufferPtr; williamr@4: TInt iSkinsMajorId; williamr@4: TInt iSkinsMinorId; williamr@4: CAknSDData* iAknSDData; williamr@4: TBuf8<1> iResultBuf; // Not really used, but needed to prevent buffer handling errors. williamr@4: }; williamr@4: williamr@4: #endif // __AKNGLOBALCONFIRMATIONQUERY_H__