textinput/peninputgenerichwr/src/peninputhwrarabicdatamgr.cpp
changeset 0 eb1f2e154e89
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/textinput/peninputgenerichwr/src/peninputhwrarabicdatamgr.cpp	Tue Feb 02 01:02:04 2010 +0200
@@ -0,0 +1,371 @@
+/*
+* 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:  peninput hwr data manager
+*
+*/
+
+
+// System includes
+#include <peninputdataconverter.h>
+#include <centralrepository.h>
+#include <settingsinternalcrkeys.h>
+#include <peninputlayoutcontext.h>
+#include <peninputcommonlayoutglobalenum.h>
+
+// User includes
+#include "peninputhwrarabic.hrh"
+#include "peninputhwrarabicengine.h"
+#include "peninputhwrarabicdatamgr.h"
+#include "peninputpluginutils.h"
+
+// Constants
+const TInt KGuideLineOn = 1;
+enum
+    {
+    EHwrWritingSpeedVeryFast    = 300 * 1000,
+    EHwrWritingSpeedFast        = 400 * 1000,
+    EHwrWritingSpeedNormal      = 550 * 1000,
+    EHwrWritingSpeedSlow        = 700 * 1000,
+    EHwrWritingSpeedVerySlow    = 1000 * 1000
+    };
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CPeninputGenericHwrDataMgr::NewL
+// (other items were commented in a header)
+// ---------------------------------------------------------------------------
+//    
+CPeninputHwrBxAbDataMgr* CPeninputHwrBxAbDataMgr::NewL( 
+    MPeninputLayoutContext* aContext ,CPtiEngine* aPtiEngine)
+    {
+    CPeninputHwrBxAbDataMgr* self = NewLC( aContext ,aPtiEngine );
+    CleanupStack::Pop( self );
+      
+    return self;
+    }
+    
+// ---------------------------------------------------------------------------
+// CPeninputHwrBxAbDataMgr::NewLC
+// (other items were commented in a header)
+// ---------------------------------------------------------------------------
+//  
+CPeninputHwrBxAbDataMgr* CPeninputHwrBxAbDataMgr::NewLC( 
+    MPeninputLayoutContext* aContext ,CPtiEngine* aPtiEngine)
+    {
+    CPeninputHwrBxAbDataMgr* self = 
+        new ( ELeave ) CPeninputHwrBxAbDataMgr( aContext );
+    self->iPtiEngine = aPtiEngine;
+    CleanupStack::PushL( self );
+    self->ConstructL(); 
+
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CPeninputHwrBxAbDataMgr::CPeninputHwrBxAbDataMgr
+// (other items were commented in a header)
+// ---------------------------------------------------------------------------
+//  
+CPeninputHwrBxAbDataMgr::CPeninputHwrBxAbDataMgr( 
+    MPeninputLayoutContext* aContext ) 
+    : CPeninputDataMgr( aContext )
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// CPeninputHwrBxAbDataMgr::~CPeninputHwrBxAbDataMgr
+// (other items were commented in a header)
+// ---------------------------------------------------------------------------
+//      
+CPeninputHwrBxAbDataMgr::~CPeninputHwrBxAbDataMgr()
+    {
+    if( iOwnPtiEngine )
+        {
+        delete iPtiEngine;
+        }
+    delete iPenData.iRecognizer; 
+    }
+
+// ---------------------------------------------------------------------------
+// CPeninputHwrBxAbDataMgr::GetPenTrailColor
+// (other items were commented in a header)
+// ---------------------------------------------------------------------------
+//   
+TRgb CPeninputHwrBxAbDataMgr::GetPenTrailColor()
+    {
+    TInt newValue = 0; 
+    iGSRepository->Get( KSettingsPenColor, newValue );
+    
+    if (!AknPenInputTrailColorUtils::CheckColorInColorTable(newValue))
+        {
+        newValue = AknPenInputTrailColorUtils::GetTrailColorByTheme();
+        }
+    return TRgb(newValue);
+    }
+
+// ---------------------------------------------------------------------------
+// CPeninputHwrBxAbDataMgr::InitMore
+// (other items were commented in a header)
+// ---------------------------------------------------------------------------
+//  
+void CPeninputHwrBxAbDataMgr::InitMore()
+    {
+    // Read pen data
+    if ( iGSRepository )
+        {
+        TInt newValue;                
+        // Read guide line on/off flag, don't remove these code
+        newValue = KGuideLineOn;
+        iPenData.iGuideLineOn = iGSRepository->Get( KSettingsPenInputGuideLine, newValue );
+        iPenData.iGuideLineOn = newValue;
+        
+        iPenData.iPenColor = GetPenTrailColor();
+        
+        newValue = 1;
+        iGSRepository->Get( KSettingsPenWidth, newValue );        
+        iPenData.iPenSize = TSize( newValue, newValue );
+        
+        newValue = 2;
+        iGSRepository->Get( KSettingsWritingSpeed, newValue );        
+        iPenData.iFadingSpeed = newValue;
+        iPenData.iWritingSpeed = TransferWritingSpeed( newValue );
+        }
+    
+    if( !iPtiEngine )    
+        {
+        TRAP_IGNORE( iPtiEngine = CPtiEngine::NewL( ETrue ));
+        iOwnPtiEngine = ETrue; 
+        }
+        
+    TRAP_IGNORE( iPenData.iRecognizer = CPeninputHwrBxAbEngine::NewL(iPtiEngine) );
+    iPenData.iRecognizer->EnableWordRecognition( ETrue );    
+    iReserve_1 = &iPenData;
+    }
+
+// ---------------------------------------------------------------------------
+// CPeninputHwrBxAbDataMgr::HandleGSRepositoryChange
+// (other items were commented in a header)
+// ---------------------------------------------------------------------------
+//  
+void CPeninputHwrBxAbDataMgr::HandleGSRepositoryChange( TInt aChangedKey )
+    {
+    TInt newValue = 0;
+    
+    switch ( aChangedKey )
+        {
+        case KSettingsPenColor:
+        	  {
+            iGSRepository->Get( KSettingsPenColor, newValue ); 
+            iPenData.iPenColor = newValue;           
+            iContext->SendEventToWindow( EPeninputLayoutHwrEventPenColorChange, 
+                NULL ); 
+            }
+            break;
+        case KSettingsPenWidth:
+        	  {
+            iGSRepository->Get( KSettingsPenWidth, newValue );        
+            iPenData.iPenSize = TSize( newValue, newValue );            
+            iContext->SendEventToWindow( EPeninputLayoutHwrEventPenSizeChange, 
+                NULL );
+            }
+            break; 
+        case KSettingsWritingSpeed:
+        	  {
+            iGSRepository->Get( KSettingsWritingSpeed, newValue );                    
+            iPenData.iFadingSpeed = newValue;
+            iPenData.iWritingSpeed = TransferWritingSpeed( newValue );
+            iContext->SendEventToWindow
+                ( EPeninputLayoutHwrEventWritingSpeedChange, NULL );
+            }
+            break;
+        case KSettingsPenInputGuideLine:
+        	  {
+            iGSRepository->Get( KSettingsPenInputGuideLine, newValue ); 
+            if ( newValue != iPenData.iGuideLineOn )
+                {
+                iPenData.iGuideLineOn = newValue;
+                iContext->SendEventToWindow
+                    ( EPeninputLayoutHwrEventGuideLineChanged, NULL );
+                }        
+            }
+            break;
+        default:
+            break;
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CPeninputHwrBxAbDataMgr::Reset
+// (other items were commented in a header)
+// ---------------------------------------------------------------------------
+//  
+void CPeninputHwrBxAbDataMgr::Reset()
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// CPeninputHwrBxAbDataMgr::TransferWritingSpeed
+// (other items were commented in a header)
+// ---------------------------------------------------------------------------
+//  
+TInt CPeninputHwrBxAbDataMgr::TransferWritingSpeed( TInt aWritingSpeed )
+    {
+    TInt speed;
+    
+    switch ( aWritingSpeed )
+        {
+        case 1: 
+            {
+            speed = EHwrWritingSpeedVeryFast;
+            }
+            break;
+        case 2: 
+            {
+            speed = EHwrWritingSpeedFast;
+            }
+            break;
+        case 3: 
+            {
+            speed = EHwrWritingSpeedNormal;
+            }
+            break;
+        case 4: 
+            {
+            speed = EHwrWritingSpeedSlow;
+            }
+            break;
+        case 5:
+            { 
+            speed = EHwrWritingSpeedVerySlow;
+            }
+            break;
+        default:
+            {
+            speed = EHwrWritingSpeedNormal;
+            }
+            break;
+        }
+        
+    return speed;    
+    }
+
+// ---------------------------------------------------------------------------
+// CPeninputHwrBxAbDataMgr::SetData
+// (other items were commented in a header)
+// ---------------------------------------------------------------------------
+//   
+void CPeninputHwrBxAbDataMgr::SetData( TPeninputDataType aDataType, 
+                                         TAny* aData )
+    {
+    switch ( aDataType )
+        {
+        case EAkninputDataTypeInputArea:
+            {
+            iInputArea = *(TSize*)aData;
+            }   
+            break;
+         default:
+            {
+            CPeninputDataMgr::SetData( aDataType, aData );
+            }
+        }
+    NotifyEngine( aDataType, aData ) ;    
+    }
+
+ 
+ // ---------------------------------------------------------------------------
+// CPeninputHwrBxAbDataMgr::NotifyEngine
+// (other items were commented in a header)
+// ---------------------------------------------------------------------------
+//   
+TAny* CPeninputHwrBxAbDataMgr::RequestData( TPeninputDataType aDataType )
+    {
+    switch ( aDataType )
+        {
+        case EAkninputDataTypeGuideLineTop: 
+            {
+            iPenData.iRecognizer->GetTopGuideLinePos( iHelpLine );
+            return &iHelpLine;
+            }
+        case EAkninputDataTypeGuideLineBottom:
+            {
+            iPenData.iRecognizer->GetBottomGuideLinePos( iBaseLine );
+            return &iBaseLine;
+            }
+        case EPeninputDataTypePenTailColor:
+            {
+            iPenData.iPenColor = GetPenTrailColor();
+            return &iPenData.iPenColor;   
+            }            
+         default:
+            {
+            return CPeninputDataMgr::RequestData( aDataType );
+            }
+        }
+    }
+    
+// ---------------------------------------------------------------------------
+// CPeninputHwrBxAbDataMgr::NotifyEngine
+// (other items were commented in a header)
+// ---------------------------------------------------------------------------
+//      
+void CPeninputHwrBxAbDataMgr::NotifyEngine( TPeninputDataType aType, 
+                                               TAny* aData )
+    {
+    // Call the function in base class, which will store data to CenRep
+    CPeninputDataMgr::NotifyEngine( aType, aData );
+      
+    TInt* data = ( TInt* ) aData;
+    
+    // Notify engine, when language, range, case changed
+    switch ( aType )
+        {
+        case EPeninputDataTypeCase: 
+            {
+            iPenData.iRecognizer->SetCase( *data );
+            }
+            break;
+        case EPeninputDataTypeInputLanguage: 
+            {
+            iPenData.iRecognizer->SetLanguage( *data );
+            }
+            break;
+        case EPeninputDataTypeCurrentRange: 
+            {
+            iPenData.iRecognizer->SetMode( *data );
+            }
+            break;
+        case EPeninputDataTypeNumericKeymap:
+            {
+            iPenData.iRecognizer->SetNumberMode
+                ( ( TAknEditorNumericKeymap )*data );
+            }
+            break;     
+        case EAknFepDataTypeUseDefinedResource:
+            {
+            HBufC* res = (HBufC*)RequestData(EAknFepDataTypeUseDefinedResource);
+            iPenData.iRecognizer->SetPermittedCharSet(*res);
+            }
+            break;
+        case EAkninputDataTypeInputArea:
+            {
+            iPenData.iRecognizer->SetInputAreaSize( *(TSize*)data );
+            }   
+        break;
+        default:
+            break;
+        }    
+    }