textinput/peninputsplititut/inc/peninputsplititutwindow.h
branchRCL_3
changeset 44 ecbabf52600f
child 50 5a1685599b76
equal deleted inserted replaced
43:ebd48d2de13c 44:ecbabf52600f
       
     1 /*
       
     2 * Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0""
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  drop-down list control
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 #ifndef C_SPLITITUTWINDOW_H
       
    20 #define C_SPLITITUTWINDOW_H
       
    21 
       
    22 #include <peninputlayout.h>
       
    23 #include <peninputpluginutils.h>
       
    24 #include <peninputinputcontextfield.h>
       
    25 #include <peninputlayoutmultilineicf.h>
       
    26 #include <peninputlayoutvkb.h>
       
    27 
       
    28 #include "peninputsplititutwindowmanager.h"
       
    29 #include "peninputsplititutpropertysubscriber.h"
       
    30 #include "peninputsplititutlayoutcontext.h"
       
    31 
       
    32 class CSplitItutDataMgr;
       
    33 class CFepCtrlDropdownList;
       
    34 class CAknFepCtrlCommonBgCtrl;
       
    35 class CPeninputSyncBitmapRotator;
       
    36 
       
    37 const TInt KUnavailableID = -1;
       
    38 
       
    39 /**
       
    40  *  class CSplitItutWindow.
       
    41  *
       
    42  *  Split itu-t window class.
       
    43  *
       
    44  *  @lib peninputsplititut.lib
       
    45  *  @since S60 v5.0
       
    46  */
       
    47 class CSplitItutWindow : public CBase
       
    48     {
       
    49 private:
       
    50 
       
    51     enum TButtonType
       
    52         {
       
    53         ERawKeyButton,
       
    54         ECommonButton,
       
    55         ERepeatButtonEx
       
    56         };
       
    57     
       
    58     enum TIndicatorAlign
       
    59     	{
       
    60     	EIndiAlignLeft,
       
    61     	EIndiAlignCenter,
       
    62     	EIndiAlignRight	
       
    63     	};
       
    64 public:
       
    65     /** 
       
    66      * Symbian constructor.
       
    67      *
       
    68      * @since S60 5.0
       
    69      * 
       
    70      * @param aWindowMgr
       
    71      * @param aLayoutOwner
       
    72      * @param aDataMgr
       
    73      * @return Pointer to created CSplitItutWindow object
       
    74      */
       
    75     static CSplitItutWindow* NewL(CSplitItutWindowManager* aWindowMgr, 
       
    76                                     CSplitItutUiLayout* aLayoutOwner,
       
    77                                     CSplitItutDataMgr* aDataMgr);
       
    78 
       
    79     /** 
       
    80      * tandard c++ destructor.
       
    81      *
       
    82      * @since S60 5.0
       
    83      * @return None
       
    84      */
       
    85     ~CSplitItutWindow();
       
    86 
       
    87     
       
    88     /**
       
    89      * Get Icf pointer
       
    90      *
       
    91      * @since S60 v5.0
       
    92      * @return CFepLayoutMultiLineIcf*
       
    93      */
       
    94     inline CFepLayoutMultiLineIcf* Icf();
       
    95     /** 
       
    96      * get pen input type
       
    97      *
       
    98      * @since S60 5.0
       
    99      * @return peninput type
       
   100      */
       
   101     TInt PenInputType(); 
       
   102 
       
   103     /** 
       
   104      * set property
       
   105      *
       
   106      * @since S60 5.0
       
   107      * @param aPropertyName
       
   108      * @param aPropertyValue
       
   109      * @return peninput type
       
   110      */
       
   111     void SetPropertyL( MItutPropertySubscriber::TItutProperty aPropertyName, 
       
   112                        const TDesC& aPropertyValue);
       
   113 
       
   114     /** 
       
   115      * handle size change
       
   116      *
       
   117      * @since S60 5.0
       
   118      * @return TInt
       
   119      */
       
   120     TInt SizeChanged();
       
   121 
       
   122     /** 
       
   123      * get control
       
   124      *
       
   125      * @since S60 5.0
       
   126      * @param aCtrlId
       
   127      * @return return control pointer
       
   128      */
       
   129     CFepUiBaseCtrl* Control(const TInt aCtrlId);
       
   130 
       
   131     /** 
       
   132      * create chinese spec controls
       
   133      *
       
   134      * @since S60 5.0
       
   135      * @return None
       
   136      */
       
   137     void CreateChineseSpecificCtrlsIfNeededL();
       
   138     
       
   139     /** 
       
   140      * get itut keypad
       
   141      *
       
   142      * @since S60 5.0
       
   143      * @return return itut keypad
       
   144      */
       
   145     inline CVirtualKeyboard* ItutKeypad();
       
   146     
       
   147     /** 
       
   148      * construct itut keypad
       
   149      *
       
   150      * @since S60 5.0
       
   151      * @param aResId
       
   152      * @return None
       
   153      */
       
   154     void ConstructItutKeypadFromResourceL(TInt aResId);  
       
   155     
       
   156     /** 
       
   157      * construct icf from resource
       
   158      *
       
   159      * @since S60 5.0
       
   160      * @return None
       
   161      */
       
   162     void ConstructIcfFromResourceL();
       
   163     
       
   164     /** 
       
   165      * handle skin change
       
   166      *
       
   167      * @since S60 5.0
       
   168      * @return None
       
   169      */
       
   170     void OnSkinChange(); 
       
   171     
       
   172     /** 
       
   173      * apply variant laf data
       
   174      *
       
   175      * @since S60 5.0
       
   176      * @param aResolutionChange
       
   177      * @return None
       
   178      */
       
   179     void ApplyVariantLafDataL(TBool aResolutionChange = EFalse);
       
   180          
       
   181     /** 
       
   182      * apply spell variant laf data
       
   183      *
       
   184      * @since S60 5.0
       
   185      * @return None
       
   186      */         
       
   187     void ApplyVariantLafDataForSpellL();     
       
   188                         
       
   189     /** 
       
   190      * construct spell control
       
   191      *
       
   192      * @since S60 5.0
       
   193      * @return None
       
   194      */
       
   195     void ConstructSpellCtrlFromResourceL();
       
   196     
       
   197     /** 
       
   198      * set hard key
       
   199      *
       
   200      * @since S60 5.0
       
   201      * @param aData
       
   202      * @return None
       
   203      */
       
   204     void SetHardKeyOneSymbol(TUint8* aData);
       
   205     
       
   206     /** 
       
   207      * set hard key
       
   208      *
       
   209      * @since S60 5.0
       
   210      * @param aData
       
   211      * @return None
       
   212      */
       
   213     void SetHardKeyOneSymbolL(TUint8* aData);
       
   214     
       
   215     /** 
       
   216      * handle button res
       
   217      *
       
   218      * @since S60 5.0
       
   219      * @param aControlId
       
   220      * @return None
       
   221      */
       
   222     void HandleButtonResOnLangDirChange( TInt aControlId );
       
   223     
       
   224     /** 
       
   225      * handle button res
       
   226      *
       
   227      * @since S60 5.0
       
   228      * @param aControlId
       
   229      * @return None
       
   230      */
       
   231     void HandleButtonResOnLangDirChangeL( TInt aControlId );
       
   232 
       
   233     /** 
       
   234      * Set prompt text
       
   235      *
       
   236      * @since S60 5.0
       
   237      * @param aData text
       
   238      * @return None
       
   239      */
       
   240     void SetPromptTextL( TUint8* aData );
       
   241     
       
   242     /** 
       
   243      * Set bubble
       
   244      *
       
   245      * @since S60 5.0
       
   246      * @return None
       
   247      */    
       
   248     void SetIndiBubble();
       
   249     
       
   250     /** 
       
   251      * Update bubble prompt text
       
   252      *
       
   253      * @since S60 5.0
       
   254      * @param aData text
       
   255      * @return None
       
   256      */
       
   257     void UpdateIndiBubbleL( TUint8* aData );
       
   258     
       
   259     /** 
       
   260      * Set bubble image
       
   261      *
       
   262      * @since S60 5.0
       
   263      * @param aImgID1 image ID1
       
   264      * @param aMaskID1 mask image id1
       
   265      * @param aImgID2 image ID2
       
   266      * @param aMaskID2 mask image id2
       
   267      * @return None
       
   268      */
       
   269     void SetIndiBubbleImageL( const TInt aImgID1,
       
   270 						      const TInt aMaskID1,
       
   271                               const TInt aImgID2,
       
   272                               const TInt aMaskID2 );
       
   273 private:
       
   274     /**
       
   275      * C++ constructor
       
   276      *
       
   277      * @since S60 5.0
       
   278      * @param aWindowMgr
       
   279      * @param aLayoutOwner
       
   280      * @param aDataMgr
       
   281      * @return none
       
   282      */
       
   283     CSplitItutWindow(CSplitItutWindowManager* aWindowMgr, 
       
   284                        CSplitItutUiLayout* aLayoutOwner,
       
   285                        CSplitItutDataMgr* aDataMgr);
       
   286                        
       
   287     /**
       
   288      * Symbian second-phase constructor
       
   289      *
       
   290      * @since S60 5.0
       
   291      * @return none
       
   292      */
       
   293     void ConstructL(); 
       
   294 
       
   295     /**
       
   296      * create itut keypad
       
   297      *
       
   298      * @since S60 5.0
       
   299      * @return none
       
   300      */
       
   301     void CreateItutKeypadL();
       
   302 
       
   303     /**
       
   304      * create layout icons
       
   305      *
       
   306      * @since S60 5.0
       
   307      * @param aMajorSkinId
       
   308      * @param aMinorSkinId
       
   309      * @param aBmpFileName
       
   310      * @param aBmpId
       
   311      * @param aMaskBmpId
       
   312      * @param aBmp
       
   313      * @param aMaskBmp
       
   314      * @param aSize
       
   315      * @return none
       
   316      */
       
   317     void CreateLayoutIconL(TInt aMajorSkinId,
       
   318                            TInt aMinorSkinId,
       
   319                            const TDesC& aBmpFileName,
       
   320                            TInt aBmpId,
       
   321                            TInt aMaskBmpId,
       
   322                            CFbsBitmap*& aBmp,
       
   323                            CFbsBitmap*& aMaskBmp,
       
   324                            TSize aSize);
       
   325                            
       
   326 
       
   327     /**
       
   328      * create virtual keys
       
   329      *
       
   330      * @since S60 5.0
       
   331      * @param aReader
       
   332      * @param aKeyRect
       
   333      * @return return virtual key
       
   334      */
       
   335     CVirtualKey* CreateKeyL(TResourceReader& aReader,
       
   336                             TRect aKeyRect);
       
   337 
       
   338     /**
       
   339      * create virtual keys
       
   340      *
       
   341      * @since S60 5.0
       
   342      * @param aReader
       
   343      * @param aKeyRect
       
   344      * @return None
       
   345      */
       
   346     void ChangeVirtualKeyInfoL(TResourceReader& aReader,
       
   347                               CVirtualKey* aKey);
       
   348 
       
   349     /**
       
   350      * create all buttons
       
   351      *
       
   352      * @since S60 5.0
       
   353      * @return None
       
   354      */
       
   355     void CreateAllButtonL();
       
   356     
       
   357     /**
       
   358      * create back ground control
       
   359      *
       
   360      * @since S60 5.0
       
   361      * @param aReader
       
   362      * @param aKeyRect
       
   363      * @return None
       
   364      */
       
   365     void CreateBackGroundControlL();
       
   366 
       
   367     /**
       
   368      * create dropdown list
       
   369      *
       
   370      * @since S60 5.0
       
   371      * @param aReader
       
   372      * @param aKeyRect
       
   373      * @return None
       
   374      */
       
   375     void CreateDropdownListL();
       
   376 
       
   377     /**
       
   378      * create virtual keys
       
   379      *
       
   380      * @since S60 5.0
       
   381      * @param aCtrl
       
   382      * @param aRectIdx
       
   383      * @return None
       
   384      */
       
   385     void SetCtrlRect(CFepUiBaseCtrl* aCtrl, TInt aRectIdx, const TBool aOffset = EFalse);
       
   386     
       
   387     /**
       
   388      * resize candidate list
       
   389      *
       
   390      * @since S60 5.0
       
   391      * @param aList
       
   392      * @param aLTPosIdx
       
   393      * @param aExpandable
       
   394      * @return None
       
   395      */
       
   396     void ResizeCandidateList( CFepCtrlDropdownList* aList, 
       
   397                               TInt aLTPosIdx, 
       
   398                               TBool aExpandable);
       
   399     
       
   400     /**
       
   401      * Calculate frame rects
       
   402      *
       
   403      * @since S60 5.0
       
   404      * @param aRect
       
   405      * @param aOuterRect
       
   406      * @param aInnerRect
       
   407      * @return None
       
   408      */
       
   409 	void CalculateFrameRects(const TRect aRect,
       
   410 							 TRect& aOuterRect, 
       
   411 						     TRect& aInnerRect);
       
   412 						     
       
   413     /**
       
   414      * create rawkey buttons
       
   415      *
       
   416      * @since S60 5.0
       
   417      * @param aControlId
       
   418      * @param aCommand
       
   419      * @return raw key button
       
   420      */
       
   421     CAknFepCtrlCommonButton* CreateRawKeyButtonL( const TInt aControlId,
       
   422                                                   const TInt aCommand);
       
   423 
       
   424     /**
       
   425      * get common button control
       
   426      *
       
   427      * @since S60 5.0
       
   428      * @param aControlId
       
   429      * @return common button control
       
   430      */
       
   431     CAknFepCtrlCommonButton* CommonButtonControl(const TInt aControlId);
       
   432 
       
   433     /**
       
   434      * create repeat buttons
       
   435      *
       
   436      * @since S60 5.0
       
   437      * @param aControlId
       
   438      * @param aCommand
       
   439      * @return repeat button
       
   440      */
       
   441     CAknFepCtrlCommonButton* CreateRepeatButtonL( const TInt aControlId,
       
   442                                                   const TInt aCommand);
       
   443                                         
       
   444     /**
       
   445      * create common buttons
       
   446      *
       
   447      * @since S60 5.0
       
   448      * @param aControlId
       
   449      * @return common button
       
   450      */
       
   451     CAknFepCtrlCommonButton* CreateCommonButtonL(const TInt aControlId);
       
   452                                         
       
   453     /**
       
   454      * create buttons
       
   455      *
       
   456      * @since S60 5.0
       
   457      * @param aType
       
   458      * @param aControlId
       
   459      * @param aRectId
       
   460      * @param aInnerRectId
       
   461      * @param aResourceId
       
   462      * @param aCommand
       
   463      * @return button
       
   464      */
       
   465     CFepUiBaseCtrl* CreateButtonL(TButtonType aType,
       
   466                                   const TInt aControlId,
       
   467                                   const TInt aRectId,
       
   468                                   const TInt aInnerRectId,
       
   469                                   const TInt aResourceId,
       
   470                                   const TInt aCommand = KUnavailableID);
       
   471                                   
       
   472     /**
       
   473      * Create ICF for spell mode
       
   474      *
       
   475      * @since S60 5.0
       
   476      * @return None
       
   477      */
       
   478     void CreateICFL();
       
   479      
       
   480     /**
       
   481      * Check control size change
       
   482      *
       
   483      * @since S60 5.0
       
   484      * @param aRect
       
   485      * @param aControlId
       
   486      * @param aInnerRect
       
   487      * @param aIsReloadImages
       
   488      * @return TBool
       
   489      */
       
   490     TBool ControlSizeChanged(const TInt aControlId, 
       
   491                             const TInt aRect, 
       
   492                             const TInt aInnerRect, 
       
   493                             TBool aIsReloadImages);
       
   494                                         
       
   495     /**
       
   496      * add control
       
   497      *
       
   498      * @since S60 5.0
       
   499      * @param aControl
       
   500      * @return None
       
   501      */
       
   502     void AddControlL(CFepUiBaseCtrl* aControl);
       
   503     
       
   504     /**
       
   505      * is chinese mode
       
   506      *
       
   507      * @since S60 5.0
       
   508      * @return TBool
       
   509      */
       
   510     TBool IsChineseMode();
       
   511     
       
   512     /**
       
   513      * construct key image
       
   514      *
       
   515      * @since S60 5.0
       
   516      * @param aKeyImageResID
       
   517      * @return None
       
   518      */
       
   519     void ConstructKeyImageFromResourceL( TInt aKeyImageResID );
       
   520   
       
   521     /**
       
   522      * construct key image
       
   523      *
       
   524      * @since S60 5.0
       
   525      * @param aKey
       
   526      * @param aMapData
       
   527      * @return None
       
   528      */
       
   529     void SetUnicodesForHardKey1(CVirtualKey* aKey, const TDesC& aMapData);
       
   530     
       
   531     /**
       
   532      * construct key image
       
   533      *
       
   534      * @since S60 5.0
       
   535      * @param aKeyImageResID
       
   536      * @return None
       
   537      */
       
   538     void SetUnicodesForHardKey1L(CVirtualKey* aKey, const TDesC& aMapData);
       
   539     
       
   540     /**
       
   541      * Indicator rect
       
   542      *
       
   543      * @since S60 5.0
       
   544      * @param aBoundRect
       
   545      * @param aRealRect1
       
   546      * @param aRealRect2
       
   547      * @param aAlign
       
   548      * @return None
       
   549      */ 
       
   550     void CalIndicatorRect( const TRect& aBoundRect,
       
   551                            TRect& aRealRect1,
       
   552                            TRect& aRealRect2,
       
   553                            TIndicatorAlign aAlign );
       
   554 private:
       
   555     /**
       
   556      * ITUT keypad.
       
   557      * own
       
   558      */
       
   559     CVirtualKeyboard* iStandardItutKp;
       
   560 
       
   561     /**
       
   562      * spell candidate list.
       
   563      * own
       
   564      */
       
   565     CFepCtrlDropdownList* iSpellCandsList;
       
   566     
       
   567     /**
       
   568      * candidate list.
       
   569      * own
       
   570      */
       
   571     CFepCtrlDropdownList* iCandsList;
       
   572     
       
   573     /**
       
   574      * Punc candidate list.
       
   575      * own
       
   576      */
       
   577     CFepCtrlDropdownList* iPuncCandsList;
       
   578 
       
   579     /**
       
   580      * data manager.
       
   581      * not own
       
   582      */
       
   583     CSplitItutDataMgr* iDataMgr;
       
   584 
       
   585     /**
       
   586      * init chinese control flag.
       
   587      */
       
   588     TBool iChnCtrlInited;   
       
   589  
       
   590     /**
       
   591      * layout owner.
       
   592      * not own
       
   593      */
       
   594     CSplitItutUiLayout* iLayoutOwner;
       
   595     
       
   596     /**
       
   597      * window manager
       
   598      * not own
       
   599      */
       
   600     CSplitItutWindowManager* iWindowMgr;
       
   601     
       
   602     /**
       
   603      * Background control
       
   604      * Own
       
   605      */
       
   606     CAknFepCtrlCommonBgCtrl* iBackgroundCtrl;
       
   607     
       
   608     /**
       
   609      * Spell candidate list
       
   610      * Own
       
   611      */
       
   612     CFepInputContextField* iSpell;
       
   613     
       
   614     /**
       
   615      * bitmap rotator
       
   616      * Own
       
   617      */
       
   618 	CPeninputSyncBitmapRotator* iBmpRotator;
       
   619 	
       
   620     /**
       
   621      * symbol data for chinese
       
   622      */
       
   623     TFepSymbolOfHardwareOne iSymbolData;
       
   624     
       
   625     TSize iIndicatorSize;
       
   626     TSize iIndicatorTextSize;
       
   627     TBool iImDimensionSet;
       
   628     CFepLayoutMultiLineIcf* iICF;
       
   629     };
       
   630    
       
   631 // ---------------------------------------------------------------------------
       
   632 // CSplitItutWindow::ItutKeypad
       
   633 // ---------------------------------------------------------------------------
       
   634 //
       
   635 inline CVirtualKeyboard* CSplitItutWindow::ItutKeypad()
       
   636     {
       
   637     return iStandardItutKp;    
       
   638     }
       
   639   
       
   640 // ---------------------------------------------------------------------------
       
   641 // CSplitItutWindow::Icf
       
   642 // ---------------------------------------------------------------------------
       
   643 //
       
   644 inline CFepLayoutMultiLineIcf* CSplitItutWindow::Icf()
       
   645     {
       
   646     return iICF;   
       
   647     }
       
   648 #endif //C_SPLITITUTWINDOW_H