textinput/peninputsplititut/inc/peninputsplititutdatamgr.h
changeset 0 eb1f2e154e89
child 3 f5a1e66df979
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/textinput/peninputsplititut/inc/peninputsplititutdatamgr.h	Tue Feb 02 01:02:04 2010 +0200
@@ -0,0 +1,603 @@
+/*
+* Copyright (c) 2002-2005 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:  split itut data manager
+*
+*/
+
+
+#ifndef C_SPLITITUTDATAMGR_H
+#define C_SPLITITUTDATAMGR_H
+
+#include <e32base.h>
+#include <ptidefs.h>
+#include <aknlayout2def.h>
+
+#include "peninputsplititutpropertysubscriber.h"
+#include "peninputsplititutdata.h"
+
+class CPtiEngine;
+class CFont;
+class MSplitItutLayoutContext;
+class CSplitItutWindowManager;
+
+extern const TInt KInvalidResId;
+extern const TInt KMaxPredictCandCnt;
+extern const TInt KInvalidImMode;
+const TInt KMaxFileLength = 80;
+
+/**
+* Class  CSplitItutDataMgr
+*  
+* Wrapper of L&F data.
+*
+* @lib peninputsplititut.lib
+* @since S60 v5.0
+*/
+
+class CSplitItutDataMgr : public CBase
+    {  
+public:
+    /**
+     * Symbian constructor.
+     *
+     * @since S60 v5.0
+     * @return Pointer to created object.
+     */ 
+    static CSplitItutDataMgr* NewL( MSplitItutLayoutContext* aLayoutContext, 
+                                    CPtiEngine* aPtiEngine );
+
+    /**
+     * standard c++ destructor.
+     *
+     * @since S60 v5.0
+     * @return None
+     */ 
+    ~CSplitItutDataMgr();
+
+    /**
+     * Add subscriber
+     *
+     * @since S60 v5.0
+     * @param aSubscriber sub scriber
+     * @return None
+     */
+    void AddSubscriber(MItutPropertySubscriber* aSubscriber);
+
+    /**
+     * read laf data.
+     *
+     * @since S60 v5.0
+     * @return None
+     */
+    void ReadLafInfo();
+
+    /**
+     * Set input language
+     *
+     * @since S60 v5.0
+     * @param aLanguage input language
+     * @return None
+     */
+    void SetLanguageL(TInt aLanguage);
+
+    /**
+     * read laf data.
+     *
+     * @since S60 v5.0
+     * @param aMode input mode  
+     * @return None
+     */
+    void SetInputModeL(TInt aMode);
+
+    /**
+     * Set input case
+     *
+     * @since S60 v5.0
+     * @param aCase input case  
+     * @return None
+     */
+    void SetCase(TInt aCase);
+
+    /**
+     * Request data
+     *
+     * @since S60 v5.0
+     * @param aDataType data type 
+     * @return date
+     */
+    TAny* RequestData(TInt aDataType);
+
+    /**
+     * Get ptiengine pointer
+     *
+     * @since S60 v5.0
+     * @return ptiengine
+     */
+    inline CPtiEngine* PtiEngine();
+
+    /**
+     * Notify change control layout
+     *
+     * @since S60 v5.0
+     * @param aPropertyName property name
+     * @param aCtrlResId control id  
+     * @return None
+     */
+    void NotifyChangeControlLayout(MItutPropertySubscriber::TItutProperty aPropertyName, 
+                                   TInt aCtrlResId);
+
+    /**
+     * Get input language
+     *
+     * @since S60 v5.0
+     * @return language id
+     */
+    inline TInt InputLanguage();
+    
+    /**
+     * Is valid language
+     *
+     * @since S60 v5.0
+     * @param aLanguage language id    
+     * @return TBool
+     */
+	inline TBool IsValidLanguage(TInt aLanguage);
+	
+    /**
+     * Get input mode
+     *
+     * @since S60 v5.0
+     * @return input mode
+     */
+    inline TInt InputMode();
+    
+    /**
+     * Get text case
+     *
+     * @since S60 v5.0
+     * @return text case
+     */
+    inline TInt TextCase();
+
+    /**
+     * Is exist plus char
+     *
+     * @since S60 v5.0
+     * @return TBool
+     */
+    TBool IsExistPlusChar();
+    
+    /**
+     * Set latin only flag
+     *
+     * @since S60 v5.0
+     * @param aLatinOnly latin only flag
+     * @return TBool
+     */
+    inline void SetLatinOnly( TBool aLatinOnly );
+
+    /**
+     * Set update flag
+     *
+     * @since S60 v5.0
+     * @param aNeedUpdate need update flag
+     * @return None
+     */
+	void SetUpdate(TBool aNeedUpdate);
+
+    /**
+     * get update flag
+     *
+     * @since S60 v5.0
+     * @return update flag
+     */
+	TBool IsUpdate() const;
+
+//    TInt GetNextPageCandidateL(RPointerArray<HBufC>& aList);
+
+//    TBool NextPageCandidateExist();
+
+//    void ClearChnCandidates(TInt aCmd);
+
+    /**
+     * get keypad resource id
+     *
+     * @since S60 v5.0
+     * @return keypad resource id
+     */
+    TInt KeypadResourceId();
+    
+    /**
+     * Is chinese
+     *
+     * @since S60 v5.0
+     * @return TBool
+     */
+    TBool IsChinese();
+    
+    /**
+     * Is Hindi
+     *
+     * @since S60 v5.0
+     * @return TBool
+     */
+    TBool IsHindi();
+    
+    /**
+     * Is Thai
+     *
+     * @since S60 v5.0
+     * @return TBool
+     */
+    TBool IsThai();
+
+    /**
+     * Is right to left language
+     *
+     * @since S60 v5.0
+     * @return TBool
+     */
+    TBool IsRtoLLanguage();
+    
+    /**
+     * Is right to left language
+     *
+     * @since S60 v5.0
+     * @param aLanguage language id
+     * @return TBool
+     */
+    TBool IsRtoLLanguage( TInt aLanguage );
+    
+    /**
+     * Is language direction switch
+     *
+     * @since S60 v5.0
+     * @return TBool
+     */
+    TBool IsLangDirectionSwitch() const;
+    
+    /**
+     * set language direction switch
+     *
+     * @since S60 v5.0
+     * @param aIsChange change flag
+     * @return None
+     */
+    inline void SetLangDirectionSwitch( TBool aIsChange );
+    
+    /**
+     * set numeric keymap
+     *
+     * @since S60 v5.0
+     * @param aKeymap
+     * @return None
+     */
+    void SetNumericKeymap( const TInt aKeymap );
+    
+    /**
+     * set numeric keymap data
+     *
+     * @since S60 v5.0
+     * @param aKeymapData
+     * @return None
+     */
+    void SetNumericKeymapData( TInt* aKeymapData );
+    
+    /**
+     * is char flag changed
+     *
+     * @since S60 v5.0
+     * @return TBool
+     */
+    inline TBool IsCharFlagChanged();
+    
+    /**
+     * set numeric only
+     *
+     * @since S60 v5.0
+     * @param aIsNumberOnly
+     * @return None
+     */
+    inline void SetNumericOnly( TBool aIsNumberOnly );
+    
+    /**
+     * get numeric only flag
+     *
+     * @since S60 v5.0
+     * @return TBool
+     */
+    inline TBool IsNumericOnly() const;
+	
+	TRect iShiftIconRect;
+	
+private:
+    /**
+     * C++ constructor
+     *
+     * @since S60 v5.0
+     * @return None
+     */
+    CSplitItutDataMgr(MSplitItutLayoutContext* aLayoutContext, CPtiEngine* aPtiEngine );
+
+    /**
+     * Symbian second-phase constructor
+     *
+     * @since S60 v5.0
+     * @return None
+     */
+    void ConstructL();
+
+    /**
+     * Notify subscriber
+     * 
+     * @since S60 v5.0
+     * @param aPropertyName
+     * @param aValue
+     * @return None
+     */
+    void NotifySubscriber( MItutPropertySubscriber::TItutProperty aPropertyName, 
+                           const TDesC& aValue);
+
+    /**
+     * Get config resource file name
+     * 
+     * @since S60 v5.0
+     * @param aLang Language id
+     * @return None
+     */
+    TInt GetConfigResFileName(TInt aLang);
+    
+    /**
+     * Find language in an array
+     * 
+     * @since S60 v5.0
+     * @param aArray
+     * @param aEndIdx
+     * @param aLang
+     * @return index in the array
+     */
+    TInt FindLang(const TInt* aArray, TInt aEndIdx, TInt aLang);
+    
+    /**
+     * get resource file string
+     * 
+     * @since S60 v5.0
+     * @param aIndex
+     * @return resource file
+     */
+    static const TDesC& ResFileExtByScriptIdx(const TScriptExtIndex aIndex);
+   
+    /**
+     * Get chinese keypad resource id
+     * 
+     * @since S60 v5.0
+     * @return resource id
+     */
+    TInt ChineseKeypadResourceId();
+    
+    /**
+     * Get chinese keypad resource id
+     * 
+     * @since S60 v5.0
+     * @return resource id
+     */
+    TInt HindiKeypadResourceId();
+    
+private: // data member
+    RPointerArray<MItutPropertySubscriber> iSubscriberList;
+    CPtiEngine* iPtiEngine;
+    TInt iLanguage;
+    TInt iInputMode;
+    TInt iCase;
+
+    TSize iScreenSize;
+
+    // offset of layout, compare to screen
+    TPoint iLayoutOffset;
+    TRect iLayoutRect;
+    TRect iBackgroundRect;
+
+    TRect iBackspaceRect;
+    TRect iBackspaceInnerRect;
+    TRect iBackspaceCnRect;
+    TRect iBackspaceInnerCnRect;
+    TRect iArrowLeftRect;
+    TRect iArrowLeftInnerRect;
+    TRect iArrowLeftCnRect;
+    TRect iArrowLeftInnerCnRect;
+    TRect iArrowRightRect;
+    TRect iArrowRightInnerRect;
+    TRect iArrowRightCnRect;
+    TRect iArrowRightInnerCnRect;
+    TRect iArrowUpRect;
+    TRect iArrowDownRect;  
+    TRect iArrowUpInnerRect;
+    TRect iArrowDownInnerRect;
+
+    TRect iKeypadRect;  
+    TRect iKeypadRectCn;
+    TRect iKeypadRectQuery;
+    RArray<TRect> iKeypadCellRects;
+//    RArray<TRect> iKeypadCellRectsCn;
+	
+    // properties of candidate list
+    /*
+    TInt iCandsUnitWidth;
+    TInt iCandsUnitHeight;
+    TInt iCandsHorizontalMargin;
+    TInt iCandsVerticalMargin;
+    TInt iCandsNaviWidth;
+    TInt iCandsSpinBtnHeight;    
+    TPoint iCandsSpellLTPos;
+    TPoint iCandsLTPos;
+    TPoint iCandsPuncLTPos;
+    CFont* iCandsFont;
+    TInt iCandsTextMargin;
+    TRgb iCandsTextColor;    
+    */
+
+    TAknTextLineLayout iVkAlphaText1;
+    TAknTextLineLayout iVkAlphaText2;
+    TAknTextLineLayout iVkAlphaText3;
+    TAknTextLineLayout iVkNumText;
+
+    // resource id for generic itut resource file
+    TInt iCommonResId;
+    TInt iConfigResId;
+
+    TInt iAvkonResId;
+    
+    // not own
+    MSplitItutLayoutContext* iLayoutContext;
+
+    // chinese related candidates
+//    RPointerArray<HBufC> iCandidates;
+//    RPointerArray<HBufC> iPuncCandidates;
+
+    TRect iOptionsRect;
+    TRect iCloseRect;
+    TRect iCloseInnerRect;
+    TRect iOptionInnerRect;
+    TRect iOptionsRectCn;
+    TRect iCloseRectCn;    
+    TRect iCloseInnerRectCn;
+    TRect iOptionInnerRectCn;
+    
+    // preview bubble
+    TRect iPreviewWndRect;
+    TRect iPreviewWndInnerRect;
+    CFont* iBubbleFont;
+	TAknTextLineLayout iPreviewWndText;
+
+    TBuf<KMaxFileLength> iResourceFilename;
+    TBool iLangCaseSensitive;
+    TInt iCurrentScriptIdx;
+
+    TAknTextLineLayout iBtnTextFormat;
+    TAknTextLineLayout iBtnTextFormat1; 
+    
+
+    TBool iNeedUpdate;
+    TBool iLatinOnly;
+	
+	TBool iIsLangDirectionSwitch;    
+	
+	TInt iNumericKeymap;
+	HBufC* iNumericKeymapData;
+	TBool iExistPlusChar;
+	TBool iPlusCharFlagChanged;
+	TBool iNumberOnly;
+
+    };
+
+// ---------------------------------------------------------------------------
+// CSplitItutDataMgr::PtiEngine
+// ---------------------------------------------------------------------------
+//
+inline CPtiEngine* CSplitItutDataMgr::PtiEngine()
+    {
+    return iPtiEngine;
+    }
+
+// ---------------------------------------------------------------------------
+// CSplitItutDataMgr::InputMode
+// ---------------------------------------------------------------------------
+//
+inline TInt CSplitItutDataMgr::InputMode()
+    {
+    return iInputMode;
+    }
+    
+// ---------------------------------------------------------------------------
+// CSplitItutDataMgr::InputLanguage
+// ---------------------------------------------------------------------------
+//
+inline TInt CSplitItutDataMgr::InputLanguage()
+    {
+    return iLanguage;
+    }
+
+// ---------------------------------------------------------------------------
+// CSplitItutDataMgr::TextCase
+// ---------------------------------------------------------------------------
+//
+inline TInt CSplitItutDataMgr::TextCase()
+    {
+    return iCase;
+    }
+    
+// ---------------------------------------------------------------------------
+// CSplitItutDataMgr::SetLatinOnly
+// ---------------------------------------------------------------------------
+//
+inline void CSplitItutDataMgr::SetLatinOnly( TBool aLatinOnly )
+    {
+    iLatinOnly = aLatinOnly;
+    } 
+
+// ---------------------------------------------------------------------------
+// CSplitItutDataMgr::IsValidLanguage
+// ---------------------------------------------------------------------------
+//
+inline TBool CSplitItutDataMgr::IsValidLanguage(TInt aLanguage)
+	{
+	return (aLanguage != ELangTest && aLanguage != ELangNone);	
+	}
+	
+// ---------------------------------------------------------------------------
+// CSplitItutDataMgr::SetLangDirectionSwitch
+// ---------------------------------------------------------------------------
+//
+inline void CSplitItutDataMgr::SetLangDirectionSwitch( TBool aIsChange )
+	{
+	iIsLangDirectionSwitch = aIsChange;
+	}
+
+// ---------------------------------------------------------------------------
+// CSplitItutDataMgr::IsCharFlagChanged
+// ---------------------------------------------------------------------------
+//
+inline TBool CSplitItutDataMgr::IsCharFlagChanged()
+    {
+    if( iExistPlusChar != IsExistPlusChar() )
+    	{
+    	iExistPlusChar = IsExistPlusChar();
+        iPlusCharFlagChanged = ETrue;
+    	}
+    else
+    	{
+        iPlusCharFlagChanged = EFalse;
+    	}
+    return iPlusCharFlagChanged;
+    }
+
+// ---------------------------------------------------------------------------
+// CSplitItutDataMgr::SetNumericOnly
+// ---------------------------------------------------------------------------
+//
+inline void CSplitItutDataMgr::SetNumericOnly( TBool aIsNumberOnly )
+	{
+	iNumberOnly = aIsNumberOnly;
+	}
+
+// ---------------------------------------------------------------------------
+// CSplitItutDataMgr::IsNumericOnly
+// ---------------------------------------------------------------------------
+//
+inline TBool CSplitItutDataMgr::IsNumericOnly() const
+	{
+	return iNumberOnly;
+	}
+
+#endif // C_SPLITITUTDATAMGR_H