diff -r ae942d28ec0e -r 2455ef1f5bbc javauis/lcdui_akn/lcdui/inc/CMIDTextBoxQueryDialog.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/lcdui_akn/lcdui/inc/CMIDTextBoxQueryDialog.h Wed Sep 01 12:33:18 2010 +0100 @@ -0,0 +1,421 @@ +/* +* Copyright (c) 2008 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: Pop-up Textbox dialog implementation for S60 +* +*/ + + +#ifndef CMIDTEXTBOXQUERYDIALOG_H +#define CMIDTEXTBOXQUERYDIALOG_H + +// INCLUDES + +#include +#include +#include "CMIDDisplayable.h" + +#include +// for MCoeCaptionRetrieverForFep +#include + +#include "CMIDEdwinUtils.h" + +// CLASS DECLARATION +NONSHARABLE_CLASS(CMIDTextBoxQueryDialog) + : public CAknTextQueryDialog, MMIDTextBox, public MMIDCommandObserver, + public MEikEdwinObserver, public MCoeCaptionRetrieverForFep +{ + +public: + static CMIDTextBoxQueryDialog* NewLC(TInt aConstraints, + TDes& aResult, + TInt aMaxSize, + CMIDDisplayable* aDisplayable, + const TDesC& aText); + ~CMIDTextBoxQueryDialog(); + +private: + void ConstructL(TInt aConstraints, + TInt aMaxSize, + CMIDDisplayable* aDisplayable, + const TDesC& aText); + + CMIDTextBoxQueryDialog(TDes& aResult); + +public: + // + //From CAknTextQueryDialog + // + TInt RouseSleepingDialog(); + void ExitSleepingDialog(); + void TryExitL(TInt aButtonId); + + // + // From MMIDCommandObserver + // + TBool ProcessCommandL(CMIDCommand* aCommand); + + // + // From MMIDTextBox + // + /** + * Deletes editor's text. + * + * @param aOffset the beginning of the region to be deleted + * @param aLength the number of characters to be deleted + * + * @since S60 5.0 + */ + void DeleteTextL(TInt aOffset,TInt aLength); + + /** + * Sets the contents of the editor in dialog, replacing the previous contents. + * + * @param aText the new value of the editor + * + * @since S60 5.0 + */ + void SetTextL(const TDesC& aText); + + /** + * Inserts a string into the contents of the editor. + * + * @param aText the text to be inserted in the editor + * @param aPosition the position at which insertion is to occur + * + * @since S60 5.0 + */ + void InsertTextL(const TDesC& aText,TInt aPosition); + + /** + * Sets constraints for the text editor + * + * @param aConstraints new input constraints + */ + void SetConstraintsL(TUint aConstraints); + + /** + * Sets the maximum size (number of characters) that can be contained in editor. + * + * @param aSize the new maximum size + * + * @return TInt Indicates assigned maximum capacity - may be smaller than requested. + * + * @since S60 5.0 + */ + TInt SetMaxSizeL(TInt aSize); + + /** + * Returns the maximum size (number of characters) that can be stored in editor. + * + * @return TInt the maximum size in characters + * + * @since S60 5.0 + */ + TInt GetMaxSize(); + + /** + * Gets the number of characters that are currently stored in editor. + * + * @return TInt the number of characters + * + * @since S60 5.0 + */ + TInt Size(); + + /** + * Gets the current input position of the editor. + * + * @return TInt the current caret position, 0 if at the beginning + * + * @since S60 5.0 + */ + TInt GetCaretPosition(); + + /** + * Gets a new buffer containing a copy of the whole text of the editor. + * Note: Caller is responsible of deleting the buffer. + * + * @return HBufC* A new copy of the text. + * + * @since S60 5.0 + */ + HBufC* GetTextL(); + + /** + * Sets initial input mode for the editor. + * + * @param aCharacterSubset a string naming a Unicode character subset + * + * @since S60 5.0 + */ + void SetInitialInputModeL(const TDesC& aCharacterSubset); + + /** + * Sets prompt (title) for dialog. Accepts null, which indicates empty string. + * + * @param aString new title + * + * @since S60 5.0 + */ + void SetTitleL(const TDesC* aString); + + /** + * Moves cursor position of the editor. + * + * @param aString new position, if bigger than editor max size then + * cursor is set at the end of the editor. + * + * @since S60 5.0 + */ + void SetCursorPositionL(TInt aPosition); + + /** + * Size of the dialog. + * + * @return TSize Size of the dialog. + * + * @since S60 5.0 + */ + TSize ContentSize() const; + + // From MMIDComponent + // + inline void Dispose(); + + // + // From CCoeControl + void FocusChanged(TDrawNow aDrawNow); + void MakeVisible(TBool aVisible); + void SizeChanged(); + TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType); + void HandleResourceChange(TInt aType); +#ifdef RD_SCALABLE_UI_V2 + void HandlePointerEventL(const TPointerEvent &aPointerEvent); +#endif // RD_SCALABLE_UI_V2 + TCoeInputCapabilities InputCapabilities() const; + + // From MEikEdwinObserver + void HandleEdwinEventL(CEikEdwin* aEdwin, TEdwinEvent aEventType); + + // From MCoeCaptionRetrieverForFep + void GetCaptionForFep(TDes& aCaption) const; + + /** + * Set text input modifiers according to TextBox constraints. + * + * @since S60 5.0 + */ + void ProcessModifiers(); + + /** + * Either makes dialog visible or hides the dialog. + * + * @param TBool Show or hide the dialog. + * + * @since S60 5.0 + */ + void ShowL(TBool aShow); + + /** + * Tries to add replace text in editor when conmstraints have been changed. + * Should be called after changing constraints. + * + * @param TBool Show or hide the dialog. + * + * @since S60 5.0 + */ + void SetTextWithNewConstraintsL(HBufC* aText); + + /** + * Initializes the editor + * + * @since S60 5.0 + */ + void SetEditorL(); + + /** + * Returns TextBox current intput constraints + * + * @param TInt input constraints + * + * @since S60 5.0 + */ + TInt Constraints(); + + /** + * Returns whether dialog is currently visible on the display + * + * @param TBool iShowing + * + * @since S60 5.0 + */ + TBool Showing(); + +protected: + // + //From CAknTextQueryDialog + // + void UpdateLeftSoftKeyL(); + TBool OkToExitL(TInt aButtonId); + void PreLayoutDynInitL(); + +private: + /** + * Sets the input constraints of the editor. + * + * @since S60 5.0 + */ + void SetFEPModeAndCharFormat(); + + void UpdateCbasL(); + + TBool IsNumberConversionNeeded(); + + void HandleMinusCharEventL(MEikEdwinObserver::TEdwinEvent aEventType); + + /** + * Prevents changes that would result in an illegal string + * + * @param TEdwinEvent aEventType + */ + void HandleTextUpdateL(TEdwinEvent aEventType); + + TPtrC Read() const; + + void CreateNonMidletCommandsL(); + void AddCommandToEdwinL(TInt aCommandResIdShort, + TInt aCommandResIdLong, + TInt aCommandId); + void AddCommandToEdwinL(TInt aCommandResId, TInt aCommandId); + void RemoveNonMidletCommands(); + void AddCommandToEdwinL(MMIDCommand& aCommand); + void CreatePhoneCallL(); + + void CreatePasswordTextL(); + + /** + * Updates editor's input mode. Must be called after changing input modes + * and after the dialog is set visible. + * + * @since S60 5.0 + */ + void UpdateInitialInputModes(); + + TTypeUid::Ptr MopSupplyObject(TTypeUid aId); + + void UpdateScrollBarPositionL(); + +private: + inline TUint GetConstraints() const; + inline TBool IsConstraintSet(TUint aConstraints); + +private: + /** + * Pointer to CMIDEdwinUtils + */ + CMIDEdwinUtils* iEdwinUtils; + + /** + * Pointer to the editor + */ + CEikEdwin* iEditor; + + /** + * Boolean value indicating whether the dialog is currently visible or not. + */ + TBool iShowing; + + /** + * Maximum size (number of characters) of the editor. + */ + TInt iMaxSize; + + /** + * Text input constraints + */ + TUint iConstraints; + + /** + * Pointer to Displayable + */ + CMIDDisplayable* iDisplayable; + + /** + * Text case (abc/ABC/etc.) to be set when coming visible + */ + TInt iInitialCurrentCase; + + /** + * Input mode (text/numeric) to be set when coming visible + */ + TInt iInitialCurrentInputMode; + + /** + * Input mode language to be set when coming visible + */ + TLanguage iInitialCurrentLanguage; + + /** + * Stores keycode of the current key; used in multitap transaction exceeding editor limit. + */ + TInt iThisMultitapKey; + + /** + * stores keycode of the last key; used in multitap transaction exceeding editor limit + */ + TInt iLastMultitapKey; + + /** + * Decimal separator character based on locale + */ + TChar iDecimalSeparator; + + /** + * Needed when accessing to phonebook + */ + CMIDAiwPbk2Client* iAiwPbkClient; + + /** + * Boolean value indicating whether key events are pending. + */ + TBool iKeyEventsPending; + /** + * Used key event + */ + const TKeyEvent* iusedKeyEvent; + + /** + * Used when ConstraintsValidForText decide + * whatever to test text using stric options or not + */ + TBool iStrict; +}; + + +inline void CMIDTextBoxQueryDialog::Dispose() +{ + delete this; +} + +inline TUint CMIDTextBoxQueryDialog::GetConstraints() const +{ + return iConstraints; +} + +inline TBool CMIDTextBoxQueryDialog::IsConstraintSet(TUint aConstraints) +{ + return (iConstraints & MMIDTextField::EConstraintMask) == aConstraints ; +} +#endif // CMIDTEXTBOXQUERYDIALOG_H