--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/textinput/peninputarc/gsplugin/gspeninputplugin/src/gspeninputcontainer.cpp Tue Feb 02 01:02:04 2010 +0200
@@ -0,0 +1,1393 @@
+/*
+* 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: Container for GSPenInputPlugin.
+*
+*/
+
+
+#include <gscommon.hrh>
+#include <gspeninputpluginrsc.rsg>
+#include <aknlists.h>
+#include <gslistbox.h>
+#include <featmgr.h>
+#include <aknradiobuttonsettingpage.h>
+#include <AknColourSelectionGrid.h>
+#include <aknlayoutscalable_avkon.cdl.h>
+#include <avkon.mbg>
+#include <AknsDrawUtils.h>
+#include <AknsFrameBackgroundControlContext.h>
+#include <skinlayout.cdl.h>
+#include <aknconsts.h>
+#include <aknslider.h>
+#include <settingsinternalcrkeys.h>
+#include <AknFepInternalCRKeys.h>
+#include <AvkonInternalCRKeys.h>
+//#include <csxhelp\cp.hlp.hrh> //Temp fix for helps integration build break;
+#include <AknNullService.h>
+
+using namespace SkinLayout;
+
+#include "gspeninputcontainer.h"
+#include "gspeninputplugin.h"
+#include "gspeninputplugin.hrh"
+#include "gspeninputmodel.h"
+#include "peninputpluginutils.h"
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------
+//
+CGSPenInputContainer::CGSPenInputContainer()
+ {
+ }
+
+// ---------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------
+//
+void CGSPenInputContainer::ConstructL(const TRect& aRect)
+ {
+ iModel = CGSPenInputModel::NewL(this);
+ iListBox = new (ELeave) CAknSettingStyleListBox;
+
+ iModel->InputLanguage();
+ iModel->InputMode();
+ iModel->TrailColour();
+ iModel->TrailWidth();
+ iModel->GuideLine();
+ iModel->InputMethodForFind();
+ iModel->ChineseFindMethod();
+ iModel->RecognitionWithDictionary();
+
+ BaseConstructL(aRect, R_CP_INPUTPEN_PLUGIN_TITLE, R_INPUTPEN_LBX);
+ iChinese = iModel->ChineseLanguage();
+
+ iJapanese = iModel->JapaneseLanguage();
+ }
+
+// ---------------------------------------------------------
+// This callback method is used to notify the client about
+// key changing
+// ---------------------------------------------------------
+//
+void CGSPenInputContainer::HandleNotifyInt(TUint32 aId, TInt /*aNewValue*/)
+ {
+ switch (aId)
+ {
+ case KAknFepInputTxtLang:
+ {
+ TRAP_IGNORE(UpdateListBoxL(EGSInputpenIdInputLanguage));
+ }
+ break;
+ case KSettingsWritingSpeed:
+ {
+ TRAP_IGNORE(UpdateListBoxL(EGSInputpenIdWritingSpeed));
+ }
+ break;
+ case KSettingsPenInputGuideLine:
+ {
+ TRAP_IGNORE(UpdateListBoxL(EGSInputpenIdGuidLine));
+ }
+ break;
+ case KSettingRecognitionwithdictionary:
+ {
+ TRAP_IGNORE(UpdateListBoxL(EGSInputpenIdRecognitionWithDictionary));
+ }
+ break;
+ case KSettingsPenWidth:
+ {
+ TRAP_IGNORE(UpdateListBoxL(EGSInputpenIdPenTrailWidth));
+ }
+ break;
+ case KSettingsPenColor:
+ {
+ TRAP_IGNORE(UpdateListBoxL(EGSInputpenIdPenTrailColour));
+ }
+ break;
+ case KSettingsDefaultVkbPrc:
+ case KSettingsDefaultVkbTw:
+ case KSettingsDefaultVkbHk:
+ {
+ TRAP_IGNORE(UpdateListBoxL(EGSDefaultChineseOnscreenKeyboard));
+ }
+ break;
+ default:
+ break;
+ }
+ }
+// ---------------------------------------------------------
+// This callback method is used to notify the client about
+// key changing
+// ---------------------------------------------------------
+//
+void CGSPenInputContainer::HandleNotifyInt( TUid aRepositoryUid, TUint32 aId, TInt aNewValue )
+ {
+ TRAP_IGNORE
+ (
+ if ( aRepositoryUid == KCRUidPersonalizationSettings )
+ {
+ HandleNotifyIntFromPersonalizationL( aId, aNewValue );
+ }
+ else if ( aRepositoryUid == KCRUidAknFep )
+ {
+ HandleNotifyIntFromAknFepL( aId, aNewValue );
+ }
+ else if ( aRepositoryUid == KCRUidAvkon )
+ {
+ HandleNotifyIntFromAvkonL( aId, aNewValue );
+ }
+ )
+ }
+// ---------------------------------------------------------
+// Handle notifier from KCRUidPersonalizationSettings
+// in CRepository
+// ---------------------------------------------------------
+//
+void CGSPenInputContainer::HandleNotifyIntFromPersonalizationL
+ ( TUint32 aId, TInt /*aNewValue*/ )
+ {
+ switch ( aId )
+ {
+ case KSettingsWritingSpeed:
+ {
+ UpdateListBoxL(EGSInputpenIdWritingSpeed);
+ break;
+ }
+ case KSettingsPenInputGuideLine:
+ {
+ UpdateListBoxL(EGSInputpenIdGuidLine);
+ break;
+ }
+ case KSettingsPenWidth:
+ {
+ UpdateListBoxL(EGSInputpenIdPenTrailWidth);
+ break;
+ }
+ case KSettingsPenColor:
+ {
+ UpdateListBoxL(EGSInputpenIdPenTrailColour);
+ break;
+ }
+ case KSettingsDefaultVkbPrc:
+ case KSettingsDefaultVkbHk:
+ case KSettingsDefaultVkbTw:
+ {
+ UpdateListBoxL(EGSDefaultChineseOnscreenKeyboard);
+ break;
+ }
+ case KSettingRecognitionwithdictionary:
+ {
+ UpdateListBoxL(EGSInputpenIdRecognitionWithDictionary);
+ break;
+ }
+ default:
+ break;
+ }
+ }
+
+// ---------------------------------------------------------
+// Handle notifier from KCRUidAknFep in CRepository
+// ---------------------------------------------------------
+//
+void CGSPenInputContainer::HandleNotifyIntFromAknFepL
+ ( TUint32 aId, TInt /*aNewValue*/ )
+ {
+ switch ( aId )
+ {
+ case KAknFepInputTxtLang:
+ {
+ UpdateListBoxL(EGSInputpenIdInputLanguage);
+ break;
+ }
+ default:
+ break;
+ }
+ }
+
+// ---------------------------------------------------------
+// Handle notifier from KCRUidAvkon in CRepository
+// ---------------------------------------------------------
+//
+void CGSPenInputContainer::HandleNotifyIntFromAvkonL
+ ( TUint32 aId, TInt /*aNewValue*/ )
+ {
+ switch ( aId )
+ {
+ case KAknAvkonAdaptiveSearchEnabled:
+ {
+ UpdateListBoxL(EGSInputpenIdInputMethodForFind);
+ break;
+ }
+ case KAknAdaptiveSearchChinesePRC:
+ case KAknAdaptiveSearchChineseTW:
+ case KAknAdaptiveSearchChineseHongkong:
+ {
+ UpdateListBoxL(EGSInputpenIdChineseFindMethod);
+ break;
+ }
+ default:
+ break;
+ }
+ }
+
+// ---------------------------------------------------------
+// Constructs listbox
+// ---------------------------------------------------------
+//
+void CGSPenInputContainer::ConstructListBoxL(TInt aResLbxId)
+ {
+ iListBox->ConstructL(this, EAknListBoxSelectionList);
+
+ iListboxItemArray = CGSListBoxItemTextArray::NewL(aResLbxId,
+ *iListBox,
+ *iCoeEnv);
+
+ iListBox->Model()->SetItemTextArray(iListboxItemArray);
+ iListBox->Model()->SetOwnershipType(ELbmDoesNotOwnItemArray);
+
+ delete iWritingSpeedItems;
+ iWritingSpeedItems = NULL;
+
+ iWritingSpeedItems = iCoeEnv->ReadDesC16ArrayResourceL(
+ R_GS_WRITINGSPEED_SETTING_PAGE_LBX);
+
+ delete iPenTrailWidthItems;
+ iPenTrailWidthItems = NULL;
+
+ iPenTrailWidthItems = iCoeEnv->ReadDesC16ArrayResourceL(
+ R_GS_PENTRAIL_SETTING_PAGE_LBX);
+
+ delete iGuideLineItems;
+ iGuideLineItems = NULL;
+
+ iGuideLineItems = iCoeEnv->ReadDesC16ArrayResourceL(
+ R_GS_GUIDLINE_SETTING_PAGE_LBX);
+
+ delete iRecognitionWithDictionaryItems;
+ iRecognitionWithDictionaryItems = NULL;
+
+ iRecognitionWithDictionaryItems = iCoeEnv->ReadDesC16ArrayResourceL(
+ R_GS_RECOGNIZEWITHDICTIONARY_SETTING_PAGE_LBX);
+
+ delete iInputMethodForFindItems;
+ iInputMethodForFindItems = NULL;
+
+ iInputMethodForFindItems = iCoeEnv->ReadDesC16ArrayResourceL(
+ R_GS_INPUTMETHODFORFIND_SETTING_PAGE_LBX);
+
+ delete iChineseFindMethodItems;
+ iChineseFindMethodItems = NULL;
+
+ iChineseFindMethodResourceID = iModel->ChineseFindMethodResourceID();
+ if (iChineseFindMethodResourceID != -1)
+ {
+ iChineseFindMethodItems = iCoeEnv->ReadDesC16ArrayResourceL(
+ iChineseFindMethodResourceID);
+ }
+
+ delete iInputModeItems;
+ iInputModeItems = NULL;
+
+ if (iModel->InputModeResourceID() != -1)
+ {
+ iInputModeItems = iCoeEnv->ReadDesC16ArrayResourceL(
+ iModel->InputModeResourceID());
+ iModel->ResetInputModeArray(iInputModeItems);
+ }
+
+ CArrayPtr<CGulIcon>* icons = new (ELeave) CArrayPtrFlat<CGulIcon>(2);
+ CleanupStack::PushL(icons);
+ CGulIcon* icon = CGulIcon::NewL();
+ CleanupStack::PushL(icon);
+
+ icons->AppendL(icon);
+
+ CEikFormattedCellListBox* listbox = static_cast<CEikFormattedCellListBox*>(iListBox);
+
+ listbox->ItemDrawer()->FormattedCellData()->SetIconArray(icons);// icons owned by List box
+
+ CleanupStack::Pop(icon);
+ CleanupStack::Pop(icons);
+
+ iIconArray = listbox->ItemDrawer()->FormattedCellData()->IconArray();
+
+ CreateListBoxItemsL();
+ }
+
+// ---------------------------------------------------------
+// Constructs listbox items
+// ---------------------------------------------------------
+//
+void CGSPenInputContainer::CreateListBoxItemsL()
+ {
+ MakeHwrTruiItemL();
+ MakeInputLanguageL();
+ MakeInputModeL();
+ MakeSpeedItemL();
+ MakeGuideItemL();
+ MakeTrailWidthItemL();
+ MakeRecognitionWithDictionaryL();
+ MakeTrailColourItemL();
+ MakeTouchScrCalibItemL();
+ MakeInputMethodForFindItemL();
+ MakeChineseFindMethodItemL();
+ }
+
+// ---------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------
+//
+CGSPenInputContainer::~CGSPenInputContainer()
+ {
+ delete iModel;
+ delete iWritingSpeedItems;
+ delete iGuideLineItems;
+ delete iRecognitionWithDictionaryItems;
+ delete iPenTrailWidthItems;
+ delete iInputMethodForFindItems;
+ delete iChineseFindMethodItems;
+ delete iInputModeItems;
+ delete iListboxItemArray;
+ delete iNullService;
+ }
+
+// ---------------------------------------------------------
+// Updates listbox item's value
+// ---------------------------------------------------------
+//
+void CGSPenInputContainer::UpdateListBoxL(TInt aFeatureId)
+ {
+ switch (aFeatureId)
+ {
+ case EGSInputpenIdInputLanguage:
+ {
+ MakeInputLanguageL();
+ }
+ break;
+ case EGSDefaultChineseOnscreenKeyboard:
+ {
+ MakeInputModeL();
+ }
+ break;
+ case EGSInputpenIdWritingSpeed:
+ {
+ MakeSpeedItemL();
+ }
+ break;
+ case EGSInputpenIdGuidLine:
+ {
+ MakeGuideItemL();
+ }
+ break;
+ case EGSInputpenIdRecognitionWithDictionary:
+ {
+ MakeRecognitionWithDictionaryL();
+ }
+ break;
+ case EGSInputpenIdPenTrailWidth:
+ {
+ MakeTrailWidthItemL();
+ }
+ break;
+ case EGSInputpenIdPenTrailColour:
+ {
+ MakeTrailColourItemL();
+ }
+ break;
+ case EGSInputpenIdInputMethodForFind:
+ {
+ MakeInputMethodForFindItemL();
+ }
+ case EGSInputpenIdChineseFindMethod:
+ {
+ MakeChineseFindMethodItemL();
+ }
+ break;
+ default:
+ break;
+ }
+ // Update the listbox
+ iListBox->HandleItemAdditionL();
+ }
+
+// ---------------------------------------------------------
+// Retrieves the currently selected listbox id
+// ---------------------------------------------------------
+//
+TInt CGSPenInputContainer::CurrentSelectedId() const
+ {
+ return iListboxItemArray->CurrentFeature();
+ }
+
+// ---------------------------------------------------------
+// Create listbox input language item
+// ---------------------------------------------------------
+//
+void CGSPenInputContainer::MakeInputLanguageL()
+ {
+ HBufC* dynamicText = HBufC::NewLC(KGSBufSize);
+ TPtr ptrBuffer(dynamicText->Des());
+
+ iModel->InputLanguage(ptrBuffer);
+
+ // Finally, set the dynamic text
+ iListboxItemArray->SetDynamicTextL(EGSInputpenIdInputLanguage, ptrBuffer);
+
+ CleanupStack::PopAndDestroy(dynamicText);
+
+ // And add to listbox
+ iListboxItemArray->SetItemVisibilityL(EGSInputpenIdInputLanguage,
+ CGSListBoxItemTextArray::EVisible);
+
+ // Decide handwritting training visible
+ MakeHwrTruiItemL();
+ // Decide if show Default chinese on-screen keyboard
+ MakeInputModeL();
+ // Decide which chinese find method should be shown
+ MakeChineseFindMethodItemL();
+ // Decide which guideline should be shown
+ MakeGuideItemL();
+
+ MakeTrailColourItemL();
+
+ MakeTrailWidthItemL();
+
+ MakeSpeedItemL();
+
+ MakeRecognitionWithDictionaryL();
+ }
+
+// ---------------------------------------------------------
+// Create input mode item
+// ---------------------------------------------------------
+//
+void CGSPenInputContainer::MakeInputModeL()
+ {
+ TBool bVisible = iModel->IsSettingItemAvailable(EGSDefaultChineseOnscreenKeyboard);
+
+ delete iInputModeItems;
+ iInputModeItems = NULL;
+ // if current input language is not Chinese,
+ // Hide default chinese on-screen keyboard
+ if ( iListboxItemArray && !iModel->ChineseLanguage() )
+ {
+ iListboxItemArray->SetItemVisibilityL(
+ EGSDefaultChineseOnscreenKeyboard,
+ CGSItemTextArray::EInvisible);
+ }
+
+ if (iModel->InputModeResourceID() != -1)
+ {
+ iInputModeItems = iCoeEnv->ReadDesC16ArrayResourceL(
+ iModel->InputModeResourceID());
+ iModel->ResetInputModeArray(iInputModeItems);
+ }
+ else
+ {
+ return;
+ }
+
+ HBufC* dynamicText = HBufC::NewLC(KGSBufSize);
+ TPtr ptrBuffer(dynamicText->Des());
+ iModel->InputMode();
+ const TInt index = iModel->InputModeInSettingPage();
+
+ if ( iInputModeItems && index < iInputModeItems->Count() )
+ {
+ ptrBuffer = (*iInputModeItems)[index];
+ }
+
+ // Finally, set the dynamic text
+ iListboxItemArray->SetDynamicTextL(EGSDefaultChineseOnscreenKeyboard, ptrBuffer);
+ CleanupStack::PopAndDestroy(dynamicText);
+
+ // And add to listbox
+ iListboxItemArray->SetItemVisibilityL(
+ EGSDefaultChineseOnscreenKeyboard,
+ bVisible ? CGSItemTextArray::EVisible : CGSItemTextArray::EInvisible);
+ }
+
+// ---------------------------------------------------------
+// Create listbox writing speed item
+// ---------------------------------------------------------
+//
+void CGSPenInputContainer::MakeGuideItemL()
+ {
+
+ TBool bVisible = iModel->IsSettingItemAvailable(EGSInputpenIdGuidLine);
+
+
+ HBufC* dynamicText = HBufC::NewLC(KGSBufSize);
+ TPtr ptrBuffer(dynamicText->Des());
+ const TInt guideLine = iModel->GuideLine();
+
+ ptrBuffer = (*iGuideLineItems)[guideLine == 0 ? 1:0];
+
+
+ if (!ptrBuffer.Length() && iGuideLineItems->Count() > 0)
+ {
+ ptrBuffer = (*iGuideLineItems)[0];
+ }
+
+ // Finally, set the dynamic text
+ iListboxItemArray->SetDynamicTextL(EGSInputpenIdGuidLine, ptrBuffer);
+ CleanupStack::PopAndDestroy(dynamicText);
+
+ // And add to listbox
+ iListboxItemArray->SetItemVisibilityL(
+ EGSInputpenIdGuidLine,
+ bVisible ? CGSItemTextArray::EVisible : CGSItemTextArray::EInvisible);
+ }
+// ---------------------------------------------------------
+// Create listbox for the item of recognition with dictionary
+// ---------------------------------------------------------
+//
+void CGSPenInputContainer::MakeRecognitionWithDictionaryL()
+ {
+
+ TBool bVisible = iModel->IsSettingItemAvailable(EGSInputpenIdRecognitionWithDictionary);
+
+
+ HBufC* dynamicText = HBufC::NewLC(KGSBufSize);
+ TPtr ptrBuffer(dynamicText->Des());
+ const TInt guideLine = iModel->RecognitionWithDictionary();
+
+ ptrBuffer = (*iRecognitionWithDictionaryItems)[guideLine == 0 ? 1:0];
+
+
+ if (!ptrBuffer.Length() && iRecognitionWithDictionaryItems->Count() > 0)
+ {
+ ptrBuffer = (*iRecognitionWithDictionaryItems)[0];
+ }
+
+ // Finally, set the dynamic text
+ iListboxItemArray->SetDynamicTextL(EGSInputpenIdRecognitionWithDictionary, ptrBuffer);
+ CleanupStack::PopAndDestroy(dynamicText);
+
+ // And add to listbox
+ iListboxItemArray->SetItemVisibilityL(
+ EGSInputpenIdRecognitionWithDictionary,
+ bVisible ? CGSItemTextArray::EVisible : CGSItemTextArray::EInvisible);
+ }
+
+// ---------------------------------------------------------
+// Create listbox writing speed item
+// ---------------------------------------------------------
+//
+void CGSPenInputContainer::MakeSpeedItemL()
+ {
+ TBool bVisible = iModel->IsSettingItemAvailable(EGSInputpenIdWritingSpeed);
+
+ if(bVisible)
+ {
+ HBufC* dynamicText = HBufC::NewLC(KGSBufSize);
+ TPtr ptrBuffer(dynamicText->Des());
+ const TInt writingSpeed = iModel->WritingSpeed();
+ const TInt count = iWritingSpeedItems->Count();
+
+ for (TInt index = 0; index < count; ++index)
+ {
+ if (index == writingSpeed)
+ {
+ ptrBuffer = (*iWritingSpeedItems)[index];
+ break;
+ }
+ }
+
+ if (!ptrBuffer.Length() && iWritingSpeedItems->Count() > 0)
+ {
+ ptrBuffer = (*iWritingSpeedItems)[0];
+ }
+
+ // Finally, set the dynamic text
+ iListboxItemArray->SetDynamicTextL(EGSInputpenIdWritingSpeed, ptrBuffer);
+ CleanupStack::PopAndDestroy(dynamicText);
+ }
+
+ // Enable or disable to listbox
+ iListboxItemArray->SetItemVisibilityL(EGSInputpenIdWritingSpeed,
+ bVisible ? CGSListBoxItemTextArray::EVisible : CGSListBoxItemTextArray::EInvisible);
+ }
+
+// ---------------------------------------------------------
+// Create listbox pen trail width item
+// ---------------------------------------------------------
+//
+void CGSPenInputContainer::MakeTrailWidthItemL()
+ {
+ TBool bVisible = EFalse;
+ if( !(FeatureManager::FeatureSupported( KFeatureIdFfCapacitiveDisplay )) )
+ {
+ bVisible = iModel->IsSettingItemAvailable(EGSInputpenIdPenTrailWidth);
+ }
+
+ if(bVisible)
+ {
+ HBufC* dynamicText = HBufC::NewLC(KGSBufSize);
+ TPtr ptrBuffer(dynamicText->Des());
+ const TInt trailwidth = iModel->TrailWidth();
+ const TInt count = iPenTrailWidthItems->Count();
+
+ for (TInt index = 0; index < count; ++index)
+ {
+ if (index == trailwidth)
+ {
+ ptrBuffer = (*iPenTrailWidthItems)[index];
+ break;
+ }
+ }
+
+ if (!ptrBuffer.Length() && iPenTrailWidthItems->Count() > 0)
+ {
+ ptrBuffer = (*iPenTrailWidthItems)[0];
+ }
+
+ // Finally, set the dynamic text
+ iListboxItemArray->SetDynamicTextL(EGSInputpenIdPenTrailWidth, ptrBuffer);
+ CleanupStack::PopAndDestroy(dynamicText);
+ }
+
+ // enable or disable to listbox
+ iListboxItemArray->SetItemVisibilityL(EGSInputpenIdPenTrailWidth,
+ bVisible ? CGSListBoxItemTextArray::EVisible : CGSListBoxItemTextArray::EInvisible);
+ }
+
+// ---------------------------------------------------------
+// Create listbox pen trail colour item
+// ---------------------------------------------------------
+//
+void CGSPenInputContainer::MakeTrailColourItemL()
+ {
+ TBool bVisible = iModel->IsSettingItemAvailable(EGSInputpenIdPenTrailColour);
+ if(bVisible)
+ {
+ CreateIconL();
+ }
+
+ iListboxItemArray->SetItemVisibilityL(EGSInputpenIdPenTrailColour,
+ bVisible ? CGSListBoxItemTextArray::EVisible : CGSListBoxItemTextArray::EInvisible);
+ }
+
+// ---------------------------------------------------------
+// Create listbox touch screen calibration item
+// ---------------------------------------------------------
+//
+void CGSPenInputContainer::MakeTouchScrCalibItemL()
+ {
+ if( FeatureManager::FeatureSupported( KFeatureIdPenSupportCalibration ) )
+ {
+ // And add to listbox
+ iListboxItemArray->SetItemVisibilityL(EGSInputpenIdTouchScrCalib,
+ CGSListBoxItemTextArray::EVisible);
+ }
+ else
+ {
+ iListboxItemArray->SetItemVisibilityL(EGSInputpenIdTouchScrCalib,
+ CGSListBoxItemTextArray::EInvisible);
+ }
+ }
+
+// ---------------------------------------------------------
+// Create listbox input method for find item
+// ---------------------------------------------------------
+//
+void CGSPenInputContainer::MakeInputMethodForFindItemL()
+ {
+ HBufC* dynamicText = HBufC::NewLC(KGSBufSize);
+ TPtr ptrBuffer(dynamicText->Des());
+ const TInt inputMethodForFind = iModel->InputMethodForFind();
+
+ ptrBuffer = (*iInputMethodForFindItems)[inputMethodForFind];
+
+
+ if (!ptrBuffer.Length() && iInputMethodForFindItems->Count() > 0)
+ {
+ ptrBuffer = (*iInputMethodForFindItems)[0];
+ }
+
+ // Finally, set the dynamic text
+ iListboxItemArray->SetDynamicTextL(EGSInputpenIdInputMethodForFind, ptrBuffer);
+ CleanupStack::PopAndDestroy(dynamicText);
+
+ // And add to listbox
+ iListboxItemArray->SetItemVisibilityL(EGSInputpenIdInputMethodForFind,
+ CGSListBoxItemTextArray::EVisible);
+ }
+
+// ---------------------------------------------------------
+// Create listbox chinese find method item
+// ---------------------------------------------------------
+//
+void CGSPenInputContainer::MakeChineseFindMethodItemL()
+ {
+ if(iChineseFindMethodResourceID != iModel->ChineseFindMethodResourceID())
+ {
+ iChineseFindMethodResourceID = iModel->ChineseFindMethodResourceID();
+ delete iChineseFindMethodItems;
+ iChineseFindMethodItems = NULL;
+
+ if (iChineseFindMethodResourceID != -1)
+ {
+ iChineseFindMethodItems = iCoeEnv->ReadDesC16ArrayResourceL(
+ iChineseFindMethodResourceID);
+ }
+ }
+
+ if (iModel->IsSettingItemAvailable(EGSInputpenIdChineseFindMethod))
+ {
+ HBufC* dynamicText = HBufC::NewLC(KGSBufSize);
+ TPtr ptrBuffer(dynamicText->Des());
+ const TInt chineseFindMethod = iModel->ChineseFindMethod();
+
+ ptrBuffer = (*iChineseFindMethodItems)[chineseFindMethod];
+
+ if (!ptrBuffer.Length() && iChineseFindMethodItems->Count() > 0)
+ {
+ ptrBuffer = (*iChineseFindMethodItems)[0];
+ }
+
+ // Finally, set the dynamic text
+ iListboxItemArray->SetDynamicTextL(EGSInputpenIdChineseFindMethod, ptrBuffer);
+ CleanupStack::PopAndDestroy(dynamicText);
+
+ // Show listbox item
+ iListboxItemArray->SetItemVisibilityL(EGSInputpenIdChineseFindMethod,
+ CGSItemTextArray::EVisible);
+ }
+ else
+ {
+ // Hide listbox item
+ iListboxItemArray->SetItemVisibilityL(EGSInputpenIdChineseFindMethod,
+ CGSItemTextArray::EInvisible);
+ }
+ }
+
+// ---------------------------------------------------------
+// Create listbox hwr trui item
+// ---------------------------------------------------------
+//
+void CGSPenInputContainer::MakeHwrTruiItemL()
+ {
+ // And add to listbox
+ TBool bVisible = iModel->IsSettingItemAvailable(EGSInputpenIdHwrTraining);
+ iListboxItemArray->SetItemVisibilityL(
+ EGSInputpenIdHwrTraining,
+ bVisible ? CGSItemTextArray::EVisible : CGSItemTextArray::EInvisible);
+ }
+
+// ---------------------------------------------------------
+// Get model instance
+// ---------------------------------------------------------
+//
+CGSPenInputModel* CGSPenInputContainer::Model()
+ {
+ return iModel;
+ }
+
+// ---------------------------------------------------------
+// Create a icon for pen trail colour item
+// ---------------------------------------------------------
+//
+void CGSPenInputContainer::CreateIconL()
+ {
+ CGulIcon* icon = CreateNewIconL();
+
+ delete iIconArray->At(0);
+ iIconArray->At(0) = icon;
+ }
+
+// ---------------------------------------------------------
+// Create a new icon
+// ---------------------------------------------------------
+//
+CGulIcon* CGSPenInputContainer::CreateNewIconL()
+ {
+ CGulIcon* icon = CGulIcon::NewLC();
+
+ TRect origin;
+
+ AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, origin);
+
+ TAknLayoutRect layoutRect;
+
+ layoutRect.LayoutRect(origin,
+ AknLayoutScalable_Avkon::listscroll_gen_pane(0));
+ layoutRect.LayoutRect(layoutRect.Rect(),
+ AknLayoutScalable_Avkon::list_gen_pane(0));
+ layoutRect.LayoutRect(layoutRect.Rect(),
+ AknLayoutScalable_Avkon::list_setting_number_pane(0));
+
+ TRect listSettingPaneRect(layoutRect.Rect());
+
+ layoutRect.LayoutRect(layoutRect.Rect(),
+ AknLayoutScalable_Avkon::set_value_pane(0));
+
+ TRect setValuePaneRect(layoutRect.Rect());
+ TRect rect(setValuePaneRect);
+
+ // Move to 0,0
+ rect.Move(-rect.iTl.iX, -rect.iTl.iY);
+
+ DrawIconL(rect, icon);
+
+ CleanupStack::Pop(icon); // icon - not owned anymore, do not destroy
+
+ return icon; // icon owned by listbox
+ }
+
+// ---------------------------------------------------------
+// Draw icon bitmap
+// ---------------------------------------------------------
+//
+void CGSPenInputContainer::DrawIconL(const TRect& aRect, CGulIcon* aIcon)
+ {
+ CFbsBitmap* bitmap = new (ELeave) CFbsBitmap;
+ CleanupStack::PushL(bitmap);
+
+ bitmap->Create(aRect.Size(), CCoeEnv::Static()->ScreenDevice()->DisplayMode());
+
+ CFbsBitGc* fbsBitGc = CFbsBitGc::NewL();
+ CleanupStack::PushL(fbsBitGc);
+
+ CFbsBitmapDevice* bmpDevice = CFbsBitmapDevice::NewL(bitmap);
+ CleanupStack::PushL(bmpDevice);
+
+ fbsBitGc->Activate(bmpDevice);
+
+ TRect outerRect;
+ TRect innerRect;
+ TRect origin;
+
+ AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, origin);
+
+ TAknLayoutRect layoutRect;
+
+ layoutRect.LayoutRect(origin,
+ AknLayoutScalable_Avkon::listscroll_gen_pane(0));
+ layoutRect.LayoutRect(layoutRect.Rect(),
+ AknLayoutScalable_Avkon::list_gen_pane(0));
+ layoutRect.LayoutRect(layoutRect.Rect(),
+ AknLayoutScalable_Avkon::list_setting_number_pane(0));
+ TRect listSettingPaneRect(layoutRect.Rect());
+
+ // Background skinning
+ TAknLayoutRect topLeft;
+ TAknLayoutRect bottomRight;
+
+ topLeft.LayoutRect(listSettingPaneRect,
+ Setting_list_item_skin_elements__value_background__Line_2());
+ bottomRight.LayoutRect(listSettingPaneRect,
+ Setting_list_item_skin_elements__value_background__Line_5());
+
+ // Move to 0,0
+ TRect topLeftRect = topLeft.Rect();
+ TRect bottomRightRect = bottomRight.Rect();
+
+ TPoint skinOffset(-topLeftRect.iTl.iX, -topLeftRect.iTl.iY);
+ bottomRightRect.Move(skinOffset);
+ topLeftRect.Move(skinOffset);
+
+ outerRect = TRect(topLeftRect.iTl, bottomRightRect.iBr);
+ innerRect = TRect(topLeftRect.iBr, bottomRightRect.iTl);
+
+ // Frame IID for qsn_fr_set_opt_foc_xxxxx
+ const TAknsItemID *frameId = &KAknsIIDQsnFrSetOptFoc;
+
+ // Make a control context:
+ CAknsFrameBackgroundControlContext* cc = CAknsFrameBackgroundControlContext::NewL(
+ *frameId, outerRect, innerRect, EFalse);
+ CleanupStack::PushL(cc);
+
+ TPoint dstPos(0,0);
+
+ AknsDrawUtils::DrawBackground(AknsUtils::SkinInstance(), cc, NULL, *fbsBitGc,
+ dstPos, outerRect, KAknsDrawParamDefault);
+
+ fbsBitGc->SetPenColor(TRgb(iModel->TrailColour()));
+ fbsBitGc->SetPenStyle(CGraphicsContext::ESolidPen);
+ fbsBitGc->SetBrushColor(iModel->TrailColour());
+ fbsBitGc->SetBrushStyle(CGraphicsContext::ESolidBrush);
+
+
+ TInt clolorWidth = outerRect.Width() / 3;
+ TInt clolorHight = (outerRect.Height() * 2) / 3;
+
+ dstPos.iX = (outerRect.Width() / 2) - (clolorWidth / 2);
+ dstPos.iY = (outerRect.Height() / 2) - (clolorHight / 2);
+
+ fbsBitGc->DrawRect(TRect(dstPos.iX,
+ dstPos.iY,
+ dstPos.iX + clolorWidth,
+ dstPos.iY + clolorHight));
+
+ CleanupStack::PopAndDestroy(cc);
+ CleanupStack::PopAndDestroy(bmpDevice);
+ CleanupStack::PopAndDestroy(fbsBitGc);
+
+ aIcon->SetBitmap(bitmap); // Transfers ownership, so all we need to do is to..
+ CleanupStack::Pop(bitmap);
+
+ // For mask
+ CFbsBitmap* mask = new (ELeave) CFbsBitmap;
+ CleanupStack::PushL( mask );
+
+ mask->Create(aRect.Size(), EGray256);
+ fbsBitGc = CFbsBitGc::NewL();
+ CleanupStack::PushL(fbsBitGc);
+ bmpDevice = CFbsBitmapDevice::NewL(mask);
+ CleanupStack::PushL(bmpDevice);
+ fbsBitGc->Activate(bmpDevice);
+ fbsBitGc->SetPenStyle(CGraphicsContext::ENullPen);
+ fbsBitGc->SetBrushStyle(CGraphicsContext::ESolidBrush);
+ fbsBitGc->SetBrushColor(KRgbWhite);
+ fbsBitGc->DrawRect(TRect(aRect.Size()));
+
+ AknsDrawUtils::DrawFrame(AknsUtils::SkinInstance(), *fbsBitGc, outerRect,
+ innerRect, KAknsIIDQsnFrSetOptFoc,
+ KAknsIIDQsnFrSetOptFocCenter, KAknsSDMAlphaOnly);
+
+ CleanupStack::PopAndDestroy(bmpDevice);
+ CleanupStack::PopAndDestroy(fbsBitGc);
+ aIcon->SetMask(mask); // mask owned by listbox
+ CleanupStack::Pop(mask);
+ }
+
+// ---------------------------------------------------------
+// Display input language setting page
+// ---------------------------------------------------------
+//
+void CGSPenInputContainer::ShowInputLanguagePageL()
+ {
+ CDesCArrayFlat* languageItems = new(ELeave)CDesCArrayFlat(10);
+ CleanupStack::PushL(languageItems);
+
+ iModel->GetLanguagesFromPtiL(EFalse, languageItems);
+
+ TInt currentItem = iModel->InputLanguageIndex();
+
+ CAknRadioButtonSettingPage* dlg = new (ELeave) CAknRadioButtonSettingPage(
+ R_GS_INPUTLANGUAGE_TEXT_SETTING_PAGE,
+ currentItem,
+ languageItems);
+
+ CleanupStack::PushL(dlg);
+
+ if (dlg->ExecuteLD(CAknSettingPage::EUpdateWhenChanged))
+ {
+ if (currentItem != iModel->InputLanguageIndex())
+ {
+ iModel->SetInputLanguageIndex(currentItem);
+ iModel->SetInputLanguageL();
+ UpdateListBoxL(EGSInputpenIdInputLanguage);
+ if (iModel->ChineseLanguage() && iChinese)
+ {
+ iModel->ResetFepDefaultInputMode();
+ UpdateListBoxL(EGSDefaultChineseOnscreenKeyboard);
+ UpdateListBoxL(EGSInputpenIdChineseFindMethod);
+ }
+ }
+
+ if ((iChinese != iModel->ChineseLanguage()) ||
+ (iJapanese != iModel->JapaneseLanguage()))
+ {
+ ReConstructListBoxL();
+ }
+ }
+
+ CleanupStack::Pop(dlg);
+ CleanupStack::PopAndDestroy(languageItems);
+ }
+
+// ---------------------------------------------------------
+// Display input mode setting page
+// ---------------------------------------------------------
+//
+void CGSPenInputContainer::ShowInputModePageL()
+ {
+ delete iInputModeItems;
+ iInputModeItems = NULL;
+
+ if (iModel->InputModeResourceID() != -1)
+ {
+ iInputModeItems = iCoeEnv->ReadDesC16ArrayResourceL(
+ iModel->InputModeResourceID());
+ iModel->ResetInputModeArray(iInputModeItems);
+ }
+ else
+ {
+ return;
+ }
+
+ TInt currentItem = iModel->InputModeInSettingPage();
+
+ if ( currentItem < iInputModeItems->Count() )
+ {
+ CAknRadioButtonSettingPage* dlg = new (ELeave) CAknRadioButtonSettingPage(
+ R_GS_VKB_DEFAULTCHINESE_OSK_TEXT_SETTING_PAGE,
+ currentItem,
+ iInputModeItems);
+
+ CleanupStack::PushL(dlg);
+
+ if (dlg->ExecuteLD(CAknSettingPage::EUpdateWhenChanged))
+ {
+ if(currentItem != iModel->InputModeInSettingPage())
+ {
+ iModel->SetInputModeBySettingPage(currentItem);
+ UpdateListBoxL(EGSDefaultChineseOnscreenKeyboard);
+ }
+ }
+ CleanupStack::Pop(dlg);
+ }
+ }
+
+// ---------------------------------------------------------
+// Display writing speed setting page
+// ---------------------------------------------------------
+//
+void CGSPenInputContainer::ShowWritingSpeedPageL()
+ {
+ TInt currentItem = iModel->WritingSpeed();
+
+ CAknRadioButtonSettingPage* dlg = new (ELeave) CAknRadioButtonSettingPage(
+ R_GS_WRITINGSPEED_TEXT_SETTING_PAGE,
+ currentItem,
+ iWritingSpeedItems);
+
+ CleanupStack::PushL(dlg);
+
+ if (dlg->ExecuteLD(CAknSettingPage::EUpdateWhenChanged))
+ {
+ if(currentItem != iModel->WritingSpeed())
+ {
+ iModel->SetWritingSpeed(currentItem);
+ UpdateListBoxL(EGSInputpenIdWritingSpeed);
+ }
+ }
+
+ CleanupStack::Pop(dlg);
+ }
+
+// ---------------------------------------------------------
+// Display pen trail width setting page
+// ---------------------------------------------------------
+//
+void CGSPenInputContainer::ShowTrailWidthPageL()
+ {
+ TInt currentItem = iModel->TrailWidth();
+
+ CAknRadioButtonSettingPage* dlg = new (ELeave) CAknRadioButtonSettingPage(
+ R_GS_TRAILWIDTH_TEXT_SETTING_PAGE,
+ currentItem,
+ iPenTrailWidthItems);
+
+ CleanupStack::PushL(dlg);
+
+ if (dlg->ExecuteLD(CAknSettingPage::EUpdateWhenChanged))
+ {
+ if(currentItem != iModel->TrailWidth())
+ {
+ iModel->SetTrailWidth(currentItem);
+ UpdateListBoxL(EGSInputpenIdPenTrailWidth);
+ }
+ }
+
+ CleanupStack::Pop(dlg);
+ }
+
+// ---------------------------------------------------------
+// Display guide line setting page
+// ---------------------------------------------------------
+//
+void CGSPenInputContainer::ShowGuideLinePageL()
+ {
+ TInt currentItem = iModel->GuideLine();
+
+ if (currentItem == 1)
+ {
+ currentItem = 0;
+ }
+ else
+ {
+ currentItem = 1;
+ }
+
+ CAknRadioButtonSettingPage* dlg = new (ELeave) CAknRadioButtonSettingPage(
+ R_GS_GUIDLINE_TEXT_SETTING_PAGE,
+ currentItem,
+ iGuideLineItems);
+
+ CleanupStack::PushL(dlg);
+
+ if (dlg->ExecuteLD(CAknSettingPage::EUpdateWhenChanged))
+ {
+ if(currentItem == iModel->GuideLine())
+ {
+ iModel->SetGuideLine(currentItem == 0? 1:0);
+ UpdateListBoxL(EGSInputpenIdGuidLine);
+ }
+ }
+
+ CleanupStack::Pop(dlg);
+ }
+
+// ---------------------------------------------------------
+// Display recognition with dictionary setting page
+// ---------------------------------------------------------
+//
+void CGSPenInputContainer::ShowRecognitionWithDictionaryL()
+ {
+ TInt currentItem = iModel->RecognitionWithDictionary();
+
+ if (currentItem == 1)
+ {
+ currentItem = 0;
+ }
+ else
+ {
+ currentItem = 1;
+ }
+
+ CAknRadioButtonSettingPage* dlg = new (ELeave) CAknRadioButtonSettingPage(
+ R_GS_RECOGNITIONWITHDICTIONARY_TEXT_SETTING_PAGE,
+ currentItem,
+ iRecognitionWithDictionaryItems);
+
+ CleanupStack::PushL(dlg);
+
+ if (dlg->ExecuteLD(CAknSettingPage::EUpdateWhenChanged))
+ {
+ if(currentItem == iModel->RecognitionWithDictionary())
+ {
+ iModel->SetRecognitionWithDictionary(currentItem == 0? 1:0);
+ UpdateListBoxL(EGSInputpenIdRecognitionWithDictionary);
+ }
+ }
+
+ CleanupStack::Pop(dlg);
+ }
+
+// ---------------------------------------------------------
+// Display input method for find setting page
+// ---------------------------------------------------------
+//
+void CGSPenInputContainer::ShowInputMethodForFindPageL()
+ {
+ TInt currentItem = iModel->InputMethodForFind();
+
+ CAknRadioButtonSettingPage* dlg = new (ELeave) CAknRadioButtonSettingPage(
+ R_GS_INPUTMETHODFORFIND_TEXT_SETTING_PAGE,
+ currentItem,
+ iInputMethodForFindItems);
+
+ CleanupStack::PushL(dlg);
+
+ if (dlg->ExecuteLD(CAknSettingPage::EUpdateWhenChanged))
+ {
+ if(currentItem != iModel->InputMethodForFind())
+ {
+ iModel->SetInputMethodForFind(currentItem);
+ UpdateListBoxL(EGSInputpenIdInputMethodForFind);
+ }
+ }
+
+ CleanupStack::Pop(dlg);
+ }
+
+// ---------------------------------------------------------
+// Display chinese find method setting page
+// ---------------------------------------------------------
+//
+void CGSPenInputContainer::ShowChineseFindMethodPageL()
+ {
+ TInt currentItem = iModel->ChineseFindMethod();
+
+ CAknRadioButtonSettingPage* dlg = new (ELeave) CAknRadioButtonSettingPage(
+ R_GS_CHINESEFINDMETHOD_TEXT_SETTING_PAGE,
+ currentItem,
+ iChineseFindMethodItems);
+
+ CleanupStack::PushL(dlg);
+
+ if (dlg->ExecuteLD(CAknSettingPage::EUpdateWhenChanged))
+ {
+ if(currentItem != iModel->ChineseFindMethod())
+ {
+ iModel->SetChineseFindMethod(currentItem);
+ UpdateListBoxL(EGSInputpenIdChineseFindMethod);
+ }
+ }
+
+ CleanupStack::Pop(dlg);
+ }
+
+// ---------------------------------------------------------
+// Display pen trail colour setting page
+// ---------------------------------------------------------
+//
+void CGSPenInputContainer::ShowTrailColourPageL()
+ {
+ CArrayFixFlat<TRgb>* colours = new (ELeave) CArrayFixFlat<TRgb>(8);
+ CleanupStack::PushL(colours);
+
+ for(TInt i = 0; i < AknPenInputTrailColorUtils::ColorCount(); i++)
+ {
+ colours->AppendL(AknPenInputTrailColorUtils::ColorAt(i));
+ }
+// colours->AppendL(KRgbBlack);
+// colours->AppendL(KRgbDarkGray);
+// colours->AppendL(KRgbDarkRed);
+// colours->AppendL(KRgbDarkGreen);
+// colours->AppendL(KRgbDarkYellow);
+// colours->AppendL(KRgbDarkBlue);
+// colours->AppendL(KRgbDarkMagenta);
+// colours->AppendL(KRgbDarkCyan);
+// colours->AppendL(KRgbRed);
+// colours->AppendL(KRgbGreen);
+// colours->AppendL(KRgbYellow);
+// colours->AppendL(KRgbBlue);
+// colours->AppendL(KRgbMagenta);
+// colours->AppendL(KRgbCyan);
+// colours->AppendL(KRgbGray);
+// colours->AppendL(KRgbWhite);
+
+ TBool noneChosen = EFalse;
+ TRgb colourChosen = TRgb(iModel->TrailColour());
+
+ CAknColourSelectionGrid* dlg = CAknColourSelectionGrid::NewL(colours,
+ EFalse,
+ noneChosen,
+ colourChosen);
+
+ CleanupStack::PushL(dlg);
+
+ if (dlg->ExecuteLD())
+ {
+ iModel->SetTrailColour(colourChosen.Value());
+ UpdateListBoxL(EGSInputpenIdPenTrailColour);
+ }
+
+ CleanupStack::Pop(dlg);
+ CleanupStack::PopAndDestroy(colours);
+ }
+
+// ---------------------------------------------------------
+// Display touch screen calibration setting page
+// ---------------------------------------------------------
+//
+void CGSPenInputContainer::StartTouchScreenCalibL()
+ {
+ _LIT( KTouchScreenCalibFileName, "z:TouchScreenCalib.exe" );
+ TInt err = KErrNone;
+
+ TParse parse;
+ parse.Set( KTouchScreenCalibFileName,
+ &KDC_PROGRAMS_DIR, NULL );
+ TFileName fileName( parse.FullName() );
+
+ RProcess process;
+ err = process.Create( fileName, KNullDesC );
+ User::LeaveIfError(err);
+
+ CApaCommandLine* commandLine = CApaCommandLine::NewLC();
+ commandLine->SetDocumentNameL( KNullDesC );
+ commandLine->SetExecutableNameL( fileName );
+ commandLine->SetProcessEnvironmentL( process );
+ CleanupStack::PopAndDestroy( commandLine );
+
+ process.Resume();
+ process.Close();
+ }
+
+// ---------------------------------------------------------
+// Re-Construct List box
+// ---------------------------------------------------------
+//
+void CGSPenInputContainer::ReConstructListBoxL()
+ {
+ iChinese = iModel->ChineseLanguage();
+ iJapanese = iModel->JapaneseLanguage();
+
+ delete iListboxItemArray;
+ iListboxItemArray = NULL;
+
+ iListboxItemArray = CGSListBoxItemTextArray::NewL(R_INPUTPEN_LBX,
+ *iListBox,
+ *iCoeEnv);
+ iListBox->Model()->SetItemTextArray(iListboxItemArray);
+ iListBox->Model()->SetOwnershipType(ELbmDoesNotOwnItemArray);
+
+ if (!iIconArray)
+ {
+ CArrayPtr<CGulIcon>* icons = new (ELeave) CArrayPtrFlat<CGulIcon>(2);
+ CleanupStack::PushL(icons);
+ CGulIcon* icon = CGulIcon::NewL();
+ CleanupStack::PushL(icon);
+
+ icons->AppendL(icon);
+
+ CEikFormattedCellListBox* listbox = static_cast<CEikFormattedCellListBox*>(iListBox);
+
+ listbox->ItemDrawer()->FormattedCellData()->SetIconArray(icons);// icons owned by List box
+
+ iIconArray = listbox->ItemDrawer()->FormattedCellData()->IconArray();
+
+ CleanupStack::Pop(icon);
+ CleanupStack::Pop(icons);
+ }
+
+ CreateListBoxItemsL();
+ iListBox->HandleItemAdditionL();
+ }
+
+
+// ---------------------------------------------------------
+// Launch other application;
+// ---------------------------------------------------------
+//
+void CGSPenInputContainer::LaunchAppL( TUid aAppUid )
+ {
+ // Find the task with uid
+ TApaTaskList taskList( iEikonEnv->WsSession() );
+ TApaTask task = taskList.FindApp( aAppUid );
+
+ if ( task.Exists() )
+ {
+ task.BringToForeground();
+ }
+ else
+ {
+ // Launch peninputsetting application as embedded.
+ if ( iNullService )
+ {
+ delete iNullService;
+ iNullService = NULL;
+ }
+ iNullService = CAknNullService::NewL( aAppUid, NULL );
+ }
+ }
+
+// ---------------------------------------------------------
+// Identify the help context so that the framework can look up
+// the corresponding help topic
+// ---------------------------------------------------------
+//
+void CGSPenInputContainer::GetHelpContext( TCoeHelpContext& aContext ) const
+ {
+ aContext.iMajor = KUidGS;
+ aContext.iContext = HLP_GS_PEN_INPUT; // temp fix for helps integration build break;
+ }
+
+// End Of File