diff -r 000000000000 -r 2f259fa3e83a classicui_pub/editors_api/inc/EIKSECED.H --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/classicui_pub/editors_api/inc/EIKSECED.H Tue Feb 02 01:00:49 2010 +0200 @@ -0,0 +1,456 @@ +/* +* Copyright (c) 1997-1999 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: +* +*/ + + +#if !defined(__EIKSECED_H__) +#define __EIKSECED_H__ + +#if !defined(__EIKDEF_H__) +#include +#endif + +#if !defined(__EIKBCTRL_H__) +#include +#endif + +#include + +// FORWARD DECLARATIONS +class TResourceReader; +class CEikSecretEditorExtension; +class MAknsControlContext; + +/** + * A single line text editor which displays an asterisk for every + * character entered. + * + * The editor is suitable for editing confidential information such as + * a password. You can paste to the editor but no other clipboard + * functions are available. + * + * The editor has an associated resource struct SECRETED and control + * factory identifier EEikCtSecretEd. + */ +class CEikSecretEditor : public CEikBorderedControl, public MCoeFepAwareTextEditor, public MCoeFepAwareTextEditor_Extension1 + { +public: + enum { + /** + * The maximum number of characters in the displayed + * text buffer. + */ + EMaxSecEdBufLength = 32, + /** + * Indicates the maximum number of characters which may be entered into + * the editor. + * + * Editors additionally have a maximum length, see SetMaxLength(), + * which must not exceed this value. + */ + EMaxSecEdSecArrayLength = 255 + }; + + /** + * Settable features for Secret Editor. See SetFeature(). + * + * @since S60 5.0 + */ + enum TFeatureId + { + /** Disables VKB. Non-zero (or ETrue) parameter disables VKB, + 0 (or EFalse) enables VKB. When disabled, + editor doesn't request PenInputServer to start VKB */ + EDisablePenInput, + + ELaunchPenInputAutomatic, + + EPartialScreenInput + }; + + +public: + /** + * Default constructor. + * + * This constructs a editor with a border type of + * TGulBorder::ESingleGray. + * + * This function should be used as the first stage in two stage + * construction, followed by a call to either ConstructFromResourceL() or + * SetMaxLength(). + */ + IMPORT_C CEikSecretEditor(); + + /** + * Destructor. + */ + IMPORT_C ~CEikSecretEditor(); + +public: // from CCoeControl + /** + * Second-phase construction from a resource file. + * + * This function reads the number of characters which may be entered by + * the user into the editor from a SECRETED resource. You should call + * either this function or SetMaxLength() before drawing the editor and + * offering key events, otherwise the editor will not accept text input. + * + * @param aReader A resource file reader. + * @panic EIKCTL 13 If the value read from resource is greater than + * EMaxSecEdLength. + */ + IMPORT_C virtual void ConstructFromResourceL(TResourceReader& aReader); + + /** + * Gets the editor's minimum size in pixels. + * + * Overrides CCoeControl::MinimumSize(). + * + * @return The editor's minimum size in pixels. + */ + IMPORT_C virtual TSize MinimumSize(); + + /** + * Responds to key presses. + * + * Overrides CCoeControl::OfferKeyEventL(). + * + * @param aKeyEvent The key event. + * @param aType Not used. + * @return Indicates whether or not the key event was consumed. + */ + IMPORT_C virtual TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType); + + /** + * Gets the list of logical colours used to draw the editor. + * + * Overrides CCoeControl::GetColorUseListL(). + * + * @param aColorUseList On return, the colour list. + */ + IMPORT_C virtual void GetColorUseListL(CArrayFix& aColorUseList) const; // not available before Release 005u + + /** + * Handles a change to the editor's resources. + * + * The types of resources handled are those which are shared across the + * environment, e.g. colours or fonts. + * + * Calls CEikBorderedControl::HandleResourceChange(). + * + * @param aType A message UID value. + */ + IMPORT_C virtual void HandleResourceChange(TInt aType); // not available before Release 005u + + /** + * Gets the editor's input capabilities. + * + * Overrides CCoeControl::InputCapabilities(). + * + * If this function is overrided in a subclass, the subclass should + * obtain this class' InputCapabilities' object provider through + * TCoeInputCapabilities::ObjectProvider() and set that as a part of + * the subclass' InputCapabilities object provider chain to ensure + * maximum functionality. + * + * @return The editor's input capabilities. The ESecretText and + * ENavigation flags are set. + */ + IMPORT_C virtual TCoeInputCapabilities InputCapabilities() const; + + /** + * From @c CCoeControl. + * + * Handles pointer events. + * + * @param aPointerEvent The pointer event. + */ + IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); + + IMPORT_C void FocusChanged( TDrawNow aDrawNow ); + +public: // specific + /** + * Gets the editor's text string. + * + * This may be called from the container class when the model data + * should be updated according to the text contained in the editor. + * + * @param aText On return, the editor's text. This is what is stored in + * memory, not what is displayed. This descriptor must be capable of + * holding the maxlength of the internal buffer. + * + */ + IMPORT_C void GetText(TDes& aText) const; + + /** + * Set the contents of the character buffer. + * + * @param aText The text to be set as the contents of the character buffer. + */ + IMPORT_C virtual void SetText(const TDesC& aText); + + /** + * Set the initial display of the secret editor. + * Calling this routine doesn't affect the actual character buffer. + * + * @param aNumberOfCharacters Must be >=0 and <= EMaxSecEdBufLength. + */ + IMPORT_C virtual void InitializeDisplay(TInt aNumberOfChars); + + /** + * Clears the editor's text string removing any trace of it from memory. + */ + IMPORT_C void Reset(); + + /** + * Set the maximum length of the editor. + * + * This is the maximum number of characters which may be entered by the + * user into the editor. + * + * @param aMaxLength The maximum number of characters which may be + * entered. + * @panic EIKCTL 13 If aMaxLength is greater than EMaxSecEdLength. + * + */ + IMPORT_C void SetMaxLength(TInt aMaxLength); + + /** + * Sets the font that is used to draw the text in this editor. + * + * @param aFont A pointer to a CFont object that is used to draw the + * text in this editor. + */ + IMPORT_C void AknSetFont(const CFont &aFont); + + /** + * Sets the alignment of the editor. + * + * @param aAlign The editor's alignment. + */ + IMPORT_C void AknSetAlignment(const CGraphicsContext::TTextAlign &aAlign); + + /** + * Changes default and current input mode of a secret editor. By default + * input mode in the secret editor is alpha input mode + * (EAknEditorSecretAlphaInputMode). By using this method the default input + * mode can be changed to numeric input mode (EAknEditorNumericInputMode). + * + * @since 2.1 + * @param aInputMode Default input mode in the secret editor. + * Only EAknEditorNumericInputMode and EAknEditorSecretAlphaInputMode + * are supported. + */ + IMPORT_C void SetDefaultInputMode(TInt aInputMode); + + /** + * Returns the current maximum length of the internal buffer. + * + * @return the current maximum length of the internal buffer. + */ + IMPORT_C TInt MaxLength() const; + + /** + * Access method for getting at the buffer without copying out from it. + * + * @return Non-modifiable descriptor reference to the contained buffer. + */ + IMPORT_C const TDesC& Buffer() const; + + /** + * Method to reveal (or hide) the currently input editor contents. + * + * @param aReveal - if ETrue, reveals the contents; if EFalse hides them. + */ + IMPORT_C void RevealSecretText( TBool aReveal ); + + /** + * Method for enabling/disabling special character table from + * the secret editor. By default the SCT is enabled in the secret + * editors. + * ConstructFromResourceL need to be called before this method. + * + * @since 3.2 + * + * @param aEnable Boolean value for enabling or disabling the special + * character table. + */ + IMPORT_C void EnableSCT( TBool aEnable = ETrue ); + + /** + * Set the skin control context to be used with this secret editor. If this + * method is not called, the control context available through MOP (if any) + * is used. If @c NULL control context is specified, no control context is + * used at all. + * + * @since 2.0 + * + * @param aContext The background control context used to draw the + * background of this editor or @c NULL. Ownership is not transferred. + */ + IMPORT_C void SetSkinBackgroundControlContextL( MAknsControlContext* aContext ); + + // for cursor support + TPoint CursorPos(); + IMPORT_C void EnableCursor( TBool aEnable ); + +protected: // inherited + // methods to enable CAknNumericSecretEditor to inherit from CEikSecretEditor + /** + * Appends a character to the editor. + * + * @param aKeyCode The character to append. + */ + IMPORT_C virtual void AppendCharacterL( TInt aKeyCode ); + + /** + * Updates and redraws the editor. + */ + IMPORT_C virtual void Update(); + + void InsertSecretChar(); + + /** + * Responds to changes to the size and position of + * the contents of this control. + * + * Overrides CCoeControl::SizeChanged(). + */ + IMPORT_C void SizeChanged(); + +private: // virtual + IMPORT_C virtual void Draw(const TRect& aRect) const; + +private: // from MCoeFepAwareTextEditor + IMPORT_C void StartFepInlineEditL(const TDesC& aInitialInlineText, TInt aPositionOfInsertionPointInInlineText, TBool aCursorVisibility, const MFormCustomDraw* aCustomDraw, MFepInlineTextFormatRetriever& aInlineTextFormatRetriever, MFepPointerEventHandlerDuringInlineEdit& aPointerEventHandlerDuringInlineEdit); + IMPORT_C void UpdateFepInlineTextL(const TDesC& aNewInlineText, TInt aPositionOfInsertionPointInInlineText); + IMPORT_C void SetInlineEditingCursorVisibilityL(TBool aCursorVisibility); + IMPORT_C void CancelFepInlineEdit(); + IMPORT_C TInt DocumentLengthForFep() const; + IMPORT_C TInt DocumentMaximumLengthForFep() const; + IMPORT_C void SetCursorSelectionForFepL(const TCursorSelection& aCursorSelection); + IMPORT_C void GetCursorSelectionForFep(TCursorSelection& aCursorSelection) const; + IMPORT_C void GetEditorContentForFep(TDes& aEditorContent, TInt aDocumentPosition, TInt aLengthToRetrieve) const; + IMPORT_C void GetFormatForFep(TCharFormat& aFormat, TInt aDocumentPosition) const; + IMPORT_C void GetScreenCoordinatesForFepL(TPoint& aLeftSideOfBaseLine, TInt& aHeight, TInt& aAscent, TInt aDocumentPosition) const; + IMPORT_C void DoCommitFepInlineEditL(); + IMPORT_C MCoeFepAwareTextEditor_Extension1* Extension1(TBool& aSetToTrue); + IMPORT_C void SetStateTransferingOwnershipL(CState* aState, TUid aTypeSafetyUid); + IMPORT_C CState* State(TUid aTypeSafetyUid); // this function does *not* transfer ownership + +private: + void OverflowAlert(); + +private: // from CCoeControl + IMPORT_C void Reserved_1(); + IMPORT_C void Reserved_2(); +private: + /** + * From CAknControl + */ + IMPORT_C void* ExtensionInterface( TUid aInterface ); +private: // from MCoeFepAwareTextEditor + IMPORT_C void MCoeFepAwareTextEditor_Reserved_2(); +private: // from MCoeFepAwareTextEditor_Extension1 + IMPORT_C virtual void MCoeFepAwareTextEditor_Extension1_Reserved_2(); + IMPORT_C virtual void MCoeFepAwareTextEditor_Extension1_Reserved_3(); + IMPORT_C virtual void MCoeFepAwareTextEditor_Extension1_Reserved_4(); + +private: // specific + void InsertChar(); + TInt CharsFitOnEditor() const; + IMPORT_C virtual MCoeFepAwareTextEditor_Extension1::CState* CreateFepStateL(); + void CalculateAscent(); + void ReportUpdate(); + + // for cursor support + void SetCursorFormat(); + void UpdateCursor(); + void InitCRedirectionListenerL(); + +private: + typedef TBuf TSecEdBuf; +protected: + HBufC* iSecCharArr; + TInt iSecPos; + TSecEdBuf iBuf; + TInt iMaxLen; + TInt iCharWidth; + TInt iAscent; + TBool iBufferFull; + +public: // timer methods + void StartTimer(); +private: + static TInt TimerCallback(TAny* aThis); +private: + CPeriodic* iTimer; + const CFont *iFont; + CGraphicsContext::TTextAlign iAlign; + TBool iRevealSecretText; // holds the state of whether text is shown or not + CEikSecretEditorExtension* iExtension; + CState* iFepState; + HBufC* iInlineEditText; + +public: + /** + * Sets the colors for text and background as skin IDs. + * + * @since 3.0 + * @param aAknSkinIDForTextColor ID for text color. + * @param aAknSkinIDForBgColor ID for background color. + */ + IMPORT_C void SetSkinTextColorL(TInt aAknSkinIDForTextColor, TInt aAknSkinIdForBgColor=KErrNotFound); + + /** + * Used for setting various flag-like features to the editor. + * + * @param aFeatureId The feature id, see TFeatureId + * @param aFeatureParam The feature parameter. This is usually + * enabled or disabled. For more info, see + * the feature documentation in TFeatureId. + * @return KErrNone if the feature modification succeeded + * @since S60 5.0 + **/ + IMPORT_C TInt SetFeature( TInt aFeatureId, TInt aFeatureParam ); + + /** + * Used to getting feature statuses. + * + * @param aFeatureId The feature id, see TFeatureId + * @param aFeatureParam On return, the parameter for the feature + * (usually non-zero for an enabled feature + * and zero for disabled) + * @return KErrNone if the feature is supported and fetching its value + * succeeded + * @since S60 5.0 + */ + IMPORT_C TInt GetFeature( TInt aFeatureId, TInt& aFeatureParam ) const; + + /** + * Used for checking if the editor supports a feature. + * For features, see TFeatureId. + * + * @param aFeatureId + * @return ETrue if the feature is supported + * @since S60 5.0 + */ + IMPORT_C TBool SupportsFeature( TInt aFeatureId ) const; + }; + +#endif