--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/classicui_pub/editors_api/inc/EIKSECED.H Wed Sep 01 12:16:19 2010 +0100
@@ -0,0 +1,457 @@
+/*
+* 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 <eikdef.h>
+#endif
+
+#if !defined(__EIKBCTRL_H__)
+#include <eikbctrl.h>
+#endif
+
+#include <fepbase.h>
+
+// 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,
+ ELockQuerySCT
+ };
+
+
+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<TCoeColorUse>& 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<EMaxSecEdBufLength> 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