javauis/lcdui_akn/lcdui/inc/CMIDTextBoxQueryDialog.h
branchRCL_3
changeset 19 04becd199f91
child 23 98ccebc37403
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/lcdui_akn/lcdui/inc/CMIDTextBoxQueryDialog.h	Tue Apr 27 16:30:29 2010 +0300
@@ -0,0 +1,404 @@
+/*
+* 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 <lcdui.h>
+#include <AknQueryDialog.h>
+#include "CMIDDisplayable.h"
+
+#include <eikedwob.h>
+// for MCoeCaptionRetrieverForFep
+#include <fepbase.h>
+
+#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);
+#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);
+
+private:
+    /**
+     * Sets the input constraints of the editor.
+     *
+     * @since S60 5.0
+     */
+    void SetFEPModeAndCharFormat();
+
+    void UpdateCbasL();
+
+    TBool IsNumberConversionNeeded();
+
+    void HandleMinusCharEventL(MEikEdwinObserver::TEdwinEvent aEventType);
+    TPtrC Read() const;
+
+    void CreateNonMidletCommandsL();
+    void AddCommandToArrayL(RPointerArray<MMIDCommand>& aArray,
+                            TInt aCommandResIdShort, TInt aCommandResIdLong, TInt aCommandId);
+    void AddCommandToArrayL(RPointerArray<MMIDCommand>& aArray,
+                            TInt aCommandResId, TInt aCommandId);
+    void RemoveNonMidletCommands();
+    void AddCommandsToEdwinL(RPointerArray<MMIDCommand>& aArray);
+    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);
+
+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;
+};
+
+
+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