diff -r 63339781d179 -r 09b1ac925e3f securitydialogs/SecUi/Inc/SecQueryUi.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/securitydialogs/SecUi/Inc/SecQueryUi.h Tue Aug 31 16:04:40 2010 +0300 @@ -0,0 +1,249 @@ +/* +* 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: CSecQueryUi API can be used to implement UI dialogs for +* SecUi plugins. +*/ + + +#ifndef C_SECQUERYUI_H +#define C_SECQUERYUI_H + +#include // CActive +#include // MHbDeviceDialogObserver +#include +#include + +#define ESecUiTypeMask 0x0FFFFFF +#define ESecUiBasicTypeMask 0x00F0000 + +#define ESecUiCancelSupported 0x1000000 +#define ESecUiCancelNotSupported 0x0000000 + +#define ESecUiEmergencySupported 0x2000000 +#define ESecUiEmergencyNotSupported 0x0000000 + +#define ESecUiAlphaSupported 0x4000000 +#define ESecUiAlphaNotSupported 0x0000000 + +#define ESecUiSecretSupported 0x8000000 +#define ESecUiSecretNotSupported 0x0000000 + +#define ESecUiBasicTypeCheck 0x0010000 +#define ESecUiBasicTypeMultiCheck 0x0020000 + +class MSecQueryUiCertificateDetailsProvider; +class MSecQueryUiDrmDetailsProvider; +class CHbDeviceDialogSymbian; +class CHbSymbianVariantMap; +class CActiveSchedulerWait; +class CApaMaskedBitmap; + +typedef TBuf<80> TSecUiPassword; + +enum R_SECUI_ERROR_CODES + { + R_CODE_ERROR=0x58ED0100, + R_SEC_BLOCKED, + R_CONFIRMATION_NOTE, + R_PIN_CODE_CHANGED_NOTE, + R_PIN2_CODE_CHANGED_NOTE, + R_PIN2_REJECTED, + R_UPIN_CODE_CHANGED_NOTE, + R_SIM_NOT_ALLOWED, + R_SIM_ALLREADY_OFF, + R_SIM_OFF, + R_SIM_ALLREADY_ON, + R_OPERATION_NOT_ALLOWED, + R_SECUI_TEXT_AUTOLOCK_MUST_BE_ACTIVE, + R_PIN_NOT_ALLOWED, + R_REMOTELOCK_INVALID_CODE, + R_SIM_ON, + R_INSERT_SIM, + R_CODES_DONT_MATCH, + R_PIN_BLOCKED_NOTE, + R_UPIN_NOT_ALLOWED, + R_SECURITY_CODE_CHANGED_NOTE, + R_SECUI_ERROR_CODE_LAST + }; + +/** + * CSecQueryUi provides UI dialogs for SW installation. UI dialogs are + * global and they can be used in a non-UI code (like in SIF plugins). + * SW install device dialog plugin implements the UI dialogs. + * + * @lib SecQueryUi.lib + * @since 10.1 + */ +typedef TBuf<80> TSecUiPassword; + +class CSecQueryUi : public CActive, public MHbDeviceDialogObserver + { + public: // constructor and destructor + /** + * Creates new CSecQueryUi object and pushes it into cleanup stack. + * @returns CSecQueryUi* -- new CSecQueryUi object + */ + IMPORT_C static CSecQueryUi* NewLC(); + + /** + * Creates new CSecQueryUi object. + * @returns CSecQueryUi* -- new CSecQueryUi object + */ + IMPORT_C static CSecQueryUi* NewL(); + + /** + * Destructor. + */ + CSecQueryUi::~CSecQueryUi(); + + public: // new functions + /** + * Displays install confirmation query synchronously. Synchronous function + * returns after the user has accepted or cancelled the query. + * @param aAppDetails - other application details (like supplier) + * @return TBool - ETrue if user accepted the query, EFalse otherwise + */ + IMPORT_C TBool InstallConfirmationQueryL( TInt aType, RMobilePhone::TMobilePassword& password ); + IMPORT_C TInt SecQueryDialog(const TDesC& aCaption, TDes& aDataText, TInt aMinLength,TInt aMaxLength,TInt aMode); + /* + IMPORT_C TBool InstallConfirmationQueryL( const TDesC& aAppName, + const TDesC& aIconFile, const TDesC& aAppVersion, TInt aAppSize, + const TDesC& aAppDetails ); + */ + + /** + * Displays information note. If the information note is already displayed, then + * only the dialog text is updated. Information note is closed automatically after + * pre-defined time (e.g. after 1.5 seconds). User can also press any key to close + * the note faster. + * @param aText - info text to be displayed + */ + IMPORT_C void DisplayInformationNoteL( const TDesC& aText ); + + /** + * Displays warning note. If the warning note is already displayed, then only the note + * text is updated. Warning note is closed automatically after pre-defined time (e.g. + * after three seconds). User can also press any key to close the note faster. + * @param aText - error text to be displayed + */ + IMPORT_C void DisplayWarningNoteL( const TDesC& aText ); + + /** + * Displays error note. If the error note is already displayed, then only the dialog + * text is updated. Error note is closed automatically after pre-defined time (e.g. + * after three seconds). User can also press any key to close the note faster. + * @param aText - error text to be displayed + */ + IMPORT_C void DisplayErrorNoteL( const TDesC& aText ); + + /** + * Displays permanent note. If the permanent note is already displayed, then only the + * dialog text is updated. User cannot cancel or close permanent notes. Permanent note + * is displayed until ClosePermanentNote() is called. Delayed notes are displayed after + * pre-defined delay time, and they may be closed before they appear on the screen. + * @param aText - text to be displayed + * @param aIsDelayed - ETrue if delayed dialog should be used + */ + IMPORT_C void DisplayPermanentNoteL( const TDesC& aText ); + + /** + * Closes the permanent note. + */ + IMPORT_C void ClosePermanentNote(); + + /** + * Displays progress note using aFinalValue. Use UpdateProgressNoteValueL() to + * update the progress bar. If the progress note is already active, then only + * the note text and final value are updated. + * @param aText - text displayed in progress note + * @param aFinalValue - final value of the progress bar + */ + IMPORT_C void DisplayProgressNoteL( const TDesC& aText, TInt aFinalValue ); + + /** + * Updates the progress bar in progress note. Progress bar shows 0% when + * aNewValue is zero (or less than zero), and full 100% when aNewValue is + * equal (or more than) the final value set with SetProgressNoteFinalValueL(). + * @param aNewValue - new value for the progress bar + */ + IMPORT_C void UpdateProgressNoteValueL( TInt aNewValue ); + + /** + * Closes the progress note. TRequestStatus set in DisplayProgressNoteL() is + * completed with KErrNone. Note that it is completed with KErrCancel if user + * cancels the note, or with error code if some error happens. + */ + IMPORT_C void CloseProgressNoteL(); + + /** + * Displays wait note. If the wait note is already displayed, then only the note + * text is updated. Wait note is like progress note, except that it is not known + * how long the operation takes. User can cancel the operation as in progress note. + * @param aText - text to be displayed + * @param aStatus - request status that indicates if user cancels the note + */ + IMPORT_C void DisplayWaitNoteL( const TDesC& aText, TRequestStatus& aStatus ); + + /** + * Closes the wait note. + */ + IMPORT_C void CloseWaitNote(); + + /** + * Launches help with the help context aContext for application aUid. + * @param aContext - help context to be displayed + * @param aUid - application which help needs to be launched + */ + IMPORT_C void LaunchHelpL( const TDesC& aContext, const TUid& aUid ); + + /** + * Launches SW Install application (UID 0x101F8512) help using the + * help context aContext. + * @param aContext - help context to be displayed + */ + IMPORT_C void LaunchHelpL( const TDesC& aContext ); + + protected: // from CActive + void DoCancel(); + void RunL(); + + private: // from MHbDeviceDialogObserver + void DataReceived( CHbSymbianVariantMap& aData ); + void DeviceDialogClosed( TInt aCompletionCode ); + + private: // new functions + CSecQueryUi(); + void ConstructL(); + void ClearParamsL(); + void ClearParamsAndSetNoteTypeL( TInt aType ); + void AddParamL( const TDesC& aKey, TInt aValue ); + void AddParamL( const TDesC& aKey, const TDesC& aValue ); + void DisplayDeviceDialogL(); + TInt WaitUntilDeviceDialogClosed(); + + private: // data + CHbDeviceDialogSymbian* iDeviceDialog; + CHbSymbianVariantMap* iVariantMap; + CActiveSchedulerWait* iWait; + TBool iIsDisplayingDialog; + TInt iCompletionCode; + TInt iReturnValue; +public: + // previoulsy it was RMobilePhone::TMobilePassword iPassword; but this was only 10 bytes + TSecUiPassword iPassword; + }; + + +#endif // C_SECQUERYUI_H +